@platforma-sdk/ui-vue 1.58.8 → 1.58.10
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 +195 -181
- 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 +14 -0
- package/dist/AgGridVue/createAgGridColDef.js +73 -43
- package/dist/AgGridVue/createAgGridColDef.js.map +1 -1
- package/dist/AgGridVue/selection.js +55 -47
- package/dist/AgGridVue/selection.js.map +1 -1
- package/dist/AgGridVue/useAgGridOptions.js +212 -229
- package/dist/AgGridVue/useAgGridOptions.js.map +1 -1
- package/dist/_virtual/_plugin-vue_export-helper.js +5 -9
- package/dist/_virtual/_rolldown/runtime.js +15 -0
- package/dist/aggrid.js +48 -46
- package/dist/aggrid.js.map +1 -1
- package/dist/assets/block.css +1 -1
- package/dist/assets/ui.css +1 -0
- package/dist/components/BlockLayout.js +7 -0
- package/dist/components/BlockLayout.js.map +1 -0
- package/dist/components/BlockLayout.style.js +4 -0
- package/dist/components/BlockLayout.style.js.map +1 -0
- package/dist/components/BlockLayout.vue.css +1 -0
- package/dist/components/BlockLayout.vue2.js +42 -54
- package/dist/components/BlockLayout.vue2.js.map +1 -1
- package/dist/components/BlockLoader.js +5 -0
- package/dist/components/BlockLoader.js.map +1 -0
- package/dist/components/BlockLoader.vue2.js +22 -5
- package/dist/components/BlockLoader.vue2.js.map +1 -1
- package/dist/components/LoaderPage.js +10 -0
- package/dist/components/LoaderPage.js.map +1 -0
- package/dist/components/NotFound.js +5 -0
- package/dist/components/NotFound.js.map +1 -0
- package/dist/components/NotFound.vue2.js +18 -5
- package/dist/components/NotFound.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/FilterEditor.js +7 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.js.map +1 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.style.js +18 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.style.js.map +1 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.vue.css +1 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js +291 -322
- package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/OperandButton.js +7 -0
- package/dist/components/PlAdvancedFilter/OperandButton.js.map +1 -0
- package/dist/components/PlAdvancedFilter/OperandButton.style.js +8 -0
- package/dist/components/PlAdvancedFilter/OperandButton.style.js.map +1 -0
- package/dist/components/PlAdvancedFilter/OperandButton.vue.css +1 -0
- package/dist/components/PlAdvancedFilter/OperandButton.vue2.js +19 -24
- package/dist/components/PlAdvancedFilter/OperandButton.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.js +7 -0
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.js.map +1 -0
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.style.js +12 -0
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.style.js.map +1 -0
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.css +1 -0
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.d.ts +1 -3
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.d.ts.map +1 -1
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js +239 -238
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/constants.js +115 -58
- package/dist/components/PlAdvancedFilter/constants.js.map +1 -1
- package/dist/components/PlAdvancedFilter/index.js +6 -6
- package/dist/components/PlAdvancedFilter/index.js.map +1 -1
- package/dist/components/PlAdvancedFilter/utils.js +49 -64
- package/dist/components/PlAdvancedFilter/utils.js.map +1 -1
- package/dist/components/PlAgCellFile/PlAgCellFile.js +5 -0
- package/dist/components/PlAgCellFile/PlAgCellFile.js.map +1 -0
- package/dist/components/PlAgCellFile/PlAgCellFile.vue2.js +36 -5
- package/dist/components/PlAgCellFile/PlAgCellFile.vue2.js.map +1 -1
- package/dist/components/PlAgCellProgress/PlAgCellProgress.js +5 -0
- package/dist/components/PlAgCellProgress/PlAgCellProgress.js.map +1 -0
- package/dist/components/PlAgCellProgress/PlAgCellProgress.vue2.js +13 -5
- package/dist/components/PlAgCellProgress/PlAgCellProgress.vue2.js.map +1 -1
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.js +6 -0
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.js.map +1 -0
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue2.js +12 -0
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue2.js.map +1 -0
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.js +6 -0
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.js.map +1 -0
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.style.css +1 -0
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue2.js +31 -0
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue2.js.map +1 -0
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.js +6 -0
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.js.map +1 -0
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.style.css +1 -0
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue2.js +19 -0
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue2.js.map +1 -0
- package/dist/components/PlAgColumnHeader/PlAgColumnHeader.js +5 -0
- package/dist/components/PlAgColumnHeader/PlAgColumnHeader.js.map +1 -0
- package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue2.js +68 -5
- package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue2.js.map +1 -1
- package/dist/components/PlAgColumnHeader/pl-ag-column-header.css +1 -1
- package/dist/components/PlAgCsvExporter/PlAgCsvExporter.js +5 -0
- package/dist/components/PlAgCsvExporter/PlAgCsvExporter.js.map +1 -0
- package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue2.js +26 -5
- package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue2.js.map +1 -1
- package/dist/components/PlAgCsvExporter/export-csv.js +36 -43
- package/dist/components/PlAgCsvExporter/export-csv.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.js +7 -0
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.js.map +1 -0
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.style.js +4 -0
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.style.js.map +1 -0
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue.css +1 -0
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js +68 -72
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.js +7 -0
- package/dist/components/PlAgDataTable/PlAgDataTableV2.js.map +1 -0
- package/dist/components/PlAgDataTable/PlAgDataTableV2.style.js +7 -0
- package/dist/components/PlAgDataTable/PlAgDataTableV2.style.js.map +1 -0
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.css +1 -0
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +325 -336
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgOverlayLoading.js +5 -0
- package/dist/components/PlAgDataTable/PlAgOverlayLoading.js.map +1 -0
- package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue2.js +26 -5
- package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.js +6 -0
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.js.map +1 -0
- package/dist/components/PlAgDataTable/{PlAgOverlayNoRows.css → PlAgOverlayNoRows.style.css} +1 -1
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue2.js +14 -0
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue2.js.map +1 -0
- package/dist/components/PlAgDataTable/PlAgRowCount.js +5 -0
- package/dist/components/PlAgDataTable/PlAgRowCount.js.map +1 -0
- package/dist/components/PlAgDataTable/PlAgRowCount.vue2.js +23 -5
- package/dist/components/PlAgDataTable/PlAgRowCount.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/ag-override.js +4 -0
- package/dist/components/PlAgDataTable/ag-override.js.map +1 -0
- package/dist/components/PlAgDataTable/compositions/useFilterableColumns.js +25 -30
- package/dist/components/PlAgDataTable/compositions/useFilterableColumns.js.map +1 -1
- package/dist/components/PlAgDataTable/compositions/useGrid.js +102 -112
- package/dist/components/PlAgDataTable/compositions/useGrid.js.map +1 -1
- package/dist/components/PlAgDataTable/pl-ag-overlay-loading.css +1 -1
- package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.js +9 -0
- package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.js.map +1 -0
- package/dist/components/PlAgDataTable/sources/common.js +6 -8
- package/dist/components/PlAgDataTable/sources/common.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/focus-row.js +36 -51
- package/dist/components/PlAgDataTable/sources/focus-row.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/menu-items.js +10 -6
- package/dist/components/PlAgDataTable/sources/menu-items.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/row-number.js +82 -94
- package/dist/components/PlAgDataTable/sources/row-number.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-source-v2.js +178 -199
- package/dist/components/PlAgDataTable/sources/table-source-v2.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-state-v2.js +155 -132
- package/dist/components/PlAgDataTable/sources/table-state-v2.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/value-rendering.js +33 -38
- package/dist/components/PlAgDataTable/sources/value-rendering.js.map +1 -1
- package/dist/components/PlAgDataTable/types.js +54 -43
- package/dist/components/PlAgDataTable/types.js.map +1 -1
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.js +7 -0
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.js.map +1 -0
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.style.js +4 -0
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.style.js.map +1 -0
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js +89 -100
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js.map +1 -1
- package/dist/components/PlAgGridColumnManager/useFilteredItems.js +46 -33
- package/dist/components/PlAgGridColumnManager/useFilteredItems.js.map +1 -1
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.js +5 -0
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.js.map +1 -0
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.d.ts.map +1 -1
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue2.js +37 -5
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue2.js.map +1 -1
- package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.css +1 -1
- package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.js +10 -0
- package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.js.map +1 -0
- package/dist/components/PlAgRowNumHeader.js +5 -0
- package/dist/components/PlAgRowNumHeader.js.map +1 -0
- package/dist/components/PlAgRowNumHeader.vue2.js +38 -5
- package/dist/components/PlAgRowNumHeader.vue2.js.map +1 -1
- package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.js +5 -0
- package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.js.map +1 -0
- package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue2.js +32 -5
- package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue2.js.map +1 -1
- package/dist/components/PlAgTextAndButtonCell/pl-ag-text-and-button-cell.css +1 -1
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.js +7 -0
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.js.map +1 -0
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.style.js +11 -0
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.style.js.map +1 -0
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue.css +1 -0
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js +102 -113
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/FilterSidebar.js +7 -0
- package/dist/components/PlAnnotations/components/FilterSidebar.js.map +1 -0
- package/dist/components/PlAnnotations/components/FilterSidebar.style.js +7 -0
- package/dist/components/PlAnnotations/components/FilterSidebar.style.js.map +1 -0
- package/dist/components/PlAnnotations/components/FilterSidebar.vue.css +1 -0
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +121 -129
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/PlAnnotations.js +7 -0
- package/dist/components/PlAnnotations/components/PlAnnotations.js.map +1 -0
- package/dist/components/PlAnnotations/components/PlAnnotations.style.js +4 -0
- package/dist/components/PlAnnotations/components/PlAnnotations.style.js.map +1 -0
- package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js +73 -65
- package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.js +7 -0
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.js.map +1 -0
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.style.js +7 -0
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.style.js.map +1 -0
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js +58 -52
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/style.css +1 -1
- package/dist/components/PlAnnotations/components/style.module.js +8 -0
- package/dist/components/PlAnnotations/components/style.module.js.map +1 -0
- package/dist/components/PlAnnotations/utils.js +6 -8
- package/dist/components/PlAnnotations/utils.js.map +1 -1
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.js +5 -0
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.js.map +1 -0
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue2.js +57 -5
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue2.js.map +1 -1
- package/dist/components/PlAppErrorNotificationAlert/pl-app-error-notification-alert.css +1 -1
- package/dist/components/PlBtnExportArchive/Item.js +7 -0
- package/dist/components/PlBtnExportArchive/Item.js.map +1 -0
- package/dist/components/PlBtnExportArchive/Item.style.js +9 -0
- package/dist/components/PlBtnExportArchive/Item.style.js.map +1 -0
- package/dist/components/PlBtnExportArchive/Item.vue.css +1 -0
- package/dist/components/PlBtnExportArchive/Item.vue2.js +28 -42
- package/dist/components/PlBtnExportArchive/Item.vue2.js.map +1 -1
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.js +7 -0
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.js.map +1 -0
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.style.js +8 -0
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.style.js.map +1 -0
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.css +1 -0
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue2.js +161 -159
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue2.js.map +1 -1
- package/dist/components/PlBtnExportArchive/Summary.js +7 -0
- package/dist/components/PlBtnExportArchive/Summary.js.map +1 -0
- package/dist/components/PlBtnExportArchive/Summary.style.js +8 -0
- package/dist/components/PlBtnExportArchive/Summary.style.js.map +1 -0
- package/dist/components/PlBtnExportArchive/Summary.vue.css +1 -0
- package/dist/components/PlBtnExportArchive/Summary.vue2.js +26 -41
- package/dist/components/PlBtnExportArchive/Summary.vue2.js.map +1 -1
- package/dist/components/PlTableFastSearch/PlTableFastSearch.js +5 -0
- package/dist/components/PlTableFastSearch/PlTableFastSearch.js.map +1 -0
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue2.js +41 -5
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue2.js.map +1 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.js +7 -0
- package/dist/components/PlTableFilters/PlTableFiltersV2.js.map +1 -0
- package/dist/components/PlTableFilters/PlTableFiltersV2.style.js +4 -0
- package/dist/components/PlTableFilters/PlTableFiltersV2.style.js.map +1 -0
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue.css +1 -0
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js +97 -106
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js.map +1 -1
- package/dist/composition/fileContent.js +169 -200
- package/dist/composition/fileContent.js.map +1 -1
- package/dist/computedResult.js +47 -18
- package/dist/computedResult.js.map +1 -1
- package/dist/createModel.js +44 -60
- package/dist/createModel.js.map +1 -1
- package/dist/defineApp.js +87 -113
- package/dist/defineApp.js.map +1 -1
- package/dist/defineStore.js +15 -16
- package/dist/defineStore.js.map +1 -1
- package/dist/index.js +39 -98
- package/dist/index.js.map +1 -1
- package/dist/internal/UpdateSerializer.js +50 -66
- package/dist/internal/UpdateSerializer.js.map +1 -1
- package/dist/internal/createAppModel.js +54 -68
- package/dist/internal/createAppModel.js.map +1 -1
- package/dist/internal/createAppV1.js +140 -193
- package/dist/internal/createAppV1.js.map +1 -1
- package/dist/internal/createAppV2.d.ts.map +1 -1
- package/dist/internal/createAppV2.js +149 -193
- package/dist/internal/createAppV2.js.map +1 -1
- package/dist/internal/createAppV3.d.ts.map +1 -1
- package/dist/internal/createAppV3.js +157 -202
- package/dist/internal/createAppV3.js.map +1 -1
- package/dist/internal/test-helpers/utils.d.ts.map +1 -1
- package/dist/lib/util/helpers/dist/error.js +1 -0
- package/dist/lib/util/helpers/dist/functions.js +8 -9
- package/dist/lib/util/helpers/dist/functions.js.map +1 -1
- package/dist/lib/util/helpers/dist/hash.js +5 -0
- package/dist/lib/util/helpers/dist/hash.js.map +1 -0
- package/dist/lib/util/helpers/dist/index.js +9 -0
- package/dist/lib/util/helpers/dist/objects.js +75 -42
- package/dist/lib/util/helpers/dist/objects.js.map +1 -1
- package/dist/lib/util/helpers/dist/prettyBytes.js +60 -26
- package/dist/lib/util/helpers/dist/prettyBytes.js.map +1 -1
- package/dist/lib/util/helpers/dist/random.js +6 -8
- package/dist/lib/util/helpers/dist/random.js.map +1 -1
- package/dist/lib/util/helpers/dist/strings.js +11 -14
- package/dist/lib/util/helpers/dist/strings.js.map +1 -1
- package/dist/lib/util/helpers/dist/uniqId.js +7 -0
- package/dist/lib/util/helpers/dist/uniqId.js.map +1 -0
- package/dist/lib/util/helpers/dist/utils.js +34 -50
- package/dist/lib/util/helpers/dist/utils.js.map +1 -1
- package/dist/lib.js +38 -0
- package/dist/objectHash.js +13 -10
- package/dist/objectHash.js.map +1 -1
- package/dist/plugins/Monetization/EndOfPeriod.js +7 -0
- package/dist/plugins/Monetization/EndOfPeriod.js.map +1 -0
- package/dist/plugins/Monetization/EndOfPeriod.style.js +4 -0
- package/dist/plugins/Monetization/EndOfPeriod.style.js.map +1 -0
- package/dist/plugins/Monetization/EndOfPeriod.vue.css +1 -0
- package/dist/plugins/Monetization/EndOfPeriod.vue2.js +15 -23
- package/dist/plugins/Monetization/EndOfPeriod.vue2.js.map +1 -1
- package/dist/plugins/Monetization/LimitCard.js +7 -0
- package/dist/plugins/Monetization/LimitCard.js.map +1 -0
- package/dist/plugins/Monetization/LimitCard.style.js +18 -0
- package/dist/plugins/Monetization/LimitCard.style.js.map +1 -0
- package/dist/plugins/Monetization/LimitCard.vue.css +1 -0
- package/dist/plugins/Monetization/LimitCard.vue2.js +47 -84
- package/dist/plugins/Monetization/LimitCard.vue2.js.map +1 -1
- package/dist/plugins/Monetization/MonetizationSidebar.js +5 -0
- package/dist/plugins/Monetization/MonetizationSidebar.js.map +1 -0
- package/dist/plugins/Monetization/MonetizationSidebar.vue2.js +106 -5
- package/dist/plugins/Monetization/MonetizationSidebar.vue2.js.map +1 -1
- package/dist/plugins/Monetization/RunStatus.js +7 -0
- package/dist/plugins/Monetization/RunStatus.js.map +1 -0
- package/dist/plugins/Monetization/RunStatus.style.js +13 -0
- package/dist/plugins/Monetization/RunStatus.style.js.map +1 -0
- package/dist/plugins/Monetization/RunStatus.vue.css +1 -0
- package/dist/plugins/Monetization/RunStatus.vue2.js +21 -40
- package/dist/plugins/Monetization/RunStatus.vue2.js.map +1 -1
- package/dist/plugins/Monetization/UserCabinetCard.js +7 -0
- package/dist/plugins/Monetization/UserCabinetCard.js.map +1 -0
- package/dist/plugins/Monetization/UserCabinetCard.style.js +12 -0
- package/dist/plugins/Monetization/UserCabinetCard.style.js.map +1 -0
- package/dist/plugins/Monetization/UserCabinetCard.vue.css +1 -0
- package/dist/plugins/Monetization/UserCabinetCard.vue2.js +50 -70
- package/dist/plugins/Monetization/UserCabinetCard.vue2.js.map +1 -1
- package/dist/plugins/Monetization/useButtonTarget.js +15 -16
- package/dist/plugins/Monetization/useButtonTarget.js.map +1 -1
- package/dist/plugins/Monetization/useInfo.js +36 -71
- package/dist/plugins/Monetization/useInfo.js.map +1 -1
- package/dist/plugins/Monetization/validation.js +34 -42
- package/dist/plugins/Monetization/validation.js.map +1 -1
- package/dist/urls.d.ts.map +1 -1
- package/dist/urls.js +4 -5
- package/dist/urls.js.map +1 -1
- package/dist/usePlugin.js +32 -12
- package/dist/usePlugin.js.map +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +29 -54
- package/dist/utils.js.map +1 -1
- package/package.json +9 -9
- package/src/components/PlAgDataTable/PlAgDataTableV2.vue +57 -9
- package/dist/_virtual/_plugin-vue_export-helper.js.map +0 -1
- package/dist/components/BlockLayout.css +0 -1
- package/dist/components/BlockLayout.vue.js +0 -10
- package/dist/components/BlockLayout.vue.js.map +0 -1
- package/dist/components/BlockLayout.vue3.js +0 -8
- package/dist/components/BlockLayout.vue3.js.map +0 -1
- package/dist/components/BlockLoader.vue.js +0 -26
- package/dist/components/BlockLoader.vue.js.map +0 -1
- package/dist/components/LoaderPage.vue.js +0 -15
- package/dist/components/LoaderPage.vue.js.map +0 -1
- package/dist/components/NotFound.vue.js +0 -26
- package/dist/components/NotFound.vue.js.map +0 -1
- package/dist/components/PlAdvancedFilter/FilterEditor.css +0 -1
- package/dist/components/PlAdvancedFilter/FilterEditor.vue.js +0 -10
- package/dist/components/PlAdvancedFilter/FilterEditor.vue.js.map +0 -1
- package/dist/components/PlAdvancedFilter/FilterEditor.vue3.js +0 -32
- package/dist/components/PlAdvancedFilter/FilterEditor.vue3.js.map +0 -1
- package/dist/components/PlAdvancedFilter/OperandButton.css +0 -1
- package/dist/components/PlAdvancedFilter/OperandButton.vue.js +0 -10
- package/dist/components/PlAdvancedFilter/OperandButton.vue.js.map +0 -1
- package/dist/components/PlAdvancedFilter/OperandButton.vue3.js +0 -12
- package/dist/components/PlAdvancedFilter/OperandButton.vue3.js.map +0 -1
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.css +0 -1
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.js +0 -10
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.js.map +0 -1
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue3.js +0 -20
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue3.js.map +0 -1
- package/dist/components/PlAgCellFile/PlAgCellFile.vue.js +0 -32
- package/dist/components/PlAgCellFile/PlAgCellFile.vue.js.map +0 -1
- package/dist/components/PlAgCellProgress/PlAgCellProgress.vue.js +0 -16
- package/dist/components/PlAgCellProgress/PlAgCellProgress.vue.js.map +0 -1
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js +0 -22
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js.map +0 -1
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue3.js +0 -6
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue3.js.map +0 -1
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.css +0 -1
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue.js +0 -32
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue.js.map +0 -1
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue3.js +0 -6
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue3.js.map +0 -1
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.css +0 -1
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue.js +0 -24
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue.js.map +0 -1
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue3.js +0 -6
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue3.js.map +0 -1
- package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue.js +0 -97
- package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue.js.map +0 -1
- package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue.js +0 -33
- package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue.js.map +0 -1
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.css +0 -1
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue.js +0 -10
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue.js.map +0 -1
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue3.js +0 -8
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue3.js.map +0 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.css +0 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.js +0 -10
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.js.map +0 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue3.js +0 -10
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue3.js.map +0 -1
- package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue.js +0 -48
- package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue.js.map +0 -1
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue.js +0 -22
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue.js.map +0 -1
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue3.js +0 -6
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue3.js.map +0 -1
- package/dist/components/PlAgDataTable/PlAgRowCount.vue.js +0 -26
- package/dist/components/PlAgDataTable/PlAgRowCount.vue.js.map +0 -1
- package/dist/components/PlAgDataTable/ag-override.css.js +0 -31
- package/dist/components/PlAgDataTable/ag-override.css.js.map +0 -1
- package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.scss.js +0 -14
- package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.scss.js.map +0 -1
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue.js +0 -10
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue.js.map +0 -1
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue3.js +0 -8
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue3.js.map +0 -1
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js +0 -48
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js.map +0 -1
- package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.scss.js +0 -15
- package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.scss.js.map +0 -1
- package/dist/components/PlAgRowNumHeader.vue.js +0 -39
- package/dist/components/PlAgRowNumHeader.vue.js.map +0 -1
- package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js +0 -45
- package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js.map +0 -1
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.css +0 -1
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue.js +0 -10
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue.js.map +0 -1
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue3.js +0 -18
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue3.js.map +0 -1
- package/dist/components/PlAnnotations/components/FilterSidebar.css +0 -1
- package/dist/components/PlAnnotations/components/FilterSidebar.vue.js +0 -10
- package/dist/components/PlAnnotations/components/FilterSidebar.vue.js.map +0 -1
- package/dist/components/PlAnnotations/components/FilterSidebar.vue3.js +0 -10
- package/dist/components/PlAnnotations/components/FilterSidebar.vue3.js.map +0 -1
- package/dist/components/PlAnnotations/components/PlAnnotations.vue.js +0 -10
- package/dist/components/PlAnnotations/components/PlAnnotations.vue.js.map +0 -1
- package/dist/components/PlAnnotations/components/PlAnnotations.vue3.js +0 -8
- package/dist/components/PlAnnotations/components/PlAnnotations.vue3.js.map +0 -1
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue.js +0 -10
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue.js.map +0 -1
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue3.js +0 -10
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue3.js.map +0 -1
- package/dist/components/PlAnnotations/components/style.module.css.js +0 -12
- package/dist/components/PlAnnotations/components/style.module.css.js.map +0 -1
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js +0 -79
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js.map +0 -1
- package/dist/components/PlBtnExportArchive/Item.css +0 -1
- package/dist/components/PlBtnExportArchive/Item.vue.js +0 -10
- package/dist/components/PlBtnExportArchive/Item.vue.js.map +0 -1
- package/dist/components/PlBtnExportArchive/Item.vue3.js +0 -14
- package/dist/components/PlBtnExportArchive/Item.vue3.js.map +0 -1
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.css +0 -1
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.js +0 -10
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.js.map +0 -1
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue3.js +0 -12
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue3.js.map +0 -1
- package/dist/components/PlBtnExportArchive/Summary.css +0 -1
- package/dist/components/PlBtnExportArchive/Summary.vue.js +0 -10
- package/dist/components/PlBtnExportArchive/Summary.vue.js.map +0 -1
- package/dist/components/PlBtnExportArchive/Summary.vue3.js +0 -12
- package/dist/components/PlBtnExportArchive/Summary.vue3.js.map +0 -1
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue.js +0 -54
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue.js.map +0 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.css +0 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue.js +0 -10
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue.js.map +0 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue3.js +0 -8
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue3.js.map +0 -1
- package/dist/plugins/Monetization/EndOfPeriod.css +0 -1
- package/dist/plugins/Monetization/EndOfPeriod.vue.js +0 -10
- package/dist/plugins/Monetization/EndOfPeriod.vue.js.map +0 -1
- package/dist/plugins/Monetization/EndOfPeriod.vue3.js +0 -8
- package/dist/plugins/Monetization/EndOfPeriod.vue3.js.map +0 -1
- package/dist/plugins/Monetization/LimitCard.css +0 -1
- package/dist/plugins/Monetization/LimitCard.vue.js +0 -10
- package/dist/plugins/Monetization/LimitCard.vue.js.map +0 -1
- package/dist/plugins/Monetization/LimitCard.vue3.js +0 -32
- package/dist/plugins/Monetization/LimitCard.vue3.js.map +0 -1
- package/dist/plugins/Monetization/MonetizationSidebar.vue.js +0 -138
- package/dist/plugins/Monetization/MonetizationSidebar.vue.js.map +0 -1
- package/dist/plugins/Monetization/RunStatus.css +0 -1
- package/dist/plugins/Monetization/RunStatus.vue.js +0 -10
- package/dist/plugins/Monetization/RunStatus.vue.js.map +0 -1
- package/dist/plugins/Monetization/RunStatus.vue3.js +0 -20
- package/dist/plugins/Monetization/RunStatus.vue3.js.map +0 -1
- package/dist/plugins/Monetization/UserCabinetCard.css +0 -1
- package/dist/plugins/Monetization/UserCabinetCard.vue.js +0 -10
- package/dist/plugins/Monetization/UserCabinetCard.vue.js.map +0 -1
- package/dist/plugins/Monetization/UserCabinetCard.vue3.js +0 -20
- package/dist/plugins/Monetization/UserCabinetCard.vue3.js.map +0 -1
- /package/dist/components/PlAgCellStatusTag/{PlAgCellStatusTag.css → PlAgCellStatusTag.style.css} +0 -0
- /package/dist/components/PlAgGridColumnManager/{PlAgGridColumnManager.css → PlAgGridColumnManager.vue.css} +0 -0
- /package/dist/components/PlAnnotations/components/{PlAnnotations.css → PlAnnotations.vue.css} +0 -0
- /package/dist/components/PlAnnotations/components/{PlAnnotationsModal.css → PlAnnotationsModal.vue.css} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlAgColumnHeader.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,5 +1,68 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
}
|
|
5
|
-
|
|
1
|
+
import './pl-ag-column-header.css';/* empty css */
|
|
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
|
+
import { PlMaskIcon16 as g, PlTooltip as _ } from "@milaboratories/uikit";
|
|
4
|
+
var v = { class: "pl-ag-column-header__title d-flex align-center gap-6 flex-grow-1" }, y = /* @__PURE__ */ c({
|
|
5
|
+
__name: "PlAgColumnHeader",
|
|
6
|
+
props: { params: {} },
|
|
7
|
+
setup(c) {
|
|
8
|
+
let y = e(() => {
|
|
9
|
+
switch (c.params.type) {
|
|
10
|
+
case void 0:
|
|
11
|
+
case "Text": return "cell-type-txt";
|
|
12
|
+
case "Number": return "cell-type-num";
|
|
13
|
+
case "File": return "paper-clip";
|
|
14
|
+
case "Date": return "calendar";
|
|
15
|
+
case "Duration": return "time";
|
|
16
|
+
case "Progress": return "progress";
|
|
17
|
+
default: throw Error(`unsupported data type: ${c.params.type} for PlAgColumnHeader component. Column ${c.params.column.getColId()}`);
|
|
18
|
+
}
|
|
19
|
+
}), b = d(null), x = () => b.value = c.params.column.getSort() ?? null;
|
|
20
|
+
l(() => x());
|
|
21
|
+
function S() {
|
|
22
|
+
c.params.column.isSortable() && (c.params.progressSort(), x());
|
|
23
|
+
}
|
|
24
|
+
let C = e(() => {
|
|
25
|
+
let e = b.value;
|
|
26
|
+
switch (e) {
|
|
27
|
+
case "asc": return "arrow-up";
|
|
28
|
+
case "desc": return "arrow-down";
|
|
29
|
+
case null: return null;
|
|
30
|
+
default: throw Error(`unsupported sort direction: ${e}. Column ${c.params.column.getColId()}`);
|
|
31
|
+
}
|
|
32
|
+
}), w = d();
|
|
33
|
+
function T() {
|
|
34
|
+
let e = w.value;
|
|
35
|
+
e && c.params.showColumnMenu(e);
|
|
36
|
+
}
|
|
37
|
+
return (e, l) => (u(), r("div", {
|
|
38
|
+
class: "pl-ag-column-header d-flex align-center gap-6",
|
|
39
|
+
onClick: S
|
|
40
|
+
}, [s(p(_), null, a({
|
|
41
|
+
default: m(() => [i("div", v, [
|
|
42
|
+
s(p(g), {
|
|
43
|
+
name: y.value,
|
|
44
|
+
class: "pl-ag-column-header__type-icon"
|
|
45
|
+
}, null, 8, ["name"]),
|
|
46
|
+
i("span", null, f(c.params.displayName), 1),
|
|
47
|
+
C.value ? (u(), t(p(g), {
|
|
48
|
+
key: 0,
|
|
49
|
+
name: C.value
|
|
50
|
+
}, null, 8, ["name"])) : n("", !0)
|
|
51
|
+
])]),
|
|
52
|
+
_: 2
|
|
53
|
+
}, [c.params.tooltip ? {
|
|
54
|
+
name: "tooltip",
|
|
55
|
+
fn: m(() => [o(f(c.params.tooltip), 1)]),
|
|
56
|
+
key: "0"
|
|
57
|
+
} : void 0]), 1024), c.params.enableMenu ? (u(), r("div", {
|
|
58
|
+
key: 0,
|
|
59
|
+
ref_key: "menuActivatorBtn",
|
|
60
|
+
ref: w,
|
|
61
|
+
class: "pl-ag-column-header__menu-icon",
|
|
62
|
+
onClick: h(T, ["stop"])
|
|
63
|
+
}, [s(p(g), { name: "more" })], 512)) : n("", !0)]));
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
export { y as default };
|
|
67
|
+
|
|
68
|
+
//# sourceMappingURL=PlAgColumnHeader.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAgColumnHeader.
|
|
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 +1 @@
|
|
|
1
|
-
.pl-ag-column-header{cursor:pointer;width:100%;overflow:hidden}.pl-ag-column-header .mask-16{min-width:16px}.pl-ag-column-header span{word-break:break-word;overflow:
|
|
1
|
+
.pl-ag-column-header{cursor:pointer;width:100%;overflow:hidden}.pl-ag-column-header .mask-16{min-width:16px}.pl-ag-column-header span{word-break:break-word;text-overflow:ellipsis;overflow:hidden}.pl-ag-column-header__title{overflow:hidden}.pl-ag-column-header__type-icon{--icon-color:var(--txt-03)}.pl-ag-column-header__menu-icon{line-height:0;position:relative;transform:rotate(90deg)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlAgCsvExporter.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,5 +1,26 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { exportCsv as e } from "./export-csv.js";
|
|
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
|
+
import { PlBtnGhost as p, usePlBlockPageTitleTeleportTarget as m } from "@milaboratories/uikit";
|
|
4
|
+
var h = /* @__PURE__ */ o({
|
|
5
|
+
__name: "PlAgCsvExporter",
|
|
6
|
+
props: { api: {} },
|
|
7
|
+
setup(o) {
|
|
8
|
+
let { api: h } = l(o), g = c(!1), _ = () => {
|
|
9
|
+
g.value = !0, e(h.value, () => g.value = !1);
|
|
10
|
+
}, v = m("PlAgCsvExporter");
|
|
11
|
+
return (e, o) => u(v) ? (s(), n(t, {
|
|
12
|
+
key: 0,
|
|
13
|
+
to: u(v)
|
|
14
|
+
}, [a(u(p), {
|
|
15
|
+
loading: g.value,
|
|
16
|
+
icon: "export",
|
|
17
|
+
onClick: f(_, ["stop"])
|
|
18
|
+
}, {
|
|
19
|
+
default: d(() => [...o[0] ||= [i(" Export ", -1)]]),
|
|
20
|
+
_: 1
|
|
21
|
+
}, 8, ["loading"])], 8, ["to"])) : r("", !0);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
export { h as default };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=PlAgCsvExporter.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAgCsvExporter.
|
|
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,46 +1,39 @@
|
|
|
1
|
-
import {
|
|
2
|
-
function
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { ServerSideRowModelModule as e, createGrid as t } from "ag-grid-enterprise";
|
|
2
|
+
function n() {
|
|
3
|
+
let e = document.createElement("div");
|
|
4
|
+
return e.style.visibility = "hidden", e.style.position = "absolute", document.body.appendChild(e), e;
|
|
5
5
|
}
|
|
6
|
-
function
|
|
7
|
-
|
|
6
|
+
function r(e) {
|
|
7
|
+
document.body.removeChild(e);
|
|
8
8
|
}
|
|
9
|
-
async function
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
};
|
|
37
|
-
return u(d, l, { modules: [c] });
|
|
38
|
-
}
|
|
39
|
-
default:
|
|
40
|
-
throw r(), Error(`exportCsv unsupported for rowModelType = ${s}`);
|
|
41
|
-
}
|
|
9
|
+
async function i(i, a) {
|
|
10
|
+
let o = i.getGridOption("rowModelType");
|
|
11
|
+
switch (o) {
|
|
12
|
+
case "clientSide": return i.exportDataAsCsv(), a();
|
|
13
|
+
case "serverSide": {
|
|
14
|
+
let o = i.getServerSideGroupLevelState();
|
|
15
|
+
if (o.length === 0 || o[0].rowCount <= o[0].cacheBlockSize) return i.exportDataAsCsv(), a();
|
|
16
|
+
let s = !1, c = n();
|
|
17
|
+
return t(c, {
|
|
18
|
+
rowModelType: "serverSide",
|
|
19
|
+
columnDefs: i.getColumnDefs()?.filter((e) => !("children" in e)).map((e) => ({
|
|
20
|
+
headerName: e.headerName,
|
|
21
|
+
field: e.field,
|
|
22
|
+
valueFormatter: e.valueFormatter,
|
|
23
|
+
valueGetter: e.valueGetter
|
|
24
|
+
})) ?? [],
|
|
25
|
+
serverSideDatasource: i.getGridOption("serverSideDatasource"),
|
|
26
|
+
cacheBlockSize: o[0].rowCount,
|
|
27
|
+
onModelUpdated: (e) => {
|
|
28
|
+
let t = e.api.getServerSideGroupLevelState();
|
|
29
|
+
if (!s && t.length > 0 && t[0].rowCount === t[0].cacheBlockSize) return s = !0, e.api.exportDataAsCsv(), r(c), a();
|
|
30
|
+
},
|
|
31
|
+
defaultCsvExportParams: i.getGridOption("defaultCsvExportParams")
|
|
32
|
+
}, { modules: [e] });
|
|
33
|
+
}
|
|
34
|
+
default: throw a(), Error(`exportCsv unsupported for rowModelType = ${o}`);
|
|
35
|
+
}
|
|
42
36
|
}
|
|
43
|
-
export {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
//# sourceMappingURL=export-csv.js.map
|
|
37
|
+
export { i as exportCsv };
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=export-csv.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-csv.js","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"],"
|
|
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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import e from "../../_virtual/_plugin-vue_export-helper.js";
|
|
2
|
+
import t from "./PlAgDataTableSheets.vue2.js";
|
|
3
|
+
import n from "./PlAgDataTableSheets.style.js";
|
|
4
|
+
var r = /* @__PURE__ */ e(t, [["__cssModules", { $style: n }]]);
|
|
5
|
+
export { r as default };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=PlAgDataTableSheets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlAgDataTableSheets.js","names":[],"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":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlAgDataTableSheets.vue_vue_type_style_index_0_lang.module.js","names":[],"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":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._container_1nueg_2{z-index:3;flex-flow:wrap;gap:12px;display:flex}
|
|
@@ -1,73 +1,69 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
x(e.$slots, "after")
|
|
67
|
-
], 2)) : V("", !0);
|
|
68
|
-
}
|
|
1
|
+
import { isJsonEqual as e } from "../../lib/util/helpers/dist/objects.js";
|
|
2
|
+
import "../../lib/util/helpers/dist/index.js";
|
|
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
|
+
import { getAxisId as h } from "@platforma-sdk/model";
|
|
5
|
+
import { PlDropdownLine as g } from "@milaboratories/uikit";
|
|
6
|
+
var _ = /* @__PURE__ */ o({
|
|
7
|
+
__name: "PlAgDataTableSheets",
|
|
8
|
+
props: /* @__PURE__ */ s({ settings: {} }, {
|
|
9
|
+
modelValue: { default: [] },
|
|
10
|
+
modelModifiers: {}
|
|
11
|
+
}),
|
|
12
|
+
emits: ["update:modelValue"],
|
|
13
|
+
setup(o) {
|
|
14
|
+
let s = p(o, "modelValue"), _ = o, v = n(() => _.settings.sheets.filter((e) => e.options.length > 0).map((t, n) => {
|
|
15
|
+
let r = h(t.axis);
|
|
16
|
+
return {
|
|
17
|
+
axisId: r,
|
|
18
|
+
prefix: (t.axis.annotations?.["pl7.app/label"]?.trim() ?? `Unlabeled axis ${n}`) + ":",
|
|
19
|
+
options: t.options,
|
|
20
|
+
defaultValue: (() => {
|
|
21
|
+
let n = _.settings.cachedState.find((t) => e(t.axisId, r));
|
|
22
|
+
return n && y(t, n.value) ? n.value : t.defaultValue && y(t, t.defaultValue) ? t.defaultValue : t.options[0].value;
|
|
23
|
+
})()
|
|
24
|
+
};
|
|
25
|
+
}));
|
|
26
|
+
function y(e, t) {
|
|
27
|
+
return e.options.some((e) => e.value === t);
|
|
28
|
+
}
|
|
29
|
+
m(() => {
|
|
30
|
+
let t = [...s.value], n = v.value.map((e, t) => b(t, e.defaultValue));
|
|
31
|
+
e(t, n) || (s.value = n);
|
|
32
|
+
});
|
|
33
|
+
function b(e, t) {
|
|
34
|
+
return {
|
|
35
|
+
axisId: v.value[e].axisId,
|
|
36
|
+
value: t
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function x(t, n) {
|
|
40
|
+
let r = [...s.value], i = b(t, n);
|
|
41
|
+
if (!e(r[t], i)) {
|
|
42
|
+
let e = [...r];
|
|
43
|
+
e[t] = i, s.value = e;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return (e, n) => e.$slots.before || v.value.length > 0 || e.$slots.after ? (l(), a("div", {
|
|
47
|
+
key: 0,
|
|
48
|
+
class: c(e.$style.container)
|
|
49
|
+
}, [
|
|
50
|
+
d(e.$slots, "before"),
|
|
51
|
+
(l(!0), a(t, null, u(v.value, (e, n) => (l(), a(t, { key: n }, [s.value[n] ? (l(), r(f(g), {
|
|
52
|
+
key: 0,
|
|
53
|
+
"model-value": s.value[n].value,
|
|
54
|
+
options: e.options,
|
|
55
|
+
prefix: e.prefix,
|
|
56
|
+
"onUpdate:modelValue": (e) => x(n, e)
|
|
57
|
+
}, null, 8, [
|
|
58
|
+
"model-value",
|
|
59
|
+
"options",
|
|
60
|
+
"prefix",
|
|
61
|
+
"onUpdate:modelValue"
|
|
62
|
+
])) : i("", !0)], 64))), 128)),
|
|
63
|
+
d(e.$slots, "after")
|
|
64
|
+
], 2)) : i("", !0);
|
|
65
|
+
}
|
|
69
66
|
});
|
|
70
|
-
export {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
//# sourceMappingURL=PlAgDataTableSheets.vue2.js.map
|
|
67
|
+
export { _ as default };
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=PlAgDataTableSheets.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAgDataTableSheets.
|
|
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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import e from "../../_virtual/_plugin-vue_export-helper.js";
|
|
2
|
+
import t from "./PlAgDataTableV2.vue2.js";
|
|
3
|
+
import n from "./PlAgDataTableV2.style.js";
|
|
4
|
+
var r = /* @__PURE__ */ e(t, [["__cssModules", { $style: n }]]);
|
|
5
|
+
export { r as default };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=PlAgDataTableV2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlAgDataTableV2.js","names":[],"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 { AgGridTheme } from \"../../aggrid\";\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\";\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: selection.value,\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 :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":""}
|