@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
@@ -3,20 +3,23 @@
3
3
  <script
4
4
  lang="ts"
5
5
  generics="V extends object, VP extends ValueProp<V>"
6
- >import { devCatch, generateWeakId, vowels } from "../Helpers/Helpers.svelte.js";
6
+ >import { m as i18n } from "../paraglide/messages.js";
7
+ import { devCatch, generateWeakId, vowels } from "../Helpers/Helpers.svelte.js";
7
8
  import { attachDropdownPortal } from "../Helpers/dropdownPortal.js";
8
9
  import { Colour, ColourSet } from "../scss/colours.js";
9
10
  import { Size } from "../Types/Internal/Size.js";
10
11
  import Svelecte from "svelecte";
11
12
  import { onMount, tick } from "svelte";
12
13
  import Action from "./Action.svelte";
13
- const { label, options, labelProp, valueProp, focusOnLoad = false, searchable = true, creatable = false, createFilter, disabled, width, height, name = "Item", valueAsObject, minHeight, clearable = false, required = false, invalid = false, borderless = false, lazyDropdown = false, forceUpwards = false, inputId = generateWeakId(), value: selectedValue, onchange, onfocus, onCreateOption } = $props();
14
+ const { label, options, labelProp, valueProp, focusOnLoad = false, searchable = true, creatable = false, createFilter, disabled, width, height, name = "Item", placeholder, valueAsObject, minHeight, clearable = false, required = false, invalid = false, borderless = false, lazyDropdown = false, forceUpwards = false, inputId = generateWeakId(), value: selectedValue, onchange, onfocus, onCreateOption } = $props();
14
15
  // Single source of truth for the current value. The previous code mixed
15
16
  // `$derived` and `$effect.pre`, which fired a redundant assignment on mount.
16
17
  const currentValue = $derived(selectedValue);
17
18
  let ref = $state();
18
19
  let wrapperRef = $state();
19
- const an = $derived(name && vowels.has(name.at(0)?.toLocaleLowerCase() ?? "") ? "an" : "a");
20
+ // English-only article choice. The article itself lives in the message, so a
21
+ // translator owns the whole phrase and can drop or decline it per locale.
22
+ 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"]());
20
23
  const isInvalid = $derived(required && !currentValue || invalid);
21
24
  let hasAutoFocused = $state(false);
22
25
  // ResizeObserver-driven height. Replaces the layout-forcing
