@platforma-sdk/ui-vue 1.51.0 → 1.51.4

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.
@@ -1,6 +1,6 @@
1
1
   WARN  Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
2
2
 
3
- > @platforma-sdk/ui-vue@1.51.0 build /home/runner/_work/platforma/platforma/sdk/ui-vue
3
+ > @platforma-sdk/ui-vue@1.51.4 build /home/runner/_work/platforma/platforma/sdk/ui-vue
4
4
  > ts-builder build --target browser-lib
5
5
 
6
6
  Building browser-lib project...
@@ -78,8 +78,8 @@ computing gzip size...
78
78
  dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/to-comparators.js  0.30 kB │ gzip: 0.23 kB │ map: 0.78 kB
79
79
  dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.js  0.31 kB │ gzip: 0.22 kB │ map: 0.11 kB
80
80
  dist/components/PlAnnotations/components/PlAnnotationsModal.vue.js  0.31 kB │ gzip: 0.22 kB │ map: 0.11 kB
81
- dist/components/PlAgDataTable/PlAgDataTableSheets.vue.js  0.31 kB │ gzip: 0.22 kB │ map: 0.11 kB
82
81
  dist/components/PlAnnotations/components/AnnotationsSidebar.vue.js  0.31 kB │ gzip: 0.22 kB │ map: 0.11 kB
82
+ dist/components/PlAgDataTable/PlAgDataTableSheets.vue.js  0.31 kB │ gzip: 0.22 kB │ map: 0.11 kB
83
83
  dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/valid.js  0.31 kB │ gzip: 0.22 kB │ map: 0.76 kB
84
84
  dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue.js  0.32 kB │ gzip: 0.23 kB │ map: 0.12 kB
85
85
  dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/satisfies.js  0.32 kB │ gzip: 0.23 kB │ map: 0.74 kB
@@ -127,12 +127,12 @@ computing gzip size...
127
127
  dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue.js  1.00 kB │ gzip: 0.55 kB │ map: 2.09 kB
128
128
  dist/components/PlBtnExportArchive/Item.vue3.js  1.03 kB │ gzip: 0.52 kB │ map: 0.10 kB
129
129
  dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.scss.js  1.03 kB │ gzip: 0.49 kB │ map: 0.13 kB
130
+ dist/components/PlAgCsvExporter/PlAgCsvExporter.vue.js  1.06 kB │ gzip: 0.59 kB │ map: 1.69 kB
130
131
  dist/components/PlAgCellFile/PlAgCellFile.vue.js  1.09 kB │ gzip: 0.59 kB │ map: 3.22 kB
131
132
  dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/cmp.js  1.11 kB │ gzip: 0.40 kB │ map: 2.14 kB
132
133
  dist/lib/util/helpers/dist/utils.js  1.13 kB │ gzip: 0.53 kB │ map: 7.55 kB
133
134
  dist/components/PlAgGridColumnManager/useFilteredItems.js  1.13 kB │ gzip: 0.58 kB │ map: 3.95 kB
134
135
  dist/components/PlAgDataTable/sources/value-rendering.js  1.14 kB │ gzip: 0.54 kB │ map: 3.41 kB
135
- dist/components/PlAgCsvExporter/PlAgCsvExporter.vue.js  1.15 kB │ gzip: 0.62 kB │ map: 1.77 kB
136
136
  dist/AgGridVue/selection.js  1.17 kB │ gzip: 0.45 kB │ map: 3.53 kB
137
137
  dist/plugins/Monetization/validation.js  1.17 kB │ gzip: 0.56 kB │ map: 2.85 kB
138
138
  dist/lib/util/helpers/dist/objects.js  1.18 kB │ gzip: 0.53 kB │ map: 9.42 kB
@@ -180,7 +180,7 @@ computing gzip size...
180
180
  dist/components/PlAgColumnHeader/PlAgColumnHeader.vue.js  3.51 kB │ gzip: 1.38 kB │ map: 4.73 kB
181
181
  dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/index.js  3.67 kB │ gzip: 1.01 kB │ map: 5.45 kB
182
182
  dist/plugins/Monetization/LimitCard.vue2.js  3.84 kB │ gzip: 1.15 kB │ map: 9.38 kB
183
- dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js  3.85 kB │ gzip: 1.53 kB │ map: 6.90 kB
183
+ dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js  3.85 kB │ gzip: 1.53 kB │ map: 6.76 kB
184
184
  dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/re.js  4.03 kB │ gzip: 1.23 kB │ map: 12.92 kB
185
185
  dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js  4.21 kB │ gzip: 1.60 kB │ map: 6.37 kB
186
186
  dist/components/PlAnnotations/components/FilterSidebar.vue2.js  4.30 kB │ gzip: 1.56 kB │ map: 7.41 kB
@@ -207,8 +207,8 @@ computing gzip size...
207
207
  dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js 44.35 kB │ gzip: 29.27 kB │ map: 3.03 kB
208
208
  dist/components/PlAgRowNumHeader.vue.js 44.62 kB │ gzip: 29.27 kB │ map: 4.05 kB
209
209
  dist/AgGridVue/useAgGridOptions.js 49.06 kB │ gzip: 30.12 kB │ map: 15.83 kB
210
- dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js 50.38 kB │ gzip: 31.10 kB │ map: 34.48 kB
211
- [vite:dts] Declaration files built in 5073ms.
210
+ dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js 50.61 kB │ gzip: 31.15 kB │ map: 34.62 kB
211
+ [vite:dts] Declaration files built in 4426ms.
212
212
 
213
- ✓ built in 7.36s
213
+ ✓ built in 6.08s
214
214
  Build completed successfully
@@ -1,5 +1,5 @@
1
1
   WARN  Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
2
2
 
3
- > @platforma-sdk/ui-vue@1.51.0 lint /home/runner/_work/platforma/platforma/sdk/ui-vue
3
+ > @platforma-sdk/ui-vue@1.51.4 lint /home/runner/_work/platforma/platforma/sdk/ui-vue
4
4
  > eslint .
5
5
 
@@ -1,6 +1,6 @@
1
1
   WARN  Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
2
2
 
3
- > @platforma-sdk/ui-vue@1.51.0 type-check /home/runner/_work/platforma/platforma/sdk/ui-vue
3
+ > @platforma-sdk/ui-vue@1.51.4 type-check /home/runner/_work/platforma/platforma/sdk/ui-vue
4
4
  > ts-builder types --target browser-lib
5
5
 
6
6
  ↳ vue-tsc.js --noEmit --project ./tsconfig.json --customConditions ,
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @platforma-sdk/ui-vue
2
2
 
3
+ ## 1.51.4
4
+
5
+ ### Patch Changes
6
+
7
+ - 0f0a802: PlAgDataTable: Reclaimed some wasted vertical spacing
8
+ - Updated dependencies [0f0a802]
9
+ - @milaboratories/uikit@2.10.0
10
+
11
+ ## 1.51.2
12
+
13
+ ### Patch Changes
14
+
15
+ - Updated dependencies [5dc0a70]
16
+ - @platforma-sdk/model@1.51.2
17
+ - @milaboratories/uikit@2.9.1
18
+
3
19
  ## 1.51.0
4
20
 
5
21
  ### Minor Changes
@@ -2,6 +2,6 @@ import { GridApi } from 'ag-grid-enterprise';
2
2
  type __VLS_Props = {
3
3
  api: GridApi;
4
4
  };
5
- declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
5
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
6
6
  export default _default;
7
7
  //# sourceMappingURL=PlAgCsvExporter.vue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlAgCsvExporter.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlAgCsvExporter/PlAgCsvExporter.vue"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAKlD,KAAK,WAAW,GAAG;IACjB,GAAG,EAAE,OAAO,CAAC;CACd,CAAC;;AAoFF,wBAOG"}
