@ixfx/components 0.10.5 → 0.10.7
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 +50 -2
- package/bundle/index.d.ts.map +1 -1
- package/bundle/index.js +425 -16
- 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/{data-grid-DE1_gZNk.d.ts → data-grid-BDNjQv3Q.d.ts} +8 -6
- package/dist/data-grid-BDNjQv3Q.d.ts.map +1 -0
- package/dist/data-grid.d.ts +2 -2
- package/dist/data-grid.js +10 -5
- package/dist/data-grid.js.map +1 -1
- package/dist/{detail-list-CaStSzYN.d.ts → detail-list-BdLuOwQj.d.ts} +4 -4
- package/dist/{detail-list-CaStSzYN.d.ts.map → detail-list-BdLuOwQj.d.ts.map} +1 -1
- package/dist/detail-list.d.ts +2 -2
- package/dist/detail-list.js +49 -1
- package/dist/detail-list.js.map +1 -1
- package/dist/{grid-list-BJDxBL0x.d.ts → grid-list-DyphX9Fv.d.ts} +2 -2
- package/dist/{grid-list-BJDxBL0x.d.ts.map → grid-list-DyphX9Fv.d.ts.map} +1 -1
- package/dist/{grid-list-CaMcdpFJ.js → grid-list-k89JpiNy.js} +18 -1
- package/dist/grid-list-k89JpiNy.js.map +1 -0
- package/dist/grid-list.d.ts +1 -1
- package/dist/grid-list.js +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-CsaQwNkz.d.ts → index-BXafRK-_.d.ts} +2 -2
- package/dist/{index-CsaQwNkz.d.ts.map → index-BXafRK-_.d.ts.map} +1 -1
- package/dist/{index-9AhaHIT2.d.ts → index-C59-JEPl.d.ts} +3 -3
- package/dist/{index-9AhaHIT2.d.ts.map → index-C59-JEPl.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 +66 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +344 -3
- package/dist/index.js.map +1 -1
- 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-range-input.d.ts +1 -1
- package/dist/labelled-slider-input.d.ts +1 -1
- package/dist/{menu-item-CZi9vy5O.d.ts → menu-item-ZmkXNjek.d.ts} +2 -2
- package/dist/{menu-item-CZi9vy5O.d.ts.map → menu-item-ZmkXNjek.d.ts.map} +1 -1
- package/dist/menu.d.ts +2 -2
- package/dist/miller.d.ts +1 -1
- package/dist/panel.d.ts +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-DfcNsa4p.d.ts → vertical-list-C03PN6lx.d.ts} +2 -2
- package/dist/{vertical-list-DfcNsa4p.d.ts.map → vertical-list-C03PN6lx.d.ts.map} +1 -1
- package/dist/vertical-list.d.ts +1 -1
- package/docs-user/README.md +1 -0
- package/docs-user/data-grid.md +2 -1
- package/docs-user/detail-list.md +31 -3
- package/docs-user/grid-list.md +4 -2
- package/docs-user/index.json +7 -2
- package/docs-user/llms.txt +1 -0
- package/docs-user/multicol-list.md +4 -0
- package/docs-user/shapefill-value.md +125 -0
- package/llms.txt +1 -0
- package/package.json +1 -1
- package/dist/data-grid-DE1_gZNk.d.ts.map +0 -1
- package/dist/grid-list-CaMcdpFJ.js.map +0 -1
- package/dist/icon-CDGprSdE.d.ts.map +0 -1
package/dist/index.js
CHANGED
|
@@ -38,9 +38,11 @@ import { DetailListElement } from "./detail-list.js";
|
|
|
38
38
|
import { a as distribute, c as toSnapshot, i as buildModel, l as walk, n as SplitPanelElement, o as normalise, r as applySnapshot, s as resolveTracks, t as SplitLayoutElement } from "./split-layout-BJEU1W0d.js";
|
|
39
39
|
import { TabListElement } from "./tabs.js";
|
|
40
40
|
import { EditableLabel } from "./editable-label.js";
|
|
41
|
+
import { t as resolveAxisStep } from "./keyboard-B5xD7Fz-.js";
|
|
42
|
+
import { t as WheelNudgeMixin } from "./wheel-nudge-D5rmht3v.js";
|
|
41
43
|
import { n as EditableNumber, t as LabelledSliderInput } from "./labelled-slider-input-CF2RtzgG.js";
|
|
42
44
|
import { t as FormElement } from "./form-CsXJX15p.js";
|
|
43
|
-
import { t as GridListElement } from "./grid-list-
|
|
45
|
+
import { t as GridListElement } from "./grid-list-k89JpiNy.js";
|
|
44
46
|
import { PanelElement } from "./panel.js";
|
|
45
47
|
import { GroupedItemListerElement } from "./grouped-item-lister.js";
|
|
46
48
|
import { VerticalListElement } from "./vertical-list.js";
|
|
@@ -63,7 +65,7 @@ import { SwipeElement } from "./swipe.js";
|
|
|
63
65
|
import { a as resolveCssVars, i as attachTimelineInteractions, n as TimelineTrackTabElement, o as resolveGrid, r as timelineStyles, s as TimelineController, t as IxfxTimelineElement } from "./timeline-BP1Ux2EV.js";
|
|
64
66
|
import { TransitoryLabelElement } from "./transitory-label.js";
|
|
65
67
|
import { XyPad } from "./xy-pad.js";
|
|
66
|
-
import { LitElement, css, html, nothing } from "lit";
|
|
68
|
+
import { LitElement, css, html, nothing, svg } from "lit";
|
|
67
69
|
import { customElement, eventOptions, property, query, queryAssignedElements, state } from "lit/decorators.js";
|
|
68
70
|
import { unsafeHTML } from "lit/directives/unsafe-html.js";
|
|
69
71
|
import { createCommandRegistry } from "@clinth/ui-commands";
|
|
@@ -7500,6 +7502,62 @@ let MulticolListElement = class MulticolListElement extends LitElement {
|
|
|
7500
7502
|
composed: true
|
|
7501
7503
|
}));
|
|
7502
7504
|
}
|
|
7505
|
+
async autoSizeColumns(options) {
|
|
7506
|
+
return new Promise((resolve) => {
|
|
7507
|
+
setTimeout(() => {
|
|
7508
|
+
const minWidth = options?.minWidth ?? MIN_COLUMN_WIDTH;
|
|
7509
|
+
const maxWidth = options?.maxWidth ?? MAX_COLUMN_WIDTH;
|
|
7510
|
+
const measure = (text) => {
|
|
7511
|
+
const span = document.createElement(`span`);
|
|
7512
|
+
span.style.position = `absolute`;
|
|
7513
|
+
span.style.visibility = `hidden`;
|
|
7514
|
+
span.style.whiteSpace = `nowrap`;
|
|
7515
|
+
span.style.font = getComputedStyle(this).font;
|
|
7516
|
+
span.textContent = text;
|
|
7517
|
+
document.body.appendChild(span);
|
|
7518
|
+
const w = span.getBoundingClientRect().width;
|
|
7519
|
+
document.body.removeChild(span);
|
|
7520
|
+
return w;
|
|
7521
|
+
};
|
|
7522
|
+
for (const col of this._columns) {
|
|
7523
|
+
const colEl = this.shadowRoot?.querySelector(`[data-col-id="${col.id}"]`);
|
|
7524
|
+
if (!colEl) continue;
|
|
7525
|
+
const headerEl = colEl.querySelector(`.column-header`);
|
|
7526
|
+
const listerHost = colEl.querySelector(`.lister-host`);
|
|
7527
|
+
let contentWidth = 0;
|
|
7528
|
+
if (listerHost) {
|
|
7529
|
+
const allLabel = listerHost.querySelector(`.all-label`);
|
|
7530
|
+
if (allLabel) contentWidth = Math.max(contentWidth, measure(allLabel.textContent ?? ``));
|
|
7531
|
+
const groupedLister = listerHost.querySelector(`ixfx-grouped-item-lister`);
|
|
7532
|
+
if (groupedLister) {
|
|
7533
|
+
const verticalLists = groupedLister.querySelectorAll(`ixfx-vertical-list`);
|
|
7534
|
+
for (const vl of verticalLists) {
|
|
7535
|
+
const itemEls = vl.querySelectorAll(`li`);
|
|
7536
|
+
for (const li of itemEls) {
|
|
7537
|
+
const labelEl = li.querySelector(`.item-label`);
|
|
7538
|
+
const countEl = li.querySelector(`.count`);
|
|
7539
|
+
const combinedText = (labelEl?.textContent ?? ``) + (countEl?.textContent ?? ``);
|
|
7540
|
+
contentWidth = Math.max(contentWidth, measure(combinedText));
|
|
7541
|
+
}
|
|
7542
|
+
}
|
|
7543
|
+
}
|
|
7544
|
+
}
|
|
7545
|
+
let headerWidth = 0;
|
|
7546
|
+
if (headerEl) {
|
|
7547
|
+
const labelBtn = headerEl.querySelector(`.column-label`);
|
|
7548
|
+
if (labelBtn) headerWidth = measure(labelBtn.textContent ?? ``);
|
|
7549
|
+
}
|
|
7550
|
+
const neededWidth = Math.max(headerWidth, contentWidth + 24 + 16);
|
|
7551
|
+
const clampedWidth = Math.max(minWidth, Math.min(maxWidth, Math.ceil(neededWidth)));
|
|
7552
|
+
col.setWidth(clampedWidth);
|
|
7553
|
+
}
|
|
7554
|
+
this._updateColOffsets();
|
|
7555
|
+
this._emitColumnsChange(`resize`);
|
|
7556
|
+
this.requestUpdate();
|
|
7557
|
+
resolve();
|
|
7558
|
+
}, 0);
|
|
7559
|
+
});
|
|
7560
|
+
}
|
|
7503
7561
|
};
|
|
7504
7562
|
__decorate([property({ attribute: false })], MulticolListElement.prototype, "categories", void 0);
|
|
7505
7563
|
__decorate([property({ attribute: false })], MulticolListElement.prototype, "dataProvider", void 0);
|
|
@@ -8915,6 +8973,289 @@ __decorate([property({ type: String })], RatingElement.prototype, "variant", voi
|
|
|
8915
8973
|
__decorate([state()], RatingElement.prototype, "_preview", void 0);
|
|
8916
8974
|
RatingElement = __decorate([customElement(`ixfx-rating`)], RatingElement);
|
|
8917
8975
|
//#endregion
|
|
8976
|
+
//#region src/util/clamp.ts
|
|
8977
|
+
function clampValue(v, min, max) {
|
|
8978
|
+
return Math.min(Math.max(v, min), max);
|
|
8979
|
+
}
|
|
8980
|
+
//#endregion
|
|
8981
|
+
//#region src/util/geometry.ts
|
|
8982
|
+
function scale(v, fromMin, fromMax, toMin, toMax) {
|
|
8983
|
+
if (fromMax === fromMin) return toMin;
|
|
8984
|
+
return toMin + (v - fromMin) / (fromMax - fromMin) * (toMax - toMin);
|
|
8985
|
+
}
|
|
8986
|
+
//#endregion
|
|
8987
|
+
//#region src/shapefill-value/shapefill-value.ts
|
|
8988
|
+
let ShapefillValueElement = class ShapefillValueElement extends WheelNudgeMixin(LitElement) {
|
|
8989
|
+
constructor(..._args) {
|
|
8990
|
+
super(..._args);
|
|
8991
|
+
this.display = `circle`;
|
|
8992
|
+
this.fillMode = `centre`;
|
|
8993
|
+
this.value = 0;
|
|
8994
|
+
this.min = 0;
|
|
8995
|
+
this.max = 100;
|
|
8996
|
+
this.step = void 0;
|
|
8997
|
+
this.disabled = false;
|
|
8998
|
+
this.#dragging = false;
|
|
8999
|
+
this.#dragStartY = 0;
|
|
9000
|
+
this.#valueAtDragStart = 0;
|
|
9001
|
+
this.#onPointerDown = (event) => {
|
|
9002
|
+
if (this.disabled) return;
|
|
9003
|
+
event.preventDefault();
|
|
9004
|
+
const svgEl = this.renderRoot.querySelector(`svg`);
|
|
9005
|
+
svgEl?.focus();
|
|
9006
|
+
this.#dragging = true;
|
|
9007
|
+
this.#dragStartY = event.clientY;
|
|
9008
|
+
this.#valueAtDragStart = this.value;
|
|
9009
|
+
this.toggleAttribute(`dragging`, true);
|
|
9010
|
+
if (svgEl) svgEl.setPointerCapture(event.pointerId);
|
|
9011
|
+
window.addEventListener(`pointermove`, this.#onPointerMove);
|
|
9012
|
+
window.addEventListener(`pointerup`, this.#onPointerUp);
|
|
9013
|
+
window.addEventListener(`pointercancel`, this.#onPointerUp);
|
|
9014
|
+
};
|
|
9015
|
+
this.#onPointerMove = (event) => {
|
|
9016
|
+
if (!this.#dragging) return;
|
|
9017
|
+
event.preventDefault();
|
|
9018
|
+
const effectiveSensitivity = this.clientHeight * 2 * (event.shiftKey ? 10 : 1);
|
|
9019
|
+
const deltaValue = (this.#dragStartY - event.clientY) / effectiveSensitivity * (this.max - this.min);
|
|
9020
|
+
const relativeValue = scale(this.#valueAtDragStart + deltaValue, this.min, this.max, 0, 1);
|
|
9021
|
+
this.#setValueFromRelative(clampValue(relativeValue, 0, 1), true);
|
|
9022
|
+
};
|
|
9023
|
+
this.#onPointerUp = () => {
|
|
9024
|
+
this.#dragging = false;
|
|
9025
|
+
this.toggleAttribute(`dragging`, false);
|
|
9026
|
+
const svgEl = this.renderRoot.querySelector(`svg`);
|
|
9027
|
+
if (svgEl && `hasPointerCapture` in svgEl && typeof svgEl.hasPointerCapture === `function`) {
|
|
9028
|
+
if (svgEl.hasPointerCapture(1)) svgEl.releasePointerCapture(1);
|
|
9029
|
+
}
|
|
9030
|
+
window.removeEventListener(`pointermove`, this.#onPointerMove);
|
|
9031
|
+
window.removeEventListener(`pointerup`, this.#onPointerUp);
|
|
9032
|
+
window.removeEventListener(`pointercancel`, this.#onPointerUp);
|
|
9033
|
+
};
|
|
9034
|
+
this.#onKeyDown = (event) => {
|
|
9035
|
+
if (this.disabled) return;
|
|
9036
|
+
const range = this.max - this.min;
|
|
9037
|
+
const effectiveStep = resolveAxisStep(range, this.stops, this.step, event.shiftKey);
|
|
9038
|
+
let handled = false;
|
|
9039
|
+
switch (event.key) {
|
|
9040
|
+
case `ArrowUp`:
|
|
9041
|
+
case `ArrowRight`:
|
|
9042
|
+
this.#stepByRelativeDelta(effectiveStep / range, true);
|
|
9043
|
+
handled = true;
|
|
9044
|
+
break;
|
|
9045
|
+
case `ArrowDown`:
|
|
9046
|
+
case `ArrowLeft`:
|
|
9047
|
+
this.#stepByRelativeDelta(-effectiveStep / range, true);
|
|
9048
|
+
handled = true;
|
|
9049
|
+
break;
|
|
9050
|
+
case `Home`:
|
|
9051
|
+
this.#setValueFromRelative(0, true);
|
|
9052
|
+
handled = true;
|
|
9053
|
+
break;
|
|
9054
|
+
case `End`:
|
|
9055
|
+
this.#setValueFromRelative(1, true);
|
|
9056
|
+
handled = true;
|
|
9057
|
+
}
|
|
9058
|
+
if (handled) event.preventDefault();
|
|
9059
|
+
};
|
|
9060
|
+
}
|
|
9061
|
+
#dragging;
|
|
9062
|
+
#dragStartY;
|
|
9063
|
+
#valueAtDragStart;
|
|
9064
|
+
#changeDebounceTimer;
|
|
9065
|
+
#getRelativeValue() {
|
|
9066
|
+
return scale(this.value, this.min, this.max, 0, 1);
|
|
9067
|
+
}
|
|
9068
|
+
#quantise(value) {
|
|
9069
|
+
if (this.stops && this.stops > 1) {
|
|
9070
|
+
const step = (this.max - this.min) / this.stops;
|
|
9071
|
+
return Math.round((value - this.min) / step) * step + this.min;
|
|
9072
|
+
}
|
|
9073
|
+
return value;
|
|
9074
|
+
}
|
|
9075
|
+
#setValueFromRelative(relativeValue, isUserInteraction = false) {
|
|
9076
|
+
const newValue = scale(relativeValue, 0, 1, this.min, this.max);
|
|
9077
|
+
const clampedValue = this.#quantise(clampValue(newValue, this.min, this.max));
|
|
9078
|
+
if (clampedValue === this.value) return;
|
|
9079
|
+
const previousValue = this.value;
|
|
9080
|
+
this.value = clampedValue;
|
|
9081
|
+
if (this.hasAttribute(`data-tooltip-live`)) {
|
|
9082
|
+
const percentage = Math.round(this.#getRelativeValue() * 100);
|
|
9083
|
+
this.setAttribute(`data-tooltip`, `${percentage}%`);
|
|
9084
|
+
}
|
|
9085
|
+
if (isUserInteraction) {
|
|
9086
|
+
this.dispatchEvent(new CustomEvent(`input`, {
|
|
9087
|
+
detail: {
|
|
9088
|
+
value: this.value,
|
|
9089
|
+
valueRelative: this.#getRelativeValue()
|
|
9090
|
+
},
|
|
9091
|
+
bubbles: true,
|
|
9092
|
+
composed: true
|
|
9093
|
+
}));
|
|
9094
|
+
this.#scheduleChangeEvent(previousValue);
|
|
9095
|
+
} else this.#fireChangeEvent(previousValue);
|
|
9096
|
+
}
|
|
9097
|
+
#scheduleChangeEvent(previousValue) {
|
|
9098
|
+
if (this.#changeDebounceTimer !== void 0) clearTimeout(this.#changeDebounceTimer);
|
|
9099
|
+
this.#changeDebounceTimer = window.setTimeout(() => {
|
|
9100
|
+
this.#fireChangeEvent(previousValue);
|
|
9101
|
+
this.#changeDebounceTimer = void 0;
|
|
9102
|
+
}, 150);
|
|
9103
|
+
}
|
|
9104
|
+
#fireChangeEvent(previousValue) {
|
|
9105
|
+
this.dispatchEvent(new CustomEvent(`change`, {
|
|
9106
|
+
detail: {
|
|
9107
|
+
value: this.value,
|
|
9108
|
+
valueRelative: this.#getRelativeValue(),
|
|
9109
|
+
previousValue
|
|
9110
|
+
},
|
|
9111
|
+
bubbles: true,
|
|
9112
|
+
composed: true
|
|
9113
|
+
}));
|
|
9114
|
+
}
|
|
9115
|
+
#onPointerDown;
|
|
9116
|
+
#onPointerMove;
|
|
9117
|
+
#onPointerUp;
|
|
9118
|
+
#onKeyDown;
|
|
9119
|
+
/**
|
|
9120
|
+
* Apply a relative-delta nudge to the current value, clamped to [min, max] and
|
|
9121
|
+
* quantised. Shared between keyboard arrow keys and the wheel handler.
|
|
9122
|
+
*/
|
|
9123
|
+
#stepByRelativeDelta(relativeDelta, isUserInteraction) {
|
|
9124
|
+
this.#setValueFromRelative(clampValue(this.#getRelativeValue() + relativeDelta, 0, 1), isUserInteraction);
|
|
9125
|
+
}
|
|
9126
|
+
_applyWheelDelta(direction, event) {
|
|
9127
|
+
const range = this.max - this.min;
|
|
9128
|
+
const effectiveStep = resolveAxisStep(range, this.stops, this.step, event.shiftKey);
|
|
9129
|
+
this.#stepByRelativeDelta(direction * effectiveStep / range, true);
|
|
9130
|
+
}
|
|
9131
|
+
#renderCircle() {
|
|
9132
|
+
const relativeValue = this.#getRelativeValue();
|
|
9133
|
+
const outerRadius = 45;
|
|
9134
|
+
const innerRadius = outerRadius * relativeValue;
|
|
9135
|
+
const outerCx = 50;
|
|
9136
|
+
const outerCy = 50;
|
|
9137
|
+
let cx = outerCx;
|
|
9138
|
+
if (this.fillMode === `left`) cx = 5 + outerRadius * relativeValue;
|
|
9139
|
+
else if (this.fillMode === `right`) cx = 95 - outerRadius * relativeValue;
|
|
9140
|
+
return svg`
|
|
9141
|
+
<circle class="fill" cx="${cx}" cy="${outerCy}" r="${innerRadius}" />
|
|
9142
|
+
<circle class="outline" cx="${outerCx}" cy="${outerCy}" r="${outerRadius}" fill="none" />
|
|
9143
|
+
`;
|
|
9144
|
+
}
|
|
9145
|
+
#renderRectangle() {
|
|
9146
|
+
const relativeValue = this.#getRelativeValue();
|
|
9147
|
+
const outerSize = 90;
|
|
9148
|
+
const outerOffset = 5;
|
|
9149
|
+
if (this.fillMode === `left` || this.fillMode === `right`) {
|
|
9150
|
+
const innerWidth = outerSize * relativeValue;
|
|
9151
|
+
const x = this.fillMode === `left` ? outerOffset : 95 - innerWidth;
|
|
9152
|
+
return svg`
|
|
9153
|
+
<rect class="fill" x="${x}" y="${outerOffset}" width="${innerWidth}" height="${outerSize}" />
|
|
9154
|
+
<rect class="outline" x="${outerOffset}" y="${outerOffset}" width="${outerSize}" height="${outerSize}" fill="none" />
|
|
9155
|
+
`;
|
|
9156
|
+
}
|
|
9157
|
+
const innerSize = outerSize * relativeValue;
|
|
9158
|
+
const innerOffset = (100 - innerSize) / 2;
|
|
9159
|
+
return svg`
|
|
9160
|
+
<rect class="fill" x="${innerOffset}" y="${innerOffset}" width="${innerSize}" height="${innerSize}" />
|
|
9161
|
+
<rect class="outline" x="${outerOffset}" y="${outerOffset}" width="${outerSize}" height="${outerSize}" fill="none" />
|
|
9162
|
+
`;
|
|
9163
|
+
}
|
|
9164
|
+
render() {
|
|
9165
|
+
const preserveAspectRatio = this.display === `rectangle` ? `none` : `xMidYMid meet`;
|
|
9166
|
+
return html`
|
|
9167
|
+
<svg
|
|
9168
|
+
viewBox="0 0 100 100"
|
|
9169
|
+
preserveAspectRatio="${preserveAspectRatio}"
|
|
9170
|
+
tabindex="${this.disabled ? -1 : 0}"
|
|
9171
|
+
@pointerdown="${this.#onPointerDown}"
|
|
9172
|
+
@keydown="${this.#onKeyDown}"
|
|
9173
|
+
style="cursor: ${this.#dragging ? `ns-resize` : `grab`}"
|
|
9174
|
+
>
|
|
9175
|
+
${this.display === `rectangle` ? this.#renderRectangle() : this.#renderCircle()}
|
|
9176
|
+
</svg>
|
|
9177
|
+
`;
|
|
9178
|
+
}
|
|
9179
|
+
updated(changed) {
|
|
9180
|
+
super.updated(changed);
|
|
9181
|
+
this.style.setProperty(`--shapefill-value-relative`, this.#getRelativeValue().toString());
|
|
9182
|
+
}
|
|
9183
|
+
disconnectedCallback() {
|
|
9184
|
+
super.disconnectedCallback();
|
|
9185
|
+
if (this.#changeDebounceTimer !== void 0) clearTimeout(this.#changeDebounceTimer);
|
|
9186
|
+
this.#onPointerUp();
|
|
9187
|
+
}
|
|
9188
|
+
static {
|
|
9189
|
+
this.styles = [
|
|
9190
|
+
themeFallbacks,
|
|
9191
|
+
prominenceStyles,
|
|
9192
|
+
css`
|
|
9193
|
+
:host {
|
|
9194
|
+
display: inline-block;
|
|
9195
|
+
width: 2em;
|
|
9196
|
+
height: 2em;
|
|
9197
|
+
touch-action: none;
|
|
9198
|
+
user-select: none;
|
|
9199
|
+
|
|
9200
|
+
/* Dynamic value - set by JS */
|
|
9201
|
+
--shapefill-value-relative: 0;
|
|
9202
|
+
|
|
9203
|
+
/* Public styling variables — consumer customisable */
|
|
9204
|
+
--shapefill-value-outline-color: var(--surface-4);
|
|
9205
|
+
--shapefill-value-outline-width: 2;
|
|
9206
|
+
--shapefill-value-fill-color: var(--accent);
|
|
9207
|
+
}
|
|
9208
|
+
|
|
9209
|
+
:host([disabled]) {
|
|
9210
|
+
cursor: not-allowed;
|
|
9211
|
+
}
|
|
9212
|
+
|
|
9213
|
+
svg {
|
|
9214
|
+
width: 100%;
|
|
9215
|
+
height: 100%;
|
|
9216
|
+
outline: none;
|
|
9217
|
+
display: block;
|
|
9218
|
+
}
|
|
9219
|
+
|
|
9220
|
+
svg:active {
|
|
9221
|
+
cursor: grabbing;
|
|
9222
|
+
}
|
|
9223
|
+
|
|
9224
|
+
svg:focus-visible {
|
|
9225
|
+
outline: var(--shapefill-value-focus-outline, 2px solid var(--accent));
|
|
9226
|
+
outline-offset: var(--shapefill-value-focus-outline-offset, 2px);
|
|
9227
|
+
}
|
|
9228
|
+
|
|
9229
|
+
.outline {
|
|
9230
|
+
stroke: var(--shapefill-value-outline-color, var(--surface-4));
|
|
9231
|
+
stroke-width: var(--shapefill-value-outline-width, 2);
|
|
9232
|
+
vector-effect: non-scaling-stroke;
|
|
9233
|
+
}
|
|
9234
|
+
|
|
9235
|
+
.fill {
|
|
9236
|
+
fill: var(--shapefill-value-fill-color, var(--accent));
|
|
9237
|
+
transition: var(--shapefill-value-fill-transition, none);
|
|
9238
|
+
}
|
|
9239
|
+
`
|
|
9240
|
+
];
|
|
9241
|
+
}
|
|
9242
|
+
};
|
|
9243
|
+
__decorate([property({ type: String })], ShapefillValueElement.prototype, "display", void 0);
|
|
9244
|
+
__decorate([property({
|
|
9245
|
+
type: String,
|
|
9246
|
+
attribute: `fill-mode`
|
|
9247
|
+
})], ShapefillValueElement.prototype, "fillMode", void 0);
|
|
9248
|
+
__decorate([property({ type: Number })], ShapefillValueElement.prototype, "value", void 0);
|
|
9249
|
+
__decorate([property({ type: Number })], ShapefillValueElement.prototype, "min", void 0);
|
|
9250
|
+
__decorate([property({ type: Number })], ShapefillValueElement.prototype, "max", void 0);
|
|
9251
|
+
__decorate([property({ type: Number })], ShapefillValueElement.prototype, "step", void 0);
|
|
9252
|
+
__decorate([property({ type: Number })], ShapefillValueElement.prototype, "stops", void 0);
|
|
9253
|
+
__decorate([property({
|
|
9254
|
+
type: Boolean,
|
|
9255
|
+
reflect: true
|
|
9256
|
+
})], ShapefillValueElement.prototype, "disabled", void 0);
|
|
9257
|
+
ShapefillValueElement = __decorate([safeCustomElement(`ixfx-shapefill-value`)], ShapefillValueElement);
|
|
9258
|
+
//#endregion
|
|
8918
9259
|
//#region src/sliding-number/sliding-number.ts
|
|
8919
9260
|
const REEL_DIGITS = Array.from({ length: 30 }, (_, index) => index % 10);
|
|
8920
9261
|
const SECTION_RANK = {
|
|
@@ -12578,6 +12919,6 @@ function init() {
|
|
|
12578
12919
|
console.log(`Init`);
|
|
12579
12920
|
}
|
|
12580
12921
|
//#endregion
|
|
12581
|
-
export { AcTextElement, AcTokenElement, BottomDrawerElement, ButtonElement, Checkbox, ColourPicker, ColourPickerPopup, CrumbNavigationElement, CrumbPathController, CrumbPathElement, DataController, DataDisplayComponent, DataGridElement, DataTableElement, DetailListElement, DockHostElement, DockPanelElement, EditableLabel, EditableNumber, FormElement, FormGroupElement, FormPartElement, GridListElement, GroupedItemListerElement, ICON_CARET_RIGHT, ICON_CHECK, ICON_CHEVRON_DOWN, ICON_CLOSE, IcicleTreeListElement, IncrSearchTreeController as IncrSearchMillerController, IncrSearchTreeController, IxfxHexEditorElement, IxfxIconElement, IxfxTimelineElement, KeyedElementIndex, LIST_ITEM_MOTION_MS, LIST_SEARCH_COMMAND_IDS, LIST_SEARCH_MODES, LabelledRadialInput, LabelledRangeInput, LabelledSliderInput, LedElement, ListDragSelectController, ListNativeDragController, ListSearchController, ListSelectionController, menu_exports as Menu, MillerBaseElement, MillerListElement, MillerTreeController, MulticolListElement, NarrowedTextElement, NotificationManager, NotificationPillElement, PanTextElement, PanelElement, PanelGroupElement, PlotDataSeries, PlotHistogram, PlotMultiAxis, PlotSingleAxis, PlotXyAxis, PolarPad, RadialInputElement, RadioGroup, RangeElement, RangeInput, RangeMultiElement, RatingElement, SelectHorizElement, SliderInputElement, SlidingNumberElement, SnackbarElement, SnapContainer, SplitButton, SplitLayoutElement, SplitPanelElement, SwipeElement, TabController, TabListElement, TabListItemElement, TabPanelElement, TabPanelsElement, TextShimmerElement, TickledController, TimelineController, TimelineTrackTabElement, TitlebarElement, ToolbarElement, ToolbarGroupElement, TooltipElement, TransitoryLabelElement, TreeBaseElement, TreeController, TreeDataModel, TreeDropController, TreeKeyboardNavController, TreeListElement, TreemapListElement, TwoSplitLayoutElement, VerticalListElement, XyPad, addPanelToStack, animateListItemIn, animateListItemOut, applyAgeModification, applyHighlights, applySnapshot, applyTreeDrop, attachTimelineInteractions, bottomDrawerCommandId, buildHighlightTargets, buildModel, captionForEntry, clearHighlights, collectContainerNames, collectDataResult, collectPanelIds, collectStackPaths, computeColour, computeIcicleLayout, computeLeafGeoms, computeTreemapLayout, createAcCompletionProvider, createDataListSearchAdapter, createDefaultListDragPreview, createElementIncrSearch, createElementListSearchAdapter, createEmptyLayout, createEmptyStack, createFuzzySearch, createIncrSearch, createPillRenderer, createSplit, createStack, createTreeListAdapter, createTreeListSearchAdapter, createVerticalListAdapter, distribute, dropTargetFor, extractStack, findIcicleNode, findIciclePath, findNode, findParentOf, findStackOf, findStackPathByName, findTreemapNode, findTreemapPath, getActiveDragPanelId, getIcon, getIconEntry, getIconFont, getLeafNeighbours, hasIcon, iconBus, init, insertBeside, isDragging, isMultiMode, isSplit, isStack, keyForElement, listItemFadeKeyframes, listSearchStyles, monitorIndeterminate, moveLeafNodeToEdge, moveLeafStep, normalise, normaliseValue, normalize, panelGapIndex, parseColourScaleAttr, parseLayout, pointerOverAnyHost, prefersReducedMotion, pruneDraggedDescendants, readBaseColour, registerFontIcon, registerIcon, registerListSearchCommands, removePanelFromStack, resolveCssVars, resolveGrid, resolveLeafPath, resolveTracks, serializeLayout, setActive, setIconFont, startListItemOutAnimation, svgToDataUri, swapLeaves, tickledItemStyles, tickledStyles, timelineStyles, toSnapshot, toolbarGapIndex, walk, wrapRoot };
|
|
12922
|
+
export { AcTextElement, AcTokenElement, BottomDrawerElement, ButtonElement, Checkbox, ColourPicker, ColourPickerPopup, CrumbNavigationElement, CrumbPathController, CrumbPathElement, DataController, DataDisplayComponent, DataGridElement, DataTableElement, DetailListElement, DockHostElement, DockPanelElement, EditableLabel, EditableNumber, FormElement, FormGroupElement, FormPartElement, GridListElement, GroupedItemListerElement, ICON_CARET_RIGHT, ICON_CHECK, ICON_CHEVRON_DOWN, ICON_CLOSE, IcicleTreeListElement, IncrSearchTreeController as IncrSearchMillerController, IncrSearchTreeController, IxfxHexEditorElement, IxfxIconElement, IxfxTimelineElement, KeyedElementIndex, LIST_ITEM_MOTION_MS, LIST_SEARCH_COMMAND_IDS, LIST_SEARCH_MODES, LabelledRadialInput, LabelledRangeInput, LabelledSliderInput, LedElement, ListDragSelectController, ListNativeDragController, ListSearchController, ListSelectionController, menu_exports as Menu, MillerBaseElement, MillerListElement, MillerTreeController, MulticolListElement, NarrowedTextElement, NotificationManager, NotificationPillElement, PanTextElement, PanelElement, PanelGroupElement, PlotDataSeries, PlotHistogram, PlotMultiAxis, PlotSingleAxis, PlotXyAxis, PolarPad, RadialInputElement, RadioGroup, RangeElement, RangeInput, RangeMultiElement, RatingElement, SelectHorizElement, ShapefillValueElement, SliderInputElement, SlidingNumberElement, SnackbarElement, SnapContainer, SplitButton, SplitLayoutElement, SplitPanelElement, SwipeElement, TabController, TabListElement, TabListItemElement, TabPanelElement, TabPanelsElement, TextShimmerElement, TickledController, TimelineController, TimelineTrackTabElement, TitlebarElement, ToolbarElement, ToolbarGroupElement, TooltipElement, TransitoryLabelElement, TreeBaseElement, TreeController, TreeDataModel, TreeDropController, TreeKeyboardNavController, TreeListElement, TreemapListElement, TwoSplitLayoutElement, VerticalListElement, XyPad, addPanelToStack, animateListItemIn, animateListItemOut, applyAgeModification, applyHighlights, applySnapshot, applyTreeDrop, attachTimelineInteractions, bottomDrawerCommandId, buildHighlightTargets, buildModel, captionForEntry, clearHighlights, collectContainerNames, collectDataResult, collectPanelIds, collectStackPaths, computeColour, computeIcicleLayout, computeLeafGeoms, computeTreemapLayout, createAcCompletionProvider, createDataListSearchAdapter, createDefaultListDragPreview, createElementIncrSearch, createElementListSearchAdapter, createEmptyLayout, createEmptyStack, createFuzzySearch, createIncrSearch, createPillRenderer, createSplit, createStack, createTreeListAdapter, createTreeListSearchAdapter, createVerticalListAdapter, distribute, dropTargetFor, extractStack, findIcicleNode, findIciclePath, findNode, findParentOf, findStackOf, findStackPathByName, findTreemapNode, findTreemapPath, getActiveDragPanelId, getIcon, getIconEntry, getIconFont, getLeafNeighbours, hasIcon, iconBus, init, insertBeside, isDragging, isMultiMode, isSplit, isStack, keyForElement, listItemFadeKeyframes, listSearchStyles, monitorIndeterminate, moveLeafNodeToEdge, moveLeafStep, normalise, normaliseValue, normalize, panelGapIndex, parseColourScaleAttr, parseLayout, pointerOverAnyHost, prefersReducedMotion, pruneDraggedDescendants, readBaseColour, registerFontIcon, registerIcon, registerListSearchCommands, removePanelFromStack, resolveCssVars, resolveGrid, resolveLeafPath, resolveTracks, serializeLayout, setActive, setIconFont, startListItemOutAnimation, svgToDataUri, swapLeaves, tickledItemStyles, tickledStyles, timelineStyles, toSnapshot, toolbarGapIndex, walk, wrapRoot };
|
|
12582
12923
|
|
|
12583
12924
|
//# sourceMappingURL=index.js.map
|