@platforma-sdk/ui-vue 1.58.4 → 1.58.8

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.
@@ -1,6 +1,6 @@
1
1
   WARN  Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
2
2
 
3
- > @platforma-sdk/ui-vue@1.58.4 build /home/runner/_work/platforma/platforma/sdk/ui-vue
3
+ > @platforma-sdk/ui-vue@1.58.8 build /home/runner/_work/platforma/platforma/sdk/ui-vue
4
4
  > ts-builder build --target browser-lib
5
5
 
6
6
  Building browser-lib project...
@@ -59,7 +59,7 @@ computing gzip size...
59
59
  dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue2.js  0.13 kB │ gzip: 0.12 kB │ map: 0.11 kB
60
60
  dist/urls.js  0.14 kB │ gzip: 0.15 kB │ map: 0.64 kB
61
61
  dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue2.js  0.14 kB │ gzip: 0.13 kB │ map: 0.12 kB
62
- dist/components/PlAdvancedFilter/index.js  0.16 kB │ gzip: 0.16 kB │ map: 0.73 kB
62
+ dist/components/PlAdvancedFilter/index.js  0.16 kB │ gzip: 0.16 kB │ map: 0.74 kB
63
63
  dist/components/BlockLayout.vue3.js  0.16 kB │ gzip: 0.15 kB │ map: 0.39 kB
64
64
  dist/lib/util/helpers/dist/random.js  0.16 kB │ gzip: 0.16 kB │ map: 0.74 kB
65
65
  dist/components/PlTableFilters/PlTableFiltersV2.vue3.js  0.17 kB │ gzip: 0.16 kB │ map: 0.40 kB
@@ -99,8 +99,8 @@ computing gzip size...
99
99
  dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
100
100
  dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.js  0.31 kB │ gzip: 0.22 kB │ map: 0.11 kB
101
101
  dist/components/PlAnnotations/components/PlAnnotationsModal.vue.js  0.31 kB │ gzip: 0.22 kB │ map: 0.11 kB
102
- dist/components/PlAnnotations/components/AnnotationsSidebar.vue.js  0.31 kB │ gzip: 0.22 kB │ map: 0.11 kB
103
102
  dist/components/PlAgDataTable/PlAgDataTableSheets.vue.js  0.31 kB │ gzip: 0.22 kB │ map: 0.11 kB
103
+ dist/components/PlAnnotations/components/AnnotationsSidebar.vue.js  0.31 kB │ gzip: 0.22 kB │ map: 0.11 kB
104
104
  dist/components/PlBtnExportArchive/PlBtnExportArchive.vue3.js  0.32 kB │ gzip: 0.21 kB │ map: 0.64 kB
105
105
  dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue.js  0.32 kB │ gzip: 0.23 kB │ map: 0.12 kB
106
106
  dist/lib/util/helpers/dist/strings.js  0.35 kB │ gzip: 0.24 kB │ map: 4.22 kB
@@ -169,14 +169,14 @@ computing gzip size...
169
169
  dist/components/PlAgDataTable/sources/row-number.js  3.14 kB │ gzip: 1.35 kB │ map: 8.45 kB
170
170
  dist/components/PlAgDataTable/compositions/useGrid.js  3.23 kB │ gzip: 1.33 kB │ map: 8.23 kB
171
171
  dist/defineApp.js  3.36 kB │ gzip: 1.15 kB │ map: 14.79 kB
172
- dist/components/PlTableFilters/PlTableFiltersV2.vue2.js  3.76 kB │ gzip: 1.59 kB │ map: 7.35 kB
172
+ dist/components/PlTableFilters/PlTableFiltersV2.vue2.js  3.76 kB │ gzip: 1.59 kB │ map: 7.40 kB
173
173
  dist/plugins/Monetization/LimitCard.vue2.js  3.84 kB │ gzip: 1.15 kB │ map: 9.62 kB
174
174
  dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js  3.85 kB │ gzip: 1.53 kB │ map: 6.85 kB
175
175
  dist/components/PlAgDataTable/sources/table-state-v2.js  4.14 kB │ gzip: 1.48 kB │ map: 13.21 kB
176
176
  dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js  4.26 kB │ gzip: 1.61 kB │ map: 6.42 kB
177
- dist/components/PlAnnotations/components/FilterSidebar.vue2.js  4.44 kB │ gzip: 1.57 kB │ map: 7.52 kB
177
+ dist/components/PlAnnotations/components/FilterSidebar.vue2.js  4.31 kB │ gzip: 1.56 kB │ map: 7.52 kB
178
178
  dist/plugins/Monetization/MonetizationSidebar.vue.js  4.71 kB │ gzip: 1.75 kB │ map: 6.78 kB
179
- dist/index.js  5.26 kB │ gzip: 1.34 kB │ map: 9.59 kB
179
+ dist/index.js  5.27 kB │ gzip: 1.35 kB │ map: 9.59 kB
180
180
  dist/composition/fileContent.js  5.84 kB │ gzip: 1.97 kB │ map: 14.42 kB
181
181
  dist/internal/createAppV1.js  5.98 kB │ gzip: 1.91 kB │ map: 16.18 kB
182
182
  dist/components/PlBtnExportArchive/PlBtnExportArchive.vue2.js  5.99 kB │ gzip: 2.23 kB │ map: 12.13 kB
@@ -187,7 +187,7 @@ computing gzip size...
187
187
  dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js  8.35 kB │ gzip: 2.42 kB │ map: 16.95 kB
188
188
  dist/components/PlAdvancedFilter/FilterEditor.vue2.js 12.83 kB │ gzip: 3.28 kB │ map: 25.49 kB
189
189
  dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js 12.92 kB │ gzip: 3.68 kB │ map: 29.49 kB
190
- [vite:dts] Declaration files built in 4437ms.
190
+ [vite:dts] Declaration files built in 4376ms.
191
191
 
192
- ✓ built in 5.73s
192
+ ✓ built in 6.32s
193
193
  Build completed successfully
@@ -1,6 +1,6 @@
1
1
   WARN  Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
2
2
 
3
- > @platforma-sdk/ui-vue@1.58.4 formatter:check /home/runner/_work/platforma/platforma/sdk/ui-vue
3
+ > @platforma-sdk/ui-vue@1.58.8 formatter:check /home/runner/_work/platforma/platforma/sdk/ui-vue
4
4
  > ts-builder formatter --check
5
5
 
6
6
  Checking formatting...
@@ -8,5 +8,5 @@ Checking formatting...
8
8
  Checking formatting...
9
9
 
10
10
  All matched files use the correct format.
11
- Finished in 1355ms on 126 files using 8 threads.
11
+ Finished in 1359ms on 126 files using 8 threads.
12
12
  Format check completed successfully
@@ -1,10 +1,10 @@
1
1
   WARN  Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
2
2
 
3
- > @platforma-sdk/ui-vue@1.58.4 linter:check /home/runner/_work/platforma/platforma/sdk/ui-vue
3
+ > @platforma-sdk/ui-vue@1.58.8 linter:check /home/runner/_work/platforma/platforma/sdk/ui-vue
4
4
  > ts-builder linter --check
5
5
 
6
6
  Linting project...
7
7
  ↳ oxlint --config /home/runner/_work/platforma/platforma/sdk/ui-vue/.oxlintrc.json --deny-warnings
8
8
  Found 0 warnings and 0 errors.
9
- Finished in 27ms on 109 files with 98 rules using 8 threads.
9
+ Finished in 30ms on 109 files with 98 rules using 8 threads.
10
10
  Linting completed successfully
@@ -1,6 +1,6 @@
1
1
   WARN  Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
2
2
 
3
- > @platforma-sdk/ui-vue@1.58.4 types:check /home/runner/_work/platforma/platforma/sdk/ui-vue
3
+ > @platforma-sdk/ui-vue@1.58.8 types:check /home/runner/_work/platforma/platforma/sdk/ui-vue
4
4
  > ts-builder type-check --target browser-lib
5
5
 
6
6
  ↳ vue-tsc.js --noEmit --project ./tsconfig.json --customConditions ,
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @platforma-sdk/ui-vue
2
2
 
3
+ ## 1.58.8
4
+
5
+ ### Patch Changes
6
+
7
+ - 5a37042: fix export component PlAdvancedFilters
8
+
9
+ ## 1.58.5
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies [c2d9319]
14
+ - @platforma-sdk/model@1.58.5
15
+ - @milaboratories/uikit@2.10.37
16
+
3
17
  ## 1.58.4
4
18
 
5
19
  ### Patch Changes
@@ -1,10 +1,10 @@
1
- import s from "./PlAdvancedFilter.vue2.js";
2
- import o from "./PlAdvancedFilter.vue3.js";
1
+ import o from "./PlAdvancedFilter.vue2.js";
2
+ import s from "./PlAdvancedFilter.vue3.js";
3
3
  import t from "../../_virtual/_plugin-vue_export-helper.js";
