@redvars/peacock 3.9.0 → 3.9.1
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/code-highlighter.js +1 -4
- package/dist/code-highlighter.js.map +1 -1
- package/dist/custom-elements-jsdocs.json +39 -223
- package/dist/custom-elements.json +391 -2205
- package/dist/elevation.js +55 -2
- package/dist/elevation.js.map +1 -1
- package/dist/flow.js +762 -0
- package/dist/flow.js.map +1 -0
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/loader.js +2 -9
- package/dist/loader.js.map +1 -1
- package/dist/menu-item.js +144 -63
- package/dist/menu-item.js.map +1 -1
- package/dist/menu.js +161 -73
- package/dist/menu.js.map +1 -1
- package/dist/src/flow/flow.d.ts +102 -0
- package/dist/src/flow/index.d.ts +2 -0
- package/dist/src/index.d.ts +2 -4
- package/dist/src/menu/menu/menu.d.ts +10 -9
- package/dist/src/menu/menu-item/menu-item.d.ts +1 -3
- package/dist/src/timeline/timeline.d.ts +0 -1
- package/dist/sub-menu.js +28 -1
- package/dist/sub-menu.js.map +1 -1
- package/dist/timeline-item.js +22 -34
- package/dist/timeline-item.js.map +1 -1
- package/dist/timeline.js +1 -18
- package/dist/timeline.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -2
- package/readme.md +2 -2
- package/src/code-highlighter/code-highlighter.scss +1 -7
- package/src/elevation/demo/index.html +52 -0
- package/src/elevation/elevation.scss +52 -5
- package/src/elevation/elevation.ts +8 -1
- package/src/flow/flow.scss +195 -0
- package/src/flow/flow.ts +683 -0
- package/src/flow/index.ts +2 -0
- package/src/index.ts +2 -16
- package/src/loader.ts +2 -9
- package/src/menu/menu/copy-component-files.mjs +47 -0
- package/src/menu/menu/menu.scss +55 -17
- package/src/menu/menu/menu.ts +155 -84
- package/src/menu/menu-item/menu-item-colors.scss +3 -3
- package/src/menu/menu-item/menu-item.scss +118 -24
- package/src/menu/menu-item/menu-item.ts +61 -55
- package/src/menu/sub-menu/sub-menu.scss +30 -1
- package/src/timeline/timeline-item.scss +21 -31
- package/src/timeline/timeline-item.ts +2 -1
- package/src/timeline/timeline.scss +0 -10
- package/src/timeline/timeline.ts +0 -2
- package/dist/canvas.js +0 -385
- package/dist/canvas.js.map +0 -1
- package/dist/flow-designer-node-CGSm6cUH.js +0 -553
- package/dist/flow-designer-node-CGSm6cUH.js.map +0 -1
- package/dist/flow-designer-node.js +0 -4
- package/dist/flow-designer-node.js.map +0 -1
- package/dist/flow-designer.js +0 -1417
- package/dist/flow-designer.js.map +0 -1
- package/dist/src/canvas/canvas.d.ts +0 -92
- package/dist/src/canvas/index.d.ts +0 -2
- package/dist/src/flow-designer/commands.d.ts +0 -66
- package/dist/src/flow-designer/flow-designer-node.d.ts +0 -46
- package/dist/src/flow-designer/flow-designer.d.ts +0 -133
- package/dist/src/flow-designer/index.d.ts +0 -7
- package/dist/src/flow-designer/layout.d.ts +0 -30
- package/dist/src/flow-designer/types.d.ts +0 -142
- package/dist/src/flow-designer/validation.d.ts +0 -43
- package/dist/src/flow-designer/workflow-utils.d.ts +0 -40
- package/src/canvas/canvas.scss +0 -72
- package/src/canvas/canvas.ts +0 -413
- package/src/canvas/index.ts +0 -2
- package/src/flow-designer/DEMO.md +0 -239
- package/src/flow-designer/commands.ts +0 -278
- package/src/flow-designer/flow-designer-node.ts +0 -172
- package/src/flow-designer/flow-designer.scss +0 -457
- package/src/flow-designer/flow-designer.ts +0 -611
- package/src/flow-designer/index.ts +0 -41
- package/src/flow-designer/layout.ts +0 -357
- package/src/flow-designer/types.ts +0 -166
- package/src/flow-designer/validation.ts +0 -284
- package/src/flow-designer/workflow-utils.ts +0 -282
- /package/dist/test/{flow-designer.test.d.ts → elevation.test.d.ts} +0 -0
package/dist/menu-item.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-item.js","sources":["../../src/__internal/mixins/NativeButtonMixin.ts","../../src/menu/menu-item/menu-item.ts"],"sourcesContent":["import { LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport type { MixinConstructor } from './MixinConstructor.js';\n\n/**\n * 1. Define an interface for the members the mixin adds.\n * This makes the type annotation much cleaner.\n */\nexport interface NativeButtonInterface {\n htmlType: 'button' | 'submit' | 'reset';\n disabled: boolean;\n softDisabled: boolean;\n disabledReason: string;\n form: string;\n name: string;\n value: string;\n}\n\n/**\n * 2. Apply the type annotation to the variable.\n */\nconst NativeButtonMixin: <T extends MixinConstructor<LitElement>>(\n superclass: T,\n) => T & MixinConstructor<NativeButtonInterface> = <\n T extends MixinConstructor<LitElement>,\n>(\n superclass: T,\n) => {\n // Naming the class (BaseButtonElement) instead of using 'Mixin' or anonymous\n // prevents the \"__childPart\" visibility error.\n class ButtonElement extends superclass implements NativeButtonInterface {\n /**\n * The type of the underlying `<button>` element. Maps to the native `type` attribute.\n * Possible values are `\"button\"`, `\"submit\"`, `\"reset\"`. Defaults to `\"button\"`.\n */\n @property({ type: String }) htmlType: 'button' | 'submit' | 'reset' =\n 'button';\n\n /**\n * When `true`, the button is disabled and cannot be interacted with. Reflects to the `disabled` attribute. Defaults to `false`.\n */\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n\n /**\n * When `true`, the button is visually styled as disabled and cannot be interacted with, but remains focusable.\n * Use this in combination with `disabledReason` to communicate why the button is unavailable.\n * Reflects to the `soft-disabled` attribute. Defaults to `false`.\n */\n @property({ type: Boolean, reflect: true, attribute: 'soft-disabled' })\n softDisabled: boolean = false;\n\n /**\n * A human-readable explanation of why the button is disabled or soft-disabled.\n * Rendered as a visually hidden tooltip and linked via `aria-describedby` for accessibility.\n * Maps to the `disabled-reason` attribute.\n */\n @property({ attribute: 'disabled-reason' })\n disabledReason: string = '';\n\n /**\n * The `id` of the `<form>` element to associate the button with.\n * If omitted, the button is associated with its nearest ancestor form.\n * Maps to the native `form` attribute.\n */\n @property()\n form: string = '';\n\n /**\n * The name of the button, submitted as part of a name/value pair when the associated form is submitted.\n * Maps to the native `name` attribute.\n */\n @property()\n name: string = '';\n\n /**\n * The value of the button, submitted as part of a name/value pair when the associated form is submitted.\n * Maps to the native `value` attribute.\n */\n @property()\n value: string = '';\n }\n\n return ButtonElement as T & MixinConstructor<NativeButtonInterface>;\n};\n\nexport default NativeButtonMixin;\n","import { html, LitElement, nothing } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport styles from './menu-item.scss';\nimport colorStyles from './menu-item-colors.scss';\nimport NativeButtonMixin from '@/__internal/mixins/NativeButtonMixin.js';\nimport NativeHyperlinkMixin from '@/__internal/mixins/NativeHyperlinkMixin.js';\nimport { isLink } from '@/__internal/utils/is-link.js';\nimport IndividualComponent from '@/IndividualComponent.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\n/**\n * @label Menu Item\n * @tag wc-menu-item\n * @rawTag menu-item\n * @summary An item in a menu list.\n * @tags navigation\n *\n * @example\n * ```html\n * <wc-menu-item>Menu Item</wc-menu-item>\n * ```\n */\n@IndividualComponent\nexport class MenuItem extends NativeButtonMixin(\n NativeHyperlinkMixin(LitElement),\n) {\n // ── Static ───────────────────────────────────────────────────────────────\n\n static styles = [styles, colorStyles];\n\n // ── Properties ───────────────────────────────────────────────────────────\n\n /** The value associated with this menu item, used to identify it on selection. */\n @property({ type: String }) value = '';\n\n /** Whether this menu item is currently selected/highlighted. */\n @property({ type: Boolean, reflect: true }) selected = false;\n\n /** When true, the menu stays open after this item is activated. */\n @property({ type: Boolean, attribute: 'keep-open' }) keepOpen = false;\n\n /** When true, indicates this item has an associated submenu. */\n @property({ type: Boolean, attribute: 'has-submenu' }) hasSubmenu = false;\n\n /** Whether the associated submenu is currently open. */\n @property({ type: Boolean, attribute: 'submenu-open' }) submenuOpen = false;\n\n /** Visual variant of the menu item. */\n @property({ type: String, reflect: true }) variant: 'standard' | 'vibrant' =\n 'standard';\n\n // ── Queries ───────────────────────────────────────────────────────────────\n\n @query('#menu-item') readonly itemElement!: HTMLElement | null;\n\n // ── Private fields ────────────────────────────────────────────────────────\n\n /** MutationObserver that triggers re-render when slotted content changes. */\n private readonly _contentObserver = new MutationObserver(() => {\n this.requestUpdate();\n });\n\n /** Roving tabindex value managed by the parent Menu. */\n private _rovingTabIndex = -1;\n\n connectedCallback() {\n // eslint-disable-next-line wc/guard-super-call\n super.connectedCallback();\n this._contentObserver.observe(this, {\n subtree: true,\n childList: true,\n characterData: true,\n attributes: true,\n attributeFilter: ['slot'],\n });\n }\n\n disconnectedCallback() {\n this._contentObserver.disconnect();\n super.disconnectedCallback();\n }\n\n override get tabIndex() {\n return this._rovingTabIndex;\n }\n\n override set tabIndex(value: number) {\n this._rovingTabIndex = value;\n this.requestUpdate();\n }\n\n override focus() {\n this.itemElement?.focus();\n }\n\n override blur() {\n this.itemElement?.blur();\n }\n\n private _hasNamedSlot(...names: string[]) {\n return names.some(name =>\n Array.from(this.children).some(\n child => child.getAttribute('slot') === name,\n ),\n );\n }\n\n private _hasDefaultSlot() {\n return Array.from(this.childNodes).some(node => {\n if (node.nodeType === Node.TEXT_NODE) {\n return Boolean(node.textContent?.trim());\n }\n\n return (\n node.nodeType === Node.ELEMENT_NODE &&\n !(node as Element).hasAttribute('slot')\n );\n });\n }\n\n render() {\n const isElementLink = isLink(this);\n const controls = this.getAttribute('aria-controls');\n\n const cssClasses = {\n 'menu-item': true,\n 'native-button': !isElementLink,\n 'native-link': isElementLink,\n };\n\n if (isElementLink) {\n return html`\n <a\n id=\"menu-item\"\n class=${classMap(cssClasses)}\n role=\"menuitem\"\n href=${ifDefined(this.href)}\n target=${this.target}\n ?rel=${this.rel}\n ?download=${this.download}\n tabindex=${this.disabled ? '-1' : String(this.tabIndex)}\n ?selected=${this.selected}\n aria-disabled=${this.disabled || this.softDisabled ? 'true' : nothing}\n aria-haspopup=${this.hasSubmenu ? 'menu' : nothing}\n aria-controls=${ifDefined(\n this.hasSubmenu && controls ? controls : undefined,\n )}\n aria-expanded=${ifDefined(\n this.hasSubmenu ? String(this.submenuOpen) : undefined,\n )}\n >\n ${this.renderContent()}\n </a>\n `;\n }\n\n return html`\n <button\n id=\"menu-item\"\n class=${classMap(cssClasses)}\n role=\"menuitem\"\n type=${this.htmlType}\n ?disabled=${this.disabled}\n tabindex=${String(this.tabIndex)}\n ?selected=${this.selected}\n aria-disabled=${this.softDisabled ? 'true' : nothing}\n aria-haspopup=${this.hasSubmenu ? 'menu' : nothing}\n aria-controls=${ifDefined(\n this.hasSubmenu && controls ? controls : undefined,\n )}\n aria-expanded=${ifDefined(\n this.hasSubmenu ? String(this.submenuOpen) : undefined,\n )}\n >\n ${this.renderContent()}\n </button>\n `;\n }\n\n renderContent() {\n return html`\n <div class=\"menu-item-background\"></div>\n <wc-item class=\"menu-item-content\">\n <wc-focus-ring\n class=\"focus-ring\"\n for=\"menu-item\"\n slot=\"container\"\n ></wc-focus-ring>\n <div class=\"background\" slot=\"container\"></div>\n <wc-ripple class=\"ripple\" for=\"menu-item\" slot=\"container\"></wc-ripple>\n\n <slot name=\"start\" slot=\"start\"></slot>\n <slot name=\"overline\" slot=\"overline\"></slot>\n <slot name=\"headline\" slot=\"headline\"></slot>\n <slot></slot>\n <slot name=\"supporting-text\" slot=\"supporting-text\"></slot>\n <slot\n name=\"trailing-supporting-text\"\n slot=\"trailing-supporting-text\"\n ></slot>\n <slot name=\"end\" slot=\"end\"></slot>\n </wc-item>\n `;\n }\n}\n"],"names":["property","LitElement","html","classMap","ifDefined","nothing","styles","colorStyles","query"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA;;AAEG;AACH,MAAM,iBAAiB,GAE4B,CAGjD,UAAa,KACX;;;IAGF,MAAM,aAAc,SAAQ,UAAU,CAAA;AAAtC,QAAA,WAAA,GAAA;;AACE;;;AAGG;YACyB,IAAA,CAAA,QAAQ,GAClC,QAAQ;AAEV;;AAEG;YAEH,IAAA,CAAA,QAAQ,GAAY,KAAK;AAEzB;;;;AAIG;YAEH,IAAA,CAAA,YAAY,GAAY,KAAK;AAE7B;;;;AAIG;YAEH,IAAA,CAAA,cAAc,GAAW,EAAE;AAE3B;;;;AAIG;YAEH,IAAA,CAAA,IAAI,GAAW,EAAE;AAEjB;;;AAGG;YAEH,IAAA,CAAA,IAAI,GAAW,EAAE;AAEjB;;;AAGG;YAEH,IAAA,CAAA,KAAK,GAAW,EAAE;QACpB;AAAC;AA9C6B,IAAA,UAAA,CAAA;AAA3B,QAAAA,CAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AACf,KAAA,EAAA,aAAA,CAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AAMX,IAAA,UAAA,CAAA;QADCA,CAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AAChB,KAAA,EAAA,aAAA,CAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AAQ1B,IAAA,UAAA,CAAA;AADC,QAAAA,CAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE;AACxC,KAAA,EAAA,aAAA,CAAA,SAAA,EAAA,cAAA,EAAA,MAAA,CAAA;AAQ9B,IAAA,UAAA,CAAA;AADC,QAAAA,CAAQ,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE;AACd,KAAA,EAAA,aAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,MAAA,CAAA;AAQ5B,IAAA,UAAA,CAAA;AADC,QAAAA,CAAQ;AACS,KAAA,EAAA,aAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA;AAOlB,IAAA,UAAA,CAAA;AADC,QAAAA,CAAQ;AACS,KAAA,EAAA,aAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA;AAOlB,IAAA,UAAA,CAAA;AADC,QAAAA,CAAQ;AACU,KAAA,EAAA,aAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AAGrB,IAAA,OAAO,aAA4D;AACrE,CAAC;;ACzED;;;;;;;;;;;AAWG;AAEI,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,iBAAiB,CAC7C,oBAAoB,CAACC,GAAU,CAAC,CACjC,CAAA;AAFM,IAAA,WAAA,GAAA;;;;;QAUuB,IAAA,CAAA,KAAK,GAAG,EAAE;;QAGM,IAAA,CAAA,QAAQ,GAAG,KAAK;;QAGP,IAAA,CAAA,QAAQ,GAAG,KAAK;;QAGd,IAAA,CAAA,UAAU,GAAG,KAAK;;QAGjB,IAAA,CAAA,WAAW,GAAG,KAAK;;QAGhC,IAAA,CAAA,OAAO,GAChD,UAAU;;;AASK,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,MAAK;YAC5D,IAAI,CAAC,aAAa,EAAE;AACtB,QAAA,CAAC,CAAC;;QAGM,IAAA,CAAA,eAAe,GAAG,EAAE;IA6I9B;IA3IE,iBAAiB,GAAA;;QAEf,KAAK,CAAC,iBAAiB,EAAE;AACzB,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE;AAClC,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,UAAU,EAAE,IAAI;YAChB,eAAe,EAAE,CAAC,MAAM,CAAC;AAC1B,SAAA,CAAC;IACJ;IAEA,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;QAClC,KAAK,CAAC,oBAAoB,EAAE;IAC9B;AAEA,IAAA,IAAa,QAAQ,GAAA;QACnB,OAAO,IAAI,CAAC,eAAe;IAC7B;IAEA,IAAa,QAAQ,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;QAC5B,IAAI,CAAC,aAAa,EAAE;IACtB;IAES,KAAK,GAAA;AACZ,QAAA,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE;IAC3B;IAES,IAAI,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;IAC1B;IAEQ,aAAa,CAAC,GAAG,KAAe,EAAA;AACtC,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,IACpB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC5B,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI,CAC7C,CACF;IACH;IAEQ,eAAe,GAAA;AACrB,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,IAAG;YAC7C,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;gBACpC,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;YAC1C;AAEA,YAAA,QACE,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY;AACnC,gBAAA,CAAE,IAAgB,CAAC,YAAY,CAAC,MAAM,CAAC;AAE3C,QAAA,CAAC,CAAC;IACJ;IAEA,MAAM,GAAA;AACJ,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC;AAEnD,QAAA,MAAM,UAAU,GAAG;AACjB,YAAA,WAAW,EAAE,IAAI;YACjB,eAAe,EAAE,CAAC,aAAa;AAC/B,YAAA,aAAa,EAAE,aAAa;SAC7B;QAED,IAAI,aAAa,EAAE;AACjB,YAAA,OAAOC,CAAI,CAAA;;;kBAGCC,CAAQ,CAAC,UAAU,CAAC;;AAErB,eAAA,EAAAC,CAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AAClB,iBAAA,EAAA,IAAI,CAAC,MAAM;AACb,eAAA,EAAA,IAAI,CAAC,GAAG;AACH,oBAAA,EAAA,IAAI,CAAC,QAAQ;AACd,mBAAA,EAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC3C,oBAAA,EAAA,IAAI,CAAC,QAAQ;AACT,wBAAA,EAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,GAAG,MAAM,GAAGC,CAAO;0BACrD,IAAI,CAAC,UAAU,GAAG,MAAM,GAAGA,CAAO;AAClC,wBAAA,EAAAD,CAAS,CACvB,IAAI,CAAC,UAAU,IAAI,QAAQ,GAAG,QAAQ,GAAG,SAAS,CACnD;AACe,wBAAA,EAAAA,CAAS,CACvB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,SAAS,CACvD;;YAEC,IAAI,CAAC,aAAa,EAAE;;OAEzB;QACH;AAEA,QAAA,OAAOF,CAAI,CAAA;;;gBAGCC,CAAQ,CAAC,UAAU,CAAC;;AAErB,aAAA,EAAA,IAAI,CAAC,QAAQ;AACR,kBAAA,EAAA,IAAI,CAAC,QAAQ;AACd,iBAAA,EAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACpB,kBAAA,EAAA,IAAI,CAAC,QAAQ;wBACT,IAAI,CAAC,YAAY,GAAG,MAAM,GAAGE,CAAO;wBACpC,IAAI,CAAC,UAAU,GAAG,MAAM,GAAGA,CAAO;AAClC,sBAAA,EAAAD,CAAS,CACvB,IAAI,CAAC,UAAU,IAAI,QAAQ,GAAG,QAAQ,GAAG,SAAS,CACnD;AACe,sBAAA,EAAAA,CAAS,CACvB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,SAAS,CACvD;;UAEC,IAAI,CAAC,aAAa,EAAE;;KAEzB;IACH;IAEA,aAAa,GAAA;AACX,QAAA,OAAOF,CAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;KAsBV;IACH;;AA/KO,QAAA,CAAA,MAAM,GAAG,CAACI,UAAM,EAAEC,QAAW,CAAC;AAKT,UAAA,CAAA;AAA3B,IAAAP,CAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAAa,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AAGK,UAAA,CAAA;IAA3CA,CAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AAAmB,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AAGR,UAAA,CAAA;IAApDA,CAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE;AAAmB,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AAGf,UAAA,CAAA;IAAtDA,CAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE;AAAqB,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,CAAA;AAGlB,UAAA,CAAA;IAAvDA,CAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE;AAAsB,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,aAAA,EAAA,MAAA,CAAA;AAGjC,UAAA,CAAA;IAA1CA,CAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;AAC5B,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,CAAA;AAIiB,UAAA,CAAA;IAA7BQ,GAAK,CAAC,YAAY;AAA4C,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,aAAA,EAAA,MAAA,CAAA;AA9BpD,QAAQ,GAAA,UAAA,CAAA;IADpB;AACY,CAAA,EAAA,QAAQ,CAqLpB;;;;"}
|
|
1
|
+
{"version":3,"file":"menu-item.js","sources":["../../src/__internal/mixins/NativeButtonMixin.ts","../../src/menu/menu-item/menu-item.ts"],"sourcesContent":["import { LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport type { MixinConstructor } from './MixinConstructor.js';\n\n/**\n * 1. Define an interface for the members the mixin adds.\n * This makes the type annotation much cleaner.\n */\nexport interface NativeButtonInterface {\n htmlType: 'button' | 'submit' | 'reset';\n disabled: boolean;\n softDisabled: boolean;\n disabledReason: string;\n form: string;\n name: string;\n value: string;\n}\n\n/**\n * 2. Apply the type annotation to the variable.\n */\nconst NativeButtonMixin: <T extends MixinConstructor<LitElement>>(\n superclass: T,\n) => T & MixinConstructor<NativeButtonInterface> = <\n T extends MixinConstructor<LitElement>,\n>(\n superclass: T,\n) => {\n // Naming the class (BaseButtonElement) instead of using 'Mixin' or anonymous\n // prevents the \"__childPart\" visibility error.\n class ButtonElement extends superclass implements NativeButtonInterface {\n /**\n * The type of the underlying `<button>` element. Maps to the native `type` attribute.\n * Possible values are `\"button\"`, `\"submit\"`, `\"reset\"`. Defaults to `\"button\"`.\n */\n @property({ type: String }) htmlType: 'button' | 'submit' | 'reset' =\n 'button';\n\n /**\n * When `true`, the button is disabled and cannot be interacted with. Reflects to the `disabled` attribute. Defaults to `false`.\n */\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n\n /**\n * When `true`, the button is visually styled as disabled and cannot be interacted with, but remains focusable.\n * Use this in combination with `disabledReason` to communicate why the button is unavailable.\n * Reflects to the `soft-disabled` attribute. Defaults to `false`.\n */\n @property({ type: Boolean, reflect: true, attribute: 'soft-disabled' })\n softDisabled: boolean = false;\n\n /**\n * A human-readable explanation of why the button is disabled or soft-disabled.\n * Rendered as a visually hidden tooltip and linked via `aria-describedby` for accessibility.\n * Maps to the `disabled-reason` attribute.\n */\n @property({ attribute: 'disabled-reason' })\n disabledReason: string = '';\n\n /**\n * The `id` of the `<form>` element to associate the button with.\n * If omitted, the button is associated with its nearest ancestor form.\n * Maps to the native `form` attribute.\n */\n @property()\n form: string = '';\n\n /**\n * The name of the button, submitted as part of a name/value pair when the associated form is submitted.\n * Maps to the native `name` attribute.\n */\n @property()\n name: string = '';\n\n /**\n * The value of the button, submitted as part of a name/value pair when the associated form is submitted.\n * Maps to the native `value` attribute.\n */\n @property()\n value: string = '';\n }\n\n return ButtonElement as T & MixinConstructor<NativeButtonInterface>;\n};\n\nexport default NativeButtonMixin;\n","import { html, LitElement, nothing } from \"lit\";\nimport { property, query } from \"lit/decorators.js\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport styles from \"./menu-item.scss\";\nimport colorStyles from \"./menu-item-colors.scss\";\nimport NativeButtonMixin from \"@/__internal/mixins/NativeButtonMixin.js\";\nimport NativeHyperlinkMixin from \"@/__internal/mixins/NativeHyperlinkMixin.js\";\nimport { isLink } from \"@/__internal/utils/is-link.js\";\nimport IndividualComponent from \"@/IndividualComponent.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\n\n/**\n * @label Menu Item\n * @tag wc-menu-item\n * @rawTag menu-item\n * @summary An item in a menu list.\n * @tags navigation\n *\n * @example\n * ```html\n * <wc-menu-item>Menu Item</wc-menu-item>\n * ```\n */\n@IndividualComponent\nexport class MenuItem extends NativeButtonMixin(\n NativeHyperlinkMixin(LitElement),\n) {\n // ── Static ───────────────────────────────────────────────────────────────\n\n static styles = [styles, colorStyles];\n\n // ── Properties ───────────────────────────────────────────────────────────\n\n /** The value associated with this menu item, used to identify it on selection. */\n @property({ type: String })\n value = \"\";\n\n /** Whether this menu item is currently selected/highlighted. */\n @property({ type: Boolean, reflect: true })\n selected = false;\n\n /** When true, the menu stays open after this item is activated. */\n @property({ type: Boolean, attribute: \"keep-open\" })\n keepOpen = false;\n\n /** When true, indicates this item has an associated submenu. */\n @property({ type: Boolean, attribute: \"has-submenu\" })\n hasSubmenu = false;\n\n /** Whether the associated submenu is currently open. */\n @property({ type: Boolean, attribute: \"submenu-open\" })\n submenuOpen = false;\n\n // ── Queries ───────────────────────────────────────────────────────────────\n\n @query(\"#menu-item\")\n readonly itemElement!: HTMLElement | null;\n\n // ── Private fields ────────────────────────────────────────────────────────\n\n /** MutationObserver that triggers re-render when slotted content changes. */\n private readonly _contentObserver = new MutationObserver(() => {\n this.requestUpdate();\n });\n\n /** Roving tabindex value managed by the parent Menu. */\n private _rovingTabIndex = -1;\n\n connectedCallback() {\n // eslint-disable-next-line wc/guard-super-call\n super.connectedCallback();\n this._contentObserver.observe(this, {\n subtree: true,\n childList: true,\n characterData: true,\n attributes: true,\n attributeFilter: [\"slot\"],\n });\n }\n\n disconnectedCallback() {\n this._contentObserver.disconnect();\n super.disconnectedCallback();\n }\n\n override get tabIndex() {\n return this._rovingTabIndex;\n }\n\n override set tabIndex(value: number) {\n this._rovingTabIndex = value;\n this.requestUpdate();\n }\n\n override focus() {\n this.itemElement?.focus();\n }\n\n override blur() {\n this.itemElement?.blur();\n }\n\n private _hasNamedSlot(...names: string[]) {\n return names.some((name) =>\n Array.from(this.children).some(\n (child) => child.getAttribute(\"slot\") === name,\n )\n );\n }\n\n private _hasDefaultSlot() {\n return Array.from(this.childNodes).some((node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n return Boolean(node.textContent?.trim());\n }\n\n return (\n node.nodeType === Node.ELEMENT_NODE &&\n !(node as Element).hasAttribute(\"slot\")\n );\n });\n }\n\n render() {\n const isElementLink = isLink(this);\n const controls = this.getAttribute(\"aria-controls\");\n\n const cssClasses = {\n \"menu-item\": true,\n \"native-button\": !isElementLink,\n \"native-link\": isElementLink,\n };\n\n if (isElementLink) {\n return html`\n <a\n id=\"menu-item\"\n class=\"${classMap(cssClasses)}\"\n role=\"menuitem\"\n href=\"${ifDefined(this.href)}\"\n target=\"${this.target}\"\n ?rel=\"${this.rel}\"\n ?download=\"${this.download}\"\n tabindex=\"${this.disabled ? \"-1\" : String(this.tabIndex)}\"\n ?selected=\"${this.selected}\"\n aria-disabled=\"${this.disabled || this.softDisabled\n ? \"true\"\n : nothing}\"\n aria-haspopup=\"${this.hasSubmenu ? \"menu\" : nothing}\"\n aria-controls=\"${ifDefined(\n this.hasSubmenu && controls ? controls : undefined,\n )}\"\n aria-expanded=\"${ifDefined(\n this.hasSubmenu ? String(this.submenuOpen) : undefined,\n )}\"\n >\n ${this.renderContent()}\n </a>\n `;\n }\n\n return html`\n <button\n id=\"menu-item\"\n class=\"${classMap(cssClasses)}\"\n role=\"menuitem\"\n type=\"${this.htmlType}\"\n ?disabled=\"${this.disabled}\"\n tabindex=\"${String(this.tabIndex)}\"\n ?selected=\"${this.selected}\"\n aria-disabled=\"${this.softDisabled ? \"true\" : nothing}\"\n aria-haspopup=\"${this.hasSubmenu ? \"menu\" : nothing}\"\n aria-controls=\"${ifDefined(\n this.hasSubmenu && controls ? controls : undefined,\n )}\"\n aria-expanded=\"${ifDefined(\n this.hasSubmenu ? String(this.submenuOpen) : undefined,\n )}\"\n >\n ${this.renderContent()}\n </button>\n `;\n }\n\n renderContent() {\n return html`\n <div class=\"menu-item-backdrop-background\"></div>\n <wc-elevation class=\"menu-item-backdrop-elevation\"></wc-elevation>\n\n <wc-item class=\"menu-item-content\">\n <wc-focus-ring\n class=\"focus-ring\"\n for=\"menu-item\"\n slot=\"container\"\n ></wc-focus-ring>\n <div class=\"background\" slot=\"container\"></div>\n <wc-ripple class=\"ripple\" for=\"menu-item\" slot=\"container\"></wc-ripple>\n\n <slot name=\"start\" slot=\"start\"></slot>\n <slot name=\"overline\" slot=\"overline\"></slot>\n <slot name=\"headline\" slot=\"headline\"></slot>\n <slot></slot>\n <slot name=\"supporting-text\" slot=\"supporting-text\"></slot>\n <slot\n name=\"trailing-supporting-text\"\n slot=\"trailing-supporting-text\"\n ></slot>\n <slot name=\"end\" slot=\"end\"></slot>\n </wc-item>\n `;\n }\n}\n"],"names":["property","LitElement","html","classMap","ifDefined","nothing","styles","colorStyles","query"],"mappings":"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"}
|
package/dist/menu.js
CHANGED
|
@@ -67,23 +67,63 @@ var css_248z = i`* {
|
|
|
67
67
|
z-index: 1;
|
|
68
68
|
width: 100%;
|
|
69
69
|
}
|
|
70
|
-
.menu .menu-content ::slotted(
|
|
71
|
-
--menu-item-container-shape-start-start: var(
|
|
72
|
-
|
|
70
|
+
.menu .menu-content ::slotted([data-position-after-divider]) {
|
|
71
|
+
--menu-item-backdrop-container-shape-start-start: var(
|
|
72
|
+
--shape-corner-small
|
|
73
|
+
);
|
|
74
|
+
--menu-item-backdrop-container-shape-start-end: var(--shape-corner-small);
|
|
75
|
+
--sub-menu-item-backdrop-container-shape-start-start: var(
|
|
76
|
+
--shape-corner-small
|
|
77
|
+
);
|
|
78
|
+
--sub-menu-item-backdrop-container-shape-start-end: var(
|
|
79
|
+
--shape-corner-small
|
|
80
|
+
);
|
|
81
|
+
--menu-item-backdrop-elevation-level-block-start: 1;
|
|
73
82
|
}
|
|
74
|
-
.menu .menu-content ::slotted(
|
|
75
|
-
--menu-item-container-shape-
|
|
76
|
-
|
|
83
|
+
.menu .menu-content ::slotted([data-position-first]) {
|
|
84
|
+
--menu-item-backdrop-container-shape-start-start: var(
|
|
85
|
+
--shape-corner-large
|
|
86
|
+
);
|
|
87
|
+
--menu-item-backdrop-container-shape-start-end: var(--shape-corner-large);
|
|
88
|
+
--sub-menu-item-backdrop-container-shape-start-start: var(
|
|
89
|
+
--shape-corner-large
|
|
90
|
+
);
|
|
91
|
+
--sub-menu-item-backdrop-container-shape-start-end: var(
|
|
92
|
+
--shape-corner-large
|
|
93
|
+
);
|
|
94
|
+
--menu-item-backdrop-elevation-level-block-start: 1;
|
|
95
|
+
}
|
|
96
|
+
.menu .menu-content ::slotted([data-position-before-divider]) {
|
|
97
|
+
--menu-item-backdrop-elevation-level-block-end: 1;
|
|
98
|
+
--menu-item-backdrop-container-shape-end-start: var(--shape-corner-small);
|
|
99
|
+
--menu-item-backdrop-container-shape-end-end: var(--shape-corner-small);
|
|
100
|
+
--sub-menu-item-backdrop-container-shape-end-start: var(
|
|
101
|
+
--shape-corner-small
|
|
102
|
+
);
|
|
103
|
+
--sub-menu-item-backdrop-container-shape-end-end: var(
|
|
104
|
+
--shape-corner-small
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
.menu .menu-content ::slotted([data-position-last]) {
|
|
108
|
+
--menu-item-backdrop-elevation-level-block-end: 1;
|
|
109
|
+
--menu-item-backdrop-container-shape-end-start: var(--shape-corner-large);
|
|
110
|
+
--menu-item-backdrop-container-shape-end-end: var(--shape-corner-large);
|
|
111
|
+
--sub-menu-item-backdrop-container-shape-end-start: var(
|
|
112
|
+
--shape-corner-large
|
|
113
|
+
);
|
|
114
|
+
--sub-menu-item-backdrop-container-shape-end-end: var(
|
|
115
|
+
--shape-corner-large
|
|
116
|
+
);
|
|
77
117
|
}
|
|
78
118
|
.menu .menu-content ::slotted(wc-divider) {
|
|
79
|
-
--divider-spacing:
|
|
119
|
+
--divider-spacing: 1px;
|
|
80
120
|
padding-inline: var(--spacing-050);
|
|
121
|
+
--divider-color: transparent;
|
|
81
122
|
}
|
|
82
123
|
.menu .background {
|
|
83
124
|
display: block;
|
|
84
125
|
position: absolute;
|
|
85
126
|
inset: 0;
|
|
86
|
-
border: 1px solid var(--color-red);
|
|
87
127
|
border-start-start-radius: var(--_container-shape-start-start);
|
|
88
128
|
border-start-end-radius: var(--_container-shape-start-end);
|
|
89
129
|
border-end-start-radius: var(--_container-shape-end-start);
|
|
@@ -102,12 +142,6 @@ var css_248z = i`* {
|
|
|
102
142
|
--_container-shape-start-end: var(--shape-corner-large);
|
|
103
143
|
--_container-shape-end-start: var(--shape-corner-large);
|
|
104
144
|
--_container-shape-end-end: var(--shape-corner-large);
|
|
105
|
-
}
|
|
106
|
-
.menu.variant-standard {
|
|
107
|
-
--menu-item-container-color: var(--color-surface-container);
|
|
108
|
-
}
|
|
109
|
-
.menu.variant-vibrant {
|
|
110
|
-
--menu-item-container-color: var(--color-tertiary-container);
|
|
111
145
|
}`;
|
|
112
146
|
|
|
113
147
|
var Menu_1;
|
|
@@ -132,9 +166,9 @@ let Menu = Menu_1 = class Menu extends i$1 {
|
|
|
132
166
|
/** Whether the menu is currently visible. */
|
|
133
167
|
this.open = false;
|
|
134
168
|
/** Visual variant of the menu. `"vibrant"` applies stronger color emphasis. */
|
|
135
|
-
this.variant =
|
|
169
|
+
this.variant = "standard";
|
|
136
170
|
/** ID of the anchor element the menu is positioned relative to. */
|
|
137
|
-
this.anchor =
|
|
171
|
+
this.anchor = "";
|
|
138
172
|
/** When true, renders the menu in a static preview state (always visible, no animation). */
|
|
139
173
|
this.preview = false;
|
|
140
174
|
/** When true, the menu will not close when a click occurs outside it. */
|
|
@@ -144,7 +178,7 @@ let Menu = Menu_1 = class Menu extends i$1 {
|
|
|
144
178
|
/** Set to true when this menu is being used as a submenu inside another menu. */
|
|
145
179
|
this.isSubmenu = false;
|
|
146
180
|
/** Floating UI placement of the menu relative to its anchor. */
|
|
147
|
-
this.placement =
|
|
181
|
+
this.placement = "bottom-start";
|
|
148
182
|
/** Distance in pixels between the menu and its anchor element. */
|
|
149
183
|
this.offset = 6;
|
|
150
184
|
/** Index of the currently focused/active item within the enabled items list. */
|
|
@@ -153,20 +187,20 @@ let Menu = Menu_1 = class Menu extends i$1 {
|
|
|
153
187
|
this.anchorElement = null;
|
|
154
188
|
/** Controller managing floating-UI positioning. */
|
|
155
189
|
this._floatingController = new FloatingController(this, {
|
|
156
|
-
trigger:
|
|
190
|
+
trigger: "manual",
|
|
157
191
|
closeOnClickOutside: false,
|
|
158
|
-
strategy:
|
|
159
|
-
onOpenChange: isOpen => {
|
|
192
|
+
strategy: "fixed",
|
|
193
|
+
onOpenChange: (isOpen) => {
|
|
160
194
|
if (isOpen || !this.open) {
|
|
161
195
|
return;
|
|
162
196
|
}
|
|
163
|
-
this.close({ kind:
|
|
197
|
+
this.close({ kind: "outside-click" });
|
|
164
198
|
},
|
|
165
199
|
});
|
|
166
200
|
/** Element that had focus before the menu opened; restored on close. */
|
|
167
201
|
this._lastFocusedElement = null;
|
|
168
202
|
/** Reason that triggered the most recent close, included in the `closed` event detail. */
|
|
169
|
-
this._closeReason = { kind:
|
|
203
|
+
this._closeReason = { kind: "programmatic" };
|
|
170
204
|
this._onClick = (event) => {
|
|
171
205
|
if (!this.open) {
|
|
172
206
|
return;
|
|
@@ -180,7 +214,7 @@ let Menu = Menu_1 = class Menu extends i$1 {
|
|
|
180
214
|
if (item.keepOpen) {
|
|
181
215
|
return;
|
|
182
216
|
}
|
|
183
|
-
this.close({ kind:
|
|
217
|
+
this.close({ kind: "click-selection" });
|
|
184
218
|
};
|
|
185
219
|
this._onKeyDown = (event) => {
|
|
186
220
|
if (!this.open) {
|
|
@@ -194,33 +228,33 @@ let Menu = Menu_1 = class Menu extends i$1 {
|
|
|
194
228
|
this._setActiveItem(eventItem);
|
|
195
229
|
}
|
|
196
230
|
switch (event.key) {
|
|
197
|
-
case
|
|
231
|
+
case "ArrowDown":
|
|
198
232
|
event.preventDefault();
|
|
199
233
|
this._setActiveByOffset(1);
|
|
200
234
|
break;
|
|
201
|
-
case
|
|
235
|
+
case "ArrowUp":
|
|
202
236
|
event.preventDefault();
|
|
203
237
|
this._setActiveByOffset(-1);
|
|
204
238
|
break;
|
|
205
|
-
case
|
|
239
|
+
case "Home":
|
|
206
240
|
event.preventDefault();
|
|
207
241
|
this._setBoundaryActive(0);
|
|
208
242
|
break;
|
|
209
|
-
case
|
|
243
|
+
case "End": {
|
|
210
244
|
event.preventDefault();
|
|
211
245
|
const last = Math.max(this._enabledItems().length - 1, 0);
|
|
212
246
|
this._setBoundaryActive(last);
|
|
213
247
|
break;
|
|
214
248
|
}
|
|
215
|
-
case
|
|
249
|
+
case "Escape":
|
|
216
250
|
event.preventDefault();
|
|
217
|
-
this.close({ kind:
|
|
251
|
+
this.close({ kind: "keydown", key: "Escape" });
|
|
218
252
|
break;
|
|
219
|
-
case
|
|
220
|
-
this.close({ kind:
|
|
253
|
+
case "Tab":
|
|
254
|
+
this.close({ kind: "keydown", key: "Tab" });
|
|
221
255
|
break;
|
|
222
|
-
case
|
|
223
|
-
case
|
|
256
|
+
case "Enter":
|
|
257
|
+
case " ": {
|
|
224
258
|
event.preventDefault();
|
|
225
259
|
const activeItem = this._getActiveItem() ?? this._getFirstEnabledItem();
|
|
226
260
|
if (!activeItem) {
|
|
@@ -234,24 +268,25 @@ let Menu = Menu_1 = class Menu extends i$1 {
|
|
|
234
268
|
};
|
|
235
269
|
this._onSlotChange = () => {
|
|
236
270
|
this._syncRovingTabIndex();
|
|
271
|
+
this._syncItemPositions();
|
|
237
272
|
};
|
|
238
273
|
}
|
|
239
274
|
connectedCallback() {
|
|
240
275
|
// eslint-disable-next-line wc/guard-super-call
|
|
241
276
|
super.connectedCallback();
|
|
242
|
-
this.setAttribute(
|
|
243
|
-
this.addEventListener(
|
|
244
|
-
this.addEventListener(
|
|
277
|
+
this.setAttribute("role", "menu");
|
|
278
|
+
this.addEventListener("keydown", this._onKeyDown);
|
|
279
|
+
this.addEventListener("click", this._onClick);
|
|
245
280
|
this._syncAnchorAria();
|
|
246
281
|
}
|
|
247
282
|
disconnectedCallback() {
|
|
248
|
-
this.removeEventListener(
|
|
249
|
-
this.removeEventListener(
|
|
283
|
+
this.removeEventListener("keydown", this._onKeyDown);
|
|
284
|
+
this.removeEventListener("click", this._onClick);
|
|
250
285
|
this._floatingController.close();
|
|
251
286
|
super.disconnectedCallback();
|
|
252
287
|
}
|
|
253
288
|
get items() {
|
|
254
|
-
const slot = this.shadowRoot?.querySelector(
|
|
289
|
+
const slot = this.shadowRoot?.querySelector("slot");
|
|
255
290
|
const elements = slot?.assignedElements({ flatten: true }) ?? [];
|
|
256
291
|
const items = [];
|
|
257
292
|
for (const element of elements) {
|
|
@@ -271,10 +306,10 @@ let Menu = Menu_1 = class Menu extends i$1 {
|
|
|
271
306
|
if (this.open) {
|
|
272
307
|
return;
|
|
273
308
|
}
|
|
274
|
-
this._closeReason = { kind:
|
|
309
|
+
this._closeReason = { kind: "programmatic" };
|
|
275
310
|
this.open = true;
|
|
276
311
|
}
|
|
277
|
-
close(reason = { kind:
|
|
312
|
+
close(reason = { kind: "programmatic" }) {
|
|
278
313
|
if (!this.open) {
|
|
279
314
|
return;
|
|
280
315
|
}
|
|
@@ -293,7 +328,7 @@ let Menu = Menu_1 = class Menu extends i$1 {
|
|
|
293
328
|
return null;
|
|
294
329
|
}
|
|
295
330
|
const root = this.getRootNode();
|
|
296
|
-
if (
|
|
331
|
+
if ("getElementById" in root) {
|
|
297
332
|
return root.getElementById(this.anchor);
|
|
298
333
|
}
|
|
299
334
|
return document.getElementById(this.anchor);
|
|
@@ -306,12 +341,12 @@ let Menu = Menu_1 = class Menu extends i$1 {
|
|
|
306
341
|
if (!this.id) {
|
|
307
342
|
this.id = `wc-menu-${Math.random().toString(36).slice(2, 9)}`;
|
|
308
343
|
}
|
|
309
|
-
anchorEl.setAttribute(
|
|
310
|
-
anchorEl.setAttribute(
|
|
311
|
-
anchorEl.setAttribute(
|
|
344
|
+
anchorEl.setAttribute("aria-haspopup", "menu");
|
|
345
|
+
anchorEl.setAttribute("aria-controls", this.id);
|
|
346
|
+
anchorEl.setAttribute("aria-expanded", String(this.open));
|
|
312
347
|
}
|
|
313
348
|
_enabledItems() {
|
|
314
|
-
return this.items.filter(item => !item.disabled);
|
|
349
|
+
return this.items.filter((item) => !item.disabled);
|
|
315
350
|
}
|
|
316
351
|
_syncRovingTabIndex() {
|
|
317
352
|
const ownedItems = this.items;
|
|
@@ -364,7 +399,7 @@ let Menu = Menu_1 = class Menu extends i$1 {
|
|
|
364
399
|
}
|
|
365
400
|
_isEventFromThisMenu(event) {
|
|
366
401
|
const path = event.composedPath();
|
|
367
|
-
const sourceMenu = path.find(target => target instanceof Menu_1);
|
|
402
|
+
const sourceMenu = path.find((target) => target instanceof Menu_1);
|
|
368
403
|
return sourceMenu === this;
|
|
369
404
|
}
|
|
370
405
|
_ownedItemFromEvent(event) {
|
|
@@ -375,7 +410,7 @@ let Menu = Menu_1 = class Menu extends i$1 {
|
|
|
375
410
|
const ownedItems = this.items;
|
|
376
411
|
for (const target of path) {
|
|
377
412
|
if (target instanceof MenuItem) {
|
|
378
|
-
const ownedItem = ownedItems.find(item => item === target);
|
|
413
|
+
const ownedItem = ownedItems.find((item) => item === target);
|
|
379
414
|
if (ownedItem) {
|
|
380
415
|
return ownedItem;
|
|
381
416
|
}
|
|
@@ -393,12 +428,61 @@ let Menu = Menu_1 = class Menu extends i$1 {
|
|
|
393
428
|
this._syncRovingTabIndex();
|
|
394
429
|
}
|
|
395
430
|
_dispatchItemActivate(item) {
|
|
396
|
-
this.dispatchEvent(new CustomEvent(
|
|
431
|
+
this.dispatchEvent(new CustomEvent("menu-item-activate", {
|
|
397
432
|
bubbles: true,
|
|
398
433
|
composed: true,
|
|
399
434
|
detail: { item },
|
|
400
435
|
}));
|
|
401
436
|
}
|
|
437
|
+
_syncItemPositions() {
|
|
438
|
+
const slot = this.shadowRoot?.querySelector("slot");
|
|
439
|
+
const elements = slot?.assignedElements({ flatten: true }) ?? [];
|
|
440
|
+
for (const el of elements) {
|
|
441
|
+
if (el instanceof HTMLElement) {
|
|
442
|
+
el.removeAttribute("data-position-first");
|
|
443
|
+
el.removeAttribute("data-position-last");
|
|
444
|
+
el.removeAttribute("data-position-after-divider");
|
|
445
|
+
el.removeAttribute("data-position-before-divider");
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
const items = elements.filter((el) => el.tagName.toLowerCase() !== "wc-divider");
|
|
449
|
+
if (items.length === 0) {
|
|
450
|
+
return;
|
|
451
|
+
}
|
|
452
|
+
const firstItem = items[0];
|
|
453
|
+
if (firstItem instanceof HTMLElement) {
|
|
454
|
+
firstItem.setAttribute("data-position-first", "");
|
|
455
|
+
}
|
|
456
|
+
const lastItem = items[items.length - 1];
|
|
457
|
+
if (lastItem instanceof HTMLElement) {
|
|
458
|
+
lastItem.setAttribute("data-position-last", "");
|
|
459
|
+
}
|
|
460
|
+
for (let i = 0; i < elements.length; i++) {
|
|
461
|
+
const el = elements[i];
|
|
462
|
+
if (el.tagName.toLowerCase() === "wc-divider") {
|
|
463
|
+
let prevItem = null;
|
|
464
|
+
for (let j = i - 1; j >= 0; j--) {
|
|
465
|
+
if (elements[j].tagName.toLowerCase() !== "wc-divider") {
|
|
466
|
+
prevItem = elements[j];
|
|
467
|
+
break;
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
if (prevItem instanceof HTMLElement) {
|
|
471
|
+
prevItem.setAttribute("data-position-before-divider", "");
|
|
472
|
+
}
|
|
473
|
+
let nextItem = null;
|
|
474
|
+
for (let j = i + 1; j < elements.length; j++) {
|
|
475
|
+
if (elements[j].tagName.toLowerCase() !== "wc-divider") {
|
|
476
|
+
nextItem = elements[j];
|
|
477
|
+
break;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
if (nextItem instanceof HTMLElement) {
|
|
481
|
+
nextItem.setAttribute("data-position-after-divider", "");
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
}
|
|
402
486
|
_applyPositioning() {
|
|
403
487
|
if (!this.open || !this.menuListElement) {
|
|
404
488
|
return;
|
|
@@ -410,21 +494,22 @@ let Menu = Menu_1 = class Menu extends i$1 {
|
|
|
410
494
|
this._floatingController.setOptions({
|
|
411
495
|
placement: this.placement,
|
|
412
496
|
offset: this.offset,
|
|
413
|
-
strategy:
|
|
497
|
+
strategy: "fixed",
|
|
414
498
|
closeOnClickOutside: !this.stayOpenOnOutsideClick,
|
|
415
499
|
});
|
|
416
500
|
this._floatingController.setElements(anchorEl, this.menuListElement);
|
|
417
501
|
this._floatingController.open();
|
|
418
502
|
}
|
|
419
503
|
updated(changedProperties) {
|
|
420
|
-
if (changedProperties.has(
|
|
504
|
+
if (changedProperties.has("anchor") || changedProperties.has("open")) {
|
|
421
505
|
this._syncAnchorAria();
|
|
422
506
|
}
|
|
423
|
-
if (changedProperties.has(
|
|
507
|
+
if (changedProperties.has("open")) {
|
|
424
508
|
if (this.open) {
|
|
425
509
|
this._lastFocusedElement = document.activeElement;
|
|
426
510
|
this._syncRovingTabIndex();
|
|
427
|
-
this.
|
|
511
|
+
this._syncItemPositions();
|
|
512
|
+
this.dispatchEvent(new CustomEvent("opened", {
|
|
428
513
|
bubbles: true,
|
|
429
514
|
composed: true,
|
|
430
515
|
}));
|
|
@@ -433,7 +518,7 @@ let Menu = Menu_1 = class Menu extends i$1 {
|
|
|
433
518
|
else {
|
|
434
519
|
this._floatingController.close();
|
|
435
520
|
const reason = this._closeReason;
|
|
436
|
-
this.dispatchEvent(new CustomEvent(
|
|
521
|
+
this.dispatchEvent(new CustomEvent("close-menu", {
|
|
437
522
|
bubbles: true,
|
|
438
523
|
composed: true,
|
|
439
524
|
detail: {
|
|
@@ -441,42 +526,45 @@ let Menu = Menu_1 = class Menu extends i$1 {
|
|
|
441
526
|
itemPath: [],
|
|
442
527
|
},
|
|
443
528
|
}));
|
|
444
|
-
this.dispatchEvent(new CustomEvent(
|
|
529
|
+
this.dispatchEvent(new CustomEvent("closed", {
|
|
445
530
|
bubbles: true,
|
|
446
531
|
composed: true,
|
|
447
532
|
detail: { reason },
|
|
448
533
|
}));
|
|
449
|
-
const shouldRestoreFocus = reason.kind !==
|
|
534
|
+
const shouldRestoreFocus = reason.kind !== "keydown" ||
|
|
535
|
+
reason.key !== "Tab";
|
|
450
536
|
if (!this.isSubmenu && shouldRestoreFocus) {
|
|
451
537
|
this._lastFocusedElement?.focus();
|
|
452
538
|
}
|
|
453
539
|
}
|
|
454
540
|
}
|
|
455
|
-
if ((changedProperties.has(
|
|
456
|
-
changedProperties.has(
|
|
457
|
-
changedProperties.has(
|
|
458
|
-
changedProperties.has(
|
|
541
|
+
if ((changedProperties.has("open") ||
|
|
542
|
+
changedProperties.has("anchor") ||
|
|
543
|
+
changedProperties.has("placement") ||
|
|
544
|
+
changedProperties.has("offset")) &&
|
|
459
545
|
this.open) {
|
|
460
546
|
this._applyPositioning();
|
|
461
547
|
}
|
|
462
548
|
}
|
|
463
549
|
render() {
|
|
464
|
-
return b
|
|
465
|
-
|
|
550
|
+
return b `
|
|
551
|
+
<div
|
|
552
|
+
class="${e$1({
|
|
466
553
|
menu: true,
|
|
467
554
|
open: !this.preview && this.open,
|
|
468
555
|
closed: !this.preview && !this.open,
|
|
469
556
|
preview: this.preview,
|
|
470
557
|
[`variant-${this.variant}`]: true,
|
|
471
|
-
})}
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
558
|
+
})}"
|
|
559
|
+
aria-hidden="${String(!this.open)}"
|
|
560
|
+
>
|
|
561
|
+
<div class="background"></div>
|
|
475
562
|
|
|
476
|
-
|
|
477
|
-
|
|
563
|
+
<div class="menu-content">
|
|
564
|
+
<slot @slotchange="${this._onSlotChange}"></slot>
|
|
565
|
+
</div>
|
|
478
566
|
</div>
|
|
479
|
-
|
|
567
|
+
`;
|
|
480
568
|
}
|
|
481
569
|
};
|
|
482
570
|
Menu.styles = [css_248z];
|
|
@@ -494,13 +582,13 @@ __decorate([
|
|
|
494
582
|
n({ type: Boolean, reflect: true })
|
|
495
583
|
], Menu.prototype, "preview", void 0);
|
|
496
584
|
__decorate([
|
|
497
|
-
n({ type: Boolean, attribute:
|
|
585
|
+
n({ type: Boolean, attribute: "stay-open-on-outside-click" })
|
|
498
586
|
], Menu.prototype, "stayOpenOnOutsideClick", void 0);
|
|
499
587
|
__decorate([
|
|
500
|
-
n({ type: Boolean, attribute:
|
|
588
|
+
n({ type: Boolean, attribute: "stay-open-on-focusout" })
|
|
501
589
|
], Menu.prototype, "stayOpenOnFocusout", void 0);
|
|
502
590
|
__decorate([
|
|
503
|
-
n({ type: Boolean, attribute:
|
|
591
|
+
n({ type: Boolean, attribute: "is-submenu" })
|
|
504
592
|
], Menu.prototype, "isSubmenu", void 0);
|
|
505
593
|
__decorate([
|
|
506
594
|
n({ type: String })
|
|
@@ -512,7 +600,7 @@ __decorate([
|
|
|
512
600
|
r()
|
|
513
601
|
], Menu.prototype, "activeIndex", void 0);
|
|
514
602
|
__decorate([
|
|
515
|
-
e(
|
|
603
|
+
e(".menu")
|
|
516
604
|
], Menu.prototype, "menuListElement", void 0);
|
|
517
605
|
Menu = Menu_1 = __decorate([
|
|
518
606
|
IndividualComponent
|