@editora/ui-core 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ElementBase-DxbvhLJs.js → ElementBase-CbUsP3D6.js} +1 -1
- package/dist/{ElementBase-BeZT54Hj.mjs → ElementBase-D5QsC5Vw.mjs} +10 -1
- package/dist/ElementBase.d.ts +7 -0
- package/dist/ElementBase.d.ts.map +1 -1
- package/dist/accordion.cjs.js +1 -1
- package/dist/accordion.esm.js +1 -1
- package/dist/add-icons-CVeHOsWl.js +1 -0
- package/dist/add-icons-DBUZJ0g7.mjs +14 -0
- package/dist/add-icons.cjs.js +1 -0
- package/dist/add-icons.d.ts +16 -0
- package/dist/add-icons.d.ts.map +1 -0
- package/dist/add-icons.esm.js +4 -0
- package/dist/alert-dialog.cjs.js +24 -24
- package/dist/alert-dialog.esm.js +112 -107
- package/dist/alert.cjs.js +8 -8
- package/dist/alert.esm.js +22 -22
- package/dist/animated-beam.cjs.js +1 -1
- package/dist/animated-beam.esm.js +1 -1
- package/dist/animated-list.cjs.js +1 -1
- package/dist/animated-list.esm.js +1 -1
- package/dist/animated-text.cjs.js +1 -1
- package/dist/animated-text.esm.js +1 -1
- package/dist/app-header.cjs.js +15 -3
- package/dist/app-header.esm.js +31 -4
- package/dist/aspect-ratio.cjs.js +1 -1
- package/dist/aspect-ratio.esm.js +1 -1
- package/dist/avatar.cjs.js +1 -1
- package/dist/avatar.esm.js +1 -1
- package/dist/badge.cjs.js +1 -1
- package/dist/badge.esm.js +1 -1
- package/dist/block-controls.cjs.js +1 -1
- package/dist/block-controls.esm.js +1 -1
- package/dist/box.cjs.js +1 -1
- package/dist/box.esm.js +1 -1
- package/dist/breadcrumb.cjs.js +4 -4
- package/dist/breadcrumb.esm.js +93 -84
- package/dist/button.cjs.js +520 -1
- package/dist/button.esm.js +682 -2
- package/dist/{calendar-CzpWDxLc.js → calendar-BsVqtpjM.js} +6 -6
- package/dist/{calendar-DkSDFg33.mjs → calendar-CFafqZVA.mjs} +6 -6
- package/dist/calendar.cjs.js +1 -1
- package/dist/calendar.esm.js +1 -1
- package/dist/card.cjs.js +6 -5
- package/dist/card.esm.js +52 -39
- package/dist/chart.cjs.js +2 -2
- package/dist/chart.esm.js +2 -2
- package/dist/checkbox.cjs.js +4 -4
- package/dist/checkbox.esm.js +36 -15
- package/dist/clone-source-BxK2pEVw.mjs +11 -0
- package/dist/clone-source-C7E_ri5f.js +1 -0
- package/dist/collapsible.cjs.js +1 -1
- package/dist/collapsible.esm.js +1 -1
- package/dist/color-picker.cjs.js +2 -2
- package/dist/color-picker.esm.js +3 -3
- package/dist/combobox.cjs.js +4 -4
- package/dist/combobox.esm.js +22 -19
- package/dist/command-palette.cjs.js +1 -1
- package/dist/command-palette.esm.js +1 -1
- package/dist/command.cjs.js +1 -1
- package/dist/command.esm.js +1 -1
- package/dist/components/ui-alert-dialog.d.ts.map +1 -1
- package/dist/components/ui-alert.d.ts.map +1 -1
- package/dist/components/ui-app-header.d.ts +1 -0
- package/dist/components/ui-app-header.d.ts.map +1 -1
- package/dist/components/ui-breadcrumb.d.ts.map +1 -1
- package/dist/components/ui-card.d.ts +7 -0
- package/dist/components/ui-card.d.ts.map +1 -1
- package/dist/components/ui-checkbox.d.ts +6 -0
- package/dist/components/ui-checkbox.d.ts.map +1 -1
- package/dist/components/ui-combobox.d.ts.map +1 -1
- package/dist/components/ui-date-time-picker.d.ts.map +1 -1
- package/dist/components/ui-dialog.d.ts +1 -0
- package/dist/components/ui-dialog.d.ts.map +1 -1
- package/dist/components/ui-drawer.d.ts.map +1 -1
- package/dist/components/ui-dropdown.d.ts.map +1 -1
- package/dist/components/ui-empty-state.d.ts.map +1 -1
- package/dist/components/ui-hover-card.d.ts.map +1 -1
- package/dist/components/ui-icon.d.ts +1 -0
- package/dist/components/ui-icon.d.ts.map +1 -1
- package/dist/components/ui-input.d.ts +16 -0
- package/dist/components/ui-input.d.ts.map +1 -1
- package/dist/components/ui-layout.d.ts +20 -0
- package/dist/components/ui-layout.d.ts.map +1 -1
- package/dist/components/ui-menu.d.ts +1 -0
- package/dist/components/ui-menu.d.ts.map +1 -1
- package/dist/components/ui-menubar.d.ts.map +1 -1
- package/dist/components/ui-multi-select.d.ts +6 -0
- package/dist/components/ui-multi-select.d.ts.map +1 -1
- package/dist/components/ui-number-field.d.ts +6 -0
- package/dist/components/ui-number-field.d.ts.map +1 -1
- package/dist/components/ui-pagination.d.ts.map +1 -1
- package/dist/components/ui-password-field.d.ts +11 -0
- package/dist/components/ui-password-field.d.ts.map +1 -1
- package/dist/components/ui-popover.d.ts.map +1 -1
- package/dist/components/ui-positioner.d.ts.map +1 -1
- package/dist/components/ui-radio-group.d.ts +6 -0
- package/dist/components/ui-radio-group.d.ts.map +1 -1
- package/dist/components/ui-rating.d.ts +1 -0
- package/dist/components/ui-rating.d.ts.map +1 -1
- package/dist/components/ui-select.d.ts +7 -0
- package/dist/components/ui-select.d.ts.map +1 -1
- package/dist/components/ui-sidebar.d.ts +1 -0
- package/dist/components/ui-sidebar.d.ts.map +1 -1
- package/dist/components/ui-slider.d.ts +6 -0
- package/dist/components/ui-slider.d.ts.map +1 -1
- package/dist/components/ui-sortable.d.ts +1 -0
- package/dist/components/ui-sortable.d.ts.map +1 -1
- package/dist/components/ui-switch.d.ts +6 -0
- package/dist/components/ui-switch.d.ts.map +1 -1
- package/dist/components/ui-tabs.d.ts +2 -0
- package/dist/components/ui-tabs.d.ts.map +1 -1
- package/dist/components/ui-textarea.d.ts +6 -0
- package/dist/components/ui-textarea.d.ts.map +1 -1
- package/dist/components/ui-toast.d.ts.map +1 -1
- package/dist/components/ui-tooltip.d.ts.map +1 -1
- package/dist/container.cjs.js +1 -1
- package/dist/container.esm.js +1 -1
- package/dist/context-menu.cjs.js +2 -2
- package/dist/context-menu.esm.js +2 -2
- package/dist/control-group.cjs.js +1 -1
- package/dist/control-group.esm.js +1 -1
- package/dist/data-table.cjs.js +5 -5
- package/dist/data-table.esm.js +7 -7
- package/dist/date-field.cjs.js +1 -1
- package/dist/date-field.esm.js +3 -3
- package/dist/date-picker.cjs.js +2 -2
- package/dist/date-picker.esm.js +17 -17
- package/dist/date-range-picker.cjs.js +2 -2
- package/dist/date-range-picker.esm.js +4 -4
- package/dist/date-range-time-picker.cjs.js +3 -3
- package/dist/date-range-time-picker.esm.js +16 -16
- package/dist/date-time-picker.cjs.js +26 -23
- package/dist/date-time-picker.esm.js +49 -46
- package/dist/{date-time-utils-zAx4ghvC.mjs → date-time-utils-CJUksWj3.mjs} +1 -1
- package/dist/{date-time-utils-C-4eHTyy.js → date-time-utils-D3hQQ5Om.js} +1 -1
- package/dist/description.cjs.js +1 -1
- package/dist/description.esm.js +1 -1
- package/dist/dialog.cjs.js +7 -7
- package/dist/dialog.esm.js +51 -47
- package/dist/direction-provider.cjs.js +1 -1
- package/dist/direction-provider.esm.js +1 -1
- package/dist/dismissable-layer.cjs.js +1 -1
- package/dist/dismissable-layer.esm.js +1 -1
- package/dist/dock.cjs.js +1 -1
- package/dist/dock.esm.js +1 -1
- package/dist/drawer.cjs.js +5 -5
- package/dist/drawer.esm.js +18 -17
- package/dist/dropdown.cjs.js +7 -7
- package/dist/dropdown.esm.js +39 -38
- package/dist/empty-state.cjs.js +12 -2
- package/dist/empty-state.esm.js +17 -7
- package/dist/field-error.cjs.js +1 -1
- package/dist/field-error.esm.js +1 -1
- package/dist/field.cjs.js +2 -2
- package/dist/field.esm.js +2 -2
- package/dist/fieldset.cjs.js +1 -1
- package/dist/fieldset.esm.js +1 -1
- package/dist/file-upload.cjs.js +1 -1
- package/dist/file-upload.esm.js +1 -1
- package/dist/flex.cjs.js +1 -1
- package/dist/flex.esm.js +1 -1
- package/dist/floating-toolbar.cjs.js +2 -2
- package/dist/floating-toolbar.esm.js +2 -2
- package/dist/focus-scope-Dl0qk5GP.mjs +177 -0
- package/dist/focus-scope-Doz0bnE1.js +1 -0
- package/dist/focus-scope.cjs.js +1 -1
- package/dist/focus-scope.esm.js +2 -2
- package/dist/form-control-B90_3kYN.js +1 -0
- package/dist/form-control-D9wWUMBl.mjs +86 -0
- package/dist/form.cjs.js +2 -2
- package/dist/form.esm.js +2 -2
- package/dist/gantt.cjs.js +2 -2
- package/dist/gantt.esm.js +2 -2
- package/dist/grid.cjs.js +1 -1
- package/dist/grid.esm.js +1 -1
- package/dist/hover-card.cjs.js +5 -5
- package/dist/hover-card.esm.js +19 -18
- package/dist/icon-cloud.cjs.js +1 -1
- package/dist/icon-cloud.esm.js +1 -1
- package/dist/icon.cjs.js +207 -1
- package/dist/icon.esm.js +294 -2
- package/dist/icons-CpCpPXV5.js +1 -0
- package/dist/icons-DWYbbhb0.mjs +115 -0
- package/dist/icons.d.ts +11 -1
- package/dist/icons.d.ts.map +1 -1
- package/dist/implicit-submit-B6M5Uc56.js +1 -0
- package/dist/implicit-submit-Lr0-q2LR.mjs +44 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +309 -299
- package/dist/inline-edit.cjs.js +1 -1
- package/dist/inline-edit.esm.js +1 -1
- package/dist/input.cjs.js +62 -20
- package/dist/input.esm.js +164 -58
- package/dist/label.cjs.js +1 -1
- package/dist/label.esm.js +1 -1
- package/dist/layout.cjs.js +145 -4
- package/dist/layout.esm.js +278 -40
- package/dist/marquee.cjs.js +1 -1
- package/dist/marquee.esm.js +1 -1
- package/dist/masonry-grid.cjs.js +1 -1
- package/dist/masonry-grid.esm.js +1 -1
- package/dist/menu.cjs.js +8 -8
- package/dist/menu.esm.js +51 -47
- package/dist/menubar.cjs.js +9 -9
- package/dist/menubar.esm.js +41 -40
- package/dist/meter.cjs.js +1 -1
- package/dist/meter.esm.js +1 -1
- package/dist/multi-select.cjs.js +7 -7
- package/dist/multi-select.esm.js +55 -34
- package/dist/navigate-CXebafwF.mjs +18 -0
- package/dist/navigate-ChJVIIuS.js +1 -0
- package/dist/navigation-menu.cjs.js +1 -1
- package/dist/navigation-menu.esm.js +1 -1
- package/dist/number-attribute-BAF07JrU.mjs +8 -0
- package/dist/number-attribute-C4Rrl7d3.js +1 -0
- package/dist/number-field.cjs.js +8 -8
- package/dist/number-field.esm.js +90 -69
- package/dist/number-ticker.cjs.js +1 -1
- package/dist/number-ticker.esm.js +1 -1
- package/dist/odometer.cjs.js +1 -1
- package/dist/odometer.esm.js +1 -1
- package/dist/orbiter.cjs.js +1 -1
- package/dist/orbiter.esm.js +1 -1
- package/dist/pagination.cjs.js +24 -23
- package/dist/pagination.esm.js +61 -46
- package/dist/{panel-group-BVHJEdfx.js → panel-group-BIzzpQ5i.js} +1 -1
- package/dist/{panel-group-BxO_eNW6.mjs → panel-group-CFLjzRWI.mjs} +1 -1
- package/dist/panel-group.cjs.js +1 -1
- package/dist/panel-group.esm.js +1 -1
- package/dist/panel.cjs.js +1 -1
- package/dist/panel.esm.js +1 -1
- package/dist/password-field.cjs.js +36 -16
- package/dist/password-field.esm.js +113 -44
- package/dist/pin-input.cjs.js +1 -1
- package/dist/pin-input.esm.js +1 -1
- package/dist/placement-grid.cjs.js +1 -1
- package/dist/placement-grid.esm.js +1 -1
- package/dist/plugin-panel.cjs.js +1 -1
- package/dist/plugin-panel.esm.js +1 -1
- package/dist/popover.cjs.js +2 -2
- package/dist/popover.esm.js +28 -26
- package/dist/portal.cjs.js +1 -1
- package/dist/portal.esm.js +1 -1
- package/dist/positioner.cjs.js +2 -2
- package/dist/positioner.esm.js +35 -38
- package/dist/preload.cjs.js +221 -0
- package/dist/preload.css +220 -0
- package/dist/preload.d.ts +17 -0
- package/dist/preload.d.ts.map +1 -0
- package/dist/preload.esm.js +224 -0
- package/dist/presence.cjs.js +1 -1
- package/dist/presence.esm.js +1 -1
- package/dist/primitives/clone-source.d.ts +3 -0
- package/dist/primitives/clone-source.d.ts.map +1 -0
- package/dist/primitives/focus-scope.d.ts +6 -0
- package/dist/primitives/focus-scope.d.ts.map +1 -1
- package/dist/primitives/form-control.d.ts +68 -0
- package/dist/primitives/form-control.d.ts.map +1 -0
- package/dist/primitives/implicit-submit.d.ts +17 -0
- package/dist/primitives/implicit-submit.d.ts.map +1 -0
- package/dist/primitives/navigate.d.ts +27 -0
- package/dist/primitives/navigate.d.ts.map +1 -0
- package/dist/primitives/number-attribute.d.ts +7 -0
- package/dist/primitives/number-attribute.d.ts.map +1 -0
- package/dist/primitives/slotted-input.d.ts +19 -0
- package/dist/primitives/slotted-input.d.ts.map +1 -0
- package/dist/progress.cjs.js +3 -3
- package/dist/progress.esm.js +3 -3
- package/dist/quick-actions.cjs.js +5 -5
- package/dist/quick-actions.esm.js +3 -3
- package/dist/radio-group.cjs.js +9 -9
- package/dist/radio-group.esm.js +47 -24
- package/dist/radio.cjs.js +1 -1
- package/dist/radio.esm.js +1 -1
- package/dist/rating.cjs.js +6 -6
- package/dist/rating.esm.js +21 -10
- package/dist/{runtime-BRT7E4A8.mjs → runtime-CORXjP7e.mjs} +379 -357
- package/dist/runtime-uCly3ECd.js +5 -0
- package/dist/runtime.cjs.js +1 -1
- package/dist/runtime.esm.js +1 -1
- package/dist/scroll-area.cjs.js +1 -1
- package/dist/scroll-area.esm.js +1 -1
- package/dist/section.cjs.js +1 -1
- package/dist/section.esm.js +1 -1
- package/dist/select.cjs.js +21 -21
- package/dist/select.esm.js +111 -71
- package/dist/selection-popup.cjs.js +2 -2
- package/dist/selection-popup.esm.js +2 -2
- package/dist/semantic-tokens.d.ts.map +1 -1
- package/dist/separator.cjs.js +1 -1
- package/dist/separator.esm.js +1 -1
- package/dist/sidebar.cjs.js +15 -15
- package/dist/sidebar.esm.js +48 -42
- package/dist/skeleton.cjs.js +1 -1
- package/dist/skeleton.esm.js +1 -1
- package/dist/slider.cjs.js +11 -11
- package/dist/slider.esm.js +40 -23
- package/dist/slot.cjs.js +1 -1
- package/dist/slot.esm.js +1 -1
- package/dist/slotted-input-BVq2QQg2.js +1 -0
- package/dist/slotted-input-atWznLfm.mjs +13 -0
- package/dist/sortable.cjs.js +25 -25
- package/dist/sortable.esm.js +29 -21
- package/dist/spinning-text.cjs.js +1 -1
- package/dist/spinning-text.esm.js +1 -1
- package/dist/split-button.cjs.js +1 -1
- package/dist/split-button.esm.js +1 -1
- package/dist/splitter.cjs.js +1 -1
- package/dist/splitter.esm.js +1 -1
- package/dist/standalone/add-icons.d.ts +2 -0
- package/dist/standalone/add-icons.d.ts.map +1 -0
- package/dist/standalone/preload.d.ts +2 -0
- package/dist/standalone/preload.d.ts.map +1 -0
- package/dist/stepper.cjs.js +3 -3
- package/dist/stepper.esm.js +3 -3
- package/dist/switch.cjs.js +9 -9
- package/dist/switch.esm.js +56 -35
- package/dist/table.cjs.js +1 -1
- package/dist/table.esm.js +1 -1
- package/dist/tabs.cjs.js +14 -14
- package/dist/tabs.esm.js +129 -115
- package/dist/tags-input.cjs.js +1 -1
- package/dist/tags-input.esm.js +1 -1
- package/dist/textarea.cjs.js +33 -11
- package/dist/textarea.esm.js +74 -35
- package/dist/theme.d.ts +6 -0
- package/dist/theme.d.ts.map +1 -1
- package/dist/time-field.cjs.js +1 -1
- package/dist/time-field.esm.js +2 -2
- package/dist/time-picker.cjs.js +1 -1
- package/dist/time-picker.esm.js +3 -3
- package/dist/timeline.cjs.js +2 -2
- package/dist/timeline.esm.js +2 -2
- package/dist/toast.cjs.js +4 -4
- package/dist/toast.esm.js +17 -16
- package/dist/toggle-group.cjs.js +1 -1
- package/dist/toggle-group.esm.js +1 -1
- package/dist/toggle.cjs.js +3 -3
- package/dist/toggle.esm.js +9 -9
- package/dist/toolbar.cjs.js +1 -1
- package/dist/toolbar.esm.js +1 -1
- package/dist/tooltip.cjs.js +2 -2
- package/dist/tooltip.esm.js +12 -14
- package/dist/transfer-list.cjs.js +1 -1
- package/dist/transfer-list.esm.js +1 -1
- package/dist/{tree-33fVNnaf.mjs → tree-CD2k2lIC.mjs} +1 -1
- package/dist/{tree-Dc02MChE.js → tree-ChQfhxya.js} +1 -1
- package/dist/tree-item.cjs.js +1 -1
- package/dist/tree-item.esm.js +1 -1
- package/dist/tree.cjs.js +1 -1
- package/dist/tree.esm.js +1 -1
- package/dist/visually-hidden.cjs.js +1 -1
- package/dist/visually-hidden.esm.js +1 -1
- package/dist/wizard.cjs.js +4 -4
- package/dist/wizard.esm.js +4 -4
- package/package.json +3 -2
- package/dist/focus-scope-Bwug2gDv.js +0 -1
- package/dist/focus-scope-CmEsG5UZ.mjs +0 -138
- package/dist/runtime-CXw4SGV9.js +0 -5
- package/dist/ui-button-C3OmI7Sn.mjs +0 -684
- package/dist/ui-button-CnLwXBnx.js +0 -520
- package/dist/ui-icon-D3avtxX_.js +0 -207
- package/dist/ui-icon-DLhB08Fo.mjs +0 -361
package/dist/masonry-grid.esm.js
CHANGED
package/dist/menu.cjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const x=require("./ElementBase-CbUsP3D6.js"),p=require("./clone-source-C7E_ri5f.js"),A=require("./trigger-DkPsKxsP.js"),E=require("./portal-XbYR3m_q.js"),S=require("./dismissable-layer-DNfrKA20.js"),k=require("./positioner-DZ1FW6A9.js"),m=require("./overlay-motion-B56x1GoY.js"),w=require("./menu-item-styles-DUdyjQ7i.js");function v(r){return r==="top"||r==="left"||r==="right"?r:"bottom"}function C(r){return r==="sm"||r==="1"||r==="compact"?"sm":r==="lg"||r==="3"||r==="comfortable"?"lg":"md"}function I(r){return!r||r==="default"?null:r==="none"?"0px":r==="sm"?"8px":r==="md"?"12px":r==="lg"?"16px":r==="full"?"999px":r==="square"?"6px":r==="soft"?"14px":/^\d+(\.\d+)?$/.test(r)?`${r}px`:/^\d+(\.\d+)?(px|rem|em|%)$/.test(r)?r:null}function l(r,e){return r.getAttribute(e)||""}function f(r,e){if(r==null)return e;const t=String(r).toLowerCase();return t!=="false"&&t!=="0"}function u(){return['[role="menuitem"]','[role="menuitemcheckbox"]','[role="menuitemradio"]',".item","[data-menu-item]"].join(", ")}function c(r){return r.hasAttribute("disabled")||r.getAttribute("aria-disabled")==="true"||!!r.disabled}function b(r){const e=typeof r.composedPath=="function"?r.composedPath():[];for(const i of e)if(i instanceof HTMLElement&&i.matches(u()))return i;const t=r.target;return t instanceof HTMLElement?t.closest(u()):null}const T=new Set(["variant","density","shape","elevation","tone","size","radius"]),L=["--ui-menu-bg","--ui-menu-color","--ui-menu-border-color","--ui-menu-border","--ui-menu-shadow","--ui-menu-radius","--ui-menu-padding","--ui-menu-min-width","--ui-menu-ring","--ui-menu-backdrop","--ui-menu-z","--ui-menu-item-radius","--ui-menu-item-gap","--ui-menu-item-min-height","--ui-menu-item-pad-y","--ui-menu-item-pad-x","--ui-menu-item-font-size","--ui-menu-item-line-height","--ui-menu-separator-margin","--ui-menu-item-hover-bg","--ui-menu-item-active-color"],P=`
|
|
2
2
|
:host {
|
|
3
3
|
--ui-menu-bg: var(--base-menu-bg, var(--color-panel-solid, var(--ui-color-surface, var(--ui-surface, #ffffff))));
|
|
4
4
|
--ui-menu-color: var(--ui-color-text, var(--ui-text, #0f172a));
|
|
@@ -40,8 +40,8 @@
|
|
|
40
40
|
pointer-events: none;
|
|
41
41
|
opacity: 0.62;
|
|
42
42
|
}
|
|
43
|
-
`,
|
|
44
|
-
${
|
|
43
|
+
`,O=`
|
|
44
|
+
${m.OVERLAY_MOTION_CSS}
|
|
45
45
|
|
|
46
46
|
.menu {
|
|
47
47
|
position: absolute;
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
--ui-menu-bg: #0f172a;
|
|
100
100
|
--ui-menu-color: #f8fafc;
|
|
101
101
|
--ui-menu-border-color: #334155;
|
|
102
|
-
--ui-menu-ring: #93c5fd;
|
|
102
|
+
--ui-menu-ring: var(--ui-color-accent-on-dark, #93c5fd);
|
|
103
103
|
--ui-menu-item-hover-bg: color-mix(in srgb, #ffffff 12%, transparent);
|
|
104
104
|
}
|
|
105
105
|
|
|
@@ -175,7 +175,7 @@
|
|
|
175
175
|
--ui-menu-item-active-color: inherit;
|
|
176
176
|
}
|
|
177
177
|
|
|
178
|
-
${
|
|
178
|
+
${w.createSharedMenuItemCss({scopes:[".menu"],prefix:"--ui-menu",shortcutSelectors:[".shortcut",".meta"],activeStateSelectors:['.item[data-active="true"]','[role="menuitem"][data-active="true"]','[role="menuitemcheckbox"][data-active="true"]','[role="menuitemradio"][data-active="true"]','[data-menu-item][data-active="true"]']})}
|
|
179
179
|
|
|
180
180
|
.menu[data-variant="solid"] [role="menuitem"]:hover,
|
|
181
181
|
.menu[data-variant="solid"] [role="menuitem"]:focus-visible,
|
|
@@ -246,8 +246,8 @@
|
|
|
246
246
|
box-shadow: none;
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
|
-
`;class v extends y.ElementBase{constructor(){super(),this._isOpen=!1,this._portalEl=null,this._positioner=null,this._dismissableLayer=null,this._restoreFocusEl=null,this._typeaheadBuffer="",this._typeaheadTimer=null,this._globalListenersBound=!1,this._menuClickHandler=null,this._menuId=`ui-menu-${Math.random().toString(36).slice(2,10)}`,this._onHostClick=this._onHostClick.bind(this),this._onDocumentKeyDown=this._onDocumentKeyDown.bind(this),this._onDocumentScroll=this._onDocumentScroll.bind(this),this._onSlotChange=this._onSlotChange.bind(this)}static get observedAttributes(){return["open","disabled","placement","variant","size","density","radius","shape","elevation","tone","close-on-select","close-on-scroll","typeahead"]}connectedCallback(){super.connectedCallback(),this.addEventListener("click",this._onHostClick),this.root.addEventListener("slotchange",this._onSlotChange),this._syncOpenState(),this._syncTriggerA11y()}disconnectedCallback(){this.removeEventListener("click",this._onHostClick),this.root.removeEventListener("slotchange",this._onSlotChange),this._unbindGlobalListeners(),this._teardownPortal(),super.disconnectedCallback()}attributeChangedCallback(e,t,i){if(t!==i){if(e==="open"){this._syncOpenState();return}if(!(e==="close-on-select"||e==="close-on-scroll"||e==="typeahead")){if(e==="disabled"){this.hasAttribute("disabled")&&this.close(),this._syncTriggerA11y();return}if(e==="placement"&&this._isOpen){this._rebuildPositioner();return}C.has(e)&&this._isOpen&&this._syncPortalVisualState()}}}open(){this.hasAttribute("disabled")||this.setAttribute("open","")}close(){this.removeAttribute("open")}toggle(){this.hasAttribute("open")?this.close():this.open()}get closeOnSelect(){return p(this.getAttribute("close-on-select"),!0)}set closeOnSelect(e){this.setAttribute("close-on-select",e?"true":"false")}get closeOnScroll(){return p(this.getAttribute("close-on-scroll"),!0)}set closeOnScroll(e){this.setAttribute("close-on-scroll",e?"true":"false")}get typeahead(){return p(this.getAttribute("typeahead"),!0)}set typeahead(e){this.setAttribute("typeahead",e?"true":"false")}_getTrigger(){return this.querySelector('[slot="trigger"]')}_getContentSource(){return this.querySelector('[slot="content"]')}_getItemSources(){return Array.from(this.querySelectorAll('[slot="item"]'))}_onSlotChange(){this._isOpen&&this._rebuildPortalContent()}_syncTriggerA11y(){const e=this._getTrigger();if(!e)return;const t=x.resolveTriggerControl(e);if(t.setAttribute("aria-haspopup","menu"),t.setAttribute("aria-expanded",this._isOpen?"true":"false"),t.setAttribute("aria-controls",this._menuId),this.hasAttribute("disabled")){t.setAttribute("aria-disabled","true"),t.setAttribute("tabindex","-1");return}t.getAttribute("aria-disabled")==="true"&&t.removeAttribute("aria-disabled"),t.getAttribute("tabindex")==="-1"&&t.removeAttribute("tabindex")}_syncOpenState(){const e=this.hasAttribute("open")&&!this.hasAttribute("disabled");if(e===this._isOpen){this._syncTriggerA11y(),e&&!this._portalEl?this._mountPortal():e&&this._positioner?.update();return}if(this._isOpen=e,this._syncTriggerA11y(),e){this._bindGlobalListeners(),this._restoreFocusEl=document.activeElement,this._mountPortal(),this.dispatchEvent(new CustomEvent("open",{bubbles:!0})),this.dispatchEvent(new CustomEvent("change",{bubbles:!0,detail:{open:!0}})),requestAnimationFrame(()=>this._focusFirstItem());return}this._unbindGlobalListeners(),this._teardownPortal(!0),this.dispatchEvent(new CustomEvent("close",{bubbles:!0})),this.dispatchEvent(new CustomEvent("change",{bubbles:!0,detail:{open:!1}}));const t=this._getTrigger();if(t)try{t.focus({preventScroll:!0})}catch{t.focus()}this._restoreFocusEl=null}_bindGlobalListeners(){this._globalListenersBound||(document.addEventListener("keydown",this._onDocumentKeyDown),document.addEventListener("scroll",this._onDocumentScroll,{passive:!0,capture:!0}),this._globalListenersBound=!0)}_unbindGlobalListeners(){this._globalListenersBound&&(document.removeEventListener("keydown",this._onDocumentKeyDown),document.removeEventListener("scroll",this._onDocumentScroll,!0),this._globalListenersBound=!1)}_clearActiveState(){this._portalEl&&this._portalEl.querySelectorAll(u()).forEach(e=>e.removeAttribute("data-active"))}_queryItems(){return this._portalEl?Array.from(this._portalEl.querySelectorAll(u())).filter(e=>!m(e)):[]}_focusItem(e){if(e){this._clearActiveState(),e.setAttribute("data-active","true");try{e.focus({preventScroll:!0})}catch{e.focus()}typeof e.scrollIntoView=="function"&&e.scrollIntoView({block:"nearest"})}}_focusFirstItem(){this._focusItem(this._queryItems()[0]||null)}_focusLastItem(){const e=this._queryItems();this._focusItem(e[e.length-1]||null)}_moveFocus(e){const t=this._queryItems();if(!t.length)return;const i=document.activeElement,n=i?t.findIndex(o=>o===i||o.contains(i)):-1,s=n===-1?0:Math.max(0,Math.min(t.length-1,n+e));this._focusItem(t[s]||null)}_resetTypeahead(){this._typeaheadBuffer="",this._typeaheadTimer!=null&&(window.clearTimeout(this._typeaheadTimer),this._typeaheadTimer=null)}_isTypeaheadKey(e){return e.ctrlKey||e.metaKey||e.altKey?!1:e.key.length===1&&/\S/.test(e.key)}_handleTypeahead(e){if(!this.typeahead||!this._isTypeaheadKey(e))return!1;this._typeaheadBuffer=`${this._typeaheadBuffer}${e.key.toLowerCase()}`.slice(0,24),this._typeaheadTimer!=null&&window.clearTimeout(this._typeaheadTimer),this._typeaheadTimer=window.setTimeout(()=>this._resetTypeahead(),420);const t=document.activeElement,i=this._queryItems();if(!i.length)return!1;const n=t?i.findIndex(a=>a===t||a.contains(t)):-1,o=(n>=0?[...i.slice(n+1),...i.slice(0,n+1)]:i).find(a=>(a.textContent||"").trim().toLowerCase().startsWith(this._typeaheadBuffer));return o?(e.preventDefault(),this._focusItem(o),!0):!1}_applySelectionBehavior(e){const t=e.getAttribute("role");if(t==="menuitemcheckbox"){const n=e.getAttribute("aria-checked")==="true";e.setAttribute("aria-checked",n?"false":"true"),e.setAttribute("data-state",n?"unchecked":"checked");return}if(t!=="menuitemradio"||!this._portalEl)return;const i=e.getAttribute("data-group")||e.getAttribute("name")||"";this._portalEl.querySelectorAll('[role="menuitemradio"]').forEach(n=>{const s=n.getAttribute("data-group")||n.getAttribute("name")||"";i&&s!==i||(n.setAttribute("aria-checked",n===e?"true":"false"),n.setAttribute("data-state",n===e?"checked":"unchecked"))})}_handleItemSelect(e){this._applySelectionBehavior(e);const t=e.getAttribute("data-index"),i=t!=null&&!Number.isNaN(Number(t))?Number(t):void 0;this.dispatchEvent(new CustomEvent("select",{bubbles:!0,detail:{index:i,value:e.getAttribute("data-value")||e.getAttribute("value")||void 0,label:e.getAttribute("aria-label")||e.textContent?.trim()||void 0,checked:e.getAttribute("aria-checked")==="true",item:e}})),this.closeOnSelect?this.close():this._focusItem(e)}_buildLegacyItems(e){const t=this._getItemSources();return t.forEach((i,n)=>{const s=i.cloneNode(!0);s.removeAttribute("slot"),s.getAttribute("role")||s.setAttribute("role","menuitem"),s.classList.contains("item")||s.classList.add("item"),s.hasAttribute("tabindex")||s.setAttribute("tabindex","-1"),s.hasAttribute("data-index")||s.setAttribute("data-index",String(n)),e.appendChild(s)}),t.length}_hydrateMenuItems(e){const t=Array.from(e.querySelectorAll(u()));return t.forEach((i,n)=>{i.getAttribute("role")||i.setAttribute("role","menuitem"),i.hasAttribute("tabindex")||i.setAttribute("tabindex","-1"),i.classList.contains("item")||i.classList.add("item"),i.hasAttribute("data-index")||i.setAttribute("data-index",String(n))}),t.length}_applyPortalTokens(e){const t=window.getComputedStyle(this);T.forEach(i=>{const n=t.getPropertyValue(i).trim();n?e.style.setProperty(i,n):e.style.removeProperty(i)})}_applyPortalVariantData(e){const t=l(this,"variant"),i=w(this.getAttribute("size")||this.getAttribute("density")),n=l(this,"density"),s=this.getAttribute("radius"),o=l(this,"shape"),a=l(this,"elevation"),d=l(this,"tone"),b=t==="default"||t===""?"":t==="line"?"outline":t==="glass"?"soft":t;b?e.setAttribute("data-variant",b):e.removeAttribute("data-variant"),i!=="md"?e.setAttribute("data-size",i):e.removeAttribute("data-size"),n&&n!=="default"?e.setAttribute("data-density",n):e.removeAttribute("data-density"),a&&a!=="default"?e.setAttribute("data-elevation",a):e.removeAttribute("data-elevation");const g=d==="default"||d==="brand"||d===""?"":d;g?e.setAttribute("data-tone",g):e.removeAttribute("data-tone");const h=I(s||o||null);h?(e.style.setProperty("--ui-menu-radius",h),e.style.setProperty("--ui-menu-item-radius",h==="999px"?"999px":`calc(${h} - 2px)`)):(e.style.removeProperty("--ui-menu-radius"),e.style.removeProperty("--ui-menu-item-radius"))}_syncPortalVisualState(){this._portalEl&&(this._applyPortalTokens(this._portalEl),this._applyPortalVariantData(this._portalEl),this._portalEl.setAttribute("aria-hidden","false"),this._portalEl.setAttribute("aria-busy","false"),this._portalEl.style.display="block",this._portalEl.style.visibility="visible",this._portalEl.style.opacity="1",this._portalEl.style.transform="translateY(0px) scale(1)",this._portalEl.style.pointerEvents="auto")}_attachMenuEvents(e){this._menuClickHandler=t=>{const i=f(t);!i||m(i)||this._handleItemSelect(i)},e.addEventListener("click",this._menuClickHandler),e.addEventListener("mouseover",t=>{const i=f(t);!i||m(i)||this._focusItem(i)}),e.addEventListener("focusin",t=>{const i=f(t);!i||m(i)||this._focusItem(i)}),e.addEventListener("mouseleave",()=>this._clearActiveState())}_buildPortalElement(){const e=document.createElement("div");e.className="surface menu",e.id=this._menuId,e.setAttribute("part","menu"),e.setAttribute("role","menu"),e.setAttribute("tabindex","-1"),e.setAttribute("aria-hidden","false"),e.setAttribute("aria-busy","false"),e.setAttribute("data-placement",_(this.getAttribute("placement")));const t=document.createElement("style");t.textContent=P,e.appendChild(t);const i=this._getContentSource();let n=0;if(i){const s=i.cloneNode(!0);s.removeAttribute("slot"),e.appendChild(s)}else n=this._buildLegacyItems(e);if(n=this._hydrateMenuItems(e)||n,n===0){const s=document.createElement("div");s.className="empty-state",s.textContent="No items",e.appendChild(s)}return this._applyPortalTokens(e),this._applyPortalVariantData(e),e.style.display="block",e.style.visibility="visible",e.style.opacity="1",e.style.transform="translateY(0px) scale(1)",e.style.pointerEvents="auto",this._attachMenuEvents(e),e}_rebuildPortalContent(){if(!this._portalEl)return;const e=this._portalEl.parentElement;if(!e)return;const t=this._portalEl,i=this._buildPortalElement();e.replaceChild(i,t),this._portalEl=i,this._rebuildPositioner(),c.openOverlay(i,{animate:!1})}_rebuildPositioner(){const e=this._getTrigger();!this._portalEl||!e||(this._positioner?.destroy(),this._positioner=S.createPositioner({anchor:e,floating:this._portalEl,placement:_(this.getAttribute("placement")),offset:6,flip:!0,shift:!0,fitViewport:!0,observeScroll:!1}))}_mountPortal(){const e=this._getTrigger();if(!e)return;let t=!1;if(this._portalEl)this._syncPortalVisualState();else{this._portalEl=this._buildPortalElement();const i=A.createPortalContainer();if(!i){this._portalEl=null;return}i.appendChild(this._portalEl),t=!0}this._rebuildPositioner(),t&&this._portalEl&&c.openOverlay(this._portalEl),this._dismissableLayer?.destroy(),this._dismissableLayer=E.createDismissableLayer({node:this._portalEl,trigger:e,closeOnEscape:!0,closeOnPointerOutside:!0,onDismiss:()=>this.close()})}_teardownPortal(e=!1){this._dismissableLayer?.destroy(),this._dismissableLayer=null,this._positioner?.destroy(),this._positioner=null,e?c.retireOverlay(this._portalEl):c.removeOverlay(this._portalEl),this._portalEl=null,this._menuClickHandler=null,this._resetTypeahead()}_isEventInsideTrigger(e){const t=this._getTrigger();return!!t&&e.composedPath().includes(t)}_isEventInsideMenu(e){return!!this._portalEl&&e.composedPath().includes(this._portalEl)}_isInternalScrollEvent(e){const t=typeof e.composedPath=="function"?e.composedPath():[];if(this._portalEl&&t.includes(this._portalEl))return!0;const i=this._getTrigger();if(i&&t.includes(i))return!0;const n=e.target;return!!(n instanceof Node&&(this._portalEl?.contains(n)||i?.contains(n)))}_onHostClick(e){this.hasAttribute("disabled")||this._isEventInsideTrigger(e)&&(e.preventDefault(),this.toggle())}_onDocumentScroll(e){!this._isOpen||!this.closeOnScroll||this._isInternalScrollEvent(e)||this.close()}_onDocumentKeyDown(e){if(!this._isOpen){if(e.key!=="ArrowDown"&&e.key!=="ArrowUp"||!this._isEventInsideTrigger(e))return;e.preventDefault(),this.open(),requestAnimationFrame(()=>{e.key==="ArrowUp"?this._focusLastItem():this._focusFirstItem()});return}if(!(!this._isEventInsideTrigger(e)&&!this._isEventInsideMenu(e))&&!this._handleTypeahead(e)){if(e.key==="Escape"){e.preventDefault(),e.stopPropagation(),this.close();return}if(e.key==="ArrowDown"){e.preventDefault(),this._moveFocus(1);return}if(e.key==="ArrowUp"){e.preventDefault(),this._moveFocus(-1);return}if(e.key==="Home"){e.preventDefault(),this._focusFirstItem();return}if(e.key==="End"){e.preventDefault(),this._focusLastItem();return}if(e.key==="Tab"){this.close();return}if(e.key==="Enter"||e.key===" "){const t=document.activeElement;if(!t||!this._portalEl?.contains(t))return;const i=t.closest(u());if(!i||m(i))return;e.preventDefault(),this._handleItemSelect(i)}}}render(){this.setContent(`
|
|
250
|
-
<style>${
|
|
249
|
+
`;class y extends x.ElementBase{constructor(){super(),this._isOpen=!1,this._portalEl=null,this._positioner=null,this._dismissableLayer=null,this._restoreFocusEl=null,this._typeaheadBuffer="",this._typeaheadTimer=null,this._globalListenersBound=!1,this._menuClickHandler=null,this._menuId=`ui-menu-${Math.random().toString(36).slice(2,10)}`,this._onHostClick=this._onHostClick.bind(this),this._onDocumentKeyDown=this._onDocumentKeyDown.bind(this),this._onDocumentScroll=this._onDocumentScroll.bind(this),this._onSlotChange=this._onSlotChange.bind(this)}static get observedAttributes(){return["open","disabled","placement","variant","size","density","radius","shape","elevation","tone","close-on-select","close-on-scroll","typeahead"]}connectedCallback(){super.connectedCallback(),this.addEventListener("click",this._onHostClick),this.root.addEventListener("slotchange",this._onSlotChange),this._hideSources(),this._syncOpenState(),this._syncTriggerA11y()}disconnectedCallback(){this.removeEventListener("click",this._onHostClick),this.root.removeEventListener("slotchange",this._onSlotChange),this._unbindGlobalListeners(),this._teardownPortal(),super.disconnectedCallback()}attributeChangedCallback(e,t,i){if(t!==i){if(e==="open"){this._syncOpenState();return}if(!(e==="close-on-select"||e==="close-on-scroll"||e==="typeahead")){if(e==="disabled"){this.hasAttribute("disabled")&&this.close(),this._syncTriggerA11y();return}if(e==="placement"&&this._isOpen){this._rebuildPositioner();return}T.has(e)&&this._isOpen&&this._syncPortalVisualState()}}}open(){this.hasAttribute("disabled")||this.setAttribute("open","")}close(){this.removeAttribute("open")}toggle(){this.hasAttribute("open")?this.close():this.open()}get closeOnSelect(){return f(this.getAttribute("close-on-select"),!0)}set closeOnSelect(e){this.setAttribute("close-on-select",e?"true":"false")}get closeOnScroll(){return f(this.getAttribute("close-on-scroll"),!0)}set closeOnScroll(e){this.setAttribute("close-on-scroll",e?"true":"false")}get typeahead(){return f(this.getAttribute("typeahead"),!0)}set typeahead(e){this.setAttribute("typeahead",e?"true":"false")}_getTrigger(){return this.querySelector('[slot="trigger"]')}_getContentSource(){return this.querySelector('[slot="content"]')}_getItemSources(){return Array.from(this.querySelectorAll('[slot="item"]'))}_onSlotChange(){this._hideSources(),this._isOpen&&this._rebuildPortalContent()}_hideSources(){p.hideCloneSource(this._getContentSource()),this._getItemSources().forEach(e=>p.hideCloneSource(e))}_syncTriggerA11y(){const e=this._getTrigger();if(!e)return;const t=A.resolveTriggerControl(e);if(t.setAttribute("aria-haspopup","menu"),t.setAttribute("aria-expanded",this._isOpen?"true":"false"),t.setAttribute("aria-controls",this._menuId),this.hasAttribute("disabled")){t.setAttribute("aria-disabled","true"),t.setAttribute("tabindex","-1");return}t.getAttribute("aria-disabled")==="true"&&t.removeAttribute("aria-disabled"),t.getAttribute("tabindex")==="-1"&&t.removeAttribute("tabindex")}_syncOpenState(){const e=this.hasAttribute("open")&&!this.hasAttribute("disabled");if(e===this._isOpen){this._syncTriggerA11y(),e&&!this._portalEl?this._mountPortal():e&&this._positioner?.update();return}if(this._isOpen=e,this._syncTriggerA11y(),e){this._bindGlobalListeners(),this._restoreFocusEl=document.activeElement,this._mountPortal(),this.dispatchEvent(new CustomEvent("open",{bubbles:!0})),this.dispatchEvent(new CustomEvent("change",{bubbles:!0,detail:{open:!0}})),requestAnimationFrame(()=>this._focusFirstItem());return}this._unbindGlobalListeners(),this._teardownPortal(!0),this.dispatchEvent(new CustomEvent("close",{bubbles:!0})),this.dispatchEvent(new CustomEvent("change",{bubbles:!0,detail:{open:!1}}));const t=this._getTrigger();if(t)try{t.focus({preventScroll:!0})}catch{t.focus()}this._restoreFocusEl=null}_bindGlobalListeners(){this._globalListenersBound||(document.addEventListener("keydown",this._onDocumentKeyDown),document.addEventListener("scroll",this._onDocumentScroll,{passive:!0,capture:!0}),this._globalListenersBound=!0)}_unbindGlobalListeners(){this._globalListenersBound&&(document.removeEventListener("keydown",this._onDocumentKeyDown),document.removeEventListener("scroll",this._onDocumentScroll,!0),this._globalListenersBound=!1)}_clearActiveState(){this._portalEl&&this._portalEl.querySelectorAll(u()).forEach(e=>e.removeAttribute("data-active"))}_queryItems(){return this._portalEl?Array.from(this._portalEl.querySelectorAll(u())).filter(e=>!c(e)):[]}_focusItem(e){if(e){this._clearActiveState(),e.setAttribute("data-active","true");try{e.focus({preventScroll:!0})}catch{e.focus()}typeof e.scrollIntoView=="function"&&e.scrollIntoView({block:"nearest"})}}_focusFirstItem(){this._focusItem(this._queryItems()[0]||null)}_focusLastItem(){const e=this._queryItems();this._focusItem(e[e.length-1]||null)}_moveFocus(e){const t=this._queryItems();if(!t.length)return;const i=document.activeElement,n=i?t.findIndex(o=>o===i||o.contains(i)):-1,s=n===-1?0:Math.max(0,Math.min(t.length-1,n+e));this._focusItem(t[s]||null)}_resetTypeahead(){this._typeaheadBuffer="",this._typeaheadTimer!=null&&(window.clearTimeout(this._typeaheadTimer),this._typeaheadTimer=null)}_isTypeaheadKey(e){return e.ctrlKey||e.metaKey||e.altKey?!1:e.key.length===1&&/\S/.test(e.key)}_handleTypeahead(e){if(!this.typeahead||!this._isTypeaheadKey(e))return!1;this._typeaheadBuffer=`${this._typeaheadBuffer}${e.key.toLowerCase()}`.slice(0,24),this._typeaheadTimer!=null&&window.clearTimeout(this._typeaheadTimer),this._typeaheadTimer=window.setTimeout(()=>this._resetTypeahead(),420);const t=document.activeElement,i=this._queryItems();if(!i.length)return!1;const n=t?i.findIndex(a=>a===t||a.contains(t)):-1,o=(n>=0?[...i.slice(n+1),...i.slice(0,n+1)]:i).find(a=>(a.textContent||"").trim().toLowerCase().startsWith(this._typeaheadBuffer));return o?(e.preventDefault(),this._focusItem(o),!0):!1}_applySelectionBehavior(e){const t=e.getAttribute("role");if(t==="menuitemcheckbox"){const n=e.getAttribute("aria-checked")==="true";e.setAttribute("aria-checked",n?"false":"true"),e.setAttribute("data-state",n?"unchecked":"checked");return}if(t!=="menuitemradio"||!this._portalEl)return;const i=e.getAttribute("data-group")||e.getAttribute("name")||"";this._portalEl.querySelectorAll('[role="menuitemradio"]').forEach(n=>{const s=n.getAttribute("data-group")||n.getAttribute("name")||"";i&&s!==i||(n.setAttribute("aria-checked",n===e?"true":"false"),n.setAttribute("data-state",n===e?"checked":"unchecked"))})}_handleItemSelect(e){this._applySelectionBehavior(e);const t=e.getAttribute("data-index"),i=t!=null&&!Number.isNaN(Number(t))?Number(t):void 0;this.dispatchEvent(new CustomEvent("select",{bubbles:!0,detail:{index:i,value:e.getAttribute("data-value")||e.getAttribute("value")||void 0,label:e.getAttribute("aria-label")||e.textContent?.trim()||void 0,checked:e.getAttribute("aria-checked")==="true",item:e}})),this.closeOnSelect?this.close():this._focusItem(e)}_buildLegacyItems(e){const t=this._getItemSources();return t.forEach((i,n)=>{const s=p.revealClone(i.cloneNode(!0));s.removeAttribute("slot"),s.getAttribute("role")||s.setAttribute("role","menuitem"),s.classList.contains("item")||s.classList.add("item"),s.hasAttribute("tabindex")||s.setAttribute("tabindex","-1"),s.hasAttribute("data-index")||s.setAttribute("data-index",String(n)),e.appendChild(s)}),t.length}_hydrateMenuItems(e){const t=Array.from(e.querySelectorAll(u()));return t.forEach((i,n)=>{i.getAttribute("role")||i.setAttribute("role","menuitem"),i.hasAttribute("tabindex")||i.setAttribute("tabindex","-1"),i.classList.contains("item")||i.classList.add("item"),i.hasAttribute("data-index")||i.setAttribute("data-index",String(n))}),t.length}_applyPortalTokens(e){const t=window.getComputedStyle(this);L.forEach(i=>{const n=t.getPropertyValue(i).trim();n?e.style.setProperty(i,n):e.style.removeProperty(i)})}_applyPortalVariantData(e){const t=l(this,"variant"),i=C(this.getAttribute("size")||this.getAttribute("density")),n=l(this,"density"),s=this.getAttribute("radius"),o=l(this,"shape"),a=l(this,"elevation"),d=l(this,"tone"),g=t==="default"||t===""?"":t==="line"?"outline":t==="glass"?"soft":t;g?e.setAttribute("data-variant",g):e.removeAttribute("data-variant"),i!=="md"?e.setAttribute("data-size",i):e.removeAttribute("data-size"),n&&n!=="default"?e.setAttribute("data-density",n):e.removeAttribute("data-density"),a&&a!=="default"?e.setAttribute("data-elevation",a):e.removeAttribute("data-elevation");const _=d==="default"||d==="brand"||d===""?"":d;_?e.setAttribute("data-tone",_):e.removeAttribute("data-tone");const h=I(s||o||null);h?(e.style.setProperty("--ui-menu-radius",h),e.style.setProperty("--ui-menu-item-radius",h==="999px"?"999px":`calc(${h} - 2px)`)):(e.style.removeProperty("--ui-menu-radius"),e.style.removeProperty("--ui-menu-item-radius"))}_syncPortalVisualState(){this._portalEl&&(this._applyPortalTokens(this._portalEl),this._applyPortalVariantData(this._portalEl),this._portalEl.setAttribute("aria-hidden","false"),this._portalEl.setAttribute("aria-busy","false"),this._portalEl.style.display="block",this._portalEl.style.visibility="visible",this._portalEl.style.opacity="1",this._portalEl.style.transform="translateY(0px) scale(1)",this._portalEl.style.pointerEvents="auto")}_attachMenuEvents(e){this._menuClickHandler=t=>{const i=b(t);!i||c(i)||this._handleItemSelect(i)},e.addEventListener("click",this._menuClickHandler),e.addEventListener("mouseover",t=>{const i=b(t);!i||c(i)||this._focusItem(i)}),e.addEventListener("focusin",t=>{const i=b(t);!i||c(i)||this._focusItem(i)}),e.addEventListener("mouseleave",()=>this._clearActiveState())}_buildPortalElement(){const e=document.createElement("div");e.className="surface menu",e.id=this._menuId,e.setAttribute("part","menu"),e.setAttribute("role","menu"),e.setAttribute("tabindex","-1"),e.setAttribute("aria-hidden","false"),e.setAttribute("aria-busy","false"),e.setAttribute("data-placement",v(this.getAttribute("placement")));const t=document.createElement("style");t.textContent=O,e.appendChild(t);const i=this._getContentSource();let n=0;if(i){const s=p.revealClone(i.cloneNode(!0));s.removeAttribute("slot"),e.appendChild(s)}else n=this._buildLegacyItems(e);if(n=this._hydrateMenuItems(e)||n,n===0){const s=document.createElement("div");s.className="empty-state",s.textContent="No items",e.appendChild(s)}return this._applyPortalTokens(e),this._applyPortalVariantData(e),e.style.display="block",e.style.visibility="visible",e.style.opacity="1",e.style.transform="translateY(0px) scale(1)",e.style.pointerEvents="auto",this._attachMenuEvents(e),e}_rebuildPortalContent(){if(!this._portalEl)return;const e=this._portalEl.parentElement;if(!e)return;const t=this._portalEl,i=this._buildPortalElement();e.replaceChild(i,t),this._portalEl=i,this._rebuildPositioner(),m.openOverlay(i,{animate:!1})}_rebuildPositioner(){const e=this._getTrigger();!this._portalEl||!e||(this._positioner?.destroy(),this._positioner=k.createPositioner({anchor:e,floating:this._portalEl,placement:v(this.getAttribute("placement")),offset:6,flip:!0,shift:!0,fitViewport:!0,observeScroll:!1}))}_mountPortal(){const e=this._getTrigger();if(!e)return;let t=!1;if(this._portalEl)this._syncPortalVisualState();else{this._portalEl=this._buildPortalElement();const i=E.createPortalContainer();if(!i){this._portalEl=null;return}i.appendChild(this._portalEl),t=!0}this._rebuildPositioner(),t&&this._portalEl&&m.openOverlay(this._portalEl),this._dismissableLayer?.destroy(),this._dismissableLayer=S.createDismissableLayer({node:this._portalEl,trigger:e,closeOnEscape:!0,closeOnPointerOutside:!0,onDismiss:()=>this.close()})}_teardownPortal(e=!1){this._dismissableLayer?.destroy(),this._dismissableLayer=null,this._positioner?.destroy(),this._positioner=null,e?m.retireOverlay(this._portalEl):m.removeOverlay(this._portalEl),this._portalEl=null,this._menuClickHandler=null,this._resetTypeahead()}_isEventInsideTrigger(e){const t=this._getTrigger();return!!t&&e.composedPath().includes(t)}_isEventInsideMenu(e){return!!this._portalEl&&e.composedPath().includes(this._portalEl)}_isInternalScrollEvent(e){const t=typeof e.composedPath=="function"?e.composedPath():[];if(this._portalEl&&t.includes(this._portalEl))return!0;const i=this._getTrigger();if(i&&t.includes(i))return!0;const n=e.target;return!!(n instanceof Node&&(this._portalEl?.contains(n)||i?.contains(n)))}_onHostClick(e){this.hasAttribute("disabled")||this._isEventInsideTrigger(e)&&(e.preventDefault(),this.toggle())}_onDocumentScroll(e){!this._isOpen||!this.closeOnScroll||this._isInternalScrollEvent(e)||this.close()}_onDocumentKeyDown(e){if(!this._isOpen){if(e.key!=="ArrowDown"&&e.key!=="ArrowUp"||!this._isEventInsideTrigger(e))return;e.preventDefault(),this.open(),requestAnimationFrame(()=>{e.key==="ArrowUp"?this._focusLastItem():this._focusFirstItem()});return}if(!(!this._isEventInsideTrigger(e)&&!this._isEventInsideMenu(e))&&!this._handleTypeahead(e)){if(e.key==="Escape"){e.preventDefault(),e.stopPropagation(),this.close();return}if(e.key==="ArrowDown"){e.preventDefault(),this._moveFocus(1);return}if(e.key==="ArrowUp"){e.preventDefault(),this._moveFocus(-1);return}if(e.key==="Home"){e.preventDefault(),this._focusFirstItem();return}if(e.key==="End"){e.preventDefault(),this._focusLastItem();return}if(e.key==="Tab"){this.close();return}if(e.key==="Enter"||e.key===" "){const t=document.activeElement;if(!t||!this._portalEl?.contains(t))return;const i=t.closest(u());if(!i||c(i))return;e.preventDefault(),this._handleItemSelect(i)}}}render(){this.setContent(`
|
|
250
|
+
<style>${P}</style>
|
|
251
251
|
<div class="trigger" part="trigger">
|
|
252
252
|
<slot name="trigger"></slot>
|
|
253
253
|
</div>
|
|
@@ -256,4 +256,4 @@
|
|
|
256
256
|
<slot name="content"></slot>
|
|
257
257
|
</div>
|
|
258
258
|
<slot></slot>
|
|
259
|
-
`),this._syncTriggerA11y(),this._isOpen&&!this._portalEl?this._mountPortal():this._isOpen&&this._positioner?.update()}shouldRenderOnAttributeChange(){return!1}}typeof customElements<"u"&&!customElements.get("ui-menu")&&customElements.define("ui-menu",
|
|
259
|
+
`),this._syncTriggerA11y(),this._isOpen&&!this._portalEl?this._mountPortal():this._isOpen&&this._positioner?.update()}shouldRenderOnAttributeChange(){return!1}}typeof customElements<"u"&&!customElements.get("ui-menu")&&customElements.define("ui-menu",y);exports.UIMenu=y;
|
package/dist/menu.esm.js
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import { E as
|
|
2
|
-
import { r as
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
1
|
+
import { E as x } from "./ElementBase-D5QsC5Vw.mjs";
|
|
2
|
+
import { h as g, r as _ } from "./clone-source-BxK2pEVw.mjs";
|
|
3
|
+
import { r as A } from "./trigger-BjnxLCeQ.mjs";
|
|
4
|
+
import { b as E } from "./portal-DeaM1tYY.mjs";
|
|
5
|
+
import { c as S } from "./dismissable-layer-BmPIoK80.mjs";
|
|
6
|
+
import { e as k } from "./positioner-BE8Nbho2.mjs";
|
|
7
|
+
import { O as w, o as v, r as C, a as I } from "./overlay-motion-BX3dPLay.mjs";
|
|
8
|
+
import { c as T } from "./menu-item-styles-CdqxPUuw.mjs";
|
|
9
|
+
function y(r) {
|
|
9
10
|
return r === "top" || r === "left" || r === "right" ? r : "bottom";
|
|
10
11
|
}
|
|
11
|
-
function
|
|
12
|
+
function L(r) {
|
|
12
13
|
return r === "sm" || r === "1" || r === "compact" ? "sm" : r === "lg" || r === "3" || r === "comfortable" ? "lg" : "md";
|
|
13
14
|
}
|
|
14
|
-
function
|
|
15
|
+
function P(r) {
|
|
15
16
|
return !r || r === "default" ? null : r === "none" ? "0px" : r === "sm" ? "8px" : r === "md" ? "12px" : r === "lg" ? "16px" : r === "full" ? "999px" : r === "square" ? "6px" : r === "soft" ? "14px" : /^\d+(\.\d+)?$/.test(r) ? `${r}px` : /^\d+(\.\d+)?(px|rem|em|%)$/.test(r) ? r : null;
|
|
16
17
|
}
|
|
17
18
|
function l(r, e) {
|
|
@@ -42,7 +43,7 @@ function p(r) {
|
|
|
42
43
|
const t = r.target;
|
|
43
44
|
return t instanceof HTMLElement ? t.closest(u()) : null;
|
|
44
45
|
}
|
|
45
|
-
const
|
|
46
|
+
const O = /* @__PURE__ */ new Set(["variant", "density", "shape", "elevation", "tone", "size", "radius"]), D = [
|
|
46
47
|
"--ui-menu-bg",
|
|
47
48
|
"--ui-menu-color",
|
|
48
49
|
"--ui-menu-border-color",
|
|
@@ -64,7 +65,7 @@ const L = /* @__PURE__ */ new Set(["variant", "density", "shape", "elevation", "
|
|
|
64
65
|
"--ui-menu-separator-margin",
|
|
65
66
|
"--ui-menu-item-hover-bg",
|
|
66
67
|
"--ui-menu-item-active-color"
|
|
67
|
-
],
|
|
68
|
+
], z = `
|
|
68
69
|
:host {
|
|
69
70
|
--ui-menu-bg: var(--base-menu-bg, var(--color-panel-solid, var(--ui-color-surface, var(--ui-surface, #ffffff))));
|
|
70
71
|
--ui-menu-color: var(--ui-color-text, var(--ui-text, #0f172a));
|
|
@@ -106,8 +107,8 @@ const L = /* @__PURE__ */ new Set(["variant", "density", "shape", "elevation", "
|
|
|
106
107
|
pointer-events: none;
|
|
107
108
|
opacity: 0.62;
|
|
108
109
|
}
|
|
109
|
-
`,
|
|
110
|
-
${
|
|
110
|
+
`, M = `
|
|
111
|
+
${w}
|
|
111
112
|
|
|
112
113
|
.menu {
|
|
113
114
|
position: absolute;
|
|
@@ -165,7 +166,7 @@ const L = /* @__PURE__ */ new Set(["variant", "density", "shape", "elevation", "
|
|
|
165
166
|
--ui-menu-bg: #0f172a;
|
|
166
167
|
--ui-menu-color: #f8fafc;
|
|
167
168
|
--ui-menu-border-color: #334155;
|
|
168
|
-
--ui-menu-ring: #93c5fd;
|
|
169
|
+
--ui-menu-ring: var(--ui-color-accent-on-dark, #93c5fd);
|
|
169
170
|
--ui-menu-item-hover-bg: color-mix(in srgb, #ffffff 12%, transparent);
|
|
170
171
|
}
|
|
171
172
|
|
|
@@ -241,7 +242,7 @@ const L = /* @__PURE__ */ new Set(["variant", "density", "shape", "elevation", "
|
|
|
241
242
|
--ui-menu-item-active-color: inherit;
|
|
242
243
|
}
|
|
243
244
|
|
|
244
|
-
${
|
|
245
|
+
${T({
|
|
245
246
|
scopes: [".menu"],
|
|
246
247
|
prefix: "--ui-menu",
|
|
247
248
|
shortcutSelectors: [".shortcut", ".meta"],
|
|
@@ -324,7 +325,7 @@ const L = /* @__PURE__ */ new Set(["variant", "density", "shape", "elevation", "
|
|
|
324
325
|
}
|
|
325
326
|
}
|
|
326
327
|
`;
|
|
327
|
-
class
|
|
328
|
+
class H extends x {
|
|
328
329
|
constructor() {
|
|
329
330
|
super(), this._isOpen = !1, this._portalEl = null, this._positioner = null, this._dismissableLayer = null, this._restoreFocusEl = null, this._typeaheadBuffer = "", this._typeaheadTimer = null, this._globalListenersBound = !1, this._menuClickHandler = null, this._menuId = `ui-menu-${Math.random().toString(36).slice(2, 10)}`, this._onHostClick = this._onHostClick.bind(this), this._onDocumentKeyDown = this._onDocumentKeyDown.bind(this), this._onDocumentScroll = this._onDocumentScroll.bind(this), this._onSlotChange = this._onSlotChange.bind(this);
|
|
330
331
|
}
|
|
@@ -346,7 +347,7 @@ class z extends v {
|
|
|
346
347
|
];
|
|
347
348
|
}
|
|
348
349
|
connectedCallback() {
|
|
349
|
-
super.connectedCallback(), this.addEventListener("click", this._onHostClick), this.root.addEventListener("slotchange", this._onSlotChange), this._syncOpenState(), this._syncTriggerA11y();
|
|
350
|
+
super.connectedCallback(), this.addEventListener("click", this._onHostClick), this.root.addEventListener("slotchange", this._onSlotChange), this._hideSources(), this._syncOpenState(), this._syncTriggerA11y();
|
|
350
351
|
}
|
|
351
352
|
disconnectedCallback() {
|
|
352
353
|
this.removeEventListener("click", this._onHostClick), this.root.removeEventListener("slotchange", this._onSlotChange), this._unbindGlobalListeners(), this._teardownPortal(), super.disconnectedCallback();
|
|
@@ -366,7 +367,7 @@ class z extends v {
|
|
|
366
367
|
this._rebuildPositioner();
|
|
367
368
|
return;
|
|
368
369
|
}
|
|
369
|
-
|
|
370
|
+
O.has(e) && this._isOpen && this._syncPortalVisualState();
|
|
370
371
|
}
|
|
371
372
|
}
|
|
372
373
|
}
|
|
@@ -407,12 +408,15 @@ class z extends v {
|
|
|
407
408
|
return Array.from(this.querySelectorAll('[slot="item"]'));
|
|
408
409
|
}
|
|
409
410
|
_onSlotChange() {
|
|
410
|
-
this._isOpen && this._rebuildPortalContent();
|
|
411
|
+
this._hideSources(), this._isOpen && this._rebuildPortalContent();
|
|
412
|
+
}
|
|
413
|
+
_hideSources() {
|
|
414
|
+
g(this._getContentSource()), this._getItemSources().forEach((e) => g(e));
|
|
411
415
|
}
|
|
412
416
|
_syncTriggerA11y() {
|
|
413
417
|
const e = this._getTrigger();
|
|
414
418
|
if (!e) return;
|
|
415
|
-
const t =
|
|
419
|
+
const t = A(e);
|
|
416
420
|
if (t.setAttribute("aria-haspopup", "menu"), t.setAttribute("aria-expanded", this._isOpen ? "true" : "false"), t.setAttribute("aria-controls", this._menuId), this.hasAttribute("disabled")) {
|
|
417
421
|
t.setAttribute("aria-disabled", "true"), t.setAttribute("tabindex", "-1");
|
|
418
422
|
return;
|
|
@@ -472,8 +476,8 @@ class z extends v {
|
|
|
472
476
|
_moveFocus(e) {
|
|
473
477
|
const t = this._queryItems();
|
|
474
478
|
if (!t.length) return;
|
|
475
|
-
const i = document.activeElement, n = i ? t.findIndex((o) => o === i || o.contains(i)) : -1,
|
|
476
|
-
this._focusItem(t[
|
|
479
|
+
const i = document.activeElement, n = i ? t.findIndex((o) => o === i || o.contains(i)) : -1, s = n === -1 ? 0 : Math.max(0, Math.min(t.length - 1, n + e));
|
|
480
|
+
this._focusItem(t[s] || null);
|
|
477
481
|
}
|
|
478
482
|
_resetTypeahead() {
|
|
479
483
|
this._typeaheadBuffer = "", this._typeaheadTimer != null && (window.clearTimeout(this._typeaheadTimer), this._typeaheadTimer = null);
|
|
@@ -486,7 +490,7 @@ class z extends v {
|
|
|
486
490
|
this._typeaheadBuffer = `${this._typeaheadBuffer}${e.key.toLowerCase()}`.slice(0, 24), this._typeaheadTimer != null && window.clearTimeout(this._typeaheadTimer), this._typeaheadTimer = window.setTimeout(() => this._resetTypeahead(), 420);
|
|
487
491
|
const t = document.activeElement, i = this._queryItems();
|
|
488
492
|
if (!i.length) return !1;
|
|
489
|
-
const n = t ? i.findIndex((
|
|
493
|
+
const n = t ? i.findIndex((a) => a === t || a.contains(t)) : -1, o = (n >= 0 ? [...i.slice(n + 1), ...i.slice(0, n + 1)] : i).find((a) => (a.textContent || "").trim().toLowerCase().startsWith(this._typeaheadBuffer));
|
|
490
494
|
return o ? (e.preventDefault(), this._focusItem(o), !0) : !1;
|
|
491
495
|
}
|
|
492
496
|
_applySelectionBehavior(e) {
|
|
@@ -499,8 +503,8 @@ class z extends v {
|
|
|
499
503
|
if (t !== "menuitemradio" || !this._portalEl) return;
|
|
500
504
|
const i = e.getAttribute("data-group") || e.getAttribute("name") || "";
|
|
501
505
|
this._portalEl.querySelectorAll('[role="menuitemradio"]').forEach((n) => {
|
|
502
|
-
const
|
|
503
|
-
i &&
|
|
506
|
+
const s = n.getAttribute("data-group") || n.getAttribute("name") || "";
|
|
507
|
+
i && s !== i || (n.setAttribute("aria-checked", n === e ? "true" : "false"), n.setAttribute("data-state", n === e ? "checked" : "unchecked"));
|
|
504
508
|
});
|
|
505
509
|
}
|
|
506
510
|
_handleItemSelect(e) {
|
|
@@ -522,8 +526,8 @@ class z extends v {
|
|
|
522
526
|
_buildLegacyItems(e) {
|
|
523
527
|
const t = this._getItemSources();
|
|
524
528
|
return t.forEach((i, n) => {
|
|
525
|
-
const
|
|
526
|
-
|
|
529
|
+
const s = _(i.cloneNode(!0));
|
|
530
|
+
s.removeAttribute("slot"), s.getAttribute("role") || s.setAttribute("role", "menuitem"), s.classList.contains("item") || s.classList.add("item"), s.hasAttribute("tabindex") || s.setAttribute("tabindex", "-1"), s.hasAttribute("data-index") || s.setAttribute("data-index", String(n)), e.appendChild(s);
|
|
527
531
|
}), t.length;
|
|
528
532
|
}
|
|
529
533
|
_hydrateMenuItems(e) {
|
|
@@ -534,17 +538,17 @@ class z extends v {
|
|
|
534
538
|
}
|
|
535
539
|
_applyPortalTokens(e) {
|
|
536
540
|
const t = window.getComputedStyle(this);
|
|
537
|
-
|
|
541
|
+
D.forEach((i) => {
|
|
538
542
|
const n = t.getPropertyValue(i).trim();
|
|
539
543
|
n ? e.style.setProperty(i, n) : e.style.removeProperty(i);
|
|
540
544
|
});
|
|
541
545
|
}
|
|
542
546
|
_applyPortalVariantData(e) {
|
|
543
|
-
const t = l(this, "variant"), i =
|
|
544
|
-
f ? e.setAttribute("data-variant", f) : e.removeAttribute("data-variant"), i !== "md" ? e.setAttribute("data-size", i) : e.removeAttribute("data-size"), n && n !== "default" ? e.setAttribute("data-density", n) : e.removeAttribute("data-density"),
|
|
547
|
+
const t = l(this, "variant"), i = L(this.getAttribute("size") || this.getAttribute("density")), n = l(this, "density"), s = this.getAttribute("radius"), o = l(this, "shape"), a = l(this, "elevation"), c = l(this, "tone"), f = t === "default" || t === "" ? "" : t === "line" ? "outline" : t === "glass" ? "soft" : t;
|
|
548
|
+
f ? e.setAttribute("data-variant", f) : e.removeAttribute("data-variant"), i !== "md" ? e.setAttribute("data-size", i) : e.removeAttribute("data-size"), n && n !== "default" ? e.setAttribute("data-density", n) : e.removeAttribute("data-density"), a && a !== "default" ? e.setAttribute("data-elevation", a) : e.removeAttribute("data-elevation");
|
|
545
549
|
const b = c === "default" || c === "brand" || c === "" ? "" : c;
|
|
546
550
|
b ? e.setAttribute("data-tone", b) : e.removeAttribute("data-tone");
|
|
547
|
-
const d =
|
|
551
|
+
const d = P(s || o || null);
|
|
548
552
|
d ? (e.style.setProperty("--ui-menu-radius", d), e.style.setProperty("--ui-menu-item-radius", d === "999px" ? "999px" : `calc(${d} - 2px)`)) : (e.style.removeProperty("--ui-menu-radius"), e.style.removeProperty("--ui-menu-item-radius"));
|
|
549
553
|
}
|
|
550
554
|
_syncPortalVisualState() {
|
|
@@ -564,19 +568,19 @@ class z extends v {
|
|
|
564
568
|
}
|
|
565
569
|
_buildPortalElement() {
|
|
566
570
|
const e = document.createElement("div");
|
|
567
|
-
e.className = "surface menu", e.id = this._menuId, e.setAttribute("part", "menu"), e.setAttribute("role", "menu"), e.setAttribute("tabindex", "-1"), e.setAttribute("aria-hidden", "false"), e.setAttribute("aria-busy", "false"), e.setAttribute("data-placement",
|
|
571
|
+
e.className = "surface menu", e.id = this._menuId, e.setAttribute("part", "menu"), e.setAttribute("role", "menu"), e.setAttribute("tabindex", "-1"), e.setAttribute("aria-hidden", "false"), e.setAttribute("aria-busy", "false"), e.setAttribute("data-placement", y(this.getAttribute("placement")));
|
|
568
572
|
const t = document.createElement("style");
|
|
569
|
-
t.textContent =
|
|
573
|
+
t.textContent = M, e.appendChild(t);
|
|
570
574
|
const i = this._getContentSource();
|
|
571
575
|
let n = 0;
|
|
572
576
|
if (i) {
|
|
573
|
-
const
|
|
574
|
-
|
|
577
|
+
const s = _(i.cloneNode(!0));
|
|
578
|
+
s.removeAttribute("slot"), e.appendChild(s);
|
|
575
579
|
} else
|
|
576
580
|
n = this._buildLegacyItems(e);
|
|
577
581
|
if (n = this._hydrateMenuItems(e) || n, n === 0) {
|
|
578
|
-
const
|
|
579
|
-
|
|
582
|
+
const s = document.createElement("div");
|
|
583
|
+
s.className = "empty-state", s.textContent = "No items", e.appendChild(s);
|
|
580
584
|
}
|
|
581
585
|
return this._applyPortalTokens(e), this._applyPortalVariantData(e), e.style.display = "block", e.style.visibility = "visible", e.style.opacity = "1", e.style.transform = "translateY(0px) scale(1)", e.style.pointerEvents = "auto", this._attachMenuEvents(e), e;
|
|
582
586
|
}
|
|
@@ -585,14 +589,14 @@ class z extends v {
|
|
|
585
589
|
const e = this._portalEl.parentElement;
|
|
586
590
|
if (!e) return;
|
|
587
591
|
const t = this._portalEl, i = this._buildPortalElement();
|
|
588
|
-
e.replaceChild(i, t), this._portalEl = i, this._rebuildPositioner(),
|
|
592
|
+
e.replaceChild(i, t), this._portalEl = i, this._rebuildPositioner(), v(i, { animate: !1 });
|
|
589
593
|
}
|
|
590
594
|
_rebuildPositioner() {
|
|
591
595
|
const e = this._getTrigger();
|
|
592
|
-
!this._portalEl || !e || (this._positioner?.destroy(), this._positioner =
|
|
596
|
+
!this._portalEl || !e || (this._positioner?.destroy(), this._positioner = k({
|
|
593
597
|
anchor: e,
|
|
594
598
|
floating: this._portalEl,
|
|
595
|
-
placement:
|
|
599
|
+
placement: y(this.getAttribute("placement")),
|
|
596
600
|
offset: 6,
|
|
597
601
|
flip: !0,
|
|
598
602
|
shift: !0,
|
|
@@ -608,14 +612,14 @@ class z extends v {
|
|
|
608
612
|
this._syncPortalVisualState();
|
|
609
613
|
else {
|
|
610
614
|
this._portalEl = this._buildPortalElement();
|
|
611
|
-
const i =
|
|
615
|
+
const i = E();
|
|
612
616
|
if (!i) {
|
|
613
617
|
this._portalEl = null;
|
|
614
618
|
return;
|
|
615
619
|
}
|
|
616
620
|
i.appendChild(this._portalEl), t = !0;
|
|
617
621
|
}
|
|
618
|
-
this._rebuildPositioner(), t && this._portalEl &&
|
|
622
|
+
this._rebuildPositioner(), t && this._portalEl && v(this._portalEl), this._dismissableLayer?.destroy(), this._dismissableLayer = S({
|
|
619
623
|
node: this._portalEl,
|
|
620
624
|
trigger: e,
|
|
621
625
|
closeOnEscape: !0,
|
|
@@ -624,7 +628,7 @@ class z extends v {
|
|
|
624
628
|
});
|
|
625
629
|
}
|
|
626
630
|
_teardownPortal(e = !1) {
|
|
627
|
-
this._dismissableLayer?.destroy(), this._dismissableLayer = null, this._positioner?.destroy(), this._positioner = null, e ?
|
|
631
|
+
this._dismissableLayer?.destroy(), this._dismissableLayer = null, this._positioner?.destroy(), this._positioner = null, e ? C(this._portalEl) : I(this._portalEl), this._portalEl = null, this._menuClickHandler = null, this._resetTypeahead();
|
|
628
632
|
}
|
|
629
633
|
_isEventInsideTrigger(e) {
|
|
630
634
|
const t = this._getTrigger();
|
|
@@ -691,7 +695,7 @@ class z extends v {
|
|
|
691
695
|
}
|
|
692
696
|
render() {
|
|
693
697
|
this.setContent(`
|
|
694
|
-
<style>${
|
|
698
|
+
<style>${z}</style>
|
|
695
699
|
<div class="trigger" part="trigger">
|
|
696
700
|
<slot name="trigger"></slot>
|
|
697
701
|
</div>
|
|
@@ -706,7 +710,7 @@ class z extends v {
|
|
|
706
710
|
return !1;
|
|
707
711
|
}
|
|
708
712
|
}
|
|
709
|
-
typeof customElements < "u" && !customElements.get("ui-menu") && customElements.define("ui-menu",
|
|
713
|
+
typeof customElements < "u" && !customElements.get("ui-menu") && customElements.define("ui-menu", H);
|
|
710
714
|
export {
|
|
711
|
-
|
|
715
|
+
H as UIMenu
|
|
712
716
|
};
|
package/dist/menubar.cjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const E=require("./ElementBase-CbUsP3D6.js"),y=require("./clone-source-C7E_ri5f.js"),k=require("./portal-XbYR3m_q.js"),I=require("./collection-qv8A8rq4.js"),L=require("./dismissable-layer-DNfrKA20.js"),m=require("./roving-focus-group-BdJ_4Njm.js"),C=require("./positioner-DZ1FW6A9.js"),v=require("./overlay-motion-B56x1GoY.js");require("./listbox-CTpRpuF7.js");const T=require("./menu-item-styles-DUdyjQ7i.js"),D=":scope > .submenu",z=["--ui-color-primary","--ui-color-primary-hover","--ui-color-foreground-on-primary","--ui-color-background","--ui-color-surface","--ui-color-surface-alt","--ui-color-text","--ui-color-muted","--ui-color-border","--ui-color-focus-ring","--ui-color-success","--ui-color-danger","--ui-color-warning","--ui-primary","--ui-primary-hover","--ui-foreground","--ui-background","--ui-surface","--ui-surface-alt","--ui-text","--ui-muted","--ui-border","--ui-focus-ring","--ui-radius","--color-background","--color-surface","--color-panel","--color-panel-solid","--color-panel-translucent","--color-overlay","--accent-contrast","--accent-surface","--accent-indicator","--accent-track"],B=[{prefix:"--accent-",from:1,to:12},{prefix:"--accent-a",from:1,to:12},{prefix:"--gray-",from:1,to:12},{prefix:"--gray-a",from:1,to:12},{prefix:"--black-a",from:1,to:12},{prefix:"--white-a",from:1,to:12},{prefix:"--shadow-",from:1,to:6},{prefix:"--radius-",from:1,to:6}];function O(n){return n==="sm"||n==="1"||n==="compact"?"sm":n==="lg"||n==="3"||n==="comfortable"?"lg":"md"}function x(n){return!n||n==="default"?null:n==="none"||n==="square"?"0px":n==="sm"?"8px":n==="md"||n==="soft"?"12px":n==="lg"?"16px":n==="full"?"999px":/^\d+(\.\d+)?$/.test(n)?`${n}px`:/^\d+(\.\d+)?(px|rem|em|%)$/.test(n)?n:null}const F=`
|
|
2
2
|
:host {
|
|
3
3
|
--ui-menubar-gap: var(--base-menubar-gap, 6px);
|
|
4
4
|
--ui-menubar-padding: var(--base-menubar-padding, 6px);
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
--ui-menubar-item-hover-bg: color-mix(in srgb, #ffffff 16%, transparent);
|
|
79
79
|
--ui-menubar-item-active-bg: color-mix(in srgb, #ffffff 20%, transparent);
|
|
80
80
|
--ui-menubar-item-active-color: #ffffff;
|
|
81
|
-
--ui-menubar-ring: #93c5fd;
|
|
81
|
+
--ui-menubar-ring: var(--ui-color-accent-on-dark, #93c5fd);
|
|
82
82
|
border-color: #334155;
|
|
83
83
|
}
|
|
84
84
|
|
|
@@ -204,7 +204,7 @@
|
|
|
204
204
|
border-color: Highlight;
|
|
205
205
|
}
|
|
206
206
|
}
|
|
207
|
-
`,
|
|
207
|
+
`,R=`
|
|
208
208
|
${v.OVERLAY_MOTION_CSS}
|
|
209
209
|
|
|
210
210
|
.ui-menubar-portal {
|
|
@@ -306,7 +306,7 @@
|
|
|
306
306
|
0 6px 18px rgba(2, 6, 23, 0.14);
|
|
307
307
|
}
|
|
308
308
|
|
|
309
|
-
${
|
|
309
|
+
${T.createSharedMenuItemCss({scopes:[".ui-menubar-portal .content-host"],prefix:"--ui-menubar-panel",shortcutSelectors:[".shortcut",".meta"],activeStateSelectors:['.item[data-submenu-open="true"]','[role="menuitem"][data-submenu-open="true"]','[role="menuitemcheckbox"][data-submenu-open="true"]','[role="menuitemradio"][data-submenu-open="true"]','[data-menu-item][data-submenu-open="true"]','.item[data-active="true"]','[role="menuitem"][data-active="true"]','[role="menuitemcheckbox"][data-active="true"]','[role="menuitemradio"][data-active="true"]','[data-menu-item][data-active="true"]']})}
|
|
310
310
|
|
|
311
311
|
.ui-menubar-portal[data-variant="solid"] .content-host [role="menuitem"]:hover,
|
|
312
312
|
.ui-menubar-portal[data-variant="solid"] .content-host [role="menuitem"]:focus-visible,
|
|
@@ -415,8 +415,8 @@
|
|
|
415
415
|
box-shadow: none;
|
|
416
416
|
}
|
|
417
417
|
}
|
|
418
|
-
`;function
|
|
419
|
-
<style>${
|
|
418
|
+
`;function q(n){return n==="top"||n==="left"||n==="right"?n:"bottom"}function M(n){const e=q(n);return e==="top"?"top":e==="left"?"left":e==="right"?"right":"bottom"}function _(n,e){if(n==null)return e;const t=String(n).toLowerCase();return t!=="false"&&t!=="0"}function S(n,e){return e<=0?-1:Number.isNaN(n)||n<0?0:n>=e?e-1:n}function l(){return['[role="menuitem"]','[role="menuitemcheckbox"]','[role="menuitemradio"]',".item","[data-menu-item]"].join(", ")}function g(n){return n.hasAttribute("disabled")||n.getAttribute("aria-disabled")==="true"||!!n.disabled}function A(n){const e=typeof n.composedPath=="function"?n.composedPath():[];for(const r of e)if(r instanceof HTMLElement&&r.matches(l()))return r;const t=n.target;return t instanceof HTMLElement?t.closest(l()):null}function d(n){return n.hasAttribute("disabled")||n.disabled}function h(n,e){return n.getAttribute(e)||""}class w extends E.ElementBase{constructor(){super(),this._items=[],this._contents=[],this._itemSlot=null,this._contentSlot=null,this._uid=Math.random().toString(36).slice(2,8),this._ignoreSelected=!1,this._open=!1,this._portalEl=null,this._portalSurfaceEl=null,this._portalContentHostEl=null,this._positioner=null,this._dismissableLayer=null,this._panelForIndex=-1,this._typeaheadBuffer="",this._typeaheadTimer=null,this._submenuRaf=null,this._globalListenersBound=!1,this._focusIndex=-1,this._onClick=this._onClick.bind(this),this._onKeyDown=this._onKeyDown.bind(this),this._onDocKeyDown=this._onDocKeyDown.bind(this),this._onDocScroll=this._onDocScroll.bind(this),this._onSlotChange=this._onSlotChange.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onPanelPointerOver=this._onPanelPointerOver.bind(this),this._onPanelPointerLeave=this._onPanelPointerLeave.bind(this),this._onPanelFocusIn=this._onPanelFocusIn.bind(this)}static get observedAttributes(){return["selected","open","headless","loop","orientation","variant","size","density","radius","shape","elevation","tone","placement","close-on-select","close-on-scroll","typeahead"]}_setPanelFlag(e,t){this._portalEl&&(t?this._portalEl.setAttribute(`data-${e}`,"true"):this._portalEl.removeAttribute(`data-${e}`))}connectedCallback(){super.connectedCallback(),this.root.addEventListener("click",this._onClick),this.root.addEventListener("keydown",this._onKeyDown),this.root.addEventListener("mousemove",this._onMouseMove),this._attachSlotListeners(),this._syncHostVisualState(),this._syncState()}disconnectedCallback(){this.root.removeEventListener("click",this._onClick),this.root.removeEventListener("keydown",this._onKeyDown),this.root.removeEventListener("mousemove",this._onMouseMove),this._unbindGlobalListeners(),this._detachSlotListeners(),this._teardownPanel(),super.disconnectedCallback()}attributeChangedCallback(e,t,r){if(t!==r&&!(e==="selected"&&this._ignoreSelected)){if((e==="radius"||e==="shape")&&this._syncHostVisualState(),this._syncBarA11y(),this._open&&e==="placement"){this._rebuildPanel();return}if(this._open&&(e==="variant"||e==="size"||e==="density"||e==="radius"||e==="shape"||e==="elevation"||e==="tone")){this._syncPanelVisualState();return}this._syncState()}}render(){const e=this.getAttribute("orientation")==="vertical"?"vertical":"horizontal";this.setContent(`
|
|
419
|
+
<style>${F}</style>
|
|
420
420
|
<div class="bar" part="bar" role="menubar" aria-orientation="${e}">
|
|
421
421
|
<slot name="item"></slot>
|
|
422
422
|
</div>
|
|
@@ -424,10 +424,10 @@
|
|
|
424
424
|
<slot name="content"></slot>
|
|
425
425
|
</div>
|
|
426
426
|
<slot></slot>
|
|
427
|
-
`),this._attachSlotListeners(),this._syncStructure(),this._syncHostVisualState(),this._syncBarA11y(),this._open&&!this._portalEl?this._rebuildPanel():this._open&&this._positioner?.update()}open(){this.hasAttribute("headless")||this.setAttribute("open","")}close(){this.removeAttribute("open")}toggle(){this.hasAttribute("open")?this.close():this.open()}get closeOnSelect(){return _(this.getAttribute("close-on-select"),!0)}set closeOnSelect(e){this.setAttribute("close-on-select",e?"true":"false")}get closeOnScroll(){return _(this.getAttribute("close-on-scroll"),!0)}set closeOnScroll(e){this.setAttribute("close-on-scroll",e?"true":"false")}get typeahead(){return _(this.getAttribute("typeahead"),!0)}set typeahead(e){this.setAttribute("typeahead",e?"true":"false")}_attachSlotListeners(){const e=this.root.querySelector('slot[name="item"]'),t=this.root.querySelector('slot[name="content"]');this._itemSlot&&this._itemSlot!==e&&this._itemSlot.removeEventListener("slotchange",this._onSlotChange),this._contentSlot&&this._contentSlot!==t&&this._contentSlot.removeEventListener("slotchange",this._onSlotChange),e&&this._itemSlot!==e&&e.addEventListener("slotchange",this._onSlotChange),t&&this._contentSlot!==t&&t.addEventListener("slotchange",this._onSlotChange),this._itemSlot=e,this._contentSlot=t}_detachSlotListeners(){this._itemSlot&&this._itemSlot.removeEventListener("slotchange",this._onSlotChange),this._contentSlot&&this._contentSlot.removeEventListener("slotchange",this._onSlotChange),this._itemSlot=null,this._contentSlot=null}_syncBarA11y(){const e=this.root.querySelector(".bar");if(!e)return;const t=this.getAttribute("orientation")==="vertical"?"vertical":"horizontal";e.setAttribute("aria-orientation",t)}_syncHostVisualState(){const e=
|
|
428
|
-
<style>${
|
|
427
|
+
`),this._attachSlotListeners(),this._syncStructure(),this._syncHostVisualState(),this._syncBarA11y(),this._open&&!this._portalEl?this._rebuildPanel():this._open&&this._positioner?.update()}open(){this.hasAttribute("headless")||this.setAttribute("open","")}close(){this.removeAttribute("open")}toggle(){this.hasAttribute("open")?this.close():this.open()}get closeOnSelect(){return _(this.getAttribute("close-on-select"),!0)}set closeOnSelect(e){this.setAttribute("close-on-select",e?"true":"false")}get closeOnScroll(){return _(this.getAttribute("close-on-scroll"),!0)}set closeOnScroll(e){this.setAttribute("close-on-scroll",e?"true":"false")}get typeahead(){return _(this.getAttribute("typeahead"),!0)}set typeahead(e){this.setAttribute("typeahead",e?"true":"false")}_attachSlotListeners(){const e=this.root.querySelector('slot[name="item"]'),t=this.root.querySelector('slot[name="content"]');this._itemSlot&&this._itemSlot!==e&&this._itemSlot.removeEventListener("slotchange",this._onSlotChange),this._contentSlot&&this._contentSlot!==t&&this._contentSlot.removeEventListener("slotchange",this._onSlotChange),e&&this._itemSlot!==e&&e.addEventListener("slotchange",this._onSlotChange),t&&this._contentSlot!==t&&t.addEventListener("slotchange",this._onSlotChange),this._itemSlot=e,this._contentSlot=t}_detachSlotListeners(){this._itemSlot&&this._itemSlot.removeEventListener("slotchange",this._onSlotChange),this._contentSlot&&this._contentSlot.removeEventListener("slotchange",this._onSlotChange),this._itemSlot=null,this._contentSlot=null}_syncBarA11y(){const e=this.root.querySelector(".bar");if(!e)return;const t=this.getAttribute("orientation")==="vertical"?"vertical":"horizontal";e.setAttribute("aria-orientation",t)}_syncHostVisualState(){const e=x(this.getAttribute("radius")||this.getAttribute("shape"));e?(this.style.setProperty("--ui-menubar-radius",e),this.style.setProperty("--ui-menubar-item-radius",e==="999px"?"999px":`calc(${e} - 2px)`),this.style.setProperty("--ui-menubar-panel-radius",e),this.style.setProperty("--ui-menubar-panel-item-radius",e==="999px"?"999px":`calc(${e} - 2px)`)):(this.style.removeProperty("--ui-menubar-radius"),this.style.removeProperty("--ui-menubar-item-radius"),this.style.removeProperty("--ui-menubar-panel-radius"),this.style.removeProperty("--ui-menubar-panel-item-radius"))}_onSlotChange(){this._syncState()}_loopEnabled(){return _(this.getAttribute("loop"),!0)}_isOpenAttribute(){return this.hasAttribute("open")&&!this.hasAttribute("headless")}_selectedIndex(){const e=this.getAttribute("selected");if(e==null||e==="")return this._items.length>0?0:-1;const t=Number(e);return Number.isNaN(t)?this._items.length>0?0:-1:t<0?-1:S(t,this._items.length)}_setSelectedAttribute(e){this._ignoreSelected=!0,this.setAttribute("selected",String(e)),this._ignoreSelected=!1}_moveIndex(e,t){if(this._items.length===0)return-1;const r=this._loopEnabled();let i=e+t;return i<0&&(i=r?this._items.length-1:0),i>=this._items.length&&(i=r?0:this._items.length-1),i}_syncState(){this._syncStructure();const e=this._isOpenAttribute()&&this._selectedIndex()>=0&&this._items.length>0;if(e!==this._open){if(this._open=e,e)this._bindGlobalListeners(),this._rebuildPanel(),this.dispatchEvent(new CustomEvent("open",{detail:{selected:this._selectedIndex()},bubbles:!0}));else{this._unbindGlobalListeners();const t=this._panelForIndex>=0?this._panelForIndex:this._selectedIndex();this._teardownPanel(!0),this.dispatchEvent(new CustomEvent("close",{detail:{previous:t},bubbles:!0}))}return}this._open?(this._bindGlobalListeners(),(this._selectedIndex()!==this._panelForIndex||!this._portalEl)&&this._rebuildPanel()):(this._unbindGlobalListeners(),this._teardownPanel(!0))}_bindGlobalListeners(){this._globalListenersBound||(document.addEventListener("keydown",this._onDocKeyDown),document.addEventListener("scroll",this._onDocScroll,{passive:!0,capture:!0}),this._globalListenersBound=!0)}_unbindGlobalListeners(){this._globalListenersBound&&(document.removeEventListener("keydown",this._onDocKeyDown),document.removeEventListener("scroll",this._onDocScroll,!0),this._globalListenersBound=!1)}_syncStructure(){this._items=this._itemSlot?this._itemSlot.assignedElements({flatten:!0}):[],this._contents=this._contentSlot?this._contentSlot.assignedElements({flatten:!0}):[],this._contents.forEach(i=>y.hideCloneSource(i));const e=this._selectedIndex(),t=m.resolveRovingFocusIndex(this._items,{activeIndex:this._focusIndex,selectedIndex:e,getDisabled:d});this._focusIndex=t;const r=this._isOpenAttribute();this._items.forEach((i,a)=>{const s=e===a,o=i.id||`ui-menubar-item-${this._uid}-${a}`,u=this._contents[a]?.id||`ui-menubar-content-${this._uid}-${a}`;i.id=o,i.setAttribute("role","menuitem"),i.setAttribute("tabindex",a===t&&!d(i)?"0":"-1"),i.setAttribute("aria-haspopup","menu"),i.setAttribute("aria-expanded",s&&r?"true":"false"),i.setAttribute("aria-controls",u),i.setAttribute("data-active",s?"true":"false")}),m.syncRovingTabStops(this._items,this._items[t]||null,{activeAttribute:null}),this._contents.forEach((i,a)=>{const s=i.id||`ui-menubar-content-${this._uid}-${a}`;i.id=s,i.setAttribute("role","menu"),i.setAttribute("tabindex","-1"),i.setAttribute("aria-hidden",e===a&&r?"false":"true"),this._items[a]?i.setAttribute("aria-labelledby",this._items[a].id):i.removeAttribute("aria-labelledby")})}_hydratePanelItems(e){Array.from(e.querySelectorAll(l())).forEach((r,i)=>{r.getAttribute("role")||r.setAttribute("role","menuitem"),r.hasAttribute("tabindex")||r.setAttribute("tabindex","-1"),r.hasAttribute("data-index")||r.setAttribute("data-index",String(i)),r.classList.contains("item")||r.classList.add("item")})}_queryPanelItemsIn(e){return this._panelListbox()?.queryEnabledItems({container:e||this._panelListbox()})||[]}_submenuFor(e){return e.querySelector(D)}_setOpenPanelBranch(e,t){const r=this._panelListbox();if(!r||(r.querySelectorAll('[data-submenu-open="true"]').forEach(s=>s.removeAttribute("data-submenu-open")),!e))return;const i=[];let a=e;for(;a;){const s=a.closest(".submenu");if(!s)break;const o=s.parentElement;if(!(o instanceof HTMLElement)||!o.matches(l()))break;i.unshift(o),a=o}i.forEach(s=>s.setAttribute("data-submenu-open","true")),t&&this._submenuFor(e)&&e.setAttribute("data-submenu-open","true")}_openPanelSubmenu(e,t){const r=this._submenuFor(e);if(!r||g(e))return!1;if(this._setOpenPanelBranch(e,!0),this._schedulePanelSubmenuLayout(),!t)return!0;const i=this._panelListbox()?.focusBoundary("first",{container:r,focus:!0,owner:this._panelSurface(),scroll:!0});return i&&this._setOpenPanelBranch(i,!1),!0}_closeParentPanelSubmenu(e){const t=e.closest(".submenu");if(!t)return!1;const r=t.parentElement;return!(r instanceof HTMLElement)||!r.matches(l())?!1:(this._focusPanelItem(r),this._setOpenPanelBranch(r,!1),r.removeAttribute("data-submenu-open"),!0)}_clearPanelSubmenuState(){const e=this._panelListbox();e&&e.querySelectorAll('[data-submenu-open="true"]').forEach(t=>t.removeAttribute("data-submenu-open"))}_schedulePanelSubmenuLayout(){this._submenuRaf!=null&&cancelAnimationFrame(this._submenuRaf),this._submenuRaf=requestAnimationFrame(()=>{this._submenuRaf=null,this._layoutPanelSubmenus()})}_layoutPanelSubmenus(){const e=this._panelListbox();if(!e)return;const t=window.innerWidth,r=window.innerHeight;Array.from(e.querySelectorAll('.item > .submenu, [role="menuitem"] > .submenu, [role="menuitemcheckbox"] > .submenu, [role="menuitemradio"] > .submenu, [data-menu-item] > .submenu')).forEach(a=>{const s=a.parentElement;if(!(s instanceof HTMLElement))return;s.removeAttribute("data-submenu-side"),s.removeAttribute("data-submenu-align");const o=a.style.display,u=a.style.visibility,c=a.style.pointerEvents,b=a.style.opacity,P=a.style.transform;a.style.display="grid",a.style.visibility="hidden",a.style.pointerEvents="none",a.style.opacity="0",a.style.transform="none";const p=s.getBoundingClientRect(),f=a.getBoundingClientRect();p.right+4+f.width>t-8&&p.left-4-f.width>=8&&s.setAttribute("data-submenu-side","left"),p.top+f.height>r-8&&p.bottom-f.height>=8&&s.setAttribute("data-submenu-align","up"),a.style.display=o,a.style.visibility=u,a.style.pointerEvents=c,a.style.opacity=b,a.style.transform=P})}_panelListbox(){return this._portalContentHostEl}_panelSurface(){return this._portalSurfaceEl}_buildPanelContent(e){const t=this._contents[e],r=document.createElement("div");r.className="ui-menubar-portal",r.style.position="absolute",r.style.pointerEvents="auto",r.innerHTML=`
|
|
428
|
+
<style>${R}</style>
|
|
429
429
|
<div class="surface menu-panel" part="menu" role="menu" aria-hidden="false" aria-busy="false" tabindex="-1">
|
|
430
430
|
<div class="state-row" part="state"></div>
|
|
431
431
|
<ui-listbox class="content-host" slot="menu" role="menu" item-selector="${l().replace(/"/g,""")}" direct-item-selector=":scope > [slot="menu"] > ${l().replace(/"/g,""")}" item-role="menuitem" active-attribute="data-active"></ui-listbox>
|
|
432
432
|
</div>
|
|
433
|
-
`;const i=r.querySelector("ui-listbox.content-host"),a=r.querySelector(".surface");if(!i||!a)return r;if(a.id=t?.id||`ui-menubar-panel-${this._uid}-${e}`,a.setAttribute("aria-labelledby",this._items[e]?.id||""),this._applyPanelVariantData(r),this._applyPanelTokens(r),t){const s=t.cloneNode(!0);s.setAttribute("slot","menu"),i.appendChild(s)}if(this._hydratePanelItems(i),i.refresh(),!i.querySelector(l())){const s=document.createElement("div");s.className="empty-state",s.textContent="No items",i.appendChild(s)}return r.addEventListener("click",s=>{const o=S(s);if(!o||g(o))return;if(this._submenuFor(o)){s.preventDefault(),this._openPanelSubmenu(o,!0);return}this._applyPanelSelectionBehavior(o);const u=o.getAttribute("data-index"),c=u!=null&&!Number.isNaN(Number(u))?Number(u):void 0;this.dispatchEvent(new CustomEvent("select",{detail:{selected:e,index:c,value:o.getAttribute("data-value")||o.getAttribute("value")||void 0,label:o.getAttribute("aria-label")||o.textContent?.trim()||void 0,checked:o.getAttribute("aria-checked")==="true",item:o},bubbles:!0})),this.closeOnSelect?this.close():this._focusPanelItem(o)}),r.addEventListener("pointerover",this._onPanelPointerOver),r.addEventListener("pointerleave",this._onPanelPointerLeave),r.addEventListener("focusin",this._onPanelFocusIn),r}_applyPanelVariantData(e){const t=h(this,"variant"),r=B(this.getAttribute("size")||this.getAttribute("density")),i=h(this,"density"),a=this.getAttribute("radius"),s=h(this,"shape"),o=h(this,"elevation"),u=h(this,"tone"),c=t==="default"||t===""?"":t==="glass"?"soft":t==="line"?"outline":t;c?e.setAttribute("data-variant",c):e.removeAttribute("data-variant"),r!=="md"?e.setAttribute("data-size",r):e.removeAttribute("data-size"),i&&i!=="default"?e.setAttribute("data-density",i):e.removeAttribute("data-density"),a?e.setAttribute("data-radius",a):e.removeAttribute("data-radius"),s&&s!=="default"?e.setAttribute("data-shape",s):e.removeAttribute("data-shape"),o&&o!=="default"?e.setAttribute("data-elevation",o):e.removeAttribute("data-elevation"),u&&u!=="default"&&u!=="brand"?e.setAttribute("data-tone",u):e.removeAttribute("data-tone"),this._open?e.setAttribute("data-open","true"):e.removeAttribute("data-open");const b=y(a||s||null);b?(e.style.setProperty("--ui-menubar-panel-radius",b),e.style.setProperty("--ui-menubar-panel-item-radius",b==="999px"?"999px":`calc(${b} - 2px)`)):(e.style.removeProperty("--ui-menubar-panel-radius"),e.style.removeProperty("--ui-menubar-panel-item-radius"))}_applyPanelTokens(e){const t=window.getComputedStyle(this);["--ui-color-primary","--ui-color-primary-hover","--ui-color-foreground-on-primary","--ui-color-background","--ui-color-surface","--ui-color-surface-alt","--ui-color-text","--ui-color-muted","--ui-color-border","--ui-color-focus-ring","--ui-color-success","--ui-color-danger","--ui-color-warning","--ui-primary","--ui-primary-hover","--ui-foreground","--ui-background","--ui-surface","--ui-surface-alt","--ui-text","--ui-muted","--ui-border","--ui-focus-ring","--ui-radius","--color-background","--color-surface","--color-panel","--color-panel-solid","--color-panel-translucent","--color-overlay","--accent-contrast","--accent-surface","--accent-indicator","--accent-track","--ui-menubar-ring","--ui-menubar-z","--ui-menubar-panel-bg","--ui-menubar-panel-color","--ui-menubar-panel-border","--ui-menubar-panel-shadow","--ui-menubar-panel-radius","--ui-menubar-panel-padding","--ui-menubar-panel-min-width","--ui-menubar-panel-item-radius","--ui-menubar-panel-item-gap","--ui-menubar-panel-item-min-height","--ui-menubar-panel-item-pad-y","--ui-menubar-panel-item-pad-x","--ui-menubar-panel-item-font-size","--ui-menubar-panel-item-font-weight","--ui-menubar-panel-item-line-height","--ui-menubar-panel-separator-margin","--ui-menubar-panel-item-hover-bg","--ui-menubar-panel-item-active-color"].forEach(i=>{const a=t.getPropertyValue(i).trim();a?e.style.setProperty(i,a):e.style.removeProperty(i)}),D.forEach(i=>{const a=t.getPropertyValue(i).trim();a?e.style.setProperty(i,a):e.style.removeProperty(i)}),z.forEach(({prefix:i,from:a,to:s})=>{for(let o=a;o<=s;o+=1){const u=`${i}${o}`,c=t.getPropertyValue(u).trim();c?e.style.setProperty(u,c):e.style.removeProperty(u)}})}_syncPanelVisualState(){const e=this._portalEl;if(!e)return;this._setPanelFlag("open",this._open),this._applyPanelVariantData(e),this._applyPanelTokens(e);const t=this._panelSurface();t&&(t.setAttribute("aria-hidden","false"),t.setAttribute("aria-busy","false"),t.removeAttribute("hidden"),t.style.display="block",t.style.visibility="visible",t.style.opacity="1",t.style.transform="translateY(0px) scale(1)",t.style.pointerEvents="auto");const r=e.querySelector(".state-row");r&&(r.textContent=""),this._schedulePanelSubmenuLayout()}_rebuildPanel(){if(!this._open)return;const e=this._selectedIndex(),t=this._items[e];if(e<0||!t){this._teardownPanel();return}this._teardownPanel();const r=this._buildPanelContent(e);this._portalEl=r,this._portalSurfaceEl=r.querySelector(".surface"),this._portalContentHostEl=r.querySelector("ui-listbox.content-host"),this._panelForIndex=e;const i=E.createPortalContainer();if(!i){this._portalEl=null,this._panelForIndex=-1;return}i.appendChild(r),this._positioner=L.createPositioner({anchor:t,floating:this._panelSurface()||r,placement:q(this.getAttribute("placement")),offset:6,flip:!0,shift:!0,fitViewport:!0,observeScroll:!1}),this._dismissableLayer=I.createDismissableLayer({node:this._panelSurface()||r,trigger:t,closeOnEscape:!0,closeOnPointerOutside:!0,onDismiss:()=>this.close()}),v.openOverlay(this._panelSurface()||r)}_teardownPanel(e=!1){this._dismissableLayer?.destroy(),this._dismissableLayer=null,this._positioner?.destroy(),this._positioner=null,e?v.retireOverlay(this._portalEl):v.removeOverlay(this._portalEl),this._portalEl=null,this._portalSurfaceEl=null,this._portalContentHostEl=null,this._panelForIndex=-1,this._submenuRaf!=null&&(cancelAnimationFrame(this._submenuRaf),this._submenuRaf=null),this._resetTypeahead()}_selectIndex(e,t){const r=this._selectedIndex(),i=x(e,this._items.length);i<0||(this._setSelectedAttribute(i),this.setAttribute("open",""),this._syncState(),this.dispatchEvent(new CustomEvent("change",{detail:{selected:i,previous:r,open:!0,reason:t},bubbles:!0})))}_focusItem(e){const t=this._items[e];t&&(this._focusIndex=e,m.syncRovingTabStops(this._items,t,{activeAttribute:null}),m.focusRovingItem(t))}_queryPanelItems(){return this._queryPanelItemsIn(this._panelListbox())}_focusPanelItem(e){e&&this._panelListbox()?.setActiveItem(e,{focus:!0,owner:this._panelSurface(),scroll:!0})}_focusPanelFirst(){this._panelListbox()?.focusBoundary("first",{focus:!0,owner:this._panelSurface(),scroll:!0})}_focusPanelLast(){this._panelListbox()?.focusBoundary("last",{focus:!0,owner:this._panelSurface(),scroll:!0})}_movePanelFocus(e){const t=document.activeElement,i=(t&&this._portalEl?.contains(t)?t.closest(l()):null)?.closest(".submenu")||this._panelListbox();this._panelListbox()?.move(e,{container:i,current:t&&this._portalEl?.contains(t)?t:null,focus:!0,owner:this._panelSurface(),scroll:!0})||this._focusPanelFirst()}_resetTypeahead(){this._typeaheadBuffer="",this._typeaheadTimer!=null&&(window.clearTimeout(this._typeaheadTimer),this._typeaheadTimer=null)}_isTypeaheadKey(e){return e.ctrlKey||e.metaKey||e.altKey?!1:e.key.length===1&&/\S/.test(e.key)}_typeaheadOnBar(e){if(!this.typeahead||!this._isTypeaheadKey(e))return!1;this._typeaheadBuffer=`${this._typeaheadBuffer}${e.key.toLowerCase()}`.slice(0,24),this._typeaheadTimer!=null&&window.clearTimeout(this._typeaheadTimer),this._typeaheadTimer=window.setTimeout(()=>this._resetTypeahead(),420);const t=this._items.findIndex(i=>i===e.target||i.contains(e.target)),r=k.findTypeaheadMatch(this._items,this._typeaheadBuffer,{startIndex:t,getLabel:i=>i.getAttribute("aria-label")||i.textContent||"",getDisabled:d});return r<0?!1:(e.preventDefault(),this._focusItem(r),this._open&&this._selectIndex(r,"keyboard"),!0)}_typeaheadOnPanel(e){if(!this.typeahead||!this._isTypeaheadKey(e))return!1;this._typeaheadBuffer=`${this._typeaheadBuffer}${e.key.toLowerCase()}`.slice(0,24),this._typeaheadTimer!=null&&window.clearTimeout(this._typeaheadTimer),this._typeaheadTimer=window.setTimeout(()=>this._resetTypeahead(),420);const t=document.activeElement,i=(t&&this._portalEl?.contains(t)?t.closest(l()):null)?.closest(".submenu")||this._panelListbox();return this._panelListbox()?.typeahead(this._typeaheadBuffer,{container:i,current:t&&this._portalEl?.contains(t)?t:null,focus:!0,owner:this._panelSurface(),scroll:!0})||null?(e.preventDefault(),!0):!1}_applyPanelSelectionBehavior(e){const t=e.getAttribute("role");if(t==="menuitemcheckbox"){const s=e.getAttribute("aria-checked")!=="true";e.setAttribute("aria-checked",s?"true":"false"),e.setAttribute("data-state",s?"checked":"unchecked");return}if(t!=="menuitemradio")return;const r=e.closest(".submenu")||this._panelListbox();if(!r)return;const i=e.getAttribute("data-group")||e.getAttribute("name")||"";Array.from(r.querySelectorAll('[role="menuitemradio"]')).forEach(s=>{i&&(s.getAttribute("data-group")||s.getAttribute("name")||"")!==i||(s.setAttribute("aria-checked","false"),s.setAttribute("data-state","unchecked"))}),e.setAttribute("aria-checked","true"),e.setAttribute("data-state","checked")}_onClick(e){const t=e.composedPath(),r=this._items.findIndex(a=>t.includes(a));if(r<0)return;if(this._focusItem(r),this._selectedIndex()===r&&this._open){this.close(),this._syncState();return}this._selectIndex(r,"click")}_onMouseMove(e){if(!this._open)return;const t=e.composedPath(),r=this._items.findIndex(i=>t.includes(i));r<0||r!==this._selectedIndex()&&this._selectIndex(r,"programmatic")}_isInternalScrollEvent(e){const t=typeof e.composedPath=="function"?e.composedPath():[];if(this._portalEl&&t.includes(this._portalEl)||this._items.some(i=>t.includes(i)))return!0;const r=e.target;return!!(r instanceof Node&&(this._portalEl?.contains(r)||this._items.some(i=>i.contains(r))))}_onDocScroll(e){!this._open||!this.closeOnScroll||this._isInternalScrollEvent(e)||this.close()}_onPanelPointerOver(e){if(!this._open)return;const t=S(e);if(!t||g(t))return;const r=t.closest(".submenu")||this._panelListbox();this._panelListbox()?.setActiveItem(t,{container:r,focus:!1,owner:this._panelSurface(),scroll:!1}),this._submenuFor(t)?this._openPanelSubmenu(t,!1):this._setOpenPanelBranch(t,!1)}_onPanelPointerLeave(e){if(!(e.currentTarget instanceof HTMLElement))return;const t=e.relatedTarget;t instanceof Node&&e.currentTarget.contains(t)||this._clearPanelSubmenuState()}_onPanelFocusIn(e){const t=e.target;if(!(t instanceof HTMLElement))return;const r=t.closest(l());r&&(this._submenuFor(r)?this._setOpenPanelBranch(r,!0):this._setOpenPanelBranch(r,!1))}_onKeyDown(e){const t=this._items.findIndex(o=>o===e.target||o.contains(e.target));if(t<0)return;const r=getComputedStyle(this).direction==="rtl"?"rtl":"ltr";let i=!1,a=t;const s=m.resolveRovingFocusIndex(this._items,{activeIndex:t,selectedIndex:this._selectedIndex(),getDisabled:d});e.key==="ArrowRight"?(a=m.moveRovingFocusIndex(this._items,t,r==="rtl"?-1:1,{wrap:this._loopEnabled(),fallbackIndex:s,getDisabled:d}),i=!0):e.key==="ArrowLeft"?(a=m.moveRovingFocusIndex(this._items,t,r==="rtl"?1:-1,{wrap:this._loopEnabled(),fallbackIndex:s,getDisabled:d}),i=!0):e.key==="Home"?(a=m.getRovingFocusBoundaryIndex(this._items,"first",d),i=!0):e.key==="End"?(a=m.getRovingFocusBoundaryIndex(this._items,"last",d),i=!0):e.key==="Enter"||e.key===" "?(this._selectIndex(t,"keyboard"),i=!0):e.key==="ArrowDown"?(this._selectIndex(t,"keyboard"),setTimeout(()=>this._focusPanelFirst(),0),i=!0):e.key==="ArrowUp"&&(this._selectIndex(t,"keyboard"),setTimeout(()=>this._focusPanelLast(),0),i=!0),!(!i&&this._typeaheadOnBar(e))&&i&&(e.preventDefault(),a>=0&&a!==t&&(this._focusItem(a),this._open&&this._selectIndex(a,"keyboard")))}_onDocKeyDown(e){if(!this._open||!(!!this._portalEl&&e.composedPath().includes(this._portalEl))||this._typeaheadOnPanel(e))return;if(e.key==="ArrowDown"){e.preventDefault(),this._movePanelFocus(1);return}if(e.key==="ArrowUp"){e.preventDefault(),this._movePanelFocus(-1);return}if(e.key==="Home"){e.preventDefault(),this._focusPanelFirst();return}if(e.key==="End"){e.preventDefault(),this._focusPanelLast();return}const r=document.activeElement,i=r?.closest(l());if(e.key==="ArrowRight"&&i&&this._openPanelSubmenu(i,!0)){e.preventDefault();return}if(e.key==="ArrowLeft"&&i&&this._closeParentPanelSubmenu(i)){e.preventDefault();return}if(e.key==="Tab"){this.close();return}if(e.key==="Enter"||e.key===" "){if(!r||!this._portalEl?.contains(r)||!i||g(i)||(e.preventDefault(),this._openPanelSubmenu(i,!0)))return;i.click()}}shouldRenderOnAttributeChange(e,t,r){return!1}}typeof customElements<"u"&&!customElements.get("ui-menubar")&&customElements.define("ui-menubar",A);exports.UIMenubar=A;
|
|
433
|
+
`;const i=r.querySelector("ui-listbox.content-host"),a=r.querySelector(".surface");if(!i||!a)return r;if(a.id=t?.id||`ui-menubar-panel-${this._uid}-${e}`,a.setAttribute("aria-labelledby",this._items[e]?.id||""),this._applyPanelVariantData(r),this._applyPanelTokens(r),t){const s=y.revealClone(t.cloneNode(!0));s.setAttribute("slot","menu"),i.appendChild(s)}if(this._hydratePanelItems(i),i.refresh(),!i.querySelector(l())){const s=document.createElement("div");s.className="empty-state",s.textContent="No items",i.appendChild(s)}return r.addEventListener("click",s=>{const o=A(s);if(!o||g(o))return;if(this._submenuFor(o)){s.preventDefault(),this._openPanelSubmenu(o,!0);return}this._applyPanelSelectionBehavior(o);const u=o.getAttribute("data-index"),c=u!=null&&!Number.isNaN(Number(u))?Number(u):void 0;this.dispatchEvent(new CustomEvent("select",{detail:{selected:e,index:c,value:o.getAttribute("data-value")||o.getAttribute("value")||void 0,label:o.getAttribute("aria-label")||o.textContent?.trim()||void 0,checked:o.getAttribute("aria-checked")==="true",item:o},bubbles:!0})),this.closeOnSelect?this.close():this._focusPanelItem(o)}),r.addEventListener("pointerover",this._onPanelPointerOver),r.addEventListener("pointerleave",this._onPanelPointerLeave),r.addEventListener("focusin",this._onPanelFocusIn),r}_applyPanelVariantData(e){const t=h(this,"variant"),r=O(this.getAttribute("size")||this.getAttribute("density")),i=h(this,"density"),a=this.getAttribute("radius"),s=h(this,"shape"),o=h(this,"elevation"),u=h(this,"tone"),c=t==="default"||t===""?"":t==="glass"?"soft":t==="line"?"outline":t;c?e.setAttribute("data-variant",c):e.removeAttribute("data-variant"),r!=="md"?e.setAttribute("data-size",r):e.removeAttribute("data-size"),i&&i!=="default"?e.setAttribute("data-density",i):e.removeAttribute("data-density"),a?e.setAttribute("data-radius",a):e.removeAttribute("data-radius"),s&&s!=="default"?e.setAttribute("data-shape",s):e.removeAttribute("data-shape"),o&&o!=="default"?e.setAttribute("data-elevation",o):e.removeAttribute("data-elevation"),u&&u!=="default"&&u!=="brand"?e.setAttribute("data-tone",u):e.removeAttribute("data-tone"),this._open?e.setAttribute("data-open","true"):e.removeAttribute("data-open");const b=x(a||s||null);b?(e.style.setProperty("--ui-menubar-panel-radius",b),e.style.setProperty("--ui-menubar-panel-item-radius",b==="999px"?"999px":`calc(${b} - 2px)`)):(e.style.removeProperty("--ui-menubar-panel-radius"),e.style.removeProperty("--ui-menubar-panel-item-radius"))}_applyPanelTokens(e){const t=window.getComputedStyle(this);["--ui-color-primary","--ui-color-primary-hover","--ui-color-foreground-on-primary","--ui-color-background","--ui-color-surface","--ui-color-surface-alt","--ui-color-text","--ui-color-muted","--ui-color-border","--ui-color-focus-ring","--ui-color-success","--ui-color-danger","--ui-color-warning","--ui-primary","--ui-primary-hover","--ui-foreground","--ui-background","--ui-surface","--ui-surface-alt","--ui-text","--ui-muted","--ui-border","--ui-focus-ring","--ui-radius","--color-background","--color-surface","--color-panel","--color-panel-solid","--color-panel-translucent","--color-overlay","--accent-contrast","--accent-surface","--accent-indicator","--accent-track","--ui-menubar-ring","--ui-menubar-z","--ui-menubar-panel-bg","--ui-menubar-panel-color","--ui-menubar-panel-border","--ui-menubar-panel-shadow","--ui-menubar-panel-radius","--ui-menubar-panel-padding","--ui-menubar-panel-min-width","--ui-menubar-panel-item-radius","--ui-menubar-panel-item-gap","--ui-menubar-panel-item-min-height","--ui-menubar-panel-item-pad-y","--ui-menubar-panel-item-pad-x","--ui-menubar-panel-item-font-size","--ui-menubar-panel-item-font-weight","--ui-menubar-panel-item-line-height","--ui-menubar-panel-separator-margin","--ui-menubar-panel-item-hover-bg","--ui-menubar-panel-item-active-color"].forEach(i=>{const a=t.getPropertyValue(i).trim();a?e.style.setProperty(i,a):e.style.removeProperty(i)}),z.forEach(i=>{const a=t.getPropertyValue(i).trim();a?e.style.setProperty(i,a):e.style.removeProperty(i)}),B.forEach(({prefix:i,from:a,to:s})=>{for(let o=a;o<=s;o+=1){const u=`${i}${o}`,c=t.getPropertyValue(u).trim();c?e.style.setProperty(u,c):e.style.removeProperty(u)}})}_syncPanelVisualState(){const e=this._portalEl;if(!e)return;this._setPanelFlag("open",this._open),this._applyPanelVariantData(e),this._applyPanelTokens(e);const t=this._panelSurface();t&&(t.setAttribute("aria-hidden","false"),t.setAttribute("aria-busy","false"),t.removeAttribute("hidden"),t.style.display="block",t.style.visibility="visible",t.style.opacity="1",t.style.transform="translateY(0px) scale(1)",t.style.pointerEvents="auto");const r=e.querySelector(".state-row");r&&(r.textContent=""),this._schedulePanelSubmenuLayout()}_rebuildPanel(){if(!this._open)return;const e=this._selectedIndex(),t=this._items[e];if(e<0||!t){this._teardownPanel();return}this._teardownPanel();const r=this._buildPanelContent(e);this._portalEl=r,this._portalSurfaceEl=r.querySelector(".surface"),this._portalContentHostEl=r.querySelector("ui-listbox.content-host"),this._panelForIndex=e;const i=k.createPortalContainer();if(!i){this._portalEl=null,this._panelForIndex=-1;return}i.appendChild(r),this._positioner=C.createPositioner({anchor:t,floating:this._panelSurface()||r,placement:M(this.getAttribute("placement")),offset:6,flip:!0,shift:!0,fitViewport:!0,observeScroll:!1}),this._dismissableLayer=L.createDismissableLayer({node:this._panelSurface()||r,trigger:t,closeOnEscape:!0,closeOnPointerOutside:!0,onDismiss:()=>this.close()}),v.openOverlay(this._panelSurface()||r)}_teardownPanel(e=!1){this._dismissableLayer?.destroy(),this._dismissableLayer=null,this._positioner?.destroy(),this._positioner=null,e?v.retireOverlay(this._portalEl):v.removeOverlay(this._portalEl),this._portalEl=null,this._portalSurfaceEl=null,this._portalContentHostEl=null,this._panelForIndex=-1,this._submenuRaf!=null&&(cancelAnimationFrame(this._submenuRaf),this._submenuRaf=null),this._resetTypeahead()}_selectIndex(e,t){const r=this._selectedIndex(),i=S(e,this._items.length);i<0||(this._setSelectedAttribute(i),this.setAttribute("open",""),this._syncState(),this.dispatchEvent(new CustomEvent("change",{detail:{selected:i,previous:r,open:!0,reason:t},bubbles:!0})))}_focusItem(e){const t=this._items[e];t&&(this._focusIndex=e,m.syncRovingTabStops(this._items,t,{activeAttribute:null}),m.focusRovingItem(t))}_queryPanelItems(){return this._queryPanelItemsIn(this._panelListbox())}_focusPanelItem(e){e&&this._panelListbox()?.setActiveItem(e,{focus:!0,owner:this._panelSurface(),scroll:!0})}_focusPanelFirst(){this._panelListbox()?.focusBoundary("first",{focus:!0,owner:this._panelSurface(),scroll:!0})}_focusPanelLast(){this._panelListbox()?.focusBoundary("last",{focus:!0,owner:this._panelSurface(),scroll:!0})}_movePanelFocus(e){const t=document.activeElement,i=(t&&this._portalEl?.contains(t)?t.closest(l()):null)?.closest(".submenu")||this._panelListbox();this._panelListbox()?.move(e,{container:i,current:t&&this._portalEl?.contains(t)?t:null,focus:!0,owner:this._panelSurface(),scroll:!0})||this._focusPanelFirst()}_resetTypeahead(){this._typeaheadBuffer="",this._typeaheadTimer!=null&&(window.clearTimeout(this._typeaheadTimer),this._typeaheadTimer=null)}_isTypeaheadKey(e){return e.ctrlKey||e.metaKey||e.altKey?!1:e.key.length===1&&/\S/.test(e.key)}_typeaheadOnBar(e){if(!this.typeahead||!this._isTypeaheadKey(e))return!1;this._typeaheadBuffer=`${this._typeaheadBuffer}${e.key.toLowerCase()}`.slice(0,24),this._typeaheadTimer!=null&&window.clearTimeout(this._typeaheadTimer),this._typeaheadTimer=window.setTimeout(()=>this._resetTypeahead(),420);const t=this._items.findIndex(i=>i===e.target||i.contains(e.target)),r=I.findTypeaheadMatch(this._items,this._typeaheadBuffer,{startIndex:t,getLabel:i=>i.getAttribute("aria-label")||i.textContent||"",getDisabled:d});return r<0?!1:(e.preventDefault(),this._focusItem(r),this._open&&this._selectIndex(r,"keyboard"),!0)}_typeaheadOnPanel(e){if(!this.typeahead||!this._isTypeaheadKey(e))return!1;this._typeaheadBuffer=`${this._typeaheadBuffer}${e.key.toLowerCase()}`.slice(0,24),this._typeaheadTimer!=null&&window.clearTimeout(this._typeaheadTimer),this._typeaheadTimer=window.setTimeout(()=>this._resetTypeahead(),420);const t=document.activeElement,i=(t&&this._portalEl?.contains(t)?t.closest(l()):null)?.closest(".submenu")||this._panelListbox();return this._panelListbox()?.typeahead(this._typeaheadBuffer,{container:i,current:t&&this._portalEl?.contains(t)?t:null,focus:!0,owner:this._panelSurface(),scroll:!0})||null?(e.preventDefault(),!0):!1}_applyPanelSelectionBehavior(e){const t=e.getAttribute("role");if(t==="menuitemcheckbox"){const s=e.getAttribute("aria-checked")!=="true";e.setAttribute("aria-checked",s?"true":"false"),e.setAttribute("data-state",s?"checked":"unchecked");return}if(t!=="menuitemradio")return;const r=e.closest(".submenu")||this._panelListbox();if(!r)return;const i=e.getAttribute("data-group")||e.getAttribute("name")||"";Array.from(r.querySelectorAll('[role="menuitemradio"]')).forEach(s=>{i&&(s.getAttribute("data-group")||s.getAttribute("name")||"")!==i||(s.setAttribute("aria-checked","false"),s.setAttribute("data-state","unchecked"))}),e.setAttribute("aria-checked","true"),e.setAttribute("data-state","checked")}_onClick(e){const t=e.composedPath(),r=this._items.findIndex(a=>t.includes(a));if(r<0)return;if(this._focusItem(r),this._selectedIndex()===r&&this._open){this.close(),this._syncState();return}this._selectIndex(r,"click")}_onMouseMove(e){if(!this._open)return;const t=e.composedPath(),r=this._items.findIndex(i=>t.includes(i));r<0||r!==this._selectedIndex()&&this._selectIndex(r,"programmatic")}_isInternalScrollEvent(e){const t=typeof e.composedPath=="function"?e.composedPath():[];if(this._portalEl&&t.includes(this._portalEl)||this._items.some(i=>t.includes(i)))return!0;const r=e.target;return!!(r instanceof Node&&(this._portalEl?.contains(r)||this._items.some(i=>i.contains(r))))}_onDocScroll(e){!this._open||!this.closeOnScroll||this._isInternalScrollEvent(e)||this.close()}_onPanelPointerOver(e){if(!this._open)return;const t=A(e);if(!t||g(t))return;const r=t.closest(".submenu")||this._panelListbox();this._panelListbox()?.setActiveItem(t,{container:r,focus:!1,owner:this._panelSurface(),scroll:!1}),this._submenuFor(t)?this._openPanelSubmenu(t,!1):this._setOpenPanelBranch(t,!1)}_onPanelPointerLeave(e){if(!(e.currentTarget instanceof HTMLElement))return;const t=e.relatedTarget;t instanceof Node&&e.currentTarget.contains(t)||this._clearPanelSubmenuState()}_onPanelFocusIn(e){const t=e.target;if(!(t instanceof HTMLElement))return;const r=t.closest(l());r&&(this._submenuFor(r)?this._setOpenPanelBranch(r,!0):this._setOpenPanelBranch(r,!1))}_onKeyDown(e){const t=this._items.findIndex(o=>o===e.target||o.contains(e.target));if(t<0)return;const r=getComputedStyle(this).direction==="rtl"?"rtl":"ltr";let i=!1,a=t;const s=m.resolveRovingFocusIndex(this._items,{activeIndex:t,selectedIndex:this._selectedIndex(),getDisabled:d});e.key==="ArrowRight"?(a=m.moveRovingFocusIndex(this._items,t,r==="rtl"?-1:1,{wrap:this._loopEnabled(),fallbackIndex:s,getDisabled:d}),i=!0):e.key==="ArrowLeft"?(a=m.moveRovingFocusIndex(this._items,t,r==="rtl"?1:-1,{wrap:this._loopEnabled(),fallbackIndex:s,getDisabled:d}),i=!0):e.key==="Home"?(a=m.getRovingFocusBoundaryIndex(this._items,"first",d),i=!0):e.key==="End"?(a=m.getRovingFocusBoundaryIndex(this._items,"last",d),i=!0):e.key==="Enter"||e.key===" "?(this._selectIndex(t,"keyboard"),i=!0):e.key==="ArrowDown"?(this._selectIndex(t,"keyboard"),setTimeout(()=>this._focusPanelFirst(),0),i=!0):e.key==="ArrowUp"&&(this._selectIndex(t,"keyboard"),setTimeout(()=>this._focusPanelLast(),0),i=!0),!(!i&&this._typeaheadOnBar(e))&&i&&(e.preventDefault(),a>=0&&a!==t&&(this._focusItem(a),this._open&&this._selectIndex(a,"keyboard")))}_onDocKeyDown(e){if(!this._open||!(!!this._portalEl&&e.composedPath().includes(this._portalEl))||this._typeaheadOnPanel(e))return;if(e.key==="ArrowDown"){e.preventDefault(),this._movePanelFocus(1);return}if(e.key==="ArrowUp"){e.preventDefault(),this._movePanelFocus(-1);return}if(e.key==="Home"){e.preventDefault(),this._focusPanelFirst();return}if(e.key==="End"){e.preventDefault(),this._focusPanelLast();return}const r=document.activeElement,i=r?.closest(l());if(e.key==="ArrowRight"&&i&&this._openPanelSubmenu(i,!0)){e.preventDefault();return}if(e.key==="ArrowLeft"&&i&&this._closeParentPanelSubmenu(i)){e.preventDefault();return}if(e.key==="Tab"){this.close();return}if(e.key==="Enter"||e.key===" "){if(!r||!this._portalEl?.contains(r)||!i||g(i)||(e.preventDefault(),this._openPanelSubmenu(i,!0)))return;i.click()}}shouldRenderOnAttributeChange(e,t,r){return!1}}typeof customElements<"u"&&!customElements.get("ui-menubar")&&customElements.define("ui-menubar",w);exports.UIMenubar=w;
|