4
4
  const e = {
5
- $style: o
6
- }, m = /* @__PURE__ */ t(s, [["__cssModules", e]]);
5
+ $style: s
6
+ }, l = /* @__PURE__ */ t(o, [["__cssModules", e]]);
7
7
  export {
8
- m as default
8
+ l as default
9
9
  };
10
10
  //# sourceMappingURL=PlAdvancedFilter.vue.js.map
@@ -1,5 +1,5 @@
1
1
  import { RootFilter, SourceOptionInfo, PlAdvancedFilterColumnId, RequiredMeta } from './types.ts';
2
- export { default as PlAdvancedFilter } from './PlAdvancedFilter.vue';
2
+ export { default as PlAdvancedFilterComponent } from './PlAdvancedFilter.vue';
3
3
  export declare const PlAdvancedFilterSupportedFilters: ("isNA" | "isNotNA" | "patternEquals" | "patternNotEquals" | "patternContainSubsequence" | "patternNotContainSubsequence" | "patternMatchesRegularExpression" | "patternFuzzyContainSubsequence" | "inSet" | "notInSet" | "topN" | "bottomN" | "equal" | "notEqual" | "lessThan" | "greaterThan" | "lessThanOrEqual" | "greaterThanOrEqual")[];
4
4
  export type PlAdvancedFilterItem = SourceOptionInfo;
5
5
  export type PlAdvancedFilter<Meta extends RequiredMeta = RequiredMeta> = RootFilter<Meta>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PlAdvancedFilter/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrE,eAAO,MAAM,gCAAgC,gVAAyB,CAAC;AACvE,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AACpD,MAAM,MAAM,gBAAgB,CAAC,IAAI,SAAS,YAAY,GAAG,YAAY,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PlAdvancedFilter/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAC9E,eAAO,MAAM,gCAAgC,gVAAyB,CAAC;AACvE,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AACpD,MAAM,MAAM,gBAAgB,CAAC,IAAI,SAAS,YAAY,GAAG,YAAY,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/PlAdvancedFilter/index.ts"],"sourcesContent":["import { SUPPORTED_FILTER_TYPES } from \"./constants.ts\";\nimport type {\n RootFilter,\n SourceOptionInfo,\n PlAdvancedFilterColumnId,\n RequiredMeta,\n} from \"./types.ts\";\n\nexport { default as PlAdvancedFilter } from \"./PlAdvancedFilter.vue\";\nexport const PlAdvancedFilterSupportedFilters = SUPPORTED_FILTER_TYPES;\nexport type PlAdvancedFilterItem = SourceOptionInfo;\nexport type PlAdvancedFilter<Meta extends RequiredMeta = RequiredMeta> = RootFilter<Meta>;\nexport { PlAdvancedFilterColumnId };\n"],"names":["PlAdvancedFilterSupportedFilters","SUPPORTED_FILTER_TYPES"],"mappings":";AASO,MAAMA,IAAmCC;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/PlAdvancedFilter/index.ts"],"sourcesContent":["import { SUPPORTED_FILTER_TYPES } from \"./constants.ts\";\nimport type {\n RootFilter,\n SourceOptionInfo,\n PlAdvancedFilterColumnId,\n RequiredMeta,\n} from \"./types.ts\";\n\nexport { default as PlAdvancedFilterComponent } from \"./PlAdvancedFilter.vue\";\nexport const PlAdvancedFilterSupportedFilters = SUPPORTED_FILTER_TYPES;\nexport type PlAdvancedFilterItem = SourceOptionInfo;\nexport type PlAdvancedFilter<Meta extends RequiredMeta = RequiredMeta> = RootFilter<Meta>;\nexport { PlAdvancedFilterColumnId };\n"],"names":["PlAdvancedFilterSupportedFilters","SUPPORTED_FILTER_TYPES"],"mappings":";AASO,MAAMA,IAAmCC;"}
@@ -1,6 +1,5 @@
1
1
  import { ListOptionBase, PObjectId } from '@platforma-sdk/model';
2
- import { PlAdvancedFilterItem } from '../../PlAdvancedFilter';
3
- import { PlAdvancedFilterColumnId } from '../../PlAdvancedFilter/types';
2
+ import { PlAdvancedFilterItem, PlAdvancedFilterColumnId } from '../../PlAdvancedFilter';
4
3
  import { Filter } from '../types';