1
+ {"version":3,"file":"PlAgCsvExporter.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlAgCsvExporter/PlAgCsvExporter.vue"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAKlD,KAAK,WAAW,GAAG;IACjB,GAAG,EAAE,OAAO,CAAC;CACd,CAAC;;AAkFF,wBAMG"}
@@ -1,35 +1,33 @@
1
- import { defineComponent as s, toRefs as c, shallowRef as u, createElementBlock as f, openBlock as l, createBlock as m, createCommentVNode as d, unref as t, Teleport as x, createVNode as g, withModifiers as v, withCtx as C, createTextVNode as k } from "vue";
2
- import { usePlBlockPageTitleTeleportTarget as T, PlBtnGhost as B } from "@milaboratories/uikit";
3
- import { exportCsv as E } from "./export-csv.js";
4
- const A = /* @__PURE__ */ s({
1
+ import { defineComponent as i, toRefs as s, shallowRef as c, createBlock as f, createCommentVNode as u, unref as t, openBlock as m, Teleport as x, createVNode as d, withModifiers as g, withCtx as v, createTextVNode as C } from "vue";
2
+ import { usePlBlockPageTitleTeleportTarget as T, PlBtnGhost as k } from "@milaboratories/uikit";
3
+ import { exportCsv as P } from "./export-csv.js";
4
+ const w = /* @__PURE__ */ i({
5
5
  __name: "PlAgCsvExporter",
6
6
  props: {
7
7
  api: {}
8
8
  },
9
- setup(n) {
10
- const p = n, { api: a } = c(p), e = u(!1), i = () => {
11
- e.value = !0, E(a.value, () => e.value = !1);
9
+ setup(p) {
10
+ const l = p, { api: a } = s(l), e = c(!1), n = () => {
11
+ e.value = !0, P(a.value, () => e.value = !1);
12
12
  }, o = T("PlAgCsvExporter");
13
- return (P, r) => (l(), f("div", null, [
14
- t(o) ? (l(), m(x, {
15
- key: 0,
16
- to: t(o)
17
- }, [
18
- g(t(B), {
19
- loading: e.value,
20
- icon: "export",
21
- onClick: v(i, ["stop"])
22
- }, {
23
- default: C(() => [...r[0] || (r[0] = [
24
- k(" Export ", -1)
25
- ])]),
26
- _: 1
27
- }, 8, ["loading"])
28
- ], 8, ["to"])) : d("", !0)
29
- ]));
13
+ return (_, r) => t(o) ? (m(), f(x, {
14
+ key: 0,
15
+ to: t(o)
16
+ }, [
17
+ d(t(k), {
18
+ loading: e.value,
19
+ icon: "export",
20
+ onClick: g(n, ["stop"])
21
+ }, {
22
+ default: v(() => [...r[0] || (r[0] = [
23
+ C(" Export ", -1)
24
+ ])]),
25
+ _: 1
26
+ }, 8, ["loading"])
27
+ ], 8, ["to"])) : u("", !0);
30
28
  }
31
29
  });
32
30
  export {
33
- A as default
31
+ w as default
34
32
  };
35
33
  //# sourceMappingURL=PlAgCsvExporter.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlAgCsvExporter.vue.js","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 <div>\n <Teleport v-if=\"teleportTarget\" :to=\"teleportTarget\">\n <PlBtnGhost :loading=\"exporting\" icon=\"export\" @click.stop=\"initiateExport\">\n Export\n </PlBtnGhost>\n </Teleport>\n </div>\n</template>\n"],"names":["props","__props","gridApi","toRefs","exporting","shallowRef","initiateExport","exportCsv","teleportTarget","usePlBlockPageTitleTeleportTarget","_createElementBlock","_unref","_createBlock","_Teleport","_createVNode","PlBtnGhost","_cache"],"mappings":";;;;;;;;;AAMA,UAAMA,IAAQC,GAGR,EAAE,KAAKC,MAAYC,EAAOH,CAAK,GAE/BI,IAAYC,EAAW,EAAK,GAC5BC,IAAiB,MAAM;AAC3B,MAAAF,EAAU,QAAQ,IAClBG,EAAUL,EAAQ,OAAO,MAAME,EAAU,QAAQ,EAAK;AAAA,IACxD,GAEMI,IAAiBC,EAAkC,iBAAiB;2BAIxEC,EAMM,OAAA,MAAA;AAAA,MALYC,EAAAH,CAAA,UAAhBI,EAIWC,GAAA;AAAA;QAJsB,IAAIF,EAAAH,CAAA;AAAA,MAAA;QACnCM,EAEaH,EAAAI,CAAA,GAAA;AAAA,UAFA,SAASX,EAAA;AAAA,UAAW,MAAK;AAAA,UAAU,WAAYE,GAAc,CAAA,MAAA,CAAA;AAAA,QAAA;qBAAE,MAE5E,CAAA,GAAAU,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,cAF4E,YAE5E,EAAA;AAAA,UAAA;;;;;;;"}
1
+ {"version":3,"file":"PlAgCsvExporter.vue.js","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"],"names":["props","__props","gridApi","toRefs","exporting","shallowRef","initiateExport","exportCsv","teleportTarget","usePlBlockPageTitleTeleportTarget","_unref","_createBlock","_Teleport","_createVNode","PlBtnGhost","_cache"],"mappings":";;;;;;;;;AAMA,UAAMA,IAAQC,GAGR,EAAE,KAAKC,MAAYC,EAAOH,CAAK,GAE/BI,IAAYC,EAAW,EAAK,GAC5BC,IAAiB,MAAM;AAC3B,MAAAF,EAAU,QAAQ,IAClBG,EAAUL,EAAQ,OAAO,MAAME,EAAU,QAAQ,EAAK;AAAA,IACxD,GAEMI,IAAiBC,EAAkC,iBAAiB;qBAIxDC,EAAAF,CAAA,UAAhBG,EAIWC,GAAA;AAAA;MAJsB,IAAIF,EAAAF,CAAA;AAAA,IAAA;MACnCK,EAEaH,EAAAI,CAAA,GAAA;AAAA,QAFA,SAASV,EAAA;AAAA,QAAW,MAAK;AAAA,QAAU,WAAYE,GAAc,CAAA,MAAA,CAAA;AAAA,MAAA;mBAAE,MAE5E,CAAA,GAAAS,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,YAF4E,YAE5E,EAAA;AAAA,QAAA;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlAgDataTableV2.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlAgDataTable/PlAgDataTableV2.vue"],"names":[],"mappings":"AAyoBA,OAAO,KAAK,EACV,MAAM,EAEN,kBAAkB,EAClB,gBAAgB,EAGhB,SAAS,EAEV,MAAM,sBAAsB,CAAC;AAU9B,OAAO,KAAK,EACV,wBAAwB,EAQzB,MAAM,oBAAoB,CAAC;AAiB5B,OAAO,KAAK,EAEV,kBAAkB,EAGlB,qBAAqB,EAItB,MAAM,SAAS,CAAC;AASjB,KAAK,WAAW,GAAG;IACjB,kCAAkC;IAClC,QAAQ,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IAE1C;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;OAMG;IACH,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAE5C,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;CACrE,CAAC;AAgeF,KAAK,iBAAiB,GAAG;IACzB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAC9B,GAAG,WAAW,CAAC;AAMhB,iBAAS,cAAc;WAuGT,OAAO,IAA6B;;iCAXZ,GAAG;gCACJ,GAAG;;;;EAevC;AAsBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;6FASnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"PlAgDataTableV2.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlAgDataTable/PlAgDataTableV2.vue"],"names":[],"mappings":"AAyoBA,OAAO,KAAK,EACV,MAAM,EAEN,kBAAkB,EAClB,gBAAgB,EAGhB,SAAS,EAEV,MAAM,sBAAsB,CAAC;AAU9B,OAAO,KAAK,EACV,wBAAwB,EAQzB,MAAM,oBAAoB,CAAC;AAiB5B,OAAO,KAAK,EAEV,kBAAkB,EAGlB,qBAAqB,EAItB,MAAM,SAAS,CAAC;AASjB,KAAK,WAAW,GAAG;IACjB,kCAAkC;IAClC,QAAQ,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IAE1C;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;OAMG;IACH,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAE5C,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;CACrE,CAAC;AAgeF,KAAK,iBAAiB,GAAG;IACzB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAC9B,GAAG,WAAW,CAAC;AAMhB,iBAAS,cAAc;WA2GT,OAAO,IAA6B;;iCAXZ,GAAG;gCACJ,GAAG;;;;EAevC;AAsBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;6FASnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -1,24 +1,24 @@
1
1
  (function(){"use strict";try{if(typeof document<"u"){var E=document.createElement("style");E.appendChild(document.createTextNode(".grid-overlay-container{height:calc(100% - 1px);margin-top:1px;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background-color:var(--bg-base-light)}.grid-icon-sad-cat{background-image:url(data:image/png;base64,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);background-repeat:no-repeat}.grid-overlay-container>div{height:300px;width:300px;background-size:contain;background-position:center}.grid-overlay-container>span{color:var(--txt-mask)}")),document.head.appendChild(E)}}catch(h){console.error("vite-plugin-css-injected-by-js",h)}})();
2
- import { defineComponent as ie, mergeModels as J, useModel as U, toRefs as ue, computed as K, ref as M, shallowRef as q, watch as O, effectScope as de, watchEffect as ce, createElementBlock as me, openBlock as I, normalizeClass as H, createBlock as k, createCommentVNode as z, createVNode as fe, unref as b, isRef as Q, withCtx as W, renderSlot as j } from "vue";
2
+ import { defineComponent as ie, mergeModels as J, useModel as U, toRefs as ue, computed as K, ref as M, shallowRef as q, watch as O, effectScope as de, watchEffect as ce, createElementBlock as me, openBlock as b, normalizeClass as H, createBlock as k, createCommentVNode as $, createVNode as fe, unref as I, isRef as Q, createSlots as ve, withCtx as W, renderSlot as j } from "vue";
3
3
  import { isJsonEqual as d } from "../../lib/util/helpers/dist/objects.js";
4
- import { promiseTimeout as ve } from "../../lib/util/helpers/dist/functions.js";
5
- import { parseJson as X, getAxisId as Y, matchAxisId as Z, canonicalizeJson as _, createPlSelectionModel as F, getRawPlatformaInstance as pe, isAbortError as Se } from "@platforma-sdk/model";
6
- import { AgGridVue as ge } from "ag-grid-vue3";
7
- import { AgGridTheme as ye } from "../../aggrid.js";
8
- import Ce from "../PlAgCsvExporter/PlAgCsvExporter.vue.js";
9
- import he from "../PlAgGridColumnManager/PlAgGridColumnManager.vue.js";
10
- import we from "../PlTableFilters/PlTableFiltersV2.vue.js";
11
- import xe from "./PlAgDataTableSheets.vue.js";
12
- import Re from "./PlAgOverlayLoading.vue.js";
13
- import De from "./PlAgOverlayNoRows.vue.js";
4
+ import { promiseTimeout as pe } from "../../lib/util/helpers/dist/functions.js";
5
+ import { parseJson as X, getAxisId as Y, matchAxisId as Z, canonicalizeJson as _, createPlSelectionModel as z, getRawPlatformaInstance as Se, isAbortError as ge } from "@platforma-sdk/model";
6
+ import { AgGridVue as ye } from "ag-grid-vue3";
7
+ import { AgGridTheme as Ce } from "../../aggrid.js";
8
+ import he from "../PlAgCsvExporter/PlAgCsvExporter.vue.js";
9
+ import we from "../PlAgGridColumnManager/PlAgGridColumnManager.vue.js";
10
+ import xe from "../PlTableFilters/PlTableFiltersV2.vue.js";
11
+ import Re from "./PlAgDataTableSheets.vue.js";
12
+ import De from "./PlAgOverlayLoading.vue.js";
13
+ import Oe from "./PlAgOverlayNoRows.vue.js";
14
14
 
15
- import Oe from "./PlAgRowCount.vue.js";
16
- import { DeferredCircular as Ie, ensureNodeVisible as be } from "./sources/focus-row.js";
17
- import { PlAgDataTableRowNumberColId as ee, autoSizeRowNumberColumn as Pe } from "./sources/row-number.js";
18
- import { calculateGridOptions as Te } from "./sources/table-source-v2.js";
19
- import { useTableState as ke } from "./sources/table-state-v2.js";
20
- import { watchCached as Be } from "@milaboratories/uikit";
21
- const Ye = /* @__PURE__ */ ie({
15
+ import be from "./PlAgRowCount.vue.js";
16
+ import { DeferredCircular as Ie, ensureNodeVisible as Pe } from "./sources/focus-row.js";
17
+ import { PlAgDataTableRowNumberColId as ee, autoSizeRowNumberColumn as Te } from "./sources/row-number.js";
18
+ import { calculateGridOptions as ke } from "./sources/table-source-v2.js";
19
+ import { useTableState as Be } from "./sources/table-state-v2.js";
20
+ import { watchCached as Ge } from "@milaboratories/uikit";
21
+ const Ze = /* @__PURE__ */ ie({
22
22
  __name: "PlAgDataTableV2",
23
23
  props: /* @__PURE__ */ J({
24
24
  settings: {},
@@ -42,7 +42,7 @@ const Ye = /* @__PURE__ */ ie({
42
42
  }),
43
43
  emits: /* @__PURE__ */ J(["rowDoubleClicked", "cellButtonClicked", "newDataRendered"], ["update:modelValue", "update:selection"]),
44
44
  setup(y, { expose: te, emit: le }) {
45
- const oe = U(y, "modelValue"), o = U(y, "selection"), i = y, { settings: x } = ue(i), B = le, { gridState: R, sheetsState: P, filtersState: T } = ke(oe, x), ae = K(() => {
45
+ const oe = U(y, "modelValue"), o = U(y, "selection"), i = y, { settings: x } = ue(i), B = le, { gridState: R, sheetsState: P, filtersState: T } = Be(oe, x), ae = K(() => {
46
46
  const e = { ...x.value };
47
47
  return e.sourceId !== null ? {
48
48
  sheets: e.sheets ?? [],
@@ -111,8 +111,8 @@ const Ye = /* @__PURE__ */ ie({
111
111
  runningText: i.runningText,
112
112
  notReadyText: i.notReadyText
113
113
  },
114
- loadingOverlayComponent: Re,
115
- noRowsOverlayComponent: De,
114
+ loadingOverlayComponent: De,
115
+ noRowsOverlayComponent: Oe,
116
116
  noRowsOverlayComponentParams: {
117
117
  text: i.noRowsText
118
118
  },
@@ -123,7 +123,7 @@ const Ye = /* @__PURE__ */ ie({
123
123
  },
124
124
  onGridReady: (e) => {
125
125
  const t = e.api;
126
- Pe(t);
126
+ Te(t);
127
127
  const l = (n, c) => {
128
128
  const s = { ...r.value };
129
129
  s[n] = c, r.value = s, t.setGridOption(n, c);
@@ -168,13 +168,13 @@ const Ye = /* @__PURE__ */ ie({
168
168
  columnVisibility: e.columnVisibility
169
169
  };
170
170
  }
171
- const E = M(0);
171
+ const F = M(0);
172
172
  O(
173
173
  () => [u.value, R.value],
174
174
  ([e, t]) => {
175
175
  if (!e || e.isDestroyed()) return;
176
176
  const l = V(e.getState());
177
- !d(t, {}) && !d(t, l) && (r.value.initialState = t, ++E.value);
177
+ !d(t, {}) && !d(t, l) && (r.value.initialState = t, ++F.value);
178
178
  }
179
179
  );
180
180
  const se = K(() => i.cellRendererSelector ?? null);
@@ -189,7 +189,7 @@ const Ye = /* @__PURE__ */ ie({
189
189
  ), te({
190
190
  focusRow: async (e) => {
191
191
  const t = await D.promise;
192
- return t.isDestroyed() ? !1 : be(t, (l) => {
192
+ return t.isDestroyed() ? !1 : Pe(t, (l) => {
193
193
  var a;
194
194
  return d((a = l.data) == null ? void 0 : a.axesKey, e);
195
195
  });
@@ -214,7 +214,7 @@ const Ye = /* @__PURE__ */ ie({
214
214
  const p = de(), { resolve: S, promise: w } = Promise.withResolvers();
215
215
  p.run(() => O(o, S, { once: !0 }));
216
216
  try {
217
- await ve(w, 500);
217
+ await pe(w, 500);
218
218
  } catch {
219
219
  return !1;
220
220
  } finally {
@@ -228,7 +228,7 @@ const Ye = /* @__PURE__ */ ie({
228
228
  const t = (l) => !("children" in l);
229
229
  return e ? e.filter(t).filter((l) => l.colId && l.colId !== ee) : [];
230
230
  }
231
- Be(
231
+ Ge(
232
232
  () => r.value.columnDefs,
233
233
  (e) => {
234
234
  if (x.value.sourceId === null)
@@ -240,7 +240,7 @@ const Ye = /* @__PURE__ */ ie({
240
240
  },
241
241
  { immediate: !0 }
242
242
  );
243
- const $ = F();
243
+ const E = z();
244
244
  let v = null;
245
245
  const C = M(0);
246
246
  return O(
@@ -259,7 +259,7 @@ const Ye = /* @__PURE__ */ ie({
259
259
  },
260
260
  columnDefs: void 0,
261
261
  serverSideDatasource: void 0
262
- }), o.value && (o.value && !d(o.value, $) && (o.value = F()), e.setServerSideSelectionState({
262
+ }), o.value && (o.value && !d(o.value, E) && (o.value = z()), e.setServerSideSelectionState({
263
263
  selectAll: !1,
264
264
  toggledNodes: []
265
265
  }));
@@ -271,7 +271,7 @@ const Ye = /* @__PURE__ */ ie({
271
271
  ...r.value.loadingOverlayComponentParams,
272
272
  variant: "loading"
273
273
  }
274
- }), o.value && (v != null && v.sourceId) && (o.value && !d(o.value, $) && (o.value = F()), e.setServerSideSelectionState({
274
+ }), o.value && (v != null && v.sourceId) && (o.value && !d(o.value, E) && (o.value = z()), e.setServerSideSelectionState({
275
275
  selectAll: !1,
276
276
  toggledNodes: []
277
277
  })));
@@ -287,9 +287,9 @@ const Ye = /* @__PURE__ */ ie({
287
287
  });
288
288
  }
289
289
  const c = C.value;
290
- Te({
290
+ ke({
291
291
  generation: C,
292
- pfDriver: pe().pFrameDriver,
292
+ pfDriver: Se().pFrameDriver,
293
293
  model: t.model,
294
294
  sheets: t.sheets ?? [],
295
295
  dataRenderedTracker: D,
@@ -330,7 +330,7 @@ const Ye = /* @__PURE__ */ ie({
330
330
  }
331
331
  }
332
332
  }).catch((s) => {
333
- e.isDestroyed() || c !== C.value || Se(s) || console.trace(s);
333
+ e.isDestroyed() || c !== C.value || ge(s) || console.trace(s);
334
334
  }).finally(() => {
335
335
  e.isDestroyed() || c !== C.value || e.updateGridOptions({
336
336
  loading: !1
@@ -370,43 +370,50 @@ const Ye = /* @__PURE__ */ ie({
370
370
  !u.value || (e = u.value) != null && e.isDestroyed() || u.value.updateGridOptions({
371
371
  statusBar: r.value.loading ? void 0 : {
372
372
  statusPanels: [
373
- { statusPanel: Oe, align: "left" }
373
+ { statusPanel: be, align: "left" }
374
374
  ]
375
375
  }
376
376
  });
377
- }), (e, t) => (I(), me("div", {
377
+ }), (e, t) => (b(), me("div", {
378
378
  class: H(e.$style.container)
379
379
  }, [
380
- u.value && !y.disableColumnsPanel ? (I(), k(b(he), {
380
+ u.value && !y.disableColumnsPanel ? (b(), k(I(we), {
381
381
  key: 0,
382
382
  api: u.value
383
- }, null, 8, ["api"])) : z("", !0),
384
- y.disableFiltersPanel ? z("", !0) : (I(), k(we, {
383
+ }, null, 8, ["api"])) : $("", !0),
384
+ y.disableFiltersPanel ? $("", !0) : (b(), k(xe, {
385
385
  key: 1,
386
- modelValue: b(T),
386
+ modelValue: I(T),
387
387
  "onUpdate:modelValue": t[0] || (t[0] = (l) => Q(T) ? T.value = l : null),
388
388
  settings: ne.value
389
389
  }, null, 8, ["modelValue", "settings"])),
390
- u.value && y.showExportButton ? (I(), k(Ce, {
390
+ u.value && y.showExportButton ? (b(), k(he, {
391
391
  key: 2,
392
392
  api: u.value
393
- }, null, 8, ["api"])) : z("", !0),
394
- fe(xe, {
395
- modelValue: b(P),
393
+ }, null, 8, ["api"])) : $("", !0),
394
+ fe(Re, {
395
+ modelValue: I(P),
396
396
  "onUpdate:modelValue": t[1] || (t[1] = (l) => Q(P) ? P.value = l : null),
397
397
  settings: ae.value
398
- }, {
399
- before: W(() => [
400
- j(e.$slots, "before-sheets")
401
- ]),
402
- after: W(() => [
403
- j(e.$slots, "after-sheets")
404
- ]),
405
- _: 3
406
- }, 8, ["modelValue", "settings"]),
407
- (I(), k(b(ge), {
408
- key: E.value,
409
- theme: b(ye),
398
+ }, ve({ _: 2 }, [
399
+ e.$slots["before-sheets"] ? {
400
+ name: "before",
401
+ fn: W(() => [
402
+ j(e.$slots, "before-sheets")
403
+ ]),
404
+ key: "0"
405
+ } : void 0,
406
+ e.$slots["after-sheets"] ? {
407
+ name: "after",
408
+ fn: W(() => [
409
+ j(e.$slots, "after-sheets")
410
+ ]),
411
+ key: "1"
412
+ } : void 0
413
+ ]), 1032, ["modelValue", "settings"]),
414
+ (b(), k(I(ye), {
415
+ key: F.value,
416
+ theme: I(Ce),
410
417
  class: H(e.$style.grid),
411
418
  "grid-options": r.value
412
419
  }, null, 8, ["theme", "class", "grid-options"]))
@@ -414,6 +421,6 @@ const Ye = /* @__PURE__ */ ie({
414
421
  }
415
422
  });
416
423
  export {
417
- Ye as default
424
+ Ze as default
418
425
  };
419
426
  //# sourceMappingURL=PlAgDataTableV2.vue2.js.map
@@ -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 type { PlDataTableFiltersSettings } from '../PlTableFilters';\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 { 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 filterableColumns = ref<PTableColumnSpec[]>([]);\nconst filtersSettings = computed<PlDataTableFiltersSettings>(() => {\n const settingsCopy = { ...settings.value };\n const columns = filterableColumns.value;\n const result = settingsCopy.sourceId !== null && columns.length > 0\n ? {\n columns,\n config: (column: PTableColumnSpec) => settingsCopy.filtersConfig({ sourceId: settingsCopy.sourceId, column }),\n cachedState: [...filtersState.value],\n }\n : {\n columns: [],\n config: () => ({}),\n cachedState: [],\n };\n return result;\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 = 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 fileName: 'table.csv',\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 onStateUpdated: (event) => {\n gridOptions.value.initialState = gridState.value = makePartialState(\n event.state,\n );\n if (!isJsonEqual(event.sources, ['columnSizing'])) {\n event.api.autoSizeColumns(\n event.api.getAllDisplayedColumns().filter(\n (column) => column.getColId() !== PlAgDataTableRowNumberColId,\n ),\n );\n }\n },\n onGridPreDestroyed: (event) => {\n gridOptions.value.initialState = gridState.value = makePartialState(\n event.api.getState(),\n );\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 orderedColIds: PlTableColumnIdJson[];\n } | undefined,\n sort: state.sort as {\n sortModel: {\n colId: PlTableColumnIdJson;\n sort: 'asc' | 'desc';\n }[];\n } | undefined,\n columnVisibility: state.columnVisibility as {\n hiddenColIds: PlTableColumnIdJson[];\n } | undefined,\n };\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 (!isJsonEqual(gridState, {}) && !isJsonEqual(gridState, selfState)) {\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\n .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\n .map((key) => canonicalizeJson<PlTableRowId>(mapping.map((index) => key[index])));\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\n .map((def) => parseJson(def.colId! satisfies string as PlTableColumnIdJson).labeled);\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 = (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\n ? state[0].rowCount\n : 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:\n props.cellButtonInvokeRowsOnDoubleClick,\n trigger: (key?: PTableKey) => emit('cellButtonClicked', key),\n } satisfies PlAgCellButtonAxisParams,\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\n .map((key) => mapping.map((index) => key[index]));\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 }).catch((error: unknown) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n if (isAbortError(error)) return;\n console.trace(error);\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: [\n { statusPanel: PlAgRowCount, align: 'left' },\n ],\n },\n });\n});\n</script>\n\n<template>\n <div :class=\"$style.container\">\n <PlAgGridColumnManager\n v-if=\"gridApi && !disableColumnsPanel\"\n :api=\"gridApi\"\n />\n <PlTableFiltersV2\n v-if=\"!disableFiltersPanel\"\n v-model=\"filtersState\"\n :settings=\"filtersSettings\"\n />\n <PlAgCsvExporter\n v-if=\"gridApi && showExportButton\"\n :api=\"gridApi\"\n />\n <PlAgDataTableSheets\n v-model=\"sheetsState\"\n :settings=\"sheetsSettings\"\n >\n <template #before>\n <slot name=\"before-sheets\" />\n </template>\n <template #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","gridState","sheetsState","filtersState","useTableState","sheetsSettings","computed","settingsCopy","filterableColumns","ref","filtersSettings","columns","column","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","makePartialState","PlAgDataTableRowNumberColId","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","_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 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 type { PlDataTableFiltersSettings } from '../PlTableFilters';\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 { 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 filterableColumns = ref<PTableColumnSpec[]>([]);\nconst filtersSettings = computed<PlDataTableFiltersSettings>(() => {\n const settingsCopy = { ...settings.value };\n const columns = filterableColumns.value;\n const result = settingsCopy.sourceId !== null && columns.length > 0\n ? {\n columns,\n config: (column: PTableColumnSpec) => settingsCopy.filtersConfig({ sourceId: settingsCopy.sourceId, column }),\n cachedState: [...filtersState.value],\n }\n : {\n columns: [],\n config: () => ({}),\n cachedState: [],\n };\n return result;\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 = 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 fileName: 'table.csv',\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 onStateUpdated: (event) => {\n gridOptions.value.initialState = gridState.value = makePartialState(\n event.state,\n );\n if (!isJsonEqual(event.sources, ['columnSizing'])) {\n event.api.autoSizeColumns(\n event.api.getAllDisplayedColumns().filter(\n (column) => column.getColId() !== PlAgDataTableRowNumberColId,\n ),\n );\n }\n },\n onGridPreDestroyed: (event) => {\n gridOptions.value.initialState = gridState.value = makePartialState(\n event.api.getState(),\n );\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 orderedColIds: PlTableColumnIdJson[];\n } | undefined,\n sort: state.sort as {\n sortModel: {\n colId: PlTableColumnIdJson;\n sort: 'asc' | 'desc';\n }[];\n } | undefined,\n columnVisibility: state.columnVisibility as {\n hiddenColIds: PlTableColumnIdJson[];\n } | undefined,\n };\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 (!isJsonEqual(gridState, {}) && !isJsonEqual(gridState, selfState)) {\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\n .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\n .map((key) => canonicalizeJson<PlTableRowId>(mapping.map((index) => key[index])));\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\n .map((def) => parseJson(def.colId! satisfies string as PlTableColumnIdJson).labeled);\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 = (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\n ? state[0].rowCount\n : 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:\n props.cellButtonInvokeRowsOnDoubleClick,\n trigger: (key?: PTableKey) => emit('cellButtonClicked', key),\n } satisfies PlAgCellButtonAxisParams,\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\n .map((key) => mapping.map((index) => key[index]));\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 }).catch((error: unknown) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n if (isAbortError(error)) return;\n console.trace(error);\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: [\n { statusPanel: PlAgRowCount, align: 'left' },\n ],\n },\n });\n});\n</script>\n\n<template>\n <div :class=\"$style.container\">\n <PlAgGridColumnManager\n v-if=\"gridApi && !disableColumnsPanel\"\n :api=\"gridApi\"\n />\n <PlTableFiltersV2\n v-if=\"!disableFiltersPanel\"\n v-model=\"filtersState\"\n :settings=\"filtersSettings\"\n />\n <PlAgCsvExporter\n v-if=\"gridApi && showExportButton\"\n :api=\"gridApi\"\n />\n <PlAgDataTableSheets\n v-model=\"sheetsState\"\n :settings=\"sheetsSettings\"\n >\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","gridState","sheetsState","filtersState","useTableState","sheetsSettings","computed","settingsCopy","filterableColumns","ref","filtersSettings","columns","column","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","makePartialState","PlAgDataTableRowNumberColId","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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DA,UAAMA,KAAaC,iBAElB,GAEKC,IAAYD,EAA6BE,GAAC,WAAW,GACrDC,IAAQD,GA4DR,EAAE,UAAAE,EAAA,IAAaC,GAAOF,CAAK,GAC3BG,IAAOC,IAMP,EAAE,WAAAC,GAAW,aAAAC,GAAa,cAAAC,MAAiBC,GAAcZ,IAAYK,CAAQ,GAE7EQ,KAAiBC,EAAoC,MAAM;AAC/D,YAAMC,IAAe,EAAE,GAAGV,EAAS,MAAA;AACnC,aAAOU,EAAa,aAAa,OAC7B;AAAA,QACE,QAAQA,EAAa,UAAU,CAAA;AAAA,QAC/B,aAAa,CAAC,GAAGL,EAAY,KAAK;AAAA,MAAA,IAEpC;AAAA,QACE,QAAQ,CAAA;AAAA,QACR,aAAa,CAAA;AAAA,MAAC;AAAA,IAEtB,CAAC,GAEKM,IAAoBC,EAAwB,EAAE,GAC9CC,KAAkBJ,EAAqC,MAAM;AACjE,YAAMC,IAAe,EAAE,GAAGV,EAAS,MAAA,GAC7Bc,IAAUH,EAAkB;AAYlC,aAXeD,EAAa,aAAa,QAAQI,EAAQ,SAAS,IAC9D;AAAA,QACE,SAAAA;AAAA,QACA,QAAQ,CAACC,MAA6BL,EAAa,cAAc,EAAE,UAAUA,EAAa,UAAU,QAAAK,GAAQ;AAAA,QAC5G,aAAa,CAAC,GAAGT,EAAa,KAAK;AAAA,MAAA,IAErC;AAAA,QACE,SAAS,CAAA;AAAA,QACT,QAAQ,OAAO,CAAA;AAAA,QACf,aAAa,CAAA;AAAA,MAAC;AAAA,IAGtB,CAAC,GAEKU,IAAUC,EAA+C,IAAI,GAC7DC,IAAsB,IAAIC,GAAA,GAC1BC,IAAcH,EAA4C;AAAA,MAC9D,aAAa;AAAA,MACb,6BAA6B;AAAA,MAC7B,eAAe,CAACpB,EAAU;AAAA,MAC1B,cAAcO,EAAU;AAAA,MACxB,kBAAkB,EAAE,MAAM,kBAAA;AAAA,MAC1B,cAAcP,EAAU,QACpB;AAAA,QACE,MAAM;AAAA,QACN,WAAW;AAAA,QACX,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,sBAAsB;AAAA,MAAA,IAExB;AAAA,MACJ,oBAAoB,CAACwB,MAAU;;AAC7B,YAAIxB,EAAU,OAAO;AACnB,gBAAMyB,IAAQD,EAAM,IAAI,4BAAA,GAClBE,MAAeC,IAAAF,KAAA,gBAAAA,EAAO,iBAAP,gBAAAE,EAAqB,IAAI,CAACC,MAAWC,EAAUD,CAA0B,OAAM,CAAA;AACpG,UAAKE,EAAY9B,EAAU,MAAM,cAAc0B,CAAY,MACzD1B,EAAU,QAAQ,EAAE,GAAGA,EAAU,OAAO,cAAA0B,EAAA;AAAA,QAE5C;AAAA,MACF;AAAA,MACA,oBAAoB,CAACF,MAAU;AAC7B,QAAIA,EAAM,QAAQA,EAAM,KAAK,WAASnB,EAAK,oBAAoBmB,EAAM,KAAK,OAAO;AAAA,MACnF;AAAA,MACA,eAAe;AAAA,QACb,0BAA0B;AAAA,QAC1B,cAAc,CAAC,QAAQ,OAAO,IAAI;AAAA,QAClC,sBAAsBtB,EAAM;AAAA,MAAA;AAAA,MAE9B,qBAAqB;AAAA,MACrB,YAAY;AAAA,QACV,cAAc;AAAA,MAAA;AAAA,MAEhB,cAAc;AAAA;AAAA;AAAA,MAGd,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,MAClB,yBAAyB;AAAA,MACzB,yBAAyB;AAAA,MACzB,uCAAuC;AAAA,MACvC,UAAU,CAAC6B,MAAWA,EAAO,KAAK;AAAA,MAClC,SAAS;AAAA,MACT,+BAA+B;AAAA,QAC7B,SAAS;AAAA,QACT,aAAa7B,EAAM;AAAA,QACnB,aAAaA,EAAM;AAAA,QACnB,cAAcA,EAAM;AAAA,MAAA;AAAA,MAEtB,yBAAyB8B;AAAAA,MACzB,wBAAwBC;AAAAA,MACxB,8BAA8B;AAAA,QAC5B,MAAM/B,EAAM;AAAA,MAAA;AAAA,MAEd,wBAAwB;AAAA,QACtB,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,UAAU;AAAA,MAAA;AAAA,MAEZ,aAAa,CAACsB,MAAU;AACtB,cAAMU,IAAMV,EAAM;AAClB,QAAAW,GAAwBD,CAAG;AAC3B,cAAME,IAAgB,CACpBC,GACAC,MACG;AACH,gBAAMC,IAAU,EAAE,GAAGhB,EAAY,MAAA;AACjC,UAAAgB,EAAQF,CAAG,IAAIC,GACff,EAAY,QAAQgB,GACpBL,EAAI,cAAcG,GAAKC,CAAK;AAAA,QAC9B,GACME,IAAoB,CAACD,MAAgC;AACzD,UAAAhB,EAAY,QAAQ;AAAA,YAClB,GAAGA,EAAY;AAAA,YACf,GAAGgB;AAAA,UAAA,GAELL,EAAI,kBAAkBK,CAAO;AAAA,QAC/B;AACA,QAAApB,EAAQ,QAAQ,IAAI,MAAMe,GAAK;AAAA,UAC7B,IAAIO,GAAQC,GAAMC,GAAU;AAC1B,oBAAQD,GAAA;AAAA,cACN,KAAK;AACH,uBAAON;AAAA,cACT,KAAK;AACH,uBAAOI;AAAA,cACT;AACE,uBAAO,QAAQ,IAAIC,GAAQC,GAAMC,CAAQ;AAAA,YAAA;AAAA,UAE/C;AAAA,QAAA,CACD;AAAA,MACH;AAAA,MACA,gBAAgB,CAACnB,MAAU;AACzB,QAAAD,EAAY,MAAM,eAAehB,EAAU,QAAQqC;AAAA,UACjDpB,EAAM;AAAA,QAAA,GAEHM,EAAYN,EAAM,SAAS,CAAC,cAAc,CAAC,KAC9CA,EAAM,IAAI;AAAA,UACRA,EAAM,IAAI,uBAAA,EAAyB;AAAA,YACjC,CAACN,MAAWA,EAAO,eAAe2B;AAAA,UAAA;AAAA,QACpC;AAAA,MAGN;AAAA,MACA,oBAAoB,CAACrB,MAAU;AAC7B,QAAAD,EAAY,MAAM,eAAehB,EAAU,QAAQqC;AAAA,UACjDpB,EAAM,IAAI,SAAA;AAAA,QAAS,GAErBL,EAAQ,QAAQ;AAAA,MAClB;AAAA,IAAA,CACD;AAGD,aAASyB,EAAiBnB,GAA4C;AACpE,aAAO;AAAA,QACL,aAAaA,EAAM;AAAA,QAGnB,MAAMA,EAAM;AAAA,QAMZ,kBAAkBA,EAAM;AAAA,MAAA;AAAA,IAI5B;AAGA,UAAMqB,IAAY/B,EAAI,CAAC;AACvB,IAAAgC;AAAA,MACE,MAAM,CAAC5B,EAAQ,OAAOZ,EAAU,KAAK;AAAA,MACrC,CAAC,CAACY,GAASZ,CAAS,MAAM;AACxB,YAAI,CAACY,KAAWA,EAAQ,cAAe;AACvC,cAAM6B,IAAYJ,EAAiBzB,EAAQ,SAAA,CAAU;AACrD,QAAI,CAACW,EAAYvB,GAAW,CAAA,CAAE,KAAK,CAACuB,EAAYvB,GAAWyC,CAAS,MAClEzB,EAAY,MAAM,eAAehB,GACjC,EAAEuC,EAAU;AAAA,MAEhB;AAAA,IAAA;AAIF,UAAMG,KAAuBrC,EAAS,MAAMV,EAAM,wBAAwB,IAAI;AAC9E,IAAA6C;AAAA,MACE,MAAM,CAAC5B,EAAQ,OAAO8B,GAAqB,KAAK;AAAA,MAChD,CAAC,CAAC9B,GAAS8B,CAAoB,MAAM;AACnC,QAAI,CAAC9B,KAAWA,EAAQ,iBACxBA,EAAQ,cAAc,iBAAiB;AAAA,UACrC,GAAGI,EAAY,MAAM;AAAA,UACrB,sBAAsB0B,KAAwB;AAAA,QAAA,CAC/C;AAAA,MACH;AAAA,IAAA,GAGFC,GAAwC;AAAA,MACtC,UAAU,OAAOC,MAAW;AAC1B,cAAMhC,IAAU,MAAME,EAAoB;AAC1C,eAAIF,EAAQ,YAAA,IAAsB,KAE3BiC,GAAkBjC,GAAS,CAACkC,MAAA;;AAAQ,iBAAAvB,GAAYH,IAAA0B,EAAI,SAAJ,gBAAA1B,EAAU,SAASwB,CAAM;AAAA,SAAC;AAAA,MACnF;AAAA,MACA,iBAAiB,OAAO,EAAE,UAAAG,GAAU,cAAA5B,QAAmB;;AACrD,cAAMP,IAAU,MAAME,EAAoB;AAC1C,YAAIF,EAAQ,YAAA,EAAe,QAAO;AAElC,cAAMoC,KAAO5B,IAAA3B,EAAU,UAAV,gBAAA2B,EAAiB;AAC9B,YAAI,CAAC4B,KAAQA,EAAK,WAAWD,EAAS,OAAQ,QAAO;AAErD,cAAME,IAAUF,EACb,IAAI,CAACG,MAAS;AACb,gBAAMC,IAAKC,EAAUF,CAAI;AACzB,iBAAOF,EAAK,UAAU,CAACK,MAASC,EAAYD,GAAMF,CAAE,CAAC;AAAA,QACvD,CAAC,GACGI,IAAa,IAAI,IAAIN,CAAO;AAClC,YAAIM,EAAW,IAAI,EAAE,KAAKA,EAAW,SAASR,EAAS,OAAQ,QAAO;AAEtE,cAAMS,IAAgBrC,EACnB,IAAI,CAACW,MAAQ2B,EAA+BR,EAAQ,IAAI,CAACS,MAAU5B,EAAI4B,CAAK,CAAC,CAAC,CAAC,GAC5EC,MAAkB/C,IAAAA,EAAQ,4BAAA,MAARA,gBAAAA,EAAuC,iBAAgB,CAAA;AAC/E,YAAI,CAACW,EAAYoC,GAAiBH,CAAa,GAAG;AAChD5C,UAAAA,EAAQ,4BAA4B;AAAA,YAClC,WAAW;AAAA,YACX,cAAc4C;AAAA,UAAA,CACf;AAGD,gBAAMI,IAAQC,GAAA,GACR,EAAE,SAAAC,GAAS,SAAAC,MAAY,QAAQ,cAAA;AACrC,UAAAH,EAAM,IAAI,MAAMpB,EAAM/C,GAAWqE,GAAS,EAAE,MAAM,GAAA,CAAM,CAAC;AACzD,cAAI;AACF,kBAAME,GAAeD,GAAS,GAAG;AAAA,UACnC,QAAQ;AACN,mBAAO;AAAA,UACT,UAAA;AACE,YAAAH,EAAM,KAAA;AAAA,UACR;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IAAA,CACD;AAED,aAASK,GACPC,GAC0D;AAC1D,YAAMC,IAAW,CACfC,MACiC,EAAE,cAAcA;AACnD,aAAKF,IACEA,EACJ,OAAOC,CAAQ,EACf,OAAO,CAACC,MAAQA,EAAI,SAASA,EAAI,UAAU9B,EAA2B,IAHjD,CAAA;AAAA,IAI1B;AAGA,IAAA+B;AAAA,MACE,MAAMrD,EAAY,MAAM;AAAA,MACxB,CAACkD,MAAe;AAEd,YADiBtE,EAAS,MAAM,aACf;AACf,UAAAW,EAAkB,QAAQ,CAAA;AAAA,aACrB;AACL,gBAAM+D,IAAcL,GAAeC,CAAU;AAC7C,UAAA3D,EAAkB,QAAQ+D,EACvB,IAAI,CAACF,MAAQ9C,EAAU8C,EAAI,KAA8C,EAAE,OAAO;AAAA,QACvF;AAAA,MACF;AAAA,MACA,EAAE,WAAW,GAAA;AAAA,IAAK;AAIpB,UAAMG,IAAmBC,EAAA;AACzB,QAAIC,IAA4C;AAChD,UAAMC,IAAalE,EAAI,CAAC;AACxB,WAAAgC;AAAA,MACE,MAAM,CAAC5B,EAAQ,OAAOhB,EAAS,KAAK;AAAA,MACpC,CAAC,CAACgB,GAAShB,CAAQ,MAAM;;AAEvB,YAAI,GAACgB,KAAWA,EAAQ,kBAEpB,CAAAW,EAAY3B,GAAU6E,CAAW,GACrC;AAAA,YAAEC,EAAW;AACb,cAAI;AAMF,gBAJA9D,EAAQ,YAAA,GACRE,EAAoB,MAAA,GAGhBlB,EAAS,aAAa,MAAM;AAC9BgB,cAAAA,EAAQ,kBAAkB;AAAA,gBACxB,SAAS;AAAA,gBACT,+BAA+B;AAAA,kBAC7B,GAAGI,EAAY,MAAM;AAAA,kBACrB,SAASpB,EAAS,UAAU,YAAY;AAAA,gBAAA;AAAA,gBAE1C,YAAY;AAAA,gBACZ,sBAAsB;AAAA,cAAA,CACvB,GACGH,EAAU,UACRA,EAAU,SAAS,CAAC8B,EAAY9B,EAAU,OAAO8E,CAAgB,MACnE9E,EAAU,QAAQ+E,EAAA,IAEpB5D,EAAQ,4BAA4B;AAAA,gBAClC,WAAW;AAAA,gBACX,cAAc,CAAA;AAAA,cAAC,CAChB;AAEH;AAAA,YACF;AAGA,YAAIhB,EAAS,cAAa6E,KAAA,gBAAAA,EAAa,cACrC7D,EAAQ,kBAAkB;AAAA,cACxB,SAAS;AAAA,cACT,+BAA+B;AAAA,gBAC7B,GAAGI,EAAY,MAAM;AAAA,gBACrB,SAAS;AAAA,cAAA;AAAA,YACX,CACD,GACGvB,EAAU,UAASgF,KAAA,QAAAA,EAAa,cAC9BhF,EAAU,SAAS,CAAC8B,EAAY9B,EAAU,OAAO8E,CAAgB,MACnE9E,EAAU,QAAQ+E,EAAA,IAEpB5D,EAAQ,4BAA4B;AAAA,cAClC,WAAW;AAAA,cACX,cAAc,CAAA;AAAA,YAAC,CAChB;AAKL,kBAAM+D,MAAiB/E,IAAAA,EAAS,UAATA,gBAAAA,EAAgB,aAAYA,EAAS,MAAM,aAAaA,EAAS;AACxF,gBAAI,CAACA,EAAS,SAAS+E,GAAe;AACpC,oBAAMzD,IAAQN,EAAQ,6BAAA,GAChBgE,IAAW,CAACD,KAAiBzD,EAAM,SAAS,IAC9CA,EAAM,CAAC,EAAE,WACT;AACJ,qBAAON,EAAQ,kBAAkB;AAAA,gBAC/B,sBAAsB;AAAA,kBACpB,SAAS,CAACY,MAAW;AACnB,oBAAAA,EAAO,QAAQ,EAAE,SAAS,CAAA,GAAI,UAAAoD,GAAU;AAAA,kBAC1C;AAAA,gBAAA;AAAA,cACF,CACD;AAAA,YACH;AAGA,kBAAMC,IAAkBH,EAAW;AACnC,YAAAI,GAAqB;AAAA,cACnB,YAAAJ;AAAA,cACA,UAAUK,KAA0B;AAAA,cACpC,OAAOnF,EAAS;AAAA,cAChB,QAAQA,EAAS,UAAU,CAAA;AAAA,cAC3B,qBAAAkB;AAAA,cACA,eAAckE,IAAAhF,EAAU,MAAM,qBAAhB,gBAAAgF,EAAkC;AAAA,cAChD,sBAAsB;AAAA,gBACpB,yBAAyBrF,EAAM;AAAA,gBAC/B,mCACEA,EAAM;AAAA,gBACR,SAAS,CAACmC,MAAoBhC,EAAK,qBAAqBgC,CAAG;AAAA,cAAA;AAAA,YAC7D,CACD,EAAE,KAAK,CAACmD,MAAW;AAClB,kBAAIrE,EAAQ,YAAA,KAAiBiE,MAAoBH,EAAW,MAAO;AACnE,oBAAM,EAAE,UAAA3B,GAAU,GAAGf,EAAA,IAAYiD;AAIjC,kBAHArE,EAAQ,kBAAkB;AAAA,gBACxB,GAAGoB;AAAA,cAAA,CACJ,GACGvC,EAAU,OAAO;AAEnB,sBAAM,EAAE,UAAUyF,GAAa,cAAcvB,EAAA,IAAoBlE,EAAU;AAC3E,oBAAI,CAAC8B,EAAY2D,GAAanC,CAAQ,GAAG;AACvC,sBAAI,CAACmC,KAAenC,EAAS,WAAWmC,EAAY,QAAQ;AAC1D,0BAAMC,IAAiC,EAAE,UAAApC,GAAU,cAAc,CAAA,EAAC;AAClE,2BAAKxB,EAAY9B,EAAU,OAAO0F,CAAY,MAC5C1F,EAAU,QAAQ0F,IAEbvE,EAAQ,4BAA4B;AAAA,sBACzC,WAAW;AAAA,sBACX,cAAc,CAAA;AAAA,oBAAC,CAChB;AAAA,kBACH;AAEA,wBAAMqC,IAAUiC,EACb,IAAI9B,CAAS,EACb,IAAI,CAACD,MAAOJ,EAAS,UAAU,CAACM,MAASC,EAAYD,GAAMF,CAAE,CAAC,CAAC,GAC5DI,IAAa,IAAI,IAAIN,CAAO;AAClC,sBAAIM,EAAW,IAAI,EAAE,KAAKA,EAAW,SAASR,EAAS,QAAQ;AAC7D,0BAAMoC,IAAiC,EAAE,UAAApC,GAAU,cAAc,CAAA,EAAC;AAClE,2BAAKxB,EAAY9B,EAAU,OAAO0F,CAAY,MAC5C1F,EAAU,QAAQ0F,IAEbvE,EAAQ,4BAA4B;AAAA,sBACzC,WAAW;AAAA,sBACX,cAAc,CAAA;AAAA,oBAAC,CAChB;AAAA,kBACH;AAEA,wBAAM4C,IAAgBG,EACnB,IAAI,CAAC7B,MAAQmB,EAAQ,IAAI,CAACS,MAAU5B,EAAI4B,CAAK,CAAC,CAAC,GAC5CyB,IAAiC,EAAE,UAAApC,GAAU,cAAcS,EAAA;AACjE,yBAAKjC,EAAY9B,EAAU,OAAO0F,CAAY,MAC5C1F,EAAU,QAAQ0F,IAEbvE,EAAQ,4BAA4B;AAAA,oBACzC,WAAW;AAAA,oBACX,cAAc4C,EAAc,IAAI,CAAC1B,MAAQ2B,EAA+B3B,CAAG,CAAC;AAAA,kBAAA,CAC7E;AAAA,gBACH;AAAA,cACF;AAAA,YACF,CAAC,EAAE,MAAM,CAACsD,MAAmB;AAC3B,cAAIxE,EAAQ,YAAA,KAAiBiE,MAAoBH,EAAW,SACxDW,GAAaD,CAAK,KACtB,QAAQ,MAAMA,CAAK;AAAA,YACrB,CAAC,EAAE,QAAQ,MAAM;AACf,cAAIxE,EAAQ,YAAA,KAAiBiE,MAAoBH,EAAW,SAC5D9D,EAAQ,kBAAkB;AAAA,gBACxB,SAAS;AAAA,cAAA,CACV;AAAA,YACH,CAAC,GACDE,EAAoB,QAAQ,KAAK,MAAMhB,EAAK,iBAAiB,CAAC;AAAA,UAChE,SAASsF,GAAgB;AACvB,oBAAQ,MAAMA,CAAK;AAAA,UACrB,UAAA;AACE,YAAAX,IAAc7E;AAAAA,UAChB;AAAA;AAAA,MACF;AAAA,IAAA,GAGF4C;AAAA,MACE,OAAO;AAAA,QACL,SAAS5B,EAAQ;AAAA,QACjB,aAAajB,EAAM;AAAA,QACnB,aAAaA,EAAM;AAAA,QACnB,cAAcA,EAAM;AAAA,QACpB,YAAYA,EAAM;AAAA,MAAA;AAAA,MAEpB,CAAC,EAAE,SAAAiB,GAAS,aAAA0E,GAAa,aAAAC,GAAa,cAAAC,GAAc,YAAAC,QAAiB;AACnE,QAAI,CAAC7E,KAAWA,EAAQ,iBACxBA,EAAQ,kBAAkB;AAAA,UACxB,+BAA+B;AAAA,YAC7B,GAAGI,EAAY,MAAM;AAAA,YACrB,aAAAsE;AAAA,YACA,aAAAC;AAAA,YACA,cAAAC;AAAA,UAAA;AAAA,UAEF,8BAA8B;AAAA,YAC5B,GAAGxE,EAAY,MAAM;AAAA,YACrB,MAAMyE;AAAA,UAAA;AAAA,QACR,CACD;AAAA,MACH;AAAA,IAAA,GAGFC,GAAY,MAAM;;AAChB,MAAI,CAAC9E,EAAQ,UAASQ,IAAAR,EAAQ,UAAR,QAAAQ,EAAe,iBACrCR,EAAQ,MAAM,kBAAkB;AAAA,QAC9B,WAAWI,EAAY,MAAM,UACzB,SACA;AAAA,UACE,cAAc;AAAA,YACZ,EAAE,aAAa2E,IAAc,OAAO,OAAA;AAAA,UAAO;AAAA,QAC7C;AAAA,MACF,CACL;AAAA,IACH,CAAC,mBAICC,GA+BM,OAAA;AAAA,MA/BA,OAAKC,EAAEC,EAAAA,OAAO,SAAS;AAAA,IAAA;MAEnBlF,EAAA,UAAYlB,EAAA,4BADpBqG,EAGEC,EAAAC,EAAA,GAAA;AAAA;QADC,KAAKrF,EAAA;AAAA,MAAA;MAGClB,EAAA,wCADTqG,EAIEG,IAAA;AAAA;oBAFSF,EAAA9F,CAAA;AAAA,6DAAAA,EAAY,QAAAiG,IAAA;AAAA,QACpB,UAAU1F,GAAA;AAAA,MAAA;MAGLG,EAAA,SAAWlB,EAAA,yBADnBqG,EAGEK,IAAA;AAAA;QADC,KAAKxF,EAAA;AAAA,MAAA;MAERyF,GAUsBC,IAAA;AAAA,oBATXN,EAAA/F,CAAA;AAAA,6DAAAA,EAAW,QAAAkG,IAAA;AAAA,QACnB,UAAU/F,GAAA;AAAA,MAAA;QAEKmG,EAAAA,OAAM,eAAA;gBAAoB;AAAA,gBACxC,MAA6B;AAAA,YAA7BC,EAA6BC,EAAA,QAAA,eAAA;AAAA,UAAA;;;QAEfF,EAAAA,OAAM,cAAA;gBAAmB;AAAA,gBACvC,MAA4B;AAAA,YAA5BC,EAA4BC,EAAA,QAAA,cAAA;AAAA,UAAA;;;;YAGhCV,EAKEC,EAAAU,EAAA,GAAA;AAAA,QAJC,KAAKnE,EAAA;AAAA,QACL,OAAOyD,EAAAW,EAAA;AAAA,QACP,OAAKd,EAAEC,EAAAA,OAAO,IAAI;AAAA,QAClB,gBAAc9E,EAAA;AAAA,MAAA;;;;"}
@@ -12,6 +12,6 @@ type __VLS_Props = {
12
12
  */
13
13
  width?: string;
14
14
  };
15
- declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
15
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
16
16
  export default _default;
17
17
  //# sourceMappingURL=PlAgGridColumnManager.vue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlAgGridColumnManager.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlAgGridColumnManager/PlAgGridColumnManager.vue"],"names":[],"mappings":"AAsHA,OAAO,EAAkD,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAKlG,KAAK,WAAW,GAAG;IACjB;;;;;OAKG;IACH,GAAG,EAAE,OAAO,CAAC;IACb;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;;AA+NF,wBAOG"}
1
+ {"version":3,"file":"PlAgGridColumnManager.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlAgGridColumnManager/PlAgGridColumnManager.vue"],"names":[],"mappings":"AAoHA,OAAO,EAAkD,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAKlG,KAAK,WAAW,GAAG;IACjB;;;;;OAKG;IACH,GAAG,EAAE,OAAO,CAAC;IACb;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;;AA6NF,wBAMG"}
@@ -1,16 +1,16 @@
1
- import { defineComponent as P, toRefs as w, ref as p, watch as D, computed as T, createElementBlock as c, openBlock as u, createBlock as M, createCommentVNode as h, createVNode as m, unref as l, Teleport as N, withModifiers as B, withCtx as d, createTextVNode as C, createElementVNode as G, Fragment as E, renderList as I, normalizeClass as S, toDisplayString as x } from "vue";
1
+ import { defineComponent as w, toRefs as D, ref as p, watch as T, computed as M, createElementBlock as c, openBlock as u, Fragment as C, createBlock as h, createCommentVNode as N, createVNode as m, unref as l, Teleport as B, withModifiers as G, withCtx as d, createTextVNode as b, createElementVNode as E, renderList as I, normalizeClass as S, toDisplayString as x } from "vue";
2
2
  import { usePlBlockPageTitleTeleportTarget as A, PlBtnGhost as F, PlSlideModal as L, PlSearchField as q, PlElementList as R } from "@milaboratories/uikit";
3
3
  import { PlAgDataTableRowNumberColId as U } from "../PlAgDataTable/sources/row-number.js";
4
4
  import { useFilteredItems as $ } from "./useFilteredItems.js";
5
- const K = /* @__PURE__ */ P({
5
+ const K = /* @__PURE__ */ w({
6
6
  __name: "PlAgGridColumnManager",
7
7
  props: {
8
8
  api: {},
9
9
  width: {}
10
10
  },
11
- setup(v) {
12
- const b = v, { api: i } = w(b), n = p([]);
13
- D(
11
+ setup(f) {
12
+ const V = f, { api: i } = D(V), n = p([]);
13
+ T(
14
14
  () => i.value,
15
15
  (t) => {
16
16
  t.isDestroyed() || (t.addEventListener("displayedColumnsChanged", (o) => {
@@ -19,38 +19,38 @@ const K = /* @__PURE__ */ P({
19
19
  },
20
20
  { immediate: !0 }
21
21
  );
22
- const V = T(() => n.value.map((t) => ({
22
+ const k = M(() => n.value.map((t) => ({
23
23
  column: t,
24
24
  id: t.getId(),
25
25
  label: t.getColDef().headerName
26
- }))), s = p(""), a = p(!1), f = A("PlAgGridColumnManager"), { filteredItems: k, segments: y } = $(() => ({
27
- items: V.value,
26
+ }))), s = p(""), a = p(!1), v = A("PlAgGridColumnManager"), { filteredItems: y, segments: P } = $(() => ({
27
+ items: k.value,
28
28
  query: s.value,
29
29
  getStrings: (t) => [t.label]
30
30
  }));
31
- return (t, o) => (u(), c("div", null, [
32
- l(f) ? (u(), M(N, {
31
+ return (t, o) => (u(), c(C, null, [
32
+ l(v) ? (u(), h(B, {
33
33
  key: 0,
34
- to: l(f)
34
+ to: l(v)
35
35
  }, [
36
36
  m(l(F), {
37
37
  icon: "columns",
38
- onClick: o[0] || (o[0] = B((e) => a.value = !a.value, ["stop"]))
38
+ onClick: o[0] || (o[0] = G((e) => a.value = !a.value, ["stop"]))
39
39
  }, {
40
40
  default: d(() => [...o[3] || (o[3] = [
41
- C(" Columns ", -1)
41
+ b(" Columns ", -1)
42
42
  ])]),
43
43
  _: 1
44
44
  })
45
- ], 8, ["to"])) : h("", !0),
45
+ ], 8, ["to"])) : N("", !0),
46
46
  m(l(L), {
47
47
  modelValue: a.value,
48
48
  "onUpdate:modelValue": o[2] || (o[2] = (e) => a.value = e),
49
- width: v.width,
49
+ width: f.width,
50
50
  "close-on-outside-click": ""
51
51
  }, {
52
52
  title: d(() => [...o[4] || (o[4] = [
53
- C("Manage Columns", -1)
53
+ b("Manage Columns", -1)
54
54
  ])]),
55
55
  default: d(() => [
56
56
  m(l(q), {
@@ -59,7 +59,7 @@ const K = /* @__PURE__ */ P({
59
59
  clearable: ""
60
60
  }, null, 8, ["modelValue"]),
61
61
  m(l(R), {
62
- items: l(k),
62
+ items: l(y),
63
63
  "get-item-key": (e) => e.id,
64
64
  "is-draggable": (e) => !e.column.getColDef().lockPosition,
65
65
  "on-sort": (e, r) => {
@@ -80,8 +80,8 @@ const K = /* @__PURE__ */ P({
80
80
  "disable-removing": ""
81
81
  }, {
82
82
  "item-title": d(({ item: e }) => [
83
- G("span", null, [
84
- (u(!0), c(E, null, I(l(y).get(e.label), (r, g) => (u(), c("span", {
83
+ E("span", null, [
84
+ (u(!0), c(C, null, I(l(P).get(e.label), (r, g) => (u(), c("span", {
85
85
  key: g,
86
86
  class: S({ [t.$style.match]: r.match })
87
87
  }, x(r.value), 3))), 128))
@@ -92,7 +92,7 @@ const K = /* @__PURE__ */ P({
92
92
  ]),
93
93
  _: 1
94
94
  }, 8, ["modelValue", "width"])
95
- ]));
95
+ ], 64));
96
96
  }
97
97
  });
98
98
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"PlAgGridColumnManager.vue2.js","sources":["../../../src/components/PlAgGridColumnManager/PlAgGridColumnManager.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlBtnGhost, PlElementList, PlSearchField, PlSlideModal, usePlBlockPageTitleTeleportTarget } from '@milaboratories/uikit';\nimport { type Column, type DisplayedColumnsChangedEvent, type GridApi } from 'ag-grid-enterprise';\nimport { computed, ref, toRefs, watch } from 'vue';\nimport { PlAgDataTableRowNumberColId } from '../PlAgDataTable/sources/row-number';\nimport { useFilteredItems } from './useFilteredItems';\n\nconst props = defineProps<{\n /**\n * The GridApi is an API interface provided by the table/grid component\n * for interacting programmatically with the grid's features and functionality.\n * It allows you to control and manipulate grid behavior, access data, and\n * trigger specific actions.\n */\n api: GridApi;\n /**\n * Css Column Manager (Panel) modal width (default value is `368px`)\n */\n width?: string;\n}>();\n\nconst { api: gridApi } = toRefs(props);\n\nconst columns = ref<Column[]>([]);\nwatch(\n () => gridApi.value,\n (gridApi) => {\n if (gridApi.isDestroyed()) return;\n\n gridApi.addEventListener('displayedColumnsChanged', (event: DisplayedColumnsChangedEvent) => {\n columns.value = event.api.getAllGridColumns();\n });\n\n columns.value = gridApi.getAllGridColumns();\n if (columns.value.length > 0) {\n gridApi.moveColumns(columns.value, 0);\n }\n },\n { immediate: true },\n);\n\nconst items = computed(() => {\n return columns.value.map((col) => ({\n column: col,\n id: col.getId(),\n label: col.getColDef().headerName!,\n }));\n});\n\nconst query = ref('');\n\nconst slideModal = ref(false);\nconst teleportTarget = usePlBlockPageTitleTeleportTarget('PlAgGridColumnManager');\n\nconst { filteredItems, segments } = useFilteredItems(() => ({\n items: items.value,\n query: query.value,\n getStrings: (item) => [item.label],\n}));\n</script>\n\n<template>\n <div>\n <Teleport v-if=\"teleportTarget\" :to=\"teleportTarget\">\n <PlBtnGhost icon=\"columns\" @click.stop=\"slideModal = !slideModal\">\n Columns\n </PlBtnGhost>\n </Teleport>\n\n <PlSlideModal v-model=\"slideModal\" :width=\"width\" close-on-outside-click>\n <template #title>Manage Columns</template>\n <PlSearchField v-model=\"query\" clearable />\n <PlElementList\n :items=\"filteredItems\"\n :get-item-key=\"(item) => item.id\"\n :is-draggable=\"(item) => !item.column.getColDef().lockPosition\"\n :on-sort=\"(fromIndex, toIndex) => {\n if (!gridApi.isDestroyed()) {\n const columnToMove = columns[fromIndex];\n gridApi.moveColumns([columnToMove], toIndex);\n }\n return true; // Let PlElementList handle the visual update\n }\"\n :on-toggle=\"(item) => {\n if (!gridApi.isDestroyed()) {\n gridApi.setColumnsVisible([item.column], !item.column.isVisible());\n }\n }\"\n :is-toggled=\"(item) => !item.column.isVisible()\"\n :is-toggable=\"(item) => item.id !== PlAgDataTableRowNumberColId\"\n :is-pinned=\"(item) => !!item.column.getColDef().lockPosition\"\n :is-pinnable=\"() => false\"\n :disable-dragging=\"query.length > 0\"\n disable-removing\n >\n <template #item-title=\"{ item }\">\n <span>\n <span\n v-for=\"(segment, i) of segments.get(item.label)\"\n :key=\"i\"\n :class=\"{ [$style.match]: segment.match }\"\n >{{ segment.value }}</span>\n </span>\n </template>\n </PlElementList>\n </PlSlideModal>\n </div>\n</template>\n\n<style module>\n.match {\n background-color: var(--color-active-select);\n border-radius: 2px;\n}\n</style>\n"],"names":["props","__props","gridApi","toRefs","columns","ref","watch","event","items","computed","col","query","slideModal","teleportTarget","usePlBlockPageTitleTeleportTarget","filteredItems","segments","useFilteredItems","item","_createElementBlock","_unref","_createBlock","_Teleport","_createVNode","PlBtnGhost","_cache","_withModifiers","$event","PlSlideModal","PlSearchField","PlElementList","fromIndex","toIndex","columnToMove","PlAgDataTableRowNumberColId","_withCtx","_createElementVNode","_Fragment","_renderList","segment","i","$style","_toDisplayString"],"mappings":"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"}
1
+ {"version":3,"file":"PlAgGridColumnManager.vue2.js","sources":["../../../src/components/PlAgGridColumnManager/PlAgGridColumnManager.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlBtnGhost, PlElementList, PlSearchField, PlSlideModal, usePlBlockPageTitleTeleportTarget } from '@milaboratories/uikit';\nimport { type Column, type DisplayedColumnsChangedEvent, type GridApi } from 'ag-grid-enterprise';\nimport { computed, ref, toRefs, watch } from 'vue';\nimport { PlAgDataTableRowNumberColId } from '../PlAgDataTable/sources/row-number';\nimport { useFilteredItems } from './useFilteredItems';\n\nconst props = defineProps<{\n /**\n * The GridApi is an API interface provided by the table/grid component\n * for interacting programmatically with the grid's features and functionality.\n * It allows you to control and manipulate grid behavior, access data, and\n * trigger specific actions.\n */\n api: GridApi;\n /**\n * Css Column Manager (Panel) modal width (default value is `368px`)\n */\n width?: string;\n}>();\n\nconst { api: gridApi } = toRefs(props);\n\nconst columns = ref<Column[]>([]);\nwatch(\n () => gridApi.value,\n (gridApi) => {\n if (gridApi.isDestroyed()) return;\n\n gridApi.addEventListener('displayedColumnsChanged', (event: DisplayedColumnsChangedEvent) => {\n columns.value = event.api.getAllGridColumns();\n });\n\n columns.value = gridApi.getAllGridColumns();\n if (columns.value.length > 0) {\n gridApi.moveColumns(columns.value, 0);\n }\n },\n { immediate: true },\n);\n\nconst items = computed(() => {\n return columns.value.map((col) => ({\n column: col,\n id: col.getId(),\n label: col.getColDef().headerName!,\n }));\n});\n\nconst query = ref('');\n\nconst slideModal = ref(false);\nconst teleportTarget = usePlBlockPageTitleTeleportTarget('PlAgGridColumnManager');\n\nconst { filteredItems, segments } = useFilteredItems(() => ({\n items: items.value,\n query: query.value,\n getStrings: (item) => [item.label],\n}));\n</script>\n\n<template>\n <Teleport v-if=\"teleportTarget\" :to=\"teleportTarget\">\n <PlBtnGhost icon=\"columns\" @click.stop=\"slideModal = !slideModal\">\n Columns\n </PlBtnGhost>\n </Teleport>\n\n <PlSlideModal v-model=\"slideModal\" :width=\"width\" close-on-outside-click>\n <template #title>Manage Columns</template>\n <PlSearchField v-model=\"query\" clearable />\n <PlElementList\n :items=\"filteredItems\"\n :get-item-key=\"(item) => item.id\"\n :is-draggable=\"(item) => !item.column.getColDef().lockPosition\"\n :on-sort=\"(fromIndex, toIndex) => {\n if (!gridApi.isDestroyed()) {\n const columnToMove = columns[fromIndex];\n gridApi.moveColumns([columnToMove], toIndex);\n }\n return true; // Let PlElementList handle the visual update\n }\"\n :on-toggle=\"(item) => {\n if (!gridApi.isDestroyed()) {\n gridApi.setColumnsVisible([item.column], !item.column.isVisible());\n }\n }\"\n :is-toggled=\"(item) => !item.column.isVisible()\"\n :is-toggable=\"(item) => item.id !== PlAgDataTableRowNumberColId\"\n :is-pinned=\"(item) => !!item.column.getColDef().lockPosition\"\n :is-pinnable=\"() => false\"\n :disable-dragging=\"query.length > 0\"\n disable-removing\n >\n <template #item-title=\"{ item }\">\n <span>\n <span\n v-for=\"(segment, i) of segments.get(item.label)\"\n :key=\"i\"\n :class=\"{ [$style.match]: segment.match }\"\n >{{ segment.value }}</span>\n </span>\n </template>\n </PlElementList>\n </PlSlideModal>\n</template>\n\n<style module>\n.match {\n background-color: var(--color-active-select);\n border-radius: 2px;\n}\n</style>\n"],"names":["props","__props","gridApi","toRefs","columns","ref","watch","event","items","computed","col","query","slideModal","teleportTarget","usePlBlockPageTitleTeleportTarget","filteredItems","segments","useFilteredItems","item","_unref","_createBlock","_Teleport","_createVNode","PlBtnGhost","_cache","_withModifiers","$event","PlSlideModal","PlSearchField","PlElementList","fromIndex","toIndex","columnToMove","PlAgDataTableRowNumberColId","_withCtx","_createElementVNode","_createElementBlock","_Fragment","_renderList","segment","i","$style","_toDisplayString"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-sdk/ui-vue",
3
- "version": "1.51.0",
3
+ "version": "1.51.4",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "styles": "dist/index.js",
@@ -27,10 +27,10 @@
27
27
  "zod": "~3.23.8",
28
28
  "@zip.js/zip.js": "^2.8.2",
29
29
  "es-toolkit": "^1.39.10",
30
- "@milaboratories/ptabler-expression-js": "1.1.9",
31
30
  "@milaboratories/biowasm-tools": "2.0.0",
32
- "@platforma-sdk/model": "1.50.0",
33
- "@milaboratories/uikit": "2.9.0"
31
+ "@milaboratories/ptabler-expression-js": "1.1.9",
32
+ "@milaboratories/uikit": "2.10.0",
33
+ "@platforma-sdk/model": "1.51.2"
34
34
  },
35
35
  "devDependencies": {
36
36
  "happy-dom": "^15.11.7",
@@ -47,10 +47,10 @@
47
47
  "yarpm": "^1.2.0",
48
48
  "fast-json-patch": "^3.1.1",
49
49
  "@faker-js/faker": "^9.2.0",
50
- "@milaboratories/ts-builder": "1.2.1",
51
- "@milaboratories/build-configs": "1.2.1",
52
- "@milaboratories/helpers": "1.13.0",
53
50
  "@milaboratories/ts-configs": "1.2.0",
51
+ "@milaboratories/helpers": "1.13.0",
52
+ "@milaboratories/build-configs": "1.2.1",
53
+ "@milaboratories/ts-builder": "1.2.1",
54
54
  "@milaboratories/eslint-config": "1.0.5"
55
55
  },
56
56
  "scripts": {
@@ -19,11 +19,9 @@ const teleportTarget = usePlBlockPageTitleTeleportTarget('PlAgCsvExporter');
19
19
  </script>
20
20
 
21
21
  <template>
22
- <div>
23
- <Teleport v-if="teleportTarget" :to="teleportTarget">
24
- <PlBtnGhost :loading="exporting" icon="export" @click.stop="initiateExport">
25
- Export
26
- </PlBtnGhost>
27
- </Teleport>
28
- </div>
22
+ <Teleport v-if="teleportTarget" :to="teleportTarget">
23
+ <PlBtnGhost :loading="exporting" icon="export" @click.stop="initiateExport">
24
+ Export
25
+ </PlBtnGhost>
26
+ </Teleport>
29
27
  </template>
@@ -296,7 +296,7 @@ function makePartialState(state: GridState): PlDataTableGridStateCore {
296
296
  hiddenColIds: PlTableColumnIdJson[];
297
297
  } | undefined,
298
298
  };
299
- };
299
+ }
300
300
 
301
301
  // Reload AgGrid when new state arrives from server
302
302
  const reloadKey = ref(0);
@@ -616,10 +616,10 @@ watchEffect(() => {
616
616
  v-model="sheetsState"
617
617
  :settings="sheetsSettings"
618
618
  >
619
- <template #before>
619
+ <template v-if="$slots['before-sheets']" #before>
620
620
  <slot name="before-sheets" />
621
621
  </template>
622
- <template #after>
622
+ <template v-if="$slots['after-sheets']" #after>
623
623
  <slot name="after-sheets" />
624
624
  </template>
625
625
  </PlAgDataTableSheets>
@@ -60,51 +60,49 @@ const { filteredItems, segments } = useFilteredItems(() => ({
60
60
  </script>
61
61
 
62
62
  <template>
63
- <div>
64
- <Teleport v-if="teleportTarget" :to="teleportTarget">
65
- <PlBtnGhost icon="columns" @click.stop="slideModal = !slideModal">
66
- Columns
67
- </PlBtnGhost>
68
- </Teleport>
63
+ <Teleport v-if="teleportTarget" :to="teleportTarget">
64
+ <PlBtnGhost icon="columns" @click.stop="slideModal = !slideModal">
65
+ Columns
66
+ </PlBtnGhost>
67
+ </Teleport>
69
68
 
70
- <PlSlideModal v-model="slideModal" :width="width" close-on-outside-click>
71
- <template #title>Manage Columns</template>
72
- <PlSearchField v-model="query" clearable />
73
- <PlElementList
74
- :items="filteredItems"
75
- :get-item-key="(item) => item.id"
76
- :is-draggable="(item) => !item.column.getColDef().lockPosition"
77
- :on-sort="(fromIndex, toIndex) => {
78
- if (!gridApi.isDestroyed()) {
79
- const columnToMove = columns[fromIndex];
80
- gridApi.moveColumns([columnToMove], toIndex);
81
- }
82
- return true; // Let PlElementList handle the visual update
83
- }"
84
- :on-toggle="(item) => {
85
- if (!gridApi.isDestroyed()) {
86
- gridApi.setColumnsVisible([item.column], !item.column.isVisible());
87
- }
88
- }"
89
- :is-toggled="(item) => !item.column.isVisible()"
90
- :is-toggable="(item) => item.id !== PlAgDataTableRowNumberColId"
91
- :is-pinned="(item) => !!item.column.getColDef().lockPosition"
92
- :is-pinnable="() => false"
93
- :disable-dragging="query.length > 0"
94
- disable-removing
95
- >
96
- <template #item-title="{ item }">
97
- <span>
98
- <span
99
- v-for="(segment, i) of segments.get(item.label)"
100
- :key="i"
101
- :class="{ [$style.match]: segment.match }"
102
- >{{ segment.value }}</span>
103
- </span>
104
- </template>
105
- </PlElementList>
106
- </PlSlideModal>
107
- </div>
69
+ <PlSlideModal v-model="slideModal" :width="width" close-on-outside-click>
70
+ <template #title>Manage Columns</template>
71
+ <PlSearchField v-model="query" clearable />
72
+ <PlElementList
73
+ :items="filteredItems"
74
+ :get-item-key="(item) => item.id"
75
+ :is-draggable="(item) => !item.column.getColDef().lockPosition"
76
+ :on-sort="(fromIndex, toIndex) => {
77
+ if (!gridApi.isDestroyed()) {
78
+ const columnToMove = columns[fromIndex];
79
+ gridApi.moveColumns([columnToMove], toIndex);
80
+ }
81
+ return true; // Let PlElementList handle the visual update
82
+ }"
83
+ :on-toggle="(item) => {
84
+ if (!gridApi.isDestroyed()) {
85
+ gridApi.setColumnsVisible([item.column], !item.column.isVisible());
86
+ }
87
+ }"
88
+ :is-toggled="(item) => !item.column.isVisible()"
89
+ :is-toggable="(item) => item.id !== PlAgDataTableRowNumberColId"
90
+ :is-pinned="(item) => !!item.column.getColDef().lockPosition"
91
+ :is-pinnable="() => false"
92
+ :disable-dragging="query.length > 0"
93
+ disable-removing
94
+ >
95
+ <template #item-title="{ item }">
96
+ <span>
97
+ <span
98
+ v-for="(segment, i) of segments.get(item.label)"
99
+ :key="i"
100
+ :class="{ [$style.match]: segment.match }"
101
+ >{{ segment.value }}</span>
102
+ </span>
103
+ </template>
104
+ </PlElementList>
105
+ </PlSlideModal>
108
106
  </template>
109
107
 
110
108
  <style module>