Skip to content

Commit 10a0a66

Browse files
authored
Add end_links to Navbar (#181)
1 parent 4431809 commit 10a0a66

File tree

11 files changed

+37
-15
lines changed

11 files changed

+37
-15
lines changed

bump_npm.py

100644100755
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#!/usr/bin/env python
12
from __future__ import annotations
23

34
import json

demo/shared.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def demo_page(*components: AnyComponent, title: str | None = None) -> list[AnyCo
1111
c.Navbar(
1212
title='FastUI Demo',
1313
title_event=GoToEvent(url='/'),
14-
links=[
14+
start_links=[
1515
c.Link(
1616
components=[c.Text(text='Components')],
1717
on_click=GoToEvent(url='/components'),

demo/tests.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ def test_api_root(client: TestClient):
3232
{
3333
'title': 'FastUI Demo',
3434
'titleEvent': {'url': '/', 'type': 'go-to'},
35-
'links': IsList(length=4),
35+
'startLinks': IsList(length=4),
36+
'endLinks': [],
3637
'type': 'Navbar',
3738
},
3839
{
@@ -60,7 +61,7 @@ def get_menu_links():
6061
r = client.get('/api/')
6162
assert r.status_code == 200
6263
data = r.json()
63-
for link in data[1]['links']:
64+
for link in data[1]['startLinks']:
6465
url = link['onClick']['url']
6566
yield pytest.param(f'/api{url}', id=url)
6667

src/npm-fastui-bootstrap/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@pydantic/fastui-bootstrap",
3-
"version": "0.0.19",
3+
"version": "0.0.20",
44
"description": "Boostrap renderer for FastUI",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",
@@ -29,6 +29,6 @@
2929
"sass": "^1.69.5"
3030
},
3131
"peerDependencies": {
32-
"@pydantic/fastui": "0.0.19"
32+
"@pydantic/fastui": "0.0.20"
3333
}
3434
}

src/npm-fastui-bootstrap/src/navbar.tsx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@ import { components, useClassName, models } from 'fastui'
33
import BootstrapNavbar from 'react-bootstrap/Navbar'
44

55
export const Navbar: FC<models.Navbar> = (props) => {
6-
const links = props.links.map((link) => {
6+
const startLinks = props.startLinks.map((link) => {
7+
link.mode = link.mode || 'navbar'
8+
return link
9+
})
10+
const endLinks = props.endLinks.map((link) => {
711
link.mode = link.mode || 'navbar'
812
return link
913
})
@@ -14,7 +18,14 @@ export const Navbar: FC<models.Navbar> = (props) => {
1418
<BootstrapNavbar.Toggle aria-controls="navbar-collapse" />
1519
<BootstrapNavbar.Collapse id="navbar-collapse">
1620
<ul className="navbar-nav me-auto">
17-
{links.map((link, i) => (
21+
{startLinks.map((link, i) => (
22+
<li key={i} className="nav-item">
23+
<components.LinkComp {...link} />
24+
</li>
25+
))}
26+
</ul>
27+
<ul className="navbar-nav ms-auto">
28+
{endLinks.map((link, i) => (
1829
<li key={i} className="nav-item">
1930
<components.LinkComp {...link} />
2031
</li>

src/npm-fastui-prebuilt/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@pydantic/fastui-prebuilt",
3-
"version": "0.0.19",
3+
"version": "0.0.20",
44
"description": "Pre-built files for FastUI",
55
"main": "dist/index.html",
66
"type": "module",

src/npm-fastui/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@pydantic/fastui",
3-
"version": "0.0.19",
3+
"version": "0.0.20",
44
"description": "Build better UIs faster.",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",

src/npm-fastui/src/components/navbar.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,22 @@ import { useClassName } from '../hooks/className'
55
import { LinkComp, LinkRender } from './link'
66

77
export const NavbarComp = (props: Navbar) => {
8-
const links = props.links.map((link) => {
8+
const startLinks = props.startLinks.map((link) => {
9+
link.mode = link.mode || 'navbar'
10+
return link
11+
})
12+
const endLinks = props.endLinks.map((link) => {
913
link.mode = link.mode || 'navbar'
1014
return link
1115
})
1216
return (
1317
<nav className={useClassName(props)}>
1418
<div className={useClassName(props, { el: 'contents' })}>
1519
<NavbarTitle {...props} />
16-
{links.map((link, i) => (
20+
{startLinks.map((link, i) => (
21+
<LinkComp key={i} {...link} />
22+
))}
23+
{endLinks.map((link, i) => (
1724
<LinkComp key={i} {...link} />
1825
))}
1926
</div>

src/npm-fastui/src/models.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,8 @@ export interface LinkList {
174174
export interface Navbar {
175175
title?: string
176176
titleEvent?: PageEvent | GoToEvent | BackEvent | AuthEvent
177-
links: Link[]
177+
startLinks: Link[]
178+
endLinks: Link[]
178179
className?: ClassName
179180
type: 'Navbar'
180181
}

src/python-fastui/fastui/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def coerce_to_list(cls, v):
2323
return [v]
2424

2525

26-
_PREBUILT_VERSION = '0.0.19'
26+
_PREBUILT_VERSION = '0.0.20'
2727
_PREBUILT_CDN_URL = f'https://cdn.jsdelivr.net/npm/@pydantic/fastui-prebuilt@{_PREBUILT_VERSION}/dist/assets'
2828

2929

0 commit comments

Comments
 (0)