@platforma-sdk/ui-vue 1.45.45 → 1.46.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 (22) hide show
  1. package/.turbo/turbo-build.log +9 -9
  2. package/.turbo/turbo-type-check.log +1 -1
  3. package/CHANGELOG.md +12 -0
  4. package/dist/components/PlAdvancedFilter/FilterEditor.vue.d.ts +2 -6
  5. package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js +138 -141
  6. package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js.map +1 -1
  7. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.d.ts +2 -12
  8. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js +54 -56
  9. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js.map +1 -1
  10. package/dist/components/PlAnnotations/components/FilterSidebar.vue.d.ts +2 -6
  11. package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +29 -31
  12. package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js.map +1 -1
  13. package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js +14 -16
  14. package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js.map +1 -1
  15. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js +13 -15
  16. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js.map +1 -1
  17. package/package.json +6 -6
  18. package/src/components/PlAdvancedFilter/FilterEditor.vue +16 -20
  19. package/src/components/PlAdvancedFilter/PlAdvancedFilter.vue +2 -6
  20. package/src/components/PlAnnotations/components/FilterSidebar.vue +1 -5
  21. package/src/components/PlAnnotations/components/PlAnnotations.vue +0 -1
  22. package/src/components/PlAnnotations/components/PlAnnotationsModal.vue +0 -1
@@ -1,14 +1,13 @@
1
- import { defineComponent as V, mergeModels as q, useModel as E, computed as k, createBlock as r, createCommentVNode as p, openBlock as u, unref as s, withCtx as a, createVNode as c, normalizeClass as d, createElementVNode as x, createTextVNode as g } from "vue";
1
+ import { defineComponent as V, mergeModels as q, useModel as E, computed as k, createBlock as r, createCommentVNode as p, openBlock as u, unref as s, withCtx as a, createVNode as c, normalizeClass as d, createElementVNode as x, createTextVNode as f } from "vue";
2
2
  import { randomInt as i } from "../../../lib/util/helpers/dist/random.js";
