@platforma-sdk/ui-vue 1.40.5 → 1.41.0

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 (113) hide show
  1. package/.turbo/turbo-build.log +52 -25
  2. package/.turbo/turbo-type-check.log +1 -1
  3. package/CHANGELOG.md +21 -0
  4. package/dist/AgGridVue/useAgGridOptions.js +54 -53
  5. package/dist/AgGridVue/useAgGridOptions.js.map +1 -1
  6. package/dist/components/BlockLayout.vue.d.ts.map +1 -1
  7. package/dist/components/BlockLayout.vue.js +7 -50
  8. package/dist/components/BlockLayout.vue.js.map +1 -1
  9. package/dist/components/BlockLayout.vue2.js +53 -2
  10. package/dist/components/BlockLayout.vue2.js.map +1 -1
  11. package/dist/components/BlockLayout.vue3.js +9 -0
  12. package/dist/components/BlockLayout.vue3.js.map +1 -0
  13. package/dist/components/NotFound.vue.d.ts.map +1 -1
  14. package/dist/components/NotFound.vue.js +12 -14
  15. package/dist/components/NotFound.vue.js.map +1 -1
  16. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.d.ts +1 -4
  17. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.d.ts.map +1 -1
  18. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +155 -172
  19. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js.map +1 -1
  20. package/dist/components/PlAgDataTable/PlAgRowCount.vue.js +7 -6
  21. package/dist/components/PlAgDataTable/PlAgRowCount.vue.js.map +1 -1
  22. package/dist/components/PlAgDataTable/sources/table-source-v2.d.ts +2 -2
  23. package/dist/components/PlAgDataTable/sources/table-source-v2.d.ts.map +1 -1
  24. package/dist/components/PlAgDataTable/sources/table-source-v2.js +110 -105
  25. package/dist/components/PlAgDataTable/sources/table-source-v2.js.map +1 -1
  26. package/dist/components/PlAgDataTable/types.d.ts +27 -43
  27. package/dist/components/PlAgDataTable/types.d.ts.map +1 -1
  28. package/dist/components/PlAgDataTable/types.js +32 -43
  29. package/dist/components/PlAgDataTable/types.js.map +1 -1
  30. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js +10 -9
  31. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js.map +1 -1
  32. package/dist/components/PlAgRowNumHeader.vue.js +3 -2
  33. package/dist/components/PlAgRowNumHeader.vue.js.map +1 -1
  34. package/dist/components/PlAnnotations/components/DynamicForm.vue2.js +10 -10
  35. package/dist/components/PlAnnotations/components/PlAnnotationCreateDialog.vue.d.ts +1 -1
  36. package/dist/components/PlAnnotations/components/PlAnnotationCreateDialog.vue.d.ts.map +1 -1
  37. package/dist/components/PlMultiSequenceAlignment/data.js +51 -51
  38. package/dist/composition/fileContent.js +16 -16
  39. package/dist/defineApp.d.ts +19 -6
  40. package/dist/defineApp.d.ts.map +1 -1
  41. package/dist/defineApp.js +50 -30
  42. package/dist/defineApp.js.map +1 -1
  43. package/dist/internal/UpdateSerializer.d.ts +26 -0
  44. package/dist/internal/UpdateSerializer.d.ts.map +1 -0
  45. package/dist/internal/UpdateSerializer.js +65 -0
  46. package/dist/internal/UpdateSerializer.js.map +1 -0
  47. package/dist/internal/createAppModel.d.ts +1 -1
  48. package/dist/internal/createAppModel.d.ts.map +1 -1
  49. package/dist/internal/createAppModel.js +43 -51
  50. package/dist/internal/createAppModel.js.map +1 -1
  51. package/dist/internal/{createApp.d.ts → createAppV1.d.ts} +4 -4
  52. package/dist/internal/createAppV1.d.ts.map +1 -0
  53. package/dist/internal/{createApp.js → createAppV1.js} +17 -18
  54. package/dist/internal/createAppV1.js.map +1 -0
  55. package/dist/internal/createAppV2.d.ts +56 -0
  56. package/dist/internal/createAppV2.d.ts.map +1 -0
  57. package/dist/internal/createAppV2.js +158 -0
  58. package/dist/internal/createAppV2.js.map +1 -0
  59. package/dist/internal/test-helpers/BlockMock.d.ts +28 -0
  60. package/dist/internal/test-helpers/BlockMock.d.ts.map +1 -0
  61. package/dist/internal/test-helpers/createMockApi.d.ts +4 -0
  62. package/dist/internal/test-helpers/createMockApi.d.ts.map +1 -0
  63. package/dist/internal/test-helpers/utils.d.ts +4 -0
  64. package/dist/internal/test-helpers/utils.d.ts.map +1 -0
  65. package/dist/{types.static-test.d.ts → internal/v1.static-test.d.ts} +3 -3
  66. package/dist/internal/v1.static-test.d.ts.map +1 -0
  67. package/dist/internal/v2.static-test.d.ts +7 -0
  68. package/dist/internal/v2.static-test.d.ts.map +1 -0
  69. package/dist/lib/model/common/dist/index.js +214 -199
  70. package/dist/lib/model/common/dist/index.js.map +1 -1
  71. package/dist/lib/ui/uikit/dist/components/PlAccordion/{ExpandTransition.vue.js → ExpandTransition.vue2.js} +1 -1
  72. package/dist/lib/ui/uikit/dist/components/PlAccordion/ExpandTransition.vue2.js.map +1 -0
  73. package/dist/lib/ui/uikit/dist/components/PlAccordion/PlAccordionSection.vue2.js +1 -1
  74. package/dist/lib/ui/uikit/dist/components/PlDialogModal/PlDialogModal.vue.js.map +1 -1
  75. package/dist/lib/ui/uikit/dist/lib/model/common/dist/index.js +7 -7
  76. package/dist/lib/ui/uikit/dist/sdk/model/dist/index.js +77 -56
  77. package/dist/lib/ui/uikit/dist/sdk/model/dist/index.js.map +1 -1
  78. package/dist/lib/util/helpers/dist/index.js +67 -56
  79. package/dist/lib/util/helpers/dist/index.js.map +1 -1
  80. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/index.js +29 -0
  81. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/index.js.map +1 -0
  82. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/core.js +208 -0
  83. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/core.js.map +1 -0
  84. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/duplex.js +95 -0
  85. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/duplex.js.map +1 -0
  86. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/helpers.js +112 -0
  87. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/helpers.js.map +1 -0
  88. package/dist/sdk/model/dist/index.js +165 -140
  89. package/dist/sdk/model/dist/index.js.map +1 -1
  90. package/dist/types.d.ts +2 -2
  91. package/dist/types.d.ts.map +1 -1
  92. package/package.json +9 -6
  93. package/src/components/BlockLayout.vue +9 -1
  94. package/src/components/NotFound.vue +1 -3
  95. package/src/components/PlAgDataTable/PlAgDataTableV2.vue +6 -31
  96. package/src/components/PlAgDataTable/sources/table-source-v2.ts +29 -29
  97. package/src/components/PlAgDataTable/types.ts +42 -70
  98. package/src/defineApp.ts +134 -36
  99. package/src/internal/UpdateSerializer.ts +112 -0
  100. package/src/internal/createAppModel.ts +7 -20
  101. package/src/internal/{createApp.ts → createAppV1.ts} +10 -6
  102. package/src/internal/createAppV2.test.ts +158 -0
  103. package/src/internal/createAppV2.ts +309 -0
  104. package/src/internal/test-helpers/BlockMock.ts +144 -0
  105. package/src/internal/test-helpers/createMockApi.ts +92 -0
  106. package/src/internal/test-helpers/utils.ts +65 -0
  107. package/src/{types.static-test.ts → internal/v1.static-test.ts} +5 -9
  108. package/src/internal/v2.static-test.ts +98 -0
  109. package/src/types.ts +2 -2
  110. package/dist/internal/createApp.d.ts.map +0 -1
  111. package/dist/internal/createApp.js.map +0 -1
  112. package/dist/lib/ui/uikit/dist/components/PlAccordion/ExpandTransition.vue.js.map +0 -1
  113. package/dist/types.static-test.d.ts.map +0 -1
