lsp-grid 1.0.0
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/README.md +34 -0
- package/dist/cjs/app-globals-Bfsg1bDt.js +16 -0
- package/dist/cjs/app-globals-Bfsg1bDt.js.map +1 -0
- package/dist/cjs/cell-renderer-DtuYp7tj.js +106 -0
- package/dist/cjs/cell-renderer-DtuYp7tj.js.map +1 -0
- package/dist/cjs/column.drag.plugin-BIptTmfz.js +2554 -0
- package/dist/cjs/column.drag.plugin-BIptTmfz.js.map +1 -0
- package/dist/cjs/column.service-BnVSAfcu.js +1391 -0
- package/dist/cjs/column.service-BnVSAfcu.js.map +1 -0
- package/dist/cjs/data.store-CrF4Nf9q.js +3615 -0
- package/dist/cjs/data.store-CrF4Nf9q.js.map +1 -0
- package/dist/cjs/debounce-DgeyTQM0.js +498 -0
- package/dist/cjs/debounce-DgeyTQM0.js.map +1 -0
- package/dist/cjs/edit.utils-Bw-E3Fj6.js +118 -0
- package/dist/cjs/edit.utils-Bw-E3Fj6.js.map +1 -0
- package/dist/cjs/events-D0Syn6ut.js +46 -0
- package/dist/cjs/events-D0Syn6ut.js.map +1 -0
- package/dist/cjs/filter.button-CaAAXq-6.js +49 -0
- package/dist/cjs/filter.button-CaAAXq-6.js.map +1 -0
- package/dist/cjs/header-cell-renderer-DhRJqZ-w.js +356 -0
- package/dist/cjs/header-cell-renderer-DhRJqZ-w.js.map +1 -0
- package/dist/cjs/index-VM40U6Gh.js +2549 -0
- package/dist/cjs/index-VM40U6Gh.js.map +1 -0
- package/dist/cjs/index.cjs.js +346 -0
- package/dist/cjs/index.cjs.js.map +1 -0
- package/dist/cjs/loader.cjs.js +19 -0
- package/dist/cjs/loader.cjs.js.map +1 -0
- package/dist/cjs/revo-grid.cjs.entry.js +2187 -0
- package/dist/cjs/revo-grid.cjs.entry.js.map +1 -0
- package/dist/cjs/revo-grid.cjs.js +31 -0
- package/dist/cjs/revo-grid.cjs.js.map +1 -0
- package/dist/cjs/revo-grid.entry.cjs.js.map +1 -0
- package/dist/cjs/revogr-attribution.revogr-extra.revogr-focus.revogr-overlay-selection.revogr-row-headers.revogr-scroll-virtual.revogr-temp-range.entry.cjs.js.map +1 -0
- package/dist/cjs/revogr-attribution_7.cjs.entry.js +1463 -0
- package/dist/cjs/revogr-attribution_7.cjs.entry.js.map +1 -0
- package/dist/cjs/revogr-clipboard.revogr-edit.revogr-order-editor.entry.cjs.js.map +1 -0
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js +456 -0
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js.map +1 -0
- package/dist/cjs/revogr-data.revogr-header.revogr-viewport-scroll.vnode-html.entry.cjs.js.map +1 -0
- package/dist/cjs/revogr-data_4.cjs.entry.js +948 -0
- package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -0
- package/dist/cjs/revogr-filter-panel.cjs.entry.js +382 -0
- package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +1 -0
- package/dist/cjs/revogr-filter-panel.entry.cjs.js.map +1 -0
- package/dist/cjs/row-header-utils-DL640c7x.js +420 -0
- package/dist/cjs/row-header-utils-DL640c7x.js.map +1 -0
- package/dist/cjs/text-editor-DWChyeVV.js +81 -0
- package/dist/cjs/text-editor-DWChyeVV.js.map +1 -0
- package/dist/cjs/throttle-Bb1Bbfd1.js +278 -0
- package/dist/cjs/throttle-Bb1Bbfd1.js.map +1 -0
- package/dist/cjs/viewport.helpers-CI6uB8tu.js +59 -0
- package/dist/cjs/viewport.helpers-CI6uB8tu.js.map +1 -0
- package/dist/collection/collection-manifest.json +28 -0
- package/dist/collection/components/attribution/revogr-attribution.js +20 -0
- package/dist/collection/components/attribution/revogr-attribution.js.map +1 -0
- package/dist/collection/components/clipboard/revogr-clipboard.js +396 -0
- package/dist/collection/components/clipboard/revogr-clipboard.js.map +1 -0
- package/dist/collection/components/data/cell-renderer.js +44 -0
- package/dist/collection/components/data/cell-renderer.js.map +1 -0
- package/dist/collection/components/data/column.service.js +293 -0
- package/dist/collection/components/data/column.service.js.map +1 -0
- package/dist/collection/components/data/revogr-data-style.css +75 -0
- package/dist/collection/components/data/revogr-data.js +697 -0
- package/dist/collection/components/data/revogr-data.js.map +1 -0
- package/dist/collection/components/data/row-highlight.plugin.js +51 -0
- package/dist/collection/components/data/row-highlight.plugin.js.map +1 -0
- package/dist/collection/components/data/row-renderer.js +16 -0
- package/dist/collection/components/data/row-renderer.js.map +1 -0
- package/dist/collection/components/editors/edit.utils.js +13 -0
- package/dist/collection/components/editors/edit.utils.js.map +1 -0
- package/dist/collection/components/editors/revogr-edit-style.css +16 -0
- package/dist/collection/components/editors/revogr-edit.js +346 -0
- package/dist/collection/components/editors/revogr-edit.js.map +1 -0
- package/dist/collection/components/editors/text-editor.js +74 -0
- package/dist/collection/components/editors/text-editor.js.map +1 -0
- package/dist/collection/components/extra/revogr-extra.js +125 -0
- package/dist/collection/components/extra/revogr-extra.js.map +1 -0
- package/dist/collection/components/header/header-cell-renderer.js +34 -0
- package/dist/collection/components/header/header-cell-renderer.js.map +1 -0
- package/dist/collection/components/header/header-group-renderer.js +25 -0
- package/dist/collection/components/header/header-group-renderer.js.map +1 -0
- package/dist/collection/components/header/header-renderer.js +61 -0
- package/dist/collection/components/header/header-renderer.js.map +1 -0
- package/dist/collection/components/header/resizable.directive.js +237 -0
- package/dist/collection/components/header/resizable.directive.js.map +1 -0
- package/dist/collection/components/header/resizable.element.js +38 -0
- package/dist/collection/components/header/resizable.element.js.map +1 -0
- package/dist/collection/components/header/revogr-header-style.css +144 -0
- package/dist/collection/components/header/revogr-header.js +573 -0
- package/dist/collection/components/header/revogr-header.js.map +1 -0
- package/dist/collection/components/order/order-renderer.js +50 -0
- package/dist/collection/components/order/order-renderer.js.map +1 -0
- package/dist/collection/components/order/order-row.service.js +72 -0
- package/dist/collection/components/order/order-row.service.js.map +1 -0
- package/dist/collection/components/order/revogr-order-editor.js +461 -0
- package/dist/collection/components/order/revogr-order-editor.js.map +1 -0
- package/dist/collection/components/overlay/autofill.service.js +224 -0
- package/dist/collection/components/overlay/autofill.service.js.map +1 -0
- package/dist/collection/components/overlay/keyboard.service.js +158 -0
- package/dist/collection/components/overlay/keyboard.service.js.map +1 -0
- package/dist/collection/components/overlay/revogr-overlay-selection.js +1515 -0
- package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -0
- package/dist/collection/components/overlay/revogr-overlay-style.css +95 -0
- package/dist/collection/components/overlay/selection.utils.js +136 -0
- package/dist/collection/components/overlay/selection.utils.js.map +1 -0
- package/dist/collection/components/revoGrid/grid.helpers.js +33 -0
- package/dist/collection/components/revoGrid/grid.helpers.js.map +1 -0
- 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 +567 -0
- package/dist/collection/components/revoGrid/revo-grid.js +3671 -0
- package/dist/collection/components/revoGrid/revo-grid.js.map +1 -0
- package/dist/collection/components/revoGrid/viewport.helpers.js +49 -0
- package/dist/collection/components/revoGrid/viewport.helpers.js.map +1 -0
- package/dist/collection/components/revoGrid/viewport.resize.service.js +55 -0
- package/dist/collection/components/revoGrid/viewport.resize.service.js.map +1 -0
- package/dist/collection/components/revoGrid/viewport.scrolling.service.js +90 -0
- package/dist/collection/components/revoGrid/viewport.scrolling.service.js.map +1 -0
- package/dist/collection/components/revoGrid/viewport.service.js +237 -0
- package/dist/collection/components/revoGrid/viewport.service.js.map +1 -0
- package/dist/collection/components/rowHeaders/revogr-row-headers.js +291 -0
- package/dist/collection/components/rowHeaders/revogr-row-headers.js.map +1 -0
- package/dist/collection/components/rowHeaders/row-header-render.js +5 -0
- package/dist/collection/components/rowHeaders/row-header-render.js.map +1 -0
- package/dist/collection/components/scroll/revogr-viewport-scroll-style.css +69 -0
- package/dist/collection/components/scroll/revogr-viewport-scroll.js +601 -0
- package/dist/collection/components/scroll/revogr-viewport-scroll.js.map +1 -0
- package/dist/collection/components/scrollable/autohide-scroll.plugin.js +44 -0
- package/dist/collection/components/scrollable/autohide-scroll.plugin.js.map +1 -0
- package/dist/collection/components/scrollable/revogr-scroll-style.css +34 -0
- package/dist/collection/components/scrollable/revogr-scroll-virtual.js +295 -0
- package/dist/collection/components/scrollable/revogr-scroll-virtual.js.map +1 -0
- package/dist/collection/components/selectionFocus/revogr-focus-style.css +7 -0
- package/dist/collection/components/selectionFocus/revogr-focus.js +400 -0
- package/dist/collection/components/selectionFocus/revogr-focus.js.map +1 -0
- package/dist/collection/components/selectionTempRange/revogr-temp-range-style.css +28 -0
- package/dist/collection/components/selectionTempRange/revogr-temp-range.js +171 -0
- package/dist/collection/components/selectionTempRange/revogr-temp-range.js.map +1 -0
- package/dist/collection/components/vnode/vnode-converter.js +84 -0
- package/dist/collection/components/vnode/vnode-converter.js.map +1 -0
- package/dist/collection/components/vnode/vnode.utils.js +18 -0
- package/dist/collection/components/vnode/vnode.utils.js.map +1 -0
- package/dist/collection/global/global.js +19 -0
- package/dist/collection/global/global.js.map +1 -0
- package/dist/collection/index.js +13 -0
- package/dist/collection/index.js.map +1 -0
- 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 +90 -0
- package/dist/collection/plugins/base.plugin.js.map +1 -0
- package/dist/collection/plugins/column.auto-size.plugin.js +225 -0
- package/dist/collection/plugins/column.auto-size.plugin.js.map +1 -0
- package/dist/collection/plugins/column.stretch.plugin.js +96 -0
- package/dist/collection/plugins/column.stretch.plugin.js.map +1 -0
- package/dist/collection/plugins/dispatcher.js +40 -0
- package/dist/collection/plugins/dispatcher.js.map +1 -0
- package/dist/collection/plugins/export/csv.js +72 -0
- package/dist/collection/plugins/export/csv.js.map +1 -0
- package/dist/collection/plugins/export/export.plugin.js +157 -0
- package/dist/collection/plugins/export/export.plugin.js.map +1 -0
- package/dist/collection/plugins/export/types.js +2 -0
- package/dist/collection/plugins/export/types.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/equal.js +21 -0
- package/dist/collection/plugins/filter/conditions/equal.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/number/greaterThan.js +14 -0
- package/dist/collection/plugins/filter/conditions/number/greaterThan.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js +11 -0
- package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/number/lessThan.js +16 -0
- package/dist/collection/plugins/filter/conditions/number/lessThan.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js +11 -0
- package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/set.js +7 -0
- package/dist/collection/plugins/filter/conditions/set.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/string/beginswith.js +21 -0
- package/dist/collection/plugins/filter/conditions/string/beginswith.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/string/contains.js +25 -0
- package/dist/collection/plugins/filter/conditions/string/contains.js.map +1 -0
- package/dist/collection/plugins/filter/filter.button.js +28 -0
- package/dist/collection/plugins/filter/filter.button.js.map +1 -0
- package/dist/collection/plugins/filter/filter.indexed.js +49 -0
- package/dist/collection/plugins/filter/filter.indexed.js.map +1 -0
- package/dist/collection/plugins/filter/filter.panel.js +610 -0
- package/dist/collection/plugins/filter/filter.panel.js.map +1 -0
- package/dist/collection/plugins/filter/filter.plugin.js +388 -0
- package/dist/collection/plugins/filter/filter.plugin.js.map +1 -0
- package/dist/collection/plugins/filter/filter.style.css +165 -0
- package/dist/collection/plugins/filter/filter.types.js +9 -0
- package/dist/collection/plugins/filter/filter.types.js.map +1 -0
- package/dist/collection/plugins/groupingRow/grouping.const.js +16 -0
- package/dist/collection/plugins/groupingRow/grouping.const.js.map +1 -0
- package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js +79 -0
- package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js.map +1 -0
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +245 -0
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -0
- package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +38 -0
- package/dist/collection/plugins/groupingRow/grouping.row.renderer.js.map +1 -0
- package/dist/collection/plugins/groupingRow/grouping.row.types.js +2 -0
- package/dist/collection/plugins/groupingRow/grouping.row.types.js.map +1 -0
- package/dist/collection/plugins/groupingRow/grouping.service.js +178 -0
- package/dist/collection/plugins/groupingRow/grouping.service.js.map +1 -0
- package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js +61 -0
- package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js.map +1 -0
- package/dist/collection/plugins/index.js +15 -0
- package/dist/collection/plugins/index.js.map +1 -0
- package/dist/collection/plugins/moveColumn/column.drag.plugin.js +175 -0
- package/dist/collection/plugins/moveColumn/column.drag.plugin.js.map +1 -0
- package/dist/collection/plugins/moveColumn/order-column.handler.js +71 -0
- package/dist/collection/plugins/moveColumn/order-column.handler.js.map +1 -0
- package/dist/collection/plugins/rtl/rtl.plugin.js +110 -0
- package/dist/collection/plugins/rtl/rtl.plugin.js.map +1 -0
- package/dist/collection/plugins/sorting/sorting.func.js +82 -0
- package/dist/collection/plugins/sorting/sorting.func.js.map +1 -0
- package/dist/collection/plugins/sorting/sorting.plugin.js +224 -0
- package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -0
- package/dist/collection/plugins/sorting/sorting.sign.js +9 -0
- package/dist/collection/plugins/sorting/sorting.sign.js.map +1 -0
- package/dist/collection/plugins/sorting/sorting.types.js +2 -0
- package/dist/collection/plugins/sorting/sorting.types.js.map +1 -0
- package/dist/collection/plugins/wcag/index.js +84 -0
- package/dist/collection/plugins/wcag/index.js.map +1 -0
- package/dist/collection/serve/controller.js +344 -0
- package/dist/collection/serve/data.js +201 -0
- package/dist/collection/services/cell.helpers.js +12 -0
- package/dist/collection/services/cell.helpers.js.map +1 -0
- package/dist/collection/services/column.data.provider.js +119 -0
- package/dist/collection/services/column.data.provider.js.map +1 -0
- package/dist/collection/services/data.provider.js +89 -0
- package/dist/collection/services/data.provider.js.map +1 -0
- package/dist/collection/services/dimension.provider.js +176 -0
- package/dist/collection/services/dimension.provider.js.map +1 -0
- package/dist/collection/services/local.scroll.service.js +124 -0
- package/dist/collection/services/local.scroll.service.js.map +1 -0
- package/dist/collection/services/local.scroll.timer.js +81 -0
- package/dist/collection/services/local.scroll.timer.js.map +1 -0
- package/dist/collection/services/selection.store.connector.js +307 -0
- package/dist/collection/services/selection.store.connector.js.map +1 -0
- package/dist/collection/services/viewport.provider.js +17 -0
- package/dist/collection/services/viewport.provider.js.map +1 -0
- package/dist/collection/store/dataSource/data.proxy.js +45 -0
- package/dist/collection/store/dataSource/data.proxy.js.map +1 -0
- package/dist/collection/store/dataSource/data.store.js +144 -0
- package/dist/collection/store/dataSource/data.store.js.map +1 -0
- package/dist/collection/store/dataSource/index.js +7 -0
- package/dist/collection/store/dataSource/index.js.map +1 -0
- package/dist/collection/store/dataSource/trimmed.plugin.js +34 -0
- package/dist/collection/store/dataSource/trimmed.plugin.js.map +1 -0
- package/dist/collection/store/dimension/dimension.helpers.js +101 -0
- package/dist/collection/store/dimension/dimension.helpers.js.map +1 -0
- 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 +109 -0
- package/dist/collection/store/dimension/dimension.store.js.map +1 -0
- 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/dimension/index.js +6 -0
- package/dist/collection/store/dimension/index.js.map +1 -0
- package/dist/collection/store/index.js +17 -0
- package/dist/collection/store/index.js.map +1 -0
- package/dist/collection/store/selection/index.js +6 -0
- package/dist/collection/store/selection/index.js.map +1 -0
- package/dist/collection/store/selection/selection.helpers.js +53 -0
- package/dist/collection/store/selection/selection.helpers.js.map +1 -0
- package/dist/collection/store/selection/selection.store.js +85 -0
- package/dist/collection/store/selection/selection.store.js.map +1 -0
- package/dist/collection/store/vp/index.js +6 -0
- package/dist/collection/store/vp/index.js.map +1 -0
- package/dist/collection/store/vp/viewport.helpers.js +251 -0
- package/dist/collection/store/vp/viewport.helpers.js.map +1 -0
- package/dist/collection/store/vp/viewport.store.js +151 -0
- package/dist/collection/store/vp/viewport.store.js.map +1 -0
- package/dist/collection/themeManager/theme.compact.js +9 -0
- package/dist/collection/themeManager/theme.compact.js.map +1 -0
- package/dist/collection/themeManager/theme.default.js +9 -0
- package/dist/collection/themeManager/theme.default.js.map +1 -0
- package/dist/collection/themeManager/theme.material.js +9 -0
- package/dist/collection/themeManager/theme.material.js.map +1 -0
- package/dist/collection/themeManager/theme.service.js +53 -0
- package/dist/collection/themeManager/theme.service.js.map +1 -0
- package/dist/collection/types/dimension.js +2 -0
- package/dist/collection/types/dimension.js.map +1 -0
- package/dist/collection/types/events.js +118 -0
- package/dist/collection/types/events.js.map +1 -0
- package/dist/collection/types/index.js +12 -0
- package/dist/collection/types/index.js.map +1 -0
- package/dist/collection/types/interfaces.js +2 -0
- package/dist/collection/types/interfaces.js.map +1 -0
- package/dist/collection/types/plugin.js +2 -0
- package/dist/collection/types/plugin.js.map +1 -0
- package/dist/collection/types/plugin.types.js +2 -0
- package/dist/collection/types/plugin.types.js.map +1 -0
- package/dist/collection/types/selection.js +2 -0
- package/dist/collection/types/selection.js.map +1 -0
- package/dist/collection/types/theme.js +2 -0
- package/dist/collection/types/theme.js.map +1 -0
- package/dist/collection/types/viewport.interfaces.js +2 -0
- package/dist/collection/types/viewport.interfaces.js.map +1 -0
- package/dist/collection/utils/browser.js +7 -0
- package/dist/collection/utils/browser.js.map +1 -0
- package/dist/collection/utils/closest.polifill.js +22 -0
- package/dist/collection/utils/closest.polifill.js.map +1 -0
- package/dist/collection/utils/column.utils.js +153 -0
- package/dist/collection/utils/column.utils.js.map +1 -0
- package/dist/collection/utils/consts.js +26 -0
- package/dist/collection/utils/consts.js.map +1 -0
- package/dist/collection/utils/events.js +39 -0
- package/dist/collection/utils/events.js.map +1 -0
- package/dist/collection/utils/header.utils.js +24 -0
- package/dist/collection/utils/header.utils.js.map +1 -0
- package/dist/collection/utils/index.js +140 -0
- package/dist/collection/utils/index.js.map +1 -0
- package/dist/collection/utils/key.codes.js +80 -0
- package/dist/collection/utils/key.codes.js.map +1 -0
- package/dist/collection/utils/key.utils.js +90 -0
- package/dist/collection/utils/key.utils.js.map +1 -0
- package/dist/collection/utils/mobile.js +7 -0
- package/dist/collection/utils/mobile.js.map +1 -0
- package/dist/collection/utils/platform.js +9 -0
- package/dist/collection/utils/platform.js.map +1 -0
- package/dist/collection/utils/row-header-utils.js +9 -0
- package/dist/collection/utils/row-header-utils.js.map +1 -0
- package/dist/collection/utils/store.types.js +2 -0
- package/dist/collection/utils/store.types.js.map +1 -0
- package/dist/collection/utils/store.utils.js +15 -0
- package/dist/collection/utils/store.utils.js.map +1 -0
- package/dist/esm/app-globals-FBz64o-g.js +14 -0
- package/dist/esm/app-globals-FBz64o-g.js.map +1 -0
- package/dist/esm/cell-renderer-Ca_PCGjJ.js +98 -0
- package/dist/esm/cell-renderer-Ca_PCGjJ.js.map +1 -0
- package/dist/esm/column.drag.plugin-BtuUyB-2.js +2528 -0
- package/dist/esm/column.drag.plugin-BtuUyB-2.js.map +1 -0
- package/dist/esm/column.service-CTqFIQUy.js +1343 -0
- package/dist/esm/column.service-CTqFIQUy.js.map +1 -0
- package/dist/esm/data.store-B-lvmoFH.js +3553 -0
- package/dist/esm/data.store-B-lvmoFH.js.map +1 -0
- package/dist/esm/debounce-DTUQ1fY7.js +488 -0
- package/dist/esm/debounce-DTUQ1fY7.js.map +1 -0
- package/dist/esm/edit.utils-CyCANCLB.js +103 -0
- package/dist/esm/edit.utils-CyCANCLB.js.map +1 -0
- package/dist/esm/events-CKtYJJSv.js +43 -0
- package/dist/esm/events-CKtYJJSv.js.map +1 -0
- package/dist/esm/filter.button-CjABZQgg.js +39 -0
- package/dist/esm/filter.button-CjABZQgg.js.map +1 -0
- package/dist/esm/header-cell-renderer-DnjpJuXq.js +351 -0
- package/dist/esm/header-cell-renderer-DnjpJuXq.js.map +1 -0
- package/dist/esm/index-BAoInZ4V.js +2519 -0
- package/dist/esm/index-BAoInZ4V.js.map +1 -0
- package/dist/esm/index.js +181 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/loader.js +17 -0
- package/dist/esm/loader.js.map +1 -0
- package/dist/esm/revo-grid.entry.js +2185 -0
- package/dist/esm/revo-grid.entry.js.map +1 -0
- package/dist/esm/revo-grid.js +27 -0
- package/dist/esm/revo-grid.js.map +1 -0
- package/dist/esm/revogr-attribution.revogr-extra.revogr-focus.revogr-overlay-selection.revogr-row-headers.revogr-scroll-virtual.revogr-temp-range.entry.js.map +1 -0
- package/dist/esm/revogr-attribution_7.entry.js +1455 -0
- package/dist/esm/revogr-attribution_7.entry.js.map +1 -0
- package/dist/esm/revogr-clipboard.revogr-edit.revogr-order-editor.entry.js.map +1 -0
- package/dist/esm/revogr-clipboard_3.entry.js +452 -0
- package/dist/esm/revogr-clipboard_3.entry.js.map +1 -0
- package/dist/esm/revogr-data.revogr-header.revogr-viewport-scroll.vnode-html.entry.js.map +1 -0
- package/dist/esm/revogr-data_4.entry.js +943 -0
- package/dist/esm/revogr-data_4.entry.js.map +1 -0
- package/dist/esm/revogr-filter-panel.entry.js +380 -0
- package/dist/esm/revogr-filter-panel.entry.js.map +1 -0
- package/dist/esm/row-header-utils-vnoLGj5A.js +407 -0
- package/dist/esm/row-header-utils-vnoLGj5A.js.map +1 -0
- package/dist/esm/text-editor-Cp7lwBZi.js +79 -0
- package/dist/esm/text-editor-Cp7lwBZi.js.map +1 -0
- package/dist/esm/throttle-DiUrHjcY.js +273 -0
- package/dist/esm/throttle-DiUrHjcY.js.map +1 -0
- package/dist/esm/viewport.helpers-Ch4AQMMg.js +53 -0
- package/dist/esm/viewport.helpers-Ch4AQMMg.js.map +1 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/revo-grid/app-globals-FBz64o-g.js +14 -0
- package/dist/revo-grid/app-globals-FBz64o-g.js.map +1 -0
- package/dist/revo-grid/cell-renderer-Ca_PCGjJ.js +98 -0
- package/dist/revo-grid/cell-renderer-Ca_PCGjJ.js.map +1 -0
- package/dist/revo-grid/column.drag.plugin-BtuUyB-2.js +2528 -0
- package/dist/revo-grid/column.drag.plugin-BtuUyB-2.js.map +1 -0
- package/dist/revo-grid/column.service-CTqFIQUy.js +1343 -0
- package/dist/revo-grid/column.service-CTqFIQUy.js.map +1 -0
- package/dist/revo-grid/data.store-B-lvmoFH.js +3553 -0
- package/dist/revo-grid/data.store-B-lvmoFH.js.map +1 -0
- package/dist/revo-grid/debounce-DTUQ1fY7.js +488 -0
- package/dist/revo-grid/debounce-DTUQ1fY7.js.map +1 -0
- package/dist/revo-grid/edit.utils-CyCANCLB.js +103 -0
- package/dist/revo-grid/edit.utils-CyCANCLB.js.map +1 -0
- package/dist/revo-grid/events-CKtYJJSv.js +43 -0
- package/dist/revo-grid/events-CKtYJJSv.js.map +1 -0
- package/dist/revo-grid/filter.button-CjABZQgg.js +39 -0
- package/dist/revo-grid/filter.button-CjABZQgg.js.map +1 -0
- package/dist/revo-grid/header-cell-renderer-DnjpJuXq.js +351 -0
- package/dist/revo-grid/header-cell-renderer-DnjpJuXq.js.map +1 -0
- package/dist/revo-grid/index-BAoInZ4V.js +2490 -0
- package/dist/revo-grid/index-BAoInZ4V.js.map +1 -0
- package/dist/revo-grid/index.esm.js +181 -0
- package/dist/revo-grid/index.esm.js.map +1 -0
- package/dist/revo-grid/loader.esm.js.map +1 -0
- package/dist/revo-grid/revo-grid.entry.esm.js.map +1 -0
- package/dist/revo-grid/revo-grid.entry.js +2185 -0
- package/dist/revo-grid/revo-grid.entry.js.map +1 -0
- package/dist/revo-grid/revo-grid.esm.js +27 -0
- package/dist/revo-grid/revo-grid.esm.js.map +1 -0
- package/dist/revo-grid/revogr-attribution.revogr-extra.revogr-focus.revogr-overlay-selection.revogr-row-headers.revogr-scroll-virtual.revogr-temp-range.entry.esm.js.map +1 -0
- package/dist/revo-grid/revogr-attribution_7.entry.js +1455 -0
- package/dist/revo-grid/revogr-attribution_7.entry.js.map +1 -0
- package/dist/revo-grid/revogr-clipboard.revogr-edit.revogr-order-editor.entry.esm.js.map +1 -0
- package/dist/revo-grid/revogr-clipboard_3.entry.js +452 -0
- package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -0
- package/dist/revo-grid/revogr-data.revogr-header.revogr-viewport-scroll.vnode-html.entry.esm.js.map +1 -0
- package/dist/revo-grid/revogr-data_4.entry.js +943 -0
- package/dist/revo-grid/revogr-data_4.entry.js.map +1 -0
- package/dist/revo-grid/revogr-filter-panel.entry.esm.js.map +1 -0
- package/dist/revo-grid/revogr-filter-panel.entry.js +380 -0
- package/dist/revo-grid/revogr-filter-panel.entry.js.map +1 -0
- package/dist/revo-grid/row-header-utils-vnoLGj5A.js +407 -0
- package/dist/revo-grid/row-header-utils-vnoLGj5A.js.map +1 -0
- package/dist/revo-grid/text-editor-Cp7lwBZi.js +79 -0
- package/dist/revo-grid/text-editor-Cp7lwBZi.js.map +1 -0
- package/dist/revo-grid/throttle-DiUrHjcY.js +273 -0
- package/dist/revo-grid/throttle-DiUrHjcY.js.map +1 -0
- package/dist/revo-grid/viewport.helpers-Ch4AQMMg.js +53 -0
- package/dist/revo-grid/viewport.helpers-Ch4AQMMg.js.map +1 -0
- package/dist/types/components/attribution/revogr-attribution.d.ts +12 -0
- package/dist/types/components/clipboard/revogr-clipboard.d.ts +89 -0
- package/dist/types/components/data/cell-renderer.d.ts +12 -0
- package/dist/types/components/data/column.service.d.ts +61 -0
- package/dist/types/components/data/revogr-data.d.ts +107 -0
- package/dist/types/components/data/row-highlight.plugin.d.ts +10 -0
- package/dist/types/components/data/row-renderer.d.ts +12 -0
- package/dist/types/components/editors/edit.utils.d.ts +3 -0
- package/dist/types/components/editors/revogr-edit.d.ts +63 -0
- package/dist/types/components/editors/text-editor.d.ts +43 -0
- package/dist/types/components/extra/revogr-extra.d.ts +38 -0
- package/dist/types/components/header/header-cell-renderer.d.ts +9 -0
- package/dist/types/components/header/header-group-renderer.d.ts +15 -0
- package/dist/types/components/header/header-renderer.d.ts +16 -0
- package/dist/types/components/header/resizable.directive.d.ts +55 -0
- package/dist/types/components/header/resizable.element.d.ts +5 -0
- package/dist/types/components/header/revogr-header.d.ts +90 -0
- package/dist/types/components/order/order-renderer.d.ts +29 -0
- package/dist/types/components/order/order-row.service.d.ts +27 -0
- package/dist/types/components/order/revogr-order-editor.d.ts +56 -0
- package/dist/types/components/overlay/autofill.service.d.ts +80 -0
- package/dist/types/components/overlay/keyboard.service.d.ts +28 -0
- package/dist/types/components/overlay/revogr-overlay-selection.d.ts +278 -0
- package/dist/types/components/overlay/selection.utils.d.ts +47 -0
- package/dist/types/components/revoGrid/grid.helpers.d.ts +17 -0
- package/dist/types/components/revoGrid/plugin.service.d.ts +37 -0
- package/dist/types/components/revoGrid/revo-grid.d.ts +686 -0
- package/dist/types/components/revoGrid/viewport.helpers.d.ts +39 -0
- package/dist/types/components/revoGrid/viewport.resize.service.d.ts +17 -0
- package/dist/types/components/revoGrid/viewport.scrolling.service.d.ts +20 -0
- package/dist/types/components/revoGrid/viewport.service.d.ts +59 -0
- package/dist/types/components/rowHeaders/revogr-row-headers.d.ts +51 -0
- package/dist/types/components/rowHeaders/row-header-render.d.ts +9 -0
- package/dist/types/components/scroll/revogr-viewport-scroll.d.ts +117 -0
- package/dist/types/components/scrollable/autohide-scroll.plugin.d.ts +22 -0
- package/dist/types/components/scrollable/revogr-scroll-virtual.d.ts +43 -0
- package/dist/types/components/selectionFocus/revogr-focus.d.ts +58 -0
- package/dist/types/components/selectionTempRange/revogr-temp-range.d.ts +28 -0
- package/dist/types/components/vnode/vnode-converter.d.ts +19 -0
- package/dist/types/components/vnode/vnode.utils.d.ts +9 -0
- package/dist/types/components.d.ts +2583 -0
- package/dist/types/global/global.d.ts +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/plugins/add-rows-on-paste.plugin.d.ts +14 -0
- package/dist/types/plugins/base.plugin.d.ts +51 -0
- package/dist/types/plugins/column.auto-size.plugin.d.ts +55 -0
- package/dist/types/plugins/column.stretch.plugin.d.ts +20 -0
- package/dist/types/plugins/dispatcher.d.ts +20 -0
- package/dist/types/plugins/export/csv.d.ts +9 -0
- package/dist/types/plugins/export/export.plugin.d.ts +24 -0
- package/dist/types/plugins/export/types.d.ts +23 -0
- package/dist/types/plugins/filter/conditions/equal.d.ts +4 -0
- package/dist/types/plugins/filter/conditions/number/greaterThan.d.ts +3 -0
- package/dist/types/plugins/filter/conditions/number/greaterThanOrEqual.d.ts +3 -0
- package/dist/types/plugins/filter/conditions/number/lessThan.d.ts +3 -0
- package/dist/types/plugins/filter/conditions/number/lessThanOrEqual.d.ts +3 -0
- package/dist/types/plugins/filter/conditions/set.d.ts +4 -0
- package/dist/types/plugins/filter/conditions/string/beginswith.d.ts +3 -0
- package/dist/types/plugins/filter/conditions/string/contains.d.ts +4 -0
- package/dist/types/plugins/filter/filter.button.d.ts +14 -0
- package/dist/types/plugins/filter/filter.indexed.d.ts +20 -0
- package/dist/types/plugins/filter/filter.panel.d.ts +53 -0
- package/dist/types/plugins/filter/filter.plugin.d.ts +73 -0
- package/dist/types/plugins/filter/filter.types.d.ts +129 -0
- package/dist/types/plugins/groupingRow/grouping.const.d.ts +12 -0
- package/dist/types/plugins/groupingRow/grouping.row.expand.service.d.ts +15 -0
- package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +39 -0
- package/dist/types/plugins/groupingRow/grouping.row.renderer.d.ts +6 -0
- package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +103 -0
- package/dist/types/plugins/groupingRow/grouping.service.d.ts +36 -0
- package/dist/types/plugins/groupingRow/grouping.trimmed.service.d.ts +10 -0
- package/dist/types/plugins/index.d.ts +11 -0
- package/dist/types/plugins/moveColumn/column.drag.plugin.d.ts +42 -0
- package/dist/types/plugins/moveColumn/order-column.handler.d.ts +16 -0
- package/dist/types/plugins/rtl/rtl.plugin.d.ts +37 -0
- package/dist/types/plugins/sorting/sorting.func.d.ts +9 -0
- package/dist/types/plugins/sorting/sorting.plugin.d.ts +48 -0
- package/dist/types/plugins/sorting/sorting.sign.d.ts +6 -0
- package/dist/types/plugins/sorting/sorting.types.d.ts +14 -0
- package/dist/types/plugins/wcag/index.d.ts +26 -0
- package/dist/types/services/cell.helpers.d.ts +2 -0
- package/dist/types/services/column.data.provider.d.ts +27 -0
- package/dist/types/services/data.provider.d.ts +36 -0
- package/dist/types/services/dimension.provider.d.ts +66 -0
- package/dist/types/services/local.scroll.service.d.ts +36 -0
- package/dist/types/services/local.scroll.timer.d.ts +32 -0
- package/dist/types/services/selection.store.connector.d.ts +79 -0
- package/dist/types/services/viewport.provider.d.ts +7 -0
- package/dist/types/stencil-public-runtime.d.ts +1709 -0
- package/dist/types/store/dataSource/data.proxy.d.ts +14 -0
- package/dist/types/store/dataSource/data.store.d.ts +74 -0
- package/dist/types/store/dataSource/index.d.ts +3 -0
- package/dist/types/store/dataSource/trimmed.plugin.d.ts +12 -0
- package/dist/types/store/dimension/dimension.helpers.d.ts +24 -0
- package/dist/types/store/dimension/dimension.recalculate.plugin.d.ts +9 -0
- package/dist/types/store/dimension/dimension.store.d.ts +21 -0
- package/dist/types/store/dimension/dimension.trim.plugin.d.ts +13 -0
- package/dist/types/store/dimension/index.d.ts +2 -0
- package/dist/types/store/index.d.ts +8 -0
- package/dist/types/store/selection/index.d.ts +2 -0
- package/dist/types/store/selection/selection.helpers.d.ts +6 -0
- package/dist/types/store/selection/selection.store.d.ts +22 -0
- package/dist/types/store/vp/index.d.ts +7 -0
- package/dist/types/store/vp/viewport.helpers.d.ts +54 -0
- package/dist/types/store/vp/viewport.store.d.ts +26 -0
- package/dist/types/themeManager/theme.compact.d.ts +4 -0
- package/dist/types/themeManager/theme.default.d.ts +4 -0
- package/dist/types/themeManager/theme.material.d.ts +4 -0
- package/dist/types/themeManager/theme.service.d.ts +13 -0
- package/dist/types/types/dimension.d.ts +8 -0
- package/dist/types/types/events.d.ts +2 -0
- package/dist/types/types/index.d.ts +8 -0
- package/dist/types/types/interfaces.d.ts +768 -0
- package/dist/types/types/plugin.d.ts +9 -0
- package/dist/types/types/plugin.types.d.ts +48 -0
- package/dist/types/types/selection.d.ts +178 -0
- package/dist/types/types/theme.d.ts +7 -0
- package/dist/types/types/viewport.interfaces.d.ts +45 -0
- package/dist/types/utils/browser.d.ts +1 -0
- package/dist/types/utils/closest.polifill.d.ts +0 -0
- package/dist/types/utils/column.utils.d.ts +52 -0
- package/dist/types/utils/consts.d.ts +22 -0
- package/dist/types/utils/events.d.ts +5 -0
- package/dist/types/utils/header.utils.d.ts +2 -0
- package/dist/types/utils/index.d.ts +32 -0
- package/dist/types/utils/key.codes.d.ts +73 -0
- package/dist/types/utils/key.utils.d.ts +13 -0
- package/dist/types/utils/mobile.d.ts +1 -0
- package/dist/types/utils/platform.d.ts +4 -0
- package/dist/types/utils/row-header-utils.d.ts +2 -0
- package/dist/types/utils/store.types.d.ts +97 -0
- package/dist/types/utils/store.utils.d.ts +10 -0
- package/hydrate/index.d.ts +273 -0
- package/hydrate/index.js +33890 -0
- package/hydrate/index.mjs +33882 -0
- package/hydrate/package.json +12 -0
- package/loader/cdn.js +4 -0
- package/loader/index.cjs.js +4 -0
- package/loader/index.d.ts +24 -0
- package/loader/index.es2017.js +4 -0
- package/loader/index.js +5 -0
- package/package.json +101 -0
- package/react/dist/index.d.ts +6191 -0
- package/react/dist/react-datagrid.js +260 -0
- package/react/dist/react-datagrid.umd.cjs +272 -0
- package/standalone/column.service.js +1345 -0
- package/standalone/column.service.js.map +1 -0
- package/standalone/consts.js +30 -0
- package/standalone/consts.js.map +1 -0
- package/standalone/data.store.js +3099 -0
- package/standalone/data.store.js.map +1 -0
- package/standalone/debounce.js +215 -0
- package/standalone/debounce.js.map +1 -0
- package/standalone/dimension.helpers.js +229 -0
- package/standalone/dimension.helpers.js.map +1 -0
- package/standalone/filter.button.js +39 -0
- package/standalone/filter.button.js.map +1 -0
- package/standalone/index.d.ts +68 -0
- package/standalone/index.js +217 -0
- package/standalone/index.js.map +1 -0
- package/standalone/index2.js +140 -0
- package/standalone/index2.js.map +1 -0
- package/standalone/local.scroll.timer.js +207 -0
- package/standalone/local.scroll.timer.js.map +1 -0
- package/standalone/platform.js +90 -0
- package/standalone/platform.js.map +1 -0
- package/standalone/revo-grid.d.ts +11 -0
- package/standalone/revo-grid.js +4884 -0
- package/standalone/revo-grid.js.map +1 -0
- package/standalone/revogr-attribution.d.ts +11 -0
- package/standalone/revogr-attribution.js +12 -0
- package/standalone/revogr-attribution.js.map +1 -0
- package/standalone/revogr-attribution2.js +32 -0
- package/standalone/revogr-attribution2.js.map +1 -0
- package/standalone/revogr-clipboard.d.ts +11 -0
- package/standalone/revogr-clipboard.js +12 -0
- package/standalone/revogr-clipboard.js.map +1 -0
- package/standalone/revogr-clipboard2.js +164 -0
- package/standalone/revogr-clipboard2.js.map +1 -0
- package/standalone/revogr-data.d.ts +11 -0
- package/standalone/revogr-data.js +12 -0
- package/standalone/revogr-data.js.map +1 -0
- package/standalone/revogr-data2.js +378 -0
- package/standalone/revogr-data2.js.map +1 -0
- package/standalone/revogr-edit.d.ts +11 -0
- package/standalone/revogr-edit.js +12 -0
- package/standalone/revogr-edit.js.map +1 -0
- package/standalone/revogr-edit2.js +334 -0
- package/standalone/revogr-edit2.js.map +1 -0
- package/standalone/revogr-extra.d.ts +11 -0
- package/standalone/revogr-extra.js +12 -0
- package/standalone/revogr-extra.js.map +1 -0
- package/standalone/revogr-extra2.js +73 -0
- package/standalone/revogr-extra2.js.map +1 -0
- package/standalone/revogr-filter-panel.d.ts +11 -0
- package/standalone/revogr-filter-panel.js +411 -0
- package/standalone/revogr-filter-panel.js.map +1 -0
- package/standalone/revogr-focus.d.ts +11 -0
- package/standalone/revogr-focus.js +12 -0
- package/standalone/revogr-focus.js.map +1 -0
- package/standalone/revogr-focus2.js +112 -0
- package/standalone/revogr-focus2.js.map +1 -0
- package/standalone/revogr-header.d.ts +11 -0
- package/standalone/revogr-header.js +12 -0
- package/standalone/revogr-header.js.map +1 -0
- package/standalone/revogr-header2.js +707 -0
- package/standalone/revogr-header2.js.map +1 -0
- package/standalone/revogr-order-editor.d.ts +11 -0
- package/standalone/revogr-order-editor.js +12 -0
- package/standalone/revogr-order-editor.js.map +1 -0
- package/standalone/revogr-order-editor2.js +201 -0
- package/standalone/revogr-order-editor2.js.map +1 -0
- package/standalone/revogr-overlay-selection.d.ts +11 -0
- package/standalone/revogr-overlay-selection.js +12 -0
- package/standalone/revogr-overlay-selection.js.map +1 -0
- package/standalone/revogr-overlay-selection2.js +972 -0
- package/standalone/revogr-overlay-selection2.js.map +1 -0
- package/standalone/revogr-row-headers.d.ts +11 -0
- package/standalone/revogr-row-headers.js +12 -0
- package/standalone/revogr-row-headers.js.map +1 -0
- package/standalone/revogr-row-headers2.js +520 -0
- package/standalone/revogr-row-headers2.js.map +1 -0
- package/standalone/revogr-scroll-virtual.d.ts +11 -0
- package/standalone/revogr-scroll-virtual.js +12 -0
- package/standalone/revogr-scroll-virtual.js.map +1 -0
- package/standalone/revogr-scroll-virtual2.js +184 -0
- package/standalone/revogr-scroll-virtual2.js.map +1 -0
- package/standalone/revogr-temp-range.d.ts +11 -0
- package/standalone/revogr-temp-range.js +12 -0
- package/standalone/revogr-temp-range.js.map +1 -0
- package/standalone/revogr-temp-range2.js +93 -0
- package/standalone/revogr-temp-range2.js.map +1 -0
- package/standalone/revogr-viewport-scroll.d.ts +11 -0
- package/standalone/revogr-viewport-scroll.js +12 -0
- package/standalone/revogr-viewport-scroll.js.map +1 -0
- package/standalone/revogr-viewport-scroll2.js +421 -0
- package/standalone/revogr-viewport-scroll2.js.map +1 -0
- package/standalone/selection.utils.js +179 -0
- package/standalone/selection.utils.js.map +1 -0
- package/standalone/throttle.js +75 -0
- package/standalone/throttle.js.map +1 -0
- package/standalone/toNumber.js +282 -0
- package/standalone/toNumber.js.map +1 -0
- package/standalone/vnode-converter.js +46 -0
- package/standalone/vnode-converter.js.map +1 -0
- package/standalone/vnode-html.d.ts +11 -0
- package/standalone/vnode-html.js +12 -0
- package/standalone/vnode-html.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grouping.row.types.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.row.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { VNode } from '@stencil/core';\r\nimport type {\r\n HyperFunc,\r\n ColumnProp,\r\n DimensionRows,\r\n DataType,\r\n Providers,\r\n VirtualPositionItem,\r\n PositionItem,\r\n DimensionCols,\r\n} from '@type';\r\nimport type { RowProps } from '../../components/data/row-renderer';\r\nimport { GROUP_EXPAND_EVENT } from './grouping.const';\r\n\r\n/**\r\n * Properties for the grouping row template\r\n */\r\ninterface GroupTemplateProp {\r\n /**\r\n * Name of the grouping row\r\n */\r\n name: string;\r\n /**\r\n * Index of the grouping row\r\n */\r\n itemIndex: number;\r\n /**\r\n * Expanded state of the grouping row\r\n */\r\n expanded: boolean;\r\n /**\r\n * Depth of the grouping row\r\n */\r\n depth: number;\r\n /**\r\n * Providers for the grid\r\n */\r\n providers: Providers;\r\n /**\r\n * Dimension type (e.g. rgCol, colPinStart, colPinEnd, rowHeaders)\r\n */\r\n colType: DimensionCols | 'rowHeaders';\r\n /**\r\n * Model of the grouping row\r\n */\r\n model?: DataType;\r\n}\r\n\r\nexport type RowGroupingProps = GroupRowPros & PositionItem & {\r\n /**\r\n * Visible columns in the grid, can be used to get the width of the column and position of the column\r\n * to calculate the position of the cells in the grouping row\r\n */\r\n columnItems: VirtualPositionItem[];\r\n};\r\nexport interface GroupRowPros extends RowProps {\r\n model: DataType;\r\n hasExpand: boolean;\r\n providers: Providers;\r\n groupingCustomRenderer?: GroupLabelTemplateFunc | null;\r\n}\r\n\r\nexport type GroupLabelTemplateFunc = (\r\n createElement: HyperFunc<VNode>,\r\n props: GroupTemplateProp & RowGroupingProps,\r\n ...args: any[]\r\n) => any;\r\n\r\nexport type GroupingOptions = {\r\n /**\r\n * Column props to which grouping will be applied\r\n */\r\n props?: ColumnProp[];\r\n\r\n /**\r\n * Should grouping be preserved on source update.\r\n * default: true\r\n */\r\n preserveGroupingOnUpdate?: boolean;\r\n /**\r\n * Custom group label template\r\n */\r\n groupLabelTemplate?: GroupLabelTemplateFunc;\r\n} & ExpandedOptions;\r\n\r\nexport type BeforeSourceSetEvent = {\r\n type: DimensionRows;\r\n source: DataType[];\r\n};\r\n\r\nexport type OnExpandEvent = {\r\n model: DataType;\r\n virtualIndex: number;\r\n};\r\n\r\nexport type ExpandedOptions = {\r\n /**\r\n * Currently expanded items. to set expanded: '{ 'a': true, 'a,b': true, 'a,b,c': true }'\r\n */\r\n prevExpanded?: Record<string, boolean>;\r\n\r\n /**\r\n * Is expanded by default\r\n */\r\n expandedAll?: boolean;\r\n\r\n /**\r\n * Custom group label value parser\r\n */\r\n getGroupValue?(item: DataType, prop: string | number): any;\r\n /**\r\n * Custom group label template\r\n */\r\n groupLabelTemplate?: GroupLabelTemplateFunc;\r\n};\r\n\r\ndeclare global {\r\n /**\r\n * grid.addEventListener(GROUP_EXPAND_EVENT, (e: OnExpandEvent) => {\r\n * console.log(e)\r\n * })\r\n */\r\n interface HTMLRevoGridElementEventMap {\r\n [GROUP_EXPAND_EVENT]: OnExpandEvent;\r\n }\r\n}"]}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Built by LevelSkill.Pro
|
|
3
|
+
*/
|
|
4
|
+
import { GROUP_DEPTH, GROUP_EXPANDED, PSEUDO_GROUP_COLUMN, PSEUDO_GROUP_ITEM, PSEUDO_GROUP_ITEM_ID, PSEUDO_GROUP_ITEM_VALUE, GROUP_ORIGINAL_INDEX, GROUP_COLUMN_PROP, } from "./grouping.const";
|
|
5
|
+
function getGroupValueDefault(item, prop) {
|
|
6
|
+
return item[prop] || null;
|
|
7
|
+
}
|
|
8
|
+
// get source based on proxy item collection to preserve rgRow order
|
|
9
|
+
export function getSource(source, items, withoutGrouping = false) {
|
|
10
|
+
let index = 0;
|
|
11
|
+
const result = {
|
|
12
|
+
source: [],
|
|
13
|
+
prevExpanded: {},
|
|
14
|
+
oldNewIndexes: {},
|
|
15
|
+
};
|
|
16
|
+
// order important here, expected parent is first, then others
|
|
17
|
+
items.forEach(i => {
|
|
18
|
+
const model = source[i];
|
|
19
|
+
if (!withoutGrouping) {
|
|
20
|
+
result.source.push(model);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
// grouping filter
|
|
24
|
+
if (isGrouping(model)) {
|
|
25
|
+
if (getExpanded(model)) {
|
|
26
|
+
result.prevExpanded[model[PSEUDO_GROUP_ITEM_VALUE]] = true;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
result.source.push(model);
|
|
31
|
+
result.oldNewIndexes[i] = index;
|
|
32
|
+
index++;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
export function getExpanded(model = {}) {
|
|
38
|
+
return model[GROUP_EXPANDED];
|
|
39
|
+
}
|
|
40
|
+
function flattenGroupMaps({ groupedValues, parentIds, isExpanded, itemIndex, expandedAll, prevExpanded, columnProps, }) {
|
|
41
|
+
const depth = parentIds.length;
|
|
42
|
+
const sourceWithGroups = [];
|
|
43
|
+
// collapse all groups in the beginning
|
|
44
|
+
let trimmed = {};
|
|
45
|
+
// index mapping
|
|
46
|
+
let oldNewIndexMap = {};
|
|
47
|
+
groupedValues.forEach((innerGroupedValues, groupId) => {
|
|
48
|
+
const levelIds = [...parentIds, groupId];
|
|
49
|
+
const mergedIds = levelIds.join(',');
|
|
50
|
+
const isGroupExpanded = isExpanded && (!!expandedAll || !!prevExpanded[mergedIds]);
|
|
51
|
+
sourceWithGroups.push({
|
|
52
|
+
[PSEUDO_GROUP_ITEM]: groupId,
|
|
53
|
+
[GROUP_DEPTH]: depth,
|
|
54
|
+
[PSEUDO_GROUP_ITEM_ID]: JSON.stringify(levelIds),
|
|
55
|
+
[PSEUDO_GROUP_ITEM_VALUE]: mergedIds,
|
|
56
|
+
[GROUP_EXPANDED]: isGroupExpanded,
|
|
57
|
+
[GROUP_COLUMN_PROP]: columnProps[depth],
|
|
58
|
+
[columnProps[depth]]: groupId,
|
|
59
|
+
});
|
|
60
|
+
itemIndex += 1;
|
|
61
|
+
// If parent group is collapsed, mark all items as hidden
|
|
62
|
+
if (!isExpanded && depth) {
|
|
63
|
+
trimmed[itemIndex] = true;
|
|
64
|
+
}
|
|
65
|
+
if (Array.isArray(innerGroupedValues)) {
|
|
66
|
+
// This branch handles leaf nodes (actual data items)
|
|
67
|
+
innerGroupedValues.forEach(value => {
|
|
68
|
+
itemIndex += 1;
|
|
69
|
+
if (!isGroupExpanded) {
|
|
70
|
+
trimmed[itemIndex] = true; // Mark items as hidden if group is collapsed
|
|
71
|
+
}
|
|
72
|
+
oldNewIndexMap[value[GROUP_ORIGINAL_INDEX]] = itemIndex; // Keep track of new positions
|
|
73
|
+
});
|
|
74
|
+
sourceWithGroups.push(...innerGroupedValues);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
// This branch handles nested groups (further subgroups)
|
|
78
|
+
const children = flattenGroupMaps({
|
|
79
|
+
groupedValues: innerGroupedValues,
|
|
80
|
+
parentIds: levelIds,
|
|
81
|
+
isExpanded: isGroupExpanded,
|
|
82
|
+
itemIndex,
|
|
83
|
+
expandedAll,
|
|
84
|
+
prevExpanded,
|
|
85
|
+
columnProps,
|
|
86
|
+
}); // Recursively process subgroups
|
|
87
|
+
sourceWithGroups.push(...children.source);
|
|
88
|
+
trimmed = Object.assign(Object.assign({}, children.trimmed), trimmed);
|
|
89
|
+
oldNewIndexMap = Object.assign(Object.assign({}, children.oldNewIndexMap), oldNewIndexMap);
|
|
90
|
+
itemIndex = children.itemIndex;
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
return {
|
|
94
|
+
source: sourceWithGroups,
|
|
95
|
+
oldNewIndexMap,
|
|
96
|
+
trimmed,
|
|
97
|
+
itemIndex,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Gather data for grouping
|
|
102
|
+
* @param array - flat data array
|
|
103
|
+
* @param columnProps - ids of groups
|
|
104
|
+
* @param expanded - potentially expanded items if present
|
|
105
|
+
*/
|
|
106
|
+
export function gatherGrouping(array, columnProps, { prevExpanded = {}, expandedAll = false, getGroupValue = getGroupValueDefault, }) {
|
|
107
|
+
const groupedItems = new Map();
|
|
108
|
+
array.forEach((item, originalIndex) => {
|
|
109
|
+
const groupLevelValues = columnProps.map(groupId => getGroupValue(item, groupId));
|
|
110
|
+
const lastLevelValue = groupLevelValues.pop();
|
|
111
|
+
let currentGroupLevel = groupedItems;
|
|
112
|
+
groupLevelValues.forEach(value => {
|
|
113
|
+
if (!currentGroupLevel.has(value)) {
|
|
114
|
+
currentGroupLevel.set(value, new Map());
|
|
115
|
+
}
|
|
116
|
+
currentGroupLevel = currentGroupLevel.get(value);
|
|
117
|
+
});
|
|
118
|
+
if (!currentGroupLevel.has(lastLevelValue)) {
|
|
119
|
+
const groupItems = [];
|
|
120
|
+
currentGroupLevel.set(lastLevelValue, groupItems);
|
|
121
|
+
}
|
|
122
|
+
const lastLevelItems = currentGroupLevel.get(lastLevelValue);
|
|
123
|
+
lastLevelItems.push(Object.assign(Object.assign({}, item), { [GROUP_ORIGINAL_INDEX]: originalIndex }));
|
|
124
|
+
});
|
|
125
|
+
const groupingDepth = columnProps.length;
|
|
126
|
+
const { source: sourceWithGroups, trimmed, oldNewIndexMap } = flattenGroupMaps({
|
|
127
|
+
groupedValues: groupedItems,
|
|
128
|
+
parentIds: [],
|
|
129
|
+
isExpanded: true,
|
|
130
|
+
itemIndex: -1,
|
|
131
|
+
expandedAll,
|
|
132
|
+
prevExpanded,
|
|
133
|
+
columnProps
|
|
134
|
+
});
|
|
135
|
+
return {
|
|
136
|
+
sourceWithGroups, // updates source mirror
|
|
137
|
+
depth: groupingDepth, // largest depth for grouping
|
|
138
|
+
trimmed, // used for expand/collapse grouping values
|
|
139
|
+
oldNewIndexMap, // used for mapping old values to new
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
export function getGroupingName(rgRow) {
|
|
143
|
+
return rgRow === null || rgRow === void 0 ? void 0 : rgRow[PSEUDO_GROUP_ITEM];
|
|
144
|
+
}
|
|
145
|
+
export function isGrouping(rgRow) {
|
|
146
|
+
return typeof (rgRow === null || rgRow === void 0 ? void 0 : rgRow[PSEUDO_GROUP_ITEM]) !== 'undefined';
|
|
147
|
+
}
|
|
148
|
+
export function isGroupingColumn(column) {
|
|
149
|
+
return typeof (column === null || column === void 0 ? void 0 : column[PSEUDO_GROUP_COLUMN]) !== 'undefined';
|
|
150
|
+
}
|
|
151
|
+
export function measureEqualDepth(groupA, groupB) {
|
|
152
|
+
const ln = groupA.length;
|
|
153
|
+
let i = 0;
|
|
154
|
+
for (; i < ln; i++) {
|
|
155
|
+
if (groupA[i] !== groupB[i]) {
|
|
156
|
+
return i;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return i;
|
|
160
|
+
}
|
|
161
|
+
export function getParsedGroup(id) {
|
|
162
|
+
const parseGroup = JSON.parse(id);
|
|
163
|
+
// extra precaution and type safeguard
|
|
164
|
+
if (!Array.isArray(parseGroup)) {
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
return parseGroup;
|
|
168
|
+
}
|
|
169
|
+
// check if items is child of current clicked group
|
|
170
|
+
export function isSameGroup(currentGroup, currentModel, nextModel) {
|
|
171
|
+
const nextGroup = getParsedGroup(nextModel[PSEUDO_GROUP_ITEM_ID]);
|
|
172
|
+
if (!nextGroup) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
const depth = measureEqualDepth(currentGroup, nextGroup);
|
|
176
|
+
return currentModel[GROUP_DEPTH] < depth;
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=grouping.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grouping.service.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.service.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAU1B,SAAS,oBAAoB,CAAC,IAAc,EAAE,IAAqB;IACjE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,SAAS,CACvB,MAAkB,EAClB,KAAe,EACf,eAAe,GAAG,KAAK;IAEvB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,MAAM,GAA2B;QACrC,MAAM,EAAE,EAAE;QACV,YAAY,EAAE,EAAE;QAChB,aAAa,EAAE,EAAE;KAClB,CAAC;IACF,8DAA8D;IAC9D,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAChB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,kBAAkB;QAClB,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,GAAG,IAAI,CAAC;YAC7D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YAChC,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAkB,EAAE;IAC9C,OAAO,KAAK,CAAC,cAAc,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,gBAAgB,CAAC,EACxB,aAAa,EACb,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,WAAW,GASZ;IACC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;IAC/B,MAAM,gBAAgB,GAAe,EAAE,CAAC;IACxC,uCAAuC;IACvC,IAAI,OAAO,GAA4B,EAAE,CAAC;IAE1C,gBAAgB;IAChB,IAAI,cAAc,GAA2B,EAAE,CAAC;IAEhD,aAAa,CAAC,OAAO,CAAC,CAAC,kBAAkB,EAAE,OAAO,EAAE,EAAE;QACpD,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,eAAe,GACnB,UAAU,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;QAC7D,gBAAgB,CAAC,IAAI,CAAC;YACpB,CAAC,iBAAiB,CAAC,EAAE,OAAO;YAC5B,CAAC,WAAW,CAAC,EAAE,KAAK;YACpB,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;YAChD,CAAC,uBAAuB,CAAC,EAAE,SAAS;YACpC,CAAC,cAAc,CAAC,EAAE,eAAe;YACjC,CAAC,iBAAiB,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC;YACvC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO;SAC9B,CAAC,CAAC;QACH,SAAS,IAAI,CAAC,CAAC;QACf,yDAAyD;QACzD,IAAI,CAAC,UAAU,IAAI,KAAK,EAAE,CAAC;YACzB,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACtC,qDAAqD;YACrD,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACjC,SAAS,IAAI,CAAC,CAAC;gBACf,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,6CAA6C;gBAC1E,CAAC;gBACD,cAAc,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,8BAA8B;YACzF,CAAC,CAAC,CAAC;YACH,gBAAgB,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,wDAAwD;YACxD,MAAM,QAAQ,GAAG,gBAAgB,CAAC;gBAChC,aAAa,EAAE,kBAAkB;gBACjC,SAAS,EAAE,QAAQ;gBACnB,UAAU,EAAE,eAAe;gBAC3B,SAAS;gBACT,WAAW;gBACX,YAAY;gBACZ,WAAW;aACZ,CAAC,CAAC,CAAC,gCAAgC;YACpC,gBAAgB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC1C,OAAO,mCAAQ,QAAQ,CAAC,OAAO,GAAK,OAAO,CAAE,CAAC;YAC9C,cAAc,mCAAQ,QAAQ,CAAC,cAAc,GAAK,cAAc,CAAE,CAAC;YACnE,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACjC,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO;QACL,MAAM,EAAE,gBAAgB;QACxB,cAAc;QACd,OAAO;QACP,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAiB,EACjB,WAAyB,EACzB,EACE,YAAY,GAAG,EAAE,EACjB,WAAW,GAAG,KAAK,EACnB,aAAa,GAAG,oBAAoB,GACpB;IAElB,MAAM,YAAY,GAAgB,IAAI,GAAG,EAAE,CAAC;IAE5C,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE;QACpC,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAClF,MAAM,cAAc,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC;QAC9C,IAAI,iBAAiB,GAAG,YAAY,CAAC;QACrC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC/B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YAC1C,CAAC;YACD,iBAAiB,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAgB,CAAC;QAClE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAe,EAAE,CAAC;YAClC,iBAAiB,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAe,CAAC;QAC3E,cAAc,CAAC,IAAI,iCACd,IAAI,KACP,CAAC,oBAAoB,CAAC,EAAE,aAAa,IACrC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC;IAEzC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,gBAAgB,CAAC;QAC7E,aAAa,EAAE,YAAY;QAC3B,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,CAAC,CAAC;QACb,WAAW;QACX,YAAY;QACZ,WAAW;KACZ,CAAC,CAAC;IAEH,OAAO;QACL,gBAAgB,EAAE,wBAAwB;QAC1C,KAAK,EAAE,aAAa,EAAE,6BAA6B;QACnD,OAAO,EAAE,2CAA2C;QACpD,cAAc,EAAE,qCAAqC;KACtD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAgB;IAC9C,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,iBAAiB,CAAC,CAAC;AACpC,CAAC;AAUD,MAAM,UAAU,UAAU,CAAC,KAAgB;IACzC,OAAO,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,iBAAiB,CAAC,CAAA,KAAK,WAAW,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAsB;IACrD,OAAO,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,mBAAmB,CAAC,CAAA,KAAK,WAAW,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAI,MAAW,EAAE,MAAW;IAC3D,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QACnB,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClC,sCAAsC;IACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,WAAW,CACzB,YAAmB,EACnB,YAAsB,EACtB,SAAmB;IAEnB,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,iBAAiB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACzD,OAAO,YAAY,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;AAC3C,CAAC","sourcesContent":["import type { DataType, ColumnProp, ColumnRegular } from '@type';\r\nimport {\r\n GROUP_DEPTH,\r\n GROUP_EXPANDED,\r\n PSEUDO_GROUP_COLUMN,\r\n PSEUDO_GROUP_ITEM,\r\n PSEUDO_GROUP_ITEM_ID,\r\n PSEUDO_GROUP_ITEM_VALUE,\r\n GROUP_ORIGINAL_INDEX,\r\n GROUP_COLUMN_PROP,\r\n} from './grouping.const';\r\nimport type { ExpandedOptions } from './grouping.row.types';\r\n\r\ntype GroupedData = Map<string, GroupedData | DataType[]>;\r\ntype SourceGather = {\r\n source: DataType[];\r\n prevExpanded: Record<string, boolean>;\r\n oldNewIndexes?: Record<number, number>;\r\n};\r\n\r\nfunction getGroupValueDefault(item: DataType, prop: string | number) {\r\n return item[prop] || null;\r\n}\r\n\r\n// get source based on proxy item collection to preserve rgRow order\r\nexport function getSource(\r\n source: DataType[],\r\n items: number[],\r\n withoutGrouping = false,\r\n) {\r\n let index = 0;\r\n const result: Required<SourceGather> = {\r\n source: [],\r\n prevExpanded: {},\r\n oldNewIndexes: {},\r\n };\r\n // order important here, expected parent is first, then others\r\n items.forEach(i => {\r\n const model = source[i];\r\n if (!withoutGrouping) {\r\n result.source.push(model);\r\n return;\r\n }\r\n\r\n // grouping filter\r\n if (isGrouping(model)) {\r\n if (getExpanded(model)) {\r\n result.prevExpanded[model[PSEUDO_GROUP_ITEM_VALUE]] = true;\r\n }\r\n } else {\r\n result.source.push(model);\r\n result.oldNewIndexes[i] = index;\r\n index++;\r\n }\r\n });\r\n return result;\r\n}\r\n\r\nexport function getExpanded(model: DataType = {}) {\r\n return model[GROUP_EXPANDED];\r\n}\r\n\r\nfunction flattenGroupMaps({\r\n groupedValues,\r\n parentIds,\r\n isExpanded,\r\n itemIndex,\r\n expandedAll,\r\n prevExpanded,\r\n columnProps,\r\n}: {\r\n groupedValues: GroupedData;\r\n parentIds: string[];\r\n isExpanded: boolean;\r\n itemIndex: number;\r\n expandedAll: boolean;\r\n prevExpanded: Record<string, boolean>;\r\n columnProps: ColumnProp[];\r\n}) {\r\n const depth = parentIds.length;\r\n const sourceWithGroups: DataType[] = [];\r\n // collapse all groups in the beginning\r\n let trimmed: Record<number, boolean> = {};\r\n\r\n // index mapping\r\n let oldNewIndexMap: Record<number, number> = {};\r\n\r\n groupedValues.forEach((innerGroupedValues, groupId) => {\r\n const levelIds = [...parentIds, groupId];\r\n const mergedIds = levelIds.join(',');\r\n const isGroupExpanded =\r\n isExpanded && (!!expandedAll || !!prevExpanded[mergedIds]);\r\n sourceWithGroups.push({\r\n [PSEUDO_GROUP_ITEM]: groupId,\r\n [GROUP_DEPTH]: depth,\r\n [PSEUDO_GROUP_ITEM_ID]: JSON.stringify(levelIds),\r\n [PSEUDO_GROUP_ITEM_VALUE]: mergedIds,\r\n [GROUP_EXPANDED]: isGroupExpanded,\r\n [GROUP_COLUMN_PROP]: columnProps[depth],\r\n [columnProps[depth]]: groupId,\r\n });\r\n itemIndex += 1;\r\n // If parent group is collapsed, mark all items as hidden\r\n if (!isExpanded && depth) {\r\n trimmed[itemIndex] = true;\r\n }\r\n if (Array.isArray(innerGroupedValues)) {\r\n // This branch handles leaf nodes (actual data items)\r\n innerGroupedValues.forEach(value => {\r\n itemIndex += 1;\r\n if (!isGroupExpanded) {\r\n trimmed[itemIndex] = true; // Mark items as hidden if group is collapsed\r\n }\r\n oldNewIndexMap[value[GROUP_ORIGINAL_INDEX]] = itemIndex; // Keep track of new positions\r\n });\r\n sourceWithGroups.push(...innerGroupedValues);\r\n } else {\r\n // This branch handles nested groups (further subgroups)\r\n const children = flattenGroupMaps({\r\n groupedValues: innerGroupedValues,\r\n parentIds: levelIds,\r\n isExpanded: isGroupExpanded,\r\n itemIndex,\r\n expandedAll,\r\n prevExpanded,\r\n columnProps,\r\n }); // Recursively process subgroups\r\n sourceWithGroups.push(...children.source);\r\n trimmed = { ...children.trimmed, ...trimmed };\r\n oldNewIndexMap = { ...children.oldNewIndexMap, ...oldNewIndexMap };\r\n itemIndex = children.itemIndex;\r\n }\r\n });\r\n return {\r\n source: sourceWithGroups,\r\n oldNewIndexMap,\r\n trimmed,\r\n itemIndex,\r\n };\r\n}\r\n\r\n/**\r\n * Gather data for grouping\r\n * @param array - flat data array\r\n * @param columnProps - ids of groups\r\n * @param expanded - potentially expanded items if present\r\n */\r\nexport function gatherGrouping(\r\n array: DataType[],\r\n columnProps: ColumnProp[],\r\n {\r\n prevExpanded = {},\r\n expandedAll = false,\r\n getGroupValue = getGroupValueDefault,\r\n }: ExpandedOptions,\r\n) {\r\n const groupedItems: GroupedData = new Map();\r\n \r\n array.forEach((item, originalIndex) => {\r\n const groupLevelValues = columnProps.map(groupId => getGroupValue(item, groupId));\r\n const lastLevelValue = groupLevelValues.pop();\r\n let currentGroupLevel = groupedItems;\r\n groupLevelValues.forEach(value => {\r\n if (!currentGroupLevel.has(value)) {\r\n currentGroupLevel.set(value, new Map());\r\n }\r\n currentGroupLevel = currentGroupLevel.get(value) as GroupedData;\r\n });\r\n if (!currentGroupLevel.has(lastLevelValue)) {\r\n const groupItems: DataType[] = [];\r\n currentGroupLevel.set(lastLevelValue, groupItems);\r\n }\r\n const lastLevelItems = currentGroupLevel.get(lastLevelValue) as DataType[];\r\n lastLevelItems.push({\r\n ...item,\r\n [GROUP_ORIGINAL_INDEX]: originalIndex,\r\n });\r\n });\r\n\r\n const groupingDepth = columnProps.length;\r\n\r\n const { source: sourceWithGroups, trimmed, oldNewIndexMap } = flattenGroupMaps({\r\n groupedValues: groupedItems,\r\n parentIds: [],\r\n isExpanded: true,\r\n itemIndex: -1,\r\n expandedAll,\r\n prevExpanded,\r\n columnProps\r\n });\r\n\r\n return {\r\n sourceWithGroups, // updates source mirror\r\n depth: groupingDepth, // largest depth for grouping\r\n trimmed, // used for expand/collapse grouping values\r\n oldNewIndexMap, // used for mapping old values to new\r\n };\r\n}\r\n\r\nexport function getGroupingName(rgRow?: DataType) {\r\n return rgRow?.[PSEUDO_GROUP_ITEM];\r\n}\r\n\r\ntype GroupingItem = {\r\n [PSEUDO_GROUP_ITEM]: string;\r\n [GROUP_EXPANDED]: boolean;\r\n [PSEUDO_GROUP_ITEM_VALUE]: string;\r\n [GROUP_DEPTH]: number;\r\n [GROUP_COLUMN_PROP]: ColumnProp;\r\n};\r\n\r\nexport function isGrouping(rgRow?: DataType): rgRow is GroupingItem {\r\n return typeof rgRow?.[PSEUDO_GROUP_ITEM] !== 'undefined';\r\n}\r\n\r\nexport function isGroupingColumn(column?: ColumnRegular) {\r\n return typeof column?.[PSEUDO_GROUP_COLUMN] !== 'undefined';\r\n}\r\n\r\nexport function measureEqualDepth<T>(groupA: T[], groupB: T[]) {\r\n const ln = groupA.length;\r\n let i = 0;\r\n for (; i < ln; i++) {\r\n if (groupA[i] !== groupB[i]) {\r\n return i;\r\n }\r\n }\r\n return i;\r\n}\r\n\r\nexport function getParsedGroup(id: string) {\r\n const parseGroup = JSON.parse(id);\r\n // extra precaution and type safeguard\r\n if (!Array.isArray(parseGroup)) {\r\n return null;\r\n }\r\n return parseGroup;\r\n}\r\n\r\n// check if items is child of current clicked group\r\nexport function isSameGroup(\r\n currentGroup: any[],\r\n currentModel: DataType,\r\n nextModel: DataType,\r\n) {\r\n const nextGroup = getParsedGroup(nextModel[PSEUDO_GROUP_ITEM_ID]);\r\n if (!nextGroup) {\r\n return false;\r\n }\r\n\r\n const depth = measureEqualDepth(currentGroup, nextGroup);\r\n return currentModel[GROUP_DEPTH] < depth;\r\n}\r\n"]}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Built by LevelSkill.Pro
|
|
3
|
+
*/
|
|
4
|
+
import { gatherTrimmedItems } from "../../store/index";
|
|
5
|
+
export const TRIMMED_GROUPING = 'grouping';
|
|
6
|
+
/**
|
|
7
|
+
* Prepare trimming updated indexes for grouping
|
|
8
|
+
* @param initiallyTrimed
|
|
9
|
+
* @param firstLevelMap
|
|
10
|
+
* @param secondLevelMap
|
|
11
|
+
*/
|
|
12
|
+
export function processDoubleConversionTrimmed(initiallyTrimed, firstLevelMap, secondLevelMap) {
|
|
13
|
+
const trimemedOptionsToUpgrade = {};
|
|
14
|
+
/**
|
|
15
|
+
* go through all groups except grouping
|
|
16
|
+
*/
|
|
17
|
+
for (let type in initiallyTrimed) {
|
|
18
|
+
if (type === TRIMMED_GROUPING) {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
const items = initiallyTrimed[type];
|
|
22
|
+
const newItems = {};
|
|
23
|
+
for (let initialIndex in items) {
|
|
24
|
+
/**
|
|
25
|
+
* if item exists we find it in collection
|
|
26
|
+
* we support 2 level of conversions
|
|
27
|
+
*/
|
|
28
|
+
let newConversionIndex = firstLevelMap[initialIndex];
|
|
29
|
+
if (secondLevelMap) {
|
|
30
|
+
newConversionIndex = secondLevelMap[newConversionIndex];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* if item was trimmed previously
|
|
34
|
+
* trimming makes sense to apply
|
|
35
|
+
*/
|
|
36
|
+
if (items[initialIndex]) {
|
|
37
|
+
newItems[newConversionIndex] = true;
|
|
38
|
+
/**
|
|
39
|
+
* If changes present apply changes to new source
|
|
40
|
+
*/
|
|
41
|
+
if (newConversionIndex !== parseInt(initialIndex, 10)) {
|
|
42
|
+
trimemedOptionsToUpgrade[type] = newItems;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return trimemedOptionsToUpgrade;
|
|
48
|
+
}
|
|
49
|
+
export function filterOutEmptyGroups(allTrimmedGroups, childrenByGroup = {}) {
|
|
50
|
+
const trimmedGroup = {};
|
|
51
|
+
const allTrimmed = gatherTrimmedItems(allTrimmedGroups);
|
|
52
|
+
// find is groups are filled
|
|
53
|
+
for (let groupIndex in childrenByGroup) {
|
|
54
|
+
const hasChidlren = childrenByGroup[groupIndex].filter(childIndex => !allTrimmed[childIndex]).length > 0;
|
|
55
|
+
if (!hasChidlren) {
|
|
56
|
+
trimmedGroup[groupIndex] = true;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return trimmedGroup;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=grouping.trimmed.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grouping.trimmed.service.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.trimmed.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAA0B,MAAM,QAAQ,CAAC;AAEpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAAC,eAAwB,EAAE,aAAqC,EAAE,cAAuC;IACrJ,MAAM,wBAAwB,GAAY,EAAE,CAAC;IAC7C;;OAEG;IACH,KAAK,IAAI,IAAI,IAAI,eAAe,EAAE,CAAC;QACjC,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAkB,EAAE,CAAC;QAEnC,KAAK,IAAI,YAAY,IAAI,KAAK,EAAE,CAAC;YAC/B;;;eAGG;YACH,IAAI,kBAAkB,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;YACrD,IAAI,cAAc,EAAE,CAAC;gBACnB,kBAAkB,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC;YAC1D,CAAC;YAED;;;eAGG;YACH,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;gBACxB,QAAQ,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;gBACpC;;mBAEG;gBACH,IAAI,kBAAkB,KAAK,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC;oBACtD,wBAAwB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;gBAC5C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,wBAAwB,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,gBAAyB,EAAE,kBAA4C,EAAE;IAC5G,MAAM,YAAY,GAAkB,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACxD,4BAA4B;IAC5B,KAAK,IAAI,UAAU,IAAI,eAAe,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACzG,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,YAAY,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;QAClC,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC","sourcesContent":["import { gatherTrimmedItems, Trimmed, TrimmedEntity } from '@store';\r\n\r\nexport const TRIMMED_GROUPING = 'grouping';\r\n\r\n/**\r\n * Prepare trimming updated indexes for grouping\r\n * @param initiallyTrimed\r\n * @param firstLevelMap\r\n * @param secondLevelMap\r\n */\r\nexport function processDoubleConversionTrimmed(initiallyTrimed: Trimmed, firstLevelMap: Record<number, number>, secondLevelMap?: Record<number, number>) {\r\n const trimemedOptionsToUpgrade: Trimmed = {};\r\n /**\r\n * go through all groups except grouping\r\n */\r\n for (let type in initiallyTrimed) {\r\n if (type === TRIMMED_GROUPING) {\r\n continue;\r\n }\r\n const items = initiallyTrimed[type];\r\n const newItems: TrimmedEntity = {};\r\n\r\n for (let initialIndex in items) {\r\n /**\r\n * if item exists we find it in collection\r\n * we support 2 level of conversions\r\n */\r\n let newConversionIndex = firstLevelMap[initialIndex];\r\n if (secondLevelMap) {\r\n newConversionIndex = secondLevelMap[newConversionIndex];\r\n }\r\n\r\n /**\r\n * if item was trimmed previously\r\n * trimming makes sense to apply\r\n */\r\n if (items[initialIndex]) {\r\n newItems[newConversionIndex] = true;\r\n /**\r\n * If changes present apply changes to new source\r\n */\r\n if (newConversionIndex !== parseInt(initialIndex, 10)) {\r\n trimemedOptionsToUpgrade[type] = newItems;\r\n }\r\n }\r\n }\r\n }\r\n return trimemedOptionsToUpgrade;\r\n}\r\n\r\nexport function filterOutEmptyGroups(allTrimmedGroups: Trimmed, childrenByGroup: Record<number, number[]> = {}) {\r\n const trimmedGroup: TrimmedEntity = {};\r\n const allTrimmed = gatherTrimmedItems(allTrimmedGroups);\r\n // find is groups are filled\r\n for (let groupIndex in childrenByGroup) {\r\n const hasChidlren = childrenByGroup[groupIndex].filter(childIndex => !allTrimmed[childIndex]).length > 0;\r\n if (!hasChidlren) {\r\n trimmedGroup[groupIndex] = true;\r\n }\r\n }\r\n return trimmedGroup;\r\n}\r\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Built by LevelSkill.Pro
|
|
3
|
+
*/
|
|
4
|
+
export * from './base.plugin';
|
|
5
|
+
export * from './column.auto-size.plugin';
|
|
6
|
+
export * from './column.stretch.plugin';
|
|
7
|
+
export * from './dispatcher';
|
|
8
|
+
export * from './export/export.plugin';
|
|
9
|
+
export * from './filter/filter.plugin';
|
|
10
|
+
export * from './groupingRow/grouping.row.plugin';
|
|
11
|
+
export * from './moveColumn/column.drag.plugin';
|
|
12
|
+
export * from './sorting/sorting.plugin';
|
|
13
|
+
export * from './sorting/sorting.sign';
|
|
14
|
+
export * from './add-rows-on-paste.plugin';
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC","sourcesContent":["export * from './base.plugin';\r\nexport * from './column.auto-size.plugin';\r\nexport * from './column.stretch.plugin';\r\nexport * from './dispatcher';\r\nexport * from './export/export.plugin';\r\nexport * from './filter/filter.plugin';\r\nexport * from './groupingRow/grouping.row.plugin';\r\nexport * from './moveColumn/column.drag.plugin';\r\nexport * from './sorting/sorting.plugin';\r\nexport * from './sorting/sorting.sign';\r\nexport * from './add-rows-on-paste.plugin';\r\n"]}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Built by LevelSkill.Pro
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Plugin for column manual move
|
|
6
|
+
*/
|
|
7
|
+
import debounce from "lodash/debounce";
|
|
8
|
+
import each from "lodash/each";
|
|
9
|
+
import { getItemByPosition } from "../../store/index";
|
|
10
|
+
import { BasePlugin } from "../base.plugin";
|
|
11
|
+
import { ColumnOrderHandler } from "./order-column.handler";
|
|
12
|
+
import { dispatch } from "../dispatcher";
|
|
13
|
+
import { ON_COLUMN_CLICK } from "../../components/header/header-cell-renderer";
|
|
14
|
+
import { isColGrouping } from "../../utils/column.utils";
|
|
15
|
+
const COLUMN_CLICK = ON_COLUMN_CLICK;
|
|
16
|
+
const MOVE = 'columndragmousemove';
|
|
17
|
+
const DRAG_END = 'columndragend';
|
|
18
|
+
const BEFORE_DRAG_END = 'beforecolumndragend';
|
|
19
|
+
// use this event subscription to drop D&D for particular columns
|
|
20
|
+
const DRAG_START = 'columndragstart';
|
|
21
|
+
export class ColumnMovePlugin extends BasePlugin {
|
|
22
|
+
constructor(revogrid, providers) {
|
|
23
|
+
super(revogrid, providers);
|
|
24
|
+
this.revogrid = revogrid;
|
|
25
|
+
this.providers = providers;
|
|
26
|
+
this.moveFunc = debounce((e) => this.doMove(e), 5);
|
|
27
|
+
this.staticDragData = null;
|
|
28
|
+
this.dragData = null;
|
|
29
|
+
this.localSubscriptions = {};
|
|
30
|
+
this.orderUi = new ColumnOrderHandler();
|
|
31
|
+
revogrid.appendChild(this.orderUi.render());
|
|
32
|
+
revogrid.classList.add('column-draggable');
|
|
33
|
+
// Register events
|
|
34
|
+
this.localSubscriptions['mouseleave'] = {
|
|
35
|
+
target: document,
|
|
36
|
+
callback: (e) => this.onMouseOut(e),
|
|
37
|
+
};
|
|
38
|
+
this.localSubscriptions['mouseup'] = {
|
|
39
|
+
target: document,
|
|
40
|
+
callback: (e) => this.onMouseUp(e),
|
|
41
|
+
};
|
|
42
|
+
this.localSubscriptions['mousemove'] = {
|
|
43
|
+
target: document,
|
|
44
|
+
callback: (e) => this.move(e),
|
|
45
|
+
};
|
|
46
|
+
this.addEventListener(COLUMN_CLICK, ({ detail }) => this.dragStart(detail));
|
|
47
|
+
}
|
|
48
|
+
dragStart({ event, data }) {
|
|
49
|
+
if (event.defaultPrevented) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const { defaultPrevented } = dispatch(this.revogrid, DRAG_START, data);
|
|
53
|
+
// check if allowed to drag particulat column
|
|
54
|
+
if (defaultPrevented) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
this.clearOrder();
|
|
58
|
+
const { mouseleave, mouseup, mousemove } = this.localSubscriptions;
|
|
59
|
+
mouseleave.target.addEventListener('mouseleave', mouseleave.callback);
|
|
60
|
+
mouseup.target.addEventListener('mouseup', mouseup.callback);
|
|
61
|
+
const dataEl = event.target.closest('revogr-header');
|
|
62
|
+
const scrollEl = event.target.closest('revogr-viewport-scroll');
|
|
63
|
+
if (!dataEl || !scrollEl) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
// no grouping drag and no row header column drag
|
|
67
|
+
if (isColGrouping(data) || data.providers.type === 'rowHeaders') {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const cols = this.getDimension(data.pin || 'rgCol');
|
|
71
|
+
const gridRect = this.revogrid.getBoundingClientRect();
|
|
72
|
+
const elRect = dataEl.getBoundingClientRect();
|
|
73
|
+
const startItem = getItemByPosition(cols, getLeftRelative(event.x, gridRect.left, elRect.left - gridRect.left));
|
|
74
|
+
this.staticDragData = {
|
|
75
|
+
startPos: event.x,
|
|
76
|
+
startItem,
|
|
77
|
+
data,
|
|
78
|
+
dataEl,
|
|
79
|
+
scrollEl,
|
|
80
|
+
gridEl: this.revogrid,
|
|
81
|
+
cols,
|
|
82
|
+
};
|
|
83
|
+
this.dragData = this.getData(this.staticDragData);
|
|
84
|
+
mousemove.target.addEventListener('mousemove', mousemove.callback);
|
|
85
|
+
this.orderUi.start(event, Object.assign(Object.assign({}, this.dragData), this.staticDragData));
|
|
86
|
+
}
|
|
87
|
+
doMove(e) {
|
|
88
|
+
if (!this.staticDragData) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const dragData = (this.dragData = this.getData(this.staticDragData));
|
|
92
|
+
if (!dragData) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const start = this.staticDragData.startPos;
|
|
96
|
+
if (Math.abs(start - e.x) > 10) {
|
|
97
|
+
const x = getLeftRelative(e.x, this.dragData.gridRect.left, this.dragData.scrollOffset);
|
|
98
|
+
const rgCol = getItemByPosition(this.staticDragData.cols, x);
|
|
99
|
+
this.orderUi.autoscroll(x, dragData.elRect.width);
|
|
100
|
+
// prevent position change if out of bounds
|
|
101
|
+
if (rgCol.itemIndex >= this.staticDragData.cols.count) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
this.orderUi.showHandler(rgCol.start + dragData.scrollOffset, dragData.gridRect.width, Math.abs(rgCol.end - rgCol.start));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
move(e) {
|
|
108
|
+
dispatch(this.revogrid, MOVE, e);
|
|
109
|
+
// then do move
|
|
110
|
+
this.moveFunc(e);
|
|
111
|
+
}
|
|
112
|
+
onMouseOut(_) {
|
|
113
|
+
this.clearOrder();
|
|
114
|
+
}
|
|
115
|
+
onMouseUp(e) {
|
|
116
|
+
// apply new positions
|
|
117
|
+
if (this.dragData && this.staticDragData) {
|
|
118
|
+
let relativePos = getLeftRelative(e.x, this.dragData.gridRect.left, this.dragData.scrollOffset);
|
|
119
|
+
if (relativePos < 0) {
|
|
120
|
+
relativePos = 0;
|
|
121
|
+
}
|
|
122
|
+
const newPosition = getItemByPosition(this.staticDragData.cols, relativePos);
|
|
123
|
+
const store = this.providers.column.stores[this.dragData.type].store;
|
|
124
|
+
const newItems = [...store.get('items')];
|
|
125
|
+
const allColumns = store.get('source');
|
|
126
|
+
const onDropColumn = allColumns[newPosition.itemIndex];
|
|
127
|
+
// prevent position change if needed
|
|
128
|
+
const { defaultPrevented: stopDrag } = dispatch(this.revogrid, BEFORE_DRAG_END, Object.assign(Object.assign({}, this.staticDragData), { startPosition: this.staticDragData.startItem, newPosition, newItem: store.get('source')[newItems[this.staticDragData.startItem.itemIndex]] }));
|
|
129
|
+
if (!stopDrag && onDropColumn && onDropColumn.draggable !== false) {
|
|
130
|
+
const prevItems = [...newItems];
|
|
131
|
+
// todo: if move item out of group remove item from group
|
|
132
|
+
const toMove = newItems.splice(this.staticDragData.startItem.itemIndex, 1);
|
|
133
|
+
newItems.splice(newPosition.itemIndex, 0, ...toMove);
|
|
134
|
+
store.set('items', newItems);
|
|
135
|
+
this.providers.dimension.updateSizesPositionByNewDataIndexes(this.dragData.type, newItems, prevItems);
|
|
136
|
+
}
|
|
137
|
+
dispatch(this.revogrid, DRAG_END, this.dragData);
|
|
138
|
+
}
|
|
139
|
+
this.clearOrder();
|
|
140
|
+
}
|
|
141
|
+
clearLocalSubscriptions() {
|
|
142
|
+
each(this.localSubscriptions, ({ target, callback }, key) => target.removeEventListener(key, callback));
|
|
143
|
+
}
|
|
144
|
+
clearOrder() {
|
|
145
|
+
this.staticDragData = null;
|
|
146
|
+
this.dragData = null;
|
|
147
|
+
this.clearLocalSubscriptions();
|
|
148
|
+
this.orderUi.stop(this.revogrid);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Clearing subscription
|
|
152
|
+
*/
|
|
153
|
+
clearSubscriptions() {
|
|
154
|
+
super.clearSubscriptions();
|
|
155
|
+
this.clearLocalSubscriptions();
|
|
156
|
+
}
|
|
157
|
+
getData({ gridEl, dataEl, data }) {
|
|
158
|
+
const gridRect = gridEl.getBoundingClientRect();
|
|
159
|
+
const elRect = dataEl.getBoundingClientRect();
|
|
160
|
+
const scrollOffset = elRect.left - gridRect.left;
|
|
161
|
+
return {
|
|
162
|
+
elRect,
|
|
163
|
+
gridRect,
|
|
164
|
+
type: data.pin || 'rgCol',
|
|
165
|
+
scrollOffset,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
getDimension(type) {
|
|
169
|
+
return this.providers.dimension.stores[type].getCurrentState();
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
export function getLeftRelative(absoluteX, gridPos, offset) {
|
|
173
|
+
return absoluteX - gridPos - offset;
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=column.drag.plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column.drag.plugin.js","sourceRoot":"","sources":["../../../src/plugins/moveColumn/column.drag.plugin.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAUzC,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,MAAM,YAAY,GAAG,eAAe,CAAC;AACrC,MAAM,IAAI,GAAG,qBAAqB,CAAC;AACnC,MAAM,QAAQ,GAAG,eAAe,CAAC;AACjC,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAE9C,iEAAiE;AACjE,MAAM,UAAU,GAAG,iBAAiB,CAAC;AA4BrC,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAM9C,YACS,QAA6B,EAC7B,SAA0B;QAEjC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAHpB,aAAQ,GAAR,QAAQ,CAAqB;QAC7B,cAAS,GAAT,SAAS,CAAiB;QAP3B,aAAQ,GAAG,QAAQ,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1D,mBAAc,GAAsB,IAAI,CAAC;QACzC,aAAQ,GAA+B,IAAI,CAAC;QAEjC,uBAAkB,GAAuB,EAAE,CAAC;QAM7D,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACxC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAE3C,kBAAkB;QAClB,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,GAAG;YACtC,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,CAAC,CAAa,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;SAChD,CAAC;QACF,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG;YACnC,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,CAAC,CAAa,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;SAC/C,CAAC;QAEF,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,GAAG;YACrC,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,CAAC,CAAa,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAC1C,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAyB;QAC9C,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,MAAM,EAAE,gBAAgB,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QACvE,6CAA6C;QAC7C,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACnE,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QACtE,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CACpD,wBAAwB,CACzB,CAAC;QACF,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,iDAAiD;QACjD,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAChE,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,iBAAiB,CACjC,IAAI,EACJ,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CACrE,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG;YACpB,QAAQ,EAAE,KAAK,CAAC,CAAC;YACjB,SAAS;YACT,IAAI;YACJ,MAAM;YACN,QAAQ;YACR,MAAM,EAAE,IAAI,CAAC,QAAQ;YACrB,IAAI;SACL,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClD,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,kCACnB,IAAI,CAAC,QAAQ,GACb,IAAI,CAAC,cAAc,EACtB,CAAC;IACL,CAAC;IAED,MAAM,CAAC,CAAa;QAClB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAC3C,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,eAAe,CACvB,CAAC,CAAC,CAAC,EACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAC3B,IAAI,CAAC,QAAQ,CAAC,YAAY,CAC3B,CAAC;YACF,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAElD,2CAA2C;YAC3C,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACtD,OAAO;YACT,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,WAAW,CACtB,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,YAAY,EACnC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EACvB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAClC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAC,CAAa;QAChB,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACjC,eAAe;QACf,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,UAAU,CAAC,CAAa;QACtB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IACD,SAAS,CAAC,CAAa;QACrB,sBAAsB;QACtB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACzC,IAAI,WAAW,GAAG,eAAe,CAC/B,CAAC,CAAC,CAAC,EACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAC3B,IAAI,CAAC,QAAQ,CAAC,YAAY,CAC3B,CAAC;YACF,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACpB,WAAW,GAAG,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,WAAW,GAAG,iBAAiB,CACnC,IAAI,CAAC,cAAc,CAAC,IAAI,EACxB,WAAW,CACZ,CAAC;YAEF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrE,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YACzC,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACvC,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAEvD,oCAAoC;YACpC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAC7C,IAAI,CAAC,QAAQ,EACb,eAAe,kCAEV,IAAI,CAAC,cAAc,KACtB,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,EAC5C,WAAW,EACX,OAAO,EACL,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CACjB,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAClD,IAEN,CAAC;YACF,IAAI,CAAC,QAAQ,IAAI,YAAY,IAAI,YAAY,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;gBAClE,MAAM,SAAS,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;gBAChC,yDAAyD;gBACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAC5B,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EACvC,CAAC,CACF,CAAC;gBACF,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;gBACrD,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC7B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,mCAAmC,CAC1D,IAAI,CAAC,QAAQ,CAAC,IAAI,EAClB,QAAQ,EACR,SAAS,CACV,CAAC;YACJ,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEO,uBAAuB;QAC7B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,CAC1D,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAC1C,CAAC;IACJ,CAAC;IAED,UAAU;QACR,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IACD;;OAEG;IACH,kBAAkB;QAChB,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC3B,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACjC,CAAC;IAEO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAc;QAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAC9C,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QACjD,OAAO;YACL,MAAM;YACN,QAAQ;YACR,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO;YACzB,YAAY;SACb,CAAC;IACJ,CAAC;IACO,YAAY,CAAC,IAAwB;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;IACjE,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAC7B,SAAiB,EACjB,OAAe,EACf,MAAc;IAEd,OAAO,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AACtC,CAAC","sourcesContent":["/**\r\n * Plugin for column manual move\r\n */\r\nimport debounce from 'lodash/debounce';\r\nimport each from 'lodash/each';\r\nimport { getItemByPosition } from '@store';\r\nimport { BasePlugin } from '../base.plugin';\r\nimport { ColumnOrderHandler } from './order-column.handler';\r\nimport { dispatch } from '../dispatcher';\r\nimport type {\r\n ColumnPropProp,\r\n ColumnTemplateProp,\r\n DimensionSettingsState,\r\n PositionItem,\r\n DimensionCols,\r\n MultiDimensionType,\r\n PluginProviders,\r\n} from '@type';\r\nimport { ON_COLUMN_CLICK } from '../../components/header/header-cell-renderer';\r\nimport { isColGrouping } from '../../utils/column.utils';\r\n\r\nconst COLUMN_CLICK = ON_COLUMN_CLICK;\r\nconst MOVE = 'columndragmousemove';\r\nconst DRAG_END = 'columndragend';\r\nconst BEFORE_DRAG_END = 'beforecolumndragend';\r\n\r\n// use this event subscription to drop D&D for particular columns\r\nconst DRAG_START = 'columndragstart';\r\n\r\nexport type DragStartEventDetails = {\r\n event: MouseEvent;\r\n data: ColumnPropProp;\r\n};\r\n\r\ntype StaticData = {\r\n startPos: number;\r\n startItem: PositionItem;\r\n data: ColumnTemplateProp;\r\n dataEl: HTMLElement;\r\n scrollEl: Element;\r\n gridEl: HTMLElement;\r\n cols: DimensionSettingsState;\r\n};\r\n\r\ntype LocalSubscriptions = Record<string, LocalSubscription>;\r\ntype LocalSubscription = {\r\n target: Element | Document;\r\n callback(...params: any[]): void;\r\n};\r\nexport type ColumnDragEventData = {\r\n elRect: DOMRect;\r\n gridRect: DOMRect;\r\n scrollOffset: number;\r\n type: DimensionCols;\r\n};\r\nexport class ColumnMovePlugin extends BasePlugin {\r\n private moveFunc = debounce((e: MouseEvent) => this.doMove(e), 5);\r\n private staticDragData: StaticData | null = null;\r\n private dragData: ColumnDragEventData | null = null;\r\n private readonly orderUi: ColumnOrderHandler;\r\n protected readonly localSubscriptions: LocalSubscriptions = {};\r\n constructor(\r\n public revogrid: HTMLRevoGridElement,\r\n public providers: PluginProviders,\r\n ) {\r\n super(revogrid, providers);\r\n this.orderUi = new ColumnOrderHandler();\r\n revogrid.appendChild(this.orderUi.render());\r\n revogrid.classList.add('column-draggable');\r\n\r\n // Register events\r\n this.localSubscriptions['mouseleave'] = {\r\n target: document,\r\n callback: (e: MouseEvent) => this.onMouseOut(e),\r\n };\r\n this.localSubscriptions['mouseup'] = {\r\n target: document,\r\n callback: (e: MouseEvent) => this.onMouseUp(e),\r\n };\r\n\r\n this.localSubscriptions['mousemove'] = {\r\n target: document,\r\n callback: (e: MouseEvent) => this.move(e),\r\n };\r\n\r\n this.addEventListener(COLUMN_CLICK, ({ detail }) => this.dragStart(detail));\r\n }\r\n\r\n dragStart({ event, data }: DragStartEventDetails) {\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n const { defaultPrevented } = dispatch(this.revogrid, DRAG_START, data);\r\n // check if allowed to drag particulat column\r\n if (defaultPrevented) {\r\n return;\r\n }\r\n this.clearOrder();\r\n const { mouseleave, mouseup, mousemove } = this.localSubscriptions;\r\n mouseleave.target.addEventListener('mouseleave', mouseleave.callback);\r\n mouseup.target.addEventListener('mouseup', mouseup.callback);\r\n\r\n const dataEl = (event.target as HTMLElement).closest('revogr-header');\r\n const scrollEl = (event.target as HTMLElement).closest(\r\n 'revogr-viewport-scroll',\r\n );\r\n if (!dataEl || !scrollEl) {\r\n return;\r\n }\r\n\r\n // no grouping drag and no row header column drag\r\n if (isColGrouping(data) || data.providers.type === 'rowHeaders') {\r\n return;\r\n }\r\n\r\n const cols = this.getDimension(data.pin || 'rgCol');\r\n const gridRect = this.revogrid.getBoundingClientRect();\r\n const elRect = dataEl.getBoundingClientRect();\r\n const startItem = getItemByPosition(\r\n cols,\r\n getLeftRelative(event.x, gridRect.left, elRect.left - gridRect.left),\r\n );\r\n\r\n this.staticDragData = {\r\n startPos: event.x,\r\n startItem,\r\n data,\r\n dataEl,\r\n scrollEl,\r\n gridEl: this.revogrid,\r\n cols,\r\n };\r\n this.dragData = this.getData(this.staticDragData);\r\n mousemove.target.addEventListener('mousemove', mousemove.callback);\r\n this.orderUi.start(event, {\r\n ...this.dragData,\r\n ...this.staticDragData,\r\n });\r\n }\r\n\r\n doMove(e: MouseEvent) {\r\n if (!this.staticDragData) {\r\n return;\r\n }\r\n\r\n const dragData = (this.dragData = this.getData(this.staticDragData));\r\n if (!dragData) {\r\n return;\r\n }\r\n const start = this.staticDragData.startPos;\r\n if (Math.abs(start - e.x) > 10) {\r\n const x = getLeftRelative(\r\n e.x,\r\n this.dragData.gridRect.left,\r\n this.dragData.scrollOffset,\r\n );\r\n const rgCol = getItemByPosition(this.staticDragData.cols, x);\r\n this.orderUi.autoscroll(x, dragData.elRect.width);\r\n\r\n // prevent position change if out of bounds\r\n if (rgCol.itemIndex >= this.staticDragData.cols.count) {\r\n return;\r\n }\r\n this.orderUi.showHandler(\r\n rgCol.start + dragData.scrollOffset,\r\n dragData.gridRect.width,\r\n Math.abs(rgCol.end - rgCol.start),\r\n );\r\n }\r\n }\r\n\r\n move(e: MouseEvent) {\r\n dispatch(this.revogrid, MOVE, e);\r\n // then do move\r\n this.moveFunc(e);\r\n }\r\n onMouseOut(_: MouseEvent) {\r\n this.clearOrder();\r\n }\r\n onMouseUp(e: MouseEvent) {\r\n // apply new positions\r\n if (this.dragData && this.staticDragData) {\r\n let relativePos = getLeftRelative(\r\n e.x,\r\n this.dragData.gridRect.left,\r\n this.dragData.scrollOffset,\r\n );\r\n if (relativePos < 0) {\r\n relativePos = 0;\r\n }\r\n const newPosition = getItemByPosition(\r\n this.staticDragData.cols,\r\n relativePos,\r\n );\r\n\r\n const store = this.providers.column.stores[this.dragData.type].store;\r\n const newItems = [...store.get('items')];\r\n const allColumns = store.get('source');\r\n const onDropColumn = allColumns[newPosition.itemIndex];\r\n\r\n // prevent position change if needed\r\n const { defaultPrevented: stopDrag } = dispatch(\r\n this.revogrid,\r\n BEFORE_DRAG_END,\r\n {\r\n ...this.staticDragData,\r\n startPosition: this.staticDragData.startItem,\r\n newPosition,\r\n newItem:\r\n store.get('source')[\r\n newItems[this.staticDragData.startItem.itemIndex]\r\n ],\r\n },\r\n );\r\n if (!stopDrag && onDropColumn && onDropColumn.draggable !== false) {\r\n const prevItems = [...newItems];\r\n // todo: if move item out of group remove item from group\r\n const toMove = newItems.splice(\r\n this.staticDragData.startItem.itemIndex,\r\n 1,\r\n );\r\n newItems.splice(newPosition.itemIndex, 0, ...toMove);\r\n store.set('items', newItems);\r\n this.providers.dimension.updateSizesPositionByNewDataIndexes(\r\n this.dragData.type,\r\n newItems,\r\n prevItems,\r\n );\r\n }\r\n dispatch(this.revogrid, DRAG_END, this.dragData);\r\n }\r\n this.clearOrder();\r\n }\r\n\r\n private clearLocalSubscriptions() {\r\n each(this.localSubscriptions, ({ target, callback }, key) =>\r\n target.removeEventListener(key, callback),\r\n );\r\n }\r\n\r\n clearOrder() {\r\n this.staticDragData = null;\r\n this.dragData = null;\r\n this.clearLocalSubscriptions();\r\n this.orderUi.stop(this.revogrid);\r\n }\r\n /**\r\n * Clearing subscription\r\n */\r\n clearSubscriptions() {\r\n super.clearSubscriptions();\r\n this.clearLocalSubscriptions();\r\n }\r\n\r\n private getData({ gridEl, dataEl, data }: StaticData): ColumnDragEventData {\r\n const gridRect = gridEl.getBoundingClientRect();\r\n const elRect = dataEl.getBoundingClientRect();\r\n const scrollOffset = elRect.left - gridRect.left;\r\n return {\r\n elRect,\r\n gridRect,\r\n type: data.pin || 'rgCol',\r\n scrollOffset,\r\n };\r\n }\r\n private getDimension(type: MultiDimensionType) {\r\n return this.providers.dimension.stores[type].getCurrentState();\r\n }\r\n}\r\n\r\nexport function getLeftRelative(\r\n absoluteX: number,\r\n gridPos: number,\r\n offset: number,\r\n): number {\r\n return absoluteX - gridPos - offset;\r\n}\r\n"]}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Built by LevelSkill.Pro
|
|
3
|
+
*/
|
|
4
|
+
const COLUMN_DRAG_CLASS = 'column-drag-start';
|
|
5
|
+
export class ColumnOrderHandler {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.offset = 0;
|
|
8
|
+
}
|
|
9
|
+
renderAutoscroll(_, parent) {
|
|
10
|
+
if (!parent) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
this.autoscrollEl = document.createElement('div');
|
|
14
|
+
this.autoscrollEl.classList.add('drag-auto-scroll-y');
|
|
15
|
+
parent.appendChild(this.autoscrollEl);
|
|
16
|
+
}
|
|
17
|
+
autoscroll(pos, dataContainerSize, direction = 'translateX') {
|
|
18
|
+
if (!this.autoscrollEl) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const helperOffset = 10;
|
|
22
|
+
// calculate current y position inside of the grid active holder
|
|
23
|
+
// 3 - size of element + border
|
|
24
|
+
const maxScroll = Math.min(pos + helperOffset, dataContainerSize - 3);
|
|
25
|
+
this.autoscrollEl.style.transform = `${direction}(${maxScroll}px)`;
|
|
26
|
+
this.autoscrollEl.scrollIntoView({
|
|
27
|
+
block: 'nearest',
|
|
28
|
+
inline: 'nearest',
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
start(e, { dataEl, gridRect, scrollEl, gridEl, }, dir = 'left') {
|
|
32
|
+
gridEl.classList.add(COLUMN_DRAG_CLASS);
|
|
33
|
+
const scrollContainerRect = scrollEl.getBoundingClientRect();
|
|
34
|
+
if (scrollContainerRect) {
|
|
35
|
+
this.offset = scrollContainerRect[dir] - gridRect[dir];
|
|
36
|
+
}
|
|
37
|
+
this.renderAutoscroll(e, dataEl);
|
|
38
|
+
}
|
|
39
|
+
stop(gridEl) {
|
|
40
|
+
var _a;
|
|
41
|
+
gridEl.classList.remove(COLUMN_DRAG_CLASS);
|
|
42
|
+
if (this.element) {
|
|
43
|
+
this.element.hidden = true;
|
|
44
|
+
}
|
|
45
|
+
this.offset = 0;
|
|
46
|
+
(_a = this.autoscrollEl) === null || _a === void 0 ? void 0 : _a.remove();
|
|
47
|
+
this.autoscrollEl = undefined;
|
|
48
|
+
}
|
|
49
|
+
showHandler(pos, size, columnWidth, direction = 'translateX') {
|
|
50
|
+
if (!this.element) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
// do not allow overcross top of the scrollable area, header excluded
|
|
54
|
+
if (this.offset) {
|
|
55
|
+
pos = Math.max(pos, this.offset);
|
|
56
|
+
}
|
|
57
|
+
// can not be bigger then grid end
|
|
58
|
+
pos = Math.min(pos, size);
|
|
59
|
+
this.element.style.transform = `${direction}(${pos}px)`;
|
|
60
|
+
this.element.style.width = `${columnWidth}px`;
|
|
61
|
+
this.element.style.opacity = `10%`;
|
|
62
|
+
this.element.hidden = false;
|
|
63
|
+
}
|
|
64
|
+
render() {
|
|
65
|
+
const el = (this.element = document.createElement('div'));
|
|
66
|
+
el.classList.add('drag-position-y');
|
|
67
|
+
el.hidden = true;
|
|
68
|
+
return el;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=order-column.handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order-column.handler.js","sourceRoot":"","sources":["../../../src/plugins/moveColumn/order-column.handler.tsx"],"names":[],"mappings":"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","sourcesContent":["const COLUMN_DRAG_CLASS = 'column-drag-start';\r\n\r\nexport class ColumnOrderHandler {\r\n private element?: HTMLDivElement;\r\n private autoscrollEl?: HTMLElement;\r\n private offset = 0;\r\n\r\n renderAutoscroll(_: MouseEvent, parent: HTMLElement | null) {\r\n if (!parent) {\r\n return;\r\n }\r\n this.autoscrollEl = document.createElement('div');\r\n this.autoscrollEl.classList.add('drag-auto-scroll-y');\r\n parent.appendChild(this.autoscrollEl);\r\n }\r\n\r\n autoscroll(pos: number, dataContainerSize: number, direction = 'translateX') {\r\n if (!this.autoscrollEl) {\r\n return;\r\n }\r\n const helperOffset = 10;\r\n // calculate current y position inside of the grid active holder\r\n // 3 - size of element + border\r\n const maxScroll = Math.min(pos + helperOffset, dataContainerSize - 3);\r\n\r\n this.autoscrollEl.style.transform = `${direction}(${maxScroll}px)`;\r\n this.autoscrollEl.scrollIntoView({\r\n block: 'nearest',\r\n inline: 'nearest',\r\n });\r\n }\r\n\r\n start(\r\n e: MouseEvent,\r\n {\r\n dataEl,\r\n gridRect,\r\n scrollEl,\r\n gridEl,\r\n }: {\r\n dataEl: HTMLElement;\r\n gridRect: DOMRect;\r\n scrollEl: Element;\r\n gridEl: Element;\r\n },\r\n dir: 'top' | 'left' = 'left',\r\n ) {\r\n gridEl.classList.add(COLUMN_DRAG_CLASS);\r\n const scrollContainerRect = scrollEl.getBoundingClientRect();\r\n if (scrollContainerRect) {\r\n this.offset = scrollContainerRect[dir] - gridRect[dir];\r\n }\r\n this.renderAutoscroll(e, dataEl);\r\n }\r\n\r\n stop(gridEl: Element) {\r\n gridEl.classList.remove(COLUMN_DRAG_CLASS);\r\n if (this.element) {\r\n this.element.hidden = true;\r\n }\r\n this.offset = 0;\r\n this.autoscrollEl?.remove();\r\n this.autoscrollEl = undefined;\r\n }\r\n\r\n showHandler(\r\n pos: number,\r\n size: number,\r\n columnWidth: number,\r\n direction = 'translateX',\r\n ) {\r\n if (!this.element) {\r\n return;\r\n }\r\n // do not allow overcross top of the scrollable area, header excluded\r\n if (this.offset) {\r\n pos = Math.max(pos, this.offset);\r\n }\r\n // can not be bigger then grid end\r\n pos = Math.min(pos, size);\r\n this.element.style.transform = `${direction}(${pos}px)`;\r\n this.element.style.width = `${columnWidth}px`;\r\n this.element.style.opacity = `10%`;\r\n this.element.hidden = false;\r\n }\r\n\r\n render() {\r\n const el = (this.element = document.createElement('div'));\r\n el.classList.add('drag-position-y');\r\n el.hidden = true;\r\n return el;\r\n }\r\n}\r\n"]}
|