@@ -96,10 +99,10 @@ function isObject(value) {
96
99
  {#if label}
97
100
  <label for={inputId}>
98
101
  <span
99
- >{label}{#if !required}&nbsp;- <i>optional</i>{/if}</span
102
+ >{label}{#if !required}&nbsp;- <i>{i18n['scoria.label.optional']()}</i>{/if}</span
100
103
  >
101
104
  <span class="border"
102
- >{label}{#if !required}&nbsp;- <i>optional</i>{/if}</span
105
+ >{label}{#if !required}&nbsp;- <i>{i18n['scoria.label.optional']()}</i>{/if}</span
103
106
  >
104
107
  </label>
105
108
  {/if}
@@ -123,7 +126,7 @@ function isObject(value) {
123
126
  {creatable}
124
127
  searchProps={{ keepSelectionInList: true }}
125
128
  {onCreateOption}
126
- placeholder="Please Select {name ? `${an} ${name}` : ''}"
129
+ placeholder={placeholder ?? fallbackPlaceholder}
127
130
  {lazyDropdown}
128
131
  value={// eslint-disable-next-line @typescript-eslint/no-explicit-any
129
132
  currentValue as Array<any>}
@@ -220,19 +223,20 @@ function isObject(value) {
220
223
  }
221
224
  .select-wrapper label {
222
225
  position: absolute;
223
- left: 0.5rem;
226
+ inset-inline-start: 0.5rem;
224
227
  z-index: 1;
228
+ width: calc(100% - 1rem);
225
229
  font-size: 0.875rem;
226
230
  padding: 0.05rem 0.4rem;
227
231
  color: #647d8e;
228
232
  }
229
233
  .select-wrapper label span:not(.border) {
230
234
  position: absolute;
231
- left: 0.5rem;
235
+ inset-inline-start: 0.5rem;
232
236
  font-size: 0.875rem;
233
237
  user-select: none;
234
- padding-left: 0.5rem;
235
- padding-right: 0.5rem;
238
+ padding-inline-start: 0.5rem;
239
+ padding-inline-end: 0.5rem;
236
240
  line-height: 1rem;
237
241
  padding: 0rem 0.5rem;
238
242
  top: calc(-0.875rem / 2 - 2px);
@@ -243,13 +247,18 @@ function isObject(value) {
243
247
  .select-wrapper label span:not(.border).invalid {
244
248
  color: #aa1414;
245
249
  }
250
+ .select-wrapper label span:not(.border) {
251
+ max-width: calc(100% - 1rem);
252
+ overflow: hidden;
253
+ text-overflow: ellipsis;
254
+ }
246
255
  .select-wrapper label span.border {
247
256
  position: absolute;
248
- left: 0.5rem;
257
+ inset-inline-start: 0.5rem;
249
258
  font-size: 0.875rem;
250
259
  user-select: none;
251
- padding-left: 0.5rem;
252
- padding-right: 0.5rem;
260
+ padding-inline-start: 0.5rem;
261
+ padding-inline-end: 0.5rem;
253
262
  line-height: 1rem;
254
263
  z-index: 1;
255
264
  white-space: nowrap;
@@ -261,6 +270,11 @@ function isObject(value) {
261
270
  .select-wrapper label span.border.invalid {
262
271
  border-bottom-color: #f9e9e9;
263
272
  }
273
+ .select-wrapper label span.border {
274
+ max-width: calc(100% - 1rem);
275
+ overflow: hidden;
276
+ text-overflow: ellipsis;
277
+ }
264
278
  .select-wrapper :global(.svelecte.svelecte-control) {
265
279
  cursor: pointer;
266
280
  max-width: 100%;
@@ -306,7 +320,7 @@ function isObject(value) {
306
320
  }
307
321
  .select-wrapper .selection {
308
322
  font-size: 0.875rem;
309
- padding-left: 0.5rem;
323
+ padding-inline-start: 0.5rem;
310
324
  white-space: nowrap;
311
325
  display: flex;
312
326
  }
@@ -325,7 +339,7 @@ div.icons {
325
339
  flex-flow: row nowrap;
326
340
  gap: 0.25rem;
327
341
  height: 100%;
328
- margin-right: 0.25rem;
342
+ margin-inline-end: 0.25rem;
329
343
  box-sizing: border-box;
330
344
  }
331
345
 
@@ -350,6 +364,7 @@ div.icons {
350
364
  text-overflow: ellipsis;
351
365
  gap: 1rem;
352
366
  font-size: 0.875rem;
367
+ line-height: 1.6;
353
368
  fill: #259fc7;
354
369
  }
355
370
  :global(.dropdown-item) .toggle-icon {
@@ -6,8 +6,17 @@ export interface SingleSelectCommonProps<V extends object, VP extends ValueProp<
6
6
  labelProp: NonNullableKey<V>;
7
7
  /** Key of `V` whose value is the unique identifier. */
8
8
  valueProp: VP;
9
- /** Singular display name. */
9
+ /**
10
+ * Singular display name of the entity. This is the `<Svelecte>` **form-field
11
+ * attribute**, not display copy - it is only used to compose the English-only
12
+ * fallback placeholder when `placeholder` is not supplied.
13
+ */
10
14
  name?: string;
15
+ /**
16
+ * Complete placeholder sentence. Pass a translated whole phrase; when omitted
17
+ * scoria composes an English-only fallback from `name`.
18
+ */
19
+ placeholder?: string;
11
20
  /** CSS width override. Use `cssLength('...')` to construct. */
12
21
  width?: CssLength;
13
22
  /** CSS height override. Use `cssLength('...')` to construct. */
@@ -6,10 +6,11 @@
6
6
  >import { readJSON } from "../Helpers/Storage.js";
7
7
  import { ColourSet } from "../scss/colours.js";
8
8
  import { Size } from "../Types/Internal/Size.js";
9
+ import { m as i18n } from "../paraglide/messages.js";
9
10
  import { onMount, untrack } from "svelte";
10
11
  import Button from "./Button.svelte";
11
12
  import StepButton from "./StepButton.svelte";
12
- const { name, steps, currentStep, noscroll = false, noStepMessage = "No Step Selected" } = $props();
13
+ const { name, steps, currentStep, noscroll = false, noStepMessage = i18n["scoria.text.no_step_selected"]() } = $props();
13
14
  const isNonEmptyString = (raw) => typeof raw === "string" && raw.length > 0;
14
15
  const storageKey = (key) => `scoria-step-form:${key}:active-step`;
15
16
  onMount(() => {
@@ -89,7 +90,7 @@ $effect(() => {
89
90
  onclick={() => {
90
91
  previous?.onclick();
91
92
  }}
92
- colourSet={ColourSet.Secondary}>Previous</Button
93
+ colourSet={ColourSet.Secondary}>{i18n['scoria.action.previous']()}</Button
93
94
  >
94
95
  <Button
95
96
  size={Size.Small}
@@ -98,7 +99,7 @@ $effect(() => {
98
99
  next?.onclick();
99
100
  }}
100
101
  disabled={!next}
101
- colourSet={ColourSet.Primary}>Next</Button
102
+ colourSet={ColourSet.Primary}>{i18n['scoria.action.next']()}</Button
102
103
  >
103
104
  </div>
104
105
  </div>
@@ -155,8 +156,8 @@ $effect(() => {
155
156
  gap: 1.0005rem;
156
157
  padding-top: 0.5rem;
157
158
  padding-bottom: 0.5rem;
158
- padding-left: 1.250625rem;
159
- padding-right: 1.250625rem;
159
+ padding-inline-start: 1.250625rem;
160
+ padding-inline-end: 1.250625rem;
160
161
  flex-basis: 4rem;
161
162
  flex-shrink: 0;
162
163
  background-color: #ffffff;
@@ -91,8 +91,8 @@ const toggle = () => {
91
91
  }
92
92
  .text-label span {
93
93
  flex-grow: 1;
94
- padding-left: 0.5rem;
95
- padding-right: 0.5rem;
94
+ padding-inline-start: 0.5rem;
95
+ padding-inline-end: 0.5rem;
96
96
  text-align: start;
97
97
  }
98
98
  .text-label:disabled {
@@ -120,9 +120,9 @@ const toggle = () => {
120
120
  }
121
121
 
122
122
  .switch {
123
- border-top-right-radius: 4px;
124
- border-bottom-right-radius: 4px;
125
- border-left: solid 1px #cbd4da;
123
+ border-start-end-radius: 4px;
124
+ border-end-end-radius: 4px;
125
+ border-inline-start: solid 1px #cbd4da;
126
126
  width: 4rem;
127
127
  height: 100%;
128
128
  background-color: #f4f7f9;