@ixfx/components 0.2.5 → 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/bundle/index.d.ts +365 -143
- package/bundle/index.d.ts.map +1 -1
- package/bundle/index.js +2330 -826
- package/bundle/index.js.map +1 -1
- package/dist/ac-text.d.ts +2 -3
- package/dist/ac-text.d.ts.map +1 -1
- package/dist/ac-text.js +5 -5
- package/dist/ac-text.js.map +1 -1
- package/dist/{button-DgKUzE5o.js → button-DMt5XWUK.js} +6 -6
- package/dist/button-DMt5XWUK.js.map +1 -0
- package/dist/button.d.ts +3 -4
- package/dist/button.d.ts.map +1 -1
- package/dist/button.js +1 -1
- package/dist/checkbox.d.ts +3 -5
- package/dist/checkbox.d.ts.map +1 -1
- package/dist/checkbox.js +3 -3
- package/dist/checkbox.js.map +1 -1
- package/dist/{colour-C3MQIjFJ-BJV-QC-3.js → colour-C3MQIjFJ-BLXg8W3U.js} +2 -2
- package/dist/{colour-C3MQIjFJ-BJV-QC-3.js.map → colour-C3MQIjFJ-BLXg8W3U.js.map} +1 -1
- package/dist/{colour-picker-Bw-AZoWx.js → colour-picker-K6zu82lm.js} +8 -8
- package/dist/colour-picker-K6zu82lm.js.map +1 -0
- package/dist/colour-picker.d.ts +2 -2
- package/dist/colour-picker.js +1 -1
- package/dist/crumbs.d.ts +4 -6
- package/dist/crumbs.d.ts.map +1 -1
- package/dist/crumbs.js +12 -12
- package/dist/crumbs.js.map +1 -1
- package/dist/data-display.d.ts +1 -2
- package/dist/data-display.d.ts.map +1 -1
- package/dist/data-display.js +4 -5
- package/dist/data-display.js.map +1 -1
- package/dist/decorate-D7rC1gLP.js +27 -0
- package/dist/decorate-D7rC1gLP.js.map +1 -0
- package/dist/{defaults-FEZaGiYZ.js → defaults-C7elhuyJ.js} +2 -2
- package/dist/{defaults-FEZaGiYZ.js.map → defaults-C7elhuyJ.js.map} +1 -1
- package/dist/{dist-By5URG0Y.js → dist-BX0OVIm7.js} +2 -2
- package/dist/{dist-By5URG0Y.js.map → dist-BX0OVIm7.js.map} +1 -1
- package/dist/{dist-D7kJgnSE.js → dist-TAGYwaju.js} +1 -1
- package/dist/{dist-D7kJgnSE.js.map → dist-TAGYwaju.js.map} +1 -1
- package/dist/editable-label.d.ts +6 -1
- package/dist/editable-label.d.ts.map +1 -1
- package/dist/editable-label.js +51 -4
- package/dist/editable-label.js.map +1 -1
- package/dist/{hex-editor-Wd6ZtZA2.js → hex-editor-CsN_ySkH.js} +87 -87
- package/dist/hex-editor-CsN_ySkH.js.map +1 -0
- package/dist/{hex-editor-Gib1Grg2.d.ts → hex-editor-DlfoA65y.d.ts} +7 -8
- package/dist/hex-editor-DlfoA65y.d.ts.map +1 -0
- package/dist/hex.d.ts +1 -1
- package/dist/hex.js +1 -1
- package/dist/{highlight-CAjwQ4GE.js → highlight-TPbSHruI.js} +3 -3
- package/dist/highlight-TPbSHruI.js.map +1 -0
- package/dist/{icon-BR5aTIiP.js → icon-9NWTXtE1.js} +6 -7
- package/dist/icon-9NWTXtE1.js.map +1 -0
- package/dist/{icon-DQKdfR7U.d.ts → icon-CeTDJhC7.d.ts} +3 -4
- package/dist/icon-CeTDJhC7.d.ts.map +1 -0
- package/dist/icons.d.ts +2 -2
- package/dist/icons.js +3 -3
- package/dist/icons.js.map +1 -1
- package/dist/{incr-search-BjCNClnC.js → incr-search-DSKKsk6w.js} +119 -117
- package/dist/incr-search-DSKKsk6w.js.map +1 -0
- package/dist/incr-search.d.ts +2 -2
- package/dist/incr-search.js +2 -2
- package/dist/{index-CPVcTTXo.d.ts → index--hrxPBkQ.d.ts} +73 -74
- package/dist/index--hrxPBkQ.d.ts.map +1 -0
- package/dist/index-B1hNR7Z9.d.ts.map +1 -1
- package/dist/{index-CpbBI3n7.d.ts → index-CnL9krsH.d.ts} +3 -4
- package/dist/index-CnL9krsH.d.ts.map +1 -0
- package/dist/{index-CQxanqXF.d.ts → index-DSlPeWLK.d.ts} +28 -29
- package/dist/index-DSlPeWLK.d.ts.map +1 -0
- package/dist/{index-C5dK8RZa.d.ts → index-DrQjA8Gs.d.ts} +3 -4
- package/dist/index-DrQjA8Gs.d.ts.map +1 -0
- package/dist/{index-C9iBN908.d.ts → index-hXFn14tM.d.ts} +32 -32
- package/dist/index-hXFn14tM.d.ts.map +1 -0
- package/dist/index.d.ts +246 -32
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1464 -32
- package/dist/index.js.map +1 -1
- package/dist/keyboard-De_vOHLg.js.map +1 -1
- package/dist/{labelled-input-base-DS6-6C0r.js → labelled-input-base-CqPL5rKm.js} +2 -2
- package/dist/labelled-input-base-CqPL5rKm.js.map +1 -0
- package/dist/{labelled-input-base-DnRh4reU.d.ts → labelled-input-base-D-Y7agky.d.ts} +2 -3
- package/dist/labelled-input-base-D-Y7agky.d.ts.map +1 -0
- package/dist/labelled-radial-input.d.ts +4 -5
- package/dist/labelled-radial-input.d.ts.map +1 -1
- package/dist/labelled-radial-input.js +5 -5
- package/dist/labelled-radial-input.js.map +1 -1
- package/dist/labelled-range-input.d.ts +1 -1
- package/dist/labelled-range-input.js +4 -4
- package/dist/labelled-range-input.js.map +1 -1
- package/dist/led.d.ts +2 -3
- package/dist/led.d.ts.map +1 -1
- package/dist/led.js +3 -3
- package/dist/led.js.map +1 -1
- package/dist/{menu-BV6UFx_z.js → menu-DJJuCm-5.js} +55 -55
- package/dist/menu-DJJuCm-5.js.map +1 -0
- package/dist/{menu-item-DEzL_Yjk.js → menu-item-CKRfP0pN.js} +14 -14
- package/dist/menu-item-CKRfP0pN.js.map +1 -0
- package/dist/{menu-item-Cikacp4F.d.ts → menu-item-ClQF2DKN.d.ts} +7 -8
- package/dist/menu-item-ClQF2DKN.d.ts.map +1 -0
- package/dist/menu.d.ts +3 -3
- package/dist/menu.js +2 -2
- package/dist/miller.d.ts +7 -10
- package/dist/miller.d.ts.map +1 -1
- package/dist/miller.js +17 -17
- package/dist/miller.js.map +1 -1
- package/dist/narrowed-text.d.ts +2 -3
- package/dist/narrowed-text.d.ts.map +1 -1
- package/dist/narrowed-text.js +6 -6
- package/dist/narrowed-text.js.map +1 -1
- package/dist/panel.d.ts +2 -3
- package/dist/panel.d.ts.map +1 -1
- package/dist/panel.js +4 -4
- package/dist/panel.js.map +1 -1
- package/dist/plots.d.ts +1 -1
- package/dist/plots.js +1 -1
- package/dist/polar-pad.d.ts +1 -2
- package/dist/polar-pad.d.ts.map +1 -1
- package/dist/polar-pad.js +3 -3
- package/dist/polar-pad.js.map +1 -1
- package/dist/{popup-Ddx9LCzY.js → popup-ImtS9KnS.js} +1 -1
- package/dist/{popup-Ddx9LCzY.js.map → popup-ImtS9KnS.js.map} +1 -1
- package/dist/{prominence-CreDBdCs.js → prominence--ic9uWBl.js} +1 -1
- package/dist/{prominence-CreDBdCs.js.map → prominence--ic9uWBl.js.map} +1 -1
- package/dist/{radial-input-CNJ8asY2.js → radial-input-DZA6WaFu.js} +16 -16
- package/dist/radial-input-DZA6WaFu.js.map +1 -0
- package/dist/{radial-input-xSTd4kEz.d.ts → radial-input-LUSBEycd.d.ts} +2 -3
- package/dist/radial-input-LUSBEycd.d.ts.map +1 -0
- package/dist/radial-input.d.ts +1 -1
- package/dist/radial-input.js +1 -1
- package/dist/range-input.d.ts +2 -3
- package/dist/range-input.d.ts.map +1 -1
- package/dist/range-input.js +3 -3
- package/dist/range-input.js.map +1 -1
- package/dist/range.d.ts +2 -3
- package/dist/range.d.ts.map +1 -1
- package/dist/range.js +4 -4
- package/dist/range.js.map +1 -1
- package/dist/{registry-CZEB1YI9.js → registry-Q2gYQCHM.js} +1 -1
- package/dist/{registry-CZEB1YI9.js.map → registry-Q2gYQCHM.js.map} +1 -1
- package/dist/selecthorizontal.d.ts +2 -3
- package/dist/selecthorizontal.d.ts.map +1 -1
- package/dist/selecthorizontal.js +3 -3
- package/dist/selecthorizontal.js.map +1 -1
- package/dist/snap-container.d.ts +1 -2
- package/dist/snap-container.d.ts.map +1 -1
- package/dist/snap-container.js +3 -3
- package/dist/snap-container.js.map +1 -1
- package/dist/split-layout.d.ts +2 -3
- package/dist/split-layout.d.ts.map +1 -1
- package/dist/split-layout.js +6 -6
- package/dist/split-layout.js.map +1 -1
- package/dist/swipe.d.ts +1 -2
- package/dist/swipe.d.ts.map +1 -1
- package/dist/swipe.js +4 -4
- package/dist/swipe.js.map +1 -1
- package/dist/{tab-list-CFF7uSYH.d.ts → tab-list-BnqISNvO.d.ts} +5 -6
- package/dist/tab-list-BnqISNvO.d.ts.map +1 -0
- package/dist/tabs.d.ts +1 -1
- package/dist/tabs.js +4 -4
- package/dist/tabs.js.map +1 -1
- package/dist/tickled-controller-Cq1Va0rR.d.ts.map +1 -1
- package/dist/tickled-styles-Bg3QbcrD.js.map +1 -1
- package/dist/{timeline-DBWJsSjd.js → timeline-Cv75Th2U.js} +123 -119
- package/dist/timeline-Cv75Th2U.js.map +1 -0
- package/dist/timeline.d.ts +2 -2
- package/dist/timeline.js +1 -1
- package/dist/{tooltip-kfUBWYVB.d.ts → tooltip-CwGfb4lp.d.ts} +2 -3
- package/dist/tooltip-CwGfb4lp.d.ts.map +1 -0
- package/dist/tree-CvvKbO-f.js +1330 -0
- package/dist/tree-CvvKbO-f.js.map +1 -0
- package/dist/{tree-component-CQpoPo4s.d.ts → tree-component-D8Bg48tt.d.ts} +12 -12
- package/dist/tree-component-D8Bg48tt.d.ts.map +1 -0
- package/dist/tree.d.ts +4 -5
- package/dist/tree.d.ts.map +1 -1
- package/dist/tree.js +1 -1143
- package/dist/types-BKaqnpwx.d.ts.map +1 -1
- package/dist/{xy-axis-CIFok7MF.d.ts → xy-axis-D9uwpGTT.d.ts} +5 -6
- package/dist/xy-axis-D9uwpGTT.d.ts.map +1 -0
- package/dist/{xy-axis-BANbgrI5.js → xy-axis-DL0tfJDr.js} +13 -13
- package/dist/xy-axis-DL0tfJDr.js.map +1 -0
- package/dist/xy-pad.d.ts +1 -2
- package/dist/xy-pad.d.ts.map +1 -1
- package/dist/xy-pad.js +4 -4
- package/dist/xy-pad.js.map +1 -1
- package/package.json +17 -13
- package/dist/button-DgKUzE5o.js.map +0 -1
- package/dist/colour-picker-Bw-AZoWx.js.map +0 -1
- package/dist/decorate-BZbkqIhA.js +0 -9
- package/dist/hex-editor-Gib1Grg2.d.ts.map +0 -1
- package/dist/hex-editor-Wd6ZtZA2.js.map +0 -1
- package/dist/highlight-CAjwQ4GE.js.map +0 -1
- package/dist/icon-BR5aTIiP.js.map +0 -1
- package/dist/icon-DQKdfR7U.d.ts.map +0 -1
- package/dist/incr-search-BjCNClnC.js.map +0 -1
- package/dist/index-C5dK8RZa.d.ts.map +0 -1
- package/dist/index-C9iBN908.d.ts.map +0 -1
- package/dist/index-CPVcTTXo.d.ts.map +0 -1
- package/dist/index-CQxanqXF.d.ts.map +0 -1
- package/dist/index-CpbBI3n7.d.ts.map +0 -1
- package/dist/labelled-input-base-DS6-6C0r.js.map +0 -1
- package/dist/labelled-input-base-DnRh4reU.d.ts.map +0 -1
- package/dist/menu-BV6UFx_z.js.map +0 -1
- package/dist/menu-item-Cikacp4F.d.ts.map +0 -1
- package/dist/menu-item-DEzL_Yjk.js.map +0 -1
- package/dist/radial-input-CNJ8asY2.js.map +0 -1
- package/dist/radial-input-xSTd4kEz.d.ts.map +0 -1
- package/dist/tab-list-CFF7uSYH.d.ts.map +0 -1
- package/dist/timeline-DBWJsSjd.js.map +0 -1
- package/dist/tooltip-kfUBWYVB.d.ts.map +0 -1
- package/dist/tree-component-CQpoPo4s.d.ts.map +0 -1
- package/dist/tree-data-model-DGvRVOFY.js +0 -190
- package/dist/tree-data-model-DGvRVOFY.js.map +0 -1
- package/dist/tree.js.map +0 -1
- package/dist/xy-axis-BANbgrI5.js.map +0 -1
- package/dist/xy-axis-CIFok7MF.d.ts.map +0 -1
- /package/dist/{interaction-CQDQJf2Q.js → interaction-DG7X1rhI.js} +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { n as tickledStyles, r as TickledController, t as tickledItemStyles } from "./tickled-styles-Bg3QbcrD.js";
|
|
2
|
-
import { t as __decorate } from "./decorate-
|
|
3
|
-
import "./icon-
|
|
4
|
-
import { t as popupSurfaceStyles } from "./popup-
|
|
5
|
-
import "./interaction-
|
|
2
|
+
import { n as safeCustomElement, t as __decorate } from "./decorate-D7rC1gLP.js";
|
|
3
|
+
import "./icon-9NWTXtE1.js";
|
|
4
|
+
import { t as popupSurfaceStyles } from "./popup-ImtS9KnS.js";
|
|
5
|
+
import "./interaction-DG7X1rhI.js";
|
|
6
6
|
import { LitElement, css, html } from "lit";
|
|
7
|
-
import {
|
|
7
|
+
import { property, query, state } from "lit/decorators.js";
|
|
8
8
|
//#region src/menu/menu-container.ts
|
|
9
9
|
let MenuContainer = class MenuContainer extends LitElement {
|
|
10
10
|
constructor(..._args) {
|
|
@@ -13,7 +13,7 @@ let MenuContainer = class MenuContainer extends LitElement {
|
|
|
13
13
|
getItems: () => {
|
|
14
14
|
return this._getMenuItems().map((item, i) => ({
|
|
15
15
|
id: i,
|
|
16
|
-
enabled: !item.hasAttribute(
|
|
16
|
+
enabled: !item.hasAttribute(`disabled`)
|
|
17
17
|
}));
|
|
18
18
|
},
|
|
19
19
|
onTickle: (index) => {
|
|
@@ -147,7 +147,7 @@ let MenuContainer = class MenuContainer extends LitElement {
|
|
|
147
147
|
*/
|
|
148
148
|
willUpdate(changed) {
|
|
149
149
|
super.willUpdate(changed);
|
|
150
|
-
this.setAttribute(
|
|
150
|
+
this.setAttribute(`data-input-mode`, this.tickled.inputMode);
|
|
151
151
|
}
|
|
152
152
|
render() {
|
|
153
153
|
return html`
|
|
@@ -205,14 +205,14 @@ let MenuContainer = class MenuContainer extends LitElement {
|
|
|
205
205
|
}
|
|
206
206
|
}
|
|
207
207
|
});
|
|
208
|
-
if (this.tickled.inputMode ===
|
|
208
|
+
if (this.tickled.inputMode === `keyboard` && this.tickled.tickledId !== void 0) items[this.tickled.tickledId]?.focus();
|
|
209
209
|
}
|
|
210
210
|
focusFirst() {
|
|
211
|
-
this.tickled.handleKeyboardNavigation(
|
|
211
|
+
this.tickled.handleKeyboardNavigation(`first`);
|
|
212
212
|
}
|
|
213
213
|
_focusNext(items, direction) {
|
|
214
214
|
if (items.length === 0) return;
|
|
215
|
-
this.tickled.handleKeyboardNavigation(direction > 0 ?
|
|
215
|
+
this.tickled.handleKeyboardNavigation(direction > 0 ? `next` : `previous`);
|
|
216
216
|
}
|
|
217
217
|
_focusItem(items, index) {
|
|
218
218
|
if (items.length === 0) return;
|
|
@@ -266,7 +266,7 @@ __decorate([property({
|
|
|
266
266
|
__decorate([property({ attribute: false })], MenuContainer.prototype, "registry", void 0);
|
|
267
267
|
__decorate([property({ attribute: false })], MenuContainer.prototype, "keyboardManager", void 0);
|
|
268
268
|
__decorate([query(`.popover`)], MenuContainer.prototype, "_popover", void 0);
|
|
269
|
-
MenuContainer = __decorate([
|
|
269
|
+
MenuContainer = __decorate([safeCustomElement(`ixfx-menu-container`)], MenuContainer);
|
|
270
270
|
//#endregion
|
|
271
271
|
//#region src/menu/menu-trigger.ts
|
|
272
272
|
var _MenuTrigger;
|
|
@@ -558,7 +558,7 @@ __decorate([state()], MenuTrigger.prototype, "_hasMenu", void 0);
|
|
|
558
558
|
__decorate([state()], MenuTrigger.prototype, "_hasTriggerSlot", void 0);
|
|
559
559
|
__decorate([query(`.trigger-btn`)], MenuTrigger.prototype, "_triggerBtn", void 0);
|
|
560
560
|
__decorate([query(`.popup`)], MenuTrigger.prototype, "_popup", void 0);
|
|
561
|
-
MenuTrigger = _MenuTrigger = __decorate([
|
|
561
|
+
MenuTrigger = _MenuTrigger = __decorate([safeCustomElement(`ixfx-menu-trigger`)], MenuTrigger);
|
|
562
562
|
//#endregion
|
|
563
563
|
//#region src/menu/menu-item.ts
|
|
564
564
|
let MenuItem = class MenuItem extends LitElement {
|
|
@@ -759,8 +759,8 @@ __decorate([property({ attribute: false })], MenuItem.prototype, "keyboardManage
|
|
|
759
759
|
__decorate([property({ attribute: false })], MenuItem.prototype, "submenuPopover", void 0);
|
|
760
760
|
__decorate([state()], MenuItem.prototype, "_hasChildren", void 0);
|
|
761
761
|
__decorate([query(`slot`)], MenuItem.prototype, "_slot", void 0);
|
|
762
|
-
MenuItem = __decorate([
|
|
762
|
+
MenuItem = __decorate([safeCustomElement(`ixfx-menu-item`)], MenuItem);
|
|
763
763
|
//#endregion
|
|
764
764
|
export { MenuTrigger as n, MenuContainer as r, MenuItem as t };
|
|
765
765
|
|
|
766
|
-
//# sourceMappingURL=menu-item-
|
|
766
|
+
//# sourceMappingURL=menu-item-CKRfP0pN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-item-CKRfP0pN.js","names":["customElement","customElement","customElement"],"sources":["../src/menu/menu-container.ts","../src/menu/menu-trigger.ts","../src/menu/menu-item.ts"],"sourcesContent":["import type { CommandRegistry, KeyboardManager } from '@clinth/ui-commands';\nimport { css, html, LitElement } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { TickledController, tickledStyles } from '../interaction/index.js';\nimport { popupSurfaceStyles } from '../styles/popup.js';\nimport { safeCustomElement as customElement } from '../util/custom-elements.js';\n\n@customElement(`ixfx-menu-container`)\nexport class MenuContainer extends LitElement {\n @property({ type: String, attribute: `anchor` }) anchor?: string;\n @property({ attribute: false }) registry?: CommandRegistry<unknown>;\n @property({ attribute: false }) keyboardManager?: KeyboardManager;\n @query(`.popover`) private _popover!: HTMLElement;\n\n // TickledController manages input mode and tickled state\n private tickled = new TickledController<number>(this, {\n getItems: () => {\n const items = this._getMenuItems();\n return items.map((item, i) => ({\n id: i,\n enabled: !item.hasAttribute(`disabled`),\n }));\n },\n onTickle: (index) => {\n // When an item is tickled (hovered/keyboard focused), handle submenu opening\n const items = this._getMenuItems();\n if (index !== undefined) {\n const item = items[index];\n // Ensure the item is focusable and focus it\n item.tabIndex = 0;\n item.focus({ preventScroll: true });\n }\n },\n onStateChange: () => {\n // Sync DOM attributes for slotted content\n this._syncTickledClasses();\n },\n });\n\n static styles = [popupSurfaceStyles, tickledStyles, css`\n :host {\n display: block;\n }\n\n .popover {\n padding: var(--space-xs) 0;\n min-width: 160px;\n }\n\n :host {\n opacity: 1;\n transform: translateY(0) scale(1);\n transition: opacity 0.12s ease-out, transform 0.12s ease-out,\n display 0.12s allow-discrete, overlay 0.12s allow-discrete;\n }\n\n @starting-style :host {\n opacity: 0;\n transform: translateY(-4px) scale(0.97);\n }\n\n ::slotted(menu-separator) {\n display: block;\n margin: var(--space-xs) 0;\n }\n `];\n\n private _updateIconSections(): void {\n const slot = this.shadowRoot?.querySelector(`slot`) as HTMLSlotElement | null;\n if (!slot)\n return;\n\n const assigned = slot.assignedElements({ flatten: true });\n\n // Group direct children into sections delimited by separators and headers\n const sections: Element[][] = [];\n let section: Element[] = [];\n for (const el of assigned) {\n if (el.tagName === `IXFX-MENU-SEPARATOR` || el.tagName === `IXFX-MENU-HEADER`) {\n if (section.length > 0) {\n sections.push(section); section = [];\n }\n } else {\n section.push(el);\n }\n }\n if (section.length > 0)\n sections.push(section);\n\n this._propagateContext();\n\n for (const sec of sections) {\n const hasIcon = sec.some((el) => {\n if (el.tagName === `IXFX-MENU-RADIO-GROUP`) {\n return [...el.children].some(ri => ri.hasAttribute(`icon-name`));\n }\n return el.hasAttribute(`icon-name`);\n });\n\n for (const el of sec) {\n if (el.tagName === `IXFX-MENU-RADIO-GROUP`) {\n for (const ri of el.children) {\n if (hasIcon)\n ri.setAttribute(`data-icon-section`, ``);\n else ri.removeAttribute(`data-icon-section`);\n }\n } else {\n if (hasIcon)\n el.setAttribute(`data-icon-section`, ``);\n else el.removeAttribute(`data-icon-section`);\n }\n }\n }\n\n this.performUpdate();\n }\n\n private _propagateContext(): void {\n const slot = this.shadowRoot?.querySelector(`slot`) as HTMLSlotElement | null;\n if (!slot)\n return;\n for (const el of slot.assignedElements({ flatten: true })) {\n if (`registry` in el)\n (el as any).registry = this.registry;\n if (`keyboardManager` in el)\n (el as any).keyboardManager = this.keyboardManager;\n }\n }\n\n override updated(changedProperties: Map<string, unknown>): void {\n if (changedProperties.has(`registry`) || changedProperties.has(`keyboardManager`)) {\n this._propagateContext();\n }\n }\n\n /**\n * Sync data-input-mode to :host so CSS variables cascade to slotted items\n */\n willUpdate(changed: Map<PropertyKey, unknown>): void {\n super.willUpdate(changed);\n // Set data-input-mode on :host so tickledStyles CSS variables cascade\n // through shadow DOM to slotted menu items\n this.setAttribute(`data-input-mode`, this.tickled.inputMode);\n }\n\n render() {\n return html`\n <div\n class=\"popover popup-surface\"\n role=\"menu\"\n @keydown=${this._handleKeydown}\n @mouseover=${this._handleMouseOver}\n >\n <slot @slotchange=${this._updateIconSections}></slot>\n </div>\n `;\n }\n\n private _getMenuItems(): HTMLElement[] {\n const slot = this.shadowRoot?.querySelector(`slot`);\n if (!slot)\n return [];\n\n const skipTags = [`IXFX-MENU-SEPARATOR`, `IXFX-MENU-HEADER`];\n const result: HTMLElement[] = [];\n\n for (const el of slot.assignedElements({ flatten: true })) {\n if (skipTags.includes(el.tagName))\n continue;\n if (el.hasAttribute(`disabled`))\n continue;\n const role = el.getAttribute(`role`);\n if (role === `none` || role === `presentation`)\n continue;\n\n if (el.tagName === `IXFX-MENU-RADIO-GROUP`) {\n const groupSlot = el.shadowRoot?.querySelector(`slot`) as HTMLSlotElement | null;\n for (const radioItem of groupSlot?.assignedElements({ flatten: true }) ?? []) {\n if (!radioItem.hasAttribute(`disabled`)) {\n result.push(radioItem as HTMLElement);\n }\n }\n } else {\n result.push(el as HTMLElement);\n }\n }\n\n return result;\n }\n\n /**\n * Sync .tickled class on slotted items to match controller state\n * This is called via onStateChange whenever the tickled state changes\n */\n private _syncTickledClasses(): void {\n const items = this._getMenuItems();\n items.forEach((item, i) => {\n if (this.tickled.isTickled(i)) {\n item.classList.add(`tickled`);\n item.tabIndex = 0;\n // Set inline styles to ensure visibility across shadow DOM boundaries\n const innerItem = item.shadowRoot?.querySelector(`.item`) as HTMLElement | null;\n if (innerItem) {\n innerItem.style.background = `rgba(0, 0, 0, 0.06)`;\n innerItem.style.borderColor = `var(--accent)`;\n innerItem.style.color = `inherit`;\n }\n } else {\n item.classList.remove(`tickled`);\n item.tabIndex = -1;\n // Clear inline styles\n const innerItem = item.shadowRoot?.querySelector(`.item`) as HTMLElement | null;\n if (innerItem) {\n innerItem.style.background = ``;\n innerItem.style.borderColor = ``;\n innerItem.style.color = ``;\n }\n }\n });\n\n // Focus the tickled item if in keyboard mode\n if (this.tickled.inputMode === `keyboard` && this.tickled.tickledId !== undefined) {\n const tickledItem = items[this.tickled.tickledId];\n tickledItem?.focus();\n }\n }\n\n private _handleMouseOver = (e: MouseEvent): void => {\n const items = this._getMenuItems();\n // composedPath crosses shadow boundaries to find the hovered menu item\n const path = e.composedPath();\n const hoveredIndex = items.findIndex(item => path.includes(item));\n if (hoveredIndex !== -1) {\n const item = items[hoveredIndex];\n // If IXFX-MENU-CONTAINER appears before this item in the composed path, the\n // event originated from inside a nested submenu. Skip the focus override so the\n // inner container keeps ownership of focus. stopPropagation() alone is not\n // sufficient because it does not reliably cross shadow-root boundaries with\n // popovers in the stack — both this handler and the inner one will fire.\n const itemPathIndex = path.indexOf(item);\n const isFromInsideSubmenu = path.slice(0, itemPathIndex).some(\n node => node instanceof Element && node.tagName === `IXFX-MENU-CONTAINER`,\n );\n if (!isFromInsideSubmenu) {\n // Use TickledController to handle mouse hover\n this.tickled.handlePointerEnter(hoveredIndex);\n }\n // Stop propagation so ancestor MenuContainers don't override this focus\n // with their own mouseover handler (e.g. outer menu focusing the sub-trigger).\n e.stopPropagation();\n }\n };\n\n focusFirst(): void {\n this.tickled.handleKeyboardNavigation(`first`);\n }\n\n private _focusNext(items: HTMLElement[], direction: number): void {\n if (items.length === 0) {\n return;\n }\n\n this.tickled.handleKeyboardNavigation(direction > 0 ? `next` : `previous`);\n }\n\n private _focusItem(items: HTMLElement[], index: number): void {\n if (items.length === 0) {\n return;\n }\n\n // Clamp index to valid range\n const clampedIndex = Math.max(0, Math.min(index, items.length - 1));\n this.tickled.handleKeyboardNavigation(clampedIndex);\n }\n\n private _activateFocusedItem(items: HTMLElement[]): void {\n const tickledIndex = this.tickled.tickledId;\n if (tickledIndex === undefined) {\n return;\n }\n\n const item = items[tickledIndex];\n if (!item) {\n return;\n }\n\n const tagName = item.tagName;\n\n if (tagName === `IXFX-MENU-SUB-TRIGGER`) {\n // Native menu behavior handles submenu navigation automatically\n return;\n }\n\n if (tagName === `IXFX-MENU-CHECK-ITEM`) {\n const checkItem = item as any;\n checkItem.checked = !checkItem.checked;\n checkItem.dispatchEvent(new CustomEvent(`command`, {\n detail: { command: checkItem.command, checked: checkItem.checked },\n bubbles: true,\n composed: true,\n }));\n return;\n }\n\n if (tagName === `IXFX-MENU-RADIO-ITEM`) {\n item.dispatchEvent(new CustomEvent(`radio-select`, {\n detail: { value: (item as any).value },\n bubbles: true,\n composed: true,\n }));\n return;\n }\n\n if (tagName === `IXFX-MENU-ITEM`) {\n const command = (item as any).command;\n if (command) {\n item.dispatchEvent(new CustomEvent(`command`, {\n detail: { command },\n bubbles: true,\n composed: true,\n }));\n }\n return;\n }\n\n (item as HTMLElement).click();\n }\n\n private _handleKeydown = (e: KeyboardEvent): void => {\n const items = this._getMenuItems();\n if (items.length === 0) {\n return;\n }\n\n switch (e.key) {\n case `ArrowDown`:\n e.preventDefault();\n e.stopPropagation();\n this._focusNext(items, 1);\n break;\n case `ArrowUp`:\n e.preventDefault();\n e.stopPropagation();\n this._focusNext(items, -1);\n break;\n case `Home`:\n e.preventDefault();\n e.stopPropagation();\n this._focusItem(items, 0);\n break;\n case `End`:\n e.preventDefault();\n e.stopPropagation();\n this._focusItem(items, items.length - 1);\n break;\n case `Enter`:\n case ` `:\n e.preventDefault();\n e.stopPropagation();\n this._activateFocusedItem(items);\n break;\n }\n };\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ixfx-menu-container': MenuContainer;\n }\n}\n","import type { CommandRegistry, KeyboardManager } from '@clinth/ui-commands';\nimport { css, html, LitElement } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { popupSurfaceStyles } from '../styles/popup.js';\nimport { safeCustomElement as customElement } from '../util/custom-elements.js';\nimport './menu-container.js';\n\ntype MenuMode = `trigger` | `dropdown` | `context`;\ntype Placement = `bottom-start` | `bottom-end` | `right-start`;\n\nexport type MenuTriggerCommandDetail = {\n readonly command?: string;\n readonly value?: string;\n readonly checked?: boolean;\n};\n\nexport type MenuTriggerCommandEvent = CustomEvent<MenuTriggerCommandDetail>;\n\n@customElement(`ixfx-menu-trigger`)\nexport class MenuTrigger extends LitElement {\n @property({ type: String }) mode: MenuMode = `trigger`;\n @property({ type: String }) label = `⋮`;\n @property({ attribute: false }) registry?: CommandRegistry<unknown>;\n @property({ attribute: false }) keyboardManager?: KeyboardManager;\n @property({ type: String }) placement: Placement = `bottom-start`;\n\n @state() private _isOpen = false;\n @state() private _hasMenu = false;\n @state() private _hasTriggerSlot = false;\n\n @query(`.trigger-btn`) private _triggerBtn!: HTMLButtonElement;\n @query(`.popup`) private _popup!: HTMLElement;\n\n private static _count = 0;\n\n private _anchorName = `--mt-${MenuTrigger._count++}`;\n private _clickListener = this._handleClickOutside.bind(this);\n\n connectedCallback(): void {\n super.connectedCallback();\n document.addEventListener(`keydown`, this._handleKeydown);\n this.addEventListener(`command`, this._handleCommand as EventListener);\n this.addEventListener(`radio-change`, this._handleRadioChange as EventListener);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n document.removeEventListener(`keydown`, this._handleKeydown);\n this.removeEventListener(`command`, this._handleCommand as EventListener);\n this.removeEventListener(`radio-change`, this._handleRadioChange as EventListener);\n document.removeEventListener(`click`, this._clickListener);\n }\n\n firstUpdated(): void {\n this.style.setProperty(`--anchor-name`, this._anchorName);\n this._popup.addEventListener(`toggle`, this._handlePopoverToggle);\n\n this.updateComplete.then(() => {\n const slot = this.shadowRoot?.querySelector(`slot[name=\"menu\"]`) as HTMLSlotElement | undefined;\n if (slot) {\n const assigned = slot.assignedElements({ flatten: true });\n if (assigned.length > 0) {\n this._hasMenu = true;\n this._propagateContext();\n }\n }\n\n this._updatePosition();\n });\n }\n\n updated(changedProperties: Map<string, unknown>): void {\n if (changedProperties.has(`registry`) || changedProperties.has(`keyboardManager`)) {\n this._propagateContext();\n }\n }\n\n private _updatePosition(): void {\n const placements: Record<Placement, { top: string; left: string }> = {\n 'bottom-start': { top: `anchor(bottom)`, left: `anchor(left)` },\n 'bottom-end': { top: `anchor(bottom)`, left: `anchor(right)` },\n 'right-start': { top: `anchor(top)`, left: `anchor(right)` },\n };\n const pos = placements[this.placement];\n this._popup.style.top = pos.top;\n this._popup.style.left = pos.left;\n (this._popup.style as any).positionAnchor = this._anchorName;\n }\n\n private _propagateContext(): void {\n const slot = this.shadowRoot?.querySelector(`slot[name=\"menu\"]`) as HTMLSlotElement | undefined;\n const items = slot?.assignedElements({ flatten: true }) ?? [];\n for (const el of items) {\n if (`registry` in el)\n (el as any).registry = this.registry;\n if (`keyboardManager` in el)\n (el as any).keyboardManager = this.keyboardManager;\n }\n }\n\n private _handleSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n const assigned = slot.assignedElements({ flatten: true });\n this._hasMenu = assigned.length > 0;\n this._propagateContext();\n }\n\n private _handleTriggerSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasTriggerSlot = slot.assignedElements({ flatten: true }).length > 0;\n }\n\n get isOpen(): boolean {\n return this._isOpen;\n }\n\n openMenu(): void {\n this._openMenu();\n }\n\n closeMenu(): void {\n this._closeMenu();\n }\n\n focusTrigger(): void {\n this._triggerBtn?.focus();\n }\n\n private _openMenu(): void {\n if (this._isOpen || !this._popup?.popover)\n return;\n try {\n (this._popup as any).showPopover({ source: this });\n this._isOpen = true;\n document.addEventListener(`click`, this._clickListener);\n this.dispatchEvent(new CustomEvent(`menu-trigger-open`, { bubbles: true, composed: true }));\n requestAnimationFrame(() => {\n this._getMenuContainer()?.focusFirst();\n });\n } catch (err) {\n console.warn(`showPopover failed:`, err);\n }\n }\n\n private _handlePopoverToggle = (e: Event): void => {\n if ((e as ToggleEvent).newState === `closed`) {\n this._isOpen = false;\n document.removeEventListener(`click`, this._clickListener);\n this.dispatchEvent(new CustomEvent(`menu-trigger-close`, { bubbles: true, composed: true }));\n }\n };\n\n private _closeMenu(): void {\n if (!this._isOpen)\n return;\n if (this._popup?.popover) {\n try {\n (this._popup as any).hidePopover();\n } catch { /* ignore */ }\n }\n this._isOpen = false;\n document.removeEventListener(`click`, this._clickListener);\n }\n\n private _handleTriggerClick(e: Event): void {\n e.stopPropagation();\n if (this._isOpen) {\n this._closeMenu();\n this._triggerBtn?.focus();\n } else {\n this._openMenu();\n }\n }\n\n private _handleClickOutside(e: Event): void {\n if (!this.contains(e.target as Node)) {\n if (this._popup?.popover && this._popup.hasAttribute(`open`)) {\n try {\n (this._popup as any).hidePopover();\n } catch {\n // ignore\n }\n }\n }\n }\n\n private _getMenuContainer(): (HTMLElement & { focusFirst: () => void }) | null {\n const slot = this.shadowRoot?.querySelector(`slot[name=\"menu\"]`) as HTMLSlotElement | null;\n const assigned = slot?.assignedElements({ flatten: true }) ?? [];\n const container = assigned.find(el => el.tagName === `IXFX-MENU-CONTAINER`);\n return (container as any) ?? null;\n }\n\n private _handleKeydown = (e: KeyboardEvent): void => {\n if (!this._isOpen)\n return;\n\n if (e.key === `Escape`) {\n e.preventDefault();\n e.stopPropagation();\n this._closeMenu();\n this._triggerBtn?.focus();\n } else if (e.key === `Tab`) {\n this._closeMenu();\n this._triggerBtn?.focus();\n }\n };\n\n private _handleCommand(e: CustomEvent): void {\n if (this._popup?.popover) {\n try {\n (this._popup as any).hidePopover();\n } catch {\n // ignore\n }\n }\n this.dispatchEvent(new CustomEvent<MenuTriggerCommandDetail>(`menu-command`, {\n detail: e.detail,\n bubbles: true,\n composed: true,\n }));\n }\n\n private _handleRadioChange(e: CustomEvent): void {\n if (this._popup?.popover) {\n try {\n (this._popup as any).hidePopover();\n } catch {\n // ignore\n }\n }\n this.dispatchEvent(new CustomEvent<MenuTriggerCommandDetail>(`menu-command`, {\n detail: {\n command: e.detail.name,\n value: e.detail.value,\n },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _handleContextMenu(e: MouseEvent): void {\n if (this.mode !== `context`)\n return;\n e.preventDefault();\n this._popup.style.top = `${e.clientY}px`;\n this._popup.style.left = `${e.clientX}px`;\n this._popup.style.position = `fixed`;\n (this._popup.style as any).positionAnchor = `none`;\n if (this._popup?.popover) {\n try {\n (this._popup as any).showPopover();\n } catch {\n // ignore\n }\n }\n }\n\n static styles = [\n popupSurfaceStyles,\n css`\n :host {\n display: inline-block;\n position: relative;\n }\n\n .trigger-area {\n anchor-name: var(--anchor-name);\n display: inline-flex;\n align-items: stretch;\n }\n\n .trigger-btn {\n background: none;\n border: none;\n color: var(--surface-3-text);\n cursor: pointer;\n padding: var(--space-s) var(--space-m);\n font-size: var(--text-m);\n font-weight: 600;\n border-radius: var(--radius-s);\n opacity: 0.6;\n transition: opacity var(--transition), background var(--transition);\n }\n\n .trigger-btn:hover {\n background: var(--_trigger-hover-bg, var(--surface-4));\n color: var(--surface-3-text);\n opacity: var(--_trigger-hover-opacity, 1);\n }\n\n .trigger-btn:focus-visible {\n background: var(--surface-4);\n color: var(--surface-3-text);\n outline: none;\n opacity: 1;\n }\n\n .popup {\n position: fixed;\n position-anchor: var(--anchor-name);\n inset: auto;\n margin: 0;\n padding: 0;\n border: none;\n background: transparent;\n z-index: 100;\n position-try-fallbacks: flip-inline, flip-block, flip-block flip-inline;\n }\n\n .popup[popover] {\n opacity: 1;\n transform: translateY(0) scale(1);\n transition: opacity 0.12s ease-out, transform 0.12s ease-out,\n display 0.12s allow-discrete, overlay 0.12s allow-discrete;\n }\n\n @starting-style .popup {\n opacity: 0;\n transform: translateY(-4px) scale(0.97);\n }\n `,\n ];\n\n render() {\n const showButton = this.mode !== `dropdown` && this._hasMenu && !this._hasTriggerSlot;\n return html`\n <div\n class=\"trigger-area\"\n @click=${this._handleTriggerClick}\n @contextmenu=${this._handleContextMenu}\n >\n ${showButton\n ? html`<button class=\"trigger-btn\" part=\"base\">${this.label}</button>`\n : null}\n <slot name=\"trigger\" @slotchange=${this._handleTriggerSlotChange}></slot>\n </div>\n <div\n class=\"popup popup-surface\"\n popover=\"auto\"\n @click=${(e: Event) => e.stopPropagation()}\n >\n <slot name=\"menu\" @slotchange=${this._handleSlotChange}></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ixfx-menu-trigger': MenuTrigger;\n }\n}\n","import type { CommandRegistry, KeyboardManager } from '@clinth/ui-commands';\nimport { css, html, LitElement } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { tickledItemStyles } from '../interaction/index.js';\nimport { safeCustomElement as customElement } from '../util/custom-elements.js';\nimport '../icons/icon.js';\n\nexport type MenuItemCommandDetail = {\n readonly command: string;\n readonly args: string;\n};\n\nexport type MenuItemCommandEvent = CustomEvent<MenuItemCommandDetail>;\n\n@customElement(`ixfx-menu-item`)\nexport class MenuItem extends LitElement {\n @property({ type: String }) command = ``;\n @property({ type: String, attribute: `command-args` }) commandArgs = ``;\n @property({ type: String }) label = ``;\n @property({ type: Boolean }) disabled = false;\n @property({ type: String, attribute: `icon-name` }) iconName = ``;\n @property({ attribute: false }) registry?: CommandRegistry<unknown>;\n @property({ attribute: false }) keyboardManager?: KeyboardManager;\n @property({ attribute: false }) submenuPopover?: HTMLElement;\n\n @state() private _hasChildren = false;\n @query(`slot`) private _slot!: HTMLSlotElement;\n\n private _hoverTimeout: number | null = null;\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this._hoverTimeout) {\n clearTimeout(this._hoverTimeout);\n }\n }\n\n private _handleSlotChange(): void {\n const assigned = this._slot?.assignedElements() ?? [];\n this._hasChildren = assigned.length > 0;\n }\n\n private _handleMouseEnter(): void {\n if (this.disabled || !this._hasChildren || !this.submenuPopover)\n return;\n if (this._hoverTimeout) {\n clearTimeout(this._hoverTimeout);\n }\n this._hoverTimeout = window.setTimeout(() => {\n this._showSubmenu();\n }, 150);\n }\n\n private _handleMouseLeave(): void {\n if (this._hoverTimeout) {\n clearTimeout(this._hoverTimeout);\n this._hoverTimeout = null;\n }\n this._hideSubmenu();\n }\n\n private _showSubmenu(): void {\n if (!this.submenuPopover?.popover)\n return;\n try {\n this.submenuPopover.showPopover();\n } catch (err) {\n console.warn(`showPopover failed:`, err);\n }\n }\n\n private _hideSubmenu(): void {\n if (!this.submenuPopover?.popover)\n return;\n try {\n this.submenuPopover.hidePopover();\n } catch (err) {\n console.warn(`hidePopover failed:`, err);\n }\n }\n\n private handleClick(): void {\n if (this.disabled)\n return;\n\n this.dispatchEvent(new CustomEvent<MenuItemCommandDetail>(`command`, {\n detail: { command: this.command, args: this.commandArgs },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _resolvedLabel(): string {\n if (this.label)\n return this.label;\n if (this.registry && this.command) {\n return this.registry.get(this.command)?.label ?? ``;\n }\n return ``;\n }\n\n private _resolvedIcon(): string | null {\n if (this.iconName)\n return this.iconName;\n if (this.registry && this.command) {\n return this.registry.get(this.command)?.icon ?? null;\n }\n return null;\n }\n\n willUpdate(changedProperties: Map<string, unknown>): void {\n super.willUpdate(changedProperties);\n const resolvedIcon = this._resolvedIcon();\n if (resolvedIcon && !this.iconName) {\n this.setAttribute(`data-icon-section`, ``);\n } else if (!resolvedIcon && !this.iconName) {\n this.removeAttribute(`data-icon-section`);\n }\n }\n\n updated(changedProperties: Map<string, unknown>): void {\n super.updated(changedProperties);\n }\n\n private _getShortcut(): string | null {\n if (!this.keyboardManager || !this.command)\n return null;\n const bindings = (this.keyboardManager as any).getBindings?.() ?? [];\n const binding = bindings.find((b: any) => b.commandId === this.command);\n if (!binding)\n return null;\n const mods = Array.from(binding.modifiers ?? [], (m: string) =>\n ({ ctrl: `⌃`, shift: `⇧`, alt: `⌥`, meta: `⌘` })[m] ?? m);\n const key = binding.key?.length === 1 ? binding.key.toUpperCase() : binding.key;\n return [...mods, key].join(``);\n }\n\n static override styles = [tickledItemStyles, css`\n :host {\n display: block;\n }\n\n .item {\n display: flex !important;\n align-items: center;\n padding: 6px var(--space-m);\n font-size: var(--text-m);\n background: var(--item-bg, transparent);\n border: var(--item-border, 1px solid transparent);\n color: var(--item-text, inherit);\n }\n\n :host(.tickled) .item {\n background: rgba(0, 0, 0, 0.06);\n border: 1px solid var(--accent);\n color: inherit;\n }\n\n :host(:focus) {\n outline: none;\n }\n\n .item.disabled {\n opacity: var(--disabled-opacity);\n cursor: default;\n }\n\n .item.disabled:hover {\n background: transparent;\n }\n\n .icon-slot {\n width: 0;\n overflow: hidden;\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n :host([icon-name]) .icon-slot,\n :host([data-icon-section]) .icon-slot {\n width: 1em;\n height: 1em;\n margin-right: var(--space-s);\n }\n\n .label {\n flex: 1;\n }\n\n .shortcut {\n margin-left: auto;\n color: var(--surface-muted-text);\n font-size: var(--text-s);\n }\n\n .arrow {\n color: var(--surface-muted-text);\n margin-left: var(--space-m);\n }\n `];\n\n render() {\n const shortcut = this._getShortcut();\n const resolvedIcon = this._resolvedIcon();\n return html`\n <div \n class=\"item ${this.disabled ? `disabled` : ``}\"\n @click=${this.handleClick}\n @mouseenter=${this._handleMouseEnter}\n @mouseleave=${this._handleMouseLeave}\n tabindex=\"${this.disabled ? -1 : 0}\"\n role=\"menuitem\"\n aria-haspopup=\"${this._hasChildren ? `true` : `false`}\"\n aria-expanded=\"${this.submenuPopover?.matches(`:popover-open`) ?? false}\"\n >\n <span class=\"icon-slot\">${resolvedIcon ? html`<ixfx-icon name=\"${resolvedIcon}\"></ixfx-icon>` : null}</span>\n <span class=\"label\"><slot></slot>${this._resolvedLabel()}</span>\n ${shortcut ? html`<span class=\"shortcut\">${shortcut}</span>` : null}\n ${this._hasChildren ? html`<span class=\"arrow\"><ixfx-icon name=\"chevron-right\"></ixfx-icon></span>` : null}\n </div>\n <slot @slotchange=${this._handleSlotChange}></slot>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ixfx-menu-item': MenuItem;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as _$lit from "lit";
|
|
2
1
|
import { LitElement } from "lit";
|
|
3
2
|
import { CommandRegistry, KeyboardManager } from "@clinth/ui-commands";
|
|
4
3
|
|
|
@@ -9,7 +8,7 @@ declare class MenuContainer extends LitElement {
|
|
|
9
8
|
keyboardManager?: KeyboardManager;
|
|
10
9
|
private _popover;
|
|
11
10
|
private tickled;
|
|
12
|
-
static styles:
|
|
11
|
+
static styles: import("lit").CSSResult[];
|
|
13
12
|
private _updateIconSections;
|
|
14
13
|
private _propagateContext;
|
|
15
14
|
updated(changedProperties: Map<string, unknown>): void;
|
|
@@ -17,7 +16,7 @@ declare class MenuContainer extends LitElement {
|
|
|
17
16
|
* Sync data-input-mode to :host so CSS variables cascade to slotted items
|
|
18
17
|
*/
|
|
19
18
|
willUpdate(changed: Map<PropertyKey, unknown>): void;
|
|
20
|
-
render():
|
|
19
|
+
render(): import("lit").TemplateResult<1>;
|
|
21
20
|
private _getMenuItems;
|
|
22
21
|
/**
|
|
23
22
|
* Sync .tickled class on slotted items to match controller state
|
|
@@ -81,8 +80,8 @@ declare class MenuTrigger extends LitElement {
|
|
|
81
80
|
private _handleCommand;
|
|
82
81
|
private _handleRadioChange;
|
|
83
82
|
private _handleContextMenu;
|
|
84
|
-
static styles:
|
|
85
|
-
render():
|
|
83
|
+
static styles: import("lit").CSSResult[];
|
|
84
|
+
render(): import("lit").TemplateResult<1>;
|
|
86
85
|
}
|
|
87
86
|
declare global {
|
|
88
87
|
interface HTMLElementTagNameMap {
|
|
@@ -115,8 +114,8 @@ declare class MenuItem extends LitElement {
|
|
|
115
114
|
willUpdate(changedProperties: Map<string, unknown>): void;
|
|
116
115
|
updated(changedProperties: Map<string, unknown>): void;
|
|
117
116
|
private _getShortcut;
|
|
118
|
-
static styles:
|
|
119
|
-
render():
|
|
117
|
+
static styles: import("lit").CSSResult[];
|
|
118
|
+
render(): import("lit").TemplateResult<1>;
|
|
120
119
|
}
|
|
121
120
|
declare global {
|
|
122
121
|
interface HTMLElementTagNameMap {
|
|
@@ -125,4 +124,4 @@ declare global {
|
|
|
125
124
|
} //# sourceMappingURL=menu-item.d.ts.map
|
|
126
125
|
//#endregion
|
|
127
126
|
export { MenuContainer as i, MenuTrigger as n, MenuTriggerCommandDetail as r, MenuItem as t };
|
|
128
|
-
//# sourceMappingURL=menu-item-
|
|
127
|
+
//# sourceMappingURL=menu-item-ClQF2DKN.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-item-ClQF2DKN.d.ts","names":[],"sources":["../src/menu/menu-container.ts","../src/menu/menu-trigger.ts","../src/menu/menu-item.ts"],"mappings":";;;;cAQa,aAAA,SAAsB,UAAA;EACgB,MAAA;EACjB,QAAA,GAAW,eAAA;EACX,eAAA,GAAkB,eAAA;EAAA,QACvB,QAAA;EAAA,QAGnB,OAAA;EAAA,OAwBD,MAAA,gBAAM,SAAA;EAAA,QA4BL,mBAAA;EAAA,QAkDA,iBAAA;EAYC,OAAA,CAAQ,iBAAA,EAAmB,GAAA;EAShB;;;EAApB,UAAA,CAAW,OAAA,EAAS,GAAA,CAAI,WAAA;EAOxB,MAAA,CAAA,iBAAM,cAAA;EAAA,QAaE,aAAA;EApJwB;;;;EAAA,QAwLxB,mBAAA;EAAA,QAiCA,gBAAA;EA0BR,UAAA,CAAA;EAAA,QAIQ,UAAA;EAAA,QAQA,UAAA;EAAA,QAUA,oBAAA;EAAA,QAqDA,cAAA;AAAA;AAAA,QAqCF,MAAA;EAAA,UACI,qBAAA;IACR,qBAAA,EAAuB,aAAa;EAAA;AAAA;;;KCxWnC,QAAA;AAAA,KACA,SAAA;AAAA,KAEO,wBAAA;EAAA,SACD,OAAA;EAAA,SACA,KAAA;EAAA,SACA,OAAA;AAAA;AAAA,cAME,WAAA,SAAoB,UAAA;EACH,IAAA,EAAM,QAAA;EACN,KAAA;EACI,QAAA,GAAW,eAAA;EACX,eAAA,GAAkB,eAAA;EACtB,SAAA,EAAW,SAAA;EAAA,QAEtB,OAAA;EAAA,QACA,QAAA;EAAA,QACA,eAAA;EAAA,QAEc,WAAA;EAAA,QACN,MAAA;EAAA,eAEV,MAAA;EAAA,QAEP,WAAA;EAAA,QACA,cAAA;EAER,iBAAA,CAAA;EAOA,oBAAA,CAAA;EAQA,YAAA,CAAA;EAkBA,OAAA,CAAQ,iBAAA,EAAmB,GAAA;EAAA,QAMnB,eAAA;EAAA,QAYA,iBAAA;EAAA,QAWA,iBAAA;EAAA,QAOA,wBAAA;EAAA,IAKJ,MAAA,CAAA;EAIJ,QAAA,CAAA;EAIA,SAAA,CAAA;EAIA,YAAA,CAAA;EAAA,QAIQ,SAAA;EAAA,QAgBA,oBAAA;EAAA,QAQA,UAAA;EAAA,QAYA,mBAAA;EAAA,QAUA,mBAAA;EAAA,QAYA,iBAAA;EAAA,QAOA,cAAA;EAAA,QAeA,cAAA;EAAA,QAeA,kBAAA;EAAA,QAkBA,kBAAA;EAAA,OAiBD,MAAA,gBAAM,SAAA;EAkEb,MAAA,CAAA,iBAAM,cAAA;AAAA;AAAA,QAwBA,MAAA;EAAA,UACI,qBAAA;IACR,mBAAA,EAAqB,WAAW;EAAA;AAAA;;;cC/UvB,QAAA,SAAiB,UAAA;EACA,OAAA;EAC2B,WAAA;EAC3B,KAAA;EACC,QAAA;EACuB,QAAA;EACpB,QAAA,GAAW,eAAA;EACX,eAAA,GAAkB,eAAA;EAClB,cAAA,GAAiB,WAAA;EAAA,QAEhC,YAAA;EAAA,QACM,KAAA;EAAA,QAEf,aAAA;EAER,oBAAA,CAAA;EAAA,QAOQ,iBAAA;EAAA,QAKA,iBAAA;EAAA,QAWA,iBAAA;EAAA,QAQA,YAAA;EAAA,QAUA,YAAA;EAAA,QAUA,WAAA;EAAA,QAWA,cAAA;EAAA,QASA,aAAA;EASR,UAAA,CAAW,iBAAA,EAAmB,GAAA;EAU9B,OAAA,CAAQ,iBAAA,EAAmB,GAAA;EAAA,QAInB,YAAA;EAAA,OAaQ,MAAA,gBAAM,SAAA;EAkEtB,MAAA,CAAA,iBAAM,cAAA;AAAA;AAAA,QAwBA,MAAA;EAAA,UACI,qBAAA;IACR,gBAAA,EAAkB,QAAQ;EAAA;AAAA"}
|
package/dist/menu.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { i as MenuContainer, n as MenuTrigger, t as MenuItem } from "./menu-item-
|
|
2
|
-
import { a as menuFromTree, c as
|
|
3
|
-
export { MenuBar, MenuCheckItem, MenuCommandController, MenuContainer, MenuFromTreeOptions, MenuHeader, MenuItem, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuSubTrigger, MenuTrigger, menuFromTree, menuFromTreeToElements };
|
|
1
|
+
import { i as MenuContainer, n as MenuTrigger, t as MenuItem } from "./menu-item-ClQF2DKN.js";
|
|
2
|
+
import { a as menuFromTree, c as MenuSeparator, d as MenuCheckItem, f as MenuBar, i as MenuFromTreeOptions, l as MenuSubTrigger, n as MenuRadioGroup, o as menuFromTreeToElements, r as MenuRadioItem, s as MenuHeader, u as MenuCommandController } from "./index-DSlPeWLK.js";
|
|
3
|
+
export { MenuBar, MenuCheckItem, MenuCommandController, MenuContainer, type MenuFromTreeOptions, MenuHeader, MenuItem, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuSubTrigger, MenuTrigger, menuFromTree, menuFromTreeToElements };
|
package/dist/menu.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as MenuTrigger, r as MenuContainer, t as MenuItem } from "./menu-item-
|
|
2
|
-
import { a as menuFromTreeToElements, c as
|
|
1
|
+
import { n as MenuTrigger, r as MenuContainer, t as MenuItem } from "./menu-item-CKRfP0pN.js";
|
|
2
|
+
import { a as menuFromTreeToElements, c as MenuSubTrigger, d as MenuBar, i as menuFromTree, l as MenuCommandController, n as MenuRadioGroup, o as MenuHeader, r as MenuRadioItem, s as MenuSeparator, u as MenuCheckItem } from "./menu-DJJuCm-5.js";
|
|
3
3
|
export { MenuBar, MenuCheckItem, MenuCommandController, MenuContainer, MenuHeader, MenuItem, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuSubTrigger, MenuTrigger, menuFromTree, menuFromTreeToElements };
|
package/dist/miller.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { n as TraversableTree, t as TickledController } from "./tickled-controller-Cq1Va0rR.js";
|
|
2
|
-
import { C as TreeNode, S as TreeItem, a as TreeComponent, b as TreeFilterPredicate, c as TreeExpandEvent, d as TreeSearchHost, f as TreeSelectDetail, g as TreeDataModel, h as TreeTickleEvent, i as TreeCollapseEvent, l as TreeItemClickDetail, m as TreeTickleDetail, n as TreeActivateEvent, o as TreeComponentEventMap, p as TreeSelectEvent, r as TreeCollapseDetail, s as TreeExpandDetail, t as TreeActivateDetail, u as TreeItemClickEvent, v as LoadChildrenCallback, w as TreeSelectionFilter, y as TreeExclusivity } from "./tree-component-
|
|
3
|
-
import * as _$lit from "lit";
|
|
2
|
+
import { C as TreeNode, S as TreeItem, a as TreeComponent, b as TreeFilterPredicate, c as TreeExpandEvent, d as TreeSearchHost, f as TreeSelectDetail, g as TreeDataModel, h as TreeTickleEvent, i as TreeCollapseEvent, l as TreeItemClickDetail, m as TreeTickleDetail, n as TreeActivateEvent, o as TreeComponentEventMap, p as TreeSelectEvent, r as TreeCollapseDetail, s as TreeExpandDetail, t as TreeActivateDetail, u as TreeItemClickEvent, v as LoadChildrenCallback, w as TreeSelectionFilter, y as TreeExclusivity } from "./tree-component-D8Bg48tt.js";
|
|
4
3
|
import { LitElement, PropertyValues, TemplateResult, nothing } from "lit";
|
|
5
4
|
|
|
6
5
|
//#region src/miller/types.d.ts
|
|
@@ -19,7 +18,7 @@ type MillerHeaderClickDetail = {
|
|
|
19
18
|
* - depth 1 → [root, selectedAtDepth0]
|
|
20
19
|
* - depth d → [root, sel[0], …, sel[d-1]]
|
|
21
20
|
*/
|
|
22
|
-
path: TreeNode
|
|
21
|
+
path: Array<TreeNode>;
|
|
23
22
|
};
|
|
24
23
|
/** Detail for the `item-dblclick` event. */
|
|
25
24
|
type MillerItemDblClickDetail = {
|
|
@@ -36,7 +35,7 @@ type MillerItemRightClickDetail = {
|
|
|
36
35
|
type MillerHeaderRightClickDetail = {
|
|
37
36
|
depth: number;
|
|
38
37
|
label: string;
|
|
39
|
-
path: TreeNode
|
|
38
|
+
path: Array<TreeNode>;
|
|
40
39
|
mouseEvent: MouseEvent;
|
|
41
40
|
};
|
|
42
41
|
type MillerHeaderClickEvent = CustomEvent<MillerHeaderClickDetail>;
|
|
@@ -210,7 +209,7 @@ declare class MillerBaseElement extends LitElement implements TreeComponent, Tre
|
|
|
210
209
|
* Called by subclasses when pointer leaves the column container.
|
|
211
210
|
*/
|
|
212
211
|
protected _handleColumnPointerLeave(): void;
|
|
213
|
-
static styles:
|
|
212
|
+
static styles: import("lit").CSSResult[];
|
|
214
213
|
}
|
|
215
214
|
declare global {
|
|
216
215
|
interface HTMLElementTagNameMap {
|
|
@@ -230,10 +229,8 @@ interface MillerBaseElementEventMap extends TreeComponentEventMap {
|
|
|
230
229
|
'header-rightclick': CustomEvent<MillerHeaderRightClickDetail>;
|
|
231
230
|
}
|
|
232
231
|
interface MillerBaseElement {
|
|
233
|
-
addEventListener<K extends keyof MillerBaseElementEventMap>(type: K, listener: (this: MillerBaseElement, event: MillerBaseElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions): void;
|
|
234
|
-
|
|
235
|
-
removeEventListener<K extends keyof MillerBaseElementEventMap>(type: K, listener: (this: MillerBaseElement, event: MillerBaseElementEventMap[K]) => void, options?: boolean | EventListenerOptions): void;
|
|
236
|
-
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
232
|
+
addEventListener: (<K extends keyof MillerBaseElementEventMap>(type: K, listener: (this: MillerBaseElement, event: MillerBaseElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);
|
|
233
|
+
removeEventListener: (<K extends keyof MillerBaseElementEventMap>(type: K, listener: (this: MillerBaseElement, event: MillerBaseElementEventMap[K]) => void, options?: boolean | EventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions) => void);
|
|
237
234
|
}
|
|
238
235
|
//#endregion
|
|
239
236
|
//#region src/miller/miller-list.d.ts
|
|
@@ -256,7 +253,7 @@ interface MillerBaseElement {
|
|
|
256
253
|
declare class MillerListElement extends MillerBaseElement {
|
|
257
254
|
#private;
|
|
258
255
|
protected renderColumnContent(nodes: TreeNode[], depth: number): TemplateResult;
|
|
259
|
-
static styles:
|
|
256
|
+
static styles: import("lit").CSSResult[];
|
|
260
257
|
}
|
|
261
258
|
declare global {
|
|
262
259
|
interface HTMLElementTagNameMap {
|
package/dist/miller.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"miller.d.ts","names":[],"sources":["../src/miller/types.ts","../src/miller/miller-base.ts","../src/miller/miller-list.ts","../src/miller/miller-tree-controller.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"miller.d.ts","names":[],"sources":["../src/miller/types.ts","../src/miller/miller-base.ts","../src/miller/miller-list.ts","../src/miller/miller-tree-controller.ts"],"mappings":"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"}
|
package/dist/miller.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { n as tickledStyles, r as TickledController, t as tickledItemStyles } from "./tickled-styles-Bg3QbcrD.js";
|
|
2
|
-
import { t as __decorate } from "./decorate-
|
|
3
|
-
import "./interaction-
|
|
2
|
+
import { n as safeCustomElement, t as __decorate } from "./decorate-D7rC1gLP.js";
|
|
3
|
+
import "./interaction-DG7X1rhI.js";
|
|
4
4
|
import { LitElement, css, html, nothing } from "lit";
|
|
5
|
-
import {
|
|
5
|
+
import { property, state } from "lit/decorators.js";
|
|
6
6
|
//#region src/miller/miller-base.ts
|
|
7
7
|
const EXPAND_DEBOUNCE_MS = 150;
|
|
8
8
|
let MillerBaseElement = class MillerBaseElement extends LitElement {
|
|
@@ -10,8 +10,8 @@ let MillerBaseElement = class MillerBaseElement extends LitElement {
|
|
|
10
10
|
super(..._args);
|
|
11
11
|
this.headers = false;
|
|
12
12
|
this.interactionMode = `standard`;
|
|
13
|
-
this.selectionFilter =
|
|
14
|
-
this.exclusivity =
|
|
13
|
+
this.selectionFilter = `leaf`;
|
|
14
|
+
this.exclusivity = `none`;
|
|
15
15
|
this._columns = [];
|
|
16
16
|
this._selectedByDepth = /* @__PURE__ */ new Map();
|
|
17
17
|
this._selectedKeys = /* @__PURE__ */ new Set();
|
|
@@ -241,7 +241,7 @@ let MillerBaseElement = class MillerBaseElement extends LitElement {
|
|
|
241
241
|
#getTickledDepth() {
|
|
242
242
|
const id = this.tickled.tickledId;
|
|
243
243
|
if (!id) return void 0;
|
|
244
|
-
const colonIndex = id.indexOf(
|
|
244
|
+
const colonIndex = id.indexOf(`:`);
|
|
245
245
|
if (colonIndex < 0) return void 0;
|
|
246
246
|
return Number(id.substring(0, colonIndex));
|
|
247
247
|
}
|
|
@@ -263,10 +263,10 @@ let MillerBaseElement = class MillerBaseElement extends LitElement {
|
|
|
263
263
|
if (model) {
|
|
264
264
|
this.root = model.root;
|
|
265
265
|
this.#modelUnsubscribe = model._subscribe((event) => {
|
|
266
|
-
if (event.type ===
|
|
266
|
+
if (event.type === `root`) {
|
|
267
267
|
this.root = event.root;
|
|
268
268
|
this.requestUpdate();
|
|
269
|
-
} else if (event.type ===
|
|
269
|
+
} else if (event.type === `invalidate`) {
|
|
270
270
|
for (let depth = 0; depth < this._columns.length - 1; depth++) if (this._columns[depth]?.some((n) => n.item.key === event.key)) {
|
|
271
271
|
this._columns = this._columns.slice(0, depth + 1);
|
|
272
272
|
this.requestUpdate();
|
|
@@ -546,9 +546,9 @@ let MillerBaseElement = class MillerBaseElement extends LitElement {
|
|
|
546
546
|
};
|
|
547
547
|
}
|
|
548
548
|
#canSelect(node) {
|
|
549
|
-
if (this.selectionFilter ===
|
|
550
|
-
if (this.selectionFilter ===
|
|
551
|
-
if (this.selectionFilter ===
|
|
549
|
+
if (this.selectionFilter === `none`) return false;
|
|
550
|
+
if (this.selectionFilter === `leaf`) return node.item.isLeaf !== false;
|
|
551
|
+
if (this.selectionFilter === `branch`) return node.item.isLeaf === false || node.children !== void 0 && node.children.length > 0;
|
|
552
552
|
return true;
|
|
553
553
|
}
|
|
554
554
|
#dispatchSelectEvent(previous) {
|
|
@@ -785,7 +785,7 @@ let MillerBaseElement = class MillerBaseElement extends LitElement {
|
|
|
785
785
|
#getTickledNodeAndDepth() {
|
|
786
786
|
const id = this.tickled.tickledId;
|
|
787
787
|
if (!id) return void 0;
|
|
788
|
-
const colonIndex = id.indexOf(
|
|
788
|
+
const colonIndex = id.indexOf(`:`);
|
|
789
789
|
if (colonIndex < 0) return void 0;
|
|
790
790
|
const depth = Number(id.substring(0, colonIndex));
|
|
791
791
|
const key = id.substring(colonIndex + 1);
|
|
@@ -918,7 +918,7 @@ let MillerBaseElement = class MillerBaseElement extends LitElement {
|
|
|
918
918
|
* Called by subclasses when pointer leaves the column container.
|
|
919
919
|
*/
|
|
920
920
|
_handleColumnPointerLeave() {
|
|
921
|
-
this.tickled.handlePointerLeave(new PointerEvent(
|
|
921
|
+
this.tickled.handlePointerLeave(new PointerEvent(`pointerleave`));
|
|
922
922
|
}
|
|
923
923
|
static {
|
|
924
924
|
this.styles = [tickledStyles, css`
|
|
@@ -1040,18 +1040,18 @@ __decorate([property({ type: Boolean })], MillerBaseElement.prototype, "headers"
|
|
|
1040
1040
|
__decorate([property({ type: String })], MillerBaseElement.prototype, "interactionMode", void 0);
|
|
1041
1041
|
__decorate([property({
|
|
1042
1042
|
reflect: true,
|
|
1043
|
-
attribute:
|
|
1043
|
+
attribute: `selection-filter`
|
|
1044
1044
|
})], MillerBaseElement.prototype, "selectionFilter", void 0);
|
|
1045
1045
|
__decorate([property({
|
|
1046
1046
|
reflect: true,
|
|
1047
|
-
attribute:
|
|
1047
|
+
attribute: `exclusivity`
|
|
1048
1048
|
})], MillerBaseElement.prototype, "exclusivity", void 0);
|
|
1049
1049
|
__decorate([property({ type: Object })], MillerBaseElement.prototype, "loadChildren", void 0);
|
|
1050
1050
|
__decorate([property({ attribute: false })], MillerBaseElement.prototype, "filterPredicate", void 0);
|
|
1051
1051
|
__decorate([state()], MillerBaseElement.prototype, "_columns", void 0);
|
|
1052
1052
|
__decorate([state()], MillerBaseElement.prototype, "_loadingDepth", void 0);
|
|
1053
1053
|
__decorate([state()], MillerBaseElement.prototype, "_selectedNodes", void 0);
|
|
1054
|
-
MillerBaseElement = __decorate([
|
|
1054
|
+
MillerBaseElement = __decorate([safeCustomElement(`ixfx-miller-base`)], MillerBaseElement);
|
|
1055
1055
|
//#endregion
|
|
1056
1056
|
//#region src/miller/miller-list.ts
|
|
1057
1057
|
/**
|
|
@@ -1212,7 +1212,7 @@ let MillerListElement = class MillerListElement extends MillerBaseElement {
|
|
|
1212
1212
|
];
|
|
1213
1213
|
}
|
|
1214
1214
|
};
|
|
1215
|
-
MillerListElement = __decorate([
|
|
1215
|
+
MillerListElement = __decorate([safeCustomElement(`ixfx-miller-list`)], MillerListElement);
|
|
1216
1216
|
//#endregion
|
|
1217
1217
|
//#region src/miller/miller-tree-controller.ts
|
|
1218
1218
|
/**
|