3
- import { PlSidebarItem as T, PlBtnSecondary as f, PlEditableTitle as A } from "@milaboratories/uikit";
4
- import M from "../../PlAdvancedFilter/PlAdvancedFilter.vue.js";
5
- import S from "./style.module.css.js";
6
- const I = /* @__PURE__ */ V({
3
+ import { PlSidebarItem as T, PlBtnSecondary as g, PlEditableTitle as A } from "@milaboratories/uikit";
4
+ import P from "../../PlAdvancedFilter/PlAdvancedFilter.vue.js";
5
+ import v from "./style.module.css.js";
6
+ const M = /* @__PURE__ */ V({
7
7
  __name: "FilterSidebar",
8
8
  props: /* @__PURE__ */ q({
9
9
  columns: {},
10
10
  getSuggestOptions: { type: Function },
11
- getSuggestModel: { type: Function },
12
11
  hasSelectedColumns: { type: Boolean },
13
12
  getValuesForSelectedColumns: { type: Function }
14
13
  }, {
@@ -17,7 +16,7 @@ const I = /* @__PURE__ */ V({
17
16
  }),
18
17
  emits: ["update:step"],
19
18
  setup(m) {
20
- const e = E(m, "step"), t = m, v = k(() => t.hasSelectedColumns !== void 0 && t.getValuesForSelectedColumns !== void 0), b = () => {
19
+ const e = E(m, "step"), l = m, b = k(() => l.hasSelectedColumns !== void 0 && l.getValuesForSelectedColumns !== void 0), S = () => {
21
20
  e.value.filter.filters.push({
22
21
  id: i(),
23
22
  isExpanded: !0,
@@ -26,16 +25,16 @@ const I = /* @__PURE__ */ V({
26
25
  {
27
26
  id: i(),
28
27
  type: "isNA",
29
- column: t.columns[0].id
28
+ column: l.columns[0].id
30
29
  }
31
30
  ]
32
31
  });
33
32
  };
34
33
  async function h() {
35
- if (t.hasSelectedColumns === void 0 || t.getValuesForSelectedColumns === void 0) return;
36
- const n = await t.getValuesForSelectedColumns();
34
+ if (l.hasSelectedColumns === void 0 || l.getValuesForSelectedColumns === void 0) return;
35
+ const n = await l.getValuesForSelectedColumns();
37
36
  if (!n || n.values.length === 0) return;
38
- const { columnId: l, values: o } = n, C = o.slice(0, 3).join(", ") + (o.length > 3 ? ` and ${o.length - 3} more` : "");
37
+ const { columnId: t, values: o } = n, C = o.slice(0, 3).join(", ") + (o.length > 3 ? ` and ${o.length - 3} more` : "");
39
38
  e.value.filter.filters.push({
40
39
  id: i(),
41
40
  name: `Selected list (${C})`,
@@ -44,7 +43,7 @@ const I = /* @__PURE__ */ V({
44
43
  filters: o.map((F, N) => ({
45
44
  id: N,
46
45
  type: "patternEquals",
47
- column: l,
46
+ column: t,
48
47
  value: F
49
48
  }))
50
49
  });
@@ -65,13 +64,13 @@ const I = /* @__PURE__ */ V({
65
64
  "topN",
66
65
  "bottomN"
67
66
  ];
68
- return (n, l) => e.value ? (u(), r(s(T), { key: 0 }, {
67
+ return (n, t) => e.value ? (u(), r(s(T), { key: 0 }, {
69
68
  "header-content": a(() => [
70
69
  (u(), r(s(A), {
71
70
  key: e.value.id,
72
71
  modelValue: e.value.label,
73
- "onUpdate:modelValue": l[0] || (l[0] = (o) => e.value.label = o),
74
- class: d({ [s(S).flashing]: e.value.label.length === 0 }),
72
+ "onUpdate:modelValue": t[0] || (t[0] = (o) => e.value.label = o),
73
+ class: d({ [s(v).flashing]: e.value.label.length === 0 }),
75
74
  "max-length": 40,
76
75
  "max-width": "600px",
77
76
  placeholder: "Filter Name",
@@ -79,14 +78,13 @@ const I = /* @__PURE__ */ V({
79
78
  }, null, 8, ["modelValue", "class", "autofocus"]))
80
79
  ]),
81
80
  "body-content": a(() => [
82
- c(s(M), {
81
+ c(s(P), {
83
82
  filters: e.value.filter,
84
- "onUpdate:filters": l[1] || (l[1] = (o) => e.value.filter = o),
85
- class: d([n.$style.root, { [s(S).disabled]: e.value.label.length === 0 }]),
86
- items: t.columns,
83
+ "onUpdate:filters": t[1] || (t[1] = (o) => e.value.filter = o),
84
+ class: d([n.$style.root, { [s(v).disabled]: e.value.label.length === 0 }]),
85
+ items: l.columns,
87
86
  "supported-filters": y,
88
- "get-suggest-model": t.getSuggestModel,
89
- "get-suggest-options": t.getSuggestOptions,
87
+ "get-suggest-options": l.getSuggestOptions,
90
88
  "enable-dnd": !1,
91
89
  "enable-add-group-button": !0
92
90
  }, {
@@ -94,36 +92,36 @@ const I = /* @__PURE__ */ V({
94
92
  x("div", {
95
93
  class: d(n.$style.actions)
96
94
  }, [
97
- c(s(f), {
95
+ c(s(g), {
98
96
  icon: "add",
99
- onClick: b
97
+ onClick: S
100
98
  }, {
101
- default: a(() => [...l[2] || (l[2] = [
102
- g(" Add Filter ", -1)
99
+ default: a(() => [...t[2] || (t[2] = [
100
+ f(" Add Filter ", -1)
103
101
  ])]),
104
102
  _: 1
105
103
  }),
106
- v.value ? (u(), r(s(f), {
104
+ b.value ? (u(), r(s(g), {
107
105
  key: 0,
108
106
  icon: "add",
109
- disabled: !t.hasSelectedColumns,
107
+ disabled: !l.hasSelectedColumns,
110
108
  onClick: h
111
109
  }, {
112
- default: a(() => [...l[3] || (l[3] = [
113
- g(" From selection ", -1)
110
+ default: a(() => [...t[3] || (t[3] = [
111
+ f(" From selection ", -1)
114
112
  ])]),
115
113
  _: 1
116
114
  }, 8, ["disabled"])) : p("", !0)
117
115
  ], 2)
118
116
  ]),
119
117
  _: 1
120
- }, 8, ["filters", "class", "items", "get-suggest-model", "get-suggest-options"])
118
+ }, 8, ["filters", "class", "items", "get-suggest-options"])
121
119
  ]),
122
120
  _: 1
123
121
  })) : p("", !0);
124
122
  }
125
123
  });
126
124
  export {
127
- I as default
125
+ M as default
128
126
  };
129
127
  //# 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: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) =>\n ListOptionBase<string | number>[] | Promise<ListOptionBase<string | number>[]>;\n // @todo: can be optional\n getSuggestModel?: (params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) =>\n ListOptionBase<string | number> | Promise<ListOptionBase<string | number>>;\n\n hasSelectedColumns?: boolean;\n getValuesForSelectedColumns?: () => Promise<undefined | { columnId: PObjectId; values: string[] }>;\n};\n</script>\n<script setup lang=\"ts\">\nimport { randomInt } from '@milaboratories/helpers';\nimport {\n PlBtnSecondary,\n PlEditableTitle,\n PlSidebarItem,\n} from '@milaboratories/uikit';\nimport type { ListOptionBase, PObjectId, SUniversalPColumnId } from '@platforma-sdk/model';\nimport { computed } from 'vue';\nimport type { PlAdvancedFilterFilter, PlAdvancedFilterSupportedFilters } from '../../PlAdvancedFilter';\nimport { PlAdvancedFilter, type PlAdvancedFilterItem } from '../../PlAdvancedFilter';\nimport type { PlAdvancedFilterColumnId } from '../../PlAdvancedFilter/types';\nimport type { Filter } from '../types';\n\nimport $commonStyle from './style.module.css';\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) 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 = 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=\"Filter Name\"\n :autofocus=\"step.label.length === 0\"\n />\n </template>\n <template #body-content>\n <PlAdvancedFilter\n v-model:filters=\"(step.filter as PlAdvancedFilterFilter)\"\n :class=\"[$style.root, { [$commonStyle.disabled]: step.label.length === 0 }]\"\n :items=\"props.columns\"\n :supported-filters=\"supportedFilters\"\n :get-suggest-model=\"props.getSuggestModel\"\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\">\n Add Filter\n </PlBtnSecondary>\n <PlBtnSecondary v-if=\"withSelection\" icon=\"add\" :disabled=\"!props.hasSelectedColumns\" @click=\"addFilterFromSelected\">\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","_createVNode","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: { columnId: PlAdvancedFilterColumnId; axisIdx?: number; searchStr: string; searchType: 'value' | 'label' }) =>\n ListOptionBase<string | number>[] | Promise<ListOptionBase<string | number>[]>;\n\n hasSelectedColumns?: boolean;\n getValuesForSelectedColumns?: () => Promise<undefined | { columnId: PObjectId; values: string[] }>;\n};\n</script>\n<script setup lang=\"ts\">\nimport { randomInt } from '@milaboratories/helpers';\nimport {\n PlBtnSecondary,\n PlEditableTitle,\n PlSidebarItem,\n} from '@milaboratories/uikit';\nimport type { ListOptionBase, PObjectId, SUniversalPColumnId } from '@platforma-sdk/model';\nimport { computed } from 'vue';\nimport type { PlAdvancedFilterFilter, PlAdvancedFilterSupportedFilters } from '../../PlAdvancedFilter';\nimport { PlAdvancedFilter, type PlAdvancedFilterItem } from '../../PlAdvancedFilter';\nimport type { PlAdvancedFilterColumnId } from '../../PlAdvancedFilter/types';\nimport type { Filter } from '../types';\n\nimport $commonStyle from './style.module.css';\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) 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 = 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=\"Filter Name\"\n :autofocus=\"step.label.length === 0\"\n />\n </template>\n <template #body-content>\n <PlAdvancedFilter\n v-model:filters=\"(step.filter as PlAdvancedFilterFilter)\"\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\">\n Add Filter\n </PlBtnSecondary>\n <PlBtnSecondary v-if=\"withSelection\" icon=\"add\" :disabled=\"!props.hasSelectedColumns\" @click=\"addFilterFromSelected\">\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","_createVNode","PlAdvancedFilter","$style","$commonStyle","_createElementVNode","PlBtnSecondary"],"mappings":"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"}
@@ -1,14 +1,13 @@
1
- import { defineComponent as S, mergeModels as f, useModel as v, shallowRef as C, computed as h, effect as y, createBlock as i, openBlock as d, unref as F, withCtx as c, createCommentVNode as I, normalizeClass as m, createVNode as b } from "vue";
1
+ import { defineComponent as f, mergeModels as v, useModel as g, shallowRef as C, computed as h, effect as y, createBlock as i, openBlock as c, unref as I, withCtx as d, createCommentVNode as b, normalizeClass as m, createVNode as F } from "vue";
2
2
  import { isNil as r } from "../../../lib/util/helpers/dist/utils.js";
3
3
  import { useConfirm as V, PlSidebarGroup as D } from "@milaboratories/uikit";
4
- import M from "./AnnotationsSidebar.vue.js";
5
- import w from "./FilterSidebar.vue.js";
6
- const U = /* @__PURE__ */ S({
4
+ import w from "./AnnotationsSidebar.vue.js";
5
+ import N from "./FilterSidebar.vue.js";
6
+ const U = /* @__PURE__ */ f({
7
7
  __name: "PlAnnotations",
8
- props: /* @__PURE__ */ f({
8
+ props: /* @__PURE__ */ v({
9
9
  columns: {},
10
10
  getSuggestOptions: { type: Function },
11
- getSuggestModel: { type: Function },
12
11
  hasSelectedColumns: { type: Boolean },
13
12
  getValuesForSelectedColumns: { type: Function },
14
13
  onDeleteSchema: { type: Function }
@@ -18,7 +17,7 @@ const U = /* @__PURE__ */ S({
18
17
  }),
19
18
  emits: ["update:annotation"],
20
19
  setup(u) {
21
- const n = v(u, "annotation"), e = u, t = C(void 0), a = h(() => r(t.value) || r(n.value) ? void 0 : n.value.steps.find((o) => o.id === t.value));
20
+ const n = g(u, "annotation"), e = u, t = C(void 0), a = h(() => r(t.value) || r(n.value) ? void 0 : n.value.steps.find((o) => o.id === t.value));
22
21
  y(function() {
23
22
  t.value === void 0 && n.value.steps.length > 0 && (t.value = n.value.steps[0].id);
24
23
  });
@@ -28,35 +27,34 @@ const U = /* @__PURE__ */ S({
28
27
  confirmLabel: "Yes, reset",
29
28
  cancelLabel: "No, cancel"
30
29
  });
31
- async function g() {
30
+ async function S() {
32
31
  var o;
33
32
  await p() && (t.value = void 0, (o = e.onDeleteSchema) == null || o.call(e));
34
33
  }
35
- return (o, s) => (d(), i(F(D), null, {
36
- "item-0": c(() => [
37
- b(M, {
34
+ return (o, s) => (c(), i(I(D), null, {
35
+ "item-0": d(() => [
36
+ F(w, {
38
37
  annotation: n.value,
39
38
  "onUpdate:annotation": s[0] || (s[0] = (l) => n.value = l),
40
39
  selectedStepId: t.value,
41
40
  "onUpdate:selectedStepId": s[1] || (s[1] = (l) => t.value = l),
42
41
  class: m(o.$style.sidebarItem),
43
42
  columns: e.columns,
44
- onDeleteSchema: g
43
+ onDeleteSchema: S
45
44
  }, null, 8, ["annotation", "selectedStepId", "class", "columns"])
46
45
  ]),
47
- "item-1": c(() => [
48
- a.value ? (d(), i(w, {
46
+ "item-1": d(() => [
47
+ a.value ? (c(), i(N, {
49
48
  key: 0,
50
49
  step: a.value,
51
50
  "onUpdate:step": s[2] || (s[2] = (l) => a.value = l),
52
51
  class: m(o.$style.sidebarItem),
53
52
  columns: e.columns,
54
- "get-suggest-model": e.getSuggestModel,
55
53
  "get-suggest-options": e.getSuggestOptions,
56
54
  selectedStepId: t.value,
57
55
  hasSelectedColumns: e.hasSelectedColumns,
58
56
  getValuesForSelectedColumns: e.getValuesForSelectedColumns
59
- }, null, 8, ["step", "class", "columns", "get-suggest-model", "get-suggest-options", "selectedStepId", "hasSelectedColumns", "getValuesForSelectedColumns"])) : I("", !0)
57
+ }, null, 8, ["step", "class", "columns", "get-suggest-options", "selectedStepId", "hasSelectedColumns", "getValuesForSelectedColumns"])) : b("", !0)
60
58
  ]),
61
59
  _: 1
62
60
  }));
@@ -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\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-model=\"props.getSuggestModel\"\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;2BAKEa,EAuBiBC,EAAAC,CAAA,GAAA,MAAA;AAAA,MAtBJ,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,YAbX,MAaI;AAAA,QAEMP,EAAA,cADRS,EAUEQ,GAAA;AAAA;UARQ,MAAMjB,EAAA;AAAA,kDAAAA,EAAY,QAAAc;AAAA,UACzB,OAAKC,EAAEC,EAAAA,OAAO,WAAW;AAAA,UACzB,SAASpB,EAAM;AAAA,UACf,qBAAmBA,EAAM;AAAA,UACzB,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\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;2BAKEa,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,YATW,MAWxB;AAAA,QAAYP,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,12 +1,11 @@
1
- import { defineComponent as m, mergeModels as g, useModel as d, shallowRef as p, effect as r, createBlock as f, openBlock as S, unref as v, normalizeClass as i, withCtx as h, createVNode as y } from "vue";
2
- import { PlPureSlideModal as C } from "@milaboratories/uikit";
3
- import F from "./PlAnnotations.vue.js";
1
+ import { defineComponent as m, mergeModels as r, useModel as d, shallowRef as p, effect as f, createBlock as g, openBlock as S, unref as v, normalizeClass as i, withCtx as h, createVNode as C } from "vue";
2
+ import { PlPureSlideModal as y } from "@milaboratories/uikit";
3
+ import V from "./PlAnnotations.vue.js";
4
4
  const B = /* @__PURE__ */ m({
5
5
  __name: "PlAnnotationsModal",
6
- props: /* @__PURE__ */ g({
6
+ props: /* @__PURE__ */ r({
7
7
  columns: {},
8
8
  getSuggestOptions: { type: Function },
9
- getSuggestModel: { type: Function },
10
9
  hasSelectedColumns: { type: Boolean },
11
10
  getValuesForSelectedColumns: { type: Function },
12
11
  onDeleteSchema: { type: Function }
@@ -18,32 +17,31 @@ const B = /* @__PURE__ */ m({
18
17
  }),
19
18
  emits: ["update:annotation", "update:opened"],
20
19
  setup(l) {
21
- const o = d(l, "annotation"), s = d(l, "opened"), e = l, u = p(void 0);
22
- r(function() {
20
+ const o = d(l, "annotation"), a = d(l, "opened"), e = l, u = p(void 0);
21
+ f(function() {
23
22
  u.value === void 0 && o.value.steps.length > 0 && (u.value = o.value.steps[0].id);
24
23
  });
25
24
  async function c() {
26
25
  var t;
27
- s.value = !1, (t = e.onDeleteSchema) == null || t.call(e);
26
+ a.value = !1, (t = e.onDeleteSchema) == null || t.call(e);
28
27
  }
29
- return (t, n) => (S(), f(v(C), {
30
- modelValue: s.value,
31
- "onUpdate:modelValue": n[1] || (n[1] = (a) => s.value = a),
28
+ return (t, n) => (S(), g(v(y), {
29
+ modelValue: a.value,
30
+ "onUpdate:modelValue": n[1] || (n[1] = (s) => a.value = s),
32
31
  class: i(t.$style.modal),
33
32
  width: "768px"
34
33
  }, {
35
34
  default: h(() => [
36
- y(F, {
35
+ C(V, {
37
36
  annotation: o.value,
38
- "onUpdate:annotation": n[0] || (n[0] = (a) => o.value = a),
37
+ "onUpdate:annotation": n[0] || (n[0] = (s) => o.value = s),
39
38
  class: i(t.$style.content),
40
39
  columns: e.columns,
41
- "get-suggest-model": e.getSuggestModel,
42
40
  "get-suggest-options": e.getSuggestOptions,
43
41
  "has-selected-columns": e.hasSelectedColumns,
44
42
  getValuesForSelectedColumns: e.getValuesForSelectedColumns,
45
43
  onDeleteSchema: c
46
- }, null, 8, ["annotation", "class", "columns", "get-suggest-model", "get-suggest-options", "has-selected-columns", "getValuesForSelectedColumns"])
44
+ }, null, 8, ["annotation", "class", "columns", "get-suggest-options", "has-selected-columns", "getValuesForSelectedColumns"])
47
45
  ]),
48
46
  _: 1
49
47
  }, 8, ["modelValue", "class"]));
@@ -1 +1 @@
1
- {"version":3,"file":"PlAnnotationsModal.vue2.js","sources":["../../../../src/components/PlAnnotations/components/PlAnnotationsModal.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlPureSlideModal } from '@milaboratories/uikit';\nimport { effect, shallowRef } from 'vue';\n\nimport type { Annotation } from '../types';\nimport type { Props } from './PlAnnotations.vue';\nimport PlAnnotations from './PlAnnotations.vue';\n\n// Models\nconst annotation = defineModel<Annotation>('annotation', { required: true });\nconst opened = defineModel<boolean>('opened', { required: true });\n// Props\nconst props = defineProps<Props>();\n// State\nconst selectedStepId = shallowRef<number | undefined>(undefined);\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// Actions\nasync function handleDeleteSchema() {\n opened.value = false;\n props.onDeleteSchema?.();\n}\n</script>\n\n<template>\n <PlPureSlideModal v-model=\"opened\" :class=\"$style.modal\" width=\"768px\">\n <PlAnnotations\n v-model:annotation=\"annotation\"\n :class=\"$style.content\"\n :columns=\"props.columns\"\n :get-suggest-model=\"props.getSuggestModel\"\n :get-suggest-options=\"props.getSuggestOptions\"\n :has-selected-columns=\"props.hasSelectedColumns\"\n :getValuesForSelectedColumns=\"props.getValuesForSelectedColumns\"\n @delete-schema=\"handleDeleteSchema\"\n />\n </PlPureSlideModal>\n</template>\n\n<style module>\n.modal {\n display: flex;\n}\n\n.content {\n width: 100%;\n height: 100%;\n}\n</style>\n"],"names":["annotation","_useModel","opened","__props","props","selectedStepId","shallowRef","effect","handleDeleteSchema","_a","_createBlock","_unref","PlPureSlideModal","$event","_normalizeClass","$style","_createVNode","PlAnnotations"],"mappings":";;;;;;;;;;;;;;;;;;;;AASA,UAAMA,IAAaC,KAAwB,YAAgC,GACrEC,IAASD,EAAoBE,GAAC,QAA4B,GAE1DC,IAAQD,GAERE,IAAiBC,EAA+B,MAAS;AAE/D,IAAAC,EAAO,WAA4B;AACjC,MAAIF,EAAe,UAAU,UAAaL,EAAW,MAAM,MAAM,SAAS,MACxEK,EAAe,QAAQL,EAAW,MAAM,MAAM,CAAC,EAAE;AAAA,IAErD,CAAC;AAED,mBAAeQ,IAAqB;;AAClC,MAAAN,EAAO,QAAQ,KACfO,IAAAL,EAAM,mBAAN,QAAAK,EAAA,KAAAL;AAAA,IACF;2BAIEM,EAWmBC,EAAAC,CAAA,GAAA;AAAA,kBAXQV,EAAA;AAAA,oDAAAA,EAAM,QAAAW;AAAA,MAAG,OAAKC,EAAEC,EAAAA,OAAO,KAAK;AAAA,MAAE,OAAM;AAAA,IAAA;iBAC7D,MASE;AAAA,QATFC,EASEC,GAAA;AAAA,UARQ,YAAYjB,EAAA;AAAA,wDAAAA,EAAU,QAAAa;AAAA,UAC7B,OAAKC,EAAEC,EAAAA,OAAO,OAAO;AAAA,UACrB,SAASX,EAAM;AAAA,UACf,qBAAmBA,EAAM;AAAA,UACzB,uBAAqBA,EAAM;AAAA,UAC3B,wBAAsBA,EAAM;AAAA,UAC5B,6BAA6BA,EAAM;AAAA,UACnC,gBAAeI;AAAA,QAAA;;;;;;"}
1
+ {"version":3,"file":"PlAnnotationsModal.vue2.js","sources":["../../../../src/components/PlAnnotations/components/PlAnnotationsModal.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlPureSlideModal } from '@milaboratories/uikit';\nimport { effect, shallowRef } from 'vue';\n\nimport type { Annotation } from '../types';\nimport type { Props } from './PlAnnotations.vue';\nimport PlAnnotations from './PlAnnotations.vue';\n\n// Models\nconst annotation = defineModel<Annotation>('annotation', { required: true });\nconst opened = defineModel<boolean>('opened', { required: true });\n// Props\nconst props = defineProps<Props>();\n// State\nconst selectedStepId = shallowRef<number | undefined>(undefined);\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// Actions\nasync function handleDeleteSchema() {\n opened.value = false;\n props.onDeleteSchema?.();\n}\n</script>\n\n<template>\n <PlPureSlideModal v-model=\"opened\" :class=\"$style.modal\" width=\"768px\">\n <PlAnnotations\n v-model:annotation=\"annotation\"\n :class=\"$style.content\"\n :columns=\"props.columns\"\n :get-suggest-options=\"props.getSuggestOptions\"\n :has-selected-columns=\"props.hasSelectedColumns\"\n :getValuesForSelectedColumns=\"props.getValuesForSelectedColumns\"\n @delete-schema=\"handleDeleteSchema\"\n />\n </PlPureSlideModal>\n</template>\n\n<style module>\n.modal {\n display: flex;\n}\n\n.content {\n width: 100%;\n height: 100%;\n}\n</style>\n"],"names":["annotation","_useModel","opened","__props","props","selectedStepId","shallowRef","effect","handleDeleteSchema","_a","_createBlock","_unref","PlPureSlideModal","$event","_normalizeClass","$style","_createVNode","PlAnnotations"],"mappings":";;;;;;;;;;;;;;;;;;;AASA,UAAMA,IAAaC,KAAwB,YAAgC,GACrEC,IAASD,EAAoBE,GAAC,QAA4B,GAE1DC,IAAQD,GAERE,IAAiBC,EAA+B,MAAS;AAE/D,IAAAC,EAAO,WAA4B;AACjC,MAAIF,EAAe,UAAU,UAAaL,EAAW,MAAM,MAAM,SAAS,MACxEK,EAAe,QAAQL,EAAW,MAAM,MAAM,CAAC,EAAE;AAAA,IAErD,CAAC;AAED,mBAAeQ,IAAqB;;AAClC,MAAAN,EAAO,QAAQ,KACfO,IAAAL,EAAM,mBAAN,QAAAK,EAAA,KAAAL;AAAA,IACF;2BAIEM,EAUmBC,EAAAC,CAAA,GAAA;AAAA,kBAVQV,EAAA;AAAA,oDAAAA,EAAM,QAAAW;AAAA,MAAG,OAAKC,EAAEC,EAAAA,OAAO,KAAK;AAAA,MAAE,OAAM;AAAA,IAAA;iBAC7D,MAQE;AAAA,QARFC,EAQEC,GAAA;AAAA,UAPQ,YAAYjB,EAAA;AAAA,wDAAAA,EAAU,QAAAa;AAAA,UAC7B,OAAKC,EAAEC,EAAAA,OAAO,OAAO;AAAA,UACrB,SAASX,EAAM;AAAA,UACf,uBAAqBA,EAAM;AAAA,UAC3B,wBAAsBA,EAAM;AAAA,UAC5B,6BAA6BA,EAAM;AAAA,UACnC,gBAAeI;AAAA,QAAA;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-sdk/ui-vue",
3
- "version": "1.45.45",
3
+ "version": "1.46.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "styles": "dist/index.js",
@@ -27,9 +27,9 @@
27
27
  "@zip.js/zip.js": "^2.8.2",
28
28
  "es-toolkit": "^1.39.10",
29
29
  "@milaboratories/ptabler-expression-js": "1.1.5",
30
- "@milaboratories/biowasm-tools": "2.0.0",
31
- "@milaboratories/uikit": "2.6.5",
32
- "@platforma-sdk/model": "1.45.45"
30
+ "@platforma-sdk/model": "1.46.0",
31
+ "@milaboratories/uikit": "2.7.0",
32
+ "@milaboratories/biowasm-tools": "2.0.0"
33
33
  },
34
34
  "devDependencies": {
35
35
  "happy-dom": "^15.11.7",
@@ -44,11 +44,11 @@
44
44
  "yarpm": "^1.2.0",
45
45
  "fast-json-patch": "^3.1.1",
46
46
  "@faker-js/faker": "^9.2.0",
47
- "@milaboratories/eslint-config": "1.0.5",
48
47
  "@milaboratories/ts-configs": "1.0.6",
49
48
  "@milaboratories/build-configs": "1.0.8",
49
+ "@milaboratories/ts-builder": "1.0.5",
50
50
  "@milaboratories/helpers": "1.12.0",
51
- "@milaboratories/ts-builder": "1.0.5"
51
+ "@milaboratories/eslint-config": "1.0.5"
52
52
  },
53
53
  "scripts": {
54
54
  "test": "vitest run --passWithNoTests",
@@ -17,26 +17,25 @@ const props = defineProps<{
17
17
  enableDnd: boolean;
18
18
  columnOptions: SourceOptionInfo[];
19
19
  supportedFilters: typeof SUPPORTED_FILTER_TYPES;
20
- getSuggestOptions: (params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) =>
20
+ getSuggestOptions: (params: { columnId: PlAdvancedFilterColumnId; axisIdx?: number; searchType: 'value' | 'label'; searchStr: string }) =>
21
21
  ListOptionBase<string | number>[] | Promise<ListOptionBase<string | number>[]>;
22
- getSuggestModel?: (params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) =>
23
- ListOptionBase<string | number> | Promise<ListOptionBase<string | number>>;
24
22
  onDelete: (columnId: PlAdvancedFilterColumnId) => void;
25
23
  onChangeOperand: (op: Operand) => void;
26
24
  }>();
27
25
 
28
- const getSuggestModel = (...args: Parameters<typeof props.getSuggestOptions>) => typeof props.getSuggestModel === 'function'
29
- ? props.getSuggestModel(...args)
30
- : Promise.resolve(props.getSuggestOptions(...args)).then((options) => options[0]);
31
-
32
- async function getSuggestModelMultiFn(id: PlAdvancedFilterColumnId, v: string[], axisIdx?: number): Promise<ListOptionBase<string>[]> {
33
- return Promise.all(v.map((v) => getSuggestModel({ columnId: id, searchStr: v, axisIdx }) as Promise<ListOptionBase<string>>));
34
- }
35
- async function getSuggestModelSingleFn(id: PlAdvancedFilterColumnId, v: string, axisIdx?: number): Promise<ListOptionBase<string>> {
36
- return getSuggestModel({ columnId: id, searchStr: v, axisIdx }) as Promise<ListOptionBase<string>>;
26
+ async function getSuggestOptionsFn(id: PlAdvancedFilterColumnId, type: 'value' | 'label', str: string, axisIdx?: number): Promise<ListOptionBase<string>[]> {
27
+ return props.getSuggestOptions({ columnId: id, axisIdx, searchType: type, searchStr: str }) as Promise<ListOptionBase<string>[]>;
37
28
  }
38
- async function getSuggestOptionsFn(id: PlAdvancedFilterColumnId, str: string, axisIdx?: number): Promise<ListOptionBase<string>[]> {
39
- return props.getSuggestOptions({ columnId: id, searchStr: str, axisIdx }) as Promise<ListOptionBase<string>[]>;
29
+
30
+ async function getMultiSuggestOptionsFn(id: PlAdvancedFilterColumnId, type: 'value' | 'label', str: string | string[], axisIdx?: number): Promise<ListOptionBase<string>[]> {
31
+ if (type === 'label' && typeof str === 'string') {
32
+ return getSuggestOptionsFn(id, type, str, axisIdx);
33
+ }
34
+ if (type === 'value' && Array.isArray(str)) {
35
+ const results = await Promise.all(str.map((s) => getSuggestOptionsFn(id, type, s, axisIdx)));
36
+ return results.map((x) => x[0]);
37
+ }
38
+ throw new Error('Invalid arguments combination');
40
39
  }
41
40
 
42
41
  type Entries<T> = { [K in keyof T]: [K, T[K]] }[keyof T][];
@@ -220,8 +219,7 @@ const stringMatchesError = computed(() => {
220
219
  <PlAutocomplete
221
220
  v-model="columnAsSourceAndFixedAxes.axisFiltersByIndex[value.idx]"
222
221
  :label="value.label"
223
- :options-search="(str) => getSuggestOptionsFn(columnAsSourceAndFixedAxes.source, str, value.idx)"
224
- :model-search="(v) => getSuggestModelSingleFn(columnAsSourceAndFixedAxes.source, String(v), value.idx)"
222
+ :options-search="(str, type) => getSuggestOptionsFn(columnAsSourceAndFixedAxes.source, type, str, value.idx)"
225
223
  :disabled="inconsistentSourceSelected"
226
224
  :clearable="true"
227
225
  @update:model-value="(v) => updateAxisFilterValue(value.idx, v)"
@@ -266,8 +264,7 @@ const stringMatchesError = computed(() => {
266
264
  <template v-if="filter.type === 'patternEquals' || filter.type === 'patternNotEquals'" >
267
265
  <PlAutocomplete
268
266
  v-model="filter.value"
269
- :options-search="(str) => getSuggestOptionsFn(columnAsSourceAndFixedAxes.source, str)"
270
- :model-search="(v) => getSuggestModelSingleFn(columnAsSourceAndFixedAxes.source, String(v))"
267
+ :options-search="(str, type) => getSuggestOptionsFn(columnAsSourceAndFixedAxes.source, type, str)"
271
268
  :disabled="inconsistentSourceSelected"
272
269
  :clearable="true"
273
270
  group-position="bottom"
@@ -276,8 +273,7 @@ const stringMatchesError = computed(() => {
276
273
  <template v-if="filter.type === 'inSet' || filter.type === 'notInSet'" >
277
274
  <PlAutocompleteMulti
278
275
  v-model="filter.value"
279
- :options-search="(str) => getSuggestOptionsFn(columnAsSourceAndFixedAxes.source, str)"
280
- :model-search="(v) => getSuggestModelMultiFn(columnAsSourceAndFixedAxes.source, v.map((v) => String(v)))"
276
+ :options-search="(str, type) => getMultiSuggestOptionsFn(columnAsSourceAndFixedAxes.source, type, str)"
281
277
  :disabled="inconsistentSourceSelected"
282
278
  group-position="bottom"
283
279
  />
@@ -20,11 +20,8 @@ const props = withDefaults(defineProps<{
20
20
  /** If true - "Add group" button is shown below the filter groups */
21
21
  enableAddGroupButton?: boolean;
22
22
  /** Loading function for unique values for Equal/InSet filters and fixed axes options. */
23
- getSuggestOptions: (params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) =>
24
- ListOptionBase<string | number>[] | Promise<ListOptionBase<string | number>[]>;
25
- /** Loading function for label of selected value for Equal/InSet filters and fixed axes options. */
26
- getSuggestModel?: (params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) =>
27
- ListOptionBase<string | number> | Promise<ListOptionBase<string | number>>;
23
+ getSuggestOptions: (params: { columnId: PlAdvancedFilterColumnId; axisIdx?: number; searchStr: string; searchType: 'value' | 'label' }) =>
24
+ ListOptionBase<string | number>[] | Promise<ListOptionBase<string | number>[]>;
28
25
  }>(), {
29
26
  supportedFilters: () => SUPPORTED_FILTER_TYPES,
30
27
  getSuggestModel: undefined,
@@ -197,7 +194,6 @@ function updateFilter(filters: CommonFilter[], idx: number, updatedFilter: Edita
197
194
  :operand="getNotContent(item).type"
198
195
  :column-options="items"
199
196
  :supported-filters="props.supportedFilters"
200
- :get-suggest-model="props.getSuggestModel"
201
197
  :get-suggest-options="props.getSuggestOptions"
202
198
  :enable-dnd="Boolean(props.enableDnd)"
203
199
  :is-last="filterIdx === getNotContent(item).filters.length - 1"
@@ -2,11 +2,8 @@
2
2
  export type Props = {
3
3
  columns: PlAdvancedFilterItem[];
4
4
 
5
- getSuggestOptions: (params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) =>
5
+ getSuggestOptions: (params: { columnId: PlAdvancedFilterColumnId; axisIdx?: number; searchStr: string; searchType: 'value' | 'label' }) =>
6
6
  ListOptionBase<string | number>[] | Promise<ListOptionBase<string | number>[]>;
7
- // @todo: can be optional
8
- getSuggestModel?: (params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) =>
9
- ListOptionBase<string | number> | Promise<ListOptionBase<string | number>>;
10
7
 
11
8
  hasSelectedColumns?: boolean;
12
9
  getValuesForSelectedColumns?: () => Promise<undefined | { columnId: PObjectId; values: string[] }>;
@@ -112,7 +109,6 @@ const supportedFilters = [
112
109
  :class="[$style.root, { [$commonStyle.disabled]: step.label.length === 0 }]"
113
110
  :items="props.columns"
114
111
  :supported-filters="supportedFilters"
115
- :get-suggest-model="props.getSuggestModel"
116
112
  :get-suggest-options="props.getSuggestOptions"
117
113
  :enable-dnd="false"
118
114
  :enable-add-group-button="true"
@@ -67,7 +67,6 @@ async function handleDeleteSchema() {
67
67
  v-model:step="selectedStep"
68
68
  :class="$style.sidebarItem"
69
69
  :columns="props.columns"
70
- :get-suggest-model="props.getSuggestModel"
71
70
  :get-suggest-options="props.getSuggestOptions"
72
71
  :selectedStepId="selectedStepId"
73
72
  :hasSelectedColumns="props.hasSelectedColumns"
@@ -32,7 +32,6 @@ async function handleDeleteSchema() {
32
32
  v-model:annotation="annotation"
33
33
  :class="$style.content"
34
34
  :columns="props.columns"
35
- :get-suggest-model="props.getSuggestModel"
36
35
  :get-suggest-options="props.getSuggestOptions"
37
36
  :has-selected-columns="props.hasSelectedColumns"
38
37
  :getValuesForSelectedColumns="props.getValuesForSelectedColumns"