@lavalogic/scoria 0.9.4 → 0.10.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/dist/Components/Action.svelte +1 -1
- package/dist/Components/AlertModal.svelte +1 -1
- package/dist/Components/LoadingModal.svelte +1 -1
- package/dist/Components/Modal.svelte +1 -1
- package/dist/Components/MultiSelect.svelte +2 -2
- package/dist/Components/QuerySelect.svelte +2 -2
- package/dist/Components/SingleSelect.svelte +2 -2
- package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +18 -23
- package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte.d.ts +0 -1
- package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte +28 -30
- package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +1 -1
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.d.ts +1 -1
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.js +0 -3
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.d.ts +1 -0
- package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.d.ts +1 -3
- package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.js +2 -8
- package/dist/Components/Table/Types/Columns/DisplayType.d.ts +0 -1
- package/dist/Components/Table/Types/Columns/DisplayType.js +1 -1
- package/dist/Components/Touch/NumberModal.svelte +1 -1
- package/dist/Components/Touch/SelectModal.svelte +1 -1
- package/dist/Components/Touch/TextAreaModal.svelte +1 -1
- package/dist/Components/Touch/TextModal.svelte +1 -1
- package/dist/scss/_mixins.scss +3 -3
- package/package.json +1 -1
|
@@ -226,7 +226,7 @@ button.max-height {
|
|
|
226
226
|
button.max-width {
|
|
227
227
|
width: 100%;
|
|
228
228
|
}
|
|
229
|
-
button:focus, button:focus-visible, button:focus-within {
|
|
229
|
+
button:not(.with-outline):focus, button:not(.with-outline):focus-visible, button:not(.with-outline):focus-within {
|
|
230
230
|
outline: none !important;
|
|
231
231
|
}
|
|
232
232
|
button.auxiliary {
|
|
@@ -233,8 +233,8 @@
|
|
|
233
233
|
</div>
|
|
234
234
|
|
|
235
235
|
<style>.select-wrapper {
|
|
236
|
-
min-width: var(--input-min-width);
|
|
237
|
-
width:
|
|
236
|
+
min-width: var(--input-min-width, 12rem);
|
|
237
|
+
width: var(--input-width, 100%);
|
|
238
238
|
height: max(var(--input-height, 3rem));
|
|
239
239
|
display: flex;
|
|
240
240
|
gap: 2rem;
|
|
@@ -394,8 +394,8 @@
|
|
|
394
394
|
<!-- #region CSS
|
|
395
395
|
-->
|
|
396
396
|
<style>.select-wrapper {
|
|
397
|
-
min-width: var(--input-min-width);
|
|
398
|
-
width:
|
|
397
|
+
min-width: var(--input-min-width, 12rem);
|
|
398
|
+
width: var(--input-width, 100%);
|
|
399
399
|
height: max(var(--input-height, 3rem));
|
|
400
400
|
display: flex;
|
|
401
401
|
gap: 2rem;
|
|
@@ -302,8 +302,8 @@
|
|
|
302
302
|
</div>
|
|
303
303
|
|
|
304
304
|
<style>.select-wrapper {
|
|
305
|
-
min-width: var(--input-min-width);
|
|
306
|
-
width:
|
|
305
|
+
min-width: var(--input-min-width, 12rem);
|
|
306
|
+
width: var(--input-width, 100%);
|
|
307
307
|
height: max(var(--input-height, 3rem));
|
|
308
308
|
display: flex;
|
|
309
309
|
gap: 2rem;
|
|
@@ -10,16 +10,19 @@
|
|
|
10
10
|
|
|
11
11
|
export interface FocusableImmutableCellProps<T extends object> {
|
|
12
12
|
cell: TableCell<T>;
|
|
13
|
-
value?: unknown;
|
|
14
13
|
children?: Snippet;
|
|
15
14
|
}
|
|
16
15
|
</script>
|
|
17
16
|
|
|
18
17
|
<script lang="ts" generics="T extends object">
|
|
19
|
-
const { cell,
|
|
18
|
+
const { cell, children }: FocusableImmutableCellProps<T> = $props();
|
|
20
19
|
|
|
21
20
|
const value = $derived(cell.getValue());
|
|
22
21
|
|
|
22
|
+
const visibleValue = $derived(
|
|
23
|
+
cell.column.columnDef.getDisplayValue?.(cell.row.original, cell.row.originalIndex) ?? value
|
|
24
|
+
);
|
|
25
|
+
|
|
23
26
|
const tableContext = getContext<TableContext<T>>(TableContext.identifier);
|
|
24
27
|
const toastContext = getContext<ToastContext>(ToastContext.identifier);
|
|
25
28
|
|
|
@@ -68,27 +71,19 @@ class:bottom={focusDetails.bottomEdge} -->
|
|
|
68
71
|
}}
|
|
69
72
|
>
|
|
70
73
|
{#if hasValue}
|
|
71
|
-
{#
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
{
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
? options.find((it) => it.value === value)?.label
|
|
85
|
-
: value) ??
|
|
86
|
-
value ??
|
|
87
|
-
''}
|
|
88
|
-
{:catch e}
|
|
89
|
-
{e?.toString()}
|
|
90
|
-
{/await}
|
|
91
|
-
{/if}
|
|
74
|
+
{#await visibleValue}
|
|
75
|
+
loading…
|
|
76
|
+
{:then visibleValue}
|
|
77
|
+
{(visibleValue instanceof Date
|
|
78
|
+
? visibleValue.toLocaleDateString()
|
|
79
|
+
: options.length
|
|
80
|
+
? options.find((it) => it.value === visibleValue)?.label
|
|
81
|
+
: visibleValue) ??
|
|
82
|
+
visibleValue ??
|
|
83
|
+
''}
|
|
84
|
+
{:catch e}
|
|
85
|
+
{e?.toString()}
|
|
86
|
+
{/await}
|
|
92
87
|
{:else if children}
|
|
93
88
|
<div
|
|
94
89
|
class="slot-wrapper"
|
|
@@ -2,7 +2,6 @@ import { type Snippet } from 'svelte';
|
|
|
2
2
|
import type { TableCell } from '../../../Types/Columns/TableCell.js';
|
|
3
3
|
export interface FocusableImmutableCellProps<T extends object> {
|
|
4
4
|
cell: TableCell<T>;
|
|
5
|
-
value?: unknown;
|
|
6
5
|
children?: Snippet;
|
|
7
6
|
}
|
|
8
7
|
declare function $$render<T extends object>(): {
|
|
@@ -58,9 +58,7 @@
|
|
|
58
58
|
{#if cell.column.getIsVisible()}
|
|
59
59
|
{@const columnDef = cell.column.columnDef}
|
|
60
60
|
|
|
61
|
-
{#if
|
|
62
|
-
<ValidityCell {cell} />
|
|
63
|
-
{:else if columnDef instanceof RowSelectionDef}
|
|
61
|
+
{#if columnDef instanceof RowSelectionDef}
|
|
64
62
|
<TableRowSelectionCheckbox {cell} />
|
|
65
63
|
{:else if isActionsDef(cell)}
|
|
66
64
|
<ActionsCell {cell} />
|
|
@@ -68,6 +66,18 @@
|
|
|
68
66
|
<ExpandCell {cell} {expandedColumnDef} {onExpandChange} />
|
|
69
67
|
{:else if columnDef.columnType !== ColumnType.Display}
|
|
70
68
|
<AccessorComponent {cell} />
|
|
69
|
+
{:else if cell.column.columnDef instanceof AbstractDisplayDef}
|
|
70
|
+
{#if cell.column.columnDef.displayType === DisplayType.Bubbles}
|
|
71
|
+
<BubbleCell {cell} />
|
|
72
|
+
{:else if cell.column.columnDef.displayType === DisplayType.Validity}
|
|
73
|
+
<ValidityCell {cell} />
|
|
74
|
+
{:else if isProgressBarTableCell(cell)}
|
|
75
|
+
<ProgressCell {cell} />
|
|
76
|
+
{:else if cell.column.columnDef.displayType === DisplayType.Normal}
|
|
77
|
+
<FocusableImmutableCell {cell} />
|
|
78
|
+
{:else}
|
|
79
|
+
{@debug cell}
|
|
80
|
+
{/if}
|
|
71
81
|
{:else}
|
|
72
82
|
{@const valueOrComponentPromise =
|
|
73
83
|
cell.column.columnDef.accessorFn?.(cell.row.original, cell.row.originalIndex) ??
|
|
@@ -75,35 +85,23 @@
|
|
|
75
85
|
null}
|
|
76
86
|
|
|
77
87
|
{#await valueOrComponentPromise}
|
|
78
|
-
<FocusableImmutableCell
|
|
79
|
-
{:then
|
|
80
|
-
{
|
|
88
|
+
<FocusableImmutableCell {cell} />
|
|
89
|
+
{:then Value}
|
|
90
|
+
{#if Value == null || typeof Value === 'string' || typeof Value == 'number'}
|
|
91
|
+
<FocusableImmutableCell {cell} />
|
|
92
|
+
{:else if valueOrComponentIsConstructor(Value)}
|
|
93
|
+
<FocusableImmutableCell {cell}>
|
|
94
|
+
<Value {cell} />
|
|
95
|
+
</FocusableImmutableCell>
|
|
96
|
+
{:else if typeof Value === 'function'}
|
|
97
|
+
<FocusableImmutableCell {cell}>
|
|
98
|
+
{@render Value(cell)}
|
|
99
|
+
</FocusableImmutableCell>
|
|
100
|
+
{:else}
|
|
101
|
+
{@debug cell}
|
|
102
|
+
{/if}
|
|
81
103
|
{:catch e}
|
|
82
104
|
<FocusableImmutableCell value={e?.toString()} {cell} />
|
|
83
105
|
{/await}
|
|
84
106
|
{/if}
|
|
85
107
|
{/if}
|
|
86
|
-
|
|
87
|
-
{#snippet ValueFallback(Value: unknown)}
|
|
88
|
-
{#if cell.column.columnDef instanceof AbstractDisplayDef && Array.isArray(Value)}
|
|
89
|
-
{#if cell.column.columnDef.displayType === DisplayType.Bubbles}
|
|
90
|
-
<BubbleCell {cell} />
|
|
91
|
-
{:else if isProgressBarTableCell(cell)}
|
|
92
|
-
<ProgressCell {cell} />
|
|
93
|
-
{:else}
|
|
94
|
-
{@debug cell}
|
|
95
|
-
{/if}
|
|
96
|
-
{:else if Value == null || typeof Value === 'string' || typeof Value == 'number'}
|
|
97
|
-
<FocusableImmutableCell value={Value} {cell} />
|
|
98
|
-
{:else if valueOrComponentIsConstructor(Value)}
|
|
99
|
-
<FocusableImmutableCell {cell}>
|
|
100
|
-
<Value {cell} />
|
|
101
|
-
</FocusableImmutableCell>
|
|
102
|
-
{:else if typeof Value === 'function'}
|
|
103
|
-
<FocusableImmutableCell {cell}>
|
|
104
|
-
{@render Value(cell)}
|
|
105
|
-
</FocusableImmutableCell>
|
|
106
|
-
{:else}
|
|
107
|
-
{@debug cell}
|
|
108
|
-
{/if}
|
|
109
|
-
{/snippet}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
const selectValue = $derived(cell.getValue() as T | null | undefined);
|
|
33
33
|
|
|
34
34
|
const visibleValue = $derived(
|
|
35
|
-
cell.column.columnDef.getDisplayValue
|
|
35
|
+
cell.column.columnDef.getDisplayValue(cell.row.original, cell.row.originalIndex)
|
|
36
36
|
);
|
|
37
37
|
|
|
38
38
|
const optional = $derived((cell.column.columnDef as SelectDef<T>).optional ?? false);
|
|
@@ -12,7 +12,7 @@ export declare class QueryDef<T extends object> extends AccessorDef<T, SelectFil
|
|
|
12
12
|
readonly accessorType: "Query";
|
|
13
13
|
constructor(props: QueryDefProps<T>);
|
|
14
14
|
readonly filterFn: CustomFilterFn | FilterFn<T, SelectFilterValueType<T>> | undefined;
|
|
15
|
-
|
|
15
|
+
getDisplayValue: (item: T, index: number) => string | null | Promise<string | null>;
|
|
16
16
|
readonly query: (queryString: string, item: T, index: number) => Promise<Array<SelectOption<unknown>>>;
|
|
17
17
|
readonly clearable: boolean;
|
|
18
18
|
}
|
|
@@ -21,5 +21,6 @@ export declare class SelectDef<T extends object> extends AccessorDef<T, SelectFi
|
|
|
21
21
|
readonly optional: boolean;
|
|
22
22
|
readonly clearable: boolean;
|
|
23
23
|
readonly getSpecificOptions?: (item: T, index: number) => Array<SelectOption<unknown>> | Promise<Array<SelectOption<unknown>>>;
|
|
24
|
+
getDisplayValue: (item: T, index: number) => string | null | Promise<string | null>;
|
|
24
25
|
getOptions: () => Array<SelectOption<unknown>> | Promise<Array<SelectOption<unknown>>>;
|
|
25
26
|
}
|
|
@@ -55,9 +55,7 @@ export declare abstract class ColumnDef<T extends object, FilterFnType = undefin
|
|
|
55
55
|
private _filterValueType;
|
|
56
56
|
get filterValueType(): FilterValueType | undefined;
|
|
57
57
|
set filterValueType(v: FilterValueType | undefined);
|
|
58
|
-
|
|
59
|
-
get getDisplayValue(): ((item: T, index: number) => string | null | Promise<string | null>) | undefined;
|
|
60
|
-
set getDisplayValue(v: ((item: T, index: number) => string | null | Promise<string | null>) | undefined);
|
|
58
|
+
readonly getDisplayValue: ((item: T, index: number) => string | null | Promise<string | null>) | undefined;
|
|
61
59
|
toJSON(): object;
|
|
62
60
|
readonly isEditable: (item: T, index: number) => boolean | Promise<boolean>;
|
|
63
61
|
readonly resizable: boolean;
|
|
@@ -14,7 +14,7 @@ export class ColumnDef {
|
|
|
14
14
|
this.resizable = $derived(props.resizable ?? true);
|
|
15
15
|
this.header = $derived(props.header);
|
|
16
16
|
this._filterValueType = $derived(props.filterValueType);
|
|
17
|
-
this.
|
|
17
|
+
this.getDisplayValue = $derived(props.getDisplayValue);
|
|
18
18
|
this.debug = $derived(props.debug ?? false);
|
|
19
19
|
this.getOptions = $derived(props.getOptions);
|
|
20
20
|
}
|
|
@@ -75,13 +75,7 @@ export class ColumnDef {
|
|
|
75
75
|
set filterValueType(v) {
|
|
76
76
|
this._filterValueType = v;
|
|
77
77
|
}
|
|
78
|
-
|
|
79
|
-
get getDisplayValue() {
|
|
80
|
-
return this._getDisplayValue;
|
|
81
|
-
}
|
|
82
|
-
set getDisplayValue(v) {
|
|
83
|
-
this._getDisplayValue = v;
|
|
84
|
-
}
|
|
78
|
+
getDisplayValue;
|
|
85
79
|
toJSON() {
|
|
86
80
|
return { columnType: this.columnType, id: this.id, header: this.header };
|
|
87
81
|
}
|
package/dist/scss/_mixins.scss
CHANGED
|
@@ -405,7 +405,7 @@
|
|
|
405
405
|
overflow: auto;
|
|
406
406
|
|
|
407
407
|
&.noscroll {
|
|
408
|
-
overflow:
|
|
408
|
+
overflow: visible;
|
|
409
409
|
}
|
|
410
410
|
}
|
|
411
411
|
.footer {
|
|
@@ -2356,8 +2356,8 @@
|
|
|
2356
2356
|
// --input-height: #{sizing.$input-height};
|
|
2357
2357
|
// --sv-min-height: 44px;
|
|
2358
2358
|
|
|
2359
|
-
min-width: var(--input-min-width);
|
|
2360
|
-
width:
|
|
2359
|
+
min-width: var(--input-min-width, #{sizing.$input-width});
|
|
2360
|
+
width: var(--input-width, 100%);
|
|
2361
2361
|
// height: min(var(--max-height), max(var(--input-height, 2rem), #{sizing.$input-height}));
|
|
2362
2362
|
height: max(var(--input-height, #{sizing.$input-height}));
|
|
2363
2363
|
|