@lavalogic/scoria 0.40.13 → 0.40.15
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 +35 -46
- package/dist/Components/AccordionGroupButton.svelte +68 -76
- package/dist/Components/Action.svelte +103 -135
- package/dist/Components/AlertModal.svelte +171 -190
- package/dist/Components/AppointmentCalendar/AppointmentCalendar.svelte +614 -697
- package/dist/Components/Base/BaseModal.svelte +90 -116
- package/dist/Components/Base/ContextWrapper.svelte +67 -72
- package/dist/Components/Base/Pagination.svelte +173 -196
- package/dist/Components/Base/Snippets.svelte +34 -36
- package/dist/Components/BigRadioSet.svelte +36 -38
- package/dist/Components/Bubble.svelte +78 -101
- package/dist/Components/Button.svelte +175 -208
- package/dist/Components/Checkbox.svelte +75 -86
- package/dist/Components/CollapsibleCard.svelte +72 -87
- package/dist/Components/CollapsibleMenuGroup.svelte +53 -57
- package/dist/Components/ConditionBuilder/ConditionBuilder.svelte +39 -64
- package/dist/Components/Contexts/ContextMenu.svelte +141 -156
- package/dist/Components/Contexts/ContextMenuDivider.svelte +15 -15
- package/dist/Components/Contexts/ContextMenuOption.svelte +53 -60
- package/dist/Components/Contexts/Toast.svelte +81 -86
- package/dist/Components/Contexts/ToastContainer.svelte +58 -62
- package/dist/Components/Contexts/Tooltip.svelte +36 -37
- package/dist/Components/DataMatrixIcon.svelte +95 -108
- package/dist/Components/DateInput.svelte +118 -146
- package/dist/Components/DatePicker.svelte +255 -294
- package/dist/Components/DesktopModal.svelte +70 -90
- package/dist/Components/Dial.svelte +167 -197
- package/dist/Components/DimensionInput.svelte +124 -169
- package/dist/Components/DragMenu/DragMenuHolder.svelte +98 -114
- package/dist/Components/DragMenu/DraggableCard.svelte +64 -76
- package/dist/Components/FileCard.svelte +21 -24
- package/dist/Components/FileUpload.svelte +190 -225
- package/dist/Components/GridInput.svelte +159 -196
- package/dist/Components/GridInputSet.svelte +24 -29
- package/dist/Components/HorizontalTabGroup.svelte +73 -89
- package/dist/Components/HorizontalTabGroupButton.svelte +40 -44
- package/dist/Components/Icon.svelte +99 -128
- package/dist/Components/Icons.js +357 -357
- package/dist/Components/InfoAlert.svelte +35 -38
- package/dist/Components/LoadingAnimation.svelte +691 -755
- package/dist/Components/LoadingModal.svelte +36 -44
- package/dist/Components/LoadingOverlay.svelte +22 -26
- package/dist/Components/Modal.svelte +204 -254
- package/dist/Components/MultiSelect.svelte +186 -216
- package/dist/Components/Nav/Nav.svelte +94 -110
- package/dist/Components/Nav/NavServiceMenuList.svelte +57 -61
- package/dist/Components/Nav/NavTab.svelte +58 -62
- package/dist/Components/Nav/ServiceMenuItem.svelte +103 -111
- package/dist/Components/Nav/ServicesNav.svelte +72 -79
- package/dist/Components/NumberInput.svelte +121 -155
- package/dist/Components/OptionCards.svelte +62 -73
- package/dist/Components/PageHeading.svelte +23 -25
- package/dist/Components/PasswordInput.svelte +69 -88
- package/dist/Components/PopoverButton.svelte +151 -0
- package/dist/Components/PopoverButton.svelte.d.ts +9 -0
- package/dist/Components/PopoverButtonProps.d.ts +21 -0
- package/dist/Components/PopoverButtonProps.js +1 -0
- package/dist/Components/Portal.svelte +29 -35
- package/dist/Components/ProgressBubble.svelte +91 -106
- package/dist/Components/QuerySelect.svelte +260 -346
- package/dist/Components/SidebarPanel.svelte +34 -36
- package/dist/Components/SingleSelect.svelte +196 -244
- package/dist/Components/StepButton.svelte +65 -70
- package/dist/Components/StepForm.svelte +115 -135
- package/dist/Components/Switch.svelte +57 -69
- package/dist/Components/Table/ARCHITECTURE.md +298 -298
- package/dist/Components/Table/Body/QuickSearchCell.svelte +578 -655
- package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte +42 -51
- package/dist/Components/Table/Body/Rows/ColumnList.svelte +42 -58
- package/dist/Components/Table/Body/Rows/ColumnListRow.svelte +403 -442
- package/dist/Components/Table/Body/Rows/Columns/AccessorComponent.svelte +51 -78
- package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +165 -184
- package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte +110 -123
- package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte +134 -160
- package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +190 -231
- package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte +82 -104
- package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte +52 -87
- package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +122 -150
- package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte +132 -159
- package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte +190 -236
- package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte +173 -211
- package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte +204 -244
- package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte +140 -177
- package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +188 -217
- package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte +173 -193
- package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +166 -187
- package/dist/Components/Table/Body/Rows/TableRow.svelte +245 -288
- package/dist/Components/Table/Body/TableBody.svelte +141 -154
- package/dist/Components/Table/Headers/HighlightAllHeader.svelte +35 -41
- package/dist/Components/Table/Headers/SelectAllHeader.svelte +24 -30
- package/dist/Components/Table/Headers/TableHead.svelte +348 -402
- package/dist/Components/Table/Misc/ColumnPanel.svelte +37 -39
- package/dist/Components/Table/Misc/ColumnPanelModal.svelte +35 -39
- package/dist/Components/Table/Misc/FilterInput.svelte +556 -619
- package/dist/Components/Table/Misc/FilterPanel.svelte +170 -183
- package/dist/Components/Table/Misc/FilterPanelModal.svelte +25 -31
- package/dist/Components/Table/Misc/ShareViewModal.svelte +252 -281
- package/dist/Components/Table/Misc/SidePanel.svelte +32 -35
- package/dist/Components/Table/Misc/TableConfigurationModal.svelte +574 -629
- package/dist/Components/Table/Misc/TableFooter.svelte +326 -332
- package/dist/Components/Table/Misc/TableHorizontalBar.svelte +134 -140
- package/dist/Components/Table/Misc/TableSidebar.svelte +183 -198
- package/dist/Components/Table/Misc/TableViewDropdown.svelte +83 -103
- package/dist/Components/Table/Misc/ToolboxPanel.svelte +83 -100
- package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +88 -107
- package/dist/Components/Table/Misc/UpdateViewOptionsModal.svelte +163 -190
- package/dist/Components/Table/NestedTable.svelte +102 -128
- package/dist/Components/Table/Table.svelte +531 -663
- package/dist/Components/Test/TestContextConsumer.svelte +11 -13
- package/dist/Components/TextArea.svelte +95 -130
- package/dist/Components/TextInput.svelte +125 -176
- package/dist/Components/ThreeStateRadio.svelte +111 -130
- package/dist/Components/Touch/BoolCard.svelte +33 -45
- package/dist/Components/Touch/DateModal.svelte +164 -204
- package/dist/Components/Touch/EditCard.svelte +48 -59
- package/dist/Components/Touch/InfoCard.svelte +28 -31
- package/dist/Components/Touch/InfoTextCard.svelte +26 -28
- package/dist/Components/Touch/ModalExplanation.svelte +15 -17
- package/dist/Components/Touch/NumberKeyboard.svelte +181 -218
- package/dist/Components/Touch/NumberModal.svelte +59 -79
- package/dist/Components/Touch/PlusMinusCard.svelte +43 -46
- package/dist/Components/Touch/SelectModal.svelte +111 -126
- package/dist/Components/Touch/SummaryCard.svelte +80 -93
- package/dist/Components/Touch/TextAreaModal.svelte +72 -94
- package/dist/Components/Touch/TextModal.svelte +77 -105
- package/dist/Components/Touch/TouchCard.svelte +31 -33
- package/dist/Components/Touch/TouchModal.svelte +214 -270
- package/dist/Components/Touch/UtilityButton.svelte +88 -109
- package/dist/Components/VerticalTabGroup.svelte +60 -78
- package/dist/Components/VerticalTabGroupButton.svelte +54 -58
- package/dist/Helpers/Datamatrix.d.ts +19 -19
- package/dist/Helpers/Datamatrix.js +291 -291
- package/dist/Types/Examples/ExampleModal.svelte +31 -35
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- 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,87 +1,52 @@
|
|
|
1
|
-
<svelte:options runes />
|
|
2
|
-
|
|
3
|
-
<script
|
|
4
|
-
lang="ts"
|
|
5
|
-
module
|
|
6
|
-
>
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
: typeof disabledResult === 'boolean'
|
|
54
|
-
? Promise.resolve(!disabledResult)
|
|
55
|
-
: disabledResult.then((it) => !it);
|
|
56
|
-
|
|
57
|
-
const labelPromise: Promise<string> = Promise.resolve(
|
|
58
|
-
action.getLabel(cell.row.original, cell.row.originalIndex)
|
|
59
|
-
);
|
|
60
|
-
|
|
61
|
-
return Promise.all([labelPromise, isEnabledPromise]);
|
|
62
|
-
});
|
|
63
|
-
</script>
|
|
64
|
-
|
|
65
|
-
{#await buttonStatePromise}
|
|
66
|
-
<!-- intentionally empty: the actions popover frame already conveys the loading state -->
|
|
67
|
-
{:then [label, isEnabled]}
|
|
68
|
-
<Button
|
|
69
|
-
fullWidth
|
|
70
|
-
size={Size.Medium}
|
|
71
|
-
colourSet={cell.column.columnDef.getColourSet?.(
|
|
72
|
-
cell.row.original,
|
|
73
|
-
cell.row.originalIndex,
|
|
74
|
-
action
|
|
75
|
-
) ?? ColourSet.Secondary}
|
|
76
|
-
disabled={!isEnabled}
|
|
77
|
-
onclick={() => {
|
|
78
|
-
action.callback(cell.row.original, cell.row.originalIndex);
|
|
79
|
-
}}>{label}</Button
|
|
80
|
-
>
|
|
81
|
-
{:catch e}
|
|
82
|
-
{#if dev}
|
|
83
|
-
Error Loading Button: {getErrorMessage(e)}
|
|
84
|
-
{:else}
|
|
85
|
-
Error Loading Button
|
|
86
|
-
{/if}
|
|
87
|
-
{/await}
|
|
1
|
+
<svelte:options runes />
|
|
2
|
+
|
|
3
|
+
<script
|
|
4
|
+
lang="ts"
|
|
5
|
+
module
|
|
6
|
+
>import Button from "../../../../Button.svelte";
|
|
7
|
+
import { getErrorMessage } from "../../../../../Helpers/Helpers.svelte.js";
|
|
8
|
+
import { ColourSet } from "../../../../../scss/colours.js";
|
|
9
|
+
import { Size } from "../../../../../Types/Internal/Size.js";
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<script
|
|
13
|
+
lang="ts"
|
|
14
|
+
generics="T extends object, FilterValueType"
|
|
15
|
+
>import { dev } from "$app/environment";
|
|
16
|
+
const { action, cell } = $props();
|
|
17
|
+
/**
|
|
18
|
+
* Resolved [label, isEnabled] tuple. Both sources are awaited in parallel
|
|
19
|
+
* via Promise.all so an async `getLabel` does not serialise behind an
|
|
20
|
+
* async `isDisabled`.
|
|
21
|
+
*/
|
|
22
|
+
const buttonStatePromise = $derived.by(() => {
|
|
23
|
+
const disabledResult = action.isDisabled?.(cell.row.original, cell.row.originalIndex);
|
|
24
|
+
const isEnabledPromise = disabledResult == null ? Promise.resolve(cell.column.columnDef.isEnabled?.(cell.row.original, cell.row.originalIndex, action) ?? true) : typeof disabledResult === "boolean" ? Promise.resolve(!disabledResult) : disabledResult.then((it) => !it);
|
|
25
|
+
const labelPromise = Promise.resolve(action.getLabel(cell.row.original, cell.row.originalIndex));
|
|
26
|
+
return Promise.all([labelPromise, isEnabledPromise]);
|
|
27
|
+
});
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
{#await buttonStatePromise}
|
|
31
|
+
<!-- intentionally empty: the actions popover frame already conveys the loading state -->
|
|
32
|
+
{:then [label, isEnabled]}
|
|
33
|
+
<Button
|
|
34
|
+
fullWidth
|
|
35
|
+
size={Size.Medium}
|
|
36
|
+
colourSet={cell.column.columnDef.getColourSet?.(
|
|
37
|
+
cell.row.original,
|
|
38
|
+
cell.row.originalIndex,
|
|
39
|
+
action
|
|
40
|
+
) ?? ColourSet.Secondary}
|
|
41
|
+
disabled={!isEnabled}
|
|
42
|
+
onclick={() => {
|
|
43
|
+
action.callback(cell.row.original, cell.row.originalIndex);
|
|
44
|
+
}}>{label}</Button
|
|
45
|
+
>
|
|
46
|
+
{:catch e}
|
|
47
|
+
{#if dev}
|
|
48
|
+
Error Loading Button: {getErrorMessage(e)}
|
|
49
|
+
{:else}
|
|
50
|
+
Error Loading Button
|
|
51
|
+
{/if}
|
|
52
|
+
{/await}
|
|
@@ -1,157 +1,129 @@
|
|
|
1
|
-
<svelte:options runes />
|
|
2
|
-
|
|
3
|
-
<script
|
|
4
|
-
lang="ts"
|
|
5
|
-
generics="T extends object, RowIdType extends Primitive"
|
|
6
|
-
>
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const editableAsync = $derived(
|
|
30
|
-
cell.column.columnDef.isEditable(cell.row.original, cell.row.originalIndex)
|
|
31
|
-
);
|
|
32
|
-
let editable = $state(false);
|
|
33
|
-
let editableCounter = 0;
|
|
34
|
-
$effect(() => {
|
|
35
|
-
void editableAsync;
|
|
36
|
-
const local = (editableCounter = editableCounter + 1);
|
|
37
|
-
(async () => {
|
|
38
|
-
try {
|
|
39
|
-
const resolved = await editableAsync;
|
|
40
|
-
if (editableCounter === local) {
|
|
41
|
-
editable = resolved;
|
|
42
|
-
}
|
|
43
|
-
} catch {
|
|
44
|
-
if (editableCounter === local) {
|
|
45
|
-
editable = false;
|
|
46
|
-
}
|
|
1
|
+
<svelte:options runes />
|
|
2
|
+
|
|
3
|
+
<script
|
|
4
|
+
lang="ts"
|
|
5
|
+
generics="T extends object, RowIdType extends Primitive"
|
|
6
|
+
>import { TableContext } from "../../../Types/Context/TableContext.svelte.js";
|
|
7
|
+
import "../../../Types/Context/TableInitOptions.js";
|
|
8
|
+
import { devCatch, isValidityTuple } from "../../../../../Helpers/Helpers.svelte.js";
|
|
9
|
+
import { Validity } from "../../../../../Types/Internal/Validity.js";
|
|
10
|
+
import { getContext, tick } from "svelte";
|
|
11
|
+
const { cell, onchange: parentOnchange } = $props();
|
|
12
|
+
const value = $derived(!!cell.getValue());
|
|
13
|
+
const tableContext = getContext(TableContext.identifier);
|
|
14
|
+
const focusDetails = $derived(tableContext._focus.getFocusDetailsFor(cell));
|
|
15
|
+
// Resolve the column's (possibly async) `isEditable` predicate for this
|
|
16
|
+
// row. A non-editable checkbox renders disabled (read-only) rather than
|
|
17
|
+
// toggling — mirrors how the inline-edit cells gate on `isEditable`.
|
|
18
|
+
const editableAsync = $derived(cell.column.columnDef.isEditable(cell.row.original, cell.row.originalIndex));
|
|
19
|
+
let editable = $state(false);
|
|
20
|
+
let editableCounter = 0;
|
|
21
|
+
$effect(() => {
|
|
22
|
+
void editableAsync;
|
|
23
|
+
const local = editableCounter = editableCounter + 1;
|
|
24
|
+
(async () => {
|
|
25
|
+
try {
|
|
26
|
+
const resolved = await editableAsync;
|
|
27
|
+
if (editableCounter === local) {
|
|
28
|
+
editable = resolved;
|
|
47
29
|
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
let inputRef: HTMLInputElement | undefined = $state();
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Commits the new value through `TableContext.onEditCell` and forwards the
|
|
55
|
-
* native event to the optional parent handler. The `tick` reconcile fixes a
|
|
56
|
-
* race where the table edit was rejected by validation but the input
|
|
57
|
-
* already showed the new checked state.
|
|
58
|
-
*/
|
|
59
|
-
const onchange: ChangeEventHandler<HTMLInputElement> = (e) => {
|
|
60
|
-
if (!editable) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
tableContext
|
|
64
|
-
.onEditCell(
|
|
65
|
-
cell.row.original,
|
|
66
|
-
focusDetails.coordinates,
|
|
67
|
-
(e.target as HTMLInputElement).checked
|
|
68
|
-
)
|
|
69
|
-
.catch(devCatch);
|
|
70
|
-
parentOnchange?.(e);
|
|
71
|
-
|
|
72
|
-
tick()
|
|
73
|
-
.then(() => {
|
|
74
|
-
if (inputRef && value != inputRef.checked) {
|
|
75
|
-
inputRef.checked = value;
|
|
76
|
-
}
|
|
77
|
-
})
|
|
78
|
-
.catch(devCatch);
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
let validity: Validity = $state(Validity.Valid);
|
|
82
|
-
$effect(() => {
|
|
83
|
-
const validityPromise = focusDetails.validity;
|
|
84
|
-
|
|
85
|
-
validityPromise
|
|
86
|
-
.then((v) => {
|
|
87
|
-
if (!v) {
|
|
88
|
-
validity = Validity.Neutral;
|
|
89
|
-
} else if (isValidityTuple(v)) {
|
|
90
|
-
validity = v.value;
|
|
91
|
-
} else {
|
|
92
|
-
validity = v;
|
|
93
|
-
}
|
|
94
|
-
})
|
|
95
|
-
.catch(devCatch);
|
|
96
|
-
});
|
|
97
|
-
</script>
|
|
98
|
-
|
|
99
|
-
<!-- svelte-ignore a11y_mouse_events_have_key_events -->
|
|
100
|
-
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
101
|
-
<div
|
|
102
|
-
class="checkbox-cell"
|
|
103
|
-
onmousedown={(e) => {
|
|
104
|
-
// start focus only on left click
|
|
105
|
-
if (e.button === 0) {
|
|
106
|
-
if (e.shiftKey) {
|
|
107
|
-
e.preventDefault();
|
|
108
|
-
tableContext.setFocusEnd(focusDetails.coordinates);
|
|
109
|
-
} else {
|
|
110
|
-
tableContext.startFocus(focusDetails.coordinates);
|
|
30
|
+
} catch {
|
|
31
|
+
if (editableCounter === local) {
|
|
32
|
+
editable = false;
|
|
111
33
|
}
|
|
112
34
|
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
35
|
+
})().catch(devCatch);
|
|
36
|
+
});
|
|
37
|
+
let inputRef = $state();
|
|
38
|
+
/**
|
|
39
|
+
* Commits the new value through `TableContext.onEditCell` and forwards the
|
|
40
|
+
* native event to the optional parent handler. The `tick` reconcile fixes a
|
|
41
|
+
* race where the table edit was rejected by validation but the input
|
|
42
|
+
* already showed the new checked state.
|
|
43
|
+
*/
|
|
44
|
+
const onchange = (e) => {
|
|
45
|
+
if (!editable) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
tableContext.onEditCell(cell.row.original, focusDetails.coordinates, e.target.checked).catch(devCatch);
|
|
49
|
+
parentOnchange?.(e);
|
|
50
|
+
tick().then(() => {
|
|
51
|
+
if (inputRef && value != inputRef.checked) {
|
|
52
|
+
inputRef.checked = value;
|
|
123
53
|
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
54
|
+
}).catch(devCatch);
|
|
55
|
+
};
|
|
56
|
+
let validity = $state(Validity.Valid);
|
|
57
|
+
$effect(() => {
|
|
58
|
+
const validityPromise = focusDetails.validity;
|
|
59
|
+
validityPromise.then((v) => {
|
|
60
|
+
if (!v) {
|
|
61
|
+
validity = Validity.Neutral;
|
|
62
|
+
} else if (isValidityTuple(v)) {
|
|
63
|
+
validity = v.value;
|
|
64
|
+
} else {
|
|
65
|
+
validity = v;
|
|
128
66
|
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
class
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
67
|
+
}).catch(devCatch);
|
|
68
|
+
});
|
|
69
|
+
</script>
|
|
70
|
+
|
|
71
|
+
<!-- svelte-ignore a11y_mouse_events_have_key_events -->
|
|
72
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
73
|
+
<div
|
|
74
|
+
class="checkbox-cell"
|
|
75
|
+
onmousedown={(e) => {
|
|
76
|
+
// start focus only on left click
|
|
77
|
+
if (e.button === 0) {
|
|
78
|
+
if (e.shiftKey) {
|
|
79
|
+
e.preventDefault();
|
|
80
|
+
tableContext.setFocusEnd(focusDetails.coordinates);
|
|
81
|
+
} else {
|
|
82
|
+
tableContext.startFocus(focusDetails.coordinates);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}}
|
|
86
|
+
onkeyup={(e: KeyboardEvent) => {
|
|
87
|
+
if (e.key === 'Enter' && editable) {
|
|
88
|
+
e.stopPropagation();
|
|
89
|
+
tableContext.onEditCell(cell.row.original, focusDetails.coordinates, !value).catch(devCatch);
|
|
90
|
+
}
|
|
91
|
+
}}
|
|
92
|
+
onkeydown={(e: KeyboardEvent) => {
|
|
93
|
+
if (e.key == 'Enter' || e.key == 'F2') {
|
|
94
|
+
e.stopPropagation();
|
|
95
|
+
}
|
|
96
|
+
}}
|
|
97
|
+
onmouseover={() => {
|
|
98
|
+
if (tableContext.isMousingDown) {
|
|
99
|
+
tableContext.setFocusEnd(focusDetails.coordinates);
|
|
100
|
+
}
|
|
101
|
+
}}
|
|
102
|
+
onmouseup={() => {
|
|
103
|
+
tableContext.endFocus(focusDetails.coordinates);
|
|
104
|
+
}}
|
|
105
|
+
class:info={validity == Validity.Info}
|
|
106
|
+
class:success={validity == Validity.Valid}
|
|
107
|
+
class:warning={validity == Validity.Warning}
|
|
108
|
+
class:error={validity == Validity.Invalid}
|
|
109
|
+
>
|
|
110
|
+
|
|
111
|
+
<label
|
|
112
|
+
class:multifocus={focusDetails.isMultiFocused}
|
|
113
|
+
class:multifocus-start={focusDetails.isMultiFocusStart}
|
|
114
|
+
style={focusDetails.outline}
|
|
115
|
+
>
|
|
116
|
+
<input
|
|
117
|
+
bind:this={inputRef}
|
|
118
|
+
id={`${tableContext.tableName}-cell-${cell.row.visibleIndex}-${cell.column.id}`}
|
|
119
|
+
{onchange}
|
|
120
|
+
type="checkbox"
|
|
121
|
+
checked={value}
|
|
122
|
+
disabled={!editable}
|
|
123
|
+
/>
|
|
124
|
+
</label>
|
|
125
|
+
</div>
|
|
126
|
+
|
|
155
127
|
<style>.focusable,
|
|
156
128
|
.checkbox-cell,
|
|
157
129
|
.input-cell,
|
|
@@ -232,4 +204,4 @@ label.multifocus.multifocus-start {
|
|
|
232
204
|
input:disabled {
|
|
233
205
|
cursor: not-allowed;
|
|
234
206
|
opacity: 0.45;
|
|
235
|
-
}</style>
|
|
207
|
+
}</style>
|