package/dist/types.d.ts CHANGED
@@ -42,9 +42,9 @@ export type RouteParams<Href extends `/${string}` = `/${string}`> = {
42
42
  };
43
43
  export type AppSettings = {
44
44
  /**
45
- * Deep patch `model.` This parameter affects how you listen to model changes; a deep watcher is required if you use the `source` function.
45
+ * App ID (just for debugging)
46
46
  */
47
- deepPatchModel?: boolean;
47
+ appId?: string;
48
48
  /**
49
49
  * Enables some debug logs
50
50
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-sdk/ui-vue",
3
- "version": "1.40.5",
3
+ "version": "1.41.0",
4
4
  "type": "module",
5
5
  "main": "dist/lib.js",
6
6
  "styles": "dist/lib.js",
@@ -25,9 +25,9 @@
25
25
  "@vueuse/integrations": "^13.3.0",
26
26
  "d3-format": "^3.1.0",
27
27
  "zod": "~3.23.8",
28
- "@milaboratories/uikit": "2.3.14",
29
- "@platforma-sdk/model": "~1.40.5",
30
- "@milaboratories/biowasm-tools": "^1.1.0"
28
+ "@milaboratories/biowasm-tools": "^1.1.0",
29
+ "@platforma-sdk/model": "~1.41.0",
30
+ "@milaboratories/uikit": "2.3.16"
31
31
  },
32
32
  "devDependencies": {
33
33
  "happy-dom": "^15.11.7",
@@ -38,12 +38,15 @@
38
38
  "typescript": "~5.6.3",
39
39
  "vite": "^6.3.5",
40
40
  "vitest": "^2.1.9",
41
+ "@vue/test-utils": "^2.4.6",
41
42
  "vue-tsc": "^2.2.10",
42
43
  "yarpm": "^1.2.0",
44
+ "fast-json-patch": "^3.1.1",
45
+ "@faker-js/faker": "^9.2.0",
43
46
  "@milaboratories/ts-configs": "1.0.4",
44
- "@milaboratories/helpers": "^1.6.18",
45
47
  "@milaboratories/build-configs": "1.0.4",
46
- "@milaboratories/eslint-config": "^1.0.4"
48
+ "@milaboratories/eslint-config": "^1.0.4",
49
+ "@milaboratories/helpers": "^1.6.18"
47
50
  },
48
51
  "scripts": {
49
52
  "test": "vitest run --passWithNoTests",
@@ -43,7 +43,7 @@ const progress = computed(() => app.value?.progress?.());
43
43
  <template>
44
44
  <div class="block block__layout">
45
45
  <BlockLoader :value="progress" />
46
- <div v-if="sdk.error">{{ sdk.error }}</div>
46
+ <div v-if="sdk.error" :class="$style.error">{{ sdk.error }}</div>
47
47
  <LoaderPage v-else-if="!sdk.loaded">Loading...</LoaderPage>
48
48
  <component :is="CurrentView" v-else-if="CurrentView" :key="href" />
49
49
  <NotFound v-else />
@@ -52,3 +52,11 @@ const progress = computed(() => app.value?.progress?.());
52
52
  <!-- Plugins -->
53
53
  <MonetizationSidebar v-if="CurrentView" />
54
54
  </template>
55
+
56
+ <style module>
57
+ .error {
58
+ color: red;
59
+ font-weight: bold;
60
+ padding: 24px;
61
+ }
62
+ </style>
@@ -7,9 +7,7 @@ const sdk = useSdkPlugin();
7
7
  const app = sdk.useApp();
8
8
 
9
9
  const goToMain = () => {
10
- app.updateNavigationState((state) => {
11
- state.href = '/';
12
- });
10
+ app.navigateTo('/');
13
11
  };
14
12
  </script>
15
13
 
@@ -44,7 +44,6 @@ import type {
44
44
  PlAgOverlayNoRowsParams,
45
45
  PlDataTableSettingsV2,
46
46
  PlDataTableSheetsSettings,
47
- PlTableLabeledSelectionModel,
48
47
  PlTableRowIdJson,
49
48
  } from './types';
50
49
  import { watchCached } from '@milaboratories/uikit';
@@ -53,7 +52,6 @@ const tableState = defineModel<PlDataTableStateV2>({
53
52
  required: true,
54
53
  });
55
54
  const selection = defineModel<PlSelectionModel>('selection');
56
- const selectionLabeled = defineModel<PlTableLabeledSelectionModel>('selectionLabeled');
57
55
  const props = defineProps<{
58
56
  /** Required component settings */
59
57
  settings: Readonly<PlDataTableSettingsV2>;
@@ -155,10 +153,10 @@ const firstDataRenderedTracker = makeOnceTracker<GridApi<PlAgDataTableV2Row>>();
155
153
  const gridOptions = shallowRef<GridOptions<PlAgDataTableV2Row>>({
156
154
  animateRows: false,
157
155
  suppressColumnMoveAnimation: true,
158
- cellSelection: !selection.value && !selectionLabeled.value,
156
+ cellSelection: !selection.value,
159
157
  initialState: gridState.value,
160
158
  autoSizeStrategy: { type: 'fitCellContents' },
161
- rowSelection: selection.value || selectionLabeled.value
159
+ rowSelection: selection.value
162
160
  ? {
163
161
  mode: 'multiRow',
164
162
  selectAll: 'all',
@@ -169,15 +167,11 @@ const gridOptions = shallowRef<GridOptions<PlAgDataTableV2Row>>({
169
167
  }
170
168
  : undefined,
171
169
  onSelectionChanged: (event) => {
172
- const state = event.api.getServerSideSelectionState();
173
170
  if (selection.value) {
174
- const selectedKeys = state?.toggledNodes?.map((nodeId) => parseJson(nodeId as PlTableRowIdJson).axesKey) ?? [];
171
+ const state = event.api.getServerSideSelectionState();
172
+ const selectedKeys = state?.toggledNodes?.map((nodeId) => parseJson(nodeId as PlTableRowIdJson)) ?? [];
175
173
  selection.value = { ...selection.value, selectedKeys };
176
174
  }
177
- if (selectionLabeled.value) {
178
- const selectedLabeledKeys = state?.toggledNodes?.map((nodeId) => parseJson(nodeId as PlTableRowIdJson).labeled) ?? [];
179
- selectionLabeled.value = { ...selectionLabeled.value, selectedLabeledKeys };
180
- }
181
175
  },
182
176
  onRowDoubleClicked: (event) => {
183
177
  if (event.data && event.data.axesKey) emit('rowDoubleClicked', event.data.axesKey);
@@ -356,12 +350,6 @@ watchCached(
356
350
  selectedKeys: [],
357
351
  };
358
352
  }
359
- if (selectionLabeled.value) {
360
- selectionLabeled.value = {
361
- spec: [],
362
- selectedLabeledKeys: [],
363
- };
364
- }
365
353
  } else {
366
354
  const isColDef = (def: ColDef | ColGroupDef): def is ColDef =>
367
355
  !('children' in def);
@@ -386,19 +374,6 @@ watchCached(
386
374
  axesSpec,
387
375
  };
388
376
  }
389
- if (selectionLabeled.value) {
390
- const spec = columns
391
- .reduce((acc, column) => {
392
- if (column.source.type === 'axis') {
393
- acc.push(column.labeled);
394
- }
395
- return acc;
396
- }, [] as PTableColumnSpec[]);
397
- selectionLabeled.value = {
398
- ...selectionLabeled.value,
399
- spec,
400
- };
401
- }
402
377
  }
403
378
  },
404
379
  { immediate: true },
@@ -431,7 +406,7 @@ watch(
431
406
  columnDefs: undefined,
432
407
  serverSideDatasource: undefined,
433
408
  });
434
- if (selection.value || selectionLabeled.value) {
409
+ if (selection.value) {
435
410
  gridApi.setServerSideSelectionState({
436
411
  selectAll: false,
437
412
  toggledNodes: [],
@@ -449,7 +424,7 @@ watch(
449
424
  notReady: false,
450
425
  } satisfies PlAgOverlayLoadingParams,
451
426
  });
452
- if (selection.value || selectionLabeled.value) {
427
+ if (selection.value) {
453
428
  gridApi.setServerSideSelectionState({
454
429
  selectAll: false,
455
430
  toggledNodes: [],
@@ -1,3 +1,5 @@
1
+ import type {
2
+ PTableColumnSpecColumn } from '@platforma-sdk/model';
1
3
  import {
2
4
  canonicalizeJson,
3
5
  getAxisId,
@@ -15,6 +17,7 @@ import {
15
17
  type PlTableColumnId,
16
18
  type PlTableColumnIdJson,
17
19
  isLabelColumn as isLabelColumnSpec,
20
+ isColumnHidden,
18
21
  } from '@platforma-sdk/model';
19
22
  import type {
20
23
  CellStyle,
@@ -39,7 +42,7 @@ import { getColumnRenderingSpec } from './value-rendering';
39
42
  import type { Ref } from 'vue';
40
43
  import { isJsonEqual } from '@milaboratories/helpers';
41
44
 
42
- export function isLabelColumn(column: PTableColumnSpec) {
45
+ export function isLabelColumn(column: PTableColumnSpec): column is PTableColumnSpecColumn {
43
46
  return column.type === 'column' && isLabelColumnSpec(column.spec);
44
47
  }
45
48
 
@@ -48,7 +51,6 @@ function columns2rows(
48
51
  fields: number[],
49
52
  columns: PTableVector[],
50
53
  axes: number[],
51
- labeledAxes: number[],
52
54
  resultMapping: number[],
53
55
  ): PlAgDataTableV2Row[] {
54
56
  const rowData: PlAgDataTableV2Row[] = [];
@@ -58,15 +60,7 @@ function columns2rows(
58
60
  pTableValue(columns[resultMapping[iAxis]], iRow),
59
61
  );
60
62
  });
61
- const labeled = labeledAxes.map((iAxis) => {
62
- return mapPTableValueToAxisKey(
63
- pTableValue(columns[resultMapping[iAxis]], iRow),
64
- );
65
- });
66
- const id = canonicalizeJson<PlTableRowId>({
67
- axesKey,
68
- labeled,
69
- });
63
+ const id = canonicalizeJson<PlTableRowId>(axesKey);
70
64
  const row: PlAgDataTableV2Row = { id, axesKey };
71
65
  fields.forEach((field, iCol) => {
72
66
  row[field.toString() as `${number}`] = resultMapping[iCol] === -1
@@ -118,18 +112,31 @@ export async function calculateGridOptions({
118
112
  if (numberOfAxes === -1) numberOfAxes = specs.length;
119
113
 
120
114
  // column indices in the specs array that we are going to process
121
- const indices = [...specs.keys()]
115
+ const indices = specs.keys()
122
116
  .filter(
123
- (i) =>
124
- !sheets.some(
125
- (sheet) =>
126
- isJsonEqual(getAxisId(sheet.axis), specs[i].id)
127
- || (specs[i].type === 'column'
128
- && specs[i].spec.name === 'pl7.app/label'
129
- && specs[i].spec.axesSpec.length === 1
130
- && isJsonEqual(getAxisId(sheet.axis), getAxisId(specs[i].spec.axesSpec[0]))),
131
- ),
117
+ (i) => {
118
+ const spec = specs[i];
119
+ switch (spec.type) {
120
+ case 'axis':
121
+ {
122
+ return !sheets.some(
123
+ (sheet) => isJsonEqual(getAxisId(sheet.axis), spec.id),
124
+ );
125
+ }
126
+ case 'column':
127
+ {
128
+ if (isLabelColumnSpec(spec.spec)) {
129
+ return !sheets.some(
130
+ (sheet) => isJsonEqual(getAxisId(sheet.axis), getAxisId(spec.spec.axesSpec[0])),
131
+ );
132
+ } else {
133
+ return !isColumnHidden(spec.spec);
134
+ }
135
+ }
136
+ }
137
+ },
132
138
  )
139
+ .toArray()
133
140
  .sort((a, b) => {
134
141
  if (specs[a].type !== specs[b].type) return specs[a].type === 'axis' ? -1 : 1;
135
142
 
@@ -202,13 +209,6 @@ export async function calculateGridOptions({
202
209
  }
203
210
  return r;
204
211
  });
205
- const labeledAxes: number[] = fields
206
- .reduce((acc, field, index) => {
207
- if (specs[field].type === 'axis') {
208
- acc.push(allIndices.indexOf(indices[index]));
209
- }
210
- return acc;
211
- }, [] as number[]);
212
212
 
213
213
  const requestIndices: number[] = [];
214
214
  const resultMapping: number[] = [];
@@ -260,7 +260,7 @@ export async function calculateGridOptions({
260
260
  length,
261
261
  });
262
262
  if (stateGeneration !== generation.value || params.api.isDestroyed()) return params.fail();
263
- rowData = columns2rows(fields, data, axes, labeledAxes, resultMapping);
263
+ rowData = columns2rows(fields, data, axes, resultMapping);
264
264
  }
265
265
  }
266
266
 
@@ -24,9 +24,7 @@ export type PlDataTableFilterConfig = {
24
24
  default?: PlTableFilter;
25
25
  };
26
26
 
27
- /** Data table V2 settings */
28
- export type PlDataTableSettingsV2 =
29
- (
27
+ export type PlDataTableSettingsV2Base =
30
28
  | { sourceId: null }
31
29
  | {
32
30
  /** Unique source id for state caching */
@@ -35,8 +33,10 @@ export type PlDataTableSettingsV2 =
35
33
  sheets: PlDataTableSheet[];
36
34
  /** Result of `createPlDataTableV2` */
37
35
  model: PlDataTableModel | undefined;
38
- }
39
- ) & {
36
+ };
37
+
38
+ /** Data table V2 settings */
39
+ export type PlDataTableSettingsV2 = PlDataTableSettingsV2Base & {
40
40
  /** Callback configuring filters for the table */
41
41
  filtersConfig: (info: {
42
42
  sourceId: string;
@@ -44,45 +44,41 @@ export type PlDataTableSettingsV2 =
44
44
  }) => PlDataTableFilterConfig;
45
45
  };
46
46
 
47
- type OptionsAdvanced<T> = {
48
- /**
49
- * Block property (such as inputAnchor) used to produce the data source.
50
- * Mandatory for cases when the table can change without block run.
51
- * Skip when the table is changed only after block run.
52
- * Ask developers for help if you don't know what to set here.
53
- */
54
- sourceId: MaybeRefOrGetter<T | undefined>;
47
+ type OptionsBasic = {
55
48
  /** Block output created by `createPlDataTableV2` */
56
49
  model: MaybeRefOrGetter<PlDataTableModel | undefined>;
57
50
  /**
58
- * Sheets for partitioned data sources.
59
- * Do not set if data source is never partitioned.
60
- */
51
+ * Sheets for partitioned data sources.
52
+ * Do not set if data source is never partitioned.
53
+ */
61
54
  sheets?: MaybeRefOrGetter<PlDataTableSheet[] | undefined>;
55
+ };
56
+
57
+ type OptionsSimple = OptionsBasic & {
62
58
  /**
63
- * Callback configuring filters for the table.
64
- * If not provided, filtering will be disabled.
65
- * Parameter `sourceId` should be compared using `isJsonEqual` from `@milaboratories/helpers`.
66
- */
59
+ * Callback configuring filters for the table.
60
+ * If not provided, filtering will be disabled.
61
+ */
67
62
  filtersConfig?: (info: {
68
- sourceId: JsonCompatible<T>;
69
63
  column: PTableColumnSpec;
70
64
  }) => PlDataTableFilterConfig;
71
65
  };
72
66
 
73
- type OptionsSimple = {
74
- /** Block output created by `createPlDataTableV2` */
75
- model: MaybeRefOrGetter<PlDataTableModel | undefined>;
67
+ type OptionsAdvanced<T> = OptionsBasic & {
76
68
  /**
77
- * Sheets for partitioned data sources.
78
- * Do not set if data source is never partitioned.
79
- */
80
- sheets?: MaybeRefOrGetter<PlDataTableSheet[] | undefined>;
69
+ * Block property (such as inputAnchor) used to produce the data source.
70
+ * Mandatory for cases when the table can change without block run.
71
+ * Skip when the table is changed only after block run.
72
+ * Ask developers for help if you don't know what to set here.
73
+ */
74
+ sourceId: MaybeRefOrGetter<T | undefined>;
81
75
  /**
82
- * Callback configuring filters for the table.
83
- * If not provided, filtering will be disabled.
84
- */
76
+ * Callback configuring filters for the table.
77
+ * If not provided, filtering will be disabled.
78
+ * Parameter `sourceId` should be compared using `isJsonEqual` from `@milaboratories/helpers`.
79
+ */
85
80
  filtersConfig?: (info: {
81
+ sourceId: JsonCompatible<T>;
86
82
  column: PTableColumnSpec;
87
83
  }) => PlDataTableFilterConfig;
88
84
  };
@@ -109,62 +105,51 @@ export function usePlDataTableSettingsV2<T>(options: OptionsAdvanced<T> | Option
109
105
  : () => ({});
110
106
  return computed(() => {
111
107
  const modelValue = toValue(options.model);
108
+ let settingsBase: PlDataTableSettingsV2Base;
112
109
  if ('sourceId' in options) {
113
110
  const sourceIdValue = deepClone(toValue(options.sourceId));
114
111
  if (options.sheets) {
115
112
  const sheetsValue = deepClone(toValue(options.sheets));
116
- return sourceIdValue && sheetsValue
113
+ settingsBase = sourceIdValue && sheetsValue
117
114
  ? {
118
115
  sourceId: canonicalize(sourceIdValue)!,
119
116
  sheets: sheetsValue,
120
117
  model: modelValue,
121
- filtersConfig: filtersConfigValue,
122
118
  }
123
- : {
124
- sourceId: null,
125
- filtersConfig: filtersConfigValue,
126
- };
119
+ : { sourceId: null };
127
120
  } else {
128
- return sourceIdValue
121
+ settingsBase = sourceIdValue
129
122
  ? {
130
123
  sourceId: canonicalize(sourceIdValue)!,
131
124
  sheets: [],
132
125
  model: modelValue,
133
- filtersConfig: filtersConfigValue,
134
126
  }
135
- : {
136
- sourceId: null,
137
- filtersConfig: filtersConfigValue,
138
- };
127
+ : { sourceId: null };
139
128
  }
140
129
  } else {
141
130
  if (options.sheets) {
142
131
  const sheetsValue = toValue(options.sheets);
143
- return sheetsValue
132
+ settingsBase = sheetsValue
144
133
  ? {
145
134
  sourceId: canonicalize('static')!,
146
135
  sheets: sheetsValue,
147
136
  model: modelValue,
148
- filtersConfig: filtersConfigValue,
149
137
  }
150
- : {
151
- sourceId: null,
152
- filtersConfig: filtersConfigValue,
153
- };
138
+ : { sourceId: null };
154
139
  } else {
155
- return modelValue
140
+ settingsBase = modelValue
156
141
  ? {
157
142
  sourceId: canonicalize('static')!,
158
143
  sheets: [],
159
144
  model: modelValue,
160
- filtersConfig: filtersConfigValue,
161
145
  }
162
- : {
163
- sourceId: null,
164
- filtersConfig: filtersConfigValue,
165
- };
146
+ : { sourceId: null };
166
147
  }
167
148
  }
149
+ return {
150
+ ...settingsBase,
151
+ filtersConfig: filtersConfigValue,
152
+ };
168
153
  });
169
154
  };
170
155
 
@@ -193,14 +178,9 @@ export type PlAgDataTableV2Controller = {
193
178
  focusRow: (rowKey: PTableKey) => Promise<void>;
194
179
  };
195
180
 
196
- export type PlTableRowId = {
197
- /** Axes values */
198
- axesKey: PTableKey;
199
- /** Axes key where values of labeled axes are resolved to corresponding labels */
200
- labeled: PTableKey;
201
- };
181
+ export type PlTableRowId = PTableKey;
202
182
 
203
- export type PlTableRowIdJson = CanonicalizedJson<PlTableRowId>;
183
+ export type PlTableRowIdJson = CanonicalizedJson<PTableKey>;
204
184
 
205
185
  /** PlAgDataTableV2 row */
206
186
  export type PlAgDataTableV2Row = {
@@ -212,14 +192,6 @@ export type PlAgDataTableV2Row = {
212
192
  [field: `${number}`]: PTableValue | PTableHidden;
213
193
  };
214
194
 
215
- /** PlSelectionModel with labeled axes replaced by label columns */
216
- export type PlTableLabeledSelectionModel = {
217
- /** Specs for valuess in {@link PTableKey} */
218
- spec: PTableColumnSpec[];
219
- /** Row keys (arrays of axes values) of selected rows */
220
- selectedLabeledKeys: PTableKey[];
221
- };
222
-
223
195
  export type PlAgOverlayLoadingParams = {
224
196
  /**
225
197
  * Required flag, that shows catInBag icon with message if `true`, shows PlSplash component if `false`.