@platforma-sdk/ui-vue 1.45.42 → 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 (79) hide show
  1. package/.turbo/turbo-build.log +23 -39
  2. package/.turbo/turbo-type-check.log +1 -1
  3. package/CHANGELOG.md +22 -0
  4. package/dist/components/PlAdvancedFilter/FilterEditor.vue.d.ts +27 -0
  5. package/dist/components/PlAdvancedFilter/FilterEditor.vue.js +10 -0
  6. package/dist/components/PlAdvancedFilter/FilterEditor.vue.js.map +1 -0
  7. package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js +302 -0
  8. package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js.map +1 -0
  9. package/dist/components/PlAdvancedFilter/FilterEditor.vue3.js +33 -0
  10. package/dist/components/PlAdvancedFilter/FilterEditor.vue3.js.map +1 -0
  11. package/dist/components/PlAdvancedFilter/OperandButton.vue2.js.map +1 -1
  12. package/dist/components/PlAdvancedFilter/OperandButton.vue3.js +9 -9
  13. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.d.ts +29 -20
  14. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js +184 -146
  15. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js.map +1 -1
  16. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue3.js +13 -9
  17. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue3.js.map +1 -1
  18. package/dist/components/PlAdvancedFilter/constants.d.ts +4 -4
  19. package/dist/components/PlAdvancedFilter/constants.js +26 -22
  20. package/dist/components/PlAdvancedFilter/constants.js.map +1 -1
  21. package/dist/components/PlAdvancedFilter/index.d.ts +4 -0
  22. package/dist/components/PlAdvancedFilter/index.js +9 -0
  23. package/dist/components/PlAdvancedFilter/index.js.map +1 -0
  24. package/dist/components/PlAdvancedFilter/types.d.ts +30 -34
  25. package/dist/components/PlAdvancedFilter/utils.d.ts +26 -0
  26. package/dist/components/PlAdvancedFilter/utils.js +32 -131
  27. package/dist/components/PlAdvancedFilter/utils.js.map +1 -1
  28. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js +43 -41
  29. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js.map +1 -1
  30. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue3.js +2 -2
  31. package/dist/components/PlAnnotations/components/FilterSidebar.vue.d.ts +10 -2
  32. package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +98 -91
  33. package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js.map +1 -1
  34. package/dist/components/PlAnnotations/components/FilterSidebar.vue3.js +5 -5
  35. package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js +23 -23
  36. package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js.map +1 -1
  37. package/dist/components/PlAnnotations/components/PlAnnotations.vue3.js +5 -7
  38. package/dist/components/PlAnnotations/components/PlAnnotations.vue3.js.map +1 -1
  39. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js +19 -17
  40. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js.map +1 -1
  41. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue3.js +7 -9
  42. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue3.js.map +1 -1
  43. package/dist/components/PlAnnotations/components/style.module.css.js +13 -0
  44. package/dist/components/PlAnnotations/components/style.module.css.js.map +1 -0
  45. package/dist/components/PlAnnotations/index.d.ts +1 -0
  46. package/dist/index.js +35 -33
  47. package/dist/index.js.map +1 -1
  48. package/package.json +9 -8
  49. package/src/components/PlAdvancedFilter/{SingleFilter.vue → FilterEditor.vue} +58 -62
  50. package/src/components/PlAdvancedFilter/OperandButton.vue +1 -1
  51. package/src/components/PlAdvancedFilter/PlAdvancedFilter.vue +152 -60
  52. package/src/components/PlAdvancedFilter/constants.ts +17 -11
  53. package/src/components/PlAdvancedFilter/index.ts +6 -0
  54. package/src/components/PlAdvancedFilter/types.ts +23 -54
  55. package/src/components/PlAdvancedFilter/utils.ts +51 -163
  56. package/src/components/PlAnnotations/components/AnnotationsSidebar.vue +8 -8
  57. package/src/components/PlAnnotations/components/FilterSidebar.vue +60 -69
  58. package/src/components/PlAnnotations/components/PlAnnotations.vue +3 -7
  59. package/src/components/PlAnnotations/components/PlAnnotationsModal.vue +4 -8
  60. package/src/components/PlAnnotations/components/style.module.css +16 -0
  61. package/src/components/PlAnnotations/index.ts +2 -0
  62. package/dist/components/PlAdvancedFilter/SingleFilter.vue.d.ts +0 -37
  63. package/dist/components/PlAdvancedFilter/SingleFilter.vue.js +0 -10
  64. package/dist/components/PlAdvancedFilter/SingleFilter.vue.js.map +0 -1
  65. package/dist/components/PlAdvancedFilter/SingleFilter.vue2.js +0 -306
  66. package/dist/components/PlAdvancedFilter/SingleFilter.vue2.js.map +0 -1
  67. package/dist/components/PlAdvancedFilter/SingleFilter.vue3.js +0 -35
  68. package/dist/components/PlAdvancedFilter/SingleFilter.vue3.js.map +0 -1
  69. package/dist/components/PlAdvancedFilter/types.js +0 -8
  70. package/dist/components/PlAdvancedFilter/types.js.map +0 -1
  71. package/dist/components/PlAnnotations/components/DynamicForm.vue.d.ts +0 -24
  72. package/dist/components/PlAnnotations/components/DynamicForm.vue.js +0 -10
  73. package/dist/components/PlAnnotations/components/DynamicForm.vue.js.map +0 -1
  74. package/dist/components/PlAnnotations/components/DynamicForm.vue2.js +0 -109
  75. package/dist/components/PlAnnotations/components/DynamicForm.vue2.js.map +0 -1
  76. package/dist/components/PlAnnotations/components/DynamicForm.vue3.js +0 -9
  77. package/dist/components/PlAnnotations/components/DynamicForm.vue3.js.map +0 -1
  78. package/dist/components/PlAnnotations/utils.js +0 -20
  79. package/dist/components/PlAnnotations/utils.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterEditor.vue2.js","sources":["../../../src/components/PlAdvancedFilter/FilterEditor.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { PlAutocomplete, PlAutocompleteMulti, PlDropdown, PlIcon16, PlNumberField, PlTextField, PlToggleSwitch, Slider } from '@milaboratories/uikit';\nimport type { AnchoredPColumnId, AxisFilterByIdx, AxisFilterValue, SUniversalPColumnId } from '@platforma-sdk/model';\nimport { isFilteredPColumn, parseColumnId, stringifyColumnId, type ListOptionBase } from '@platforma-sdk/model';\nimport { computed } from 'vue';\nimport type { SUPPORTED_FILTER_TYPES } from './constants';\nimport { DEFAULT_FILTER_TYPE, DEFAULT_FILTERS } from './constants';\nimport OperandButton from './OperandButton.vue';\nimport type { EditableFilter, Operand, PlAdvancedFilterColumnId, SourceOptionInfo } from './types';\nimport { getFilterInfo, getNormalizedSpec, isNumericFilter, isPositionFilter } from './utils';\n\nconst filter = defineModel<EditableFilter>('filter', { required: true });\n\nconst props = defineProps<{\n isLast: boolean;\n operand: Operand;\n enableDnd: boolean;\n columnOptions: SourceOptionInfo[];\n supportedFilters: typeof SUPPORTED_FILTER_TYPES;\n getSuggestOptions: (params: { columnId: PlAdvancedFilterColumnId; axisIdx?: number; searchType: 'value' | 'label'; searchStr: string }) =>\n ListOptionBase<string | number>[] | Promise<ListOptionBase<string | number>[]>;\n onDelete: (columnId: PlAdvancedFilterColumnId) => void;\n onChangeOperand: (op: Operand) => void;\n}>();\n\nasync function getSuggestOptionsFn(id: PlAdvancedFilterColumnId, type: 'value' | 'label', str: string, axisIdx?: number): Promise<ListOptionBase<string>[]> {\n return props.getSuggestOptions({ columnId: id, axisIdx, searchType: type, searchStr: str }) as Promise<ListOptionBase<string>[]>;\n}\n\nasync function getMultiSuggestOptionsFn(id: PlAdvancedFilterColumnId, type: 'value' | 'label', str: string | string[], axisIdx?: number): Promise<ListOptionBase<string>[]> {\n if (type === 'label' && typeof str === 'string') {\n return getSuggestOptionsFn(id, type, str, axisIdx);\n }\n if (type === 'value' && Array.isArray(str)) {\n const results = await Promise.all(str.map((s) => getSuggestOptionsFn(id, type, s, axisIdx)));\n return results.map((x) => x[0]);\n }\n throw new Error('Invalid arguments combination');\n}\n\ntype Entries<T> = { [K in keyof T]: [K, T[K]] }[keyof T][];\nfunction changeFilterType() {\n const defaultFilter = DEFAULT_FILTERS[filter.value.type];\n\n filter.value = (Object.entries(defaultFilter) as Entries<EditableFilter>).reduce((res, [key, val]) => {\n res[key] = filter.value[key] ?? val;\n return res;\n }, {} as Record<keyof EditableFilter, EditableFilter[keyof EditableFilter]>) as EditableFilter;\n}\n\nfunction changeSourceId(newSourceId?: PlAdvancedFilterColumnId) {\n if (!newSourceId) {\n return;\n }\n const newSourceInfo = props.columnOptions.find((v) => v.id === getSourceId(newSourceId));\n if (!newSourceInfo) {\n return;\n }\n const filterInfo = getFilterInfo(filter.value.type);\n const newSourceSpec = getNormalizedSpec(newSourceInfo?.spec);\n if (filterInfo.supportedFor(newSourceSpec)) { // don't do anything except update source id\n filter.value.column = newSourceId;\n } else { // reset to default filter which fits to any column\n filter.value = {\n ...DEFAULT_FILTERS[DEFAULT_FILTER_TYPE],\n column: newSourceId,\n };\n }\n}\n\nconst inconsistentSourceSelected = computed(() => {\n const selectedOption = props.columnOptions.find((op) => op.id === getSourceId(filter.value.column));\n return selectedOption === undefined;\n});\nconst sourceOptions = computed(() => {\n const options = props.columnOptions.map((v) => ({ value: v.id, label: v.label ?? v }));\n if (inconsistentSourceSelected.value) {\n options.unshift({ value: filter.value.column, label: 'Inconsistent value' });\n }\n return options;\n});\n\nfunction getSourceId(column: PlAdvancedFilterColumnId): PlAdvancedFilterColumnId {\n try {\n const parsedColumnId = parseColumnId(column as SUniversalPColumnId);\n if (isFilteredPColumn(parsedColumnId)) {\n return stringifyColumnId(parsedColumnId.source);\n } else {\n return column;\n }\n } catch {\n return column;\n }\n}\n\n// similar to FilteredPColumnId but source is stringified and axis filters can be undefined\ntype ColumnAsSourceAndFixedAxes = { source: PlAdvancedFilterColumnId; axisFiltersByIndex: Record<number, AxisFilterValue | undefined> };\nfunction getColumnAsSourceAndFixedAxes(column: PlAdvancedFilterColumnId): ColumnAsSourceAndFixedAxes {\n const sourceId = getSourceId(column);\n const option = props.columnOptions.find((op) => op.id === sourceId);\n const axesToBeFixed = (option?.axesToBeFixed ?? []).reduce((res, item) => {\n res[item.idx] = undefined;\n return res;\n }, {} as Record<number, AxisFilterValue | undefined>);\n try {\n const parsedColumnId = parseColumnId(column as SUniversalPColumnId);\n if (isFilteredPColumn(parsedColumnId)) {\n return {\n source: sourceId,\n axisFiltersByIndex: parsedColumnId.axisFilters.reduce((res, item) => {\n res[item[0]] = item[1];\n return res;\n }, axesToBeFixed),\n };\n }\n } catch {\n return { source: column, axisFiltersByIndex: axesToBeFixed };\n }\n return { source: column, axisFiltersByIndex: axesToBeFixed };\n}\n\nfunction stringifyColumn(value: ColumnAsSourceAndFixedAxes): PlAdvancedFilterColumnId {\n if (Object.keys(value.axisFiltersByIndex).length === 0) {\n return value.source;\n }\n return stringifyColumnId({\n source: parseColumnId(value.source as SUniversalPColumnId) as AnchoredPColumnId,\n axisFilters: Object.entries(value.axisFiltersByIndex).map(([idx, value]) => [Number(idx), value] as AxisFilterByIdx),\n });\n}\n\nconst columnAsSourceAndFixedAxes = computed({\n get: () => {\n return getColumnAsSourceAndFixedAxes(filter.value.column);\n },\n set: (value) => {\n filter.value.column = stringifyColumn(value);\n },\n});\nfunction updateAxisFilterValue(idx: number, value: AxisFilterValue | undefined) {\n columnAsSourceAndFixedAxes.value = {\n ...columnAsSourceAndFixedAxes.value,\n axisFiltersByIndex: { ...columnAsSourceAndFixedAxes.value.axisFiltersByIndex, [idx]: value } };\n}\n\nconst currentOption = computed(() => props.columnOptions.find((op) => op.id === columnAsSourceAndFixedAxes.value.source));\nconst currentSpec = computed(() => currentOption.value?.spec ? getNormalizedSpec(currentOption.value.spec) : null);\nconst currentType = computed(() => currentSpec.value?.valueType);\nconst currentError = computed(() => Boolean(currentOption.value?.error) || inconsistentSourceSelected.value);\n\nconst filterTypesOptions = computed(() => props.supportedFilters\n .filter((v) => filter.value.type === v\n || (currentSpec.value\n ? getFilterInfo(v).supportedFor(currentSpec.value)\n : true),\n )\n .map((v) => ({ value: v, label: getFilterInfo(v).label })),\n);\n\nconst wildcardOptions = computed(() => {\n if (filter.value.type !== 'patternFuzzyContainSubsequence') {\n return [];\n }\n if (currentOption.value?.alphabet === 'nucleotide') {\n return [{ label: 'N', value: 'N' }];\n }\n if (currentOption.value?.alphabet === 'aminoacid') {\n return [{ label: 'X', value: 'X' }];\n }\n return [...new Set(filter.value.value.split(''))].sort().map((v) => ({ value: v, label: v }));\n});\n\nconst stringMatchesError = computed(() => {\n if (filter.value.type !== 'patternMatchesRegularExpression') {\n return false;\n }\n try {\n new RegExp(filter.value.value);\n return false;\n } catch {\n return true;\n }\n});\n\n</script>\n<template>\n <div :class=\"$style.filterWrapper\">\n <!-- top element - column selector / column label - for all filter types-->\n <div v-if=\"enableDnd\" :class=\"[$style.top, $style.columnChip, {[$style.error]: currentError}]\">\n <div :class=\"[$style.typeIcon, {[$style.error]: currentError}]\">\n <PlIcon16 v-if=\"currentError\" name=\"warning\"/>\n <PlIcon16 v-else :name=\"currentType === 'String' || currentType === undefined ? 'cell-type-txt' : 'cell-type-num'\"/>\n </div>\n <div :class=\"$style.titleWrapper\" :title=\"currentOption?.label ?? ''\">\n <div :class=\"$style.title\">\n {{ inconsistentSourceSelected ? 'Inconsistent value' : currentOption?.label ?? filter.column }}\n </div>\n </div>\n <div :class=\"$style.closeIcon\" @click=\"onDelete(filter.column)\">\n <PlIcon16 name=\"close\"/>\n </div>\n </div>\n <div v-else :class=\"$style.top\" >\n <PlDropdown\n v-model=\"columnAsSourceAndFixedAxes.source\"\n :errorStatus=\"currentError\"\n :options=\"sourceOptions\"\n :style=\"{width: '100%'}\"\n group-position=\"top-left\"\n @update:model-value=\"changeSourceId\"\n />\n <div :class=\"$style.closeButton\" @click=\"onDelete(filter.column)\">\n <PlIcon16 name=\"close\"/>\n </div>\n </div>\n\n <div v-if=\"currentOption?.axesToBeFixed?.length\" :class=\"$style.fixedAxesBlock\">\n <template v-for=\"value in currentOption?.axesToBeFixed\" :key=\"value.idx\">\n <PlAutocomplete\n v-model=\"columnAsSourceAndFixedAxes.axisFiltersByIndex[value.idx]\"\n :label=\"value.label\"\n :options-search=\"(str, type) => getSuggestOptionsFn(columnAsSourceAndFixedAxes.source, type, str, value.idx)\"\n :disabled=\"inconsistentSourceSelected\"\n :clearable=\"true\"\n @update:model-value=\"(v) => updateAxisFilterValue(value.idx, v)\"\n />\n </template>\n </div>\n\n <!-- middle - filter type selector - for all filter types -->\n <div :class=\"filter.type === 'isNA' || filter.type === 'isNotNA' ? $style.bottom : $style.middle\">\n <PlDropdown\n v-model=\"filter.type\"\n :options=\"filterTypesOptions\"\n :group-position=\"filter.type === 'isNA' || filter.type === 'isNotNA' ? 'bottom' : 'middle'\"\n @update:model-value=\"changeFilterType\"\n />\n </div>\n\n <!-- middle - for fuzzy contains filter -->\n <template v-if=\"filter.type === 'patternFuzzyContainSubsequence'\">\n <div :class=\"$style.middle\">\n <PlTextField\n v-model=\"filter.value\"\n placeholder=\"Substring\"\n group-position=\"middle\"\n />\n </div>\n <div :class=\"$style.innerSection\">\n <Slider\n v-model=\"filter.maxEdits\"\n :max=\"5\"\n breakpoints label=\"Maximum number of substitutions and indels\"\n />\n <PlToggleSwitch\n v-model=\"filter.substitutionsOnly\"\n label=\"Substitutions only\"\n />\n </div>\n </template>\n\n <!-- bottom element - individual settings for every filter type -->\n <div :class=\"$style.bottom\">\n <template v-if=\"filter.type === 'patternEquals' || filter.type === 'patternNotEquals'\" >\n <PlAutocomplete\n v-model=\"filter.value\"\n :options-search=\"(str, type) => getSuggestOptionsFn(columnAsSourceAndFixedAxes.source, type, str)\"\n :disabled=\"inconsistentSourceSelected\"\n :clearable=\"true\"\n group-position=\"bottom\"\n />\n </template>\n <template v-if=\"filter.type === 'inSet' || filter.type === 'notInSet'\" >\n <PlAutocompleteMulti\n v-model=\"filter.value\"\n :options-search=\"(str, type) => getMultiSuggestOptionsFn(columnAsSourceAndFixedAxes.source, type, str)\"\n :disabled=\"inconsistentSourceSelected\"\n group-position=\"bottom\"\n />\n </template>\n <PlNumberField\n v-if=\"isNumericFilter(filter)\"\n v-model=\"filter.x\"\n group-position=\"bottom\"\n />\n <PlNumberField\n v-if=\"isPositionFilter(filter)\"\n v-model=\"filter.n\"\n group-position=\"bottom\"\n />\n <PlTextField\n v-if=\"filter.type === 'patternContainSubsequence' || filter.type === 'patternNotContainSubsequence'\"\n v-model=\"filter.value\"\n placeholder=\"Substring\"\n group-position=\"bottom\"\n />\n <PlTextField\n v-if=\"filter.type === 'patternMatchesRegularExpression'\"\n v-model=\"filter.value\"\n :error=\"stringMatchesError ? 'Regular expression is not valid' : undefined\"\n placeholder=\"Regular expression\"\n group-position=\"bottom\"\n />\n <PlDropdown\n v-if=\"filter.type === 'patternFuzzyContainSubsequence'\"\n v-model=\"filter.wildcard\"\n clearable\n placeholder=\"Wildcard value\"\n :options=\"wildcardOptions\"\n group-position=\"bottom\"\n />\n </div>\n </div>\n <OperandButton\n :active=\"operand\"\n :disabled=\"isLast\"\n :on-select=\"onChangeOperand\"\n />\n</template>\n\n<style module>\n.filterWrapper {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n cursor: default;\n}\n\n.typeIcon {\n display: inline-flex;\n margin-right: 8px;\n}\n\n.typeIcon.error {\n --icon-color: var(--txt-error);\n}\n\n.closeIcon {\n display: inline-flex;\n margin-left: 12px;\n cursor: pointer;\n}\n\n.titleWrapper {\n flex-grow: 1;\n overflow: hidden;\n}\n.title {\n overflow: hidden;\n color: var(--txt-01);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n}\n\n.columnChip {\n width: 100%;\n display: flex;\n padding: 10px 12px;\n align-items: center;\n border-radius: 6px;\n border: 1px solid var(--txt-01);\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n\n &.error {\n border-color: var(--txt-error);\n }\n}\n\n.innerSection {\n border: 1px solid var(--txt-01);\n border-top: none;\n padding: 16px 12px;\n}\n\n.closeButton {\n border: 1px solid var(--txt-01);\n border-top-right-radius: 6px;\n border-left: none;\n width: 40px;\n height: 40px;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n cursor: pointer;\n}\n\n.top {\n position: relative;\n display: flex;\n width: 100%;\n z-index: 1;\n background: #fff;\n}\n\n.fixedAxesBlock {\n position: relative;\n display: flex;\n flex-direction: column;\n padding: 12px 8px;\n gap: 12px;\n border-left: 1px solid var(--txt-01);\n border-right: 1px solid var(--txt-01);\n}\n\n.fixedAxesBlock > * {\n background: #fff;\n}\n\n.middle, .bottom {\n position: relative;\n margin-top: -1px;\n background: #fff;\n}\n\n</style>\n"],"names":["filter","_useModel","__props","props","getSuggestOptionsFn","id","type","str","axisIdx","getMultiSuggestOptionsFn","s","x","changeFilterType","defaultFilter","DEFAULT_FILTERS","res","key","val","changeSourceId","newSourceId","newSourceInfo","v","getSourceId","filterInfo","getFilterInfo","newSourceSpec","getNormalizedSpec","DEFAULT_FILTER_TYPE","inconsistentSourceSelected","computed","op","sourceOptions","options","column","parsedColumnId","parseColumnId","isFilteredPColumn","stringifyColumnId","getColumnAsSourceAndFixedAxes","sourceId","option","axesToBeFixed","item","stringifyColumn","value","idx","columnAsSourceAndFixedAxes","updateAxisFilterValue","currentOption","currentSpec","_a","currentType","currentError","filterTypesOptions","wildcardOptions","_b","stringMatchesError","_createElementVNode","_normalizeClass","$style","_createElementBlock","_createBlock","_unref","PlIcon16","_toDisplayString","_cache","$event","_createVNode","PlDropdown","_d","_c","_openBlock","_Fragment","_renderList","_e","PlAutocomplete","PlTextField","Slider","PlToggleSwitch","PlAutocompleteMulti","isNumericFilter","PlNumberField","isPositionFilter","OperandButton"],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._filterWrapper_ne4xn_2{position:relative;display:flex;flex-direction:column;width:100%;cursor:default}._typeIcon_ne4xn_10{display:inline-flex;margin-right:8px}._typeIcon_ne4xn_10._error_ne4xn_15{--icon-color: var(--txt-error)}._closeIcon_ne4xn_19{display:inline-flex;margin-left:12px;cursor:pointer}._titleWrapper_ne4xn_25{flex-grow:1;overflow:hidden}._title_ne4xn_25{overflow:hidden;color:var(--txt-01);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500;line-height:20px}._columnChip_ne4xn_39{width:100%;display:flex;padding:10px 12px;align-items:center;border:1px solid var(--txt-01);border-radius:6px 6px 0 0}._columnChip_ne4xn_39._error_ne4xn_15{border-color:var(--txt-error)}._innerSection_ne4xn_54{border:1px solid var(--txt-01);border-top:none;padding:16px 12px}._closeButton_ne4xn_60{border:1px solid var(--txt-01);border-top-right-radius:6px;border-left:none;width:40px;height:40px;display:flex;justify-content:center;align-items:center;flex-shrink:0;cursor:pointer}._top_ne4xn_73{position:relative;display:flex;width:100%;z-index:1;background:#fff}._fixedAxesBlock_ne4xn_81{position:relative;display:flex;flex-direction:column;padding:12px 8px;gap:12px;border-left:1px solid var(--txt-01);border-right:1px solid var(--txt-01)}._fixedAxesBlock_ne4xn_81>*{background:#fff}._middle_ne4xn_95,._bottom_ne4xn_95{position:relative;margin-top:-1px;background:#fff}")),document.head.appendChild(e)}}catch(n){console.error("vite-plugin-css-injected-by-js",n)}})();
2
+ const n = "_filterWrapper_ne4xn_2", e = "_typeIcon_ne4xn_10", t = "_error_ne4xn_15", o = "_closeIcon_ne4xn_19", _ = "_titleWrapper_ne4xn_25", c = "_title_ne4xn_25", r = "_columnChip_ne4xn_39", l = "_innerSection_ne4xn_54", s = "_closeButton_ne4xn_60", i = "_top_ne4xn_73", p = "_fixedAxesBlock_ne4xn_81", x = "_middle_ne4xn_95", d = "_bottom_ne4xn_95", m = {
3
+ filterWrapper: n,
4
+ typeIcon: e,
5
+ error: t,
6
+ closeIcon: o,
7
+ titleWrapper: _,
8
+ title: c,
9
+ columnChip: r,
10
+ innerSection: l,
11
+ closeButton: s,
12
+ top: i,
13
+ fixedAxesBlock: p,
14
+ middle: x,
15
+ bottom: d
16
+ };
17
+ export {
18
+ d as bottom,
19
+ s as closeButton,
20
+ o as closeIcon,
21
+ r as columnChip,
22
+ m as default,
23
+ t as error,
24
+ n as filterWrapper,
25
+ p as fixedAxesBlock,
26
+ l as innerSection,
27
+ x as middle,
28
+ c as title,
29
+ _ as titleWrapper,
30
+ i as top,
31
+ e as typeIcon
32
+ };
33
+ //# sourceMappingURL=FilterEditor.vue3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterEditor.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"OperandButton.vue2.js","sources":["../../../src/components/PlAdvancedFilter/OperandButton.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { Operand } from './types';\n\nconst props = defineProps<{\n active: Operand;\n disabled: boolean;\n onSelect: (op: Operand) => void;\n}>();\n\nconst OPTIONS: Operand[] = ['and', 'or'];\n</script>\n<template>\n <div v-bind=\"$attrs\" :class=\"$style.block\">\n <div\n v-for=\"op in OPTIONS\"\n :key=\"op\"\n :class=\"[$style.operand, {[$style.active]: op === props.active && !props.disabled}]\"\n @click=\"!props.disabled && props.onSelect(op)\"\n >\n {{ op }}\n </div>\n </div>\n</template>\n<style module>\n.block {\n width: 100%;\n display: flex;\n gap: 4px;\n justify-content: center;\n height: 72px;\n align-items: center;\n}\n.operand {\n border-radius: 16px;\n width: 64px;\n height: 32px;\n display: flex;\n justify-content: center;\n align-items: center;\n text-transform: uppercase;\n font-weight: 600;\n\n color: var(--txt-03);\n border: 1px solid var(--color-div-grey);\n background: transparent;\n cursor: pointer;\n}\n.operand.active {\n color: var(--txt-01);\n background: #fff;\n border: 1px solid var(--txt-01);\n}\n</style>\n"],"names":["props","__props","OPTIONS","_createElementBlock","_mergeProps","_ctx","$style","_Fragment","_renderList","op","_createElementVNode","$event","_hoisted_1"],"mappings":";;;;;;;;;AAGA,UAAMA,IAAQC,GAMRC,IAAqB,CAAC,OAAO,IAAI;2BAGrCC,EASM,OATNC,EASMC,EAAA,QATa;AAAA,MAAG,OAAOC,EAAAA,OAAO;AAAA,IAAA;YAClCH,EAOMI,GAAA,MAAAC,EANSN,GAAO,CAAbO,MADTC,EAOM,OAAA;AAAA,QALH,KAAKD;AAAA,QACL,UAAQH,EAAAA,OAAO,SAAO,EAAA,CAAIA,SAAO,MAAM,GAAGG,MAAOT,EAAM,UAAM,CAAKA,EAAM,SAAA,CAAQ,CAAA;AAAA,QAChF,SAAK,CAAAW,MAAA,CAAGX,EAAM,YAAYA,EAAM,SAASS,CAAE;AAAA,MAAA,KAEzCA,CAAE,GAAA,IAAAG,CAAA;;;;"}
1
+ {"version":3,"file":"OperandButton.vue2.js","sources":["../../../src/components/PlAdvancedFilter/OperandButton.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { Operand } from './types';\n\nconst props = defineProps<{\n active: Operand;\n disabled: boolean;\n onSelect: (op: Operand) => void;\n}>();\n\nconst OPTIONS: Operand[] = ['and', 'or'];\n</script>\n<template>\n <div v-bind=\"$attrs\" :class=\"$style.block\">\n <div\n v-for=\"op in OPTIONS\"\n :key=\"op\"\n :class=\"[$style.operand, {[$style.active]: op === props.active && !props.disabled}]\"\n @click=\"!props.disabled && props.onSelect(op)\"\n >\n {{ op }}\n </div>\n </div>\n</template>\n<style module>\n.block {\n width: 100%;\n display: flex;\n gap: 4px;\n justify-content: center;\n height: 30px;\n align-items: center;\n}\n.operand {\n border-radius: 16px;\n width: 64px;\n height: 32px;\n display: flex;\n justify-content: center;\n align-items: center;\n text-transform: uppercase;\n font-weight: 600;\n\n color: var(--txt-03);\n border: 1px solid var(--color-div-grey);\n background: transparent;\n cursor: pointer;\n}\n.operand.active {\n color: var(--txt-01);\n background: #fff;\n border: 1px solid var(--txt-01);\n}\n</style>\n"],"names":["props","__props","OPTIONS","_createElementBlock","_mergeProps","_ctx","$style","_Fragment","_renderList","op","_createElementVNode","$event","_hoisted_1"],"mappings":";;;;;;;;;AAGA,UAAMA,IAAQC,GAMRC,IAAqB,CAAC,OAAO,IAAI;2BAGrCC,EASM,OATNC,EASMC,EAAA,QATa;AAAA,MAAG,OAAOC,EAAAA,OAAO;AAAA,IAAA;YAClCH,EAOMI,GAAA,MAAAC,EANSN,GAAO,CAAbO,MADTC,EAOM,OAAA;AAAA,QALH,KAAKD;AAAA,QACL,UAAQH,EAAAA,OAAO,SAAO,EAAA,CAAIA,SAAO,MAAM,GAAGG,MAAOT,EAAM,UAAM,CAAKA,EAAM,SAAA,CAAQ,CAAA;AAAA,QAChF,SAAK,CAAAW,MAAA,CAAGX,EAAM,YAAYA,EAAM,SAASS,CAAE;AAAA,MAAA,KAEzCA,CAAE,GAAA,IAAAG,CAAA;;;;"}
@@ -1,13 +1,13 @@
1
- (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._block_17545_2{width:100%;display:flex;gap:4px;justify-content:center;height:72px;align-items:center}._operand_17545_10{border-radius:16px;width:64px;height:32px;display:flex;justify-content:center;align-items:center;text-transform:uppercase;font-weight:600;color:var(--txt-03);border:1px solid var(--color-div-grey);background:transparent;cursor:pointer}._operand_17545_10._active_17545_25{color:var(--txt-01);background:#fff;border:1px solid var(--txt-01)}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
- const o = "_block_17545_2", c = "_operand_17545_10", t = "_active_17545_25", e = {
3
- block: o,
4
- operand: c,
5
- active: t
1
+ (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._block_efv0d_2{width:100%;display:flex;gap:4px;justify-content:center;height:30px;align-items:center}._operand_efv0d_10{border-radius:16px;width:64px;height:32px;display:flex;justify-content:center;align-items:center;text-transform:uppercase;font-weight:600;color:var(--txt-03);border:1px solid var(--color-div-grey);background:transparent;cursor:pointer}._operand_efv0d_10._active_efv0d_25{color:var(--txt-01);background:#fff;border:1px solid var(--txt-01)}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
+ const e = "_block_efv0d_2", o = "_operand_efv0d_10", c = "_active_efv0d_25", t = {
3
+ block: e,
4
+ operand: o,
5
+ active: c
6
6
  };
7
7
  export {
8
- t as active,
9
- o as block,
10
- e as default,
11
- c as operand
8
+ c as active,
9
+ e as block,
10
+ t as default,
11
+ o as operand
12
12
  };
13
13
  //# sourceMappingURL=OperandButton.vue3.js.map
@@ -1,39 +1,48 @@
1
- import { PlAdvancedFilterColumnId, CommonFilterSpec, SourceOptionInfo } from './types';
2
1
  import { ListOptionBase } from '@platforma-sdk/model';
2
+ import { SUPPORTED_FILTER_TYPES } from './constants';
3
+ import { PlAdvancedFilterColumnId, RootFilter, SourceOptionInfo } from './types';
3
4
  type __VLS_Props = {
4
5
  /** List of ids of sources (columns, axes) that can be selected in filters */
5
6
  items: SourceOptionInfo[];
7
+ /** List of supported filter types */
8
+ supportedFilters?: typeof SUPPORTED_FILTER_TYPES;
6
9
  /** If true - new filter can be added by droppind element into filter group; else new column is added by button click */
7
10
  enableDnd?: boolean;
11
+ /** If true - "Add group" button is shown below the filter groups */
12
+ enableAddGroupButton?: boolean;
8
13
  /** Loading function for unique values for Equal/InSet filters and fixed axes options. */
9
14
  getSuggestOptions: (params: {
10
15
  columnId: PlAdvancedFilterColumnId;
11
- searchStr: string;
12
- axisIdx?: number;
13
- }) => (Promise<ListOptionBase<string | number>[]>) | ((params: {
14
- columnId: PlAdvancedFilterColumnId;
15
- searchStr: string;
16
16
  axisIdx?: number;
17
- }) => ListOptionBase<string | number>[]);
18
- /** Loading function for label of selected value for Equal/InSet filters and fixed axes options. */
19
- getSuggestModel: (params: {
20
- columnId: PlAdvancedFilterColumnId;
21
17
  searchStr: string;
22
- axisIdx?: number;
23
- }) => (Promise<ListOptionBase<string | number>>) | ((params: {
24
- columnId: PlAdvancedFilterColumnId;
25
- searchStr: string;
26
- axisIdx?: number;
27
- }) => ListOptionBase<string | number>);
18
+ searchType: 'value' | 'label';
19
+ }) => ListOptionBase<string | number>[] | Promise<ListOptionBase<string | number>[]>;
28
20
  };
29
21
  type __VLS_PublicProps = {
30
- modelValue: CommonFilterSpec;
22
+ 'filters': RootFilter;
31
23
  } & __VLS_Props;
32
- declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
33
- "update:modelValue": (value: CommonFilterSpec) => any;
24
+ declare function __VLS_template(): {
25
+ attrs: Partial<{}>;
26
+ slots: {
27
+ 'add-group-buttons'?(_: {}): any;
28
+ };
29
+ refs: {};
30
+ rootEl: HTMLDivElement;
31
+ };
32
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
33
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
34
+ "update:filters": (value: RootFilter) => any;
34
35
  }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
35
- "onUpdate:modelValue"?: ((value: CommonFilterSpec) => any) | undefined;
36
+ "onUpdate:filters"?: ((value: RootFilter) => any) | undefined;
36
37
  }>, {
37
38
  enableDnd: boolean;
39
+ supportedFilters: typeof SUPPORTED_FILTER_TYPES;
40
+ enableAddGroupButton: boolean;
38
41
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
42
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
39
43
  export default _default;
44
+ type __VLS_WithTemplateSlots<T, S> = T & {
45
+ new (): {
46
+ $slots: S;
47
+ };
48
+ };
@@ -1,199 +1,237 @@
1
- import { defineComponent as B, mergeModels as L, useModel as z, computed as A, createElementBlock as g, openBlock as r, createVNode as a, unref as l, withCtx as i, normalizeClass as f, createElementVNode as y, createBlock as D, createTextVNode as u, Fragment as w, renderList as R } from "vue";
2
- import q from "./SingleFilter.vue.js";
3
- import { PlElementList as T, PlCheckbox as C, PlBtnSecondary as $, PlIcon16 as F } from "@milaboratories/uikit";
4
- import x from "./OperandButton.vue.js";
5
- import { DEFAULT_FILTERS as I, DEFAULT_FILTER_TYPE as W } from "./constants.js";
6
- import { useInnerModel as Y, createNewGroup as j, isValidColumnId as U, toOuterModel as H, toInnerModel as J } from "./utils.js";
7
- const K = ["onDrop"], te = /* @__PURE__ */ B({
1
+ import { defineComponent as I, mergeModels as M, useModel as x, computed as Y, createElementBlock as y, openBlock as r, createVNode as b, createBlock as v, createCommentVNode as F, unref as p, withCtx as l, normalizeClass as f, createElementVNode as D, createTextVNode as g, Fragment as q, renderList as W, renderSlot as j, toRaw as H } from "vue";
2
+ import { PlElementList as $, PlCheckbox as J, PlBtnSecondary as B } from "@milaboratories/uikit";
3
+ import K from "./FilterEditor.vue.js";
4
+ import Q from "./OperandButton.vue.js";
5
+ import { SUPPORTED_FILTER_TYPES as X, DEFAULT_FILTERS as Z, DEFAULT_FILTER_TYPE as _ } from "./constants.js";
6
+ import { getNewId as R, createNewGroup as ee, isValidColumnId as N } from "./utils.js";
7
+ const te = ["onDrop"], de = /* @__PURE__ */ I({
8
8
  __name: "PlAdvancedFilter",
9
- props: /* @__PURE__ */ L({
9
+ props: /* @__PURE__ */ M({
10
10
  items: {},
11
+ supportedFilters: { default: () => X },
11
12
  enableDnd: { type: Boolean, default: !1 },
12
- getSuggestOptions: {},
13
- getSuggestModel: {}
13
+ enableAddGroupButton: { type: Boolean, default: !1 },
14
+ getSuggestOptions: {}
14
15
  }, {
15
- modelValue: { required: !0 },
16
- modelModifiers: {}
16
+ filters: { required: !0 },
17
+ filtersModifiers: {}
17
18
  }),
18
- emits: ["update:modelValue"],
19
- setup(d) {
20
- const E = d, M = z(d, "modelValue"), s = Y(J, H, M), c = A(() => {
21
- var o;
22
- return (o = E.items[0]) == null ? void 0 : o.id;
23
- }), b = [{
24
- id: "empty",
25
- not: !1,
26
- operand: "and",
19
+ emits: ["update:filters"],
20
+ setup(m) {
21
+ const i = x(m, "filters"), s = m, G = Y(() => {
22
+ var e;
23
+ return (e = s.items[0]) == null ? void 0 : e.id;
24
+ }), P = [{
25
+ id: -1,
26
+ type: "and",
27
27
  filters: [],
28
- expanded: !0
28
+ isExpanded: !0
29
29
  }];
30
- function V(o, e) {
31
- s.value.groups[o].filters.push({
32
- ...I[W],
33
- column: e
30
+ function d() {
31
+ if (i.value.type !== "or" && i.value.type !== "and")
32
+ throw new Error('Invalid model structure, expected root to be "or" or "and" group');
33
+ return i.value.filters;
34
+ }
35
+ function A(e) {
36
+ const o = d()[e];
37
+ if (o.type !== "and" && o.type !== "or" && o.type !== "not")
38
+ throw new Error('Invalid group structure, expected "and", "or" or "not" group');
39
+ return o;
40
+ }
41
+ function k(e) {
42
+ const t = A(e);
43
+ if (t.type !== "not")
44
+ return t;
45
+ if (t.filter.type !== "and" && t.filter.type !== "or")
46
+ throw new Error('Invalid group structure, expected "and" or "or" group inside "not"');
47
+ return t.filter;
48
+ }
49
+ function w(e, t) {
50
+ k(e).filters.push({
51
+ ...Z[_],
52
+ column: t,
53
+ id: R(),
54
+ isExpanded: !0
34
55
  });
35
56
  }
36
- function P(o, e) {
37
- s.value.groups[o].filters.length === 1 && e === 0 ? N(o) : s.value.groups[o].filters = s.value.groups[o].filters.filter((t, n) => n !== e);
57
+ function U(e, t) {
58
+ const o = k(e);
59
+ o.filters.length === 1 && t === 0 ? S(e) : o.filters.splice(t, 1);
60
+ }
61
+ function L(e) {
62
+ const t = d(), o = t[e];
63
+ if (o.type === "not") {
64
+ if (o.filter.type !== "and" && o.filter.type !== "or")
65
+ throw new Error('Invalid group structure, expected "and" or "or" group inside "not"');
66
+ t[e] = o.filter;
67
+ } else {
68
+ const n = t[e].type;
69
+ if (n !== "and" && n !== "or" && n !== "not")
70
+ throw new Error('Invalid group structure, expected "and", "or" or "not" group');
71
+ t[e] = {
72
+ id: R(),
73
+ isExpanded: !0,
74
+ type: "not",
75
+ filter: t[e]
76
+ };
77
+ }
38
78
  }
39
- function N(o) {
40
- s.value.groups = s.value.groups.filter((e, t) => t !== o);
79
+ function u(e) {
80
+ return e.type === "not" ? e.filter : e;
41
81
  }
42
- function k(o) {
43
- const e = j(o);
44
- s.value.groups.push(e);
82
+ function S(e) {
83
+ d().splice(e, 1);
45
84
  }
46
- function O(o, e) {
85
+ function C(e) {
86
+ const t = ee(e);
87
+ d().push(t);
88
+ }
89
+ function V(e, t) {
90
+ const o = t.dataTransfer;
91
+ if (o != null && o.getData("text/plain")) {
92
+ const n = o.getData("text/plain");
93
+ N(n) && w(e, n);
94
+ }
95
+ }
96
+ function O(e) {
47
97
  const t = e.dataTransfer;
48
98
  if (t != null && t.getData("text/plain")) {
49
- const n = t.getData("text/plain");
50
- U(n) && V(o, n);
99
+ const o = t.getData("text/plain");
100
+ N(o) && C(o);
51
101
  }
52
102
  }
53
- function S(o) {
54
- const e = o.dataTransfer;
55
- if (e != null && e.getData("text/plain")) {
56
- const t = e.getData("text/plain");
57
- U(t) && k(t);
58
- }
103
+ function T(e) {
104
+ e.preventDefault();
59
105
  }
60
- function G(o) {
61
- o.preventDefault();
106
+ function h(e) {
107
+ if (e.type === "and" || e.type === "or" || e.type === "not")
108
+ throw new Error("Invalid filter structure, expected leaf filter");
109
+ return e;
62
110
  }
63
- return (o, e) => (r(), g("div", null, [
64
- a(l(T), {
65
- items: l(s).groups,
66
- "onUpdate:items": e[0] || (e[0] = (t) => l(s).groups = t),
67
- "get-item-key": (t) => t.id,
68
- "item-class": o.$style.filterGroup,
69
- "item-class-content": o.$style.filterGroupContent,
70
- "item-class-title": o.$style.filterGroupTitle,
71
- "is-expanded": (t) => t.expanded,
111
+ function z(e, t, o) {
112
+ e[t] = H(o);
113
+ }
114
+ return (e, t) => (r(), y("div", null, [
115
+ b(p($), {
116
+ items: i.value.filters,
117
+ "onUpdate:items": t[0] || (t[0] = (o) => i.value.filters = o),
118
+ "get-item-key": (o) => o.id,
119
+ "item-class": e.$style.filterGroup,
120
+ "item-class-content": e.$style.filterGroupContent,
121
+ "item-class-title": e.$style.filterGroupTitle,
122
+ "is-expanded": (o) => o.isExpanded === !0,
123
+ "on-expand": (o) => {
124
+ o.isExpanded = !o.isExpanded;
125
+ },
72
126
  disableDragging: !1,
73
127
  disableRemoving: !1,
74
128
  disableToggling: !0,
75
- disablePinning: !0,
76
- "on-expand": (t) => {
77
- t.expanded = !t.expanded;
78
- }
129
+ disablePinning: !0
79
130
  }, {
80
- "item-title": i(() => [...e[3] || (e[3] = [
81
- u(" Filter group ", -1)
131
+ "item-title": l(() => [...t[2] || (t[2] = [
132
+ g(" Filter group ", -1)
82
133
  ])]),
83
- "item-content": i(({ item: t, index: n }) => [
84
- y("div", {
85
- class: f(o.$style.groupContent),
134
+ "item-content": l(({ item: o, index: n }) => [
135
+ D("div", {
136
+ class: f(e.$style.groupContent),
86
137
  dropzone: "true",
87
- onDrop: (m) => O(n, m),
88
- onDragover: G
138
+ onDrop: (c) => V(n, c),
139
+ onDragover: T
89
140
  }, [
90
- a(l(C), {
91
- modelValue: t.not,
92
- "onUpdate:modelValue": (m) => t.not = m
141
+ b(p(J), {
142
+ "model-value": o.type === "not",
143
+ class: f(e.$style.notCheckbox),
144
+ "onUpdate:modelValue": (c) => L(n)
93
145
  }, {
94
- default: i(() => [...e[4] || (e[4] = [
95
- u("NOT", -1)
146
+ default: l(() => [...t[3] || (t[3] = [
147
+ g("NOT", -1)
96
148
  ])]),
97
149
  _: 1
98
- }, 8, ["modelValue", "onUpdate:modelValue"]),
99
- (r(!0), g(w, null, R(t.filters, (m, p) => (r(), D(q, {
100
- key: p,
101
- modelValue: t.filters[p],
102
- "onUpdate:modelValue": (v) => t.filters[p] = v,
103
- operand: t.operand,
104
- "column-options": d.items,
105
- "get-suggest-model": d.getSuggestModel,
106
- "get-suggest-options": d.getSuggestOptions,
107
- "enable-dnd": d.enableDnd,
108
- "is-last": p === t.filters.length - 1,
109
- "on-change-operand": (v) => t.operand = v,
110
- "on-delete": () => P(n, p)
111
- }, null, 8, ["modelValue", "onUpdate:modelValue", "operand", "column-options", "get-suggest-model", "get-suggest-options", "enable-dnd", "is-last", "on-change-operand", "on-delete"]))), 128)),
112
- d.enableDnd ? (r(), g("div", {
150
+ }, 8, ["model-value", "class", "onUpdate:modelValue"]),
151
+ (r(!0), y(q, null, W(u(o).filters, (c, a) => (r(), v(K, {
152
+ key: a,
153
+ filter: h(u(o).filters[a]),
154
+ operand: u(o).type,
155
+ "column-options": m.items,
156
+ "supported-filters": s.supportedFilters,
157
+ "get-suggest-options": s.getSuggestOptions,
158
+ "enable-dnd": !!s.enableDnd,
159
+ "is-last": a === u(o).filters.length - 1,
160
+ "on-change-operand": (E) => u(o).type = E,
161
+ "on-delete": () => U(n, a),
162
+ "onUpdate:filter": (E) => z(u(o).filters, a, E)
163
+ }, null, 8, ["filter", "operand", "column-options", "supported-filters", "get-suggest-options", "enable-dnd", "is-last", "on-change-operand", "on-delete", "onUpdate:filter"]))), 128)),
164
+ s.enableDnd ? (r(), y("div", {
113
165
  key: 0,
114
- class: f(o.$style.dropzone)
115
- }, [...e[5] || (e[5] = [
116
- y("div", null, "Drop dimensions here", -1)
117
- ])], 2)) : (r(), D(l($), {
166
+ class: f(e.$style.dropzone)
167
+ }, [...t[4] || (t[4] = [
168
+ D("div", null, "Drop dimensions here", -1)
169
+ ])], 2)) : (r(), v(p(B), {
118
170
  key: 1,
119
- onClick: (m) => V(n, c.value)
171
+ icon: "add",
172
+ onClick: (c) => w(n, G.value)
120
173
  }, {
121
- default: i(() => [
122
- a(l(F), {
123
- name: "add",
124
- style: { "margin-right": "8px" }
125
- }),
126
- e[6] || (e[6] = u("Add column ", -1))
127
- ]),
174
+ default: l(() => [...t[5] || (t[5] = [
175
+ g(" Add filter ", -1)
176
+ ])]),
128
177
  _: 1
129
178
  }, 8, ["onClick"]))
130
- ], 42, K)
179
+ ], 42, te)
131
180
  ]),
132
- "item-after": i(({ index: t }) => [
133
- a(x, {
134
- class: f(o.$style.buttonWrapper),
135
- active: l(s).operand,
136
- disabled: t === l(s).groups.length - 1,
137
- "on-select": (n) => l(s).operand = n
138
- }, null, 8, ["class", "active", "disabled", "on-select"])
181
+ "item-after": l(({ index: o }) => [
182
+ s.enableAddGroupButton || o < d().length - 1 ? (r(), v(Q, {
183
+ key: 0,
184
+ class: f(e.$style.buttonWrapper),
185
+ active: i.value.type,
186
+ disabled: o === d().length - 1,
187
+ "on-select": (n) => i.value.type = n
188
+ }, null, 8, ["class", "active", "disabled", "on-select"])) : F("", !0)
139
189
  ]),
140
190
  _: 1
141
191
  }, 8, ["items", "get-item-key", "item-class", "item-class-content", "item-class-title", "is-expanded", "on-expand"]),
142
- a(l(T), {
143
- items: b,
144
- "onUpdate:items": e[2] || (e[2] = (t) => b = t),
145
- "get-item-key": (t) => t.id,
146
- "item-class": o.$style.filterGroup,
147
- "item-class-content": o.$style.filterGroupContent,
148
- "item-class-title": o.$style.filterGroupTitle,
192
+ s.enableAddGroupButton ? (r(), v(p($), {
193
+ key: 0,
194
+ items: P,
195
+ "get-item-key": (o) => o.id,
196
+ "item-class": e.$style.filterGroup,
197
+ "item-class-content": e.$style.filterGroupContent,
198
+ "item-class-title": e.$style.filterGroupTitle,
149
199
  "is-expanded": () => !0,
150
200
  disableDragging: !0,
151
201
  disableRemoving: !0,
152
202
  disableToggling: !0,
153
203
  disablePinning: !0,
154
204
  dropzone: "true",
155
- onDrop: S,
156
- onDragover: G
205
+ onDrop: O,
206
+ onDragover: T
157
207
  }, {
158
- "item-title": i(() => [...e[7] || (e[7] = [
159
- u("Filter group", -1)
208
+ "item-title": l(() => [...t[6] || (t[6] = [
209
+ g("Filter group", -1)
160
210
  ])]),
161
- "item-content": i(({ item: t }) => [
162
- a(l(C), {
163
- modelValue: t.not,
164
- "onUpdate:modelValue": (n) => t.not = n,
165
- disabled: ""
166
- }, {
167
- default: i(() => [...e[8] || (e[8] = [
168
- u("NOT", -1)
169
- ])]),
170
- _: 1
171
- }, 8, ["modelValue", "onUpdate:modelValue"]),
172
- d.enableDnd ? (r(), g("div", {
211
+ "item-content": l(() => [
212
+ m.enableDnd ? (r(), y("div", {
173
213
  key: 0,
174
- class: f(o.$style.dropzone)
175
- }, [...e[9] || (e[9] = [
176
- y("div", null, "Drop dimensions here", -1)
177
- ])], 2)) : (r(), D(l($), {
178
- key: 1,
179
- onClick: e[1] || (e[1] = (n) => k(c.value))
180
- }, {
181
- default: i(() => [
182
- a(l(F), {
183
- name: "add",
184
- style: { "margin-right": "8px" }
185
- }),
186
- e[10] || (e[10] = u("Add column ", -1))
187
- ]),
188
- _: 1
189
- }))
214
+ class: f(e.$style.dropzone)
215
+ }, [...t[7] || (t[7] = [
216
+ D("div", null, "Drop dimensions here", -1)
217
+ ])], 2)) : j(e.$slots, "add-group-buttons", { key: 1 }, () => [
218
+ b(p(B), {
219
+ icon: "add",
220
+ onClick: t[1] || (t[1] = (o) => C(G.value))
221
+ }, {
222
+ default: l(() => [...t[8] || (t[8] = [
223
+ g(" Add filter ", -1)
224
+ ])]),
225
+ _: 1
226
+ })
227
+ ])
190
228
  ]),
191
- _: 1
192
- }, 8, ["get-item-key", "item-class", "item-class-content", "item-class-title"])
229
+ _: 3
230
+ }, 8, ["get-item-key", "item-class", "item-class-content", "item-class-title"])) : F("", !0)
193
231
  ]));
194
232
  }
195
233
  });
196
234
  export {
197
- te as default
235
+ de as default
198
236
  };
199
237
  //# sourceMappingURL=PlAdvancedFilter.vue2.js.map