@platforma-sdk/ui-vue 1.17.0 → 1.17.2

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 (35) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/lib.js +14 -14
  3. package/dist/lib.umd.cjs +4 -4
  4. package/dist/src/components/PlAgDataTable/sources/file-source.d.ts +1 -1
  5. package/dist/src/components/PlAgDataTable/sources/file-source.d.ts.map +1 -1
  6. package/dist/src/components/PlAgDataTable/sources/table-source-heterogeneous.d.ts.map +1 -1
  7. package/dist/src/components/PlAgDataTable/sources/table-source.d.ts.map +1 -1
  8. package/dist/src/components/PlAgDataTable/types.d.ts.map +1 -1
  9. package/dist/src/defineApp.d.ts.map +1 -1
  10. package/dist/src/types.d.ts.map +1 -1
  11. package/dist/style.css +1 -1
  12. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  13. package/eslint.config.mjs +4 -0
  14. package/package.json +6 -10
  15. package/src/assets/block.scss +1 -0
  16. package/src/components/BlockLayout.vue +1 -1
  17. package/src/components/PlAgDataTable/PlAgDataTable.vue +4 -4
  18. package/src/components/PlAgDataTable/PlAgOverlayLoading.vue +2 -2
  19. package/src/components/PlAgDataTable/PlAgOverlayNoRows.vue +1 -1
  20. package/src/components/PlAgDataTable/sources/file-source.ts +8 -8
  21. package/src/components/PlAgDataTable/sources/row-number.ts +5 -5
  22. package/src/components/PlAgDataTable/sources/table-source-heterogeneous.ts +5 -5
  23. package/src/components/PlAgDataTable/sources/table-source.ts +10 -10
  24. package/src/components/PlAgDataTable/types.ts +11 -11
  25. package/src/components/PlAgDataTableToolsPanel/PlAgDataTableToolsPanel.vue +1 -1
  26. package/src/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue +1 -1
  27. package/src/components/PlTableFilters/PlTableFilterEntry.vue +8 -8
  28. package/src/components/PlTableFilters/PlTableFilters.vue +1 -1
  29. package/src/components/PlTableFilters/filters_logic.ts +4 -4
  30. package/src/defineApp.ts +0 -1
  31. package/src/types.static-test.ts +2 -2
  32. package/src/types.ts +12 -12
  33. package/src/urls.ts +1 -1
  34. package/.eslintignore +0 -2
  35. package/.eslintrc.json +0 -56
@@ -0,0 +1,4 @@
1
+ import { vue } from '@milaboratories/eslint-config';
2
+
3
+ /** @type {import('eslint').Linter.Config[]} */
4
+ export default [...vue];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-sdk/ui-vue",
3
- "version": "1.17.0",
3
+ "version": "1.17.2",
4
4
  "type": "module",
5
5
  "main": "dist/lib.umd.cjs",
6
6
  "module": "dist/lib.js",
@@ -37,21 +37,16 @@
37
37
  "@ag-grid-community/theming": "^32.3.3",
38
38
  "@ag-grid-enterprise/side-bar": "^32.3.3",
39
39
  "@ag-grid-enterprise/column-tool-panel": "^32.3.3",
40
- "@milaboratories/uikit": "^2.2.26",
41
- "@platforma-sdk/model": "^1.17.0"
40
+ "@platforma-sdk/model": "^1.17.0",
41
+ "@milaboratories/uikit": "^2.2.27"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@faker-js/faker": "^9.2.0",
45
45
  "@types/lodash": "^4.17.13",
46
46
  "@types/node": "~20.16.15",
47
- "@typescript-eslint/eslint-plugin": "^7.18.0",
48
47
  "@vitejs/plugin-vue": "^5.2.1",
49
48
  "@vueuse/core": "^12.0.0",
50
49
  "canonicalize": "^2.0.0",
