@budibase/bbui 3.4.21 → 3.4.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bbui.mjs +2616 -2971
- package/package.json +2 -2
- package/src/Actions/position_dropdown.ts +1 -1
- package/src/Badge/Badge.svelte +2 -0
- package/src/ClearButton/ClearButton.svelte +3 -3
- package/src/Drawer/Drawer.svelte +1 -1
- package/src/Form/Checkbox.svelte +11 -11
- package/src/Form/Core/Multiselect.svelte +42 -32
- package/src/Icon/Icon.svelte +3 -0
- package/src/Layout/Page.svelte +1 -1
- package/src/Link/Link.svelte +1 -1
- package/src/Popover/Popover.svelte +3 -2
- package/src/Stores/{banner.js → banner.ts} +26 -11
- package/src/Stores/{notifications.js → notifications.ts} +31 -10
- package/src/Table/ArrayRenderer.svelte +2 -2
- package/src/Table/AttachmentRenderer.svelte +5 -5
- package/src/Table/BoldRenderer.svelte +2 -2
- package/src/Table/BooleanRenderer.svelte +2 -2
- package/src/Table/CellRenderer.svelte +10 -10
- package/src/Table/CodeRenderer.svelte +2 -2
- package/src/Table/DateTimeRenderer.svelte +4 -4
- package/src/Table/InternalRenderer.svelte +3 -3
- package/src/Table/RelationshipRenderer.svelte +5 -5
- package/src/Table/SelectEditRenderer.svelte +6 -6
- package/src/Table/StringRenderer.svelte +3 -3
- package/src/Table/Table.svelte +71 -50
- package/src/Tabs/Tabs.svelte +48 -23
- package/src/Tags/Tag.svelte +6 -6
- package/src/Tags/Tags.svelte +1 -1
- package/src/Tooltip/TooltipWrapper.svelte +4 -4
- package/src/TreeView/Item.svelte +6 -6
- package/src/TreeView/Tree.svelte +4 -4
- package/src/Typography/Code.svelte +2 -2
- package/src/Typography/Detail.svelte +4 -4
- package/src/index.ts +0 -2
- package/src/SideNavigation/Item.svelte +0 -63
- package/src/SideNavigation/Navigation.svelte +0 -13
- /package/src/Table/{index.js → index.ts} +0 -0
package/src/Table/Table.svelte
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<script>
|
|
1
|
+
<script lang="ts">
|
|
2
2
|
import { createEventDispatcher } from "svelte"
|
|
3
3
|
import "@spectrum-css/table/dist/index-vars.css"
|
|
4
4
|
import CellRenderer from "./CellRenderer.svelte"
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import Checkbox from "../Form/Checkbox.svelte"
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
+
/**
|
|
11
12
|
* The expected schema is our normal couch schemas for our tables.
|
|
12
13
|
* Each field schema can be enriched with a few extra properties to customise
|
|
13
14
|
* the behaviour.
|
|
@@ -24,42 +25,42 @@
|
|
|
24
25
|
* borderLeft: show a left border
|
|
25
26
|
* borderRight: show a right border
|
|
26
27
|
*/
|
|
27
|
-
export let data = []
|
|
28
|
-
export let schema = {}
|
|
29
|
-
export let showAutoColumns = false
|
|
30
|
-
export let rowCount = 0
|
|
31
|
-
export let quiet = false
|
|
32
|
-
export let loading = false
|
|
33
|
-
export let allowSelectRows
|
|
34
|
-
export let allowEditRows = true
|
|
35
|
-
export let allowEditColumns = true
|
|
36
|
-
export let allowClickRows = true
|
|
37
|
-
export let selectedRows = []
|
|
38
|
-
export let customRenderers = []
|
|
39
|
-
export let disableSorting = false
|
|
40
|
-
export let autoSortColumns = true
|
|
41
|
-
export let compact = false
|
|
42
|
-
export let customPlaceholder = false
|
|
43
|
-
export let showHeaderBorder = true
|
|
44
|
-
export let placeholderText = "No rows found"
|
|
45
|
-
export let snippets = []
|
|
46
|
-
export let defaultSortColumn = undefined
|
|
47
|
-
export let defaultSortOrder = "Ascending"
|
|
28
|
+
export let data: any[] = []
|
|
29
|
+
export let schema: Record<string, any> = {}
|
|
30
|
+
export let showAutoColumns: boolean = false
|
|
31
|
+
export let rowCount: number = 0
|
|
32
|
+
export let quiet: boolean = false
|
|
33
|
+
export let loading: boolean = false
|
|
34
|
+
export let allowSelectRows: boolean = false
|
|
35
|
+
export let allowEditRows: boolean = true
|
|
36
|
+
export let allowEditColumns: boolean = true
|
|
37
|
+
export let allowClickRows: boolean = true
|
|
38
|
+
export let selectedRows: any[] = []
|
|
39
|
+
export let customRenderers: any[] = []
|
|
40
|
+
export let disableSorting: boolean = false
|
|
41
|
+
export let autoSortColumns: boolean = true
|
|
42
|
+
export let compact: boolean = false
|
|
43
|
+
export let customPlaceholder: boolean = false
|
|
44
|
+
export let showHeaderBorder: boolean = true
|
|
45
|
+
export let placeholderText: string = "No rows found"
|
|
46
|
+
export let snippets: any[] = []
|
|
47
|
+
export let defaultSortColumn: string | undefined = undefined
|
|
48
|
+
export let defaultSortOrder: "Ascending" | "Descending" = "Ascending"
|
|
48
49
|
|
|
49
50
|
const dispatch = createEventDispatcher()
|
|
50
51
|
|
|
51
52
|
// Config
|
|
52
|
-
const headerHeight = 36
|
|
53
|
+
const headerHeight: number = 36
|
|
53
54
|
$: rowHeight = compact ? 46 : 55
|
|
54
55
|
|
|
55
56
|
// Sorting state
|
|
56
|
-
let sortColumn
|
|
57
|
-
let sortOrder
|
|
57
|
+
let sortColumn: string | undefined
|
|
58
|
+
let sortOrder: "Ascending" | "Descending" | undefined
|
|
58
59
|
|
|
59
60
|
// Table state
|
|
60
|
-
let height = 0
|
|
61
|
-
let loaded = false
|
|
62
|
-
let checkboxStatus = false
|
|
61
|
+
let height: number = 0
|
|
62
|
+
let loaded: boolean = false
|
|
63
|
+
let checkboxStatus: boolean = false
|
|
63
64
|
|
|
64
65
|
$: schema = fixSchema(schema)
|
|
65
66
|
$: if (!loading) loaded = true
|
|
@@ -95,8 +96,8 @@
|
|
|
95
96
|
}
|
|
96
97
|
}
|
|
97
98
|
|
|
98
|
-
const fixSchema = schema => {
|
|
99
|
-
let fixedSchema = {}
|
|
99
|
+
const fixSchema = (schema: Record<string, any>): Record<string, any> => {
|
|
100
|
+
let fixedSchema: Record<string, any> = {}
|
|
100
101
|
Object.entries(schema || {}).forEach(([fieldName, fieldSchema]) => {
|
|
101
102
|
if (typeof fieldSchema === "string") {
|
|
102
103
|
fixedSchema[fieldName] = {
|
|
@@ -120,7 +121,13 @@
|
|
|
120
121
|
return fixedSchema
|
|
121
122
|
}
|
|
122
123
|
|
|
123
|
-
const getVisibleRowCount = (
|
|
124
|
+
const getVisibleRowCount = (
|
|
125
|
+
loaded: boolean,
|
|
126
|
+
height: number,
|
|
127
|
+
allRows: number,
|
|
128
|
+
rowCount: number,
|
|
129
|
+
rowHeight: number
|
|
130
|
+
): number => {
|
|
124
131
|
if (!loaded) {
|
|
125
132
|
return rowCount || 0
|
|
126
133
|
}
|
|
@@ -131,12 +138,12 @@
|
|
|
131
138
|
}
|
|
132
139
|
|
|
133
140
|
const getHeightStyle = (
|
|
134
|
-
visibleRowCount,
|
|
135
|
-
rowCount,
|
|
136
|
-
totalRowCount,
|
|
137
|
-
rowHeight,
|
|
138
|
-
loading
|
|
139
|
-
) => {
|
|
141
|
+
visibleRowCount: number,
|
|
142
|
+
rowCount: number,
|
|
143
|
+
totalRowCount: number,
|
|
144
|
+
rowHeight: number,
|
|
145
|
+
loading: boolean
|
|
146
|
+
): string => {
|
|
140
147
|
if (loading) {
|
|
141
148
|
return `height: ${headerHeight + visibleRowCount * rowHeight}px;`
|
|
142
149
|
}
|
|
@@ -146,7 +153,11 @@
|
|
|
146
153
|
return `height: ${headerHeight + visibleRowCount * rowHeight}px;`
|
|
147
154
|
}
|
|
148
155
|
|
|
149
|
-
const getGridStyle = (
|
|
156
|
+
const getGridStyle = (
|
|
157
|
+
fields: string[],
|
|
158
|
+
schema: Record<string, any>,
|
|
159
|
+
showEditColumn: boolean
|
|
160
|
+
): string => {
|
|
150
161
|
let style = "grid-template-columns:"
|
|
151
162
|
if (showEditColumn) {
|
|
152
163
|
style += " auto"
|
|
@@ -163,7 +174,11 @@
|
|
|
163
174
|
return style
|
|
164
175
|
}
|
|
165
176
|
|
|
166
|
-
const sortRows = (
|
|
177
|
+
const sortRows = (
|
|
178
|
+
rows: any[],
|
|
179
|
+
sortColumn: string | undefined,
|
|
180
|
+
sortOrder: string | undefined
|
|
181
|
+
): any[] => {
|
|
167
182
|
sortColumn = sortColumn ?? defaultSortColumn
|
|
168
183
|
sortOrder = sortOrder ?? defaultSortOrder
|
|
169
184
|
if (!sortColumn || !sortOrder || disableSorting) {
|
|
@@ -180,7 +195,7 @@
|
|
|
180
195
|
})
|
|
181
196
|
}
|
|
182
197
|
|
|
183
|
-
const sortBy = fieldSchema => {
|
|
198
|
+
const sortBy = (fieldSchema: Record<string, any>): void => {
|
|
184
199
|
if (fieldSchema.sortable === false) {
|
|
185
200
|
return
|
|
186
201
|
}
|
|
@@ -193,7 +208,7 @@
|
|
|
193
208
|
dispatch("sort", { column: sortColumn, order: sortOrder })
|
|
194
209
|
}
|
|
195
210
|
|
|
196
|
-
const getDisplayName = schema => {
|
|
211
|
+
const getDisplayName = (schema: Record<string, any>): string => {
|
|
197
212
|
let name = schema?.displayName
|
|
198
213
|
if (schema && name === undefined) {
|
|
199
214
|
name = schema.name
|
|
@@ -201,9 +216,13 @@
|
|
|
201
216
|
return name || ""
|
|
202
217
|
}
|
|
203
218
|
|
|
204
|
-
const getFields = (
|
|
205
|
-
|
|
206
|
-
|
|
219
|
+
const getFields = (
|
|
220
|
+
schema: Record<string, any>,
|
|
221
|
+
showAutoColumns: boolean,
|
|
222
|
+
autoSortColumns: boolean
|
|
223
|
+
): string[] => {
|
|
224
|
+
let columns: any[] = []
|
|
225
|
+
let autoColumns: any[] = []
|
|
207
226
|
Object.entries(schema || {}).forEach(([field, fieldSchema]) => {
|
|
208
227
|
if (!field || !fieldSchema) {
|
|
209
228
|
return
|
|
@@ -235,17 +254,17 @@
|
|
|
235
254
|
.map(column => column.name)
|
|
236
255
|
}
|
|
237
256
|
|
|
238
|
-
const editColumn = (e, field) => {
|
|
257
|
+
const editColumn = (e: Event, field: any): void => {
|
|
239
258
|
e.stopPropagation()
|
|
240
259
|
dispatch("editcolumn", field)
|
|
241
260
|
}
|
|
242
261
|
|
|
243
|
-
const editRow = (e, row) => {
|
|
262
|
+
const editRow = (e: Event, row: any): void => {
|
|
244
263
|
e.stopPropagation()
|
|
245
264
|
dispatch("editrow", cloneDeep(row))
|
|
246
265
|
}
|
|
247
266
|
|
|
248
|
-
const toggleSelectRow = row => {
|
|
267
|
+
const toggleSelectRow = (row: any): void => {
|
|
249
268
|
if (!allowSelectRows) {
|
|
250
269
|
return
|
|
251
270
|
}
|
|
@@ -258,7 +277,7 @@
|
|
|
258
277
|
}
|
|
259
278
|
}
|
|
260
279
|
|
|
261
|
-
const toggleSelectAll = e => {
|
|
280
|
+
const toggleSelectAll = (e: CustomEvent): void => {
|
|
262
281
|
const select = !!e.detail
|
|
263
282
|
if (select) {
|
|
264
283
|
// Add any rows which are not already in selected rows
|
|
@@ -278,8 +297,10 @@
|
|
|
278
297
|
}
|
|
279
298
|
}
|
|
280
299
|
|
|
281
|
-
const computeCellStyles =
|
|
282
|
-
|
|
300
|
+
const computeCellStyles = (
|
|
301
|
+
schema: Record<string, any>
|
|
302
|
+
): Record<string, string> => {
|
|
303
|
+
let styles: Record<string, string> = {}
|
|
283
304
|
Object.keys(schema || {}).forEach(field => {
|
|
284
305
|
styles[field] = ""
|
|
285
306
|
if (schema[field].color) {
|
package/src/Tabs/Tabs.svelte
CHANGED
|
@@ -1,28 +1,48 @@
|
|
|
1
|
-
<script>
|
|
1
|
+
<script lang="ts">
|
|
2
2
|
import "@spectrum-css/tabs/dist/index-vars.css"
|
|
3
3
|
import { writable } from "svelte/store"
|
|
4
4
|
import { onMount, setContext, createEventDispatcher } from "svelte"
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
interface TabInfo {
|
|
7
|
+
width?: number
|
|
8
|
+
height?: number
|
|
9
|
+
left?: number
|
|
10
|
+
top?: number
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
interface TabState {
|
|
14
|
+
title: string
|
|
15
|
+
id: string
|
|
16
|
+
emphasized: boolean
|
|
17
|
+
info?: TabInfo
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export let selected: string
|
|
21
|
+
export let vertical: boolean = false
|
|
22
|
+
export let noPadding: boolean = false
|
|
9
23
|
// added as a separate option as noPadding is used for vertical padding
|
|
10
|
-
export let noHorizPadding = false
|
|
11
|
-
export let quiet = false
|
|
12
|
-
export let emphasized = false
|
|
13
|
-
export let onTop = false
|
|
14
|
-
export let size = "M"
|
|
15
|
-
export let beforeSwitch = null
|
|
24
|
+
export let noHorizPadding: boolean = false
|
|
25
|
+
export let quiet: boolean = false
|
|
26
|
+
export let emphasized: boolean = false
|
|
27
|
+
export let onTop: boolean = false
|
|
28
|
+
export let size: "S" | "M" | "L" = "M"
|
|
29
|
+
export let beforeSwitch: ((_title: string) => boolean) | null = null
|
|
16
30
|
|
|
17
|
-
let thisSelected = undefined
|
|
31
|
+
let thisSelected: string | undefined = undefined
|
|
32
|
+
let container: HTMLElement | undefined
|
|
18
33
|
|
|
19
34
|
let _id = id()
|
|
20
|
-
const tab = writable({ title: selected, id: _id, emphasized })
|
|
35
|
+
const tab = writable<TabState>({ title: selected, id: _id, emphasized })
|
|
21
36
|
setContext("tab", tab)
|
|
22
37
|
|
|
23
|
-
let
|
|
38
|
+
let top: string | undefined
|
|
39
|
+
let left: string | undefined
|
|
40
|
+
let width: string | undefined
|
|
41
|
+
let height: string | undefined
|
|
24
42
|
|
|
25
|
-
const dispatch = createEventDispatcher
|
|
43
|
+
const dispatch = createEventDispatcher<{
|
|
44
|
+
select: string
|
|
45
|
+
}>()
|
|
26
46
|
|
|
27
47
|
$: {
|
|
28
48
|
if (thisSelected !== selected) {
|
|
@@ -44,29 +64,34 @@
|
|
|
44
64
|
}
|
|
45
65
|
if ($tab.title !== thisSelected) {
|
|
46
66
|
tab.update(state => {
|
|
47
|
-
state.title = thisSelected
|
|
67
|
+
state.title = thisSelected as string
|
|
48
68
|
return state
|
|
49
69
|
})
|
|
50
70
|
}
|
|
51
71
|
}
|
|
52
72
|
|
|
53
|
-
|
|
54
|
-
$:
|
|
55
|
-
$: calculateIndicatorOffset($tab)
|
|
73
|
+
$: $tab && calculateIndicatorLength()
|
|
74
|
+
$: $tab && calculateIndicatorOffset()
|
|
56
75
|
|
|
57
76
|
function calculateIndicatorLength() {
|
|
58
77
|
if (!vertical) {
|
|
59
|
-
width = $tab.info?.width + "px"
|
|
78
|
+
width = ($tab.info?.width ?? 0) + "px"
|
|
60
79
|
} else {
|
|
61
|
-
height = $tab.info?.height + 4 + "px"
|
|
80
|
+
height = ($tab.info?.height ?? 0) + 4 + "px"
|
|
62
81
|
}
|
|
63
82
|
}
|
|
64
83
|
|
|
65
84
|
function calculateIndicatorOffset() {
|
|
66
85
|
if (!vertical) {
|
|
67
|
-
left =
|
|
86
|
+
left =
|
|
87
|
+
($tab.info?.left ?? 0) -
|
|
88
|
+
(container?.getBoundingClientRect().left ?? 0) +
|
|
89
|
+
"px"
|
|
68
90
|
} else {
|
|
69
|
-
top =
|
|
91
|
+
top =
|
|
92
|
+
($tab.info?.top ?? 0) -
|
|
93
|
+
(container?.getBoundingClientRect().top ?? 0) +
|
|
94
|
+
"px"
|
|
70
95
|
}
|
|
71
96
|
}
|
|
72
97
|
|
|
@@ -75,7 +100,7 @@
|
|
|
75
100
|
calculateIndicatorOffset()
|
|
76
101
|
})
|
|
77
102
|
|
|
78
|
-
function id() {
|
|
103
|
+
function id(): string {
|
|
79
104
|
return "_" + Math.random().toString(36).slice(2, 9)
|
|
80
105
|
}
|
|
81
106
|
</script>
|
package/src/Tags/Tag.svelte
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
<script>
|
|
1
|
+
<script lang="ts">
|
|
2
2
|
import "@spectrum-css/tags/dist/index-vars.css"
|
|
3
3
|
import Avatar from "../Avatar/Avatar.svelte"
|
|
4
4
|
import ClearButton from "../ClearButton/ClearButton.svelte"
|
|
5
5
|
|
|
6
|
-
export let icon = ""
|
|
7
|
-
export let avatar = ""
|
|
8
|
-
export let invalid = false
|
|
9
|
-
export let disabled = false
|
|
10
|
-
export let closable = false
|
|
6
|
+
export let icon: string = ""
|
|
7
|
+
export let avatar: string = ""
|
|
8
|
+
export let invalid: boolean = false
|
|
9
|
+
export let disabled: boolean = false
|
|
10
|
+
export let closable: boolean = false
|
|
11
11
|
</script>
|
|
12
12
|
|
|
13
13
|
<div
|
package/src/Tags/Tags.svelte
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
<script>
|
|
1
|
+
<script lang="ts">
|
|
2
2
|
import Icon from "../Icon/Icon.svelte"
|
|
3
3
|
import AbsTooltip from "./AbsTooltip.svelte"
|
|
4
4
|
|
|
5
|
-
export let tooltip = ""
|
|
6
|
-
export let size = "M"
|
|
7
|
-
export let disabled = true
|
|
5
|
+
export let tooltip: string = ""
|
|
6
|
+
export let size: "S" | "M" = "M"
|
|
7
|
+
export let disabled: boolean = true
|
|
8
8
|
</script>
|
|
9
9
|
|
|
10
10
|
<div class:container={!!tooltip}>
|
package/src/TreeView/Item.svelte
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
export let selected = false
|
|
3
|
-
export let open = false
|
|
4
|
-
export let href =
|
|
5
|
-
export let title
|
|
6
|
-
export let icon
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
export let selected: boolean = false
|
|
3
|
+
export let open: boolean = false
|
|
4
|
+
export let href: string | null = null
|
|
5
|
+
export let title: string
|
|
6
|
+
export let icon: string | undefined
|
|
7
7
|
</script>
|
|
8
8
|
|
|
9
9
|
<li
|
package/src/TreeView/Tree.svelte
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
<script>
|
|
1
|
+
<script lang="ts">
|
|
2
2
|
import "@spectrum-css/treeview/dist/index-vars.css"
|
|
3
3
|
|
|
4
|
-
export let quiet = false
|
|
5
|
-
export let standalone = true
|
|
6
|
-
export let width = "250px"
|
|
4
|
+
export let quiet: boolean = false
|
|
5
|
+
export let standalone: boolean = true
|
|
6
|
+
export let width: string = "250px"
|
|
7
7
|
</script>
|
|
8
8
|
|
|
9
9
|
<ul
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
<script>
|
|
1
|
+
<script lang="ts">
|
|
2
2
|
import "@spectrum-css/typography/dist/index-vars.css"
|
|
3
3
|
|
|
4
|
-
export let size = "M"
|
|
5
|
-
export let serif = false
|
|
6
|
-
export let weight =
|
|
4
|
+
export let size: "S" | "M" | "L" = "M"
|
|
5
|
+
export let serif: boolean = false
|
|
6
|
+
export let weight: number | null = null
|
|
7
7
|
</script>
|
|
8
8
|
|
|
9
9
|
<p
|
package/src/index.ts
CHANGED
|
@@ -65,8 +65,6 @@ export { default as Modal } from "./Modal/Modal.svelte"
|
|
|
65
65
|
export { default as ModalContent, keepOpen } from "./Modal/ModalContent.svelte"
|
|
66
66
|
export { default as NotificationDisplay } from "./Notification/NotificationDisplay.svelte"
|
|
67
67
|
export { default as Notification } from "./Notification/Notification.svelte"
|
|
68
|
-
export { default as SideNavigation } from "./SideNavigation/Navigation.svelte"
|
|
69
|
-
export { default as SideNavigationItem } from "./SideNavigation/Item.svelte"
|
|
70
68
|
export { default as Context } from "./context"
|
|
71
69
|
export { default as Table } from "./Table/Table.svelte"
|
|
72
70
|
export { default as Tabs } from "./Tabs/Tabs.svelte"
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import { getContext } from "svelte"
|
|
3
|
-
|
|
4
|
-
const multilevel = getContext("sidenav-type")
|
|
5
|
-
import Badge from "../Badge/Badge.svelte"
|
|
6
|
-
|
|
7
|
-
export let href = ""
|
|
8
|
-
export let external = false
|
|
9
|
-
export let heading = ""
|
|
10
|
-
export let icon = ""
|
|
11
|
-
export let selected = false
|
|
12
|
-
export let disabled = false
|
|
13
|
-
export let badge = ""
|
|
14
|
-
</script>
|
|
15
|
-
|
|
16
|
-
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
17
|
-
<!-- svelte-ignore a11y-no-noninteractive-element-interactions -->
|
|
18
|
-
<li
|
|
19
|
-
class="spectrum-SideNav-item"
|
|
20
|
-
class:is-selected={selected}
|
|
21
|
-
class:is-disabled={disabled}
|
|
22
|
-
on:click
|
|
23
|
-
>
|
|
24
|
-
{#if heading}
|
|
25
|
-
<h2 class="spectrum-SideNav-heading" id="nav-heading-{heading}">
|
|
26
|
-
{heading}
|
|
27
|
-
</h2>
|
|
28
|
-
{/if}
|
|
29
|
-
<a
|
|
30
|
-
target={external ? "_blank" : ""}
|
|
31
|
-
{href}
|
|
32
|
-
class="spectrum-SideNav-itemLink"
|
|
33
|
-
aria-current="page"
|
|
34
|
-
>
|
|
35
|
-
{#if icon}
|
|
36
|
-
<svg
|
|
37
|
-
class="spectrum-Icon spectrum-Icon--sizeM spectrum-SideNav-itemIcon"
|
|
38
|
-
focusable="false"
|
|
39
|
-
aria-hidden="true"
|
|
40
|
-
>
|
|
41
|
-
<use xlink:href="#spectrum-icon-18-{icon}" />
|
|
42
|
-
</svg>
|
|
43
|
-
{/if}
|
|
44
|
-
<slot />
|
|
45
|
-
{#if badge}
|
|
46
|
-
<div class="badge">
|
|
47
|
-
<Badge active size="S">{badge}</Badge>
|
|
48
|
-
</div>
|
|
49
|
-
{/if}
|
|
50
|
-
</a>
|
|
51
|
-
|
|
52
|
-
{#if multilevel && $$slots.subnav}
|
|
53
|
-
<ul class="spectrum-SideNav">
|
|
54
|
-
<slot name="subnav" />
|
|
55
|
-
</ul>
|
|
56
|
-
{/if}
|
|
57
|
-
</li>
|
|
58
|
-
|
|
59
|
-
<style>
|
|
60
|
-
.badge {
|
|
61
|
-
margin-left: 10px;
|
|
62
|
-
}
|
|
63
|
-
</style>
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import { setContext } from "svelte"
|
|
3
|
-
import "@spectrum-css/sidenav/dist/index-vars.css"
|
|
4
|
-
|
|
5
|
-
export let multilevel = false
|
|
6
|
-
setContext("sidenav-type", multilevel)
|
|
7
|
-
</script>
|
|
8
|
-
|
|
9
|
-
<nav>
|
|
10
|
-
<ul class="spectrum-SideNav" class:spectrum-SideNav--multiLevel={multilevel}>
|
|
11
|
-
<slot />
|
|
12
|
-
</ul>
|
|
13
|
-
</nav>
|
|
File without changes
|