@platforma-sdk/ui-vue 1.54.12 → 1.54.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +23 -19
- 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 +9 -0
- package/dist/AgGridVue/useAgGridOptions.js +10 -9
- package/dist/AgGridVue/useAgGridOptions.js.map +1 -1
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.d.ts +32 -40
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.d.ts.map +1 -1
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/index.d.ts +2 -2
- package/dist/components/PlAdvancedFilter/index.d.ts.map +1 -1
- package/dist/components/PlAdvancedFilter/index.js.map +1 -1
- package/dist/components/PlAdvancedFilter/types.d.ts +9 -8
- package/dist/components/PlAdvancedFilter/types.d.ts.map +1 -1
- package/dist/components/PlAdvancedFilter/utils.js +38 -27
- package/dist/components/PlAdvancedFilter/utils.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +161 -244
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgRowCount.vue.js +9 -8
- package/dist/components/PlAgDataTable/PlAgRowCount.vue.js.map +1 -1
- package/dist/components/PlAgDataTable/compositions/useFilterableColumns.d.ts +134 -0
- package/dist/components/PlAgDataTable/compositions/useFilterableColumns.d.ts.map +1 -0
- package/dist/components/PlAgDataTable/compositions/useFilterableColumns.js +33 -0
- package/dist/components/PlAgDataTable/compositions/useFilterableColumns.js.map +1 -0
- package/dist/components/PlAgDataTable/compositions/useGrid.d.ts +15 -0
- package/dist/components/PlAgDataTable/compositions/useGrid.d.ts.map +1 -0
- package/dist/components/PlAgDataTable/compositions/useGrid.js +113 -0
- package/dist/components/PlAgDataTable/compositions/useGrid.js.map +1 -0
- package/dist/components/PlAgDataTable/sources/row-number.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/sources/row-number.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-source-v2.d.ts +1 -2
- package/dist/components/PlAgDataTable/sources/table-source-v2.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-source-v2.js +47 -62
- package/dist/components/PlAgDataTable/sources/table-source-v2.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-state-v2.d.ts +4 -4
- package/dist/components/PlAgDataTable/sources/table-state-v2.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-state-v2.js +105 -95
- package/dist/components/PlAgDataTable/sources/table-state-v2.js.map +1 -1
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js +11 -10
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js.map +1 -1
- package/dist/components/PlAgRowNumHeader.vue.js +10 -9
- package/dist/components/PlAgRowNumHeader.vue.js.map +1 -1
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue.d.ts +10 -0
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue.d.ts.map +1 -0
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue.js +30 -0
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue.js.map +1 -0
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue2.js +5 -0
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue2.js.map +1 -0
- package/dist/components/PlTableFastSearch/index.d.ts +2 -0
- package/dist/components/PlTableFastSearch/index.d.ts.map +1 -0
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue.d.ts +4 -5
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue.d.ts.map +1 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/util/helpers/dist/functions.js +13 -4
- package/dist/lib/util/helpers/dist/functions.js.map +1 -1
- package/dist/lib/util/helpers/dist/objects.js.map +1 -1
- package/package.json +6 -6
- package/src/components/PlAdvancedFilter/PlAdvancedFilter.vue +2 -2
- package/src/components/PlAdvancedFilter/index.ts +7 -2
- package/src/components/PlAdvancedFilter/types.ts +19 -5
- package/src/components/PlAgDataTable/PlAgDataTableV2.vue +52 -172
- package/src/components/PlAgDataTable/compositions/useFilterableColumns.ts +62 -0
- package/src/components/PlAgDataTable/compositions/useGrid.ts +143 -0
- package/src/components/PlAgDataTable/sources/row-number.ts +0 -1
- package/src/components/PlAgDataTable/sources/table-source-v2.ts +1 -15
- package/src/components/PlAgDataTable/sources/table-state-v2.ts +137 -94
- package/src/components/PlTableFastSearch/PlTableFastSearch.vue +27 -0
- package/src/components/PlTableFastSearch/index.ts +1 -0
- package/src/components/PlTableFilters/PlTableFiltersV2.vue +8 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAgDataTableV2.vue2.js","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 PTableValue,\n} from \"@platforma-sdk/model\";\nimport {\n getRawPlatformaInstance,\n parseJson,\n createPlSelectionModel,\n matchAxisId,\n getAxisId,\n canonicalizeJson,\n isAbortError,\n} from \"@platforma-sdk/model\";\nimport type {\n CellRendererSelectorFunc,\n ColDef,\n ColGroupDef,\n GridApi,\n GridOptions,\n GridState,\n ManagedGridOptionKey,\n ManagedGridOptions,\n} from \"ag-grid-enterprise\";\nimport { AgGridVue } from \"ag-grid-vue3\";\nimport { computed, effectScope, ref, shallowRef, 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 PlAgDataTableSheets from \"./PlAgDataTableSheets.vue\";\nimport PlOverlayLoading from \"./PlAgOverlayLoading.vue\";\nimport PlOverlayNoRows from \"./PlAgOverlayNoRows.vue\";\nimport PlAgRowCount from \"./PlAgRowCount.vue\";\nimport { DeferredCircular, ensureNodeVisible } from \"./sources/focus-row\";\nimport { autoSizeRowNumberColumn, 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 PlTableRowIdJson,\n} from \"./types\";\nimport { watchCached } from \"@milaboratories/uikit\";\nimport { type PTableHidden } from \"./sources/common\";\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 filterableColumns = ref<PTableColumnSpec[]>([]);\n\nconst { gridState, sheetsState, filtersState } = useTableState(tableState, settings);\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});\n\nconst gridApi = shallowRef<GridApi<PlAgDataTableV2Row> | null>(null);\nconst dataRenderedTracker = new DeferredCircular<GridApi<PlAgDataTableV2Row>>();\nconst gridOptions = shallowRef<GridOptions<PlAgDataTableV2Row>>({\n animateRows: false,\n suppressColumnMoveAnimation: true,\n cellSelection: !selection.value,\n initialState: gridState.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 onSelectionChanged: (event) => {\n if (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 if (event.data && event.data.axesKey) emit(\"rowDoubleClicked\", event.data.axesKey);\n },\n defaultColDef: {\n suppressHeaderMenuButton: true,\n sortingOrder: [\"desc\", \"asc\", null],\n cellRendererSelector: props.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: props.loadingText,\n runningText: props.runningText,\n notReadyText: props.notReadyText,\n } satisfies PlAgOverlayLoadingParams,\n loadingOverlayComponent: PlOverlayLoading,\n noRowsOverlayComponent: PlOverlayNoRows,\n noRowsOverlayComponentParams: {\n text: props.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 = (key: ManagedGridOptionKey, value: GridOptions[ManagedGridOptionKey]) => {\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 onStateUpdated: (event) => {\n let partialState = makePartialState(event.state);\n // AG Grid omits columnVisibility when no columns are hidden. If we previously had\n // hidden columns and now get undefined, treat as \"all visible\" so we don't revert to default.\n const hadHiddenCols = gridState.value.columnVisibility?.hiddenColIds !== undefined;\n if (partialState.columnVisibility === undefined && hadHiddenCols) {\n partialState = { ...partialState, columnVisibility: { hiddenColIds: [] } };\n }\n // We have to keep initialState synchronized with gridState for gridState recovery after key updating.\n gridOptions.value.initialState = gridState.value = partialState;\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 onGridPreDestroyed: (event) => {\n gridOptions.value.initialState = gridState.value = makePartialState(event.api.getState());\n gridApi.value = null;\n },\n});\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// 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 gridOptions.value.initialState = gridState;\n ++reloadKey.value;\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\nfunction getDataColDefs(\n columnDefs: ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[] | null | undefined,\n): ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[] {\n const isColDef = <TData, TValue>(\n def: ColDef<TData, TValue> | ColGroupDef<TData>,\n ): def is ColDef<TData, TValue> => !(\"children\" in def);\n if (!columnDefs) return [];\n return columnDefs\n .filter(isColDef)\n .filter((def) => def.colId && def.colId !== PlAgDataTableRowNumberColId);\n}\n\n// Propagate columns for filter component\nwatchCached(\n () => gridOptions.value.columnDefs,\n (columnDefs) => {\n const sourceId = settings.value.sourceId;\n if (sourceId === null) {\n filterableColumns.value = [];\n } else {\n const dataColumns = getDataColDefs(columnDefs);\n filterableColumns.value = dataColumns.map(\n (def) => parseJson(def.colId! satisfies string as PlTableColumnIdJson).labeled,\n );\n }\n },\n { immediate: true },\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 <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"],"names":["tableState","_useModel","selection","__props","props","settings","toRefs","emit","__emit","filterableColumns","ref","gridState","sheetsState","filtersState","useTableState","sheetsSettings","computed","settingsCopy","gridApi","shallowRef","dataRenderedTracker","DeferredCircular","gridOptions","event","state","selectedKeys","_a","nodeId","parseJson","isJsonEqual","params","PlOverlayLoading","PlOverlayNoRows","api","autoSizeRowNumberColumn","setGridOption","key","value","options","updateGridOptions","target","prop","receiver","partialState","makePartialState","hadHiddenCols","column","PlAgDataTableRowNumberColId","stateForReloadCompare","cv","normalizedCv","reloadKey","watch","selfState","cellRendererSelector","__expose","rowKey","ensureNodeVisible","row","axesSpec","axes","mapping","spec","id","getAxisId","axis","matchAxisId","mappingSet","selectedNodes","canonicalizeJson","index","oldSelectedKeys","scope","effectScope","resolve","promise","promiseTimeout","getDataColDefs","columnDefs","isColDef","def","watchCached","dataColumns","defaultSelection","createPlSelectionModel","oldSettings","generation","sourceChanged","rowCount","stateGeneration","calculateGridOptions","getRawPlatformaInstance","_b","result","oldAxesSpec","newSelection","error","isAbortError","loadingText","runningText","notReadyText","noRowsText","watchEffect","PlAgRowCount","_createElementBlock","_normalizeClass","$style","_createBlock","_unref","PlAgGridColumnManager","PlTableFiltersV2","$event","PlAgCsvExporter","_createVNode","PlAgDataTableSheets","$slots","_renderSlot","_ctx","AgGridVue","AgGridTheme"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PlAgDataTableV2.vue2.js","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 PTableKey,\n} from \"@platforma-sdk/model\";\nimport {\n getRawPlatformaInstance,\n createPlSelectionModel,\n matchAxisId,\n getAxisId,\n canonicalizeJson,\n isAbortError,\n} from \"@platforma-sdk/model\";\nimport type { CellRendererSelectorFunc, GridApi, GridState } from \"ag-grid-enterprise\";\nimport { AgGridVue } from \"ag-grid-vue3\";\nimport { computed, effectScope, 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});\ngridOptions.value.onGridPreDestroyed = (event) => {\n gridOptions.value.initialState = gridState.value = makePartialState(event.api.getState());\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 let partialState = makePartialState(event.state);\n // AG Grid omits columnVisibility when no columns are hidden. If we previously had\n // hidden columns and now get undefined, treat as \"all visible\" so we don't revert to default.\n const hadHiddenCols = gridState.value.columnVisibility?.hiddenColIds !== undefined;\n if (partialState.columnVisibility === undefined && hadHiddenCols) {\n partialState = { ...partialState, columnVisibility: { hiddenColIds: [] } };\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// 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 gridOptions.value.initialState = gridState;\n ++reloadKey.value;\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"],"names":["tableState","_useModel","selection","__props","props","settings","toRefs","emit","__emit","dataRenderedTracker","DeferredCircular","gridApi","gridOptions","useGrid","event","gridState","makePartialState","partialState","hadHiddenCols","_a","isJsonEqual","column","PlAgDataTableRowNumberColId","filterableColumns","visibleFilterableColumns","useFilterableColumns","sheetsState","filtersState","searchString","useTableState","sheetsSettings","computed","settingsCopy","state","stateForReloadCompare","cv","normalizedCv","reloadKey","ref","watch","selfState","cellRendererSelector","__expose","rowKey","ensureNodeVisible","row","axesSpec","selectedKeys","axes","mapping","spec","id","getAxisId","axis","matchAxisId","mappingSet","selectedNodes","key","canonicalizeJson","index","oldSelectedKeys","scope","effectScope","resolve","promise","promiseTimeout","defaultSelection","createPlSelectionModel","oldSettings","generation","sourceChanged","rowCount","params","stateGeneration","calculateGridOptions","getRawPlatformaInstance","_b","result","options","oldAxesSpec","newSelection","error","isAbortError","loadingText","runningText","notReadyText","noRowsText","watchEffect","PlAgRowCount","_createElementBlock","_normalizeClass","$style","_unref","_createBlock","PlAgGridColumnManager","PlTableFiltersV2","$event","PlAgCsvExporter","_createVNode","PlAgDataTableSheets","$slots","_renderSlot","_ctx","PlTableFastSearch","AgGridVue","AgGridTheme"],"mappings":"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"}
|
|
@@ -10,10 +10,11 @@ import "@milaboratories/uikit";
|
|
|
10
10
|
import "../../plugins/Monetization/validation.js";
|
|
11
11
|
import "ag-grid-vue3";
|
|
12
12
|
import "ag-grid-enterprise";
|
|
13
|
-
/* empty css */
|
|
14
13
|
/* empty css */
|
|
15
14
|
/* empty css */
|
|
16
15
|
import "d3-format";
|
|
16
|
+
import "es-toolkit";
|
|
17
|
+
/* empty css */
|
|
17
18
|
import "canonicalize";
|
|
18
19
|
/* empty css */
|
|
19
20
|
/* empty css */
|
|
@@ -22,27 +23,27 @@ import { getTotalRowsCount as i, getSelectedRowsCount as p } from "../../AgGridV
|
|
|
22
23
|
import "es-toolkit/compat";
|
|
23
24
|
import "@zip.js/zip.js";
|
|
24
25
|
import "../../composition/fileContent.js";
|
|
25
|
-
const
|
|
26
|
+
const H = /* @__PURE__ */ l({
|
|
26
27
|
__name: "PlAgRowCount",
|
|
27
28
|
props: {
|
|
28
29
|
params: {}
|
|
29
30
|
},
|
|
30
31
|
setup(t) {
|
|
31
|
-
const
|
|
32
|
-
let
|
|
33
|
-
return
|
|
32
|
+
const a = n(i(t.params.api)), r = n(p(t.params.api)), u = new Intl.PluralRules("en"), m = new Intl.NumberFormat("en"), s = d(() => {
|
|
33
|
+
let o = m.format(a.value) + " ";
|
|
34
|
+
return o += u.select(a.value) === "one" ? "row" : "rows", r.value > 0 && (o += " (" + m.format(r.value) + " selected)"), o;
|
|
34
35
|
});
|
|
35
36
|
function e() {
|
|
36
|
-
|
|
37
|
+
a.value = i(t.params.api), r.value = p(t.params.api);
|
|
37
38
|
}
|
|
38
39
|
return c(() => {
|
|
39
40
|
t.params.api.addEventListener("selectionChanged", e), t.params.api.addEventListener("rowDataUpdated", e), t.params.api.addEventListener("modelUpdated", e);
|
|
40
41
|
}), v(() => {
|
|
41
42
|
t.params.api.removeEventListener("selectionChanged", e), t.params.api.removeEventListener("rowDataUpdated", e), t.params.api.removeEventListener("modelUpdated", e);
|
|
42
|
-
}), (
|
|
43
|
+
}), (o, w) => f(s.value);
|
|
43
44
|
}
|
|
44
45
|
});
|
|
45
46
|
export {
|
|
46
|
-
|
|
47
|
+
H as default
|
|
47
48
|
};
|
|
48
49
|
//# sourceMappingURL=PlAgRowCount.vue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAgRowCount.vue.js","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"],"names":["totalRowCount","ref","getTotalRowsCount","__props","selectedRowCount","getSelectedRowsCount","pluralRules","numberFormatter","output","computed","result","updateRowCounts","onBeforeMount","onBeforeUnmount"],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlAgRowCount.vue.js","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"],"names":["totalRowCount","ref","getTotalRowsCount","__props","selectedRowCount","getSelectedRowsCount","pluralRules","numberFormatter","output","computed","result","updateRowCounts","onBeforeMount","onBeforeUnmount"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,UAAMA,IAAgBC,EAAIC,EAAkBC,EAAA,OAAO,GAAG,CAAC,GACjDC,IAAmBH,EAAII,EAAqBF,EAAA,OAAO,GAAG,CAAC,GAEvDG,IAAc,IAAI,KAAK,YAAY,IAAI,GACvCC,IAAkB,IAAI,KAAK,aAAa,IAAI,GAE5CC,IAASC,EAAS,MAAM;AAC5B,UAAIC,IAASH,EAAgB,OAAOP,EAAc,KAAK,IAAI;AAC3D,aAAAU,KAAUJ,EAAY,OAAON,EAAc,KAAK,MAAM,QAAQ,QAAQ,QAClEI,EAAiB,QAAQ,MAC3BM,KAAU,OAAOH,EAAgB,OAAOH,EAAiB,KAAK,IAAI,eAE7DM;AAAA,IACT,CAAC;AAED,aAASC,IAAkB;AACzB,MAAAX,EAAc,QAAQE,EAAkBC,SAAO,GAAG,GAClDC,EAAiB,QAAQC,EAAqBF,SAAO,GAAG;AAAA,IAC1D;AAEA,WAAAS,EAAc,MAAM;AAClB,MAAAT,EAAA,OAAO,IAAI,iBAAiB,oBAAoBQ,CAAe,GAC/DR,EAAA,OAAO,IAAI,iBAAiB,kBAAkBQ,CAAe,GAC7DR,EAAA,OAAO,IAAI,iBAAiB,gBAAgBQ,CAAe;AAAA,IAC7D,CAAC,GAEDE,EAAgB,MAAM;AACpB,MAAAV,EAAA,OAAO,IAAI,oBAAoB,oBAAoBQ,CAAe,GAClER,EAAA,OAAO,IAAI,oBAAoB,kBAAkBQ,CAAe,GAChER,EAAA,OAAO,IAAI,oBAAoB,gBAAgBQ,CAAe;AAAA,IAChE,CAAC,eAIIH,EAAA,KAAM;AAAA;;"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { PTableColumnSpec, PTableValue } from '@platforma-sdk/model';
|
|
2
|
+
import { PTableHidden } from '../sources/common';
|
|
3
|
+
import { ColDef } from 'ag-grid-enterprise';
|
|
4
|
+
import { PlAgDataTableV2Row } from '../types';
|
|
5
|
+
export declare function useFilterableColumns(getSourceId: () => string | null, getColumnDefs: () => null | undefined | ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[]): readonly [import('vue').Ref<({
|
|
6
|
+
type: "axis";
|
|
7
|
+
id: {
|
|
8
|
+
readonly type: import('@platforma-sdk/model').ValueType;
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly domain?: Record<string, string> | undefined;
|
|
11
|
+
};
|
|
12
|
+
spec: {
|
|
13
|
+
readonly type: import('@platforma-sdk/model').ValueType;
|
|
14
|
+
readonly name: string;
|
|
15
|
+
readonly domain?: Record<string, string> | undefined;
|
|
16
|
+
readonly annotations?: Record<string, string> | undefined;
|
|
17
|
+
readonly parentAxes?: number[] | undefined;
|
|
18
|
+
};
|
|
19
|
+
} | {
|
|
20
|
+
type: "column";
|
|
21
|
+
id: import('@platforma-sdk/model').PObjectId;
|
|
22
|
+
spec: {
|
|
23
|
+
readonly kind: "PColumn";
|
|
24
|
+
readonly name: string;
|
|
25
|
+
readonly domain?: Record<string, string> | undefined;
|
|
26
|
+
readonly annotations?: Record<string, string> | undefined;
|
|
27
|
+
readonly valueType: "Int" | "Long" | "Float" | "Double" | "String" | "Bytes";
|
|
28
|
+
readonly parentAxes?: number[] | undefined;
|
|
29
|
+
readonly axesSpec: {
|
|
30
|
+
readonly type: import('@platforma-sdk/model').ValueType;
|
|
31
|
+
readonly name: string;
|
|
32
|
+
readonly domain?: Record<string, string> | undefined;
|
|
33
|
+
readonly annotations?: Record<string, string> | undefined;
|
|
34
|
+
readonly parentAxes?: number[] | undefined;
|
|
35
|
+
}[];
|
|
36
|
+
};
|
|
37
|
+
})[], PTableColumnSpec[] | ({
|
|
38
|
+
type: "axis";
|
|
39
|
+
id: {
|
|
40
|
+
readonly type: import('@platforma-sdk/model').ValueType;
|
|
41
|
+
readonly name: string;
|
|
42
|
+
readonly domain?: Record<string, string> | undefined;
|
|
43
|
+
};
|
|
44
|
+
spec: {
|
|
45
|
+
readonly type: import('@platforma-sdk/model').ValueType;
|
|
46
|
+
readonly name: string;
|
|
47
|
+
readonly domain?: Record<string, string> | undefined;
|
|
48
|
+
readonly annotations?: Record<string, string> | undefined;
|
|
49
|
+
readonly parentAxes?: number[] | undefined;
|
|
50
|
+
};
|
|
51
|
+
} | {
|
|
52
|
+
type: "column";
|
|
53
|
+
id: import('@platforma-sdk/model').PObjectId;
|
|
54
|
+
spec: {
|
|
55
|
+
readonly kind: "PColumn";
|
|
56
|
+
readonly name: string;
|
|
57
|
+
readonly domain?: Record<string, string> | undefined;
|
|
58
|
+
readonly annotations?: Record<string, string> | undefined;
|
|
59
|
+
readonly valueType: "Int" | "Long" | "Float" | "Double" | "String" | "Bytes";
|
|
60
|
+
readonly parentAxes?: number[] | undefined;
|
|
61
|
+
readonly axesSpec: {
|
|
62
|
+
readonly type: import('@platforma-sdk/model').ValueType;
|
|
63
|
+
readonly name: string;
|
|
64
|
+
readonly domain?: Record<string, string> | undefined;
|
|
65
|
+
readonly annotations?: Record<string, string> | undefined;
|
|
66
|
+
readonly parentAxes?: number[] | undefined;
|
|
67
|
+
}[];
|
|
68
|
+
};
|
|
69
|
+
})[]>, import('vue').Ref<({
|
|
70
|
+
type: "axis";
|
|
71
|
+
id: {
|
|
72
|
+
readonly type: import('@platforma-sdk/model').ValueType;
|
|
73
|
+
readonly name: string;
|
|
74
|
+
readonly domain?: Record<string, string> | undefined;
|
|
75
|
+
};
|
|
76
|
+
spec: {
|
|
77
|
+
readonly type: import('@platforma-sdk/model').ValueType;
|
|
78
|
+
readonly name: string;
|
|
79
|
+
readonly domain?: Record<string, string> | undefined;
|
|
80
|
+
readonly annotations?: Record<string, string> | undefined;
|
|
81
|
+
readonly parentAxes?: number[] | undefined;
|
|
82
|
+
};
|
|
83
|
+
} | {
|
|
84
|
+
type: "column";
|
|
85
|
+
id: import('@platforma-sdk/model').PObjectId;
|
|
86
|
+
spec: {
|
|
87
|
+
readonly kind: "PColumn";
|
|
88
|
+
readonly name: string;
|
|
89
|
+
readonly domain?: Record<string, string> | undefined;
|
|
90
|
+
readonly annotations?: Record<string, string> | undefined;
|
|
91
|
+
readonly valueType: "Int" | "Long" | "Float" | "Double" | "String" | "Bytes";
|
|
92
|
+
readonly parentAxes?: number[] | undefined;
|
|
93
|
+
readonly axesSpec: {
|
|
94
|
+
readonly type: import('@platforma-sdk/model').ValueType;
|
|
95
|
+
readonly name: string;
|
|
96
|
+
readonly domain?: Record<string, string> | undefined;
|
|
97
|
+
readonly annotations?: Record<string, string> | undefined;
|
|
98
|
+
readonly parentAxes?: number[] | undefined;
|
|
99
|
+
}[];
|
|
100
|
+
};
|
|
101
|
+
})[], PTableColumnSpec[] | ({
|
|
102
|
+
type: "axis";
|
|
103
|
+
id: {
|
|
104
|
+
readonly type: import('@platforma-sdk/model').ValueType;
|
|
105
|
+
readonly name: string;
|
|
106
|
+
readonly domain?: Record<string, string> | undefined;
|
|
107
|
+
};
|
|
108
|
+
spec: {
|
|
109
|
+
readonly type: import('@platforma-sdk/model').ValueType;
|
|
110
|
+
readonly name: string;
|
|
111
|
+
readonly domain?: Record<string, string> | undefined;
|
|
112
|
+
readonly annotations?: Record<string, string> | undefined;
|
|
113
|
+
readonly parentAxes?: number[] | undefined;
|
|
114
|
+
};
|
|
115
|
+
} | {
|
|
116
|
+
type: "column";
|
|
117
|
+
id: import('@platforma-sdk/model').PObjectId;
|
|
118
|
+
spec: {
|
|
119
|
+
readonly kind: "PColumn";
|
|
120
|
+
readonly name: string;
|
|
121
|
+
readonly domain?: Record<string, string> | undefined;
|
|
122
|
+
readonly annotations?: Record<string, string> | undefined;
|
|
123
|
+
readonly valueType: "Int" | "Long" | "Float" | "Double" | "String" | "Bytes";
|
|
124
|
+
readonly parentAxes?: number[] | undefined;
|
|
125
|
+
readonly axesSpec: {
|
|
126
|
+
readonly type: import('@platforma-sdk/model').ValueType;
|
|
127
|
+
readonly name: string;
|
|
128
|
+
readonly domain?: Record<string, string> | undefined;
|
|
129
|
+
readonly annotations?: Record<string, string> | undefined;
|
|
130
|
+
readonly parentAxes?: number[] | undefined;
|
|
131
|
+
}[];
|
|
132
|
+
};
|
|
133
|
+
})[]>];
|
|
134
|
+
//# sourceMappingURL=useFilterableColumns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFilterableColumns.d.ts","sourceRoot":"","sources":["../../../../src/components/PlAgDataTable/compositions/useFilterableColumns.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,gBAAgB,EAChB,WAAW,EACZ,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAe,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,MAAM,GAAG,IAAI,EAChC,aAAa,EAAE,MAAM,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,kBAAkB,EAAE,WAAW,GAAG,YAAY,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BjG"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { isNil as a } from "es-toolkit";
|
|
2
|
+
import { parseJson as u } from "@platforma-sdk/model";
|
|
3
|
+
import { ref as n } from "vue";
|
|
4
|
+
import { watchCached as s } from "@milaboratories/uikit";
|
|
5
|
+
import { PlAgDataTableRowNumberColId as d } from "../sources/row-number.js";
|
|
6
|
+
function g(l, t) {
|
|
7
|
+
const r = n([]), i = n([]);
|
|
8
|
+
return s(
|
|
9
|
+
() => [t(), l()],
|
|
10
|
+
([f, m]) => {
|
|
11
|
+
if (a(m)) {
|
|
12
|
+
r.value = [], i.value = [];
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const o = c(f).filter((e) => !a(e.colId)).flatMap((e) => ({
|
|
16
|
+
id: u(e.colId).labeled,
|
|
17
|
+
hide: e.hide
|
|
18
|
+
}));
|
|
19
|
+
r.value = o.map((e) => e.id), i.value = o.filter((e) => !e.hide).map((e) => e.id);
|
|
20
|
+
},
|
|
21
|
+
{ immediate: !0 }
|
|
22
|
+
), [r, i];
|
|
23
|
+
}
|
|
24
|
+
function c(l) {
|
|
25
|
+
return l ? l.filter(p).filter((t) => t.colId && t.colId !== d) : [];
|
|
26
|
+
}
|
|
27
|
+
function p(l) {
|
|
28
|
+
return !("children" in l);
|
|
29
|
+
}
|
|
30
|
+
export {
|
|
31
|
+
g as useFilterableColumns
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=useFilterableColumns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFilterableColumns.js","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"],"names":["useFilterableColumns","getSourceId","getColumnDefs","filterableColumns","ref","visibleFilterableColumns","watchCached","columnDefs","sourceId","isNil","cols","getDataColDefs","def","parseJson","c","isColDef","PlAgDataTableRowNumberColId"],"mappings":";;;;;AAcO,SAASA,EACdC,GACAC,GACA;AACA,QAAMC,IAAoBC,EAAwB,EAAE,GAC9CC,IAA2BD,EAAwB,EAAE;AAG3D,SAAAE;AAAA,IACE,MAAM,CAACJ,KAAiBD,GAAa;AAAA,IACrC,CAAC,CAACM,GAAYC,CAAQ,MAAM;AAC1B,UAAIC,EAAMD,CAAQ,GAAG;AACnB,QAAAL,EAAkB,QAAQ,CAAA,GAC1BE,EAAyB,QAAQ,CAAA;AACjC;AAAA,MACF;AAGA,YAAMK,IADcC,EAAeJ,CAAU,EAE1C,OAAO,CAACK,MAA+C,CAACH,EAAMG,EAAI,KAAK,CAAC,EACxE,QAAQ,CAACA,OAAS;AAAA,QACjB,IAAIC,EAAUD,EAAI,KAA6C,EAAE;AAAA,QACjE,MAAMA,EAAI;AAAA,MAAA,EACV;AAEJ,MAAAT,EAAkB,QAAQO,EAAK,IAAI,CAACI,MAAMA,EAAE,EAAE,GAC9CT,EAAyB,QAAQK,EAAK,OAAO,CAACI,MAAM,CAACA,EAAE,IAAI,EAAE,IAAI,CAACA,MAAMA,EAAE,EAAE;AAAA,IAC9E;AAAA,IACA,EAAE,WAAW,GAAA;AAAA,EAAK,GAGb,CAACX,GAAmBE,CAAwB;AACrD;AAEA,SAASM,EACPJ,GAC0D;AAC1D,SAAKA,IACEA,EACJ,OAAOQ,CAAQ,EACf,OAAO,CAACH,MAAQA,EAAI,SAASA,EAAI,UAAUI,CAA2B,IAHjD,CAAA;AAI1B;AAEA,SAASD,EACPH,GAC8B;AAC9B,SAAO,EAAE,cAAcA;AACzB;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { PlSelectionModel } from '@platforma-sdk/model';
|
|
2
|
+
import { CellRendererSelectorFunc, GridApi, GridOptions } from 'ag-grid-enterprise';
|
|
3
|
+
import { PlAgDataTableV2Row } from '../types';
|
|
4
|
+
export declare function useGrid({ selection, noRowsText, loadingText, runningText, notReadyText, cellRendererSelector, }: {
|
|
5
|
+
selection?: PlSelectionModel;
|
|
6
|
+
noRowsText?: string;
|
|
7
|
+
loadingText?: string;
|
|
8
|
+
runningText?: string;
|
|
9
|
+
notReadyText?: string;
|
|
10
|
+
cellRendererSelector?: CellRendererSelectorFunc<PlAgDataTableV2Row>;
|
|
11
|
+
}): {
|
|
12
|
+
gridApi: import('vue').ShallowRef<GridApi<PlAgDataTableV2Row> | null, GridApi<PlAgDataTableV2Row> | null>;
|
|
13
|
+
gridOptions: import('vue').ShallowRef<GridOptions<PlAgDataTableV2Row>, GridOptions<PlAgDataTableV2Row>>;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=useGrid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGrid.d.ts","sourceRoot":"","sources":["../../../../src/components/PlAgDataTable/compositions/useGrid.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EACL,wBAAwB,EACxB,OAAO,EACP,WAAW,EAGZ,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,kBAAkB,EAInB,MAAM,UAAU,CAAC;AAKlB,wBAAgB,OAAO,CAAC,EACtB,SAAS,EACT,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,oBAAoB,GACrB,EAAE;IACD,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;CACrE;;;EA2GA"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { isJsonEqual as w } from "../../../lib/util/helpers/dist/objects.js";
|
|
2
|
+
import { parseJson as C } from "@platforma-sdk/model";
|
|
3
|
+
import { shallowRef as u } from "vue";
|
|
4
|
+
import { autoSizeRowNumberColumn as g } from "../sources/row-number.js";
|
|
5
|
+
import y from "../PlAgOverlayLoading.vue.js";
|
|
6
|
+
import O from "../PlAgOverlayNoRows.vue.js";
|
|
7
|
+
/* empty css */
|
|
8
|
+
import { isNil as p } from "es-toolkit";
|
|
9
|
+
function E({
|
|
10
|
+
selection: t,
|
|
11
|
+
noRowsText: m,
|
|
12
|
+
loadingText: c,
|
|
13
|
+
runningText: f,
|
|
14
|
+
notReadyText: v,
|
|
15
|
+
cellRendererSelector: S
|
|
16
|
+
}) {
|
|
17
|
+
const d = u(null), n = u({
|
|
18
|
+
animateRows: !1,
|
|
19
|
+
suppressColumnMoveAnimation: !0,
|
|
20
|
+
cellSelection: p(t),
|
|
21
|
+
autoSizeStrategy: { type: "fitCellContents" },
|
|
22
|
+
rowSelection: t ? {
|
|
23
|
+
mode: "multiRow",
|
|
24
|
+
selectAll: "all",
|
|
25
|
+
groupSelects: "self",
|
|
26
|
+
checkboxes: !1,
|
|
27
|
+
headerCheckbox: !1,
|
|
28
|
+
enableClickSelection: !1
|
|
29
|
+
} : void 0,
|
|
30
|
+
defaultColDef: {
|
|
31
|
+
suppressHeaderMenuButton: !0,
|
|
32
|
+
sortingOrder: ["desc", "asc", null],
|
|
33
|
+
cellRendererSelector: S
|
|
34
|
+
},
|
|
35
|
+
maintainColumnOrder: !0,
|
|
36
|
+
localeText: {
|
|
37
|
+
loadingError: "..."
|
|
38
|
+
},
|
|
39
|
+
rowModelType: "serverSide",
|
|
40
|
+
// cacheBlockSize should be the same as PlMultiSequenceAlignment limit
|
|
41
|
+
// so that selectAll will add all rows to selection
|
|
42
|
+
cacheBlockSize: 1e3,
|
|
43
|
+
maxBlocksInCache: 100,
|
|
44
|
+
blockLoadDebounceMillis: 500,
|
|
45
|
+
serverSideSortAllLevels: !0,
|
|
46
|
+
suppressServerSideFullWidthLoadingRow: !0,
|
|
47
|
+
getRowId: (o) => o.data.id,
|
|
48
|
+
loading: !0,
|
|
49
|
+
loadingOverlayComponentParams: {
|
|
50
|
+
variant: "not-ready",
|
|
51
|
+
loadingText: c,
|
|
52
|
+
runningText: f,
|
|
53
|
+
notReadyText: v
|
|
54
|
+
},
|
|
55
|
+
loadingOverlayComponent: y,
|
|
56
|
+
noRowsOverlayComponent: O,
|
|
57
|
+
noRowsOverlayComponentParams: {
|
|
58
|
+
text: m
|
|
59
|
+
},
|
|
60
|
+
defaultCsvExportParams: {
|
|
61
|
+
allColumns: !0,
|
|
62
|
+
suppressQuotes: !0,
|
|
63
|
+
columnSeparator: " ",
|
|
64
|
+
fileName: "table.tsv"
|
|
65
|
+
},
|
|
66
|
+
onGridReady: (o) => {
|
|
67
|
+
const r = o.api;
|
|
68
|
+
g(r);
|
|
69
|
+
const a = (e, i) => {
|
|
70
|
+
const s = { ...n.value };
|
|
71
|
+
s[e] = i, n.value = s, r.setGridOption(e, i);
|
|
72
|
+
}, l = (e) => {
|
|
73
|
+
n.value = {
|
|
74
|
+
...n.value,
|
|
75
|
+
...e
|
|
76
|
+
}, r.updateGridOptions(e);
|
|
77
|
+
};
|
|
78
|
+
d.value = new Proxy(r, {
|
|
79
|
+
get(e, i, s) {
|
|
80
|
+
switch (i) {
|
|
81
|
+
case "setGridOption":
|
|
82
|
+
return a;
|
|
83
|
+
case "updateGridOptions":
|
|
84
|
+
return l;
|
|
85
|
+
default:
|
|
86
|
+
return Reflect.get(e, i, s);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
},
|
|
91
|
+
onSelectionChanged: (o) => {
|
|
92
|
+
var r;
|
|
93
|
+
if (!p(t)) {
|
|
94
|
+
const a = o.api.getServerSideSelectionState(), l = ((r = a == null ? void 0 : a.toggledNodes) == null ? void 0 : r.map((e) => C(e))) ?? [];
|
|
95
|
+
w(t.selectedKeys, l) || (t = { ...t, selectedKeys: l });
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
onRowDoubleClicked: (o) => {
|
|
99
|
+
throw new Error("not overrided onRowDoubleClicked");
|
|
100
|
+
},
|
|
101
|
+
onStateUpdated: (o) => {
|
|
102
|
+
throw new Error("not overrided onStateUpdated");
|
|
103
|
+
},
|
|
104
|
+
onGridPreDestroyed: (o) => {
|
|
105
|
+
throw new Error("not overrided onGridPreDestroyed");
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
return { gridApi: d, gridOptions: n };
|
|
109
|
+
}
|
|
110
|
+
export {
|
|
111
|
+
E as useGrid
|
|
112
|
+
};
|
|
113
|
+
//# sourceMappingURL=useGrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGrid.js","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 { 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?: PlSelectionModel;\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),\n autoSizeStrategy: { type: \"fitCellContents\" },\n rowSelection: selection\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)) {\n const state = event.api.getServerSideSelectionState();\n const selectedKeys =\n state?.toggledNodes?.map((nodeId) => parseJson(nodeId as PlTableRowIdJson)) ?? [];\n if (!isJsonEqual(selection.selectedKeys, selectedKeys)) {\n selection = { ...selection, 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"],"names":["useGrid","selection","noRowsText","loadingText","runningText","notReadyText","cellRendererSelector","gridApi","shallowRef","gridOptions","isNil","params","PlOverlayLoading","PlOverlayNoRows","event","api","autoSizeRowNumberColumn","setGridOption","key","value","options","updateGridOptions","target","prop","receiver","state","selectedKeys","_a","nodeId","parseJson","isJsonEqual","_event"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row-number.d.ts","sourceRoot":"","sources":["../../../../src/components/PlAgDataTable/sources/row-number.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,OAAO,EAEb,MAAM,oBAAoB,CAAC;AAK5B,eAAO,MAAM,2BAA2B,8BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"row-number.d.ts","sourceRoot":"","sources":["../../../../src/components/PlAgDataTable/sources/row-number.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,OAAO,EAEb,MAAM,oBAAoB,CAAC;AAK5B,eAAO,MAAM,2BAA2B,8BAA4B,CAAC;AAIrE,wBAAgB,mBAAmB,CAAC,KAAK,GAAG,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC,CA+BhE;AAuED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,QA2CvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row-number.js","sources":["../../../../src/components/PlAgDataTable/sources/row-number.ts"],"sourcesContent":["import type { AgGridEvent, AgPublicEventType } from \"ag-grid-enterprise\";\nimport {\n isColumnSelectionCol,\n type ColDef,\n type GridApi,\n type ValueGetterParams,\n} from \"ag-grid-enterprise\";\nimport { nextTick } from \"vue\";\nimport { PlAgRowNumCheckbox } from \"../../PlAgRowNumCheckbox\";\nimport PlAgRowNumHeader from \"../../PlAgRowNumHeader.vue\";\n\nexport const PlAgDataTableRowNumberColId = '\"##RowNumberColumnId##\"';\n\nconst HeaderSize = 45;\n\
|
|
1
|
+
{"version":3,"file":"row-number.js","sources":["../../../../src/components/PlAgDataTable/sources/row-number.ts"],"sourcesContent":["import type { AgGridEvent, AgPublicEventType } from \"ag-grid-enterprise\";\nimport {\n isColumnSelectionCol,\n type ColDef,\n type GridApi,\n type ValueGetterParams,\n} from \"ag-grid-enterprise\";\nimport { nextTick } from \"vue\";\nimport { PlAgRowNumCheckbox } from \"../../PlAgRowNumCheckbox\";\nimport PlAgRowNumHeader from \"../../PlAgRowNumHeader.vue\";\n\nexport const PlAgDataTableRowNumberColId = '\"##RowNumberColumnId##\"';\n\nconst HeaderSize = 45;\n\nexport function makeRowNumberColDef<TData = any>(): ColDef<TData> {\n return {\n colId: PlAgDataTableRowNumberColId,\n headerName: \"#\",\n headerComponent: PlAgRowNumHeader,\n valueGetter: (params: ValueGetterParams) => {\n if (params.node === null) return null;\n if (params.node.rowIndex === null) return null;\n return params.node.rowIndex + 1;\n },\n cellRenderer: PlAgRowNumCheckbox,\n headerClass: \"pl-ag-header-align-center\",\n suppressNavigable: true,\n suppressMovable: true,\n mainMenuItems: [],\n contextMenuItems: [],\n lockPosition: \"left\",\n pinned: \"left\",\n lockPinned: true,\n width: HeaderSize,\n suppressSizeToFit: true,\n suppressAutoSize: true,\n cellStyle: {\n color: \"var(--txt-03)\",\n \"background-color\": \"var(--bg-base-light)\",\n overflow: \"visible !important\",\n \"text-align\": \"center\",\n },\n sortable: false,\n resizable: false,\n };\n}\n\nfunction createCellFake(): HTMLDivElement {\n const div = document.createElement(\"div\");\n\n div.style.visibility = \"hidden\";\n div.style.position = \"absolute\";\n div.style.boxSizing = \"border-box\";\n\n div.style.padding = \"15.5px\";\n div.style.border = \"1px solid\";\n div.style.width = \"auto\";\n\n document.body.appendChild(div);\n return div;\n}\n\nfunction destroyCellFake(cellFake: HTMLDivElement) {\n document.body.removeChild(cellFake);\n}\n\nfunction adjustRowNumberColumnWidth(gridApi: GridApi, cellFake: HTMLDivElement, force?: boolean) {\n const rowNode = gridApi.getDisplayedRowAtIndex(gridApi.getLastDisplayedRowIndex());\n if (!rowNode) return;\n\n const lastDisplayedRowNumber = gridApi.getCellValue({\n rowNode,\n colKey: PlAgDataTableRowNumberColId,\n });\n\n if (typeof lastDisplayedRowNumber !== \"number\") return;\n\n const lastDisplayedRowNumberDigitCount = lastDisplayedRowNumber.toString().length;\n if (!force && cellFake.innerHTML.length === lastDisplayedRowNumberDigitCount) return;\n\n const WidestDigit = \"5\";\n cellFake.innerHTML = WidestDigit.repeat(lastDisplayedRowNumberDigitCount);\n\n nextTick(() => {\n gridApi.applyColumnState({\n state: [\n {\n colId: PlAgDataTableRowNumberColId,\n pinned: \"left\", // sometimes pinnig is strangely not applied\n width: Math.max(HeaderSize, cellFake.offsetWidth),\n },\n ],\n });\n });\n}\n\nfunction fixColumnOrder(gridApi: GridApi) {\n if (gridApi.isDestroyed()) return;\n const columns = gridApi.getAllGridColumns() ?? [];\n const selectionIndex = columns.findIndex(isColumnSelectionCol);\n const numRowsIndex = columns.findIndex(\n (column) => column.getId() === PlAgDataTableRowNumberColId,\n );\n if (numRowsIndex !== -1) {\n if (selectionIndex !== -1) {\n if (selectionIndex !== 0 || numRowsIndex !== 1) {\n gridApi.moveColumns([columns[numRowsIndex], columns[selectionIndex]], 0);\n }\n } else {\n if (numRowsIndex !== 0) {\n gridApi.moveColumns([columns[numRowsIndex]], 0);\n }\n }\n }\n}\n\nexport function autoSizeRowNumberColumn(gridApi: GridApi) {\n const cellFake = createCellFake();\n\n gridApi.addEventListener(\"firstDataRendered\", (event) => {\n adjustRowNumberColumnWidth(event.api, cellFake);\n });\n gridApi.addEventListener(\"viewportChanged\", (event) => {\n adjustRowNumberColumnWidth(event.api, cellFake);\n });\n gridApi.addEventListener(\"columnVisible\", (event) => {\n if (\n event.columns &&\n event.columns.some(\n (column) => column.isVisible() && column.getColId() === PlAgDataTableRowNumberColId,\n )\n ) {\n adjustRowNumberColumnWidth(event.api, cellFake);\n }\n });\n gridApi.addEventListener(\"columnResized\", (event) => {\n if (\n event.finished &&\n event.source === \"autosizeColumns\" &&\n event.columns?.some(\n (column) => column.isVisible() && column.getColId() === PlAgDataTableRowNumberColId,\n )\n ) {\n adjustRowNumberColumnWidth(event.api, cellFake, true);\n }\n });\n\n const refreshCells = (event: AgGridEvent) => event.api.refreshCells();\n const refreshCellsOn: AgPublicEventType[] = [\"sortChanged\", \"filterChanged\", \"modelUpdated\"];\n refreshCellsOn.forEach((eventType) => gridApi.addEventListener(eventType, refreshCells));\n\n gridApi.addEventListener(\"displayedColumnsChanged\", (event) => {\n fixColumnOrder(event.api);\n });\n gridApi.addEventListener(\"gridPreDestroyed\", () => {\n destroyCellFake(cellFake);\n });\n adjustRowNumberColumnWidth(gridApi, cellFake);\n fixColumnOrder(gridApi);\n}\n"],"names":["PlAgDataTableRowNumberColId","HeaderSize","makeRowNumberColDef","PlAgRowNumHeader","params","PlAgRowNumCheckbox","createCellFake","div","destroyCellFake","cellFake","adjustRowNumberColumnWidth","gridApi","force","rowNode","lastDisplayedRowNumber","lastDisplayedRowNumberDigitCount","WidestDigit","nextTick","fixColumnOrder","columns","selectionIndex","isColumnSelectionCol","numRowsIndex","column","autoSizeRowNumberColumn","event","_a","refreshCells","eventType"],"mappings":"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"}
|