@ixfx/components 0.3.0 → 0.3.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/bundle/index.d.ts.map +1 -1
- package/bundle/index.js +82 -28
- package/bundle/index.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +82 -28
- package/dist/index.js.map +1 -1
- package/dist/tab-list-BnqISNvO.d.ts.map +1 -1
- package/package.json +1 -1
package/bundle/index.js
CHANGED
|
@@ -32292,16 +32292,19 @@ let TabListItemElement = class TabListItemElement extends i$4 {
|
|
|
32292
32292
|
<div>
|
|
32293
32293
|
${this.iconName ? b`<ixfx-icon name="${this.iconName}"></ixfx-icon>` : A}
|
|
32294
32294
|
${showLabel ? b`<span class="label"><slot></slot></span>` : A}
|
|
32295
|
-
|
|
32296
|
-
<
|
|
32297
|
-
|
|
32298
|
-
|
|
32299
|
-
|
|
32300
|
-
|
|
32301
|
-
|
|
32302
|
-
|
|
32303
|
-
|
|
32304
|
-
|
|
32295
|
+
<div class="actions">
|
|
32296
|
+
<div class="toolbar"><slot name="toolbar"></slot></div>
|
|
32297
|
+
${this.closeable ? b`
|
|
32298
|
+
<button
|
|
32299
|
+
class="close-btn"
|
|
32300
|
+
type="button"
|
|
32301
|
+
aria-label="Close tab"
|
|
32302
|
+
@click=${this._onCloseClick}
|
|
32303
|
+
>
|
|
32304
|
+
<ixfx-icon name="close"></ixfx-icon>
|
|
32305
|
+
</button>
|
|
32306
|
+
` : A}
|
|
32307
|
+
</div>
|
|
32305
32308
|
</div>
|
|
32306
32309
|
`;
|
|
32307
32310
|
}
|
|
@@ -32325,7 +32328,7 @@ let TabListItemElement = class TabListItemElement extends i$4 {
|
|
|
32325
32328
|
box-sizing: border-box;
|
|
32326
32329
|
}
|
|
32327
32330
|
|
|
32328
|
-
div {
|
|
32331
|
+
:host > div {
|
|
32329
32332
|
display: flex;
|
|
32330
32333
|
align-items: center;
|
|
32331
32334
|
gap: var(--space-s, 4px);
|
|
@@ -32356,6 +32359,28 @@ let TabListItemElement = class TabListItemElement extends i$4 {
|
|
|
32356
32359
|
flex-shrink: 0;
|
|
32357
32360
|
}
|
|
32358
32361
|
|
|
32362
|
+
.actions {
|
|
32363
|
+
display: flex;
|
|
32364
|
+
align-items: center;
|
|
32365
|
+
gap: var(--space-xs);
|
|
32366
|
+
margin-left: auto;
|
|
32367
|
+
flex-shrink: 0;
|
|
32368
|
+
}
|
|
32369
|
+
|
|
32370
|
+
.toolbar {
|
|
32371
|
+
display: none;
|
|
32372
|
+
align-items: center;
|
|
32373
|
+
gap: var(--space-xs);
|
|
32374
|
+
}
|
|
32375
|
+
|
|
32376
|
+
:host([selected]) .toolbar {
|
|
32377
|
+
display: flex;
|
|
32378
|
+
}
|
|
32379
|
+
|
|
32380
|
+
slot[name="toolbar"] {
|
|
32381
|
+
display: contents;
|
|
32382
|
+
}
|
|
32383
|
+
|
|
32359
32384
|
.close-btn {
|
|
32360
32385
|
display: inline-flex;
|
|
32361
32386
|
align-items: center;
|
|
@@ -32363,7 +32388,6 @@ let TabListItemElement = class TabListItemElement extends i$4 {
|
|
|
32363
32388
|
background: none;
|
|
32364
32389
|
border: none;
|
|
32365
32390
|
padding: var(--space-xs);
|
|
32366
|
-
margin-left: auto;
|
|
32367
32391
|
cursor: pointer;
|
|
32368
32392
|
color: inherit;
|
|
32369
32393
|
border-radius: var(--radius-s);
|
|
@@ -32642,14 +32666,17 @@ let TabPanelsElement = class TabPanelsElement extends i$4 {
|
|
|
32642
32666
|
if (this.onSelectedPanel) this.onSelectedPanel(el.id, el);
|
|
32643
32667
|
}
|
|
32644
32668
|
syncWithList(el) {
|
|
32669
|
+
const apply = (t) => {
|
|
32670
|
+
if (!t) return;
|
|
32671
|
+
const forEl = t.getAttribute(`for`);
|
|
32672
|
+
if (forEl) this.selectPanel(forEl);
|
|
32673
|
+
};
|
|
32645
32674
|
const t = el.getSelectedElement();
|
|
32646
32675
|
if (!t) {
|
|
32647
|
-
el.updateComplete.then(() =>
|
|
32676
|
+
el.updateComplete.then(() => apply(el.getSelectedElement()));
|
|
32648
32677
|
return;
|
|
32649
32678
|
}
|
|
32650
|
-
|
|
32651
|
-
if (!forEl) return;
|
|
32652
|
-
this.selectPanel(forEl);
|
|
32679
|
+
apply(t);
|
|
32653
32680
|
}
|
|
32654
32681
|
selectPanel(id) {
|
|
32655
32682
|
const current = this.getSelectedElement();
|
|
@@ -35983,6 +36010,7 @@ let VerticalListElement = class VerticalListElement extends i$4 {
|
|
|
35983
36010
|
this._selectedItems = /* @__PURE__ */ new Set();
|
|
35984
36011
|
this._searchVisible = false;
|
|
35985
36012
|
this._searchQuery = ``;
|
|
36013
|
+
this.#customWrappers = /* @__PURE__ */ new Map();
|
|
35986
36014
|
this.tickled = new TickledController(this, {
|
|
35987
36015
|
getItems: () => this._getVisibleItems().map((el) => ({
|
|
35988
36016
|
id: el,
|
|
@@ -36092,6 +36120,7 @@ let VerticalListElement = class VerticalListElement extends i$4 {
|
|
|
36092
36120
|
}
|
|
36093
36121
|
#search;
|
|
36094
36122
|
#selectionAnchor;
|
|
36123
|
+
#customWrappers;
|
|
36095
36124
|
connectedCallback() {
|
|
36096
36125
|
super.connectedCallback();
|
|
36097
36126
|
if (!this.hasAttribute(`tabindex`)) this.tabIndex = 0;
|
|
@@ -36124,7 +36153,19 @@ let VerticalListElement = class VerticalListElement extends i$4 {
|
|
|
36124
36153
|
super.updated(changed);
|
|
36125
36154
|
if (changed.has(`interactionMode`)) {
|
|
36126
36155
|
this.#selectionAnchor = void 0;
|
|
36127
|
-
this.
|
|
36156
|
+
const previousSelected = this._selectedItems;
|
|
36157
|
+
const savedWrappers = changed.get(`interactionMode`) === `checked` ? new Map(this.#customWrappers) : null;
|
|
36158
|
+
this._syncCheckboxes();
|
|
36159
|
+
if (previousSelected.size > 0) {
|
|
36160
|
+
let remapped;
|
|
36161
|
+
if (savedWrappers && savedWrappers.size > 0) remapped = new Set([...previousSelected].map((el) => savedWrappers.get(el) ?? el));
|
|
36162
|
+
else if (this.#customWrappers.size > 0) {
|
|
36163
|
+
const innerToWrapper = new Map([...this.#customWrappers].map(([w, i]) => [i, w]));
|
|
36164
|
+
remapped = new Set([...previousSelected].map((el) => innerToWrapper.get(el) ?? el));
|
|
36165
|
+
} else remapped = new Set(previousSelected);
|
|
36166
|
+
this._selectedItems = remapped;
|
|
36167
|
+
}
|
|
36168
|
+
this._syncItemStates();
|
|
36128
36169
|
}
|
|
36129
36170
|
}
|
|
36130
36171
|
/** The most recently selected item, or `undefined` if nothing is selected. */
|
|
@@ -36147,6 +36188,7 @@ let VerticalListElement = class VerticalListElement extends i$4 {
|
|
|
36147
36188
|
item.remove();
|
|
36148
36189
|
}
|
|
36149
36190
|
clearItems() {
|
|
36191
|
+
this.#customWrappers.clear();
|
|
36150
36192
|
this.replaceChildren();
|
|
36151
36193
|
this.#selectionAnchor = void 0;
|
|
36152
36194
|
this._selectedItems = /* @__PURE__ */ new Set();
|
|
@@ -36304,6 +36346,29 @@ let VerticalListElement = class VerticalListElement extends i$4 {
|
|
|
36304
36346
|
}
|
|
36305
36347
|
_syncCheckboxes() {
|
|
36306
36348
|
const inCheckedMode = this.interactionMode === `checked`;
|
|
36349
|
+
if (inCheckedMode) for (const inner of Array.from(this.children)) {
|
|
36350
|
+
if (!inner.hasAttribute(`data-list-item`)) continue;
|
|
36351
|
+
if (inner.parentElement !== this) continue;
|
|
36352
|
+
const wrapper = document.createElement(`li`);
|
|
36353
|
+
wrapper.className = `ixfx-custom-row`;
|
|
36354
|
+
const key = inner.getAttribute(`data-key`);
|
|
36355
|
+
const label = inner.getAttribute(`data-search-label`);
|
|
36356
|
+
if (key !== null) wrapper.setAttribute(`data-key`, key);
|
|
36357
|
+
if (label !== null) wrapper.setAttribute(`data-search-label`, label);
|
|
36358
|
+
inner.removeAttribute(`data-list-item`);
|
|
36359
|
+
this.insertBefore(wrapper, inner);
|
|
36360
|
+
wrapper.appendChild(inner);
|
|
36361
|
+
this.#customWrappers.set(wrapper, inner);
|
|
36362
|
+
}
|
|
36363
|
+
else {
|
|
36364
|
+
for (const [wrapper, inner] of this.#customWrappers) {
|
|
36365
|
+
if (wrapper.parentElement !== this) continue;
|
|
36366
|
+
inner.setAttribute(`data-list-item`, ``);
|
|
36367
|
+
this.insertBefore(inner, wrapper);
|
|
36368
|
+
wrapper.remove();
|
|
36369
|
+
}
|
|
36370
|
+
this.#customWrappers.clear();
|
|
36371
|
+
}
|
|
36307
36372
|
for (const el of this.querySelectorAll(`li`)) {
|
|
36308
36373
|
let cb = el.querySelector(`input.ixfx-list-checkbox`);
|
|
36309
36374
|
if (inCheckedMode) {
|
|
@@ -36445,17 +36510,6 @@ let VerticalListElement = class VerticalListElement extends i$4 {
|
|
|
36445
36510
|
outline: 1px solid var(--accent, #60a5fa);
|
|
36446
36511
|
}
|
|
36447
36512
|
|
|
36448
|
-
/* checked mode: left-border indicator for custom shadow-DOM items (no checkbox injection possible) */
|
|
36449
|
-
:host([interaction-mode="checked"]) ::slotted([data-list-item]) {
|
|
36450
|
-
border-left: 3px solid transparent;
|
|
36451
|
-
transition: background var(--transition, 0.1s ease-out),
|
|
36452
|
-
border-color var(--transition, 0.1s ease-out);
|
|
36453
|
-
}
|
|
36454
|
-
|
|
36455
|
-
:host([interaction-mode="checked"]) ::slotted([data-list-item][data-checked]) {
|
|
36456
|
-
border-left: 3px solid var(--accent, #60a5fa);
|
|
36457
|
-
}
|
|
36458
|
-
|
|
36459
36513
|
.search-overlay {
|
|
36460
36514
|
position: absolute;
|
|
36461
36515
|
top: 8px;
|