@lavalogic/scoria 0.0.40 → 0.0.42

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.
@@ -2,6 +2,7 @@
2
2
 
3
3
  <script lang="ts" module>
4
4
  import QuerySelect from '../../../../QuerySelect.svelte';
5
+ import type { Column } from '../../../Types/Columns/Column.js';
5
6
  import type { QueryDef } from '../../../Types/Columns/Definitions/Accessors/QueryDef.svelte.js';
6
7
  import type { TableCell } from '../../../Types/Columns/TableCell.js';
7
8
  import { TableContext } from '../../../Types/Context/TableContext.svelte.js';
@@ -10,8 +11,17 @@
10
11
  import type { SelectOption } from '../../../../../Types/Internal/SelectOption.js';
11
12
  import { Validity } from '../../../../../Types/Internal/Validity.js';
12
13
  import { getContext, tick, untrack } from 'svelte';
14
+
15
+ export interface TableQueryColumn<T extends object> extends Column<T> {
16
+ columnDef: QueryDef<T>;
17
+ }
18
+
19
+ export interface TableQueryCell<T extends object> extends TableCell<T> {
20
+ column: TableQueryColumn<T>;
21
+ }
22
+
13
23
  export interface TableQuerySelectProps<T extends object> {
14
- cell: TableCell<T>;
24
+ cell: TableQueryCell<T>;
15
25
  }
16
26
  </script>
17
27
 
@@ -22,6 +32,10 @@
22
32
  (cell.getValue() ?? null) as SelectOption<unknown> | Promise<SelectOption<unknown>> | null
23
33
  );
24
34
 
35
+ const visibleValue = $derived(
36
+ cell.column.columnDef.getDisplayValue(cell.row.original, cell.row.originalIndex)
37
+ );
38
+
25
39
  let tdref = $state<HTMLTableCellElement | undefined>();
26
40
 
27
41
  const columnDef: QueryDef<T> = $derived(cell.column.columnDef) as unknown as QueryDef<T>; // TODO stabilise and remove `as unknown`
@@ -211,6 +225,7 @@
211
225
  focusOnLoad
212
226
  name={cell.column.columnDef.id}
213
227
  valueProp="value"
228
+ clearable={cell.column.columnDef.clearable ?? true}
214
229
  labelProp="label"
215
230
  valueAsObject={columnDef.valueAsObject}
216
231
  {value}
@@ -269,7 +284,7 @@
269
284
  }
270
285
  }}
271
286
  >
