@smwb/ui-solid 0.9.0 → 0.11.0
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/README.md +16 -0
- package/dist/assets/styles/less/components/floatingWindow/floatingWindow.entry.css +1 -0
- package/dist/assets/styles/less/components/treeView/treeView.entry.css +1 -1
- package/dist/components/layout/floatingWindow/floatingWindow.d.ts +92 -0
- package/dist/components/layout/floatingWindow/floatingWindow.js +417 -0
- package/dist/components/layout/floatingWindow/floatingWindow.js.map +1 -0
- package/dist/components/layout/floatingWindow/index.d.ts +2 -0
- package/dist/connects/rt/index.d.ts +2 -0
- package/dist/connects/rt/table/index.d.ts +2 -0
- package/dist/connects/rt/table/table.d.ts +48 -0
- package/dist/headless/components/layout/floatingWindow/floatingWindow.js +416 -0
- package/dist/headless/components/layout/floatingWindow/floatingWindow.js.map +1 -0
- package/dist/headless/index.js +314 -308
- package/dist/headless/index.js.map +1 -1
- package/dist/headless/primitives/createHoverPopover.js +80 -0
- package/dist/headless/primitives/createHoverPopover.js.map +1 -0
- package/dist/headless/primitives/createRovingTabIndex.js +25 -0
- package/dist/headless/primitives/createRovingTabIndex.js.map +1 -0
- package/dist/headless/source/components/layout/floatingWindow/floatingWindow.jsx +403 -0
- package/dist/headless/source/components/layout/floatingWindow/floatingWindow.jsx.map +1 -0
- package/dist/headless/source/components/layout/floatingWindow/index.js +6 -0
- package/dist/headless/source/components/layout/floatingWindow/index.js.map +7 -0
- package/dist/headless/source/connects/rt/index.js +5 -0
- package/dist/headless/source/connects/rt/index.js.map +7 -0
- package/dist/headless/source/connects/rt/table/index.js +6 -0
- package/dist/headless/source/connects/rt/table/index.js.map +7 -0
- package/dist/headless/source/connects/rt/table/table.jsx +183 -0
- package/dist/headless/source/connects/rt/table/table.jsx.map +1 -0
- package/dist/headless/source/index.js +6 -0
- package/dist/headless/source/index.js.map +2 -2
- package/dist/headless/source/primitives/createHoverPopover.js +126 -0
- package/dist/headless/source/primitives/createHoverPopover.js.map +7 -0
- package/dist/headless/source/primitives/createRovingTabIndex.js +45 -0
- package/dist/headless/source/primitives/createRovingTabIndex.js.map +7 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +314 -308
- package/dist/index.js.map +1 -1
- package/dist/primitives/createHoverPopover.d.ts +73 -0
- package/dist/primitives/createHoverPopover.js +80 -0
- package/dist/primitives/createHoverPopover.js.map +1 -0
- package/dist/primitives/createRovingTabIndex.d.ts +26 -0
- package/dist/primitives/createRovingTabIndex.js +25 -0
- package/dist/primitives/createRovingTabIndex.js.map +1 -0
- package/dist/source/components/layout/floatingWindow/floatingWindow.jsx +404 -0
- package/dist/source/components/layout/floatingWindow/floatingWindow.jsx.map +1 -0
- package/dist/source/components/layout/floatingWindow/index.js +6 -0
- package/dist/source/components/layout/floatingWindow/index.js.map +7 -0
- package/dist/source/connects/rt/index.js +5 -0
- package/dist/source/connects/rt/index.js.map +7 -0
- package/dist/source/connects/rt/table/index.js +6 -0
- package/dist/source/connects/rt/table/index.js.map +7 -0
- package/dist/source/connects/rt/table/table.jsx +183 -0
- package/dist/source/connects/rt/table/table.jsx.map +1 -0
- package/dist/source/index.js +6 -0
- package/dist/source/index.js.map +2 -2
- package/dist/source/primitives/createHoverPopover.js +126 -0
- package/dist/source/primitives/createHoverPopover.js.map +7 -0
- package/dist/source/primitives/createRovingTabIndex.js +45 -0
- package/dist/source/primitives/createRovingTabIndex.js.map +7 -0
- package/package.json +25 -6
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/connects/rt/table/index.ts"],
|
|
4
|
+
"sourcesContent": ["export { Table, default } from \"./table\";\nexport type { RtTableProps } from \"./table\";\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,OAAO,WAAAA,gBAAe;",
|
|
6
|
+
"names": ["default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { For, Show, createMemo, createSignal, splitProps } from "solid-js";
|
|
2
|
+
import {
|
|
3
|
+
createSolidTable,
|
|
4
|
+
flexRender,
|
|
5
|
+
getCoreRowModel,
|
|
6
|
+
getExpandedRowModel,
|
|
7
|
+
getPaginationRowModel,
|
|
8
|
+
getSortedRowModel
|
|
9
|
+
} from "@tanstack/solid-table";
|
|
10
|
+
import {
|
|
11
|
+
Table as SmwbTable,
|
|
12
|
+
TableBody,
|
|
13
|
+
TableCell,
|
|
14
|
+
TableHead,
|
|
15
|
+
TableHeadCell,
|
|
16
|
+
TableRow
|
|
17
|
+
} from "../../../components/dataDisplay/table";
|
|
18
|
+
import { ProgressIndicator } from "../../../components/feedBack/progressIndicator";
|
|
19
|
+
import { Message } from "../../../components/feedBack/message";
|
|
20
|
+
function Table(props) {
|
|
21
|
+
const [local, rest] = splitProps(props, [
|
|
22
|
+
"data",
|
|
23
|
+
"columns",
|
|
24
|
+
"sortable",
|
|
25
|
+
"defaultSorting",
|
|
26
|
+
"onSortingChange",
|
|
27
|
+
"withPagination",
|
|
28
|
+
"isInfinite",
|
|
29
|
+
"limit",
|
|
30
|
+
"limitOptions",
|
|
31
|
+
"onNextPage",
|
|
32
|
+
"onPrevPage",
|
|
33
|
+
"expandable",
|
|
34
|
+
"getRowCanExpand",
|
|
35
|
+
"renderSubComponent",
|
|
36
|
+
"cellAlign",
|
|
37
|
+
"error",
|
|
38
|
+
"onHeadCellClick",
|
|
39
|
+
"onBodyRowClick",
|
|
40
|
+
"isLoading"
|
|
41
|
+
]);
|
|
42
|
+
const limit = () => local.limit ?? 5;
|
|
43
|
+
const [sorting, setSorting] = createSignal(local.defaultSorting ?? []);
|
|
44
|
+
const table = createSolidTable({
|
|
45
|
+
get data() {
|
|
46
|
+
return local.data;
|
|
47
|
+
},
|
|
48
|
+
get columns() {
|
|
49
|
+
return local.columns;
|
|
50
|
+
},
|
|
51
|
+
state: {
|
|
52
|
+
get sorting() {
|
|
53
|
+
return sorting();
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
initialState: { pagination: { pageIndex: 0, pageSize: limit() } },
|
|
57
|
+
manualPagination: local.isInfinite,
|
|
58
|
+
getCoreRowModel: getCoreRowModel(),
|
|
59
|
+
onSortingChange: (updater) => {
|
|
60
|
+
const next = typeof updater === "function" ? updater(sorting()) : updater;
|
|
61
|
+
setSorting(next);
|
|
62
|
+
local.onSortingChange?.(next);
|
|
63
|
+
},
|
|
64
|
+
get getSortedRowModel() {
|
|
65
|
+
return local.sortable ? getSortedRowModel() : void 0;
|
|
66
|
+
},
|
|
67
|
+
get getPaginationRowModel() {
|
|
68
|
+
return local.withPagination ? getPaginationRowModel() : void 0;
|
|
69
|
+
},
|
|
70
|
+
get getExpandedRowModel() {
|
|
71
|
+
return local.expandable ? getExpandedRowModel() : void 0;
|
|
72
|
+
},
|
|
73
|
+
get getRowCanExpand() {
|
|
74
|
+
return local.expandable ? local.getRowCanExpand : void 0;
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
const pagination = createMemo(() => {
|
|
78
|
+
if (!local.withPagination) return void 0;
|
|
79
|
+
const state = table.getState().pagination;
|
|
80
|
+
const base = {
|
|
81
|
+
limit: state.pageSize,
|
|
82
|
+
page: state.pageIndex + 1,
|
|
83
|
+
limitOptions: local.limitOptions ?? [5, 10, 15],
|
|
84
|
+
onNext: () => {
|
|
85
|
+
table.nextPage();
|
|
86
|
+
local.onNextPage?.();
|
|
87
|
+
},
|
|
88
|
+
onPrev: () => {
|
|
89
|
+
table.previousPage();
|
|
90
|
+
local.onPrevPage?.();
|
|
91
|
+
},
|
|
92
|
+
onLimitChange: (value) => table.setPageSize(value)
|
|
93
|
+
};
|
|
94
|
+
return local.isInfinite ? { ...base, hasNextPage: local.data.length >= state.pageSize } : { ...base, totalCount: table.getFilteredRowModel().rows.length };
|
|
95
|
+
});
|
|
96
|
+
const columnCount = () => table.getVisibleFlatColumns().length || 1;
|
|
97
|
+
const paginationProp = createMemo(() => {
|
|
98
|
+
const settings = pagination();
|
|
99
|
+
return settings ? { paginationSettings: settings } : {};
|
|
100
|
+
});
|
|
101
|
+
const align = () => local.cellAlign ?? "left";
|
|
102
|
+
return <SmwbTable
|
|
103
|
+
{...rest}
|
|
104
|
+
{...paginationProp()}
|
|
105
|
+
isLoading={local.isLoading ?? false}
|
|
106
|
+
hovered={!!local.onBodyRowClick}
|
|
107
|
+
>
|
|
108
|
+
<TableHead>
|
|
109
|
+
<For each={table.getHeaderGroups()}>
|
|
110
|
+
{(headerGroup) => <TableRow>
|
|
111
|
+
<For each={headerGroup.headers}>
|
|
112
|
+
{(header) => {
|
|
113
|
+
const canSort = () => !!local.sortable && header.column.getCanSort();
|
|
114
|
+
return <TableHeadCell
|
|
115
|
+
cellAlign={align()}
|
|
116
|
+
sortable={canSort()}
|
|
117
|
+
sortDirection={header.column.getIsSorted() || false}
|
|
118
|
+
onSort={() => {
|
|
119
|
+
if (canSort()) header.column.toggleSorting();
|
|
120
|
+
}}
|
|
121
|
+
onClick={() => {
|
|
122
|
+
local.onHeadCellClick?.(header.column.columnDef);
|
|
123
|
+
}}
|
|
124
|
+
{...header.getSize() ? { style: { width: `${header.getSize()}px` } } : {}}
|
|
125
|
+
>
|
|
126
|
+
<Show when={!header.isPlaceholder}>
|
|
127
|
+
{flexRender(header.column.columnDef.header, header.getContext())}
|
|
128
|
+
</Show>
|
|
129
|
+
</TableHeadCell>;
|
|
130
|
+
}}
|
|
131
|
+
</For>
|
|
132
|
+
</TableRow>}
|
|
133
|
+
</For>
|
|
134
|
+
</TableHead>
|
|
135
|
+
|
|
136
|
+
<TableBody>
|
|
137
|
+
<Show
|
|
138
|
+
when={!local.isLoading}
|
|
139
|
+
fallback={<TableRow class="smwb-table__loader__row">
|
|
140
|
+
<TableCell class="smwb-table__loader" colSpan={columnCount()}>
|
|
141
|
+
<ProgressIndicator variant="circular" type="indeterminate" />
|
|
142
|
+
</TableCell>
|
|
143
|
+
</TableRow>}
|
|
144
|
+
>
|
|
145
|
+
<Show
|
|
146
|
+
when={!local.error}
|
|
147
|
+
fallback={<TableRow class="smwb-table__loader__row">
|
|
148
|
+
<TableCell class="smwb-table__loader" colSpan={columnCount()}>
|
|
149
|
+
<Message variant="filled" type="error">
|
|
150
|
+
{local.error}
|
|
151
|
+
</Message>
|
|
152
|
+
</TableCell>
|
|
153
|
+
</TableRow>}
|
|
154
|
+
>
|
|
155
|
+
<For each={table.getRowModel().rows}>
|
|
156
|
+
{(row) => <>
|
|
157
|
+
<TableRow onClick={(event) => local.onBodyRowClick?.(row, event)}>
|
|
158
|
+
<For each={row.getVisibleCells()}>
|
|
159
|
+
{(cell) => <TableCell cellAlign={align()} {...cell.column.columnDef.meta?.cellProps}>
|
|
160
|
+
{flexRender(cell.column.columnDef.cell, cell.getContext())}
|
|
161
|
+
</TableCell>}
|
|
162
|
+
</For>
|
|
163
|
+
</TableRow>
|
|
164
|
+
<Show when={row.getIsExpanded() && local.renderSubComponent}>
|
|
165
|
+
<TableRow>
|
|
166
|
+
<TableCell colSpan={row.getVisibleCells().length}>
|
|
167
|
+
{local.renderSubComponent?.({ row })}
|
|
168
|
+
</TableCell>
|
|
169
|
+
</TableRow>
|
|
170
|
+
</Show>
|
|
171
|
+
</>}
|
|
172
|
+
</For>
|
|
173
|
+
</Show>
|
|
174
|
+
</Show>
|
|
175
|
+
</TableBody>
|
|
176
|
+
</SmwbTable>;
|
|
177
|
+
}
|
|
178
|
+
var table_default = Table;
|
|
179
|
+
export {
|
|
180
|
+
Table,
|
|
181
|
+
table_default as default
|
|
182
|
+
};
|
|
183
|
+
//# sourceMappingURL=table.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/connects/rt/table/table.tsx"],"sourcesContent":["import { For, Show, createMemo, createSignal, splitProps, type JSX } from \"solid-js\";\nimport {\n createSolidTable,\n flexRender,\n getCoreRowModel,\n getExpandedRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type ColumnDef,\n type Row,\n type RowData,\n type SortingState,\n type TableOptions,\n} from \"@tanstack/solid-table\";\n\nimport {\n Table as SmwbTable,\n TableBody,\n TableCell,\n TableHead,\n TableHeadCell,\n TableRow,\n type SortDirection,\n type TableProps as SmwbTableProps,\n type TablePaginationProps,\n} from \"../../../components/dataDisplay/table\";\nimport { ProgressIndicator } from \"../../../components/feedBack/progressIndicator\";\nimport { Message } from \"../../../components/feedBack/message\";\n\ndeclare module \"@tanstack/table-core\" {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ColumnMeta<TData extends RowData, TValue> {\n /** Extra attributes for every body cell of the column. */\n cellProps?: JSX.ThHTMLAttributes<HTMLTableCellElement>;\n }\n}\n\nexport interface RtTableProps<TData extends RowData, TValue = unknown> extends SmwbTableProps {\n data: TData[];\n columns: ColumnDef<TData, TValue>[];\n /** Enables the sort affordance in head cells and the sorted row model. */\n sortable?: boolean;\n /** Initial sorting, e.g. `[{ id: \"name\", desc: false }]`. */\n defaultSorting?: SortingState;\n onSortingChange?: (sorting: SortingState) => void;\n withPagination?: boolean;\n /** Rows come from the outside page by page; the total is unknown. */\n isInfinite?: boolean;\n limit?: number;\n limitOptions?: number[];\n onNextPage?: () => void;\n onPrevPage?: () => void;\n expandable?: boolean;\n getRowCanExpand?: (row: Row<TData>) => boolean;\n renderSubComponent?: (props: { row: Row<TData> }) => JSX.Element;\n cellAlign?: \"left\" | \"right\" | \"center\";\n error?: string;\n onHeadCellClick?: (column: ColumnDef<TData, TValue>) => void;\n onBodyRowClick?: (row: Row<TData>, event: MouseEvent) => void;\n}\n\n/**\n * TanStack Table bound to the smwb table components.\n *\n * The connector owns only what the two sides must agree on — row models, the\n * sort affordance in the head cell, the pagination footer, and the loading /\n * error / empty rows. Everything else stays TanStack's: columns are plain\n * `ColumnDef`s and cells are rendered through `flexRender`, so any column\n * definition written against the React connector works here unchanged.\n *\n * `@tanstack/solid-table` is an optional peer: it ships with the connector's\n * subpath only, and a consumer that never imports the subpath never installs it.\n */\nexport function Table<TData extends RowData, TValue = unknown>(\n props: RtTableProps<TData, TValue>\n): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"data\",\n \"columns\",\n \"sortable\",\n \"defaultSorting\",\n \"onSortingChange\",\n \"withPagination\",\n \"isInfinite\",\n \"limit\",\n \"limitOptions\",\n \"onNextPage\",\n \"onPrevPage\",\n \"expandable\",\n \"getRowCanExpand\",\n \"renderSubComponent\",\n \"cellAlign\",\n \"error\",\n \"onHeadCellClick\",\n \"onBodyRowClick\",\n \"isLoading\",\n ]);\n\n const limit = (): number => local.limit ?? 5;\n const [sorting, setSorting] = createSignal<SortingState>(local.defaultSorting ?? []);\n\n // Options are a getter object: Solid has no render pass to rebuild them on,\n // so the table reads current data, columns and sorting on every access.\n const table = createSolidTable({\n get data() {\n return local.data;\n },\n get columns() {\n return local.columns;\n },\n state: {\n get sorting() {\n return sorting();\n },\n },\n initialState: { pagination: { pageIndex: 0, pageSize: limit() } },\n manualPagination: local.isInfinite,\n getCoreRowModel: getCoreRowModel(),\n onSortingChange: (updater) => {\n const next = typeof updater === \"function\" ? updater(sorting()) : updater;\n setSorting(next);\n local.onSortingChange?.(next);\n },\n get getSortedRowModel() {\n return local.sortable ? getSortedRowModel() : undefined;\n },\n get getPaginationRowModel() {\n return local.withPagination ? getPaginationRowModel() : undefined;\n },\n get getExpandedRowModel() {\n return local.expandable ? getExpandedRowModel() : undefined;\n },\n get getRowCanExpand() {\n return local.expandable ? local.getRowCanExpand : undefined;\n },\n } as TableOptions<TData>);\n\n const pagination = createMemo<TablePaginationProps | undefined>(() => {\n if (!local.withPagination) return undefined;\n const state = table.getState().pagination;\n const base = {\n limit: state.pageSize,\n page: state.pageIndex + 1,\n limitOptions: local.limitOptions ?? [5, 10, 15],\n onNext: () => {\n table.nextPage();\n local.onNextPage?.();\n },\n onPrev: () => {\n table.previousPage();\n local.onPrevPage?.();\n },\n onLimitChange: (value: number) => table.setPageSize(value),\n };\n return local.isInfinite\n ? { ...base, hasNextPage: local.data.length >= state.pageSize }\n : { ...base, totalCount: table.getFilteredRowModel().rows.length };\n });\n\n const columnCount = (): number => table.getVisibleFlatColumns().length || 1;\n\n // Spread instead of a prop: with exactOptionalPropertyTypes an explicit\n // `undefined` is not the same as an absent prop, and the footer is absent\n // whenever pagination is off.\n const paginationProp = createMemo(() => {\n const settings = pagination();\n return settings ? { paginationSettings: settings } : {};\n });\n\n const align = (): \"left\" | \"right\" | \"center\" => local.cellAlign ?? \"left\";\n\n return (\n <SmwbTable\n {...rest}\n {...paginationProp()}\n isLoading={local.isLoading ?? false}\n hovered={!!local.onBodyRowClick}\n >\n <TableHead>\n <For each={table.getHeaderGroups()}>\n {(headerGroup) => (\n <TableRow>\n <For each={headerGroup.headers}>\n {(header) => {\n const canSort = (): boolean => !!local.sortable && header.column.getCanSort();\n return (\n <TableHeadCell\n cellAlign={align()}\n sortable={canSort()}\n sortDirection={(header.column.getIsSorted() || false) as SortDirection}\n onSort={() => {\n if (canSort()) header.column.toggleSorting();\n }}\n onClick={() => {\n local.onHeadCellClick?.(header.column.columnDef);\n }}\n {...(header.getSize() ? { style: { width: `${header.getSize()}px` } } : {})}\n >\n <Show when={!header.isPlaceholder}>\n {flexRender(header.column.columnDef.header, header.getContext())}\n </Show>\n </TableHeadCell>\n );\n }}\n </For>\n </TableRow>\n )}\n </For>\n </TableHead>\n\n <TableBody>\n <Show\n when={!local.isLoading}\n fallback={\n <TableRow class=\"smwb-table__loader__row\">\n <TableCell class=\"smwb-table__loader\" colSpan={columnCount()}>\n <ProgressIndicator variant=\"circular\" type=\"indeterminate\" />\n </TableCell>\n </TableRow>\n }\n >\n <Show\n when={!local.error}\n fallback={\n <TableRow class=\"smwb-table__loader__row\">\n <TableCell class=\"smwb-table__loader\" colSpan={columnCount()}>\n <Message variant=\"filled\" type=\"error\">\n {local.error}\n </Message>\n </TableCell>\n </TableRow>\n }\n >\n <For each={table.getRowModel().rows}>\n {(row) => (\n <>\n <TableRow onClick={(event: MouseEvent) => local.onBodyRowClick?.(row, event)}>\n <For each={row.getVisibleCells()}>\n {(cell) => (\n <TableCell cellAlign={align()} {...cell.column.columnDef.meta?.cellProps}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n )}\n </For>\n </TableRow>\n <Show when={row.getIsExpanded() && local.renderSubComponent}>\n <TableRow>\n <TableCell colSpan={row.getVisibleCells().length}>\n {local.renderSubComponent?.({ row })}\n </TableCell>\n </TableRow>\n </Show>\n </>\n )}\n </For>\n </Show>\n </Show>\n </TableBody>\n </SmwbTable>\n );\n}\n\nexport default Table;\n"],"mappings":"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","names":[],"file":"table.jsx"}
|
|
@@ -10,6 +10,8 @@ import { createVirtualList } from "./primitives/createVirtualList";
|
|
|
10
10
|
import { createMaskedInput } from "./primitives/createMaskedInput";
|
|
11
11
|
import { createMediaQuery } from "./primitives/createMediaQuery";
|
|
12
12
|
import { createPersistedJson } from "./primitives/createPersistedJson";
|
|
13
|
+
import { createRovingTabIndex } from "./primitives/createRovingTabIndex";
|
|
14
|
+
import { createHoverPopover } from "./primitives/createHoverPopover";
|
|
13
15
|
import { resolvePlacement, buildFloatingMiddleware, placements } from "./utils/floating";
|
|
14
16
|
import { Icon, IconProvider, IconContext, useIconSource, createIconVersion } from "./components/base/icon";
|
|
15
17
|
import {
|
|
@@ -106,6 +108,7 @@ import { Grid, Row, Column, Container } from "./components/layout/grid";
|
|
|
106
108
|
import { AppLayout } from "./components/layout/appLayout";
|
|
107
109
|
import { ScreenDivider } from "./components/layout/screenDivider";
|
|
108
110
|
import { Sheet } from "./components/layout/sheet";
|
|
111
|
+
import { FloatingWindow } from "./components/layout/floatingWindow";
|
|
109
112
|
import { AppBar } from "./components/navigation/appBar";
|
|
110
113
|
import { Breadcrumbs } from "./components/navigation/breadcrumbs";
|
|
111
114
|
import { Pagination } from "./components/navigation/pagination";
|
|
@@ -227,6 +230,7 @@ export {
|
|
|
227
230
|
FileDrop,
|
|
228
231
|
FileInput,
|
|
229
232
|
FloatingButton,
|
|
233
|
+
FloatingWindow,
|
|
230
234
|
Grid,
|
|
231
235
|
Icon,
|
|
232
236
|
IconContext,
|
|
@@ -309,11 +313,13 @@ export {
|
|
|
309
313
|
createDropzone,
|
|
310
314
|
createFloating,
|
|
311
315
|
createFocusTrap,
|
|
316
|
+
createHoverPopover,
|
|
312
317
|
createIconVersion,
|
|
313
318
|
createId,
|
|
314
319
|
createMaskedInput,
|
|
315
320
|
createMediaQuery,
|
|
316
321
|
createPersistedJson,
|
|
322
|
+
createRovingTabIndex,
|
|
317
323
|
createTheme,
|
|
318
324
|
createTimeInput,
|
|
319
325
|
createVirtualList,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["// Public entry point for @smwb/ui-solid.\n// Exports are added as components are ported (see src/components/**).\n\n// primitives\nexport { mergeRefs } from \"./primitives/mergeRefs\";\nexport type { Ref, RefCallback } from \"./primitives/mergeRefs\";\nexport { createId } from \"./primitives/createId\";\nexport { createControllableState } from \"./primitives/createControllableState\";\nexport type { CreateControllableStateParams } from \"./primitives/createControllableState\";\nexport { createTheme, Theme } from \"./primitives/createTheme\";\nexport { createFloating } from \"./primitives/createFloating\";\nexport type { CreateFloatingOptions, FloatingState } from \"./primitives/createFloating\";\nexport { createFocusTrap } from \"./primitives/createFocusTrap\";\nexport type { CreateFocusTrapOptions } from \"./primitives/createFocusTrap\";\nexport { createCssTransition } from \"./primitives/createCssTransition\";\nexport type { CreateCssTransitionOptions, CssTransitionState, CssTransitionClassNames } from \"./primitives/createCssTransition\";\nexport { createDropzone } from \"./primitives/createDropzone\";\nexport type { DropzoneOptions, DropzoneState } from \"./primitives/createDropzone\";\nexport { createVirtualList } from \"./primitives/createVirtualList\";\nexport type { CreateVirtualListParams, VirtualListResult } from \"./primitives/createVirtualList\";\nexport { createMaskedInput } from \"./primitives/createMaskedInput\";\nexport type { CreateMaskedInputOptions, MaskedInputState } from \"./primitives/createMaskedInput\";\nexport { createMediaQuery } from \"./primitives/createMediaQuery\";\nexport { createPersistedJson } from \"./primitives/createPersistedJson\";\nexport type { PersistedJson } from \"./primitives/createPersistedJson\";\n\n// utils\nexport { resolvePlacement, buildFloatingMiddleware, placements } from \"./utils/floating\";\nexport type { Placement, ResolvedPlacement } from \"./utils/floating\";\n\n// base\nexport { Icon, IconProvider, IconContext, useIconSource, createIconVersion } from \"./components/base/icon\";\nexport type { IconProps, IconColor, IconProviderProps, IconContextValue } from \"./components/base/icon\";\n// Icon registry API. The icons themselves live behind \"@smwb/ui-solid/icons\" so\n// an app bundles only the ones it registers.\nexport {\n registerIcons,\n unregisterIcons,\n clearIcons,\n getIcon,\n hasIcon,\n listIcons,\n normalizeIconName,\n} from \"./icons/registry\";\nexport type { IconInput } from \"./icons/registry\";\nexport { configureIcons, getIconConfig, resetIconConfig } from \"./icons/config\";\nexport type { IconConfig } from \"./icons/config\";\nexport { subscribeIcons, getIconVersion } from \"./icons/store\";\nexport type { IconDefinition, IconSource } from \"./icons/types\";\nexport { Ripple } from \"./components/base/ripple\";\nexport type { RippleProps, RippleActionsRef, RippleClasses } from \"./components/base/ripple\";\nexport { AnimateHeight } from \"./components/base/animateHeight\";\nexport type { AnimateHeightProps, Height } from \"./components/base/animateHeight\";\n\n// dataDisplay\nexport { Typography } from \"./components/dataDisplay/typography\";\nexport type { TypographyProps, TypographyVariant, TypographyColor } from \"./components/dataDisplay/typography\";\nexport { Badge } from \"./components/dataDisplay/badge\";\nexport type { BadgeProps } from \"./components/dataDisplay/badge\";\nexport { Card } from \"./components/dataDisplay/card\";\nexport type { CardProps } from \"./components/dataDisplay/card\";\nexport { Chip } from \"./components/dataDisplay/chip\";\nexport type { ChipProps, ChipColor } from \"./components/dataDisplay/chip\";\nexport { LazyImage } from \"./components/dataDisplay/lazyImage\";\nexport type { LazyImageProps } from \"./components/dataDisplay/lazyImage\";\nexport { ChipGroup } from \"./components/dataDisplay/chipGroup\";\nexport type { ChipGroupProps, ChipGroupOption } from \"./components/dataDisplay/chipGroup\";\nexport { ThumbCard } from \"./components/dataDisplay/thumbCard\";\nexport type { ThumbCardProps } from \"./components/dataDisplay/thumbCard\";\nexport { AssetGrid } from \"./components/dataDisplay/assetGrid\";\nexport type { AssetGridProps } from \"./components/dataDisplay/assetGrid\";\nexport { Avatar, AvatarGroup } from \"./components/dataDisplay/avatar\";\nexport type { AvatarProps, AvatarGroupProps, AvatarSize } from \"./components/dataDisplay/avatar\";\nexport { List, ListItem } from \"./components/dataDisplay/list\";\nexport type { ListProps, ListItemProps } from \"./components/dataDisplay/list\";\nexport { Accordion } from \"./components/dataDisplay/accordion\";\nexport type { AccordionProps } from \"./components/dataDisplay/accordion\";\nexport { ExpansionPanel } from \"./components/dataDisplay/expansionPanel\";\nexport type {\n ExpansionPanelProps,\n ExpansionPanelLabels,\n ExpansionPanelRenderContext,\n ExpansionPanelControlsContext,\n ExpansionMode,\n} from \"./components/dataDisplay/expansionPanel\";\nexport {\n Table,\n TableHead,\n TableBody,\n TableRow,\n TableCell,\n TableHeadCell,\n TablePagination,\n} from \"./components/dataDisplay/table\";\nexport type {\n TableProps,\n TableHeadProps,\n TableBodyProps,\n TableRowProps,\n TableCellProps,\n TableHeadCellProps,\n TablePaginationProps,\n SortDirection,\n} from \"./components/dataDisplay/table\";\nexport { TreeView } from \"./components/dataDisplay/treeView\";\nexport type { TreeViewProps, ITreeNodeItem } from \"./components/dataDisplay/treeView\";\nexport { Carousel } from \"./components/dataDisplay/carousel\";\nexport type { CarouselProps } from \"./components/dataDisplay/carousel\";\nexport { ImagesList, ImagesListItem, ImagesListItemModal } from \"./components/dataDisplay/imagesList\";\nexport type {\n ImagesListProps,\n ImagesListItemProps,\n ImagesListItemModalProps,\n ImageItem,\n} from \"./components/dataDisplay/imagesList\";\nexport {\n Chat,\n ChatLayout,\n ChatOverlayLayout,\n ChatShell,\n ChatHeader,\n ChatMessages,\n ChatMessageItem,\n ChatMessageIncoming,\n ChatMessageOutgoing,\n ChatMessageSystem,\n ChatMessageBubble,\n ChatMessageSkeleton,\n ChatMessageStatus,\n ChatMessageAvatar,\n ChatAttachments,\n ChatAttachmentImage,\n ChatIconButton,\n ChatComposer,\n createChatInfiniteScroll,\n createChatFileUpload,\n resolveChatFileUploadMaxFiles,\n createChatStickToBottom,\n isScrolledToBottom,\n scrollChatToBottom,\n CHAT_EXPAND_LAYOUTS,\n CHAT_DEFAULT_FILE_UPLOAD_MAX_FILES,\n CHAT_MESSAGE_DELIVERY_STATUSES,\n CHAT_MESSAGE_STATUS_ICONS,\n CHAT_MESSAGE_STATUS_LABELS,\n isImageAttachment,\n formatChatTimestamp,\n resolveAllowedLayouts,\n isChatMessageDeliveryStatus,\n resolveChatMessageStatusIcon,\n resolveChatMessageStatusLabel,\n shouldComposerNewlineOnEnter,\n getChatLayoutActions,\n shouldShowChatCloseButton,\n} from \"./components/dataDisplay/chat\";\nexport type {\n ChatProps,\n ChatLayoutProps,\n ChatLayoutChatProps,\n ChatOverlayLayoutProps,\n ChatOverlayLayoutChatProps,\n ChatShellProps,\n ChatHeaderProps,\n ChatMessagesProps,\n ChatMessageItemProps,\n ChatMessageIncomingProps,\n ChatMessageOutgoingProps,\n ChatMessageSystemProps,\n ChatMessageBubbleProps,\n ChatMessageSkeletonProps,\n ChatMessageStatusProps,\n ChatMessageAvatarProps,\n ChatAttachmentsProps,\n ChatAttachmentImageProps,\n ChatIconButtonProps,\n ChatComposerProps,\n CreateChatInfiniteScrollParams,\n CreateChatFileUploadOptions,\n ChatFileUploadState,\n CreateChatStickToBottomParams,\n ChatMessage,\n ChatAttachment,\n ChatAuthor,\n ChatMessageVariant,\n ChatLayoutMode,\n ChatAnchor,\n ChatThemeMode,\n ChatMessageRenderContext,\n ChatLayoutSide,\n ChatMessageDeliveryStatus,\n ChatMessageStatusValue,\n ChatMessageStatusIcons,\n ChatMessageStatusRenderContext,\n ChatComposerNewlineOptions,\n} from \"./components/dataDisplay/chat\";\n\n// feedBack\nexport { Skeleton } from \"./components/feedBack/skeleton\";\nexport type { SkeletonProps } from \"./components/feedBack/skeleton\";\nexport { Message, MessageContainer } from \"./components/feedBack/message\";\nexport type { MessageProps, MessageSeverity } from \"./components/feedBack/message\";\nexport { ProgressIndicator, CircularProgress } from \"./components/feedBack/progressIndicator\";\nexport type { ProgressIndicatorProps, ProgressColor, CircularProgressProps } from \"./components/feedBack/progressIndicator\";\nexport { Tooltip } from \"./components/feedBack/tooltip\";\nexport type { TooltipProps, TooltipTrigger } from \"./components/feedBack/tooltip\";\nexport { Modal } from \"./components/feedBack/modal\";\nexport type { ModalProps, ModalSlotProps } from \"./components/feedBack/modal\";\nexport { SaveAssetDialog } from \"./components/feedBack/saveAssetDialog\";\nexport type { SaveAssetDialogProps } from \"./components/feedBack/saveAssetDialog\";\nexport { ConfirmDialog } from \"./components/feedBack/confirmDialog\";\nexport type { ConfirmDialogProps } from \"./components/feedBack/confirmDialog\";\nexport { SnackbarProvider, Snackbar, useSnackbar } from \"./components/feedBack/snackbar\";\nexport type {\n SnackbarsProviderProps,\n SnackbarProps,\n SnackbarOptions,\n AddSnackbar,\n AddSnackbarOptions,\n Variants as SnackbarVariant,\n Position as SnackbarPosition,\n} from \"./components/feedBack/snackbar\";\n\n// utility\nexport { ClickAwayListener } from \"./components/clickAwayListener\";\nexport type { ClickAwayListenerProps } from \"./components/clickAwayListener\";\n\n// layout\nexport { Divider } from \"./components/layout/divider\";\nexport type { DividerProps, DividerColor } from \"./components/layout/divider\";\nexport { Stack } from \"./components/layout/stack\";\nexport type { StackProps, StackSpacing } from \"./components/layout/stack\";\nexport { Page } from \"./components/layout/page\";\nexport type { PageProps, PageMaxWidth } from \"./components/layout/page\";\nexport { PageHeader } from \"./components/layout/pageHeader\";\nexport type { PageHeaderProps } from \"./components/layout/pageHeader\";\nexport { Grid, Row, Column, Container } from \"./components/layout/grid\";\nexport type {\n RowProps,\n ColumnProps,\n ContainerProps,\n BreakpointType,\n ColumnSpan,\n OffsetType,\n Breakpoint,\n ResponsiveBool,\n ContainerMaxWidth,\n} from \"./components/layout/grid\";\nexport { AppLayout } from \"./components/layout/appLayout\";\nexport type { AppLayoutProps } from \"./components/layout/appLayout\";\nexport { ScreenDivider } from \"./components/layout/screenDivider\";\nexport type { ScreenDividerProps } from \"./components/layout/screenDivider\";\nexport { Sheet } from \"./components/layout/sheet\";\nexport type { SheetProps } from \"./components/layout/sheet\";\n\n// navigation\nexport { AppBar } from \"./components/navigation/appBar\";\nexport type { AppBarProps, AppBarColor } from \"./components/navigation/appBar\";\nexport { Breadcrumbs } from \"./components/navigation/breadcrumbs\";\nexport type { BreadcrumbsProps } from \"./components/navigation/breadcrumbs\";\nexport { Pagination } from \"./components/navigation/pagination\";\nexport type { PaginationProps, PaginationColor } from \"./components/navigation/pagination\";\nexport { Stepper } from \"./components/navigation/stepper\";\nexport type { StepperProps, StepItem } from \"./components/navigation/stepper\";\nexport { Sidebar } from \"./components/navigation/sidebar\";\nexport type { SidebarProps, SidebarMenuItemProps, SidebarVariant } from \"./components/navigation/sidebar\";\nexport { Tabs, Tab, TabsContext, useTabsContext } from \"./components/navigation/tabs\";\nexport type { TabsProps, TabProps, TabsContextValue } from \"./components/navigation/tabs\";\nexport { BottomBar } from \"./components/navigation/bottomBar\";\nexport type { BottomBarProps, BottomBarMenuItemProps } from \"./components/navigation/bottomBar\";\nexport {\n Menu,\n MenuFloating,\n MenuList,\n MenuItem,\n MenuItemIcon,\n MenuItemText,\n MenuDivider,\n MenuSubmenu,\n MenuContext,\n useMenuContext,\n buildMenuFloatingMiddleware,\n} from \"./components/navigation/menu\";\nexport type {\n MenuProps,\n MenuFloatingProps,\n MenuListProps,\n MenuItemProps,\n MenuItemIconProps,\n MenuItemTextProps,\n MenuDividerProps,\n MenuSubmenuProps,\n MenuContextValue,\n} from \"./components/navigation/menu\";\nexport { OverflowMenu } from \"./components/navigation/overflowMenu\";\nexport type { OverflowMenuProps, OverflowMenuItem } from \"./components/navigation/overflowMenu\";\n\n// inputs\nexport { Button } from \"./components/inputs/button\";\nexport type { ButtonProps } from \"./components/inputs/button\";\nexport { ButtonGroup } from \"./components/inputs/buttonGroups\";\nexport type { ButtonGroupProps } from \"./components/inputs/buttonGroups\";\nexport { Checkbox } from \"./components/inputs/checkbox\";\nexport type {\n CheckboxProps,\n SelectionControlSize,\n SelectionControlColor,\n SelectionChangeEvent,\n} from \"./components/inputs/checkbox\";\nexport { RadioButton } from \"./components/inputs/radioButton\";\nexport type { RadioButtonProps } from \"./components/inputs/radioButton\";\nexport { Toggle } from \"./components/inputs/toggle\";\nexport type { ToggleProps } from \"./components/inputs/toggle\";\nexport { Rating } from \"./components/inputs/rating\";\nexport type { RatingProps, RatingColor } from \"./components/inputs/rating\";\nexport { Slider } from \"./components/inputs/slider\";\nexport type { SliderProps, SliderValue, SliderMark } from \"./components/inputs/slider\";\nexport { ValueSlider } from \"./components/inputs/valueSlider\";\nexport type { ValueSliderProps } from \"./components/inputs/valueSlider\";\nexport { FileInput } from \"./components/inputs/fileInput\";\nexport type { FileInputProps } from \"./components/inputs/fileInput\";\nexport { FileDrop, PreviewWrapper, Preview, CountPreview, isImageFile } from \"./components/inputs/fileDrop\";\nexport type { FileUploadProps, PreviewWrapperProps, PreviewProps, CountPreviewProps } from \"./components/inputs/fileDrop\";\nexport { SelectField, DropdownMenu } from \"./components/inputs/selectField\";\nexport type { SelectFieldProps, OnSelectChange, DropdownItem, DropdownItemProps } from \"./components/inputs/selectField\";\nexport {\n DatePicker,\n OpenView,\n DataPickerDays,\n DataPickerHeader,\n DataPickerInput,\n DatePickerActionLabel,\n DatePickerDay,\n DatePickerIconButton,\n DatePickerList,\n createDateInput,\n} from \"./components/inputs/datePicker\";\nexport type {\n DatePickerProps,\n DataPickerDaysProps,\n DataPickerHeaderProps,\n DataPickerInputProps,\n ActionLabelProps,\n DatePickerDayProps,\n DataPickerIconButtonProps,\n DatePickerListProps,\n CreateDateInputProps,\n DateInputState,\n} from \"./components/inputs/datePicker\";\nexport { TimePicker, TimePickerInput, TimePickerColumns, createTimeInput, DEFAULT_TIME_FORMAT } from \"./components/inputs/timePicker\";\nexport type { TimePickerProps, TimePickerInputProps, TimePickerColumnsProps } from \"./components/inputs/timePicker\";\nexport {\n DateTimePicker,\n DateTimePickerInput,\n createDateTimeInput,\n getCurrentDateTimeFormat,\n getDisplayDateTime,\n formatDateTimeByPattern,\n isDateTimePatternMatch,\n parseDateTimeByPattern,\n} from \"./components/inputs/dateTimePicker\";\nexport type {\n DateTimePickerProps,\n DateTimePickerInputProps,\n CreateDateTimeInputProps,\n DateTimeInputState,\n} from \"./components/inputs/dateTimePicker\";\nexport { FloatingButton } from \"./components/inputs/floatingButton\";\nexport type { FloatingButtonProps, FloatingButtonColor } from \"./components/inputs/floatingButton\";\nexport { TextField, TextFieldWrapper, TextFieldAdornment } from \"./components/inputs/textField\";\nexport type {\n TextFieldProps,\n TextFieldWrapperProps,\n TextFieldAdornmentProps,\n TextFieldVariant,\n} from \"./components/inputs/textField\";\n"],
|
|
5
|
-
"mappings": "AAIA,SAAS,iBAAiB;AAE1B,SAAS,gBAAgB;AACzB,SAAS,+BAA+B;AAExC,SAAS,aAAa,aAAa;AACnC,SAAS,sBAAsB;AAE/B,SAAS,uBAAuB;AAEhC,SAAS,2BAA2B;AAEpC,SAAS,sBAAsB;AAE/B,SAAS,yBAAyB;AAElC,SAAS,yBAAyB;AAElC,SAAS,wBAAwB;AACjC,SAAS,2BAA2B;
|
|
4
|
+
"sourcesContent": ["// Public entry point for @smwb/ui-solid.\n// Exports are added as components are ported (see src/components/**).\n\n// primitives\nexport { mergeRefs } from \"./primitives/mergeRefs\";\nexport type { Ref, RefCallback } from \"./primitives/mergeRefs\";\nexport { createId } from \"./primitives/createId\";\nexport { createControllableState } from \"./primitives/createControllableState\";\nexport type { CreateControllableStateParams } from \"./primitives/createControllableState\";\nexport { createTheme, Theme } from \"./primitives/createTheme\";\nexport { createFloating } from \"./primitives/createFloating\";\nexport type { CreateFloatingOptions, FloatingState } from \"./primitives/createFloating\";\nexport { createFocusTrap } from \"./primitives/createFocusTrap\";\nexport type { CreateFocusTrapOptions } from \"./primitives/createFocusTrap\";\nexport { createCssTransition } from \"./primitives/createCssTransition\";\nexport type { CreateCssTransitionOptions, CssTransitionState, CssTransitionClassNames } from \"./primitives/createCssTransition\";\nexport { createDropzone } from \"./primitives/createDropzone\";\nexport type { DropzoneOptions, DropzoneState } from \"./primitives/createDropzone\";\nexport { createVirtualList } from \"./primitives/createVirtualList\";\nexport type { CreateVirtualListParams, VirtualListResult } from \"./primitives/createVirtualList\";\nexport { createMaskedInput } from \"./primitives/createMaskedInput\";\nexport type { CreateMaskedInputOptions, MaskedInputState } from \"./primitives/createMaskedInput\";\nexport { createMediaQuery } from \"./primitives/createMediaQuery\";\nexport { createPersistedJson } from \"./primitives/createPersistedJson\";\nexport type { PersistedJson } from \"./primitives/createPersistedJson\";\nexport { createRovingTabIndex } from \"./primitives/createRovingTabIndex\";\nexport type { CreateRovingTabIndexOptions } from \"./primitives/createRovingTabIndex\";\nexport { createHoverPopover } from \"./primitives/createHoverPopover\";\nexport type {\n CreateHoverPopoverOptions,\n HoverPopoverState,\n HoverPopoverPoint,\n HoverPopoverReferenceProps,\n HoverPopoverFloatingProps,\n} from \"./primitives/createHoverPopover\";\n\n// utils\nexport { resolvePlacement, buildFloatingMiddleware, placements } from \"./utils/floating\";\nexport type { Placement, ResolvedPlacement } from \"./utils/floating\";\n\n// base\nexport { Icon, IconProvider, IconContext, useIconSource, createIconVersion } from \"./components/base/icon\";\nexport type { IconProps, IconColor, IconProviderProps, IconContextValue } from \"./components/base/icon\";\n// Icon registry API. The icons themselves live behind \"@smwb/ui-solid/icons\" so\n// an app bundles only the ones it registers.\nexport {\n registerIcons,\n unregisterIcons,\n clearIcons,\n getIcon,\n hasIcon,\n listIcons,\n normalizeIconName,\n} from \"./icons/registry\";\nexport type { IconInput } from \"./icons/registry\";\nexport { configureIcons, getIconConfig, resetIconConfig } from \"./icons/config\";\nexport type { IconConfig } from \"./icons/config\";\nexport { subscribeIcons, getIconVersion } from \"./icons/store\";\nexport type { IconDefinition, IconSource } from \"./icons/types\";\nexport { Ripple } from \"./components/base/ripple\";\nexport type { RippleProps, RippleActionsRef, RippleClasses } from \"./components/base/ripple\";\nexport { AnimateHeight } from \"./components/base/animateHeight\";\nexport type { AnimateHeightProps, Height } from \"./components/base/animateHeight\";\n\n// dataDisplay\nexport { Typography } from \"./components/dataDisplay/typography\";\nexport type { TypographyProps, TypographyVariant, TypographyColor } from \"./components/dataDisplay/typography\";\nexport { Badge } from \"./components/dataDisplay/badge\";\nexport type { BadgeProps } from \"./components/dataDisplay/badge\";\nexport { Card } from \"./components/dataDisplay/card\";\nexport type { CardProps } from \"./components/dataDisplay/card\";\nexport { Chip } from \"./components/dataDisplay/chip\";\nexport type { ChipProps, ChipColor } from \"./components/dataDisplay/chip\";\nexport { LazyImage } from \"./components/dataDisplay/lazyImage\";\nexport type { LazyImageProps } from \"./components/dataDisplay/lazyImage\";\nexport { ChipGroup } from \"./components/dataDisplay/chipGroup\";\nexport type { ChipGroupProps, ChipGroupOption } from \"./components/dataDisplay/chipGroup\";\nexport { ThumbCard } from \"./components/dataDisplay/thumbCard\";\nexport type { ThumbCardProps } from \"./components/dataDisplay/thumbCard\";\nexport { AssetGrid } from \"./components/dataDisplay/assetGrid\";\nexport type { AssetGridProps } from \"./components/dataDisplay/assetGrid\";\nexport { Avatar, AvatarGroup } from \"./components/dataDisplay/avatar\";\nexport type { AvatarProps, AvatarGroupProps, AvatarSize } from \"./components/dataDisplay/avatar\";\nexport { List, ListItem } from \"./components/dataDisplay/list\";\nexport type { ListProps, ListItemProps } from \"./components/dataDisplay/list\";\nexport { Accordion } from \"./components/dataDisplay/accordion\";\nexport type { AccordionProps } from \"./components/dataDisplay/accordion\";\nexport { ExpansionPanel } from \"./components/dataDisplay/expansionPanel\";\nexport type {\n ExpansionPanelProps,\n ExpansionPanelLabels,\n ExpansionPanelRenderContext,\n ExpansionPanelControlsContext,\n ExpansionMode,\n} from \"./components/dataDisplay/expansionPanel\";\nexport {\n Table,\n TableHead,\n TableBody,\n TableRow,\n TableCell,\n TableHeadCell,\n TablePagination,\n} from \"./components/dataDisplay/table\";\nexport type {\n TableProps,\n TableHeadProps,\n TableBodyProps,\n TableRowProps,\n TableCellProps,\n TableHeadCellProps,\n TablePaginationProps,\n SortDirection,\n} from \"./components/dataDisplay/table\";\nexport { TreeView } from \"./components/dataDisplay/treeView\";\nexport type { TreeViewProps, ITreeNodeItem } from \"./components/dataDisplay/treeView\";\nexport { Carousel } from \"./components/dataDisplay/carousel\";\nexport type { CarouselProps } from \"./components/dataDisplay/carousel\";\nexport { ImagesList, ImagesListItem, ImagesListItemModal } from \"./components/dataDisplay/imagesList\";\nexport type {\n ImagesListProps,\n ImagesListItemProps,\n ImagesListItemModalProps,\n ImageItem,\n} from \"./components/dataDisplay/imagesList\";\nexport {\n Chat,\n ChatLayout,\n ChatOverlayLayout,\n ChatShell,\n ChatHeader,\n ChatMessages,\n ChatMessageItem,\n ChatMessageIncoming,\n ChatMessageOutgoing,\n ChatMessageSystem,\n ChatMessageBubble,\n ChatMessageSkeleton,\n ChatMessageStatus,\n ChatMessageAvatar,\n ChatAttachments,\n ChatAttachmentImage,\n ChatIconButton,\n ChatComposer,\n createChatInfiniteScroll,\n createChatFileUpload,\n resolveChatFileUploadMaxFiles,\n createChatStickToBottom,\n isScrolledToBottom,\n scrollChatToBottom,\n CHAT_EXPAND_LAYOUTS,\n CHAT_DEFAULT_FILE_UPLOAD_MAX_FILES,\n CHAT_MESSAGE_DELIVERY_STATUSES,\n CHAT_MESSAGE_STATUS_ICONS,\n CHAT_MESSAGE_STATUS_LABELS,\n isImageAttachment,\n formatChatTimestamp,\n resolveAllowedLayouts,\n isChatMessageDeliveryStatus,\n resolveChatMessageStatusIcon,\n resolveChatMessageStatusLabel,\n shouldComposerNewlineOnEnter,\n getChatLayoutActions,\n shouldShowChatCloseButton,\n} from \"./components/dataDisplay/chat\";\nexport type {\n ChatProps,\n ChatLayoutProps,\n ChatLayoutChatProps,\n ChatOverlayLayoutProps,\n ChatOverlayLayoutChatProps,\n ChatShellProps,\n ChatHeaderProps,\n ChatMessagesProps,\n ChatMessageItemProps,\n ChatMessageIncomingProps,\n ChatMessageOutgoingProps,\n ChatMessageSystemProps,\n ChatMessageBubbleProps,\n ChatMessageSkeletonProps,\n ChatMessageStatusProps,\n ChatMessageAvatarProps,\n ChatAttachmentsProps,\n ChatAttachmentImageProps,\n ChatIconButtonProps,\n ChatComposerProps,\n CreateChatInfiniteScrollParams,\n CreateChatFileUploadOptions,\n ChatFileUploadState,\n CreateChatStickToBottomParams,\n ChatMessage,\n ChatAttachment,\n ChatAuthor,\n ChatMessageVariant,\n ChatLayoutMode,\n ChatAnchor,\n ChatThemeMode,\n ChatMessageRenderContext,\n ChatLayoutSide,\n ChatMessageDeliveryStatus,\n ChatMessageStatusValue,\n ChatMessageStatusIcons,\n ChatMessageStatusRenderContext,\n ChatComposerNewlineOptions,\n} from \"./components/dataDisplay/chat\";\n\n// feedBack\nexport { Skeleton } from \"./components/feedBack/skeleton\";\nexport type { SkeletonProps } from \"./components/feedBack/skeleton\";\nexport { Message, MessageContainer } from \"./components/feedBack/message\";\nexport type { MessageProps, MessageSeverity } from \"./components/feedBack/message\";\nexport { ProgressIndicator, CircularProgress } from \"./components/feedBack/progressIndicator\";\nexport type { ProgressIndicatorProps, ProgressColor, CircularProgressProps } from \"./components/feedBack/progressIndicator\";\nexport { Tooltip } from \"./components/feedBack/tooltip\";\nexport type { TooltipProps, TooltipTrigger } from \"./components/feedBack/tooltip\";\nexport { Modal } from \"./components/feedBack/modal\";\nexport type { ModalProps, ModalSlotProps } from \"./components/feedBack/modal\";\nexport { SaveAssetDialog } from \"./components/feedBack/saveAssetDialog\";\nexport type { SaveAssetDialogProps } from \"./components/feedBack/saveAssetDialog\";\nexport { ConfirmDialog } from \"./components/feedBack/confirmDialog\";\nexport type { ConfirmDialogProps } from \"./components/feedBack/confirmDialog\";\nexport { SnackbarProvider, Snackbar, useSnackbar } from \"./components/feedBack/snackbar\";\nexport type {\n SnackbarsProviderProps,\n SnackbarProps,\n SnackbarOptions,\n AddSnackbar,\n AddSnackbarOptions,\n Variants as SnackbarVariant,\n Position as SnackbarPosition,\n} from \"./components/feedBack/snackbar\";\n\n// utility\nexport { ClickAwayListener } from \"./components/clickAwayListener\";\nexport type { ClickAwayListenerProps } from \"./components/clickAwayListener\";\n\n// layout\nexport { Divider } from \"./components/layout/divider\";\nexport type { DividerProps, DividerColor } from \"./components/layout/divider\";\nexport { Stack } from \"./components/layout/stack\";\nexport type { StackProps, StackSpacing } from \"./components/layout/stack\";\nexport { Page } from \"./components/layout/page\";\nexport type { PageProps, PageMaxWidth } from \"./components/layout/page\";\nexport { PageHeader } from \"./components/layout/pageHeader\";\nexport type { PageHeaderProps } from \"./components/layout/pageHeader\";\nexport { Grid, Row, Column, Container } from \"./components/layout/grid\";\nexport type {\n RowProps,\n ColumnProps,\n ContainerProps,\n BreakpointType,\n ColumnSpan,\n OffsetType,\n Breakpoint,\n ResponsiveBool,\n ContainerMaxWidth,\n} from \"./components/layout/grid\";\nexport { AppLayout } from \"./components/layout/appLayout\";\nexport type { AppLayoutProps } from \"./components/layout/appLayout\";\nexport { ScreenDivider } from \"./components/layout/screenDivider\";\nexport type { ScreenDividerProps } from \"./components/layout/screenDivider\";\nexport { Sheet } from \"./components/layout/sheet\";\nexport type { SheetProps } from \"./components/layout/sheet\";\nexport { FloatingWindow } from \"./components/layout/floatingWindow\";\nexport type {\n FloatingWindowProps,\n FloatingWindowPosition,\n FloatingWindowSize,\n FloatingWindowResizeDir,\n} from \"./components/layout/floatingWindow\";\n\n// navigation\nexport { AppBar } from \"./components/navigation/appBar\";\nexport type { AppBarProps, AppBarColor } from \"./components/navigation/appBar\";\nexport { Breadcrumbs } from \"./components/navigation/breadcrumbs\";\nexport type { BreadcrumbsProps } from \"./components/navigation/breadcrumbs\";\nexport { Pagination } from \"./components/navigation/pagination\";\nexport type { PaginationProps, PaginationColor } from \"./components/navigation/pagination\";\nexport { Stepper } from \"./components/navigation/stepper\";\nexport type { StepperProps, StepItem } from \"./components/navigation/stepper\";\nexport { Sidebar } from \"./components/navigation/sidebar\";\nexport type { SidebarProps, SidebarMenuItemProps, SidebarVariant } from \"./components/navigation/sidebar\";\nexport { Tabs, Tab, TabsContext, useTabsContext } from \"./components/navigation/tabs\";\nexport type { TabsProps, TabProps, TabsContextValue } from \"./components/navigation/tabs\";\nexport { BottomBar } from \"./components/navigation/bottomBar\";\nexport type { BottomBarProps, BottomBarMenuItemProps } from \"./components/navigation/bottomBar\";\nexport {\n Menu,\n MenuFloating,\n MenuList,\n MenuItem,\n MenuItemIcon,\n MenuItemText,\n MenuDivider,\n MenuSubmenu,\n MenuContext,\n useMenuContext,\n buildMenuFloatingMiddleware,\n} from \"./components/navigation/menu\";\nexport type {\n MenuProps,\n MenuFloatingProps,\n MenuListProps,\n MenuItemProps,\n MenuItemIconProps,\n MenuItemTextProps,\n MenuDividerProps,\n MenuSubmenuProps,\n MenuContextValue,\n} from \"./components/navigation/menu\";\nexport { OverflowMenu } from \"./components/navigation/overflowMenu\";\nexport type { OverflowMenuProps, OverflowMenuItem } from \"./components/navigation/overflowMenu\";\n\n// inputs\nexport { Button } from \"./components/inputs/button\";\nexport type { ButtonProps } from \"./components/inputs/button\";\nexport { ButtonGroup } from \"./components/inputs/buttonGroups\";\nexport type { ButtonGroupProps } from \"./components/inputs/buttonGroups\";\nexport { Checkbox } from \"./components/inputs/checkbox\";\nexport type {\n CheckboxProps,\n SelectionControlSize,\n SelectionControlColor,\n SelectionChangeEvent,\n} from \"./components/inputs/checkbox\";\nexport { RadioButton } from \"./components/inputs/radioButton\";\nexport type { RadioButtonProps } from \"./components/inputs/radioButton\";\nexport { Toggle } from \"./components/inputs/toggle\";\nexport type { ToggleProps } from \"./components/inputs/toggle\";\nexport { Rating } from \"./components/inputs/rating\";\nexport type { RatingProps, RatingColor } from \"./components/inputs/rating\";\nexport { Slider } from \"./components/inputs/slider\";\nexport type { SliderProps, SliderValue, SliderMark } from \"./components/inputs/slider\";\nexport { ValueSlider } from \"./components/inputs/valueSlider\";\nexport type { ValueSliderProps } from \"./components/inputs/valueSlider\";\nexport { FileInput } from \"./components/inputs/fileInput\";\nexport type { FileInputProps } from \"./components/inputs/fileInput\";\nexport { FileDrop, PreviewWrapper, Preview, CountPreview, isImageFile } from \"./components/inputs/fileDrop\";\nexport type { FileUploadProps, PreviewWrapperProps, PreviewProps, CountPreviewProps } from \"./components/inputs/fileDrop\";\nexport { SelectField, DropdownMenu } from \"./components/inputs/selectField\";\nexport type { SelectFieldProps, OnSelectChange, DropdownItem, DropdownItemProps } from \"./components/inputs/selectField\";\nexport {\n DatePicker,\n OpenView,\n DataPickerDays,\n DataPickerHeader,\n DataPickerInput,\n DatePickerActionLabel,\n DatePickerDay,\n DatePickerIconButton,\n DatePickerList,\n createDateInput,\n} from \"./components/inputs/datePicker\";\nexport type {\n DatePickerProps,\n DataPickerDaysProps,\n DataPickerHeaderProps,\n DataPickerInputProps,\n ActionLabelProps,\n DatePickerDayProps,\n DataPickerIconButtonProps,\n DatePickerListProps,\n CreateDateInputProps,\n DateInputState,\n} from \"./components/inputs/datePicker\";\nexport { TimePicker, TimePickerInput, TimePickerColumns, createTimeInput, DEFAULT_TIME_FORMAT } from \"./components/inputs/timePicker\";\nexport type { TimePickerProps, TimePickerInputProps, TimePickerColumnsProps } from \"./components/inputs/timePicker\";\nexport {\n DateTimePicker,\n DateTimePickerInput,\n createDateTimeInput,\n getCurrentDateTimeFormat,\n getDisplayDateTime,\n formatDateTimeByPattern,\n isDateTimePatternMatch,\n parseDateTimeByPattern,\n} from \"./components/inputs/dateTimePicker\";\nexport type {\n DateTimePickerProps,\n DateTimePickerInputProps,\n CreateDateTimeInputProps,\n DateTimeInputState,\n} from \"./components/inputs/dateTimePicker\";\nexport { FloatingButton } from \"./components/inputs/floatingButton\";\nexport type { FloatingButtonProps, FloatingButtonColor } from \"./components/inputs/floatingButton\";\nexport { TextField, TextFieldWrapper, TextFieldAdornment } from \"./components/inputs/textField\";\nexport type {\n TextFieldProps,\n TextFieldWrapperProps,\n TextFieldAdornmentProps,\n TextFieldVariant,\n} from \"./components/inputs/textField\";\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { createEffect, createMemo, createSignal, onCleanup } from "solid-js";
|
|
2
|
+
import { flip, offset, shift } from "@floating-ui/dom";
|
|
3
|
+
import { resolvePlacement } from "../utils/floating";
|
|
4
|
+
import { createFloating } from "./createFloating";
|
|
5
|
+
const DEFAULT_PLACEMENT = "bottom-start";
|
|
6
|
+
const DEFAULT_OFFSET_PX = 4;
|
|
7
|
+
const SHIFT_PADDING_PX = 8;
|
|
8
|
+
const rectFromPoint = ({ x, y }) => ({ x, y, top: y, left: x, right: x, bottom: y, width: 0, height: 0 });
|
|
9
|
+
function createHoverPopover(options = {}) {
|
|
10
|
+
const offsetPx = options.offsetPx ?? DEFAULT_OFFSET_PX;
|
|
11
|
+
const openDelay = options.openDelay ?? 0;
|
|
12
|
+
const closeDelay = options.closeDelay ?? 0;
|
|
13
|
+
const [open, setOpen] = createSignal(false);
|
|
14
|
+
let cursor = { x: 0, y: 0 };
|
|
15
|
+
let anchor = { x: 0, y: 0 };
|
|
16
|
+
let anchorEl = null;
|
|
17
|
+
let openTimer = null;
|
|
18
|
+
let closeTimer = null;
|
|
19
|
+
const resolved = createMemo(() => resolvePlacement(options.placement ?? DEFAULT_PLACEMENT));
|
|
20
|
+
const floating = createFloating({
|
|
21
|
+
placement: () => resolved().placement,
|
|
22
|
+
middleware: () => [
|
|
23
|
+
offset({ mainAxis: offsetPx, crossAxis: offsetPx }),
|
|
24
|
+
resolved().autoMiddleware ?? flip(),
|
|
25
|
+
shift({ padding: SHIFT_PADDING_PX }),
|
|
26
|
+
...options.middleware ?? []
|
|
27
|
+
]
|
|
28
|
+
});
|
|
29
|
+
const virtualReference = { getBoundingClientRect: () => rectFromPoint(anchor) };
|
|
30
|
+
const clearTimers = () => {
|
|
31
|
+
if (openTimer !== null) {
|
|
32
|
+
clearTimeout(openTimer);
|
|
33
|
+
openTimer = null;
|
|
34
|
+
}
|
|
35
|
+
if (closeTimer !== null) {
|
|
36
|
+
clearTimeout(closeTimer);
|
|
37
|
+
closeTimer = null;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
onCleanup(clearTimers);
|
|
41
|
+
createEffect(() => {
|
|
42
|
+
if (!open()) return;
|
|
43
|
+
floating.setReference(anchorEl ?? virtualReference);
|
|
44
|
+
floating.update();
|
|
45
|
+
});
|
|
46
|
+
const freezeAnchor = () => {
|
|
47
|
+
if (anchorEl === null) anchor = cursor;
|
|
48
|
+
};
|
|
49
|
+
const openNow = () => {
|
|
50
|
+
clearTimers();
|
|
51
|
+
freezeAnchor();
|
|
52
|
+
setOpen(true);
|
|
53
|
+
};
|
|
54
|
+
const scheduleOpen = () => {
|
|
55
|
+
clearTimers();
|
|
56
|
+
if (openDelay <= 0) {
|
|
57
|
+
freezeAnchor();
|
|
58
|
+
setOpen(true);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
openTimer = setTimeout(() => {
|
|
62
|
+
freezeAnchor();
|
|
63
|
+
setOpen(true);
|
|
64
|
+
}, openDelay);
|
|
65
|
+
};
|
|
66
|
+
const scheduleClose = () => {
|
|
67
|
+
clearTimers();
|
|
68
|
+
if (closeDelay <= 0) {
|
|
69
|
+
setOpen(false);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
closeTimer = setTimeout(() => setOpen(false), closeDelay);
|
|
73
|
+
};
|
|
74
|
+
const close = () => {
|
|
75
|
+
clearTimers();
|
|
76
|
+
setOpen(false);
|
|
77
|
+
};
|
|
78
|
+
const setVirtualAnchor = (point) => {
|
|
79
|
+
anchorEl = null;
|
|
80
|
+
anchor = point;
|
|
81
|
+
};
|
|
82
|
+
const setAnchorEl = (element) => {
|
|
83
|
+
anchorEl = element;
|
|
84
|
+
};
|
|
85
|
+
const getReferenceProps = (userHandlers) => ({
|
|
86
|
+
onPointerEnter: (event) => {
|
|
87
|
+
userHandlers?.onPointerEnter?.(event);
|
|
88
|
+
cursor = { x: event.clientX, y: event.clientY };
|
|
89
|
+
scheduleOpen();
|
|
90
|
+
},
|
|
91
|
+
onPointerMove: (event) => {
|
|
92
|
+
userHandlers?.onPointerMove?.(event);
|
|
93
|
+
cursor = { x: event.clientX, y: event.clientY };
|
|
94
|
+
},
|
|
95
|
+
onPointerLeave: (event) => {
|
|
96
|
+
userHandlers?.onPointerLeave?.(event);
|
|
97
|
+
scheduleClose();
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
const getFloatingProps = (userProps) => ({
|
|
101
|
+
ref: (node) => floating.setFloating(node),
|
|
102
|
+
style: { ...floating.floatingStyles(), ...userProps?.style ?? {} },
|
|
103
|
+
onPointerEnter: () => {
|
|
104
|
+
clearTimers();
|
|
105
|
+
setOpen(true);
|
|
106
|
+
},
|
|
107
|
+
onPointerLeave: scheduleClose
|
|
108
|
+
});
|
|
109
|
+
return {
|
|
110
|
+
open,
|
|
111
|
+
getReferenceProps,
|
|
112
|
+
getFloatingProps,
|
|
113
|
+
setAnchorEl,
|
|
114
|
+
setVirtualAnchor,
|
|
115
|
+
openNow,
|
|
116
|
+
scheduleOpen,
|
|
117
|
+
scheduleClose,
|
|
118
|
+
close
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
var createHoverPopover_default = createHoverPopover;
|
|
122
|
+
export {
|
|
123
|
+
createHoverPopover,
|
|
124
|
+
createHoverPopover_default as default
|
|
125
|
+
};
|
|
126
|
+
//# sourceMappingURL=createHoverPopover.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/primitives/createHoverPopover.ts"],
|
|
4
|
+
"sourcesContent": ["import { type Accessor, type JSX, createEffect, createMemo, createSignal, onCleanup } from \"solid-js\";\nimport { flip, offset, shift } from \"@floating-ui/dom\";\nimport type { Middleware, VirtualElement } from \"@floating-ui/dom\";\nimport { type Placement, resolvePlacement } from \"../utils/floating\";\nimport { createFloating } from \"./createFloating\";\n\nexport interface CreateHoverPopoverOptions {\n /** Placement of the popover relative to its anchor. Default `\"bottom-start\"`. */\n placement?: Placement;\n /** Offset (px) applied on both axes between the anchor and the popover. Default `4`. */\n offsetPx?: number;\n /** Delay (ms) before opening after pointer enter. Default `0`. */\n openDelay?: number;\n /** Delay (ms) before closing after pointer leave. Default `0`. */\n closeDelay?: number;\n /** Extra floating-ui middleware appended after the smwb defaults. */\n middleware?: Middleware[];\n}\n\n/** A pointer position in viewport (client) coordinates. */\nexport interface HoverPopoverPoint {\n x: number;\n y: number;\n}\n\nexport interface HoverPopoverReferenceProps {\n onPointerEnter: (event: PointerEvent) => void;\n onPointerMove: (event: PointerEvent) => void;\n onPointerLeave: (event: PointerEvent) => void;\n}\n\nexport interface HoverPopoverFloatingProps {\n ref: (node: HTMLElement) => void;\n style: JSX.CSSProperties;\n onPointerEnter: () => void;\n onPointerLeave: () => void;\n}\n\nexport interface HoverPopoverState {\n /** Whether the popover is currently open. */\n open: Accessor<boolean>;\n /**\n * Pointer handlers for the trigger element(s). Spread on a single anchor, or on EVERY\n * row of a list/table to share one popover across many triggers. By default the popover\n * is anchored to the cursor position frozen when it opens. Pass your own handlers to\n * compose them (e.g. to mark which row is active).\n */\n getReferenceProps: (userHandlers?: Partial<HoverPopoverReferenceProps>) => HoverPopoverReferenceProps;\n /** Props for the single floating element; keeps it open while it is hovered. */\n getFloatingProps: (userProps?: { style?: JSX.CSSProperties }) => HoverPopoverFloatingProps;\n /** Anchor the popover to a real element instead of the cursor (`null` clears it). */\n setAnchorEl: (element: Element | null) => void;\n /** Anchor the popover to an explicit point, e.g. an external cursor source. */\n setVirtualAnchor: (point: HoverPopoverPoint) => void;\n /** Open immediately, ignoring `openDelay`. */\n openNow: () => void;\n /** Open after `openDelay`. */\n scheduleOpen: () => void;\n /** Close after `closeDelay`. */\n scheduleClose: () => void;\n /** Close immediately. */\n close: () => void;\n}\n\nconst DEFAULT_PLACEMENT: Placement = \"bottom-start\";\nconst DEFAULT_OFFSET_PX = 4;\nconst SHIFT_PADDING_PX = 8;\n\nconst rectFromPoint = ({ x, y }: HoverPopoverPoint): DOMRect =>\n ({ x, y, top: y, left: x, right: x, bottom: y, width: 0, height: 0 }) as DOMRect;\n\n/**\n * Headless hover-popover positioning \u2014 the Solid twin of ui-react's `useHoverPopover`.\n *\n * Wraps {@link createFloating} with the smwb placement / offset / flip / shift conventions\n * but imposes NO DOM structure: spread `getReferenceProps()` on any trigger (including a\n * `<tr>`, which the wrapper-based `<Tooltip>` cannot do) and `getFloatingProps()` on a\n * single floating element you render yourself.\n *\n * The default anchor is the cursor point frozen when the popover opens (a floating-ui\n * virtual element), so ONE instance can serve a whole table/list \u2014 call\n * `getReferenceProps()` on every row and render one shared popover instead of mounting one\n * floating engine per row. Use `setAnchorEl` to anchor to a real element instead.\n */\nexport function createHoverPopover(options: CreateHoverPopoverOptions = {}): HoverPopoverState {\n const offsetPx = options.offsetPx ?? DEFAULT_OFFSET_PX;\n const openDelay = options.openDelay ?? 0;\n const closeDelay = options.closeDelay ?? 0;\n\n const [open, setOpen] = createSignal(false);\n\n let cursor: HoverPopoverPoint = { x: 0, y: 0 };\n let anchor: HoverPopoverPoint = { x: 0, y: 0 };\n let anchorEl: Element | null = null;\n let openTimer: ReturnType<typeof setTimeout> | null = null;\n let closeTimer: ReturnType<typeof setTimeout> | null = null;\n\n const resolved = createMemo(() => resolvePlacement(options.placement ?? DEFAULT_PLACEMENT));\n\n const floating = createFloating({\n placement: () => resolved().placement,\n middleware: () => [\n offset({ mainAxis: offsetPx, crossAxis: offsetPx }),\n resolved().autoMiddleware ?? flip(),\n shift({ padding: SHIFT_PADDING_PX }),\n ...(options.middleware ?? []),\n ],\n });\n\n // The virtual reference reads `anchor` LAZILY, so freezing the cursor is just a field\n // write \u2014 no need to rebuild the reference on every pointer move.\n const virtualReference: VirtualElement = { getBoundingClientRect: () => rectFromPoint(anchor) };\n\n const clearTimers = (): void => {\n if (openTimer !== null) {\n clearTimeout(openTimer);\n openTimer = null;\n }\n if (closeTimer !== null) {\n clearTimeout(closeTimer);\n closeTimer = null;\n }\n };\n\n onCleanup(clearTimers);\n\n // Apply the active anchor (element or frozen cursor) whenever the popover opens;\n // createFloating's autoUpdate keeps it positioned while the floating element is mounted.\n createEffect(() => {\n if (!open()) return;\n floating.setReference(anchorEl ?? virtualReference);\n floating.update();\n });\n\n const freezeAnchor = (): void => {\n if (anchorEl === null) anchor = cursor;\n };\n\n const openNow = (): void => {\n clearTimers();\n freezeAnchor();\n setOpen(true);\n };\n\n const scheduleOpen = (): void => {\n clearTimers();\n if (openDelay <= 0) {\n freezeAnchor();\n setOpen(true);\n return;\n }\n openTimer = setTimeout(() => {\n freezeAnchor();\n setOpen(true);\n }, openDelay);\n };\n\n const scheduleClose = (): void => {\n clearTimers();\n if (closeDelay <= 0) {\n setOpen(false);\n return;\n }\n closeTimer = setTimeout(() => setOpen(false), closeDelay);\n };\n\n const close = (): void => {\n clearTimers();\n setOpen(false);\n };\n\n const setVirtualAnchor = (point: HoverPopoverPoint): void => {\n anchorEl = null;\n anchor = point;\n };\n\n const setAnchorEl = (element: Element | null): void => {\n anchorEl = element;\n };\n\n const getReferenceProps = (userHandlers?: Partial<HoverPopoverReferenceProps>): HoverPopoverReferenceProps => ({\n onPointerEnter: (event) => {\n userHandlers?.onPointerEnter?.(event);\n cursor = { x: event.clientX, y: event.clientY };\n scheduleOpen();\n },\n onPointerMove: (event) => {\n userHandlers?.onPointerMove?.(event);\n cursor = { x: event.clientX, y: event.clientY };\n },\n onPointerLeave: (event) => {\n userHandlers?.onPointerLeave?.(event);\n scheduleClose();\n },\n });\n\n const getFloatingProps = (userProps?: { style?: JSX.CSSProperties }): HoverPopoverFloatingProps => ({\n ref: (node) => floating.setFloating(node),\n style: { ...floating.floatingStyles(), ...(userProps?.style ?? {}) },\n onPointerEnter: () => {\n clearTimers();\n setOpen(true);\n },\n onPointerLeave: scheduleClose,\n });\n\n return {\n open,\n getReferenceProps,\n getFloatingProps,\n setAnchorEl,\n setVirtualAnchor,\n openNow,\n scheduleOpen,\n scheduleClose,\n close,\n };\n}\n\nexport default createHoverPopover;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const read = (value) => typeof value === "function" ? value() : value;
|
|
2
|
+
function createRovingTabIndex(options) {
|
|
3
|
+
return (event) => {
|
|
4
|
+
const count = read(options.count);
|
|
5
|
+
if (count === 0) return;
|
|
6
|
+
const activeIndex = read(options.activeIndex);
|
|
7
|
+
const orientation = options.orientation ?? "horizontal";
|
|
8
|
+
const loop = options.loop ?? true;
|
|
9
|
+
const horiz = orientation === "horizontal" || orientation === "both";
|
|
10
|
+
const vert = orientation === "vertical" || orientation === "both";
|
|
11
|
+
const next = horiz && event.key === "ArrowRight" || vert && event.key === "ArrowDown";
|
|
12
|
+
const prev = horiz && event.key === "ArrowLeft" || vert && event.key === "ArrowUp";
|
|
13
|
+
let target = null;
|
|
14
|
+
if (next) {
|
|
15
|
+
target = activeIndex + 1;
|
|
16
|
+
} else if (prev) {
|
|
17
|
+
target = activeIndex - 1;
|
|
18
|
+
} else if (event.key === "Home") {
|
|
19
|
+
target = 0;
|
|
20
|
+
} else if (event.key === "End") {
|
|
21
|
+
target = count - 1;
|
|
22
|
+
}
|
|
23
|
+
if (target === null) return;
|
|
24
|
+
const clamp = (i) => loop ? (i + count) % count : Math.max(0, Math.min(count - 1, i));
|
|
25
|
+
target = clamp(target);
|
|
26
|
+
const isDisabled = options.isDisabled;
|
|
27
|
+
if (isDisabled) {
|
|
28
|
+
let guard = 0;
|
|
29
|
+
const step = next || event.key === "Home" ? 1 : -1;
|
|
30
|
+
while (isDisabled(target) && guard < count) {
|
|
31
|
+
target = clamp(target + step);
|
|
32
|
+
guard += 1;
|
|
33
|
+
}
|
|
34
|
+
if (isDisabled(target)) return;
|
|
35
|
+
}
|
|
36
|
+
event.preventDefault();
|
|
37
|
+
options.onMove(target);
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
var createRovingTabIndex_default = createRovingTabIndex;
|
|
41
|
+
export {
|
|
42
|
+
createRovingTabIndex,
|
|
43
|
+
createRovingTabIndex_default as default
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=createRovingTabIndex.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/primitives/createRovingTabIndex.ts"],
|
|
4
|
+
"sourcesContent": ["import type { JSX } from \"solid-js\";\n\nexport interface CreateRovingTabIndexOptions {\n /** Number of focusable items. */\n count: number | (() => number);\n /** Current active index. */\n activeIndex: number | (() => number);\n /** Called with the next index when navigation keys are pressed. */\n onMove: (nextIndex: number) => void;\n /** Arrow-key axis. */\n orientation?: \"horizontal\" | \"vertical\" | \"both\";\n /** Wrap around the ends (default true). */\n loop?: boolean;\n /** Optional predicate to skip disabled items. */\n isDisabled?: (index: number) => boolean;\n}\n\nconst read = (value: number | (() => number)): number => (typeof value === \"function\" ? value() : value);\n\n/**\n * Keyboard navigation for composite widgets (tabs, menus, trees, pagination) \u2014 the Solid\n * twin of ui-react's `useRovingTabIndex`. Returns an `onKeyDown` handler implementing\n * Arrow/Home/End with optional looping and disabled-skipping. The consumer owns focus and\n * activation.\n *\n * `count`/`activeIndex` accept an accessor so the handler \u2014 attached once \u2014 always reads\n * the live value instead of the one captured when it was created.\n */\nexport function createRovingTabIndex(\n options: CreateRovingTabIndexOptions,\n): JSX.EventHandler<HTMLElement, KeyboardEvent> {\n return (event) => {\n const count = read(options.count);\n if (count === 0) return;\n\n const activeIndex = read(options.activeIndex);\n const orientation = options.orientation ?? \"horizontal\";\n const loop = options.loop ?? true;\n const horiz = orientation === \"horizontal\" || orientation === \"both\";\n const vert = orientation === \"vertical\" || orientation === \"both\";\n const next = (horiz && event.key === \"ArrowRight\") || (vert && event.key === \"ArrowDown\");\n const prev = (horiz && event.key === \"ArrowLeft\") || (vert && event.key === \"ArrowUp\");\n\n let target: number | null = null;\n if (next) {\n target = activeIndex + 1;\n } else if (prev) {\n target = activeIndex - 1;\n } else if (event.key === \"Home\") {\n target = 0;\n } else if (event.key === \"End\") {\n target = count - 1;\n }\n if (target === null) return;\n\n const clamp = (i: number): number => (loop ? (i + count) % count : Math.max(0, Math.min(count - 1, i)));\n target = clamp(target);\n\n const isDisabled = options.isDisabled;\n if (isDisabled) {\n let guard = 0;\n const step = next || event.key === \"Home\" ? 1 : -1;\n while (isDisabled(target) && guard < count) {\n target = clamp(target + step);\n guard += 1;\n }\n if (isDisabled(target)) return;\n }\n\n event.preventDefault();\n options.onMove(target);\n };\n}\n\nexport default createRovingTabIndex;\n"],
|
|
5
|
+
"mappings": "AAiBA,MAAM,OAAO,CAAC,UAA4C,OAAO,UAAU,aAAa,MAAM,IAAI;AAW3F,SAAS,qBACd,SAC8C;AAC9C,SAAO,CAAC,UAAU;AAChB,UAAM,QAAQ,KAAK,QAAQ,KAAK;AAChC,QAAI,UAAU,EAAG;AAEjB,UAAM,cAAc,KAAK,QAAQ,WAAW;AAC5C,UAAM,cAAc,QAAQ,eAAe;AAC3C,UAAM,OAAO,QAAQ,QAAQ;AAC7B,UAAM,QAAQ,gBAAgB,gBAAgB,gBAAgB;AAC9D,UAAM,OAAO,gBAAgB,cAAc,gBAAgB;AAC3D,UAAM,OAAQ,SAAS,MAAM,QAAQ,gBAAkB,QAAQ,MAAM,QAAQ;AAC7E,UAAM,OAAQ,SAAS,MAAM,QAAQ,eAAiB,QAAQ,MAAM,QAAQ;AAE5E,QAAI,SAAwB;AAC5B,QAAI,MAAM;AACR,eAAS,cAAc;AAAA,IACzB,WAAW,MAAM;AACf,eAAS,cAAc;AAAA,IACzB,WAAW,MAAM,QAAQ,QAAQ;AAC/B,eAAS;AAAA,IACX,WAAW,MAAM,QAAQ,OAAO;AAC9B,eAAS,QAAQ;AAAA,IACnB;AACA,QAAI,WAAW,KAAM;AAErB,UAAM,QAAQ,CAAC,MAAuB,QAAQ,IAAI,SAAS,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,QAAQ,GAAG,CAAC,CAAC;AACrG,aAAS,MAAM,MAAM;AAErB,UAAM,aAAa,QAAQ;AAC3B,QAAI,YAAY;AACd,UAAI,QAAQ;AACZ,YAAM,OAAO,QAAQ,MAAM,QAAQ,SAAS,IAAI;AAChD,aAAO,WAAW,MAAM,KAAK,QAAQ,OAAO;AAC1C,iBAAS,MAAM,SAAS,IAAI;AAC5B,iBAAS;AAAA,MACX;AACA,UAAI,WAAW,MAAM,EAAG;AAAA,IAC1B;AAEA,UAAM,eAAe;AACrB,YAAQ,OAAO,MAAM;AAAA,EACvB;AACF;AAEA,IAAO,+BAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,6 +19,10 @@ export type { CreateMaskedInputOptions, MaskedInputState } from "./primitives/cr
|
|
|
19
19
|
export { createMediaQuery } from "./primitives/createMediaQuery";
|
|
20
20
|
export { createPersistedJson } from "./primitives/createPersistedJson";
|
|
21
21
|
export type { PersistedJson } from "./primitives/createPersistedJson";
|
|
22
|
+
export { createRovingTabIndex } from "./primitives/createRovingTabIndex";
|
|
23
|
+
export type { CreateRovingTabIndexOptions } from "./primitives/createRovingTabIndex";
|
|
24
|
+
export { createHoverPopover } from "./primitives/createHoverPopover";
|
|
25
|
+
export type { CreateHoverPopoverOptions, HoverPopoverState, HoverPopoverPoint, HoverPopoverReferenceProps, HoverPopoverFloatingProps, } from "./primitives/createHoverPopover";
|
|
22
26
|
export { resolvePlacement, buildFloatingMiddleware, placements } from "./utils/floating";
|
|
23
27
|
export type { Placement, ResolvedPlacement } from "./utils/floating";
|
|
24
28
|
export { Icon, IconProvider, IconContext, useIconSource, createIconVersion } from "./components/base/icon";
|
|
@@ -101,6 +105,8 @@ export { ScreenDivider } from "./components/layout/screenDivider";
|
|
|
101
105
|
export type { ScreenDividerProps } from "./components/layout/screenDivider";
|
|
102
106
|
export { Sheet } from "./components/layout/sheet";
|
|
103
107
|
export type { SheetProps } from "./components/layout/sheet";
|
|
108
|
+
export { FloatingWindow } from "./components/layout/floatingWindow";
|
|
109
|
+
export type { FloatingWindowProps, FloatingWindowPosition, FloatingWindowSize, FloatingWindowResizeDir, } from "./components/layout/floatingWindow";
|
|
104
110
|
export { AppBar } from "./components/navigation/appBar";
|
|
105
111
|
export type { AppBarProps, AppBarColor } from "./components/navigation/appBar";
|
|
106
112
|
export { Breadcrumbs } from "./components/navigation/breadcrumbs";
|