@lavalogic/scoria 0.40.28 → 0.40.29
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/AccordionGroup.svelte +1 -1
- package/dist/Components/AlertModal.svelte +3 -2
- package/dist/Components/Base/Pagination.svelte +20 -12
- package/dist/Components/Base/PaginationProps.d.ts +5 -0
- package/dist/Components/Base/Snippets.svelte +4 -3
- package/dist/Components/Button.svelte +9 -8
- package/dist/Components/Checkbox.svelte +2 -2
- package/dist/Components/ChipsInput.svelte +6 -6
- package/dist/Components/CollapsibleCard.svelte +3 -3
- package/dist/Components/ConditionBuilder/ConditionBuilder.svelte +7 -6
- package/dist/Components/Contexts/ContextMenu.svelte +3 -2
- package/dist/Components/Contexts/Toast.svelte +4 -3
- package/dist/Components/Contexts/ToastContainer.svelte +6 -5
- package/dist/Components/Contexts/Tooltip.svelte +2 -2
- package/dist/Components/DataMatrixIcon.svelte +4 -3
- package/dist/Components/DateInput.svelte +25 -26
- package/dist/Components/DesktopModal.svelte +1 -1
- package/dist/Components/DimensionInput.svelte +30 -31
- package/dist/Components/DragMenu/DragMenuHolder.svelte +6 -6
- package/dist/Components/DragMenu/DraggableCard.svelte +3 -3
- package/dist/Components/FileCard.svelte +3 -2
- package/dist/Components/FileUpload.svelte +24 -25
- package/dist/Components/GridInput.svelte +2 -2
- package/dist/Components/HorizontalTabGroup.svelte +1 -1
- package/dist/Components/Icon.svelte +8 -2
- package/dist/Components/IconProps.d.ts +7 -0
- package/dist/Components/Icons.js +365 -365
- package/dist/Components/LoadingAnimation.svelte +50 -30
- package/dist/Components/LoadingAnimation.svelte.d.ts +1 -1
- package/dist/Components/LoadingModal.svelte +3 -2
- package/dist/Components/Modal.svelte +9 -9
- package/dist/Components/MultiSelect.svelte +37 -18
- package/dist/Components/MultiSelectCommonProps.d.ts +15 -1
- package/dist/Components/Nav/Nav.svelte +13 -13
- package/dist/Components/Nav/ServiceMenuItem.svelte +2 -0
- package/dist/Components/Nav/ServicesNav.svelte +6 -6
- package/dist/Components/NumberInput.svelte +25 -26
- package/dist/Components/PasswordInput.svelte +25 -24
- package/dist/Components/PopoverButton.svelte +8 -8
- package/dist/Components/QuerySelect.svelte +33 -16
- package/dist/Components/QuerySelectProps.d.ts +10 -1
- package/dist/Components/ResourceCalendar/ResourceCalendar.svelte +23 -22
- package/dist/Components/SidebarPanel.svelte +1 -1
- package/dist/Components/SingleSelect.svelte +30 -15
- package/dist/Components/SingleSelectCommonProps.d.ts +10 -1
- package/dist/Components/StepForm.svelte +6 -5
- package/dist/Components/Switch.svelte +5 -5
- package/dist/Components/Table/Body/QuickSearchCell.svelte +363 -351
- package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte +5 -6
- package/dist/Components/Table/Body/Rows/ColumnList.svelte +3 -2
- package/dist/Components/Table/Body/Rows/ColumnListRow.svelte +7 -6
- package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +6 -7
- package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte +8 -7
- package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte +11 -9
- package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +7 -8
- package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte +5 -5
- package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte +3 -2
- package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +3 -3
- package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte +5 -4
- package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte +9 -6
- package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte +4 -4
- package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte +4 -4
- package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte +3 -3
- package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +9 -7
- package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte +7 -6
- package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +6 -7
- package/dist/Components/Table/Body/Rows/TableRow.svelte +6 -5
- package/dist/Components/Table/Body/TableBody.svelte +2 -2
- package/dist/Components/Table/Headers/HighlightAllHeader.svelte +3 -2
- package/dist/Components/Table/Headers/SelectAllHeader.svelte +4 -3
- package/dist/Components/Table/Headers/TableHead.svelte +6 -5
- package/dist/Components/Table/Misc/ColumnPanel.svelte +5 -4
- package/dist/Components/Table/Misc/ColumnPanelModal.svelte +5 -4
- package/dist/Components/Table/Misc/FilterInput.svelte +23 -14
- package/dist/Components/Table/Misc/FilterPanel.svelte +12 -11
- package/dist/Components/Table/Misc/FilterPanelModal.svelte +3 -2
- package/dist/Components/Table/Misc/ShareViewModal.svelte +25 -15
- package/dist/Components/Table/Misc/SidePanel.svelte +2 -2
- package/dist/Components/Table/Misc/TableConfigurationModal.svelte +50 -40
- package/dist/Components/Table/Misc/TableFooter.svelte +18 -12
- package/dist/Components/Table/Misc/TableHorizontalBar.svelte +8 -7
- package/dist/Components/Table/Misc/TableSidebar.svelte +8 -7
- package/dist/Components/Table/Misc/TableViewDropdown.svelte +6 -2
- package/dist/Components/Table/Misc/ToolboxPanel.svelte +8 -7
- package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +9 -8
- package/dist/Components/Table/Misc/UpdateViewOptionsModal.svelte +23 -14
- package/dist/Components/Table/Misc/numberDateFilterTypes.d.ts +7 -4
- package/dist/Components/Table/Misc/numberDateFilterTypes.js +27 -15
- package/dist/Components/Table/Misc/stringFilterTypes.d.ts +7 -3
- package/dist/Components/Table/Misc/stringFilterTypes.js +26 -16
- package/dist/Components/Table/NestedTable.svelte +4 -0
- package/dist/Components/Table/Table.svelte +19 -18
- package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.js +2 -1
- package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.js +2 -1
- package/dist/Components/Table/Types/Context/ClipboardState.svelte.js +3 -2
- package/dist/Components/Table/Types/Context/ViewState.svelte.js +5 -2
- package/dist/Components/Table/Types/DataRepository/IDataRepository.d.ts +6 -0
- package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.d.ts +8 -0
- package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.js +14 -0
- package/dist/Components/Table/Types/Public/CreateTableOptions.d.ts +3 -0
- package/dist/Components/Table/createTable.svelte.js +3 -0
- package/dist/Components/TextArea.svelte +24 -23
- package/dist/Components/TextInput.svelte +25 -26
- package/dist/Components/ThreeStateRadio.svelte +21 -16
- package/dist/Components/Touch/BoolCard.svelte +2 -2
- package/dist/Components/Touch/DateModal.svelte +5 -4
- package/dist/Components/Touch/EditCard.svelte +7 -7
- package/dist/Components/Touch/NumberKeyboard.svelte +3 -2
- package/dist/Components/Touch/NumberModal.svelte +4 -3
- package/dist/Components/Touch/PlusMinusCard.svelte +6 -5
- package/dist/Components/Touch/SelectModal.svelte +5 -4
- package/dist/Components/Touch/SummaryCard.svelte +9 -9
- package/dist/Components/Touch/TextAreaModal.svelte +4 -3
- package/dist/Components/Touch/TextModal.svelte +4 -3
- package/dist/Components/Touch/TouchCard.svelte +4 -3
- package/dist/Components/Touch/TouchModal.svelte +9 -8
- package/dist/Components/VerticalTabGroup.svelte +5 -4
- package/dist/Contexts/AlertContext.svelte.d.ts +8 -5
- package/dist/Contexts/AlertContext.svelte.js +10 -9
- package/dist/Helpers/Helpers.svelte.d.ts +23 -2
- package/dist/Helpers/Helpers.svelte.js +37 -9
- package/dist/Strings/locale.d.ts +19 -0
- package/dist/Strings/locale.js +27 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/scss/_mixins.scss +3406 -3392
- package/package.json +14 -7
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<svelte:options runes />
|
|
2
2
|
|
|
3
|
-
<script lang="ts">import {
|
|
3
|
+
<script lang="ts">import { m as i18n } from "../paraglide/messages.js";
|
|
4
|
+
import { cssLength } from "../Helpers/Helpers.svelte.js";
|
|
4
5
|
import { InputVariant } from "../Types/Internal/InputVariant.js";
|
|
5
6
|
import { Size } from "../Types/Internal/Size.js";
|
|
6
7
|
import Icon from "./Icon.svelte";
|
|
@@ -41,14 +42,14 @@ const isInvalid = $derived(showErrorColours && (required && value == null || inv
|
|
|
41
42
|
class="top-label"
|
|
42
43
|
class:for-default={variant === InputVariant.Default}
|
|
43
44
|
class:invalid={isInvalid}
|
|
44
|
-
>{labelTop}{#if optional}<i> - optional</i>{/if}</span
|
|
45
|
+
>{labelTop}{#if optional}<i> - {i18n['scoria.label.optional']()}</i>{/if}</span
|
|
45
46
|
>
|
|
46
47
|
{#if variant === InputVariant.Default}
|
|
47
48
|
<span
|
|
48
49
|
aria-hidden="true"
|
|
49
50
|
class="border"
|
|
50
51
|
class:invalid={isInvalid}
|
|
51
|
-
>{labelTop}{#if optional}<i> - optional</i>{/if}</span
|
|
52
|
+
>{labelTop}{#if optional}<i> - {i18n['scoria.label.optional']()}</i>{/if}</span
|
|
52
53
|
>
|
|
53
54
|
{/if}
|
|
54
55
|
{/if}
|
|
@@ -128,8 +129,8 @@ const isInvalid = $derived(showErrorColours && (required && value == null || inv
|
|
|
128
129
|
font-weight: 400;
|
|
129
130
|
padding-top: var(--input-padding-top, 0.65rem);
|
|
130
131
|
padding-bottom: var(--input-padding-bottom, 0.55rem);
|
|
131
|
-
padding-
|
|
132
|
-
padding-
|
|
132
|
+
padding-inline-start: var(--input-padding-inline-start, 0.75rem);
|
|
133
|
+
padding-inline-end: var(--input-padding-inline-end, 0.75rem);
|
|
133
134
|
border: var(--input-border, solid 1px #cbd4da);
|
|
134
135
|
color: #3a4952;
|
|
135
136
|
transition: border-color ease-out 0.15s 0s, background-color ease-out 0.15s 0s, color ease-out 0.15s 0s, fill ease-out 0.15s 0s;
|
|
@@ -161,8 +162,8 @@ span.right-label.inset {
|
|
|
161
162
|
font-weight: 500;
|
|
162
163
|
position: absolute;
|
|
163
164
|
background-color: #f4f7f9;
|
|
164
|
-
border-
|
|
165
|
-
|
|
165
|
+
border-inline-start: solid 1px #cbd4da;
|
|
166
|
+
inset-inline-end: 1px;
|
|
166
167
|
top: 1px;
|
|
167
168
|
bottom: 1px;
|
|
168
169
|
border-radius: 0 4px 4px 0;
|
|
@@ -186,11 +187,11 @@ span.right-label.for-modal {
|
|
|
186
187
|
|
|
187
188
|
span.for-default {
|
|
188
189
|
position: absolute;
|
|
189
|
-
|
|
190
|
+
inset-inline-start: 0.5rem;
|
|
190
191
|
font-size: 0.875rem;
|
|
191
192
|
user-select: none;
|
|
192
|
-
padding-
|
|
193
|
-
padding-
|
|
193
|
+
padding-inline-start: 0.5rem;
|
|
194
|
+
padding-inline-end: 0.5rem;
|
|
194
195
|
line-height: 1rem;
|
|
195
196
|
padding: 0rem 0.5rem;
|
|
196
197
|
top: calc(-0.875rem / 2 - 2px);
|
|
@@ -204,11 +205,11 @@ span.for-default.invalid {
|
|
|
204
205
|
|
|
205
206
|
span.border {
|
|
206
207
|
position: absolute;
|
|
207
|
-
|
|
208
|
+
inset-inline-start: 0.5rem;
|
|
208
209
|
font-size: 0.875rem;
|
|
209
210
|
user-select: none;
|
|
210
|
-
padding-
|
|
211
|
-
padding-
|
|
211
|
+
padding-inline-start: 0.5rem;
|
|
212
|
+
padding-inline-end: 0.5rem;
|
|
212
213
|
line-height: 1rem;
|
|
213
214
|
z-index: 1;
|
|
214
215
|
white-space: nowrap;
|
|
@@ -226,11 +227,11 @@ span.border.invalid {
|
|
|
226
227
|
}
|
|
227
228
|
|
|
228
229
|
.left-pad {
|
|
229
|
-
padding-
|
|
230
|
+
padding-inline-start: 3rem;
|
|
230
231
|
}
|
|
231
232
|
|
|
232
233
|
.right-pad {
|
|
233
|
-
padding-
|
|
234
|
+
padding-inline-end: 3rem;
|
|
234
235
|
}
|
|
235
236
|
|
|
236
237
|
.icon-container {
|
|
@@ -245,13 +246,12 @@ span.border.invalid {
|
|
|
245
246
|
height: 100%;
|
|
246
247
|
top: 0;
|
|
247
248
|
bottom: 0;
|
|
248
|
-
|
|
249
|
-
right: 0;
|
|
249
|
+
inset-inline: 0;
|
|
250
250
|
}
|
|
251
251
|
|
|
252
252
|
.error {
|
|
253
253
|
color: #aa1414;
|
|
254
|
-
margin-
|
|
254
|
+
margin-inline-start: 0.25rem;
|
|
255
255
|
display: block;
|
|
256
256
|
overflow-x: auto;
|
|
257
257
|
white-space: nowrap;
|
|
@@ -259,7 +259,7 @@ span.border.invalid {
|
|
|
259
259
|
|
|
260
260
|
.right-icon {
|
|
261
261
|
position: absolute;
|
|
262
|
-
|
|
262
|
+
inset-inline-end: 0.5rem;
|
|
263
263
|
top: 50%;
|
|
264
264
|
translate: 0 -50%;
|
|
265
265
|
}
|
|
@@ -283,8 +283,7 @@ label {
|
|
|
283
283
|
position: absolute;
|
|
284
284
|
top: 0;
|
|
285
285
|
bottom: 0;
|
|
286
|
-
|
|
287
|
-
right: 0;
|
|
286
|
+
inset-inline: 0;
|
|
288
287
|
}
|
|
289
288
|
.error-wrapper.for-modal {
|
|
290
289
|
flex: unset;
|
|
@@ -306,7 +305,7 @@ label.for-modal span.top-label {
|
|
|
306
305
|
z-index: 1;
|
|
307
306
|
position: absolute;
|
|
308
307
|
top: 0.45rem;
|
|
309
|
-
|
|
308
|
+
inset-inline-start: 0.75rem;
|
|
310
309
|
}
|
|
311
310
|
label.for-modal span.top-label.invalid {
|
|
312
311
|
color: #aa1414;
|
|
@@ -327,17 +326,17 @@ label.for-modal input.for-modal {
|
|
|
327
326
|
height: 100%;
|
|
328
327
|
resize: none;
|
|
329
328
|
padding-top: 1.44rem;
|
|
330
|
-
padding-
|
|
329
|
+
padding-inline-end: 0.75rem;
|
|
331
330
|
padding-bottom: 0.25rem;
|
|
332
|
-
padding-
|
|
331
|
+
padding-inline-start: 0.75rem;
|
|
333
332
|
font-size: 1.5rem;
|
|
334
333
|
font-weight: 600;
|
|
335
334
|
}
|
|
336
335
|
label.for-modal input.for-modal.left-pad {
|
|
337
|
-
padding-
|
|
336
|
+
padding-inline-start: 3.5rem;
|
|
338
337
|
}
|
|
339
338
|
label.for-modal input.for-modal.right-pad {
|
|
340
|
-
padding-
|
|
339
|
+
padding-inline-end: 3.5rem;
|
|
341
340
|
}
|
|
342
341
|
label.for-modal input {
|
|
343
342
|
height: 3rem;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<svelte:options runes />
|
|
2
2
|
|
|
3
3
|
<script lang="ts">import { cssLength } from "../Helpers/Helpers.svelte.js";
|
|
4
|
+
import { m as i18n } from "../paraglide/messages.js";
|
|
4
5
|
import { ColourSet } from "../scss/colours.js";
|
|
5
6
|
import { Size } from "../Types/Internal/Size.js";
|
|
6
7
|
import Action from "./Action.svelte";
|
|
@@ -55,7 +56,9 @@ function toggleVisibility() {
|
|
|
55
56
|
|
|
56
57
|
<div class="right-icon">
|
|
57
58
|
<Action
|
|
58
|
-
label={showInput
|
|
59
|
+
label={showInput
|
|
60
|
+
? i18n['scoria.label.hide_password']()
|
|
61
|
+
: i18n['scoria.label.show_password']()}
|
|
59
62
|
colourSet={showInput ? ColourSet.Secondary : ColourSet.Auxiliary}
|
|
60
63
|
icon={{ name: showInput ? 'visibility-off' : 'visibility' }}
|
|
61
64
|
size={Size.MediumSmall}
|
|
@@ -74,8 +77,8 @@ function toggleVisibility() {
|
|
|
74
77
|
font-weight: 400;
|
|
75
78
|
padding-top: var(--input-padding-top, 0.65rem);
|
|
76
79
|
padding-bottom: var(--input-padding-bottom, 0.55rem);
|
|
77
|
-
padding-
|
|
78
|
-
padding-
|
|
80
|
+
padding-inline-start: var(--input-padding-inline-start, 0.75rem);
|
|
81
|
+
padding-inline-end: var(--input-padding-inline-end, 0.75rem);
|
|
79
82
|
border: var(--input-border, solid 1px #cbd4da);
|
|
80
83
|
color: #3a4952;
|
|
81
84
|
transition: border-color ease-out 0.15s 0s, background-color ease-out 0.15s 0s, color ease-out 0.15s 0s, fill ease-out 0.15s 0s;
|
|
@@ -107,8 +110,8 @@ span.right-label.inset {
|
|
|
107
110
|
font-weight: 500;
|
|
108
111
|
position: absolute;
|
|
109
112
|
background-color: #f4f7f9;
|
|
110
|
-
border-
|
|
111
|
-
|
|
113
|
+
border-inline-start: solid 1px #cbd4da;
|
|
114
|
+
inset-inline-end: 1px;
|
|
112
115
|
top: 1px;
|
|
113
116
|
bottom: 1px;
|
|
114
117
|
border-radius: 0 4px 4px 0;
|
|
@@ -132,11 +135,11 @@ span.right-label.for-modal {
|
|
|
132
135
|
|
|
133
136
|
span.for-default {
|
|
134
137
|
position: absolute;
|
|
135
|
-
|
|
138
|
+
inset-inline-start: 0.5rem;
|
|
136
139
|
font-size: 0.875rem;
|
|
137
140
|
user-select: none;
|
|
138
|
-
padding-
|
|
139
|
-
padding-
|
|
141
|
+
padding-inline-start: 0.5rem;
|
|
142
|
+
padding-inline-end: 0.5rem;
|
|
140
143
|
line-height: 1rem;
|
|
141
144
|
padding: 0rem 0.5rem;
|
|
142
145
|
top: calc(-0.875rem / 2 - 2px);
|
|
@@ -150,11 +153,11 @@ span.for-default.invalid {
|
|
|
150
153
|
|
|
151
154
|
span.border {
|
|
152
155
|
position: absolute;
|
|
153
|
-
|
|
156
|
+
inset-inline-start: 0.5rem;
|
|
154
157
|
font-size: 0.875rem;
|
|
155
158
|
user-select: none;
|
|
156
|
-
padding-
|
|
157
|
-
padding-
|
|
159
|
+
padding-inline-start: 0.5rem;
|
|
160
|
+
padding-inline-end: 0.5rem;
|
|
158
161
|
line-height: 1rem;
|
|
159
162
|
z-index: 1;
|
|
160
163
|
white-space: nowrap;
|
|
@@ -172,11 +175,11 @@ span.border.invalid {
|
|
|
172
175
|
}
|
|
173
176
|
|
|
174
177
|
.left-pad {
|
|
175
|
-
padding-
|
|
178
|
+
padding-inline-start: 3rem;
|
|
176
179
|
}
|
|
177
180
|
|
|
178
181
|
.right-pad {
|
|
179
|
-
padding-
|
|
182
|
+
padding-inline-end: 3rem;
|
|
180
183
|
}
|
|
181
184
|
|
|
182
185
|
.icon-container {
|
|
@@ -191,13 +194,12 @@ span.border.invalid {
|
|
|
191
194
|
height: 100%;
|
|
192
195
|
top: 0;
|
|
193
196
|
bottom: 0;
|
|
194
|
-
|
|
195
|
-
right: 0;
|
|
197
|
+
inset-inline: 0;
|
|
196
198
|
}
|
|
197
199
|
|
|
198
200
|
.error {
|
|
199
201
|
color: #aa1414;
|
|
200
|
-
margin-
|
|
202
|
+
margin-inline-start: 0.25rem;
|
|
201
203
|
display: block;
|
|
202
204
|
overflow-x: auto;
|
|
203
205
|
white-space: nowrap;
|
|
@@ -205,7 +207,7 @@ span.border.invalid {
|
|
|
205
207
|
|
|
206
208
|
.right-icon {
|
|
207
209
|
position: absolute;
|
|
208
|
-
|
|
210
|
+
inset-inline-end: 0.5rem;
|
|
209
211
|
top: 50%;
|
|
210
212
|
translate: 0 -50%;
|
|
211
213
|
}
|
|
@@ -229,8 +231,7 @@ label {
|
|
|
229
231
|
position: absolute;
|
|
230
232
|
top: 0;
|
|
231
233
|
bottom: 0;
|
|
232
|
-
|
|
233
|
-
right: 0;
|
|
234
|
+
inset-inline: 0;
|
|
234
235
|
}
|
|
235
236
|
.error-wrapper.for-modal {
|
|
236
237
|
flex: unset;
|
|
@@ -252,7 +253,7 @@ label.for-modal span.top-label {
|
|
|
252
253
|
z-index: 1;
|
|
253
254
|
position: absolute;
|
|
254
255
|
top: 0.45rem;
|
|
255
|
-
|
|
256
|
+
inset-inline-start: 0.75rem;
|
|
256
257
|
}
|
|
257
258
|
label.for-modal span.top-label.invalid {
|
|
258
259
|
color: #aa1414;
|
|
@@ -273,17 +274,17 @@ label.for-modal input.for-modal {
|
|
|
273
274
|
height: 100%;
|
|
274
275
|
resize: none;
|
|
275
276
|
padding-top: 1.44rem;
|
|
276
|
-
padding-
|
|
277
|
+
padding-inline-end: 0.75rem;
|
|
277
278
|
padding-bottom: 0.25rem;
|
|
278
|
-
padding-
|
|
279
|
+
padding-inline-start: 0.75rem;
|
|
279
280
|
font-size: 1.5rem;
|
|
280
281
|
font-weight: 600;
|
|
281
282
|
}
|
|
282
283
|
label.for-modal input.for-modal.left-pad {
|
|
283
|
-
padding-
|
|
284
|
+
padding-inline-start: 3.5rem;
|
|
284
285
|
}
|
|
285
286
|
label.for-modal input.for-modal.right-pad {
|
|
286
|
-
padding-
|
|
287
|
+
padding-inline-end: 3.5rem;
|
|
287
288
|
}
|
|
288
289
|
label.for-modal input {
|
|
289
290
|
height: 3rem;
|
|
@@ -116,14 +116,14 @@ function onWindowKeydown(e) {
|
|
|
116
116
|
max-width: 80vw;
|
|
117
117
|
}
|
|
118
118
|
.popover.align-center {
|
|
119
|
-
|
|
119
|
+
inset-inline-start: 50%;
|
|
120
120
|
transform: translateX(-50%);
|
|
121
121
|
}
|
|
122
122
|
.popover.align-start {
|
|
123
|
-
|
|
123
|
+
inset-inline-start: 0;
|
|
124
124
|
}
|
|
125
125
|
.popover.align-end {
|
|
126
|
-
|
|
126
|
+
inset-inline-end: 0;
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
.caret {
|
|
@@ -132,20 +132,20 @@ function onWindowKeydown(e) {
|
|
|
132
132
|
width: 12px;
|
|
133
133
|
height: 12px;
|
|
134
134
|
background-color: #ffffff;
|
|
135
|
-
border-
|
|
135
|
+
border-inline-start: solid 1px #cbd4da;
|
|
136
136
|
border-top: solid 1px #cbd4da;
|
|
137
137
|
transform: rotate(45deg);
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
.align-center .caret {
|
|
141
|
-
|
|
142
|
-
margin-
|
|
141
|
+
inset-inline-start: 50%;
|
|
142
|
+
margin-inline-start: -6px;
|
|
143
143
|
}
|
|
144
144
|
|
|
145
145
|
.align-start .caret {
|
|
146
|
-
|
|
146
|
+
inset-inline-start: 1.5rem;
|
|
147
147
|
}
|
|
148
148
|
|
|
149
149
|
.align-end .caret {
|
|
150
|
-
|
|
150
|
+
inset-inline-end: 1.5rem;
|
|
151
151
|
}</style>
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
<script
|
|
4
4
|
lang="ts"
|
|
5
5
|
generics="V extends object, VP extends ValueProp<V>"
|
|
6
|
-
>import {
|
|
6
|
+
>import { m as i18n } from "../paraglide/messages.js";
|
|
7
|
+
import { ToastContext } from "../Contexts/ToastContext.svelte.js";
|
|
7
8
|
import { dev } from "$app/environment";
|
|
8
9
|
import { devCatch, generateWeakId, vowels } from "../Helpers/Helpers.svelte.js";
|
|
9
10
|
import { attachDropdownPortal } from "../Helpers/dropdownPortal.js";
|
|
@@ -12,7 +13,7 @@ import { Size } from "../Types/Internal/Size.js";
|
|
|
12
13
|
import Svelecte from "svelecte";
|
|
13
14
|
import { getContext, onMount, tick, untrack } from "svelte";
|
|
14
15
|
import Action from "./Action.svelte";
|
|
15
|
-
let { label, labelProp, valueProp, clearable = false, required = false, invalid = false, valueAsObject, name = "Item", disabled, query, width, height, focusOnLoad = false, inputId = generateWeakId(), value: selectedValue, options = $bindable([]), isValid, onchange, onfocus } = $props();
|
|
16
|
+
let { label, labelProp, valueProp, clearable = false, required = false, invalid = false, valueAsObject, name = "Item", placeholder, disabled, query, width, height, focusOnLoad = false, inputId = generateWeakId(), value: selectedValue, options = $bindable([]), isValid, onchange, onfocus } = $props();
|
|
16
17
|
export function forceQuery() {
|
|
17
18
|
clearTimeout(timeoutHandler);
|
|
18
19
|
const input = document.getElementById(inputId);
|
|
@@ -49,6 +50,8 @@ $effect.pre(() => {
|
|
|
49
50
|
}
|
|
50
51
|
} else if (!options.some((opt) => opt[valueProp] === selectedValue)) {
|
|
51
52
|
options = [...options, {
|
|
53
|
+
//best-effort solution. Not a good one
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
52
55
|
[labelProp]: selectedValue.toString(),
|
|
53
56
|
[valueProp]: selectedValue
|
|
54
57
|
}];
|
|
@@ -179,7 +182,9 @@ function onChange(newValue) {
|
|
|
179
182
|
}
|
|
180
183
|
}
|
|
181
184
|
}
|
|
182
|
-
|
|
185
|
+
// English-only article choice. The article itself lives in the message, so a
|
|
186
|
+
// translator owns the whole phrase and can drop or decline it per locale.
|
|
187
|
+
const fallbackPlaceholder = $derived(name ? vowels.has(name.at(0)?.toLocaleLowerCase() ?? "") ? i18n["scoria.label.select_an_named"]({ name }) : i18n["scoria.label.select_a_named"]({ name }) : i18n["scoria.label.please_select"]());
|
|
183
188
|
let isExpanded = $state(false);
|
|
184
189
|
</script>
|
|
185
190
|
|
|
@@ -191,10 +196,10 @@ let isExpanded = $state(false);
|
|
|
191
196
|
{#if label}
|
|
192
197
|
<label for={inputId}>
|
|
193
198
|
<span
|
|
194
|
-
>{label}{#if !required} - <i>optional</i>{/if}</span
|
|
199
|
+
>{label}{#if !required} - <i>{i18n['scoria.label.optional']()}</i>{/if}</span
|
|
195
200
|
>
|
|
196
201
|
<span class="border"
|
|
197
|
-
>{label}{#if !required} - <i>optional</i>{/if}</span
|
|
202
|
+
>{label}{#if !required} - <i>{i18n['scoria.label.optional']()}</i>{/if}</span
|
|
198
203
|
>
|
|
199
204
|
</label>
|
|
200
205
|
{/if}
|
|
@@ -207,7 +212,7 @@ let isExpanded = $state(false);
|
|
|
207
212
|
forceShowDropdown(e);
|
|
208
213
|
onfocus?.(e);
|
|
209
214
|
}}
|
|
210
|
-
placeholder=
|
|
215
|
+
placeholder={placeholder ?? fallbackPlaceholder}
|
|
211
216
|
bind:this={ref}
|
|
212
217
|
{inputId}
|
|
213
218
|
{disabled}
|
|
@@ -270,7 +275,7 @@ let isExpanded = $state(false);
|
|
|
270
275
|
|
|
271
276
|
{#snippet selection(selectedOptions: Array<V>)}
|
|
272
277
|
{#if selectedOptions.length == 0}
|
|
273
|
-
<span class="selection">
|
|
278
|
+
<span class="selection">{placeholder ?? fallbackPlaceholder}</span>
|
|
274
279
|
{:else}
|
|
275
280
|
<span class="selection">{selectedOptions[0][labelProp]}</span>
|
|
276
281
|
{/if}
|
|
@@ -298,19 +303,20 @@ let isExpanded = $state(false);
|
|
|
298
303
|
}
|
|
299
304
|
.select-wrapper label {
|
|
300
305
|
position: absolute;
|
|
301
|
-
|
|
306
|
+
inset-inline-start: 0.5rem;
|
|
302
307
|
z-index: 1;
|
|
308
|
+
width: calc(100% - 1rem);
|
|
303
309
|
font-size: 0.875rem;
|
|
304
310
|
padding: 0.05rem 0.4rem;
|
|
305
311
|
color: #647d8e;
|
|
306
312
|
}
|
|
307
313
|
.select-wrapper label span:not(.border) {
|
|
308
314
|
position: absolute;
|
|
309
|
-
|
|
315
|
+
inset-inline-start: 0.5rem;
|
|
310
316
|
font-size: 0.875rem;
|
|
311
317
|
user-select: none;
|
|
312
|
-
padding-
|
|
313
|
-
padding-
|
|
318
|
+
padding-inline-start: 0.5rem;
|
|
319
|
+
padding-inline-end: 0.5rem;
|
|
314
320
|
line-height: 1rem;
|
|
315
321
|
padding: 0rem 0.5rem;
|
|
316
322
|
top: calc(-0.875rem / 2 - 2px);
|
|
@@ -321,13 +327,18 @@ let isExpanded = $state(false);
|
|
|
321
327
|
.select-wrapper label span:not(.border).invalid {
|
|
322
328
|
color: #aa1414;
|
|
323
329
|
}
|
|
330
|
+
.select-wrapper label span:not(.border) {
|
|
331
|
+
max-width: calc(100% - 1rem);
|
|
332
|
+
overflow: hidden;
|
|
333
|
+
text-overflow: ellipsis;
|
|
334
|
+
}
|
|
324
335
|
.select-wrapper label span.border {
|
|
325
336
|
position: absolute;
|
|
326
|
-
|
|
337
|
+
inset-inline-start: 0.5rem;
|
|
327
338
|
font-size: 0.875rem;
|
|
328
339
|
user-select: none;
|
|
329
|
-
padding-
|
|
330
|
-
padding-
|
|
340
|
+
padding-inline-start: 0.5rem;
|
|
341
|
+
padding-inline-end: 0.5rem;
|
|
331
342
|
line-height: 1rem;
|
|
332
343
|
z-index: 1;
|
|
333
344
|
white-space: nowrap;
|
|
@@ -339,6 +350,11 @@ let isExpanded = $state(false);
|
|
|
339
350
|
.select-wrapper label span.border.invalid {
|
|
340
351
|
border-bottom-color: #f9e9e9;
|
|
341
352
|
}
|
|
353
|
+
.select-wrapper label span.border {
|
|
354
|
+
max-width: calc(100% - 1rem);
|
|
355
|
+
overflow: hidden;
|
|
356
|
+
text-overflow: ellipsis;
|
|
357
|
+
}
|
|
342
358
|
.select-wrapper :global(.svelecte.svelecte-control) {
|
|
343
359
|
cursor: pointer;
|
|
344
360
|
max-width: 100%;
|
|
@@ -384,7 +400,7 @@ let isExpanded = $state(false);
|
|
|
384
400
|
}
|
|
385
401
|
.select-wrapper .selection {
|
|
386
402
|
font-size: 0.875rem;
|
|
387
|
-
padding-
|
|
403
|
+
padding-inline-start: 0.5rem;
|
|
388
404
|
white-space: nowrap;
|
|
389
405
|
display: flex;
|
|
390
406
|
}
|
|
@@ -403,7 +419,7 @@ div.icons {
|
|
|
403
419
|
flex-flow: row nowrap;
|
|
404
420
|
gap: 0.25rem;
|
|
405
421
|
height: 100%;
|
|
406
|
-
margin-
|
|
422
|
+
margin-inline-end: 0.25rem;
|
|
407
423
|
box-sizing: border-box;
|
|
408
424
|
}
|
|
409
425
|
|
|
@@ -428,6 +444,7 @@ div.icons {
|
|
|
428
444
|
text-overflow: ellipsis;
|
|
429
445
|
gap: 1rem;
|
|
430
446
|
font-size: 0.875rem;
|
|
447
|
+
line-height: 1.6;
|
|
431
448
|
fill: #259fc7;
|
|
432
449
|
}
|
|
433
450
|
:global(.dropdown-item) .toggle-icon {
|
|
@@ -8,8 +8,17 @@ interface QuerySelectCommonProps<V extends object, VP extends ValueProp<V>> {
|
|
|
8
8
|
query: (value: string) => Promise<Array<V>>;
|
|
9
9
|
/** Optional initial option set; bindable so the component can extend it. */
|
|
10
10
|
options?: Array<V>;
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Singular display name of the entity. This is the `<Svelecte>` **form-field
|
|
13
|
+
* attribute**, not display copy - it is only used to compose the English-only
|
|
14
|
+
* fallback placeholder when `placeholder` is not supplied.
|
|
15
|
+
*/
|
|
12
16
|
name?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Complete placeholder sentence. Pass a translated whole phrase; when omitted
|
|
19
|
+
* scoria composes an English-only fallback from `name`.
|
|
20
|
+
*/
|
|
21
|
+
placeholder?: string;
|
|
13
22
|
/** Disable the input. */
|
|
14
23
|
disabled?: boolean;
|
|
15
24
|
/** CSS width override. Use `cssLength('...')` to construct. */
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
<script
|
|
4
4
|
lang="ts"
|
|
5
5
|
generics="E extends CalendarEvent"
|
|
6
|
-
>import {
|
|
6
|
+
>import { m as i18n } from "../../paraglide/messages.js";
|
|
7
|
+
import { Colour } from "../../scss/colours.js";
|
|
7
8
|
import { Size } from "../../Types/Internal/Size.js";
|
|
8
9
|
import Button from "../Button.svelte";
|
|
9
10
|
import Icon from "../Icon.svelte";
|
|
@@ -482,20 +483,20 @@ function getWeekDays(date) {
|
|
|
482
483
|
}
|
|
483
484
|
const weekDays = $derived(getWeekDays(selected));
|
|
484
485
|
// ---- View mode buttons ----
|
|
485
|
-
const viewModes = [
|
|
486
|
+
const viewModes = $derived([
|
|
486
487
|
{
|
|
487
488
|
mode: CalendarViewMode.Day,
|
|
488
|
-
label: "
|
|
489
|
+
label: i18n["scoria.label.day"]()
|
|
489
490
|
},
|
|
490
491
|
{
|
|
491
492
|
mode: CalendarViewMode.Week,
|
|
492
|
-
label: "
|
|
493
|
+
label: i18n["scoria.label.week"]()
|
|
493
494
|
},
|
|
494
495
|
{
|
|
495
496
|
mode: CalendarViewMode.Month,
|
|
496
|
-
label: "
|
|
497
|
+
label: i18n["scoria.label.month"]()
|
|
497
498
|
}
|
|
498
|
-
];
|
|
499
|
+
]);
|
|
499
500
|
// ---- Centre-on-hour scrolling ----
|
|
500
501
|
const centreRowHour = $derived(centreHour == null ? null : Math.floor(centreHour));
|
|
501
502
|
let calendarBody = $state();
|
|
@@ -535,11 +536,11 @@ $effect(() => {
|
|
|
535
536
|
<div class="calendar-header">
|
|
536
537
|
<div class="header-left">
|
|
537
538
|
<Button
|
|
538
|
-
label=
|
|
539
|
+
label={i18n['scoria.label.today']()}
|
|
539
540
|
size={Size.Small}
|
|
540
541
|
onclick={goToToday}
|
|
541
542
|
>
|
|
542
|
-
|
|
543
|
+
{i18n['scoria.label.today']()}
|
|
543
544
|
</Button>
|
|
544
545
|
<div class="nav-arrows">
|
|
545
546
|
<button
|
|
@@ -547,7 +548,7 @@ $effect(() => {
|
|
|
547
548
|
onclick={() => {
|
|
548
549
|
navigateDate(-1);
|
|
549
550
|
}}
|
|
550
|
-
aria-label=
|
|
551
|
+
aria-label={i18n['scoria.action.previous']()}
|
|
551
552
|
>
|
|
552
553
|
<Icon
|
|
553
554
|
name="chevron-left"
|
|
@@ -560,7 +561,7 @@ $effect(() => {
|
|
|
560
561
|
onclick={() => {
|
|
561
562
|
navigateDate(1);
|
|
562
563
|
}}
|
|
563
|
-
aria-label=
|
|
564
|
+
aria-label={i18n['scoria.action.next']()}
|
|
564
565
|
>
|
|
565
566
|
<Icon
|
|
566
567
|
name="chevron-right"
|
|
@@ -681,7 +682,7 @@ $effect(() => {
|
|
|
681
682
|
|
|
682
683
|
{#snippet resourceGrid(day: Date)}
|
|
683
684
|
<div class="grid-header">
|
|
684
|
-
<div class="time-header">
|
|
685
|
+
<div class="time-header">{i18n['scoria.label.time']()}</div>
|
|
685
686
|
{#each resources as resource (resource.id)}
|
|
686
687
|
<div class="resource-header">{resource.label}</div>
|
|
687
688
|
{/each}
|
|
@@ -836,7 +837,7 @@ $effect(() => {
|
|
|
836
837
|
transition: border-color ease-out 0.15s 0s, background-color ease-out 0.15s 0s, color ease-out 0.15s 0s, fill ease-out 0.15s 0s;
|
|
837
838
|
}
|
|
838
839
|
.view-btn:not(:last-child) {
|
|
839
|
-
border-
|
|
840
|
+
border-inline-end: solid 1px #cbd4da;
|
|
840
841
|
}
|
|
841
842
|
.view-btn.active {
|
|
842
843
|
background-color: #259fc7;
|
|
@@ -877,7 +878,7 @@ $effect(() => {
|
|
|
877
878
|
font-weight: 600;
|
|
878
879
|
text-align: center;
|
|
879
880
|
color: #3a4952;
|
|
880
|
-
border-
|
|
881
|
+
border-inline-end: solid 1px #cbd4da;
|
|
881
882
|
box-sizing: border-box;
|
|
882
883
|
}
|
|
883
884
|
|
|
@@ -913,7 +914,7 @@ $effect(() => {
|
|
|
913
914
|
left: 0;
|
|
914
915
|
z-index: 6;
|
|
915
916
|
background-color: #ffffff;
|
|
916
|
-
border-
|
|
917
|
+
border-inline-end: solid 1px #cbd4da;
|
|
917
918
|
}
|
|
918
919
|
|
|
919
920
|
.time-label {
|
|
@@ -921,7 +922,7 @@ $effect(() => {
|
|
|
921
922
|
display: flex;
|
|
922
923
|
align-items: flex-start;
|
|
923
924
|
justify-content: flex-end;
|
|
924
|
-
padding-
|
|
925
|
+
padding-inline-end: 0.5rem;
|
|
925
926
|
box-sizing: border-box;
|
|
926
927
|
font-size: 0.875rem;
|
|
927
928
|
font-weight: 600;
|
|
@@ -942,7 +943,7 @@ $effect(() => {
|
|
|
942
943
|
position: relative;
|
|
943
944
|
display: flex;
|
|
944
945
|
flex-flow: column nowrap;
|
|
945
|
-
border-
|
|
946
|
+
border-inline-end: solid 1px #cbd4da;
|
|
946
947
|
}
|
|
947
948
|
|
|
948
949
|
.slot-cell {
|
|
@@ -1015,13 +1016,13 @@ $effect(() => {
|
|
|
1015
1016
|
gap: 0.2rem;
|
|
1016
1017
|
padding: 0.5rem 0.25rem;
|
|
1017
1018
|
border: none;
|
|
1018
|
-
border-
|
|
1019
|
+
border-inline-end: solid 1px #cbd4da;
|
|
1019
1020
|
background: #ffffff;
|
|
1020
1021
|
cursor: pointer;
|
|
1021
1022
|
transition: border-color ease-out 0.15s 0s, background-color ease-out 0.15s 0s, color ease-out 0.15s 0s, fill ease-out 0.15s 0s;
|
|
1022
1023
|
}
|
|
1023
1024
|
.week-day-tab:last-child {
|
|
1024
|
-
border-
|
|
1025
|
+
border-inline-end: none;
|
|
1025
1026
|
}
|
|
1026
1027
|
.week-day-tab:hover {
|
|
1027
1028
|
background-color: #f4f7f9;
|
|
@@ -1075,10 +1076,10 @@ $effect(() => {
|
|
|
1075
1076
|
font-size: 0.875rem;
|
|
1076
1077
|
font-weight: 600;
|
|
1077
1078
|
color: #3a4952;
|
|
1078
|
-
border-
|
|
1079
|
+
border-inline-end: solid 1px #cbd4da;
|
|
1079
1080
|
}
|
|
1080
1081
|
.month-day-header:last-child {
|
|
1081
|
-
border-
|
|
1082
|
+
border-inline-end: none;
|
|
1082
1083
|
}
|
|
1083
1084
|
|
|
1084
1085
|
.month-grid {
|
|
@@ -1090,7 +1091,7 @@ $effect(() => {
|
|
|
1090
1091
|
|
|
1091
1092
|
.month-day-cell {
|
|
1092
1093
|
border: none;
|
|
1093
|
-
border-
|
|
1094
|
+
border-inline-end: solid 1px #cbd4da;
|
|
1094
1095
|
border-bottom: solid 1px #cbd4da;
|
|
1095
1096
|
background: #ffffff;
|
|
1096
1097
|
padding: 0.35rem;
|
|
@@ -1098,7 +1099,7 @@ $effect(() => {
|
|
|
1098
1099
|
flex-flow: column nowrap;
|
|
1099
1100
|
gap: 0.2rem;
|
|
1100
1101
|
cursor: pointer;
|
|
1101
|
-
text-align:
|
|
1102
|
+
text-align: start;
|
|
1102
1103
|
min-height: 4.5rem;
|
|
1103
1104
|
transition: border-color ease-out 0.15s 0s, background-color ease-out 0.15s 0s, color ease-out 0.15s 0s, fill ease-out 0.15s 0s;
|
|
1104
1105
|
}
|