@platforma-sdk/ui-vue 1.63.1 → 1.63.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +160 -162
- package/.turbo/turbo-formatter$colon$check.log +2 -2
- package/.turbo/turbo-linter$colon$check.log +2 -2
- package/.turbo/turbo-types$colon$check.log +1 -1
- package/CHANGELOG.md +18 -0
- package/dist/AgGridVue/AgGridTheme.js +3 -1
- package/dist/AgGridVue/AgGridTheme.js.map +1 -1
- package/dist/AgGridVue/ag-override.js +2 -0
- package/dist/AgGridVue/ag-override.js.map +1 -1
- package/dist/AgGridVue/createAgGridColDef.js +2 -35
- package/dist/AgGridVue/createAgGridColDef.js.map +1 -1
- package/dist/AgGridVue/selection.js +2 -23
- package/dist/AgGridVue/selection.js.map +1 -1
- package/dist/AgGridVue/useAgGridOptions.js +2 -83
- package/dist/AgGridVue/useAgGridOptions.js.map +1 -1
- package/dist/_virtual/_plugin-vue_export-helper.js +2 -0
- package/dist/_virtual/_rolldown/runtime.js +2 -0
- package/dist/components/BlockLayout.js +1 -0
- package/dist/components/BlockLayout.style.js +1 -0
- package/dist/components/BlockLayout.vue2.js +2 -0
- package/dist/components/BlockLayout.vue2.js.map +1 -1
- package/dist/components/BlockLoader.js +2 -0
- package/dist/components/BlockLoader.vue2.js +2 -0
- package/dist/components/BlockLoader.vue2.js.map +1 -1
- package/dist/components/LoaderPage.js +2 -0
- package/dist/components/LoaderPage.js.map +1 -1
- package/dist/components/NotFound.js +2 -0
- package/dist/components/NotFound.vue2.js +2 -0
- package/dist/components/NotFound.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/FilterEditor.js +1 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.style.js +1 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js +2 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/OperandButton.js +1 -0
- package/dist/components/PlAdvancedFilter/OperandButton.style.js +1 -0
- package/dist/components/PlAdvancedFilter/OperandButton.vue2.js +2 -0
- package/dist/components/PlAdvancedFilter/OperandButton.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.js +1 -0
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.style.js +1 -0
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js +2 -0
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/constants.js +4 -4
- package/dist/components/PlAdvancedFilter/constants.js.map +1 -1
- package/dist/components/PlAdvancedFilter/index.js +3 -1
- package/dist/components/PlAdvancedFilter/index.js.map +1 -1
- package/dist/components/PlAdvancedFilter/utils.js +2 -0
- package/dist/components/PlAdvancedFilter/utils.js.map +1 -1
- package/dist/components/PlAgCellFile/PlAgCellFile.js +2 -0
- package/dist/components/PlAgCellFile/PlAgCellFile.vue2.js +2 -4
- package/dist/components/PlAgCellFile/PlAgCellFile.vue2.js.map +1 -1
- package/dist/components/PlAgCellProgress/PlAgCellProgress.js +2 -0
- package/dist/components/PlAgCellProgress/PlAgCellProgress.vue2.js +2 -0
- package/dist/components/PlAgCellProgress/PlAgCellProgress.vue2.js.map +1 -1
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.js +2 -0
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue2.js +2 -0
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue2.js.map +1 -1
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.js +2 -0
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue2.js +2 -0
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue2.js.map +1 -1
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.js +2 -0
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue2.js +2 -0
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue2.js.map +1 -1
- package/dist/components/PlAgColumnHeader/PlAgColumnHeader.js +2 -0
- package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue2.js +2 -0
- package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue2.js.map +1 -1
- package/dist/components/PlAgCsvExporter/PlAgCsvExporter.js +2 -0
- package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue2.js +2 -0
- package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue2.js.map +1 -1
- package/dist/components/PlAgCsvExporter/export-csv.js +2 -0
- package/dist/components/PlAgCsvExporter/export-csv.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.js +1 -0
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.style.js +1 -0
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js +2 -0
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.js +1 -0
- package/dist/components/PlAgDataTable/PlAgDataTableV2.style.js +1 -0
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +2 -0
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgOverlayLoading.js +2 -0
- package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue2.js +2 -0
- package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.js +2 -0
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue2.js +2 -0
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgRowCount.js +2 -0
- package/dist/components/PlAgDataTable/PlAgRowCount.vue2.js +2 -0
- package/dist/components/PlAgDataTable/PlAgRowCount.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/compositions/useFilterableColumns.js +2 -0
- package/dist/components/PlAgDataTable/compositions/useFilterableColumns.js.map +1 -1
- package/dist/components/PlAgDataTable/compositions/useGrid.js +2 -0
- package/dist/components/PlAgDataTable/compositions/useGrid.js.map +1 -1
- package/dist/components/PlAgDataTable/index.js +2 -0
- package/dist/components/PlAgDataTable/index.js.map +1 -1
- package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.js +1 -0
- package/dist/components/PlAgDataTable/sources/common.js +3 -1
- package/dist/components/PlAgDataTable/sources/common.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/focus-row.js +2 -0
- package/dist/components/PlAgDataTable/sources/focus-row.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/menu-items.js +2 -0
- package/dist/components/PlAgDataTable/sources/menu-items.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/row-number.js +3 -2
- package/dist/components/PlAgDataTable/sources/row-number.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-source-v2.js +2 -5
- package/dist/components/PlAgDataTable/sources/table-source-v2.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-state-v2.js +2 -0
- package/dist/components/PlAgDataTable/sources/table-state-v2.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/value-rendering.js +2 -0
- package/dist/components/PlAgDataTable/sources/value-rendering.js.map +1 -1
- package/dist/components/PlAgDataTable/types.js +2 -0
- package/dist/components/PlAgDataTable/types.js.map +1 -1
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.js +1 -0
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.style.js +1 -0
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js +2 -0
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js.map +1 -1
- package/dist/components/PlAgGridColumnManager/useFilteredItems.js +2 -0
- package/dist/components/PlAgGridColumnManager/useFilteredItems.js.map +1 -1
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.js +2 -0
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue2.js +2 -0
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue2.js.map +1 -1
- package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.js +1 -0
- package/dist/components/PlAgRowNumHeader.js +2 -0
- package/dist/components/PlAgRowNumHeader.vue2.js +2 -0
- package/dist/components/PlAgRowNumHeader.vue2.js.map +1 -1
- package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.js +2 -0
- package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue2.js +2 -0
- package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.js +1 -0
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.style.js +1 -0
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js +2 -0
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/FilterSidebar.js +1 -0
- package/dist/components/PlAnnotations/components/FilterSidebar.style.js +1 -0
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +2 -0
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/PlAnnotations.js +1 -0
- package/dist/components/PlAnnotations/components/PlAnnotations.style.js +1 -0
- package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js +2 -0
- package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.js +1 -0
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.style.js +1 -0
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js +2 -0
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/style.module.js +1 -0
- package/dist/components/PlAnnotations/utils.js +2 -0
- package/dist/components/PlAnnotations/utils.js.map +1 -1
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.js +2 -0
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue2.js +2 -0
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue2.js.map +1 -1
- package/dist/components/PlBtnExportArchive/Item.js +1 -0
- package/dist/components/PlBtnExportArchive/Item.style.js +1 -0
- package/dist/components/PlBtnExportArchive/Item.vue2.js +2 -0
- package/dist/components/PlBtnExportArchive/Item.vue2.js.map +1 -1
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.js +1 -0
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.style.js +1 -0
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue2.js +2 -0
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue2.js.map +1 -1
- package/dist/components/PlBtnExportArchive/Summary.js +1 -0
- package/dist/components/PlBtnExportArchive/Summary.style.js +1 -0
- package/dist/components/PlBtnExportArchive/Summary.vue2.js +2 -0
- package/dist/components/PlBtnExportArchive/Summary.vue2.js.map +1 -1
- package/dist/components/PlTableFastSearch/PlTableFastSearch.js +2 -0
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue2.js +2 -0
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue2.js.map +1 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.js +1 -0
- package/dist/components/PlTableFilters/PlTableFiltersV2.style.js +1 -0
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js +2 -0
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js.map +1 -1
- package/dist/composition/AgGrid/index.js +2 -0
- package/dist/composition/AgGrid/index.js.map +1 -1
- package/dist/composition/fileContent.js +2 -38
- package/dist/composition/fileContent.js.map +1 -1
- package/dist/computedResult.js +2 -30
- package/dist/computedResult.js.map +1 -1
- package/dist/createModel.js +2 -0
- package/dist/createModel.js.map +1 -1
- package/dist/defineApp.js +3 -2
- package/dist/defineApp.js.map +1 -1
- package/dist/defineStore.js +2 -0
- package/dist/defineStore.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/internal/UpdateSerializer.js +2 -6
- package/dist/internal/UpdateSerializer.js.map +1 -1
- package/dist/internal/createAppModel.js +2 -0
- package/dist/internal/createAppModel.js.map +1 -1
- package/dist/internal/createAppV1.js +2 -14
- package/dist/internal/createAppV1.js.map +1 -1
- package/dist/internal/createAppV2.js +3 -17
- package/dist/internal/createAppV2.js.map +1 -1
- package/dist/internal/createAppV3.js +3 -17
- package/dist/internal/createAppV3.js.map +1 -1
- package/dist/internal/service_factories.js +2 -8
- package/dist/internal/service_factories.js.map +1 -1
- package/dist/lib/util/helpers/dist/functions.js +2 -3
- package/dist/lib/util/helpers/dist/functions.js.map +1 -1
- package/dist/lib/util/helpers/dist/hash.js +1 -1
- package/dist/lib/util/helpers/dist/hash.js.map +1 -1
- package/dist/lib/util/helpers/dist/index.js +0 -2
- package/dist/lib/util/helpers/dist/objects.js +2 -45
- package/dist/lib/util/helpers/dist/objects.js.map +1 -1
- package/dist/lib/util/helpers/dist/prettyBytes.js +2 -0
- package/dist/lib/util/helpers/dist/prettyBytes.js.map +1 -1
- package/dist/lib/util/helpers/dist/random.js +2 -0
- package/dist/lib/util/helpers/dist/random.js.map +1 -1
- package/dist/lib/util/helpers/dist/strings.js +2 -0
- package/dist/lib/util/helpers/dist/strings.js.map +1 -1
- package/dist/lib/util/helpers/dist/uniqId.js +2 -0
- package/dist/lib/util/helpers/dist/uniqId.js.map +1 -1
- package/dist/lib/util/helpers/dist/utils.js +2 -1
- package/dist/lib/util/helpers/dist/utils.js.map +1 -1
- package/dist/objectHash.js +2 -5
- package/dist/objectHash.js.map +1 -1
- package/dist/plugins/Monetization/EndOfPeriod.js +1 -0
- package/dist/plugins/Monetization/EndOfPeriod.style.js +1 -0
- package/dist/plugins/Monetization/EndOfPeriod.vue2.js +2 -0
- package/dist/plugins/Monetization/EndOfPeriod.vue2.js.map +1 -1
- package/dist/plugins/Monetization/LimitCard.js +1 -0
- package/dist/plugins/Monetization/LimitCard.style.js +1 -0
- package/dist/plugins/Monetization/LimitCard.vue2.js +2 -0
- package/dist/plugins/Monetization/LimitCard.vue2.js.map +1 -1
- package/dist/plugins/Monetization/MonetizationSidebar.js +2 -0
- package/dist/plugins/Monetization/MonetizationSidebar.vue2.js +2 -0
- package/dist/plugins/Monetization/MonetizationSidebar.vue2.js.map +1 -1
- package/dist/plugins/Monetization/RunStatus.js +1 -0
- package/dist/plugins/Monetization/RunStatus.style.js +1 -0
- package/dist/plugins/Monetization/RunStatus.vue2.js +2 -0
- package/dist/plugins/Monetization/RunStatus.vue2.js.map +1 -1
- package/dist/plugins/Monetization/UserCabinetCard.js +1 -0
- package/dist/plugins/Monetization/UserCabinetCard.style.js +1 -0
- package/dist/plugins/Monetization/UserCabinetCard.vue2.js +2 -0
- package/dist/plugins/Monetization/UserCabinetCard.vue2.js.map +1 -1
- package/dist/plugins/Monetization/useButtonTarget.js +2 -0
- package/dist/plugins/Monetization/useButtonTarget.js.map +1 -1
- package/dist/plugins/Monetization/useInfo.js +2 -0
- package/dist/plugins/Monetization/useInfo.js.map +1 -1
- package/dist/plugins/Monetization/validation.js +4 -4
- package/dist/plugins/Monetization/validation.js.map +1 -1
- package/dist/urls.js +3 -1
- package/dist/urls.js.map +1 -1
- package/dist/usePlugin.js +2 -24
- package/dist/usePlugin.js.map +1 -1
- package/dist/utils.js +3 -1
- package/dist/utils.js.map +1 -1
- package/package.json +11 -11
- package/dist/lib/util/helpers/dist/disposable.js +0 -9
- package/dist/lib/util/helpers/dist/disposable.js.map +0 -1
- package/dist/lib/util/helpers/dist/ref_count_pool.js +0 -4
- package/dist/lib/util/helpers/dist/ref_count_pool.js.map +0 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import './pl-ag-column-header.css';/* empty css */
|
|
2
2
|
import { computed as e, createBlock as t, createCommentVNode as n, createElementBlock as r, createElementVNode as i, createSlots as a, createTextVNode as o, createVNode as s, defineComponent as c, onMounted as l, openBlock as u, ref as d, toDisplayString as f, unref as p, withCtx as m, withModifiers as h } from "vue";
|
|
3
3
|
import { PlMaskIcon16 as g, PlTooltip as _ } from "@milaboratories/uikit";
|
|
4
|
+
//#region src/components/PlAgColumnHeader/PlAgColumnHeader.vue?vue&type=script&setup=true&lang.ts
|
|
4
5
|
var v = { class: "pl-ag-column-header__title d-flex align-center gap-6 flex-grow-1" }, y = /* @__PURE__ */ c({
|
|
5
6
|
__name: "PlAgColumnHeader",
|
|
6
7
|
props: { params: {} },
|
|
@@ -63,6 +64,7 @@ var v = { class: "pl-ag-column-header__title d-flex align-center gap-6 flex-grow
|
|
|
63
64
|
}, [s(p(g), { name: "more" })], 512)) : n("", !0)]));
|
|
64
65
|
}
|
|
65
66
|
});
|
|
67
|
+
//#endregion
|
|
66
68
|
export { y as default };
|
|
67
69
|
|
|
68
70
|
//# sourceMappingURL=PlAgColumnHeader.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAgColumnHeader.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/PlAgColumnHeader/PlAgColumnHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { IHeaderParams, SortDirection } from \"ag-grid-enterprise\";\nimport type { MaskIconName16 } from \"@milaboratories/uikit\";\nimport { PlMaskIcon16, PlTooltip } from \"@milaboratories/uikit\";\nimport { computed, onMounted, ref } from \"vue\";\nimport \"./pl-ag-column-header.scss\";\nimport type { PlAgHeaderComponentParams } from \"./types\";\n\nconst { params } = defineProps<{ params: IHeaderParams & PlAgHeaderComponentParams }>();\n\nconst icon = computed<MaskIconName16>(() => {\n switch (params.type) {\n case undefined:\n case \"Text\":\n return \"cell-type-txt\";\n case \"Number\":\n return \"cell-type-num\";\n case \"File\":\n return \"paper-clip\";\n case \"Date\":\n return \"calendar\";\n case \"Duration\":\n return \"time\";\n case \"Progress\":\n return \"progress\";\n default:\n throw Error(\n `unsupported data type: ${params.type satisfies never} for PlAgColumnHeader component. Column ${params.column.getColId()}`,\n );\n }\n});\n\nconst sortDirection = ref<SortDirection>(null);\nconst refreshSortDirection = () => (sortDirection.value = params.column.getSort() ?? null);\nonMounted(() => refreshSortDirection());\nfunction onSortRequested() {\n if (params.column.isSortable()) {\n params.progressSort();\n refreshSortDirection();\n }\n}\nconst sortIcon = computed<MaskIconName16 | null>(() => {\n const direction = sortDirection.value;\n switch (direction) {\n case \"asc\":\n return \"arrow-up\";\n case \"desc\":\n return \"arrow-down\";\n case null:\n return null;\n default:\n throw Error(\n `unsupported sort direction: ${direction satisfies never}. Column ${params.column.getColId()}`,\n );\n }\n});\n\nconst menuActivatorBtn = ref<HTMLElement>();\nfunction showMenu() {\n const menuActivatorBtnValue = menuActivatorBtn.value;\n if (menuActivatorBtnValue) params.showColumnMenu(menuActivatorBtnValue);\n}\n</script>\n\n<template>\n <div class=\"pl-ag-column-header d-flex align-center gap-6\" @click=\"onSortRequested\">\n <PlTooltip>\n <template v-if=\"params.tooltip\" #tooltip>{{ params.tooltip }}</template>\n <div class=\"pl-ag-column-header__title d-flex align-center gap-6 flex-grow-1\">\n <PlMaskIcon16 :name=\"icon\" class=\"pl-ag-column-header__type-icon\" />\n <span>{{ params.displayName }}</span>\n <PlMaskIcon16 v-if=\"sortIcon\" :name=\"sortIcon\" />\n </div>\n </PlTooltip>\n <div\n v-if=\"params.enableMenu\"\n ref=\"menuActivatorBtn\"\n class=\"pl-ag-column-header__menu-icon\"\n @click.stop=\"showMenu\"\n >\n <PlMaskIcon16 name=\"more\" />\n </div>\n </div>\n</template>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlAgColumnHeader.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/PlAgColumnHeader/PlAgColumnHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { IHeaderParams, SortDirection } from \"ag-grid-enterprise\";\nimport type { MaskIconName16 } from \"@milaboratories/uikit\";\nimport { PlMaskIcon16, PlTooltip } from \"@milaboratories/uikit\";\nimport { computed, onMounted, ref } from \"vue\";\nimport \"./pl-ag-column-header.scss\";\nimport type { PlAgHeaderComponentParams } from \"./types\";\n\nconst { params } = defineProps<{ params: IHeaderParams & PlAgHeaderComponentParams }>();\n\nconst icon = computed<MaskIconName16>(() => {\n switch (params.type) {\n case undefined:\n case \"Text\":\n return \"cell-type-txt\";\n case \"Number\":\n return \"cell-type-num\";\n case \"File\":\n return \"paper-clip\";\n case \"Date\":\n return \"calendar\";\n case \"Duration\":\n return \"time\";\n case \"Progress\":\n return \"progress\";\n default:\n throw Error(\n `unsupported data type: ${params.type satisfies never} for PlAgColumnHeader component. Column ${params.column.getColId()}`,\n );\n }\n});\n\nconst sortDirection = ref<SortDirection>(null);\nconst refreshSortDirection = () => (sortDirection.value = params.column.getSort() ?? null);\nonMounted(() => refreshSortDirection());\nfunction onSortRequested() {\n if (params.column.isSortable()) {\n params.progressSort();\n refreshSortDirection();\n }\n}\nconst sortIcon = computed<MaskIconName16 | null>(() => {\n const direction = sortDirection.value;\n switch (direction) {\n case \"asc\":\n return \"arrow-up\";\n case \"desc\":\n return \"arrow-down\";\n case null:\n return null;\n default:\n throw Error(\n `unsupported sort direction: ${direction satisfies never}. Column ${params.column.getColId()}`,\n );\n }\n});\n\nconst menuActivatorBtn = ref<HTMLElement>();\nfunction showMenu() {\n const menuActivatorBtnValue = menuActivatorBtn.value;\n if (menuActivatorBtnValue) params.showColumnMenu(menuActivatorBtnValue);\n}\n</script>\n\n<template>\n <div class=\"pl-ag-column-header d-flex align-center gap-6\" @click=\"onSortRequested\">\n <PlTooltip>\n <template v-if=\"params.tooltip\" #tooltip>{{ params.tooltip }}</template>\n <div class=\"pl-ag-column-header__title d-flex align-center gap-6 flex-grow-1\">\n <PlMaskIcon16 :name=\"icon\" class=\"pl-ag-column-header__type-icon\" />\n <span>{{ params.displayName }}</span>\n <PlMaskIcon16 v-if=\"sortIcon\" :name=\"sortIcon\" />\n </div>\n </PlTooltip>\n <div\n v-if=\"params.enableMenu\"\n ref=\"menuActivatorBtn\"\n class=\"pl-ag-column-header__menu-icon\"\n @click.stop=\"showMenu\"\n >\n <PlMaskIcon16 name=\"more\" />\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;EAUA,IAAM,IAAO,QAA+B;AAC1C,WAAQ,EAAA,OAAO,MAAf;IACE,KAAK,KAAA;IACL,KAAK,OACH,QAAO;IACT,KAAK,SACH,QAAO;IACT,KAAK,OACH,QAAO;IACT,KAAK,OACH,QAAO;IACT,KAAK,WACH,QAAO;IACT,KAAK,WACH,QAAO;IACT,QACE,OAAM,MACJ,0BAA0B,EAAA,OAAO,KAAqB,0CAA0C,EAAA,OAAO,OAAO,UAAU,GACzH;;IAEL,EAEI,IAAgB,EAAmB,KAAK,EACxC,UAA8B,EAAc,QAAQ,EAAA,OAAO,OAAO,SAAS,IAAI;AACrF,UAAgB,GAAsB,CAAC;EACvC,SAAS,IAAkB;AACzB,GAAI,EAAA,OAAO,OAAO,YAAY,KAC5B,EAAA,OAAO,cAAc,EACrB,GAAsB;;EAG1B,IAAM,IAAW,QAAsC;GACrD,IAAM,IAAY,EAAc;AAChC,WAAQ,GAAR;IACE,KAAK,MACH,QAAO;IACT,KAAK,OACH,QAAO;IACT,KAAK,KACH,QAAO;IACT,QACE,OAAM,MACJ,+BAA+B,EAA0B,WAAW,EAAA,OAAO,OAAO,UAAU,GAC7F;;IAEL,EAEI,IAAmB,GAAkB;EAC3C,SAAS,IAAW;GAClB,IAAM,IAAwB,EAAiB;AAC/C,GAAI,KAAuB,EAAA,OAAO,eAAe,EAAsB;;yBAKvE,EAiBM,OAAA;GAjBD,OAAM;GAAiD,SAAO;MACjE,EAOY,EAAA,EAAA,EAAA,MAAA,EAAA;oBADJ,CAJN,EAIM,OAJN,GAIM;IAHJ,EAAoE,EAAA,EAAA,EAAA;KAArD,MAAM,EAAA;KAAM,OAAM;;IACjC,EAAqC,QAAA,MAAA,EAA5B,EAAA,OAAO,YAAW,EAAA,EAAA;IACP,EAAA,SAAA,GAAA,EAApB,EAAiD,EAAA,EAAA,EAAA;;KAAlB,MAAM,EAAA;;;;MAJvB,EAAA,OAAO,UAAA;SAAU;eAA4B,CAAA,EAAA,EAAjB,EAAA,OAAO,QAAO,EAAA,EAAA,CAAA,CAAA;;uBAQpD,EAAA,OAAO,cAAA,GAAA,EADf,EAOM,OAAA;;YALA;GAAJ,KAAI;GACJ,OAAM;GACL,SAAK,EAAO,GAAQ,CAAA,OAAA,CAAA;MAErB,EAA4B,EAAA,EAAA,EAAA,EAAd,MAAK,QAAM,CAAA,CAAA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,CAAA,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { exportCsv as e } from "./export-csv.js";
|
|
2
2
|
import { Teleport as t, createBlock as n, createCommentVNode as r, createTextVNode as i, createVNode as a, defineComponent as o, openBlock as s, shallowRef as c, toRefs as l, unref as u, withCtx as d, withModifiers as f } from "vue";
|
|
3
3
|
import { PlBtnGhost as p, usePlBlockPageTitleTeleportTarget as m } from "@milaboratories/uikit";
|
|
4
|
+
//#region src/components/PlAgCsvExporter/PlAgCsvExporter.vue?vue&type=script&setup=true&lang.ts
|
|
4
5
|
var h = /* @__PURE__ */ o({
|
|
5
6
|
__name: "PlAgCsvExporter",
|
|
6
7
|
props: { api: {} },
|
|
@@ -21,6 +22,7 @@ var h = /* @__PURE__ */ o({
|
|
|
21
22
|
}, 8, ["loading"])], 8, ["to"])) : r("", !0);
|
|
22
23
|
}
|
|
23
24
|
});
|
|
25
|
+
//#endregion
|
|
24
26
|
export { h as default };
|
|
25
27
|
|
|
26
28
|
//# sourceMappingURL=PlAgCsvExporter.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAgCsvExporter.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/PlAgCsvExporter/PlAgCsvExporter.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { GridApi } from \"ag-grid-enterprise\";\nimport { PlBtnGhost, usePlBlockPageTitleTeleportTarget } from \"@milaboratories/uikit\";\nimport { shallowRef, toRefs } from \"vue\";\nimport { exportCsv } from \"./export-csv\";\n\nconst props = defineProps<{\n api: GridApi;\n}>();\nconst { api: gridApi } = toRefs(props);\n\nconst exporting = shallowRef(false);\nconst initiateExport = () => {\n exporting.value = true;\n exportCsv(gridApi.value, () => (exporting.value = false));\n};\n\nconst teleportTarget = usePlBlockPageTitleTeleportTarget(\"PlAgCsvExporter\");\n</script>\n\n<template>\n <Teleport v-if=\"teleportTarget\" :to=\"teleportTarget\">\n <PlBtnGhost :loading=\"exporting\" icon=\"export\" @click.stop=\"initiateExport\">\n Export\n </PlBtnGhost>\n </Teleport>\n</template>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlAgCsvExporter.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/PlAgCsvExporter/PlAgCsvExporter.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { GridApi } from \"ag-grid-enterprise\";\nimport { PlBtnGhost, usePlBlockPageTitleTeleportTarget } from \"@milaboratories/uikit\";\nimport { shallowRef, toRefs } from \"vue\";\nimport { exportCsv } from \"./export-csv\";\n\nconst props = defineProps<{\n api: GridApi;\n}>();\nconst { api: gridApi } = toRefs(props);\n\nconst exporting = shallowRef(false);\nconst initiateExport = () => {\n exporting.value = true;\n exportCsv(gridApi.value, () => (exporting.value = false));\n};\n\nconst teleportTarget = usePlBlockPageTitleTeleportTarget(\"PlAgCsvExporter\");\n</script>\n\n<template>\n <Teleport v-if=\"teleportTarget\" :to=\"teleportTarget\">\n <PlBtnGhost :loading=\"exporting\" icon=\"export\" @click.stop=\"initiateExport\">\n Export\n </PlBtnGhost>\n </Teleport>\n</template>\n"],"mappings":";;;;;;;;EASA,IAAM,EAAE,KAAK,MAAY,EAHX,EAGwB,EAEhC,IAAY,EAAW,GAAM,EAC7B,UAAuB;AAE3B,GADA,EAAU,QAAQ,IAClB,EAAU,EAAQ,aAAc,EAAU,QAAQ,GAAO;KAGrD,IAAiB,EAAkC,kBAAkB;mBAIzD,EAAA,EAAc,IAAA,GAAA,EAA9B,EAIW,GAAA;;GAJsB,IAAI,EAAA,EAAc;MACjD,EAEa,EAAA,EAAA,EAAA;GAFA,SAAS,EAAA;GAAW,MAAK;GAAU,SAAK,EAAO,GAAc,CAAA,OAAA,CAAA;;oBAE1E,CAAA,GAAA,AAAA,EAAA,OAAA,CAAA,EAF4E,YAE5E,GAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ServerSideRowModelModule as e, createGrid as t } from "ag-grid-enterprise";
|
|
2
|
+
//#region src/components/PlAgCsvExporter/export-csv.ts
|
|
2
3
|
function n() {
|
|
3
4
|
let e = document.createElement("div");
|
|
4
5
|
return e.style.visibility = "hidden", e.style.position = "absolute", document.body.appendChild(e), e;
|
|
@@ -34,6 +35,7 @@ async function i(i, a) {
|
|
|
34
35
|
default: throw a(), Error(`exportCsv unsupported for rowModelType = ${o}`);
|
|
35
36
|
}
|
|
36
37
|
}
|
|
38
|
+
//#endregion
|
|
37
39
|
export { i as exportCsv };
|
|
38
40
|
|
|
39
41
|
//# sourceMappingURL=export-csv.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-csv.js","names":[],"sources":["../../../src/components/PlAgCsvExporter/export-csv.ts"],"sourcesContent":["import {\n type ColDef,\n type ColGroupDef,\n createGrid,\n type GridApi,\n type GridOptions,\n ServerSideRowModelModule,\n} from \"ag-grid-enterprise\";\n\nfunction createGridDiv(): HTMLDivElement {\n const div = document.createElement(\"div\");\n\n div.style.visibility = \"hidden\";\n div.style.position = \"absolute\";\n\n document.body.appendChild(div);\n return div;\n}\n\nfunction destroyGridDiv(cellFake: HTMLDivElement) {\n document.body.removeChild(cellFake);\n}\n\nexport async function exportCsv(gridApi: GridApi, completed: () => void) {\n const rowModel = gridApi.getGridOption(\"rowModelType\");\n switch (rowModel) {\n case \"clientSide\": {\n gridApi.exportDataAsCsv();\n return completed();\n }\n\n case \"serverSide\": {\n const state = gridApi.getServerSideGroupLevelState();\n if (state.length === 0 || state[0].rowCount <= state[0].cacheBlockSize!) {\n gridApi.exportDataAsCsv();\n return completed();\n }\n\n let exportStarted = false;\n const gridDiv = createGridDiv();\n const gridOptions: GridOptions = {\n rowModelType: \"serverSide\",\n columnDefs:\n gridApi\n .getColumnDefs()\n ?.filter((def: ColDef | ColGroupDef): def is ColDef => !(\"children\" in def))\n .map((def) => ({\n headerName: def.headerName,\n field: def.field,\n valueFormatter: def.valueFormatter,\n valueGetter: def.valueGetter,\n })) ?? [],\n serverSideDatasource: gridApi.getGridOption(\"serverSideDatasource\"),\n cacheBlockSize: state[0].rowCount,\n onModelUpdated: (event) => {\n const state = event.api.getServerSideGroupLevelState();\n if (!exportStarted && state.length > 0 && state[0].rowCount === state[0].cacheBlockSize) {\n exportStarted = true;\n event.api.exportDataAsCsv();\n destroyGridDiv(gridDiv);\n return completed();\n }\n },\n defaultCsvExportParams: gridApi.getGridOption(\"defaultCsvExportParams\"),\n };\n return createGrid(gridDiv, gridOptions, { modules: [ServerSideRowModelModule] });\n }\n\n default: {\n completed();\n throw Error(`exportCsv unsupported for rowModelType = ${rowModel}`);\n }\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"export-csv.js","names":[],"sources":["../../../src/components/PlAgCsvExporter/export-csv.ts"],"sourcesContent":["import {\n type ColDef,\n type ColGroupDef,\n createGrid,\n type GridApi,\n type GridOptions,\n ServerSideRowModelModule,\n} from \"ag-grid-enterprise\";\n\nfunction createGridDiv(): HTMLDivElement {\n const div = document.createElement(\"div\");\n\n div.style.visibility = \"hidden\";\n div.style.position = \"absolute\";\n\n document.body.appendChild(div);\n return div;\n}\n\nfunction destroyGridDiv(cellFake: HTMLDivElement) {\n document.body.removeChild(cellFake);\n}\n\nexport async function exportCsv(gridApi: GridApi, completed: () => void) {\n const rowModel = gridApi.getGridOption(\"rowModelType\");\n switch (rowModel) {\n case \"clientSide\": {\n gridApi.exportDataAsCsv();\n return completed();\n }\n\n case \"serverSide\": {\n const state = gridApi.getServerSideGroupLevelState();\n if (state.length === 0 || state[0].rowCount <= state[0].cacheBlockSize!) {\n gridApi.exportDataAsCsv();\n return completed();\n }\n\n let exportStarted = false;\n const gridDiv = createGridDiv();\n const gridOptions: GridOptions = {\n rowModelType: \"serverSide\",\n columnDefs:\n gridApi\n .getColumnDefs()\n ?.filter((def: ColDef | ColGroupDef): def is ColDef => !(\"children\" in def))\n .map((def) => ({\n headerName: def.headerName,\n field: def.field,\n valueFormatter: def.valueFormatter,\n valueGetter: def.valueGetter,\n })) ?? [],\n serverSideDatasource: gridApi.getGridOption(\"serverSideDatasource\"),\n cacheBlockSize: state[0].rowCount,\n onModelUpdated: (event) => {\n const state = event.api.getServerSideGroupLevelState();\n if (!exportStarted && state.length > 0 && state[0].rowCount === state[0].cacheBlockSize) {\n exportStarted = true;\n event.api.exportDataAsCsv();\n destroyGridDiv(gridDiv);\n return completed();\n }\n },\n defaultCsvExportParams: gridApi.getGridOption(\"defaultCsvExportParams\"),\n };\n return createGrid(gridDiv, gridOptions, { modules: [ServerSideRowModelModule] });\n }\n\n default: {\n completed();\n throw Error(`exportCsv unsupported for rowModelType = ${rowModel}`);\n }\n }\n}\n"],"mappings":";;AASA,SAAS,IAAgC;CACvC,IAAM,IAAM,SAAS,cAAc,MAAM;AAMzC,QAJA,EAAI,MAAM,aAAa,UACvB,EAAI,MAAM,WAAW,YAErB,SAAS,KAAK,YAAY,EAAI,EACvB;;AAGT,SAAS,EAAe,GAA0B;AAChD,UAAS,KAAK,YAAY,EAAS;;AAGrC,eAAsB,EAAU,GAAkB,GAAuB;CACvE,IAAM,IAAW,EAAQ,cAAc,eAAe;AACtD,SAAQ,GAAR;EACE,KAAK,aAEH,QADA,EAAQ,iBAAiB,EAClB,GAAW;EAGpB,KAAK,cAAc;GACjB,IAAM,IAAQ,EAAQ,8BAA8B;AACpD,OAAI,EAAM,WAAW,KAAK,EAAM,GAAG,YAAY,EAAM,GAAG,eAEtD,QADA,EAAQ,iBAAiB,EAClB,GAAW;GAGpB,IAAI,IAAgB,IACd,IAAU,GAAe;AA0B/B,UAAO,EAAW,GAzBe;IAC/B,cAAc;IACd,YACE,EACG,eAAe,EACd,QAAQ,MAA6C,EAAE,cAAc,GAAK,CAC3E,KAAK,OAAS;KACb,YAAY,EAAI;KAChB,OAAO,EAAI;KACX,gBAAgB,EAAI;KACpB,aAAa,EAAI;KAClB,EAAE,IAAI,EAAE;IACb,sBAAsB,EAAQ,cAAc,uBAAuB;IACnE,gBAAgB,EAAM,GAAG;IACzB,iBAAiB,MAAU;KACzB,IAAM,IAAQ,EAAM,IAAI,8BAA8B;AACtD,SAAI,CAAC,KAAiB,EAAM,SAAS,KAAK,EAAM,GAAG,aAAa,EAAM,GAAG,eAIvE,QAHA,IAAgB,IAChB,EAAM,IAAI,iBAAiB,EAC3B,EAAe,EAAQ,EAChB,GAAW;;IAGtB,wBAAwB,EAAQ,cAAc,yBAAyB;IACxE,EACuC,EAAE,SAAS,CAAC,EAAyB,EAAE,CAAC;;EAGlF,QAEE,OADA,GAAW,EACL,MAAM,4CAA4C,IAAW"}
|
|
@@ -2,6 +2,7 @@ import e from "../../_virtual/_plugin-vue_export-helper.js";
|
|
|
2
2
|
import t from "./PlAgDataTableSheets.vue2.js";
|
|
3
3
|
import n from "./PlAgDataTableSheets.style.js";
|
|
4
4
|
var r = /* @__PURE__ */ e(t, [["__cssModules", { $style: n }]]);
|
|
5
|
+
//#endregion
|
|
5
6
|
export { r as default };
|
|
6
7
|
|
|
7
8
|
//# sourceMappingURL=PlAgDataTableSheets.js.map
|
|
@@ -3,6 +3,7 @@ import "../../lib/util/helpers/dist/index.js";
|
|
|
3
3
|
import { Fragment as t, computed as n, createBlock as r, createCommentVNode as i, createElementBlock as a, defineComponent as o, mergeModels as s, normalizeClass as c, openBlock as l, renderList as u, renderSlot as d, unref as f, useModel as p, watchEffect as m } from "vue";
|
|
4
4
|
import { getAxisId as h } from "@platforma-sdk/model";
|
|
5
5
|
import { PlDropdownLine as g } from "@milaboratories/uikit";
|
|
6
|
+
//#region src/components/PlAgDataTable/PlAgDataTableSheets.vue?vue&type=script&setup=true&lang.ts
|
|
6
7
|
var _ = /* @__PURE__ */ o({
|
|
7
8
|
__name: "PlAgDataTableSheets",
|
|
8
9
|
props: /* @__PURE__ */ s({ settings: {} }, {
|
|
@@ -64,6 +65,7 @@ var _ = /* @__PURE__ */ o({
|
|
|
64
65
|
], 2)) : i("", !0);
|
|
65
66
|
}
|
|
66
67
|
});
|
|
68
|
+
//#endregion
|
|
67
69
|
export { _ as default };
|
|
68
70
|
|
|
69
71
|
//# sourceMappingURL=PlAgDataTableSheets.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAgDataTableSheets.vue_vue_type_script_setup_true_lang.js","names":["$slots","$style"],"sources":["../../../src/components/PlAgDataTable/PlAgDataTableSheets.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { PlDropdownLine } from \"@milaboratories/uikit\";\nimport type { PlDataTableSheet, PlDataTableSheetState } from \"@platforma-sdk/model\";\nimport { getAxisId } from \"@platforma-sdk/model\";\nimport { computed, watchEffect } from \"vue\";\nimport type { PlDataTableSheetsSettings, PlDataTableSheetNormalized } from \"./types\";\nimport { isJsonEqual } from \"@milaboratories/helpers\";\n\nconst state = defineModel<PlDataTableSheetState[]>({\n default: [],\n});\nconst props = defineProps<{\n settings: Readonly<PlDataTableSheetsSettings>;\n}>();\n\n// Normalize sheets: skip sheets with no options, set default values\nconst sheets = computed<PlDataTableSheetNormalized[]>(() => {\n return props.settings.sheets\n .filter((sheet) => sheet.options.length > 0)\n .map((sheet, i) => {\n const axisId = getAxisId(sheet.axis);\n\n const getDefaultValue = (): string | number => {\n const cachedState = props.settings.cachedState.find((s) => {\n return isJsonEqual(s.axisId, axisId);\n });\n if (cachedState && isValidOption(sheet, cachedState.value)) {\n return cachedState.value;\n }\n if (sheet.defaultValue && isValidOption(sheet, sheet.defaultValue)) {\n return sheet.defaultValue;\n }\n return sheet.options[0].value;\n };\n\n const makePrefix = (): string => {\n return (sheet.axis.annotations?.[\"pl7.app/label\"]?.trim() ?? `Unlabeled axis ${i}`) + \":\";\n };\n\n return {\n axisId,\n prefix: makePrefix(),\n options: sheet.options,\n defaultValue: getDefaultValue(),\n } satisfies PlDataTableSheetNormalized;\n });\n});\n\nfunction isValidOption(sheet: PlDataTableSheet, value: string | number): boolean {\n return sheet.options.some((option) => option.value === value);\n}\n\n// Restore state from settings\nwatchEffect(() => {\n const oldState = [...state.value];\n const newState = sheets.value.map((sheet, i) => makeStateEntry(i, sheet.defaultValue));\n if (!isJsonEqual(oldState, newState)) {\n state.value = newState;\n }\n});\n\nfunction makeStateEntry(i: number, value: string | number): PlDataTableSheetState {\n const axisId = sheets.value[i].axisId;\n return {\n axisId,\n value,\n };\n}\n\nfunction onSheetChanged(i: number, newValue: string | number): void {\n const oldState = [...state.value];\n const stateEntry = makeStateEntry(i, newValue);\n if (!isJsonEqual(oldState[i], stateEntry)) {\n const newState = [...oldState];\n newState[i] = stateEntry;\n state.value = newState;\n }\n}\n</script>\n\n<template>\n <div v-if=\"$slots['before'] || sheets.length > 0 || $slots['after']\" :class=\"$style.container\">\n <slot name=\"before\" />\n <template v-for=\"(sheet, i) in sheets\" :key=\"i\">\n <!-- For some reason state[i] is undefined when the sheet initially loads, so v-if to suppress the error -->\n <PlDropdownLine\n v-if=\"state[i]\"\n :model-value=\"state[i].value\"\n :options=\"sheet.options\"\n :prefix=\"sheet.prefix\"\n @update:model-value=\"(newValue: string | number) => onSheetChanged(i, newValue)\"\n />\n </template>\n <slot name=\"after\" />\n </div>\n</template>\n\n<style lang=\"css\" module>\n.container {\n display: flex;\n flex-direction: row;\n gap: 12px;\n flex-wrap: wrap;\n z-index: 3;\n}\n</style>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlAgDataTableSheets.vue_vue_type_script_setup_true_lang.js","names":["$slots","$style"],"sources":["../../../src/components/PlAgDataTable/PlAgDataTableSheets.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { PlDropdownLine } from \"@milaboratories/uikit\";\nimport type { PlDataTableSheet, PlDataTableSheetState } from \"@platforma-sdk/model\";\nimport { getAxisId } from \"@platforma-sdk/model\";\nimport { computed, watchEffect } from \"vue\";\nimport type { PlDataTableSheetsSettings, PlDataTableSheetNormalized } from \"./types\";\nimport { isJsonEqual } from \"@milaboratories/helpers\";\n\nconst state = defineModel<PlDataTableSheetState[]>({\n default: [],\n});\nconst props = defineProps<{\n settings: Readonly<PlDataTableSheetsSettings>;\n}>();\n\n// Normalize sheets: skip sheets with no options, set default values\nconst sheets = computed<PlDataTableSheetNormalized[]>(() => {\n return props.settings.sheets\n .filter((sheet) => sheet.options.length > 0)\n .map((sheet, i) => {\n const axisId = getAxisId(sheet.axis);\n\n const getDefaultValue = (): string | number => {\n const cachedState = props.settings.cachedState.find((s) => {\n return isJsonEqual(s.axisId, axisId);\n });\n if (cachedState && isValidOption(sheet, cachedState.value)) {\n return cachedState.value;\n }\n if (sheet.defaultValue && isValidOption(sheet, sheet.defaultValue)) {\n return sheet.defaultValue;\n }\n return sheet.options[0].value;\n };\n\n const makePrefix = (): string => {\n return (sheet.axis.annotations?.[\"pl7.app/label\"]?.trim() ?? `Unlabeled axis ${i}`) + \":\";\n };\n\n return {\n axisId,\n prefix: makePrefix(),\n options: sheet.options,\n defaultValue: getDefaultValue(),\n } satisfies PlDataTableSheetNormalized;\n });\n});\n\nfunction isValidOption(sheet: PlDataTableSheet, value: string | number): boolean {\n return sheet.options.some((option) => option.value === value);\n}\n\n// Restore state from settings\nwatchEffect(() => {\n const oldState = [...state.value];\n const newState = sheets.value.map((sheet, i) => makeStateEntry(i, sheet.defaultValue));\n if (!isJsonEqual(oldState, newState)) {\n state.value = newState;\n }\n});\n\nfunction makeStateEntry(i: number, value: string | number): PlDataTableSheetState {\n const axisId = sheets.value[i].axisId;\n return {\n axisId,\n value,\n };\n}\n\nfunction onSheetChanged(i: number, newValue: string | number): void {\n const oldState = [...state.value];\n const stateEntry = makeStateEntry(i, newValue);\n if (!isJsonEqual(oldState[i], stateEntry)) {\n const newState = [...oldState];\n newState[i] = stateEntry;\n state.value = newState;\n }\n}\n</script>\n\n<template>\n <div v-if=\"$slots['before'] || sheets.length > 0 || $slots['after']\" :class=\"$style.container\">\n <slot name=\"before\" />\n <template v-for=\"(sheet, i) in sheets\" :key=\"i\">\n <!-- For some reason state[i] is undefined when the sheet initially loads, so v-if to suppress the error -->\n <PlDropdownLine\n v-if=\"state[i]\"\n :model-value=\"state[i].value\"\n :options=\"sheet.options\"\n :prefix=\"sheet.prefix\"\n @update:model-value=\"(newValue: string | number) => onSheetChanged(i, newValue)\"\n />\n </template>\n <slot name=\"after\" />\n </div>\n</template>\n\n<style lang=\"css\" module>\n.container {\n display: flex;\n flex-direction: row;\n gap: 12px;\n flex-wrap: wrap;\n z-index: 3;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;EAQA,IAAM,IAAQ,EAAoC,GAAA,aAEhD,EACI,IAAQ,GAKR,IAAS,QACN,EAAM,SAAS,OACnB,QAAQ,MAAU,EAAM,QAAQ,SAAS,EAAC,CAC1C,KAAK,GAAO,MAAM;GACjB,IAAM,IAAS,EAAU,EAAM,KAAK;AAmBpC,UAAO;IACL;IACA,SALQ,EAAM,KAAK,cAAc,kBAAkB,MAAM,IAAI,kBAAkB,OAAO;IAMtF,SAAS,EAAM;IACf,qBArB6C;KAC7C,IAAM,IAAc,EAAM,SAAS,YAAY,MAAM,MAC5C,EAAY,EAAE,QAAQ,EAAO,CACpC;AAOF,YANI,KAAe,EAAc,GAAO,EAAY,MAAM,GACjD,EAAY,QAEjB,EAAM,gBAAgB,EAAc,GAAO,EAAM,aAAa,GACzD,EAAM,eAER,EAAM,QAAQ,GAAG;QAWO;IAChC;IACD,CACJ;EAEF,SAAS,EAAc,GAAyB,GAAiC;AAC/E,UAAO,EAAM,QAAQ,MAAM,MAAW,EAAO,UAAU,EAAM;;AAI/D,UAAkB;GAChB,IAAM,IAAW,CAAC,GAAG,EAAM,MAAM,EAC3B,IAAW,EAAO,MAAM,KAAK,GAAO,MAAM,EAAe,GAAG,EAAM,aAAa,CAAC;AACtF,GAAK,EAAY,GAAU,EAAS,KAClC,EAAM,QAAQ;IAEhB;EAEF,SAAS,EAAe,GAAW,GAA+C;AAEhF,UAAO;IACL,QAFa,EAAO,MAAM,GAAG;IAG7B;IACD;;EAGH,SAAS,EAAe,GAAW,GAAiC;GAClE,IAAM,IAAW,CAAC,GAAG,EAAM,MAAM,EAC3B,IAAa,EAAe,GAAG,EAAS;AAC9C,OAAI,CAAC,EAAY,EAAS,IAAI,EAAW,EAAE;IACzC,IAAM,IAAW,CAAC,GAAG,EAAS;AAE9B,IADA,EAAS,KAAK,GACd,EAAM,QAAQ;;;mBAMLA,EAAAA,OAAM,UAAc,EAAA,MAAO,SAAM,KAAQA,EAAAA,OAAM,SAAA,GAAA,EAA1D,EAaM,OAAA;;GAbgE,OAAK,EAAEC,EAAAA,OAAO,UAAS;;GAC3F,EAAsB,EAAA,QAAA,SAAA;WACtB,EASW,GAAA,MAAA,EAToB,EAAA,QAAb,GAAO,wBAAoB,GAAC,EAAA,CAGpC,EAAA,MAAM,MAAA,GAAA,EADd,EAME,EAAA,EAAA,EAAA;;IAJC,eAAa,EAAA,MAAM,GAAG;IACtB,SAAS,EAAM;IACf,QAAQ,EAAM;IACd,wBAAqB,MAA8B,EAAe,GAAG,EAAQ;;;;;;;GAGlF,EAAqB,EAAA,QAAA,QAAA"}
|
|
@@ -2,6 +2,7 @@ import e from "../../_virtual/_plugin-vue_export-helper.js";
|
|
|
2
2
|
import t from "./PlAgDataTableV2.vue2.js";
|
|
3
3
|
import n from "./PlAgDataTableV2.style.js";
|
|
4
4
|
var r = /* @__PURE__ */ e(t, [["__cssModules", { $style: n }]]);
|
|
5
|
+
//#endregion
|
|
5
6
|
export { r as default };
|
|
6
7
|
|
|
7
8
|
//# sourceMappingURL=PlAgDataTableV2.js.map
|
|
@@ -19,6 +19,7 @@ import { AgGridTheme as ie } from "../../AgGridVue/AgGridTheme.js";
|
|
|
19
19
|
import { computed as d, createBlock as f, createCommentVNode as p, createElementBlock as ae, createSlots as m, createVNode as h, defineComponent as g, effectScope as _, isRef as v, mergeModels as y, nextTick as oe, normalizeClass as b, openBlock as x, ref as S, renderSlot as C, toRefs as se, unref as w, useModel as T, watch as E, watchEffect as D, withCtx as O } from "vue";
|
|
20
20
|
import { canonicalizeJson as k, createPlSelectionModel as A, getAxisId as j, getRawPlatformaInstance as ce, isAbortError as M, isColumnOptional as le, matchAxisId as N } from "@platforma-sdk/model";
|
|
21
21
|
import { AgGridVue as ue } from "ag-grid-vue3";
|
|
22
|
+
//#region src/components/PlAgDataTable/PlAgDataTableV2.vue?vue&type=script&setup=true&lang.ts
|
|
22
23
|
var P = /* @__PURE__ */ g({
|
|
23
24
|
__name: "PlAgDataTableV2",
|
|
24
25
|
props: /* @__PURE__ */ y({
|
|
@@ -328,6 +329,7 @@ var P = /* @__PURE__ */ g({
|
|
|
328
329
|
], 2));
|
|
329
330
|
}
|
|
330
331
|
});
|
|
332
|
+
//#endregion
|
|
331
333
|
export { P as default };
|
|
332
334
|
|
|
333
335
|
//# sourceMappingURL=PlAgDataTableV2.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAgDataTableV2.vue_vue_type_script_setup_true_lang.js","names":["$style","$slots"],"sources":["../../../src/components/PlAgDataTable/PlAgDataTableV2.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { promiseTimeout, isJsonEqual } from \"@milaboratories/helpers\";\nimport type {\n AxisId,\n PlDataTableGridStateCore,\n PlDataTableStateV2,\n PlSelectionModel,\n PlTableColumnIdJson,\n PTableColumnSpec,\n PTableKey,\n} from \"@platforma-sdk/model\";\nimport {\n getRawPlatformaInstance,\n createPlSelectionModel,\n matchAxisId,\n getAxisId,\n canonicalizeJson,\n isAbortError,\n isColumnOptional,\n} from \"@platforma-sdk/model\";\nimport type { CellRendererSelectorFunc, GridApi, GridState } from \"ag-grid-enterprise\";\nimport { AgGridVue } from \"ag-grid-vue3\";\nimport { computed, effectScope, nextTick, ref, toRefs, watch, watchEffect } from \"vue\";\nimport PlAgCsvExporter from \"../PlAgCsvExporter/PlAgCsvExporter.vue\";\nimport { PlAgGridColumnManager } from \"../PlAgGridColumnManager\";\nimport PlTableFiltersV2 from \"../PlTableFilters/PlTableFiltersV2.vue\";\nimport { PlTableFastSearch } from \"../PlTableFastSearch\";\nimport PlAgDataTableSheets from \"./PlAgDataTableSheets.vue\";\nimport PlAgRowCount from \"./PlAgRowCount.vue\";\nimport { DeferredCircular, ensureNodeVisible } from \"./sources/focus-row\";\nimport { PlAgDataTableRowNumberColId } from \"./sources/row-number\";\nimport type { PlAgCellButtonAxisParams } from \"./sources/table-source-v2\";\nimport { calculateGridOptions } from \"./sources/table-source-v2\";\nimport { useTableState } from \"./sources/table-state-v2\";\nimport type {\n PlAgDataTableV2Controller,\n PlAgDataTableV2Row,\n PlAgOverlayLoadingParams,\n PlAgOverlayNoRowsParams,\n PlDataTableSettingsV2,\n PlDataTableSheetsSettings,\n PlTableRowId,\n} from \"./types\";\nimport { useFilterableColumns } from \"./compositions/useFilterableColumns\";\nimport { useGrid } from \"./compositions/useGrid\";\nimport { AgGridTheme } from \"../../AgGridVue/AgGridTheme\";\n\nconst tableState = defineModel<PlDataTableStateV2>({\n required: true,\n});\n/** Warning: selection model value updates are ignored, use updateSelection instead */\nconst selection = defineModel<PlSelectionModel>(\"selection\");\nconst props = defineProps<{\n /** Required component settings */\n settings: Readonly<PlDataTableSettingsV2>;\n\n /**\n * The disableColumnsPanel prop controls the display of a button that activates\n * the columns management panel in the table. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n disableColumnsPanel?: boolean;\n\n /**\n * The disableFiltersPanel prop controls the display of a button that activates\n * the filters management panel in the table. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n disableFiltersPanel?: boolean;\n\n /**\n * The showExportButton prop controls the display of a button that allows\n * to export table data in CSV format. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n showExportButton?: boolean;\n\n /**\n * The AxisId property is used to configure and display the PlAgTextAndButtonCell component\n */\n showCellButtonForAxisId?: AxisId;\n\n /**\n * If cellButtonInvokeRowsOnDoubleClick = true, clicking a button inside the row\n * triggers the doubleClick event for the entire row.\n *\n * If cellButtonInvokeRowsOnDoubleClick = false, the doubleClick event for the row\n * is not triggered, but will triggered cellButtonClicked event with (key: PTableRowKey) argument.\n */\n cellButtonInvokeRowsOnDoubleClick?: boolean;\n\n /** @see {@link PlAgOverlayLoadingParams.loadingText} */\n loadingText?: string;\n\n /** @see {@link PlAgOverlayLoadingParams.runningText} */\n runningText?: string;\n\n /** @see {@link PlAgOverlayLoadingParams.notReadyText} */\n notReadyText?: string;\n\n /** @see {@link PlAgOverlayNoRowsParams.text} */\n noRowsText?: string;\n\n /**\n * Callback to override the default renderer for a given cell.\n * @see https://www.ag-grid.com/vue-data-grid/component-cell-renderer/#dynamic-component-selection\n */\n cellRendererSelector?: CellRendererSelectorFunc<PlAgDataTableV2Row>;\n}>();\nconst { settings } = toRefs(props);\nconst emit = defineEmits<{\n rowDoubleClicked: [key?: PTableKey];\n cellButtonClicked: [key?: PTableKey];\n newDataRendered: [];\n}>();\n\nconst dataRenderedTracker = new DeferredCircular<GridApi<PlAgDataTableV2Row>>();\nconst { gridApi, gridOptions } = useGrid({\n selection,\n noRowsText: props.noRowsText,\n runningText: props.runningText,\n loadingText: props.loadingText,\n notReadyText: props.notReadyText,\n cellRendererSelector: props.cellRendererSelector,\n});\nlet isReloading = false;\ngridOptions.value.onGridPreDestroyed = (event) => {\n if (!isReloading) {\n gridOptions.value.initialState = gridState.value = normalizeColumnVisibility(\n makePartialState(event.api.getState()),\n gridState.value,\n event.api,\n );\n }\n gridApi.value = null;\n};\ngridOptions.value.onRowDoubleClicked = (event) => {\n if (event.data && event.data.axesKey) emit(\"rowDoubleClicked\", event.data.axesKey);\n};\ngridOptions.value.onStateUpdated = (event) => {\n const partialState = normalizeColumnVisibility(\n makePartialState(event.state),\n gridState.value,\n event.api,\n );\n // We have to keep initialState synchronized with gridState for gridState recovery after key updating.\n gridOptions.value.initialState = gridState.value = partialState;\n\n if (!isJsonEqual(event.sources, [\"columnSizing\"])) {\n event.api.autoSizeColumns(\n event.api\n .getAllDisplayedColumns()\n .filter((column) => column.getColId() !== PlAgDataTableRowNumberColId),\n );\n }\n};\n\nconst [filterableColumns, visibleFilterableColumns] = useFilterableColumns(\n () => settings.value.sourceId,\n () => gridOptions.value.columnDefs ?? null,\n);\nconst { gridState, sheetsState, filtersState, searchString } = useTableState(\n tableState,\n settings,\n visibleFilterableColumns,\n);\nconst sheetsSettings = computed<PlDataTableSheetsSettings>(() => {\n const settingsCopy = { ...settings.value };\n return settingsCopy.sourceId !== null\n ? {\n sheets: settingsCopy.sheets ?? [],\n cachedState: [...sheetsState.value],\n }\n : {\n sheets: [],\n cachedState: [],\n };\n});\ngridOptions.value.initialState = gridState.value;\n\n// Restore proper types erased by AgGrid\nfunction makePartialState(state: GridState): PlDataTableGridStateCore {\n return {\n columnOrder: state.columnOrder as\n | {\n orderedColIds: PlTableColumnIdJson[];\n }\n | undefined,\n sort: state.sort as\n | {\n sortModel: {\n colId: PlTableColumnIdJson;\n sort: \"asc\" | \"desc\";\n }[];\n }\n | undefined,\n columnVisibility: state.columnVisibility as\n | {\n hiddenColIds: PlTableColumnIdJson[];\n }\n | undefined,\n };\n}\n\n// AG Grid returns columnVisibility: undefined when all columns are visible.\n// We need to distinguish \"no state yet\" (use isColumnOptional defaults) from\n// \"user explicitly showed all columns\" (store []). This function normalizes\n// the undefined from AG Grid based on the previous state.\nfunction normalizeColumnVisibility(\n partialState: PlDataTableGridStateCore,\n prevState: PlDataTableGridStateCore,\n api: GridApi<PlAgDataTableV2Row>,\n): PlDataTableGridStateCore {\n if (partialState.columnVisibility !== undefined) return partialState;\n\n if (prevState.columnVisibility !== undefined) {\n // Had explicit visibility state before → user made all columns visible → store [].\n return { ...partialState, columnVisibility: { hiddenColIds: [] } };\n }\n\n // No previous explicit state → compute defaults from current columns\n // to replicate: hide: hiddenColIds?.includes(colId) ?? isColumnOptional(spec.spec)\n const defaultHidden = getDefaultHiddenColIds(api);\n if (defaultHidden.length > 0) {\n return { ...partialState, columnVisibility: { hiddenColIds: defaultHidden } };\n }\n\n return partialState;\n}\n\nfunction getDefaultHiddenColIds(api: GridApi<PlAgDataTableV2Row>): PlTableColumnIdJson[] {\n const cols = api.getAllGridColumns();\n if (!cols) return [];\n return cols\n .filter((col) => {\n const spec = col.getColDef().context as PTableColumnSpec | undefined;\n return spec && isColumnOptional(spec.spec);\n })\n .map((col) => col.getColId() as PlTableColumnIdJson);\n}\n\n// Normalize columnVisibility for comparison: undefined and { hiddenColIds: [] } are equivalent.\nfunction stateForReloadCompare(state: PlDataTableGridStateCore): PlDataTableGridStateCore {\n const cv = state.columnVisibility;\n const normalizedCv = !cv || cv.hiddenColIds.length === 0 ? undefined : state.columnVisibility;\n return { ...state, columnVisibility: normalizedCv };\n}\n\n// Reload AgGrid when new state arrives from server\nconst reloadKey = ref(0);\nwatch(\n () => [gridApi.value, gridState.value] as const,\n ([gridApi, gridState]) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n const selfState = makePartialState(gridApi.getState());\n if (\n !isJsonEqual(gridState, {}) &&\n !isJsonEqual(stateForReloadCompare(gridState), stateForReloadCompare(selfState))\n ) {\n isReloading = true;\n gridOptions.value.initialState = gridState;\n ++reloadKey.value;\n nextTick(() => {\n isReloading = false;\n });\n }\n },\n);\n\n// Make cellRendererSelector reactive\nconst cellRendererSelector = computed(() => props.cellRendererSelector ?? null);\nwatch(\n () => [gridApi.value, cellRendererSelector.value] as const,\n ([gridApi, cellRendererSelector]) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n gridApi.setGridOption(\"defaultColDef\", {\n ...gridOptions.value.defaultColDef,\n cellRendererSelector: cellRendererSelector ?? undefined,\n });\n },\n);\n\ndefineExpose<PlAgDataTableV2Controller>({\n focusRow: async (rowKey) => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return false;\n\n return ensureNodeVisible(gridApi, (row) => isJsonEqual(row.data?.axesKey, rowKey));\n },\n updateSelection: async ({ axesSpec, selectedKeys }) => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return false;\n\n const axes = selection.value?.axesSpec;\n if (!axes || axes.length !== axesSpec.length) return false;\n\n const mapping = axesSpec.map((spec) => {\n const id = getAxisId(spec);\n return axes.findIndex((axis) => matchAxisId(axis, id));\n });\n const mappingSet = new Set(mapping);\n if (mappingSet.has(-1) || mappingSet.size !== axesSpec.length) return false;\n\n const selectedNodes = selectedKeys.map((key) =>\n canonicalizeJson<PlTableRowId>(mapping.map((index) => key[index])),\n );\n const oldSelectedKeys = gridApi.getServerSideSelectionState()?.toggledNodes ?? [];\n if (!isJsonEqual(oldSelectedKeys, selectedNodes)) {\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: selectedNodes,\n });\n\n // wait for `onSelectionChanged` to update `selection` model\n const scope = effectScope();\n const { resolve, promise } = Promise.withResolvers();\n scope.run(() => watch(selection, resolve, { once: true }));\n try {\n await promiseTimeout(promise, 500);\n } catch {\n return false;\n } finally {\n scope.stop();\n }\n }\n return true;\n },\n});\n\n// Update AgGrid when settings change\nconst defaultSelection = createPlSelectionModel();\nlet oldSettings: PlDataTableSettingsV2 | null = null;\nconst generation = ref(0);\nwatch(\n () => [gridApi.value, settings.value] as const,\n ([gridApi, settings]) => {\n // Wait for AgGrid reinitialization, gridApi will eventually become initialized\n if (!gridApi || gridApi.isDestroyed()) return;\n // Verify that this is not a false watch trigger\n if (isJsonEqual(settings, oldSettings)) return;\n ++generation.value;\n try {\n // Hide no rows overlay if it is shown, or else loading overlay will not be shown\n gridApi.hideOverlay();\n dataRenderedTracker.reset();\n\n // No data source selected -> reset state to default\n if (settings.sourceId === null) {\n gridApi.updateGridOptions({\n loading: true,\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n variant: settings.pending ? \"running\" : \"not-ready\",\n } satisfies PlAgOverlayLoadingParams,\n columnDefs: undefined,\n serverSideDatasource: undefined,\n });\n if (selection.value) {\n if (selection.value && !isJsonEqual(selection.value, defaultSelection)) {\n selection.value = createPlSelectionModel();\n }\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n return;\n }\n\n // Data source changed -> show full page loader, clear selection\n if (settings.sourceId !== oldSettings?.sourceId) {\n gridApi.updateGridOptions({\n loading: true,\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n variant: \"loading\",\n } satisfies PlAgOverlayLoadingParams,\n });\n if (selection.value && oldSettings?.sourceId) {\n if (selection.value && !isJsonEqual(selection.value, defaultSelection)) {\n selection.value = createPlSelectionModel();\n }\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n }\n\n // Model updated -> show skeletons instead of data\n const sourceChanged =\n settings.model?.sourceId && settings.model.sourceId !== settings.sourceId;\n if (!settings.model || sourceChanged) {\n const state = gridApi.getServerSideGroupLevelState();\n const rowCount = !sourceChanged && state.length > 0 ? state[0].rowCount : 1;\n return gridApi.updateGridOptions({\n serverSideDatasource: {\n getRows: (params) => {\n params.success({ rowData: [], rowCount });\n },\n },\n });\n }\n\n // Model ready -> calculate new state\n const stateGeneration = generation.value;\n calculateGridOptions({\n generation,\n pfDriver: getRawPlatformaInstance().pFrameDriver,\n model: settings.model,\n sheets: settings.sheets ?? [],\n dataRenderedTracker,\n hiddenColIds: gridState.value.columnVisibility?.hiddenColIds,\n cellButtonAxisParams: {\n showCellButtonForAxisId: props.showCellButtonForAxisId,\n cellButtonInvokeRowsOnDoubleClick: props.cellButtonInvokeRowsOnDoubleClick,\n trigger: (key?: PTableKey) => emit(\"cellButtonClicked\", key),\n } satisfies PlAgCellButtonAxisParams,\n })\n .then((result) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n const { axesSpec, ...options } = result;\n gridApi.updateGridOptions({\n ...options,\n });\n if (selection.value) {\n // Update selection if axesSpec changed, as order of axes may have changed and so we need to remap selected keys\n const { axesSpec: oldAxesSpec, selectedKeys: oldSelectedKeys } = selection.value;\n if (!isJsonEqual(oldAxesSpec, axesSpec)) {\n if (!oldAxesSpec || axesSpec.length !== oldAxesSpec.length) {\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: [] };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n\n const mapping = oldAxesSpec\n .map(getAxisId)\n .map((id) => axesSpec.findIndex((axis) => matchAxisId(axis, id)));\n const mappingSet = new Set(mapping);\n if (mappingSet.has(-1) || mappingSet.size !== axesSpec.length) {\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: [] };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n\n const selectedNodes = oldSelectedKeys.map((key) =>\n mapping.map((index) => key[index]),\n );\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: selectedNodes };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: selectedNodes.map((key) => canonicalizeJson<PlTableRowId>(key)),\n });\n }\n }\n })\n .catch((error: unknown) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n if (isAbortError(error)) return;\n console.trace(error);\n })\n .finally(() => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n gridApi.updateGridOptions({\n loading: false,\n });\n });\n dataRenderedTracker.promise.then(() => emit(\"newDataRendered\"));\n } catch (error: unknown) {\n console.trace(error);\n } finally {\n oldSettings = settings;\n }\n },\n);\n\nwatch(\n () => ({\n gridApi: gridApi.value,\n loadingText: props.loadingText,\n runningText: props.runningText,\n notReadyText: props.notReadyText,\n noRowsText: props.noRowsText,\n }),\n ({ gridApi, loadingText, runningText, notReadyText, noRowsText }) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n gridApi.updateGridOptions({\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n loadingText,\n runningText,\n notReadyText,\n },\n noRowsOverlayComponentParams: {\n ...gridOptions.value.noRowsOverlayComponentParams,\n text: noRowsText,\n },\n });\n },\n);\n\nwatchEffect(() => {\n if (!gridApi.value || gridApi.value?.isDestroyed()) return;\n gridApi.value.updateGridOptions({\n statusBar: gridOptions.value.loading\n ? undefined\n : {\n statusPanels: [{ statusPanel: PlAgRowCount, align: \"left\" }],\n },\n });\n});\n</script>\n\n<template>\n <div :class=\"$style.container\">\n <PlAgGridColumnManager v-if=\"gridApi && !disableColumnsPanel\" :api=\"gridApi\" />\n <PlTableFiltersV2\n v-if=\"!disableFiltersPanel\"\n v-model=\"filtersState\"\n :pframe-handle=\"'model' in settings ? settings?.model?.fullPframeHandle : undefined\"\n :columns=\"filterableColumns\"\n />\n <PlAgCsvExporter v-if=\"gridApi && showExportButton\" :api=\"gridApi\" />\n <PlAgDataTableSheets v-model=\"sheetsState\" :settings=\"sheetsSettings\">\n <template v-if=\"$slots['before-sheets']\" #before>\n <slot name=\"before-sheets\" />\n </template>\n <template v-if=\"$slots['after-sheets']\" #after>\n <slot name=\"after-sheets\" />\n </template>\n </PlAgDataTableSheets>\n <PlTableFastSearch v-model=\"searchString\" />\n <AgGridVue\n :key=\"reloadKey\"\n :theme=\"AgGridTheme\"\n :class=\"$style.grid\"\n :grid-options=\"gridOptions\"\n />\n </div>\n</template>\n\n<style lang=\"css\" module>\n.container {\n display: flex;\n flex-direction: column;\n height: 100%;\n gap: 12px;\n}\n\n.grid {\n flex: 1;\n}\n</style>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PlAgDataTableV2.vue_vue_type_script_setup_true_lang.js","names":["$style","$slots"],"sources":["../../../src/components/PlAgDataTable/PlAgDataTableV2.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { promiseTimeout, isJsonEqual } from \"@milaboratories/helpers\";\nimport type {\n AxisId,\n PlDataTableGridStateCore,\n PlDataTableStateV2,\n PlSelectionModel,\n PlTableColumnIdJson,\n PTableColumnSpec,\n PTableKey,\n} from \"@platforma-sdk/model\";\nimport {\n getRawPlatformaInstance,\n createPlSelectionModel,\n matchAxisId,\n getAxisId,\n canonicalizeJson,\n isAbortError,\n isColumnOptional,\n} from \"@platforma-sdk/model\";\nimport type { CellRendererSelectorFunc, GridApi, GridState } from \"ag-grid-enterprise\";\nimport { AgGridVue } from \"ag-grid-vue3\";\nimport { computed, effectScope, nextTick, ref, toRefs, watch, watchEffect } from \"vue\";\nimport PlAgCsvExporter from \"../PlAgCsvExporter/PlAgCsvExporter.vue\";\nimport { PlAgGridColumnManager } from \"../PlAgGridColumnManager\";\nimport PlTableFiltersV2 from \"../PlTableFilters/PlTableFiltersV2.vue\";\nimport { PlTableFastSearch } from \"../PlTableFastSearch\";\nimport PlAgDataTableSheets from \"./PlAgDataTableSheets.vue\";\nimport PlAgRowCount from \"./PlAgRowCount.vue\";\nimport { DeferredCircular, ensureNodeVisible } from \"./sources/focus-row\";\nimport { PlAgDataTableRowNumberColId } from \"./sources/row-number\";\nimport type { PlAgCellButtonAxisParams } from \"./sources/table-source-v2\";\nimport { calculateGridOptions } from \"./sources/table-source-v2\";\nimport { useTableState } from \"./sources/table-state-v2\";\nimport type {\n PlAgDataTableV2Controller,\n PlAgDataTableV2Row,\n PlAgOverlayLoadingParams,\n PlAgOverlayNoRowsParams,\n PlDataTableSettingsV2,\n PlDataTableSheetsSettings,\n PlTableRowId,\n} from \"./types\";\nimport { useFilterableColumns } from \"./compositions/useFilterableColumns\";\nimport { useGrid } from \"./compositions/useGrid\";\nimport { AgGridTheme } from \"../../AgGridVue/AgGridTheme\";\n\nconst tableState = defineModel<PlDataTableStateV2>({\n required: true,\n});\n/** Warning: selection model value updates are ignored, use updateSelection instead */\nconst selection = defineModel<PlSelectionModel>(\"selection\");\nconst props = defineProps<{\n /** Required component settings */\n settings: Readonly<PlDataTableSettingsV2>;\n\n /**\n * The disableColumnsPanel prop controls the display of a button that activates\n * the columns management panel in the table. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n disableColumnsPanel?: boolean;\n\n /**\n * The disableFiltersPanel prop controls the display of a button that activates\n * the filters management panel in the table. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n disableFiltersPanel?: boolean;\n\n /**\n * The showExportButton prop controls the display of a button that allows\n * to export table data in CSV format. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n showExportButton?: boolean;\n\n /**\n * The AxisId property is used to configure and display the PlAgTextAndButtonCell component\n */\n showCellButtonForAxisId?: AxisId;\n\n /**\n * If cellButtonInvokeRowsOnDoubleClick = true, clicking a button inside the row\n * triggers the doubleClick event for the entire row.\n *\n * If cellButtonInvokeRowsOnDoubleClick = false, the doubleClick event for the row\n * is not triggered, but will triggered cellButtonClicked event with (key: PTableRowKey) argument.\n */\n cellButtonInvokeRowsOnDoubleClick?: boolean;\n\n /** @see {@link PlAgOverlayLoadingParams.loadingText} */\n loadingText?: string;\n\n /** @see {@link PlAgOverlayLoadingParams.runningText} */\n runningText?: string;\n\n /** @see {@link PlAgOverlayLoadingParams.notReadyText} */\n notReadyText?: string;\n\n /** @see {@link PlAgOverlayNoRowsParams.text} */\n noRowsText?: string;\n\n /**\n * Callback to override the default renderer for a given cell.\n * @see https://www.ag-grid.com/vue-data-grid/component-cell-renderer/#dynamic-component-selection\n */\n cellRendererSelector?: CellRendererSelectorFunc<PlAgDataTableV2Row>;\n}>();\nconst { settings } = toRefs(props);\nconst emit = defineEmits<{\n rowDoubleClicked: [key?: PTableKey];\n cellButtonClicked: [key?: PTableKey];\n newDataRendered: [];\n}>();\n\nconst dataRenderedTracker = new DeferredCircular<GridApi<PlAgDataTableV2Row>>();\nconst { gridApi, gridOptions } = useGrid({\n selection,\n noRowsText: props.noRowsText,\n runningText: props.runningText,\n loadingText: props.loadingText,\n notReadyText: props.notReadyText,\n cellRendererSelector: props.cellRendererSelector,\n});\nlet isReloading = false;\ngridOptions.value.onGridPreDestroyed = (event) => {\n if (!isReloading) {\n gridOptions.value.initialState = gridState.value = normalizeColumnVisibility(\n makePartialState(event.api.getState()),\n gridState.value,\n event.api,\n );\n }\n gridApi.value = null;\n};\ngridOptions.value.onRowDoubleClicked = (event) => {\n if (event.data && event.data.axesKey) emit(\"rowDoubleClicked\", event.data.axesKey);\n};\ngridOptions.value.onStateUpdated = (event) => {\n const partialState = normalizeColumnVisibility(\n makePartialState(event.state),\n gridState.value,\n event.api,\n );\n // We have to keep initialState synchronized with gridState for gridState recovery after key updating.\n gridOptions.value.initialState = gridState.value = partialState;\n\n if (!isJsonEqual(event.sources, [\"columnSizing\"])) {\n event.api.autoSizeColumns(\n event.api\n .getAllDisplayedColumns()\n .filter((column) => column.getColId() !== PlAgDataTableRowNumberColId),\n );\n }\n};\n\nconst [filterableColumns, visibleFilterableColumns] = useFilterableColumns(\n () => settings.value.sourceId,\n () => gridOptions.value.columnDefs ?? null,\n);\nconst { gridState, sheetsState, filtersState, searchString } = useTableState(\n tableState,\n settings,\n visibleFilterableColumns,\n);\nconst sheetsSettings = computed<PlDataTableSheetsSettings>(() => {\n const settingsCopy = { ...settings.value };\n return settingsCopy.sourceId !== null\n ? {\n sheets: settingsCopy.sheets ?? [],\n cachedState: [...sheetsState.value],\n }\n : {\n sheets: [],\n cachedState: [],\n };\n});\ngridOptions.value.initialState = gridState.value;\n\n// Restore proper types erased by AgGrid\nfunction makePartialState(state: GridState): PlDataTableGridStateCore {\n return {\n columnOrder: state.columnOrder as\n | {\n orderedColIds: PlTableColumnIdJson[];\n }\n | undefined,\n sort: state.sort as\n | {\n sortModel: {\n colId: PlTableColumnIdJson;\n sort: \"asc\" | \"desc\";\n }[];\n }\n | undefined,\n columnVisibility: state.columnVisibility as\n | {\n hiddenColIds: PlTableColumnIdJson[];\n }\n | undefined,\n };\n}\n\n// AG Grid returns columnVisibility: undefined when all columns are visible.\n// We need to distinguish \"no state yet\" (use isColumnOptional defaults) from\n// \"user explicitly showed all columns\" (store []). This function normalizes\n// the undefined from AG Grid based on the previous state.\nfunction normalizeColumnVisibility(\n partialState: PlDataTableGridStateCore,\n prevState: PlDataTableGridStateCore,\n api: GridApi<PlAgDataTableV2Row>,\n): PlDataTableGridStateCore {\n if (partialState.columnVisibility !== undefined) return partialState;\n\n if (prevState.columnVisibility !== undefined) {\n // Had explicit visibility state before → user made all columns visible → store [].\n return { ...partialState, columnVisibility: { hiddenColIds: [] } };\n }\n\n // No previous explicit state → compute defaults from current columns\n // to replicate: hide: hiddenColIds?.includes(colId) ?? isColumnOptional(spec.spec)\n const defaultHidden = getDefaultHiddenColIds(api);\n if (defaultHidden.length > 0) {\n return { ...partialState, columnVisibility: { hiddenColIds: defaultHidden } };\n }\n\n return partialState;\n}\n\nfunction getDefaultHiddenColIds(api: GridApi<PlAgDataTableV2Row>): PlTableColumnIdJson[] {\n const cols = api.getAllGridColumns();\n if (!cols) return [];\n return cols\n .filter((col) => {\n const spec = col.getColDef().context as PTableColumnSpec | undefined;\n return spec && isColumnOptional(spec.spec);\n })\n .map((col) => col.getColId() as PlTableColumnIdJson);\n}\n\n// Normalize columnVisibility for comparison: undefined and { hiddenColIds: [] } are equivalent.\nfunction stateForReloadCompare(state: PlDataTableGridStateCore): PlDataTableGridStateCore {\n const cv = state.columnVisibility;\n const normalizedCv = !cv || cv.hiddenColIds.length === 0 ? undefined : state.columnVisibility;\n return { ...state, columnVisibility: normalizedCv };\n}\n\n// Reload AgGrid when new state arrives from server\nconst reloadKey = ref(0);\nwatch(\n () => [gridApi.value, gridState.value] as const,\n ([gridApi, gridState]) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n const selfState = makePartialState(gridApi.getState());\n if (\n !isJsonEqual(gridState, {}) &&\n !isJsonEqual(stateForReloadCompare(gridState), stateForReloadCompare(selfState))\n ) {\n isReloading = true;\n gridOptions.value.initialState = gridState;\n ++reloadKey.value;\n nextTick(() => {\n isReloading = false;\n });\n }\n },\n);\n\n// Make cellRendererSelector reactive\nconst cellRendererSelector = computed(() => props.cellRendererSelector ?? null);\nwatch(\n () => [gridApi.value, cellRendererSelector.value] as const,\n ([gridApi, cellRendererSelector]) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n gridApi.setGridOption(\"defaultColDef\", {\n ...gridOptions.value.defaultColDef,\n cellRendererSelector: cellRendererSelector ?? undefined,\n });\n },\n);\n\ndefineExpose<PlAgDataTableV2Controller>({\n focusRow: async (rowKey) => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return false;\n\n return ensureNodeVisible(gridApi, (row) => isJsonEqual(row.data?.axesKey, rowKey));\n },\n updateSelection: async ({ axesSpec, selectedKeys }) => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return false;\n\n const axes = selection.value?.axesSpec;\n if (!axes || axes.length !== axesSpec.length) return false;\n\n const mapping = axesSpec.map((spec) => {\n const id = getAxisId(spec);\n return axes.findIndex((axis) => matchAxisId(axis, id));\n });\n const mappingSet = new Set(mapping);\n if (mappingSet.has(-1) || mappingSet.size !== axesSpec.length) return false;\n\n const selectedNodes = selectedKeys.map((key) =>\n canonicalizeJson<PlTableRowId>(mapping.map((index) => key[index])),\n );\n const oldSelectedKeys = gridApi.getServerSideSelectionState()?.toggledNodes ?? [];\n if (!isJsonEqual(oldSelectedKeys, selectedNodes)) {\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: selectedNodes,\n });\n\n // wait for `onSelectionChanged` to update `selection` model\n const scope = effectScope();\n const { resolve, promise } = Promise.withResolvers();\n scope.run(() => watch(selection, resolve, { once: true }));\n try {\n await promiseTimeout(promise, 500);\n } catch {\n return false;\n } finally {\n scope.stop();\n }\n }\n return true;\n },\n});\n\n// Update AgGrid when settings change\nconst defaultSelection = createPlSelectionModel();\nlet oldSettings: PlDataTableSettingsV2 | null = null;\nconst generation = ref(0);\nwatch(\n () => [gridApi.value, settings.value] as const,\n ([gridApi, settings]) => {\n // Wait for AgGrid reinitialization, gridApi will eventually become initialized\n if (!gridApi || gridApi.isDestroyed()) return;\n // Verify that this is not a false watch trigger\n if (isJsonEqual(settings, oldSettings)) return;\n ++generation.value;\n try {\n // Hide no rows overlay if it is shown, or else loading overlay will not be shown\n gridApi.hideOverlay();\n dataRenderedTracker.reset();\n\n // No data source selected -> reset state to default\n if (settings.sourceId === null) {\n gridApi.updateGridOptions({\n loading: true,\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n variant: settings.pending ? \"running\" : \"not-ready\",\n } satisfies PlAgOverlayLoadingParams,\n columnDefs: undefined,\n serverSideDatasource: undefined,\n });\n if (selection.value) {\n if (selection.value && !isJsonEqual(selection.value, defaultSelection)) {\n selection.value = createPlSelectionModel();\n }\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n return;\n }\n\n // Data source changed -> show full page loader, clear selection\n if (settings.sourceId !== oldSettings?.sourceId) {\n gridApi.updateGridOptions({\n loading: true,\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n variant: \"loading\",\n } satisfies PlAgOverlayLoadingParams,\n });\n if (selection.value && oldSettings?.sourceId) {\n if (selection.value && !isJsonEqual(selection.value, defaultSelection)) {\n selection.value = createPlSelectionModel();\n }\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n }\n\n // Model updated -> show skeletons instead of data\n const sourceChanged =\n settings.model?.sourceId && settings.model.sourceId !== settings.sourceId;\n if (!settings.model || sourceChanged) {\n const state = gridApi.getServerSideGroupLevelState();\n const rowCount = !sourceChanged && state.length > 0 ? state[0].rowCount : 1;\n return gridApi.updateGridOptions({\n serverSideDatasource: {\n getRows: (params) => {\n params.success({ rowData: [], rowCount });\n },\n },\n });\n }\n\n // Model ready -> calculate new state\n const stateGeneration = generation.value;\n calculateGridOptions({\n generation,\n pfDriver: getRawPlatformaInstance().pFrameDriver,\n model: settings.model,\n sheets: settings.sheets ?? [],\n dataRenderedTracker,\n hiddenColIds: gridState.value.columnVisibility?.hiddenColIds,\n cellButtonAxisParams: {\n showCellButtonForAxisId: props.showCellButtonForAxisId,\n cellButtonInvokeRowsOnDoubleClick: props.cellButtonInvokeRowsOnDoubleClick,\n trigger: (key?: PTableKey) => emit(\"cellButtonClicked\", key),\n } satisfies PlAgCellButtonAxisParams,\n })\n .then((result) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n const { axesSpec, ...options } = result;\n gridApi.updateGridOptions({\n ...options,\n });\n if (selection.value) {\n // Update selection if axesSpec changed, as order of axes may have changed and so we need to remap selected keys\n const { axesSpec: oldAxesSpec, selectedKeys: oldSelectedKeys } = selection.value;\n if (!isJsonEqual(oldAxesSpec, axesSpec)) {\n if (!oldAxesSpec || axesSpec.length !== oldAxesSpec.length) {\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: [] };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n\n const mapping = oldAxesSpec\n .map(getAxisId)\n .map((id) => axesSpec.findIndex((axis) => matchAxisId(axis, id)));\n const mappingSet = new Set(mapping);\n if (mappingSet.has(-1) || mappingSet.size !== axesSpec.length) {\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: [] };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n\n const selectedNodes = oldSelectedKeys.map((key) =>\n mapping.map((index) => key[index]),\n );\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: selectedNodes };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: selectedNodes.map((key) => canonicalizeJson<PlTableRowId>(key)),\n });\n }\n }\n })\n .catch((error: unknown) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n if (isAbortError(error)) return;\n console.trace(error);\n })\n .finally(() => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n gridApi.updateGridOptions({\n loading: false,\n });\n });\n dataRenderedTracker.promise.then(() => emit(\"newDataRendered\"));\n } catch (error: unknown) {\n console.trace(error);\n } finally {\n oldSettings = settings;\n }\n },\n);\n\nwatch(\n () => ({\n gridApi: gridApi.value,\n loadingText: props.loadingText,\n runningText: props.runningText,\n notReadyText: props.notReadyText,\n noRowsText: props.noRowsText,\n }),\n ({ gridApi, loadingText, runningText, notReadyText, noRowsText }) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n gridApi.updateGridOptions({\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n loadingText,\n runningText,\n notReadyText,\n },\n noRowsOverlayComponentParams: {\n ...gridOptions.value.noRowsOverlayComponentParams,\n text: noRowsText,\n },\n });\n },\n);\n\nwatchEffect(() => {\n if (!gridApi.value || gridApi.value?.isDestroyed()) return;\n gridApi.value.updateGridOptions({\n statusBar: gridOptions.value.loading\n ? undefined\n : {\n statusPanels: [{ statusPanel: PlAgRowCount, align: \"left\" }],\n },\n });\n});\n</script>\n\n<template>\n <div :class=\"$style.container\">\n <PlAgGridColumnManager v-if=\"gridApi && !disableColumnsPanel\" :api=\"gridApi\" />\n <PlTableFiltersV2\n v-if=\"!disableFiltersPanel\"\n v-model=\"filtersState\"\n :pframe-handle=\"'model' in settings ? settings?.model?.fullPframeHandle : undefined\"\n :columns=\"filterableColumns\"\n />\n <PlAgCsvExporter v-if=\"gridApi && showExportButton\" :api=\"gridApi\" />\n <PlAgDataTableSheets v-model=\"sheetsState\" :settings=\"sheetsSettings\">\n <template v-if=\"$slots['before-sheets']\" #before>\n <slot name=\"before-sheets\" />\n </template>\n <template v-if=\"$slots['after-sheets']\" #after>\n <slot name=\"after-sheets\" />\n </template>\n </PlAgDataTableSheets>\n <PlTableFastSearch v-model=\"searchString\" />\n <AgGridVue\n :key=\"reloadKey\"\n :theme=\"AgGridTheme\"\n :class=\"$style.grid\"\n :grid-options=\"gridOptions\"\n />\n </div>\n</template>\n\n<style lang=\"css\" module>\n.container {\n display: flex;\n flex-direction: column;\n height: 100%;\n gap: 12px;\n}\n\n.grid {\n flex: 1;\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import e from "./pl-ag-overlay-loading.module.js";
|
|
2
2
|
import { createBlock as t, createElementBlock as n, createElementVNode as r, defineComponent as i, mergeProps as a, normalizeClass as o, openBlock as s, ref as c, toDisplayString as l, unref as u } from "vue";
|
|
3
3
|
import { PL_PLACEHOLDER_TEXTS as d, PlPlaceholder as f } from "@milaboratories/uikit";
|
|
4
|
+
//#region src/components/PlAgDataTable/PlAgOverlayLoading.vue?vue&type=script&setup=true&lang.ts
|
|
4
5
|
var p = /* @__PURE__ */ i({
|
|
5
6
|
__name: "PlAgOverlayLoading",
|
|
6
7
|
props: { params: {} },
|
|
@@ -21,6 +22,7 @@ var p = /* @__PURE__ */ i({
|
|
|
21
22
|
}[m.value.variant]), { variant: "table" }), null, 16))], 2));
|
|
22
23
|
}
|
|
23
24
|
});
|
|
25
|
+
//#endregion
|
|
24
26
|
export { p as default };
|
|
25
27
|
|
|
26
28
|
//# sourceMappingURL=PlAgOverlayLoading.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAgOverlayLoading.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/PlAgDataTable/PlAgOverlayLoading.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PL_PLACEHOLDER_TEXTS, PlPlaceholder } from \"@milaboratories/uikit\";\nimport type { PlPlaceholderProps } from \"@milaboratories/uikit\";\nimport { ref } from \"vue\";\nimport style from \"./pl-ag-overlay-loading.module.scss\";\nimport type { PlAgOverlayLoadingParams } from \"./types\";\n\n// @TODO move this component from this folder\n\nconst props = defineProps<{\n /** Required object that contains props from loadingOverlayComponentParams. */\n params: PlAgOverlayLoadingParams;\n}>();\n\nconst params = ref(props.params);\n\ndefineExpose({\n refresh: (newParams: PlAgOverlayLoadingParams) => {\n params.value = newParams;\n },\n});\n\nfunction normalizePlaceholderText(\n text: string | Pick<PlPlaceholderProps, \"title\" | \"subtitle\">,\n): Pick<PlPlaceholderProps, \"title\" | \"subtitle\"> {\n if (typeof text === \"string\") return { title: text };\n return text;\n}\n</script>\n\n<template>\n <div :class=\"style.container\">\n <div v-if=\"params.variant === 'not-ready'\" :class=\"style.notReadyWrapper\">\n <div :class=\"style.iconCatInBag\" />\n <h3 :class=\"style.text\">{{ params.notReadyText || \"Data is not computed\" }}</h3>\n </div>\n <PlPlaceholder\n v-else\n v-bind=\"\n normalizePlaceholderText(\n {\n loading: params.loadingText ?? PL_PLACEHOLDER_TEXTS.LOADING,\n running: params.runningText ?? PL_PLACEHOLDER_TEXTS.RUNNING,\n }[params.variant],\n )\n \"\n variant=\"table\"\n />\n </div>\n</template>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlAgOverlayLoading.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/PlAgDataTable/PlAgOverlayLoading.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PL_PLACEHOLDER_TEXTS, PlPlaceholder } from \"@milaboratories/uikit\";\nimport type { PlPlaceholderProps } from \"@milaboratories/uikit\";\nimport { ref } from \"vue\";\nimport style from \"./pl-ag-overlay-loading.module.scss\";\nimport type { PlAgOverlayLoadingParams } from \"./types\";\n\n// @TODO move this component from this folder\n\nconst props = defineProps<{\n /** Required object that contains props from loadingOverlayComponentParams. */\n params: PlAgOverlayLoadingParams;\n}>();\n\nconst params = ref(props.params);\n\ndefineExpose({\n refresh: (newParams: PlAgOverlayLoadingParams) => {\n params.value = newParams;\n },\n});\n\nfunction normalizePlaceholderText(\n text: string | Pick<PlPlaceholderProps, \"title\" | \"subtitle\">,\n): Pick<PlPlaceholderProps, \"title\" | \"subtitle\"> {\n if (typeof text === \"string\") return { title: text };\n return text;\n}\n</script>\n\n<template>\n <div :class=\"style.container\">\n <div v-if=\"params.variant === 'not-ready'\" :class=\"style.notReadyWrapper\">\n <div :class=\"style.iconCatInBag\" />\n <h3 :class=\"style.text\">{{ params.notReadyText || \"Data is not computed\" }}</h3>\n </div>\n <PlPlaceholder\n v-else\n v-bind=\"\n normalizePlaceholderText(\n {\n loading: params.loadingText ?? PL_PLACEHOLDER_TEXTS.LOADING,\n running: params.runningText ?? PL_PLACEHOLDER_TEXTS.RUNNING,\n }[params.variant],\n )\n \"\n variant=\"table\"\n />\n </div>\n</template>\n"],"mappings":";;;;;;;;EAcA,IAAM,IAAS,EALD,EAKW,OAAO;AAEhC,IAAa,EACX,UAAU,MAAwC;AAChD,KAAO,QAAQ;KAElB,CAAC;EAEF,SAAS,EACP,GACgD;AAEhD,UADI,OAAO,KAAS,WAAiB,EAAE,OAAO,GAAM,GAC7C;;yBAKP,EAiBM,OAAA,EAjBA,OAAK,EAAE,EAAA,EAAK,CAAC,UAAS,EAAA,EAAA,CACf,EAAA,MAAO,YAAO,eAAA,GAAA,EAAzB,EAGM,OAAA;;GAHsC,OAAK,EAAE,EAAA,EAAK,CAAC,gBAAe;MACtE,EAAmC,OAAA,EAA7B,OAAK,EAAE,EAAA,EAAK,CAAC,aAAY,EAAA,EAAA,MAAA,EAAA,EAC/B,EAAgF,MAAA,EAA3E,OAAK,EAAE,EAAA,EAAK,CAAC,KAAI,EAAA,EAAA,EAAK,EAAA,MAAO,gBAAY,uBAAA,EAAA,EAAA,CAAA,EAAA,EAAA,KAAA,GAAA,EAEhD,EAWE,EAAA,EAAA,EAXF,EAWE,EAAA,KAAA,GAAA,EATiB,EAAA;YAA2D,EAAA,MAAO,eAAe,EAAA,EAAoB,CAAC;YAA8B,EAAA,MAAO,eAAe,EAAA,EAAoB,CAAC;IAAqB,EAAA,MAAO,SAAA,EAAA,EAQ5N,SAAQ,SAAO,CAAA,EAAA,MAAA,GAAA,EAAA,EAAA,EAAA"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import e from "./PlAgOverlayNoRows.vue2.js";
|
|
2
2
|
import './PlAgOverlayNoRows.style.css';/* empty css */
|
|
3
|
+
//#region src/components/PlAgDataTable/PlAgOverlayNoRows.vue
|
|
3
4
|
var t = e;
|
|
5
|
+
//#endregion
|
|
4
6
|
export { t as default };
|
|
5
7
|
|
|
6
8
|
//# sourceMappingURL=PlAgOverlayNoRows.js.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createElementBlock as e, createElementVNode as t, defineComponent as n, openBlock as r, ref as i, toDisplayString as a } from "vue";
|
|
2
|
+
//#region src/components/PlAgDataTable/PlAgOverlayNoRows.vue?vue&type=script&setup=true&lang.ts
|
|
2
3
|
var o = { class: "grid-overlay-container" }, s = { class: "text-subtitle-m" }, c = /* @__PURE__ */ n({
|
|
3
4
|
__name: "PlAgOverlayNoRows",
|
|
4
5
|
props: { params: {} },
|
|
@@ -9,6 +10,7 @@ var o = { class: "grid-overlay-container" }, s = { class: "text-subtitle-m" }, c
|
|
|
9
10
|
} }), (n, i) => (r(), e("div", o, [i[0] ||= t("div", { class: "grid-icon-sad-cat" }, null, -1), t("span", s, a(l.value.text || "Empty"), 1)]));
|
|
10
11
|
}
|
|
11
12
|
});
|
|
13
|
+
//#endregion
|
|
12
14
|
export { c as default };
|
|
13
15
|
|
|
14
16
|
//# sourceMappingURL=PlAgOverlayNoRows.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAgOverlayNoRows.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/PlAgDataTable/PlAgOverlayNoRows.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ref } from \"vue\";\nimport type { PlAgOverlayNoRowsParams } from \"./types\";\n\nconst props = defineProps<{\n params: PlAgOverlayNoRowsParams;\n}>();\n\nconst params = ref(props.params);\n\ndefineExpose({\n refresh: (newParams: PlAgOverlayNoRowsParams) => {\n params.value = newParams;\n },\n});\n</script>\n\n<template>\n <div class=\"grid-overlay-container\">\n <div class=\"grid-icon-sad-cat\" />\n <span class=\"text-subtitle-m\">{{ params.text || \"Empty\" }}</span>\n </div>\n</template>\n\n<style lang=\"css\">\n.grid-overlay-container {\n height: calc(100% - 1px);\n margin-top: 1px;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background-color: var(--bg-base-light);\n}\n.grid-icon-sad-cat {\n background-image: url(./assets/no-data-cat.png);\n background-repeat: no-repeat;\n}\n.grid-overlay-container > div {\n height: 300px;\n width: 300px;\n background-size: contain;\n background-position: center;\n}\n.grid-overlay-container > span {\n color: var(--txt-mask);\n}\n</style>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlAgOverlayNoRows.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/PlAgDataTable/PlAgOverlayNoRows.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ref } from \"vue\";\nimport type { PlAgOverlayNoRowsParams } from \"./types\";\n\nconst props = defineProps<{\n params: PlAgOverlayNoRowsParams;\n}>();\n\nconst params = ref(props.params);\n\ndefineExpose({\n refresh: (newParams: PlAgOverlayNoRowsParams) => {\n params.value = newParams;\n },\n});\n</script>\n\n<template>\n <div class=\"grid-overlay-container\">\n <div class=\"grid-icon-sad-cat\" />\n <span class=\"text-subtitle-m\">{{ params.text || \"Empty\" }}</span>\n </div>\n</template>\n\n<style lang=\"css\">\n.grid-overlay-container {\n height: calc(100% - 1px);\n margin-top: 1px;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background-color: var(--bg-base-light);\n}\n.grid-icon-sad-cat {\n background-image: url(./assets/no-data-cat.png);\n background-repeat: no-repeat;\n}\n.grid-overlay-container > div {\n height: 300px;\n width: 300px;\n background-size: contain;\n background-position: center;\n}\n.grid-overlay-container > span {\n color: var(--txt-mask);\n}\n</style>\n"],"mappings":";;;;;;EAQA,IAAM,IAAS,EAJD,EAIW,OAAO;SAEhC,EAAa,EACX,UAAU,MAAuC;AAC/C,KAAO,QAAQ;KAElB,CAAC,kBAIA,EAGM,OAHN,GAGM,CAAA,AAAA,EAAA,OAFJ,EAAiC,OAAA,EAA5B,OAAM,qBAAmB,EAAA,MAAA,GAAA,EAC9B,EAAiE,QAAjE,GAAiE,EAAhC,EAAA,MAAO,QAAI,QAAA,EAAA,EAAA,CAAA,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getSelectedRowsCount as e, getTotalRowsCount as t } from "../../AgGridVue/selection.js";
|
|
2
2
|
import "../../lib.js";
|
|
3
3
|
import { computed as n, defineComponent as r, onBeforeMount as i, onBeforeUnmount as a, ref as o, toDisplayString as s } from "vue";
|
|
4
|
+
//#region src/components/PlAgDataTable/PlAgRowCount.vue?vue&type=script&setup=true&lang.ts
|
|
4
5
|
var c = /* @__PURE__ */ r({
|
|
5
6
|
__name: "PlAgRowCount",
|
|
6
7
|
props: { params: {} },
|
|
@@ -19,6 +20,7 @@ var c = /* @__PURE__ */ r({
|
|
|
19
20
|
}), (e, t) => s(f.value);
|
|
20
21
|
}
|
|
21
22
|
});
|
|
23
|
+
//#endregion
|
|
22
24
|
export { c as default };
|
|
23
25
|
|
|
24
26
|
//# sourceMappingURL=PlAgRowCount.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAgRowCount.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/PlAgDataTable/PlAgRowCount.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { GridApi } from \"ag-grid-enterprise\";\nimport { computed, onBeforeMount, onBeforeUnmount, ref } from \"vue\";\nimport { getSelectedRowsCount, getTotalRowsCount } from \"../../lib\";\n\nconst { params } = defineProps<{\n params: { api: GridApi };\n}>();\n\nconst totalRowCount = ref(getTotalRowsCount(params.api));\nconst selectedRowCount = ref(getSelectedRowsCount(params.api));\n\nconst pluralRules = new Intl.PluralRules(\"en\");\nconst numberFormatter = new Intl.NumberFormat(\"en\");\n\nconst output = computed(() => {\n let result = numberFormatter.format(totalRowCount.value) + \" \";\n result += pluralRules.select(totalRowCount.value) === \"one\" ? \"row\" : \"rows\";\n if (selectedRowCount.value > 0) {\n result += \" (\" + numberFormatter.format(selectedRowCount.value) + \" selected)\";\n }\n return result;\n});\n\nfunction updateRowCounts() {\n totalRowCount.value = getTotalRowsCount(params.api);\n selectedRowCount.value = getSelectedRowsCount(params.api);\n}\n\nonBeforeMount(() => {\n params.api.addEventListener(\"selectionChanged\", updateRowCounts);\n params.api.addEventListener(\"rowDataUpdated\", updateRowCounts);\n params.api.addEventListener(\"modelUpdated\", updateRowCounts);\n});\n\nonBeforeUnmount(() => {\n params.api.removeEventListener(\"selectionChanged\", updateRowCounts);\n params.api.removeEventListener(\"rowDataUpdated\", updateRowCounts);\n params.api.removeEventListener(\"modelUpdated\", updateRowCounts);\n});\n</script>\n\n<template>\n {{ output }}\n</template>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlAgRowCount.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/PlAgDataTable/PlAgRowCount.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { GridApi } from \"ag-grid-enterprise\";\nimport { computed, onBeforeMount, onBeforeUnmount, ref } from \"vue\";\nimport { getSelectedRowsCount, getTotalRowsCount } from \"../../lib\";\n\nconst { params } = defineProps<{\n params: { api: GridApi };\n}>();\n\nconst totalRowCount = ref(getTotalRowsCount(params.api));\nconst selectedRowCount = ref(getSelectedRowsCount(params.api));\n\nconst pluralRules = new Intl.PluralRules(\"en\");\nconst numberFormatter = new Intl.NumberFormat(\"en\");\n\nconst output = computed(() => {\n let result = numberFormatter.format(totalRowCount.value) + \" \";\n result += pluralRules.select(totalRowCount.value) === \"one\" ? \"row\" : \"rows\";\n if (selectedRowCount.value > 0) {\n result += \" (\" + numberFormatter.format(selectedRowCount.value) + \" selected)\";\n }\n return result;\n});\n\nfunction updateRowCounts() {\n totalRowCount.value = getTotalRowsCount(params.api);\n selectedRowCount.value = getSelectedRowsCount(params.api);\n}\n\nonBeforeMount(() => {\n params.api.addEventListener(\"selectionChanged\", updateRowCounts);\n params.api.addEventListener(\"rowDataUpdated\", updateRowCounts);\n params.api.addEventListener(\"modelUpdated\", updateRowCounts);\n});\n\nonBeforeUnmount(() => {\n params.api.removeEventListener(\"selectionChanged\", updateRowCounts);\n params.api.removeEventListener(\"rowDataUpdated\", updateRowCounts);\n params.api.removeEventListener(\"modelUpdated\", updateRowCounts);\n});\n</script>\n\n<template>\n {{ output }}\n</template>\n"],"mappings":";;;;;;;;EASA,IAAM,IAAgB,EAAI,EAAkB,EAAA,OAAO,IAAI,CAAC,EAClD,IAAmB,EAAI,EAAqB,EAAA,OAAO,IAAI,CAAC,EAExD,IAAc,IAAI,KAAK,YAAY,KAAK,EACxC,IAAkB,IAAI,KAAK,aAAa,KAAK,EAE7C,IAAS,QAAe;GAC5B,IAAI,IAAS,EAAgB,OAAO,EAAc,MAAM,GAAG;AAK3D,UAJA,KAAU,EAAY,OAAO,EAAc,MAAM,KAAK,QAAQ,QAAQ,QAClE,EAAiB,QAAQ,MAC3B,KAAU,OAAO,EAAgB,OAAO,EAAiB,MAAM,GAAG,eAE7D;IACP;EAEF,SAAS,IAAkB;AAEzB,GADA,EAAc,QAAQ,EAAkB,EAAA,OAAO,IAAI,EACnD,EAAiB,QAAQ,EAAqB,EAAA,OAAO,IAAI;;SAG3D,QAAoB;AAGlB,GAFA,EAAA,OAAO,IAAI,iBAAiB,oBAAoB,EAAgB,EAChE,EAAA,OAAO,IAAI,iBAAiB,kBAAkB,EAAgB,EAC9D,EAAA,OAAO,IAAI,iBAAiB,gBAAgB,EAAgB;IAC5D,EAEF,QAAsB;AAGpB,GAFA,EAAA,OAAO,IAAI,oBAAoB,oBAAoB,EAAgB,EACnE,EAAA,OAAO,IAAI,oBAAoB,kBAAkB,EAAgB,EACjE,EAAA,OAAO,IAAI,oBAAoB,gBAAgB,EAAgB;IAC/D,cAIG,EAAA,MAAM"}
|
|
@@ -3,6 +3,7 @@ import { ref as e } from "vue";
|
|
|
3
3
|
import { parseJson as t } from "@platforma-sdk/model";
|
|
4
4
|
import { watchCached as n } from "@milaboratories/uikit";
|
|
5
5
|
import { isNil as r } from "es-toolkit";
|
|
6
|
+
//#region src/components/PlAgDataTable/compositions/useFilterableColumns.ts
|
|
6
7
|
function i(i, o) {
|
|
7
8
|
let s = e([]), c = e([]);
|
|
8
9
|
return n(() => [o(), i()], ([e, n]) => {
|
|
@@ -23,6 +24,7 @@ function a(e) {
|
|
|
23
24
|
function o(e) {
|
|
24
25
|
return !("children" in e);
|
|
25
26
|
}
|
|
27
|
+
//#endregion
|
|
26
28
|
export { i as useFilterableColumns };
|
|
27
29
|
|
|
28
30
|
//# sourceMappingURL=useFilterableColumns.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFilterableColumns.js","names":[],"sources":["../../../../src/components/PlAgDataTable/compositions/useFilterableColumns.ts"],"sourcesContent":["import { isNil } from \"es-toolkit\";\nimport {\n parseJson,\n PlTableColumnIdJson,\n PTableColumnSpec,\n PTableValue,\n} from \"@platforma-sdk/model\";\nimport { ref } from \"vue\";\nimport { PTableHidden } from \"../sources/common\";\nimport { watchCached } from \"@milaboratories/uikit\";\nimport { ColDef, ColGroupDef } from \"ag-grid-enterprise\";\nimport { PlAgDataTableRowNumberColId } from \"../sources/row-number\";\nimport { PlAgDataTableV2Row } from \"../types\";\n\nexport function useFilterableColumns(\n getSourceId: () => string | null,\n getColumnDefs: () => null | undefined | ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[],\n) {\n const filterableColumns = ref<PTableColumnSpec[]>([]);\n const visibleFilterableColumns = ref<PTableColumnSpec[]>([]);\n\n // Propagate columns for filter component\n watchCached(\n () => [getColumnDefs(), getSourceId()] as const,\n ([columnDefs, sourceId]) => {\n if (isNil(sourceId)) {\n filterableColumns.value = [];\n visibleFilterableColumns.value = [];\n return;\n }\n\n const dataColDefs = getDataColDefs(columnDefs);\n const cols = dataColDefs\n .filter((def): def is typeof def & { colId: string } => !isNil(def.colId))\n .flatMap((def) => ({\n id: parseJson(def.colId satisfies string as PlTableColumnIdJson).labeled,\n hide: def.hide,\n }));\n\n filterableColumns.value = cols.map((c) => c.id);\n visibleFilterableColumns.value = cols.filter((c) => !c.hide).map((c) => c.id);\n },\n { immediate: true },\n );\n\n return [filterableColumns, visibleFilterableColumns] as const;\n}\n\nfunction getDataColDefs(\n columnDefs: ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[] | null | undefined,\n): ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[] {\n if (!columnDefs) return [];\n return columnDefs\n .filter(isColDef)\n .filter((def) => def.colId && def.colId !== PlAgDataTableRowNumberColId);\n}\n\nfunction isColDef<TData, TValue>(\n def: ColDef<TData, TValue> | ColGroupDef<TData>,\n): def is ColDef<TData, TValue> {\n return !(\"children\" in def);\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useFilterableColumns.js","names":[],"sources":["../../../../src/components/PlAgDataTable/compositions/useFilterableColumns.ts"],"sourcesContent":["import { isNil } from \"es-toolkit\";\nimport {\n parseJson,\n PlTableColumnIdJson,\n PTableColumnSpec,\n PTableValue,\n} from \"@platforma-sdk/model\";\nimport { ref } from \"vue\";\nimport { PTableHidden } from \"../sources/common\";\nimport { watchCached } from \"@milaboratories/uikit\";\nimport { ColDef, ColGroupDef } from \"ag-grid-enterprise\";\nimport { PlAgDataTableRowNumberColId } from \"../sources/row-number\";\nimport { PlAgDataTableV2Row } from \"../types\";\n\nexport function useFilterableColumns(\n getSourceId: () => string | null,\n getColumnDefs: () => null | undefined | ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[],\n) {\n const filterableColumns = ref<PTableColumnSpec[]>([]);\n const visibleFilterableColumns = ref<PTableColumnSpec[]>([]);\n\n // Propagate columns for filter component\n watchCached(\n () => [getColumnDefs(), getSourceId()] as const,\n ([columnDefs, sourceId]) => {\n if (isNil(sourceId)) {\n filterableColumns.value = [];\n visibleFilterableColumns.value = [];\n return;\n }\n\n const dataColDefs = getDataColDefs(columnDefs);\n const cols = dataColDefs\n .filter((def): def is typeof def & { colId: string } => !isNil(def.colId))\n .flatMap((def) => ({\n id: parseJson(def.colId satisfies string as PlTableColumnIdJson).labeled,\n hide: def.hide,\n }));\n\n filterableColumns.value = cols.map((c) => c.id);\n visibleFilterableColumns.value = cols.filter((c) => !c.hide).map((c) => c.id);\n },\n { immediate: true },\n );\n\n return [filterableColumns, visibleFilterableColumns] as const;\n}\n\nfunction getDataColDefs(\n columnDefs: ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[] | null | undefined,\n): ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[] {\n if (!columnDefs) return [];\n return columnDefs\n .filter(isColDef)\n .filter((def) => def.colId && def.colId !== PlAgDataTableRowNumberColId);\n}\n\nfunction isColDef<TData, TValue>(\n def: ColDef<TData, TValue> | ColGroupDef<TData>,\n): def is ColDef<TData, TValue> {\n return !(\"children\" in def);\n}\n"],"mappings":";;;;;;AAcA,SAAgB,EACd,GACA,GACA;CACA,IAAM,IAAoB,EAAwB,EAAE,CAAC,EAC/C,IAA2B,EAAwB,EAAE,CAAC;AA0B5D,QAvBA,QACQ,CAAC,GAAe,EAAE,GAAa,CAAC,GACrC,CAAC,GAAY,OAAc;AAC1B,MAAI,EAAM,EAAS,EAAE;AAEnB,GADA,EAAkB,QAAQ,EAAE,EAC5B,EAAyB,QAAQ,EAAE;AACnC;;EAIF,IAAM,IADc,EAAe,EAAW,CAE3C,QAAQ,MAA+C,CAAC,EAAM,EAAI,MAAM,CAAC,CACzE,SAAS,OAAS;GACjB,IAAI,EAAU,EAAI,MAA8C,CAAC;GACjE,MAAM,EAAI;GACX,EAAE;AAGL,EADA,EAAkB,QAAQ,EAAK,KAAK,MAAM,EAAE,GAAG,EAC/C,EAAyB,QAAQ,EAAK,QAAQ,MAAM,CAAC,EAAE,KAAK,CAAC,KAAK,MAAM,EAAE,GAAG;IAE/E,EAAE,WAAW,IAAM,CACpB,EAEM,CAAC,GAAmB,EAAyB;;AAGtD,SAAS,EACP,GAC0D;AAE1D,QADK,IACE,EACJ,OAAO,EAAS,CAChB,QAAQ,MAAQ,EAAI,SAAS,EAAI,UAAA,4BAAsC,GAHlD,EAAE;;AAM5B,SAAS,EACP,GAC8B;AAC9B,QAAO,EAAE,cAAc"}
|
|
@@ -6,6 +6,7 @@ import r from "../PlAgOverlayNoRows.js";
|
|
|
6
6
|
import { shallowRef as i } from "vue";
|
|
7
7
|
import { parseJson as a } from "@platforma-sdk/model";
|
|
8
8
|
import { isNil as o } from "es-toolkit";
|
|
9
|
+
//#region src/components/PlAgDataTable/compositions/useGrid.ts
|
|
9
10
|
function s({ selection: s, noRowsText: c, loadingText: l, runningText: u, notReadyText: d, cellRendererSelector: f }) {
|
|
10
11
|
let p = i(null), m = i({
|
|
11
12
|
animateRows: !1,
|
|
@@ -98,6 +99,7 @@ function s({ selection: s, noRowsText: c, loadingText: l, runningText: u, notRea
|
|
|
98
99
|
gridOptions: m
|
|
99
100
|
};
|
|
100
101
|
}
|
|
102
|
+
//#endregion
|
|
101
103
|
export { s as useGrid };
|
|
102
104
|
|
|
103
105
|
//# sourceMappingURL=useGrid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGrid.js","names":[],"sources":["../../../../src/components/PlAgDataTable/compositions/useGrid.ts"],"sourcesContent":["import { isJsonEqual } from \"@milaboratories/helpers\";\nimport { parseJson, PlSelectionModel } from \"@platforma-sdk/model\";\nimport {\n CellRendererSelectorFunc,\n GridApi,\n GridOptions,\n ManagedGridOptionKey,\n ManagedGridOptions,\n} from \"ag-grid-enterprise\";\nimport { type Ref, shallowRef } from \"vue\";\nimport { autoSizeRowNumberColumn } from \"../sources/row-number\";\nimport {\n PlAgDataTableV2Row,\n PlTableRowIdJson,\n PlAgOverlayLoadingParams,\n PlAgOverlayNoRowsParams,\n} from \"../types\";\nimport PlOverlayLoading from \"../PlAgOverlayLoading.vue\";\nimport PlOverlayNoRows from \"../PlAgOverlayNoRows.vue\";\nimport { isNil } from \"es-toolkit\";\n\nexport function useGrid({\n selection,\n noRowsText,\n loadingText,\n runningText,\n notReadyText,\n cellRendererSelector,\n}: {\n selection: Ref<PlSelectionModel | undefined>;\n noRowsText?: string;\n loadingText?: string;\n runningText?: string;\n notReadyText?: string;\n cellRendererSelector?: CellRendererSelectorFunc<PlAgDataTableV2Row>;\n}) {\n const gridApi = shallowRef<GridApi<PlAgDataTableV2Row> | null>(null);\n const gridOptions = shallowRef<GridOptions<PlAgDataTableV2Row>>({\n animateRows: false,\n suppressColumnMoveAnimation: true,\n cellSelection: isNil(selection.value),\n autoSizeStrategy: { type: \"fitCellContents\" },\n rowSelection: selection.value\n ? {\n mode: \"multiRow\",\n selectAll: \"all\",\n groupSelects: \"self\",\n checkboxes: false,\n headerCheckbox: false,\n enableClickSelection: false,\n }\n : undefined,\n defaultColDef: {\n suppressHeaderMenuButton: true,\n sortingOrder: [\"desc\", \"asc\", null],\n cellRendererSelector,\n },\n maintainColumnOrder: true,\n localeText: {\n loadingError: \"...\",\n },\n rowModelType: \"serverSide\",\n // cacheBlockSize should be the same as PlMultiSequenceAlignment limit\n // so that selectAll will add all rows to selection\n cacheBlockSize: 1000,\n maxBlocksInCache: 100,\n blockLoadDebounceMillis: 500,\n serverSideSortAllLevels: true,\n suppressServerSideFullWidthLoadingRow: true,\n getRowId: (params) => params.data.id,\n loading: true,\n loadingOverlayComponentParams: {\n variant: \"not-ready\",\n loadingText: loadingText,\n runningText: runningText,\n notReadyText: notReadyText,\n } satisfies PlAgOverlayLoadingParams,\n loadingOverlayComponent: PlOverlayLoading,\n noRowsOverlayComponent: PlOverlayNoRows,\n noRowsOverlayComponentParams: {\n text: noRowsText,\n } satisfies PlAgOverlayNoRowsParams,\n defaultCsvExportParams: {\n allColumns: true,\n suppressQuotes: true,\n columnSeparator: \"\\t\",\n fileName: \"table.tsv\",\n },\n onGridReady: (event) => {\n const api = event.api;\n autoSizeRowNumberColumn(api);\n const setGridOption = (\n key: ManagedGridOptionKey,\n value: GridOptions[ManagedGridOptionKey],\n ) => {\n const options = { ...gridOptions.value };\n options[key] = value;\n gridOptions.value = options;\n api.setGridOption(key, value);\n };\n const updateGridOptions = (options: ManagedGridOptions) => {\n gridOptions.value = {\n ...gridOptions.value,\n ...options,\n };\n api.updateGridOptions(options);\n };\n gridApi.value = new Proxy(api, {\n get(target, prop, receiver) {\n switch (prop) {\n case \"setGridOption\":\n return setGridOption;\n case \"updateGridOptions\":\n return updateGridOptions;\n default:\n return Reflect.get(target, prop, receiver);\n }\n },\n });\n },\n onSelectionChanged: (event) => {\n if (!isNil(selection.value)) {\n const state = event.api.getServerSideSelectionState();\n const selectedKeys =\n state?.toggledNodes?.map((nodeId) => parseJson(nodeId as PlTableRowIdJson)) ?? [];\n if (!isJsonEqual(selection.value.selectedKeys, selectedKeys)) {\n selection.value = { ...selection.value, selectedKeys };\n }\n }\n },\n onRowDoubleClicked: (_event) => {\n throw new Error(\"not overrided onRowDoubleClicked\");\n },\n onStateUpdated: (_event) => {\n throw new Error(\"not overrided onStateUpdated\");\n },\n onGridPreDestroyed: (_event) => {\n throw new Error(\"not overrided onGridPreDestroyed\");\n },\n });\n\n return { gridApi, gridOptions };\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useGrid.js","names":[],"sources":["../../../../src/components/PlAgDataTable/compositions/useGrid.ts"],"sourcesContent":["import { isJsonEqual } from \"@milaboratories/helpers\";\nimport { parseJson, PlSelectionModel } from \"@platforma-sdk/model\";\nimport {\n CellRendererSelectorFunc,\n GridApi,\n GridOptions,\n ManagedGridOptionKey,\n ManagedGridOptions,\n} from \"ag-grid-enterprise\";\nimport { type Ref, shallowRef } from \"vue\";\nimport { autoSizeRowNumberColumn } from \"../sources/row-number\";\nimport {\n PlAgDataTableV2Row,\n PlTableRowIdJson,\n PlAgOverlayLoadingParams,\n PlAgOverlayNoRowsParams,\n} from \"../types\";\nimport PlOverlayLoading from \"../PlAgOverlayLoading.vue\";\nimport PlOverlayNoRows from \"../PlAgOverlayNoRows.vue\";\nimport { isNil } from \"es-toolkit\";\n\nexport function useGrid({\n selection,\n noRowsText,\n loadingText,\n runningText,\n notReadyText,\n cellRendererSelector,\n}: {\n selection: Ref<PlSelectionModel | undefined>;\n noRowsText?: string;\n loadingText?: string;\n runningText?: string;\n notReadyText?: string;\n cellRendererSelector?: CellRendererSelectorFunc<PlAgDataTableV2Row>;\n}) {\n const gridApi = shallowRef<GridApi<PlAgDataTableV2Row> | null>(null);\n const gridOptions = shallowRef<GridOptions<PlAgDataTableV2Row>>({\n animateRows: false,\n suppressColumnMoveAnimation: true,\n cellSelection: isNil(selection.value),\n autoSizeStrategy: { type: \"fitCellContents\" },\n rowSelection: selection.value\n ? {\n mode: \"multiRow\",\n selectAll: \"all\",\n groupSelects: \"self\",\n checkboxes: false,\n headerCheckbox: false,\n enableClickSelection: false,\n }\n : undefined,\n defaultColDef: {\n suppressHeaderMenuButton: true,\n sortingOrder: [\"desc\", \"asc\", null],\n cellRendererSelector,\n },\n maintainColumnOrder: true,\n localeText: {\n loadingError: \"...\",\n },\n rowModelType: \"serverSide\",\n // cacheBlockSize should be the same as PlMultiSequenceAlignment limit\n // so that selectAll will add all rows to selection\n cacheBlockSize: 1000,\n maxBlocksInCache: 100,\n blockLoadDebounceMillis: 500,\n serverSideSortAllLevels: true,\n suppressServerSideFullWidthLoadingRow: true,\n getRowId: (params) => params.data.id,\n loading: true,\n loadingOverlayComponentParams: {\n variant: \"not-ready\",\n loadingText: loadingText,\n runningText: runningText,\n notReadyText: notReadyText,\n } satisfies PlAgOverlayLoadingParams,\n loadingOverlayComponent: PlOverlayLoading,\n noRowsOverlayComponent: PlOverlayNoRows,\n noRowsOverlayComponentParams: {\n text: noRowsText,\n } satisfies PlAgOverlayNoRowsParams,\n defaultCsvExportParams: {\n allColumns: true,\n suppressQuotes: true,\n columnSeparator: \"\\t\",\n fileName: \"table.tsv\",\n },\n onGridReady: (event) => {\n const api = event.api;\n autoSizeRowNumberColumn(api);\n const setGridOption = (\n key: ManagedGridOptionKey,\n value: GridOptions[ManagedGridOptionKey],\n ) => {\n const options = { ...gridOptions.value };\n options[key] = value;\n gridOptions.value = options;\n api.setGridOption(key, value);\n };\n const updateGridOptions = (options: ManagedGridOptions) => {\n gridOptions.value = {\n ...gridOptions.value,\n ...options,\n };\n api.updateGridOptions(options);\n };\n gridApi.value = new Proxy(api, {\n get(target, prop, receiver) {\n switch (prop) {\n case \"setGridOption\":\n return setGridOption;\n case \"updateGridOptions\":\n return updateGridOptions;\n default:\n return Reflect.get(target, prop, receiver);\n }\n },\n });\n },\n onSelectionChanged: (event) => {\n if (!isNil(selection.value)) {\n const state = event.api.getServerSideSelectionState();\n const selectedKeys =\n state?.toggledNodes?.map((nodeId) => parseJson(nodeId as PlTableRowIdJson)) ?? [];\n if (!isJsonEqual(selection.value.selectedKeys, selectedKeys)) {\n selection.value = { ...selection.value, selectedKeys };\n }\n }\n },\n onRowDoubleClicked: (_event) => {\n throw new Error(\"not overrided onRowDoubleClicked\");\n },\n onStateUpdated: (_event) => {\n throw new Error(\"not overrided onStateUpdated\");\n },\n onGridPreDestroyed: (_event) => {\n throw new Error(\"not overrided onGridPreDestroyed\");\n },\n });\n\n return { gridApi, gridOptions };\n}\n"],"mappings":";;;;;;;;;AAqBA,SAAgB,EAAQ,EACtB,cACA,eACA,gBACA,gBACA,iBACA,2BAQC;CACD,IAAM,IAAU,EAA+C,KAAK,EAC9D,IAAc,EAA4C;EAC9D,aAAa;EACb,6BAA6B;EAC7B,eAAe,EAAM,EAAU,MAAM;EACrC,kBAAkB,EAAE,MAAM,mBAAmB;EAC7C,cAAc,EAAU,QACpB;GACE,MAAM;GACN,WAAW;GACX,cAAc;GACd,YAAY;GACZ,gBAAgB;GAChB,sBAAsB;GACvB,GACD,KAAA;EACJ,eAAe;GACb,0BAA0B;GAC1B,cAAc;IAAC;IAAQ;IAAO;IAAK;GACnC;GACD;EACD,qBAAqB;EACrB,YAAY,EACV,cAAc,OACf;EACD,cAAc;EAGd,gBAAgB;EAChB,kBAAkB;EAClB,yBAAyB;EACzB,yBAAyB;EACzB,uCAAuC;EACvC,WAAW,MAAW,EAAO,KAAK;EAClC,SAAS;EACT,+BAA+B;GAC7B,SAAS;GACI;GACA;GACC;GACf;EACD,yBAAyB;EACzB,wBAAwB;EACxB,8BAA8B,EAC5B,MAAM,GACP;EACD,wBAAwB;GACtB,YAAY;GACZ,gBAAgB;GAChB,iBAAiB;GACjB,UAAU;GACX;EACD,cAAc,MAAU;GACtB,IAAM,IAAM,EAAM;AAClB,KAAwB,EAAI;GAC5B,IAAM,KACJ,GACA,MACG;IACH,IAAM,IAAU,EAAE,GAAG,EAAY,OAAO;AAGxC,IAFA,EAAQ,KAAO,GACf,EAAY,QAAQ,GACpB,EAAI,cAAc,GAAK,EAAM;MAEzB,KAAqB,MAAgC;AAKzD,IAJA,EAAY,QAAQ;KAClB,GAAG,EAAY;KACf,GAAG;KACJ,EACD,EAAI,kBAAkB,EAAQ;;AAEhC,KAAQ,QAAQ,IAAI,MAAM,GAAK,EAC7B,IAAI,GAAQ,GAAM,GAAU;AAC1B,YAAQ,GAAR;KACE,KAAK,gBACH,QAAO;KACT,KAAK,oBACH,QAAO;KACT,QACE,QAAO,QAAQ,IAAI,GAAQ,GAAM,EAAS;;MAGjD,CAAC;;EAEJ,qBAAqB,MAAU;AAC7B,OAAI,CAAC,EAAM,EAAU,MAAM,EAAE;IAE3B,IAAM,IADQ,EAAM,IAAI,6BAA6B,EAE5C,cAAc,KAAK,MAAW,EAAU,EAA2B,CAAC,IAAI,EAAE;AACnF,IAAK,EAAY,EAAU,MAAM,cAAc,EAAa,KAC1D,EAAU,QAAQ;KAAE,GAAG,EAAU;KAAO;KAAc;;;EAI5D,qBAAqB,MAAW;AAC9B,SAAU,MAAM,mCAAmC;;EAErD,iBAAiB,MAAW;AAC1B,SAAU,MAAM,+BAA+B;;EAEjD,qBAAqB,MAAW;AAC9B,SAAU,MAAM,mCAAmC;;EAEtD,CAAC;AAEF,QAAO;EAAE;EAAS;EAAa"}
|
|
@@ -7,6 +7,8 @@ import "./PlAgDataTableV2.js";
|
|
|
7
7
|
import "./types.js";
|
|
8
8
|
import { activateAgGrid as e } from "../../composition/AgGrid/index.js";
|
|
9
9
|
import "../../lib.js";
|
|
10
|
+
//#region src/components/PlAgDataTable/index.ts
|
|
10
11
|
e();
|
|
12
|
+
//#endregion
|
|
11
13
|
|
|
12
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/PlAgDataTable/index.ts"],"sourcesContent":["import { activateAgGrid } from \"../../lib\";\n\nactivateAgGrid();\n\nexport { default as PlDataTableV2 } from \"./PlAgDataTableV2.vue\";\nexport { default as PlAgOverlayLoading } from \"./PlAgOverlayLoading.vue\";\nexport { default as PlAgOverlayNoRows } from \"./PlAgOverlayNoRows.vue\";\n\nexport * from \"./types\";\nexport * from \"./sources/row-number\";\nexport * from \"./sources/focus-row\";\nexport * from \"./sources/menu-items\";\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/PlAgDataTable/index.ts"],"sourcesContent":["import { activateAgGrid } from \"../../lib\";\n\nactivateAgGrid();\n\nexport { default as PlDataTableV2 } from \"./PlAgDataTableV2.vue\";\nexport { default as PlAgOverlayLoading } from \"./PlAgOverlayLoading.vue\";\nexport { default as PlAgOverlayNoRows } from \"./PlAgOverlayNoRows.vue\";\n\nexport * from \"./types\";\nexport * from \"./sources/row-number\";\nexport * from \"./sources/focus-row\";\nexport * from \"./sources/menu-items\";\n"],"mappings":";;;;;;;;;;AAEA,GAAgB"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
//#region src/components/PlAgDataTable/sources/common.ts
|
|
2
|
+
var e = { type: "hidden" };
|
|
2
3
|
function t(e) {
|
|
3
4
|
return typeof e == "object" && !!e && e.type === "hidden";
|
|
4
5
|
}
|
|
6
|
+
//#endregion
|
|
5
7
|
export { e as PTableHidden, t as isPTableHidden };
|
|
6
8
|
|
|
7
9
|
//# sourceMappingURL=common.js.map
|