272
- {#await value}
287
+ {#await visibleValue}
273
288
  loading…
274
289
  {:then v}
275
290
  {v}
@@ -1,6 +1,14 @@
1
+ import type { Column } from '../../../Types/Columns/Column.js';
2
+ import type { QueryDef } from '../../../Types/Columns/Definitions/Accessors/QueryDef.svelte.js';
1
3
  import type { TableCell } from '../../../Types/Columns/TableCell.js';
4
+ export interface TableQueryColumn<T extends object> extends Column<T> {
5
+ columnDef: QueryDef<T>;
6
+ }
7
+ export interface TableQueryCell<T extends object> extends TableCell<T> {
8
+ column: TableQueryColumn<T>;
9
+ }
2
10
  export interface TableQuerySelectProps<T extends object> {
3
- cell: TableCell<T>;
11
+ cell: TableQueryCell<T>;
4
12
  }
5
13
  declare function $$render<T extends object>(): {
6
14
  props: TableQuerySelectProps<T>;
@@ -1,7 +1,6 @@
1
1
  <svelte:options runes />
2
2
 
3
3
  <script lang="ts" module>
4
- import { dev } from '$app/environment';
5
4
  import SingleSelect from '../../../../SingleSelect.svelte';
6
5
  import type { Column } from '../../../Types/Columns/Column.js';
7
6
  import type { SelectDef } from '../../../Types/Columns/Definitions/Accessors/SelectDef.svelte.js';
@@ -209,7 +208,7 @@
209
208
  value={selectValue}
210
209
  {options}
211
210
  width="100%"
212
- clearable={optional}
211
+ clearable={cell.column.columnDef.clearable}
213
212
  onfocus={addKeydownEvent}
214
213
  valueAsObject={false}
215
214
  onchange={(newValue: SelectOption<unknown> | null) => {
@@ -5,10 +5,14 @@ import { AccessorDef } from './AccessorDef.svelte.js';
5
5
  export interface QueryDefProps<T extends object> extends ColumnDefProps<T> {
6
6
  valueAsObject: boolean;
7
7
  query: (queryString: string, item: T, index: number) => Promise<Array<SelectOption<unknown>>>;
8
+ getDisplayValue: (item: T, index: number) => string | null | Promise<string | null>;
9
+ clearable?: boolean;
8
10
  }
9
11
  export declare class QueryDef<T extends object> extends AccessorDef<T, StringFilterValueType> {
10
12
  readonly accessorType: "Query";
11
13
  constructor(props: QueryDefProps<T>);
12
14
  readonly valueAsObject: boolean;
15
+ readonly getDisplayValue: (item: T, index: number) => string | null | Promise<string | null>;
13
16
  readonly query: (queryString: string, item: T, index: number) => Promise<Array<SelectOption<unknown>>>;
17
+ readonly clearable: boolean;
14
18
  }
@@ -6,7 +6,11 @@ export class QueryDef extends AccessorDef {
6
6
  super(props);
7
7
  this.valueAsObject = $derived(props.valueAsObject);
8
8
  this.query = $derived(props.query);
9
+ this.getDisplayValue = $derived(props.getDisplayValue);
10
+ this.clearable = $derived(props.clearable ?? true);
9
11
  }
10
12
  valueAsObject;
13
+ getDisplayValue;
11
14
  query;
15
+ clearable;
12
16
  }
@@ -7,6 +7,7 @@ export interface SelectDefProps<T extends object> extends ColumnDefProps<T> {
7
7
  sortingFn?: (a: T, b: T) => 1 | -1 | 0;
8
8
  getSpecificOptions?: (item?: T, index?: number) => Array<SelectOption<unknown>> | Promise<Array<SelectOption<unknown>>>;
9
9
  optional?: boolean;
10
+ clearable?: boolean;
10
11
  }
11
12
  export declare class SelectDef<T extends object> extends AccessorDef<T, T> {
12
13
  constructor(props: SelectDefProps<T>);
@@ -14,6 +15,7 @@ export declare class SelectDef<T extends object> extends AccessorDef<T, T> {
14
15
  readonly sortingFn?: (a: T, b: T) => 1 | -1 | 0;
15
16
  readonly getDisplayValue: (item: T, index: number) => string | null | Promise<string | null>;
16
17
  readonly optional: boolean;
18
+ readonly clearable: boolean;
17
19
  readonly getSpecificOptions?: (item?: T, index?: number) => Array<SelectOption<unknown>> | Promise<Array<SelectOption<unknown>>>;
18
20
  readonly getOptions: () => Array<SelectOption<unknown>> | Promise<Array<SelectOption<unknown>>>;
19
21
  }
@@ -7,12 +7,14 @@ export class SelectDef extends AccessorDef {
7
7
  this.getOptions = $derived(props.getOptions);
8
8
  this.sortingFn = $derived(props.sortingFn);
9
9
  this.optional = $derived(props.optional ?? false);
10
+ this.clearable = $derived(props.clearable ?? true);
10
11
  this.getDisplayValue = $derived(props.getDisplayValue);
11
12
  }
12
13
  accessorType = AccessorType.Select;
13
14
  sortingFn;
14
15
  getDisplayValue;
15
16
  optional;
17
+ clearable;
16
18
  getSpecificOptions;
17
19
  getOptions;
18
20
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lavalogic/scoria",
3
3
  "description": "Svelte components used for the FloWMS Web Frontend",
4
- "version": "0.0.40",
4
+ "version": "0.0.42",
5
5
  "publishConfig": {
6
6
  "access": "restricted"
7
7
  },