@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.
Files changed (127) hide show
  1. package/dist/Components/AccordionGroup.svelte +1 -1
  2. package/dist/Components/AlertModal.svelte +3 -2
  3. package/dist/Components/Base/Pagination.svelte +20 -12
  4. package/dist/Components/Base/PaginationProps.d.ts +5 -0
  5. package/dist/Components/Base/Snippets.svelte +4 -3
  6. package/dist/Components/Button.svelte +9 -8
  7. package/dist/Components/Checkbox.svelte +2 -2
  8. package/dist/Components/ChipsInput.svelte +6 -6
  9. package/dist/Components/CollapsibleCard.svelte +3 -3
  10. package/dist/Components/ConditionBuilder/ConditionBuilder.svelte +7 -6
  11. package/dist/Components/Contexts/ContextMenu.svelte +3 -2
  12. package/dist/Components/Contexts/Toast.svelte +4 -3
  13. package/dist/Components/Contexts/ToastContainer.svelte +6 -5
  14. package/dist/Components/Contexts/Tooltip.svelte +2 -2
  15. package/dist/Components/DataMatrixIcon.svelte +4 -3
  16. package/dist/Components/DateInput.svelte +25 -26
  17. package/dist/Components/DesktopModal.svelte +1 -1
  18. package/dist/Components/DimensionInput.svelte +30 -31
  19. package/dist/Components/DragMenu/DragMenuHolder.svelte +6 -6
  20. package/dist/Components/DragMenu/DraggableCard.svelte +3 -3
  21. package/dist/Components/FileCard.svelte +3 -2
  22. package/dist/Components/FileUpload.svelte +24 -25
  23. package/dist/Components/GridInput.svelte +2 -2
  24. package/dist/Components/HorizontalTabGroup.svelte +1 -1
  25. package/dist/Components/Icon.svelte +8 -2
  26. package/dist/Components/IconProps.d.ts +7 -0
  27. package/dist/Components/Icons.js +365 -365
  28. package/dist/Components/LoadingAnimation.svelte +50 -30
  29. package/dist/Components/LoadingAnimation.svelte.d.ts +1 -1
  30. package/dist/Components/LoadingModal.svelte +3 -2
  31. package/dist/Components/Modal.svelte +9 -9
  32. package/dist/Components/MultiSelect.svelte +37 -18
  33. package/dist/Components/MultiSelectCommonProps.d.ts +15 -1
  34. package/dist/Components/Nav/Nav.svelte +13 -13
  35. package/dist/Components/Nav/ServiceMenuItem.svelte +2 -0
  36. package/dist/Components/Nav/ServicesNav.svelte +6 -6
  37. package/dist/Components/NumberInput.svelte +25 -26
  38. package/dist/Components/PasswordInput.svelte +25 -24
  39. package/dist/Components/PopoverButton.svelte +8 -8
  40. package/dist/Components/QuerySelect.svelte +33 -16
  41. package/dist/Components/QuerySelectProps.d.ts +10 -1
  42. package/dist/Components/ResourceCalendar/ResourceCalendar.svelte +23 -22
  43. package/dist/Components/SidebarPanel.svelte +1 -1
  44. package/dist/Components/SingleSelect.svelte +30 -15
  45. package/dist/Components/SingleSelectCommonProps.d.ts +10 -1
  46. package/dist/Components/StepForm.svelte +6 -5
  47. package/dist/Components/Switch.svelte +5 -5
  48. package/dist/Components/Table/Body/QuickSearchCell.svelte +363 -351
  49. package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte +5 -6
  50. package/dist/Components/Table/Body/Rows/ColumnList.svelte +3 -2
  51. package/dist/Components/Table/Body/Rows/ColumnListRow.svelte +7 -6
  52. package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +6 -7
  53. package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte +8 -7
  54. package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte +11 -9
  55. package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +7 -8
  56. package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte +5 -5
  57. package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte +3 -2
  58. package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +3 -3
  59. package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte +5 -4
  60. package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte +9 -6
  61. package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte +4 -4
  62. package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte +4 -4
  63. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte +3 -3
  64. package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +9 -7
  65. package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte +7 -6
  66. package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +6 -7
  67. package/dist/Components/Table/Body/Rows/TableRow.svelte +6 -5
  68. package/dist/Components/Table/Body/TableBody.svelte +2 -2
  69. package/dist/Components/Table/Headers/HighlightAllHeader.svelte +3 -2
  70. package/dist/Components/Table/Headers/SelectAllHeader.svelte +4 -3
  71. package/dist/Components/Table/Headers/TableHead.svelte +6 -5
  72. package/dist/Components/Table/Misc/ColumnPanel.svelte +5 -4
  73. package/dist/Components/Table/Misc/ColumnPanelModal.svelte +5 -4
  74. package/dist/Components/Table/Misc/FilterInput.svelte +23 -14
  75. package/dist/Components/Table/Misc/FilterPanel.svelte +12 -11
  76. package/dist/Components/Table/Misc/FilterPanelModal.svelte +3 -2
  77. package/dist/Components/Table/Misc/ShareViewModal.svelte +25 -15
  78. package/dist/Components/Table/Misc/SidePanel.svelte +2 -2
  79. package/dist/Components/Table/Misc/TableConfigurationModal.svelte +50 -40
  80. package/dist/Components/Table/Misc/TableFooter.svelte +18 -12
  81. package/dist/Components/Table/Misc/TableHorizontalBar.svelte +8 -7
  82. package/dist/Components/Table/Misc/TableSidebar.svelte +8 -7
  83. package/dist/Components/Table/Misc/TableViewDropdown.svelte +6 -2
  84. package/dist/Components/Table/Misc/ToolboxPanel.svelte +8 -7
  85. package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +9 -8
  86. package/dist/Components/Table/Misc/UpdateViewOptionsModal.svelte +23 -14
  87. package/dist/Components/Table/Misc/numberDateFilterTypes.d.ts +7 -4
  88. package/dist/Components/Table/Misc/numberDateFilterTypes.js +27 -15
  89. package/dist/Components/Table/Misc/stringFilterTypes.d.ts +7 -3
  90. package/dist/Components/Table/Misc/stringFilterTypes.js +26 -16
  91. package/dist/Components/Table/NestedTable.svelte +4 -0
  92. package/dist/Components/Table/Table.svelte +19 -18
  93. package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.js +2 -1
  94. package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.js +2 -1
  95. package/dist/Components/Table/Types/Context/ClipboardState.svelte.js +3 -2
  96. package/dist/Components/Table/Types/Context/ViewState.svelte.js +5 -2
  97. package/dist/Components/Table/Types/DataRepository/IDataRepository.d.ts +6 -0
  98. package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.d.ts +8 -0
  99. package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.js +14 -0
  100. package/dist/Components/Table/Types/Public/CreateTableOptions.d.ts +3 -0
  101. package/dist/Components/Table/createTable.svelte.js +3 -0
  102. package/dist/Components/TextArea.svelte +24 -23
  103. package/dist/Components/TextInput.svelte +25 -26
  104. package/dist/Components/ThreeStateRadio.svelte +21 -16
  105. package/dist/Components/Touch/BoolCard.svelte +2 -2
  106. package/dist/Components/Touch/DateModal.svelte +5 -4
  107. package/dist/Components/Touch/EditCard.svelte +7 -7
  108. package/dist/Components/Touch/NumberKeyboard.svelte +3 -2
  109. package/dist/Components/Touch/NumberModal.svelte +4 -3
  110. package/dist/Components/Touch/PlusMinusCard.svelte +6 -5
  111. package/dist/Components/Touch/SelectModal.svelte +5 -4
  112. package/dist/Components/Touch/SummaryCard.svelte +9 -9
  113. package/dist/Components/Touch/TextAreaModal.svelte +4 -3
  114. package/dist/Components/Touch/TextModal.svelte +4 -3
  115. package/dist/Components/Touch/TouchCard.svelte +4 -3
  116. package/dist/Components/Touch/TouchModal.svelte +9 -8
  117. package/dist/Components/VerticalTabGroup.svelte +5 -4
  118. package/dist/Contexts/AlertContext.svelte.d.ts +8 -5
  119. package/dist/Contexts/AlertContext.svelte.js +10 -9
  120. package/dist/Helpers/Helpers.svelte.d.ts +23 -2
  121. package/dist/Helpers/Helpers.svelte.js +37 -9
  122. package/dist/Strings/locale.d.ts +19 -0
  123. package/dist/Strings/locale.js +27 -0
  124. package/dist/index.d.ts +1 -0
  125. package/dist/index.js +1 -0
  126. package/dist/scss/_mixins.scss +3406 -3392
  127. package/package.json +14 -7
