@lavalogic/scoria 0.40.1 → 0.40.2
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/README.md +58 -58
- package/dist/Components/AccordionGroup.svelte +46 -46
- package/dist/Components/AccordionGroupButton.svelte +76 -76
- package/dist/Components/Action.svelte +136 -136
- package/dist/Components/AlertModal.svelte +195 -195
- package/dist/Components/AppointmentCalendar/AppointmentCalendar.svelte +729 -729
- package/dist/Components/Base/BaseModal.svelte +125 -125
- package/dist/Components/Base/ContextWrapper.svelte +72 -72
- package/dist/Components/Base/Pagination.svelte +198 -198
- package/dist/Components/Base/Snippets.svelte +36 -36
- package/dist/Components/BigRadioSet.svelte +38 -38
- package/dist/Components/Bubble.svelte +101 -101
- package/dist/Components/Button.svelte +209 -209
- package/dist/Components/Checkbox.svelte +86 -86
- package/dist/Components/CollapsibleCard.svelte +78 -78
- package/dist/Components/Contexts/ContextMenu.svelte +164 -164
- package/dist/Components/Contexts/ContextMenuDivider.svelte +15 -15
- package/dist/Components/Contexts/ContextMenuOption.svelte +60 -60
- package/dist/Components/Contexts/Toast.svelte +86 -86
- package/dist/Components/Contexts/ToastContainer.svelte +65 -65
- package/dist/Components/Contexts/Tooltip.svelte +37 -37
- package/dist/Components/DataMatrixIcon.svelte +112 -112
- package/dist/Components/DateInput.svelte +148 -148
- package/dist/Components/DatePicker.svelte +300 -300
- package/dist/Components/DesktopModal.svelte +90 -90
- package/dist/Components/Dial.svelte +204 -204
- package/dist/Components/DimensionInput.svelte +170 -170
- package/dist/Components/DragMenu/DragMenuHolder.svelte +119 -119
- package/dist/Components/DragMenu/DraggableCard.svelte +77 -77
- package/dist/Components/FileCard.svelte +24 -24
- package/dist/Components/FileUpload.svelte +236 -236
- package/dist/Components/GridInput.svelte +196 -196
- package/dist/Components/GridInputSet.svelte +29 -29
- package/dist/Components/HorizontalTabGroup.svelte +82 -82
- package/dist/Components/HorizontalTabGroupButton.svelte +44 -44
- package/dist/Components/Icon.svelte +128 -128
- package/dist/Components/Icons.js +357 -357
- package/dist/Components/InfoAlert.svelte +35 -35
- package/dist/Components/LoadingAnimation.svelte +29 -29
- package/dist/Components/LoadingModal.svelte +45 -45
- package/dist/Components/LoadingOverlay.svelte +25 -25
- package/dist/Components/Modal.svelte +258 -258
- package/dist/Components/MultiSelect.svelte +220 -220
- package/dist/Components/Nav/Nav.svelte +110 -110
- package/dist/Components/Nav/NavServiceMenuList.svelte +43 -43
- package/dist/Components/Nav/NavTab.svelte +62 -62
- package/dist/Components/Nav/ServiceMenuItem.svelte +112 -112
- package/dist/Components/Nav/ServicesNav.svelte +80 -80
- package/dist/Components/NumberInput.svelte +157 -157
- package/dist/Components/PageHeading.svelte +25 -25
- package/dist/Components/PasswordInput.svelte +88 -88
- package/dist/Components/Portal.svelte +36 -36
- package/dist/Components/ProgressBubble.svelte +107 -107
- package/dist/Components/QuerySelect.svelte +366 -366
- package/dist/Components/SingleSelect.svelte +250 -250
- package/dist/Components/StepButton.svelte +70 -70
- package/dist/Components/StepForm.svelte +140 -140
- package/dist/Components/Switch.svelte +69 -69
- package/dist/Components/Table/ARCHITECTURE.md +298 -298
- package/dist/Components/Table/Body/QuickSearchCell.svelte +679 -679
- package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte +51 -51
- package/dist/Components/Table/Body/Rows/ColumnList.svelte +59 -59
- package/dist/Components/Table/Body/Rows/ColumnListRow.svelte +454 -454
- package/dist/Components/Table/Body/Rows/Columns/AccessorComponent.svelte +79 -79
- package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +185 -185
- package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte +124 -124
- package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte +131 -120
- package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +234 -234
- package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte +105 -105
- package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte +87 -87
- package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +126 -126
- package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte +159 -159
- package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte +246 -246
- package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte +216 -216
- package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte +252 -252
- package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte +179 -179
- package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +221 -221
- package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte +197 -197
- package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +190 -190
- package/dist/Components/Table/Body/Rows/TableRow.svelte +290 -290
- package/dist/Components/Table/Body/TableBody.svelte +155 -155
- package/dist/Components/Table/ColumnFactory.svelte.js +1 -0
- package/dist/Components/Table/Headers/HighlightAllHeader.svelte +41 -41
- package/dist/Components/Table/Headers/SelectAllHeader.svelte +30 -30
- package/dist/Components/Table/Headers/TableHead.svelte +415 -415
- package/dist/Components/Table/Misc/ColumnPanel.svelte +39 -39
- package/dist/Components/Table/Misc/ColumnPanelModal.svelte +39 -39
- package/dist/Components/Table/Misc/FilterInput.svelte +641 -641
- package/dist/Components/Table/Misc/FilterPanel.svelte +190 -190
- package/dist/Components/Table/Misc/FilterPanelModal.svelte +31 -31
- package/dist/Components/Table/Misc/ShareViewModal.svelte +291 -291
- package/dist/Components/Table/Misc/SidePanel.svelte +35 -35
- package/dist/Components/Table/Misc/TableConfigurationModal.svelte +644 -644
- package/dist/Components/Table/Misc/TableFooter.svelte +340 -340
- package/dist/Components/Table/Misc/TableHorizontalBar.svelte +140 -140
- package/dist/Components/Table/Misc/TableSidebar.svelte +200 -200
- package/dist/Components/Table/Misc/TableViewDropdown.svelte +105 -105
- package/dist/Components/Table/Misc/ToolboxPanel.svelte +100 -100
- package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +107 -107
- package/dist/Components/Table/Misc/UpdateViewOptionsModal.svelte +192 -192
- package/dist/Components/Table/NestedTable.svelte +130 -130
- package/dist/Components/Table/Table.svelte +692 -692
- package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.d.ts +5 -0
- package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.js +3 -0
- package/dist/Components/Table/Types/Public/ColumnOptions.d.ts +10 -0
- package/dist/Components/Test/TestContextConsumer.svelte +13 -13
- package/dist/Components/TextArea.svelte +130 -130
- package/dist/Components/TextInput.svelte +176 -176
- package/dist/Components/ThreeStateRadio.svelte +131 -131
- package/dist/Components/Touch/BoolCard.svelte +45 -45
- package/dist/Components/Touch/DateModal.svelte +209 -209
- package/dist/Components/Touch/EditCard.svelte +59 -59
- package/dist/Components/Touch/InfoCard.svelte +31 -31
- package/dist/Components/Touch/InfoTextCard.svelte +28 -28
- package/dist/Components/Touch/ModalExplanation.svelte +17 -17
- package/dist/Components/Touch/NumberKeyboard.svelte +225 -225
- package/dist/Components/Touch/NumberModal.svelte +79 -79
- package/dist/Components/Touch/PlusMinusCard.svelte +46 -46
- package/dist/Components/Touch/SelectModal.svelte +127 -127
- package/dist/Components/Touch/SummaryCard.svelte +93 -93
- package/dist/Components/Touch/TextAreaModal.svelte +95 -95
- package/dist/Components/Touch/TextModal.svelte +106 -106
- package/dist/Components/Touch/TouchCard.svelte +33 -33
- package/dist/Components/Touch/TouchModal.svelte +274 -274
- package/dist/Components/Touch/UtilityButton.svelte +109 -109
- package/dist/Components/VerticalTabGroup.svelte +79 -79
- package/dist/Components/VerticalTabGroupButton.svelte +58 -58
- package/dist/Helpers/Datamatrix.d.ts +19 -19
- package/dist/Helpers/Datamatrix.js +291 -291
- package/dist/Types/Examples/ExampleModal.svelte +35 -35
- package/dist/scss/_basics.scss +12 -12
- package/dist/scss/_colours.scss +134 -134
- package/dist/scss/_mixins.scss +3392 -3392
- package/dist/scss/_motion.scss +57 -57
- package/dist/scss/_sizing.scss +85 -85
- package/dist/scss/_transitions.scss +8 -8
- package/package.json +1 -1
|
@@ -1,109 +1,109 @@
|
|
|
1
|
-
<svelte:options runes />
|
|
2
|
-
|
|
3
|
-
<script lang="ts">
|
|
4
|
-
import { useAsyncFlag } from '../Helpers/AsyncFlag.svelte.js';
|
|
5
|
-
import { getCanvasContext } from '../Helpers/Helpers.svelte.js';
|
|
6
|
-
import type { BubbleColour } from './BubbleColour.js';
|
|
7
|
-
import type { ProgressBubbleProps } from './ProgressBubbleProps.js';
|
|
8
|
-
|
|
9
|
-
const { value, colours }: ProgressBubbleProps = $props();
|
|
10
|
-
|
|
11
|
-
const current = $derived(value[0]);
|
|
12
|
-
const total = $derived(value[1]);
|
|
13
|
-
const progress = $derived(`${current}/${total}`);
|
|
14
|
-
|
|
15
|
-
// Clamp the percentage so callers passing `current > total` do not
|
|
16
|
-
// blow past the bar's edge.
|
|
17
|
-
const percent = $derived(Math.min((current / total) * 100, 100));
|
|
18
|
-
|
|
19
|
-
let progressBarRef: HTMLDivElement | undefined = $state();
|
|
20
|
-
|
|
21
|
-
// Observed inline-size of the filled bar. A `ResizeObserver` is used
|
|
22
|
-
// instead of `getBoundingClientRect()` inside an `$effect`: the latter
|
|
23
|
-
// forces a synchronous layout flush on every `progress` change, which
|
|
24
|
-
// is expensive inside a table with many `ProgressBubble` cells. The
|
|
25
|
-
// observer notifies us only when the bar's actual rendered size
|
|
26
|
-
// changes, and does so via a microtask scheduled by the browser so we
|
|
27
|
-
// never force layout ourselves.
|
|
28
|
-
let barWidth = $state(0);
|
|
29
|
-
$effect(() => {
|
|
30
|
-
if (!progressBarRef) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
const ro = new ResizeObserver((entries) => {
|
|
34
|
-
const entry = entries[0];
|
|
35
|
-
barWidth = entry.borderBoxSize[0]?.inlineSize ?? entry.contentRect.width;
|
|
36
|
-
});
|
|
37
|
-
ro.observe(progressBarRef);
|
|
38
|
-
return () => {
|
|
39
|
-
ro.disconnect();
|
|
40
|
-
};
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
// Whether the `current/total` label fits inside the filled bar.
|
|
44
|
-
// Measured via a memoised offscreen canvas so we do not trigger
|
|
45
|
-
// layout.
|
|
46
|
-
const fitsInProgressBar = $derived.by(() => {
|
|
47
|
-
const textWidth = getCanvasContext()?.measureText(`__${progress}__`).width ?? 0;
|
|
48
|
-
return barWidth > textWidth;
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
// `colours` may be a bare `BubbleColour`, a Promise resolving to one,
|
|
52
|
-
// or undefined. Routed through `useAsyncFlag` which (a) cancels stale
|
|
53
|
-
// Promises via a sequence ticket so the freshest value always wins,
|
|
54
|
-
// (b) reports errors through `ToastContext` when one is mounted, and
|
|
55
|
-
// (c) falls back to `undefined` while no resolution is available.
|
|
56
|
-
const awaitedColoursFlag = useAsyncFlag<BubbleColour | undefined>(() => colours, undefined);
|
|
57
|
-
const awaitedColours = $derived(awaitedColoursFlag.value);
|
|
58
|
-
|
|
59
|
-
// Precompute the wrapper and bar style strings. Each colour comes
|
|
60
|
-
// from the trusted `Colour` registry (see `Bubble.svelte` security
|
|
61
|
-
// note) so interpolation into `style="..."` is safe.
|
|
62
|
-
const wrapperStyle = $derived(
|
|
63
|
-
awaitedColours
|
|
64
|
-
? `--bar-background-colour: ${awaitedColours.backgroundColour}; --text-colour: ${awaitedColours.colour};`
|
|
65
|
-
: ''
|
|
66
|
-
);
|
|
67
|
-
const barStyle = $derived(`width: ${percent}%;`);
|
|
68
|
-
</script>
|
|
69
|
-
|
|
70
|
-
<div
|
|
71
|
-
class="progress-wrapper"
|
|
72
|
-
style={wrapperStyle}
|
|
73
|
-
>
|
|
74
|
-
<!--
|
|
75
|
-
Native `<progress>` is kept as a fallback for assistive tech that
|
|
76
|
-
ignores ARIA progressbar roles. Visually hidden rather than
|
|
77
|
-
`display: none` so the element stays in the accessibility tree.
|
|
78
|
-
-->
|
|
79
|
-
<progress
|
|
80
|
-
class="visually-hidden"
|
|
81
|
-
value={current}
|
|
82
|
-
max={total}>{progress}</progress
|
|
83
|
-
>
|
|
84
|
-
|
|
85
|
-
<div
|
|
86
|
-
class="progress-background"
|
|
87
|
-
role="progressbar"
|
|
88
|
-
aria-valuenow={current}
|
|
89
|
-
aria-valuemin={0}
|
|
90
|
-
aria-valuemax={total}
|
|
91
|
-
aria-valuetext={progress}
|
|
92
|
-
>
|
|
93
|
-
<div
|
|
94
|
-
class:fits={fitsInProgressBar}
|
|
95
|
-
class="progress-value"
|
|
96
|
-
bind:this={progressBarRef}
|
|
97
|
-
style={barStyle}
|
|
98
|
-
>
|
|
99
|
-
<span
|
|
100
|
-
class:fits={fitsInProgressBar}
|
|
101
|
-
class="progress-text">{progress}</span
|
|
102
|
-
>
|
|
103
|
-
</div>
|
|
104
|
-
</div>
|
|
105
|
-
</div>
|
|
106
|
-
|
|
1
|
+
<svelte:options runes />
|
|
2
|
+
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
import { useAsyncFlag } from '../Helpers/AsyncFlag.svelte.js';
|
|
5
|
+
import { getCanvasContext } from '../Helpers/Helpers.svelte.js';
|
|
6
|
+
import type { BubbleColour } from './BubbleColour.js';
|
|
7
|
+
import type { ProgressBubbleProps } from './ProgressBubbleProps.js';
|
|
8
|
+
|
|
9
|
+
const { value, colours }: ProgressBubbleProps = $props();
|
|
10
|
+
|
|
11
|
+
const current = $derived(value[0]);
|
|
12
|
+
const total = $derived(value[1]);
|
|
13
|
+
const progress = $derived(`${current}/${total}`);
|
|
14
|
+
|
|
15
|
+
// Clamp the percentage so callers passing `current > total` do not
|
|
16
|
+
// blow past the bar's edge.
|
|
17
|
+
const percent = $derived(Math.min((current / total) * 100, 100));
|
|
18
|
+
|
|
19
|
+
let progressBarRef: HTMLDivElement | undefined = $state();
|
|
20
|
+
|
|
21
|
+
// Observed inline-size of the filled bar. A `ResizeObserver` is used
|
|
22
|
+
// instead of `getBoundingClientRect()` inside an `$effect`: the latter
|
|
23
|
+
// forces a synchronous layout flush on every `progress` change, which
|
|
24
|
+
// is expensive inside a table with many `ProgressBubble` cells. The
|
|
25
|
+
// observer notifies us only when the bar's actual rendered size
|
|
26
|
+
// changes, and does so via a microtask scheduled by the browser so we
|
|
27
|
+
// never force layout ourselves.
|
|
28
|
+
let barWidth = $state(0);
|
|
29
|
+
$effect(() => {
|
|
30
|
+
if (!progressBarRef) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const ro = new ResizeObserver((entries) => {
|
|
34
|
+
const entry = entries[0];
|
|
35
|
+
barWidth = entry.borderBoxSize[0]?.inlineSize ?? entry.contentRect.width;
|
|
36
|
+
});
|
|
37
|
+
ro.observe(progressBarRef);
|
|
38
|
+
return () => {
|
|
39
|
+
ro.disconnect();
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
// Whether the `current/total` label fits inside the filled bar.
|
|
44
|
+
// Measured via a memoised offscreen canvas so we do not trigger
|
|
45
|
+
// layout.
|
|
46
|
+
const fitsInProgressBar = $derived.by(() => {
|
|
47
|
+
const textWidth = getCanvasContext()?.measureText(`__${progress}__`).width ?? 0;
|
|
48
|
+
return barWidth > textWidth;
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
// `colours` may be a bare `BubbleColour`, a Promise resolving to one,
|
|
52
|
+
// or undefined. Routed through `useAsyncFlag` which (a) cancels stale
|
|
53
|
+
// Promises via a sequence ticket so the freshest value always wins,
|
|
54
|
+
// (b) reports errors through `ToastContext` when one is mounted, and
|
|
55
|
+
// (c) falls back to `undefined` while no resolution is available.
|
|
56
|
+
const awaitedColoursFlag = useAsyncFlag<BubbleColour | undefined>(() => colours, undefined);
|
|
57
|
+
const awaitedColours = $derived(awaitedColoursFlag.value);
|
|
58
|
+
|
|
59
|
+
// Precompute the wrapper and bar style strings. Each colour comes
|
|
60
|
+
// from the trusted `Colour` registry (see `Bubble.svelte` security
|
|
61
|
+
// note) so interpolation into `style="..."` is safe.
|
|
62
|
+
const wrapperStyle = $derived(
|
|
63
|
+
awaitedColours
|
|
64
|
+
? `--bar-background-colour: ${awaitedColours.backgroundColour}; --text-colour: ${awaitedColours.colour};`
|
|
65
|
+
: ''
|
|
66
|
+
);
|
|
67
|
+
const barStyle = $derived(`width: ${percent}%;`);
|
|
68
|
+
</script>
|
|
69
|
+
|
|
70
|
+
<div
|
|
71
|
+
class="progress-wrapper"
|
|
72
|
+
style={wrapperStyle}
|
|
73
|
+
>
|
|
74
|
+
<!--
|
|
75
|
+
Native `<progress>` is kept as a fallback for assistive tech that
|
|
76
|
+
ignores ARIA progressbar roles. Visually hidden rather than
|
|
77
|
+
`display: none` so the element stays in the accessibility tree.
|
|
78
|
+
-->
|
|
79
|
+
<progress
|
|
80
|
+
class="visually-hidden"
|
|
81
|
+
value={current}
|
|
82
|
+
max={total}>{progress}</progress
|
|
83
|
+
>
|
|
84
|
+
|
|
85
|
+
<div
|
|
86
|
+
class="progress-background"
|
|
87
|
+
role="progressbar"
|
|
88
|
+
aria-valuenow={current}
|
|
89
|
+
aria-valuemin={0}
|
|
90
|
+
aria-valuemax={total}
|
|
91
|
+
aria-valuetext={progress}
|
|
92
|
+
>
|
|
93
|
+
<div
|
|
94
|
+
class:fits={fitsInProgressBar}
|
|
95
|
+
class="progress-value"
|
|
96
|
+
bind:this={progressBarRef}
|
|
97
|
+
style={barStyle}
|
|
98
|
+
>
|
|
99
|
+
<span
|
|
100
|
+
class:fits={fitsInProgressBar}
|
|
101
|
+
class="progress-text">{progress}</span
|
|
102
|
+
>
|
|
103
|
+
</div>
|
|
104
|
+
</div>
|
|
105
|
+
</div>
|
|
106
|
+
|
|
107
107
|
<style>.progress-wrapper {
|
|
108
108
|
width: 100%;
|
|
109
109
|
height: 100%;
|
|
@@ -172,4 +172,4 @@
|
|
|
172
172
|
}
|
|
173
173
|
.progress-text.fits {
|
|
174
174
|
color: var(--text-colour, #3a4952);
|
|
175
|
-
}</style>
|
|
175
|
+
}</style>
|