@pathscale/ui 1.1.34 → 1.1.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/button/Button.css +10 -1
- package/dist/components/button/Button.d.ts +2 -0
- package/dist/components/button/Button.js +31 -6
- package/dist/components/button-group/ButtonGroup.css +117 -0
- package/dist/components/button-group/ButtonGroup.d.ts +23 -0
- package/dist/components/button-group/ButtonGroup.js +91 -0
- package/dist/components/button-group/context.d.ts +8 -0
- package/dist/components/button-group/context.js +3 -0
- package/dist/components/button-group/index.d.ts +1 -0
- package/dist/components/button-group/index.js +6 -0
- package/dist/components/card/Card.css +110 -0
- package/dist/components/card/Card.d.ts +26 -26
- package/dist/components/card/Card.js +131 -70
- package/dist/components/card/index.d.ts +1 -1
- package/dist/components/card/index.js +6 -1
- package/dist/components/checkbox/Checkbox.js +18 -4
- package/dist/components/checkbox-group/CheckboxGroup.css +10 -0
- package/dist/components/checkbox-group/CheckboxGroup.d.ts +18 -0
- package/dist/components/checkbox-group/CheckboxGroup.js +97 -0
- package/dist/components/checkbox-group/context.d.ts +11 -0
- package/dist/components/checkbox-group/context.js +3 -0
- package/dist/components/checkbox-group/index.d.ts +4 -0
- package/dist/components/checkbox-group/index.js +4 -0
- package/dist/components/chip/Chip.css +11 -9
- package/dist/components/chip/Chip.d.ts +2 -2
- package/dist/components/chip/Chip.js +38 -30
- package/dist/components/close-button/CloseButton.css +81 -0
- package/dist/components/close-button/CloseButton.d.ts +14 -0
- package/dist/components/close-button/CloseButton.js +76 -0
- package/dist/components/close-button/index.d.ts +1 -0
- package/dist/components/close-button/index.js +3 -0
- package/dist/components/combo-box/ComboBox.css +344 -0
- package/dist/components/combo-box/ComboBox.d.ts +86 -0
- package/dist/components/combo-box/ComboBox.js +708 -0
- package/dist/components/combo-box/index.d.ts +1 -0
- package/dist/components/combo-box/index.js +10 -0
- package/dist/components/date-field/DateField.css +215 -0
- package/dist/components/date-field/DateField.d.ts +64 -0
- package/dist/components/date-field/DateField.js +341 -0
- package/dist/components/date-field/index.d.ts +1 -0
- package/dist/components/date-field/index.js +11 -0
- package/dist/components/description/Description.css +10 -0
- package/dist/components/description/Description.d.ts +11 -0
- package/dist/components/{form/Label.js → description/Description.js} +23 -14
- package/dist/components/description/index.d.ts +1 -0
- package/dist/components/description/index.js +5 -0
- package/dist/components/drawer/Drawer.css +15 -0
- package/dist/components/drawer/Drawer.d.ts +2 -0
- package/dist/components/drawer/Drawer.js +24 -16
- package/dist/components/error-message/ErrorMessage.css +20 -0
- package/dist/components/error-message/ErrorMessage.d.ts +11 -0
- package/dist/components/error-message/ErrorMessage.js +40 -0
- package/dist/components/error-message/index.d.ts +1 -0
- package/dist/components/error-message/index.js +5 -0
- package/dist/components/field-error/FieldError.css +27 -0
- package/dist/components/field-error/FieldError.d.ts +21 -0
- package/dist/components/field-error/FieldError.js +69 -0
- package/dist/components/field-error/index.d.ts +1 -0
- package/dist/components/field-error/index.js +5 -0
- package/dist/components/fieldset/Fieldset.css +30 -0
- package/dist/components/fieldset/Fieldset.d.ts +22 -9
- package/dist/components/fieldset/Fieldset.js +88 -44
- package/dist/components/fieldset/index.d.ts +1 -2
- package/dist/components/fieldset/index.js +7 -2
- package/dist/components/form/Form.css +5 -0
- package/dist/components/form/Form.d.ts +10 -16
- package/dist/components/form/Form.js +33 -16
- package/dist/components/form/index.d.ts +1 -4
- package/dist/components/form/index.js +3 -4
- package/dist/components/header/Header.css +13 -0
- package/dist/components/header/Header.d.ts +9 -0
- package/dist/components/{menu/MenuDetails.js → header/Header.js} +17 -20
- package/dist/components/header/index.d.ts +1 -0
- package/dist/components/header/index.js +5 -0
- package/dist/components/immersive-landing/components/FirefoxPWABanner.js +62 -68
- package/dist/components/immersive-landing/components/PWAInstallPrompt.js +58 -64
- package/dist/components/input/Input.css +3 -2
- package/dist/components/input/Input.d.ts +2 -2
- package/dist/components/input/Input.js +7 -7
- package/dist/components/input-group/InputGroup.css +172 -0
- package/dist/components/input-group/InputGroup.d.ts +44 -0
- package/dist/components/input-group/InputGroup.js +227 -0
- package/dist/components/input-group/index.d.ts +1 -0
- package/dist/components/input-group/index.js +9 -0
- package/dist/components/input-otp/InputOTP.css +170 -0
- package/dist/components/input-otp/InputOTP.d.ts +46 -0
- package/dist/components/input-otp/InputOTP.js +385 -0
- package/dist/components/input-otp/index.d.ts +1 -0
- package/dist/components/input-otp/index.js +11 -0
- package/dist/components/label/Label.css +30 -0
- package/dist/components/label/Label.d.ts +17 -0
- package/dist/components/label/Label.js +64 -0
- package/dist/components/label/index.d.ts +1 -0
- package/dist/components/label/index.js +5 -0
- package/dist/components/list-box/ListBox.css +148 -0
- package/dist/components/list-box/ListBox.d.ts +23 -0
- package/dist/components/list-box/ListBox.js +224 -0
- package/dist/components/list-box/ListBoxItem.d.ts +28 -0
- package/dist/components/list-box/ListBoxItem.js +231 -0
- package/dist/components/list-box/ListBoxSection.d.ts +11 -0
- package/dist/components/list-box/ListBoxSection.js +48 -0
- package/dist/components/list-box/context.d.ts +27 -0
- package/dist/components/list-box/context.js +3 -0
- package/dist/components/list-box/index.d.ts +17 -0
- package/dist/components/list-box/index.js +17 -0
- package/dist/components/menu/Menu.css +199 -0
- package/dist/components/menu/Menu.d.ts +32 -20
- package/dist/components/menu/Menu.js +213 -39
- package/dist/components/menu/MenuItem.d.ts +35 -5
- package/dist/components/menu/MenuItem.js +270 -19
- package/dist/components/menu/MenuSection.d.ts +11 -0
- package/dist/components/menu/MenuSection.js +48 -0
- package/dist/components/menu/context.d.ts +26 -0
- package/dist/components/menu/context.js +3 -0
- package/dist/components/menu/index.d.ts +4 -3
- package/dist/components/menu/index.js +11 -2
- package/dist/components/number-field/NumberField.css +198 -0
- package/dist/components/number-field/NumberField.d.ts +48 -0
- package/dist/components/number-field/NumberField.js +350 -0
- package/dist/components/number-field/index.d.ts +1 -0
- package/dist/components/number-field/index.js +9 -0
- package/dist/components/search-field/SearchField.css +183 -0
- package/dist/components/search-field/SearchField.d.ts +53 -0
- package/dist/components/search-field/SearchField.js +303 -0
- package/dist/components/search-field/index.d.ts +1 -0
- package/dist/components/search-field/index.js +9 -0
- package/dist/components/select/Select.css +16 -10
- package/dist/components/select/Select.d.ts +10 -2
- package/dist/components/select/Select.js +119 -33
- package/dist/components/separator/Separator.css +35 -0
- package/dist/components/separator/Separator.d.ts +12 -0
- package/dist/components/separator/Separator.js +57 -0
- package/dist/components/separator/index.d.ts +1 -0
- package/dist/components/separator/index.js +4 -0
- package/dist/components/sidenav/Sidenav.js +2 -2
- package/dist/components/surface/Surface.css +37 -0
- package/dist/components/surface/Surface.d.ts +12 -0
- package/dist/components/surface/Surface.js +41 -0
- package/dist/components/surface/index.d.ts +1 -0
- package/dist/components/surface/index.js +4 -0
- package/dist/components/table/hooks/index.d.ts +1 -9
- package/dist/components/table/hooks/index.js +1 -18
- package/dist/components/tag/Tag.css +121 -0
- package/dist/components/tag/Tag.d.ts +33 -0
- package/dist/components/tag/Tag.js +241 -0
- package/dist/components/tag/index.d.ts +1 -0
- package/dist/components/tag/index.js +6 -0
- package/dist/components/tag-group/TagGroup.css +22 -0
- package/dist/components/tag-group/TagGroup.d.ts +32 -0
- package/dist/components/tag-group/TagGroup.js +177 -0
- package/dist/components/tag-group/context.d.ts +15 -0
- package/dist/components/tag-group/context.js +3 -0
- package/dist/components/tag-group/index.d.ts +2 -0
- package/dist/components/tag-group/index.js +6 -0
- package/dist/components/text/Text.css +66 -0
- package/dist/components/text/Text.d.ts +17 -0
- package/dist/components/text/Text.js +46 -0
- package/dist/components/text/index.d.ts +1 -0
- package/dist/components/text/index.js +5 -0
- package/dist/components/text-area/TextArea.css +95 -0
- package/dist/components/text-area/TextArea.d.ts +19 -0
- package/dist/components/text-area/TextArea.js +64 -0
- package/dist/components/text-area/index.d.ts +1 -0
- package/dist/components/text-area/index.js +5 -0
- package/dist/components/text-field/TextField.css +33 -0
- package/dist/components/text-field/TextField.d.ts +34 -0
- package/dist/components/text-field/TextField.js +85 -0
- package/dist/components/text-field/index.d.ts +1 -0
- package/dist/components/text-field/index.js +7 -0
- package/dist/components/textarea/Textarea.d.ts +8 -13
- package/dist/components/textarea/Textarea.js +14 -45
- package/dist/components/textarea/index.d.ts +2 -1
- package/dist/components/textarea/index.js +4 -1
- package/dist/components/time-field/TimeField.css +215 -0
- package/dist/components/time-field/TimeField.d.ts +64 -0
- package/dist/components/time-field/TimeField.js +341 -0
- package/dist/components/time-field/index.d.ts +1 -0
- package/dist/components/time-field/index.js +11 -0
- package/dist/components/utils.d.ts +2 -2
- package/dist/components/utils.js +3 -17
- package/dist/hooks/form/index.d.ts +5 -0
- package/dist/hooks/form/index.js +12 -0
- package/dist/hooks/form/useField.d.ts +11 -0
- package/dist/hooks/form/useField.js +20 -0
- package/dist/hooks/form/useFieldError.d.ts +3 -0
- package/dist/hooks/form/useFieldError.js +3 -0
- package/dist/hooks/form/useFieldMeta.d.ts +20 -0
- package/dist/hooks/form/useFieldMeta.js +49 -0
- package/dist/hooks/form/useFieldProps.d.ts +10 -0
- package/dist/hooks/form/useFieldProps.js +51 -0
- package/dist/hooks/form/useForm.d.ts +27 -0
- package/dist/hooks/form/useForm.js +54 -0
- package/dist/hooks/form/utils.d.ts +4 -0
- package/dist/hooks/form/utils.js +30 -0
- package/dist/hooks/layout/index.d.ts +1 -0
- package/dist/hooks/layout/index.js +3 -0
- package/dist/hooks/layout/useDesktop.d.ts +1 -0
- package/dist/hooks/layout/useDesktop.js +17 -0
- package/dist/hooks/table/index.d.ts +9 -0
- package/dist/hooks/table/index.js +18 -0
- package/dist/index.d.ts +59 -7
- package/dist/index.js +140 -15
- package/dist/styles/icons/generated-icons.css +1 -1
- package/package.json +1 -1
- package/dist/components/card/CardActions.d.ts +0 -4
- package/dist/components/card/CardActions.js +0 -15
- package/dist/components/card/CardBody.d.ts +0 -4
- package/dist/components/card/CardBody.js +0 -15
- package/dist/components/card/CardImage.d.ts +0 -3
- package/dist/components/card/CardImage.js +0 -10
- package/dist/components/card/CardTitle.d.ts +0 -6
- package/dist/components/card/CardTitle.js +0 -13
- package/dist/components/card/card.css +0 -171
- package/dist/components/form/FormBase.d.ts +0 -8
- package/dist/components/form/FormBase.js +0 -74
- package/dist/components/form/FormDropdown.d.ts +0 -25
- package/dist/components/form/FormDropdown.js +0 -139
- package/dist/components/form/FormField.d.ts +0 -14
- package/dist/components/form/FormField.js +0 -78
- package/dist/components/form/Label.d.ts +0 -7
- package/dist/components/form/NumberField.d.ts +0 -20
- package/dist/components/form/NumberField.js +0 -109
- package/dist/components/form/PasswordField.d.ts +0 -16
- package/dist/components/form/PasswordField.js +0 -113
- package/dist/components/form/ValidatedForm.d.ts +0 -26
- package/dist/components/form/ValidatedForm.js +0 -55
- package/dist/components/menu/MenuDetails.d.ts +0 -8
- package/dist/components/menu/MenuDropdown.d.ts +0 -12
- package/dist/components/menu/MenuDropdown.js +0 -48
- package/dist/components/menu/MenuTitle.d.ts +0 -8
- package/dist/components/menu/MenuTitle.js +0 -22
- package/dist/components/menu/menu.css +0 -364
- package/dist/components/textarea/textarea.css +0 -191
- /package/dist/{components/table/hooks → hooks/table}/helpers.d.ts +0 -0
- /package/dist/{components/table/hooks → hooks/table}/helpers.js +0 -0
- /package/dist/{components/table/hooks → hooks/table}/useAnchoredOverlayPosition.d.ts +0 -0
- /package/dist/{components/table/hooks → hooks/table}/useAnchoredOverlayPosition.js +0 -0
- /package/dist/{components/table/hooks → hooks/table}/useTableExpansion.d.ts +0 -0
- /package/dist/{components/table/hooks → hooks/table}/useTableExpansion.js +0 -0
- /package/dist/{components/table/hooks → hooks/table}/useTableFiltering.d.ts +0 -0
- /package/dist/{components/table/hooks → hooks/table}/useTableFiltering.js +0 -0
- /package/dist/{components/table/hooks → hooks/table}/useTableModel.d.ts +0 -0
- /package/dist/{components/table/hooks → hooks/table}/useTableModel.js +0 -0
- /package/dist/{components/table/hooks → hooks/table}/useTablePagination.d.ts +0 -0
- /package/dist/{components/table/hooks → hooks/table}/useTablePagination.js +0 -0
- /package/dist/{components/table/hooks → hooks/table}/useTableSelection.d.ts +0 -0
- /package/dist/{components/table/hooks → hooks/table}/useTableSelection.js +0 -0
- /package/dist/{components/table/hooks → hooks/table}/useTableSorting.d.ts +0 -0
- /package/dist/{components/table/hooks → hooks/table}/useTableSorting.js +0 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import "./ListBox.css";
|
|
2
|
+
import { type Component, type JSX } from "solid-js";
|
|
3
|
+
import type { IComponentBaseProps } from "../types";
|
|
4
|
+
import { type ListBoxSelectionMode, type ListBoxVariant } from "./context";
|
|
5
|
+
export type ListBoxRootProps<T = unknown> = Omit<JSX.HTMLAttributes<HTMLDivElement>, "children" | "onChange"> & IComponentBaseProps & {
|
|
6
|
+
children?: JSX.Element | ((item: T) => JSX.Element);
|
|
7
|
+
items?: readonly T[];
|
|
8
|
+
renderEmptyState?: () => JSX.Element;
|
|
9
|
+
variant?: ListBoxVariant;
|
|
10
|
+
selectionMode?: ListBoxSelectionMode;
|
|
11
|
+
selectedKeys?: Iterable<string | number>;
|
|
12
|
+
defaultSelectedKeys?: Iterable<string | number>;
|
|
13
|
+
disabledKeys?: Iterable<string | number>;
|
|
14
|
+
disallowEmptySelection?: boolean;
|
|
15
|
+
onSelectionChange?: (keys: Set<string>) => void;
|
|
16
|
+
onAction?: (key: string) => void;
|
|
17
|
+
isDisabled?: boolean;
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
};
|
|
20
|
+
declare const ListBoxRoot: Component<ListBoxRootProps>;
|
|
21
|
+
export default ListBoxRoot;
|
|
22
|
+
export { ListBoxRoot };
|
|
23
|
+
export type { ListBoxRootProps as ListBoxProps, ListBoxSelectionMode, ListBoxVariant };
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__ from "solid-js/web";
|
|
2
|
+
import "./ListBox.css";
|
|
3
|
+
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__ from "solid-js";
|
|
4
|
+
import * as __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__ from "tailwind-merge";
|
|
5
|
+
import * as __WEBPACK_EXTERNAL_MODULE__context_js_80e2871f__ from "./context.js";
|
|
6
|
+
var _tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<div>");
|
|
7
|
+
const LIST_BOX_VARIANT_CLASS_MAP = {
|
|
8
|
+
default: "list-box--default",
|
|
9
|
+
danger: "list-box--danger"
|
|
10
|
+
};
|
|
11
|
+
const normalizeKeys = (keys)=>{
|
|
12
|
+
if (!keys) return new Set();
|
|
13
|
+
return new Set(Array.from(keys, (key)=>String(key)));
|
|
14
|
+
};
|
|
15
|
+
const sortItemsByDomOrder = (items)=>[
|
|
16
|
+
...items
|
|
17
|
+
].sort((a, b)=>{
|
|
18
|
+
if (a.ref === b.ref) return 0;
|
|
19
|
+
const relation = a.ref.compareDocumentPosition(b.ref);
|
|
20
|
+
if (relation & Node.DOCUMENT_POSITION_FOLLOWING) return -1;
|
|
21
|
+
if (relation & Node.DOCUMENT_POSITION_PRECEDING) return 1;
|
|
22
|
+
return 0;
|
|
23
|
+
});
|
|
24
|
+
const invokeEventHandler = (handler, event)=>{
|
|
25
|
+
if ("function" == typeof handler) return void handler(event);
|
|
26
|
+
if (Array.isArray(handler) && "function" == typeof handler[0]) handler[0](handler[1], event);
|
|
27
|
+
};
|
|
28
|
+
const ListBoxRoot = (props)=>{
|
|
29
|
+
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
30
|
+
"children",
|
|
31
|
+
"class",
|
|
32
|
+
"className",
|
|
33
|
+
"dataTheme",
|
|
34
|
+
"style",
|
|
35
|
+
"items",
|
|
36
|
+
"renderEmptyState",
|
|
37
|
+
"variant",
|
|
38
|
+
"selectionMode",
|
|
39
|
+
"selectedKeys",
|
|
40
|
+
"defaultSelectedKeys",
|
|
41
|
+
"disabledKeys",
|
|
42
|
+
"disallowEmptySelection",
|
|
43
|
+
"onSelectionChange",
|
|
44
|
+
"onAction",
|
|
45
|
+
"isDisabled",
|
|
46
|
+
"disabled",
|
|
47
|
+
"role",
|
|
48
|
+
"onKeyDown"
|
|
49
|
+
]);
|
|
50
|
+
const [internalSelectedKeys, setInternalSelectedKeys] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(normalizeKeys(local.defaultSelectedKeys));
|
|
51
|
+
const [focusedKey, setFocusedKey] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)();
|
|
52
|
+
const [registeredItems, setRegisteredItems] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)([]);
|
|
53
|
+
const variant = ()=>local.variant ?? "default";
|
|
54
|
+
const selectionMode = ()=>local.selectionMode ?? "none";
|
|
55
|
+
const isControlled = ()=>void 0 !== local.selectedKeys;
|
|
56
|
+
const isDisabled = ()=>Boolean(local.isDisabled) || Boolean(local.disabled);
|
|
57
|
+
const selectedKeys = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>isControlled() ? normalizeKeys(local.selectedKeys) : internalSelectedKeys());
|
|
58
|
+
const disabledKeys = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>normalizeKeys(local.disabledKeys));
|
|
59
|
+
const getEnabledItems = ()=>registeredItems().filter((item)=>!item.disabled && !disabledKeys().has(item.key) && !isDisabled());
|
|
60
|
+
const focusItem = (item)=>{
|
|
61
|
+
if (!item) return;
|
|
62
|
+
setFocusedKey(item.key);
|
|
63
|
+
item.ref.focus();
|
|
64
|
+
};
|
|
65
|
+
const focusBoundary = (target)=>{
|
|
66
|
+
const enabledItems = getEnabledItems();
|
|
67
|
+
if (!enabledItems.length) return;
|
|
68
|
+
if ("selected" === target) {
|
|
69
|
+
const selectedItem = enabledItems.find((item)=>selectedKeys().has(item.key));
|
|
70
|
+
focusItem(selectedItem ?? enabledItems[0]);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
focusItem("first" === target ? enabledItems[0] : enabledItems[enabledItems.length - 1]);
|
|
74
|
+
};
|
|
75
|
+
const focusNext = (direction)=>{
|
|
76
|
+
const enabledItems = getEnabledItems();
|
|
77
|
+
if (!enabledItems.length) return;
|
|
78
|
+
const activeElement = document.activeElement;
|
|
79
|
+
let currentIndex = enabledItems.findIndex((item)=>item.ref === activeElement);
|
|
80
|
+
if (currentIndex < 0 && focusedKey()) currentIndex = enabledItems.findIndex((item)=>item.key === focusedKey());
|
|
81
|
+
if (currentIndex < 0) return void focusBoundary(1 === direction ? "first" : "last");
|
|
82
|
+
const nextIndex = (currentIndex + direction + enabledItems.length) % enabledItems.length;
|
|
83
|
+
focusItem(enabledItems[nextIndex]);
|
|
84
|
+
};
|
|
85
|
+
const updateSelection = (nextKeys)=>{
|
|
86
|
+
if (!isControlled()) setInternalSelectedKeys(nextKeys);
|
|
87
|
+
local.onSelectionChange?.(nextKeys);
|
|
88
|
+
};
|
|
89
|
+
const activateKey = (key, event)=>{
|
|
90
|
+
if (event.defaultPrevented || isDisabled()) return;
|
|
91
|
+
if (disabledKeys().has(key)) return;
|
|
92
|
+
if ("none" === selectionMode()) return void local.onAction?.(key);
|
|
93
|
+
const current = selectedKeys();
|
|
94
|
+
if ("single" === selectionMode()) {
|
|
95
|
+
if (!(1 === current.size && current.has(key))) updateSelection(new Set([
|
|
96
|
+
key
|
|
97
|
+
]));
|
|
98
|
+
local.onAction?.(key);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const next = new Set(current);
|
|
102
|
+
if (next.has(key)) {
|
|
103
|
+
if (local.disallowEmptySelection && 1 === next.size) return void local.onAction?.(key);
|
|
104
|
+
next.delete(key);
|
|
105
|
+
} else next.add(key);
|
|
106
|
+
updateSelection(next);
|
|
107
|
+
local.onAction?.(key);
|
|
108
|
+
};
|
|
109
|
+
const registerItem = (item)=>{
|
|
110
|
+
setRegisteredItems((current)=>sortItemsByDomOrder([
|
|
111
|
+
...current.filter((entry)=>entry.key !== item.key),
|
|
112
|
+
item
|
|
113
|
+
]));
|
|
114
|
+
};
|
|
115
|
+
const unregisterItem = (key)=>{
|
|
116
|
+
setRegisteredItems((current)=>current.filter((item)=>item.key !== key));
|
|
117
|
+
if (focusedKey() === key) setFocusedKey(void 0);
|
|
118
|
+
};
|
|
119
|
+
const isItemDisabled = (key, localDisabled)=>Boolean(localDisabled) || disabledKeys().has(key) || isDisabled();
|
|
120
|
+
const getItemTabIndex = (key, localDisabled)=>{
|
|
121
|
+
if (isItemDisabled(key, localDisabled)) return -1;
|
|
122
|
+
if (focusedKey() === key) return 0;
|
|
123
|
+
if (!focusedKey()) {
|
|
124
|
+
const enabledItems = getEnabledItems();
|
|
125
|
+
if (!enabledItems.length) return -1;
|
|
126
|
+
const selectedItem = enabledItems.find((item)=>selectedKeys().has(item.key));
|
|
127
|
+
const fallback = selectedItem ?? enabledItems[0];
|
|
128
|
+
return fallback?.key === key ? 0 : -1;
|
|
129
|
+
}
|
|
130
|
+
return -1;
|
|
131
|
+
};
|
|
132
|
+
const handleKeyDown = (event)=>{
|
|
133
|
+
invokeEventHandler(local.onKeyDown, event);
|
|
134
|
+
if (event.defaultPrevented) return;
|
|
135
|
+
if (event.target !== event.currentTarget) return;
|
|
136
|
+
if ("ArrowDown" === event.key || "ArrowRight" === event.key) {
|
|
137
|
+
event.preventDefault();
|
|
138
|
+
focusNext(1);
|
|
139
|
+
}
|
|
140
|
+
if ("ArrowUp" === event.key || "ArrowLeft" === event.key) {
|
|
141
|
+
event.preventDefault();
|
|
142
|
+
focusNext(-1);
|
|
143
|
+
}
|
|
144
|
+
if ("Home" === event.key) {
|
|
145
|
+
event.preventDefault();
|
|
146
|
+
focusBoundary("first");
|
|
147
|
+
}
|
|
148
|
+
if ("End" === event.key) {
|
|
149
|
+
event.preventDefault();
|
|
150
|
+
focusBoundary("last");
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
const renderChildren = ()=>{
|
|
154
|
+
const isItemRenderer = "function" == typeof local.children && local.children.length > 0;
|
|
155
|
+
const resolvedStaticChildren = "function" == typeof local.children ? isItemRenderer ? null : local.children() : local.children ?? null;
|
|
156
|
+
if (local.items) {
|
|
157
|
+
if (0 === local.items.length) return local.renderEmptyState?.() ?? null;
|
|
158
|
+
if (isItemRenderer) {
|
|
159
|
+
const renderItem = local.children;
|
|
160
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.For, {
|
|
161
|
+
get each () {
|
|
162
|
+
return local.items;
|
|
163
|
+
},
|
|
164
|
+
children: (item)=>renderItem(item)
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return resolvedStaticChildren;
|
|
169
|
+
};
|
|
170
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE__context_js_80e2871f__.ListBoxContext.Provider, {
|
|
171
|
+
value: {
|
|
172
|
+
variant,
|
|
173
|
+
selectionMode,
|
|
174
|
+
selectedKeys,
|
|
175
|
+
disabledKeys,
|
|
176
|
+
isDisabled,
|
|
177
|
+
focusedKey,
|
|
178
|
+
isSelected: (key)=>selectedKeys().has(key),
|
|
179
|
+
isItemDisabled,
|
|
180
|
+
getItemTabIndex,
|
|
181
|
+
registerItem,
|
|
182
|
+
unregisterItem,
|
|
183
|
+
activateKey,
|
|
184
|
+
setFocusedKey,
|
|
185
|
+
focusNext,
|
|
186
|
+
focusBoundary
|
|
187
|
+
},
|
|
188
|
+
get children () {
|
|
189
|
+
var _el$ = _tmpl$();
|
|
190
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
191
|
+
get role () {
|
|
192
|
+
return local.role ?? "listbox";
|
|
193
|
+
},
|
|
194
|
+
get ["aria-multiselectable"] () {
|
|
195
|
+
return "multiple" === selectionMode() ? "true" : void 0;
|
|
196
|
+
},
|
|
197
|
+
get ["aria-disabled"] () {
|
|
198
|
+
return isDisabled() ? "true" : void 0;
|
|
199
|
+
},
|
|
200
|
+
"data-slot": "listbox",
|
|
201
|
+
get ["data-theme"] () {
|
|
202
|
+
return local.dataTheme;
|
|
203
|
+
},
|
|
204
|
+
get ["data-selection-mode"] () {
|
|
205
|
+
return selectionMode();
|
|
206
|
+
},
|
|
207
|
+
get ["data-disabled"] () {
|
|
208
|
+
return isDisabled() ? "true" : "false";
|
|
209
|
+
},
|
|
210
|
+
get ["class"] () {
|
|
211
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("list-box", LIST_BOX_VARIANT_CLASS_MAP[variant()], local.class, local.className);
|
|
212
|
+
},
|
|
213
|
+
get style () {
|
|
214
|
+
return local.style;
|
|
215
|
+
},
|
|
216
|
+
onKeyDown: handleKeyDown
|
|
217
|
+
}), false, true);
|
|
218
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$, renderChildren);
|
|
219
|
+
return _el$;
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
};
|
|
223
|
+
const ListBox = ListBoxRoot;
|
|
224
|
+
export { ListBoxRoot, ListBox as default };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type Component, type JSX, type ParentComponent } from "solid-js";
|
|
2
|
+
import type { IComponentBaseProps } from "../types";
|
|
3
|
+
import { type ListBoxVariant } from "./context";
|
|
4
|
+
type ListBoxItemRenderProps = {
|
|
5
|
+
isSelected: boolean;
|
|
6
|
+
isFocused: boolean;
|
|
7
|
+
isDisabled: boolean;
|
|
8
|
+
};
|
|
9
|
+
export type ListBoxItemRootProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, "children"> & IComponentBaseProps & {
|
|
10
|
+
id?: string | number;
|
|
11
|
+
textValue?: string;
|
|
12
|
+
variant?: ListBoxVariant;
|
|
13
|
+
isDisabled?: boolean;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
children?: JSX.Element | ((props: ListBoxItemRenderProps) => JSX.Element);
|
|
16
|
+
};
|
|
17
|
+
export type ListBoxItemIndicatorProps = Omit<JSX.HTMLAttributes<HTMLSpanElement>, "children"> & IComponentBaseProps & {
|
|
18
|
+
children?: JSX.Element | ((props: ListBoxItemRenderProps) => JSX.Element);
|
|
19
|
+
};
|
|
20
|
+
declare const ListBoxItemRoot: ParentComponent<ListBoxItemRootProps>;
|
|
21
|
+
declare const ListBoxItemIndicator: Component<ListBoxItemIndicatorProps>;
|
|
22
|
+
declare const ListBoxItem: ParentComponent<ListBoxItemRootProps> & {
|
|
23
|
+
Root: ParentComponent<ListBoxItemRootProps>;
|
|
24
|
+
Indicator: Component<ListBoxItemIndicatorProps>;
|
|
25
|
+
};
|
|
26
|
+
export default ListBoxItem;
|
|
27
|
+
export { ListBoxItem, ListBoxItemRoot, ListBoxItemIndicator };
|
|
28
|
+
export type { ListBoxItemRootProps as ListBoxItemProps, ListBoxItemRenderProps, ListBoxVariant, };
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__ from "solid-js/web";
|
|
2
|
+
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__ from "solid-js";
|
|
3
|
+
import * as __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__ from "tailwind-merge";
|
|
4
|
+
import * as __WEBPACK_EXTERNAL_MODULE__context_js_80e2871f__ from "./context.js";
|
|
5
|
+
var _tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<div>"), _tmpl$2 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<span>"), _tmpl$3 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<svg aria-hidden=true data-slot=listbox-item-indicator--checkmark fill=none role=presentation stroke=currentColor stroke-dasharray=22 stroke-linecap=round stroke-linejoin=round stroke-width=2 viewBox="0 0 17 18"><polyline points="1 9 7 14 15 4">');
|
|
6
|
+
const LIST_BOX_ITEM_VARIANT_CLASS_MAP = {
|
|
7
|
+
default: "list-box-item--default",
|
|
8
|
+
danger: "list-box-item--danger"
|
|
9
|
+
};
|
|
10
|
+
const invokeEventHandler = (handler, event)=>{
|
|
11
|
+
if ("function" == typeof handler) return void handler(event);
|
|
12
|
+
if (Array.isArray(handler) && "function" == typeof handler[0]) handler[0](handler[1], event);
|
|
13
|
+
};
|
|
14
|
+
const toSlug = (value)=>value.trim().toLowerCase().replace(/[^\w\s-]/g, "").replace(/\s+/g, "-");
|
|
15
|
+
const extractTextValue = (nodes)=>{
|
|
16
|
+
for (const node of nodes){
|
|
17
|
+
if ("string" == typeof node && node.trim().length > 0) return node.trim();
|
|
18
|
+
if ("number" == typeof node) return String(node);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const ListBoxItemContext = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createContext)();
|
|
22
|
+
const ListBoxItemRoot = (props)=>{
|
|
23
|
+
const listBox = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.useContext)(__WEBPACK_EXTERNAL_MODULE__context_js_80e2871f__.ListBoxContext);
|
|
24
|
+
const fallbackKey = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createUniqueId)();
|
|
25
|
+
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
26
|
+
"children",
|
|
27
|
+
"class",
|
|
28
|
+
"className",
|
|
29
|
+
"dataTheme",
|
|
30
|
+
"style",
|
|
31
|
+
"id",
|
|
32
|
+
"textValue",
|
|
33
|
+
"variant",
|
|
34
|
+
"isDisabled",
|
|
35
|
+
"disabled",
|
|
36
|
+
"onClick",
|
|
37
|
+
"onKeyDown",
|
|
38
|
+
"onFocus",
|
|
39
|
+
"onBlur",
|
|
40
|
+
"ref",
|
|
41
|
+
"tabIndex",
|
|
42
|
+
"role"
|
|
43
|
+
]);
|
|
44
|
+
let itemRef;
|
|
45
|
+
const key = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>{
|
|
46
|
+
if (null != local.id) return String(local.id);
|
|
47
|
+
if (local.textValue) return toSlug(local.textValue);
|
|
48
|
+
const staticChildren = "function" == typeof local.children ? [] : [
|
|
49
|
+
local.children
|
|
50
|
+
];
|
|
51
|
+
const textValue = extractTextValue(staticChildren);
|
|
52
|
+
if (textValue) return toSlug(textValue);
|
|
53
|
+
return fallbackKey;
|
|
54
|
+
});
|
|
55
|
+
const variant = ()=>local.variant ?? listBox?.variant() ?? "default";
|
|
56
|
+
const isSelectable = ()=>(listBox?.selectionMode() ?? "none") !== "none";
|
|
57
|
+
const isSelected = ()=>listBox?.isSelected(key()) ?? false;
|
|
58
|
+
const isFocused = ()=>listBox?.focusedKey() === key();
|
|
59
|
+
const isDisabled = ()=>listBox?.isItemDisabled(key(), Boolean(local.isDisabled) || Boolean(local.disabled)) ?? (Boolean(local.isDisabled) || Boolean(local.disabled));
|
|
60
|
+
const renderState = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>({
|
|
61
|
+
isSelected: isSelected(),
|
|
62
|
+
isFocused: isFocused(),
|
|
63
|
+
isDisabled: isDisabled()
|
|
64
|
+
}));
|
|
65
|
+
const resolvedTabIndex = ()=>{
|
|
66
|
+
if (void 0 !== local.tabIndex) return local.tabIndex;
|
|
67
|
+
if (!listBox) return isDisabled() ? -1 : 0;
|
|
68
|
+
return listBox.getItemTabIndex(key(), isDisabled());
|
|
69
|
+
};
|
|
70
|
+
const handleClick = (event)=>{
|
|
71
|
+
invokeEventHandler(local.onClick, event);
|
|
72
|
+
if (event.defaultPrevented || isDisabled()) return;
|
|
73
|
+
listBox?.activateKey(key(), event);
|
|
74
|
+
};
|
|
75
|
+
const handleKeyDown = (event)=>{
|
|
76
|
+
invokeEventHandler(local.onKeyDown, event);
|
|
77
|
+
if (event.defaultPrevented || isDisabled()) return;
|
|
78
|
+
if ("ArrowDown" === event.key || "ArrowRight" === event.key) {
|
|
79
|
+
event.preventDefault();
|
|
80
|
+
listBox?.focusNext(1);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if ("ArrowUp" === event.key || "ArrowLeft" === event.key) {
|
|
84
|
+
event.preventDefault();
|
|
85
|
+
listBox?.focusNext(-1);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if ("Home" === event.key) {
|
|
89
|
+
event.preventDefault();
|
|
90
|
+
listBox?.focusBoundary("first");
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
if ("End" === event.key) {
|
|
94
|
+
event.preventDefault();
|
|
95
|
+
listBox?.focusBoundary("last");
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if ("Enter" === event.key || " " === event.key) {
|
|
99
|
+
event.preventDefault();
|
|
100
|
+
listBox?.activateKey(key(), event);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
const handleFocus = (event)=>{
|
|
104
|
+
invokeEventHandler(local.onFocus, event);
|
|
105
|
+
if (event.defaultPrevented) return;
|
|
106
|
+
listBox?.setFocusedKey(key());
|
|
107
|
+
};
|
|
108
|
+
const handleBlur = (event)=>{
|
|
109
|
+
invokeEventHandler(local.onBlur, event);
|
|
110
|
+
if (event.defaultPrevented) return;
|
|
111
|
+
if (listBox?.focusedKey() === key()) listBox.setFocusedKey(void 0);
|
|
112
|
+
};
|
|
113
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createEffect)(()=>{
|
|
114
|
+
if (!listBox || !itemRef) return;
|
|
115
|
+
listBox.registerItem({
|
|
116
|
+
key: key(),
|
|
117
|
+
disabled: Boolean(local.isDisabled) || Boolean(local.disabled),
|
|
118
|
+
ref: itemRef
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.onCleanup)(()=>{
|
|
122
|
+
if (!listBox) return;
|
|
123
|
+
listBox.unregisterItem(key());
|
|
124
|
+
});
|
|
125
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(ListBoxItemContext.Provider, {
|
|
126
|
+
value: {
|
|
127
|
+
renderState
|
|
128
|
+
},
|
|
129
|
+
get children () {
|
|
130
|
+
var _el$ = _tmpl$();
|
|
131
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.use)((node)=>{
|
|
132
|
+
itemRef = node;
|
|
133
|
+
if ("function" == typeof local.ref) local.ref(node);
|
|
134
|
+
}, _el$);
|
|
135
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
136
|
+
get role () {
|
|
137
|
+
return local.role ?? "option";
|
|
138
|
+
},
|
|
139
|
+
get tabIndex () {
|
|
140
|
+
return resolvedTabIndex();
|
|
141
|
+
},
|
|
142
|
+
get ["aria-selected"] () {
|
|
143
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.memo)(()=>!!isSelectable())() ? isSelected() ? "true" : "false" : void 0;
|
|
144
|
+
},
|
|
145
|
+
get ["aria-disabled"] () {
|
|
146
|
+
return isDisabled() ? "true" : void 0;
|
|
147
|
+
},
|
|
148
|
+
"data-slot": "listbox-item",
|
|
149
|
+
get ["data-theme"] () {
|
|
150
|
+
return local.dataTheme;
|
|
151
|
+
},
|
|
152
|
+
get ["data-disabled"] () {
|
|
153
|
+
return isDisabled() ? "true" : "false";
|
|
154
|
+
},
|
|
155
|
+
get ["data-selected"] () {
|
|
156
|
+
return isSelected() ? "true" : "false";
|
|
157
|
+
},
|
|
158
|
+
get ["data-focus"] () {
|
|
159
|
+
return isFocused() ? "true" : "false";
|
|
160
|
+
},
|
|
161
|
+
get ["data-key"] () {
|
|
162
|
+
return key();
|
|
163
|
+
},
|
|
164
|
+
get ["class"] () {
|
|
165
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("list-box-item", LIST_BOX_ITEM_VARIANT_CLASS_MAP[variant()], local.class, local.className);
|
|
166
|
+
},
|
|
167
|
+
get style () {
|
|
168
|
+
return local.style;
|
|
169
|
+
},
|
|
170
|
+
onClick: handleClick,
|
|
171
|
+
onKeyDown: handleKeyDown,
|
|
172
|
+
onFocus: handleFocus,
|
|
173
|
+
onBlur: handleBlur
|
|
174
|
+
}), false, true);
|
|
175
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$, (()=>{
|
|
176
|
+
var _c$ = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.memo)(()=>"function" == typeof local.children);
|
|
177
|
+
return ()=>_c$() ? local.children(renderState()) : local.children;
|
|
178
|
+
})());
|
|
179
|
+
return _el$;
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
};
|
|
183
|
+
const ListBoxItemIndicator = (props)=>{
|
|
184
|
+
const context = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.useContext)(ListBoxItemContext);
|
|
185
|
+
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
186
|
+
"children",
|
|
187
|
+
"class",
|
|
188
|
+
"className",
|
|
189
|
+
"dataTheme",
|
|
190
|
+
"style"
|
|
191
|
+
]);
|
|
192
|
+
const renderState = ()=>context?.renderState() ?? {
|
|
193
|
+
isSelected: false,
|
|
194
|
+
isFocused: false,
|
|
195
|
+
isDisabled: false
|
|
196
|
+
};
|
|
197
|
+
return (()=>{
|
|
198
|
+
var _el$2 = _tmpl$2();
|
|
199
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$2, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
200
|
+
"aria-hidden": "true",
|
|
201
|
+
"data-slot": "listbox-item-indicator",
|
|
202
|
+
get ["data-theme"] () {
|
|
203
|
+
return local.dataTheme;
|
|
204
|
+
},
|
|
205
|
+
get ["data-visible"] () {
|
|
206
|
+
return renderState().isSelected ? "true" : void 0;
|
|
207
|
+
},
|
|
208
|
+
get ["class"] () {
|
|
209
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("list-box-item__indicator", local.class, local.className);
|
|
210
|
+
},
|
|
211
|
+
get style () {
|
|
212
|
+
return local.style;
|
|
213
|
+
}
|
|
214
|
+
}), false, true);
|
|
215
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$2, (()=>{
|
|
216
|
+
var _c$2 = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.memo)(()=>"function" == typeof local.children);
|
|
217
|
+
return ()=>_c$2() ? local.children(renderState()) : (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.memo)(()=>!!local.children)() ? local.children : (()=>{
|
|
218
|
+
var _el$3 = _tmpl$3();
|
|
219
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.effect)(()=>(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.setAttribute)(_el$3, "stroke-dashoffset", String(renderState().isSelected ? 44 : 66)));
|
|
220
|
+
return _el$3;
|
|
221
|
+
})();
|
|
222
|
+
})());
|
|
223
|
+
return _el$2;
|
|
224
|
+
})();
|
|
225
|
+
};
|
|
226
|
+
const ListBoxItem = Object.assign(ListBoxItemRoot, {
|
|
227
|
+
Root: ListBoxItemRoot,
|
|
228
|
+
Indicator: ListBoxItemIndicator
|
|
229
|
+
});
|
|
230
|
+
const list_box_ListBoxItem = ListBoxItem;
|
|
231
|
+
export { ListBoxItem, ListBoxItemIndicator, ListBoxItemRoot, list_box_ListBoxItem as default };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type Component, type JSX } from "solid-js";
|
|
2
|
+
import type { IComponentBaseProps } from "../types";
|
|
3
|
+
export type ListBoxSectionRootProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, "children"> & IComponentBaseProps & {
|
|
4
|
+
children?: JSX.Element;
|
|
5
|
+
title?: JSX.Element;
|
|
6
|
+
};
|
|
7
|
+
declare const ListBoxSectionRoot: Component<ListBoxSectionRootProps>;
|
|
8
|
+
declare const ListBoxSection: Component<ListBoxSectionRootProps>;
|
|
9
|
+
export default ListBoxSection;
|
|
10
|
+
export { ListBoxSection, ListBoxSectionRoot };
|
|
11
|
+
export type { ListBoxSectionRootProps as ListBoxSectionProps };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__ from "solid-js/web";
|
|
2
|
+
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__ from "solid-js";
|
|
3
|
+
import * as __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__ from "tailwind-merge";
|
|
4
|
+
var _tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<span class=list-box-section__title data-slot=heading>"), _tmpl$2 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<div>");
|
|
5
|
+
const ListBoxSectionRoot = (props)=>{
|
|
6
|
+
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
7
|
+
"children",
|
|
8
|
+
"class",
|
|
9
|
+
"className",
|
|
10
|
+
"dataTheme",
|
|
11
|
+
"style",
|
|
12
|
+
"title",
|
|
13
|
+
"role"
|
|
14
|
+
]);
|
|
15
|
+
return (()=>{
|
|
16
|
+
var _el$ = _tmpl$2();
|
|
17
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
18
|
+
get role () {
|
|
19
|
+
return local.role ?? "group";
|
|
20
|
+
},
|
|
21
|
+
"data-slot": "listbox-section",
|
|
22
|
+
get ["data-theme"] () {
|
|
23
|
+
return local.dataTheme;
|
|
24
|
+
},
|
|
25
|
+
get ["class"] () {
|
|
26
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("list-box-section", local.class, local.className);
|
|
27
|
+
},
|
|
28
|
+
get style () {
|
|
29
|
+
return local.style;
|
|
30
|
+
}
|
|
31
|
+
}), false, true);
|
|
32
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.Show, {
|
|
33
|
+
get when () {
|
|
34
|
+
return local.title;
|
|
35
|
+
},
|
|
36
|
+
get children () {
|
|
37
|
+
var _el$2 = _tmpl$();
|
|
38
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$2, ()=>local.title);
|
|
39
|
+
return _el$2;
|
|
40
|
+
}
|
|
41
|
+
}), null);
|
|
42
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$, ()=>local.children, null);
|
|
43
|
+
return _el$;
|
|
44
|
+
})();
|
|
45
|
+
};
|
|
46
|
+
const ListBoxSection = ListBoxSectionRoot;
|
|
47
|
+
const list_box_ListBoxSection = ListBoxSection;
|
|
48
|
+
export { ListBoxSection, ListBoxSectionRoot, list_box_ListBoxSection as default };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type Accessor } from "solid-js";
|
|
2
|
+
export type ListBoxVariant = "default" | "danger";
|
|
3
|
+
export type ListBoxSelectionMode = "none" | "single" | "multiple";
|
|
4
|
+
export type ListBoxItemRecord = {
|
|
5
|
+
key: string;
|
|
6
|
+
disabled: boolean;
|
|
7
|
+
ref: HTMLDivElement;
|
|
8
|
+
};
|
|
9
|
+
export type ListBoxFocusTarget = "first" | "last" | "selected";
|
|
10
|
+
export type ListBoxContextValue = {
|
|
11
|
+
variant: Accessor<ListBoxVariant>;
|
|
12
|
+
selectionMode: Accessor<ListBoxSelectionMode>;
|
|
13
|
+
selectedKeys: Accessor<Set<string>>;
|
|
14
|
+
disabledKeys: Accessor<Set<string>>;
|
|
15
|
+
isDisabled: Accessor<boolean>;
|
|
16
|
+
focusedKey: Accessor<string | undefined>;
|
|
17
|
+
isSelected: (key: string) => boolean;
|
|
18
|
+
isItemDisabled: (key: string, localDisabled?: boolean) => boolean;
|
|
19
|
+
getItemTabIndex: (key: string, localDisabled?: boolean) => number;
|
|
20
|
+
registerItem: (item: ListBoxItemRecord) => void;
|
|
21
|
+
unregisterItem: (key: string) => void;
|
|
22
|
+
activateKey: (key: string, event: Event) => void;
|
|
23
|
+
setFocusedKey: (key: string | undefined) => void;
|
|
24
|
+
focusNext: (direction: 1 | -1) => void;
|
|
25
|
+
focusBoundary: (target: ListBoxFocusTarget) => void;
|
|
26
|
+
};
|
|
27
|
+
export declare const ListBoxContext: import("solid-js").Context<ListBoxContextValue | undefined>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import ListBoxRoot from "./ListBox";
|
|
2
|
+
import ListBoxItem, { ListBoxItemIndicator, ListBoxItemRoot, type ListBoxItemIndicatorProps, type ListBoxItemProps, type ListBoxItemRenderProps, type ListBoxItemRootProps } from "./ListBoxItem";
|
|
3
|
+
import ListBoxSection, { ListBoxSectionRoot, type ListBoxSectionProps, type ListBoxSectionRootProps } from "./ListBoxSection";
|
|
4
|
+
declare const ListBox: import("solid-js").Component<import("./ListBox").ListBoxRootProps<unknown>> & {
|
|
5
|
+
Root: import("solid-js").Component<import("./ListBox").ListBoxRootProps<unknown>>;
|
|
6
|
+
Item: import("solid-js").ParentComponent<ListBoxItemProps> & {
|
|
7
|
+
Root: import("solid-js").ParentComponent<ListBoxItemProps>;
|
|
8
|
+
Indicator: import("solid-js").Component<ListBoxItemIndicatorProps>;
|
|
9
|
+
};
|
|
10
|
+
ItemIndicator: import("solid-js").Component<ListBoxItemIndicatorProps>;
|
|
11
|
+
Section: import("solid-js").Component<ListBoxSectionProps>;
|
|
12
|
+
};
|
|
13
|
+
export default ListBox;
|
|
14
|
+
export { ListBox, ListBoxRoot, ListBoxItem, ListBoxItemRoot, ListBoxItemIndicator, ListBoxSection, ListBoxSectionRoot, };
|
|
15
|
+
export type { ListBoxProps, ListBoxRootProps } from "./ListBox";
|
|
16
|
+
export type { ListBoxSelectionMode, ListBoxVariant } from "./context";
|
|
17
|
+
export type { ListBoxItemProps, ListBoxItemRootProps, ListBoxItemIndicatorProps, ListBoxItemRenderProps, ListBoxSectionProps, ListBoxSectionRootProps, };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as __WEBPACK_EXTERNAL_MODULE__ListBox_js_d763b220__ from "./ListBox.js";
|
|
2
|
+
import * as __WEBPACK_EXTERNAL_MODULE__ListBoxItem_js_66ab68ed__ from "./ListBoxItem.js";
|
|
3
|
+
import * as __WEBPACK_EXTERNAL_MODULE__ListBoxSection_js_b3bb3271__ from "./ListBoxSection.js";
|
|
4
|
+
const ListBox = Object.assign(__WEBPACK_EXTERNAL_MODULE__ListBox_js_d763b220__["default"], {
|
|
5
|
+
Root: __WEBPACK_EXTERNAL_MODULE__ListBox_js_d763b220__["default"],
|
|
6
|
+
Item: __WEBPACK_EXTERNAL_MODULE__ListBoxItem_js_66ab68ed__["default"],
|
|
7
|
+
ItemIndicator: __WEBPACK_EXTERNAL_MODULE__ListBoxItem_js_66ab68ed__.ListBoxItemIndicator,
|
|
8
|
+
Section: __WEBPACK_EXTERNAL_MODULE__ListBoxSection_js_b3bb3271__["default"]
|
|
9
|
+
});
|
|
10
|
+
const list_box = ListBox;
|
|
11
|
+
var __webpack_exports__ListBoxItem = __WEBPACK_EXTERNAL_MODULE__ListBoxItem_js_66ab68ed__["default"];
|
|
12
|
+
var __webpack_exports__ListBoxItemIndicator = __WEBPACK_EXTERNAL_MODULE__ListBoxItem_js_66ab68ed__.ListBoxItemIndicator;
|
|
13
|
+
var __webpack_exports__ListBoxItemRoot = __WEBPACK_EXTERNAL_MODULE__ListBoxItem_js_66ab68ed__.ListBoxItemRoot;
|
|
14
|
+
var __webpack_exports__ListBoxRoot = __WEBPACK_EXTERNAL_MODULE__ListBox_js_d763b220__["default"];
|
|
15
|
+
var __webpack_exports__ListBoxSection = __WEBPACK_EXTERNAL_MODULE__ListBoxSection_js_b3bb3271__["default"];
|
|
16
|
+
var __webpack_exports__ListBoxSectionRoot = __WEBPACK_EXTERNAL_MODULE__ListBoxSection_js_b3bb3271__.ListBoxSectionRoot;
|
|
17
|
+
export { ListBox, list_box as default, __webpack_exports__ListBoxItem as ListBoxItem, __webpack_exports__ListBoxItemIndicator as ListBoxItemIndicator, __webpack_exports__ListBoxItemRoot as ListBoxItemRoot, __webpack_exports__ListBoxRoot as ListBoxRoot, __webpack_exports__ListBoxSection as ListBoxSection, __webpack_exports__ListBoxSectionRoot as ListBoxSectionRoot };
|