5
4
  export type Props = {
6
5
  columns: PlAdvancedFilterItem[];
@@ -1 +1 @@
1
- {"version":3,"file":"FilterSidebar.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/PlAnnotations/components/FilterSidebar.vue"],"names":[],"mappings":"AA4JA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAuB,MAAM,sBAAsB,CAAC;AAG3F,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAMvC,MAAM,MAAM,KAAK,GAAG;IAClB,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAEhC,iBAAiB,EAAE,CAAC,MAAM,EAAE;QAC1B,QAAQ,EAAE,wBAAwB,CAAC;QACnC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC;KAC/B,KAAK,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAErF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,OAAO,CACzC,SAAS,GAAG;QAAE,QAAQ,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CACtD,CAAC;CACH,CAAC;;UA0EM,MAAM;;;;UAAN,MAAM;;;;AAxEd,wBAsPK"}
1
+ {"version":3,"file":"FilterSidebar.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/PlAnnotations/components/FilterSidebar.vue"],"names":[],"mappings":"AAkKA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAuB,MAAM,sBAAsB,CAAC;AAG3F,OAAO,KAAK,EACV,oBAAoB,EACpB,wBAAwB,EAGzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAMvC,MAAM,MAAM,KAAK,GAAG;IAClB,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAEhC,iBAAiB,EAAE,CAAC,MAAM,EAAE;QAC1B,QAAQ,EAAE,wBAAwB,CAAC;QACnC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC;KAC/B,KAAK,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAErF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,OAAO,CACzC,SAAS,GAAG;QAAE,QAAQ,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CACtD,CAAC;CACH,CAAC;;UA0EM,MAAM;;;;UAAN,MAAM;;;;AAxEd,wBAuPK"}
@@ -1,9 +1,10 @@
1
- import { defineComponent as V, mergeModels as q, useModel as E, computed as k, resolveComponent as x, createBlock as d, createCommentVNode as c, openBlock as i, unref as o, withCtx as r, createVNode as f, normalizeClass as u, createElementVNode as T, createTextVNode as g } from "vue";
2
- import { randomInt as m } from "../../../lib/util/helpers/dist/random.js";
3
- import { PlSidebarItem as A, PlBtnSecondary as v, PlEditableTitle as P } from "@milaboratories/uikit";
4
- import b from "./style.module.css.js";
5
- import { validateTitle as $ } from "../utils.js";
6
- const U = /* @__PURE__ */ V({
1
+ import { defineComponent as V, mergeModels as q, useModel as E, computed as k, createBlock as r, createCommentVNode as p, openBlock as d, unref as s, withCtx as n, createVNode as c, normalizeClass as i, createElementVNode as x, createTextVNode as f } from "vue";
2
+ import { randomInt as u } from "../../../lib/util/helpers/dist/random.js";
3
+ import { PlSidebarItem as T, PlBtnSecondary as g, PlEditableTitle as A } from "@milaboratories/uikit";
4
+ import v from "./style.module.css.js";
5
+ import { validateTitle as P } from "../utils.js";
6
+ import $ from "../../PlAdvancedFilter/PlAdvancedFilter.vue.js";
7
+ const j = /* @__PURE__ */ V({
7
8
  __name: "FilterSidebar",
8
9
  props: /* @__PURE__ */ q({
9
10
  columns: {},
@@ -15,33 +16,33 @@ const U = /* @__PURE__ */ V({
15
16
  stepModifiers: {}
16
17
  }),
17
18
  emits: ["update:step"],
18
- setup(p) {
19
- const e = E(p, "step"), l = p, S = k(() => l.hasSelectedColumns !== void 0 && l.getValuesForSelectedColumns !== void 0), h = () => {
19
+ setup(m) {
20
+ const e = E(m, "step"), l = m, b = k(() => l.hasSelectedColumns !== void 0 && l.getValuesForSelectedColumns !== void 0), S = () => {
20
21
  e.value.filter.filters.push({
21
- id: m(),
22
+ id: u(),
22
23
  isExpanded: !0,
23
24
  type: "or",
24
25
  filters: [
25
26
  {
26
- id: m(),
27
+ id: u(),
27
28
  type: "isNA",
28
29
  column: l.columns[0].id
29
30
  }
30
31
  ]
31
32
  });
32
33
  };
33
- async function C() {
34
+ async function h() {
34
35
  if (l.hasSelectedColumns === void 0 || l.getValuesForSelectedColumns === void 0)
35
36
  return;
36
- const s = await l.getValuesForSelectedColumns();
37
- if (!s || s.values.length === 0) return;
38
- const { columnId: t, values: a } = s, n = a.slice(0, 3).join(", ") + (a.length > 3 ? ` and ${a.length - 3} more` : "");
37
+ const a = await l.getValuesForSelectedColumns();
38
+ if (!a || a.values.length === 0) return;
39
+ const { columnId: t, values: o } = a, y = o.slice(0, 3).join(", ") + (o.length > 3 ? ` and ${o.length - 3} more` : "");
39
40
  e.value.filter.filters.push({
40
- id: m(),
41
- name: `Selected list (${n})`,
41
+ id: u(),
42
+ name: `Selected list (${y})`,
42
43
  isExpanded: !1,
43
44
  type: "or",
44
- filters: a.map((F, N) => ({
45
+ filters: o.map((F, N) => ({
45
46
  id: N,
46
47
  type: "patternEquals",
47
48
  column: t,
@@ -49,7 +50,7 @@ const U = /* @__PURE__ */ V({
49
50
  }))
50
51
  });
51
52
  }
52
- const y = [
53
+ const C = [
53
54
  "isNA",
54
55
  "isNotNA",
55
56
  "greaterThan",
@@ -65,68 +66,65 @@ const U = /* @__PURE__ */ V({
65
66
  "topN",
66
67
  "bottomN"
67
68
  ];
68
- return (s, t) => {
69
- const a = x("PlAdvancedFilter");
70
- return e.value ? (i(), d(o(A), { key: 0 }, {
71
- "header-content": r(() => [
72
- (i(), d(o(P), {
73
- key: e.value.id,
74
- modelValue: e.value.label,
75
- "onUpdate:modelValue": t[0] || (t[0] = (n) => e.value.label = n),
76
- class: u({ [o(b).flashing]: e.value.label.length === 0 }),
77
- "max-length": 40,
78
- "max-width": "600px",
79
- placeholder: "Label",
80
- autofocus: e.value.label.length === 0,
81
- validate: o($)
82
- }, null, 8, ["modelValue", "class", "autofocus", "validate"]))
83
- ]),
84
- "body-content": r(() => [
85
- f(a, {
86
- filters: e.value.filter,
87
- "onUpdate:filters": t[1] || (t[1] = (n) => e.value.filter = n),
88
- class: u([s.$style.root, { [o(b).disabled]: e.value.label.length === 0 }]),
89
- items: l.columns,
90
- "supported-filters": y,
91
- "get-suggest-options": l.getSuggestOptions,
92
- "enable-dnd": !1,
93
- "enable-add-group-button": !0
94
- }, {
95
- "add-group-buttons": r(() => [
96
- T("div", {
97
- class: u(s.$style.actions)
98
- }, [
99
- f(o(v), {
100
- icon: "add",
101
- onClick: h
102
- }, {
103
- default: r(() => [...t[2] || (t[2] = [
104
- g(" Add Filter ", -1)
105
- ])]),
106
- _: 1
107
- }),
108
- S.value ? (i(), d(o(v), {
109
- key: 0,
110
- icon: "add",
111
- disabled: !l.hasSelectedColumns,
112
- onClick: C
113
- }, {
114
- default: r(() => [...t[3] || (t[3] = [
115
- g(" From selection ", -1)
116
- ])]),
117
- _: 1
118
- }, 8, ["disabled"])) : c("", !0)
119
- ], 2)
120
- ]),
121
- _: 1
122
- }, 8, ["filters", "class", "items", "get-suggest-options"])
123
- ]),
124
- _: 1
125
- })) : c("", !0);
126
- };
69
+ return (a, t) => e.value ? (d(), r(s(T), { key: 0 }, {
70
+ "header-content": n(() => [
71
+ (d(), r(s(A), {
72
+ key: e.value.id,
73
+ modelValue: e.value.label,
74
+ "onUpdate:modelValue": t[0] || (t[0] = (o) => e.value.label = o),
75
+ class: i({ [s(v).flashing]: e.value.label.length === 0 }),
76
+ "max-length": 40,
77
+ "max-width": "600px",
78
+ placeholder: "Label",
79
+ autofocus: e.value.label.length === 0,
80
+ validate: s(P)
81
+ }, null, 8, ["modelValue", "class", "autofocus", "validate"]))
82
+ ]),
83
+ "body-content": n(() => [
84
+ c(s($), {
85
+ filters: e.value.filter,
86
+ "onUpdate:filters": t[1] || (t[1] = (o) => e.value.filter = o),
87
+ class: i([a.$style.root, { [s(v).disabled]: e.value.label.length === 0 }]),
88
+ items: l.columns,
89
+ "supported-filters": C,
90
+ "get-suggest-options": l.getSuggestOptions,
91
+ "enable-dnd": !1,
92
+ "enable-add-group-button": !0
93
+ }, {
94
+ "add-group-buttons": n(() => [
95
+ x("div", {
96
+ class: i(a.$style.actions)
97
+ }, [
98
+ c(s(g), {
99
+ icon: "add",
100
+ onClick: S
101
+ }, {
102
+ default: n(() => [...t[2] || (t[2] = [
103
+ f(" Add Filter ", -1)
104
+ ])]),
105
+ _: 1
106
+ }),
107
+ b.value ? (d(), r(s(g), {
108
+ key: 0,
109
+ icon: "add",
110
+ disabled: !l.hasSelectedColumns,
111
+ onClick: h
112
+ }, {
113
+ default: n(() => [...t[3] || (t[3] = [
114
+ f(" From selection ", -1)
115
+ ])]),
116
+ _: 1
117
+ }, 8, ["disabled"])) : p("", !0)
118
+ ], 2)
119
+ ]),
120
+ _: 1
121
+ }, 8, ["filters", "class", "items", "get-suggest-options"])
122
+ ]),
123
+ _: 1
124
+ })) : p("", !0);
127
125
  }
128
126
  });
129
127
  export {
130
- U as default
128
+ j as default
131
129
  };
132
130
  //# sourceMappingURL=FilterSidebar.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterSidebar.vue2.js","sources":["../../../../src/components/PlAnnotations/components/FilterSidebar.vue"],"sourcesContent":["<script lang=\"ts\">\nexport type Props = {\n columns: PlAdvancedFilterItem[];\n\n getSuggestOptions: (params: {\n columnId: PlAdvancedFilterColumnId;\n axisIdx?: number;\n searchStr: string;\n searchType: \"value\" | \"label\";\n }) => ListOptionBase<string | number>[] | Promise<ListOptionBase<string | number>[]>;\n\n hasSelectedColumns?: boolean;\n getValuesForSelectedColumns?: () => Promise<\n undefined | { columnId: PObjectId; values: string[] }\n >;\n};\n</script>\n<script setup lang=\"ts\">\nimport { randomInt } from \"@milaboratories/helpers\";\nimport { PlBtnSecondary, PlEditableTitle, PlSidebarItem } from \"@milaboratories/uikit\";\nimport type { ListOptionBase, PObjectId, SUniversalPColumnId } from \"@platforma-sdk/model\";\nimport { computed } from \"vue\";\nimport type { PlAdvancedFilter, PlAdvancedFilterSupportedFilters } from \"../../PlAdvancedFilter\";\nimport { type PlAdvancedFilterItem } from \"../../PlAdvancedFilter\";\nimport type { PlAdvancedFilterColumnId } from \"../../PlAdvancedFilter/types\";\nimport type { Filter } from \"../types\";\n\nimport $commonStyle from \"./style.module.css\";\nimport { validateTitle } from \"../utils\";\n\n// Models\nconst step = defineModel<Filter>(\"step\", { required: true });\n// Props\nconst props = defineProps<Props>();\n// State\nconst withSelection = computed(() => {\n return props.hasSelectedColumns !== undefined && props.getValuesForSelectedColumns !== undefined;\n});\n// Actions\nconst addFilterPlaceholder = () => {\n step.value.filter.filters.push({\n id: randomInt(),\n isExpanded: true,\n type: \"or\",\n filters: [\n {\n id: randomInt(),\n type: \"isNA\",\n column: props.columns[0].id as SUniversalPColumnId,\n },\n ],\n });\n};\n\nasync function addFilterFromSelected() {\n if (props.hasSelectedColumns === undefined || props.getValuesForSelectedColumns === undefined)\n return;\n\n const data = await props.getValuesForSelectedColumns();\n if (!data || data.values.length === 0) return;\n\n const { columnId, values } = data;\n const shortReminder =\n values.slice(0, 3).join(\", \") + (values.length > 3 ? ` and ${values.length - 3} more` : \"\");\n\n step.value.filter.filters.push({\n id: randomInt(),\n name: `Selected list (${shortReminder})`,\n isExpanded: false,\n type: \"or\",\n filters: values.map((value, i) => ({\n id: i,\n type: \"patternEquals\",\n column: columnId as SUniversalPColumnId,\n value,\n })),\n });\n}\n\nconst supportedFilters = [\n \"isNA\",\n \"isNotNA\",\n \"greaterThan\",\n \"greaterThanOrEqual\",\n \"lessThan\",\n \"lessThanOrEqual\",\n \"patternEquals\",\n \"patternNotEquals\",\n \"patternContainSubsequence\",\n \"patternNotContainSubsequence\",\n \"equal\",\n \"notEqual\",\n \"topN\",\n \"bottomN\",\n] as (typeof PlAdvancedFilterSupportedFilters)[number][];\n</script>\n\n<template>\n <PlSidebarItem v-if=\"step\">\n <template #header-content>\n <PlEditableTitle\n :key=\"step.id\"\n v-model=\"step.label\"\n :class=\"{ [$commonStyle.flashing]: step.label.length === 0 }\"\n :max-length=\"40\"\n max-width=\"600px\"\n placeholder=\"Label\"\n :autofocus=\"step.label.length === 0\"\n :validate=\"validateTitle\"\n />\n </template>\n <template #body-content>\n <PlAdvancedFilter\n v-model:filters=\"step.filter as PlAdvancedFilter\"\n :class=\"[$style.root, { [$commonStyle.disabled]: step.label.length === 0 }]\"\n :items=\"props.columns\"\n :supported-filters=\"supportedFilters\"\n :get-suggest-options=\"props.getSuggestOptions\"\n :enable-dnd=\"false\"\n :enable-add-group-button=\"true\"\n >\n <template #add-group-buttons>\n <div :class=\"$style.actions\">\n <PlBtnSecondary icon=\"add\" @click=\"addFilterPlaceholder\"> Add Filter </PlBtnSecondary>\n <PlBtnSecondary\n v-if=\"withSelection\"\n icon=\"add\"\n :disabled=\"!props.hasSelectedColumns\"\n @click=\"addFilterFromSelected\"\n >\n From selection\n </PlBtnSecondary>\n </div>\n </template>\n </PlAdvancedFilter>\n </template>\n </PlSidebarItem>\n</template>\n\n<style module>\n.root {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.actions {\n display: flex;\n flex-direction: row;\n gap: 12px;\n}\n</style>\n"],"names":["step","_useModel","__props","props","withSelection","computed","addFilterPlaceholder","randomInt","addFilterFromSelected","data","columnId","values","shortReminder","value","i","supportedFilters","_createBlock","_unref","PlSidebarItem","PlEditableTitle","_cache","$event","_normalizeClass","validateTitle","_createVNode","_component_PlAdvancedFilter","$style","$commonStyle","_createElementVNode","PlBtnSecondary"],"mappings":"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"}
1
+ {"version":3,"file":"FilterSidebar.vue2.js","sources":["../../../../src/components/PlAnnotations/components/FilterSidebar.vue"],"sourcesContent":["<script lang=\"ts\">\nexport type Props = {\n columns: PlAdvancedFilterItem[];\n\n getSuggestOptions: (params: {\n columnId: PlAdvancedFilterColumnId;\n axisIdx?: number;\n searchStr: string;\n searchType: \"value\" | \"label\";\n }) => ListOptionBase<string | number>[] | Promise<ListOptionBase<string | number>[]>;\n\n hasSelectedColumns?: boolean;\n getValuesForSelectedColumns?: () => Promise<\n undefined | { columnId: PObjectId; values: string[] }\n >;\n};\n</script>\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { randomInt } from \"@milaboratories/helpers\";\nimport { PlBtnSecondary, PlEditableTitle, PlSidebarItem } from \"@milaboratories/uikit\";\nimport type { ListOptionBase, PObjectId, SUniversalPColumnId } from \"@platforma-sdk/model\";\n\nimport { PlAdvancedFilterComponent } from \"../../PlAdvancedFilter\";\nimport type {\n PlAdvancedFilterItem,\n PlAdvancedFilterColumnId,\n PlAdvancedFilterSupportedFilters,\n PlAdvancedFilter,\n} from \"../../PlAdvancedFilter\";\nimport type { Filter } from \"../types\";\n\nimport $commonStyle from \"./style.module.css\";\nimport { validateTitle } from \"../utils\";\n\n// Models\nconst step = defineModel<Filter>(\"step\", { required: true });\n// Props\nconst props = defineProps<Props>();\n// State\nconst withSelection = computed(() => {\n return props.hasSelectedColumns !== undefined && props.getValuesForSelectedColumns !== undefined;\n});\n// Actions\nconst addFilterPlaceholder = () => {\n step.value.filter.filters.push({\n id: randomInt(),\n isExpanded: true,\n type: \"or\",\n filters: [\n {\n id: randomInt(),\n type: \"isNA\",\n column: props.columns[0].id as SUniversalPColumnId,\n },\n ],\n });\n};\n\nasync function addFilterFromSelected() {\n if (props.hasSelectedColumns === undefined || props.getValuesForSelectedColumns === undefined)\n return;\n\n const data = await props.getValuesForSelectedColumns();\n if (!data || data.values.length === 0) return;\n\n const { columnId, values } = data;\n const shortReminder =\n values.slice(0, 3).join(\", \") + (values.length > 3 ? ` and ${values.length - 3} more` : \"\");\n\n step.value.filter.filters.push({\n id: randomInt(),\n name: `Selected list (${shortReminder})`,\n isExpanded: false,\n type: \"or\",\n filters: values.map((value, i) => ({\n id: i,\n type: \"patternEquals\",\n column: columnId as SUniversalPColumnId,\n value,\n })),\n });\n}\n\nconst supportedFilters = [\n \"isNA\",\n \"isNotNA\",\n \"greaterThan\",\n \"greaterThanOrEqual\",\n \"lessThan\",\n \"lessThanOrEqual\",\n \"patternEquals\",\n \"patternNotEquals\",\n \"patternContainSubsequence\",\n \"patternNotContainSubsequence\",\n \"equal\",\n \"notEqual\",\n \"topN\",\n \"bottomN\",\n] as (typeof PlAdvancedFilterSupportedFilters)[number][];\n</script>\n\n<template>\n <PlSidebarItem v-if=\"step\">\n <template #header-content>\n <PlEditableTitle\n :key=\"step.id\"\n v-model=\"step.label\"\n :class=\"{ [$commonStyle.flashing]: step.label.length === 0 }\"\n :max-length=\"40\"\n max-width=\"600px\"\n placeholder=\"Label\"\n :autofocus=\"step.label.length === 0\"\n :validate=\"validateTitle\"\n />\n </template>\n <template #body-content>\n <PlAdvancedFilterComponent\n v-model:filters=\"step.filter as PlAdvancedFilter\"\n :class=\"[$style.root, { [$commonStyle.disabled]: step.label.length === 0 }]\"\n :items=\"props.columns\"\n :supported-filters=\"supportedFilters\"\n :get-suggest-options=\"props.getSuggestOptions\"\n :enable-dnd=\"false\"\n :enable-add-group-button=\"true\"\n >\n <template #add-group-buttons>\n <div :class=\"$style.actions\">\n <PlBtnSecondary icon=\"add\" @click=\"addFilterPlaceholder\"> Add Filter </PlBtnSecondary>\n <PlBtnSecondary\n v-if=\"withSelection\"\n icon=\"add\"\n :disabled=\"!props.hasSelectedColumns\"\n @click=\"addFilterFromSelected\"\n >\n From selection\n </PlBtnSecondary>\n </div>\n </template>\n </PlAdvancedFilterComponent>\n </template>\n </PlSidebarItem>\n</template>\n\n<style module>\n.root {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.actions {\n display: flex;\n flex-direction: row;\n gap: 12px;\n}\n</style>\n"],"names":["step","_useModel","__props","props","withSelection","computed","addFilterPlaceholder","randomInt","addFilterFromSelected","data","columnId","values","shortReminder","value","i","supportedFilters","_createBlock","_unref","PlSidebarItem","PlEditableTitle","_cache","$event","_normalizeClass","validateTitle","_createVNode","PlAdvancedFilterComponent","$style","$commonStyle","_createElementVNode","PlBtnSecondary"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlAnnotations.vue2.js","sources":["../../../../src/components/PlAnnotations/components/PlAnnotations.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Props as BaseProps } from \"./FilterSidebar.vue\";\nexport type Props = BaseProps & {\n onDeleteSchema?: () => void;\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, effect, shallowRef } from \"vue\";\n\nimport { isNil } from \"@milaboratories/helpers\";\nimport { PlSidebarGroup, useConfirm } from \"@milaboratories/uikit\";\n\nimport type { Annotation } from \"../types\";\nimport AnnotationsSidebar from \"./AnnotationsSidebar.vue\";\nimport FilterSidebar from \"./FilterSidebar.vue\";\n\n// Models\nconst annotation = defineModel<Annotation>(\"annotation\", { required: true });\n// Props\nconst props = defineProps<Props>();\n// State\nconst selectedStepId = shallowRef<number | undefined>(undefined);\nconst selectedStep = computed(() => {\n return isNil(selectedStepId.value) || isNil(annotation.value)\n ? undefined\n : annotation.value.steps.find((step) => step.id === selectedStepId.value);\n});\n\n// Watchers\neffect(function setDefaultStepId() {\n if (selectedStepId.value === undefined && annotation.value.steps.length > 0) {\n selectedStepId.value = annotation.value.steps[0].id;\n }\n});\n// Hooks\nconst confirmResetSchema = useConfirm({\n title: \"Reset Schema\",\n message: \"Are you sure you want to reset the schema? This action cannot be undone.\",\n confirmLabel: \"Yes, reset\",\n cancelLabel: \"No, cancel\",\n});\n// Actions\nasync function handleDeleteSchema() {\n if (await confirmResetSchema()) {\n selectedStepId.value = undefined;\n props.onDeleteSchema?.();\n }\n}\n</script>\n\n<template>\n <PlSidebarGroup>\n <template #item-0>\n <AnnotationsSidebar\n v-model:annotation=\"annotation\"\n v-model:selectedStepId=\"selectedStepId\"\n :class=\"$style.sidebarItem\"\n :columns=\"props.columns\"\n @delete-schema=\"handleDeleteSchema\"\n />\n </template>\n <template #item-1>\n <FilterSidebar\n v-if=\"selectedStep\"\n v-model:step=\"selectedStep\"\n :class=\"$style.sidebarItem\"\n :columns=\"props.columns\"\n :get-suggest-options=\"props.getSuggestOptions\"\n :selectedStepId=\"selectedStepId\"\n :hasSelectedColumns=\"props.hasSelectedColumns\"\n :getValuesForSelectedColumns=\"props.getValuesForSelectedColumns\"\n />\n </template>\n </PlSidebarGroup>\n</template>\n\n<style module>\n.sidebarItem {\n width: 100%;\n height: 100%;\n}\n</style>\n"],"names":["annotation","_useModel","props","__props","selectedStepId","shallowRef","selectedStep","computed","isNil","step","effect","confirmResetSchema","useConfirm","handleDeleteSchema","_a","_createBlock","_unref","PlSidebarGroup","_createVNode","AnnotationsSidebar","$event","_normalizeClass","$style","FilterSidebar"],"mappings":";;;;;;;;;;;;;;;;;;;AAkBA,UAAMA,IAAaC,KAAwB,YAAgC,GAErEC,IAAQC,GAERC,IAAiBC,EAA+B,MAAS,GACzDC,IAAeC,EAAS,MACrBC,EAAMJ,EAAe,KAAK,KAAKI,EAAMR,EAAW,KAAK,IACxD,SACAA,EAAW,MAAM,MAAM,KAAK,CAACS,MAASA,EAAK,OAAOL,EAAe,KAAK,CAC3E;AAGD,IAAAM,EAAO,WAA4B;AACjC,MAAIN,EAAe,UAAU,UAAaJ,EAAW,MAAM,MAAM,SAAS,MACxEI,EAAe,QAAQJ,EAAW,MAAM,MAAM,CAAC,EAAE;AAAA,IAErD,CAAC;AAED,UAAMW,IAAqBC,EAAW;AAAA,MACpC,OAAO;AAAA,MACP,SAAS;AAAA,MACT,cAAc;AAAA,MACd,aAAa;AAAA,IAAA,CACd;AAED,mBAAeC,IAAqB;;AAClC,MAAI,MAAMF,QACRP,EAAe,QAAQ,SACvBU,IAAAZ,EAAM,mBAAN,QAAAY,EAAA,KAAAZ;AAAA,IAEJ;2BAIEa,EAsBiBC,EAAAC,CAAA,GAAA,MAAA;AAAA,MArBJ,YACT,MAME;AAAA,QANFC,EAMEC,GAAA;AAAA,UALQ,YAAYnB,EAAA;AAAA,wDAAAA,EAAU,QAAAoB;AAAA,UACtB,gBAAgBhB,EAAA;AAAA,4DAAAA,EAAc,QAAAgB;AAAA,UACrC,OAAKC,EAAEC,EAAAA,OAAO,WAAW;AAAA,UACzB,SAASpB,EAAM;AAAA,UACf,gBAAeW;AAAA,QAAA;;MAGT,YANf,MAW4C;AAAA,QAH9BP,EAAA,cADRS,EASEQ,GAAA;AAAA;UAPQ,MAAMjB,EAAA;AAAA,kDAAAA,EAAY,QAAAc;AAAA,UACzB,OAAKC,EAAEC,EAAAA,OAAO,WAAW;AAAA,UACzB,SAASpB,EAAM;AAAA,UACf,uBAAqBA,EAAM;AAAA,UAC3B,gBAAgBE,EAAA;AAAA,UAChB,oBAAoBF,EAAM;AAAA,UAC1B,6BAA6BA,EAAM;AAAA,QAAA;;;;;;"}
1
+ {"version":3,"file":"PlAnnotations.vue2.js","sources":["../../../../src/components/PlAnnotations/components/PlAnnotations.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Props as BaseProps } from \"./FilterSidebar.vue\";\nexport type Props = BaseProps & {\n onDeleteSchema?: () => void;\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, effect, shallowRef } from \"vue\";\n\nimport { isNil } from \"@milaboratories/helpers\";\nimport { PlSidebarGroup, useConfirm } from \"@milaboratories/uikit\";\n\nimport type { Annotation } from \"../types\";\nimport AnnotationsSidebar from \"./AnnotationsSidebar.vue\";\nimport FilterSidebar from \"./FilterSidebar.vue\";\n\n// Models\nconst annotation = defineModel<Annotation>(\"annotation\", { required: true });\n// Props\nconst props = defineProps<Props>();\n// State\nconst selectedStepId = shallowRef<number | undefined>(undefined);\nconst selectedStep = computed(() => {\n return isNil(selectedStepId.value) || isNil(annotation.value)\n ? undefined\n : annotation.value.steps.find((step) => step.id === selectedStepId.value);\n});\n\n// Watchers\neffect(function setDefaultStepId() {\n if (selectedStepId.value === undefined && annotation.value.steps.length > 0) {\n selectedStepId.value = annotation.value.steps[0].id;\n }\n});\n// Hooks\nconst confirmResetSchema = useConfirm({\n title: \"Reset Schema\",\n message: \"Are you sure you want to reset the schema? This action cannot be undone.\",\n confirmLabel: \"Yes, reset\",\n cancelLabel: \"No, cancel\",\n});\n// Actions\nasync function handleDeleteSchema() {\n if (await confirmResetSchema()) {\n selectedStepId.value = undefined;\n props.onDeleteSchema?.();\n }\n}\n</script>\n\n<template>\n <PlSidebarGroup>\n <template #item-0>\n <AnnotationsSidebar\n v-model:annotation=\"annotation\"\n v-model:selectedStepId=\"selectedStepId\"\n :class=\"$style.sidebarItem\"\n :columns=\"props.columns\"\n @delete-schema=\"handleDeleteSchema\"\n />\n </template>\n <template #item-1>\n <FilterSidebar\n v-if=\"selectedStep\"\n v-model:step=\"selectedStep\"\n :class=\"$style.sidebarItem\"\n :columns=\"props.columns\"\n :get-suggest-options=\"props.getSuggestOptions\"\n :selectedStepId=\"selectedStepId\"\n :hasSelectedColumns=\"props.hasSelectedColumns\"\n :getValuesForSelectedColumns=\"props.getValuesForSelectedColumns\"\n />\n </template>\n </PlSidebarGroup>\n</template>\n\n<style module>\n.sidebarItem {\n width: 100%;\n height: 100%;\n}\n</style>\n"],"names":["annotation","_useModel","props","__props","selectedStepId","shallowRef","selectedStep","computed","isNil","step","effect","confirmResetSchema","useConfirm","handleDeleteSchema","_a","_createBlock","_unref","PlSidebarGroup","_createVNode","AnnotationsSidebar","$event","_normalizeClass","$style","FilterSidebar"],"mappings":";;;;;;;;;;;;;;;;;;;AAkBA,UAAMA,IAAaC,KAAwB,YAAgC,GAErEC,IAAQC,GAERC,IAAiBC,EAA+B,MAAS,GACzDC,IAAeC,EAAS,MACrBC,EAAMJ,EAAe,KAAK,KAAKI,EAAMR,EAAW,KAAK,IACxD,SACAA,EAAW,MAAM,MAAM,KAAK,CAACS,MAASA,EAAK,OAAOL,EAAe,KAAK,CAC3E;AAGD,IAAAM,EAAO,WAA4B;AACjC,MAAIN,EAAe,UAAU,UAAaJ,EAAW,MAAM,MAAM,SAAS,MACxEI,EAAe,QAAQJ,EAAW,MAAM,MAAM,CAAC,EAAE;AAAA,IAErD,CAAC;AAED,UAAMW,IAAqBC,EAAW;AAAA,MACpC,OAAO;AAAA,MACP,SAAS;AAAA,MACT,cAAc;AAAA,MACd,aAAa;AAAA,IAAA,CACd;AAED,mBAAeC,IAAqB;;AAClC,MAAI,MAAMF,QACRP,EAAe,QAAQ,SACvBU,IAAAZ,EAAM,mBAAN,QAAAY,EAAA,KAAAZ;AAAA,IAEJ;2BAIEa,EAsBiBC,EAAAC,CAAA,GAAA,MAAA;AAAA,MArBJ,YACT,MAME;AAAA,QANFC,EAMEC,GAAA;AAAA,UALQ,YAAYnB,EAAA;AAAA,wDAAAA,EAAU,QAAAoB;AAAA,UACtB,gBAAgBhB,EAAA;AAAA,4DAAAA,EAAc,QAAAgB;AAAA,UACrC,OAAKC,EAAEC,EAAAA,OAAO,WAAW;AAAA,UACzB,SAASpB,EAAM;AAAA,UACf,gBAAeW;AAAA,QAAA;;MAGT,YACR,MAUW;AAAA,QATJP,EAAA,cADRS,EASEQ,GAAA;AAAA;UAPQ,MAAMjB,EAAA;AAAA,kDAAAA,EAAY,QAAAc;AAAA,UACzB,OAAKC,EAAEC,EAAAA,OAAO,WAAW;AAAA,UACzB,SAASpB,EAAM;AAAA,UACf,uBAAqBA,EAAM;AAAA,UAC3B,gBAAgBE,EAAA;AAAA,UAChB,oBAAoBF,EAAM;AAAA,UAC1B,6BAA6BA,EAAM;AAAA,QAAA;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlTableFiltersV2.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlTableFilters/PlTableFiltersV2.vue"],"names":[],"mappings":"AAoJA,OAAO,KAAK,EACV,gBAAgB,EAGhB,0BAA0B,EAC3B,MAAM,sBAAsB,CAAC;AAoB9B,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B,CAAC;AA0FF,KAAK,iBAAiB,GAAG;IACzB,UAAU,EAAE,0BAA0B,CAAC;CACtC,GAAG,WAAW,CAAC;;;;;;AAoIhB,wBAOG"}
1
+ {"version":3,"file":"PlTableFiltersV2.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlTableFilters/PlTableFiltersV2.vue"],"names":[],"mappings":"AAqJA,OAAO,KAAK,EACV,gBAAgB,EAGhB,0BAA0B,EAC3B,MAAM,sBAAsB,CAAC;AAqB9B,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B,CAAC;AA0FF,KAAK,iBAAiB,GAAG;IACzB,UAAU,EAAE,0BAA0B,CAAC;CACtC,GAAG,WAAW,CAAC;;;;;;AAoIhB,wBAOG"}
@@ -1,4 +1,4 @@
1
- import { defineComponent as M, mergeModels as N, useModel as A, ref as T, onMounted as x, computed as C, createElementBlock as p, openBlock as s, Fragment as E, createBlock as P, createCommentVNode as w, createVNode as m, unref as r, Teleport as B, withModifiers as z, withCtx as c, createTextVNode as h, normalizeClass as O } from "vue";
1
+ import { defineComponent as M, mergeModels as N, useModel as A, ref as C, onMounted as x, computed as T, createElementBlock as p, openBlock as s, Fragment as E, createBlock as P, createCommentVNode as w, createVNode as m, unref as o, Teleport as B, withModifiers as z, withCtx as c, createTextVNode as h, normalizeClass as O } from "vue";
2
2
  import { readAnnotation as f, Annotation as g, readDomain as $, Domain as D, getAxisId as I, canonicalizeJson as L, parseJson as U } from "@platforma-sdk/model";
3
3
  import { usePlBlockPageTitleTeleportTarget as J, PlBtnGhost as G, PlSlideModal as R } from "@milaboratories/uikit";
4
4
  import j from "../PlAdvancedFilter/PlAdvancedFilter.vue.js";
@@ -12,21 +12,21 @@ const H = { key: 1 }, Y = /* @__PURE__ */ M({
12
12
  }),
13
13
  emits: ["update:modelValue"],
14
14
  setup(v) {
15
- const a = A(v, "modelValue"), k = v, b = T(!1);
15
+ const a = A(v, "modelValue"), k = v, b = C(!1);
16
16
  x(() => {
17
17
  b.value = !0;
18
18
  });
19
- const V = J("PlTableFiltersV2"), i = T(!1), q = C(() => a.value.filters.length > 0);
19
+ const V = J("PlTableFiltersV2"), i = C(!1), q = T(() => a.value.filters.length > 0);
20
20
  function y(t) {
21
21
  const e = t.type === "axis" ? { type: "axis", id: I(t.spec) } : { type: "column", id: t.id };
22
22
  return L(e);
23
23
  }
24
- const u = C(() => k.columns.map((t, e) => {
24
+ const u = T(() => k.columns.map((t, e) => {
25
25
  var d;
26
- const l = y(t), o = ((d = f(t.spec, g.Label)) == null ? void 0 : d.trim()) ?? `Unlabeled ${t.type} ${e}`, n = $(t.spec, D.Alphabet) ?? f(t.spec, g.Alphabet);
26
+ const l = y(t), r = ((d = f(t.spec, g.Label)) == null ? void 0 : d.trim()) ?? `Unlabeled ${t.type} ${e}`, n = $(t.spec, D.Alphabet) ?? f(t.spec, g.Alphabet);
27
27
  return {
28
28
  id: l,
29
- label: o,
29
+ label: r,
30
30
  spec: t.spec,
31
31
  alphabet: n ?? void 0
32
32
  };
@@ -47,7 +47,7 @@ const H = { key: 1 }, Y = /* @__PURE__ */ M({
47
47
  "notEqual"
48
48
  ];
49
49
  function F(t) {
50
- const e = u.value.find((o) => o.id === t.columnId);
50
+ const e = u.value.find((r) => r.id === t.columnId);
51
51
  if (!e) return [];
52
52
  const l = f(e.spec, g.DiscreteValues);
53
53
  if (!l) return [];
@@ -58,11 +58,11 @@ const H = { key: 1 }, Y = /* @__PURE__ */ M({
58
58
  }
59
59
  }
60
60
  return (t, e) => (s(), p(E, null, [
61
- b.value && r(V) ? (s(), P(B, {
61
+ b.value && o(V) ? (s(), P(B, {
62
62
  key: 0,
63
- to: r(V)
63
+ to: o(V)
64
64
  }, [
65
- m(r(G), {
65
+ m(o(G), {
66
66
  icon: q.value ? "filter-on" : "filter",
67
67
  onClick: e[0] || (e[0] = z((l) => i.value = !0, ["stop"]))
68
68
  }, {
@@ -72,7 +72,7 @@ const H = { key: 1 }, Y = /* @__PURE__ */ M({
72
72
  _: 1
73
73
  }, 8, ["icon"])
74
74
  ], 8, ["to"])) : w("", !0),
75
- m(r(R), {
75
+ m(o(R), {
76
76
  modelValue: i.value,
77
77
  "onUpdate:modelValue": e[2] || (e[2] = (l) => i.value = l),
78
78
  "close-on-outside-click": !1
@@ -85,7 +85,7 @@ const H = { key: 1 }, Y = /* @__PURE__ */ M({
85
85
  key: 0,
86
86
  class: O(t.$style.root)
87
87
  }, [
88
- m(r(j), {
88
+ m(o(j), {
89
89
  filters: a.value,
90
90
  "onUpdate:filters": e[1] || (e[1] = (l) => a.value = l),
91
91
  items: u.value,
@@ -1 +1 @@
1
- {"version":3,"file":"PlTableFiltersV2.vue2.js","sources":["../../../src/components/PlTableFilters/PlTableFiltersV2.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type {\n PTableColumnSpec,\n PTableColumnId,\n ListOptionBase,\n PlDataTableFiltersWithMeta,\n} from \"@platforma-sdk/model\";\nimport {\n canonicalizeJson,\n Annotation,\n Domain,\n readAnnotation,\n readDomain,\n parseJson,\n getAxisId,\n} from \"@platforma-sdk/model\";\nimport { computed, onMounted, ref } from \"vue\";\nimport { PlBtnGhost, PlSlideModal, usePlBlockPageTitleTeleportTarget } from \"@milaboratories/uikit\";\nimport {\n PlAdvancedFilter,\n PlAdvancedFilterSupportedFilters,\n type PlAdvancedFilterItem,\n} from \"../PlAdvancedFilter\";\nimport type { PlAdvancedFilterColumnId } from \"../PlAdvancedFilter/types\";\n\nconst model = defineModel<PlDataTableFiltersWithMeta>({ required: true });\nconst props = defineProps<{\n columns: PTableColumnSpec[];\n}>();\n\n// Teleport for \"Filters\" button\nconst mounted = ref(false);\nonMounted(() => {\n mounted.value = true;\n});\nconst teleportTarget = usePlBlockPageTitleTeleportTarget(\"PlTableFiltersV2\");\nconst showManager = ref(false);\n\n// Check if any filters are active\nconst filtersOn = computed(() => {\n return model.value.filters.length > 0;\n});\n\n// Convert PTableColumnSpec to PlAdvancedFilterColumnId\nfunction makeFilterColumnId(spec: PTableColumnSpec): PlAdvancedFilterColumnId {\n const id: PTableColumnId =\n spec.type === \"axis\"\n ? { type: \"axis\", id: getAxisId(spec.spec) }\n : { type: \"column\", id: spec.id };\n return canonicalizeJson<PTableColumnId>(id) as unknown as PlAdvancedFilterColumnId;\n}\n\n// Convert PTableColumnSpec[] to PlAdvancedFilterItem[]\nconst items = computed<PlAdvancedFilterItem[]>(() => {\n return props.columns.map((col, idx) => {\n const id = makeFilterColumnId(col);\n const label =\n readAnnotation(col.spec, Annotation.Label)?.trim() ?? `Unlabeled ${col.type} ${idx}`;\n const alphabet =\n readDomain(col.spec, Domain.Alphabet) ?? readAnnotation(col.spec, Annotation.Alphabet);\n return {\n id,\n label,\n spec: col.spec,\n alphabet: alphabet ?? undefined,\n };\n });\n});\n\n// Supported filters (same set as FilterSidebar)\nconst supportedFilters = [\n \"isNA\",\n \"isNotNA\",\n \"greaterThan\",\n \"greaterThanOrEqual\",\n \"lessThan\",\n \"lessThanOrEqual\",\n \"patternEquals\",\n \"patternNotEquals\",\n \"patternContainSubsequence\",\n \"patternNotContainSubsequence\",\n \"patternMatchesRegularExpression\",\n \"patternFuzzyContainSubsequence\",\n \"equal\",\n \"notEqual\",\n] as (typeof PlAdvancedFilterSupportedFilters)[number][];\n\n// getSuggestOptions - provide discrete values from column annotations\nfunction getSuggestOptions(params: {\n columnId: PlAdvancedFilterColumnId;\n axisIdx?: number;\n searchStr: string;\n searchType: \"value\" | \"label\";\n}): ListOptionBase<string | number>[] {\n const item = items.value.find((i) => i.id === params.columnId);\n if (!item) return [];\n\n const discreteValuesStr = readAnnotation(item.spec, Annotation.DiscreteValues);\n if (!discreteValuesStr) return [];\n\n try {\n const values = parseJson<(string | number)[]>(discreteValuesStr);\n return values\n .filter((v) => {\n if (!params.searchStr) return true;\n const str = String(v).toLowerCase();\n return str.includes(params.searchStr.toLowerCase());\n })\n .map((v) => ({ value: v, label: String(v) }));\n } catch {\n return [];\n }\n}\n</script>\n\n<template>\n <Teleport v-if=\"mounted && teleportTarget\" :to=\"teleportTarget\">\n <PlBtnGhost :icon=\"filtersOn ? 'filter-on' : 'filter'\" @click.stop=\"showManager = true\">\n Filters\n </PlBtnGhost>\n </Teleport>\n\n <PlSlideModal v-model=\"showManager\" :close-on-outside-click=\"false\">\n <template #title>Manage Filters</template>\n\n <div v-if=\"items.length > 0\" :class=\"$style.root\">\n <PlAdvancedFilter\n v-model:filters=\"model as PlAdvancedFilter\"\n :items=\"items\"\n :supported-filters=\"supportedFilters\"\n :get-suggest-options=\"getSuggestOptions\"\n :enable-dnd=\"false\"\n :enable-add-group-button=\"true\"\n />\n </div>\n <div v-else>No filters applicable</div>\n </PlSlideModal>\n</template>\n\n<style module>\n.root {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n</style>\n"],"names":["model","_useModel","props","__props","mounted","ref","onMounted","teleportTarget","usePlBlockPageTitleTeleportTarget","showManager","filtersOn","computed","makeFilterColumnId","spec","id","getAxisId","canonicalizeJson","items","col","idx","label","_a","readAnnotation","Annotation","alphabet","readDomain","Domain","supportedFilters","getSuggestOptions","params","item","i","discreteValuesStr","parseJson","v","_unref","_createBlock","_Teleport","_createVNode","PlBtnGhost","_cache","PlSlideModal","$event","_createElementBlock","_normalizeClass","$style","PlAdvancedFilter","_openBlock"],"mappings":"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"}
1
+ {"version":3,"file":"PlTableFiltersV2.vue2.js","sources":["../../../src/components/PlTableFilters/PlTableFiltersV2.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type {\n PTableColumnSpec,\n PTableColumnId,\n ListOptionBase,\n PlDataTableFiltersWithMeta,\n} from \"@platforma-sdk/model\";\nimport {\n canonicalizeJson,\n Annotation,\n Domain,\n readAnnotation,\n readDomain,\n parseJson,\n getAxisId,\n} from \"@platforma-sdk/model\";\nimport { computed, onMounted, ref } from \"vue\";\nimport { PlBtnGhost, PlSlideModal, usePlBlockPageTitleTeleportTarget } from \"@milaboratories/uikit\";\nimport {\n PlAdvancedFilter,\n PlAdvancedFilterComponent,\n PlAdvancedFilterSupportedFilters,\n type PlAdvancedFilterItem,\n} from \"../PlAdvancedFilter\";\nimport type { PlAdvancedFilterColumnId } from \"../PlAdvancedFilter/types\";\n\nconst model = defineModel<PlDataTableFiltersWithMeta>({ required: true });\nconst props = defineProps<{\n columns: PTableColumnSpec[];\n}>();\n\n// Teleport for \"Filters\" button\nconst mounted = ref(false);\nonMounted(() => {\n mounted.value = true;\n});\nconst teleportTarget = usePlBlockPageTitleTeleportTarget(\"PlTableFiltersV2\");\nconst showManager = ref(false);\n\n// Check if any filters are active\nconst filtersOn = computed(() => {\n return model.value.filters.length > 0;\n});\n\n// Convert PTableColumnSpec to PlAdvancedFilterColumnId\nfunction makeFilterColumnId(spec: PTableColumnSpec): PlAdvancedFilterColumnId {\n const id: PTableColumnId =\n spec.type === \"axis\"\n ? { type: \"axis\", id: getAxisId(spec.spec) }\n : { type: \"column\", id: spec.id };\n return canonicalizeJson<PTableColumnId>(id) as unknown as PlAdvancedFilterColumnId;\n}\n\n// Convert PTableColumnSpec[] to PlAdvancedFilterItem[]\nconst items = computed<PlAdvancedFilterItem[]>(() => {\n return props.columns.map((col, idx) => {\n const id = makeFilterColumnId(col);\n const label =\n readAnnotation(col.spec, Annotation.Label)?.trim() ?? `Unlabeled ${col.type} ${idx}`;\n const alphabet =\n readDomain(col.spec, Domain.Alphabet) ?? readAnnotation(col.spec, Annotation.Alphabet);\n return {\n id,\n label,\n spec: col.spec,\n alphabet: alphabet ?? undefined,\n };\n });\n});\n\n// Supported filters (same set as FilterSidebar)\nconst supportedFilters = [\n \"isNA\",\n \"isNotNA\",\n \"greaterThan\",\n \"greaterThanOrEqual\",\n \"lessThan\",\n \"lessThanOrEqual\",\n \"patternEquals\",\n \"patternNotEquals\",\n \"patternContainSubsequence\",\n \"patternNotContainSubsequence\",\n \"patternMatchesRegularExpression\",\n \"patternFuzzyContainSubsequence\",\n \"equal\",\n \"notEqual\",\n] as (typeof PlAdvancedFilterSupportedFilters)[number][];\n\n// getSuggestOptions - provide discrete values from column annotations\nfunction getSuggestOptions(params: {\n columnId: PlAdvancedFilterColumnId;\n axisIdx?: number;\n searchStr: string;\n searchType: \"value\" | \"label\";\n}): ListOptionBase<string | number>[] {\n const item = items.value.find((i) => i.id === params.columnId);\n if (!item) return [];\n\n const discreteValuesStr = readAnnotation(item.spec, Annotation.DiscreteValues);\n if (!discreteValuesStr) return [];\n\n try {\n const values = parseJson<(string | number)[]>(discreteValuesStr);\n return values\n .filter((v) => {\n if (!params.searchStr) return true;\n const str = String(v).toLowerCase();\n return str.includes(params.searchStr.toLowerCase());\n })\n .map((v) => ({ value: v, label: String(v) }));\n } catch {\n return [];\n }\n}\n</script>\n\n<template>\n <Teleport v-if=\"mounted && teleportTarget\" :to=\"teleportTarget\">\n <PlBtnGhost :icon=\"filtersOn ? 'filter-on' : 'filter'\" @click.stop=\"showManager = true\">\n Filters\n </PlBtnGhost>\n </Teleport>\n\n <PlSlideModal v-model=\"showManager\" :close-on-outside-click=\"false\">\n <template #title>Manage Filters</template>\n\n <div v-if=\"items.length > 0\" :class=\"$style.root\">\n <PlAdvancedFilterComponent\n v-model:filters=\"model as PlAdvancedFilter\"\n :items=\"items\"\n :supported-filters=\"supportedFilters\"\n :get-suggest-options=\"getSuggestOptions\"\n :enable-dnd=\"false\"\n :enable-add-group-button=\"true\"\n />\n </div>\n <div v-else>No filters applicable</div>\n </PlSlideModal>\n</template>\n\n<style module>\n.root {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n</style>\n"],"names":["model","_useModel","props","__props","mounted","ref","onMounted","teleportTarget","usePlBlockPageTitleTeleportTarget","showManager","filtersOn","computed","makeFilterColumnId","spec","id","getAxisId","canonicalizeJson","items","col","idx","label","_a","readAnnotation","Annotation","alphabet","readDomain","Domain","supportedFilters","getSuggestOptions","params","item","i","discreteValuesStr","parseJson","v","_unref","_createBlock","_Teleport","_createVNode","PlBtnGhost","_cache","PlSlideModal","$event","_createElementBlock","_normalizeClass","$style","PlAdvancedFilterComponent","_openBlock"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { default as f } from "./components/PlAgDataTable/PlAgOverlayLoading.vue.js";
2
2
  import { default as u } from "./components/PlAgDataTable/PlAgOverlayNoRows.vue.js";
3
3
  import './components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.css';import './components/PlAgChartHistogramCell/PlAgChartHistogramCell.css';import './components/PlAgCellStatusTag/PlAgCellStatusTag.css';import './components/PlAgDataTable/PlAgOverlayNoRows.css';/* empty css */
4
- import { default as m } from "./components/PlAgColumnHeader/PlAgColumnHeader.vue.js";
4
+ import { default as d } from "./components/PlAgColumnHeader/PlAgColumnHeader.vue.js";
5
5
  import { default as i } from "./components/PlAgCellFile/PlAgCellFile.vue.js";
6
6
  import { default as x } from "./components/PlAgCellProgress/PlAgCellProgress.vue.js";
7
7
  import { default as A } from "./components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js";
@@ -27,7 +27,7 @@ import { default as oe } from "./components/PlTableFilters/PlTableFiltersV2.vue.
27
27
  import { default as le } from "./components/PlAnnotations/components/PlAnnotations.vue.js";
28
28
  import { default as fe } from "./components/PlAnnotations/components/PlAnnotationsModal.vue.js";
29
29
  import { default as ue } from "./components/PlBtnExportArchive/PlBtnExportArchive.vue.js";
30
- import { default as me } from "./components/PlAdvancedFilter/PlAdvancedFilter.vue.js";
30
+ import { default as de } from "./components/PlAdvancedFilter/PlAdvancedFilter.vue.js";
31
31
  import { PlAdvancedFilterSupportedFilters as ie } from "./components/PlAdvancedFilter/index.js";
32
32
  import { defineApp as xe, defineAppV3 as ge, pluginDataKey as Ae, useSdkPlugin as Pe } from "./defineApp.js";
33
33
  import { createModel as ce } from "./createModel.js";
@@ -43,14 +43,14 @@ export {
43
43
  w as BlockLayout,
44
44
  W as DeferredCircular,
45
45
  we as MultiError,
46
- me as PlAdvancedFilter,
46
+ de as PlAdvancedFilterComponent,
47
47
  ie as PlAdvancedFilterSupportedFilters,
48
48
  i as PlAgCellFile,
49
49
  x as PlAgCellProgress,
50
50
  A as PlAgCellStatusTag,
51
51
  C as PlAgChartHistogramCell,
52
52
  b as PlAgChartStackedBarCell,
53
- m as PlAgColumnHeader,
53
+ d as PlAgColumnHeader,
54
54
  v as PlAgCsvExporter,
55
55
  U as PlAgDataTableRowNumberColId,
56
56
  F as PlAgDataTableV2,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-sdk/ui-vue",
3
- "version": "1.58.4",
3
+ "version": "1.58.8",
4
4
  "type": "module",
5
5
  "sideEffects": [
6
6
  "**/*.css"
@@ -28,8 +28,8 @@
28
28
  "lru-cache": "^11.2.2",
29
29
  "vue": "^3.5.24",
30
30
  "zod": "~3.23.8",
31
- "@platforma-sdk/model": "1.58.3",
32
- "@milaboratories/uikit": "2.10.36"
31
+ "@platforma-sdk/model": "1.58.5",
32
+ "@milaboratories/uikit": "2.10.37"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@faker-js/faker": "^9.2.0",
@@ -43,10 +43,10 @@
43
43
  "typescript": "~5.6.3",
44
44
  "vite": "^6.4.1",
45
45
  "vitest": "^4.0.18",
46
- "@milaboratories/ts-builder": "1.2.11",
47
- "@milaboratories/ts-configs": "1.2.1",
48
46
  "@milaboratories/helpers": "1.13.5",
49
- "@milaboratories/build-configs": "1.5.0"
47
+ "@milaboratories/build-configs": "1.5.0",
48
+ "@milaboratories/ts-configs": "1.2.1",
49
+ "@milaboratories/ts-builder": "1.2.11"
50
50
  },
51
51
  "scripts": {
52
52
  "dev": "ts-builder serve --target browser-lib",
@@ -6,7 +6,7 @@ import type {
6
6
  RequiredMeta,
7
7
  } from "./types.ts";
8
8
 
9
- export { default as PlAdvancedFilter } from "./PlAdvancedFilter.vue";
9
+ export { default as PlAdvancedFilterComponent } from "./PlAdvancedFilter.vue";
10
10
  export const PlAdvancedFilterSupportedFilters = SUPPORTED_FILTER_TYPES;
11
11
  export type PlAdvancedFilterItem = SourceOptionInfo;
12
12
  export type PlAdvancedFilter<Meta extends RequiredMeta = RequiredMeta> = RootFilter<Meta>;
@@ -16,13 +16,18 @@ export type Props = {
16
16
  };
17
17
  </script>
18
18
  <script setup lang="ts">
19
+ import { computed } from "vue";
19
20
  import { randomInt } from "@milaboratories/helpers";
20
21
  import { PlBtnSecondary, PlEditableTitle, PlSidebarItem } from "@milaboratories/uikit";
21
22
  import type { ListOptionBase, PObjectId, SUniversalPColumnId } from "@platforma-sdk/model";
22
- import { computed } from "vue";
23
- import type { PlAdvancedFilter, PlAdvancedFilterSupportedFilters } from "../../PlAdvancedFilter";
24
- import { type PlAdvancedFilterItem } from "../../PlAdvancedFilter";
25
- import type { PlAdvancedFilterColumnId } from "../../PlAdvancedFilter/types";
23
+
24
+ import { PlAdvancedFilterComponent } from "../../PlAdvancedFilter";
25
+ import type {
26
+ PlAdvancedFilterItem,
27
+ PlAdvancedFilterColumnId,
28
+ PlAdvancedFilterSupportedFilters,
29
+ PlAdvancedFilter,
30
+ } from "../../PlAdvancedFilter";
26
31
  import type { Filter } from "../types";
27
32
 
28
33
  import $commonStyle from "./style.module.css";
@@ -110,7 +115,7 @@ const supportedFilters = [
110
115
  />
111
116
  </template>
112
117
  <template #body-content>
113
- <PlAdvancedFilter
118
+ <PlAdvancedFilterComponent
114
119
  v-model:filters="step.filter as PlAdvancedFilter"
115
120
  :class="[$style.root, { [$commonStyle.disabled]: step.label.length === 0 }]"
116
121
  :items="props.columns"
@@ -132,7 +137,7 @@ const supportedFilters = [
132
137
  </PlBtnSecondary>
133
138
  </div>
134
139
  </template>
135
- </PlAdvancedFilter>
140
+ </PlAdvancedFilterComponent>
136
141
  </template>
137
142
  </PlSidebarItem>
138
143
  </template>
@@ -18,6 +18,7 @@ import { computed, onMounted, ref } from "vue";
18
18
  import { PlBtnGhost, PlSlideModal, usePlBlockPageTitleTeleportTarget } from "@milaboratories/uikit";
19
19
  import {
20
20
  PlAdvancedFilter,
21
+ PlAdvancedFilterComponent,
21
22
  PlAdvancedFilterSupportedFilters,
22
23
  type PlAdvancedFilterItem,
23
24
  } from "../PlAdvancedFilter";
@@ -124,7 +125,7 @@ function getSuggestOptions(params: {
124
125
  <template #title>Manage Filters</template>
125
126
 
126
127
  <div v-if="items.length > 0" :class="$style.root">
127
- <PlAdvancedFilter
128
+ <PlAdvancedFilterComponent
128
129
  v-model:filters="model as PlAdvancedFilter"
129
130
  :items="items"
130
131
  :supported-filters="supportedFilters"