51
- "eslint": "^8.57.1",
52
- "eslint-config-prettier": "^9.1.0",
53
- "eslint-plugin-prettier": "^5.2.1",
54
- "eslint-plugin-vue": "^9.31.0",
55
50
  "happy-dom": "^15.11.7",
56
51
  "lodash": "^4.17.21",
57
52
  "sass": "~1.81.0",
@@ -63,7 +58,8 @@
63
58
  "yarpm": "^1.2.0",
64
59
  "semver": "^7.6.3",
65
60
  "@types/semver": "^7.5.8",
66
- "@milaboratories/helpers": "^1.6.8"
61
+ "@milaboratories/helpers": "^1.6.9",
62
+ "@milaboratories/eslint-config": "^1.0.0"
67
63
  },
68
64
  "scripts": {
69
65
  "test": "vitest run --passWithNoTests",
@@ -72,7 +68,7 @@
72
68
  "watch": "vite build --watch",
73
69
  "type-check": "vue-tsc --noEmit --project ./tsconfig.json",
74
70
  "preview": "vite preview",
75
- "lint": "eslint . --ext js,ts,vue",
71
+ "lint": "eslint .",
76
72
  "check": "yarpm type-check && yarpm lint && yarpm test",
77
73
  "do-pack": "rm -f *.tgz && pnpm pack && mv *.tgz package.tgz"
78
74
  }
@@ -47,6 +47,7 @@
47
47
  height: 4px;
48
48
  background-color: transparent;
49
49
  position: absolute;
50
+ z-index: 1; // @TODO
50
51
  top: 0;
51
52
  right: 0;
52
53
  left: 0;
