@pathscale/ui 1.1.34 → 1.1.36
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/breadcrumbs/Breadcrumbs.classes.d.ts +8 -0
- package/dist/components/breadcrumbs/Breadcrumbs.classes.js +13 -0
- package/dist/components/breadcrumbs/Breadcrumbs.js +8 -3
- package/dist/components/button/Button.classes.d.ts +27 -0
- package/dist/components/button/Button.classes.js +28 -0
- package/dist/components/button/Button.css +10 -1
- package/dist/components/button/Button.d.ts +6 -3
- package/dist/components/button/Button.js +37 -21
- package/dist/components/button-group/ButtonGroup.classes.d.ts +15 -0
- package/dist/components/button-group/ButtonGroup.classes.js +16 -0
- 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 +88 -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.classes.d.ts +24 -0
- package/dist/components/card/Card.classes.js +25 -0
- package/dist/components/card/Card.css +110 -0
- package/dist/components/card/Card.d.ts +26 -26
- package/dist/components/card/Card.js +126 -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.classes.d.ts +11 -0
- package/dist/components/checkbox-group/CheckboxGroup.classes.js +12 -0
- 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 +94 -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.classes.d.ts +11 -0
- package/dist/components/close-button/CloseButton.classes.js +12 -0
- 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.classes.d.ts +42 -0
- package/dist/components/combo-box/ComboBox.classes.js +43 -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 +725 -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.classes.d.ts +37 -0
- package/dist/components/date-field/DateField.classes.js +38 -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 +334 -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.classes.d.ts +3 -0
- package/dist/components/description/Description.classes.js +4 -0
- package/dist/components/description/Description.css +10 -0
- package/dist/components/description/Description.d.ts +11 -0
- package/dist/components/description/Description.js +41 -0
- 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.classes.d.ts +3 -0
- package/dist/components/error-message/ErrorMessage.classes.js +4 -0
- 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 +41 -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.classes.d.ts +3 -0
- package/dist/components/field-error/FieldError.classes.js +4 -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 +70 -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.classes.d.ts +14 -0
- package/dist/components/fieldset/Fieldset.classes.js +15 -0
- package/dist/components/fieldset/Fieldset.css +30 -0
- package/dist/components/fieldset/Fieldset.d.ts +22 -9
- package/dist/components/fieldset/Fieldset.js +89 -44
- package/dist/components/fieldset/index.d.ts +1 -2
- package/dist/components/fieldset/index.js +7 -2
- package/dist/components/form/Form.classes.d.ts +3 -0
- package/dist/components/form/Form.classes.js +4 -0
- package/dist/components/form/Form.css +5 -0
- package/dist/components/form/Form.d.ts +10 -16
- package/dist/components/form/Form.js +34 -16
- package/dist/components/form/index.d.ts +1 -4
- package/dist/components/form/index.js +3 -4
- package/dist/components/header/Header.classes.d.ts +3 -0
- package/dist/components/header/Header.classes.js +4 -0
- package/dist/components/header/Header.css +13 -0
- package/dist/components/header/Header.d.ts +9 -0
- package/dist/components/{form/Label.js → header/Header.js} +18 -14
- 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.classes.d.ts +21 -0
- package/dist/components/input-group/InputGroup.classes.js +22 -0
- 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 +224 -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.classes.d.ts +23 -0
- package/dist/components/input-otp/InputOTP.classes.js +24 -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.classes.d.ts +8 -0
- package/dist/components/label/Label.classes.js +9 -0
- package/dist/components/label/Label.css +30 -0
- package/dist/components/label/Label.d.ts +17 -0
- package/dist/components/label/Label.js +60 -0
- package/dist/components/label/index.d.ts +1 -0
- package/dist/components/label/index.js +5 -0
- package/dist/components/list-box/ListBox.classes.d.ts +23 -0
- package/dist/components/list-box/ListBox.classes.js +24 -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 +221 -0
- package/dist/components/list-box/ListBoxItem.d.ts +28 -0
- package/dist/components/list-box/ListBoxItem.js +228 -0
- package/dist/components/list-box/ListBoxSection.d.ts +11 -0
- package/dist/components/list-box/ListBoxSection.js +50 -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.classes.d.ts +20 -0
- package/dist/components/menu/Menu.classes.js +21 -0
- package/dist/components/menu/Menu.css +199 -0
- package/dist/components/menu/Menu.d.ts +32 -20
- package/dist/components/menu/Menu.js +214 -39
- package/dist/components/menu/MenuItem.d.ts +35 -5
- package/dist/components/menu/MenuItem.js +267 -19
- package/dist/components/menu/MenuSection.d.ts +11 -0
- package/dist/components/menu/MenuSection.js +50 -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/navbar/Navbar.classes.d.ts +37 -0
- package/dist/components/navbar/Navbar.classes.js +41 -0
- package/dist/components/navbar/Navbar.js +2 -1
- package/dist/components/navbar/NavbarRow.js +3 -14
- package/dist/components/navbar/NavbarSection.js +2 -6
- package/dist/components/navbar/NavbarStack.js +2 -5
- package/dist/components/number-field/NumberField.classes.d.ts +27 -0
- package/dist/components/number-field/NumberField.classes.js +28 -0
- 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 +347 -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.classes.d.ts +27 -0
- package/dist/components/search-field/SearchField.classes.js +28 -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 +300 -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.classes.d.ts +12 -0
- package/dist/components/separator/Separator.classes.js +13 -0
- package/dist/components/separator/Separator.css +35 -0
- package/dist/components/separator/Separator.d.ts +12 -0
- package/dist/components/separator/Separator.js +49 -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.classes.d.ts +9 -0
- package/dist/components/surface/Surface.classes.js +10 -0
- package/dist/components/surface/Surface.css +37 -0
- package/dist/components/surface/Surface.d.ts +12 -0
- package/dist/components/{menu/MenuDetails.js → surface/Surface.js} +19 -20
- 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.classes.d.ts +20 -0
- package/dist/components/tag/Tag.classes.js +21 -0
- package/dist/components/tag/Tag.css +121 -0
- package/dist/components/tag/Tag.d.ts +33 -0
- package/dist/components/tag/Tag.js +235 -0
- package/dist/components/tag/index.d.ts +1 -0
- package/dist/components/tag/index.js +6 -0
- package/dist/components/tag-group/TagGroup.classes.d.ts +8 -0
- package/dist/components/tag-group/TagGroup.classes.js +9 -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 +178 -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.classes.d.ts +3 -0
- package/dist/components/text/Text.classes.js +4 -0
- package/dist/components/text/Text.css +66 -0
- package/dist/components/text/Text.d.ts +17 -0
- package/dist/components/text/Text.js +47 -0
- package/dist/components/text/index.d.ts +1 -0
- package/dist/components/text/index.js +5 -0
- package/dist/components/text-area/TextArea.classes.d.ts +10 -0
- package/dist/components/text-area/TextArea.classes.js +11 -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 +61 -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.classes.d.ts +10 -0
- package/dist/components/text-field/TextField.classes.js +11 -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 +82 -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.classes.d.ts +37 -0
- package/dist/components/time-field/TimeField.classes.js +38 -0
- 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 +334 -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
|
@@ -1,51 +1,226 @@
|
|
|
1
1
|
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__ from "solid-js/web";
|
|
2
|
-
import "./
|
|
2
|
+
import "./Menu.css";
|
|
3
3
|
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__ from "solid-js";
|
|
4
4
|
import * as __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__ from "tailwind-merge";
|
|
5
|
-
import * as
|
|
6
|
-
import * as
|
|
5
|
+
import * as __WEBPACK_EXTERNAL_MODULE__Menu_classes_js_2247f1e5__ from "./Menu.classes.js";
|
|
6
|
+
import * as __WEBPACK_EXTERNAL_MODULE__context_js_80e2871f__ from "./context.js";
|
|
7
7
|
import * as __WEBPACK_EXTERNAL_MODULE__MenuItem_js_0945051f__ from "./MenuItem.js";
|
|
8
|
-
import * as
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
import * as __WEBPACK_EXTERNAL_MODULE__MenuSection_js_5f9fc1a1__ from "./MenuSection.js";
|
|
9
|
+
var _tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<div>");
|
|
10
|
+
const normalizeKeys = (keys)=>{
|
|
11
|
+
if (!keys) return new Set();
|
|
12
|
+
return new Set(Array.from(keys, (key)=>String(key)));
|
|
13
|
+
};
|
|
14
|
+
const sortItemsByDomOrder = (items)=>[
|
|
15
|
+
...items
|
|
16
|
+
].sort((a, b)=>{
|
|
17
|
+
if (a.ref === b.ref) return 0;
|
|
18
|
+
const relation = a.ref.compareDocumentPosition(b.ref);
|
|
19
|
+
if (relation & Node.DOCUMENT_POSITION_FOLLOWING) return -1;
|
|
20
|
+
if (relation & Node.DOCUMENT_POSITION_PRECEDING) return 1;
|
|
21
|
+
return 0;
|
|
22
|
+
});
|
|
23
|
+
const invokeEventHandler = (handler, event)=>{
|
|
24
|
+
if ("function" == typeof handler) return void handler(event);
|
|
25
|
+
if (Array.isArray(handler) && "function" == typeof handler[0]) handler[0](handler[1], event);
|
|
26
|
+
};
|
|
27
|
+
const MenuRoot = (props)=>{
|
|
12
28
|
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
13
|
-
"
|
|
14
|
-
"horizontal",
|
|
15
|
-
"vertical",
|
|
16
|
-
"size",
|
|
29
|
+
"children",
|
|
17
30
|
"class",
|
|
18
31
|
"className",
|
|
19
|
-
"dataTheme"
|
|
32
|
+
"dataTheme",
|
|
33
|
+
"style",
|
|
34
|
+
"items",
|
|
35
|
+
"renderEmptyState",
|
|
36
|
+
"selectionMode",
|
|
37
|
+
"selectedKeys",
|
|
38
|
+
"defaultSelectedKeys",
|
|
39
|
+
"disabledKeys",
|
|
40
|
+
"disallowEmptySelection",
|
|
41
|
+
"onSelectionChange",
|
|
42
|
+
"onAction",
|
|
43
|
+
"isDisabled",
|
|
44
|
+
"disabled",
|
|
45
|
+
"role",
|
|
46
|
+
"onKeyDown"
|
|
20
47
|
]);
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
48
|
+
const [internalSelectedKeys, setInternalSelectedKeys] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(normalizeKeys(local.defaultSelectedKeys));
|
|
49
|
+
const [focusedKey, setFocusedKey] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)();
|
|
50
|
+
const [registeredItems, setRegisteredItems] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)([]);
|
|
51
|
+
const selectionMode = ()=>local.selectionMode ?? "none";
|
|
52
|
+
const isControlled = ()=>void 0 !== local.selectedKeys;
|
|
53
|
+
const isDisabled = ()=>Boolean(local.isDisabled) || Boolean(local.disabled);
|
|
54
|
+
const selectedKeys = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>isControlled() ? normalizeKeys(local.selectedKeys) : internalSelectedKeys());
|
|
55
|
+
const disabledKeys = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>normalizeKeys(local.disabledKeys));
|
|
56
|
+
const getEnabledItems = ()=>registeredItems().filter((item)=>!item.disabled && !disabledKeys().has(item.key) && !isDisabled());
|
|
57
|
+
const focusItem = (item)=>{
|
|
58
|
+
if (!item) return;
|
|
59
|
+
setFocusedKey(item.key);
|
|
60
|
+
item.ref.focus();
|
|
61
|
+
};
|
|
62
|
+
const focusBoundary = (target)=>{
|
|
63
|
+
const enabledItems = getEnabledItems();
|
|
64
|
+
if (!enabledItems.length) return;
|
|
65
|
+
if ("selected" === target) {
|
|
66
|
+
const selectedItem = enabledItems.find((item)=>selectedKeys().has(item.key));
|
|
67
|
+
focusItem(selectedItem ?? enabledItems[0]);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
focusItem("first" === target ? enabledItems[0] : enabledItems[enabledItems.length - 1]);
|
|
71
|
+
};
|
|
72
|
+
const focusNext = (direction)=>{
|
|
73
|
+
const enabledItems = getEnabledItems();
|
|
74
|
+
if (!enabledItems.length) return;
|
|
75
|
+
const activeElement = document.activeElement;
|
|
76
|
+
let currentIndex = enabledItems.findIndex((item)=>item.ref === activeElement);
|
|
77
|
+
if (currentIndex < 0 && focusedKey()) currentIndex = enabledItems.findIndex((item)=>item.key === focusedKey());
|
|
78
|
+
if (currentIndex < 0) return void focusBoundary(1 === direction ? "first" : "last");
|
|
79
|
+
const nextIndex = (currentIndex + direction + enabledItems.length) % enabledItems.length;
|
|
80
|
+
focusItem(enabledItems[nextIndex]);
|
|
81
|
+
};
|
|
82
|
+
const updateSelection = (nextKeys)=>{
|
|
83
|
+
if (!isControlled()) setInternalSelectedKeys(nextKeys);
|
|
84
|
+
local.onSelectionChange?.(nextKeys);
|
|
85
|
+
};
|
|
86
|
+
const activateKey = (key, event)=>{
|
|
87
|
+
if (event.defaultPrevented || isDisabled()) return;
|
|
88
|
+
if (disabledKeys().has(key)) return;
|
|
89
|
+
if ("none" === selectionMode()) return void local.onAction?.(key);
|
|
90
|
+
const current = selectedKeys();
|
|
91
|
+
if ("single" === selectionMode()) {
|
|
92
|
+
if (!(1 === current.size && current.has(key))) updateSelection(new Set([
|
|
93
|
+
key
|
|
94
|
+
]));
|
|
95
|
+
local.onAction?.(key);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const next = new Set(current);
|
|
99
|
+
if (next.has(key)) {
|
|
100
|
+
if (local.disallowEmptySelection && 1 === next.size) return void local.onAction?.(key);
|
|
101
|
+
next.delete(key);
|
|
102
|
+
} else next.add(key);
|
|
103
|
+
updateSelection(next);
|
|
104
|
+
local.onAction?.(key);
|
|
105
|
+
};
|
|
106
|
+
const registerItem = (item)=>{
|
|
107
|
+
setRegisteredItems((current)=>sortItemsByDomOrder([
|
|
108
|
+
...current.filter((entry)=>entry.key !== item.key),
|
|
109
|
+
item
|
|
110
|
+
]));
|
|
111
|
+
};
|
|
112
|
+
const unregisterItem = (key)=>{
|
|
113
|
+
setRegisteredItems((current)=>current.filter((item)=>item.key !== key));
|
|
114
|
+
if (focusedKey() === key) setFocusedKey(void 0);
|
|
115
|
+
};
|
|
116
|
+
const isItemDisabled = (key, localDisabled)=>Boolean(localDisabled) || disabledKeys().has(key) || isDisabled();
|
|
117
|
+
const getItemTabIndex = (key, localDisabled)=>{
|
|
118
|
+
if (isItemDisabled(key, localDisabled)) return -1;
|
|
119
|
+
if (focusedKey() === key) return 0;
|
|
120
|
+
if (!focusedKey()) {
|
|
121
|
+
const enabledItems = getEnabledItems();
|
|
122
|
+
if (!enabledItems.length) return -1;
|
|
123
|
+
return enabledItems[0]?.key === key ? 0 : -1;
|
|
124
|
+
}
|
|
125
|
+
return -1;
|
|
126
|
+
};
|
|
127
|
+
const handleKeyDown = (event)=>{
|
|
128
|
+
invokeEventHandler(local.onKeyDown, event);
|
|
129
|
+
if (event.defaultPrevented) return;
|
|
130
|
+
if (event.target !== event.currentTarget) return;
|
|
131
|
+
if ("ArrowDown" === event.key || "ArrowRight" === event.key) {
|
|
132
|
+
event.preventDefault();
|
|
133
|
+
focusNext(1);
|
|
134
|
+
}
|
|
135
|
+
if ("ArrowUp" === event.key || "ArrowLeft" === event.key) {
|
|
136
|
+
event.preventDefault();
|
|
137
|
+
focusNext(-1);
|
|
138
|
+
}
|
|
139
|
+
if ("Home" === event.key) {
|
|
140
|
+
event.preventDefault();
|
|
141
|
+
focusBoundary("first");
|
|
142
|
+
}
|
|
143
|
+
if ("End" === event.key) {
|
|
144
|
+
event.preventDefault();
|
|
145
|
+
focusBoundary("last");
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
const renderChildren = ()=>{
|
|
149
|
+
const isItemRenderer = "function" == typeof local.children && local.children.length > 0;
|
|
150
|
+
const resolvedStaticChildren = "function" == typeof local.children ? isItemRenderer ? null : local.children() : local.children ?? null;
|
|
151
|
+
if (local.items) {
|
|
152
|
+
if (0 === local.items.length) return local.renderEmptyState?.() ?? null;
|
|
153
|
+
if (isItemRenderer) {
|
|
154
|
+
const renderItem = local.children;
|
|
155
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.For, {
|
|
156
|
+
get each () {
|
|
157
|
+
return local.items;
|
|
158
|
+
},
|
|
159
|
+
children: (item)=>renderItem(item)
|
|
160
|
+
});
|
|
39
161
|
}
|
|
40
|
-
}
|
|
41
|
-
return
|
|
42
|
-
}
|
|
162
|
+
}
|
|
163
|
+
return resolvedStaticChildren;
|
|
164
|
+
};
|
|
165
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE__context_js_80e2871f__.MenuContext.Provider, {
|
|
166
|
+
value: {
|
|
167
|
+
selectionMode,
|
|
168
|
+
selectedKeys,
|
|
169
|
+
disabledKeys,
|
|
170
|
+
isDisabled,
|
|
171
|
+
focusedKey,
|
|
172
|
+
isSelected: (key)=>selectedKeys().has(key),
|
|
173
|
+
isItemDisabled,
|
|
174
|
+
getItemTabIndex,
|
|
175
|
+
registerItem,
|
|
176
|
+
unregisterItem,
|
|
177
|
+
activateKey,
|
|
178
|
+
setFocusedKey,
|
|
179
|
+
focusNext,
|
|
180
|
+
focusBoundary
|
|
181
|
+
},
|
|
182
|
+
get children () {
|
|
183
|
+
var _el$ = _tmpl$();
|
|
184
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
185
|
+
get role () {
|
|
186
|
+
return local.role ?? "menu";
|
|
187
|
+
},
|
|
188
|
+
get ["aria-disabled"] () {
|
|
189
|
+
return isDisabled() ? "true" : void 0;
|
|
190
|
+
},
|
|
191
|
+
"data-slot": "menu",
|
|
192
|
+
get ["data-theme"] () {
|
|
193
|
+
return local.dataTheme;
|
|
194
|
+
},
|
|
195
|
+
get ["data-selection-mode"] () {
|
|
196
|
+
return selectionMode();
|
|
197
|
+
},
|
|
198
|
+
get ["data-disabled"] () {
|
|
199
|
+
return isDisabled() ? "true" : "false";
|
|
200
|
+
},
|
|
201
|
+
get ["class"] () {
|
|
202
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)(__WEBPACK_EXTERNAL_MODULE__Menu_classes_js_2247f1e5__.CLASSES.Root.base, local.class, local.className);
|
|
203
|
+
},
|
|
204
|
+
get style () {
|
|
205
|
+
return local.style;
|
|
206
|
+
},
|
|
207
|
+
onKeyDown: handleKeyDown
|
|
208
|
+
}), false, true);
|
|
209
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$, renderChildren);
|
|
210
|
+
return _el$;
|
|
211
|
+
}
|
|
212
|
+
});
|
|
43
213
|
};
|
|
44
|
-
const
|
|
45
|
-
|
|
214
|
+
const Menu = Object.assign(MenuRoot, {
|
|
215
|
+
Root: MenuRoot,
|
|
46
216
|
Item: __WEBPACK_EXTERNAL_MODULE__MenuItem_js_0945051f__["default"],
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
Menu: Menu
|
|
217
|
+
ItemIndicator: __WEBPACK_EXTERNAL_MODULE__MenuItem_js_0945051f__.MenuItemIndicator,
|
|
218
|
+
Section: __WEBPACK_EXTERNAL_MODULE__MenuSection_js_5f9fc1a1__["default"]
|
|
50
219
|
});
|
|
51
|
-
|
|
220
|
+
const menu_Menu = Menu;
|
|
221
|
+
var __webpack_exports__MenuItem = __WEBPACK_EXTERNAL_MODULE__MenuItem_js_0945051f__["default"];
|
|
222
|
+
var __webpack_exports__MenuItemIndicator = __WEBPACK_EXTERNAL_MODULE__MenuItem_js_0945051f__.MenuItemIndicator;
|
|
223
|
+
var __webpack_exports__MenuItemRoot = __WEBPACK_EXTERNAL_MODULE__MenuItem_js_0945051f__.MenuItemRoot;
|
|
224
|
+
var __webpack_exports__MenuSection = __WEBPACK_EXTERNAL_MODULE__MenuSection_js_5f9fc1a1__["default"];
|
|
225
|
+
var __webpack_exports__MenuSectionRoot = __WEBPACK_EXTERNAL_MODULE__MenuSection_js_5f9fc1a1__.MenuSectionRoot;
|
|
226
|
+
export { Menu, MenuRoot, menu_Menu as default, __webpack_exports__MenuItem as MenuItem, __webpack_exports__MenuItemIndicator as MenuItemIndicator, __webpack_exports__MenuItemRoot as MenuItemRoot, __webpack_exports__MenuSection as MenuSection, __webpack_exports__MenuSectionRoot as MenuSectionRoot };
|
|
@@ -1,9 +1,39 @@
|
|
|
1
|
-
import { type JSX, type
|
|
1
|
+
import { type Component, type JSX, type ParentComponent } from "solid-js";
|
|
2
2
|
import type { IComponentBaseProps } from "../types";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import { type MenuItemVariant, type MenuSelectionMode } from "./context";
|
|
4
|
+
type MenuItemRenderProps = {
|
|
5
|
+
isSelected: boolean;
|
|
6
|
+
isFocused: boolean;
|
|
7
|
+
isDisabled: boolean;
|
|
8
|
+
hasSubmenu: boolean;
|
|
9
|
+
selectionMode: MenuSelectionMode;
|
|
10
|
+
};
|
|
11
|
+
export type MenuItemRootProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, "children"> & IComponentBaseProps & {
|
|
12
|
+
id?: string | number;
|
|
13
|
+
textValue?: string;
|
|
14
|
+
variant?: MenuItemVariant;
|
|
15
|
+
isDisabled?: boolean;
|
|
6
16
|
disabled?: boolean;
|
|
17
|
+
hasSubmenu?: boolean;
|
|
18
|
+
onAction?: (key: string) => void;
|
|
19
|
+
children?: JSX.Element | ((props: MenuItemRenderProps) => JSX.Element);
|
|
20
|
+
};
|
|
21
|
+
export type MenuItemIndicatorType = "checkmark" | "dot";
|
|
22
|
+
export type MenuItemIndicatorProps = Omit<JSX.HTMLAttributes<HTMLSpanElement>, "children"> & IComponentBaseProps & {
|
|
23
|
+
type?: MenuItemIndicatorType;
|
|
24
|
+
children?: JSX.Element | ((props: MenuItemRenderProps) => JSX.Element);
|
|
25
|
+
};
|
|
26
|
+
export type MenuItemSubmenuIndicatorProps = Omit<JSX.HTMLAttributes<HTMLSpanElement>, "children"> & IComponentBaseProps & {
|
|
27
|
+
children?: JSX.Element;
|
|
28
|
+
};
|
|
29
|
+
declare const MenuItemRoot: ParentComponent<MenuItemRootProps>;
|
|
30
|
+
declare const MenuItemIndicator: Component<MenuItemIndicatorProps>;
|
|
31
|
+
declare const MenuItemSubmenuIndicator: Component<MenuItemSubmenuIndicatorProps>;
|
|
32
|
+
declare const MenuItem: ParentComponent<MenuItemRootProps> & {
|
|
33
|
+
Root: ParentComponent<MenuItemRootProps>;
|
|
34
|
+
Indicator: Component<MenuItemIndicatorProps>;
|
|
35
|
+
SubmenuIndicator: Component<MenuItemSubmenuIndicatorProps>;
|
|
7
36
|
};
|
|
8
|
-
declare const MenuItem: Component<MenuItemProps>;
|
|
9
37
|
export default MenuItem;
|
|
38
|
+
export { MenuItem, MenuItemRoot, MenuItemIndicator, MenuItemSubmenuIndicator };
|
|
39
|
+
export type { MenuItemRootProps as MenuItemProps, MenuItemRenderProps, MenuSelectionMode, MenuItemVariant, };
|
|
@@ -1,40 +1,288 @@
|
|
|
1
1
|
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__ from "solid-js/web";
|
|
2
2
|
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__ from "solid-js";
|
|
3
3
|
import * as __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__ from "tailwind-merge";
|
|
4
|
-
import * as
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
import * as __WEBPACK_EXTERNAL_MODULE__context_js_80e2871f__ from "./context.js";
|
|
5
|
+
import * as __WEBPACK_EXTERNAL_MODULE__Menu_classes_js_2247f1e5__ from "./Menu.classes.js";
|
|
6
|
+
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=menu-item-indicator--dot fill=currentColor fill-rule=evenodd role=presentation viewBox="0 0 16 16"xmlns=http://www.w3.org/2000/svg><path clip-rule=evenodd d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14"fill-rule=evenodd>'), _tmpl$4 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<svg aria-hidden=true data-slot=menu-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">'), _tmpl$5 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<svg aria-hidden=true fill=none role=presentation viewBox="0 0 16 16"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round><path d="M6 3.5L10 8l-4 4.5">');
|
|
7
|
+
const MenuItemStateContext = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createContext)();
|
|
8
|
+
const invokeEventHandler = (handler, event)=>{
|
|
9
|
+
if ("function" == typeof handler) return void handler(event);
|
|
10
|
+
if (Array.isArray(handler) && "function" == typeof handler[0]) handler[0](handler[1], event);
|
|
11
|
+
};
|
|
12
|
+
const toSlug = (value)=>value.trim().toLowerCase().replace(/[^\w\s-]/g, "").replace(/\s+/g, "-");
|
|
13
|
+
const extractTextValue = (nodes)=>{
|
|
14
|
+
for (const node of nodes){
|
|
15
|
+
if ("string" == typeof node && node.trim().length > 0) return node.trim();
|
|
16
|
+
if ("number" == typeof node) return String(node);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const MenuItemRoot = (props)=>{
|
|
20
|
+
const menu = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.useContext)(__WEBPACK_EXTERNAL_MODULE__context_js_80e2871f__.MenuContext);
|
|
21
|
+
const fallbackKey = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createUniqueId)();
|
|
7
22
|
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
23
|
+
"children",
|
|
8
24
|
"class",
|
|
9
25
|
"className",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
26
|
+
"dataTheme",
|
|
27
|
+
"style",
|
|
28
|
+
"id",
|
|
29
|
+
"textValue",
|
|
30
|
+
"variant",
|
|
31
|
+
"isDisabled",
|
|
12
32
|
"disabled",
|
|
33
|
+
"hasSubmenu",
|
|
34
|
+
"onAction",
|
|
35
|
+
"onClick",
|
|
36
|
+
"onKeyDown",
|
|
37
|
+
"onFocus",
|
|
38
|
+
"onBlur",
|
|
39
|
+
"ref",
|
|
40
|
+
"tabIndex",
|
|
41
|
+
"role"
|
|
42
|
+
]);
|
|
43
|
+
let itemRef;
|
|
44
|
+
const key = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>{
|
|
45
|
+
if (null != local.id) return String(local.id);
|
|
46
|
+
if (local.textValue) return toSlug(local.textValue);
|
|
47
|
+
const staticChildren = "function" == typeof local.children ? [] : [
|
|
48
|
+
local.children
|
|
49
|
+
];
|
|
50
|
+
const textValue = extractTextValue(staticChildren);
|
|
51
|
+
if (textValue) return toSlug(textValue);
|
|
52
|
+
return fallbackKey;
|
|
53
|
+
});
|
|
54
|
+
const variant = ()=>local.variant ?? "default";
|
|
55
|
+
const selectionMode = ()=>menu?.selectionMode() ?? "none";
|
|
56
|
+
const isSelected = ()=>menu?.isSelected(key()) ?? false;
|
|
57
|
+
const isFocused = ()=>menu?.focusedKey() === key();
|
|
58
|
+
const isDisabled = ()=>menu?.isItemDisabled(key(), Boolean(local.isDisabled) || Boolean(local.disabled)) ?? (Boolean(local.isDisabled) || Boolean(local.disabled));
|
|
59
|
+
const renderState = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>({
|
|
60
|
+
isSelected: isSelected(),
|
|
61
|
+
isFocused: isFocused(),
|
|
62
|
+
isDisabled: isDisabled(),
|
|
63
|
+
hasSubmenu: Boolean(local.hasSubmenu),
|
|
64
|
+
selectionMode: selectionMode()
|
|
65
|
+
}));
|
|
66
|
+
const resolvedRole = ()=>{
|
|
67
|
+
if (local.role) return local.role;
|
|
68
|
+
if ("multiple" === selectionMode()) return "menuitemcheckbox";
|
|
69
|
+
if ("single" === selectionMode()) return "menuitemradio";
|
|
70
|
+
return "menuitem";
|
|
71
|
+
};
|
|
72
|
+
const resolvedTabIndex = ()=>{
|
|
73
|
+
if (void 0 !== local.tabIndex) return local.tabIndex;
|
|
74
|
+
if (!menu) return isDisabled() ? -1 : 0;
|
|
75
|
+
return menu.getItemTabIndex(key(), isDisabled());
|
|
76
|
+
};
|
|
77
|
+
const handleActivate = (event)=>{
|
|
78
|
+
if (event.defaultPrevented || isDisabled()) return;
|
|
79
|
+
menu?.activateKey(key(), event);
|
|
80
|
+
local.onAction?.(key());
|
|
81
|
+
};
|
|
82
|
+
const handleClick = (event)=>{
|
|
83
|
+
invokeEventHandler(local.onClick, event);
|
|
84
|
+
handleActivate(event);
|
|
85
|
+
};
|
|
86
|
+
const handleKeyDown = (event)=>{
|
|
87
|
+
invokeEventHandler(local.onKeyDown, event);
|
|
88
|
+
if (event.defaultPrevented || isDisabled()) return;
|
|
89
|
+
if ("ArrowDown" === event.key || "ArrowRight" === event.key) {
|
|
90
|
+
event.preventDefault();
|
|
91
|
+
menu?.focusNext(1);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if ("ArrowUp" === event.key || "ArrowLeft" === event.key) {
|
|
95
|
+
event.preventDefault();
|
|
96
|
+
menu?.focusNext(-1);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if ("Home" === event.key) {
|
|
100
|
+
event.preventDefault();
|
|
101
|
+
menu?.focusBoundary("first");
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if ("End" === event.key) {
|
|
105
|
+
event.preventDefault();
|
|
106
|
+
menu?.focusBoundary("last");
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if ("Enter" === event.key || " " === event.key) {
|
|
110
|
+
event.preventDefault();
|
|
111
|
+
handleActivate(event);
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
const handleFocus = (event)=>{
|
|
115
|
+
invokeEventHandler(local.onFocus, event);
|
|
116
|
+
if (event.defaultPrevented) return;
|
|
117
|
+
menu?.setFocusedKey(key());
|
|
118
|
+
};
|
|
119
|
+
const handleBlur = (event)=>{
|
|
120
|
+
invokeEventHandler(local.onBlur, event);
|
|
121
|
+
if (event.defaultPrevented) return;
|
|
122
|
+
if (menu?.focusedKey() === key()) menu.setFocusedKey(void 0);
|
|
123
|
+
};
|
|
124
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createEffect)(()=>{
|
|
125
|
+
if (!menu || !itemRef) return;
|
|
126
|
+
menu.registerItem({
|
|
127
|
+
key: key(),
|
|
128
|
+
disabled: Boolean(local.isDisabled) || Boolean(local.disabled),
|
|
129
|
+
ref: itemRef
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.onCleanup)(()=>{
|
|
133
|
+
if (!menu) return;
|
|
134
|
+
menu.unregisterItem(key());
|
|
135
|
+
});
|
|
136
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(MenuItemStateContext.Provider, {
|
|
137
|
+
value: {
|
|
138
|
+
renderState
|
|
139
|
+
},
|
|
140
|
+
get children () {
|
|
141
|
+
var _el$ = _tmpl$();
|
|
142
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.use)((node)=>{
|
|
143
|
+
itemRef = node;
|
|
144
|
+
if ("function" == typeof local.ref) local.ref(node);
|
|
145
|
+
}, _el$);
|
|
146
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
147
|
+
get role () {
|
|
148
|
+
return resolvedRole();
|
|
149
|
+
},
|
|
150
|
+
get tabIndex () {
|
|
151
|
+
return resolvedTabIndex();
|
|
152
|
+
},
|
|
153
|
+
get ["aria-selected"] () {
|
|
154
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.memo)(()=>"none" === selectionMode())() ? void 0 : isSelected() ? "true" : "false";
|
|
155
|
+
},
|
|
156
|
+
get ["aria-checked"] () {
|
|
157
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.memo)(()=>"none" === selectionMode())() ? void 0 : isSelected() ? "true" : "false";
|
|
158
|
+
},
|
|
159
|
+
get ["aria-disabled"] () {
|
|
160
|
+
return isDisabled() ? "true" : void 0;
|
|
161
|
+
},
|
|
162
|
+
"data-slot": "menu-item",
|
|
163
|
+
get ["data-theme"] () {
|
|
164
|
+
return local.dataTheme;
|
|
165
|
+
},
|
|
166
|
+
get ["data-disabled"] () {
|
|
167
|
+
return isDisabled() ? "true" : "false";
|
|
168
|
+
},
|
|
169
|
+
get ["data-selected"] () {
|
|
170
|
+
return isSelected() ? "true" : "false";
|
|
171
|
+
},
|
|
172
|
+
get ["data-focus"] () {
|
|
173
|
+
return isFocused() ? "true" : "false";
|
|
174
|
+
},
|
|
175
|
+
get ["data-has-submenu"] () {
|
|
176
|
+
return local.hasSubmenu ? "true" : void 0;
|
|
177
|
+
},
|
|
178
|
+
get ["data-selection-mode"] () {
|
|
179
|
+
return selectionMode();
|
|
180
|
+
},
|
|
181
|
+
get ["data-key"] () {
|
|
182
|
+
return key();
|
|
183
|
+
},
|
|
184
|
+
get ["class"] () {
|
|
185
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)(__WEBPACK_EXTERNAL_MODULE__Menu_classes_js_2247f1e5__.CLASSES.Item.base, __WEBPACK_EXTERNAL_MODULE__Menu_classes_js_2247f1e5__.CLASSES.Item.variant[variant()], local.class, local.className);
|
|
186
|
+
},
|
|
187
|
+
get style () {
|
|
188
|
+
return local.style;
|
|
189
|
+
},
|
|
190
|
+
onClick: handleClick,
|
|
191
|
+
onKeyDown: handleKeyDown,
|
|
192
|
+
onFocus: handleFocus,
|
|
193
|
+
onBlur: handleBlur
|
|
194
|
+
}), false, true);
|
|
195
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$, (()=>{
|
|
196
|
+
var _c$ = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.memo)(()=>"function" == typeof local.children);
|
|
197
|
+
return ()=>_c$() ? local.children(renderState()) : local.children;
|
|
198
|
+
})());
|
|
199
|
+
return _el$;
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
};
|
|
203
|
+
const MenuItemIndicator = (props)=>{
|
|
204
|
+
const context = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.useContext)(MenuItemStateContext);
|
|
205
|
+
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
13
206
|
"children",
|
|
207
|
+
"class",
|
|
208
|
+
"className",
|
|
209
|
+
"dataTheme",
|
|
14
210
|
"style",
|
|
15
|
-
"
|
|
211
|
+
"type"
|
|
16
212
|
]);
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
213
|
+
const renderState = ()=>context?.renderState() ?? {
|
|
214
|
+
isSelected: false,
|
|
215
|
+
isFocused: false,
|
|
216
|
+
isDisabled: false,
|
|
217
|
+
hasSubmenu: false,
|
|
218
|
+
selectionMode: "none"
|
|
219
|
+
};
|
|
220
|
+
const type = ()=>local.type ?? "checkmark";
|
|
22
221
|
return (()=>{
|
|
23
|
-
var _el$ = _tmpl$();
|
|
24
|
-
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el
|
|
222
|
+
var _el$2 = _tmpl$2();
|
|
223
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$2, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
224
|
+
"aria-hidden": "true",
|
|
225
|
+
"data-slot": "menu-item-indicator",
|
|
226
|
+
get ["data-theme"] () {
|
|
227
|
+
return local.dataTheme;
|
|
228
|
+
},
|
|
229
|
+
get ["data-type"] () {
|
|
230
|
+
return type();
|
|
231
|
+
},
|
|
232
|
+
get ["data-visible"] () {
|
|
233
|
+
return renderState().isSelected ? "true" : void 0;
|
|
234
|
+
},
|
|
25
235
|
get ["class"] () {
|
|
26
|
-
return
|
|
236
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)(__WEBPACK_EXTERNAL_MODULE__Menu_classes_js_2247f1e5__.CLASSES.ItemIndicator.base, local.class, local.className);
|
|
27
237
|
},
|
|
28
238
|
get style () {
|
|
29
239
|
return local.style;
|
|
30
|
-
}
|
|
240
|
+
}
|
|
241
|
+
}), false, true);
|
|
242
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$2, (()=>{
|
|
243
|
+
var _c$2 = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.memo)(()=>"function" == typeof local.children);
|
|
244
|
+
return ()=>_c$2() ? local.children(renderState()) : (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.memo)(()=>!!local.children)() ? local.children : (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.memo)(()=>"dot" === type())() ? _tmpl$3() : (()=>{
|
|
245
|
+
var _el$4 = _tmpl$4();
|
|
246
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.effect)(()=>(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.setAttribute)(_el$4, "stroke-dashoffset", String(renderState().isSelected ? 44 : 66)));
|
|
247
|
+
return _el$4;
|
|
248
|
+
})();
|
|
249
|
+
})());
|
|
250
|
+
return _el$2;
|
|
251
|
+
})();
|
|
252
|
+
};
|
|
253
|
+
const MenuItemSubmenuIndicator = (props)=>{
|
|
254
|
+
const context = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.useContext)(MenuItemStateContext);
|
|
255
|
+
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
256
|
+
"children",
|
|
257
|
+
"class",
|
|
258
|
+
"className",
|
|
259
|
+
"dataTheme",
|
|
260
|
+
"style"
|
|
261
|
+
]);
|
|
262
|
+
if (!context?.renderState().hasSubmenu) return null;
|
|
263
|
+
return (()=>{
|
|
264
|
+
var _el$5 = _tmpl$2();
|
|
265
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$5, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
266
|
+
"aria-hidden": "true",
|
|
267
|
+
"data-slot": "submenu-indicator",
|
|
31
268
|
get ["data-theme"] () {
|
|
32
269
|
return local.dataTheme;
|
|
270
|
+
},
|
|
271
|
+
get ["class"] () {
|
|
272
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)(__WEBPACK_EXTERNAL_MODULE__Menu_classes_js_2247f1e5__.CLASSES.ItemIndicator.base, __WEBPACK_EXTERNAL_MODULE__Menu_classes_js_2247f1e5__.CLASSES.ItemIndicator.submenu, local.class, local.className);
|
|
273
|
+
},
|
|
274
|
+
get style () {
|
|
275
|
+
return local.style;
|
|
33
276
|
}
|
|
34
|
-
}
|
|
35
|
-
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el
|
|
36
|
-
return _el
|
|
277
|
+
}), false, true);
|
|
278
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$5, ()=>local.children ?? _tmpl$5());
|
|
279
|
+
return _el$5;
|
|
37
280
|
})();
|
|
38
281
|
};
|
|
282
|
+
const MenuItem = Object.assign(MenuItemRoot, {
|
|
283
|
+
Root: MenuItemRoot,
|
|
284
|
+
Indicator: MenuItemIndicator,
|
|
285
|
+
SubmenuIndicator: MenuItemSubmenuIndicator
|
|
286
|
+
});
|
|
39
287
|
const menu_MenuItem = MenuItem;
|
|
40
|
-
export { menu_MenuItem as default };
|
|
288
|
+
export { MenuItem, MenuItemIndicator, MenuItemRoot, MenuItemSubmenuIndicator, menu_MenuItem as default };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type Component, type JSX } from "solid-js";
|
|
2
|
+
import type { IComponentBaseProps } from "../types";
|
|
3
|
+
export type MenuSectionRootProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, "children"> & IComponentBaseProps & {
|
|
4
|
+
children?: JSX.Element;
|
|
5
|
+
title?: JSX.Element;
|
|
6
|
+
};
|
|
7
|
+
declare const MenuSectionRoot: Component<MenuSectionRootProps>;
|
|
8
|
+
declare const MenuSection: Component<MenuSectionRootProps>;
|
|
9
|
+
export default MenuSection;
|
|
10
|
+
export { MenuSection, MenuSectionRoot };
|
|
11
|
+
export type { MenuSectionRootProps as MenuSectionProps };
|