@platforma-sdk/ui-vue 1.45.37 → 1.45.45
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.
- package/.turbo/turbo-build.log +23 -39
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +19 -0
- package/dist/components/PlAdvancedFilter/{SingleFilter.vue.d.ts → FilterEditor.vue.d.ts} +12 -18
- package/dist/components/PlAdvancedFilter/FilterEditor.vue.js +10 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.vue.js.map +1 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js +305 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js.map +1 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.vue3.js +33 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.vue3.js.map +1 -0
- package/dist/components/PlAdvancedFilter/OperandButton.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/OperandButton.vue3.js +9 -9
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.d.ts +35 -16
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js +185 -145
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue3.js +13 -9
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue3.js.map +1 -1
- package/dist/components/PlAdvancedFilter/constants.d.ts +4 -4
- package/dist/components/PlAdvancedFilter/constants.js +26 -22
- package/dist/components/PlAdvancedFilter/constants.js.map +1 -1
- package/dist/components/PlAdvancedFilter/index.d.ts +4 -0
- package/dist/components/PlAdvancedFilter/index.js +9 -0
- package/dist/components/PlAdvancedFilter/index.js.map +1 -0
- package/dist/components/PlAdvancedFilter/types.d.ts +30 -34
- package/dist/components/PlAdvancedFilter/utils.d.ts +26 -0
- package/dist/components/PlAdvancedFilter/utils.js +32 -131
- package/dist/components/PlAdvancedFilter/utils.js.map +1 -1
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js +43 -41
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue3.js +2 -2
- package/dist/components/PlAnnotations/components/FilterSidebar.vue.d.ts +14 -2
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +99 -90
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/FilterSidebar.vue3.js +5 -5
- package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js +32 -30
- package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/PlAnnotations.vue3.js +5 -7
- package/dist/components/PlAnnotations/components/PlAnnotations.vue3.js.map +1 -1
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js +26 -22
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue3.js +7 -9
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue3.js.map +1 -1
- package/dist/components/PlAnnotations/components/style.module.css.js +13 -0
- package/dist/components/PlAnnotations/components/style.module.css.js.map +1 -0
- package/dist/components/PlAnnotations/index.d.ts +1 -0
- package/dist/index.js +35 -33
- package/dist/index.js.map +1 -1
- package/package.json +9 -8
- package/src/components/PlAdvancedFilter/{SingleFilter.vue → FilterEditor.vue} +53 -53
- package/src/components/PlAdvancedFilter/OperandButton.vue +1 -1
- package/src/components/PlAdvancedFilter/PlAdvancedFilter.vue +155 -59
- package/src/components/PlAdvancedFilter/constants.ts +17 -11
- package/src/components/PlAdvancedFilter/index.ts +6 -0
- package/src/components/PlAdvancedFilter/types.ts +23 -54
- package/src/components/PlAdvancedFilter/utils.ts +51 -163
- package/src/components/PlAnnotations/components/AnnotationsSidebar.vue +8 -8
- package/src/components/PlAnnotations/components/FilterSidebar.vue +64 -69
- package/src/components/PlAnnotations/components/PlAnnotations.vue +4 -7
- package/src/components/PlAnnotations/components/PlAnnotationsModal.vue +5 -8
- package/src/components/PlAnnotations/components/style.module.css +16 -0
- package/src/components/PlAnnotations/index.ts +2 -0
- package/dist/components/PlAdvancedFilter/SingleFilter.vue.js +0 -10
- package/dist/components/PlAdvancedFilter/SingleFilter.vue.js.map +0 -1
- package/dist/components/PlAdvancedFilter/SingleFilter.vue2.js +0 -306
- package/dist/components/PlAdvancedFilter/SingleFilter.vue2.js.map +0 -1
- package/dist/components/PlAdvancedFilter/SingleFilter.vue3.js +0 -35
- package/dist/components/PlAdvancedFilter/SingleFilter.vue3.js.map +0 -1
- package/dist/components/PlAdvancedFilter/types.js +0 -8
- package/dist/components/PlAdvancedFilter/types.js.map +0 -1
- package/dist/components/PlAnnotations/components/DynamicForm.vue.d.ts +0 -24
- package/dist/components/PlAnnotations/components/DynamicForm.vue.js +0 -10
- package/dist/components/PlAnnotations/components/DynamicForm.vue.js.map +0 -1
- package/dist/components/PlAnnotations/components/DynamicForm.vue2.js +0 -109
- package/dist/components/PlAnnotations/components/DynamicForm.vue2.js.map +0 -1
- package/dist/components/PlAnnotations/components/DynamicForm.vue3.js +0 -9
- package/dist/components/PlAnnotations/components/DynamicForm.vue3.js.map +0 -1
- package/dist/components/PlAnnotations/utils.js +0 -20
- package/dist/components/PlAnnotations/utils.js.map +0 -1
|
@@ -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
|
|
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,11 +1,9 @@
|
|
|
1
|
-
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".
|
|
2
|
-
const e = "
|
|
3
|
-
|
|
4
|
-
sidebarItem: s
|
|
1
|
+
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._sidebarItem_ealy4_2{width:100%;height:100%}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
|
|
2
|
+
const e = "_sidebarItem_ealy4_2", t = {
|
|
3
|
+
sidebarItem: e
|
|
5
4
|
};
|
|
6
5
|
export {
|
|
7
|
-
|
|
8
|
-
e as
|
|
9
|
-
s as sidebarItem
|
|
6
|
+
t as default,
|
|
7
|
+
e as sidebarItem
|
|
10
8
|
};
|
|
11
9
|
//# sourceMappingURL=PlAnnotations.vue3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAnnotations.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlAnnotations.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { PlPureSlideModal as
|
|
3
|
-
import
|
|
4
|
-
const B = /* @__PURE__ */
|
|
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";
|
|
4
|
+
const B = /* @__PURE__ */ m({
|
|
5
5
|
__name: "PlAnnotationsModal",
|
|
6
|
-
props: /* @__PURE__ */
|
|
6
|
+
props: /* @__PURE__ */ g({
|
|
7
7
|
columns: {},
|
|
8
|
+
getSuggestOptions: { type: Function },
|
|
9
|
+
getSuggestModel: { type: Function },
|
|
8
10
|
hasSelectedColumns: { type: Boolean },
|
|
9
11
|
getValuesForSelectedColumns: { type: Function },
|
|
10
12
|
onDeleteSchema: { type: Function }
|
|
@@ -16,30 +18,32 @@ const B = /* @__PURE__ */ c({
|
|
|
16
18
|
}),
|
|
17
19
|
emits: ["update:annotation", "update:opened"],
|
|
18
20
|
setup(l) {
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
u.value === void 0 &&
|
|
21
|
+
const o = d(l, "annotation"), s = d(l, "opened"), e = l, u = p(void 0);
|
|
22
|
+
r(function() {
|
|
23
|
+
u.value === void 0 && o.value.steps.length > 0 && (u.value = o.value.steps[0].id);
|
|
22
24
|
});
|
|
23
|
-
async function
|
|
24
|
-
var
|
|
25
|
-
|
|
25
|
+
async function c() {
|
|
26
|
+
var t;
|
|
27
|
+
s.value = !1, (t = e.onDeleteSchema) == null || t.call(e);
|
|
26
28
|
}
|
|
27
|
-
return (
|
|
28
|
-
modelValue:
|
|
29
|
-
"onUpdate:modelValue": n[1] || (n[1] = (
|
|
30
|
-
class: i(
|
|
29
|
+
return (t, n) => (S(), f(v(C), {
|
|
30
|
+
modelValue: s.value,
|
|
31
|
+
"onUpdate:modelValue": n[1] || (n[1] = (a) => s.value = a),
|
|
32
|
+
class: i(t.$style.modal),
|
|
31
33
|
width: "768px"
|
|
32
34
|
}, {
|
|
33
|
-
default:
|
|
34
|
-
|
|
35
|
-
annotation:
|
|
36
|
-
"onUpdate:annotation": n[0] || (n[0] = (
|
|
37
|
-
class: i(
|
|
35
|
+
default: h(() => [
|
|
36
|
+
y(F, {
|
|
37
|
+
annotation: o.value,
|
|
38
|
+
"onUpdate:annotation": n[0] || (n[0] = (a) => o.value = a),
|
|
39
|
+
class: i(t.$style.content),
|
|
38
40
|
columns: e.columns,
|
|
41
|
+
"get-suggest-model": e.getSuggestModel,
|
|
42
|
+
"get-suggest-options": e.getSuggestOptions,
|
|
39
43
|
"has-selected-columns": e.hasSelectedColumns,
|
|
40
44
|
getValuesForSelectedColumns: e.getValuesForSelectedColumns,
|
|
41
|
-
onDeleteSchema:
|
|
42
|
-
}, null, 8, ["annotation", "class", "columns", "has-selected-columns", "getValuesForSelectedColumns"])
|
|
45
|
+
onDeleteSchema: c
|
|
46
|
+
}, null, 8, ["annotation", "class", "columns", "get-suggest-model", "get-suggest-options", "has-selected-columns", "getValuesForSelectedColumns"])
|
|
43
47
|
]),
|
|
44
48
|
_: 1
|
|
45
49
|
}, 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.
|
|
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,13 +1,11 @@
|
|
|
1
|
-
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".
|
|
2
|
-
const
|
|
3
|
-
modal:
|
|
4
|
-
|
|
5
|
-
sidebarItem: a
|
|
1
|
+
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._modal_bftih_2{display:flex}._content_bftih_6{width:100%;height:100%}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
|
|
2
|
+
const t = "_modal_bftih_2", o = "_content_bftih_6", n = {
|
|
3
|
+
modal: t,
|
|
4
|
+
content: o
|
|
6
5
|
};
|
|
7
6
|
export {
|
|
8
|
-
o as
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
a as sidebarItem
|
|
7
|
+
o as content,
|
|
8
|
+
n as default,
|
|
9
|
+
t as modal
|
|
12
10
|
};
|
|
13
11
|
//# sourceMappingURL=PlAnnotationsModal.vue3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAnnotationsModal.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlAnnotationsModal.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._flashing_1daus_1{animation:_flash_1daus_1 1s ease-in-out infinite alternate}@keyframes _flash_1daus_1{0%{box-shadow:0 0 6px 4px var(--border-color-focus)}to{box-shadow:0 0 2px 2px var(--border-color-focus)}}._disabled_1daus_13{pointer-events:none;opacity:.5}")),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
|
|
2
|
+
const s = "_flashing_1daus_1", a = "_flash_1daus_1", l = "_disabled_1daus_13", d = {
|
|
3
|
+
flashing: s,
|
|
4
|
+
flash: a,
|
|
5
|
+
disabled: l
|
|
6
|
+
};
|
|
7
|
+
export {
|
|
8
|
+
d as default,
|
|
9
|
+
l as disabled,
|
|
10
|
+
a as flash,
|
|
11
|
+
s as flashing
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=style.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|
package/dist/index.js
CHANGED
|
@@ -5,20 +5,20 @@
|
|
|
5
5
|
.pl-ag-chart-stacked-bar-cell{height:100%;display:flex;flex-direction:row;align-items:center}.pl-ag-chart-stacked-bar-cell__not-ready{color:var(--txt-03)!important}`)),document.head.appendChild(r)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
|
|
6
6
|
|
|
7
7
|
import { default as m } from "./components/BlockLayout.vue.js";
|
|
8
|
-
import { default as
|
|
8
|
+
import { default as s, default as d } from "./components/PlAgDataTable/PlAgDataTableV2.vue.js";
|
|
9
9
|
import { default as i } from "./components/PlAgDataTable/PlAgOverlayLoading.vue.js";
|
|
10
10
|
import { default as n } from "./components/PlAgDataTable/PlAgOverlayNoRows.vue.js";
|
|
11
11
|
|
|
12
12
|
import { default as A } from "./components/ValueOrErrorsComponent.vue.js";
|
|
13
13
|
import { useAgGridOptions as C } from "./AgGridVue/useAgGridOptions.js";
|
|
14
14
|
import { createAgGridColDef as b } from "./AgGridVue/createAgGridColDef.js";
|
|
15
|
-
import { deselectAll as
|
|
15
|
+
import { deselectAll as v, getSelectedRowsCount as w, getTotalRowsCount as R, isSelectionEnabled as S, selectAll as T } from "./AgGridVue/selection.js";
|
|
16
16
|
import { default as V } from "./components/PlAgColumnHeader/PlAgColumnHeader.vue.js";
|
|
17
|
-
import { default as
|
|
18
|
-
import { default as
|
|
19
|
-
import { default as
|
|
17
|
+
import { default as F } from "./components/PlAgCellFile/PlAgCellFile.vue.js";
|
|
18
|
+
import { default as h } from "./components/PlAgCellProgress/PlAgCellProgress.vue.js";
|
|
19
|
+
import { default as N } from "./components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js";
|
|
20
20
|
|
|
21
|
-
import { default as
|
|
21
|
+
import { default as y } from "./components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue.js";
|
|
22
22
|
|
|
23
23
|
import { default as H } from "./components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue.js";
|
|
24
24
|
|
|
@@ -32,70 +32,72 @@ import { default as re } from "./components/PlAgGridColumnManager/PlAgGridColumn
|
|
|
32
32
|
import { default as te } from "./components/PlTableFilters/PlTableFiltersV2.vue.js";
|
|
33
33
|
import { default as ae } from "./components/PlAnnotations/components/PlAnnotations.vue.js";
|
|
34
34
|
import { default as me } from "./components/PlAnnotations/components/PlAnnotationsModal.vue.js";
|
|
35
|
-
import { default as
|
|
36
|
-
import {
|
|
35
|
+
import { default as se } from "./components/PlBtnExportArchive/PlBtnExportArchive.vue.js";
|
|
36
|
+
import { PlAdvancedFilterSupportedFilters as ue } from "./components/PlAdvancedFilter/index.js";
|
|
37
37
|
import { defineApp as xe, useSdkPlugin as ne } from "./defineApp.js";
|
|
38
38
|
import { createModel as Ae } from "./createModel.js";
|
|
39
39
|
import { defineStore as Ce } from "./defineStore.js";
|
|
40
40
|
import { AgGridTheme as be, activateAgGrid as Ee } from "./aggrid.js";
|
|
41
|
-
import { MultiError as
|
|
42
|
-
import { objectHash as
|
|
43
|
-
import { computedResult as
|
|
41
|
+
import { MultiError as we, UnresolvedError as Re, ensureError as Se, formatZodError as Te, identity as De, isDefined as Ve, isZodError as Oe, unwrapValueOrErrors as Fe, wrapOptionalResult as Me, wrapValueOrErrors as he } from "./utils.js";
|
|
42
|
+
import { objectHash as Ne } from "./objectHash.js";
|
|
43
|
+
import { computedResult as ye } from "./computedResult.js";
|
|
44
44
|
import { ReactiveFileContent as He } from "./composition/fileContent.js";
|
|
45
45
|
export * from "@milaboratories/uikit";
|
|
46
|
+
import { default as Ze } from "./components/PlAdvancedFilter/PlAdvancedFilter.vue.js";
|
|
46
47
|
export {
|
|
47
48
|
be as AgGridTheme,
|
|
48
49
|
m as BlockLayout,
|
|
49
50
|
J as DeferredCircular,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
51
|
+
we as MultiError,
|
|
52
|
+
Ze as PlAdvancedFilter,
|
|
53
|
+
ue as PlAdvancedFilterSupportedFilters,
|
|
54
|
+
F as PlAgCellFile,
|
|
55
|
+
h as PlAgCellProgress,
|
|
56
|
+
N as PlAgCellStatusTag,
|
|
57
|
+
y as PlAgChartHistogramCell,
|
|
56
58
|
H as PlAgChartStackedBarCell,
|
|
57
59
|
V as PlAgColumnHeader,
|
|
58
60
|
Y as PlAgCsvExporter,
|
|
59
61
|
j as PlAgDataTableRowNumberColId,
|
|
60
|
-
|
|
62
|
+
s as PlAgDataTableV2,
|
|
61
63
|
re as PlAgGridColumnManager,
|
|
62
64
|
i as PlAgOverlayLoading,
|
|
63
65
|
n as PlAgOverlayNoRows,
|
|
64
66
|
$ as PlAgTextAndButtonCell,
|
|
65
67
|
ae as PlAnnotations,
|
|
66
68
|
me as PlAnnotationsModal,
|
|
67
|
-
|
|
69
|
+
se as PlBtnExportArchive,
|
|
68
70
|
d as PlDataTableV2,
|
|
69
71
|
te as PlTableFiltersV2,
|
|
70
72
|
He as ReactiveFileContent,
|
|
71
|
-
|
|
73
|
+
Re as UnresolvedError,
|
|
72
74
|
A as ValueOrErrorsComponent,
|
|
73
75
|
Ee as activateAgGrid,
|
|
74
76
|
z as autoSizeRowNumberColumn,
|
|
75
|
-
|
|
77
|
+
ye as computedResult,
|
|
76
78
|
b as createAgGridColDef,
|
|
77
79
|
Ae as createModel,
|
|
78
80
|
W as defaultMainMenuItems,
|
|
79
81
|
xe as defineApp,
|
|
80
82
|
Ce as defineStore,
|
|
81
|
-
|
|
82
|
-
|
|
83
|
+
v as deselectAll,
|
|
84
|
+
Se as ensureError,
|
|
83
85
|
K as ensureNodeVisible,
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
Te as formatZodError,
|
|
87
|
+
w as getSelectedRowsCount,
|
|
88
|
+
R as getTotalRowsCount,
|
|
89
|
+
De as identity,
|
|
88
90
|
Ve as isDefined,
|
|
89
|
-
|
|
91
|
+
S as isSelectionEnabled,
|
|
90
92
|
Oe as isZodError,
|
|
91
93
|
U as makeRowNumberColDef,
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
94
|
+
Ne as objectHash,
|
|
95
|
+
T as selectAll,
|
|
96
|
+
Fe as unwrapValueOrErrors,
|
|
95
97
|
C as useAgGridOptions,
|
|
96
98
|
L as usePlDataTableSettingsV2,
|
|
97
99
|
ne as useSdkPlugin,
|
|
98
|
-
|
|
99
|
-
|
|
100
|
+
Me as wrapOptionalResult,
|
|
101
|
+
he as wrapValueOrErrors
|
|
100
102
|
};
|
|
101
103
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@platforma-sdk/ui-vue",
|
|
3
|
-
"version": "1.45.
|
|
3
|
+
"version": "1.45.45",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"styles": "dist/index.js",
|
|
@@ -25,10 +25,11 @@
|
|
|
25
25
|
"d3-format": "^3.1.0",
|
|
26
26
|
"zod": "~3.23.8",
|
|
27
27
|
"@zip.js/zip.js": "^2.8.2",
|
|
28
|
-
"
|
|
28
|
+
"es-toolkit": "^1.39.10",
|
|
29
|
+
"@milaboratories/ptabler-expression-js": "1.1.5",
|
|
29
30
|
"@milaboratories/biowasm-tools": "2.0.0",
|
|
30
|
-
"@
|
|
31
|
-
"@
|
|
31
|
+
"@milaboratories/uikit": "2.6.5",
|
|
32
|
+
"@platforma-sdk/model": "1.45.45"
|
|
32
33
|
},
|
|
33
34
|
"devDependencies": {
|
|
34
35
|
"happy-dom": "^15.11.7",
|
|
@@ -43,11 +44,11 @@
|
|
|
43
44
|
"yarpm": "^1.2.0",
|
|
44
45
|
"fast-json-patch": "^3.1.1",
|
|
45
46
|
"@faker-js/faker": "^9.2.0",
|
|
46
|
-
"@milaboratories/helpers": "1.12.0",
|
|
47
|
-
"@milaboratories/ts-builder": "1.0.5",
|
|
48
|
-
"@milaboratories/ts-configs": "1.0.6",
|
|
49
47
|
"@milaboratories/eslint-config": "1.0.5",
|
|
50
|
-
"@milaboratories/
|
|
48
|
+
"@milaboratories/ts-configs": "1.0.6",
|
|
49
|
+
"@milaboratories/build-configs": "1.0.8",
|
|
50
|
+
"@milaboratories/helpers": "1.12.0",
|
|
51
|
+
"@milaboratories/ts-builder": "1.0.5"
|
|
51
52
|
},
|
|
52
53
|
"scripts": {
|
|
53
54
|
"test": "vitest run --passWithNoTests",
|
|
@@ -1,56 +1,52 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
|
-
import
|
|
3
|
-
import { PlIcon16, PlDropdown, PlAutocomplete, PlAutocompleteMulti, PlTextField, PlNumberField, Slider, PlToggleSwitch } from '@milaboratories/uikit';
|
|
4
|
-
import { computed } from 'vue';
|
|
5
|
-
import { SUPPORTED_FILTER_TYPES, DEFAULT_FILTER_TYPE, DEFAULT_FILTERS } from './constants';
|
|
2
|
+
import { PlAutocomplete, PlAutocompleteMulti, PlDropdown, PlIcon16, PlNumberField, PlTextField, PlToggleSwitch, Slider } from '@milaboratories/uikit';
|
|
6
3
|
import type { AnchoredPColumnId, AxisFilterByIdx, AxisFilterValue, SUniversalPColumnId } from '@platforma-sdk/model';
|
|
7
4
|
import { isFilteredPColumn, parseColumnId, stringifyColumnId, type ListOptionBase } from '@platforma-sdk/model';
|
|
5
|
+
import { computed } from 'vue';
|
|
6
|
+
import type { SUPPORTED_FILTER_TYPES } from './constants';
|
|
7
|
+
import { DEFAULT_FILTER_TYPE, DEFAULT_FILTERS } from './constants';
|
|
8
8
|
import OperandButton from './OperandButton.vue';
|
|
9
|
-
import {
|
|
9
|
+
import type { EditableFilter, Operand, PlAdvancedFilterColumnId, SourceOptionInfo } from './types';
|
|
10
|
+
import { getFilterInfo, getNormalizedSpec, isNumericFilter, isPositionFilter } from './utils';
|
|
11
|
+
|
|
12
|
+
const filter = defineModel<EditableFilter>('filter', { required: true });
|
|
10
13
|
|
|
11
14
|
const props = defineProps<{
|
|
15
|
+
isLast: boolean;
|
|
12
16
|
operand: Operand;
|
|
13
|
-
columnOptions: SourceOptionInfo[];
|
|
14
17
|
enableDnd: boolean;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
columnOptions: SourceOptionInfo[];
|
|
19
|
+
supportedFilters: typeof SUPPORTED_FILTER_TYPES;
|
|
20
|
+
getSuggestOptions: (params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) =>
|
|
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>>;
|
|
20
24
|
onDelete: (columnId: PlAdvancedFilterColumnId) => void;
|
|
21
25
|
onChangeOperand: (op: Operand) => void;
|
|
22
26
|
}>();
|
|
23
27
|
|
|
24
|
-
const
|
|
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]);
|
|
25
31
|
|
|
26
32
|
async function getSuggestModelMultiFn(id: PlAdvancedFilterColumnId, v: string[], axisIdx?: number): Promise<ListOptionBase<string>[]> {
|
|
27
|
-
return Promise.all(v.map((v) =>
|
|
33
|
+
return Promise.all(v.map((v) => getSuggestModel({ columnId: id, searchStr: v, axisIdx }) as Promise<ListOptionBase<string>>));
|
|
28
34
|
}
|
|
29
35
|
async function getSuggestModelSingleFn(id: PlAdvancedFilterColumnId, v: string, axisIdx?: number): Promise<ListOptionBase<string>> {
|
|
30
|
-
return
|
|
36
|
+
return getSuggestModel({ columnId: id, searchStr: v, axisIdx }) as Promise<ListOptionBase<string>>;
|
|
31
37
|
}
|
|
32
38
|
async function getSuggestOptionsFn(id: PlAdvancedFilterColumnId, str: string, axisIdx?: number): Promise<ListOptionBase<string>[]> {
|
|
33
39
|
return props.getSuggestOptions({ columnId: id, searchStr: str, axisIdx }) as Promise<ListOptionBase<string>[]>;
|
|
34
40
|
}
|
|
35
41
|
|
|
42
|
+
type Entries<T> = { [K in keyof T]: [K, T[K]] }[keyof T][];
|
|
36
43
|
function changeFilterType() {
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
filter.value = {
|
|
44
|
-
...DEFAULT_FILTERS[filter.value.type],
|
|
45
|
-
value: filter.value.value,
|
|
46
|
-
column: filter.value.column,
|
|
47
|
-
} as Filter;
|
|
48
|
-
} else {
|
|
49
|
-
filter.value = {
|
|
50
|
-
...DEFAULT_FILTERS[filter.value.type],
|
|
51
|
-
column: filter.value.column,
|
|
52
|
-
};
|
|
53
|
-
}
|
|
44
|
+
const defaultFilter = DEFAULT_FILTERS[filter.value.type];
|
|
45
|
+
|
|
46
|
+
filter.value = (Object.entries(defaultFilter) as Entries<EditableFilter>).reduce((res, [key, val]) => {
|
|
47
|
+
res[key] = filter.value[key] ?? val;
|
|
48
|
+
return res;
|
|
49
|
+
}, {} as Record<keyof EditableFilter, EditableFilter[keyof EditableFilter]>) as EditableFilter;
|
|
54
50
|
}
|
|
55
51
|
|
|
56
52
|
function changeSourceId(newSourceId?: PlAdvancedFilterColumnId) {
|
|
@@ -151,24 +147,28 @@ function updateAxisFilterValue(idx: number, value: AxisFilterValue | undefined)
|
|
|
151
147
|
const currentOption = computed(() => props.columnOptions.find((op) => op.id === columnAsSourceAndFixedAxes.value.source));
|
|
152
148
|
const currentSpec = computed(() => currentOption.value?.spec ? getNormalizedSpec(currentOption.value.spec) : null);
|
|
153
149
|
const currentType = computed(() => currentSpec.value?.valueType);
|
|
154
|
-
const currentError = computed(() => currentOption.value?.error || inconsistentSourceSelected.value);
|
|
155
|
-
|
|
156
|
-
const filterTypesOptions = computed(() =>
|
|
157
|
-
filter.value.type === v
|
|
158
|
-
|
|
150
|
+
const currentError = computed(() => Boolean(currentOption.value?.error) || inconsistentSourceSelected.value);
|
|
151
|
+
|
|
152
|
+
const filterTypesOptions = computed(() => props.supportedFilters
|
|
153
|
+
.filter((v) => filter.value.type === v
|
|
154
|
+
|| (currentSpec.value
|
|
155
|
+
? getFilterInfo(v).supportedFor(currentSpec.value)
|
|
156
|
+
: true),
|
|
157
|
+
)
|
|
158
|
+
.map((v) => ({ value: v, label: getFilterInfo(v).label })),
|
|
159
159
|
);
|
|
160
160
|
|
|
161
161
|
const wildcardOptions = computed(() => {
|
|
162
|
-
if (filter.value.type
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
return [{ label: 'X', value: 'X' }];
|
|
168
|
-
}
|
|
169
|
-
return [...new Set(filter.value.value.split(''))].sort().map((v) => ({ value: v, label: v }));
|
|
162
|
+
if (filter.value.type !== 'patternFuzzyContainSubsequence') {
|
|
163
|
+
return [];
|
|
164
|
+
}
|
|
165
|
+
if (currentOption.value?.alphabet === 'nucleotide') {
|
|
166
|
+
return [{ label: 'N', value: 'N' }];
|
|
170
167
|
}
|
|
171
|
-
|
|
168
|
+
if (currentOption.value?.alphabet === 'aminoacid') {
|
|
169
|
+
return [{ label: 'X', value: 'X' }];
|
|
170
|
+
}
|
|
171
|
+
return [...new Set(filter.value.value.split(''))].sort().map((v) => ({ value: v, label: v }));
|
|
172
172
|
});
|
|
173
173
|
|
|
174
174
|
const stringMatchesError = computed(() => {
|
|
@@ -221,7 +221,7 @@ const stringMatchesError = computed(() => {
|
|
|
221
221
|
v-model="columnAsSourceAndFixedAxes.axisFiltersByIndex[value.idx]"
|
|
222
222
|
:label="value.label"
|
|
223
223
|
:options-search="(str) => getSuggestOptionsFn(columnAsSourceAndFixedAxes.source, str, value.idx)"
|
|
224
|
-
:model-search="(v) => getSuggestModelSingleFn(columnAsSourceAndFixedAxes.source, v
|
|
224
|
+
:model-search="(v) => getSuggestModelSingleFn(columnAsSourceAndFixedAxes.source, String(v), value.idx)"
|
|
225
225
|
:disabled="inconsistentSourceSelected"
|
|
226
226
|
:clearable="true"
|
|
227
227
|
@update:model-value="(v) => updateAxisFilterValue(value.idx, v)"
|
|
@@ -267,7 +267,7 @@ const stringMatchesError = computed(() => {
|
|
|
267
267
|
<PlAutocomplete
|
|
268
268
|
v-model="filter.value"
|
|
269
269
|
:options-search="(str) => getSuggestOptionsFn(columnAsSourceAndFixedAxes.source, str)"
|
|
270
|
-
:model-search="(v) => getSuggestModelSingleFn(columnAsSourceAndFixedAxes.source, v
|
|
270
|
+
:model-search="(v) => getSuggestModelSingleFn(columnAsSourceAndFixedAxes.source, String(v))"
|
|
271
271
|
:disabled="inconsistentSourceSelected"
|
|
272
272
|
:clearable="true"
|
|
273
273
|
group-position="bottom"
|
|
@@ -277,7 +277,7 @@ const stringMatchesError = computed(() => {
|
|
|
277
277
|
<PlAutocompleteMulti
|
|
278
278
|
v-model="filter.value"
|
|
279
279
|
:options-search="(str) => getSuggestOptionsFn(columnAsSourceAndFixedAxes.source, str)"
|
|
280
|
-
:model-search="(v) => getSuggestModelMultiFn(columnAsSourceAndFixedAxes.source, v
|
|
280
|
+
:model-search="(v) => getSuggestModelMultiFn(columnAsSourceAndFixedAxes.source, v.map((v) => String(v)))"
|
|
281
281
|
:disabled="inconsistentSourceSelected"
|
|
282
282
|
group-position="bottom"
|
|
283
283
|
/>
|
|
@@ -287,6 +287,11 @@ const stringMatchesError = computed(() => {
|
|
|
287
287
|
v-model="filter.x"
|
|
288
288
|
group-position="bottom"
|
|
289
289
|
/>
|
|
290
|
+
<PlNumberField
|
|
291
|
+
v-if="isPositionFilter(filter)"
|
|
292
|
+
v-model="filter.n"
|
|
293
|
+
group-position="bottom"
|
|
294
|
+
/>
|
|
290
295
|
<PlTextField
|
|
291
296
|
v-if="filter.type === 'patternContainSubsequence' || filter.type === 'patternNotContainSubsequence'"
|
|
292
297
|
v-model="filter.value"
|
|
@@ -311,7 +316,6 @@ const stringMatchesError = computed(() => {
|
|
|
311
316
|
</div>
|
|
312
317
|
</div>
|
|
313
318
|
<OperandButton
|
|
314
|
-
:class="$style.buttonWrapper"
|
|
315
319
|
:active="operand"
|
|
316
320
|
:disabled="isLast"
|
|
317
321
|
:on-select="onChangeOperand"
|
|
@@ -323,7 +327,6 @@ const stringMatchesError = computed(() => {
|
|
|
323
327
|
position: relative;
|
|
324
328
|
display: flex;
|
|
325
329
|
flex-direction: column;
|
|
326
|
-
margin-bottom: 8px;
|
|
327
330
|
width: 100%;
|
|
328
331
|
cursor: default;
|
|
329
332
|
}
|
|
@@ -419,7 +422,4 @@ const stringMatchesError = computed(() => {
|
|
|
419
422
|
background: #fff;
|
|
420
423
|
}
|
|
421
424
|
|
|
422
|
-
.buttonWrapper {
|
|
423
|
-
margin-bottom: 8px;
|
|
424
|
-
}
|
|
425
425
|
</style>
|