@@ -13,7 +13,7 @@ const sdk = useSdkPlugin();
13
13
  const parsePathname = (href: `/${string}`) => {
14
14
  try {
15
15
  return new URL(href, 'http://dummy').pathname as `/${string}`;
16
- } catch (err) {
16
+ } catch (_cause) {
17
17
  console.error('Invalid href', href);
18
18
  return undefined;
19
19
  }
@@ -96,8 +96,8 @@ const gridState = computed({
96
96
  },
97
97
  set: (gridState) => {
98
98
  // do not apply driver sorting for client side rendering
99
- const sorting =
100
- settings.value?.sourceType !== 'ptable' || gridOptions.value.rowModelType === 'clientSide' ? undefined : makeSorting(gridState.sort);
99
+ const sorting
100
+ = settings.value?.sourceType !== 'ptable' || gridOptions.value.rowModelType === 'clientSide' ? undefined : makeSorting(gridState.sort);
101
101
 
102
102
  const oldState = tableState.value;
103
103
  tableState.value = {
@@ -317,8 +317,8 @@ watch(
317
317
  if (!lodash.isEqual(options.columnDefs, oldOptions.columnDefs) && options.columnDefs) {
318
318
  const isColDef = (def: ColDef | ColGroupDef): def is ColDef => !('children' in def);
319
319
  const colDefs = options.columnDefs?.filter(isColDef) ?? [];
320
- const columns =
321
- colDefs
320
+ const columns
321
+ = colDefs
322
322
  .map((def) => def.colId)
323
323
  .filter((colId) => colId !== undefined)
324
324
  .filter((colId) => colId !== PlAgDataTableRowNumberColId)
@@ -9,11 +9,11 @@ defineProps<{
9
9
  <template>
10
10
  <div class="grid-overlay-container">
11
11
  <template v-if="params.notReady">
12
- <div class="grid-icon-cat-in-bag"></div>
12
+ <div class="grid-icon-cat-in-bag"/>
13
13
  <span class="text-subtitle-m">No datasource</span>
14
14
  </template>
15
15
  <template v-else>
16
- <div class="mask-24 mask-loading grid-mask-loading"></div>
16
+ <div class="mask-24 mask-loading grid-mask-loading"/>
17
17
  <span class="text-subtitle-m">Loading</span>
18
18
  </template>
19
19
  </div>
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="grid-overlay-container">
3
- <div class="grid-icon-sad-cat"></div>
3
+ <div class="grid-icon-sad-cat" />
4
4
  <span class="text-subtitle-m">Empty</span>
5
5
  </div>
6
6
  </template>
@@ -2,15 +2,15 @@ import type { ColDef, IDatasource } from '@ag-grid-community/core';
2
2
  import type { BlobDriver, LocalBlobHandleAndSize, RemoteBlobHandleAndSize } from '@platforma-sdk/model';
3
3
 
4
4
  export async function updateXsvGridOptions(
5
- blobDriver: BlobDriver,
6
- file: LocalBlobHandleAndSize | RemoteBlobHandleAndSize,
5
+ _blobDriver: BlobDriver,
6
+ _file: LocalBlobHandleAndSize | RemoteBlobHandleAndSize,
7
7
  ): Promise<{
8
- columnDefs: ColDef[];
9
- datasource: IDatasource;
10
- }> {
11
- blobDriver;
12
- file;
13
- //blobDriver.getContent(file.handle!)
8
+ columnDefs: ColDef[];
9
+ datasource: IDatasource;
10
+ }> {
11
+ // blobDriver;
12
+ // file;
13
+ // blobDriver.getContent(file.handle!)
14
14
  // return {
15
15
  // datasource,
16
16
  // columnDefs,
@@ -26,9 +26,9 @@ export function makeRowNumberColDef(): ColDef {
26
26
  suppressSizeToFit: true,
27
27
  suppressAutoSize: true,
28
28
  cellStyle: {
29
- color: 'var(--txt-03)',
29
+ 'color': 'var(--txt-03)',
30
30
  'background-color': 'var(--bg-base-light)',
31
- overflow: 'visible !important',
31
+ 'overflow': 'visible !important',
32
32
  'text-align': 'center',
33
33
  },
34
34
  sortable: false,
@@ -93,9 +93,9 @@ export function autoSizeRowNumberColumn(gridApi: GridApi) {
93
93
  });
94
94
  gridApi.addEventListener('columnResized', (event) => {
95
95
  if (
96
- event.finished &&
97
- event.source === 'autosizeColumns' &&
98
- event.columns?.some((column) => column.isVisible() && column.getColId() === PlAgDataTableRowNumberColId)
96
+ event.finished
97
+ && event.source === 'autosizeColumns'
98
+ && event.columns?.some((column) => column.isVisible() && column.getColId() === PlAgDataTableRowNumberColId)
99
99
  ) {
100
100
  adjustRowNumberColumnWidth(gridApi, cellFake, true);
101
101
  }
@@ -77,11 +77,11 @@ export function updatePFrameGridOptionsHeterogeneousAxes(
77
77
  fields: number[],
78
78
  indices: number[],
79
79
  ): {
80
- columnDefs: ColDef[];
81
- serverSideDatasource?: IServerSideDatasource;
82
- rowModelType: RowModelType;
83
- rowData?: unknown[];
84
- } {
80
+ columnDefs: ColDef[];
81
+ serverSideDatasource?: IServerSideDatasource;
82
+ rowModelType: RowModelType;
83
+ rowData?: unknown[];
84
+ } {
85
85
  if (hColumns.length > 1) {
86
86
  throw Error('hColumns.length > 1 is not supported');
87
87
  }
@@ -160,11 +160,11 @@ export async function updatePFrameGridOptions(
160
160
  sheets: PlDataTableSheet[],
161
161
  hiddenColIds?: string[],
162
162
  ): Promise<{
163
- columnDefs: ColDef[];
164
- serverSideDatasource?: IServerSideDatasource;
165
- rowModelType: RowModelType;
166
- rowData?: unknown[];
167
- }> {
163
+ columnDefs: ColDef[];
164
+ serverSideDatasource?: IServerSideDatasource;
165
+ rowModelType: RowModelType;
166
+ rowData?: unknown[];
167
+ }> {
168
168
  const specs = await pfDriver.getSpec(pt);
169
169
 
170
170
  let numberOfAxes = specs.findIndex((s) => s.type === 'column');
@@ -177,11 +177,11 @@ export async function updatePFrameGridOptions(
177
177
  !lodash.some(
178
178
  sheets,
179
179
  (sheet) =>
180
- lodash.isEqual(getAxisId(sheet.axis), specs[i].id) ||
181
- (specs[i].type === 'column' &&
182
- specs[i].spec.name === 'pl7.app/label' &&
183
- specs[i].spec.axesSpec.length === 1 &&
184
- lodash.isEqual(getAxisId(sheet.axis), getAxisId(specs[i].spec.axesSpec[0]))),
180
+ lodash.isEqual(getAxisId(sheet.axis), specs[i].id)
181
+ || (specs[i].type === 'column'
182
+ && specs[i].spec.name === 'pl7.app/label'
183
+ && specs[i].spec.axesSpec.length === 1
184
+ && lodash.isEqual(getAxisId(sheet.axis), getAxisId(specs[i].spec.axesSpec[0]))),
185
185
  ),
186
186
  )
187
187
  .sort((a, b) => {
@@ -11,18 +11,18 @@ import type {
11
11
  /** Data table settings */
12
12
  export type PlDataTableSettings =
13
13
  | {
14
- /** The type of the source to feed the data into the table */
15
- sourceType: 'ptable';
16
- /** PTable handle output */
17
- pTable?: PTableHandle;
18
- /** Sheets that we want to show in our table */
19
- sheets?: PlDataTableSheet[];
20
- }
14
+ /** The type of the source to feed the data into the table */
15
+ sourceType: 'ptable';
16
+ /** PTable handle output */
17
+ pTable?: PTableHandle;
18
+ /** Sheets that we want to show in our table */
19
+ sheets?: PlDataTableSheet[];
20
+ }
21
21
  | {
22
- /** The type of the source to feed the data into the table */
23
- sourceType: 'xsv';
24
- xsvFile?: LocalBlobHandleAndSize | RemoteBlobHandleAndSize;
25
- };
22
+ /** The type of the source to feed the data into the table */
23
+ sourceType: 'xsv';
24
+ xsvFile?: LocalBlobHandleAndSize | RemoteBlobHandleAndSize;
25
+ };
26
26
 
27
27
  /** PlTableFilters restriction entry */
28
28
  export type PlTableFiltersRestriction = {
@@ -10,6 +10,6 @@ import { PlAgDataTableToolsPanelId } from './PlAgDataTableToolsPanelId';
10
10
 
11
11
  <template>
12
12
  <div :id="PlAgDataTableToolsPanelId" class="d-flex gap-6">
13
- <slot></slot>
13
+ <slot/>
14
14
  </div>
15
15
  </template>
@@ -49,7 +49,7 @@ function triggerRowDoubleClick() {
49
49
 
50
50
  gridApi.dispatchEvent(event);
51
51
  } else {
52
- props.params.onClick && props.params.onClick(props.params);
52
+ props.params.onClick?.(props.params);
53
53
  }
54
54
  }
55
55
  </script>
@@ -25,11 +25,11 @@ const { column, options } = toRefs(props);
25
25
  <template
26
26
  v-if="
27
27
  entry.filter.type === 'number_equals' ||
28
- entry.filter.type === 'number_notEquals' ||
29
- entry.filter.type === 'number_lessThan' ||
30
- entry.filter.type === 'number_lessThanOrEqualTo' ||
31
- entry.filter.type === 'number_greaterThan' ||
32
- entry.filter.type === 'number_greaterThanOrEqualTo'
28
+ entry.filter.type === 'number_notEquals' ||
29
+ entry.filter.type === 'number_lessThan' ||
30
+ entry.filter.type === 'number_lessThanOrEqualTo' ||
31
+ entry.filter.type === 'number_greaterThan' ||
32
+ entry.filter.type === 'number_greaterThanOrEqualTo'
33
33
  "
34
34
  >
35
35
  <PlTextField
@@ -58,9 +58,9 @@ const { column, options } = toRefs(props);
58
58
  <template
59
59
  v-if="
60
60
  entry.filter.type === 'string_equals' ||
61
- entry.filter.type === 'string_notEquals' ||
62
- entry.filter.type === 'string_contains' ||
63
- entry.filter.type === 'string_doesNotContain'
61
+ entry.filter.type === 'string_notEquals' ||
62
+ entry.filter.type === 'string_contains' ||
63
+ entry.filter.type === 'string_doesNotContain'
64
64
  "
65
65
  >
66
66
  <PlTextField
@@ -65,7 +65,7 @@ const defaultsMap = computed<Record<PlTableFilterColumnId, PlTableFiltersStateEn
65
65
  });
66
66
 
67
67
  /* State upgrader */ (() => {
68
- let state = model.value.state;
68
+ const state = model.value.state;
69
69
  if (typeof state === 'object' && !Array.isArray(state)) {
70
70
  model.value.state = Object.entries(state as unknown as Record<PlTableFilterColumnId, PlTableFilter>).map(([id, filter]) => ({
71
71
  columnId: id,
@@ -230,10 +230,10 @@ export function makeWildcardOptions(column: PTableColumnSpec, reference: string)
230
230
  }
231
231
 
232
232
  export function makePredicate(column: PTableColumnSpec, filter: PlTableFilter): SingleValuePredicateV2 {
233
- const alphabetic =
234
- semver.gt(getRawPlatformaInstance().sdkInfo.sdkVersion, '1.14.0') &&
235
- (column.type === 'column' ? column.spec.valueType : column.spec.type) === 'String' &&
236
- (column.spec.domain?.['pl7.app/alphabet'] ?? column.spec.annotations?.['pl7.app/alphabet']) !== undefined;
233
+ const alphabetic
234
+ = semver.gt(getRawPlatformaInstance().sdkInfo.sdkVersion, '1.14.0')
235
+ && (column.type === 'column' ? column.spec.valueType : column.spec.type) === 'String'
236
+ && (column.spec.domain?.['pl7.app/alphabet'] ?? column.spec.annotations?.['pl7.app/alphabet']) !== undefined;
237
237
  const type = filter.type;
238
238
  switch (type) {
239
239
  case 'isNotNA':
package/src/defineApp.ts CHANGED
@@ -8,7 +8,6 @@ import { activateAgGrid } from './aggrid';
8
8
 
9
9
  const pluginKey = Symbol('sdk-vue');
10
10
 
11
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
11
  export function useSdkPlugin(): SdkPlugin {
13
12
  return inject(pluginKey)!;
14
13
  }
@@ -63,7 +63,7 @@ type _UiState = {
63
63
  type _App1 = BaseApp<_Args, _Outputs, _UiState, '/'>;
64
64
  type _App2 = TestApp<Platforma<_Args, _Outputs, _UiState, '/'>>;
65
65
 
66
- const local = () => {
66
+ const _local = () => {
67
67
  const counter = computed(() => 1);
68
68
  const label = computed(() => 'aaaa');
69
69
 
@@ -79,7 +79,7 @@ const local = () => {
79
79
  };
80
80
  };
81
81
 
82
- type ExtApp = App<1, BlockOutputsBase, unknown, '/', ReturnType<typeof local>>;
82
+ type ExtApp = App<1, BlockOutputsBase, unknown, '/', ReturnType<typeof _local>>;
83
83
 
84
84
  type _UpdateArgsParams = Parameters<Parameters<_App1['updateArgs']>[0]>[0];
85
85
 
package/src/types.ts CHANGED
@@ -106,13 +106,13 @@ export type UnwrapOutputs<Outputs extends BlockOutputsBase, K extends keyof Outp
106
106
  // Draft
107
107
  export type ModelResult<T, E = unknown> =
108
108
  | {
109
- ok: true;
110
- model: T;
111
- }
109
+ ok: true;
110
+ model: T;
111
+ }
112
112
  | {
113
- ok: false;
114
- error: E;
115
- };
113
+ ok: false;
114
+ error: E;
115
+ };
116
116
 
117
117
  export type OutputValues<Outputs extends BlockOutputsBase> = {
118
118
  [P in keyof Outputs]?: UnwrapValueOrError<Outputs[P]>;
@@ -127,13 +127,13 @@ export type OutputErrors<Outputs extends BlockOutputsBase> = {
127
127
  */
128
128
  export type OptionalResult<T> =
129
129
  | {
130
- errors?: undefined;
131
- value?: T; // I make this optional (wip)
132
- }
130
+ errors?: undefined;
131
+ value?: T; // I make this optional (wip)
132
+ }
133
133
  | {
134
- value?: undefined;
135
- errors: string[];
136
- };
134
+ value?: undefined;
135
+ errors: string[];
136
+ };
137
137
 
138
138
  // Static tests
139
139
 
package/src/urls.ts CHANGED
@@ -3,7 +3,7 @@ import type { ParseQuery } from './types';
3
3
  export const parsePathname = (href: `/${string}`) => {
4
4
  try {
5
5
  return new URL(href, 'http://dummy').pathname as `/${string}`;
6
- } catch (err) {
6
+ } catch (_err) {
7
7
  console.error('Invalid href', href);
8
8
  return undefined;
9
9
  }
package/.eslintignore DELETED
@@ -1,2 +0,0 @@
1
- /dist
2
- /node_modules
package/.eslintrc.json DELETED
@@ -1,56 +0,0 @@
1
- {
2
- "root": true,
3
- "globals": {
4
- "platforma": true,
5
- "process": true
6
- },
7
- "env": {
8
- "es2021": true,
9
- "node": false,
10
- "browser": true
11
- },
12
- "extends": [
13
- "eslint:recommended",
14
- /** @see https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/eslint-plugin#recommended-configs */
15
- "plugin:@typescript-eslint/recommended",
16
- "plugin:vue/vue3-recommended",
17
- "plugin:prettier/recommended"
18
- ],
19
- "parser": "vue-eslint-parser",
20
- "parserOptions": {
21
- "ecmaVersion": 12,
22
- "sourceType": "module",
23
- "parser": "@typescript-eslint/parser"
24
- },
25
- "plugins": ["@typescript-eslint"],
26
- "ignorePatterns": ["node_modules/**", "**/dist/**"],
27
- "rules": {
28
- "@typescript-eslint/no-var-requires": "off",
29
- "@typescript-eslint/consistent-type-imports": "error",
30
- "vue/multi-word-component-names": "off",
31
- "vue/component-name-in-template-casing": "warn",
32
- "vue/no-undef-components": "error",
33
- "@typescript-eslint/no-explicit-any": "error",
34
-
35
- /**
36
- * Having a semicolon helps the optimizer interpret your code correctly.
37
- * This avoids rare errors in optimized code.
38
- * @see https://twitter.com/alex_kozack/status/1364210394328408066
39
- */
40
- "semi": ["warn", "always"],
41
-
42
- /**
43
- * Just for beauty
44
- */
45
- "quotes": ["warn", "single"],
46
-
47
- "@typescript-eslint/no-unused-vars": [
48
- "warn",
49
- {
50
- "argsIgnorePattern": "^_",
51
- "varsIgnorePattern": "^_",
52
- "caughtErrorsIgnorePattern": "^_"
53
- }
54
- ]
55
- }
56
- }