@lavalogic/scoria 0.21.4 → 0.22.0
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/dist/Components/DimensionInput.svelte +13 -9
- package/dist/Components/HorizontalTabGroup.svelte +15 -5
- package/dist/Components/Table/ColumnDefinitions/ExampleItemColumnDefRepository.svelte.js +5 -2
- package/dist/Components/Table/Types/Columns/Definitions/ValidationFn.d.ts +1 -1
- package/dist/Components/Table/Types/Context/TableContext.svelte.d.ts +1 -1
- package/dist/Components/Table/Types/Context/TableContext.svelte.js +14 -20
- package/package.json +1 -1
|
@@ -34,11 +34,10 @@
|
|
|
34
34
|
oninput,
|
|
35
35
|
|
|
36
36
|
inputRef = $bindable(),
|
|
37
|
-
'data-type': dataType
|
|
37
|
+
'data-type': dataType,
|
|
38
38
|
}: DimensionInputProps = $props();
|
|
39
39
|
|
|
40
|
-
//
|
|
41
|
-
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
40
|
+
// NOTE unable to edit signature
|
|
42
41
|
function xNumberValidator(_node: HTMLInputElement, _newValue: number | null | undefined) {
|
|
43
42
|
// function xNumberValidator() {
|
|
44
43
|
return {
|
|
@@ -49,7 +48,7 @@
|
|
|
49
48
|
x = (
|
|
50
49
|
isNaN(newValue) ? 0 : underMinimum ? min : overMaximum ? max : newValue
|
|
51
50
|
) as Centimetres;
|
|
52
|
-
}
|
|
51
|
+
},
|
|
53
52
|
};
|
|
54
53
|
}
|
|
55
54
|
function yNumberValidator(_node: HTMLInputElement, _newValue: number | null | undefined) {
|
|
@@ -61,7 +60,7 @@
|
|
|
61
60
|
y = (
|
|
62
61
|
isNaN(newValue) ? 0 : underMinimum ? min : overMaximum ? max : newValue
|
|
63
62
|
) as Centimetres;
|
|
64
|
-
}
|
|
63
|
+
},
|
|
65
64
|
};
|
|
66
65
|
}
|
|
67
66
|
|
|
@@ -75,10 +74,9 @@
|
|
|
75
74
|
z = (
|
|
76
75
|
isNaN(newValue) ? 0 : underMinimum ? min : overMaximum ? max : newValue
|
|
77
76
|
) as Centimetres;
|
|
78
|
-
}
|
|
77
|
+
},
|
|
79
78
|
};
|
|
80
79
|
}
|
|
81
|
-
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
82
80
|
// ^
|
|
83
81
|
|
|
84
82
|
let isInvalid = $derived(
|
|
@@ -108,7 +106,10 @@
|
|
|
108
106
|
<span class="border">Dimensions - <span class="optional">optional</span></span>
|
|
109
107
|
{/if}
|
|
110
108
|
<!-- style="--background-colour: {leftIcon?.backgroundColour ?? rightIcon?.backgroundColour};" -->
|
|
111
|
-
<div
|
|
109
|
+
<div
|
|
110
|
+
class="icon-container"
|
|
111
|
+
class:for-modal={variant == InputVariant.Modal}
|
|
112
|
+
>
|
|
112
113
|
<input
|
|
113
114
|
{id}
|
|
114
115
|
class:for-default={variant === InputVariant.Default}
|
|
@@ -173,7 +174,10 @@
|
|
|
173
174
|
step={decimal ? 0.01 : 1}
|
|
174
175
|
/>
|
|
175
176
|
<div class="spacer"></div>
|
|
176
|
-
<span
|
|
177
|
+
<span
|
|
178
|
+
class="right-label inset"
|
|
179
|
+
class:for-modal={variant == InputVariant.Modal}>cm</span
|
|
180
|
+
>
|
|
177
181
|
</div>
|
|
178
182
|
</div>
|
|
179
183
|
|
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
<svelte:options runes />
|
|
2
2
|
|
|
3
|
-
<script
|
|
3
|
+
<script
|
|
4
|
+
lang="ts"
|
|
5
|
+
generics="CommonDenominator"
|
|
6
|
+
>
|
|
4
7
|
import HorizontalTabGroupButton from './HorizontalTabGroupButton.svelte';
|
|
5
8
|
import type { HorizontalTabGroupProps } from './HorizontalTabGroupProps.js';
|
|
6
9
|
let {
|
|
7
|
-
name: _name,
|
|
10
|
+
// name: _name, //FIXME why is this not implemented?
|
|
8
11
|
tabComponent,
|
|
9
12
|
options,
|
|
10
13
|
selected,
|
|
11
14
|
noRadius = false,
|
|
12
|
-
grow = false
|
|
15
|
+
grow = false,
|
|
13
16
|
}: HorizontalTabGroupProps<CommonDenominator> = $props();
|
|
14
17
|
</script>
|
|
15
18
|
|
|
16
|
-
<div
|
|
19
|
+
<div
|
|
20
|
+
class="wrapper"
|
|
21
|
+
class:no-radius={noRadius}
|
|
22
|
+
class:grow
|
|
23
|
+
>
|
|
17
24
|
<div class="tabs">
|
|
18
25
|
{#if tabComponent}
|
|
19
26
|
{#each options as option (option)}
|
|
@@ -21,7 +28,10 @@
|
|
|
21
28
|
{/each}
|
|
22
29
|
{:else}
|
|
23
30
|
{#each options as option (option)}
|
|
24
|
-
<HorizontalTabGroupButton
|
|
31
|
+
<HorizontalTabGroupButton
|
|
32
|
+
{option}
|
|
33
|
+
selected={selected === option}
|
|
34
|
+
/>
|
|
25
35
|
{/each}
|
|
26
36
|
{/if}
|
|
27
37
|
</div>
|
|
@@ -22,7 +22,7 @@ export function generateExampleItemColumnDefs(modal) {
|
|
|
22
22
|
if (!$effect.tracking()) {
|
|
23
23
|
throw new Error(`NOT in tracking context`);
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
const compareValidity = (isSelected) => {
|
|
26
26
|
if (isSelected) {
|
|
27
27
|
if (!item.name.trim()) {
|
|
28
28
|
return { value: Validity.Invalid, reason: 'Missing name' };
|
|
@@ -36,7 +36,10 @@ export function generateExampleItemColumnDefs(modal) {
|
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
38
|
return { value: Validity.Neutral, reason: 'row not selected' };
|
|
39
|
-
}
|
|
39
|
+
};
|
|
40
|
+
return isSelected instanceof Promise
|
|
41
|
+
? isSelected.then(compareValidity)
|
|
42
|
+
: compareValidity(isSelected);
|
|
40
43
|
};
|
|
41
44
|
const expandDef = $state(new ExpandDef({
|
|
42
45
|
accessorFn: (it) => [it],
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Validity } from '../../../../../Types/Internal/Validity.js';
|
|
2
2
|
import type { ValidityWrapper } from '../../../../../Types/Internal/ValidityWrapper.js';
|
|
3
|
-
export type ValidationFn<T> = (item: T, isSelected: Promise<boolean>) => Validity | Promise<Validity | ValidityWrapper> | ValidityWrapper;
|
|
3
|
+
export type ValidationFn<T> = (item: T, isSelected: boolean | Promise<boolean>) => Validity | Promise<Validity | ValidityWrapper> | ValidityWrapper;
|
|
@@ -161,7 +161,7 @@ export declare class TableContext<T extends object, RowIdType extends Primitive>
|
|
|
161
161
|
private _flushScheduled;
|
|
162
162
|
private _flushPendingSelectionChanges;
|
|
163
163
|
private _schedulePendingFlush;
|
|
164
|
-
readonly selectionContains: (item: T) => Promise<boolean>;
|
|
164
|
+
readonly selectionContains: (item: T) => boolean | Promise<boolean>;
|
|
165
165
|
readonly addInvalidValue: (item: T) => void | Promise<void>;
|
|
166
166
|
readonly removeInvalidValue: (item: T) => void | Promise<void>;
|
|
167
167
|
readonly setOpenModalCoordinates: (coordinates: CellCoordinatesWithoutColumn | null) => void;
|
|
@@ -238,23 +238,17 @@ export class TableContext {
|
|
|
238
238
|
return;
|
|
239
239
|
}
|
|
240
240
|
Promise.resolve()
|
|
241
|
-
.then(() => asyncMap(sd, (item, index) => {
|
|
242
|
-
const
|
|
243
|
-
const
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
throw new Error(`Sorted Data not found in Original Row Indices: original index ${originalIndex}, index ${index}`);
|
|
251
|
-
}
|
|
252
|
-
return this.createRow(item, index, unsortedIndex);
|
|
253
|
-
};
|
|
254
|
-
if (rawKey instanceof Promise) {
|
|
255
|
-
return rawKey.then(finish);
|
|
241
|
+
.then(() => asyncMap(sd, async (item, index) => {
|
|
242
|
+
const key = await this._cachedKey(item);
|
|
243
|
+
const originalIndex = ori.get(key);
|
|
244
|
+
const unsortedIndex = originalIndex ?? index;
|
|
245
|
+
if (current !== latest_sortedRowModel) {
|
|
246
|
+
throw new Error(`stale data`);
|
|
247
|
+
}
|
|
248
|
+
if (originalIndex == null) {
|
|
249
|
+
throw new Error(`Sorted Data not found in Original Row Indices: original index ${originalIndex}, index ${index}`);
|
|
256
250
|
}
|
|
257
|
-
return
|
|
251
|
+
return this.createRow(item, index, unsortedIndex);
|
|
258
252
|
}))
|
|
259
253
|
.then((rows) => {
|
|
260
254
|
if (current !== latest_sortedRowModel) {
|
|
@@ -1060,7 +1054,7 @@ export class TableContext {
|
|
|
1060
1054
|
})
|
|
1061
1055
|
.catch(devCatch);
|
|
1062
1056
|
}
|
|
1063
|
-
selectionContains =
|
|
1057
|
+
selectionContains = (item) => {
|
|
1064
1058
|
void item;
|
|
1065
1059
|
void this.isSelectable;
|
|
1066
1060
|
void this.selectedItems.size;
|
|
@@ -1071,9 +1065,9 @@ export class TableContext {
|
|
|
1071
1065
|
return true;
|
|
1072
1066
|
}
|
|
1073
1067
|
const rawIdentity = this._cachedKey(item);
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1068
|
+
return rawIdentity instanceof Promise
|
|
1069
|
+
? rawIdentity.then((identity) => this.selectedItems.has(identity))
|
|
1070
|
+
: this.selectedItems.has(rawIdentity);
|
|
1077
1071
|
};
|
|
1078
1072
|
addInvalidValue = (item) => {
|
|
1079
1073
|
const raw = this._cachedKey(item);
|