@@ -1,6 +1,7 @@
1
1
  <svelte:options runes />
2
2
 
3
- <script lang="ts">import { cssLength } from "../Helpers/Helpers.svelte.js";
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";
@@ -17,14 +18,14 @@ const isInvalid = $derived(showErrorColours && (required && value.trim() === ""
17
18
  class="top-label"
18
19
  class:for-default={variant === InputVariant.Default}
19
20
  class:invalid={isInvalid}
20
- >{labelTop}{#if optional}<i>&nbsp;- optional</i>{/if}</span
21
+ >{labelTop}{#if optional}<i>&nbsp;- {i18n['scoria.label.optional']()}</i>{/if}</span
21
22
  >
22
23
  {#if variant === InputVariant.Default}
23
24
  <span
24
25
  aria-hidden="true"
25
26
  class="border"
26
27
  class:invalid={isInvalid}
27
- >{labelTop}{#if optional}<i>&nbsp;- optional</i>{/if}</span
28
+ >{labelTop}{#if optional}<i>&nbsp;- {i18n['scoria.label.optional']()}</i>{/if}</span
28
29
  >
29
30
  {/if}
30
31
  {/if}
@@ -53,6 +54,7 @@ const isInvalid = $derived(showErrorColours && (required && value.trim() === ""
53
54
  class:select-none={selectNone}
54
55
  class:left-pad={leftIcon != undefined}
55
56
  class:right-pad={rightIcon != undefined}
57
+ class:for-default={variant === InputVariant.Default}
56
58
  class:for-modal={variant == InputVariant.Modal}
57
59
  class:max-width={maxWidth}
58
60
  autocomplete={autocomplete ?? 'off'}
@@ -100,8 +102,8 @@ const isInvalid = $derived(showErrorColours && (required && value.trim() === ""
100
102
  font-weight: 400;
101
103
  padding-top: var(--input-padding-top, 0.65rem);
102
104
  padding-bottom: var(--input-padding-bottom, 0.55rem);
103
- padding-left: var(--input-padding-left, 0.75rem);
104
- padding-right: var(--input-padding-right, 0.75rem);
105
+ padding-inline-start: var(--input-padding-inline-start, 0.75rem);
106
+ padding-inline-end: var(--input-padding-inline-end, 0.75rem);
105
107
  border: var(--input-border, solid 1px #cbd4da);
106
108
  color: #3a4952;
107
109
  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;
@@ -153,7 +155,7 @@ label.for-modal span.top-label {
153
155
  z-index: 1;
154
156
  position: absolute;
155
157
  top: 0.45rem;
156
- left: 0.75rem;
158
+ inset-inline-start: 0.75rem;
157
159
  }
158
160
  label.for-modal span.top-label.invalid {
159
161
  color: #aa1414;
@@ -174,17 +176,17 @@ label.for-modal textarea.for-modal {
174
176
  height: 100%;
175
177
  resize: none;
176
178
  padding-top: 1.44rem;
177
- padding-right: 0.75rem;
179
+ padding-inline-end: 0.75rem;
178
180
  padding-bottom: 0.25rem;
179
- padding-left: 0.75rem;
181
+ padding-inline-start: 0.75rem;
180
182
  font-size: 1.5rem;
181
183
  font-weight: 600;
182
184
  }
183
185
  label.for-modal textarea.for-modal.left-pad {
184
- padding-left: 3.5rem;
186
+ padding-inline-start: 3.5rem;
185
187
  }
186
188
  label.for-modal textarea.for-modal.right-pad {
187
- padding-right: 3.5rem;
189
+ padding-inline-end: 3.5rem;
188
190
  }
189
191
  label.for-modal textarea {
190
192
  height: 4rem;
@@ -200,8 +202,8 @@ span.right-label.inset {
200
202
  font-weight: 500;
201
203
  position: absolute;
202
204
  background-color: #f4f7f9;
203
- border-left: solid 1px #cbd4da;
204
- right: 1px;
205
+ border-inline-start: solid 1px #cbd4da;
206
+ inset-inline-end: 1px;
205
207
  top: 1px;
206
208
  bottom: 1px;
207
209
  border-radius: 0 4px 4px 0;
@@ -225,11 +227,11 @@ span.right-label.for-modal {
225
227
 
226
228
  span.for-default {
227
229
  position: absolute;
228
- left: 0.5rem;
230
+ inset-inline-start: 0.5rem;
229
231
  font-size: 0.875rem;
230
232
  user-select: none;
231
- padding-left: 0.5rem;
232
- padding-right: 0.5rem;
233
+ padding-inline-start: 0.5rem;
234
+ padding-inline-end: 0.5rem;
233
235
  line-height: 1rem;
234
236
  padding: 0rem 0.5rem;
235
237
  top: calc(-0.875rem / 2 - 2px);
@@ -243,11 +245,11 @@ span.for-default.invalid {
243
245
 
244
246
  span.border {
245
247
  position: absolute;
246
- left: 0.5rem;
248
+ inset-inline-start: 0.5rem;
247
249
  font-size: 0.875rem;
248
250
  user-select: none;
249
- padding-left: 0.5rem;
250
- padding-right: 0.5rem;
251
+ padding-inline-start: 0.5rem;
252
+ padding-inline-end: 0.5rem;
251
253
  line-height: 1rem;
252
254
  z-index: 1;
253
255
  white-space: nowrap;
@@ -265,11 +267,11 @@ span.border.invalid {
265
267
  }
266
268
 
267
269
  .left-pad {
268
- padding-left: 3rem;
270
+ padding-inline-start: 3rem;
269
271
  }
270
272
 
271
273
  .right-pad {
272
- padding-right: 3rem;
274
+ padding-inline-end: 3rem;
273
275
  }
274
276
 
275
277
  .icon-container {
@@ -284,13 +286,12 @@ span.border.invalid {
284
286
  height: 100%;
285
287
  top: 0;
286
288
  bottom: 0;
287
- left: 0;
288
- right: 0;
289
+ inset-inline: 0;
289
290
  }
290
291
 
291
292
  .error {
292
293
  color: #aa1414;
293
- margin-left: 0.25rem;
294
+ margin-inline-start: 0.25rem;
294
295
  display: block;
295
296
  overflow-x: auto;
296
297
  white-space: nowrap;
@@ -1,6 +1,7 @@
1
1
  <svelte:options runes />
2
2
 
3
- <script lang="ts">import { cssLength, isValidEmailAddress } from "../Helpers/Helpers.svelte.js";
3
+ <script lang="ts">import { m as i18n } from "../paraglide/messages.js";
4
+ import { cssLength, isValidEmailAddress } from "../Helpers/Helpers.svelte.js";
4
5
  import { Colour, ColourSet } from "../scss/colours.js";
5
6
  import { InputVariant } from "../Types/Internal/InputVariant.js";
6
7
  import { Size } from "../Types/Internal/Size.js";
@@ -24,14 +25,14 @@ const isInvalid = $derived(showErrorColours && !disabled && (required && (!value
24
25
  class="top-label"
25
26
  class:for-default={variant === InputVariant.Default}
26
27
  class:invalid={isInvalid}
27
- >{labelTop}{#if optional}<i>&nbsp;- optional</i>{/if}</span
28
+ >{labelTop}{#if optional}<i>&nbsp;- {i18n['scoria.label.optional']()}</i>{/if}</span
28
29
  >
29
30
  {#if variant === InputVariant.Default}
30
31
  <span
31
32
  aria-hidden="true"
32
33
  class="border"
33
34
  class:invalid={isInvalid}
34
- >{labelTop}{#if optional}<i>&nbsp;- optional</i>{/if}</span
35
+ >{labelTop}{#if optional}<i>&nbsp;- {i18n['scoria.label.optional']()}</i>{/if}</span
35
36
  >
36
37
  {/if}
37
38
  {/if}
@@ -130,8 +131,8 @@ const isInvalid = $derived(showErrorColours && !disabled && (required && (!value
130
131
  font-weight: 400;
131
132
  padding-top: var(--input-padding-top, 0.65rem);
132
133
  padding-bottom: var(--input-padding-bottom, 0.55rem);
133
- padding-left: var(--input-padding-left, 0.75rem);
134
- padding-right: var(--input-padding-right, 0.75rem);
134
+ padding-inline-start: var(--input-padding-inline-start, 0.75rem);
135
+ padding-inline-end: var(--input-padding-inline-end, 0.75rem);
135
136
  border: var(--input-border, solid 1px #cbd4da);
136
137
  color: #3a4952;
137
138
  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;
@@ -163,8 +164,8 @@ span.right-label.inset {
163
164
  font-weight: 500;
164
165
  position: absolute;
165
166
  background-color: #f4f7f9;
166
- border-left: solid 1px #cbd4da;
167
- right: 1px;
167
+ border-inline-start: solid 1px #cbd4da;
168
+ inset-inline-end: 1px;
168
169
  top: 1px;
169
170
  bottom: 1px;
170
171
  border-radius: 0 4px 4px 0;
@@ -188,11 +189,11 @@ span.right-label.for-modal {
188
189
 
189
190
  span.for-default {
190
191
  position: absolute;
191
- left: 0.5rem;
192
+ inset-inline-start: 0.5rem;
192
193
  font-size: 0.875rem;
193
194
  user-select: none;
194
- padding-left: 0.5rem;
195
- padding-right: 0.5rem;
195
+ padding-inline-start: 0.5rem;
196
+ padding-inline-end: 0.5rem;
196
197
  line-height: 1rem;
197
198
  padding: 0rem 0.5rem;
198
199
  top: calc(-0.875rem / 2 - 2px);
@@ -206,11 +207,11 @@ span.for-default.invalid {
206
207
 
207
208
  span.border {
208
209
  position: absolute;
209
- left: 0.5rem;
210
+ inset-inline-start: 0.5rem;
210
211
  font-size: 0.875rem;
211
212
  user-select: none;
212
- padding-left: 0.5rem;
213
- padding-right: 0.5rem;
213
+ padding-inline-start: 0.5rem;
214
+ padding-inline-end: 0.5rem;
214
215
  line-height: 1rem;
215
216
  z-index: 1;
216
217
  white-space: nowrap;
@@ -228,11 +229,11 @@ span.border.invalid {
228
229
  }
229
230
 
230
231
  .left-pad {
231
- padding-left: 3rem;
232
+ padding-inline-start: 3rem;
232
233
  }
233
234
 
234
235
  .right-pad {
235
- padding-right: 3rem;
236
+ padding-inline-end: 3rem;
236
237
  }
237
238
 
238
239
  .icon-container {
@@ -247,13 +248,12 @@ span.border.invalid {
247
248
  height: 100%;
248
249
  top: 0;
249
250
  bottom: 0;
250
- left: 0;
251
- right: 0;
251
+ inset-inline: 0;
252
252
  }
253
253
 
254
254
  .error {
255
255
  color: #aa1414;
256
- margin-left: 0.25rem;
256
+ margin-inline-start: 0.25rem;
257
257
  display: block;
258
258
  overflow-x: auto;
259
259
  white-space: nowrap;
@@ -261,7 +261,7 @@ span.border.invalid {
261
261
 
262
262
  .right-icon {
263
263
  position: absolute;
264
- right: 0.5rem;
264
+ inset-inline-end: 0.5rem;
265
265
  top: 50%;
266
266
  translate: 0 -50%;
267
267
  }
@@ -285,8 +285,7 @@ label {
285
285
  position: absolute;
286
286
  top: 0;
287
287
  bottom: 0;
288
- left: 0;
289
- right: 0;
288
+ inset-inline: 0;
290
289
  }
291
290
  .error-wrapper.for-modal {
292
291
  flex: unset;
@@ -308,7 +307,7 @@ label.for-modal span.top-label {
308
307
  z-index: 1;
309
308
  position: absolute;
310
309
  top: 0.45rem;
311
- left: 0.75rem;
310
+ inset-inline-start: 0.75rem;
312
311
  }
313
312
  label.for-modal span.top-label.invalid {
314
313
  color: #aa1414;
@@ -329,17 +328,17 @@ label.for-modal input.for-modal {
329
328
  height: 100%;
330
329
  resize: none;
331
330
  padding-top: 1.44rem;
332
- padding-right: 0.75rem;
331
+ padding-inline-end: 0.75rem;
333
332
  padding-bottom: 0.25rem;
334
- padding-left: 0.75rem;
333
+ padding-inline-start: 0.75rem;
335
334
  font-size: 1.5rem;
336
335
  font-weight: 600;
337
336
  }
338
337
  label.for-modal input.for-modal.left-pad {
339
- padding-left: 3.5rem;
338
+ padding-inline-start: 3.5rem;
340
339
  }
341
340
  label.for-modal input.for-modal.right-pad {
342
- padding-right: 3.5rem;
341
+ padding-inline-end: 3.5rem;
343
342
  }
344
343
  label.for-modal input {
345
344
  height: 3rem;
@@ -3,7 +3,8 @@
3
3
  <script
4
4
  lang="ts"
5
5
  module
6
- >import { Colour, ColourSet } from "../scss/colours.js";
6
+ >import { m as i18n } from "../paraglide/messages.js";
7
+ import { Colour, ColourSet } from "../scss/colours.js";
7
8
  import { Ternary } from "../Types/Internal/Ternary.js";
8
9
  import Action from "./Action.svelte";
9
10
  </script>
@@ -31,7 +32,7 @@ function setValue(next) {
31
32
  role="radiogroup"
32
33
  aria-label={label}
33
34
  >
34
- <label>
35
+ <label class:disabled={disabled || noDisabled}>
35
36
  <Action
36
37
  disabled={disabled || noDisabled}
37
38
  colourSet={value === Ternary.False ? ColourSet.Primary : ColourSet.Auxiliary}
@@ -40,7 +41,7 @@ function setValue(next) {
40
41
  ...noIcon,
41
42
  colour: value === Ternary.False ? undefined : Colour['$ui-blue-5'],
42
43
  }}
43
- label={noLabel ?? 'No'}
44
+ label={noLabel ?? i18n['scoria.action.no']()}
44
45
  onclick={() => {
45
46
  setValue(Ternary.False);
46
47
  }}
@@ -50,13 +51,13 @@ function setValue(next) {
50
51
  type="radio"
51
52
  value="0"
52
53
  checked={value === Ternary.False}
53
- aria-label={noLabel ?? 'No'}
54
+ aria-label={noLabel ?? i18n['scoria.action.no']()}
54
55
  onchange={() => {
55
56
  setValue(Ternary.False);
56
57
  }}
57
58
  />
58
59
  </label>
59
- <label>
60
+ <label class:disabled={disabled || neutralDisabled}>
60
61
  <Action
61
62
  disabled={disabled || neutralDisabled}
62
63
  colourSet={value === Ternary.Neutral ? ColourSet.Primary : ColourSet.Auxiliary}
@@ -65,7 +66,7 @@ function setValue(next) {
65
66
  ...neutralIcon,
66
67
  colour: value === Ternary.Neutral ? undefined : Colour['$ui-blue-5'],
67
68
  }}
68
- label={neutralLabel ?? 'Allow system to decide'}
69
+ label={neutralLabel ?? i18n['scoria.label.allow_system_decide']()}
69
70
  onclick={() => {
70
71
  setValue(Ternary.Neutral);
71
72
  }}
@@ -75,13 +76,13 @@ function setValue(next) {
75
76
  type="radio"
76
77
  value="-1"
77
78
  checked={value === Ternary.Neutral}
78
- aria-label={neutralLabel ?? 'Allow system to decide'}
79
+ aria-label={neutralLabel ?? i18n['scoria.label.allow_system_decide']()}
79
80
  onchange={() => {
80
81
  setValue(Ternary.Neutral);
81
82
  }}
82
83
  />
83
84
  </label>
84
- <label>
85
+ <label class:disabled={disabled || yesDisabled}>
85
86
  <Action
86
87
  disabled={disabled || yesDisabled}
87
88
  colourSet={value === Ternary.True ? ColourSet.Primary : ColourSet.Auxiliary}
@@ -90,7 +91,7 @@ function setValue(next) {
90
91
  ...yesIcon,
91
92
  colour: value === Ternary.True ? undefined : Colour['$ui-blue-5'],
92
93
  }}
93
- label={yesLabel ?? 'Yes'}
94
+ label={yesLabel ?? i18n['scoria.action.yes']()}
94
95
  onclick={() => {
95
96
  setValue(Ternary.True);
96
97
  }}
@@ -100,7 +101,7 @@ function setValue(next) {
100
101
  type="radio"
101
102
  value="1"
102
103
  checked={value === Ternary.True}
103
- aria-label={yesLabel ?? 'Yes'}
104
+ aria-label={yesLabel ?? i18n['scoria.action.yes']()}
104
105
  onchange={() => {
105
106
  setValue(Ternary.True);
106
107
  }}
@@ -142,12 +143,16 @@ function setValue(next) {
142
143
  align-items: center;
143
144
  --border-radius: 3px;
144
145
  padding: 0.375rem;
145
- padding-left: 0.375rem;
146
- border-left: solid 1px #cbd4da;
146
+ padding-inline-start: 0.375rem;
147
+ border-inline-start: solid 1px #cbd4da;
147
148
  }
148
149
  .text-label .radios > label:not(:first-child) {
149
- border-left: solid 2px #cbd4da;
150
- border-left-style: dotted;
150
+ border-inline-start: solid 2px #cbd4da;
151
+ border-inline-start-style: dotted;
152
+ }
153
+ .text-label .radios > label.disabled {
154
+ cursor: not-allowed;
155
+ background-color: #e9ecf1;
151
156
  }
152
157
  .text-label.invalid {
153
158
  background-color: #f9e9e9;
@@ -159,8 +164,8 @@ function setValue(next) {
159
164
  }
160
165
  .text-label span {
161
166
  flex-grow: 1;
162
- padding-left: 0.5rem;
163
- padding-right: 0.5rem;
167
+ padding-inline-start: 0.5rem;
168
+ padding-inline-end: 0.5rem;
164
169
  text-align: start;
165
170
  }
166
171
  .text-label:disabled {
@@ -103,7 +103,7 @@ button.card .row {
103
103
  flex-grow: 1;
104
104
  }
105
105
  button.card.pad-right {
106
- padding-right: 4rem;
106
+ padding-inline-end: 4rem;
107
107
  }
108
108
  button.card .card-label {
109
109
  color: #647d8e;
@@ -147,7 +147,7 @@ button.card.small {
147
147
  button.card .value {
148
148
  overflow: hidden;
149
149
  text-overflow: ellipsis;
150
- white-space: nowrap;
150
+ white-space: normal;
151
151
  align-items: center;
152
152
  justify-content: stretch;
153
153
  flex-grow: 1;
@@ -7,6 +7,7 @@
7
7
  import { ColourSet } from "../../scss/colours.js";
8
8
  import { InputVariant } from "../../Types/Internal/InputVariant.js";
9
9
  import { Size } from "../../Types/Internal/Size.js";
10
+ import { m as i18n } from "../../paraglide/messages.js";
10
11
  import { tick } from "svelte";
11
12
  import Action from "../Action.svelte";
12
13
  import DatePicker from "../DatePicker.svelte";
@@ -97,7 +98,7 @@ function submitOnEnter(e) {
97
98
  bind:inputRef={overrideInputRef}
98
99
  bind:value={overrideScanValue}
99
100
  variant={InputVariant.Modal}
100
- labelTop="Scan Barcode to Override"
101
+ labelTop={i18n['scoria.label.scan_barcode_override']()}
101
102
  onkeydown={submitOnEnter}
102
103
  />
103
104
  {/if}
@@ -105,7 +106,7 @@ function submitOnEnter(e) {
105
106
  bind:inputRef
106
107
  bind:value={scanValue}
107
108
  variant={InputVariant.Modal}
108
- labelTop="Scan Barcode"
109
+ labelTop={i18n['scoria.label.scan_barcode']()}
109
110
  onkeydown={submitOnEnter}
110
111
  />
111
112
  </div>
@@ -136,14 +137,14 @@ function submitOnEnter(e) {
136
137
  <button
137
138
  onkeydown={passthrough}
138
139
  type="submit"
139
- disabled={!isValid}>Confirm</button
140
+ disabled={!isValid}>{i18n['scoria.action.confirm']()}</button
140
141
  >
141
142
  <button
142
143
  onkeydown={passthrough}
143
144
  type="button"
144
145
  onclick={() => {
145
146
  cancelEditing();
146
- }}>Cancel</button
147
+ }}>{i18n['scoria.action.cancel']()}</button
147
148
  >
148
149
  </div>
149
150
  {/snippet}
@@ -118,7 +118,7 @@ const { noborder, label, desktop = false, iconName = "edit", disabled = false, e
118
118
  flex-grow: 1;
119
119
  }
120
120
  .card.pad-right {
121
- padding-right: 4rem;
121
+ padding-inline-end: 4rem;
122
122
  }
123
123
  .card .card-label {
124
124
  color: #647d8e;
@@ -164,11 +164,11 @@ const { noborder, label, desktop = false, iconName = "edit", disabled = false, e
164
164
  }
165
165
  .card.desktop .card-label.label {
166
166
  position: absolute;
167
- left: 0.5rem;
167
+ inset-inline-start: 0.5rem;
168
168
  font-size: 0.875rem;
169
169
  user-select: none;
170
- padding-left: 0.5rem;
171
- padding-right: 0.5rem;
170
+ padding-inline-start: 0.5rem;
171
+ padding-inline-end: 0.5rem;
172
172
  line-height: 1rem;
173
173
  padding: 0rem 0.5rem;
174
174
  top: calc(-0.875rem / 2 - 2px);
@@ -181,11 +181,11 @@ const { noborder, label, desktop = false, iconName = "edit", disabled = false, e
181
181
  }
182
182
  .card.desktop .card-label.border {
183
183
  position: absolute;
184
- left: 0.5rem;
184
+ inset-inline-start: 0.5rem;
185
185
  font-size: 0.875rem;
186
186
  user-select: none;
187
- padding-left: 0.5rem;
188
- padding-right: 0.5rem;
187
+ padding-inline-start: 0.5rem;
188
+ padding-inline-end: 0.5rem;
189
189
  line-height: 1rem;
190
190
  z-index: 1;
191
191
  white-space: nowrap;
@@ -3,7 +3,8 @@
3
3
  <script
4
4
  module
5
5
  lang="ts"
6
- >import { devCatch, passthrough } from "../../Helpers/Helpers.svelte.js";
6
+ >import { m as i18n } from "../../paraglide/messages.js";
7
+ import { devCatch, passthrough } from "../../Helpers/Helpers.svelte.js";
7
8
  import { InputVariant } from "../../Types/Internal/InputVariant.js";
8
9
  import { tick, untrack } from "svelte";
9
10
  import Icon from "../Icon.svelte";
@@ -131,7 +132,7 @@ function onDigitClick(e) {
131
132
  {#if max != undefined}
132
133
  <TextInput
133
134
  value={`${max}`}
134
- labelTop="Maximum"
135
+ labelTop={i18n['scoria.label.maximum']()}
135
136
  selectNone
136
137
  disabled
137
138
  variant={InputVariant.Modal}
@@ -1,6 +1,7 @@
1
1
  <svelte:options runes />
2
2
 
3
- <script lang="ts">import { useAsyncFlag } from "../../Helpers/AsyncFlag.svelte.js";
3
+ <script lang="ts">import { m as i18n } from "../../paraglide/messages.js";
4
+ import { useAsyncFlag } from "../../Helpers/AsyncFlag.svelte.js";
4
5
  import { passthrough } from "../../Helpers/Helpers.svelte.js";
5
6
  import NumberKeyboard from "./NumberKeyboard.svelte";
6
7
  import TouchModal from "./TouchModal.svelte";
@@ -43,14 +44,14 @@ const isAcceptableValue = useAsyncFlag(() => tempValue == null ? false : isValid
43
44
  <button
44
45
  onkeydown={passthrough}
45
46
  type="submit"
46
- disabled={!isAcceptableValue.value}>Confirm</button
47
+ disabled={!isAcceptableValue.value}>{i18n['scoria.action.confirm']()}</button
47
48
  >
48
49
  <button
49
50
  onkeydown={passthrough}
50
51
  type="button"
51
52
  onclick={() => {
52
53
  cancelEditing();
53
- }}>Cancel</button
54
+ }}>{i18n['scoria.action.cancel']()}</button
54
55
  >
55
56
  </div>
56
57
  {/snippet}
@@ -1,6 +1,7 @@
1
1
  <svelte:options runes />
2
2
 
3
- <script lang="ts">import { Size } from "../../Types/Internal/Size.js";
3
+ <script lang="ts">import { m as i18n } from "../../paraglide/messages.js";
4
+ import { Size } from "../../Types/Internal/Size.js";
4
5
  import Action from "../Action.svelte";
5
6
  let { callback, disabled = false, children } = $props();
6
7
  </script>
@@ -12,7 +13,7 @@ let { callback, disabled = false, children } = $props();
12
13
  <div class="icon-left">
13
14
  <Action
14
15
  {disabled}
15
- label="Decrement"
16
+ label={i18n['scoria.action.decrement']()}
16
17
  onclick={() => {
17
18
  callback(-1);
18
19
  }}
@@ -27,7 +28,7 @@ let { callback, disabled = false, children } = $props();
27
28
  <div class="icon-right">
28
29
  <Action
29
30
  {disabled}
30
- label="Increment"
31
+ label={i18n['scoria.action.increment']()}
31
32
  onclick={() => {
32
33
  callback(1);
33
34
  }}
@@ -75,8 +76,8 @@ let { callback, disabled = false, children } = $props();
75
76
  user-select: none;
76
77
  justify-content: center;
77
78
  text-align: center;
78
- padding-left: 0.375rem;
79
- padding-right: 0.375rem;
79
+ padding-inline-start: 0.375rem;
80
+ padding-inline-end: 0.375rem;
80
81
  }
81
82
  .card .icon-left,
82
83
  .card .icon-right {
@@ -1,6 +1,7 @@
1
1
  <svelte:options runes />
2
2
 
3
- <script lang="ts">import { devCatch, passthrough } from "../../Helpers/Helpers.svelte.js";
3
+ <script lang="ts">import { m as i18n } from "../../paraglide/messages.js";
4
+ import { devCatch, passthrough } from "../../Helpers/Helpers.svelte.js";
4
5
  import { InputVariant } from "../../Types/Internal/InputVariant.js";
5
6
  import { onMount, tick } from "svelte";
6
7
  import TextInput from "../TextInput.svelte";
@@ -47,7 +48,7 @@ onMount(() => {
47
48
  class:with-top-padding={!searchbar}
48
49
  >
49
50
  {#if filteredChoices.length === 0}
50
- <span>No Results</span>
51
+ <span>{i18n['scoria.text.no_results']()}</span>
51
52
  {/if}
52
53
  <!-- Keyed by index, not `choice.label`: labels are not guaranteed
53
54
  unique (e.g. a courier can expose two services with the same
@@ -88,7 +89,7 @@ onMount(() => {
88
89
  {#if searchbar}
89
90
  <div class="header-extra visible">
90
91
  <TextInput
91
- labelTop="Search"
92
+ labelTop={i18n['scoria.label.search']()}
92
93
  bind:value={searchValue}
93
94
  variant={InputVariant.Modal}
94
95
  />
@@ -103,7 +104,7 @@ onMount(() => {
103
104
  type="button"
104
105
  onclick={() => {
105
106
  cancelEditing();
106
- }}>Cancel</button
107
+ }}>{i18n['scoria.action.cancel']()}</button
107
108
  >
108
109
  </div>
109
110
  {/snippet}