@revolist/revogrid 4.9.41 → 4.9.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/app-globals-c0b20747.js.map +1 -1
- package/dist/cjs/{column.drag.plugin-fcd892ec.js → column.drag.plugin-a6ef25bf.js} +1034 -149
- package/dist/cjs/column.drag.plugin-a6ef25bf.js.map +1 -0
- package/dist/cjs/column.service-831e1c92.js +1321 -0
- package/dist/cjs/column.service-831e1c92.js.map +1 -0
- package/dist/cjs/{column.service-26c61ed6.js → dimension.helpers-1927ad24.js} +490 -1273
- package/dist/cjs/dimension.helpers-1927ad24.js.map +1 -0
- package/dist/cjs/{edit.utils-179c0800.js → edit.utils-e51411f6.js} +3 -3
- package/dist/cjs/{edit.utils-179c0800.js.map → edit.utils-e51411f6.js.map} +1 -1
- package/dist/cjs/{header-cell-renderer-d879d95e.js → header-cell-renderer-53ecdcdb.js} +2 -2
- package/dist/cjs/{header-cell-renderer-d879d95e.js.map → header-cell-renderer-53ecdcdb.js.map} +1 -1
- package/dist/cjs/index.cjs.js +127 -69
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/key.utils-96d0bc42.js +101 -0
- package/dist/cjs/key.utils-96d0bc42.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/revo-grid.cjs.entry.js +310 -941
- package/dist/cjs/revo-grid.cjs.entry.js.map +1 -1
- package/dist/cjs/revo-grid.cjs.js +1 -1
- package/dist/cjs/revogr-attribution_7.cjs.entry.js +100 -70
- package/dist/cjs/revogr-attribution_7.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js +11 -10
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-data_4.cjs.entry.js +88 -78
- package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-filter-panel.cjs.entry.js +33 -13
- package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +1 -1
- package/dist/cjs/{text-editor-b756d6b3.js → text-editor-1afffaf1.js} +6 -6
- package/dist/cjs/text-editor-1afffaf1.js.map +1 -0
- package/dist/cjs/{throttle-a57f51f9.js → throttle-bb713c73.js} +4 -4
- package/dist/cjs/{throttle-a57f51f9.js.map → throttle-bb713c73.js.map} +1 -1
- package/dist/cjs/{row-header-utils-c37f76e4.js → viewport.store-69b45f22.js} +15 -14
- package/dist/cjs/viewport.store-69b45f22.js.map +1 -0
- package/dist/collection/components/attribution/revogr-attribution.js +1 -1
- package/dist/collection/components/attribution/revogr-attribution.js.map +1 -1
- package/dist/collection/components/data/cell-renderer.js +11 -9
- package/dist/collection/components/data/cell-renderer.js.map +1 -1
- package/dist/collection/components/data/column.service.js +7 -19
- package/dist/collection/components/data/column.service.js.map +1 -1
- package/dist/collection/components/data/revogr-data-style.css +10 -5
- package/dist/collection/components/data/revogr-data.js +50 -28
- package/dist/collection/components/data/revogr-data.js.map +1 -1
- package/dist/collection/components/data/row-highlight.plugin.js.map +1 -1
- package/dist/collection/components/data/row-renderer.js.map +1 -1
- package/dist/collection/components/editors/revogr-edit-style.css +8 -5
- package/dist/collection/components/editors/revogr-edit.js +2 -2
- package/dist/collection/components/editors/revogr-edit.js.map +1 -1
- package/dist/collection/components/editors/text-editor.js +2 -2
- package/dist/collection/components/editors/text-editor.js.map +1 -1
- package/dist/collection/components/extra/revogr-extra.js +44 -6
- package/dist/collection/components/extra/revogr-extra.js.map +1 -1
- package/dist/collection/components/header/header-cell-renderer.js.map +1 -1
- package/dist/collection/components/header/header-renderer.js.map +1 -1
- package/dist/collection/components/header/resizable.element.js.map +1 -1
- package/dist/collection/components/header/revogr-header-style.css +8 -5
- package/dist/collection/components/header/revogr-header.js +9 -9
- package/dist/collection/components/header/revogr-header.js.map +1 -1
- package/dist/collection/components/order/order-renderer.js.map +1 -1
- package/dist/collection/components/order/revogr-order-editor.js +12 -24
- package/dist/collection/components/order/revogr-order-editor.js.map +1 -1
- package/dist/collection/components/overlay/autofill.service.js +7 -5
- package/dist/collection/components/overlay/autofill.service.js.map +1 -1
- package/dist/collection/components/overlay/keyboard.service.js +1 -4
- package/dist/collection/components/overlay/keyboard.service.js.map +1 -1
- package/dist/collection/components/overlay/revogr-overlay-selection.js +88 -72
- package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -1
- package/dist/collection/components/overlay/revogr-overlay-style.css +8 -5
- package/dist/collection/components/overlay/selection.utils.js.map +1 -1
- package/dist/collection/components/revoGrid/plugin.service.js +81 -0
- package/dist/collection/components/revoGrid/plugin.service.js.map +1 -0
- package/dist/collection/components/revoGrid/revo-grid-style.css +18 -11
- package/dist/collection/components/revoGrid/revo-grid.js +289 -140
- package/dist/collection/components/revoGrid/revo-grid.js.map +1 -1
- package/dist/collection/components/revoGrid/viewport.service.js +9 -9
- package/dist/collection/components/revoGrid/viewport.service.js.map +1 -1
- package/dist/collection/components/rowHeaders/revogr-row-headers.js +1 -1
- package/dist/collection/components/rowHeaders/revogr-row-headers.js.map +1 -1
- package/dist/collection/components/rowHeaders/row-header-render.js.map +1 -1
- package/dist/collection/components/scroll/revogr-viewport-scroll-style.css +8 -5
- package/dist/collection/components/scroll/revogr-viewport-scroll.js +26 -20
- package/dist/collection/components/scroll/revogr-viewport-scroll.js.map +1 -1
- package/dist/collection/components/scrollable/revogr-scroll-style.css +10 -7
- package/dist/collection/components/scrollable/revogr-scroll-virtual.js +10 -8
- package/dist/collection/components/scrollable/revogr-scroll-virtual.js.map +1 -1
- package/dist/collection/components/selectionFocus/revogr-focus-style.css +8 -5
- package/dist/collection/components/selectionFocus/revogr-focus.js +10 -10
- package/dist/collection/components/selectionFocus/revogr-focus.js.map +1 -1
- package/dist/collection/components/selectionTempRange/revogr-temp-range-style.css +8 -5
- package/dist/collection/components/selectionTempRange/revogr-temp-range.js +6 -6
- package/dist/collection/components/selectionTempRange/revogr-temp-range.js.map +1 -1
- package/dist/collection/components/vnode/vnode-converter.js +1 -1
- package/dist/collection/components/vnode/vnode-converter.js.map +1 -1
- package/dist/collection/components/vnode/vnode.utils.js.map +1 -1
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/plugins/add-rows-on-paste.plugin.js +40 -0
- package/dist/collection/plugins/add-rows-on-paste.plugin.js.map +1 -0
- package/dist/collection/plugins/base.plugin.js.map +1 -1
- package/dist/collection/plugins/column.auto-size.plugin.js +1 -1
- package/dist/collection/plugins/column.auto-size.plugin.js.map +1 -1
- package/dist/collection/plugins/column.stretch.plugin.js +1 -1
- package/dist/collection/plugins/column.stretch.plugin.js.map +1 -1
- package/dist/collection/plugins/export/csv.js +1 -1
- package/dist/collection/plugins/export/csv.js.map +1 -1
- package/dist/collection/plugins/export/export.plugin.js +4 -2
- package/dist/collection/plugins/export/export.plugin.js.map +1 -1
- package/dist/collection/plugins/filter/filter.indexed.js +1 -0
- package/dist/collection/plugins/filter/filter.indexed.js.map +1 -1
- package/dist/collection/plugins/filter/filter.panel.js +35 -35
- package/dist/collection/plugins/filter/filter.panel.js.map +1 -1
- package/dist/collection/plugins/filter/filter.plugin.js +117 -77
- package/dist/collection/plugins/filter/filter.plugin.js.map +1 -1
- package/dist/collection/plugins/filter/filter.style.css +19 -5
- package/dist/collection/plugins/filter/filter.types.js.map +1 -1
- package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js.map +1 -1
- package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js.map +1 -1
- package/dist/collection/plugins/groupingRow/grouping.const.js +1 -0
- package/dist/collection/plugins/groupingRow/grouping.const.js.map +1 -1
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +64 -79
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -1
- package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +3 -3
- package/dist/collection/plugins/groupingRow/grouping.row.renderer.js.map +1 -1
- package/dist/collection/plugins/groupingRow/grouping.row.types.js.map +1 -1
- package/dist/collection/plugins/groupingRow/grouping.service.js +40 -6
- package/dist/collection/plugins/groupingRow/grouping.service.js.map +1 -1
- package/dist/collection/plugins/index.js +2 -0
- package/dist/collection/plugins/index.js.map +1 -1
- package/dist/collection/plugins/moveColumn/column.drag.plugin.js +12 -6
- package/dist/collection/plugins/moveColumn/column.drag.plugin.js.map +1 -1
- package/dist/collection/plugins/sorting/sorting.func.js +42 -0
- package/dist/collection/plugins/sorting/sorting.func.js.map +1 -0
- package/dist/collection/plugins/sorting/sorting.plugin.js +71 -69
- package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -1
- package/dist/collection/plugins/sorting/sorting.types.js +2 -0
- package/dist/collection/plugins/sorting/sorting.types.js.map +1 -0
- package/dist/collection/serve/controller.js +32 -15
- package/dist/collection/serve/data.js +18 -11
- package/dist/collection/services/column.data.provider.js +5 -2
- package/dist/collection/services/column.data.provider.js.map +1 -1
- package/dist/collection/services/data.provider.js +18 -7
- package/dist/collection/services/data.provider.js.map +1 -1
- package/dist/collection/services/dimension.provider.js +32 -33
- package/dist/collection/services/dimension.provider.js.map +1 -1
- package/dist/collection/services/selection.store.connector.js +1 -1
- package/dist/collection/services/selection.store.connector.js.map +1 -1
- package/dist/collection/store/dataSource/data.proxy.js +9 -15
- package/dist/collection/store/dataSource/data.proxy.js.map +1 -1
- package/dist/collection/store/dataSource/data.store.js +1 -1
- package/dist/collection/store/dataSource/data.store.js.map +1 -1
- package/dist/collection/store/dataSource/trimmed.plugin.js +5 -8
- package/dist/collection/store/dataSource/trimmed.plugin.js.map +1 -1
- package/dist/collection/store/dimension/dimension.helpers.js +7 -9
- package/dist/collection/store/dimension/dimension.helpers.js.map +1 -1
- package/dist/collection/store/dimension/dimension.recalculate.plugin.js +35 -0
- package/dist/collection/store/dimension/dimension.recalculate.plugin.js.map +1 -0
- package/dist/collection/store/dimension/dimension.store.js +47 -67
- package/dist/collection/store/dimension/dimension.store.js.map +1 -1
- package/dist/collection/store/dimension/dimension.trim.plugin.js +61 -0
- package/dist/collection/store/dimension/dimension.trim.plugin.js.map +1 -0
- package/dist/collection/store/selection/selection.store.js +1 -1
- package/dist/collection/store/selection/selection.store.js.map +1 -1
- package/dist/collection/store/vp/viewport.store.js +4 -2
- package/dist/collection/store/vp/viewport.store.js.map +1 -1
- package/dist/collection/types/events.js +6 -2
- package/dist/collection/types/events.js.map +1 -1
- package/dist/collection/types/interfaces.js +4 -0
- package/dist/collection/types/interfaces.js.map +1 -1
- package/dist/collection/types/plugin.types.js.map +1 -1
- package/dist/collection/types/selection.js.map +1 -1
- package/dist/collection/types/viewport.interfaces.js.map +1 -1
- package/dist/collection/utils/column.utils.js +13 -3
- package/dist/collection/utils/column.utils.js.map +1 -1
- package/dist/esm/app-globals-3a760941.js.map +1 -1
- package/dist/esm/{column.drag.plugin-3cc77986.js → column.drag.plugin-50f49fa9.js} +1012 -130
- package/dist/esm/column.drag.plugin-50f49fa9.js.map +1 -0
- package/dist/esm/column.service-a6a7c415.js +1281 -0
- package/dist/esm/column.service-a6a7c415.js.map +1 -0
- package/dist/esm/{debounce-72878ced.js → debounce-b3166f78.js} +2 -2
- package/dist/esm/{debounce-72878ced.js.map → debounce-b3166f78.js.map} +1 -1
- package/dist/esm/{column.service-751345b2.js → dimension.helpers-d0d709c4.js} +450 -1234
- package/dist/esm/dimension.helpers-d0d709c4.js.map +1 -0
- package/dist/esm/{edit.utils-6fc686b9.js → edit.utils-0ae0db50.js} +2 -2
- package/dist/esm/{edit.utils-6fc686b9.js.map → edit.utils-0ae0db50.js.map} +1 -1
- package/dist/esm/{header-cell-renderer-32d2ed96.js → header-cell-renderer-36ecbdef.js} +2 -2
- package/dist/esm/{header-cell-renderer-32d2ed96.js.map → header-cell-renderer-36ecbdef.js.map} +1 -1
- package/dist/esm/index.js +52 -11
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/{key.utils-17273f42.js → key.utils-7c3218d4.js} +2 -2
- package/dist/esm/{key.utils-17273f42.js.map → key.utils-7c3218d4.js.map} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/revo-grid.entry.js +246 -877
- package/dist/esm/revo-grid.entry.js.map +1 -1
- package/dist/esm/revo-grid.js +1 -1
- package/dist/esm/revogr-attribution_7.entry.js +63 -33
- package/dist/esm/revogr-attribution_7.entry.js.map +1 -1
- package/dist/esm/revogr-clipboard_3.entry.js +7 -6
- package/dist/esm/revogr-clipboard_3.entry.js.map +1 -1
- package/dist/esm/revogr-data_4.entry.js +60 -50
- package/dist/esm/revogr-data_4.entry.js.map +1 -1
- package/dist/esm/revogr-filter-panel.entry.js +34 -14
- package/dist/esm/revogr-filter-panel.entry.js.map +1 -1
- package/dist/esm/{text-editor-901c3eb8.js → text-editor-148a17c1.js} +5 -5
- package/dist/esm/text-editor-148a17c1.js.map +1 -0
- package/dist/esm/{throttle-138d69c3.js → throttle-394e489c.js} +3 -3
- package/dist/esm/{throttle-138d69c3.js.map → throttle-394e489c.js.map} +1 -1
- package/dist/esm/{row-header-utils-3dfbb81f.js → viewport.store-afa8c4fe.js} +11 -10
- package/dist/esm/viewport.store-afa8c4fe.js.map +1 -0
- package/dist/revo-grid/app-globals-3a760941.js +8 -1
- package/dist/revo-grid/app-globals-3a760941.js.map +1 -1
- package/dist/revo-grid/column.drag.plugin-50f49fa9.js +2541 -0
- package/dist/revo-grid/column.drag.plugin-50f49fa9.js.map +1 -0
- package/dist/revo-grid/column.service-a6a7c415.js +1281 -0
- package/dist/revo-grid/column.service-a6a7c415.js.map +1 -0
- package/dist/revo-grid/debounce-b3166f78.js +495 -0
- package/dist/revo-grid/debounce-b3166f78.js.map +1 -0
- package/dist/revo-grid/dimension.helpers-d0d709c4.js +3611 -0
- package/dist/revo-grid/dimension.helpers-d0d709c4.js.map +1 -0
- package/dist/revo-grid/edit.utils-0ae0db50.js +17 -0
- package/dist/revo-grid/edit.utils-0ae0db50.js.map +1 -0
- package/dist/revo-grid/events-cf0893a3.js +38 -1
- package/dist/revo-grid/events-cf0893a3.js.map +1 -1
- package/dist/revo-grid/filter.button-d40ab17b.js +34 -1
- package/dist/revo-grid/filter.button-d40ab17b.js.map +1 -1
- package/dist/revo-grid/header-cell-renderer-36ecbdef.js +339 -0
- package/dist/revo-grid/header-cell-renderer-36ecbdef.js.map +1 -0
- package/dist/revo-grid/index-a61f225b.js +1845 -2
- package/dist/revo-grid/index-a61f225b.js.map +1 -1
- package/dist/revo-grid/index.esm.js +160 -1
- package/dist/revo-grid/index.esm.js.map +1 -1
- package/dist/revo-grid/key.utils-7c3218d4.js +89 -0
- package/dist/revo-grid/key.utils-7c3218d4.js.map +1 -0
- package/dist/revo-grid/resize-observer-83c9e167.js +501 -1
- package/dist/revo-grid/resize-observer-83c9e167.js.map +1 -1
- package/dist/revo-grid/revo-grid.entry.js +1934 -1
- package/dist/revo-grid/revo-grid.entry.js.map +1 -1
- package/dist/revo-grid/revo-grid.esm.js +21 -1
- package/dist/revo-grid/revo-grid.esm.js.map +1 -1
- package/dist/revo-grid/revogr-attribution_7.entry.js +1431 -1
- package/dist/revo-grid/revogr-attribution_7.entry.js.map +1 -1
- package/dist/revo-grid/revogr-clipboard_3.entry.js +455 -1
- package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -1
- package/dist/revo-grid/revogr-data_4.entry.js +974 -1
- package/dist/revo-grid/revogr-data_4.entry.js.map +1 -1
- package/dist/revo-grid/revogr-filter-panel.entry.js +340 -1
- package/dist/revo-grid/revogr-filter-panel.entry.js.map +1 -1
- package/dist/revo-grid/sorting.sign-1a675bf7.js +9 -1
- package/dist/revo-grid/sorting.sign-1a675bf7.js.map +1 -1
- package/dist/revo-grid/text-editor-148a17c1.js +80 -0
- package/dist/revo-grid/text-editor-148a17c1.js.map +1 -0
- package/dist/revo-grid/throttle-394e489c.js +230 -0
- package/dist/revo-grid/throttle-394e489c.js.map +1 -0
- package/dist/revo-grid/viewport.helpers-7e7f9dad.js +48 -1
- package/dist/revo-grid/viewport.helpers-7e7f9dad.js.map +1 -1
- package/dist/revo-grid/viewport.store-afa8c4fe.js +406 -0
- package/dist/revo-grid/viewport.store-afa8c4fe.js.map +1 -0
- package/dist/types/components/data/cell-renderer.d.ts +3 -5
- package/dist/types/components/data/column.service.d.ts +2 -3
- package/dist/types/components/data/revogr-data.d.ts +10 -6
- package/dist/types/components/data/row-highlight.plugin.d.ts +1 -1
- package/dist/types/components/data/row-renderer.d.ts +1 -1
- package/dist/types/components/editors/revogr-edit.d.ts +2 -2
- package/dist/types/components/editors/text-editor.d.ts +5 -6
- package/dist/types/components/extra/revogr-extra.d.ts +17 -3
- package/dist/types/components/header/header-cell-renderer.d.ts +1 -1
- package/dist/types/components/header/header-renderer.d.ts +2 -2
- package/dist/types/components/header/resizable.element.d.ts +1 -1
- package/dist/types/components/header/revogr-header.d.ts +2 -3
- package/dist/types/components/order/order-renderer.d.ts +1 -1
- package/dist/types/components/order/revogr-order-editor.d.ts +4 -10
- package/dist/types/components/overlay/autofill.service.d.ts +2 -2
- package/dist/types/components/overlay/keyboard.service.d.ts +1 -1
- package/dist/types/components/overlay/revogr-overlay-selection.d.ts +16 -13
- package/dist/types/components/overlay/selection.utils.d.ts +1 -1
- package/dist/types/components/revoGrid/plugin.service.d.ts +37 -0
- package/dist/types/components/revoGrid/revo-grid.d.ts +105 -61
- package/dist/types/components/revoGrid/viewport.service.d.ts +2 -2
- package/dist/types/components/rowHeaders/row-header-render.d.ts +2 -2
- package/dist/types/components/scroll/revogr-viewport-scroll.d.ts +2 -5
- package/dist/types/components/scrollable/revogr-scroll-virtual.d.ts +2 -3
- package/dist/types/components/selectionFocus/revogr-focus.d.ts +2 -2
- package/dist/types/components/selectionTempRange/revogr-temp-range.d.ts +2 -3
- package/dist/types/components/vnode/vnode-converter.d.ts +1 -1
- package/dist/types/components/vnode/vnode.utils.d.ts +2 -2
- package/dist/types/components.d.ts +191 -108
- package/dist/types/index.d.ts +1 -1
- package/dist/types/plugins/add-rows-on-paste.plugin.d.ts +14 -0
- package/dist/types/plugins/base.plugin.d.ts +3 -4
- package/dist/types/plugins/column.auto-size.plugin.d.ts +1 -1
- package/dist/types/plugins/column.stretch.plugin.d.ts +1 -1
- package/dist/types/plugins/export/csv.d.ts +1 -1
- package/dist/types/plugins/export/export.plugin.d.ts +4 -3
- package/dist/types/plugins/filter/filter.panel.d.ts +2 -2
- package/dist/types/plugins/filter/filter.plugin.d.ts +25 -7
- package/dist/types/plugins/filter/filter.types.d.ts +32 -10
- package/dist/types/plugins/groupingColumn/columnGroupsRenderer.d.ts +2 -2
- package/dist/types/plugins/groupingColumn/headerGroupRenderer.d.ts +3 -4
- package/dist/types/plugins/groupingRow/grouping.const.d.ts +3 -1
- package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +15 -10
- package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +38 -4
- package/dist/types/plugins/groupingRow/grouping.service.d.ts +9 -12
- package/dist/types/plugins/index.d.ts +2 -0
- package/dist/types/plugins/moveColumn/column.drag.plugin.d.ts +2 -2
- package/dist/types/plugins/sorting/sorting.func.d.ts +3 -0
- package/dist/types/plugins/sorting/sorting.plugin.d.ts +14 -13
- package/dist/types/plugins/sorting/sorting.types.d.ts +13 -0
- package/dist/types/services/column.data.provider.d.ts +5 -2
- package/dist/types/services/data.provider.d.ts +3 -1
- package/dist/types/services/dimension.provider.d.ts +9 -4
- package/dist/types/services/selection.store.connector.d.ts +4 -4
- package/dist/types/store/dataSource/data.proxy.d.ts +7 -9
- package/dist/types/store/dataSource/data.store.d.ts +2 -3
- package/dist/types/store/dataSource/trimmed.plugin.d.ts +1 -1
- package/dist/types/store/dimension/dimension.helpers.d.ts +1 -4
- package/dist/types/store/dimension/dimension.recalculate.plugin.d.ts +9 -0
- package/dist/types/store/dimension/dimension.store.d.ts +3 -2
- package/dist/types/store/dimension/dimension.trim.plugin.d.ts +13 -0
- package/dist/types/store/selection/selection.store.d.ts +1 -1
- package/dist/types/store/vp/viewport.store.d.ts +1 -1
- package/dist/types/types/events.d.ts +1 -1
- package/dist/types/types/interfaces.d.ts +36 -12
- package/dist/types/types/plugin.types.d.ts +17 -1
- package/dist/types/types/selection.d.ts +23 -17
- package/dist/types/types/viewport.interfaces.d.ts +1 -3
- package/dist/types/utils/column.utils.d.ts +1 -0
- package/hydrate/index.js +2490 -2135
- package/hydrate/index.mjs +2490 -2135
- package/package.json +20 -19
- package/readme.md +15 -17
- package/standalone/column.service.js +192 -160
- package/standalone/column.service.js.map +1 -1
- package/standalone/data.store.js +36 -25
- package/standalone/data.store.js.map +1 -1
- package/standalone/dimension.helpers.js +8 -10
- package/standalone/dimension.helpers.js.map +1 -1
- package/standalone/index.js +46 -6
- package/standalone/index.js.map +1 -1
- package/standalone/revo-grid.js +1275 -1022
- package/standalone/revo-grid.js.map +1 -1
- package/standalone/revogr-attribution2.js +1 -1
- package/standalone/revogr-attribution2.js.map +1 -1
- package/standalone/revogr-data2.js +26 -22
- package/standalone/revogr-data2.js.map +1 -1
- package/standalone/revogr-edit2.js +3 -3
- package/standalone/revogr-edit2.js.map +1 -1
- package/standalone/revogr-extra2.js +25 -4
- package/standalone/revogr-extra2.js.map +1 -1
- package/standalone/revogr-filter-panel.js +34 -14
- package/standalone/revogr-filter-panel.js.map +1 -1
- package/standalone/revogr-focus2.js +2 -1
- package/standalone/revogr-focus2.js.map +1 -1
- package/standalone/revogr-header2.js +6 -5
- package/standalone/revogr-header2.js.map +1 -1
- package/standalone/revogr-order-editor2.js +3 -0
- package/standalone/revogr-order-editor2.js.map +1 -1
- package/standalone/revogr-overlay-selection2.js +29 -17
- package/standalone/revogr-overlay-selection2.js.map +1 -1
- package/standalone/revogr-row-headers2.js +12 -9
- package/standalone/revogr-row-headers2.js.map +1 -1
- package/standalone/revogr-scroll-virtual2.js +6 -4
- package/standalone/revogr-scroll-virtual2.js.map +1 -1
- package/standalone/revogr-temp-range2.js +1 -1
- package/standalone/revogr-temp-range2.js.map +1 -1
- package/standalone/revogr-viewport-scroll2.js +27 -21
- package/standalone/revogr-viewport-scroll2.js.map +1 -1
- package/standalone/selection.utils.js +1 -0
- package/standalone/selection.utils.js.map +1 -1
- package/standalone/vnode-converter.js +1 -1
- package/standalone/vnode-converter.js.map +1 -1
- package/dist/cjs/column.drag.plugin-fcd892ec.js.map +0 -1
- package/dist/cjs/column.service-26c61ed6.js.map +0 -1
- package/dist/cjs/index-3ab26ab9.js +0 -513
- package/dist/cjs/index-3ab26ab9.js.map +0 -1
- package/dist/cjs/key.utils-f49d7bee.js +0 -101
- package/dist/cjs/key.utils-f49d7bee.js.map +0 -1
- package/dist/cjs/row-header-utils-c37f76e4.js.map +0 -1
- package/dist/cjs/text-editor-b756d6b3.js.map +0 -1
- package/dist/esm/column.drag.plugin-3cc77986.js.map +0 -1
- package/dist/esm/column.service-751345b2.js.map +0 -1
- package/dist/esm/index-1dcad6ef.js +0 -476
- package/dist/esm/index-1dcad6ef.js.map +0 -1
- package/dist/esm/row-header-utils-3dfbb81f.js.map +0 -1
- package/dist/esm/text-editor-901c3eb8.js.map +0 -1
- package/dist/revo-grid/column.drag.plugin-3cc77986.js +0 -5
- package/dist/revo-grid/column.drag.plugin-3cc77986.js.map +0 -1
- package/dist/revo-grid/column.service-751345b2.js +0 -5
- package/dist/revo-grid/column.service-751345b2.js.map +0 -1
- package/dist/revo-grid/debounce-72878ced.js +0 -5
- package/dist/revo-grid/debounce-72878ced.js.map +0 -1
- package/dist/revo-grid/edit.utils-6fc686b9.js +0 -5
- package/dist/revo-grid/edit.utils-6fc686b9.js.map +0 -1
- package/dist/revo-grid/header-cell-renderer-32d2ed96.js +0 -5
- package/dist/revo-grid/header-cell-renderer-32d2ed96.js.map +0 -1
- package/dist/revo-grid/index-1dcad6ef.js +0 -5
- package/dist/revo-grid/index-1dcad6ef.js.map +0 -1
- package/dist/revo-grid/key.utils-17273f42.js +0 -5
- package/dist/revo-grid/key.utils-17273f42.js.map +0 -1
- package/dist/revo-grid/row-header-utils-3dfbb81f.js +0 -5
- package/dist/revo-grid/row-header-utils-3dfbb81f.js.map +0 -1
- package/dist/revo-grid/text-editor-901c3eb8.js +0 -5
- package/dist/revo-grid/text-editor-901c3eb8.js.map +0 -1
- package/dist/revo-grid/throttle-138d69c3.js +0 -5
- package/dist/revo-grid/throttle-138d69c3.js.map +0 -1
- package/standalone/identity.js +0 -26
- package/standalone/identity.js.map +0 -1
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
4
|
import { h, r as registerInstance, c as createEvent, H as Host, a as getElement } from './index-a61f225b.js';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { V as ViewportStore } from './
|
|
5
|
+
import { x as reduce, r as getColumnType, s as getColumnSizes, E as EMPTY_INDEX, w as getColumnByProp, u as getColumns, F as SelectionStoreConnector } from './column.service-a6a7c415.js';
|
|
6
|
+
import { c as columnTypes, m as forEach, r as rowTypes, i as isRowType, D as DimensionStore, B as BasePlugin, G as GroupingRowPlugin, S as StretchColumn, a as isStretchPlugin, A as AutoSizeColumnPlugin, f as FilterPlugin, E as ExportFilePlugin, l as SortingPlugin, C as ColumnMovePlugin } from './column.drag.plugin-50f49fa9.js';
|
|
7
|
+
import { D as DataStore, b as getSourceItem, f as getSourceItemVirtualIndexByProp, d as setSourceByPhysicalIndex, s as setSourceByVirtualIndex, a as getVisibleSourceItem, h as gatherTrimmedItems, k as getItemByIndex, R as RESIZE_INTERVAL, u as timeout } from './dimension.helpers-d0d709c4.js';
|
|
8
|
+
import { d as debounce } from './debounce-b3166f78.js';
|
|
9
|
+
import { V as ViewportStore } from './viewport.store-afa8c4fe.js';
|
|
10
10
|
import { v as viewportDataPartition, H as HEADER_SLOT, C as CONTENT_SLOT, F as FOOTER_SLOT, D as DATA_SLOT } from './viewport.helpers-7e7f9dad.js';
|
|
11
11
|
import { g as getPropertyFromEvent } from './events-cf0893a3.js';
|
|
12
12
|
import './filter.button-d40ab17b.js';
|
|
13
|
-
import './header-cell-renderer-
|
|
13
|
+
import './header-cell-renderer-36ecbdef.js';
|
|
14
14
|
|
|
15
15
|
class ThemeCompact {
|
|
16
16
|
constructor() {
|
|
@@ -77,750 +77,6 @@ function getTheme(theme) {
|
|
|
77
77
|
return DEFAULT_THEME;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
// provide collapse data
|
|
81
|
-
function doCollapse(pIndex, source) {
|
|
82
|
-
const model = source[pIndex];
|
|
83
|
-
const collapseValue = model[PSEUDO_GROUP_ITEM_VALUE];
|
|
84
|
-
const trimmed = {};
|
|
85
|
-
let i = pIndex + 1;
|
|
86
|
-
const total = source.length;
|
|
87
|
-
while (i < total) {
|
|
88
|
-
const currentModel = source[i];
|
|
89
|
-
if (isGrouping(currentModel)) {
|
|
90
|
-
const currentValue = currentModel[PSEUDO_GROUP_ITEM_VALUE];
|
|
91
|
-
if (!currentValue.length || !currentValue.startsWith(collapseValue + ',')) {
|
|
92
|
-
break;
|
|
93
|
-
}
|
|
94
|
-
currentModel[GROUP_EXPANDED] = false;
|
|
95
|
-
}
|
|
96
|
-
trimmed[i++] = true;
|
|
97
|
-
}
|
|
98
|
-
model[GROUP_EXPANDED] = false;
|
|
99
|
-
return { trimmed };
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
*
|
|
103
|
-
* @param pIndex - physical index
|
|
104
|
-
* @param vIndex - virtual index, need to update item collection
|
|
105
|
-
* @param source - data source
|
|
106
|
-
* @param rowItemsIndexes - rgRow indexes
|
|
107
|
-
*/
|
|
108
|
-
function doExpand(vIndex, source, rowItemsIndexes) {
|
|
109
|
-
const physicalIndex = rowItemsIndexes[vIndex];
|
|
110
|
-
const model = source[physicalIndex];
|
|
111
|
-
const currentGroup = getParsedGroup(model[PSEUDO_GROUP_ITEM_ID]);
|
|
112
|
-
const trimmed = {};
|
|
113
|
-
// no group found
|
|
114
|
-
if (!currentGroup) {
|
|
115
|
-
return { trimmed };
|
|
116
|
-
}
|
|
117
|
-
const groupItems = [];
|
|
118
|
-
model[GROUP_EXPANDED] = true;
|
|
119
|
-
let i = physicalIndex + 1;
|
|
120
|
-
const total = source.length;
|
|
121
|
-
let groupLevelOnly = 0;
|
|
122
|
-
// go through all rows
|
|
123
|
-
while (i < total) {
|
|
124
|
-
const currentModel = source[i];
|
|
125
|
-
const isGroup = isGrouping(currentModel);
|
|
126
|
-
// group found
|
|
127
|
-
if (isGroup) {
|
|
128
|
-
if (!isSameGroup(currentGroup, model, currentModel)) {
|
|
129
|
-
break;
|
|
130
|
-
}
|
|
131
|
-
else if (!groupLevelOnly) {
|
|
132
|
-
// if get group first it's group only level
|
|
133
|
-
groupLevelOnly = currentModel[GROUP_DEPTH];
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
// level 0 or same depth
|
|
137
|
-
if (!groupLevelOnly || (isGroup && groupLevelOnly === currentModel[GROUP_DEPTH])) {
|
|
138
|
-
trimmed[i] = false;
|
|
139
|
-
groupItems.push(i);
|
|
140
|
-
}
|
|
141
|
-
i++;
|
|
142
|
-
}
|
|
143
|
-
const result = {
|
|
144
|
-
trimmed,
|
|
145
|
-
};
|
|
146
|
-
if (groupItems.length) {
|
|
147
|
-
const items = [...rowItemsIndexes];
|
|
148
|
-
items.splice(vIndex + 1, 0, ...groupItems);
|
|
149
|
-
result.items = items;
|
|
150
|
-
}
|
|
151
|
-
return result;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
const TRIMMED_GROUPING = 'grouping';
|
|
155
|
-
/**
|
|
156
|
-
* Prepare trimming updated indexes for grouping
|
|
157
|
-
* @param initiallyTrimed
|
|
158
|
-
* @param firstLevelMap
|
|
159
|
-
* @param secondLevelMap
|
|
160
|
-
*/
|
|
161
|
-
function processDoubleConversionTrimmed(initiallyTrimed, firstLevelMap, secondLevelMap) {
|
|
162
|
-
const trimemedOptionsToUpgrade = {};
|
|
163
|
-
/**
|
|
164
|
-
* go through all groups except grouping
|
|
165
|
-
*/
|
|
166
|
-
for (let type in initiallyTrimed) {
|
|
167
|
-
if (type === TRIMMED_GROUPING) {
|
|
168
|
-
continue;
|
|
169
|
-
}
|
|
170
|
-
const items = initiallyTrimed[type];
|
|
171
|
-
const newItems = {};
|
|
172
|
-
for (let initialIndex in items) {
|
|
173
|
-
/**
|
|
174
|
-
* if item exists we find it in collection
|
|
175
|
-
* we support 2 level of conversions
|
|
176
|
-
*/
|
|
177
|
-
let newConversionIndex = firstLevelMap[initialIndex];
|
|
178
|
-
if (secondLevelMap) {
|
|
179
|
-
newConversionIndex = secondLevelMap[newConversionIndex];
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* if item was trimmed previously
|
|
183
|
-
* trimming makes sense to apply
|
|
184
|
-
*/
|
|
185
|
-
if (items[initialIndex]) {
|
|
186
|
-
newItems[newConversionIndex] = true;
|
|
187
|
-
/**
|
|
188
|
-
* If changes present apply changes to new source
|
|
189
|
-
*/
|
|
190
|
-
if (newConversionIndex !== parseInt(initialIndex, 10)) {
|
|
191
|
-
trimemedOptionsToUpgrade[type] = newItems;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
return trimemedOptionsToUpgrade;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
class GroupingRowPlugin extends BasePlugin {
|
|
200
|
-
get hasProps() {
|
|
201
|
-
var _a, _b, _c;
|
|
202
|
-
return ((_a = this.options) === null || _a === void 0 ? void 0 : _a.props) && ((_c = (_b = this.options) === null || _b === void 0 ? void 0 : _b.props) === null || _c === void 0 ? void 0 : _c.length);
|
|
203
|
-
}
|
|
204
|
-
get store() {
|
|
205
|
-
return this.providers.data.stores[GROUPING_ROW_TYPE].store;
|
|
206
|
-
}
|
|
207
|
-
// proxy for items get
|
|
208
|
-
get rowItems() {
|
|
209
|
-
return this.store.get('items');
|
|
210
|
-
}
|
|
211
|
-
get trimmed() {
|
|
212
|
-
return this.store.get('trimmed');
|
|
213
|
-
}
|
|
214
|
-
constructor(revogrid, providers) {
|
|
215
|
-
super(revogrid, providers);
|
|
216
|
-
this.revogrid = revogrid;
|
|
217
|
-
this.providers = providers;
|
|
218
|
-
}
|
|
219
|
-
// befoce cell focus
|
|
220
|
-
onFocus(e) {
|
|
221
|
-
if (isGrouping(e.detail.model)) {
|
|
222
|
-
e.preventDefault();
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
// expand event triggered
|
|
226
|
-
onExpand({ virtualIndex }) {
|
|
227
|
-
const { source } = this.getSource();
|
|
228
|
-
let newTrimmed = this.trimmed[TRIMMED_GROUPING];
|
|
229
|
-
let i = getPhysical(this.store, virtualIndex);
|
|
230
|
-
const model = source[i];
|
|
231
|
-
const prevExpanded = model[GROUP_EXPANDED];
|
|
232
|
-
if (!prevExpanded) {
|
|
233
|
-
const { trimmed, items } = doExpand(virtualIndex, source, this.rowItems);
|
|
234
|
-
newTrimmed = Object.assign(Object.assign({}, newTrimmed), trimmed);
|
|
235
|
-
if (items) {
|
|
236
|
-
setItems(this.store, items);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
else {
|
|
240
|
-
const { trimmed } = doCollapse(i, source);
|
|
241
|
-
newTrimmed = Object.assign(Object.assign({}, newTrimmed), trimmed);
|
|
242
|
-
this.revogrid.clearFocus();
|
|
243
|
-
}
|
|
244
|
-
this.store.set('source', source);
|
|
245
|
-
this.revogrid.addTrimmed(newTrimmed, TRIMMED_GROUPING);
|
|
246
|
-
}
|
|
247
|
-
// get source based on proxy item collection to preserve rgRow order
|
|
248
|
-
getSource(withoutGrouping = false) {
|
|
249
|
-
const source = this.store.get('source');
|
|
250
|
-
const items = this.store.get('proxyItems');
|
|
251
|
-
let index = 0;
|
|
252
|
-
// order important here, expected parent is first, then others
|
|
253
|
-
return items.reduce((result, i) => {
|
|
254
|
-
const model = source[i];
|
|
255
|
-
if (!withoutGrouping) {
|
|
256
|
-
result.source.push(model);
|
|
257
|
-
return result;
|
|
258
|
-
}
|
|
259
|
-
// grouping filter
|
|
260
|
-
if (isGrouping(model)) {
|
|
261
|
-
if (model[GROUP_EXPANDED]) {
|
|
262
|
-
result.prevExpanded[model[PSEUDO_GROUP_ITEM_VALUE]] = true;
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
else {
|
|
266
|
-
result.source.push(model);
|
|
267
|
-
result.oldNewIndexes[i] = index;
|
|
268
|
-
index++;
|
|
269
|
-
}
|
|
270
|
-
return result;
|
|
271
|
-
}, {
|
|
272
|
-
source: [],
|
|
273
|
-
prevExpanded: {},
|
|
274
|
-
oldNewIndexes: {},
|
|
275
|
-
});
|
|
276
|
-
}
|
|
277
|
-
setColumnGrouping(cols) {
|
|
278
|
-
// if 0 column as holder
|
|
279
|
-
if (cols === null || cols === void 0 ? void 0 : cols.length) {
|
|
280
|
-
cols[0][PSEUDO_GROUP_COLUMN] = true;
|
|
281
|
-
return true;
|
|
282
|
-
}
|
|
283
|
-
return false;
|
|
284
|
-
}
|
|
285
|
-
setColumns({ columns }) {
|
|
286
|
-
for (let type of columnTypes) {
|
|
287
|
-
if (this.setColumnGrouping(columns[type])) {
|
|
288
|
-
break;
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
// evaluate drag between groups
|
|
293
|
-
onDrag(e) {
|
|
294
|
-
const { from, to } = e.detail;
|
|
295
|
-
const isDown = to - from >= 0;
|
|
296
|
-
const { source } = this.getSource();
|
|
297
|
-
const items = this.rowItems;
|
|
298
|
-
let i = isDown ? from : to;
|
|
299
|
-
const end = isDown ? to : from;
|
|
300
|
-
for (; i < end; i++) {
|
|
301
|
-
const model = source[items[i]];
|
|
302
|
-
const isGroup = isGrouping(model);
|
|
303
|
-
if (isGroup) {
|
|
304
|
-
e.preventDefault();
|
|
305
|
-
return;
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
beforeTrimmedApply(trimmed, type) {
|
|
310
|
-
/** Before filter apply remove grouping filtering */
|
|
311
|
-
if (type === FILTER_TRIMMED_TYPE) {
|
|
312
|
-
const source = this.store.get('source');
|
|
313
|
-
for (let index in trimmed) {
|
|
314
|
-
if (trimmed[index] && isGrouping(source[index])) {
|
|
315
|
-
trimmed[index] = false;
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
// subscribe to grid events to process them accordingly
|
|
321
|
-
subscribe() {
|
|
322
|
-
/** if grouping present and new data source arrived */
|
|
323
|
-
this.addEventListener('beforesourceset', ({ detail }) => this.onDataSet(detail));
|
|
324
|
-
this.addEventListener('beforecolumnsset', ({ detail }) => this.setColumns(detail));
|
|
325
|
-
/**
|
|
326
|
-
* filter applied need to clear grouping and apply again
|
|
327
|
-
* based on new results can be new grouping
|
|
328
|
-
*/
|
|
329
|
-
this.addEventListener('beforetrimmed', ({ detail: { trimmed, trimmedType } }) => this.beforeTrimmedApply(trimmed, trimmedType));
|
|
330
|
-
/**
|
|
331
|
-
* sorting applied need to clear grouping and apply again
|
|
332
|
-
* based on new results whole grouping order will changed
|
|
333
|
-
*/
|
|
334
|
-
this.addEventListener('aftersortingapply', () => this.doSourceUpdate(Object.assign({}, this.options)));
|
|
335
|
-
/**
|
|
336
|
-
* Apply logic for focus inside of grouping
|
|
337
|
-
* We can't focus on grouping rows, navigation only inside of groups for now
|
|
338
|
-
*/
|
|
339
|
-
this.addEventListener('beforecellfocus', e => this.onFocus(e));
|
|
340
|
-
/**
|
|
341
|
-
* Prevent rgRow drag outside the group
|
|
342
|
-
*/
|
|
343
|
-
this.addEventListener('roworderchanged', e => this.onDrag(e));
|
|
344
|
-
/**
|
|
345
|
-
* When grouping expand icon was clicked
|
|
346
|
-
*/
|
|
347
|
-
this.addEventListener(GROUP_EXPAND_EVENT, ({ detail }) => this.onExpand(detail));
|
|
348
|
-
}
|
|
349
|
-
/**
|
|
350
|
-
* Starts global source update with group clearing and applying new one
|
|
351
|
-
* Initiated when need to reapply grouping
|
|
352
|
-
*/
|
|
353
|
-
doSourceUpdate(options) {
|
|
354
|
-
var _a;
|
|
355
|
-
if (!this.hasProps) {
|
|
356
|
-
return;
|
|
357
|
-
}
|
|
358
|
-
/**
|
|
359
|
-
* Get source without grouping
|
|
360
|
-
* @param newOldIndexMap - provides us mapping with new indexes vs old indexes, we would use it for trimmed mapping
|
|
361
|
-
*/
|
|
362
|
-
const { source, prevExpanded, oldNewIndexes } = this.getSource(true);
|
|
363
|
-
/**
|
|
364
|
-
* Group again
|
|
365
|
-
* @param oldNewIndexMap - provides us mapping with new indexes vs old indexes
|
|
366
|
-
*/
|
|
367
|
-
const { sourceWithGroups, depth, trimmed, oldNewIndexMap, childrenByGroup, } = gatherGrouping(source, ((_a = this.options) === null || _a === void 0 ? void 0 : _a.props) || [], Object.assign({ prevExpanded }, options));
|
|
368
|
-
// setup source
|
|
369
|
-
this.providers.data.setData(sourceWithGroups, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, { depth, customRenderer: options === null || options === void 0 ? void 0 : options.groupLabelTemplate }, true);
|
|
370
|
-
this.updateTrimmed(trimmed, childrenByGroup, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap);
|
|
371
|
-
}
|
|
372
|
-
/**
|
|
373
|
-
* Apply grouping on data set
|
|
374
|
-
* Clear grouping from source
|
|
375
|
-
* If source came from other plugin
|
|
376
|
-
*/
|
|
377
|
-
onDataSet(data) {
|
|
378
|
-
var _a;
|
|
379
|
-
if (!this.hasProps || !(data === null || data === void 0 ? void 0 : data.source) || !data.source.length) {
|
|
380
|
-
return;
|
|
381
|
-
}
|
|
382
|
-
const source = data.source.filter(s => !isGrouping(s));
|
|
383
|
-
const expanded = this.revogrid.grouping || {};
|
|
384
|
-
const { sourceWithGroups, depth, trimmed, oldNewIndexMap, childrenByGroup, } = gatherGrouping(source, ((_a = this.options) === null || _a === void 0 ? void 0 : _a.props) || [], Object.assign({}, (expanded || {})));
|
|
385
|
-
data.source = sourceWithGroups;
|
|
386
|
-
this.providers.data.setGrouping({ depth });
|
|
387
|
-
this.updateTrimmed(trimmed, childrenByGroup, oldNewIndexMap);
|
|
388
|
-
}
|
|
389
|
-
// apply grouping
|
|
390
|
-
setGrouping(options) {
|
|
391
|
-
// unsubscribe from all events when group applied
|
|
392
|
-
this.clearSubscriptions();
|
|
393
|
-
this.options = options;
|
|
394
|
-
// clear props, no grouping exists
|
|
395
|
-
if (!options.props || !Object.keys(options.props).length) {
|
|
396
|
-
this.clearGrouping();
|
|
397
|
-
return;
|
|
398
|
-
}
|
|
399
|
-
// props exist and source inited
|
|
400
|
-
const { source } = this.getSource();
|
|
401
|
-
if (source.length) {
|
|
402
|
-
this.doSourceUpdate(Object.assign({}, options));
|
|
403
|
-
}
|
|
404
|
-
// props exist and columns inited
|
|
405
|
-
for (let t of columnTypes) {
|
|
406
|
-
if (this.setColumnGrouping(this.providers.column.getColumns(t))) {
|
|
407
|
-
this.providers.column.refreshByType(t);
|
|
408
|
-
break;
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
// if has any grouping subscribe to events again
|
|
412
|
-
this.subscribe();
|
|
413
|
-
}
|
|
414
|
-
// clear grouping
|
|
415
|
-
clearGrouping() {
|
|
416
|
-
// clear columns
|
|
417
|
-
columnTypes.forEach(t => {
|
|
418
|
-
const cols = this.providers.column.getColumns(t);
|
|
419
|
-
let deleted = false;
|
|
420
|
-
cols.forEach(c => {
|
|
421
|
-
if (isGroupingColumn(c)) {
|
|
422
|
-
delete c[PSEUDO_GROUP_COLUMN];
|
|
423
|
-
deleted = true;
|
|
424
|
-
}
|
|
425
|
-
});
|
|
426
|
-
// if column store had grouping clear and refresh
|
|
427
|
-
if (deleted) {
|
|
428
|
-
this.providers.column.refreshByType(t);
|
|
429
|
-
}
|
|
430
|
-
});
|
|
431
|
-
// clear rows
|
|
432
|
-
const { source, oldNewIndexes } = this.getSource(true);
|
|
433
|
-
this.providers.data.setData(source, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, undefined, true);
|
|
434
|
-
this.updateTrimmed(undefined, undefined, oldNewIndexes);
|
|
435
|
-
}
|
|
436
|
-
updateTrimmed(trimmedGroup = {}, _childrenByGroup = {}, firstLevelMap = {}, secondLevelMap) {
|
|
437
|
-
// map previously trimmed data
|
|
438
|
-
const trimemedOptionsToUpgrade = processDoubleConversionTrimmed(this.trimmed, firstLevelMap, secondLevelMap);
|
|
439
|
-
for (let type in trimemedOptionsToUpgrade) {
|
|
440
|
-
this.revogrid.addTrimmed(trimemedOptionsToUpgrade[type], type);
|
|
441
|
-
}
|
|
442
|
-
// const emptyGroups = this.filterOutEmptyGroups(trimemedOptionsToUpgrade, childrenByGroup);
|
|
443
|
-
// setup trimmed data for grouping
|
|
444
|
-
this.revogrid.addTrimmed(Object.assign({}, trimmedGroup), TRIMMED_GROUPING);
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
/** `Object#toString` result references. */
|
|
449
|
-
var stringTag = '[object String]';
|
|
450
|
-
|
|
451
|
-
/**
|
|
452
|
-
* Checks if `value` is classified as a `String` primitive or object.
|
|
453
|
-
*
|
|
454
|
-
* @static
|
|
455
|
-
* @since 0.1.0
|
|
456
|
-
* @memberOf _
|
|
457
|
-
* @category Lang
|
|
458
|
-
* @param {*} value The value to check.
|
|
459
|
-
* @returns {boolean} Returns `true` if `value` is a string, else `false`.
|
|
460
|
-
* @example
|
|
461
|
-
*
|
|
462
|
-
* _.isString('abc');
|
|
463
|
-
* // => true
|
|
464
|
-
*
|
|
465
|
-
* _.isString(1);
|
|
466
|
-
* // => false
|
|
467
|
-
*/
|
|
468
|
-
function isString(value) {
|
|
469
|
-
return typeof value == 'string' ||
|
|
470
|
-
(!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
/**
|
|
474
|
-
* Gets the size of an ASCII `string`.
|
|
475
|
-
*
|
|
476
|
-
* @private
|
|
477
|
-
* @param {string} string The string inspect.
|
|
478
|
-
* @returns {number} Returns the string size.
|
|
479
|
-
*/
|
|
480
|
-
var asciiSize = baseProperty('length');
|
|
481
|
-
|
|
482
|
-
const asciiSize$1 = asciiSize;
|
|
483
|
-
|
|
484
|
-
/** Used to compose unicode character classes. */
|
|
485
|
-
var rsAstralRange$1 = '\\ud800-\\udfff',
|
|
486
|
-
rsComboMarksRange$1 = '\\u0300-\\u036f',
|
|
487
|
-
reComboHalfMarksRange$1 = '\\ufe20-\\ufe2f',
|
|
488
|
-
rsComboSymbolsRange$1 = '\\u20d0-\\u20ff',
|
|
489
|
-
rsComboRange$1 = rsComboMarksRange$1 + reComboHalfMarksRange$1 + rsComboSymbolsRange$1,
|
|
490
|
-
rsVarRange$1 = '\\ufe0e\\ufe0f';
|
|
491
|
-
|
|
492
|
-
/** Used to compose unicode capture groups. */
|
|
493
|
-
var rsZWJ$1 = '\\u200d';
|
|
494
|
-
|
|
495
|
-
/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
|
|
496
|
-
var reHasUnicode = RegExp('[' + rsZWJ$1 + rsAstralRange$1 + rsComboRange$1 + rsVarRange$1 + ']');
|
|
497
|
-
|
|
498
|
-
/**
|
|
499
|
-
* Checks if `string` contains Unicode symbols.
|
|
500
|
-
*
|
|
501
|
-
* @private
|
|
502
|
-
* @param {string} string The string to inspect.
|
|
503
|
-
* @returns {boolean} Returns `true` if a symbol is found, else `false`.
|
|
504
|
-
*/
|
|
505
|
-
function hasUnicode(string) {
|
|
506
|
-
return reHasUnicode.test(string);
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
/** Used to compose unicode character classes. */
|
|
510
|
-
var rsAstralRange = '\\ud800-\\udfff',
|
|
511
|
-
rsComboMarksRange = '\\u0300-\\u036f',
|
|
512
|
-
reComboHalfMarksRange = '\\ufe20-\\ufe2f',
|
|
513
|
-
rsComboSymbolsRange = '\\u20d0-\\u20ff',
|
|
514
|
-
rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
|
|
515
|
-
rsVarRange = '\\ufe0e\\ufe0f';
|
|
516
|
-
|
|
517
|
-
/** Used to compose unicode capture groups. */
|
|
518
|
-
var rsAstral = '[' + rsAstralRange + ']',
|
|
519
|
-
rsCombo = '[' + rsComboRange + ']',
|
|
520
|
-
rsFitz = '\\ud83c[\\udffb-\\udfff]',
|
|
521
|
-
rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
|
|
522
|
-
rsNonAstral = '[^' + rsAstralRange + ']',
|
|
523
|
-
rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
|
|
524
|
-
rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
|
|
525
|
-
rsZWJ = '\\u200d';
|
|
526
|
-
|
|
527
|
-
/** Used to compose unicode regexes. */
|
|
528
|
-
var reOptMod = rsModifier + '?',
|
|
529
|
-
rsOptVar = '[' + rsVarRange + ']?',
|
|
530
|
-
rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
|
|
531
|
-
rsSeq = rsOptVar + reOptMod + rsOptJoin,
|
|
532
|
-
rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
|
|
533
|
-
|
|
534
|
-
/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
|
|
535
|
-
var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
|
|
536
|
-
|
|
537
|
-
/**
|
|
538
|
-
* Gets the size of a Unicode `string`.
|
|
539
|
-
*
|
|
540
|
-
* @private
|
|
541
|
-
* @param {string} string The string inspect.
|
|
542
|
-
* @returns {number} Returns the string size.
|
|
543
|
-
*/
|
|
544
|
-
function unicodeSize(string) {
|
|
545
|
-
var result = reUnicode.lastIndex = 0;
|
|
546
|
-
while (reUnicode.test(string)) {
|
|
547
|
-
++result;
|
|
548
|
-
}
|
|
549
|
-
return result;
|
|
550
|
-
}
|
|
551
|
-
|
|
552
|
-
/**
|
|
553
|
-
* Gets the number of symbols in `string`.
|
|
554
|
-
*
|
|
555
|
-
* @private
|
|
556
|
-
* @param {string} string The string to inspect.
|
|
557
|
-
* @returns {number} Returns the string size.
|
|
558
|
-
*/
|
|
559
|
-
function stringSize(string) {
|
|
560
|
-
return hasUnicode(string)
|
|
561
|
-
? unicodeSize(string)
|
|
562
|
-
: asciiSize$1(string);
|
|
563
|
-
}
|
|
564
|
-
|
|
565
|
-
/** `Object#toString` result references. */
|
|
566
|
-
var mapTag = '[object Map]',
|
|
567
|
-
setTag = '[object Set]';
|
|
568
|
-
|
|
569
|
-
/**
|
|
570
|
-
* Gets the size of `collection` by returning its length for array-like
|
|
571
|
-
* values or the number of own enumerable string keyed properties for objects.
|
|
572
|
-
*
|
|
573
|
-
* @static
|
|
574
|
-
* @memberOf _
|
|
575
|
-
* @since 0.1.0
|
|
576
|
-
* @category Collection
|
|
577
|
-
* @param {Array|Object|string} collection The collection to inspect.
|
|
578
|
-
* @returns {number} Returns the collection size.
|
|
579
|
-
* @example
|
|
580
|
-
*
|
|
581
|
-
* _.size([1, 2, 3]);
|
|
582
|
-
* // => 3
|
|
583
|
-
*
|
|
584
|
-
* _.size({ 'a': 1, 'b': 2 });
|
|
585
|
-
* // => 2
|
|
586
|
-
*
|
|
587
|
-
* _.size('pebbles');
|
|
588
|
-
* // => 7
|
|
589
|
-
*/
|
|
590
|
-
function size(collection) {
|
|
591
|
-
if (collection == null) {
|
|
592
|
-
return 0;
|
|
593
|
-
}
|
|
594
|
-
if (isArrayLike(collection)) {
|
|
595
|
-
return isString(collection) ? stringSize(collection) : collection.length;
|
|
596
|
-
}
|
|
597
|
-
var tag = getTag(collection);
|
|
598
|
-
if (tag == mapTag || tag == setTag) {
|
|
599
|
-
return collection.size;
|
|
600
|
-
}
|
|
601
|
-
return baseKeys(collection).length;
|
|
602
|
-
}
|
|
603
|
-
|
|
604
|
-
/**
|
|
605
|
-
* Lifecycle
|
|
606
|
-
* 1. @event `beforesorting` - Triggered when sorting just starts. Nothing has happened yet. This can be triggered from a column or from the source. If the type is from rows, the column will be undefined.
|
|
607
|
-
* 2. @method `updateColumnSorting` - Updates the column sorting icon on the grid and the column itself, but the data remains untouched.
|
|
608
|
-
* 3. @event `beforesortingapply` - Triggered before the sorting data is applied to the data source. You can prevent this event, and the data will not be sorted. This event is only called from a column sorting click.
|
|
609
|
-
* 4. @event `aftersortingapply` - Triggered after sorting has been applied and completed. This event occurs for both row and column sorting.
|
|
610
|
-
*
|
|
611
|
-
* Note: If you prevent an event, it will not proceed to the subsequent steps.
|
|
612
|
-
*/
|
|
613
|
-
class SortingPlugin extends BasePlugin {
|
|
614
|
-
runSorting(order, comparison) {
|
|
615
|
-
var _a;
|
|
616
|
-
this.sort(order, comparison);
|
|
617
|
-
(_a = this.sortingPromise) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
618
|
-
this.sortingPromise = null;
|
|
619
|
-
}
|
|
620
|
-
constructor(revogrid, providers) {
|
|
621
|
-
super(revogrid, providers);
|
|
622
|
-
this.revogrid = revogrid;
|
|
623
|
-
this.sortingPromise = null;
|
|
624
|
-
this.postponeSort = debounce((order, comparison) => this.runSorting(order, comparison), 50);
|
|
625
|
-
const beforeanysource = ({ detail: { type }, }) => {
|
|
626
|
-
// if sorting was provided - sort data
|
|
627
|
-
if (!!this.sorting && this.sortingFunc) {
|
|
628
|
-
const beforeEvent = this.emit('beforesorting', { type });
|
|
629
|
-
if (beforeEvent.defaultPrevented) {
|
|
630
|
-
return;
|
|
631
|
-
}
|
|
632
|
-
this.startSorting(this.sorting, this.sortingFunc);
|
|
633
|
-
}
|
|
634
|
-
};
|
|
635
|
-
const aftercolumnsset = ({ detail: { order }, }) => {
|
|
636
|
-
const columns = this.providers.column.getColumns();
|
|
637
|
-
const sortingFunc = {};
|
|
638
|
-
for (let prop in order) {
|
|
639
|
-
const cmp = this.getComparer(getColumnByProp(columns, prop), order[prop]);
|
|
640
|
-
sortingFunc[prop] = cmp;
|
|
641
|
-
}
|
|
642
|
-
this.runSorting(order, sortingFunc);
|
|
643
|
-
};
|
|
644
|
-
const headerclick = (e) => {
|
|
645
|
-
var _a, _b;
|
|
646
|
-
if (e.defaultPrevented) {
|
|
647
|
-
return;
|
|
648
|
-
}
|
|
649
|
-
if (!e.detail.column.sortable) {
|
|
650
|
-
return;
|
|
651
|
-
}
|
|
652
|
-
this.headerclick(e.detail.column, e.detail.index, (_b = (_a = e.detail) === null || _a === void 0 ? void 0 : _a.originalEvent) === null || _b === void 0 ? void 0 : _b.shiftKey);
|
|
653
|
-
};
|
|
654
|
-
this.addEventListener('beforeanysource', beforeanysource);
|
|
655
|
-
this.addEventListener('aftercolumnsset', aftercolumnsset);
|
|
656
|
-
this.addEventListener('beforeheaderclick', headerclick);
|
|
657
|
-
}
|
|
658
|
-
startSorting(order, sortingFunc) {
|
|
659
|
-
if (!this.sortingPromise) {
|
|
660
|
-
this.revogrid.jobsBeforeRender.push(new Promise(resolve => {
|
|
661
|
-
this.sortingPromise = resolve;
|
|
662
|
-
}));
|
|
663
|
-
}
|
|
664
|
-
this.postponeSort(order, sortingFunc);
|
|
665
|
-
}
|
|
666
|
-
getComparer(column, order) {
|
|
667
|
-
var _a;
|
|
668
|
-
const cellCmp = ((_a = column === null || column === void 0 ? void 0 : column.cellCompare) === null || _a === void 0 ? void 0 : _a.bind({ order })) || this.defaultCellCompare;
|
|
669
|
-
if (order == 'asc') {
|
|
670
|
-
return cellCmp;
|
|
671
|
-
}
|
|
672
|
-
if (order == 'desc') {
|
|
673
|
-
return this.descCellCompare(cellCmp);
|
|
674
|
-
}
|
|
675
|
-
return undefined;
|
|
676
|
-
}
|
|
677
|
-
/**
|
|
678
|
-
* Apply sorting to data on header click
|
|
679
|
-
* If additive - add to existing sorting, multiple columns can be sorted
|
|
680
|
-
*/
|
|
681
|
-
headerclick(column, index, additive) {
|
|
682
|
-
var _a, _b;
|
|
683
|
-
let order = this.getNextOrder(column.order);
|
|
684
|
-
const beforeEvent = this.emit('beforesorting', { column, order, additive });
|
|
685
|
-
if (beforeEvent.defaultPrevented) {
|
|
686
|
-
return;
|
|
687
|
-
}
|
|
688
|
-
order = beforeEvent.detail.order;
|
|
689
|
-
const newCol = this.providers.column.updateColumnSorting(beforeEvent.detail.column, index, order, additive);
|
|
690
|
-
// apply sort data
|
|
691
|
-
const beforeApplyEvent = this.emit('beforesortingapply', {
|
|
692
|
-
column: newCol,
|
|
693
|
-
order,
|
|
694
|
-
additive,
|
|
695
|
-
});
|
|
696
|
-
if (beforeApplyEvent.defaultPrevented) {
|
|
697
|
-
return;
|
|
698
|
-
}
|
|
699
|
-
order = beforeApplyEvent.detail.order;
|
|
700
|
-
const cmp = this.getComparer(column, order);
|
|
701
|
-
if (additive && this.sorting) {
|
|
702
|
-
const sorting = {};
|
|
703
|
-
const sortingFunc = {};
|
|
704
|
-
this.sorting = Object.assign(Object.assign({}, this.sorting), sorting);
|
|
705
|
-
// extend sorting function with new sorting for multiple columns sorting
|
|
706
|
-
this.sortingFunc = Object.assign(Object.assign({}, this.sortingFunc), sortingFunc);
|
|
707
|
-
if (column.prop in sorting && size(sorting) > 1 && order === undefined) {
|
|
708
|
-
delete sorting[column.prop];
|
|
709
|
-
delete sortingFunc[column.prop];
|
|
710
|
-
}
|
|
711
|
-
else {
|
|
712
|
-
sorting[column.prop] = order;
|
|
713
|
-
sortingFunc[column.prop] = cmp;
|
|
714
|
-
}
|
|
715
|
-
}
|
|
716
|
-
else {
|
|
717
|
-
if (order) {
|
|
718
|
-
// reset sorting
|
|
719
|
-
this.sorting = { [column.prop]: order };
|
|
720
|
-
this.sortingFunc = { [column.prop]: cmp };
|
|
721
|
-
}
|
|
722
|
-
else {
|
|
723
|
-
(_a = this.sorting) === null || _a === void 0 ? true : delete _a[column.prop];
|
|
724
|
-
(_b = this.sortingFunc) === null || _b === void 0 ? true : delete _b[column.prop];
|
|
725
|
-
}
|
|
726
|
-
}
|
|
727
|
-
this.startSorting(this.sorting, this.sortingFunc);
|
|
728
|
-
}
|
|
729
|
-
/**
|
|
730
|
-
* Sort items by sorting function
|
|
731
|
-
* @requires proxyItems applied to row store
|
|
732
|
-
* @requires source applied to row store
|
|
733
|
-
*
|
|
734
|
-
* @param sorting - per column sorting
|
|
735
|
-
* @param data - this.stores['rgRow'].store.get('source')
|
|
736
|
-
*/
|
|
737
|
-
sort(sorting, sortingFunc, types = rowTypes) {
|
|
738
|
-
// if no sorting - reset
|
|
739
|
-
if (!size(sorting)) {
|
|
740
|
-
this.sorting = undefined;
|
|
741
|
-
this.sortingFunc = undefined;
|
|
742
|
-
for (let type of types) {
|
|
743
|
-
const storeService = this.providers.data.stores[type];
|
|
744
|
-
// row data
|
|
745
|
-
const source = storeService.store.get('source');
|
|
746
|
-
// row indexes
|
|
747
|
-
const proxyItems = storeService.store.get('proxyItems');
|
|
748
|
-
// row indexes
|
|
749
|
-
const newItemsOrder = storeService.store.get('items'); // recover indexes range(0, source.length)
|
|
750
|
-
this.providers.dimension.updateSizesPositionByNewDataIndexes(type, newItemsOrder, proxyItems);
|
|
751
|
-
storeService.setData({ proxyItems: newItemsOrder, source: [...source] });
|
|
752
|
-
}
|
|
753
|
-
}
|
|
754
|
-
else {
|
|
755
|
-
// set sorting
|
|
756
|
-
this.sorting = sorting;
|
|
757
|
-
this.sortingFunc = sortingFunc;
|
|
758
|
-
for (let type of types) {
|
|
759
|
-
const storeService = this.providers.data.stores[type];
|
|
760
|
-
// row data
|
|
761
|
-
const source = storeService.store.get('source');
|
|
762
|
-
// row indexes
|
|
763
|
-
const proxyItems = storeService.store.get('proxyItems');
|
|
764
|
-
const newItemsOrder = this.sortIndexByItems([...proxyItems], source, sortingFunc);
|
|
765
|
-
this.providers.dimension.updateSizesPositionByNewDataIndexes(type, newItemsOrder, proxyItems);
|
|
766
|
-
storeService.setData({
|
|
767
|
-
proxyItems: newItemsOrder,
|
|
768
|
-
source: [...source],
|
|
769
|
-
});
|
|
770
|
-
}
|
|
771
|
-
}
|
|
772
|
-
this.emit('aftersortingapply');
|
|
773
|
-
}
|
|
774
|
-
defaultCellCompare(prop, a, b) {
|
|
775
|
-
var _a, _b;
|
|
776
|
-
const av = (_a = a === null || a === void 0 ? void 0 : a[prop]) === null || _a === void 0 ? void 0 : _a.toString().toLowerCase();
|
|
777
|
-
const bv = (_b = b === null || b === void 0 ? void 0 : b[prop]) === null || _b === void 0 ? void 0 : _b.toString().toLowerCase();
|
|
778
|
-
return av == bv ? 0 : av > bv ? 1 : -1;
|
|
779
|
-
}
|
|
780
|
-
descCellCompare(cmp) {
|
|
781
|
-
return (prop, a, b) => {
|
|
782
|
-
return -1 * cmp(prop, a, b);
|
|
783
|
-
};
|
|
784
|
-
}
|
|
785
|
-
sortIndexByItems(indexes, source, sortingFunc = {}) {
|
|
786
|
-
// if no sorting - return unsorted indexes
|
|
787
|
-
if (Object.entries(sortingFunc).length === 0) {
|
|
788
|
-
// Unsorted indexes
|
|
789
|
-
return [...Array(indexes.length).keys()];
|
|
790
|
-
}
|
|
791
|
-
//
|
|
792
|
-
/**
|
|
793
|
-
* go through all indexes and align in new order
|
|
794
|
-
* performs a multi-level sorting by applying multiple comparison functions to determine the order of the items based on different properties.
|
|
795
|
-
*/
|
|
796
|
-
return indexes.sort((a, b) => {
|
|
797
|
-
for (const [prop, cmp] of Object.entries(sortingFunc)) {
|
|
798
|
-
const itemA = source[a];
|
|
799
|
-
const itemB = source[b];
|
|
800
|
-
/**
|
|
801
|
-
* If the comparison function returns a non-zero value (sorted), it means that the items should be sorted based on the given property. In such a case, the function immediately returns the sorted value, indicating the order in which the items should be arranged.
|
|
802
|
-
* If none of the comparison functions result in a non-zero value, indicating that the items are equal or should remain in the same order, the function eventually returns 0.
|
|
803
|
-
*/
|
|
804
|
-
const sorted = cmp === null || cmp === void 0 ? void 0 : cmp(prop, itemA, itemB);
|
|
805
|
-
if (sorted) {
|
|
806
|
-
return sorted;
|
|
807
|
-
}
|
|
808
|
-
}
|
|
809
|
-
return 0;
|
|
810
|
-
});
|
|
811
|
-
}
|
|
812
|
-
getNextOrder(currentOrder) {
|
|
813
|
-
switch (currentOrder) {
|
|
814
|
-
case undefined:
|
|
815
|
-
return 'asc';
|
|
816
|
-
case 'asc':
|
|
817
|
-
return 'desc';
|
|
818
|
-
case 'desc':
|
|
819
|
-
return undefined;
|
|
820
|
-
}
|
|
821
|
-
}
|
|
822
|
-
}
|
|
823
|
-
|
|
824
80
|
class ColumnDataProvider {
|
|
825
81
|
get order() {
|
|
826
82
|
const order = {};
|
|
@@ -843,8 +99,8 @@ class ColumnDataProvider {
|
|
|
843
99
|
return sources;
|
|
844
100
|
}, {});
|
|
845
101
|
}
|
|
846
|
-
column(c,
|
|
847
|
-
return this.getColumn(c,
|
|
102
|
+
column(c, type = 'rgCol') {
|
|
103
|
+
return this.getColumn(c, type);
|
|
848
104
|
}
|
|
849
105
|
getColumn(virtualIndex, type) {
|
|
850
106
|
return getSourceItem(this.dataSources[type].store, virtualIndex);
|
|
@@ -876,6 +132,9 @@ class ColumnDataProvider {
|
|
|
876
132
|
refreshByType(type) {
|
|
877
133
|
this.dataSources[type].refresh();
|
|
878
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* Main method to set columns
|
|
137
|
+
*/
|
|
879
138
|
setColumns(data) {
|
|
880
139
|
columnTypes.forEach(k => {
|
|
881
140
|
// set columns data
|
|
@@ -970,6 +229,8 @@ class ColumnDataProvider {
|
|
|
970
229
|
|
|
971
230
|
/**
|
|
972
231
|
* Data source provider
|
|
232
|
+
*
|
|
233
|
+
* @dependsOn DimensionProvider
|
|
973
234
|
*/
|
|
974
235
|
class DataProvider {
|
|
975
236
|
constructor(dimensionProvider) {
|
|
@@ -992,13 +253,22 @@ class DataProvider {
|
|
|
992
253
|
return getSourceItem(store, virtualIndex);
|
|
993
254
|
}
|
|
994
255
|
changeOrder({ rowType = 'rgRow', from, to }) {
|
|
995
|
-
const
|
|
996
|
-
|
|
997
|
-
const
|
|
998
|
-
const
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
256
|
+
const storeService = this.stores[rowType];
|
|
257
|
+
// take currently visible row indexes
|
|
258
|
+
const newItemsOrder = [...storeService.store.get('proxyItems')];
|
|
259
|
+
const prevItems = storeService.store.get('items');
|
|
260
|
+
// take out
|
|
261
|
+
const toMove = newItemsOrder.splice(newItemsOrder.indexOf(prevItems[from]), // get index in proxy
|
|
262
|
+
1);
|
|
263
|
+
// insert before
|
|
264
|
+
newItemsOrder.splice(newItemsOrder.indexOf(prevItems[to]), // get index in proxy
|
|
265
|
+
0, ...toMove);
|
|
266
|
+
storeService.setData({
|
|
267
|
+
proxyItems: newItemsOrder,
|
|
268
|
+
});
|
|
269
|
+
// take currently visible row indexes
|
|
270
|
+
const newItems = storeService.store.get('items');
|
|
271
|
+
this.dimensionProvider.updateSizesPositionByNewDataIndexes(rowType, newItems, prevItems);
|
|
1002
272
|
}
|
|
1003
273
|
setCellData({ type, rowIndex, prop, val }, mutate = true) {
|
|
1004
274
|
const model = this.getModel(rowIndex, type);
|
|
@@ -1044,6 +314,8 @@ class DataProvider {
|
|
|
1044
314
|
/**
|
|
1045
315
|
* Dimension provider
|
|
1046
316
|
* Stores dimension information and custom sizes
|
|
317
|
+
*
|
|
318
|
+
* @dependsOn ViewportProvider
|
|
1047
319
|
*/
|
|
1048
320
|
class DimensionProvider {
|
|
1049
321
|
constructor(viewports, config) {
|
|
@@ -1079,7 +351,11 @@ class DimensionProvider {
|
|
|
1079
351
|
newSizes = Object.assign(Object.assign({}, oldSizes), sizes);
|
|
1080
352
|
}
|
|
1081
353
|
this.stores[type].setDimensionSize(newSizes);
|
|
1082
|
-
this.
|
|
354
|
+
this.setViewPortCoordinate({
|
|
355
|
+
coordinate: this.viewports.stores[type].lastCoordinate,
|
|
356
|
+
type,
|
|
357
|
+
force: true,
|
|
358
|
+
});
|
|
1083
359
|
}
|
|
1084
360
|
setItemCount(realCount, type) {
|
|
1085
361
|
this.viewports.stores[type].setViewport({ realCount });
|
|
@@ -1094,10 +370,14 @@ class DimensionProvider {
|
|
|
1094
370
|
const allTrimmed = gatherTrimmedItems(trimmed);
|
|
1095
371
|
const dimStoreType = this.stores[type];
|
|
1096
372
|
dimStoreType.setStore({ trimmed: allTrimmed });
|
|
1097
|
-
this.
|
|
373
|
+
this.setViewPortCoordinate({
|
|
374
|
+
coordinate: this.viewports.stores[type].lastCoordinate,
|
|
375
|
+
type,
|
|
376
|
+
force: true,
|
|
377
|
+
});
|
|
1098
378
|
}
|
|
1099
379
|
/**
|
|
1100
|
-
* Sets dimension data and
|
|
380
|
+
* Sets dimension data and viewport coordinate
|
|
1101
381
|
* @param itemCount
|
|
1102
382
|
* @param type - dimension type
|
|
1103
383
|
* @param noVirtual - disable virtual data
|
|
@@ -1111,18 +391,23 @@ class DimensionProvider {
|
|
|
1111
391
|
virtualSize: dimension.realSize,
|
|
1112
392
|
});
|
|
1113
393
|
}
|
|
1114
|
-
this.
|
|
394
|
+
this.setViewPortCoordinate({
|
|
395
|
+
coordinate: this.viewports.stores[type].lastCoordinate,
|
|
396
|
+
type,
|
|
397
|
+
});
|
|
1115
398
|
}
|
|
1116
399
|
/**
|
|
1117
400
|
* Applies new columns to the dimension provider
|
|
1118
401
|
* @param columns - new columns data
|
|
1119
402
|
* @param disableVirtualX - disable virtual data for X axis
|
|
1120
403
|
*/
|
|
1121
|
-
applyNewColumns(columns, disableVirtualX) {
|
|
404
|
+
applyNewColumns(columns, disableVirtualX, keepOld = false) {
|
|
1122
405
|
// Apply new columns to dimension provider
|
|
1123
406
|
for (let type of columnTypes) {
|
|
1124
|
-
|
|
1125
|
-
|
|
407
|
+
if (!keepOld) {
|
|
408
|
+
// Clear existing data in the dimension provider
|
|
409
|
+
this.stores[type].drop();
|
|
410
|
+
}
|
|
1126
411
|
// Get the new columns for the current type
|
|
1127
412
|
const items = columns[type];
|
|
1128
413
|
// Determine if virtual data should be disabled for the current type
|
|
@@ -1149,6 +434,10 @@ class DimensionProvider {
|
|
|
1149
434
|
});
|
|
1150
435
|
}
|
|
1151
436
|
}
|
|
437
|
+
/**
|
|
438
|
+
* Gets the full size of the grid by summing up the sizes of all dimensions
|
|
439
|
+
* Goes through all dimensions columnTypes (x) and rowTypes (y) and sums up their sizes
|
|
440
|
+
*/
|
|
1152
441
|
getFullSize() {
|
|
1153
442
|
var _a, _b;
|
|
1154
443
|
let x = 0;
|
|
@@ -1161,13 +450,6 @@ class DimensionProvider {
|
|
|
1161
450
|
}
|
|
1162
451
|
return { y, x };
|
|
1163
452
|
}
|
|
1164
|
-
updateViewport(type, force = false) {
|
|
1165
|
-
this.setViewPortCoordinate({
|
|
1166
|
-
coordinate: this.viewports.stores[type].lastCoordinate,
|
|
1167
|
-
type,
|
|
1168
|
-
force,
|
|
1169
|
-
});
|
|
1170
|
-
}
|
|
1171
453
|
setViewPortCoordinate({ coordinate, type, force = false, }) {
|
|
1172
454
|
const dimension = this.stores[type].getCurrentState();
|
|
1173
455
|
this.viewports.stores[type].setViewPortCoordinate(coordinate, dimension, force);
|
|
@@ -1193,25 +475,12 @@ class DimensionProvider {
|
|
|
1193
475
|
}
|
|
1194
476
|
updateSizesPositionByNewDataIndexes(type, newItemsOrder, prevItemsOrder = []) {
|
|
1195
477
|
// Move custom sizes to new order
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
});
|
|
1203
|
-
const newSizes = {};
|
|
1204
|
-
newItemsOrder.forEach((value, newIndex) => {
|
|
1205
|
-
const originalIndex = originalIndices.get(value);
|
|
1206
|
-
if (originalIndex !== newIndex && customSizes[originalIndex]) {
|
|
1207
|
-
newSizes[newIndex] = customSizes[originalIndex];
|
|
1208
|
-
delete customSizes[originalIndex];
|
|
1209
|
-
}
|
|
1210
|
-
});
|
|
1211
|
-
if (Object.keys(newSizes).length) {
|
|
1212
|
-
this.setCustomSizes(type, Object.assign(Object.assign({}, customSizes), newSizes));
|
|
1213
|
-
}
|
|
1214
|
-
}
|
|
478
|
+
this.stores[type].updateSizesPositionByIndexes(newItemsOrder, prevItemsOrder);
|
|
479
|
+
this.setViewPortCoordinate({
|
|
480
|
+
coordinate: this.viewports.stores[type].lastCoordinate,
|
|
481
|
+
type,
|
|
482
|
+
force: true,
|
|
483
|
+
});
|
|
1215
484
|
}
|
|
1216
485
|
}
|
|
1217
486
|
|
|
@@ -1288,15 +557,15 @@ class ViewportService {
|
|
|
1288
557
|
if (val === 'rgCol') {
|
|
1289
558
|
column.onResizeviewport = (e) => {
|
|
1290
559
|
var _a;
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
}
|
|
1294
|
-
|
|
1295
|
-
|
|
560
|
+
const vpState = {
|
|
561
|
+
clientSize: e.detail.size,
|
|
562
|
+
};
|
|
563
|
+
// virtual size will be handled by dimension provider if disabled
|
|
564
|
+
if ((e.detail.dimension === 'rgRow' && !config.disableVirtualY)
|
|
565
|
+
|| (e.detail.dimension === 'rgCol' && !config.disableVirtualX)) {
|
|
566
|
+
vpState.virtualSize = e.detail.size;
|
|
1296
567
|
}
|
|
1297
|
-
(_a = config.viewportProvider) === null || _a === void 0 ? void 0 : _a.setViewport(e.detail.dimension,
|
|
1298
|
-
virtualSize: e.detail.size,
|
|
1299
|
-
});
|
|
568
|
+
(_a = config.viewportProvider) === null || _a === void 0 ? void 0 : _a.setViewport(e.detail.dimension, vpState);
|
|
1300
569
|
};
|
|
1301
570
|
}
|
|
1302
571
|
const colData = gatherColumnData(column);
|
|
@@ -1308,7 +577,7 @@ class ViewportService {
|
|
|
1308
577
|
segmentSelection.setLastCell(rgRow.lastCell);
|
|
1309
578
|
// register selection store for Row
|
|
1310
579
|
const rowSelectionStore = this.registerRow(rgRow.position.y, rgRow.type);
|
|
1311
|
-
const rowDef = Object.assign(Object.assign({ colType: val }, rgRow), { rowSelectionStore,
|
|
580
|
+
const rowDef = Object.assign(Object.assign({ colType: val }, rgRow), { rowSelectionStore, selectionStore: segmentSelection.store, ref: (e) => config.selectionStoreConnector.registerSection(e), onSetrange: e => {
|
|
1312
581
|
segmentSelection.setRangeArea(e.detail);
|
|
1313
582
|
}, onSettemprange: e => segmentSelection.setTempArea(e.detail), onFocuscell: e => {
|
|
1314
583
|
// todo: multi focus
|
|
@@ -1695,7 +964,85 @@ class WCAGPlugin extends BasePlugin {
|
|
|
1695
964
|
}
|
|
1696
965
|
}
|
|
1697
966
|
|
|
1698
|
-
const revoGridStyleCss = ".revo-drag-icon{width:11px;opacity:0.8}.revo-drag-icon::before{content:\"::\"}.revo-alt-icon{-webkit-mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 384 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M192.4375,383 C197.424479,383 201.663411,381.254557 205.154297,377.763672 L205.154297,377.763672 L264.25,318.667969 C270.234375,312.683594 271.605794,306.075846 268.364258,298.844727 C265.122721,291.613607 259.51237,287.998047 251.533203,287.998047 L251.533203,287.998047 L213.382812,287.998047 L213.382812,212.445312 L288.935547,212.445312 L288.935547,250.595703 C288.935547,258.57487 292.551107,264.185221 299.782227,267.426758 C307.013346,270.668294 313.621094,269.296875 319.605469,263.3125 L319.605469,263.3125 L378.701172,204.216797 C382.192057,200.725911 383.9375,196.486979 383.9375,191.5 C383.9375,186.513021 382.192057,182.274089 378.701172,178.783203 L378.701172,178.783203 L319.605469,119.6875 C313.621094,114.201823 307.013346,112.955078 299.782227,115.947266 C292.551107,118.939453 288.935547,124.42513 288.935547,132.404297 L288.935547,132.404297 L288.935547,170.554688 L213.382812,170.554688 L213.382812,95.0019531 L251.533203,95.0019531 C259.51237,95.0019531 264.998047,91.3863932 267.990234,84.1552734 C270.982422,76.9241536 269.735677,70.3164062 264.25,64.3320312 L264.25,64.3320312 L205.154297,5.23632812 C201.663411,1.74544271 197.424479,0 192.4375,0 C187.450521,0 183.211589,1.74544271 179.720703,5.23632812 L179.720703,5.23632812 L120.625,64.3320312 C114.640625,70.3164062 113.269206,76.9241536 116.510742,84.1552734 C119.752279,91.3863932 125.36263,95.0019531 133.341797,95.0019531 L133.341797,95.0019531 L171.492188,95.0019531 L171.492188,170.554688 L95.9394531,170.554688 L95.9394531,132.404297 C95.9394531,124.42513 92.3238932,118.814779 85.0927734,115.573242 C77.8616536,112.331706 71.2539062,113.703125 65.2695312,119.6875 L65.2695312,119.6875 L6.17382812,178.783203 C2.68294271,182.274089 0.9375,186.513021 0.9375,191.5 C0.9375,196.486979 2.68294271,200.725911 6.17382812,204.216797 L6.17382812,204.216797 L65.2695312,263.3125 C71.2539062,268.798177 77.8616536,270.044922 85.0927734,267.052734 C92.3238932,264.060547 95.9394531,258.57487 95.9394531,250.595703 L95.9394531,250.595703 L95.9394531,212.445312 L171.492188,212.445312 L171.492188,287.998047 L133.341797,287.998047 C125.36263,287.998047 119.876953,291.613607 116.884766,298.844727 C113.892578,306.075846 115.139323,312.683594 120.625,318.667969 L120.625,318.667969 L179.720703,377.763672 C183.211589,381.254557 187.450521,383 192.4375,383 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 384 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M192.4375,383 C197.424479,383 201.663411,381.254557 205.154297,377.763672 L205.154297,377.763672 L264.25,318.667969 C270.234375,312.683594 271.605794,306.075846 268.364258,298.844727 C265.122721,291.613607 259.51237,287.998047 251.533203,287.998047 L251.533203,287.998047 L213.382812,287.998047 L213.382812,212.445312 L288.935547,212.445312 L288.935547,250.595703 C288.935547,258.57487 292.551107,264.185221 299.782227,267.426758 C307.013346,270.668294 313.621094,269.296875 319.605469,263.3125 L319.605469,263.3125 L378.701172,204.216797 C382.192057,200.725911 383.9375,196.486979 383.9375,191.5 C383.9375,186.513021 382.192057,182.274089 378.701172,178.783203 L378.701172,178.783203 L319.605469,119.6875 C313.621094,114.201823 307.013346,112.955078 299.782227,115.947266 C292.551107,118.939453 288.935547,124.42513 288.935547,132.404297 L288.935547,132.404297 L288.935547,170.554688 L213.382812,170.554688 L213.382812,95.0019531 L251.533203,95.0019531 C259.51237,95.0019531 264.998047,91.3863932 267.990234,84.1552734 C270.982422,76.9241536 269.735677,70.3164062 264.25,64.3320312 L264.25,64.3320312 L205.154297,5.23632812 C201.663411,1.74544271 197.424479,0 192.4375,0 C187.450521,0 183.211589,1.74544271 179.720703,5.23632812 L179.720703,5.23632812 L120.625,64.3320312 C114.640625,70.3164062 113.269206,76.9241536 116.510742,84.1552734 C119.752279,91.3863932 125.36263,95.0019531 133.341797,95.0019531 L133.341797,95.0019531 L171.492188,95.0019531 L171.492188,170.554688 L95.9394531,170.554688 L95.9394531,132.404297 C95.9394531,124.42513 92.3238932,118.814779 85.0927734,115.573242 C77.8616536,112.331706 71.2539062,113.703125 65.2695312,119.6875 L65.2695312,119.6875 L6.17382812,178.783203 C2.68294271,182.274089 0.9375,186.513021 0.9375,191.5 C0.9375,196.486979 2.68294271,200.725911 6.17382812,204.216797 L6.17382812,204.216797 L65.2695312,263.3125 C71.2539062,268.798177 77.8616536,270.044922 85.0927734,267.052734 C92.3238932,264.060547 95.9394531,258.57487 95.9394531,250.595703 L95.9394531,250.595703 L95.9394531,212.445312 L171.492188,212.445312 L171.492188,287.998047 L133.341797,287.998047 C125.36263,287.998047 119.876953,291.613607 116.884766,298.844727 C113.892578,306.075846 115.139323,312.683594 120.625,318.667969 L120.625,318.667969 L179.720703,377.763672 C183.211589,381.254557 187.450521,383 192.4375,383 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");width:11px;height:11px;background-size:cover;background-repeat:no-repeat}.arrow-down{position:absolute;right:5px;top:0}.arrow-down svg{width:8px;margin-top:5px;margin-left:5px;opacity:0.4}.cell-value-wrapper{margin-right:10px;overflow:hidden;text-overflow:ellipsis}.revo-button{position:relative;overflow:hidden;color:#fff;background-color:#6200ee;height:32px;line-height:32px;padding:0 15px;outline:0;border:0;border-radius:7px;box-sizing:border-box;cursor:pointer}.revo-button.green{background-color:#009037;border:1px solid #00772d}.revo-button.red{background-color:#E0662E;border:1px solid #d55920}.revo-button:disabled,.revo-button[disabled]{cursor:not-allowed !important;filter:opacity(0.35) !important}.revo-button.light{border:1px solid #cedefa;line-height:30px;background:none;color:#000;box-shadow:none}revo-grid[theme=default],revo-grid:not([theme]){border:1px solid #cecece;font-size:12px}revo-grid[theme=default] revogr-header,revo-grid:not([theme]) revogr-header{text-align:center;line-height:30px;background-color:#f8f9fa}revo-grid[theme=default] revogr-header .group-rgRow,revo-grid:not([theme]) revogr-header .group-rgRow{box-shadow:none}revo-grid[theme=default] revogr-header .header-rgRow,revo-grid[theme=default] revogr-header .group-rgRow,revo-grid:not([theme]) revogr-header .header-rgRow,revo-grid:not([theme]) revogr-header .group-rgRow{text-transform:uppercase;font-size:12px;color:#000}revo-grid[theme=default] revogr-header .header-rgRow,revo-grid:not([theme]) revogr-header .header-rgRow{height:30px;box-shadow:0 -1px 0 0 #cecece inset}revo-grid[theme=default] revogr-header .rgHeaderCell,revo-grid:not([theme]) revogr-header .rgHeaderCell{box-shadow:-1px 0 0 0 #cecece inset, 0 -1px 0 0 #cecece, 0 -1px 0 0 #cecece inset}revo-grid[theme=default] revogr-header .rgHeaderCell.focused-cell,revo-grid:not([theme]) revogr-header .rgHeaderCell.focused-cell{background:rgba(233, 234, 237, 0.5)}revo-grid[theme=default] .rowHeaders,revo-grid:not([theme]) .rowHeaders{background-color:#f8f9fa}revo-grid[theme=default] .rowHeaders revogr-data .rgCell,revo-grid:not([theme]) .rowHeaders revogr-data .rgCell{color:#000}revo-grid[theme=default] .rowHeaders revogr-data .rgCell:first-child,revo-grid:not([theme]) .rowHeaders revogr-data .rgCell:first-child{box-shadow:0 -1px 0 0 #cecece inset}revo-grid[theme=default] .rowHeaders revogr-data .rgCell:not(:first-child),revo-grid:not([theme]) .rowHeaders revogr-data .rgCell:not(:first-child){box-shadow:0 -1px 0 0 #cecece inset, 1px 0 0 0 #cecece inset}revo-grid[theme=default] .rowHeaders revogr-data .rgCell:last-child,revo-grid:not([theme]) .rowHeaders revogr-data .rgCell:last-child{border-right:1px solid #cecece}revo-grid[theme=default] .rowHeaders revogr-data revogr-header,revo-grid:not([theme]) .rowHeaders revogr-data revogr-header{box-shadow:0 -1px 0 0 #cecece inset}revo-grid[theme=default] revogr-viewport-scroll.colPinStart revogr-data .rgRow .rgCell:last-child,revo-grid:not([theme]) revogr-viewport-scroll.colPinStart revogr-data .rgRow .rgCell:last-child{box-shadow:0 -1px 0 0 #e2e3e3 inset, -1px 0 0 0 #cecece inset}revo-grid[theme=default] revogr-viewport-scroll.colPinStart .footer-wrapper revogr-data .rgRow:first-child .rgCell,revo-grid:not([theme]) revogr-viewport-scroll.colPinStart .footer-wrapper revogr-data .rgRow:first-child .rgCell{box-shadow:0 1px 0 0 #cecece inset, -1px 0 0 0 #cecece inset}revo-grid[theme=default] revogr-viewport-scroll.colPinEnd,revo-grid[theme=default] revogr-viewport-scroll.colPinEnd revogr-header,revo-grid:not([theme]) revogr-viewport-scroll.colPinEnd,revo-grid:not([theme]) revogr-viewport-scroll.colPinEnd revogr-header{box-shadow:1px 0 0 #cecece inset}revo-grid[theme=default] .footer-wrapper revogr-data .rgRow:first-child .rgCell,revo-grid:not([theme]) .footer-wrapper revogr-data .rgRow:first-child .rgCell{box-shadow:0 1px 0 0 #e2e3e3 inset, -1px 0 0 0 #e2e3e3 inset, 0 -1px 0 0 #e2e3e3 inset}revo-grid[theme=default] revogr-data,revo-grid:not([theme]) revogr-data{text-align:center}revo-grid[theme=default] revogr-data .revo-draggable,revo-grid:not([theme]) revogr-data .revo-draggable{float:left}revo-grid[theme=default] revogr-data .rgRow,revo-grid:not([theme]) revogr-data .rgRow{line-height:27px}revo-grid[theme=default] revogr-data .rgRow.focused-rgRow,revo-grid:not([theme]) revogr-data .rgRow.focused-rgRow{background-color:rgba(233, 234, 237, 0.5)}revo-grid[theme=default] revogr-data .rgCell,revo-grid:not([theme]) revogr-data .rgCell{box-shadow:0 -1px 0 0 #e2e3e3 inset, -1px 0 0 0 #e2e3e3 inset}revo-grid[theme=default] revogr-data .rgCell.disabled,revo-grid:not([theme]) revogr-data .rgCell.disabled{background-color:0 -1px 0 0 #e2e3e3 inset, -1px 0 0 0 #e2e3e3 inset}revo-grid[theme=material]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}revo-grid[theme=material] revogr-header{line-height:50px;font-weight:600;text-align:left}revo-grid[theme=material] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=material] revogr-header .header-rgRow{height:50px}revo-grid[theme=material] revogr-data{text-align:left}revo-grid[theme=material] revogr-data .rgRow{line-height:42px}revo-grid[theme=material] revogr-data .rgCell{padding:0 15px}revo-grid[theme=material] .rowHeaders{background-color:#f7faff}revo-grid[theme=material] .rowHeaders revogr-data .rgCell{color:#757a82}revo-grid[theme=material] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #f1f1f1, 0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-header .rgHeaderCell.sortable:hover{background-color:#f1f1f1}revo-grid[theme=material] revogr-header .rgHeaderCell.focused-cell{background:rgba(233, 234, 237, 0.5)}revo-grid[theme=material] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #f1f1f1}revo-grid[theme=material] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #f1f1f1}revo-grid[theme=material] revogr-data .rgRow{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-data .rgRow.focused-rgRow{background-color:rgba(233, 234, 237, 0.5)}revo-grid[theme=material] revogr-data .rgCell{color:rgba(0, 0, 0, 0.87)}revo-grid[theme=material] revogr-data .rgCell.disabled{background-color:#f7f7f7}revo-grid[theme=darkMaterial]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#d8d8d8}revo-grid[theme=darkMaterial] revogr-header{line-height:50px;font-weight:600;text-align:left}revo-grid[theme=darkMaterial] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=darkMaterial] revogr-header .header-rgRow{height:50px}revo-grid[theme=darkMaterial] revogr-data{text-align:left}revo-grid[theme=darkMaterial] revogr-data .rgRow{line-height:42px}revo-grid[theme=darkMaterial] revogr-data .rgCell{padding:0 15px}revo-grid[theme=darkMaterial] .rowHeaders{background-color:rgba(40, 39, 43, 0.8)}revo-grid[theme=darkMaterial] .rowHeaders revogr-data .rgCell{color:rgba(216, 216, 216, 0.8)}revo-grid[theme=darkMaterial] revogr-edit{background-color:#28272b}revo-grid[theme=darkMaterial] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #404040, 0 -1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-header .rgHeaderCell.sortable:hover{background-color:rgba(64, 64, 64, 0.5)}revo-grid[theme=darkMaterial] revogr-header .rgHeaderCell.focused-cell{background:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkMaterial] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #404040}revo-grid[theme=darkMaterial] revogr-data .rgCell{color:rgba(216, 216, 216, 0.9)}revo-grid[theme=darkMaterial] revogr-data .rgRow{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-data .rgRow.focused-rgRow{background-color:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkMaterial] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #404040}revo-grid[theme=darkCompact]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#d8d8d8}revo-grid[theme=darkCompact] revogr-header{line-height:45px;font-weight:600;text-align:left}revo-grid[theme=darkCompact] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=darkCompact] revogr-header .header-rgRow{height:45px}revo-grid[theme=darkCompact] revogr-data{text-align:left}revo-grid[theme=darkCompact] revogr-data .rgRow{line-height:32px}revo-grid[theme=darkCompact] revogr-data .rgCell{padding:0 15px}revo-grid[theme=darkCompact] .rowHeaders{background-color:rgba(40, 39, 43, 0.8)}revo-grid[theme=darkCompact] .rowHeaders revogr-data .rgCell{color:rgba(216, 216, 216, 0.8)}revo-grid[theme=darkCompact] revogr-edit{background-color:#28272b}revo-grid[theme=darkCompact] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #404040, 0 -1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-header .rgHeaderCell.sortable:hover{background-color:rgba(64, 64, 64, 0.5)}revo-grid[theme=darkCompact] revogr-header .rgHeaderCell.focused-cell{background:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkCompact] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #404040}revo-grid[theme=darkCompact] revogr-data .rgCell{color:rgba(216, 216, 216, 0.9)}revo-grid[theme=darkCompact] revogr-data .rgRow{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-data .rgRow.focused-rgRow{background-color:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkCompact] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #404040}revo-grid[theme=compact]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}revo-grid[theme=compact] revogr-header{line-height:45px;font-weight:600;text-align:left}revo-grid[theme=compact] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=compact] revogr-header .header-rgRow{height:45px}revo-grid[theme=compact] revogr-data{text-align:left}revo-grid[theme=compact] revogr-data .rgRow{line-height:32px}revo-grid[theme=compact] revogr-data .rgCell{padding:0 15px}revo-grid[theme=compact] .rowHeaders{background-color:#f7faff}revo-grid[theme=compact] .rowHeaders revogr-data .rgCell{color:#757a82}revo-grid[theme=compact] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #f1f1f1, 0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-header .rgHeaderCell.sortable:hover{background-color:#f1f1f1}revo-grid[theme=compact] revogr-header .rgHeaderCell.focused-cell{background:rgba(233, 234, 237, 0.5)}revo-grid[theme=compact] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #f1f1f1}revo-grid[theme=compact] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #f1f1f1}revo-grid[theme=compact] revogr-data .rgRow{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-data .rgRow.focused-rgRow{background-color:rgba(233, 234, 237, 0.5)}revo-grid[theme=compact] revogr-data .rgCell{color:rgba(0, 0, 0, 0.87)}revo-grid[theme=compact] revogr-data .rgCell.disabled{background-color:#f7f7f7}revo-grid[theme=compact] revo-dropdown .rv-dr-root{padding:0px 9px}revo-grid{display:block;height:100%;min-height:300px;font-family:Helvetica, Arial, Sans-Serif, serif;font-size:14px;position:relative;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column;width:100%;height:100%}revo-grid .attribution{position:absolute;top:0;left:0;right:0;z-index:100;width:0;height:0;border-left:4px solid rgba(38, 106, 232, 0.6);border-top:4px solid rgba(38, 106, 232, 0.6);border-bottom:4px solid transparent;border-right:4px solid transparent;cursor:pointer}revo-grid .attribution .value{position:absolute;top:0;left:0;background-color:rgba(255, 255, 255, 0.9);padding:4px;border-radius:4px;box-shadow:0 1px 10px rgba(0, 0, 0, 0.2);white-space:nowrap;text-decoration:none;color:black;letter-spacing:0.3px;font-size:11px;opacity:0;width:4px;overflow:hidden;transition:opacity 0.5s ease-in-out, width 0.3s ease-in-out}revo-grid .attribution:hover .value{width:63px;opacity:1}revo-grid.column-draggable.column-drag-start:hover,revo-grid.column-draggable.column-drag-start *:hover{cursor:grabbing}revo-grid .footer-wrapper,revo-grid .header-wrapper{width:100%}revo-grid .footer-wrapper revogr-data,revo-grid .header-wrapper revogr-data{z-index:3}revo-grid revo-dropdown{width:100%}revo-grid revo-dropdown .rv-dr-root{max-height:100%}revo-grid revo-dropdown.shrink label{opacity:0}revo-grid .viewports{max-width:100%;display:flex;flex-direction:row;align-items:flex-start;flex-grow:1}revo-grid .main-viewport{flex-grow:1;height:0;display:flex;justify-content:space-between;flex-direction:row}revo-grid .draggable{position:fixed;height:30px;line-height:30px;background:#fff;border-radius:3px;display:block;z-index:100;margin-top:5px;margin-right:-20px;box-shadow:0 4px 20px 0 rgba(0, 0, 0, 0.15);padding-left:20px;padding-right:5px}revo-grid .draggable.hidden{display:none}revo-grid .draggable .revo-alt-icon{background-color:black;position:absolute;left:5px;top:10px}revo-grid .draggable-wrapper.hidden{display:none}revo-grid .drag-position{position:absolute;left:0;right:0;height:1px;z-index:2;background:gray;pointer-events:none}revo-grid .drag-position-y{position:absolute;top:0;left:0;bottom:0;width:1px;z-index:2;background:gray;pointer-events:none}revo-grid .drag-auto-scroll-y{pointer-events:none;position:absolute;left:0;top:0;height:50px;width:1px}revo-grid .clipboard{position:absolute;left:0;top:0}revo-grid revogr-scroll-virtual{position:relative}revo-grid revogr-scroll-virtual.vertical,revo-grid revogr-scroll-virtual.horizontal{z-index:3}";
|
|
967
|
+
/**
|
|
968
|
+
* Plugin service
|
|
969
|
+
* Manages plugins
|
|
970
|
+
*/
|
|
971
|
+
class PluginService {
|
|
972
|
+
constructor() {
|
|
973
|
+
/**
|
|
974
|
+
* Plugins
|
|
975
|
+
* Define plugins collection
|
|
976
|
+
*/
|
|
977
|
+
this.internalPlugins = [];
|
|
978
|
+
}
|
|
979
|
+
/**
|
|
980
|
+
* Get all plugins
|
|
981
|
+
*/
|
|
982
|
+
get() {
|
|
983
|
+
return [...this.internalPlugins];
|
|
984
|
+
}
|
|
985
|
+
/**
|
|
986
|
+
* Add plugin to collection
|
|
987
|
+
*/
|
|
988
|
+
add(plugin) {
|
|
989
|
+
this.internalPlugins.push(plugin);
|
|
990
|
+
}
|
|
991
|
+
/**
|
|
992
|
+
* Add user plugins and create
|
|
993
|
+
*/
|
|
994
|
+
addUserPluginsAndCreate(element, plugins = [], prevPlugins, pluginData) {
|
|
995
|
+
if (!pluginData) {
|
|
996
|
+
return;
|
|
997
|
+
}
|
|
998
|
+
// Step 1: Identify plugins to remove, compare new and old plugins
|
|
999
|
+
const pluginsToRemove = (prevPlugins === null || prevPlugins === void 0 ? void 0 : prevPlugins.filter(prevPlugin => !plugins.some(userPlugin => userPlugin === prevPlugin))) || [];
|
|
1000
|
+
// Step 2: Remove old plugins
|
|
1001
|
+
pluginsToRemove.forEach(plugin => {
|
|
1002
|
+
var _a, _b;
|
|
1003
|
+
const index = this.internalPlugins.findIndex(createdPlugin => createdPlugin instanceof plugin);
|
|
1004
|
+
if (index !== -1) {
|
|
1005
|
+
(_b = (_a = this.internalPlugins[index]).destroy) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
1006
|
+
this.internalPlugins.splice(index, 1); // Remove the plugin
|
|
1007
|
+
}
|
|
1008
|
+
});
|
|
1009
|
+
// Step 3: Register user plugins
|
|
1010
|
+
plugins === null || plugins === void 0 ? void 0 : plugins.forEach(userPlugin => {
|
|
1011
|
+
// check if plugin already exists, if so, skip
|
|
1012
|
+
const existingPlugin = this.internalPlugins.find(createdPlugin => createdPlugin instanceof userPlugin);
|
|
1013
|
+
if (existingPlugin) {
|
|
1014
|
+
return;
|
|
1015
|
+
}
|
|
1016
|
+
this.add(new userPlugin(element, pluginData));
|
|
1017
|
+
});
|
|
1018
|
+
}
|
|
1019
|
+
/**
|
|
1020
|
+
* Get plugin by class
|
|
1021
|
+
*/
|
|
1022
|
+
getByClass(pluginClass) {
|
|
1023
|
+
return this.internalPlugins.find(p => p instanceof pluginClass);
|
|
1024
|
+
}
|
|
1025
|
+
/**
|
|
1026
|
+
* Remove plugin
|
|
1027
|
+
*/
|
|
1028
|
+
remove(plugin) {
|
|
1029
|
+
var _a, _b;
|
|
1030
|
+
const index = this.internalPlugins.indexOf(plugin);
|
|
1031
|
+
if (index > -1) {
|
|
1032
|
+
(_b = (_a = this.internalPlugins[index]).destroy) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
1033
|
+
this.internalPlugins.splice(index, 1);
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
/**
|
|
1037
|
+
* Remove all plugins
|
|
1038
|
+
*/
|
|
1039
|
+
destroy() {
|
|
1040
|
+
this.internalPlugins.forEach(p => { var _a; return (_a = p.destroy) === null || _a === void 0 ? void 0 : _a.call(p); });
|
|
1041
|
+
this.internalPlugins = [];
|
|
1042
|
+
}
|
|
1043
|
+
}
|
|
1044
|
+
|
|
1045
|
+
const revoGridStyleCss = ".revo-drag-icon{width:11px;opacity:0.8}.revo-drag-icon::before{content:\"::\"}.revo-alt-icon{-webkit-mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 384 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M192.4375,383 C197.424479,383 201.663411,381.254557 205.154297,377.763672 L205.154297,377.763672 L264.25,318.667969 C270.234375,312.683594 271.605794,306.075846 268.364258,298.844727 C265.122721,291.613607 259.51237,287.998047 251.533203,287.998047 L251.533203,287.998047 L213.382812,287.998047 L213.382812,212.445312 L288.935547,212.445312 L288.935547,250.595703 C288.935547,258.57487 292.551107,264.185221 299.782227,267.426758 C307.013346,270.668294 313.621094,269.296875 319.605469,263.3125 L319.605469,263.3125 L378.701172,204.216797 C382.192057,200.725911 383.9375,196.486979 383.9375,191.5 C383.9375,186.513021 382.192057,182.274089 378.701172,178.783203 L378.701172,178.783203 L319.605469,119.6875 C313.621094,114.201823 307.013346,112.955078 299.782227,115.947266 C292.551107,118.939453 288.935547,124.42513 288.935547,132.404297 L288.935547,132.404297 L288.935547,170.554688 L213.382812,170.554688 L213.382812,95.0019531 L251.533203,95.0019531 C259.51237,95.0019531 264.998047,91.3863932 267.990234,84.1552734 C270.982422,76.9241536 269.735677,70.3164062 264.25,64.3320312 L264.25,64.3320312 L205.154297,5.23632812 C201.663411,1.74544271 197.424479,0 192.4375,0 C187.450521,0 183.211589,1.74544271 179.720703,5.23632812 L179.720703,5.23632812 L120.625,64.3320312 C114.640625,70.3164062 113.269206,76.9241536 116.510742,84.1552734 C119.752279,91.3863932 125.36263,95.0019531 133.341797,95.0019531 L133.341797,95.0019531 L171.492188,95.0019531 L171.492188,170.554688 L95.9394531,170.554688 L95.9394531,132.404297 C95.9394531,124.42513 92.3238932,118.814779 85.0927734,115.573242 C77.8616536,112.331706 71.2539062,113.703125 65.2695312,119.6875 L65.2695312,119.6875 L6.17382812,178.783203 C2.68294271,182.274089 0.9375,186.513021 0.9375,191.5 C0.9375,196.486979 2.68294271,200.725911 6.17382812,204.216797 L6.17382812,204.216797 L65.2695312,263.3125 C71.2539062,268.798177 77.8616536,270.044922 85.0927734,267.052734 C92.3238932,264.060547 95.9394531,258.57487 95.9394531,250.595703 L95.9394531,250.595703 L95.9394531,212.445312 L171.492188,212.445312 L171.492188,287.998047 L133.341797,287.998047 C125.36263,287.998047 119.876953,291.613607 116.884766,298.844727 C113.892578,306.075846 115.139323,312.683594 120.625,318.667969 L120.625,318.667969 L179.720703,377.763672 C183.211589,381.254557 187.450521,383 192.4375,383 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 384 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M192.4375,383 C197.424479,383 201.663411,381.254557 205.154297,377.763672 L205.154297,377.763672 L264.25,318.667969 C270.234375,312.683594 271.605794,306.075846 268.364258,298.844727 C265.122721,291.613607 259.51237,287.998047 251.533203,287.998047 L251.533203,287.998047 L213.382812,287.998047 L213.382812,212.445312 L288.935547,212.445312 L288.935547,250.595703 C288.935547,258.57487 292.551107,264.185221 299.782227,267.426758 C307.013346,270.668294 313.621094,269.296875 319.605469,263.3125 L319.605469,263.3125 L378.701172,204.216797 C382.192057,200.725911 383.9375,196.486979 383.9375,191.5 C383.9375,186.513021 382.192057,182.274089 378.701172,178.783203 L378.701172,178.783203 L319.605469,119.6875 C313.621094,114.201823 307.013346,112.955078 299.782227,115.947266 C292.551107,118.939453 288.935547,124.42513 288.935547,132.404297 L288.935547,132.404297 L288.935547,170.554688 L213.382812,170.554688 L213.382812,95.0019531 L251.533203,95.0019531 C259.51237,95.0019531 264.998047,91.3863932 267.990234,84.1552734 C270.982422,76.9241536 269.735677,70.3164062 264.25,64.3320312 L264.25,64.3320312 L205.154297,5.23632812 C201.663411,1.74544271 197.424479,0 192.4375,0 C187.450521,0 183.211589,1.74544271 179.720703,5.23632812 L179.720703,5.23632812 L120.625,64.3320312 C114.640625,70.3164062 113.269206,76.9241536 116.510742,84.1552734 C119.752279,91.3863932 125.36263,95.0019531 133.341797,95.0019531 L133.341797,95.0019531 L171.492188,95.0019531 L171.492188,170.554688 L95.9394531,170.554688 L95.9394531,132.404297 C95.9394531,124.42513 92.3238932,118.814779 85.0927734,115.573242 C77.8616536,112.331706 71.2539062,113.703125 65.2695312,119.6875 L65.2695312,119.6875 L6.17382812,178.783203 C2.68294271,182.274089 0.9375,186.513021 0.9375,191.5 C0.9375,196.486979 2.68294271,200.725911 6.17382812,204.216797 L6.17382812,204.216797 L65.2695312,263.3125 C71.2539062,268.798177 77.8616536,270.044922 85.0927734,267.052734 C92.3238932,264.060547 95.9394531,258.57487 95.9394531,250.595703 L95.9394531,250.595703 L95.9394531,212.445312 L171.492188,212.445312 L171.492188,287.998047 L133.341797,287.998047 C125.36263,287.998047 119.876953,291.613607 116.884766,298.844727 C113.892578,306.075846 115.139323,312.683594 120.625,318.667969 L120.625,318.667969 L179.720703,377.763672 C183.211589,381.254557 187.450521,383 192.4375,383 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");width:11px;height:11px;background-size:cover;background-repeat:no-repeat}.arrow-down{position:absolute;right:5px;top:0}.arrow-down svg{width:8px;margin-top:5px;margin-left:5px;opacity:0.4}.cell-value-wrapper{margin-right:10px;overflow:hidden;text-overflow:ellipsis}.revo-button{position:relative;overflow:hidden;color:#fff;background-color:#4545ff;height:32px;line-height:32px;padding:0 15px;outline:0;border:0;border-radius:7px;box-sizing:border-box;cursor:pointer}.revo-button.green{background-color:#009037}.revo-button.red{background-color:#E0662E}.revo-button:disabled,.revo-button[disabled]{cursor:not-allowed !important;filter:opacity(0.35) !important}.revo-button.outline{border:1px solid #dbdbdb;line-height:30px;background:none;color:#000;box-shadow:none}revo-grid[theme^=dark] .revo-button.outline{border:1px solid #404040;color:#d8d8d8}revo-grid[theme=default],revo-grid:not([theme]){border:1px solid #cecece;font-size:12px}revo-grid[theme=default] .rowHeaders revogr-header,revo-grid:not([theme]) .rowHeaders revogr-header{box-shadow:-1px 0 0 0 #cecece inset}revo-grid[theme=default] revogr-header,revo-grid:not([theme]) revogr-header{text-align:center;line-height:30px;background-color:#f8f9fa}revo-grid[theme=default] revogr-header .group-rgRow,revo-grid:not([theme]) revogr-header .group-rgRow{box-shadow:none}revo-grid[theme=default] revogr-header .header-rgRow,revo-grid[theme=default] revogr-header .group-rgRow,revo-grid:not([theme]) revogr-header .header-rgRow,revo-grid:not([theme]) revogr-header .group-rgRow{text-transform:uppercase;font-size:12px;color:#000}revo-grid[theme=default] revogr-header .header-rgRow,revo-grid:not([theme]) revogr-header .header-rgRow{height:30px;box-shadow:0 -1px 0 0 #cecece inset}revo-grid[theme=default] revogr-header .rgHeaderCell,revo-grid:not([theme]) revogr-header .rgHeaderCell{box-shadow:-1px 0 0 0 #cecece inset, 0 -1px 0 0 #cecece, 0 -1px 0 0 #cecece inset}revo-grid[theme=default] revogr-header .rgHeaderCell.focused-cell,revo-grid:not([theme]) revogr-header .rgHeaderCell.focused-cell{background:rgba(233, 234, 237, 0.5)}revo-grid[theme=default] .rowHeaders,revo-grid:not([theme]) .rowHeaders{background-color:#f8f9fa}revo-grid[theme=default] .rowHeaders revogr-data .rgCell,revo-grid:not([theme]) .rowHeaders revogr-data .rgCell{color:#000}revo-grid[theme=default] .rowHeaders revogr-data .rgCell:first-child,revo-grid:not([theme]) .rowHeaders revogr-data .rgCell:first-child{box-shadow:0 -1px 0 0 #cecece inset}revo-grid[theme=default] .rowHeaders revogr-data .rgCell:not(:first-child),revo-grid:not([theme]) .rowHeaders revogr-data .rgCell:not(:first-child){box-shadow:0 -1px 0 0 #cecece inset, 1px 0 0 0 #cecece inset}revo-grid[theme=default] .rowHeaders revogr-data .rgCell:last-child,revo-grid:not([theme]) .rowHeaders revogr-data .rgCell:last-child{border-right:1px solid #cecece}revo-grid[theme=default] .rowHeaders revogr-data revogr-header,revo-grid:not([theme]) .rowHeaders revogr-data revogr-header{box-shadow:0 -1px 0 0 #cecece inset}revo-grid[theme=default] revogr-viewport-scroll.colPinStart revogr-data .rgRow .rgCell:last-child,revo-grid:not([theme]) revogr-viewport-scroll.colPinStart revogr-data .rgRow .rgCell:last-child{box-shadow:0 -1px 0 0 #e2e3e3 inset, -1px 0 0 0 #cecece inset}revo-grid[theme=default] revogr-viewport-scroll.colPinStart .footer-wrapper revogr-data .rgRow:first-child .rgCell,revo-grid:not([theme]) revogr-viewport-scroll.colPinStart .footer-wrapper revogr-data .rgRow:first-child .rgCell{box-shadow:0 1px 0 0 #cecece inset, -1px 0 0 0 #cecece inset}revo-grid[theme=default] revogr-viewport-scroll.colPinEnd,revo-grid[theme=default] revogr-viewport-scroll.colPinEnd revogr-header,revo-grid:not([theme]) revogr-viewport-scroll.colPinEnd,revo-grid:not([theme]) revogr-viewport-scroll.colPinEnd revogr-header{box-shadow:1px 0 0 #cecece inset}revo-grid[theme=default] .footer-wrapper revogr-data .rgRow:first-child .rgCell,revo-grid:not([theme]) .footer-wrapper revogr-data .rgRow:first-child .rgCell{box-shadow:0 1px 0 0 #e2e3e3 inset, -1px 0 0 0 #e2e3e3 inset, 0 -1px 0 0 #e2e3e3 inset}revo-grid[theme=default] revogr-data,revo-grid:not([theme]) revogr-data{text-align:center}revo-grid[theme=default] revogr-data .revo-draggable,revo-grid:not([theme]) revogr-data .revo-draggable{float:left}revo-grid[theme=default] revogr-data .rgRow,revo-grid:not([theme]) revogr-data .rgRow{line-height:27px}revo-grid[theme=default] revogr-data .rgRow.focused-rgRow,revo-grid:not([theme]) revogr-data .rgRow.focused-rgRow{background-color:rgba(233, 234, 237, 0.5)}revo-grid[theme=default] revogr-data .rgCell,revo-grid:not([theme]) revogr-data .rgCell{box-shadow:0 -1px 0 0 #e2e3e3 inset, -1px 0 0 0 #e2e3e3 inset}revo-grid[theme=default] revogr-data .rgCell.disabled,revo-grid:not([theme]) revogr-data .rgCell.disabled{background-color:0 -1px 0 0 #e2e3e3 inset, -1px 0 0 0 #e2e3e3 inset}revo-grid[theme=material]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}revo-grid[theme=material] revogr-header{line-height:50px;font-weight:600;text-align:left}revo-grid[theme=material] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=material] revogr-header .header-rgRow{height:50px}revo-grid[theme=material] revogr-data{text-align:left}revo-grid[theme=material] revogr-data .rgRow{line-height:42px}revo-grid[theme=material] revogr-data .rgCell{padding:0 15px}revo-grid[theme=material] .rowHeaders{background-color:#f7faff}revo-grid[theme=material] .rowHeaders revogr-data .rgCell{color:#757a82}revo-grid[theme=material] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #f1f1f1, 0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-header .rgHeaderCell.sortable:hover{background-color:#f1f1f1}revo-grid[theme=material] revogr-header .rgHeaderCell.focused-cell{background:rgba(233, 234, 237, 0.5)}revo-grid[theme=material] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #f1f1f1}revo-grid[theme=material] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #f1f1f1}revo-grid[theme=material] revogr-data .rgRow{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-data .rgRow.focused-rgRow{background-color:rgba(233, 234, 237, 0.5)}revo-grid[theme=material] revogr-data .rgCell{color:rgba(0, 0, 0, 0.87)}revo-grid[theme=material] revogr-data .rgCell.disabled{background-color:#f7f7f7}revo-grid[theme=darkMaterial]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#d8d8d8}revo-grid[theme=darkMaterial] revogr-header{line-height:50px;font-weight:600;text-align:left}revo-grid[theme=darkMaterial] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=darkMaterial] revogr-header .header-rgRow{height:50px}revo-grid[theme=darkMaterial] revogr-data{text-align:left}revo-grid[theme=darkMaterial] revogr-data .rgRow{line-height:42px}revo-grid[theme=darkMaterial] revogr-data .rgCell{padding:0 15px}revo-grid[theme=darkMaterial] .rowHeaders{background-color:rgba(40, 39, 43, 0.8)}revo-grid[theme=darkMaterial] .rowHeaders revogr-data .rgCell{color:rgba(216, 216, 216, 0.8)}revo-grid[theme=darkMaterial] revogr-edit{background-color:#28272b}revo-grid[theme=darkMaterial] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #404040, 0 -1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-header .rgHeaderCell.sortable:hover{background-color:rgba(64, 64, 64, 0.5)}revo-grid[theme=darkMaterial] revogr-header .rgHeaderCell.focused-cell{background:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkMaterial] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #404040}revo-grid[theme=darkMaterial] revogr-data .rgCell{color:rgba(216, 216, 216, 0.9)}revo-grid[theme=darkMaterial] revogr-data .rgRow{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-data .rgRow.focused-rgRow{background-color:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkMaterial] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #404040}revo-grid[theme=darkCompact]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#d8d8d8}revo-grid[theme=darkCompact] revogr-header{line-height:45px;font-weight:600;text-align:left}revo-grid[theme=darkCompact] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=darkCompact] revogr-header .header-rgRow{height:45px}revo-grid[theme=darkCompact] revogr-data{text-align:left}revo-grid[theme=darkCompact] revogr-data .rgRow{line-height:32px}revo-grid[theme=darkCompact] revogr-data .rgCell{padding:0 15px}revo-grid[theme=darkCompact] .rowHeaders{background-color:rgba(40, 39, 43, 0.8)}revo-grid[theme=darkCompact] .rowHeaders revogr-data .rgCell{color:rgba(216, 216, 216, 0.8)}revo-grid[theme=darkCompact] revogr-edit{background-color:#28272b}revo-grid[theme=darkCompact] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #404040, 0 -1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-header .rgHeaderCell.sortable:hover{background-color:rgba(64, 64, 64, 0.5)}revo-grid[theme=darkCompact] revogr-header .rgHeaderCell.focused-cell{background:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkCompact] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #404040}revo-grid[theme=darkCompact] revogr-data .rgCell{color:rgba(216, 216, 216, 0.9)}revo-grid[theme=darkCompact] revogr-data .rgRow{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-data .rgRow.focused-rgRow{background-color:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkCompact] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #404040}revo-grid[theme=compact]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}revo-grid[theme=compact] revogr-header{line-height:45px;font-weight:600;text-align:left}revo-grid[theme=compact] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=compact] revogr-header .header-rgRow{height:45px}revo-grid[theme=compact] revogr-data{text-align:left}revo-grid[theme=compact] revogr-data .rgRow{line-height:32px}revo-grid[theme=compact] revogr-data .rgCell{padding:0 15px}revo-grid[theme=compact] .rowHeaders{background-color:#f7faff}revo-grid[theme=compact] .rowHeaders revogr-data .rgCell{color:#757a82}revo-grid[theme=compact] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #f1f1f1, 0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-header .rgHeaderCell.sortable:hover{background-color:#f1f1f1}revo-grid[theme=compact] revogr-header .rgHeaderCell.focused-cell{background:rgba(233, 234, 237, 0.5)}revo-grid[theme=compact] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #f1f1f1}revo-grid[theme=compact] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #f1f1f1}revo-grid[theme=compact] revogr-data .rgRow{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-data .rgRow.focused-rgRow{background-color:rgba(233, 234, 237, 0.5)}revo-grid[theme=compact] revogr-data .rgCell{color:rgba(0, 0, 0, 0.87)}revo-grid[theme=compact] revogr-data .rgCell.disabled{background-color:#f7f7f7}revo-grid[theme=compact] revo-dropdown .rv-dr-root{padding:0px 9px}revo-grid{display:block;height:100%;min-height:300px;font-family:Helvetica, Arial, Sans-Serif, serif;font-size:14px;position:relative;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column;width:100%;height:100%}revo-grid .attribution{position:absolute;bottom:0;left:0;right:0;z-index:1000;width:0;height:0;border-left:4px solid rgba(38, 106, 232, 0.9);border-bottom:4px solid rgba(38, 106, 232, 0.9);border-top:4px solid transparent;border-right:4px solid transparent;cursor:pointer}revo-grid .attribution .value{position:absolute;bottom:0;left:0;background-color:rgba(255, 255, 255, 0.9);padding:4px;border-radius:4px;box-shadow:0 1px 10px rgba(0, 0, 0, 0.2);white-space:nowrap;text-decoration:none;color:black;letter-spacing:0.3px;font-size:11px;opacity:0;width:4px;overflow:hidden;transition:opacity 0.5s ease-in-out, width 0.3s ease-in-out}revo-grid .attribution:hover .value{width:63px;opacity:1}revo-grid.column-draggable.column-drag-start:hover,revo-grid.column-draggable.column-drag-start *:hover{cursor:grabbing}revo-grid .footer-wrapper,revo-grid .header-wrapper{width:100%}revo-grid .footer-wrapper revogr-data,revo-grid .header-wrapper revogr-data{z-index:3}revo-grid revo-dropdown{width:100%}revo-grid revo-dropdown .rv-dr-root{max-height:100%}revo-grid revo-dropdown.shrink label{opacity:0}revo-grid .viewports{max-width:100%;display:flex;flex-direction:row;align-items:flex-start;flex-grow:1}revo-grid .main-viewport{flex-grow:1;height:0;display:flex;justify-content:space-between;flex-direction:row}revo-grid .draggable{position:fixed;height:30px;line-height:30px;background:#fff;border-radius:3px;display:block;z-index:100;margin-top:5px;margin-right:-20px;box-shadow:0 4px 20px 0 rgba(0, 0, 0, 0.15);padding-left:20px;padding-right:5px}revo-grid .draggable.hidden{display:none}revo-grid .draggable .revo-alt-icon{background-color:black;position:absolute;left:5px;top:10px}revo-grid .draggable-wrapper.hidden{display:none}revo-grid .drag-position{position:absolute;left:0;right:0;height:1px;z-index:2;background:gray;pointer-events:none}revo-grid .drag-position-y{position:absolute;top:0;left:0;bottom:0;width:1px;z-index:2;background:gray;pointer-events:none}revo-grid .drag-auto-scroll-y{pointer-events:none;position:absolute;left:0;top:0;height:50px;width:1px}revo-grid .clipboard{position:absolute;left:0;top:0}revo-grid revogr-scroll-virtual{position:relative}revo-grid revogr-scroll-virtual.vertical,revo-grid revogr-scroll-virtual.horizontal{z-index:3}";
|
|
1699
1046
|
const RevoGridStyle0 = revoGridStyleCss;
|
|
1700
1047
|
|
|
1701
1048
|
const RevoGridComponent = class {
|
|
@@ -1709,8 +1056,9 @@ const RevoGridComponent = class {
|
|
|
1709
1056
|
this.beforerange = createEvent(this, "beforerange", 7);
|
|
1710
1057
|
this.afterfocus = createEvent(this, "afterfocus", 7);
|
|
1711
1058
|
this.roworderchanged = createEvent(this, "roworderchanged", 7);
|
|
1712
|
-
this.beforesortingapply = createEvent(this, "beforesortingapply", 7);
|
|
1713
1059
|
this.beforesorting = createEvent(this, "beforesorting", 7);
|
|
1060
|
+
this.beforesourcesortingapply = createEvent(this, "beforesourcesortingapply", 7);
|
|
1061
|
+
this.beforesortingapply = createEvent(this, "beforesortingapply", 7);
|
|
1714
1062
|
this.rowdragstart = createEvent(this, "rowdragstart", 7);
|
|
1715
1063
|
this.headerclick = createEvent(this, "headerclick", 7);
|
|
1716
1064
|
this.beforecellfocus = createEvent(this, "beforecellfocus", 7);
|
|
@@ -1732,20 +1080,18 @@ const RevoGridComponent = class {
|
|
|
1732
1080
|
this.aftercolumnresize = createEvent(this, "aftercolumnresize", 7);
|
|
1733
1081
|
this.beforerowdefinition = createEvent(this, "beforerowdefinition", 7);
|
|
1734
1082
|
this.filterconfigchanged = createEvent(this, "filterconfigchanged", 7);
|
|
1083
|
+
this.sortingconfigchanged = createEvent(this, "sortingconfigchanged", 7);
|
|
1735
1084
|
this.rowheaderschanged = createEvent(this, "rowheaderschanged", 7);
|
|
1736
1085
|
this.beforegridrender = createEvent(this, "beforegridrender", 7);
|
|
1737
1086
|
this.aftergridrender = createEvent(this, "aftergridrender", 7);
|
|
1738
1087
|
this.aftergridinit = createEvent(this, "aftergridinit", 7);
|
|
1739
1088
|
this.additionaldatachanged = createEvent(this, "additionaldatachanged", 7);
|
|
1740
1089
|
this.afterthemechanged = createEvent(this, "afterthemechanged", 7);
|
|
1090
|
+
this.created = createEvent(this, "created", 7);
|
|
1741
1091
|
this.extraElements = [];
|
|
1092
|
+
this.pluginService = new PluginService();
|
|
1742
1093
|
this.viewport = null;
|
|
1743
1094
|
this.isInited = false;
|
|
1744
|
-
/**
|
|
1745
|
-
* Plugins
|
|
1746
|
-
* Define plugins collection
|
|
1747
|
-
*/
|
|
1748
|
-
this.internalPlugins = [];
|
|
1749
1095
|
this.rowHeaders = undefined;
|
|
1750
1096
|
this.frameSize = 1;
|
|
1751
1097
|
this.rowSize = 0;
|
|
@@ -1768,6 +1114,7 @@ const RevoGridComponent = class {
|
|
|
1768
1114
|
this.rowClass = '';
|
|
1769
1115
|
this.autoSizeColumn = false;
|
|
1770
1116
|
this.filter = false;
|
|
1117
|
+
this.sorting = undefined;
|
|
1771
1118
|
this.focusTemplate = undefined;
|
|
1772
1119
|
this.canMoveColumns = false;
|
|
1773
1120
|
this.trimmedRows = {};
|
|
@@ -1795,15 +1142,31 @@ const RevoGridComponent = class {
|
|
|
1795
1142
|
this.dataProvider.refresh(type);
|
|
1796
1143
|
}
|
|
1797
1144
|
/**
|
|
1798
|
-
*
|
|
1145
|
+
* Refreshes data at specified cell.
|
|
1799
1146
|
* Useful for performance optimization.
|
|
1800
1147
|
* No viewport update will be triggered.
|
|
1148
|
+
*
|
|
1149
|
+
* @example
|
|
1150
|
+
* const grid = document.querySelector('revo-grid');
|
|
1151
|
+
* grid.setDataAt({ row: 0, col: 0, val: 'test' }); // refresh
|
|
1801
1152
|
*/
|
|
1802
|
-
async setDataAt(
|
|
1803
|
-
|
|
1153
|
+
async setDataAt({ row, col, colType = 'rgCol', rowType = 'rgRow', val, skipDataUpdate = false }) {
|
|
1154
|
+
var _a;
|
|
1155
|
+
if (this.dataProvider && this.columnProvider && !skipDataUpdate) {
|
|
1156
|
+
const columnProp = (_a = this.columnProvider.getColumn(col, colType)) === null || _a === void 0 ? void 0 : _a.prop;
|
|
1157
|
+
if (typeof columnProp !== 'undefined') {
|
|
1158
|
+
this.dataProvider.setCellData({
|
|
1159
|
+
type: rowType,
|
|
1160
|
+
rowIndex: row,
|
|
1161
|
+
prop: columnProp,
|
|
1162
|
+
val,
|
|
1163
|
+
}, false);
|
|
1164
|
+
}
|
|
1165
|
+
}
|
|
1166
|
+
const dataElement = this.element.querySelector(`revogr-data[type="${rowType}"][col-type="${colType}"]`);
|
|
1804
1167
|
return dataElement === null || dataElement === void 0 ? void 0 : dataElement.updateCell({
|
|
1805
|
-
row
|
|
1806
|
-
col
|
|
1168
|
+
row,
|
|
1169
|
+
col,
|
|
1807
1170
|
});
|
|
1808
1171
|
}
|
|
1809
1172
|
/**
|
|
@@ -1971,19 +1334,19 @@ const RevoGridComponent = class {
|
|
|
1971
1334
|
* Clear current grid focus. Grid has no longer focus on it.
|
|
1972
1335
|
*/
|
|
1973
1336
|
async clearFocus() {
|
|
1974
|
-
var _a;
|
|
1337
|
+
var _a, _b;
|
|
1975
1338
|
const focused = (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.getFocused();
|
|
1976
1339
|
const event = this.beforefocuslost.emit(focused);
|
|
1977
1340
|
if (event.defaultPrevented) {
|
|
1978
1341
|
return;
|
|
1979
1342
|
}
|
|
1980
|
-
this.selectionStoreConnector.clearAll();
|
|
1343
|
+
(_b = this.selectionStoreConnector) === null || _b === void 0 ? void 0 : _b.clearAll();
|
|
1981
1344
|
}
|
|
1982
1345
|
/**
|
|
1983
1346
|
* Get all active plugins instances
|
|
1984
1347
|
*/
|
|
1985
1348
|
async getPlugins() {
|
|
1986
|
-
return
|
|
1349
|
+
return this.pluginService.get();
|
|
1987
1350
|
}
|
|
1988
1351
|
/**
|
|
1989
1352
|
* Get the currently focused cell.
|
|
@@ -2010,6 +1373,15 @@ const RevoGridComponent = class {
|
|
|
2010
1373
|
var _a, _b;
|
|
2011
1374
|
return (_b = (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.getSelectedRange()) !== null && _b !== void 0 ? _b : null;
|
|
2012
1375
|
}
|
|
1376
|
+
/**
|
|
1377
|
+
* Refresh extra elements. Triggers re-rendering of extra elements and functions.
|
|
1378
|
+
* Part of extraElements and registerVNode methods.
|
|
1379
|
+
* Useful for plugins.
|
|
1380
|
+
*/
|
|
1381
|
+
async refreshExtraElements() {
|
|
1382
|
+
var _a;
|
|
1383
|
+
(_a = this.extraService) === null || _a === void 0 ? void 0 : _a.refresh();
|
|
1384
|
+
}
|
|
2013
1385
|
mousedownHandle(event) {
|
|
2014
1386
|
const screenX = getPropertyFromEvent(event, 'screenX');
|
|
2015
1387
|
const screenY = getPropertyFromEvent(event, 'screenY');
|
|
@@ -2138,7 +1510,7 @@ const RevoGridComponent = class {
|
|
|
2138
1510
|
// Column format change will trigger column structure update
|
|
2139
1511
|
this.columnChanged(this.columns);
|
|
2140
1512
|
}
|
|
2141
|
-
columnChanged(newVal = []) {
|
|
1513
|
+
columnChanged(newVal = [], _prevVal = undefined, __watchName = 'columns', init = false) {
|
|
2142
1514
|
if (!this.dimensionProvider || !this.columnProvider) {
|
|
2143
1515
|
return;
|
|
2144
1516
|
}
|
|
@@ -2147,7 +1519,7 @@ const RevoGridComponent = class {
|
|
|
2147
1519
|
if (beforeSetEvent.defaultPrevented) {
|
|
2148
1520
|
return;
|
|
2149
1521
|
}
|
|
2150
|
-
this.dimensionProvider.applyNewColumns(beforeSetEvent.detail.columns, this.disableVirtualX);
|
|
1522
|
+
this.dimensionProvider.applyNewColumns(beforeSetEvent.detail.columns, this.disableVirtualX, init);
|
|
2151
1523
|
const beforeApplyEvent = this.beforecolumnapplied.emit(columnGather);
|
|
2152
1524
|
if (beforeApplyEvent.defaultPrevented) {
|
|
2153
1525
|
return;
|
|
@@ -2203,7 +1575,9 @@ const RevoGridComponent = class {
|
|
|
2203
1575
|
break;
|
|
2204
1576
|
case 'source':
|
|
2205
1577
|
type = 'rgRow';
|
|
2206
|
-
/**
|
|
1578
|
+
/**
|
|
1579
|
+
* Applied for source only for cross compatability between plugins
|
|
1580
|
+
*/
|
|
2207
1581
|
const beforesourceset = this.beforesourceset.emit({
|
|
2208
1582
|
type,
|
|
2209
1583
|
source: newVal,
|
|
@@ -2217,7 +1591,9 @@ const RevoGridComponent = class {
|
|
|
2217
1591
|
});
|
|
2218
1592
|
const newSource = [...beforesourceset.detail.source];
|
|
2219
1593
|
this.dataProvider.setData(newSource, type, this.disableVirtualY);
|
|
2220
|
-
/**
|
|
1594
|
+
/**
|
|
1595
|
+
* Applied for source only for cross compatability between plugins
|
|
1596
|
+
*/
|
|
2221
1597
|
if (watchName === 'source') {
|
|
2222
1598
|
this.aftersourceset.emit({
|
|
2223
1599
|
type,
|
|
@@ -2276,15 +1652,8 @@ const RevoGridComponent = class {
|
|
|
2276
1652
|
* Grouping
|
|
2277
1653
|
*/
|
|
2278
1654
|
groupingChanged(newVal = {}) {
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
const isGrouping = p;
|
|
2282
|
-
if (!!isGrouping.setGrouping) {
|
|
2283
|
-
grPlugin = isGrouping;
|
|
2284
|
-
break;
|
|
2285
|
-
}
|
|
2286
|
-
}
|
|
2287
|
-
grPlugin === null || grPlugin === void 0 ? void 0 : grPlugin.setGrouping(newVal || {});
|
|
1655
|
+
var _a;
|
|
1656
|
+
(_a = this.pluginService.getByClass(GroupingRowPlugin)) === null || _a === void 0 ? void 0 : _a.setGrouping(newVal || {});
|
|
2288
1657
|
}
|
|
2289
1658
|
/**
|
|
2290
1659
|
* Stretch Plugin Apply
|
|
@@ -2296,30 +1665,29 @@ const RevoGridComponent = class {
|
|
|
2296
1665
|
if (isStretch === 'false') {
|
|
2297
1666
|
isStretch = false;
|
|
2298
1667
|
}
|
|
2299
|
-
|
|
1668
|
+
const pluginData = this.getPluginData();
|
|
1669
|
+
if (!pluginData) {
|
|
1670
|
+
return;
|
|
1671
|
+
}
|
|
1672
|
+
const stretch = this.pluginService.getByClass(StretchColumn);
|
|
2300
1673
|
if ((typeof isStretch === 'boolean' && isStretch) || isStretch === 'true') {
|
|
2301
1674
|
if (!stretch) {
|
|
2302
|
-
|
|
2303
|
-
data: this.dataProvider,
|
|
2304
|
-
column: this.columnProvider,
|
|
2305
|
-
dimension: this.dimensionProvider,
|
|
2306
|
-
viewport: this.viewportProvider,
|
|
2307
|
-
selection: this.selectionStoreConnector,
|
|
2308
|
-
};
|
|
2309
|
-
this.internalPlugins.push(new StretchColumn(this.element, pluginData));
|
|
1675
|
+
this.pluginService.add(new StretchColumn(this.element, pluginData));
|
|
2310
1676
|
}
|
|
2311
1677
|
else if (isStretchPlugin(stretch)) {
|
|
2312
1678
|
stretch.applyStretch(this.columnProvider.getRawColumns());
|
|
2313
1679
|
}
|
|
2314
1680
|
}
|
|
2315
1681
|
else if (stretch) {
|
|
2316
|
-
|
|
2317
|
-
this.internalPlugins.splice(index, 1);
|
|
1682
|
+
this.pluginService.remove(stretch);
|
|
2318
1683
|
}
|
|
2319
1684
|
}
|
|
2320
1685
|
applyFilter(cfg) {
|
|
2321
1686
|
this.filterconfigchanged.emit(cfg);
|
|
2322
1687
|
}
|
|
1688
|
+
applySorting(cfg) {
|
|
1689
|
+
this.sortingconfigchanged.emit(cfg);
|
|
1690
|
+
}
|
|
2323
1691
|
rowHeadersChange(rowHeaders) {
|
|
2324
1692
|
this.rowheaderschanged.emit(rowHeaders);
|
|
2325
1693
|
}
|
|
@@ -2327,26 +1695,16 @@ const RevoGridComponent = class {
|
|
|
2327
1695
|
* Register external VNodes
|
|
2328
1696
|
*/
|
|
2329
1697
|
registerOutsideVNodes(elements = []) {
|
|
2330
|
-
this.extraElements =
|
|
1698
|
+
this.extraElements = elements;
|
|
2331
1699
|
}
|
|
2332
1700
|
additionalDataChanged(data) {
|
|
2333
1701
|
this.additionaldatachanged.emit(data);
|
|
2334
1702
|
}
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
}
|
|
2341
|
-
// todo: remove old plugins if any was removed based on _prevPlugins
|
|
2342
|
-
// register user plugins
|
|
2343
|
-
plugins === null || plugins === void 0 ? void 0 : plugins.forEach(userPlugin => {
|
|
2344
|
-
const existingPlugin = this.internalPlugins.find(createdPlugin => createdPlugin instanceof userPlugin);
|
|
2345
|
-
if (existingPlugin) {
|
|
2346
|
-
return;
|
|
2347
|
-
}
|
|
2348
|
-
this.internalPlugins.push(new userPlugin(this.element, pluginData));
|
|
2349
|
-
});
|
|
1703
|
+
/**
|
|
1704
|
+
* User can add plugins via plugins property
|
|
1705
|
+
*/
|
|
1706
|
+
pluginsChanged(plugins = [], prevPlugins) {
|
|
1707
|
+
this.pluginService.addUserPluginsAndCreate(this.element, plugins, prevPlugins, this.getPluginData());
|
|
2350
1708
|
}
|
|
2351
1709
|
// #endregion
|
|
2352
1710
|
// #region Plugins
|
|
@@ -2358,35 +1716,39 @@ const RevoGridComponent = class {
|
|
|
2358
1716
|
if (!pluginData) {
|
|
2359
1717
|
return;
|
|
2360
1718
|
}
|
|
1719
|
+
// register system plugins
|
|
1720
|
+
this.setCorePlugins(pluginData);
|
|
1721
|
+
// register user plugins
|
|
1722
|
+
this.pluginsChanged(this.plugins);
|
|
1723
|
+
}
|
|
1724
|
+
setCorePlugins(pluginData) {
|
|
2361
1725
|
if (this.accessible) {
|
|
2362
|
-
this.
|
|
1726
|
+
this.pluginService.add(new WCAGPlugin(this.element, pluginData));
|
|
2363
1727
|
}
|
|
2364
1728
|
// register auto size plugin
|
|
2365
1729
|
if (this.autoSizeColumn) {
|
|
2366
|
-
this.
|
|
1730
|
+
this.pluginService.add(new AutoSizeColumnPlugin(this.element, pluginData, typeof this.autoSizeColumn === 'object'
|
|
2367
1731
|
? this.autoSizeColumn
|
|
2368
1732
|
: undefined));
|
|
2369
1733
|
}
|
|
2370
1734
|
// register filter plugin
|
|
2371
1735
|
if (this.filter) {
|
|
2372
|
-
this.
|
|
1736
|
+
this.pluginService.add(new FilterPlugin(this.element, pluginData, typeof this.filter === 'object' ? this.filter : undefined));
|
|
2373
1737
|
}
|
|
2374
1738
|
// register export plugin
|
|
2375
1739
|
if (this.exporting) {
|
|
2376
|
-
this.
|
|
1740
|
+
this.pluginService.add(new ExportFilePlugin(this.element, pluginData));
|
|
2377
1741
|
}
|
|
2378
1742
|
// register sorting plugin
|
|
2379
|
-
this.
|
|
1743
|
+
this.pluginService.add(new SortingPlugin(this.element, pluginData));
|
|
2380
1744
|
// register grouping plugin
|
|
2381
|
-
this.
|
|
1745
|
+
this.pluginService.add(new GroupingRowPlugin(this.element, pluginData));
|
|
2382
1746
|
if (this.canMoveColumns) {
|
|
2383
|
-
this.
|
|
1747
|
+
this.pluginService.add(new ColumnMovePlugin(this.element, pluginData));
|
|
2384
1748
|
}
|
|
2385
|
-
// register user plugins
|
|
2386
|
-
this.pluginsChanged(this.plugins);
|
|
2387
1749
|
}
|
|
2388
1750
|
getPluginData() {
|
|
2389
|
-
if (!this.dimensionProvider || !this.dataProvider || !this.columnProvider || !this.viewportProvider) {
|
|
1751
|
+
if (!this.dimensionProvider || !this.dataProvider || !this.columnProvider || !this.viewportProvider || !this.selectionStoreConnector) {
|
|
2390
1752
|
return;
|
|
2391
1753
|
}
|
|
2392
1754
|
// pass data provider to plugins
|
|
@@ -2396,12 +1758,12 @@ const RevoGridComponent = class {
|
|
|
2396
1758
|
dimension: this.dimensionProvider,
|
|
2397
1759
|
viewport: this.viewportProvider,
|
|
2398
1760
|
selection: this.selectionStoreConnector,
|
|
1761
|
+
plugins: this.pluginService,
|
|
2399
1762
|
};
|
|
2400
1763
|
return pluginData;
|
|
2401
1764
|
}
|
|
2402
1765
|
removePlugins() {
|
|
2403
|
-
this.
|
|
2404
|
-
this.internalPlugins = [];
|
|
1766
|
+
this.pluginService.destroy();
|
|
2405
1767
|
}
|
|
2406
1768
|
// #endregion
|
|
2407
1769
|
// if reconnect to dom we need to set up plugins
|
|
@@ -2409,6 +1771,7 @@ const RevoGridComponent = class {
|
|
|
2409
1771
|
if (this.isInited) {
|
|
2410
1772
|
this.setPlugins();
|
|
2411
1773
|
}
|
|
1774
|
+
this.created.emit();
|
|
2412
1775
|
}
|
|
2413
1776
|
/**
|
|
2414
1777
|
* Called once just after the component is first connected to the DOM.
|
|
@@ -2436,7 +1799,7 @@ const RevoGridComponent = class {
|
|
|
2436
1799
|
// set data
|
|
2437
1800
|
this.applyStretch(this.stretch);
|
|
2438
1801
|
this.themeChanged(this.theme, undefined, undefined, true);
|
|
2439
|
-
this.columnChanged(this.columns);
|
|
1802
|
+
this.columnChanged(this.columns, undefined, undefined, true);
|
|
2440
1803
|
this.dataSourceChanged(this.source, undefined, 'source');
|
|
2441
1804
|
this.dataSourceChanged(this.pinnedTopSource, undefined, 'pinnedTopSource');
|
|
2442
1805
|
this.dataSourceChanged(this.pinnedBottomSource, undefined, 'pinnedBottomSource');
|
|
@@ -2444,7 +1807,10 @@ const RevoGridComponent = class {
|
|
|
2444
1807
|
this.trimmedRowsChanged(this.trimmedRows);
|
|
2445
1808
|
}
|
|
2446
1809
|
this.rowDefChanged(this.rowDefinitions);
|
|
2447
|
-
|
|
1810
|
+
// init grouping
|
|
1811
|
+
if (this.grouping && Object.keys(this.grouping).length > 0) {
|
|
1812
|
+
this.groupingChanged(this.grouping);
|
|
1813
|
+
}
|
|
2448
1814
|
// init scrolling service
|
|
2449
1815
|
this.scrollingService = new GridScrollingService((e) => {
|
|
2450
1816
|
var _a;
|
|
@@ -2469,7 +1835,7 @@ const RevoGridComponent = class {
|
|
|
2469
1835
|
this.aftergridrender.emit();
|
|
2470
1836
|
}
|
|
2471
1837
|
render() {
|
|
2472
|
-
if (!this.dimensionProvider || !this.dataProvider || !this.columnProvider || !this.viewportProvider) {
|
|
1838
|
+
if (!this.dimensionProvider || !this.dataProvider || !this.columnProvider || !this.viewportProvider || !this.selectionStoreConnector) {
|
|
2473
1839
|
return;
|
|
2474
1840
|
}
|
|
2475
1841
|
const contentHeight = this.dimensionProvider.stores['rgRow'].store.get('realSize');
|
|
@@ -2512,12 +1878,13 @@ const RevoGridComponent = class {
|
|
|
2512
1878
|
// Render viewport data (vertical sections)
|
|
2513
1879
|
view.dataPorts.forEach(data => {
|
|
2514
1880
|
const key = `${data.type}_${view.type}`;
|
|
2515
|
-
const dataView = (h("revogr-overlay-selection", Object.assign({}, data, { isMobileDevice: isMobile,
|
|
1881
|
+
const dataView = (h("revogr-overlay-selection", Object.assign({}, data, { isMobileDevice: isMobile, onSelectall: () => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.selectAll(); }, editors: this.editors, readonly: this.readonly, range: this.range, useClipboard: this.useClipboard, applyChangesOnClose: this.applyOnClose, additionalData: this.additionalData, slot: data.slot, onBeforenextvpfocus: (e) => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.beforeNextFocusCell(e.detail); }, onCanceledit: () => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.setEdit(false); }, onSetedit: ({ detail }) => {
|
|
1882
|
+
var _a;
|
|
2516
1883
|
const event = this.beforeeditstart.emit(detail);
|
|
2517
1884
|
if (!event.defaultPrevented) {
|
|
2518
|
-
this.selectionStoreConnector.setEdit(detail.val);
|
|
1885
|
+
(_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.setEdit(detail.val);
|
|
2519
1886
|
}
|
|
2520
|
-
} }), h("revogr-data", Object.assign({}, data, { colType: view.type, key: key, readonly: this.readonly, range: this.range, rowClass: this.rowClass, rowSelectionStore: data.rowSelectionStore, additionalData: this.additionalData, jobsBeforeRender: this.jobsBeforeRender, slot: DATA_SLOT }), h("slot", { name: `data-${view.type}-${data.type}` })), h("revogr-temp-range", { selectionStore: data.
|
|
1887
|
+
} }), h("revogr-data", Object.assign({}, data, { colType: view.type, key: key, readonly: this.readonly, range: this.range, rowClass: this.rowClass, rowSelectionStore: data.rowSelectionStore, additionalData: this.additionalData, jobsBeforeRender: this.jobsBeforeRender, slot: DATA_SLOT }), h("slot", { name: `data-${view.type}-${data.type}` })), h("revogr-temp-range", { selectionStore: data.selectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol }), h("revogr-focus", { colData: data.colData, dataStore: data.dataStore, focusTemplate: this.focusTemplate, rowType: data.type, colType: view.type, selectionStore: data.selectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol }, h("slot", { name: `focus-${view.type}-${data.type}` }))));
|
|
2521
1888
|
dataViews.push(dataView);
|
|
2522
1889
|
});
|
|
2523
1890
|
// Add viewport scroll in the end
|
|
@@ -2529,15 +1896,16 @@ const RevoGridComponent = class {
|
|
|
2529
1896
|
const typeCol = 'rgCol';
|
|
2530
1897
|
const viewports = this.viewportProvider.stores;
|
|
2531
1898
|
const dimensions = this.dimensionProvider.stores;
|
|
2532
|
-
return (h(Host, null, this.hideAttribution ? null : (h("revogr-attribution", { class: "attribution" })), h("div", { class: "main-viewport", onClick: (e) => {
|
|
1899
|
+
return (h(Host, null, this.hideAttribution ? null : (h("revogr-attribution", { class: "attribution" })), h("slot", { name: "header" }), h("div", { class: "main-viewport", onClick: (e) => {
|
|
2533
1900
|
var _a;
|
|
2534
1901
|
if (e.currentTarget === e.target) {
|
|
2535
1902
|
(_a = this.viewport) === null || _a === void 0 ? void 0 : _a.clearEdit();
|
|
2536
1903
|
}
|
|
2537
|
-
} }, h("div", { class: "viewports" }, h("slot", { name: "viewport" }), viewportSections, h("revogr-scroll-virtual", { class: "vertical", dimension: typeRow, viewportStore: viewports[typeRow].store, dimensionStore: dimensions[typeRow].store, ref: el => this.scrollingService.registerElement(el, 'rowScroll'), onScrollvirtual: e => this.scrollingService.proxyScroll(e.detail) }), h(OrderRenderer, { ref: e => (this.orderService = e) }))), h("revogr-scroll-virtual", { class: "horizontal", dimension: typeCol, viewportStore: viewports[typeCol].store, dimensionStore: dimensions[typeCol].store, ref: el => this.scrollingService.registerElement(el, 'colScroll'), onScrollvirtual: e => this.scrollingService.proxyScroll(e.detail) }), h("revogr-extra", { nodes: this.extraElements })));
|
|
1904
|
+
} }, h("div", { class: "viewports" }, h("slot", { name: "viewport" }), viewportSections, h("revogr-scroll-virtual", { class: "vertical", dimension: typeRow, viewportStore: viewports[typeRow].store, dimensionStore: dimensions[typeRow].store, ref: el => this.scrollingService.registerElement(el, 'rowScroll'), onScrollvirtual: e => this.scrollingService.proxyScroll(e.detail) }), h(OrderRenderer, { ref: e => (this.orderService = e) }))), h("revogr-scroll-virtual", { class: "horizontal", dimension: typeCol, viewportStore: viewports[typeCol].store, dimensionStore: dimensions[typeCol].store, ref: el => this.scrollingService.registerElement(el, 'colScroll'), onScrollvirtual: e => this.scrollingService.proxyScroll(e.detail) }), h("revogr-extra", { ref: el => (this.extraService = el), nodes: this.extraElements }), h("slot", { name: "footer" })));
|
|
2538
1905
|
}
|
|
2539
1906
|
disconnectedCallback() {
|
|
2540
|
-
// Remove all plugins, to avoid memory leaks
|
|
1907
|
+
// Remove all plugins, to avoid memory leaks
|
|
1908
|
+
// and unexpected behaviour when the component is removed
|
|
2541
1909
|
this.removePlugins();
|
|
2542
1910
|
}
|
|
2543
1911
|
get element() { return getElement(this); }
|
|
@@ -2556,6 +1924,7 @@ const RevoGridComponent = class {
|
|
|
2556
1924
|
"grouping": ["groupingChanged"],
|
|
2557
1925
|
"stretch": ["applyStretch"],
|
|
2558
1926
|
"filter": ["applyFilter"],
|
|
1927
|
+
"sorting": ["applySorting"],
|
|
2559
1928
|
"rowHeaders": ["rowHeadersChange"],
|
|
2560
1929
|
"registerVNode": ["registerOutsideVNodes"],
|
|
2561
1930
|
"additionalData": ["additionalDataChanged"],
|