svelte-fluentui 1.0.0-rc01
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/LICENSE +21 -0
- package/README.md +191 -0
- package/dist/actions/use-actions.d.ts +1 -0
- package/dist/actions/use-actions.js +6 -0
- package/dist/components/Accordion.svelte +68 -0
- package/dist/components/Accordion.svelte.d.ts +11 -0
- package/dist/components/AccordionItem.svelte +52 -0
- package/dist/components/AccordionItem.svelte.d.ts +17 -0
- package/dist/components/Anchor.svelte +53 -0
- package/dist/components/Anchor.svelte.d.ts +25 -0
- package/dist/components/Badge.svelte +14 -0
- package/dist/components/Badge.svelte.d.ts +15 -0
- package/dist/components/Breadcrumb.svelte +8 -0
- package/dist/components/Breadcrumb.svelte.d.ts +8 -0
- package/dist/components/BreadcrumbItem.svelte +17 -0
- package/dist/components/BreadcrumbItem.svelte.d.ts +10 -0
- package/dist/components/Button.svelte +31 -0
- package/dist/components/Button.svelte.d.ts +24 -0
- package/dist/components/Calendar.svelte +442 -0
- package/dist/components/Calendar.svelte.d.ts +27 -0
- package/dist/components/Card.svelte +14 -0
- package/dist/components/Card.svelte.d.ts +14 -0
- package/dist/components/Checkbox.svelte +38 -0
- package/dist/components/Checkbox.svelte.d.ts +17 -0
- package/dist/components/Combobox.svelte +91 -0
- package/dist/components/Combobox.svelte.d.ts +21 -0
- package/dist/components/ContentRegion.svelte +7 -0
- package/dist/components/ContentRegion.svelte.d.ts +7 -0
- package/dist/components/DataGrid.svelte +26 -0
- package/dist/components/DataGrid.svelte.d.ts +16 -0
- package/dist/components/DataGridCell.svelte +33 -0
- package/dist/components/DataGridCell.svelte.d.ts +20 -0
- package/dist/components/DataGridRow.svelte +33 -0
- package/dist/components/DataGridRow.svelte.d.ts +16 -0
- package/dist/components/Dialog.svelte +86 -0
- package/dist/components/Dialog.svelte.d.ts +27 -0
- package/dist/components/Divider.svelte +9 -0
- package/dist/components/Divider.svelte.d.ts +4 -0
- package/dist/components/Listbox.svelte +34 -0
- package/dist/components/Listbox.svelte.d.ts +13 -0
- package/dist/components/Menu.svelte +9 -0
- package/dist/components/Menu.svelte.d.ts +4 -0
- package/dist/components/MenuItem.svelte +9 -0
- package/dist/components/MenuItem.svelte.d.ts +4 -0
- package/dist/components/NumberField.svelte +57 -0
- package/dist/components/NumberField.svelte.d.ts +29 -0
- package/dist/components/Option.svelte +28 -0
- package/dist/components/Option.svelte.d.ts +13 -0
- package/dist/components/Paginator.svelte +85 -0
- package/dist/components/Paginator.svelte.d.ts +21 -0
- package/dist/components/PositioningRegion.svelte +7 -0
- package/dist/components/PositioningRegion.svelte.d.ts +8 -0
- package/dist/components/Progress.svelte +9 -0
- package/dist/components/Progress.svelte.d.ts +4 -0
- package/dist/components/README.md +75 -0
- package/dist/components/Radio.svelte +23 -0
- package/dist/components/Radio.svelte.d.ts +11 -0
- package/dist/components/RadioGroup.svelte +26 -0
- package/dist/components/RadioGroup.svelte.d.ts +13 -0
- package/dist/components/Search.svelte +51 -0
- package/dist/components/Search.svelte.d.ts +30 -0
- package/dist/components/Select.svelte +41 -0
- package/dist/components/Select.svelte.d.ts +23 -0
- package/dist/components/Slider.svelte +9 -0
- package/dist/components/Slider.svelte.d.ts +4 -0
- package/dist/components/Switch.svelte +45 -0
- package/dist/components/Switch.svelte.d.ts +22 -0
- package/dist/components/Tab.svelte +52 -0
- package/dist/components/Tab.svelte.d.ts +23 -0
- package/dist/components/TabPanel.svelte +10 -0
- package/dist/components/TabPanel.svelte.d.ts +13 -0
- package/dist/components/Tabs.svelte +35 -0
- package/dist/components/Tabs.svelte.d.ts +21 -0
- package/dist/components/TextField.svelte +57 -0
- package/dist/components/TextField.svelte.d.ts +27 -0
- package/dist/components/Textarea.svelte +53 -0
- package/dist/components/Textarea.svelte.d.ts +32 -0
- package/dist/components/Toast.svelte +90 -0
- package/dist/components/Toast.svelte.d.ts +18 -0
- package/dist/components/Toolbar.svelte +16 -0
- package/dist/components/Toolbar.svelte.d.ts +12 -0
- package/dist/components/Tooltip.svelte +28 -0
- package/dist/components/Tooltip.svelte.d.ts +18 -0
- package/dist/components/Tree.svelte +9 -0
- package/dist/components/Tree.svelte.d.ts +4 -0
- package/dist/components/TreeItem.svelte +9 -0
- package/dist/components/TreeItem.svelte.d.ts +4 -0
- package/dist/components/icons/ChevronDoubleRight.svelte +1 -0
- package/dist/components/icons/ChevronDoubleRight.svelte.d.ts +26 -0
- package/dist/components/icons/ExpandIcon.svelte +9 -0
- package/dist/components/icons/ExpandIcon.svelte.d.ts +26 -0
- package/dist/components/icons/HamburgerIcon.svelte +8 -0
- package/dist/components/icons/HamburgerIcon.svelte.d.ts +26 -0
- package/dist/components/icons/ResourcesIcon.svelte +17 -0
- package/dist/components/icons/ResourcesIcon.svelte.d.ts +6 -0
- package/dist/components/icons/index.d.ts +4 -0
- package/dist/components/icons/index.js +4 -0
- package/dist/components/index.d.ts +45 -0
- package/dist/components/index.js +45 -0
- package/dist/components/layout/BodyContent.svelte +20 -0
- package/dist/components/layout/BodyContent.svelte.d.ts +7 -0
- package/dist/components/layout/Footer.svelte +13 -0
- package/dist/components/layout/Footer.svelte.d.ts +8 -0
- package/dist/components/layout/Header.svelte +13 -0
- package/dist/components/layout/Header.svelte.d.ts +8 -0
- package/dist/components/layout/Layout.svelte +10 -0
- package/dist/components/layout/Layout.svelte.d.ts +8 -0
- package/dist/components/layout/Spacer.svelte +18 -0
- package/dist/components/layout/Spacer.svelte.d.ts +6 -0
- package/dist/components/layout/Stack.svelte +19 -0
- package/dist/components/layout/Stack.svelte.d.ts +18 -0
- package/dist/components/layout/index.d.ts +6 -0
- package/dist/components/layout/index.js +6 -0
- package/dist/components/nav/AppBar.svelte +15 -0
- package/dist/components/nav/AppBar.svelte.d.ts +10 -0
- package/dist/components/nav/AppBarItem.svelte +34 -0
- package/dist/components/nav/AppBarItem.svelte.d.ts +14 -0
- package/dist/components/nav/NavExpander.svelte +18 -0
- package/dist/components/nav/NavExpander.svelte.d.ts +7 -0
- package/dist/components/nav/NavGroup.svelte +244 -0
- package/dist/components/nav/NavGroup.svelte.d.ts +12 -0
- package/dist/components/nav/NavIcon.svelte +7 -0
- package/dist/components/nav/NavIcon.svelte.d.ts +7 -0
- package/dist/components/nav/NavItem.svelte +17 -0
- package/dist/components/nav/NavItem.svelte.d.ts +11 -0
- package/dist/components/nav/NavLink.svelte +31 -0
- package/dist/components/nav/NavLink.svelte.d.ts +13 -0
- package/dist/components/nav/NavLinkItem.svelte +23 -0
- package/dist/components/nav/NavLinkItem.svelte.d.ts +17 -0
- package/dist/components/nav/NavMenu.svelte +19 -0
- package/dist/components/nav/NavMenu.svelte.d.ts +11 -0
- package/dist/components/nav/index.d.ts +8 -0
- package/dist/components/nav/index.js +8 -0
- package/dist/constants/date.d.ts +1 -0
- package/dist/constants/date.js +1 -0
- package/dist/data/selected-options.svelte.d.ts +8 -0
- package/dist/data/selected-options.svelte.js +51 -0
- package/dist/fluent-ui/calendar/calendar-day.d.ts +17 -0
- package/dist/fluent-ui/calendar/calendar-day.js +56 -0
- package/dist/fluent-ui/calendar/calendar-month.d.ts +12 -0
- package/dist/fluent-ui/calendar/calendar-month.js +56 -0
- package/dist/fluent-ui/calendar/calendar-titles.d.ts +15 -0
- package/dist/fluent-ui/calendar/calendar-titles.js +99 -0
- package/dist/fluent-ui/calendar/calendar-year.d.ts +12 -0
- package/dist/fluent-ui/calendar/calendar-year.js +46 -0
- package/dist/fluent-ui/calendar/day-format.d.ts +4 -0
- package/dist/fluent-ui/calendar/day-format.js +3 -0
- package/dist/fluent-ui/calendar/fluent-calendar-extended.d.ts +44 -0
- package/dist/fluent-ui/calendar/fluent-calendar-extended.js +170 -0
- package/dist/fluent-ui/calendar/fluent-calendar.d.ts +18 -0
- package/dist/fluent-ui/calendar/fluent-calendar.js +1 -0
- package/dist/fluent-ui/calendar/range-of-dates.d.ts +8 -0
- package/dist/fluent-ui/calendar/range-of-dates.js +34 -0
- package/dist/fluent-ui/constants/app-bar.d.ts +4 -0
- package/dist/fluent-ui/constants/app-bar.js +5 -0
- package/dist/fluent-ui/constants/button.d.ts +7 -0
- package/dist/fluent-ui/constants/button.js +8 -0
- package/dist/fluent-ui/constants/calendar-vertical-position.d.ts +5 -0
- package/dist/fluent-ui/constants/calendar-vertical-position.js +6 -0
- package/dist/fluent-ui/constants/stack.d.ts +20 -0
- package/dist/fluent-ui/constants/stack.js +23 -0
- package/dist/fluent-ui/setup.d.ts +1 -0
- package/dist/fluent-ui/setup.js +7 -0
- package/dist/fluent-ui/util/range-of.d.ts +21 -0
- package/dist/fluent-ui/util/range-of.js +84 -0
- package/dist/helpers/array.d.ts +2 -0
- package/dist/helpers/array.js +6 -0
- package/dist/helpers/html.d.ts +2 -0
- package/dist/helpers/html.js +10 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/main.scss +1 -0
- package/dist/types/combobox.d.ts +7 -0
- package/dist/types/combobox.js +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.js +1 -0
- package/package.json +83 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<script lang="ts">import { provideFluentDesignSystem, fluentDataGrid } from "@fluentui/web-components";
|
|
2
|
+
provideFluentDesignSystem().register(fluentDataGrid());
|
|
3
|
+
let { class: className = "", style = "", id = undefined, ariaRowCount = undefined, generateHeader = undefined, role = "grid", onCloseColumnOptions = undefined, onCloseColumnResize = undefined, children = undefined, ...restProps } = $props();
|
|
4
|
+
function handleCloseColumnOptions(e) {
|
|
5
|
+
onCloseColumnOptions?.(e);
|
|
6
|
+
}
|
|
7
|
+
function handleCloseColumnResize(e) {
|
|
8
|
+
onCloseColumnResize?.(e);
|
|
9
|
+
}
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<fluent-data-grid
|
|
13
|
+
class={className}
|
|
14
|
+
{style}
|
|
15
|
+
{id}
|
|
16
|
+
aria-rowcount={ariaRowCount}
|
|
17
|
+
generate-header={generateHeader}
|
|
18
|
+
role={role}
|
|
19
|
+
on:closecolumnoptions={handleCloseColumnOptions}
|
|
20
|
+
on:closecolumnresize={handleCloseColumnResize}
|
|
21
|
+
{...restProps}
|
|
22
|
+
>
|
|
23
|
+
{#if children}
|
|
24
|
+
{@render children?.()}
|
|
25
|
+
{/if}
|
|
26
|
+
</fluent-data-grid>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { SlotType } from "../types/index.js";
|
|
2
|
+
type Props = {
|
|
3
|
+
class?: string;
|
|
4
|
+
style?: string;
|
|
5
|
+
id?: string;
|
|
6
|
+
ariaRowCount?: number;
|
|
7
|
+
generateHeader?: "none" | "default" | "sticky";
|
|
8
|
+
role?: string;
|
|
9
|
+
onCloseColumnOptions?: (e: Event) => void;
|
|
10
|
+
onCloseColumnResize?: (e: Event) => void;
|
|
11
|
+
children?: SlotType;
|
|
12
|
+
[prop: string]: any;
|
|
13
|
+
};
|
|
14
|
+
declare const DataGrid: import("svelte").Component<Props, {}, "">;
|
|
15
|
+
type DataGrid = ReturnType<typeof DataGrid>;
|
|
16
|
+
export default DataGrid;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<script lang="ts">import { provideFluentDesignSystem, fluentDataGridCell } from "@fluentui/web-components";
|
|
2
|
+
provideFluentDesignSystem().register(fluentDataGridCell());
|
|
3
|
+
let { class: className = "", style = "", gridColumn = undefined, cellType = "default", colIndex = undefined, role = undefined, tabIndex = undefined, title = undefined, ariaLabel = undefined, onKeyDown = undefined, onClick = undefined, onFocus = undefined, children = undefined, ...restProps } = $props();
|
|
4
|
+
function handleKeyDown(e) {
|
|
5
|
+
onKeyDown?.(e);
|
|
6
|
+
}
|
|
7
|
+
function handleClick(e) {
|
|
8
|
+
onClick?.(e);
|
|
9
|
+
}
|
|
10
|
+
function handleFocus(e) {
|
|
11
|
+
onFocus?.(e);
|
|
12
|
+
}
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<fluent-data-grid-cell
|
|
16
|
+
class={className}
|
|
17
|
+
{style}
|
|
18
|
+
grid-column={gridColumn}
|
|
19
|
+
cell-type={cellType}
|
|
20
|
+
col-index={colIndex}
|
|
21
|
+
{role}
|
|
22
|
+
tabindex={tabIndex}
|
|
23
|
+
{title}
|
|
24
|
+
aria-label={ariaLabel}
|
|
25
|
+
on:keydown={handleKeyDown}
|
|
26
|
+
on:click={handleClick}
|
|
27
|
+
on:focus={handleFocus}
|
|
28
|
+
{...restProps}
|
|
29
|
+
>
|
|
30
|
+
{#if children}
|
|
31
|
+
{@render children?.()}
|
|
32
|
+
{/if}
|
|
33
|
+
</fluent-data-grid-cell>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { SlotType } from "../types/index.js";
|
|
2
|
+
type Props = {
|
|
3
|
+
class?: string;
|
|
4
|
+
style?: string;
|
|
5
|
+
gridColumn?: number | string;
|
|
6
|
+
cellType?: "default" | "columnheader";
|
|
7
|
+
colIndex?: number;
|
|
8
|
+
role?: string;
|
|
9
|
+
tabIndex?: number;
|
|
10
|
+
title?: string;
|
|
11
|
+
ariaLabel?: string;
|
|
12
|
+
onKeyDown?: (e: KeyboardEvent) => void;
|
|
13
|
+
onClick?: (e: MouseEvent) => void;
|
|
14
|
+
onFocus?: (e: FocusEvent) => void;
|
|
15
|
+
children?: SlotType;
|
|
16
|
+
[prop: string]: any;
|
|
17
|
+
};
|
|
18
|
+
declare const DataGridCell: import("svelte").Component<Props, {}, "">;
|
|
19
|
+
type DataGridCell = ReturnType<typeof DataGridCell>;
|
|
20
|
+
export default DataGridCell;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<script lang="ts">import { provideFluentDesignSystem, fluentDataGridRow } from "@fluentui/web-components";
|
|
2
|
+
provideFluentDesignSystem().register(fluentDataGridRow());
|
|
3
|
+
let { class: className = "", style = "", rowIndex = undefined, rowType = undefined, onKeyDown = undefined, onClick = undefined, onDblClick = undefined, onFocus = undefined, children = undefined, ...restProps } = $props();
|
|
4
|
+
function handleKeyDown(e) {
|
|
5
|
+
onKeyDown?.(e);
|
|
6
|
+
}
|
|
7
|
+
function handleClick(e) {
|
|
8
|
+
onClick?.(e);
|
|
9
|
+
}
|
|
10
|
+
function handleDblClick(e) {
|
|
11
|
+
onDblClick?.(e);
|
|
12
|
+
}
|
|
13
|
+
function handleFocus(e) {
|
|
14
|
+
onFocus?.(e);
|
|
15
|
+
}
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<fluent-data-grid-row
|
|
19
|
+
class={className}
|
|
20
|
+
{style}
|
|
21
|
+
data-row-index={rowIndex}
|
|
22
|
+
row-type={rowType}
|
|
23
|
+
role="row"
|
|
24
|
+
on:keydown={handleKeyDown}
|
|
25
|
+
on:click={handleClick}
|
|
26
|
+
on:dblclick={handleDblClick}
|
|
27
|
+
on:focus={handleFocus}
|
|
28
|
+
{...restProps}
|
|
29
|
+
>
|
|
30
|
+
{#if children}
|
|
31
|
+
{@render children?.()}
|
|
32
|
+
{/if}
|
|
33
|
+
</fluent-data-grid-row>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { SlotType } from "../types/index.js";
|
|
2
|
+
type Props = {
|
|
3
|
+
class?: string;
|
|
4
|
+
style?: string;
|
|
5
|
+
rowIndex?: number;
|
|
6
|
+
rowType?: string;
|
|
7
|
+
onKeyDown?: (e: KeyboardEvent) => void;
|
|
8
|
+
onClick?: (e: MouseEvent) => void;
|
|
9
|
+
onDblClick?: (e: MouseEvent) => void;
|
|
10
|
+
onFocus?: (e: FocusEvent) => void;
|
|
11
|
+
children?: SlotType;
|
|
12
|
+
[prop: string]: any;
|
|
13
|
+
};
|
|
14
|
+
declare const DataGridRow: import("svelte").Component<Props, {}, "">;
|
|
15
|
+
type DataGridRow = ReturnType<typeof DataGridRow>;
|
|
16
|
+
export default DataGridRow;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
<script lang="ts" module>export {};
|
|
2
|
+
</script>
|
|
3
|
+
|
|
4
|
+
<script lang="ts">import { fluentDialog, provideFluentDesignSystem } from "@fluentui/web-components";
|
|
5
|
+
import Button from "./Button.svelte";
|
|
6
|
+
provideFluentDesignSystem().register(fluentDialog());
|
|
7
|
+
let { modal = undefined, visible = $bindable(undefined), trapFocus = undefined, ariaDescribedby = undefined, ariaLabelledby = undefined, ariaLabel = undefined, preventClose = false, dismissable = false, children = undefined, actions = undefined, dismissButtonText = undefined, ...restProps } = $props();
|
|
8
|
+
let element = undefined;
|
|
9
|
+
export function show() {
|
|
10
|
+
if (!element) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
visible = true;
|
|
14
|
+
element.show();
|
|
15
|
+
}
|
|
16
|
+
export function hide() {
|
|
17
|
+
if (!element) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
visible = false;
|
|
21
|
+
element.hide();
|
|
22
|
+
}
|
|
23
|
+
export function toggle() {
|
|
24
|
+
if (!element) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
visible = !visible;
|
|
28
|
+
if (visible) {
|
|
29
|
+
element.show();
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
element.hide();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
</script>
|
|
36
|
+
|
|
37
|
+
<fluent-dialog
|
|
38
|
+
bind:this={element}
|
|
39
|
+
{...restProps}
|
|
40
|
+
{modal}
|
|
41
|
+
hidden={!visible}
|
|
42
|
+
{trapFocus}
|
|
43
|
+
{ariaDescribedby}
|
|
44
|
+
{ariaLabelledby}
|
|
45
|
+
{ariaLabel}
|
|
46
|
+
>
|
|
47
|
+
<div class="tw:flex tw:flex-col tw:h-full">
|
|
48
|
+
{#if !preventClose}
|
|
49
|
+
<div class="close-button-parent tw:self-end tw:flex-none tw:mt-1 tw:mr-1">
|
|
50
|
+
<!-- todo: proper close button -->
|
|
51
|
+
X
|
|
52
|
+
</div>
|
|
53
|
+
{/if}
|
|
54
|
+
|
|
55
|
+
<div class="tw:flex-1">
|
|
56
|
+
{@render children?.()}
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
{#if dismissable || actions}
|
|
60
|
+
<div class="tw:flex-none tw:flex tw:justify-between tw:flex-wrap gaptw:-2">
|
|
61
|
+
{#if dismissable}
|
|
62
|
+
<div class="close-button-parent tw:flex tw:justify-end tw:flex-none">
|
|
63
|
+
<Button onClick={hide}>
|
|
64
|
+
{#if dismissButtonText}
|
|
65
|
+
{@render dismissButtonText()}
|
|
66
|
+
{:else}
|
|
67
|
+
Dismiss
|
|
68
|
+
{/if}
|
|
69
|
+
</Button>
|
|
70
|
+
</div>
|
|
71
|
+
{/if}
|
|
72
|
+
{#if actions}
|
|
73
|
+
<div class="actions tw:flex-1 tw:flex tw:items-baseline tw:gap-1">
|
|
74
|
+
{@render actions()}
|
|
75
|
+
</div>
|
|
76
|
+
{/if}
|
|
77
|
+
</div>
|
|
78
|
+
{/if}
|
|
79
|
+
</div>
|
|
80
|
+
</fluent-dialog>
|
|
81
|
+
|
|
82
|
+
<style>
|
|
83
|
+
@reference "tailwindcss";
|
|
84
|
+
|
|
85
|
+
</style>
|
|
86
|
+
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type HTMLDialogElement = HTMLElement & {
|
|
2
|
+
show: VoidFunction;
|
|
3
|
+
hide: VoidFunction;
|
|
4
|
+
toggle: VoidFunction;
|
|
5
|
+
};
|
|
6
|
+
import type { SlotType } from "../types/index.js";
|
|
7
|
+
type Props = {
|
|
8
|
+
modal?: boolean;
|
|
9
|
+
visible?: boolean;
|
|
10
|
+
preventClose?: boolean;
|
|
11
|
+
dismissable?: boolean;
|
|
12
|
+
trapFocus?: boolean;
|
|
13
|
+
ariaDescribedby?: string;
|
|
14
|
+
ariaLabelledby?: string;
|
|
15
|
+
ariaLabel?: string;
|
|
16
|
+
children?: SlotType;
|
|
17
|
+
actions?: SlotType;
|
|
18
|
+
dismissButtonText?: SlotType;
|
|
19
|
+
[prop: string]: any;
|
|
20
|
+
};
|
|
21
|
+
declare const Dialog: import("svelte").Component<Props, {
|
|
22
|
+
show: () => void;
|
|
23
|
+
hide: () => void;
|
|
24
|
+
toggle: () => void;
|
|
25
|
+
}, "visible">;
|
|
26
|
+
type Dialog = ReturnType<typeof Dialog>;
|
|
27
|
+
export default Dialog;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<script lang="ts">import { fluentDivider, provideFluentDesignSystem } from "@fluentui/web-components";
|
|
2
|
+
provideFluentDesignSystem().register(fluentDivider());
|
|
3
|
+
let {} = $props();
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<fluent-divider>
|
|
7
|
+
<!-- todo: finish Divider -->
|
|
8
|
+
</fluent-divider>
|
|
9
|
+
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<script lang="ts">import { fluentListbox, provideFluentDesignSystem } from "@fluentui/web-components";
|
|
2
|
+
import { setContext, untrack } from "svelte";
|
|
3
|
+
import { createSelectedOptions } from "../data/selected-options.svelte.js";
|
|
4
|
+
provideFluentDesignSystem().register(fluentListbox());
|
|
5
|
+
let { value = $bindable(), multi = undefined, disabled = undefined, readonly = undefined, children = undefined, ...restProps } = $props();
|
|
6
|
+
let element = $state();
|
|
7
|
+
const selectedOptions = createSelectedOptions(value, multi);
|
|
8
|
+
setContext("selected-options", selectedOptions);
|
|
9
|
+
$effect(() => {
|
|
10
|
+
const current = selectedOptions.value;
|
|
11
|
+
if (JSON.stringify(current) !== JSON.stringify(value)) {
|
|
12
|
+
value = current;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
let selectedOptionsAttr = $derived(() => typeof value === "string" ? value : Array.isArray(value) ? value.join(",") : undefined);
|
|
16
|
+
function handleOnChange(ev) {
|
|
17
|
+
const target = ev.target;
|
|
18
|
+
if (!target)
|
|
19
|
+
return;
|
|
20
|
+
const selected = Array.from(target.selectedOptions).map((opt) => opt.value);
|
|
21
|
+
value = multi ? selected : selected[0];
|
|
22
|
+
}
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
<fluent-listbox
|
|
26
|
+
bind:this={element}
|
|
27
|
+
selected-options={selectedOptionsAttr}
|
|
28
|
+
{disabled}
|
|
29
|
+
multiple={multi}
|
|
30
|
+
{...restProps}
|
|
31
|
+
onchange={handleOnChange}
|
|
32
|
+
>
|
|
33
|
+
{@render children?.()}
|
|
34
|
+
</fluent-listbox>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { SlotType } from "../types/index.js";
|
|
2
|
+
type ValueType = string | string[] | null | undefined;
|
|
3
|
+
type Props = {
|
|
4
|
+
value: ValueType;
|
|
5
|
+
multi?: boolean;
|
|
6
|
+
readonly?: boolean;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
children?: SlotType;
|
|
9
|
+
[prop: string]: any;
|
|
10
|
+
};
|
|
11
|
+
declare const Listbox: import("svelte").Component<Props, {}, "value">;
|
|
12
|
+
type Listbox = ReturnType<typeof Listbox>;
|
|
13
|
+
export default Listbox;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<script lang="ts">import { fluentMenu, fluentMenuItem, provideFluentDesignSystem } from "@fluentui/web-components";
|
|
2
|
+
provideFluentDesignSystem().register(fluentMenu(), fluentMenuItem());
|
|
3
|
+
let {} = $props();
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<fluent-menu>
|
|
7
|
+
<!-- todo: finish Menu -->
|
|
8
|
+
</fluent-menu>
|
|
9
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<script lang="ts">import { fluentMenuItem, provideFluentDesignSystem } from "@fluentui/web-components";
|
|
2
|
+
provideFluentDesignSystem().register(fluentMenuItem());
|
|
3
|
+
let {} = $props();
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<fluent-menu-item>
|
|
7
|
+
<!-- todo: finish MenuItem -->
|
|
8
|
+
</fluent-menu-item>
|
|
9
|
+
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<script lang="ts">import { fluentNumberField, provideFluentDesignSystem } from "@fluentui/web-components";
|
|
2
|
+
provideFluentDesignSystem().register(fluentNumberField());
|
|
3
|
+
let { value = $bindable(), placeholder, appearance, style, disabled, readonly, required, name, label, autofocus, step, min, max, hideStep, children, onInput, onChange, } = $props();
|
|
4
|
+
step ??= 1;
|
|
5
|
+
min ??= -Infinity;
|
|
6
|
+
max ??= Infinity;
|
|
7
|
+
let element;
|
|
8
|
+
// Exposed methods
|
|
9
|
+
export function stepUp() {
|
|
10
|
+
element?.stepUp();
|
|
11
|
+
}
|
|
12
|
+
export function stepDown() {
|
|
13
|
+
element?.stepDown();
|
|
14
|
+
}
|
|
15
|
+
export function checkValidity() {
|
|
16
|
+
return element?.checkValidity();
|
|
17
|
+
}
|
|
18
|
+
export function reportValidity() {
|
|
19
|
+
return element?.reportValidity();
|
|
20
|
+
}
|
|
21
|
+
export function setCustomValidity(message) {
|
|
22
|
+
element?.setCustomValidity(message);
|
|
23
|
+
}
|
|
24
|
+
function handleOnInput(event) {
|
|
25
|
+
const target = event.target;
|
|
26
|
+
value = target.value;
|
|
27
|
+
onInput?.(event);
|
|
28
|
+
}
|
|
29
|
+
function handleOnChange(event) {
|
|
30
|
+
onChange?.(event);
|
|
31
|
+
}
|
|
32
|
+
</script>
|
|
33
|
+
|
|
34
|
+
<fluent-number-field
|
|
35
|
+
bind:this={element}
|
|
36
|
+
{placeholder}
|
|
37
|
+
{appearance}
|
|
38
|
+
{style}
|
|
39
|
+
{disabled}
|
|
40
|
+
{readonly}
|
|
41
|
+
{required}
|
|
42
|
+
{autofocus}
|
|
43
|
+
{step}
|
|
44
|
+
{min}
|
|
45
|
+
{max}
|
|
46
|
+
{hideStep}
|
|
47
|
+
{name}
|
|
48
|
+
value={value}
|
|
49
|
+
oninput={handleOnInput}
|
|
50
|
+
onchange={handleOnChange}
|
|
51
|
+
>
|
|
52
|
+
{#if children}
|
|
53
|
+
{@render children()}
|
|
54
|
+
{:else}
|
|
55
|
+
{label}
|
|
56
|
+
{/if}
|
|
57
|
+
</fluent-number-field>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { SlotType } from "../types/index.js";
|
|
2
|
+
type Props = {
|
|
3
|
+
value?: string;
|
|
4
|
+
placeholder?: string;
|
|
5
|
+
appearance?: string;
|
|
6
|
+
style?: string;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
readonly?: boolean;
|
|
9
|
+
required?: boolean;
|
|
10
|
+
name?: string;
|
|
11
|
+
label?: string;
|
|
12
|
+
autofocus?: boolean;
|
|
13
|
+
step?: number;
|
|
14
|
+
min?: number;
|
|
15
|
+
max?: number;
|
|
16
|
+
hideStep?: boolean;
|
|
17
|
+
children?: SlotType;
|
|
18
|
+
onInput?: (ev: InputEvent) => void;
|
|
19
|
+
onChange?: (ev: Event) => void;
|
|
20
|
+
};
|
|
21
|
+
declare const NumberField: import("svelte").Component<Props, {
|
|
22
|
+
stepUp: () => void;
|
|
23
|
+
stepDown: () => void;
|
|
24
|
+
checkValidity: () => boolean;
|
|
25
|
+
reportValidity: () => boolean;
|
|
26
|
+
setCustomValidity: (message: string) => void;
|
|
27
|
+
}, "value">;
|
|
28
|
+
type NumberField = ReturnType<typeof NumberField>;
|
|
29
|
+
export default NumberField;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<script lang="ts">import { fluentOption, provideFluentDesignSystem } from "@fluentui/web-components";
|
|
2
|
+
import { getContext } from "svelte";
|
|
3
|
+
provideFluentDesignSystem().register(fluentOption());
|
|
4
|
+
let { value, label = undefined, disabled = false, selected = undefined, onClick = undefined, children, ...restProps } = $props();
|
|
5
|
+
const selectedValue = getContext("selected-options");
|
|
6
|
+
function handleOnClick(ev) {
|
|
7
|
+
if (disabled) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
console.log("Option on click", {
|
|
11
|
+
ev,
|
|
12
|
+
selectedValue: selectedValue.value
|
|
13
|
+
});
|
|
14
|
+
selectedValue.toggle(value);
|
|
15
|
+
onClick?.(ev);
|
|
16
|
+
}
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<fluent-option
|
|
20
|
+
{value}
|
|
21
|
+
selected={selected !== undefined ? selected : selectedValue.value?.includes(value)}
|
|
22
|
+
data-option-label={label}
|
|
23
|
+
{disabled}
|
|
24
|
+
{...restProps}
|
|
25
|
+
onclick={handleOnClick}
|
|
26
|
+
>
|
|
27
|
+
{@render children()}
|
|
28
|
+
</fluent-option>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
type Props = {
|
|
2
|
+
value: string;
|
|
3
|
+
label?: string;
|
|
4
|
+
style?: string;
|
|
5
|
+
onClick?: Function;
|
|
6
|
+
selected?: boolean;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
children: any;
|
|
9
|
+
[prop: string]: any;
|
|
10
|
+
};
|
|
11
|
+
declare const Option: import("svelte").Component<Props, {}, "">;
|
|
12
|
+
type Option = ReturnType<typeof Option>;
|
|
13
|
+
export default Option;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<script lang="ts">import { fluentButton, provideFluentDesignSystem } from "@fluentui/web-components";
|
|
2
|
+
provideFluentDesignSystem().register(fluentButton());
|
|
3
|
+
let { class: className = "", style = "", disabled = false, totalItemCount = undefined, currentPageIndex = 0, lastPageIndex = 0, canGoBack = true, canGoForwards = true, onFirst = undefined, onPrevious = undefined, onNext = undefined, onLast = undefined, summaryTemplate = undefined, paginationTextTemplate = undefined, ...restProps } = $props();
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<div class="paginator {className}" {style} {...restProps}>
|
|
7
|
+
{#if totalItemCount !== undefined}
|
|
8
|
+
<div class="summary">
|
|
9
|
+
{#if summaryTemplate}
|
|
10
|
+
{@render summaryTemplate?.()}
|
|
11
|
+
{:else}
|
|
12
|
+
<strong>{totalItemCount}</strong> items
|
|
13
|
+
{/if}
|
|
14
|
+
</div>
|
|
15
|
+
{/if}
|
|
16
|
+
|
|
17
|
+
<nav role="navigation" class="paginator-nav">
|
|
18
|
+
<fluent-button
|
|
19
|
+
on:click={() => onFirst?.()}
|
|
20
|
+
disabled={!canGoBack || disabled}
|
|
21
|
+
title="Go to first page"
|
|
22
|
+
aria-label="Go to first page"
|
|
23
|
+
>
|
|
24
|
+
<span>«</span>
|
|
25
|
+
</fluent-button>
|
|
26
|
+
|
|
27
|
+
<fluent-button
|
|
28
|
+
on:click={() => onPrevious?.()}
|
|
29
|
+
disabled={!canGoBack || disabled}
|
|
30
|
+
title="Go to previous page"
|
|
31
|
+
aria-label="Go to previous page"
|
|
32
|
+
>
|
|
33
|
+
<span>‹</span>
|
|
34
|
+
</fluent-button>
|
|
35
|
+
|
|
36
|
+
<div class="pagination-text">
|
|
37
|
+
{#if paginationTextTemplate}
|
|
38
|
+
{@render paginationTextTemplate?.()}
|
|
39
|
+
{:else}
|
|
40
|
+
Page <strong>{currentPageIndex + 1}</strong> of <strong>{lastPageIndex + 1}</strong>
|
|
41
|
+
{/if}
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
<fluent-button
|
|
45
|
+
on:click={() => onNext?.()}
|
|
46
|
+
disabled={!canGoForwards || disabled}
|
|
47
|
+
title="Go to next page"
|
|
48
|
+
aria-label="Go to next page"
|
|
49
|
+
>
|
|
50
|
+
<span>›</span>
|
|
51
|
+
</fluent-button>
|
|
52
|
+
|
|
53
|
+
<fluent-button
|
|
54
|
+
on:click={() => onLast?.()}
|
|
55
|
+
disabled={!canGoForwards || disabled}
|
|
56
|
+
title="Go to last page"
|
|
57
|
+
aria-label="Go to last page"
|
|
58
|
+
>
|
|
59
|
+
<span>»</span>
|
|
60
|
+
</fluent-button>
|
|
61
|
+
</nav>
|
|
62
|
+
</div>
|
|
63
|
+
|
|
64
|
+
<style>
|
|
65
|
+
.paginator {
|
|
66
|
+
display: flex;
|
|
67
|
+
flex-direction: column;
|
|
68
|
+
gap: 0.5rem;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.summary {
|
|
72
|
+
font-size: 0.9rem;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.paginator-nav {
|
|
76
|
+
display: flex;
|
|
77
|
+
align-items: center;
|
|
78
|
+
gap: 0.25rem;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.pagination-text {
|
|
82
|
+
margin: 0 0.5rem;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
</style>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { SlotType } from "../types/index.js";
|
|
2
|
+
type Props = {
|
|
3
|
+
class?: string;
|
|
4
|
+
style?: string;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
totalItemCount?: number;
|
|
7
|
+
currentPageIndex?: number;
|
|
8
|
+
lastPageIndex?: number;
|
|
9
|
+
canGoBack?: boolean;
|
|
10
|
+
canGoForwards?: boolean;
|
|
11
|
+
onFirst?: () => void;
|
|
12
|
+
onPrevious?: () => void;
|
|
13
|
+
onNext?: () => void;
|
|
14
|
+
onLast?: () => void;
|
|
15
|
+
summaryTemplate?: SlotType;
|
|
16
|
+
paginationTextTemplate?: SlotType;
|
|
17
|
+
[prop: string]: any;
|
|
18
|
+
};
|
|
19
|
+
declare const Paginator: import("svelte").Component<Props, {}, "">;
|
|
20
|
+
type Paginator = ReturnType<typeof Paginator>;
|
|
21
|
+
export default Paginator;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SlotType } from "../types/index.js";
|
|
2
|
+
type Props = {
|
|
3
|
+
title?: string;
|
|
4
|
+
children?: SlotType;
|
|
5
|
+
};
|
|
6
|
+
declare const PositioningRegion: import("svelte").Component<Props, {}, "">;
|
|
7
|
+
type PositioningRegion = ReturnType<typeof PositioningRegion>;
|
|
8
|
+
export default PositioningRegion;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<script lang="ts">import { fluentProgress, provideFluentDesignSystem } from "@fluentui/web-components";
|
|
2
|
+
provideFluentDesignSystem().register(fluentProgress());
|
|
3
|
+
let {} = $props();
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<fluent-progress-bar>
|
|
7
|
+
<!-- todo: finish ProgressBar -->
|
|
8
|
+
</fluent-progress-bar>
|
|
9
|
+
|