@ixfx/components 0.5.7 → 0.5.9
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 +44 -1
- package/bundle/index.d.ts.map +1 -1
- package/bundle/index.js +154 -35
- package/bundle/index.js.map +1 -1
- package/dist/ac-text.d.ts +1 -1
- package/dist/ac-text.d.ts.map +1 -1
- package/dist/ac-text.js +3 -1
- package/dist/ac-text.js.map +1 -1
- package/dist/{button-CU8eLcxB.js → button-dwmqCXHM.js} +11 -1
- package/dist/button-dwmqCXHM.js.map +1 -0
- package/dist/button.d.ts +2 -1
- package/dist/button.d.ts.map +1 -1
- package/dist/button.js +1 -1
- package/dist/{colour-picker-Bb795sjX.js → colour-picker-DGso9ZOp.js} +2 -2
- package/dist/{colour-picker-Bb795sjX.js.map → colour-picker-DGso9ZOp.js.map} +1 -1
- package/dist/colour-picker.d.ts +1 -1
- package/dist/colour-picker.js +1 -1
- package/dist/crumbs.d.ts +6 -2
- package/dist/crumbs.d.ts.map +1 -1
- package/dist/crumbs.js +5 -1
- package/dist/crumbs.js.map +1 -1
- package/dist/{icon-BUwP1CZ1.d.ts → icon-DpA9x2Ve.d.ts} +2 -2
- package/dist/icon-DpA9x2Ve.d.ts.map +1 -0
- package/dist/icons.d.ts +2 -2
- package/dist/incr-search.d.ts +1 -1
- package/dist/{index-RqMh1i-O.d.ts → index-BtGFYfaK.d.ts} +2 -2
- package/dist/{index-RqMh1i-O.d.ts.map → index-BtGFYfaK.d.ts.map} +1 -1
- package/dist/{index-BUB5SICW.d.ts → index-CoqtMSd9.d.ts} +2 -2
- package/dist/{index-BUB5SICW.d.ts.map → index-CoqtMSd9.d.ts.map} +1 -1
- package/dist/{index-Cxwxtj6g.d.ts → index-D9u_Q7-b.d.ts} +2 -2
- package/dist/{index-Cxwxtj6g.d.ts.map → index-D9u_Q7-b.d.ts.map} +1 -1
- package/dist/{index-BKAlRgbq.d.ts → index-D_ftz_IT.d.ts} +2 -2
- package/dist/{index-BKAlRgbq.d.ts.map → index-D_ftz_IT.d.ts.map} +1 -1
- package/dist/{index-B1UKcA7l.d.ts → index-DfEkTGvT.d.ts} +3 -3
- package/dist/{index-B1UKcA7l.d.ts.map → index-DfEkTGvT.d.ts.map} +1 -1
- package/dist/index.d.ts +13 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -7
- package/dist/index.js.map +1 -1
- package/dist/{labelled-input-base-Dp_9KP0G.d.ts → labelled-input-base-DiTme1JO.d.ts} +2 -2
- package/dist/{labelled-input-base-Dp_9KP0G.d.ts.map → labelled-input-base-DiTme1JO.d.ts.map} +1 -1
- package/dist/labelled-radial-input.d.ts +2 -2
- package/dist/labelled-radial-input.d.ts.map +1 -1
- package/dist/labelled-range-input.d.ts +1 -1
- package/dist/{menu-item-BttvL89f.js → menu-item-BBTZnjAR.js} +2 -2
- package/dist/{menu-item-BttvL89f.js.map → menu-item-BBTZnjAR.js.map} +1 -1
- package/dist/{menu-item-CQ4Qg731.d.ts → menu-item-DSyf9f_L.d.ts} +2 -2
- package/dist/{menu-item-CQ4Qg731.d.ts.map → menu-item-DSyf9f_L.d.ts.map} +1 -1
- package/dist/{menu-BYyeCAF7.js → menu-nuOIUD9K.js} +2 -2
- package/dist/{menu-BYyeCAF7.js.map → menu-nuOIUD9K.js.map} +1 -1
- package/dist/menu.d.ts +2 -2
- package/dist/menu.js +2 -2
- package/dist/miller.d.ts +5 -1
- package/dist/miller.d.ts.map +1 -1
- package/dist/miller.js +4 -0
- package/dist/miller.js.map +1 -1
- package/dist/panel.d.ts +1 -1
- package/dist/panel.d.ts.map +1 -1
- package/dist/panel.js +1 -2
- package/dist/panel.js.map +1 -1
- package/dist/{tab-list-VtWT-_FG.d.ts → tab-list-BohmbvqF.d.ts} +2 -2
- package/dist/{tab-list-VtWT-_FG.d.ts.map → tab-list-BohmbvqF.d.ts.map} +1 -1
- package/dist/tabs.d.ts +1 -1
- package/dist/{tree-BnvzhsAw.js → tree-CL-txefQ.js} +92 -10
- package/dist/tree-CL-txefQ.js.map +1 -0
- package/dist/{tree-component-DCmmKZ4j.d.ts → tree-component-DQ9vzdy5.d.ts} +9 -1
- package/dist/{tree-component-DCmmKZ4j.d.ts.map → tree-component-DQ9vzdy5.d.ts.map} +1 -1
- package/dist/tree.d.ts +28 -2
- package/dist/tree.d.ts.map +1 -1
- package/dist/tree.js +1 -1
- package/docs-user/ac-text.md +8 -0
- package/docs-user/tree.md +53 -0
- package/docs-user/vertical-list.md +23 -0
- package/package.json +1 -1
- package/dist/button-CU8eLcxB.js.map +0 -1
- package/dist/icon-BUwP1CZ1.d.ts.map +0 -1
- package/dist/tree-BnvzhsAw.js.map +0 -1
package/bundle/index.js
CHANGED
|
@@ -1121,6 +1121,28 @@ const themeFallbacks = i$3`
|
|
|
1121
1121
|
}
|
|
1122
1122
|
`;
|
|
1123
1123
|
//#endregion
|
|
1124
|
+
//#region src/styles/popup.ts
|
|
1125
|
+
/**
|
|
1126
|
+
* Canonical surface styles for floating popup elements (menus, dropdowns,
|
|
1127
|
+
* colour picker, tooltips). Apply by adding `popupSurfaceStyles` to a
|
|
1128
|
+
* component's `static styles` array and the class `popup-surface` to the
|
|
1129
|
+
* popup container element - or to the host itself (via `this.classList.add`)
|
|
1130
|
+
* when the component's host element is the popup container.
|
|
1131
|
+
*
|
|
1132
|
+
* Intentionally omitted (remain per-component): positioning, padding,
|
|
1133
|
+
* dimensions, z-index, and open/close animations.
|
|
1134
|
+
*/
|
|
1135
|
+
const popupSurfaceStyles = i$3`
|
|
1136
|
+
.popup-surface,
|
|
1137
|
+
:host(.popup-surface) {
|
|
1138
|
+
background: var(--surface-5);
|
|
1139
|
+
border: 1px solid var(--surface-6);
|
|
1140
|
+
border-radius: var(--radius-l);
|
|
1141
|
+
box-shadow: var(--shadow-m);
|
|
1142
|
+
color: var(--surface-5-text);
|
|
1143
|
+
}
|
|
1144
|
+
`;
|
|
1145
|
+
//#endregion
|
|
1124
1146
|
//#region src/util/custom-elements.ts
|
|
1125
1147
|
function getRegistry() {
|
|
1126
1148
|
if (typeof customElements === `undefined`) return void 0;
|
|
@@ -1555,7 +1577,7 @@ let AcTextElement = class AcTextElement extends i {
|
|
|
1555
1577
|
const showEmpty = !this._isLoading && this._results.length === 0;
|
|
1556
1578
|
return b`
|
|
1557
1579
|
<div
|
|
1558
|
-
class="popup"
|
|
1580
|
+
class="popup popup-surface"
|
|
1559
1581
|
popover="manual"
|
|
1560
1582
|
role="listbox"
|
|
1561
1583
|
aria-label="Suggestions"
|
|
@@ -1595,6 +1617,7 @@ let AcTextElement = class AcTextElement extends i {
|
|
|
1595
1617
|
this.styles = [
|
|
1596
1618
|
themeFallbacks,
|
|
1597
1619
|
tickledStyles,
|
|
1620
|
+
popupSurfaceStyles,
|
|
1598
1621
|
i$3`
|
|
1599
1622
|
:host {
|
|
1600
1623
|
display: block;
|
|
@@ -3085,6 +3108,9 @@ const buttonStyles = i$3`
|
|
|
3085
3108
|
|
|
3086
3109
|
.button-label {
|
|
3087
3110
|
white-space: nowrap;
|
|
3111
|
+
}
|
|
3112
|
+
|
|
3113
|
+
:host([has-icon]) .button-label {
|
|
3088
3114
|
display: var(--ixfx-button-hide-label, inline);
|
|
3089
3115
|
}
|
|
3090
3116
|
|
|
@@ -3113,6 +3139,7 @@ let ButtonElement = class ButtonElement extends i {
|
|
|
3113
3139
|
this.disabled = false;
|
|
3114
3140
|
this.hideIcon = false;
|
|
3115
3141
|
this.hideLabel = false;
|
|
3142
|
+
this.hasIcon = false;
|
|
3116
3143
|
this.subtle = false;
|
|
3117
3144
|
}
|
|
3118
3145
|
_renderIcon() {
|
|
@@ -3122,6 +3149,7 @@ let ButtonElement = class ButtonElement extends i {
|
|
|
3122
3149
|
return b`<ixfx-icon class="button-icon" name="${this.icon}"></ixfx-icon>`;
|
|
3123
3150
|
}
|
|
3124
3151
|
render() {
|
|
3152
|
+
this.hasIcon = !this.hideIcon && !!this.icon;
|
|
3125
3153
|
const label = this.hideLabel ? A : b`<span class="button-label"><slot></slot></span>`;
|
|
3126
3154
|
return b`<button ?disabled=${this.disabled}>${this._renderIcon()}${label}</button>`;
|
|
3127
3155
|
}
|
|
@@ -3141,6 +3169,11 @@ __decorate([property({
|
|
|
3141
3169
|
attribute: `hide-label`,
|
|
3142
3170
|
reflect: true
|
|
3143
3171
|
})], ButtonElement.prototype, "hideLabel", void 0);
|
|
3172
|
+
__decorate([property({
|
|
3173
|
+
type: Boolean,
|
|
3174
|
+
attribute: `has-icon`,
|
|
3175
|
+
reflect: true
|
|
3176
|
+
})], ButtonElement.prototype, "hasIcon", void 0);
|
|
3144
3177
|
__decorate([property({
|
|
3145
3178
|
type: Boolean,
|
|
3146
3179
|
reflect: true
|
|
@@ -3482,28 +3515,6 @@ __decorate([state()], RadioGroup.prototype, "_icons", void 0);
|
|
|
3482
3515
|
__decorate([query(`slot`)], RadioGroup.prototype, "_slot", void 0);
|
|
3483
3516
|
RadioGroup = __decorate([safeCustomElement(`ixfx-radio-group`)], RadioGroup);
|
|
3484
3517
|
//#endregion
|
|
3485
|
-
//#region src/styles/popup.ts
|
|
3486
|
-
/**
|
|
3487
|
-
* Canonical surface styles for floating popup elements (menus, dropdowns,
|
|
3488
|
-
* colour picker, tooltips). Apply by adding `popupSurfaceStyles` to a
|
|
3489
|
-
* component's `static styles` array and the class `popup-surface` to the
|
|
3490
|
-
* popup container element - or to the host itself (via `this.classList.add`)
|
|
3491
|
-
* when the component's host element is the popup container.
|
|
3492
|
-
*
|
|
3493
|
-
* Intentionally omitted (remain per-component): positioning, padding,
|
|
3494
|
-
* dimensions, z-index, and open/close animations.
|
|
3495
|
-
*/
|
|
3496
|
-
const popupSurfaceStyles = i$3`
|
|
3497
|
-
.popup-surface,
|
|
3498
|
-
:host(.popup-surface) {
|
|
3499
|
-
background: var(--surface-5);
|
|
3500
|
-
border: 1px solid var(--surface-6);
|
|
3501
|
-
border-radius: var(--radius-l);
|
|
3502
|
-
box-shadow: var(--shadow-m);
|
|
3503
|
-
color: var(--surface-5-text);
|
|
3504
|
-
}
|
|
3505
|
-
`;
|
|
3506
|
-
//#endregion
|
|
3507
3518
|
//#region src/menu/menu-container.ts
|
|
3508
3519
|
let MenuContainer = class MenuContainer extends i {
|
|
3509
3520
|
constructor(..._args) {
|
|
@@ -7181,6 +7192,10 @@ let CrumbNavigationElement = class CrumbNavigationElement extends i {
|
|
|
7181
7192
|
clearSelection() {
|
|
7182
7193
|
if (this.root) this.#setSelected(this.root);
|
|
7183
7194
|
}
|
|
7195
|
+
/** Not implemented on crumb-navigation. */
|
|
7196
|
+
selectAll() {}
|
|
7197
|
+
/** Not implemented on crumb-navigation. */
|
|
7198
|
+
deselectAll() {}
|
|
7184
7199
|
getNodes() {
|
|
7185
7200
|
if (!this.root) return [];
|
|
7186
7201
|
const result = [];
|
|
@@ -10127,11 +10142,10 @@ let PanelElement = class PanelElement extends i {
|
|
|
10127
10142
|
|
|
10128
10143
|
.content-inner {
|
|
10129
10144
|
box-shadow: var(--deboss-3);
|
|
10130
|
-
|
|
10131
10145
|
min-height: 0;
|
|
10132
10146
|
min-width: 0;
|
|
10133
10147
|
overflow: hidden;
|
|
10134
|
-
padding: var(--space-
|
|
10148
|
+
padding: var(--space-s);
|
|
10135
10149
|
transform: translateY(-100%);
|
|
10136
10150
|
transition: transform var(--transition, 0.2s ease-out);
|
|
10137
10151
|
}
|
|
@@ -10473,6 +10487,7 @@ let TreeBaseElement = class TreeBaseElement extends i {
|
|
|
10473
10487
|
this.interactionMode = `standard`;
|
|
10474
10488
|
this._selectedNodes = /* @__PURE__ */ new Set();
|
|
10475
10489
|
this.disableKeyboardNavigation = false;
|
|
10490
|
+
this.registry = void 0;
|
|
10476
10491
|
this._expandedKeys = /* @__PURE__ */ new Set();
|
|
10477
10492
|
this.tickled = new TickledController(this, {
|
|
10478
10493
|
getItems: () => {
|
|
@@ -10490,6 +10505,11 @@ let TreeBaseElement = class TreeBaseElement extends i {
|
|
|
10490
10505
|
this.#onKeyDown = (event) => {
|
|
10491
10506
|
const nodes = this.#getAllNodes();
|
|
10492
10507
|
if (nodes.length === 0) return;
|
|
10508
|
+
if ((event.ctrlKey || event.metaKey) && event.key === `a`) {
|
|
10509
|
+
event.preventDefault();
|
|
10510
|
+
this.selectAll();
|
|
10511
|
+
return;
|
|
10512
|
+
}
|
|
10493
10513
|
if ([
|
|
10494
10514
|
`ArrowDown`,
|
|
10495
10515
|
`ArrowUp`,
|
|
@@ -10607,6 +10627,7 @@ let TreeBaseElement = class TreeBaseElement extends i {
|
|
|
10607
10627
|
#pendingController;
|
|
10608
10628
|
#modelUnsubscribe;
|
|
10609
10629
|
#anchor;
|
|
10630
|
+
#ownedRegistry;
|
|
10610
10631
|
#config;
|
|
10611
10632
|
updated(changedProps) {
|
|
10612
10633
|
if (changedProps.has(`root`) && this.root) {
|
|
@@ -10646,11 +10667,31 @@ let TreeBaseElement = class TreeBaseElement extends i {
|
|
|
10646
10667
|
connectedCallback() {
|
|
10647
10668
|
super.connectedCallback();
|
|
10648
10669
|
this.setAttribute(`data-input-mode`, `mouse`);
|
|
10670
|
+
const registry = this.#ownedRegistry = createCommandRegistry();
|
|
10671
|
+
registry.register({
|
|
10672
|
+
id: `select-all`,
|
|
10673
|
+
label: `Select All`,
|
|
10674
|
+
description: `Select all visible items`,
|
|
10675
|
+
execute: () => this.selectAll()
|
|
10676
|
+
});
|
|
10677
|
+
registry.register({
|
|
10678
|
+
id: `deselect-all`,
|
|
10679
|
+
label: `Deselect All`,
|
|
10680
|
+
description: `Clear all selection`,
|
|
10681
|
+
execute: () => this.deselectAll()
|
|
10682
|
+
});
|
|
10683
|
+
this.registry = registry;
|
|
10649
10684
|
}
|
|
10650
10685
|
disconnectedCallback() {
|
|
10651
10686
|
super.disconnectedCallback();
|
|
10652
10687
|
this.#modelUnsubscribe?.();
|
|
10653
10688
|
this.#modelUnsubscribe = void 0;
|
|
10689
|
+
if (this.#ownedRegistry) {
|
|
10690
|
+
this.#ownedRegistry.unregister(`select-all`);
|
|
10691
|
+
this.#ownedRegistry.unregister(`deselect-all`);
|
|
10692
|
+
this.#ownedRegistry = void 0;
|
|
10693
|
+
this.registry = void 0;
|
|
10694
|
+
}
|
|
10654
10695
|
}
|
|
10655
10696
|
getConfig() {
|
|
10656
10697
|
return { ...this.#config };
|
|
@@ -10686,6 +10727,32 @@ let TreeBaseElement = class TreeBaseElement extends i {
|
|
|
10686
10727
|
this.#dispatchSelect(prev);
|
|
10687
10728
|
this.requestUpdate();
|
|
10688
10729
|
}
|
|
10730
|
+
selectAll() {
|
|
10731
|
+
const prev = new Set(this._selectedNodes);
|
|
10732
|
+
if (this.interactionMode === `checked`) for (const { node } of this.#getAllNodes()) {
|
|
10733
|
+
if (!this.#canSelect(node)) continue;
|
|
10734
|
+
this.#applyCheckedToggle(node, true);
|
|
10735
|
+
}
|
|
10736
|
+
else {
|
|
10737
|
+
for (const { node } of this.#getAllNodes()) {
|
|
10738
|
+
if (!this.#canSelect(node)) continue;
|
|
10739
|
+
this._selectedNodes.add(node);
|
|
10740
|
+
}
|
|
10741
|
+
this.selectedNode = [...this._selectedNodes].at(-1);
|
|
10742
|
+
}
|
|
10743
|
+
this.#dispatchSelect(prev);
|
|
10744
|
+
this.requestUpdate();
|
|
10745
|
+
}
|
|
10746
|
+
deselectAll() {
|
|
10747
|
+
const prev = new Set(this._selectedNodes);
|
|
10748
|
+
if (this.interactionMode === `checked`) for (const { node } of this.#getAllNodes()) {
|
|
10749
|
+
if (!this.#canSelect(node)) continue;
|
|
10750
|
+
this.#applyCheckedToggle(node, false);
|
|
10751
|
+
}
|
|
10752
|
+
else this.#clearSelectionInternal();
|
|
10753
|
+
this.#dispatchSelect(prev);
|
|
10754
|
+
this.requestUpdate();
|
|
10755
|
+
}
|
|
10689
10756
|
navigateTo(keys) {
|
|
10690
10757
|
if (!this.root?.children) return false;
|
|
10691
10758
|
this.#abortPending();
|
|
@@ -11356,6 +11423,7 @@ __decorate([property({
|
|
|
11356
11423
|
type: Boolean,
|
|
11357
11424
|
attribute: `disable-keyboard-navigation`
|
|
11358
11425
|
})], TreeBaseElement.prototype, "disableKeyboardNavigation", void 0);
|
|
11426
|
+
__decorate([property({ attribute: false })], TreeBaseElement.prototype, "registry", void 0);
|
|
11359
11427
|
__decorate([state()], TreeBaseElement.prototype, "_expandedKeys", void 0);
|
|
11360
11428
|
__decorate([state()], TreeBaseElement.prototype, "_focusedDepth", void 0);
|
|
11361
11429
|
TreeBaseElement = __decorate([safeCustomElement(`ixfx-tree-base`)], TreeBaseElement);
|
|
@@ -11401,18 +11469,33 @@ let TreeListElement = class TreeListElement extends TreeBaseElement {
|
|
|
11401
11469
|
`;
|
|
11402
11470
|
if (this.interactionMode === `checked`) {
|
|
11403
11471
|
const state = computeCheckboxState$1(node, this._selectedNodes);
|
|
11404
|
-
return b
|
|
11405
|
-
<input
|
|
11406
|
-
type="checkbox"
|
|
11407
|
-
class="tree-checkbox"
|
|
11408
|
-
.checked=${state === `checked`}
|
|
11409
|
-
.indeterminate=${state === `indeterminate`}
|
|
11410
|
-
aria-label="Select ${node.item.label}"
|
|
11411
|
-
@click=${(e) => this._handleCheckboxClick(e, node, depth)}
|
|
11412
|
-
/>${caretAndLabel}`;
|
|
11472
|
+
return b`${this.#renderCheckbox(node, depth, state)}${caretAndLabel}`;
|
|
11413
11473
|
}
|
|
11414
11474
|
return caretAndLabel;
|
|
11415
11475
|
}
|
|
11476
|
+
#renderCheckbox(node, depth, state) {
|
|
11477
|
+
const onClick = (e) => this._handleCheckboxClick(e, node, depth);
|
|
11478
|
+
if (this.checkboxRenderer) return b`
|
|
11479
|
+
<span
|
|
11480
|
+
class="tree-checkbox tree-checkbox-custom"
|
|
11481
|
+
part="checkbox"
|
|
11482
|
+
role="checkbox"
|
|
11483
|
+
tabindex="-1"
|
|
11484
|
+
aria-checked=${state === `indeterminate` ? `mixed` : state === `checked` ? `true` : `false`}
|
|
11485
|
+
aria-label="Select ${node.item.label}"
|
|
11486
|
+
@click=${onClick}
|
|
11487
|
+
>${this.checkboxRenderer(state)}</span>`;
|
|
11488
|
+
return b`
|
|
11489
|
+
<input
|
|
11490
|
+
type="checkbox"
|
|
11491
|
+
class="tree-checkbox"
|
|
11492
|
+
part="checkbox"
|
|
11493
|
+
.checked=${state === `checked`}
|
|
11494
|
+
.indeterminate=${state === `indeterminate`}
|
|
11495
|
+
aria-label="Select ${node.item.label}"
|
|
11496
|
+
@click=${onClick}
|
|
11497
|
+
/>`;
|
|
11498
|
+
}
|
|
11416
11499
|
_renderNode(node, depth) {
|
|
11417
11500
|
const selected = this._isSelected(node);
|
|
11418
11501
|
const tickled = this._isFocused(node);
|
|
@@ -11491,6 +11574,17 @@ let TreeListElement = class TreeListElement extends TreeBaseElement {
|
|
|
11491
11574
|
pointer-events: auto;
|
|
11492
11575
|
}
|
|
11493
11576
|
|
|
11577
|
+
.tree-checkbox-custom {
|
|
11578
|
+
display: inline-flex;
|
|
11579
|
+
align-items: center;
|
|
11580
|
+
justify-content: center;
|
|
11581
|
+
/* Reserves a click target even when the renderer returns empty content
|
|
11582
|
+
(e.g. the "nothing when unchecked" subtle style) — without an explicit
|
|
11583
|
+
size the empty span collapses to 0×0 and becomes unclickable. */
|
|
11584
|
+
width: var(--tree-checkbox-size, 14px);
|
|
11585
|
+
height: var(--tree-checkbox-size, 14px);
|
|
11586
|
+
}
|
|
11587
|
+
|
|
11494
11588
|
/* In checked mode the checkbox communicates selection state —
|
|
11495
11589
|
suppress the row highlight so it doesn't double-signal */
|
|
11496
11590
|
:host([interaction-mode="checked"]) .item.selected {
|
|
@@ -11512,6 +11606,7 @@ let TreeListElement = class TreeListElement extends TreeBaseElement {
|
|
|
11512
11606
|
];
|
|
11513
11607
|
}
|
|
11514
11608
|
};
|
|
11609
|
+
__decorate([property({ attribute: false })], TreeListElement.prototype, "checkboxRenderer", void 0);
|
|
11515
11610
|
TreeListElement = __decorate([safeCustomElement(`ixfx-tree-list`)], TreeListElement);
|
|
11516
11611
|
//#endregion
|
|
11517
11612
|
//#region src/grouped-item-lister/tree-list-adapter.ts
|
|
@@ -11689,6 +11784,7 @@ let VerticalListElement = class VerticalListElement extends i {
|
|
|
11689
11784
|
this._searchVisible = false;
|
|
11690
11785
|
this._searchQuery = ``;
|
|
11691
11786
|
this.#customWrappers = /* @__PURE__ */ new Map();
|
|
11787
|
+
this.#wrappedElements = /* @__PURE__ */ new Set();
|
|
11692
11788
|
this.tickled = new TickledController(this, {
|
|
11693
11789
|
getItems: () => this._getVisibleItems().map((el) => ({
|
|
11694
11790
|
id: el,
|
|
@@ -11797,6 +11893,7 @@ let VerticalListElement = class VerticalListElement extends i {
|
|
|
11797
11893
|
#search;
|
|
11798
11894
|
#selectionAnchor;
|
|
11799
11895
|
#customWrappers;
|
|
11896
|
+
#wrappedElements;
|
|
11800
11897
|
connectedCallback() {
|
|
11801
11898
|
super.connectedCallback();
|
|
11802
11899
|
if (!this.hasAttribute(`tabindex`)) this.tabIndex = 0;
|
|
@@ -11923,6 +12020,20 @@ let VerticalListElement = class VerticalListElement extends i {
|
|
|
11923
12020
|
selectAll() {
|
|
11924
12021
|
if ((this.selectionMode === `multiple` || isMultiMode(this.interactionMode)) && this.selectionMode !== `none`) this._selectAll();
|
|
11925
12022
|
}
|
|
12023
|
+
*selectedFilter(kind) {
|
|
12024
|
+
const wanted = (el) => {
|
|
12025
|
+
switch (kind) {
|
|
12026
|
+
case `selected`: return el.hasAttribute(`data-selected`);
|
|
12027
|
+
case `checked`: return el.hasAttribute(`data-checked`);
|
|
12028
|
+
case `either`: return el.hasAttribute(`data-selected`) || el.hasAttribute(`data-checked`);
|
|
12029
|
+
}
|
|
12030
|
+
};
|
|
12031
|
+
for (const el of this.querySelectorAll(ITEM_SELECTOR)) {
|
|
12032
|
+
if (this.#wrappedElements.has(el)) continue;
|
|
12033
|
+
if (el.hidden) continue;
|
|
12034
|
+
if (wanted(el)) yield el;
|
|
12035
|
+
}
|
|
12036
|
+
}
|
|
11926
12037
|
_replaceSelection(item) {
|
|
11927
12038
|
if (this.selectionMode === `none`) return;
|
|
11928
12039
|
if (!this._isCheckable(item)) return;
|
|
@@ -12028,6 +12139,7 @@ let VerticalListElement = class VerticalListElement extends i {
|
|
|
12028
12139
|
}
|
|
12029
12140
|
_getVisibleItems() {
|
|
12030
12141
|
return Array.from(this.querySelectorAll(ITEM_SELECTOR)).filter((el) => {
|
|
12142
|
+
if (this.#wrappedElements.has(el)) return false;
|
|
12031
12143
|
if (el.hidden) return false;
|
|
12032
12144
|
if (this.filterPredicate && !this.filterPredicate(el)) return false;
|
|
12033
12145
|
return true;
|
|
@@ -12039,6 +12151,7 @@ let VerticalListElement = class VerticalListElement extends i {
|
|
|
12039
12151
|
}
|
|
12040
12152
|
_syncItemStates() {
|
|
12041
12153
|
for (const el of this.querySelectorAll(ITEM_SELECTOR)) {
|
|
12154
|
+
if (this.#wrappedElements.has(el)) continue;
|
|
12042
12155
|
const item = this.#customWrappers.get(el) ?? el;
|
|
12043
12156
|
el.toggleAttribute(`data-tickled`, this.tickled.isTickled(el));
|
|
12044
12157
|
el.toggleAttribute(`data-selected`, this._selectedItems.has(el));
|
|
@@ -12061,9 +12174,10 @@ let VerticalListElement = class VerticalListElement extends i {
|
|
|
12061
12174
|
if (key !== null) wrapper.setAttribute(`data-key`, key);
|
|
12062
12175
|
if (label !== null) wrapper.setAttribute(`data-search-label`, label);
|
|
12063
12176
|
inner.removeAttribute(`data-list-item`);
|
|
12064
|
-
this.insertBefore(wrapper, inner);
|
|
12065
12177
|
wrapper.appendChild(inner);
|
|
12178
|
+
this.replaceChild(wrapper, inner);
|
|
12066
12179
|
this.#customWrappers.set(wrapper, inner);
|
|
12180
|
+
this.#wrappedElements.add(inner);
|
|
12067
12181
|
}
|
|
12068
12182
|
else {
|
|
12069
12183
|
for (const [wrapper, inner] of this.#customWrappers) {
|
|
@@ -12073,6 +12187,7 @@ let VerticalListElement = class VerticalListElement extends i {
|
|
|
12073
12187
|
wrapper.remove();
|
|
12074
12188
|
}
|
|
12075
12189
|
this.#customWrappers.clear();
|
|
12190
|
+
this.#wrappedElements.clear();
|
|
12076
12191
|
}
|
|
12077
12192
|
for (const el of this.querySelectorAll(`li`)) {
|
|
12078
12193
|
const existing = el.querySelector(`.ixfx-list-checkbox`);
|
|
@@ -15960,6 +16075,10 @@ let MillerBaseElement = class MillerBaseElement extends i {
|
|
|
15960
16075
|
if (prev.size > 0) this.#dispatchSelectEvent(prev);
|
|
15961
16076
|
this.requestUpdate();
|
|
15962
16077
|
}
|
|
16078
|
+
/** Not implemented on miller-list. */
|
|
16079
|
+
selectAll() {}
|
|
16080
|
+
/** Not implemented on miller-list. */
|
|
16081
|
+
deselectAll() {}
|
|
15963
16082
|
/**
|
|
15964
16083
|
* Select or deselect a single node by key.
|
|
15965
16084
|
* In `checked` interactionMode this also recursively selects/deselects all loaded descendants.
|