@ixfx/components 0.11.2 → 0.11.4
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 +62 -4
- package/bundle/index.d.ts.map +1 -1
- package/bundle/index.js +224 -23
- package/bundle/index.js.map +1 -1
- package/dist/ac-text.d.ts +1 -1
- package/dist/{ac-token--_vCHXWw.d.ts → ac-token-TCLAZeVg.d.ts} +2 -2
- package/dist/{ac-token--_vCHXWw.d.ts.map → ac-token-TCLAZeVg.d.ts.map} +1 -1
- package/dist/ac-token.d.ts +1 -1
- package/dist/{button-BYuf72aR.d.ts → button-CTL45aBl.d.ts} +2 -2
- package/dist/{button-BYuf72aR.d.ts.map → button-CTL45aBl.d.ts.map} +1 -1
- package/dist/button.d.ts +1 -1
- package/dist/colour-picker.d.ts +1 -1
- package/dist/crumbs.d.ts +1 -1
- package/dist/crumbs.js +1 -1
- package/dist/{data-grid-3yIylIH-.d.ts → data-grid-CfiaBqTA.d.ts} +4 -4
- package/dist/{data-grid-3yIylIH-.d.ts.map → data-grid-CfiaBqTA.d.ts.map} +1 -1
- package/dist/data-grid.d.ts +1 -1
- package/dist/data-grid.js +1 -1
- package/dist/{detail-list-ccWFyhEc.d.ts → detail-list-DxQZkK-C.d.ts} +4 -4
- package/dist/{detail-list-ccWFyhEc.d.ts.map → detail-list-DxQZkK-C.d.ts.map} +1 -1
- package/dist/detail-list.d.ts +2 -2
- package/dist/{grid-list-BnOVgtLI.d.ts → grid-list-ChgYpUUq.d.ts} +2 -2
- package/dist/{grid-list-BnOVgtLI.d.ts.map → grid-list-ChgYpUUq.d.ts.map} +1 -1
- package/dist/grid-list.d.ts +1 -1
- package/dist/{grouped-item-lister-DETte0Dh.d.ts → grouped-item-lister-Bhyo-dkH.d.ts} +2 -2
- package/dist/{grouped-item-lister-DETte0Dh.d.ts.map → grouped-item-lister-Bhyo-dkH.d.ts.map} +1 -1
- package/dist/grouped-item-lister.d.ts +1 -1
- package/dist/{icon-CDGprSdE.d.ts → icon-DR_3rSyZ.d.ts} +2 -2
- package/dist/icon-DR_3rSyZ.d.ts.map +1 -0
- package/dist/icons.d.ts +2 -2
- package/dist/incr-search.d.ts +1 -1
- package/dist/{index-tq6f8007.d.ts → index-BOUaDIW-.d.ts} +2 -2
- package/dist/{index-tq6f8007.d.ts.map → index-BOUaDIW-.d.ts.map} +1 -1
- package/dist/{index-CoqtMSd9.d.ts → index-BUB5SICW.d.ts} +2 -2
- package/dist/{index-CoqtMSd9.d.ts.map → index-BUB5SICW.d.ts.map} +1 -1
- package/dist/{index-RImMNo0r.d.ts → index-CDllxjVG.d.ts} +3 -3
- package/dist/{index-RImMNo0r.d.ts.map → index-CDllxjVG.d.ts.map} +1 -1
- package/dist/{index-5-cwYpmx.d.ts → index-CHbuPyLL.d.ts} +2 -2
- package/dist/{index-5-cwYpmx.d.ts.map → index-CHbuPyLL.d.ts.map} +1 -1
- package/dist/{index-UvnoZUAo.d.ts → index-CJ5fshD3.d.ts} +2 -2
- package/dist/{index-UvnoZUAo.d.ts.map → index-CJ5fshD3.d.ts.map} +1 -1
- package/dist/{index-CYndvTWH.d.ts → index-garxxqgV.d.ts} +2 -2
- package/dist/{index-CYndvTWH.d.ts.map → index-garxxqgV.d.ts.map} +1 -1
- package/dist/index.d.ts +78 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +180 -12
- package/dist/index.js.map +1 -1
- package/dist/{labelled-input-base-hoKGwyKT.js → labelled-input-base-BFa4xlYV.js} +11 -8
- package/dist/labelled-input-base-BFa4xlYV.js.map +1 -0
- package/dist/{labelled-input-base-DiTme1JO.d.ts → labelled-input-base-Dp_9KP0G.d.ts} +2 -2
- package/dist/{labelled-input-base-DiTme1JO.d.ts.map → labelled-input-base-Dp_9KP0G.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-radial-input.js +1 -1
- package/dist/labelled-range-input.d.ts +1 -1
- package/dist/labelled-range-input.js +1 -1
- package/dist/{labelled-slider-input-CF2RtzgG.js → labelled-slider-input-FdCRi6st.js} +2 -2
- package/dist/{labelled-slider-input-CF2RtzgG.js.map → labelled-slider-input-FdCRi6st.js.map} +1 -1
- package/dist/labelled-slider-input.d.ts +1 -1
- package/dist/labelled-slider-input.js +1 -1
- package/dist/{menu-B2Qv3Oiz.js → menu-BHT6HRND.js} +2 -2
- package/dist/{menu-B2Qv3Oiz.js.map → menu-BHT6HRND.js.map} +1 -1
- package/dist/{menu-item-CZi9vy5O.d.ts → menu-item-DlxAb0Xr.d.ts} +4 -2
- package/dist/menu-item-DlxAb0Xr.d.ts.map +1 -0
- package/dist/{menu-item-Woc8jJc1.js → menu-item-JcpHCyF0.js} +30 -6
- package/dist/menu-item-JcpHCyF0.js.map +1 -0
- package/dist/menu.d.ts +2 -2
- package/dist/menu.js +2 -2
- package/dist/miller.d.ts +1 -1
- package/dist/panel.d.ts +1 -1
- package/dist/range-input.js +8 -2
- package/dist/range-input.js.map +1 -1
- package/dist/{split-layout-JK3xWVX2.d.ts → split-layout-C5SYbDrq.d.ts} +2 -2
- package/dist/{split-layout-JK3xWVX2.d.ts.map → split-layout-C5SYbDrq.d.ts.map} +1 -1
- package/dist/split-layout.d.ts +1 -1
- package/dist/{tab-list-pqfKaVAE.d.ts → tab-list-v8mKX7Fu.d.ts} +2 -2
- package/dist/{tab-list-pqfKaVAE.d.ts.map → tab-list-v8mKX7Fu.d.ts.map} +1 -1
- package/dist/tabs.d.ts +1 -1
- package/dist/{titlebar-Tqu-VvMU.d.ts → titlebar-B5zSTZnF.d.ts} +2 -2
- package/dist/{titlebar-Tqu-VvMU.d.ts.map → titlebar-B5zSTZnF.d.ts.map} +1 -1
- package/dist/titlebar.d.ts +1 -1
- package/dist/tree.d.ts +1 -1
- package/dist/{vertical-list-9dJ1R1hU.d.ts → vertical-list-R25WqAVO.d.ts} +2 -2
- package/dist/{vertical-list-9dJ1R1hU.d.ts.map → vertical-list-R25WqAVO.d.ts.map} +1 -1
- package/dist/vertical-list.d.ts +1 -1
- package/docs-user/index.json +2 -2
- package/docs-user/multicol-list.md +1 -0
- package/package.json +1 -1
- package/dist/icon-CDGprSdE.d.ts.map +0 -1
- package/dist/labelled-input-base-hoKGwyKT.js.map +0 -1
- package/dist/menu-item-CZi9vy5O.d.ts.map +0 -1
- package/dist/menu-item-Woc8jJc1.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -20,7 +20,7 @@ import { n as captionForEntry, r as createDefaultListDragPreview, t as ListNativ
|
|
|
20
20
|
import { n as isMultiMode, r as ListDragSelectController, t as ListSelectionController } from "./list-selection-controller-SA4piSBi.js";
|
|
21
21
|
import { a as prefersReducedMotion, i as listItemFadeKeyframes, n as animateListItemIn, o as startListItemOutAnimation, r as animateListItemOut, t as LIST_ITEM_MOTION_MS } from "./list-item-animation-BUoEKi5s.js";
|
|
22
22
|
import "./interaction-BskmlA9t.js";
|
|
23
|
-
import "./menu-item-
|
|
23
|
+
import "./menu-item-JcpHCyF0.js";
|
|
24
24
|
import { Checkbox } from "./checkbox.js";
|
|
25
25
|
import { n as ColourPicker, t as ColourPickerPopup } from "./colour-picker-WDrPuqoO.js";
|
|
26
26
|
import { LabelledRangeInput } from "./labelled-range-input.js";
|
|
@@ -31,7 +31,7 @@ import { NarrowedTextElement } from "./narrowed-text.js";
|
|
|
31
31
|
import { CrumbNavigationElement } from "./crumbs.js";
|
|
32
32
|
import { DataDisplayComponent } from "./data-display.js";
|
|
33
33
|
import { t as createDragGhost } from "./drag-ghost-DtSDvjri.js";
|
|
34
|
-
import { a as menuFromTreeToElements, t as menu_exports } from "./menu-
|
|
34
|
+
import { a as menuFromTreeToElements, t as menu_exports } from "./menu-BHT6HRND.js";
|
|
35
35
|
import { t as PanTextElement } from "./pan-text-CqtvjPyK.js";
|
|
36
36
|
import { DataGridElement } from "./data-grid.js";
|
|
37
37
|
import { DetailListElement } from "./detail-list.js";
|
|
@@ -40,7 +40,7 @@ import { TabListElement } from "./tabs.js";
|
|
|
40
40
|
import { EditableLabel } from "./editable-label.js";
|
|
41
41
|
import { t as resolveAxisStep } from "./keyboard-B5xD7Fz-.js";
|
|
42
42
|
import { t as WheelNudgeMixin } from "./wheel-nudge-D5rmht3v.js";
|
|
43
|
-
import { n as EditableNumber, t as LabelledSliderInput } from "./labelled-slider-input-
|
|
43
|
+
import { n as EditableNumber, t as LabelledSliderInput } from "./labelled-slider-input-FdCRi6st.js";
|
|
44
44
|
import { t as FormElement } from "./form-CsXJX15p.js";
|
|
45
45
|
import { t as GridListElement } from "./grid-list-k89JpiNy.js";
|
|
46
46
|
import { PanelElement } from "./panel.js";
|
|
@@ -1506,7 +1506,10 @@ let CrumbPathElement = class CrumbPathElement extends LitElement {
|
|
|
1506
1506
|
this._editingCancelled = false;
|
|
1507
1507
|
this._editStartIndex = null;
|
|
1508
1508
|
this._openCumPath = null;
|
|
1509
|
+
this._dragCumPath = null;
|
|
1510
|
+
this._dropCumPath = null;
|
|
1509
1511
|
this.#uid = Math.random().toString(36).slice(2, 8);
|
|
1512
|
+
this.#clickSuppressUntil = 0;
|
|
1510
1513
|
this.#onPopoverToggle = (e) => {
|
|
1511
1514
|
if (e.newState === `closed` && this._openIdx !== null) {
|
|
1512
1515
|
this._openIdx = null;
|
|
@@ -1560,6 +1563,8 @@ let CrumbPathElement = class CrumbPathElement extends LitElement {
|
|
|
1560
1563
|
#pendingController;
|
|
1561
1564
|
#pendingIndex;
|
|
1562
1565
|
#uid;
|
|
1566
|
+
/** Clicks within this window after a drag are ignored (post-drag click-through guard). */
|
|
1567
|
+
#clickSuppressUntil;
|
|
1563
1568
|
#anchorName(cumPath) {
|
|
1564
1569
|
return `--cp-${this.#uid}-${cumPath.replaceAll(this.separator, `-`).replaceAll(` `, `-`).replace(INVALID_ANCHOR_CHARS_RE, `-`)}`;
|
|
1565
1570
|
}
|
|
@@ -1621,6 +1626,23 @@ let CrumbPathElement = class CrumbPathElement extends LitElement {
|
|
|
1621
1626
|
if (isRoot) return rootSegments.slice(0, index + 1).join(this.separator);
|
|
1622
1627
|
return [...rootSegments, ...segments.slice(0, index + 1)].join(this.separator);
|
|
1623
1628
|
}
|
|
1629
|
+
#resolveFullPathSegments(index, isRoot) {
|
|
1630
|
+
const rootSegments = this.#getRootSegments();
|
|
1631
|
+
if (isRoot) return rootSegments.slice(0, index + 1);
|
|
1632
|
+
return [...rootSegments, ...this.#getSegments().slice(0, index + 1)];
|
|
1633
|
+
}
|
|
1634
|
+
#segmentDragPayloads(fullPathSegments) {
|
|
1635
|
+
try {
|
|
1636
|
+
const result = this.segmentDragLookup?.(fullPathSegments, fullPathSegments.length - 1);
|
|
1637
|
+
if (result === void 0 || result === null) return [];
|
|
1638
|
+
return Array.isArray(result) ? [...result] : [result];
|
|
1639
|
+
} catch {
|
|
1640
|
+
return [];
|
|
1641
|
+
}
|
|
1642
|
+
}
|
|
1643
|
+
#clicksSuppressed() {
|
|
1644
|
+
return Date.now() < this.#clickSuppressUntil || this._dragCumPath !== null;
|
|
1645
|
+
}
|
|
1624
1646
|
#resolveSegmentIcon(fullPathSegments, index) {
|
|
1625
1647
|
const direct = this.segmentIconLookup?.(fullPathSegments, index);
|
|
1626
1648
|
if (typeof direct === `string` && direct.length > 0) return direct;
|
|
@@ -1687,7 +1709,87 @@ let CrumbPathElement = class CrumbPathElement extends LitElement {
|
|
|
1687
1709
|
}
|
|
1688
1710
|
this.requestUpdate();
|
|
1689
1711
|
}
|
|
1712
|
+
#onLabelDragStart(fullPathSegments, cumPath, event) {
|
|
1713
|
+
this.#closeDropdown();
|
|
1714
|
+
const index = fullPathSegments.length - 1;
|
|
1715
|
+
const dt = event.dataTransfer;
|
|
1716
|
+
const detail = {
|
|
1717
|
+
index,
|
|
1718
|
+
label: fullPathSegments[index] ?? ``,
|
|
1719
|
+
pathSegments: fullPathSegments,
|
|
1720
|
+
parentPath: fullPathSegments.slice(0, -1).join(this.separator),
|
|
1721
|
+
fullPath: fullPathSegments.join(this.separator),
|
|
1722
|
+
dataTransfer: dt
|
|
1723
|
+
};
|
|
1724
|
+
const evt = new CustomEvent(`crumb-drag-start`, {
|
|
1725
|
+
detail,
|
|
1726
|
+
bubbles: true,
|
|
1727
|
+
composed: true,
|
|
1728
|
+
cancelable: true
|
|
1729
|
+
});
|
|
1730
|
+
if (!this.dispatchEvent(evt)) {
|
|
1731
|
+
event.preventDefault();
|
|
1732
|
+
return;
|
|
1733
|
+
}
|
|
1734
|
+
this._dragCumPath = cumPath;
|
|
1735
|
+
this.toggleAttribute(`data-native-dragging`, true);
|
|
1736
|
+
if (!dt) return;
|
|
1737
|
+
try {
|
|
1738
|
+
if (dt.effectAllowed === `none` || dt.effectAllowed === `uninitialized`) dt.effectAllowed = `copyMove`;
|
|
1739
|
+
} catch {}
|
|
1740
|
+
try {
|
|
1741
|
+
for (const payload of this.#segmentDragPayloads(fullPathSegments)) dt.setData(payload.type, payload.data);
|
|
1742
|
+
if (!dt.types.includes(`text/plain`)) dt.setData(`text/plain`, detail.fullPath);
|
|
1743
|
+
} catch {}
|
|
1744
|
+
}
|
|
1745
|
+
#onLabelDragEnd() {
|
|
1746
|
+
this._dragCumPath = null;
|
|
1747
|
+
this._dropCumPath = null;
|
|
1748
|
+
this.toggleAttribute(`data-native-dragging`, false);
|
|
1749
|
+
this.#clickSuppressUntil = Date.now() + 150;
|
|
1750
|
+
}
|
|
1751
|
+
#onSegDragOver(cumPath, event) {
|
|
1752
|
+
if (!this.parseExternalDrop) return;
|
|
1753
|
+
if (!event.dataTransfer) return;
|
|
1754
|
+
event.preventDefault();
|
|
1755
|
+
if (this._dropCumPath !== cumPath) this._dropCumPath = cumPath;
|
|
1756
|
+
}
|
|
1757
|
+
#onSegDragLeave(cumPath, _event) {
|
|
1758
|
+
if (!this.parseExternalDrop) return;
|
|
1759
|
+
if (this._dropCumPath === cumPath) this._dropCumPath = null;
|
|
1760
|
+
}
|
|
1761
|
+
#onSegDrop(fullPathSegments, event) {
|
|
1762
|
+
if (!this.parseExternalDrop) return;
|
|
1763
|
+
event.preventDefault();
|
|
1764
|
+
event.stopPropagation();
|
|
1765
|
+
this._dropCumPath = null;
|
|
1766
|
+
const dt = event.dataTransfer;
|
|
1767
|
+
if (!dt) return;
|
|
1768
|
+
let data;
|
|
1769
|
+
try {
|
|
1770
|
+
data = this.parseExternalDrop(dt);
|
|
1771
|
+
} catch (err) {
|
|
1772
|
+
console.error(`parseExternalDrop failed:`, err);
|
|
1773
|
+
return;
|
|
1774
|
+
}
|
|
1775
|
+
if (data === void 0) return;
|
|
1776
|
+
const index = fullPathSegments.length - 1;
|
|
1777
|
+
this.dispatchEvent(new CustomEvent(`crumb-drop`, {
|
|
1778
|
+
detail: {
|
|
1779
|
+
index,
|
|
1780
|
+
label: fullPathSegments[index] ?? ``,
|
|
1781
|
+
pathSegments: fullPathSegments,
|
|
1782
|
+
parentPath: fullPathSegments.slice(0, -1).join(this.separator),
|
|
1783
|
+
fullPath: fullPathSegments.join(this.separator),
|
|
1784
|
+
data,
|
|
1785
|
+
dataTransfer: dt
|
|
1786
|
+
},
|
|
1787
|
+
bubbles: true,
|
|
1788
|
+
composed: true
|
|
1789
|
+
}));
|
|
1790
|
+
}
|
|
1690
1791
|
#onLabelClick(index, event) {
|
|
1792
|
+
if (this.#clicksSuppressed()) return;
|
|
1691
1793
|
event.preventDefault();
|
|
1692
1794
|
event.stopPropagation();
|
|
1693
1795
|
this.#closeDropdown();
|
|
@@ -1769,16 +1871,31 @@ let CrumbPathElement = class CrumbPathElement extends LitElement {
|
|
|
1769
1871
|
#renderSegment(label, index, isLast) {
|
|
1770
1872
|
const isOpen = this._openIdx === index;
|
|
1771
1873
|
const cumPath = this.#getCumulativePath(index, false);
|
|
1772
|
-
const fullPathSegments =
|
|
1874
|
+
const fullPathSegments = this.#resolveFullPathSegments(index, false);
|
|
1773
1875
|
const icon = this.#resolveSegmentIcon(fullPathSegments, fullPathSegments.length - 1);
|
|
1876
|
+
const draggable = this.#segmentDragPayloads(fullPathSegments).length > 0;
|
|
1877
|
+
const dragging = this._dragCumPath === cumPath;
|
|
1878
|
+
const dropInto = this._dropCumPath === cumPath;
|
|
1774
1879
|
return html`
|
|
1775
|
-
<div class="seg
|
|
1776
|
-
|
|
1880
|
+
<div class="seg ${dragging ? `dragging` : ``} ${dropInto ? `drop-into` : ``}"
|
|
1881
|
+
part=${dropInto ? `segment drop-target` : `segment`}
|
|
1882
|
+
data-cumulative=${cumPath}
|
|
1883
|
+
@click=${(e) => this.#onSegmentClick(index, e)}
|
|
1884
|
+
@dragover=${(e) => this.#onSegDragOver(cumPath, e)}
|
|
1885
|
+
@dragleave=${(e) => this.#onSegDragLeave(cumPath, e)}
|
|
1886
|
+
@drop=${(e) => this.#onSegDrop(fullPathSegments, e)}>
|
|
1887
|
+
<label title=${label}
|
|
1888
|
+
part="label"
|
|
1889
|
+
?draggable=${draggable}
|
|
1890
|
+
@click=${(e) => this.#onLabelClick(index, e)}
|
|
1891
|
+
@dragstart=${(e) => this.#onLabelDragStart(fullPathSegments, cumPath, e)}
|
|
1892
|
+
@dragend=${() => this.#onLabelDragEnd()}>
|
|
1777
1893
|
${icon ? html`<ixfx-icon class="crumb-icon segment-icon" name=${icon}></ixfx-icon>` : nothing}
|
|
1778
1894
|
${label}
|
|
1779
1895
|
</label>
|
|
1780
1896
|
${(!isLast || this.siblingLookup) && this._leafSegmentIndex !== index ? html`
|
|
1781
1897
|
<div class="caret ${isOpen ? `open` : ``} ${this._confirmedLeafIndices.has(cumPath) ? `disabled` : ``}"
|
|
1898
|
+
part="caret"
|
|
1782
1899
|
style="anchor-name: ${this.#anchorName(cumPath)}"
|
|
1783
1900
|
data-cumulative=${cumPath}
|
|
1784
1901
|
@click=${(e) => this.#onCaretClick(index, e)}>
|
|
@@ -1789,17 +1906,31 @@ let CrumbPathElement = class CrumbPathElement extends LitElement {
|
|
|
1789
1906
|
`;
|
|
1790
1907
|
}
|
|
1791
1908
|
#renderRootSegment(label, index) {
|
|
1792
|
-
const
|
|
1793
|
-
const isLast = index === rootSegments.length - 1;
|
|
1909
|
+
const isLast = index === this.#getRootSegments().length - 1;
|
|
1794
1910
|
const isOpen = this._openIdx === index;
|
|
1795
1911
|
const cumPath = this.#getCumulativePath(index, true);
|
|
1796
|
-
const fullPathSegments =
|
|
1912
|
+
const fullPathSegments = this.#resolveFullPathSegments(index, true);
|
|
1797
1913
|
const icon = this.#resolveSegmentIcon(fullPathSegments, index);
|
|
1914
|
+
const draggable = this.#segmentDragPayloads(fullPathSegments).length > 0;
|
|
1915
|
+
const dragging = this._dragCumPath === cumPath;
|
|
1916
|
+
const dropInto = this._dropCumPath === cumPath;
|
|
1798
1917
|
return html`
|
|
1799
|
-
<div class="seg seg-root
|
|
1800
|
-
|
|
1918
|
+
<div class="seg seg-root ${dragging ? `dragging` : ``} ${dropInto ? `drop-into` : ``}"
|
|
1919
|
+
part=${dropInto ? `segment drop-target` : `segment`}
|
|
1920
|
+
data-cumulative=${cumPath}
|
|
1921
|
+
@click=${(e) => this.#onRootSegmentClick(index, e)}
|
|
1922
|
+
@dragover=${(e) => this.#onSegDragOver(cumPath, e)}
|
|
1923
|
+
@dragleave=${(e) => this.#onSegDragLeave(cumPath, e)}
|
|
1924
|
+
@drop=${(e) => this.#onSegDrop(fullPathSegments, e)}>
|
|
1925
|
+
<label title=${label}
|
|
1926
|
+
part="label"
|
|
1927
|
+
?draggable=${draggable}
|
|
1928
|
+
@click=${(e) => this.#onLabelClick(index, e)}
|
|
1929
|
+
@dragstart=${(e) => this.#onLabelDragStart(fullPathSegments, cumPath, e)}
|
|
1930
|
+
@dragend=${() => this.#onLabelDragEnd()}>${icon ? html`<ixfx-icon class="crumb-icon segment-icon" name=${icon}></ixfx-icon>` : nothing}${label}</label>
|
|
1801
1931
|
${isLast && this.siblingLookup ? html`
|
|
1802
1932
|
<div class="caret ${isOpen ? `open` : ``} ${this._confirmedLeafIndices.has(cumPath) ? `disabled` : ``}"
|
|
1933
|
+
part="caret"
|
|
1803
1934
|
style="anchor-name: ${this.#anchorName(cumPath)}"
|
|
1804
1935
|
data-cumulative=${cumPath}
|
|
1805
1936
|
@click=${(e) => this.#onCaretClick(index, e)}>
|
|
@@ -1810,12 +1941,14 @@ let CrumbPathElement = class CrumbPathElement extends LitElement {
|
|
|
1810
1941
|
`;
|
|
1811
1942
|
}
|
|
1812
1943
|
#onRootSegmentClick(index, event) {
|
|
1944
|
+
if (this.#clicksSuppressed()) return;
|
|
1813
1945
|
event.preventDefault();
|
|
1814
1946
|
event.stopPropagation();
|
|
1815
1947
|
const newPath = this.#getRootSegments().slice(0, index + 1).join(this.separator);
|
|
1816
1948
|
this.setPath(newPath);
|
|
1817
1949
|
}
|
|
1818
1950
|
#onSegmentClick(index, event) {
|
|
1951
|
+
if (this.#clicksSuppressed()) return;
|
|
1819
1952
|
event.preventDefault();
|
|
1820
1953
|
event.stopPropagation();
|
|
1821
1954
|
this.#closeDropdown();
|
|
@@ -1823,6 +1956,7 @@ let CrumbPathElement = class CrumbPathElement extends LitElement {
|
|
|
1823
1956
|
this._editStartIndex = index;
|
|
1824
1957
|
}
|
|
1825
1958
|
#onTrailingClick() {
|
|
1959
|
+
if (this.#clicksSuppressed()) return;
|
|
1826
1960
|
this.#closeDropdown();
|
|
1827
1961
|
this._editing = true;
|
|
1828
1962
|
this._editStartIndex = null;
|
|
@@ -2044,6 +2178,21 @@ let CrumbPathElement = class CrumbPathElement extends LitElement {
|
|
|
2044
2178
|
cursor: not-allowed;
|
|
2045
2179
|
}
|
|
2046
2180
|
|
|
2181
|
+
/* Drag and drop styles */
|
|
2182
|
+
label[draggable] {
|
|
2183
|
+
cursor: grab;
|
|
2184
|
+
}
|
|
2185
|
+
|
|
2186
|
+
.seg.dragging {
|
|
2187
|
+
opacity: 0.4;
|
|
2188
|
+
}
|
|
2189
|
+
|
|
2190
|
+
.seg.drop-into {
|
|
2191
|
+
outline: var(--crumb-drop-into-outline, 2px solid var(--accent));
|
|
2192
|
+
outline-offset: -2px;
|
|
2193
|
+
background: var(--crumb-drop-into-bg, color-mix(in srgb, var(--accent) 14%, transparent));
|
|
2194
|
+
}
|
|
2195
|
+
|
|
2047
2196
|
.crumb-icon {
|
|
2048
2197
|
width: 1em;
|
|
2049
2198
|
height: 1em;
|
|
@@ -2126,6 +2275,8 @@ __decorate([property({
|
|
|
2126
2275
|
})], CrumbPathElement.prototype, "pathRoot", void 0);
|
|
2127
2276
|
__decorate([property({ type: Object })], CrumbPathElement.prototype, "siblingLookup", void 0);
|
|
2128
2277
|
__decorate([property({ type: Object })], CrumbPathElement.prototype, "segmentIconLookup", void 0);
|
|
2278
|
+
__decorate([property({ type: Object })], CrumbPathElement.prototype, "segmentDragLookup", void 0);
|
|
2279
|
+
__decorate([property({ type: Object })], CrumbPathElement.prototype, "parseExternalDrop", void 0);
|
|
2129
2280
|
__decorate([state()], CrumbPathElement.prototype, "_openIdx", void 0);
|
|
2130
2281
|
__decorate([state()], CrumbPathElement.prototype, "_editing", void 0);
|
|
2131
2282
|
__decorate([state()], CrumbPathElement.prototype, "_cachedSiblings", void 0);
|
|
@@ -2135,6 +2286,8 @@ __decorate([state()], CrumbPathElement.prototype, "_dropdownActiveIndex", void 0
|
|
|
2135
2286
|
__decorate([state()], CrumbPathElement.prototype, "_editingCancelled", void 0);
|
|
2136
2287
|
__decorate([state()], CrumbPathElement.prototype, "_editStartIndex", void 0);
|
|
2137
2288
|
__decorate([state()], CrumbPathElement.prototype, "_openCumPath", void 0);
|
|
2289
|
+
__decorate([state()], CrumbPathElement.prototype, "_dragCumPath", void 0);
|
|
2290
|
+
__decorate([state()], CrumbPathElement.prototype, "_dropCumPath", void 0);
|
|
2138
2291
|
CrumbPathElement = __decorate([safeCustomElement(`ixfx-crumb-path`)], CrumbPathElement);
|
|
2139
2292
|
//#endregion
|
|
2140
2293
|
//#region src/data-table/data-table.ts
|
|
@@ -8169,6 +8322,7 @@ let MulticolListElement = class MulticolListElement extends LitElement {
|
|
|
8169
8322
|
--multicol-list-border: var(--border);
|
|
8170
8323
|
--multicol-list-min-column-width: ${MIN_COLUMN_WIDTH}px;
|
|
8171
8324
|
--multicol-list-max-column-width: ${MAX_COLUMN_WIDTH}px;
|
|
8325
|
+
--multicol-list-header-font-size: unset;
|
|
8172
8326
|
|
|
8173
8327
|
display: block;
|
|
8174
8328
|
overflow: hidden;
|
|
@@ -8234,7 +8388,7 @@ let MulticolListElement = class MulticolListElement extends LitElement {
|
|
|
8234
8388
|
text-overflow: ellipsis;
|
|
8235
8389
|
white-space: nowrap;
|
|
8236
8390
|
padding: 0 var(--space-s);
|
|
8237
|
-
font-size: var(--
|
|
8391
|
+
font-size: var(--multicol-list-header-font-size);
|
|
8238
8392
|
font-weight: 600;
|
|
8239
8393
|
background: transparent;
|
|
8240
8394
|
border: none;
|
|
@@ -10267,6 +10421,7 @@ let ShapefillValueElement = class ShapefillValueElement extends WheelNudgeMixin(
|
|
|
10267
10421
|
this.#dragging = false;
|
|
10268
10422
|
this.#dragStartY = 0;
|
|
10269
10423
|
this.#valueAtDragStart = 0;
|
|
10424
|
+
this.#lastPointerY = 0;
|
|
10270
10425
|
this.#onPointerDown = (event) => {
|
|
10271
10426
|
if (this.disabled) return;
|
|
10272
10427
|
event.preventDefault();
|
|
@@ -10274,7 +10429,9 @@ let ShapefillValueElement = class ShapefillValueElement extends WheelNudgeMixin(
|
|
|
10274
10429
|
svgEl?.focus();
|
|
10275
10430
|
this.#dragging = true;
|
|
10276
10431
|
this.#dragStartY = event.clientY;
|
|
10432
|
+
this.#lastPointerY = event.clientY;
|
|
10277
10433
|
this.#valueAtDragStart = this.value;
|
|
10434
|
+
this.#lastSetValue = this.value;
|
|
10278
10435
|
this.toggleAttribute(`dragging`, true);
|
|
10279
10436
|
if (svgEl) svgEl.setPointerCapture(event.pointerId);
|
|
10280
10437
|
window.addEventListener(`pointermove`, this.#onPointerMove);
|
|
@@ -10284,10 +10441,16 @@ let ShapefillValueElement = class ShapefillValueElement extends WheelNudgeMixin(
|
|
|
10284
10441
|
this.#onPointerMove = (event) => {
|
|
10285
10442
|
if (!this.#dragging) return;
|
|
10286
10443
|
event.preventDefault();
|
|
10444
|
+
if (this.value !== this.#lastSetValue) {
|
|
10445
|
+
this.#valueAtDragStart = this.value;
|
|
10446
|
+
this.#dragStartY = this.#lastPointerY;
|
|
10447
|
+
this.#lastSetValue = this.value;
|
|
10448
|
+
}
|
|
10287
10449
|
const effectiveSensitivity = this.clientHeight * 2 * (event.shiftKey ? 10 : 1);
|
|
10288
10450
|
const deltaValue = (this.#dragStartY - event.clientY) / effectiveSensitivity * (this.max - this.min);
|
|
10289
10451
|
const relativeValue = scale(this.#valueAtDragStart + deltaValue, this.min, this.max, 0, 1);
|
|
10290
10452
|
this.#setValueFromRelative(clampValue(relativeValue, 0, 1), true);
|
|
10453
|
+
this.#lastPointerY = event.clientY;
|
|
10291
10454
|
};
|
|
10292
10455
|
this.#onPointerUp = () => {
|
|
10293
10456
|
this.#dragging = false;
|
|
@@ -10330,6 +10493,10 @@ let ShapefillValueElement = class ShapefillValueElement extends WheelNudgeMixin(
|
|
|
10330
10493
|
#dragging;
|
|
10331
10494
|
#dragStartY;
|
|
10332
10495
|
#valueAtDragStart;
|
|
10496
|
+
/** Client Y of the last processed pointer event, for external-write re-baselining. */
|
|
10497
|
+
#lastPointerY;
|
|
10498
|
+
/** Value at the drag's last write — detects external `value` writes mid-drag. */
|
|
10499
|
+
#lastSetValue;
|
|
10333
10500
|
#changeDebounceTimer;
|
|
10334
10501
|
#getRelativeValue() {
|
|
10335
10502
|
return scale(this.value, this.min, this.max, 0, 1);
|
|
@@ -10347,6 +10514,7 @@ let ShapefillValueElement = class ShapefillValueElement extends WheelNudgeMixin(
|
|
|
10347
10514
|
if (clampedValue === this.value) return;
|
|
10348
10515
|
const previousValue = this.value;
|
|
10349
10516
|
this.value = clampedValue;
|
|
10517
|
+
this.#lastSetValue = clampedValue;
|
|
10350
10518
|
if (this.hasAttribute(`data-tooltip-live`)) {
|
|
10351
10519
|
const percentage = Math.round(this.#getRelativeValue() * 100);
|
|
10352
10520
|
this.setAttribute(`data-tooltip`, `${percentage}%`);
|