@platforma-sdk/ui-vue 1.45.35 → 1.45.37
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 +204 -235
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +13 -0
- package/dist/AgGridVue/useAgGridOptions.js +2 -3
- package/dist/AgGridVue/useAgGridOptions.js.map +1 -1
- package/dist/components/BlockLayout.vue2.js +3 -3
- package/dist/components/BlockLayout.vue2.js.map +1 -1
- package/dist/components/BlockLoader.vue.js.map +1 -1
- package/dist/components/LoaderPage.vue.js +2 -2
- package/dist/components/LoaderPage.vue.js.map +1 -1
- package/dist/components/NotFound.vue.js +3 -3
- package/dist/components/NotFound.vue.js.map +1 -1
- package/dist/components/PlAdvancedFilter/OperandButton.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js +73 -73
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/SingleFilter.vue2.js +100 -100
- package/dist/components/PlAdvancedFilter/SingleFilter.vue2.js.map +1 -1
- package/dist/components/PlAgCellFile/PlAgCellFile.vue.js.map +1 -1
- package/dist/components/PlAgCellProgress/PlAgCellProgress.vue.js.map +1 -1
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js +6 -6
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js.map +1 -1
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue.js.map +1 -1
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue.js.map +1 -1
- package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue.js +22 -22
- package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue.js.map +1 -1
- package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue.js +3 -3
- package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +50 -50
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgRowCount.vue.js +7 -8
- package/dist/components/PlAgDataTable/PlAgRowCount.vue.js.map +1 -1
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js +35 -35
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js.map +1 -1
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js +16 -17
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js.map +1 -1
- package/dist/components/PlAgRowNumHeader.vue.js +14 -15
- package/dist/components/PlAgRowNumHeader.vue.js.map +1 -1
- package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js +16 -16
- package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js.map +1 -1
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js +6 -6
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/DynamicForm.vue2.js +57 -57
- package/dist/components/PlAnnotations/components/DynamicForm.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +6 -6
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js.map +1 -1
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js +7 -7
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js.map +1 -1
- package/dist/components/PlBtnExportArchive/Item.vue2.js +23 -23
- package/dist/components/PlBtnExportArchive/Item.vue2.js.map +1 -1
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue2.js.map +1 -1
- package/dist/components/PlBtnExportArchive/Summary.vue2.js +22 -22
- package/dist/components/PlBtnExportArchive/Summary.vue2.js.map +1 -1
- package/dist/components/PlTableFilters/PlTableAddFilterV2.vue.js +9 -9
- package/dist/components/PlTableFilters/PlTableAddFilterV2.vue.js.map +1 -1
- package/dist/components/PlTableFilters/PlTableFilterEntryV2.vue.js +3 -3
- package/dist/components/PlTableFilters/PlTableFilterEntryV2.vue.js.map +1 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js +9 -9
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js.map +1 -1
- package/dist/components/ValueOrErrorsComponent.vue.js.map +1 -1
- package/dist/index.js +48 -50
- package/dist/index.js.map +1 -1
- package/dist/lib.d.ts +0 -1
- package/dist/plugins/Monetization/EndOfPeriod.vue2.js +9 -9
- package/dist/plugins/Monetization/EndOfPeriod.vue2.js.map +1 -1
- package/dist/plugins/Monetization/LimitCard.vue2.js +40 -40
- package/dist/plugins/Monetization/LimitCard.vue2.js.map +1 -1
- package/dist/plugins/Monetization/MonetizationSidebar.vue.js +3 -3
- package/dist/plugins/Monetization/MonetizationSidebar.vue.js.map +1 -1
- package/dist/plugins/Monetization/RunStatus.vue2.js +12 -12
- package/dist/plugins/Monetization/RunStatus.vue2.js.map +1 -1
- package/dist/plugins/Monetization/UserCabinetCard.vue2.js +22 -22
- package/dist/plugins/Monetization/UserCabinetCard.vue2.js.map +1 -1
- package/package.json +7 -8
- package/src/lib.ts +0 -2
- package/dist/assets/multi-sequence-alignment.worker-Cm0gZp19.js +0 -6
- package/dist/assets/multi-sequence-alignment.worker-Cm0gZp19.js.map +0 -1
- package/dist/assets/phylogenetic-tree.worker-4CrExYEo.js +0 -5
- package/dist/assets/phylogenetic-tree.worker-4CrExYEo.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue.d.ts +0 -9
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue.js +0 -10
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue2.js +0 -122
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue2.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue3.js +0 -9
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue3.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Legend.vue.d.ts +0 -6
- package/dist/components/PlMultiSequenceAlignment/Legend.vue.js +0 -10
- package/dist/components/PlMultiSequenceAlignment/Legend.vue.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Legend.vue2.js +0 -28
- package/dist/components/PlMultiSequenceAlignment/Legend.vue2.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Legend.vue3.js +0 -13
- package/dist/components/PlMultiSequenceAlignment/Legend.vue3.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue.d.ts +0 -25
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue.js +0 -10
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue2.js +0 -138
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue2.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue3.js +0 -31
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue3.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue.d.ts +0 -8
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue.js +0 -10
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue2.js +0 -77
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue2.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue3.js +0 -9
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue3.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue.d.ts +0 -71
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue.js +0 -10
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue2.js +0 -224
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue2.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue3.js +0 -9
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue3.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue.d.ts +0 -8
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue.js +0 -10
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue2.js +0 -127
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue2.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue3.js +0 -9
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue3.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue.d.ts +0 -16
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue.js +0 -10
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue2.js +0 -228
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue2.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue3.js +0 -19
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue3.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/cell-size.d.ts +0 -4
- package/dist/components/PlMultiSequenceAlignment/cell-size.js +0 -8
- package/dist/components/PlMultiSequenceAlignment/cell-size.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/chemical-properties.d.ts +0 -44
- package/dist/components/PlMultiSequenceAlignment/chemical-properties.js +0 -132
- package/dist/components/PlMultiSequenceAlignment/chemical-properties.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/data.d.ts +0 -61
- package/dist/components/PlMultiSequenceAlignment/data.js +0 -370
- package/dist/components/PlMultiSequenceAlignment/data.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/index.d.ts +0 -1
- package/dist/components/PlMultiSequenceAlignment/markup.d.ts +0 -16
- package/dist/components/PlMultiSequenceAlignment/markup.js +0 -84
- package/dist/components/PlMultiSequenceAlignment/markup.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/migrations.d.ts +0 -3
- package/dist/components/PlMultiSequenceAlignment/migrations.js +0 -24
- package/dist/components/PlMultiSequenceAlignment/migrations.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/multi-sequence-alignment.worker.d.ts +0 -6
- package/dist/components/PlMultiSequenceAlignment/phylogenetic-tree.worker.d.ts +0 -7
- package/dist/components/PlMultiSequenceAlignment/residue-counts.d.ts +0 -2
- package/dist/components/PlMultiSequenceAlignment/residue-counts.js +0 -13
- package/dist/components/PlMultiSequenceAlignment/residue-counts.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/settings.d.ts +0 -2
- package/dist/components/PlMultiSequenceAlignment/settings.js +0 -9
- package/dist/components/PlMultiSequenceAlignment/settings.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/types.d.ts +0 -5
- package/dist/components/PlMultiSequenceAlignment/useMiPlots.d.ts +0 -4
- package/dist/components/PlMultiSequenceAlignment/useMiPlots.js +0 -19
- package/dist/components/PlMultiSequenceAlignment/useMiPlots.js.map +0 -1
- package/src/components/PlMultiSequenceAlignment/Consensus.vue +0 -165
- package/src/components/PlMultiSequenceAlignment/Legend.vue +0 -44
- package/src/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue +0 -299
- package/src/components/PlMultiSequenceAlignment/PhylogeneticTree.vue +0 -110
- package/src/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue +0 -314
- package/src/components/PlMultiSequenceAlignment/README.md +0 -216
- package/src/components/PlMultiSequenceAlignment/SeqLogo.vue +0 -166
- package/src/components/PlMultiSequenceAlignment/Toolbar.vue +0 -228
- package/src/components/PlMultiSequenceAlignment/cell-size.ts +0 -4
- package/src/components/PlMultiSequenceAlignment/chemical-properties.ts +0 -199
- package/src/components/PlMultiSequenceAlignment/data.ts +0 -661
- package/src/components/PlMultiSequenceAlignment/index.ts +0 -1
- package/src/components/PlMultiSequenceAlignment/markup.ts +0 -141
- package/src/components/PlMultiSequenceAlignment/migrations.ts +0 -46
- package/src/components/PlMultiSequenceAlignment/multi-sequence-alignment.worker.ts +0 -54
- package/src/components/PlMultiSequenceAlignment/phylogenetic-tree.worker.ts +0 -89
- package/src/components/PlMultiSequenceAlignment/residue-counts.ts +0 -124
- package/src/components/PlMultiSequenceAlignment/settings.ts +0 -7
- package/src/components/PlMultiSequenceAlignment/types.ts +0 -3
- package/src/components/PlMultiSequenceAlignment/useMiPlots.ts +0 -23
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
WARN Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
|
|
2
2
|
|
|
3
|
-
> @platforma-sdk/ui-vue@1.45.
|
|
3
|
+
> @platforma-sdk/ui-vue@1.45.37 type-check /home/runner/_work/platforma/platforma/sdk/ui-vue
|
|
4
4
|
> ts-builder types --target browser-lib
|
|
5
5
|
|
|
6
6
|
↳ vue-tsc.js --noEmit --project ./tsconfig.json
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @platforma-sdk/ui-vue
|
|
2
2
|
|
|
3
|
+
## 1.45.37
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [3d915f9]
|
|
8
|
+
- @milaboratories/uikit@2.6.3
|
|
9
|
+
|
|
10
|
+
## 1.45.36
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- d5e72cf: remove PlMultiSequenceAlignment
|
|
15
|
+
|
|
3
16
|
## 1.45.35
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
|
@@ -39,7 +39,6 @@ import N from "../components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js";
|
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
|
|
42
|
-
import "../components/PlMultiSequenceAlignment/data.js";
|
|
43
42
|
import "@zip.js/zip.js";
|
|
44
43
|
import "canonicalize";
|
|
45
44
|
import "../composition/fileContent.js";
|
|
@@ -196,7 +195,7 @@ class R {
|
|
|
196
195
|
}
|
|
197
196
|
}
|
|
198
197
|
o = new WeakMap();
|
|
199
|
-
function
|
|
198
|
+
function mt(r) {
|
|
200
199
|
const t = C(), e = y(() => {
|
|
201
200
|
var u;
|
|
202
201
|
const s = {
|
|
@@ -250,6 +249,6 @@ function ut(r) {
|
|
|
250
249
|
}, { deep: !0, immediate: !0 }), { gridOptions: a, gridApi: t };
|
|
251
250
|
}
|
|
252
251
|
export {
|
|
253
|
-
|
|
252
|
+
mt as useAgGridOptions
|
|
254
253
|
};
|
|
255
254
|
//# sourceMappingURL=useAgGridOptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAgGridOptions.js","sources":["../../src/AgGridVue/useAgGridOptions.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ColGroupDef, GridApi, GridOptions, GridReadyEvent, ICellRendererParams, RowSelectionOptions, ValueSetterParams } from 'ag-grid-enterprise';\nimport type { Component } from 'vue';\nimport { computed, shallowRef, watch } from 'vue';\nimport { AgGridTheme } from '../aggrid';\nimport { autoSizeRowNumberColumn, makeRowNumberColDef, PlAgOverlayLoading, type PlAgOverlayLoadingParams } from '../components/PlAgDataTable';\nimport { PlAgOverlayNoRows } from '../components/PlAgDataTable';\nimport { createAgGridColDef, type ColDefExtended } from './createAgGridColDef';\nimport { whenever } from '@vueuse/core';\nimport { PlAgCellFile } from '../components/PlAgCellFile';\nimport { PlAgChartStackedBarCell } from '../components/PlAgChartStackedBarCell';\nimport { PlAgChartHistogramCell } from '../components/PlAgChartHistogramCell';\nimport type { ImportFileHandle } from '@platforma-sdk/model';\nimport type { ImportProgress } from '@platforma-sdk/model';\nimport { PlAgCellStatusTag } from '../components/PlAgCellStatusTag';\ninterface GridOptionsExtended<TData = any> extends Omit<GridOptions<TData>, 'columnDefs' | 'loadingOverlayComponentParams'> {\n /**\n * Array of Column / Column Group definitions.\n */\n columnDefs?: (ColDefExtended<TData> | ColGroupDef<TData>)[] | null;\n /**\n * Show row numbers column\n */\n rowNumbersColumn?: boolean;\n /**\n * Loading overlay text\n */\n loadingText?: string;\n /**\n * Not ready overlay (No datasource). Takes priority over \"loading\"\n */\n notReady?: boolean;\n /**\n * \"No datasource\" by default\n */\n notReadyText?: string;\n /**\n * Use \"transparent\" to make table headers visible below the loading layer (experimental)\n */\n loadingOverlayType?: 'transparent' | undefined;\n /**\n * Override standard 'Empty' text for the \"no rows\" overlay\n */\n noRowsText?: string;\n /**\n * @deprecated Use loading, notReady, loadingText, loadingOverlayType instead\n */\n loadingOverlayComponentParams?: never;\n}\n\n// @TODO (super simple builder for now)\nclass Builder<TData> {\n #options: GridOptionsExtended<TData> = {};\n\n public options(options: GridOptionsExtended<TData>) {\n this.#options = Object.assign({}, this.#options, options);\n return this;\n }\n\n private get columnDefs() {\n return this.#options.columnDefs ?? [];\n }\n\n /**\n * Set default column definition\n * @param def - column definition\n * @returns this\n */\n public setDefaultColDef(def: ColDefExtended<TData>) {\n this.#options.defaultColDef = def;\n return this;\n }\n\n /**\n * Show loading overlay\n * @param loading\n * @returns this\n */\n public setLoading(loading?: boolean) {\n this.#options.loading = loading;\n return this;\n }\n\n /**\n * Set loading overlay custom text (default is \"Loading\")\n * @param loadingText\n * @returns this\n */\n public setLoadingText(loadingText?: string) {\n this.#options.loadingText = loadingText;\n return this;\n }\n\n /**\n * Show \"not ready overlay\n * @param notReady\n * @returns this\n */\n public setNotReady(notReady?: boolean) {\n this.#options.notReady = notReady;\n return this;\n }\n\n /**\n * Set loading overlay type\n * @param type\n * @returns this\n */\n public setLoadingOverlayType(type?: 'transparent') {\n this.#options.loadingOverlayType = type;\n return this;\n }\n\n /**\n * Set \"not ready\" text\n * @param notReadyText\n * @returns this\n */\n public setNotReadyText(notReadyText?: string) {\n this.#options.notReadyText = notReadyText;\n return this;\n }\n\n /**\n * Set \"no rows\" text when there are no rows (default is \"Empty\")\n * @param noRowsText\n * @returns this\n */\n public setNoRowsText(noRowsText?: string) {\n this.#options.noRowsText = noRowsText;\n return this;\n }\n\n /**\n * Set row selection options\n * @param rowSelection\n * @returns this\n */\n public setRowSelection(rowSelection?: RowSelectionOptions) {\n this.#options.rowSelection = rowSelection;\n return this;\n }\n\n /**\n * Set row data\n * @param rowData\n * @returns this\n */\n public setRowData(rowData?: TData[]) {\n this.#options.rowData = rowData;\n return this;\n }\n\n /**\n * Set components\n * @param components\n * @returns this\n */\n public setComponents(components?: Record<string, Component>) {\n this.#options.components = components;\n return this;\n }\n\n /**\n * Set an option\n * @param key - option key\n * @param value - option value\n * @returns this\n */\n public setOption<K extends keyof GridOptionsExtended<TData>>(key: K, value: GridOptionsExtended<TData>[K]) {\n this.#options[key] = value;\n return this;\n }\n\n /**\n * Add an extended column definition\n * @param def - column definition\n * @returns this\n */\n public column<TValue = any>(def: ColDefExtended<TData, TValue>) {\n this.#options.columnDefs = [...this.columnDefs, def];\n return this;\n }\n\n /**\n * Show row numbers column\n * @param show - show or hide row numbers column\n * @returns this\n */\n public columnRowNumbers(show: boolean = true) {\n this.#options.rowNumbersColumn = show;\n return this;\n }\n\n /**\n * Add a file input column\n * @param def - column definition\n * @param cb - callback to set params for the file input cell renderer\n * @returns this\n */\n public columnFileInput<TValue = any>(\n def: ColDefExtended<TData, TValue> & {\n /**\n * Allowed file extensions (like ['fastq.gz'])\n */\n extensions?: string[];\n /**\n * The resolveProgress function is an optional input parameter for the component\n * that allows tracking the file upload progress in real-time.\n * By passing resolveProgress, you can ensure that the component\n * displays accurate progress values for each file as they upload.\n * How to use it in AgGrid\n * cellRendererParams: {\n * resolveProgress: (cellData) => {\n * const progresses = app.progresses;\n * if (!cellData.value.importFileHandle) return undefined;\n * else return progresses[cellData.value.importFileHandle];\n * }\n * }\n */\n resolveImportProgress?: (cellData: ICellRendererParams<TData, TValue>) => ImportProgress | undefined;\n\n /**\n * The resolveFileHandle function is an optional input parameter for the component\n * that allows tracking the file upload progress in real-time.\n * By passing resolveFileHandle, you can ensure that the component\n * displays accurate progress values for each file as they upload.\n * How to use it in AgGrid\n * cellRendererParams: {\n * resolveFileHandle: (cellData) => {\n * return cellData.value.importFileHandle;\n * }\n * }\n */\n resolveImportFileHandle?: (cellData: ICellRendererParams<TData, TValue>) => ImportFileHandle | undefined;\n\n setImportFileHandle?: (d: ValueSetterParams<TData, ImportFileHandle | undefined>) => void;\n }) {\n return this.column(Object.assign({\n cellRenderer: 'PlAgCellFile',\n headerComponentParams: { type: 'File' },\n cellStyle: { padding: 0 },\n valueSetter: (d: ValueSetterParams<TData, ImportFileHandle | undefined>) => {\n def.setImportFileHandle?.(d);\n return true;\n },\n cellRendererSelector: (cellData: ICellRendererParams<TData, TValue>) => {\n return {\n component: 'PlAgCellFile',\n params: {\n extensions: def.extensions,\n value: def.resolveImportFileHandle?.(cellData),\n resolveProgress: () => {\n return def.resolveImportProgress?.(cellData);\n },\n },\n };\n },\n }, def));\n }\n\n public build() {\n return this.#options;\n }\n}\n\n// Simple helper to use like column<string> in grid options literal\ntype ColumnFunc<TData> = <TValue>(def: ColDefExtended<TData, TValue>) => ColDefExtended<TData, TValue>;\n\n/**\n * Returns a set of Ag Grid options along with a reference to the Ag Grid API.\n * (This is a fast prototype)\n *\n * @example\n * ```ts\n * const { gridOptions, gridApi } = useAgGridOptions(() => ({\n * // custom grid options here\n * }));\n *\n * // Usage in a template (v-bind is required!)\n * <template>\n * <AgGridVue :style=\"{ height: '100%' }\" v-bind=\"gridOptions\" />\n * </template>\n * ```\n */\nexport function useAgGridOptions<TData>(\n factory: (context: { builder: Builder<TData>; column: ColumnFunc<TData> }) => Builder<TData> | GridOptionsExtended<TData>,\n) {\n const gridApi = shallowRef<GridApi>();\n\n const extOptions = computed<GridOptionsExtended>(() => {\n const def: GridOptionsExtended<TData> = {\n theme: AgGridTheme,\n loadingOverlayComponent: PlAgOverlayLoading,\n noRowsOverlayComponent: PlAgOverlayNoRows,\n onGridReady: (e: GridReadyEvent) => {\n gridApi.value = e.api;\n autoSizeRowNumberColumn(e.api); // @TODO\n },\n };\n\n const column = <TValue>(def: ColDefExtended<TData, TValue>) => {\n return def;\n };\n\n const result = factory({ builder: new Builder(), column });\n\n const options = Object.assign({}, def, result instanceof Builder ? result.build() : result);\n\n if (options.rowNumbersColumn) {\n options.columnDefs = [makeRowNumberColDef(), ...(options.columnDefs ?? [])];\n }\n\n if (options.noRowsText) {\n options.noRowsOverlayComponentParams = {\n text: options.noRowsText,\n };\n }\n\n if ('loadingOverlayComponentParams' in options) {\n console.warn('useAgGridOptions: remove loadingOverlayComponentParams from options, use loading, notReady, loadingText, loadingOverlayType instead');\n }\n\n options.loading = options.notReady || options.loading;\n\n options.columnDefs = options.columnDefs?.map((it) => createAgGridColDef(it));\n\n // Register all special components\n options.components = Object.assign({}, options.components ?? {}, {\n PlAgCellFile,\n PlAgChartStackedBarCell,\n PlAgChartHistogramCell,\n PlAgCellStatusTag,\n });\n\n return options;\n });\n\n const gridOptions = computed<GridOptions>(() => {\n const options = extOptions.value;\n\n return {\n ...options,\n loadingOverlayComponentParams: {\n notReady: options.notReady,\n notReadyText: options.notReadyText,\n overlayType: options.loadingOverlayType,\n } satisfies PlAgOverlayLoadingParams,\n };\n });\n\n whenever(() => extOptions.value.rowNumbersColumn, () => {\n if (gridApi.value) {\n autoSizeRowNumberColumn(gridApi.value);\n }\n });\n\n watch([\n () => extOptions.value.notReady,\n () => extOptions.value.loading,\n ], ([notReady, loading]) => {\n const loadingOverlayComponentParams = {\n notReady,\n // we probably don't need to update the parameters below\n notReadyText: extOptions.value.notReadyText,\n overlayType: extOptions.value.loadingOverlayType,\n loadingText: extOptions.value.loadingText,\n } satisfies PlAgOverlayLoadingParams;\n\n // Hack to apply loadingOverlayComponentParams\n gridApi.value?.updateGridOptions({\n loading: !loading,\n loadingOverlayComponentParams,\n });\n\n gridApi.value?.updateGridOptions({\n loading,\n loadingOverlayComponentParams,\n });\n }, { deep: true, immediate: true });\n\n return { gridOptions, gridApi };\n};\n"],"names":["Builder","__privateAdd","_options","options","__privateSet","__privateGet","def","loading","loadingText","notReady","type","notReadyText","noRowsText","rowSelection","rowData","components","key","value","show","d","_a","cellData","useAgGridOptions","factory","gridApi","shallowRef","extOptions","computed","AgGridTheme","PlAgOverlayLoading","PlAgOverlayNoRows","e","autoSizeRowNumberColumn","column","result","makeRowNumberColDef","it","createAgGridColDef","PlAgCellFile","PlAgChartStackedBarCell","PlAgChartHistogramCell","PlAgCellStatusTag","gridOptions","whenever","watch","loadingOverlayComponentParams","_b"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useAgGridOptions.js","sources":["../../src/AgGridVue/useAgGridOptions.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ColGroupDef, GridApi, GridOptions, GridReadyEvent, ICellRendererParams, RowSelectionOptions, ValueSetterParams } from 'ag-grid-enterprise';\nimport type { Component } from 'vue';\nimport { computed, shallowRef, watch } from 'vue';\nimport { AgGridTheme } from '../aggrid';\nimport { autoSizeRowNumberColumn, makeRowNumberColDef, PlAgOverlayLoading, type PlAgOverlayLoadingParams } from '../components/PlAgDataTable';\nimport { PlAgOverlayNoRows } from '../components/PlAgDataTable';\nimport { createAgGridColDef, type ColDefExtended } from './createAgGridColDef';\nimport { whenever } from '@vueuse/core';\nimport { PlAgCellFile } from '../components/PlAgCellFile';\nimport { PlAgChartStackedBarCell } from '../components/PlAgChartStackedBarCell';\nimport { PlAgChartHistogramCell } from '../components/PlAgChartHistogramCell';\nimport type { ImportFileHandle } from '@platforma-sdk/model';\nimport type { ImportProgress } from '@platforma-sdk/model';\nimport { PlAgCellStatusTag } from '../components/PlAgCellStatusTag';\ninterface GridOptionsExtended<TData = any> extends Omit<GridOptions<TData>, 'columnDefs' | 'loadingOverlayComponentParams'> {\n /**\n * Array of Column / Column Group definitions.\n */\n columnDefs?: (ColDefExtended<TData> | ColGroupDef<TData>)[] | null;\n /**\n * Show row numbers column\n */\n rowNumbersColumn?: boolean;\n /**\n * Loading overlay text\n */\n loadingText?: string;\n /**\n * Not ready overlay (No datasource). Takes priority over \"loading\"\n */\n notReady?: boolean;\n /**\n * \"No datasource\" by default\n */\n notReadyText?: string;\n /**\n * Use \"transparent\" to make table headers visible below the loading layer (experimental)\n */\n loadingOverlayType?: 'transparent' | undefined;\n /**\n * Override standard 'Empty' text for the \"no rows\" overlay\n */\n noRowsText?: string;\n /**\n * @deprecated Use loading, notReady, loadingText, loadingOverlayType instead\n */\n loadingOverlayComponentParams?: never;\n}\n\n// @TODO (super simple builder for now)\nclass Builder<TData> {\n #options: GridOptionsExtended<TData> = {};\n\n public options(options: GridOptionsExtended<TData>) {\n this.#options = Object.assign({}, this.#options, options);\n return this;\n }\n\n private get columnDefs() {\n return this.#options.columnDefs ?? [];\n }\n\n /**\n * Set default column definition\n * @param def - column definition\n * @returns this\n */\n public setDefaultColDef(def: ColDefExtended<TData>) {\n this.#options.defaultColDef = def;\n return this;\n }\n\n /**\n * Show loading overlay\n * @param loading\n * @returns this\n */\n public setLoading(loading?: boolean) {\n this.#options.loading = loading;\n return this;\n }\n\n /**\n * Set loading overlay custom text (default is \"Loading\")\n * @param loadingText\n * @returns this\n */\n public setLoadingText(loadingText?: string) {\n this.#options.loadingText = loadingText;\n return this;\n }\n\n /**\n * Show \"not ready overlay\n * @param notReady\n * @returns this\n */\n public setNotReady(notReady?: boolean) {\n this.#options.notReady = notReady;\n return this;\n }\n\n /**\n * Set loading overlay type\n * @param type\n * @returns this\n */\n public setLoadingOverlayType(type?: 'transparent') {\n this.#options.loadingOverlayType = type;\n return this;\n }\n\n /**\n * Set \"not ready\" text\n * @param notReadyText\n * @returns this\n */\n public setNotReadyText(notReadyText?: string) {\n this.#options.notReadyText = notReadyText;\n return this;\n }\n\n /**\n * Set \"no rows\" text when there are no rows (default is \"Empty\")\n * @param noRowsText\n * @returns this\n */\n public setNoRowsText(noRowsText?: string) {\n this.#options.noRowsText = noRowsText;\n return this;\n }\n\n /**\n * Set row selection options\n * @param rowSelection\n * @returns this\n */\n public setRowSelection(rowSelection?: RowSelectionOptions) {\n this.#options.rowSelection = rowSelection;\n return this;\n }\n\n /**\n * Set row data\n * @param rowData\n * @returns this\n */\n public setRowData(rowData?: TData[]) {\n this.#options.rowData = rowData;\n return this;\n }\n\n /**\n * Set components\n * @param components\n * @returns this\n */\n public setComponents(components?: Record<string, Component>) {\n this.#options.components = components;\n return this;\n }\n\n /**\n * Set an option\n * @param key - option key\n * @param value - option value\n * @returns this\n */\n public setOption<K extends keyof GridOptionsExtended<TData>>(key: K, value: GridOptionsExtended<TData>[K]) {\n this.#options[key] = value;\n return this;\n }\n\n /**\n * Add an extended column definition\n * @param def - column definition\n * @returns this\n */\n public column<TValue = any>(def: ColDefExtended<TData, TValue>) {\n this.#options.columnDefs = [...this.columnDefs, def];\n return this;\n }\n\n /**\n * Show row numbers column\n * @param show - show or hide row numbers column\n * @returns this\n */\n public columnRowNumbers(show: boolean = true) {\n this.#options.rowNumbersColumn = show;\n return this;\n }\n\n /**\n * Add a file input column\n * @param def - column definition\n * @param cb - callback to set params for the file input cell renderer\n * @returns this\n */\n public columnFileInput<TValue = any>(\n def: ColDefExtended<TData, TValue> & {\n /**\n * Allowed file extensions (like ['fastq.gz'])\n */\n extensions?: string[];\n /**\n * The resolveProgress function is an optional input parameter for the component\n * that allows tracking the file upload progress in real-time.\n * By passing resolveProgress, you can ensure that the component\n * displays accurate progress values for each file as they upload.\n * How to use it in AgGrid\n * cellRendererParams: {\n * resolveProgress: (cellData) => {\n * const progresses = app.progresses;\n * if (!cellData.value.importFileHandle) return undefined;\n * else return progresses[cellData.value.importFileHandle];\n * }\n * }\n */\n resolveImportProgress?: (cellData: ICellRendererParams<TData, TValue>) => ImportProgress | undefined;\n\n /**\n * The resolveFileHandle function is an optional input parameter for the component\n * that allows tracking the file upload progress in real-time.\n * By passing resolveFileHandle, you can ensure that the component\n * displays accurate progress values for each file as they upload.\n * How to use it in AgGrid\n * cellRendererParams: {\n * resolveFileHandle: (cellData) => {\n * return cellData.value.importFileHandle;\n * }\n * }\n */\n resolveImportFileHandle?: (cellData: ICellRendererParams<TData, TValue>) => ImportFileHandle | undefined;\n\n setImportFileHandle?: (d: ValueSetterParams<TData, ImportFileHandle | undefined>) => void;\n }) {\n return this.column(Object.assign({\n cellRenderer: 'PlAgCellFile',\n headerComponentParams: { type: 'File' },\n cellStyle: { padding: 0 },\n valueSetter: (d: ValueSetterParams<TData, ImportFileHandle | undefined>) => {\n def.setImportFileHandle?.(d);\n return true;\n },\n cellRendererSelector: (cellData: ICellRendererParams<TData, TValue>) => {\n return {\n component: 'PlAgCellFile',\n params: {\n extensions: def.extensions,\n value: def.resolveImportFileHandle?.(cellData),\n resolveProgress: () => {\n return def.resolveImportProgress?.(cellData);\n },\n },\n };\n },\n }, def));\n }\n\n public build() {\n return this.#options;\n }\n}\n\n// Simple helper to use like column<string> in grid options literal\ntype ColumnFunc<TData> = <TValue>(def: ColDefExtended<TData, TValue>) => ColDefExtended<TData, TValue>;\n\n/**\n * Returns a set of Ag Grid options along with a reference to the Ag Grid API.\n * (This is a fast prototype)\n *\n * @example\n * ```ts\n * const { gridOptions, gridApi } = useAgGridOptions(() => ({\n * // custom grid options here\n * }));\n *\n * // Usage in a template (v-bind is required!)\n * <template>\n * <AgGridVue :style=\"{ height: '100%' }\" v-bind=\"gridOptions\" />\n * </template>\n * ```\n */\nexport function useAgGridOptions<TData>(\n factory: (context: { builder: Builder<TData>; column: ColumnFunc<TData> }) => Builder<TData> | GridOptionsExtended<TData>,\n) {\n const gridApi = shallowRef<GridApi>();\n\n const extOptions = computed<GridOptionsExtended>(() => {\n const def: GridOptionsExtended<TData> = {\n theme: AgGridTheme,\n loadingOverlayComponent: PlAgOverlayLoading,\n noRowsOverlayComponent: PlAgOverlayNoRows,\n onGridReady: (e: GridReadyEvent) => {\n gridApi.value = e.api;\n autoSizeRowNumberColumn(e.api); // @TODO\n },\n };\n\n const column = <TValue>(def: ColDefExtended<TData, TValue>) => {\n return def;\n };\n\n const result = factory({ builder: new Builder(), column });\n\n const options = Object.assign({}, def, result instanceof Builder ? result.build() : result);\n\n if (options.rowNumbersColumn) {\n options.columnDefs = [makeRowNumberColDef(), ...(options.columnDefs ?? [])];\n }\n\n if (options.noRowsText) {\n options.noRowsOverlayComponentParams = {\n text: options.noRowsText,\n };\n }\n\n if ('loadingOverlayComponentParams' in options) {\n console.warn('useAgGridOptions: remove loadingOverlayComponentParams from options, use loading, notReady, loadingText, loadingOverlayType instead');\n }\n\n options.loading = options.notReady || options.loading;\n\n options.columnDefs = options.columnDefs?.map((it) => createAgGridColDef(it));\n\n // Register all special components\n options.components = Object.assign({}, options.components ?? {}, {\n PlAgCellFile,\n PlAgChartStackedBarCell,\n PlAgChartHistogramCell,\n PlAgCellStatusTag,\n });\n\n return options;\n });\n\n const gridOptions = computed<GridOptions>(() => {\n const options = extOptions.value;\n\n return {\n ...options,\n loadingOverlayComponentParams: {\n notReady: options.notReady,\n notReadyText: options.notReadyText,\n overlayType: options.loadingOverlayType,\n } satisfies PlAgOverlayLoadingParams,\n };\n });\n\n whenever(() => extOptions.value.rowNumbersColumn, () => {\n if (gridApi.value) {\n autoSizeRowNumberColumn(gridApi.value);\n }\n });\n\n watch([\n () => extOptions.value.notReady,\n () => extOptions.value.loading,\n ], ([notReady, loading]) => {\n const loadingOverlayComponentParams = {\n notReady,\n // we probably don't need to update the parameters below\n notReadyText: extOptions.value.notReadyText,\n overlayType: extOptions.value.loadingOverlayType,\n loadingText: extOptions.value.loadingText,\n } satisfies PlAgOverlayLoadingParams;\n\n // Hack to apply loadingOverlayComponentParams\n gridApi.value?.updateGridOptions({\n loading: !loading,\n loadingOverlayComponentParams,\n });\n\n gridApi.value?.updateGridOptions({\n loading,\n loadingOverlayComponentParams,\n });\n }, { deep: true, immediate: true });\n\n return { gridOptions, gridApi };\n};\n"],"names":["Builder","__privateAdd","_options","options","__privateSet","__privateGet","def","loading","loadingText","notReady","type","notReadyText","noRowsText","rowSelection","rowData","components","key","value","show","d","_a","cellData","useAgGridOptions","factory","gridApi","shallowRef","extOptions","computed","AgGridTheme","PlAgOverlayLoading","PlAgOverlayNoRows","e","autoSizeRowNumberColumn","column","result","makeRowNumberColDef","it","createAgGridColDef","PlAgCellFile","PlAgChartStackedBarCell","PlAgChartHistogramCell","PlAgCellStatusTag","gridOptions","whenever","watch","loadingOverlayComponentParams","_b"],"mappings":"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"}
|
|
@@ -36,9 +36,9 @@ const P = { class: "block block__layout" }, j = /* @__PURE__ */ _({
|
|
|
36
36
|
key: 0,
|
|
37
37
|
class: g(e.$style.error)
|
|
38
38
|
}, C(n(o).error), 3)) : n(o).loaded ? u.value ? (t(), s(E(u.value), { key: p.value })) : (t(), s($, { key: 3 })) : (t(), s(B, { key: 1 }, {
|
|
39
|
-
default: N(() => r[0] || (r[0] = [
|
|
40
|
-
w("Loading...")
|
|
41
|
-
])),
|
|
39
|
+
default: N(() => [...r[0] || (r[0] = [
|
|
40
|
+
w("Loading...", -1)
|
|
41
|
+
])]),
|
|
42
42
|
_: 1
|
|
43
43
|
})),
|
|
44
44
|
n(o).loaded && v.value ? (t(), s(n(L), {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockLayout.vue2.js","sources":["../../src/components/BlockLayout.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport '../assets/block.scss';\nimport { computed } from 'vue';\nimport { useSdkPlugin } from '../defineApp';\nimport NotFound from './NotFound.vue';\nimport LoaderPage from './LoaderPage.vue';\nimport { PlAppErrorNotificationAlert } from './PlAppErrorNotificationAlert';\nimport BlockLoader from './BlockLoader.vue';\nimport { MonetizationSidebar } from '../plugins/Monetization';\n\nconst sdk = useSdkPlugin();\n\nconst parsePathname = (href: `/${string}`) => {\n try {\n return new URL(href, 'http://dummy').pathname as `/${string}`;\n } catch (_cause) {\n console.error('Invalid href', href);\n return undefined;\n }\n};\n\nconst href = computed(() => (sdk.loaded ? sdk.useApp().href : undefined));\n\nconst CurrentView = computed(() => {\n if (sdk.loaded) {\n const app = sdk.useApp();\n const pathname = parsePathname(app.snapshot.navigationState.href);\n return pathname ? app.getRoute(pathname) : undefined;\n }\n\n return undefined;\n});\n\nconst app = computed(() => (sdk.loaded ? sdk.useApp() : undefined));\n\nconst errors = computed(() => (app.value ? app.value.model.outputErrors : {}));\n\nconst showErrorsNotification = computed(() => app.value?.showErrorsNotification ?? true);\n\nconst progress = computed(() => app.value?.progress?.());\n</script>\n\n<template>\n <div class=\"block block__layout\">\n <BlockLoader :value=\"progress\" />\n <div v-if=\"sdk.error\" :class=\"$style.error\">{{ sdk.error }}</div>\n <LoaderPage v-else-if=\"!sdk.loaded\">Loading...</LoaderPage>\n <component :is=\"CurrentView\" v-else-if=\"CurrentView\" :key=\"href\" />\n <NotFound v-else />\n <PlAppErrorNotificationAlert v-if=\"sdk.loaded && showErrorsNotification\" :errors=\"errors\" />\n </div>\n <!-- Plugins -->\n <MonetizationSidebar v-if=\"CurrentView\" />\n</template>\n\n<style module>\n.error {\n color: red;\n font-weight: bold;\n padding: 24px;\n}\n</style>\n"],"names":["sdk","useSdkPlugin","parsePathname","href","computed","CurrentView","app","pathname","errors","showErrorsNotification","_a","progress","_b"],"mappings":";;;;;;;;;;;AAUA,UAAMA,IAAMC,EAAA,GAENC,IAAgB,CAACC,MAAuB;AAC5C,UAAI;AACF,eAAO,IAAI,IAAIA,GAAM,cAAc,EAAE;AAAA,MACvC,QAAiB;AACf,gBAAQ,MAAM,gBAAgBA,CAAI;AAClC;AAAA,MACF;AAAA,IACF,GAEMA,IAAOC,EAAS,MAAOJ,EAAI,SAASA,EAAI,OAAA,EAAS,OAAO,MAAU,GAElEK,IAAcD,EAAS,MAAM;AACjC,UAAIJ,EAAI,QAAQ;AACd,cAAMM,IAAMN,EAAI,OAAA,GACVO,IAAWL,EAAcI,EAAI,SAAS,gBAAgB,IAAI;AAChE,eAAOC,IAAWD,EAAI,SAASC,CAAQ,IAAI;AAAA,MAC7C;AAAA,IAGF,CAAC,GAEKD,IAAMF,EAAS,MAAOJ,EAAI,SAASA,EAAI,OAAA,IAAW,MAAU,GAE5DQ,IAASJ,EAAS,MAAOE,EAAI,QAAQA,EAAI,MAAM,MAAM,eAAe,EAAG,GAEvEG,IAAyBL,EAAS,MAAA;;AAAM,eAAAM,IAAAJ,EAAI,UAAJ,gBAAAI,EAAW,2BAA0B;AAAA,KAAI,GAEjFC,IAAWP,EAAS,MAAA;;AAAM,cAAAQ,KAAAF,IAAAJ,EAAI,UAAJ,gBAAAI,EAAW,aAAX,gBAAAE,EAAA,KAAAF;AAAA,KAAuB
|
|
1
|
+
{"version":3,"file":"BlockLayout.vue2.js","sources":["../../src/components/BlockLayout.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport '../assets/block.scss';\nimport { computed } from 'vue';\nimport { useSdkPlugin } from '../defineApp';\nimport NotFound from './NotFound.vue';\nimport LoaderPage from './LoaderPage.vue';\nimport { PlAppErrorNotificationAlert } from './PlAppErrorNotificationAlert';\nimport BlockLoader from './BlockLoader.vue';\nimport { MonetizationSidebar } from '../plugins/Monetization';\n\nconst sdk = useSdkPlugin();\n\nconst parsePathname = (href: `/${string}`) => {\n try {\n return new URL(href, 'http://dummy').pathname as `/${string}`;\n } catch (_cause) {\n console.error('Invalid href', href);\n return undefined;\n }\n};\n\nconst href = computed(() => (sdk.loaded ? sdk.useApp().href : undefined));\n\nconst CurrentView = computed(() => {\n if (sdk.loaded) {\n const app = sdk.useApp();\n const pathname = parsePathname(app.snapshot.navigationState.href);\n return pathname ? app.getRoute(pathname) : undefined;\n }\n\n return undefined;\n});\n\nconst app = computed(() => (sdk.loaded ? sdk.useApp() : undefined));\n\nconst errors = computed(() => (app.value ? app.value.model.outputErrors : {}));\n\nconst showErrorsNotification = computed(() => app.value?.showErrorsNotification ?? true);\n\nconst progress = computed(() => app.value?.progress?.());\n</script>\n\n<template>\n <div class=\"block block__layout\">\n <BlockLoader :value=\"progress\" />\n <div v-if=\"sdk.error\" :class=\"$style.error\">{{ sdk.error }}</div>\n <LoaderPage v-else-if=\"!sdk.loaded\">Loading...</LoaderPage>\n <component :is=\"CurrentView\" v-else-if=\"CurrentView\" :key=\"href\" />\n <NotFound v-else />\n <PlAppErrorNotificationAlert v-if=\"sdk.loaded && showErrorsNotification\" :errors=\"errors\" />\n </div>\n <!-- Plugins -->\n <MonetizationSidebar v-if=\"CurrentView\" />\n</template>\n\n<style module>\n.error {\n color: red;\n font-weight: bold;\n padding: 24px;\n}\n</style>\n"],"names":["sdk","useSdkPlugin","parsePathname","href","computed","CurrentView","app","pathname","errors","showErrorsNotification","_a","progress","_b","_createElementVNode","_hoisted_1","_createVNode","BlockLoader","_unref","_createElementBlock","_normalizeClass","$style","_toDisplayString","_openBlock","_createBlock","_resolveDynamicComponent","NotFound","LoaderPage","_cache","PlAppErrorNotificationAlert","MonetizationSidebar"],"mappings":";;;;;;;;;;;AAUA,UAAMA,IAAMC,EAAA,GAENC,IAAgB,CAACC,MAAuB;AAC5C,UAAI;AACF,eAAO,IAAI,IAAIA,GAAM,cAAc,EAAE;AAAA,MACvC,QAAiB;AACf,gBAAQ,MAAM,gBAAgBA,CAAI;AAClC;AAAA,MACF;AAAA,IACF,GAEMA,IAAOC,EAAS,MAAOJ,EAAI,SAASA,EAAI,OAAA,EAAS,OAAO,MAAU,GAElEK,IAAcD,EAAS,MAAM;AACjC,UAAIJ,EAAI,QAAQ;AACd,cAAMM,IAAMN,EAAI,OAAA,GACVO,IAAWL,EAAcI,EAAI,SAAS,gBAAgB,IAAI;AAChE,eAAOC,IAAWD,EAAI,SAASC,CAAQ,IAAI;AAAA,MAC7C;AAAA,IAGF,CAAC,GAEKD,IAAMF,EAAS,MAAOJ,EAAI,SAASA,EAAI,OAAA,IAAW,MAAU,GAE5DQ,IAASJ,EAAS,MAAOE,EAAI,QAAQA,EAAI,MAAM,MAAM,eAAe,EAAG,GAEvEG,IAAyBL,EAAS,MAAA;;AAAM,eAAAM,IAAAJ,EAAI,UAAJ,gBAAAI,EAAW,2BAA0B;AAAA,KAAI,GAEjFC,IAAWP,EAAS,MAAA;;AAAM,cAAAQ,KAAAF,IAAAJ,EAAI,UAAJ,gBAAAI,EAAW,aAAX,gBAAAE,EAAA,KAAAF;AAAA,KAAuB;;MAIrDG,EAOM,OAPNC,GAOM;AAAA,QANJC,EAAiCC,GAAA,EAAnB,OAAOL,EAAA,MAAA,GAAQ,MAAA,GAAA,CAAA,OAAA,CAAA;AAAA,QAClBM,EAAAjB,CAAA,EAAI,cAAfkB,EAAiE,OAAA;AAAA;UAA1C,OAAKC,EAAEC,EAAAA,OAAO,KAAK;AAAA,QAAA,GAAKC,EAAAJ,EAAAjB,CAAA,EAAI,KAAK,GAAA,CAAA,KAChCiB,EAAAjB,CAAA,EAAI,SACYK,EAAA,SAAxCiB,EAAA,GAAAC,EAAmEC,EAAnDnB,EAAA,KAAW,GAAA,EAA2B,KAAKF,EAAA,MAAA,CAAI,WAC/DoB,EAAmBE,GAAA,EAAA,KAAA,EAAA,CAAA,WAFnBF,EAA2DG,GAAA,EAAA,KAAA,KAAA;AAAA,qBAAvB,MAAU,CAAA,GAAAC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,cAAV,cAAU,EAAA;AAAA,UAAA;;;QAGXV,EAAAjB,CAAA,EAAI,UAAUS,EAAA,cAAjDc,EAA4FN,EAAAW,CAAA,GAAA;AAAA;UAAlB,QAAQpB,EAAA;AAAA,QAAA;;MAGzDH,EAAA,cAA3BkB,EAA0CN,EAAAY,CAAA,GAAA,EAAA,KAAA,EAAA,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockLoader.vue.js","sources":["../../src/components/BlockLoader.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue';\n\nconst props = defineProps<{\n value: boolean | number | undefined;\n}>();\n\nconst isLoader = computed(() => typeof props.value === 'boolean' && props.value);\n\nconst progressWidth = computed(() => {\n const value = props.value;\n\n if (typeof value === 'number') {\n if (value >= 1) {\n return undefined;\n }\n\n return (value * 100).toFixed(2) + '%';\n }\n\n return undefined;\n});\n</script>\n\n<template>\n <div v-if=\"isLoader\" class=\"block__loader\" />\n <div v-else-if=\"progressWidth !== undefined\" class=\"block__progress\" :style=\"{ '--progress-width': progressWidth }\" />\n</template>\n"],"names":["props","__props","isLoader","computed","progressWidth","value"],"mappings":";;;;;;;;;;AAGA,UAAMA,IAAQC,GAIRC,IAAWC,EAAS,MAAM,OAAOH,EAAM,SAAU,aAAaA,EAAM,KAAK,GAEzEI,IAAgBD,EAAS,MAAM;AACnC,YAAME,IAAQL,EAAM;AAEpB,UAAI,OAAOK,KAAU;AACnB,eAAIA,KAAS,IACX,UAGMA,IAAQ,KAAK,QAAQ,CAAC,IAAI;AAAA,IAItC,CAAC
|
|
1
|
+
{"version":3,"file":"BlockLoader.vue.js","sources":["../../src/components/BlockLoader.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue';\n\nconst props = defineProps<{\n value: boolean | number | undefined;\n}>();\n\nconst isLoader = computed(() => typeof props.value === 'boolean' && props.value);\n\nconst progressWidth = computed(() => {\n const value = props.value;\n\n if (typeof value === 'number') {\n if (value >= 1) {\n return undefined;\n }\n\n return (value * 100).toFixed(2) + '%';\n }\n\n return undefined;\n});\n</script>\n\n<template>\n <div v-if=\"isLoader\" class=\"block__loader\" />\n <div v-else-if=\"progressWidth !== undefined\" class=\"block__progress\" :style=\"{ '--progress-width': progressWidth }\" />\n</template>\n"],"names":["props","__props","isLoader","computed","progressWidth","value","_openBlock","_createElementBlock","_hoisted_1"],"mappings":";;;;;;;;;;AAGA,UAAMA,IAAQC,GAIRC,IAAWC,EAAS,MAAM,OAAOH,EAAM,SAAU,aAAaA,EAAM,KAAK,GAEzEI,IAAgBD,EAAS,MAAM;AACnC,YAAME,IAAQL,EAAM;AAEpB,UAAI,OAAOK,KAAU;AACnB,eAAIA,KAAS,IACX,UAGMA,IAAQ,KAAK,QAAQ,CAAC,IAAI;AAAA,IAItC,CAAC;qBAIYH,EAAA,SAAXI,EAAA,GAAAC,EAA6C,OAA7CC,CAA6C,KAC7BJ,EAAA,UAAkB,eAAlCG,EAAsH,OAAA;AAAA;MAAzE,OAAM;AAAA,MAAmB,+BAA6BH,EAAA,OAAa;AAAA,IAAA;;;"}
|
|
@@ -2,11 +2,11 @@ import { createElementBlock as r, openBlock as a, createElementVNode as o } from
|
|
|
2
2
|
import t from "../_virtual/_plugin-vue_export-helper.js";
|
|
3
3
|
const c = {}, n = { class: "block__loader-page" };
|
|
4
4
|
function s(l, e) {
|
|
5
|
-
return a(), r("div", n, e[0] || (e[0] = [
|
|
5
|
+
return a(), r("div", n, [...e[0] || (e[0] = [
|
|
6
6
|
o("div", { class: "loader-container" }, [
|
|
7
7
|
o("i", { class: "mask-24 mask-loading loader-icon" })
|
|
8
8
|
], -1)
|
|
9
|
-
]));
|
|
9
|
+
])]);
|
|
10
10
|
}
|
|
11
11
|
const _ = /* @__PURE__ */ t(c, [["render", s]]);
|
|
12
12
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoaderPage.vue.js","sources":["../../src/components/LoaderPage.vue"],"sourcesContent":["<template>\n <div class=\"block__loader-page\">\n <div class=\"loader-container\">\n <i class=\"mask-24 mask-loading loader-icon\" />\n </div>\n </div>\n</template>\n"],"names":["_sfc_render","_ctx","_cache","_openBlock","_createElementBlock","_hoisted_1"],"mappings":";;;AACE,SAAAA,EAAAC,GAAAC,GAAA;SACEC,EAAA,GAEMC,EAFK,OAAAC,
|
|
1
|
+
{"version":3,"file":"LoaderPage.vue.js","sources":["../../src/components/LoaderPage.vue"],"sourcesContent":["<template>\n <div class=\"block__loader-page\">\n <div class=\"loader-container\">\n <i class=\"mask-24 mask-loading loader-icon\" />\n </div>\n </div>\n</template>\n"],"names":["_sfc_render","_ctx","_cache","_openBlock","_createElementBlock","_hoisted_1"],"mappings":";;;AACE,SAAAA,EAAAC,GAAAC,GAAA;SACEC,EAAA,GAEMC,EAFK,OAAAC,GAAkB,CAAA,GAAAH,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,MAC3B,OAA8C,EAA3C,OAAM,mBAAA,GAAA;AAAA;;;;;"}
|
|
@@ -12,9 +12,9 @@ const _ = { class: "block__not-found" }, v = /* @__PURE__ */ r({
|
|
|
12
12
|
p(e(f), {
|
|
13
13
|
onClick: c(n, ["stop"])
|
|
14
14
|
}, {
|
|
15
|
-
default: u(() => o[0] || (o[0] = [
|
|
16
|
-
l("Return to main page")
|
|
17
|
-
])),
|
|
15
|
+
default: u(() => [...o[0] || (o[0] = [
|
|
16
|
+
l("Return to main page", -1)
|
|
17
|
+
])]),
|
|
18
18
|
_: 1
|
|
19
19
|
})
|
|
20
20
|
]));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotFound.vue.js","sources":["../../src/components/NotFound.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { PlBtnSecondary } from '@milaboratories/uikit';\nimport { useSdkPlugin } from '../defineApp';\n\nconst sdk = useSdkPlugin();\n\nconst app = sdk.useApp();\n\nconst goToMain = () => {\n app.navigateTo('/');\n};\n</script>\n\n<template>\n <div class=\"block__not-found\">\n <h1>Not found route: {{ app.snapshot.navigationState.href }}</h1>\n <PlBtnSecondary @click.stop=\"goToMain\">Return to main page</PlBtnSecondary>\n </div>\n</template>\n"],"names":["app","useSdkPlugin","goToMain"],"mappings":";;;;;;AAMA,UAAMA,IAFMC,EAAA,EAEI,OAAA,GAEVC,IAAW,MAAM;AACrB,MAAAF,EAAI,WAAW,GAAG;AAAA,IACpB
|
|
1
|
+
{"version":3,"file":"NotFound.vue.js","sources":["../../src/components/NotFound.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { PlBtnSecondary } from '@milaboratories/uikit';\nimport { useSdkPlugin } from '../defineApp';\n\nconst sdk = useSdkPlugin();\n\nconst app = sdk.useApp();\n\nconst goToMain = () => {\n app.navigateTo('/');\n};\n</script>\n\n<template>\n <div class=\"block__not-found\">\n <h1>Not found route: {{ app.snapshot.navigationState.href }}</h1>\n <PlBtnSecondary @click.stop=\"goToMain\">Return to main page</PlBtnSecondary>\n </div>\n</template>\n"],"names":["app","useSdkPlugin","goToMain","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_toDisplayString","_unref","_createVNode","PlBtnSecondary","_cache"],"mappings":";;;;;;AAMA,UAAMA,IAFMC,EAAA,EAEI,OAAA,GAEVC,IAAW,MAAM;AACrB,MAAAF,EAAI,WAAW,GAAG;AAAA,IACpB;sBAIEG,EAAA,GAAAC,EAGM,OAHNC,GAGM;AAAA,MAFJC,EAAiE,MAAA,MAA7D,sBAAiBC,EAAGC,EAAAR,CAAA,EAAI,SAAS,gBAAgB,IAAI,GAAA,CAAA;AAAA,MACzDS,EAA2ED,EAAAE,CAAA,GAAA;AAAA,QAA1D,WAAYR,GAAQ,CAAA,MAAA,CAAA;AAAA,MAAA;mBAAE,MAAmB,CAAA,GAAAS,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,YAAnB,uBAAmB,EAAA;AAAA,QAAA;;;;;;"}
|
|
@@ -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"],"mappings":";;;;;;;;;AAGA,UAAMA,IAAQC,GAMRC,IAAqB,CAAC,OAAO,IAAI
|
|
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,10 +1,10 @@
|
|
|
1
|
-
import { defineComponent as B, mergeModels as L, useModel as z, computed as A, createElementBlock as
|
|
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
2
|
import q from "./SingleFilter.vue.js";
|
|
3
|
-
import { PlElementList as
|
|
4
|
-
import
|
|
5
|
-
import { DEFAULT_FILTERS as
|
|
6
|
-
import { useInnerModel as
|
|
7
|
-
const
|
|
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({
|
|
8
8
|
__name: "PlAdvancedFilter",
|
|
9
9
|
props: /* @__PURE__ */ L({
|
|
10
10
|
items: {},
|
|
@@ -16,20 +16,20 @@ const Q = ["onDrop"], te = /* @__PURE__ */ B({
|
|
|
16
16
|
modelModifiers: {}
|
|
17
17
|
}),
|
|
18
18
|
emits: ["update:modelValue"],
|
|
19
|
-
setup(
|
|
20
|
-
const E =
|
|
19
|
+
setup(d) {
|
|
20
|
+
const E = d, M = z(d, "modelValue"), s = Y(J, H, M), c = A(() => {
|
|
21
21
|
var o;
|
|
22
22
|
return (o = E.items[0]) == null ? void 0 : o.id;
|
|
23
|
-
}),
|
|
23
|
+
}), b = [{
|
|
24
24
|
id: "empty",
|
|
25
25
|
not: !1,
|
|
26
26
|
operand: "and",
|
|
27
27
|
filters: [],
|
|
28
28
|
expanded: !0
|
|
29
29
|
}];
|
|
30
|
-
function
|
|
30
|
+
function V(o, e) {
|
|
31
31
|
s.value.groups[o].filters.push({
|
|
32
|
-
...W
|
|
32
|
+
...I[W],
|
|
33
33
|
column: e
|
|
34
34
|
});
|
|
35
35
|
}
|
|
@@ -39,29 +39,29 @@ const Q = ["onDrop"], te = /* @__PURE__ */ B({
|
|
|
39
39
|
function N(o) {
|
|
40
40
|
s.value.groups = s.value.groups.filter((e, t) => t !== o);
|
|
41
41
|
}
|
|
42
|
-
function
|
|
43
|
-
const e =
|
|
42
|
+
function k(o) {
|
|
43
|
+
const e = j(o);
|
|
44
44
|
s.value.groups.push(e);
|
|
45
45
|
}
|
|
46
46
|
function O(o, e) {
|
|
47
47
|
const t = e.dataTransfer;
|
|
48
48
|
if (t != null && t.getData("text/plain")) {
|
|
49
49
|
const n = t.getData("text/plain");
|
|
50
|
-
U(n) &&
|
|
50
|
+
U(n) && V(o, n);
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
function S(o) {
|
|
54
54
|
const e = o.dataTransfer;
|
|
55
55
|
if (e != null && e.getData("text/plain")) {
|
|
56
56
|
const t = e.getData("text/plain");
|
|
57
|
-
U(t) &&
|
|
57
|
+
U(t) && k(t);
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
function
|
|
60
|
+
function G(o) {
|
|
61
61
|
o.preventDefault();
|
|
62
62
|
}
|
|
63
|
-
return (o, e) => (r(),
|
|
64
|
-
|
|
63
|
+
return (o, e) => (r(), g("div", null, [
|
|
64
|
+
a(l(T), {
|
|
65
65
|
items: l(s).groups,
|
|
66
66
|
"onUpdate:items": e[0] || (e[0] = (t) => l(s).groups = t),
|
|
67
67
|
"get-item-key": (t) => t.id,
|
|
@@ -77,61 +77,61 @@ const Q = ["onDrop"], te = /* @__PURE__ */ B({
|
|
|
77
77
|
t.expanded = !t.expanded;
|
|
78
78
|
}
|
|
79
79
|
}, {
|
|
80
|
-
"item-title": i(() => e[3] || (e[3] = [
|
|
81
|
-
|
|
82
|
-
])),
|
|
80
|
+
"item-title": i(() => [...e[3] || (e[3] = [
|
|
81
|
+
u(" Filter group ", -1)
|
|
82
|
+
])]),
|
|
83
83
|
"item-content": i(({ item: t, index: n }) => [
|
|
84
|
-
|
|
85
|
-
class:
|
|
84
|
+
y("div", {
|
|
85
|
+
class: f(o.$style.groupContent),
|
|
86
86
|
dropzone: "true",
|
|
87
|
-
onDrop: (
|
|
88
|
-
onDragover:
|
|
87
|
+
onDrop: (m) => O(n, m),
|
|
88
|
+
onDragover: G
|
|
89
89
|
}, [
|
|
90
|
-
|
|
90
|
+
a(l(C), {
|
|
91
91
|
modelValue: t.not,
|
|
92
|
-
"onUpdate:modelValue": (
|
|
92
|
+
"onUpdate:modelValue": (m) => t.not = m
|
|
93
93
|
}, {
|
|
94
|
-
default: i(() => e[4] || (e[4] = [
|
|
95
|
-
|
|
96
|
-
])),
|
|
97
|
-
_:
|
|
98
|
-
},
|
|
99
|
-
(r(!0),
|
|
94
|
+
default: i(() => [...e[4] || (e[4] = [
|
|
95
|
+
u("NOT", -1)
|
|
96
|
+
])]),
|
|
97
|
+
_: 1
|
|
98
|
+
}, 8, ["modelValue", "onUpdate:modelValue"]),
|
|
99
|
+
(r(!0), g(w, null, R(t.filters, (m, p) => (r(), D(q, {
|
|
100
100
|
key: p,
|
|
101
101
|
modelValue: t.filters[p],
|
|
102
|
-
"onUpdate:modelValue": (
|
|
102
|
+
"onUpdate:modelValue": (v) => t.filters[p] = v,
|
|
103
103
|
operand: t.operand,
|
|
104
|
-
"column-options":
|
|
105
|
-
"get-suggest-model":
|
|
106
|
-
"get-suggest-options":
|
|
107
|
-
"enable-dnd":
|
|
104
|
+
"column-options": d.items,
|
|
105
|
+
"get-suggest-model": d.getSuggestModel,
|
|
106
|
+
"get-suggest-options": d.getSuggestOptions,
|
|
107
|
+
"enable-dnd": d.enableDnd,
|
|
108
108
|
"is-last": p === t.filters.length - 1,
|
|
109
|
-
"on-change-operand": (
|
|
109
|
+
"on-change-operand": (v) => t.operand = v,
|
|
110
110
|
"on-delete": () => P(n, p)
|
|
111
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
|
-
|
|
112
|
+
d.enableDnd ? (r(), g("div", {
|
|
113
113
|
key: 0,
|
|
114
|
-
class:
|
|
115
|
-
}, e[5] || (e[5] = [
|
|
116
|
-
|
|
117
|
-
]), 2)) : (r(),
|
|
114
|
+
class: f(o.$style.dropzone)
|
|
115
|
+
}, [...e[5] || (e[5] = [
|
|
116
|
+
y("div", null, "Drop dimensions here", -1)
|
|
117
|
+
])], 2)) : (r(), D(l($), {
|
|
118
118
|
key: 1,
|
|
119
|
-
onClick: (
|
|
119
|
+
onClick: (m) => V(n, c.value)
|
|
120
120
|
}, {
|
|
121
121
|
default: i(() => [
|
|
122
|
-
|
|
122
|
+
a(l(F), {
|
|
123
123
|
name: "add",
|
|
124
124
|
style: { "margin-right": "8px" }
|
|
125
125
|
}),
|
|
126
|
-
e[6] || (e[6] =
|
|
126
|
+
e[6] || (e[6] = u("Add column ", -1))
|
|
127
127
|
]),
|
|
128
|
-
_:
|
|
129
|
-
},
|
|
130
|
-
], 42,
|
|
128
|
+
_: 1
|
|
129
|
+
}, 8, ["onClick"]))
|
|
130
|
+
], 42, K)
|
|
131
131
|
]),
|
|
132
132
|
"item-after": i(({ index: t }) => [
|
|
133
|
-
|
|
134
|
-
class:
|
|
133
|
+
a(x, {
|
|
134
|
+
class: f(o.$style.buttonWrapper),
|
|
135
135
|
active: l(s).operand,
|
|
136
136
|
disabled: t === l(s).groups.length - 1,
|
|
137
137
|
"on-select": (n) => l(s).operand = n
|
|
@@ -139,9 +139,9 @@ const Q = ["onDrop"], te = /* @__PURE__ */ B({
|
|
|
139
139
|
]),
|
|
140
140
|
_: 1
|
|
141
141
|
}, 8, ["items", "get-item-key", "item-class", "item-class-content", "item-class-title", "is-expanded", "on-expand"]),
|
|
142
|
-
|
|
143
|
-
items:
|
|
144
|
-
"onUpdate:items": e[2] || (e[2] = (t) =>
|
|
142
|
+
a(l(T), {
|
|
143
|
+
items: b,
|
|
144
|
+
"onUpdate:items": e[2] || (e[2] = (t) => b = t),
|
|
145
145
|
"get-item-key": (t) => t.id,
|
|
146
146
|
"item-class": o.$style.filterGroup,
|
|
147
147
|
"item-class-content": o.$style.filterGroupContent,
|
|
@@ -153,37 +153,37 @@ const Q = ["onDrop"], te = /* @__PURE__ */ B({
|
|
|
153
153
|
disablePinning: !0,
|
|
154
154
|
dropzone: "true",
|
|
155
155
|
onDrop: S,
|
|
156
|
-
onDragover:
|
|
156
|
+
onDragover: G
|
|
157
157
|
}, {
|
|
158
|
-
"item-title": i(() => e[7] || (e[7] = [
|
|
159
|
-
|
|
160
|
-
])),
|
|
158
|
+
"item-title": i(() => [...e[7] || (e[7] = [
|
|
159
|
+
u("Filter group", -1)
|
|
160
|
+
])]),
|
|
161
161
|
"item-content": i(({ item: t }) => [
|
|
162
|
-
|
|
162
|
+
a(l(C), {
|
|
163
163
|
modelValue: t.not,
|
|
164
164
|
"onUpdate:modelValue": (n) => t.not = n,
|
|
165
165
|
disabled: ""
|
|
166
166
|
}, {
|
|
167
|
-
default: i(() => e[8] || (e[8] = [
|
|
168
|
-
|
|
169
|
-
])),
|
|
170
|
-
_:
|
|
171
|
-
},
|
|
172
|
-
|
|
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", {
|
|
173
173
|
key: 0,
|
|
174
|
-
class:
|
|
175
|
-
}, e[9] || (e[9] = [
|
|
176
|
-
|
|
177
|
-
]), 2)) : (r(),
|
|
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
178
|
key: 1,
|
|
179
|
-
onClick: e[1] || (e[1] = (n) =>
|
|
179
|
+
onClick: e[1] || (e[1] = (n) => k(c.value))
|
|
180
180
|
}, {
|
|
181
181
|
default: i(() => [
|
|
182
|
-
|
|
182
|
+
a(l(F), {
|
|
183
183
|
name: "add",
|
|
184
184
|
style: { "margin-right": "8px" }
|
|
185
185
|
}),
|
|
186
|
-
e[10] || (e[10] =
|
|
186
|
+
e[10] || (e[10] = u("Add column ", -1))
|
|
187
187
|
]),
|
|
188
188
|
_: 1
|
|
189
189
|
}))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAdvancedFilter.vue2.js","sources":["../../../src/components/PlAdvancedFilter/PlAdvancedFilter.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport SingleFilter from './SingleFilter.vue';\nimport { PlBtnSecondary, PlElementList, PlCheckbox, PlIcon16 } from '@milaboratories/uikit';\nimport type { PlAdvancedFilterColumnId, CommonFilterSpec, Group, PlAdvancedFilterUI, SourceOptionInfo } from './types';\nimport { computed } from 'vue';\nimport OperandButton from './OperandButton.vue';\nimport { DEFAULT_FILTER_TYPE, DEFAULT_FILTERS } from './constants';\nimport type { ListOptionBase } from '@platforma-sdk/model';\nimport { createNewGroup, isValidColumnId, toInnerModel, toOuterModel, useInnerModel } from './utils';\n\nconst props = withDefaults(defineProps<{\n /** List of ids of sources (columns, axes) that can be selected in filters */\n items: SourceOptionInfo[];\n /** If true - new filter can be added by droppind element into filter group; else new column is added by button click */\n enableDnd?: boolean;\n /** Loading function for unique values for Equal/InSet filters and fixed axes options. */\n getSuggestOptions: (params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) => (Promise<ListOptionBase<string | number>[]>) |\n ((params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) => ListOptionBase<string | number>[]);\n /** Loading function for label of selected value for Equal/InSet filters and fixed axes options. */\n getSuggestModel: (params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) => (Promise<ListOptionBase<string | number>>) |\n ((params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) => ListOptionBase<string | number>);\n}>(), { enableDnd: false });\n\nconst model = defineModel<CommonFilterSpec>({ required: true });\nconst innerModel = useInnerModel<CommonFilterSpec, PlAdvancedFilterUI>(toInnerModel, toOuterModel, model);\n\nconst firstColumnId = computed(() => props.items[0]?.id);\nconst emptyGroup: Group[] = [{\n id: 'empty',\n not: false,\n operand: 'and',\n filters: [],\n expanded: true,\n}];\n\nfunction addColumnToGroup(groupIdx: number, selectedSourceId: PlAdvancedFilterColumnId) {\n innerModel.value.groups[groupIdx].filters.push({\n ...DEFAULT_FILTERS[DEFAULT_FILTER_TYPE],\n column: selectedSourceId,\n });\n}\n\nfunction removeFilterFromGroup(groupIdx: number, filterIdx: number) {\n if (innerModel.value.groups[groupIdx].filters.length === 1 && filterIdx === 0) {\n removeGroup(groupIdx);\n } else {\n innerModel.value.groups[groupIdx].filters = innerModel.value.groups[groupIdx].filters.filter((_v, idx) => idx !== filterIdx);\n }\n}\n\nfunction removeGroup(groupIdx: number) {\n innerModel.value.groups = innerModel.value.groups.filter((v, idx) => idx !== groupIdx);\n}\nfunction addGroup(selectedSourceId: PlAdvancedFilterColumnId) {\n const newGroup = createNewGroup(selectedSourceId);\n innerModel.value.groups.push(newGroup);\n}\n\nfunction handleDropToExistingGroup(groupIdx: number, event: DragEvent) {\n const dataTransfer = event.dataTransfer;\n if (dataTransfer?.getData('text/plain')) {\n const draggedId = dataTransfer.getData('text/plain');\n if (isValidColumnId(draggedId)) {\n addColumnToGroup(groupIdx, draggedId);\n }\n }\n}\nfunction handleDropToNewGroup(event: DragEvent) {\n const dataTransfer = event.dataTransfer;\n if (dataTransfer?.getData('text/plain')) {\n const draggedId = dataTransfer.getData('text/plain');\n if (isValidColumnId(draggedId)) {\n addGroup(draggedId);\n }\n }\n}\nfunction dragOver(event: DragEvent) {\n event.preventDefault();\n}\n</script>\n<template>\n <div>\n <PlElementList\n v-model:items=\"innerModel.groups\"\n :get-item-key=\"(group) => group.id\"\n\n :item-class=\"$style.filterGroup\"\n :item-class-content=\"$style.filterGroupContent\"\n :item-class-title=\"$style.filterGroupTitle\"\n\n :is-expanded=\"(group) => group.expanded\"\n\n :disableDragging=\"false\"\n :disableRemoving=\"false\"\n :disableToggling=\"true\"\n :disablePinning=\"true\"\n\n :on-expand=\"(group) => { group.expanded = !group.expanded}\"\n >\n <template #item-title>\n Filter group\n </template>\n <template #item-content=\"{ item, index }\">\n <div\n :class=\"$style.groupContent\" dropzone=\"true\"\n @drop=\"(event) => handleDropToExistingGroup(index, event)\"\n @dragover=\"dragOver\"\n >\n <PlCheckbox v-model=\"item.not\">NOT</PlCheckbox>\n <SingleFilter\n v-for=\"(filter, filterIdx) in item.filters\"\n :key=\"filterIdx\"\n v-model=\"item.filters[filterIdx]\"\n :operand=\"item.operand\"\n :column-options=\"items\"\n :get-suggest-model=\"getSuggestModel\"\n :get-suggest-options=\"getSuggestOptions\"\n :enable-dnd=\"enableDnd\"\n :is-last=\"filterIdx === item.filters.length - 1\"\n :on-change-operand=\"(v) => item.operand = v\"\n :on-delete=\"() => removeFilterFromGroup(index, filterIdx)\"\n />\n <div v-if=\"enableDnd\" :class=\"$style.dropzone\">\n <div>Drop dimensions here</div>\n </div>\n <PlBtnSecondary v-else @click=\"addColumnToGroup(index, firstColumnId)\">\n <PlIcon16 name=\"add\" style=\"margin-right: 8px\"/>Add column\n </PlBtnSecondary>\n </div>\n </template>\n <template #item-after=\"{ index }\">\n <OperandButton\n :class=\"$style.buttonWrapper\"\n :active=\"innerModel.operand\"\n :disabled=\"index === innerModel.groups.length - 1\"\n :on-select=\"(v) => innerModel.operand = v\"\n />\n </template>\n </PlElementList>\n\n <!-- Last group - always exists, always empty, just for adding new groups -->\n <PlElementList\n v-model:items=\"emptyGroup\"\n :get-item-key=\"(group) => group.id\"\n :item-class=\"$style.filterGroup\"\n :item-class-content=\"$style.filterGroupContent\"\n :item-class-title=\"$style.filterGroupTitle\"\n\n :is-expanded=\"() => true\"\n\n :disableDragging=\"true\"\n :disableRemoving=\"true\"\n :disableToggling=\"true\"\n :disablePinning=\"true\"\n dropzone=\"true\"\n @drop=\"handleDropToNewGroup\"\n @dragover=\"dragOver\"\n >\n <template #item-title>Filter group</template>\n <template #item-content=\"{item}\">\n <PlCheckbox v-model=\"item.not\" disabled >NOT</PlCheckbox>\n <div v-if=\"enableDnd\" :class=\"$style.dropzone\">\n <div>Drop dimensions here</div>\n </div>\n <PlBtnSecondary v-else @click=\"addGroup(firstColumnId)\">\n <PlIcon16 name=\"add\" style=\"margin-right: 8px\"/>Add column\n </PlBtnSecondary>\n </template>\n </PlElementList>\n </div>\n</template>\n<style module>\n .filterGroup {\n background: var(--bg-base-light);\n }\n .filterGroup:hover {\n background: rgba(99, 224, 36, 0.12);\n }\n .filterGroupTitle {\n background: none;\n }\n .groupContent {\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n .dropzone {\n border-radius: 6px;\n border: 1.5px dashed var(--color-div-grey);\n color: var(--txt-03);\n font-family: Manrope;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n height: 40px;\n cursor: default;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .buttonWrapper {\n height: 72px;\n display: flex;\n align-items: center;\n }\n :global(.sortable-chosen) .buttonWrapper {\n visibility: hidden;\n }\n</style>\n"],"names":["props","__props","model","_useModel","innerModel","useInnerModel","toInnerModel","toOuterModel","firstColumnId","computed","_a","emptyGroup","addColumnToGroup","groupIdx","selectedSourceId","DEFAULT_FILTERS","DEFAULT_FILTER_TYPE","removeFilterFromGroup","filterIdx","removeGroup","_v","idx","v","addGroup","newGroup","createNewGroup","handleDropToExistingGroup","event","dataTransfer","draggedId","isValidColumnId","handleDropToNewGroup","dragOver"],"mappings":";;;;;;;;;;;;;;;;;;;AAUA,UAAMA,IAAQC,GAaRC,IAAQC,iBAAgD,GACxDC,IAAaC,EAAoDC,GAAcC,GAAcL,CAAK,GAElGM,IAAgBC,EAAS,MAAA;;AAAM,cAAAC,IAAAV,EAAM,MAAM,CAAC,MAAb,gBAAAU,EAAgB;AAAA,KAAE,GACjDC,IAAsB,CAAC;AAAA,MAC3B,IAAI;AAAA,MACJ,KAAK;AAAA,MACL,SAAS;AAAA,MACT,SAAS,CAAA;AAAA,MACT,UAAU;AAAA,IAAA,CACX;AAED,aAASC,EAAiBC,GAAkBC,GAA4C;AACtF,MAAAV,EAAW,MAAM,OAAOS,CAAQ,EAAE,QAAQ,KAAK;AAAA,QAC7C,GAAGE,EAAgBC,CAAmB;AAAA,QACtC,QAAQF;AAAA,MAAA,CACT;AAAA,IACH;AAEA,aAASG,EAAsBJ,GAAkBK,GAAmB;AAClE,MAAId,EAAW,MAAM,OAAOS,CAAQ,EAAE,QAAQ,WAAW,KAAKK,MAAc,IAC1EC,EAAYN,CAAQ,IAEpBT,EAAW,MAAM,OAAOS,CAAQ,EAAE,UAAUT,EAAW,MAAM,OAAOS,CAAQ,EAAE,QAAQ,OAAO,CAACO,GAAIC,MAAQA,MAAQH,CAAS;AAAA,IAE/H;AAEA,aAASC,EAAYN,GAAkB;AACrC,MAAAT,EAAW,MAAM,SAASA,EAAW,MAAM,OAAO,OAAO,CAACkB,GAAGD,MAAQA,MAAQR,CAAQ;AAAA,IACvF;AACA,aAASU,EAAST,GAA4C;AAC5D,YAAMU,IAAWC,EAAeX,CAAgB;AAChD,MAAAV,EAAW,MAAM,OAAO,KAAKoB,CAAQ;AAAA,IACvC;AAEA,aAASE,EAA0Bb,GAAkBc,GAAkB;AACrE,YAAMC,IAAeD,EAAM;AAC3B,UAAIC,KAAA,QAAAA,EAAc,QAAQ,eAAe;AACvC,cAAMC,IAAYD,EAAa,QAAQ,YAAY;AACnD,QAAIE,EAAgBD,CAAS,KAC3BjB,EAAiBC,GAAUgB,CAAS;AAAA,MAExC;AAAA,IACF;AACA,aAASE,EAAqBJ,GAAkB;AAC9C,YAAMC,IAAeD,EAAM;AAC3B,UAAIC,KAAA,QAAAA,EAAc,QAAQ,eAAe;AACvC,cAAMC,IAAYD,EAAa,QAAQ,YAAY;AACnD,QAAIE,EAAgBD,CAAS,KAC3BN,EAASM,CAAS;AAAA,MAEtB;AAAA,IACF;AACA,aAASG,EAASL,GAAkB;AAClC,MAAAA,EAAM,eAAA;AAAA,IACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"PlAdvancedFilter.vue2.js","sources":["../../../src/components/PlAdvancedFilter/PlAdvancedFilter.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport SingleFilter from './SingleFilter.vue';\nimport { PlBtnSecondary, PlElementList, PlCheckbox, PlIcon16 } from '@milaboratories/uikit';\nimport type { PlAdvancedFilterColumnId, CommonFilterSpec, Group, PlAdvancedFilterUI, SourceOptionInfo } from './types';\nimport { computed } from 'vue';\nimport OperandButton from './OperandButton.vue';\nimport { DEFAULT_FILTER_TYPE, DEFAULT_FILTERS } from './constants';\nimport type { ListOptionBase } from '@platforma-sdk/model';\nimport { createNewGroup, isValidColumnId, toInnerModel, toOuterModel, useInnerModel } from './utils';\n\nconst props = withDefaults(defineProps<{\n /** List of ids of sources (columns, axes) that can be selected in filters */\n items: SourceOptionInfo[];\n /** If true - new filter can be added by droppind element into filter group; else new column is added by button click */\n enableDnd?: boolean;\n /** Loading function for unique values for Equal/InSet filters and fixed axes options. */\n getSuggestOptions: (params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) => (Promise<ListOptionBase<string | number>[]>) |\n ((params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) => ListOptionBase<string | number>[]);\n /** Loading function for label of selected value for Equal/InSet filters and fixed axes options. */\n getSuggestModel: (params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) => (Promise<ListOptionBase<string | number>>) |\n ((params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) => ListOptionBase<string | number>);\n}>(), { enableDnd: false });\n\nconst model = defineModel<CommonFilterSpec>({ required: true });\nconst innerModel = useInnerModel<CommonFilterSpec, PlAdvancedFilterUI>(toInnerModel, toOuterModel, model);\n\nconst firstColumnId = computed(() => props.items[0]?.id);\nconst emptyGroup: Group[] = [{\n id: 'empty',\n not: false,\n operand: 'and',\n filters: [],\n expanded: true,\n}];\n\nfunction addColumnToGroup(groupIdx: number, selectedSourceId: PlAdvancedFilterColumnId) {\n innerModel.value.groups[groupIdx].filters.push({\n ...DEFAULT_FILTERS[DEFAULT_FILTER_TYPE],\n column: selectedSourceId,\n });\n}\n\nfunction removeFilterFromGroup(groupIdx: number, filterIdx: number) {\n if (innerModel.value.groups[groupIdx].filters.length === 1 && filterIdx === 0) {\n removeGroup(groupIdx);\n } else {\n innerModel.value.groups[groupIdx].filters = innerModel.value.groups[groupIdx].filters.filter((_v, idx) => idx !== filterIdx);\n }\n}\n\nfunction removeGroup(groupIdx: number) {\n innerModel.value.groups = innerModel.value.groups.filter((v, idx) => idx !== groupIdx);\n}\nfunction addGroup(selectedSourceId: PlAdvancedFilterColumnId) {\n const newGroup = createNewGroup(selectedSourceId);\n innerModel.value.groups.push(newGroup);\n}\n\nfunction handleDropToExistingGroup(groupIdx: number, event: DragEvent) {\n const dataTransfer = event.dataTransfer;\n if (dataTransfer?.getData('text/plain')) {\n const draggedId = dataTransfer.getData('text/plain');\n if (isValidColumnId(draggedId)) {\n addColumnToGroup(groupIdx, draggedId);\n }\n }\n}\nfunction handleDropToNewGroup(event: DragEvent) {\n const dataTransfer = event.dataTransfer;\n if (dataTransfer?.getData('text/plain')) {\n const draggedId = dataTransfer.getData('text/plain');\n if (isValidColumnId(draggedId)) {\n addGroup(draggedId);\n }\n }\n}\nfunction dragOver(event: DragEvent) {\n event.preventDefault();\n}\n</script>\n<template>\n <div>\n <PlElementList\n v-model:items=\"innerModel.groups\"\n :get-item-key=\"(group) => group.id\"\n\n :item-class=\"$style.filterGroup\"\n :item-class-content=\"$style.filterGroupContent\"\n :item-class-title=\"$style.filterGroupTitle\"\n\n :is-expanded=\"(group) => group.expanded\"\n\n :disableDragging=\"false\"\n :disableRemoving=\"false\"\n :disableToggling=\"true\"\n :disablePinning=\"true\"\n\n :on-expand=\"(group) => { group.expanded = !group.expanded}\"\n >\n <template #item-title>\n Filter group\n </template>\n <template #item-content=\"{ item, index }\">\n <div\n :class=\"$style.groupContent\" dropzone=\"true\"\n @drop=\"(event) => handleDropToExistingGroup(index, event)\"\n @dragover=\"dragOver\"\n >\n <PlCheckbox v-model=\"item.not\">NOT</PlCheckbox>\n <SingleFilter\n v-for=\"(filter, filterIdx) in item.filters\"\n :key=\"filterIdx\"\n v-model=\"item.filters[filterIdx]\"\n :operand=\"item.operand\"\n :column-options=\"items\"\n :get-suggest-model=\"getSuggestModel\"\n :get-suggest-options=\"getSuggestOptions\"\n :enable-dnd=\"enableDnd\"\n :is-last=\"filterIdx === item.filters.length - 1\"\n :on-change-operand=\"(v) => item.operand = v\"\n :on-delete=\"() => removeFilterFromGroup(index, filterIdx)\"\n />\n <div v-if=\"enableDnd\" :class=\"$style.dropzone\">\n <div>Drop dimensions here</div>\n </div>\n <PlBtnSecondary v-else @click=\"addColumnToGroup(index, firstColumnId)\">\n <PlIcon16 name=\"add\" style=\"margin-right: 8px\"/>Add column\n </PlBtnSecondary>\n </div>\n </template>\n <template #item-after=\"{ index }\">\n <OperandButton\n :class=\"$style.buttonWrapper\"\n :active=\"innerModel.operand\"\n :disabled=\"index === innerModel.groups.length - 1\"\n :on-select=\"(v) => innerModel.operand = v\"\n />\n </template>\n </PlElementList>\n\n <!-- Last group - always exists, always empty, just for adding new groups -->\n <PlElementList\n v-model:items=\"emptyGroup\"\n :get-item-key=\"(group) => group.id\"\n :item-class=\"$style.filterGroup\"\n :item-class-content=\"$style.filterGroupContent\"\n :item-class-title=\"$style.filterGroupTitle\"\n\n :is-expanded=\"() => true\"\n\n :disableDragging=\"true\"\n :disableRemoving=\"true\"\n :disableToggling=\"true\"\n :disablePinning=\"true\"\n dropzone=\"true\"\n @drop=\"handleDropToNewGroup\"\n @dragover=\"dragOver\"\n >\n <template #item-title>Filter group</template>\n <template #item-content=\"{item}\">\n <PlCheckbox v-model=\"item.not\" disabled >NOT</PlCheckbox>\n <div v-if=\"enableDnd\" :class=\"$style.dropzone\">\n <div>Drop dimensions here</div>\n </div>\n <PlBtnSecondary v-else @click=\"addGroup(firstColumnId)\">\n <PlIcon16 name=\"add\" style=\"margin-right: 8px\"/>Add column\n </PlBtnSecondary>\n </template>\n </PlElementList>\n </div>\n</template>\n<style module>\n .filterGroup {\n background: var(--bg-base-light);\n }\n .filterGroup:hover {\n background: rgba(99, 224, 36, 0.12);\n }\n .filterGroupTitle {\n background: none;\n }\n .groupContent {\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n .dropzone {\n border-radius: 6px;\n border: 1.5px dashed var(--color-div-grey);\n color: var(--txt-03);\n font-family: Manrope;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n height: 40px;\n cursor: default;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .buttonWrapper {\n height: 72px;\n display: flex;\n align-items: center;\n }\n :global(.sortable-chosen) .buttonWrapper {\n visibility: hidden;\n }\n</style>\n"],"names":["props","__props","model","_useModel","innerModel","useInnerModel","toInnerModel","toOuterModel","firstColumnId","computed","_a","emptyGroup","addColumnToGroup","groupIdx","selectedSourceId","DEFAULT_FILTERS","DEFAULT_FILTER_TYPE","removeFilterFromGroup","filterIdx","removeGroup","_v","idx","v","addGroup","newGroup","createNewGroup","handleDropToExistingGroup","event","dataTransfer","draggedId","isValidColumnId","handleDropToNewGroup","dragOver","_createElementBlock","_createVNode","_unref","PlElementList","_cache","$event","group","$style","_withCtx","item","index","_createElementVNode","_normalizeClass","PlCheckbox","_openBlock","_Fragment","filter","_createBlock","SingleFilter","PlBtnSecondary","PlIcon16","OperandButton"],"mappings":"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"}
|