@revolist/revogrid 3.6.4 → 3.6.6
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/custom-element/_baseIteratee.js +1 -3
- package/custom-element/columnService.js +4 -6
- package/custom-element/consts.js +1 -3
- package/custom-element/data.store.js +33 -55
- package/custom-element/debounce.js +1 -3
- package/custom-element/dimension.helpers.js +1 -3
- package/custom-element/each.js +0 -2
- package/custom-element/filter.button.js +0 -2
- package/custom-element/identity.js +0 -2
- package/custom-element/index.d.ts +16 -9
- package/custom-element/index.js +15 -4
- package/custom-element/isSymbol.js +1 -3
- package/custom-element/keys.js +1 -3
- package/custom-element/localScrollService.js +0 -2
- package/custom-element/resize-observer.js +3 -5
- package/custom-element/revo-grid.js +154 -29
- package/custom-element/revogr-clipboard.js +4 -4
- package/custom-element/revogr-data.js +0 -2
- package/custom-element/revogr-data2.js +3 -14
- package/custom-element/revogr-edit.js +0 -2
- package/custom-element/revogr-edit2.js +3 -7
- package/custom-element/revogr-filter-panel.js +6 -10
- package/custom-element/revogr-focus.js +0 -2
- package/custom-element/revogr-focus2.js +2 -8
- package/custom-element/revogr-header.js +0 -2
- package/custom-element/revogr-header2.js +3 -11
- package/custom-element/revogr-order-editor.js +0 -2
- package/custom-element/revogr-order-editor2.js +3 -8
- package/custom-element/revogr-overlay-selection.js +0 -2
- package/custom-element/revogr-overlay-selection2.js +40 -42
- package/custom-element/revogr-row-headers.js +0 -2
- package/custom-element/revogr-row-headers2.js +2 -9
- package/custom-element/revogr-scroll-virtual.js +0 -2
- package/custom-element/revogr-scroll-virtual2.js +2 -5
- package/custom-element/revogr-temp-range.js +0 -2
- package/custom-element/revogr-temp-range2.js +4 -8
- package/custom-element/revogr-viewport-scroll.js +0 -2
- package/custom-element/revogr-viewport-scroll2.js +11 -6
- package/custom-element/selection.utils.js +0 -2
- package/custom-element/toInteger.js +0 -2
- package/custom-element/toNumber.js +1 -3
- package/custom-element/utils.js +0 -2
- package/dist/cjs/css-shim-9f5bc84d.js +9 -0
- package/dist/cjs/{debounce-25dce8a1.js → debounce-6cea2774.js} +1 -3
- package/dist/cjs/dom-fcb646f0.js +78 -0
- package/dist/cjs/{index-5f3dfe40.js → index-cb904e00.js} +283 -577
- package/dist/cjs/index.cjs.js +0 -2
- package/dist/cjs/loader.cjs.js +17 -6
- package/dist/cjs/{resize-observer-7f159b88.js → resize-observer-bf327d6a.js} +3 -5
- package/dist/cjs/revo-grid.cjs.js +60 -12
- package/dist/cjs/revo-grid_11.cjs.entry.js +180 -169
- package/dist/cjs/revogr-clipboard.cjs.entry.js +3 -4
- package/dist/cjs/revogr-filter-panel.cjs.entry.js +6 -11
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/button/button.js +0 -1
- package/dist/collection/components/clipboard/revogr-clipboard.js +80 -82
- package/dist/collection/components/data/cellRenderer.js +2 -2
- package/dist/collection/components/data/columnService.js +3 -4
- package/dist/collection/components/data/revogr-data.js +219 -240
- package/dist/collection/components/data/rowRenderer.js +0 -1
- package/dist/collection/components/header/headerCellRenderer.js +3 -2
- package/dist/collection/components/header/headerRenderer.js +3 -2
- package/dist/collection/components/header/revogr-header.js +229 -244
- package/dist/collection/components/order/orderRenderer.js +5 -2
- package/dist/collection/components/order/revogr-order-editor.js +248 -257
- package/dist/collection/components/order/rowOrderService.js +0 -1
- package/dist/collection/components/overlay/autofill.service.js +0 -1
- package/dist/collection/components/overlay/clipboard.service.js +0 -1
- package/dist/collection/components/overlay/editors/edit.utils.js +0 -1
- package/dist/collection/components/overlay/editors/text.js +0 -1
- package/dist/collection/components/overlay/keyboard.service.js +0 -1
- package/dist/collection/components/overlay/revogr-edit.js +94 -106
- package/dist/collection/components/overlay/revogr-overlay-selection.js +472 -514
- package/dist/collection/components/overlay/selection.utils.js +0 -1
- package/dist/collection/components/revo-grid/revo-grid-style.css +13 -7
- package/dist/collection/components/revo-grid/revo-grid.js +1615 -1562
- package/dist/collection/components/revo-grid/viewport.helpers.js +0 -1
- package/dist/collection/components/revo-grid/viewport.interfaces.js +3 -1
- package/dist/collection/components/revo-grid/viewport.js +5 -2
- package/dist/collection/components/revo-grid/viewport.resize.service.js +0 -1
- package/dist/collection/components/revo-grid/viewport.scrolling.service.js +0 -1
- package/dist/collection/components/revo-grid/viewport.section.js +4 -2
- package/dist/collection/components/revo-grid/viewport.service.js +0 -1
- package/dist/collection/components/rowHeaders/revogr-row-headers.js +142 -151
- package/dist/collection/components/rowHeaders/row-header-render.js +0 -1
- package/dist/collection/components/scroll/revogr-viewport-scroll-style.css +4 -2
- package/dist/collection/components/scroll/revogr-viewport-scroll.js +164 -161
- package/dist/collection/components/scrollable/revogr-scroll-virtual.js +135 -147
- package/dist/collection/components/selection-focus/revogr-focus.js +125 -141
- package/dist/collection/components/selection-temp-range/revogr-temp-range-style.css +1 -1
- package/dist/collection/components/selection-temp-range/revogr-temp-range.js +74 -83
- package/dist/collection/global/global.js +0 -1
- package/dist/collection/index.js +0 -1
- package/dist/collection/plugins/autoSizeColumn.js +0 -1
- package/dist/collection/plugins/basePlugin.js +0 -1
- package/dist/collection/plugins/dispatcher.js +0 -1
- package/dist/collection/plugins/export/csv.js +0 -1
- package/dist/collection/plugins/export/export.plugin.js +0 -1
- package/dist/collection/plugins/export/types.js +3 -1
- package/dist/collection/plugins/filter/conditions/equal.js +0 -1
- package/dist/collection/plugins/filter/conditions/number/greaterThan.js +0 -1
- package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js +0 -1
- package/dist/collection/plugins/filter/conditions/number/lessThan.js +0 -1
- package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js +0 -1
- package/dist/collection/plugins/filter/conditions/set.js +0 -1
- package/dist/collection/plugins/filter/conditions/string/beginswith.js +0 -1
- package/dist/collection/plugins/filter/conditions/string/contains.js +0 -1
- package/dist/collection/plugins/filter/filter.button.js +11 -6
- package/dist/collection/plugins/filter/filter.plugin.js +0 -1
- package/dist/collection/plugins/filter/filter.pop.js +234 -239
- package/dist/collection/plugins/filter/filter.service.js +0 -1
- package/dist/collection/plugins/filter/filter.style.css +3 -2
- package/dist/collection/plugins/filter/filter.types.js +3 -1
- package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js +0 -1
- package/dist/collection/plugins/groupingColumn/grouping.col.plugin.js +0 -1
- package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js +0 -1
- package/dist/collection/plugins/groupingRow/grouping.const.js +0 -1
- package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js +0 -1
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +5 -6
- package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +7 -3
- package/dist/collection/plugins/groupingRow/grouping.row.types.js +3 -1
- package/dist/collection/plugins/groupingRow/grouping.service.js +0 -1
- package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js +0 -1
- package/dist/collection/plugins/moveColumn/columnDragPlugin.js +0 -1
- package/dist/collection/plugins/moveColumn/columnOrderHandler.js +0 -1
- package/dist/collection/plugins/sorting/sorting.plugin.js +3 -4
- package/dist/collection/plugins/sorting/sorting.sign.js +0 -1
- package/dist/collection/plugins/stretchPlugin.js +0 -1
- package/dist/collection/plugins/trimmed/trimmed.plugin.js +0 -1
- package/dist/collection/services/cell.helpers.js +0 -1
- package/dist/collection/services/column.data.provider.js +7 -8
- package/dist/collection/services/data.provider.js +0 -1
- package/dist/collection/services/dimension.provider.js +0 -1
- package/dist/collection/services/localScrollService.js +0 -1
- package/dist/collection/services/resizable.directive.js +3 -2
- package/dist/collection/services/selection.store.connector.js +0 -1
- package/dist/collection/services/viewport.provider.js +0 -1
- package/dist/collection/store/dataSource/data.proxy.js +0 -1
- package/dist/collection/store/dataSource/data.store.js +3 -4
- package/dist/collection/store/dimension/dimension.helpers.js +0 -1
- package/dist/collection/store/dimension/dimension.store.js +3 -5
- package/dist/collection/store/selection/selection.helpers.js +0 -1
- package/dist/collection/store/selection/selection.store.js +0 -1
- package/dist/collection/store/selection/selection.store.service.js +0 -1
- package/dist/collection/store/storeTypes.js +0 -1
- package/dist/collection/store/viewPort/viewport.helpers.js +0 -1
- package/dist/collection/store/viewPort/viewport.store.js +0 -1
- package/dist/collection/themeManager/theme.compact.js +0 -1
- package/dist/collection/themeManager/theme.default.js +0 -1
- package/dist/collection/themeManager/theme.material.js +0 -1
- package/dist/collection/themeManager/themeService.js +5 -6
- package/dist/collection/utils/closestPolifill.js +0 -1
- package/dist/collection/utils/consts.js +0 -1
- package/dist/collection/utils/generateAlphabetHeader.js +0 -1
- package/dist/collection/utils/keyCodes.js +0 -1
- package/dist/collection/utils/keyCodes.utils.js +0 -1
- package/dist/collection/utils/platform.js +0 -1
- package/dist/collection/utils/resizeObserver.js +0 -1
- package/dist/collection/utils/store.utils.js +0 -1
- package/dist/collection/utils/utils.js +0 -1
- package/dist/esm/css-shim-e1e1ea5e.js +7 -0
- package/dist/esm/{debounce-7221834a.js → debounce-e4e6dd45.js} +1 -3
- package/dist/esm/dom-21bd1807.js +76 -0
- package/dist/esm/{index-068eebfc.js → index-6f753b3c.js} +279 -577
- package/dist/esm/index.js +0 -2
- package/dist/esm/loader.js +17 -6
- package/dist/esm/polyfills/css-shim.js +1 -1
- package/dist/esm/{resize-observer-d817c4b6.js → resize-observer-00c48d78.js} +3 -5
- package/dist/esm/revo-grid.js +61 -10
- package/dist/esm/revo-grid_11.entry.js +180 -169
- package/dist/esm/revogr-clipboard.entry.js +3 -4
- package/dist/esm/revogr-filter-panel.entry.js +6 -11
- package/dist/esm-es5/css-shim-e1e1ea5e.js +4 -0
- package/dist/esm-es5/{debounce-7221834a.js → debounce-e4e6dd45.js} +1 -2
- package/dist/esm-es5/dom-21bd1807.js +24 -0
- package/dist/esm-es5/index-6f753b3c.js +4 -0
- package/dist/esm-es5/index.js +0 -1
- package/dist/esm-es5/loader.js +1 -2
- package/dist/esm-es5/{resize-observer-d817c4b6.js → resize-observer-00c48d78.js} +1 -2
- package/dist/esm-es5/revo-grid.js +1 -2
- package/dist/esm-es5/revo-grid_11.entry.js +2 -3
- package/dist/esm-es5/revogr-clipboard.entry.js +2 -3
- package/dist/esm-es5/revogr-filter-panel.entry.js +2 -3
- package/dist/revo-grid/css-shim-bcf89cc0.system.js +4 -0
- package/dist/revo-grid/css-shim-e1e1ea5e.js +4 -0
- package/dist/revo-grid/{debounce-fa358fc7.system.js → debounce-5a33c710.system.js} +1 -2
- package/dist/revo-grid/debounce-726bdadb.js +4 -0
- package/dist/revo-grid/dom-21bd1807.js +22 -0
- package/dist/revo-grid/dom-726246e2.system.js +24 -0
- package/dist/revo-grid/index-f14b41a0.system.js +5 -0
- package/dist/revo-grid/index-f30d1de1.js +5 -0
- package/dist/revo-grid/index.esm.js +0 -2
- package/dist/revo-grid/index.system.js +1 -2
- package/dist/revo-grid/resize-observer-00c48d78.js +4 -0
- package/dist/revo-grid/{resize-observer-64c845eb.system.js → resize-observer-8af0bc0e.system.js} +1 -2
- package/dist/revo-grid/revo-grid.esm.js +1 -2
- package/dist/revo-grid/revo-grid.js +2 -0
- package/dist/revo-grid/revo-grid.system.js +1 -2
- package/dist/revo-grid/revo-grid_11.entry.js +1 -2
- package/dist/revo-grid/revo-grid_11.system.entry.js +2 -3
- package/dist/revo-grid/revogr-clipboard.entry.js +1 -2
- package/dist/revo-grid/revogr-clipboard.system.entry.js +2 -3
- package/dist/revo-grid/revogr-filter-panel.entry.js +1 -2
- package/dist/revo-grid/revogr-filter-panel.system.entry.js +2 -3
- package/dist/types/components/data/cellRenderer.d.ts +1 -1
- package/dist/types/components/data/columnService.d.ts +4 -4
- package/dist/types/components/header/headerCellRenderer.d.ts +1 -1
- package/dist/types/components/header/headerRenderer.d.ts +1 -1
- package/dist/types/components/order/orderRenderer.d.ts +1 -1
- package/dist/types/components/order/rowOrderService.d.ts +1 -1
- package/dist/types/components/overlay/autofill.service.d.ts +1 -1
- package/dist/types/components/overlay/clipboard.service.d.ts +1 -1
- package/dist/types/components/overlay/editors/text.d.ts +1 -1
- package/dist/types/components/overlay/keyboard.service.d.ts +1 -1
- package/dist/types/components/overlay/revogr-overlay-selection.d.ts +3 -9
- package/dist/types/components/overlay/selection.utils.d.ts +1 -1
- package/dist/types/components/revo-grid/viewport.d.ts +1 -1
- package/dist/types/components/revo-grid/viewport.interfaces.d.ts +5 -5
- package/dist/types/components/revo-grid/viewport.scrolling.service.d.ts +1 -1
- package/dist/types/components/revo-grid/viewport.section.d.ts +1 -1
- package/dist/types/components/revo-grid/viewport.service.d.ts +3 -3
- package/dist/types/components/rowHeaders/row-header-render.d.ts +1 -1
- package/dist/types/components.d.ts +0 -26
- package/dist/types/plugins/autoSizeColumn.d.ts +1 -1
- package/dist/types/plugins/dispatcher.d.ts +1 -1
- package/dist/types/plugins/export/csv.d.ts +1 -1
- package/dist/types/plugins/export/export.plugin.d.ts +1 -1
- package/dist/types/plugins/export/types.d.ts +2 -2
- package/dist/types/plugins/filter/filter.button.d.ts +1 -1
- package/dist/types/plugins/filter/filter.plugin.d.ts +6 -6
- package/dist/types/plugins/filter/filter.pop.d.ts +4 -4
- package/dist/types/plugins/filter/filter.service.d.ts +1 -1
- package/dist/types/plugins/filter/filter.types.d.ts +5 -5
- package/dist/types/plugins/groupingColumn/columnGroupsRenderer.d.ts +1 -1
- package/dist/types/plugins/groupingColumn/grouping.col.plugin.d.ts +1 -1
- package/dist/types/plugins/groupingColumn/headerGroupRenderer.d.ts +1 -1
- package/dist/types/plugins/groupingRow/grouping.row.renderer.d.ts +1 -1
- package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +5 -5
- package/dist/types/plugins/groupingRow/grouping.service.d.ts +1 -1
- package/dist/types/plugins/moveColumn/columnDragPlugin.d.ts +5 -5
- package/dist/types/plugins/sorting/sorting.plugin.d.ts +1 -1
- package/dist/types/plugins/sorting/sorting.sign.d.ts +1 -1
- package/dist/types/plugins/trimmed/trimmed.plugin.d.ts +2 -2
- package/dist/types/services/column.data.provider.d.ts +4 -4
- package/dist/types/services/data.provider.d.ts +1 -1
- package/dist/types/services/dimension.provider.d.ts +2 -2
- package/dist/types/services/localScrollService.d.ts +1 -1
- package/dist/types/services/resizable.directive.d.ts +2 -2
- package/dist/types/services/selection.store.connector.d.ts +2 -2
- package/dist/types/services/viewport.provider.d.ts +1 -1
- package/dist/types/stencil-public-runtime.d.ts +19 -91
- package/dist/types/store/dataSource/data.proxy.d.ts +1 -1
- package/dist/types/store/dataSource/data.store.d.ts +4 -4
- package/dist/types/store/dimension/dimension.helpers.d.ts +3 -3
- package/dist/types/store/selection/selection.store.d.ts +1 -1
- package/dist/types/store/viewPort/viewport.helpers.d.ts +2 -2
- package/loader/index.d.ts +0 -9
- package/loader/package.json +0 -1
- package/package.json +1 -1
- package/custom-element/_baseIteratee.js.map +0 -1
- package/custom-element/columnService.js.map +0 -1
- package/custom-element/consts.js.map +0 -1
- package/custom-element/data.store.js.map +0 -1
- package/custom-element/debounce.js.map +0 -1
- package/custom-element/dimension.helpers.js.map +0 -1
- package/custom-element/each.js.map +0 -1
- package/custom-element/filter.button.js.map +0 -1
- package/custom-element/identity.js.map +0 -1
- package/custom-element/index.js.map +0 -1
- package/custom-element/isSymbol.js.map +0 -1
- package/custom-element/keys.js.map +0 -1
- package/custom-element/localScrollService.js.map +0 -1
- package/custom-element/resize-observer.js.map +0 -1
- package/custom-element/revo-grid.js.map +0 -1
- package/custom-element/revogr-clipboard.js.map +0 -1
- package/custom-element/revogr-data.js.map +0 -1
- package/custom-element/revogr-data2.js.map +0 -1
- package/custom-element/revogr-edit.js.map +0 -1
- package/custom-element/revogr-edit2.js.map +0 -1
- package/custom-element/revogr-filter-panel.js.map +0 -1
- package/custom-element/revogr-focus.js.map +0 -1
- package/custom-element/revogr-focus2.js.map +0 -1
- package/custom-element/revogr-header.js.map +0 -1
- package/custom-element/revogr-header2.js.map +0 -1
- package/custom-element/revogr-order-editor.js.map +0 -1
- package/custom-element/revogr-order-editor2.js.map +0 -1
- package/custom-element/revogr-overlay-selection.js.map +0 -1
- package/custom-element/revogr-overlay-selection2.js.map +0 -1
- package/custom-element/revogr-row-headers.js.map +0 -1
- package/custom-element/revogr-row-headers2.js.map +0 -1
- package/custom-element/revogr-scroll-virtual.js.map +0 -1
- package/custom-element/revogr-scroll-virtual2.js.map +0 -1
- package/custom-element/revogr-temp-range.js.map +0 -1
- package/custom-element/revogr-temp-range2.js.map +0 -1
- package/custom-element/revogr-viewport-scroll.js.map +0 -1
- package/custom-element/revogr-viewport-scroll2.js.map +0 -1
- package/custom-element/selection.utils.js.map +0 -1
- package/custom-element/themeService.js +0 -65
- package/custom-element/themeService.js.map +0 -1
- package/custom-element/toInteger.js.map +0 -1
- package/custom-element/toNumber.js.map +0 -1
- package/custom-element/utils.js.map +0 -1
- package/dist/cjs/debounce-25dce8a1.js.map +0 -1
- package/dist/cjs/index-5f3dfe40.js.map +0 -1
- package/dist/cjs/index.cjs.js.map +0 -1
- package/dist/cjs/loader.cjs.js.map +0 -1
- package/dist/cjs/resize-observer-7f159b88.js.map +0 -1
- package/dist/cjs/revo-grid.cjs.js.map +0 -1
- package/dist/cjs/revo-grid_11.cjs.entry.js.map +0 -1
- package/dist/cjs/revogr-clipboard.cjs.entry.js.map +0 -1
- package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +0 -1
- package/dist/collection/components/button/button.js.map +0 -1
- package/dist/collection/components/clipboard/revogr-clipboard.js.map +0 -1
- package/dist/collection/components/data/cellRenderer.js.map +0 -1
- package/dist/collection/components/data/columnService.js.map +0 -1
- package/dist/collection/components/data/revogr-data.js.map +0 -1
- package/dist/collection/components/data/rowRenderer.js.map +0 -1
- package/dist/collection/components/header/headerCellRenderer.js.map +0 -1
- package/dist/collection/components/header/headerRenderer.js.map +0 -1
- package/dist/collection/components/header/revogr-header.js.map +0 -1
- package/dist/collection/components/order/orderRenderer.js.map +0 -1
- package/dist/collection/components/order/revogr-order-editor.js.map +0 -1
- package/dist/collection/components/order/rowOrderService.js.map +0 -1
- package/dist/collection/components/overlay/autofill.service.js.map +0 -1
- package/dist/collection/components/overlay/clipboard.service.js.map +0 -1
- package/dist/collection/components/overlay/editors/edit.utils.js.map +0 -1
- package/dist/collection/components/overlay/editors/text.js.map +0 -1
- package/dist/collection/components/overlay/keyboard.service.js.map +0 -1
- package/dist/collection/components/overlay/revogr-edit.js.map +0 -1
- package/dist/collection/components/overlay/revogr-overlay-selection.js.map +0 -1
- package/dist/collection/components/overlay/selection.utils.js.map +0 -1
- package/dist/collection/components/revo-grid/revo-grid.js.map +0 -1
- package/dist/collection/components/revo-grid/viewport.helpers.js.map +0 -1
- package/dist/collection/components/revo-grid/viewport.interfaces.js.map +0 -1
- package/dist/collection/components/revo-grid/viewport.js.map +0 -1
- package/dist/collection/components/revo-grid/viewport.resize.service.js.map +0 -1
- package/dist/collection/components/revo-grid/viewport.scrolling.service.js.map +0 -1
- package/dist/collection/components/revo-grid/viewport.section.js.map +0 -1
- package/dist/collection/components/revo-grid/viewport.service.js.map +0 -1
- package/dist/collection/components/rowHeaders/revogr-row-headers.js.map +0 -1
- package/dist/collection/components/rowHeaders/row-header-render.js.map +0 -1
- package/dist/collection/components/scroll/revogr-viewport-scroll.js.map +0 -1
- package/dist/collection/components/scrollable/revogr-scroll-virtual.js.map +0 -1
- package/dist/collection/components/selection-focus/revogr-focus.js.map +0 -1
- package/dist/collection/components/selection-temp-range/revogr-temp-range.js.map +0 -1
- package/dist/collection/global/global.js.map +0 -1
- package/dist/collection/index.js.map +0 -1
- package/dist/collection/plugins/autoSizeColumn.js.map +0 -1
- package/dist/collection/plugins/basePlugin.js.map +0 -1
- package/dist/collection/plugins/dispatcher.js.map +0 -1
- package/dist/collection/plugins/export/csv.js.map +0 -1
- package/dist/collection/plugins/export/export.plugin.js.map +0 -1
- package/dist/collection/plugins/export/types.js.map +0 -1
- package/dist/collection/plugins/filter/conditions/equal.js.map +0 -1
- package/dist/collection/plugins/filter/conditions/number/greaterThan.js.map +0 -1
- package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js.map +0 -1
- package/dist/collection/plugins/filter/conditions/number/lessThan.js.map +0 -1
- package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js.map +0 -1
- package/dist/collection/plugins/filter/conditions/set.js.map +0 -1
- package/dist/collection/plugins/filter/conditions/string/beginswith.js.map +0 -1
- package/dist/collection/plugins/filter/conditions/string/contains.js.map +0 -1
- package/dist/collection/plugins/filter/filter.button.js.map +0 -1
- package/dist/collection/plugins/filter/filter.plugin.js.map +0 -1
- package/dist/collection/plugins/filter/filter.pop.js.map +0 -1
- package/dist/collection/plugins/filter/filter.service.js.map +0 -1
- package/dist/collection/plugins/filter/filter.types.js.map +0 -1
- package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js.map +0 -1
- package/dist/collection/plugins/groupingColumn/grouping.col.plugin.js.map +0 -1
- package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js.map +0 -1
- package/dist/collection/plugins/groupingRow/grouping.const.js.map +0 -1
- package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js.map +0 -1
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +0 -1
- package/dist/collection/plugins/groupingRow/grouping.row.renderer.js.map +0 -1
- package/dist/collection/plugins/groupingRow/grouping.row.types.js.map +0 -1
- package/dist/collection/plugins/groupingRow/grouping.service.js.map +0 -1
- package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js.map +0 -1
- package/dist/collection/plugins/moveColumn/columnDragPlugin.js.map +0 -1
- package/dist/collection/plugins/moveColumn/columnOrderHandler.js.map +0 -1
- package/dist/collection/plugins/sorting/sorting.plugin.js.map +0 -1
- package/dist/collection/plugins/sorting/sorting.sign.js.map +0 -1
- package/dist/collection/plugins/stretchPlugin.js.map +0 -1
- package/dist/collection/plugins/trimmed/trimmed.plugin.js.map +0 -1
- package/dist/collection/services/cell.helpers.js.map +0 -1
- package/dist/collection/services/column.data.provider.js.map +0 -1
- package/dist/collection/services/data.provider.js.map +0 -1
- package/dist/collection/services/dimension.provider.js.map +0 -1
- package/dist/collection/services/localScrollService.js.map +0 -1
- package/dist/collection/services/resizable.directive.js.map +0 -1
- package/dist/collection/services/selection.store.connector.js.map +0 -1
- package/dist/collection/services/viewport.provider.js.map +0 -1
- package/dist/collection/store/dataSource/data.proxy.js.map +0 -1
- package/dist/collection/store/dataSource/data.store.js.map +0 -1
- package/dist/collection/store/dimension/dimension.helpers.js.map +0 -1
- package/dist/collection/store/dimension/dimension.store.js.map +0 -1
- package/dist/collection/store/selection/selection.helpers.js.map +0 -1
- package/dist/collection/store/selection/selection.store.js.map +0 -1
- package/dist/collection/store/selection/selection.store.service.js.map +0 -1
- package/dist/collection/store/storeTypes.js.map +0 -1
- package/dist/collection/store/viewPort/viewport.helpers.js.map +0 -1
- package/dist/collection/store/viewPort/viewport.store.js.map +0 -1
- package/dist/collection/themeManager/theme.compact.js.map +0 -1
- package/dist/collection/themeManager/theme.default.js.map +0 -1
- package/dist/collection/themeManager/theme.material.js.map +0 -1
- package/dist/collection/themeManager/themeService.js.map +0 -1
- package/dist/collection/utils/closestPolifill.js.map +0 -1
- package/dist/collection/utils/consts.js.map +0 -1
- package/dist/collection/utils/generateAlphabetHeader.js.map +0 -1
- package/dist/collection/utils/keyCodes.js.map +0 -1
- package/dist/collection/utils/keyCodes.utils.js.map +0 -1
- package/dist/collection/utils/platform.js.map +0 -1
- package/dist/collection/utils/resizeObserver.js.map +0 -1
- package/dist/collection/utils/store.utils.js.map +0 -1
- package/dist/collection/utils/utils.js.map +0 -1
- package/dist/esm/debounce-7221834a.js.map +0 -1
- package/dist/esm/index-068eebfc.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/loader.js.map +0 -1
- package/dist/esm/resize-observer-d817c4b6.js.map +0 -1
- package/dist/esm/revo-grid.js.map +0 -1
- package/dist/esm/revo-grid_11.entry.js.map +0 -1
- package/dist/esm/revogr-clipboard.entry.js.map +0 -1
- package/dist/esm/revogr-filter-panel.entry.js.map +0 -1
- package/dist/esm-es5/debounce-7221834a.js.map +0 -1
- package/dist/esm-es5/index-068eebfc.js +0 -5
- package/dist/esm-es5/index-068eebfc.js.map +0 -1
- package/dist/esm-es5/index.js.map +0 -1
- package/dist/esm-es5/loader.js.map +0 -1
- package/dist/esm-es5/resize-observer-d817c4b6.js.map +0 -1
- package/dist/esm-es5/revo-grid.js.map +0 -1
- package/dist/esm-es5/revo-grid_11.entry.js.map +0 -1
- package/dist/esm-es5/revogr-clipboard.entry.js.map +0 -1
- package/dist/esm-es5/revogr-filter-panel.entry.js.map +0 -1
- package/dist/revo-grid/debounce-7221834a.js +0 -5
- package/dist/revo-grid/debounce-7221834a.js.map +0 -1
- package/dist/revo-grid/debounce-fa358fc7.system.js.map +0 -1
- package/dist/revo-grid/index-068eebfc.js +0 -6
- package/dist/revo-grid/index-068eebfc.js.map +0 -1
- package/dist/revo-grid/index-36847b63.system.js +0 -6
- package/dist/revo-grid/index-36847b63.system.js.map +0 -1
- package/dist/revo-grid/index.esm.js.map +0 -1
- package/dist/revo-grid/index.system.js.map +0 -1
- package/dist/revo-grid/resize-observer-64c845eb.system.js.map +0 -1
- package/dist/revo-grid/resize-observer-d817c4b6.js +0 -5
- package/dist/revo-grid/resize-observer-d817c4b6.js.map +0 -1
- package/dist/revo-grid/revo-grid.esm.js.map +0 -1
- package/dist/revo-grid/revo-grid.system.js.map +0 -1
- package/dist/revo-grid/revo-grid_11.entry.js.map +0 -1
- package/dist/revo-grid/revo-grid_11.system.entry.js.map +0 -1
- package/dist/revo-grid/revogr-clipboard.entry.js.map +0 -1
- package/dist/revo-grid/revogr-clipboard.system.entry.js.map +0 -1
- package/dist/revo-grid/revogr-filter-panel.entry.js.map +0 -1
- package/dist/revo-grid/revogr-filter-panel.system.entry.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["Clipboard","onPaste","e","clipboardData","this","getData","isHTML","types","indexOf","data","parsedData","htmlParse","textParse","pasteRegion","emit","preventDefault","copyStarted","copyRegion","async","setData","parserCopy","map","rgRow","join","result","rows","split","y","push","table","document","createRange","createContextualFragment","querySelector","Array","from","cells","cell","innerText","window"],"sources":["./src/components/clipboard/revogr-clipboard.tsx"],"sourcesContent":["import { Component, Listen, Method, Event, EventEmitter } from '@stencil/core';\nimport { RevoGrid } from '../../interfaces';\n\n@Component({ tag: 'revogr-clipboard' })\nexport class Clipboard {\n @Event({ bubbles: false }) copyRegion: EventEmitter<DataTransfer>;\n @Event({ bubbles: false }) pasteRegion: EventEmitter<string[][]>;\n @Listen('paste', { target: 'document' }) onPaste(e: ClipboardEvent) {\n const clipboardData = this.getData(e);\n const isHTML = clipboardData.types.indexOf('text/html') > -1;\n const data = isHTML ? clipboardData.getData('text/html') : clipboardData.getData('text');\n const parsedData = isHTML ? this.htmlParse(data) : this.textParse(data);\n this.pasteRegion.emit(parsedData);\n e.preventDefault();\n }\n @Listen('copy', { target: 'document' }) copyStarted(e: ClipboardEvent) {\n this.copyRegion.emit(this.getData(e));\n e.preventDefault();\n }\n @Method() async doCopy(e: DataTransfer, data?: RevoGrid.DataFormat[][]) {\n e.setData('text/plain', data ? this.parserCopy(data) : '');\n }\n\n parserCopy(data: RevoGrid.DataFormat[][]) {\n return data.map(rgRow => rgRow.join('\\t')).join('\\n');\n }\n\n private textParse(data: string) {\n const result: string[][] = [];\n const rows = data.split(/\\r\\n|\\n|\\r/);\n for (let y in rows) {\n result.push(rows[y].split('\\t'));\n }\n return result;\n }\n\n private htmlParse(data: string) {\n const result: string[][] = [];\n const table = document.createRange().createContextualFragment(data).querySelector('table');\n for (const rgRow of Array.from(table.rows)) {\n result.push(Array.from(rgRow.cells).map(cell => cell.innerText));\n }\n return result;\n }\n\n private getData(e: ClipboardEvent) {\n return e.clipboardData || ((window as unknown) as { clipboardData: DataTransfer | null })?.clipboardData;\n }\n}\n"],"mappings":";;;qDAIaA,EAAS,M,yGAGqBC,QAAQC,GAC/C,MAAMC,EAAgBC,KAAKC,QAAQH,GACnC,MAAMI,EAASH,EAAcI,MAAMC,QAAQ,cAAgB,EAC3D,MAAMC,EAAOH,EAASH,EAAcE,QAAQ,aAAeF,EAAcE,QAAQ,QACjF,MAAMK,EAAaJ,EAASF,KAAKO,UAAUF,GAAQL,KAAKQ,UAAUH,GAClEL,KAAKS,YAAYC,KAAKJ,GACtBR,EAAEa,gB,CAEoCC,YAAYd,GAClDE,KAAKa,WAAWH,KAAKV,KAAKC,QAAQH,IAClCA,EAAEa,gB,CAEMG,aAAahB,EAAiBO,GACtCP,EAAEiB,QAAQ,aAAcV,EAAOL,KAAKgB,WAAWX,GAAQ,G,CAGzDW,WAAWX,GACT,OAAOA,EAAKY,KAAIC,GAASA,EAAMC,KAAK,QAAOA,KAAK,K,CAG1CX,UAAUH,GAChB,MAAMe,EAAqB,GAC3B,MAAMC,EAAOhB,EAAKiB,MAAM,cACxB,IAAK,IAAIC,KAAKF,EAAM,CAClBD,EAAOI,KAAKH,EAAKE,GAAGD,MAAM,M,CAE5B,OAAOF,C,CAGDb,UAAUF,GAChB,MAAMe,EAAqB,GAC3B,MAAMK,EAAQC,SAASC,cAAcC,yBAAyBvB,GAAMwB,cAAc,SAClF,IAAK,MAAMX,KAASY,MAAMC,KAAKN,EAAMJ,MAAO,CAC1CD,EAAOI,KAAKM,MAAMC,KAAKb,EAAMc,OAAOf,KAAIgB,GAAQA,EAAKC,Y,CAEvD,OAAOd,C,CAGDnB,QAAQH,GACd,OAAOA,EAAEC,gBAAmBoC,SAA6D,MAA7DA,cAAM,SAANA,OAA+DpC,c"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["Clipboard","exports","class_1","prototype","onPaste","e","clipboardData","this","getData","isHTML","types","indexOf","data","parsedData","htmlParse","textParse","pasteRegion","emit","preventDefault","copyStarted","copyRegion","doCopy","setData","parserCopy","map","rgRow","join","result","rows","split","y","push","table","document","createRange","createContextualFragment","querySelector","_i","_a","Array","from","length","cells","cell","innerText","window"],"sources":["src/components/clipboard/revogr-clipboard.tsx"],"sourcesContent":["import { Component, Listen, Method, Event, EventEmitter } from '@stencil/core';\nimport { RevoGrid } from '../../interfaces';\n\n@Component({ tag: 'revogr-clipboard' })\nexport class Clipboard {\n @Event({ bubbles: false }) copyRegion: EventEmitter<DataTransfer>;\n @Event({ bubbles: false }) pasteRegion: EventEmitter<string[][]>;\n @Listen('paste', { target: 'document' }) onPaste(e: ClipboardEvent) {\n const clipboardData = this.getData(e);\n const isHTML = clipboardData.types.indexOf('text/html') > -1;\n const data = isHTML ? clipboardData.getData('text/html') : clipboardData.getData('text');\n const parsedData = isHTML ? this.htmlParse(data) : this.textParse(data);\n this.pasteRegion.emit(parsedData);\n e.preventDefault();\n }\n @Listen('copy', { target: 'document' }) copyStarted(e: ClipboardEvent) {\n this.copyRegion.emit(this.getData(e));\n e.preventDefault();\n }\n @Method() async doCopy(e: DataTransfer, data?: RevoGrid.DataFormat[][]) {\n e.setData('text/plain', data ? this.parserCopy(data) : '');\n }\n\n parserCopy(data: RevoGrid.DataFormat[][]) {\n return data.map(rgRow => rgRow.join('\\t')).join('\\n');\n }\n\n private textParse(data: string) {\n const result: string[][] = [];\n const rows = data.split(/\\r\\n|\\n|\\r/);\n for (let y in rows) {\n result.push(rows[y].split('\\t'));\n }\n return result;\n }\n\n private htmlParse(data: string) {\n const result: string[][] = [];\n const table = document.createRange().createContextualFragment(data).querySelector('table');\n for (const rgRow of Array.from(table.rows)) {\n result.push(Array.from(rgRow.cells).map(cell => cell.innerText));\n }\n return result;\n }\n\n private getData(e: ClipboardEvent) {\n return e.clipboardData || ((window as unknown) as { clipboardData: DataTransfer | null })?.clipboardData;\n }\n}\n"],"mappings":";;;qJAIaA,EAASC,EAAA,8B,wGAGqBC,EAAAC,UAAAC,QAAA,SAAQC,GAC/C,IAAMC,EAAgBC,KAAKC,QAAQH,GACnC,IAAMI,EAASH,EAAcI,MAAMC,QAAQ,cAAgB,EAC3D,IAAMC,EAAOH,EAASH,EAAcE,QAAQ,aAAeF,EAAcE,QAAQ,QACjF,IAAMK,EAAaJ,EAASF,KAAKO,UAAUF,GAAQL,KAAKQ,UAAUH,GAClEL,KAAKS,YAAYC,KAAKJ,GACtBR,EAAEa,gB,EAEoChB,EAAAC,UAAAgB,YAAA,SAAYd,GAClDE,KAAKa,WAAWH,KAAKV,KAAKC,QAAQH,IAClCA,EAAEa,gB,EAEYhB,EAAAC,UAAAkB,OAAN,SAAahB,EAAiBO,G,qFACtCP,EAAEiB,QAAQ,aAAcV,EAAOL,KAAKgB,WAAWX,GAAQ,I,iBAGzDV,EAAAC,UAAAoB,WAAA,SAAWX,GACT,OAAOA,EAAKY,KAAI,SAAAC,GAAS,OAAAA,EAAMC,KAAK,KAAX,IAAkBA,KAAK,K,EAG1CxB,EAAAC,UAAAY,UAAA,SAAUH,GAChB,IAAMe,EAAqB,GAC3B,IAAMC,EAAOhB,EAAKiB,MAAM,cACxB,IAAK,IAAIC,KAAKF,EAAM,CAClBD,EAAOI,KAAKH,EAAKE,GAAGD,MAAM,M,CAE5B,OAAOF,C,EAGDzB,EAAAC,UAAAW,UAAA,SAAUF,GAChB,IAAMe,EAAqB,GAC3B,IAAMK,EAAQC,SAASC,cAAcC,yBAAyBvB,GAAMwB,cAAc,SAClF,IAAoB,IAAAC,EAAA,EAAAC,EAAAC,MAAMC,KAAKR,EAAMJ,MAAjBS,EAAAC,EAAAG,OAAAJ,IAAwB,CAAvC,IAAMZ,EAAKa,EAAAD,GACdV,EAAOI,KAAKQ,MAAMC,KAAKf,EAAMiB,OAAOlB,KAAI,SAAAmB,GAAQ,OAAAA,EAAKC,SAAL,I,CAElD,OAAOjB,C,EAGDzB,EAAAC,UAAAK,QAAA,SAAQH,GACd,OAAOA,EAAEC,gBAAmBuC,SAA6D,MAA7DA,cAAM,SAANA,OAA+DvC,c,WA1CzE,G"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["RevoButton","props","children","h","Object","assign","class","closest","Element","prototype","matches","msMatchesSelector","webkitMatchesSelector","s","el","this","call","parentElement","parentNode","nodeType","filterStyleCss","defaultType","FILTER_LIST_CLASS","FILTER_LIST_CLASS_ACTION","FilterPanel","filterCaptionsInternal","title","save","reset","cancel","debouncedApplyFilter","debounce","filterChange","emit","filterItems","onMouseDown","e","changes","defaultPrevented","target","isOutside","isFilterBtn","undefined","async","newEntity","type","componentWillRender","isFilterIdSet","keys","prop","filterId","length","renderSelectOptions","isDefaultTypeRemoved","options","_a","push","selected","currentFilterType","value","filterNames","gIndex","filterTypes","map","k","disabled","renderExtra","index","currentFilter","filterEntities","extra","id","placeholder","onInput","onUserInput","bind","onKeyDown","getFilterItemsList","propFilters","key","d","andOrButton","onClick","toggleFilterAndOr","AndOrButton","isAnd","relation","onChange","onFilterTypeChange","onRemoveFilter","TrashButton","render","Host","style","display","left","x","top","y","capts","filterCaptions","onAddNewFilter","disableDynamicFiltering","red","onSave","onReset","light","onCancel","setTimeout","input","document","getElementById","focus","addNewFilterToProp","select","currentFilterId","event","toLowerCase","stopPropagation","assertChanges","items","findIndex","splice","Error","classList","contains","uuid"],"sources":["./src/components/button/button.tsx","./src/utils/closestPolifill.ts","./src/plugins/filter/filter.style.scss?tag=revogr-filter-panel","./src/plugins/filter/filter.pop.tsx"],"sourcesContent":["import { h } from '@stencil/core';\nimport { JSXBase, VNode } from '@stencil/core/internal';\n\ninterface Props extends Partial<JSXBase.ButtonHTMLAttributes<HTMLButtonElement>> {}\n\nexport const RevoButton = (props: Props, children: VNode[]) => {\n return (\n <button\n {...props}\n class={{\n ...(typeof props.class === 'object' ? props.class : props.class ? { [props.class]: true } : ''),\n ['revo-button']: true,\n }}\n >\n {children}\n </button>\n );\n};\n","(function closest() {\n if (!Element.prototype.matches) {\n Element.prototype.matches =\n ((Element.prototype as unknown) as { msMatchesSelector: (selectors: string) => boolean }).msMatchesSelector || Element.prototype.webkitMatchesSelector;\n }\n\n if (!Element.prototype.closest) {\n Element.prototype.closest = function (s: string) {\n let el: HTMLElement | Element | (Node & ParentNode) = this;\n\n do {\n if (Element.prototype.matches.call(el, s)) {\n return el;\n }\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n }\n})();\n","revogr-filter-panel {\n position: absolute;\n display: block;\n top: 0;\n left: 0;\n z-index: 100;\n\n opacity: 1;\n transform: none;\n background-color: #fff;\n transform-origin: 62px 0px;\n box-shadow: 0 5px 18px -2px rgba(black, 20%);\n padding: 10px;\n border-radius: 4px;\n\n min-width: 220px;\n text-align: left;\n\n .filter-holder > div {\n display: flex;\n flex-direction: column;\n }\n\n label {\n color: gray;\n font-size: 13px;\n font-weight: 600;\n display: block;\n padding: 8px 0;\n }\n\n select {\n width: 100%;\n }\n\n input[type=\"text\"] {\n border: 0;\n min-height: 34px;\n margin: 5px 0;\n background: #f3f3f3;\n border-radius: 5px;\n padding: 0 10px;\n box-sizing: border-box;\n width: 100%;\n }\n\n button {\n margin-top: 10px;\n margin-right: 5px;\n }\n\n\n .filter-actions {\n text-align: right;\n margin-right: -5px;\n }\n}\n\n.rgHeaderCell {\n &:hover .rv-filter {\n transition: opacity 267ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, transform 178ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n }\n &:hover .rv-filter,\n .rv-filter.active {\n opacity: 1;\n }\n\n .rv-filter {\n $btn-size: 24px;\n height: $btn-size;\n width: $btn-size;\n background: none;\n border: 0;\n opacity: 0;\n visibility: visible;\n cursor: pointer;\n border-radius: 4px;\n\n &.active {\n color: #10224a;\n }\n\n .filter-img {\n $img-size: 11px;\n color: gray;\n width: $img-size;\n }\n }\n}\n\n.select-css {\n $gradient: \"data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23007CB2%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E\";\n $linearGradient: linear-gradient(to bottom, #ffffff 0%, #ffffff 100%);\n $borderColor: #f1f1f1;\n\n display: block;\n font-family: sans-serif;\n font-weight: 600;\n color: #444;\n line-height: 1.3;\n padding: 0.6em 1.4em 0.5em 0.8em;\n width: 100%;\n max-width: 100%; /* useful when width is set to anything other than 100% */\n box-sizing: border-box;\n margin: 0;\n border: 1px solid $borderColor;\n box-shadow: transparent;\n border-radius: 0.5em;\n appearance: none;\n background-color: #fff;\n background-image: url($gradient), $linearGradient;\n background-repeat: no-repeat, repeat;\n /* arrow icon position (1em from the right, 50% vertical) , then gradient position*/\n background-position: right 0.7em top 50%, 0 0;\n /* icon size, then gradient */\n background-size: 0.65em auto, 100%;\n\n /* Hide arrow icon in IE browsers */\n &::-ms-expand {\n display: none;\n }\n /* Hover style */\n &:hover {\n border-color: rgb(197, 197, 197);\n }\n /* Focus style */\n &:focus {\n border-color: $borderColor;\n box-shadow: 0 0 1px 3px rgba(59, 153, 252, 0.7);\n box-shadow: 0 0 0 3px -moz-mac-focusring;\n color: #222;\n outline: none;\n }\n\n /* Set options to normal weight */\n option {\n font-weight: normal;\n }\n\n /* Disabled styles */\n &:disabled,\n &[aria-disabled=\"true\"] {\n color: gray;\n background-image: url(\"data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22graytext%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E\"),\n linear-gradient(to bottom, #ffffff 0%, #ffffff 100%);\n }\n\n &:disabled:hover,\n &[aria-disabled=\"true\"] {\n border-color: $borderColor;\n }\n}\n\n.multi-filter-list {\n margin-top: 5px;\n margin-bottom: 5px;\n\n div {\n white-space: nowrap;\n }\n\n .multi-filter-list-action {\n display: flex;\n\n justify-content: space-between;\n align-items: center;\n }\n\n .and-or-button {\n margin: 0 0 0 10px;\n min-width: 58px;\n cursor: pointer;\n }\n .trash-button {\n $btn-remove-size: 22px;\n margin: 0 0 -2px 6px;\n cursor: pointer;\n\n width: $btn-remove-size;\n height: $btn-remove-size;\n color: gray;\n font-size: 18px;\n\n\n .trash-img {\n width: 1em;\n }\n }\n}\n\n.add-filter-divider {\n display: block;\n margin: 0 -10px 10px -10px;\n\n border-bottom: 1px solid #d9d9d9;\n height: 10px;\n box-shadow: 0 4px 5px rgb(0 0 0 / 5%);\n}\n\n.select-input {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}","import { Component, h, Host, Listen, Prop, State, Event, EventEmitter, VNode, Method } from '@stencil/core';\nimport { FilterType } from './filter.service';\nimport { RevoGrid } from '../../interfaces';\nimport { AndOrButton, isFilterBtn, TrashButton } from './filter.button';\nimport { RevoButton } from '../../components/button/button';\nimport '../../utils/closestPolifill';\nimport { LogicFunction } from './filter.types';\nimport { FilterCaptions } from './filter.plugin';\nimport debounce from 'lodash/debounce';\n\n/**\n * @typedef FilterItem\n * @type {object}\n * @property {ColumnProp} prop - column id\n * @property {FilterType} type - filter type definition\n * @property {any} value - value for additional filtering, text value or some id\n */\nexport type FilterItem = {\n prop?: RevoGrid.ColumnProp;\n type?: FilterType;\n value?: any;\n};\n\nexport type FilterData = {\n id: number;\n type: FilterType;\n value?: any;\n relation: 'and' | 'or';\n};\n\nexport type MultiFilterItem = {\n [prop: string]: FilterData[];\n};\n\nexport type ShowData = {\n x: number;\n y: number;\n} & FilterItem;\n\nconst defaultType: FilterType = 'none';\n\nconst FILTER_LIST_CLASS = 'multi-filter-list';\nconst FILTER_LIST_CLASS_ACTION = 'multi-filter-list-action';\n\n@Component({\n tag: 'revogr-filter-panel',\n styleUrl: 'filter.style.scss',\n})\nexport class FilterPanel {\n private filterCaptionsInternal: FilterCaptions = {\n title: 'Filter by condition',\n save: 'Save',\n reset: 'Reset',\n cancel: 'Close',\n };\n @State() isFilterIdSet = false;\n @State() filterId = 0;\n @State() currentFilterId: number = -1;\n @State() currentFilterType: FilterType = defaultType;\n @State() changes: ShowData | undefined;\n @Prop({ mutable: true, reflect: true }) uuid: string;\n @Prop() filterItems: MultiFilterItem = {};\n @Prop() filterTypes: Record<string, string[]> = {};\n @Prop() filterNames: Record<string, string> = {};\n @Prop() filterEntities: Record<string, LogicFunction> = {};\n @Prop() filterCaptions: FilterCaptions | undefined;\n @Prop() disableDynamicFiltering: boolean = false;\n @Event() filterChange: EventEmitter<MultiFilterItem>;\n @Listen('mousedown', { target: 'document' }) onMouseDown(e: MouseEvent): void {\n if (this.changes && !e.defaultPrevented) {\n const el = e.target as HTMLElement;\n if (this.isOutside(el) && !isFilterBtn(el)) {\n this.changes = undefined;\n }\n }\n }\n @Method() async show(newEntity?: ShowData) {\n this.changes = newEntity;\n if (this.changes) {\n this.changes.type = this.changes.type || defaultType;\n }\n }\n\n @Method() async getChanges() {\n return this.changes;\n }\n\n componentWillRender() {\n if (!this.isFilterIdSet) {\n this.isFilterIdSet = true;\n const filterItems = Object.keys(this.filterItems);\n for (const prop of filterItems) {\n // we set the proper filterId so there won't be any conflict when removing filters\n this.filterId += this.filterItems[prop].length;\n }\n }\n }\n\n renderSelectOptions(type: FilterType, isDefaultTypeRemoved = false) {\n const options: VNode[] = [];\n const prop = this.changes?.prop;\n\n if (!isDefaultTypeRemoved) {\n options.push(\n <option selected={this.currentFilterType === defaultType} value={defaultType}>\n {prop && this.filterItems[prop] && this.filterItems[prop].length > 0 ? 'Add more condition...' : this.filterNames[defaultType]}\n </option>,\n );\n }\n\n for (let gIndex in this.filterTypes) {\n options.push(\n ...this.filterTypes[gIndex].map(k => (\n <option value={k} selected={type === k}>\n {this.filterNames[k]}\n </option>\n )),\n );\n options.push(<option disabled></option>);\n }\n return options;\n }\n\n renderExtra(prop: RevoGrid.ColumnProp, index: number) {\n const currentFilter = this.filterItems[prop];\n\n if (!currentFilter) return '';\n\n if (this.filterEntities[currentFilter[index].type].extra !== 'input') return '';\n\n return (\n <input\n id={`filter-input-${currentFilter[index].id}`}\n placeholder=\"Enter value...\"\n type=\"text\"\n value={currentFilter[index].value}\n onInput={this.onUserInput.bind(this, index, prop)}\n onKeyDown={e => this.onKeyDown(e)}\n />\n );\n }\n\n getFilterItemsList() {\n const prop = this.changes?.prop;\n if (!(prop || prop === 0)) return '';\n\n const propFilters = this.filterItems[prop] || [];\n return (\n <div key={this.filterId}>\n {propFilters.map((d, index) => {\n let andOrButton;\n\n // hide toggle button if there is only one filter and the last one\n if (index !== this.filterItems[prop].length - 1) {\n andOrButton = (\n <div onClick={() => this.toggleFilterAndOr(d.id)}>\n <AndOrButton isAnd={d.relation === 'and'} />\n </div>\n );\n }\n\n return (\n <div key={d.id} class={FILTER_LIST_CLASS}>\n <div class={{ 'select-input': true }}>\n <select class=\"select-css select-filter\" onChange={e => this.onFilterTypeChange(e, prop, index)}>\n {this.renderSelectOptions(this.filterItems[prop][index].type, true)}\n </select>\n <div class={FILTER_LIST_CLASS_ACTION}>{andOrButton}</div>\n <div onClick={() => this.onRemoveFilter(d.id)}>\n <TrashButton />\n </div>\n </div>\n <div>{this.renderExtra(prop, index)}</div>\n </div>\n );\n })}\n\n {propFilters.length > 0 ? <div class=\"add-filter-divider\"></div> : ''}\n </div>\n );\n }\n\n render() {\n if (!this.changes) {\n return <Host style={{ display: 'none' }}></Host>;\n }\n const style = {\n display: 'block',\n left: `${this.changes.x}px`,\n top: `${this.changes.y}px`,\n };\n\n const capts = Object.assign(this.filterCaptionsInternal, this.filterCaptions);\n\n return (\n <Host style={style}>\n <label>{capts.title}</label>\n <div class=\"filter-holder\">{this.getFilterItemsList()}</div>\n\n <div class=\"add-filter\">\n <select id=\"add-filter\" class=\"select-css\" onChange={e => this.onAddNewFilter(e)}>\n {this.renderSelectOptions(this.currentFilterType)}\n </select>\n </div>\n <div class=\"filter-actions\">\n {this.disableDynamicFiltering &&\n <RevoButton class={{ red: true, save: true }} onClick={() => this.onSave()}>\n {capts.save}\n </RevoButton>\n }\n <RevoButton class={{ red: true, reset: true }} onClick={() => this.onReset()}>\n {capts.reset}\n </RevoButton>\n <RevoButton class={{ light: true, cancel: true }} onClick={() => this.onCancel()}>\n {capts.cancel}\n </RevoButton>\n </div>\n </Host>\n );\n }\n\n private onFilterTypeChange(e: Event, prop: RevoGrid.ColumnProp, index: number) {\n const el = e.target as HTMLSelectElement;\n const type = el.value as FilterType;\n\n this.filterItems[prop][index].type = type;\n\n // this re-renders the input to know if we need extra input\n this.filterId++;\n\n // adding setTimeout will wait for the next tick DOM update then focus on input\n setTimeout(() => {\n const input = document.getElementById('filter-input-' + this.filterItems[prop][index].id) as HTMLInputElement;\n if (input) input.focus();\n }, 0);\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private debouncedApplyFilter = debounce(() => {\n this.filterChange.emit(this.filterItems);\n }, 400);\n\n private onAddNewFilter(e: Event) {\n const el = e.target as HTMLSelectElement;\n const type = el.value as FilterType;\n\n this.currentFilterType = type;\n this.addNewFilterToProp();\n\n // reset value after adding new filter\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) {\n select.value = defaultType;\n this.currentFilterType = defaultType;\n }\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private addNewFilterToProp() {\n const prop = this.changes?.prop;\n if (!(prop || prop === 0)) return;\n\n if (!this.filterItems[prop]) {\n this.filterItems[prop] = [];\n }\n\n if (this.currentFilterType === 'none') return;\n\n this.filterId++;\n this.currentFilterId = this.filterId;\n\n this.filterItems[prop].push({\n id: this.currentFilterId,\n type: this.currentFilterType,\n value: '',\n relation: 'and',\n });\n\n // adding setTimeout will wait for the next tick DOM update then focus on input\n setTimeout(() => {\n const input = document.getElementById('filter-input-' + this.currentFilterId) as HTMLInputElement;\n if (input) input.focus();\n }, 0);\n }\n\n private onUserInput(index: number, prop: RevoGrid.ColumnProp, event: Event) {\n // update the value of the filter item\n this.filterItems[prop][index].value = (event.target as HTMLInputElement).value;\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private onKeyDown(e: KeyboardEvent) {\n if (e.key.toLowerCase() === 'enter') {\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) {\n select.value = defaultType;\n this.currentFilterType = defaultType;\n this.addNewFilterToProp();\n select.focus();\n }\n return;\n }\n // keep event local, don't escalate farther to dom\n e.stopPropagation();\n }\n\n private onSave() {\n this.filterChange.emit(this.filterItems);\n }\n\n private onCancel() {\n this.changes = undefined;\n }\n\n private onReset() {\n this.assertChanges();\n\n delete this.filterItems[this.changes.prop];\n\n // this updates the DOM which is used by getFilterItemsList() key\n this.filterId++;\n\n this.filterChange.emit(this.filterItems);\n }\n\n private onRemoveFilter(id: number) {\n this.assertChanges();\n\n // this is for reactivity issues for getFilterItemsList()\n this.filterId++;\n\n const prop = this.changes.prop;\n\n const items = this.filterItems[prop];\n if (!items) return;\n\n const index = items.findIndex(d => d.id === id);\n if (index === -1) return;\n items.splice(index, 1);\n\n // let's remove the prop if no more filters so the filter icon will be removed\n if (items.length === 0) delete this.filterItems[prop];\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private toggleFilterAndOr(id: number) {\n this.assertChanges();\n\n // this is for reactivity issues for getFilterItemsList()\n this.filterId++;\n\n const prop = this.changes.prop;\n\n const items = this.filterItems[prop];\n if (!items) return;\n\n const index = items.findIndex(d => d.id === id);\n if (index === -1) return;\n\n items[index].relation = items[index].relation === 'and' ? 'or' : 'and';\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private assertChanges() {\n if (!this.changes) {\n throw new Error('Changes required per edit');\n }\n }\n\n private isOutside(e: HTMLElement | null) {\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) select.value = defaultType;\n\n this.currentFilterType = defaultType;\n this.changes.type = defaultType;\n this.currentFilterId = -1;\n if (e.classList.contains(`[uuid=\"${this.uuid}\"]`)) {\n return false;\n }\n return !e?.closest(`[uuid=\"${this.uuid}\"]`);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["RevoButton","props","children","h","Object","assign","class","_b","_c","closest","Element","prototype","matches","msMatchesSelector","webkitMatchesSelector","s","el","this","call","parentElement","parentNode","nodeType","filterStyleCss","defaultType","FILTER_LIST_CLASS","FILTER_LIST_CLASS_ACTION","FilterPanel","exports","filterCaptionsInternal","title","save","reset","cancel","debouncedApplyFilter","debounce","_this","filterChange","emit","filterItems","class_1","onMouseDown","e","changes","defaultPrevented","target","isOutside","isFilterBtn","undefined","show","newEntity","type","getChanges","componentWillRender","isFilterIdSet","keys","_i","filterItems_1","length","prop","filterId","renderSelectOptions","isDefaultTypeRemoved","options","_a","push","selected","currentFilterType","value","filterNames","gIndex","filterTypes","apply","map","k","disabled","renderExtra","index","currentFilter","filterEntities","extra","id","concat","placeholder","onInput","onUserInput","bind","onKeyDown","getFilterItemsList","propFilters","key","d","andOrButton","onClick","toggleFilterAndOr","AndOrButton","isAnd","relation","onChange","onFilterTypeChange","onRemoveFilter","TrashButton","render","Host","style","display","left","x","top","y","capts","filterCaptions","onAddNewFilter","disableDynamicFiltering","red","onSave","onReset","light","onCancel","setTimeout","input","document","getElementById","focus","addNewFilterToProp","select","currentFilterId","event","toLowerCase","stopPropagation","assertChanges","items","findIndex","splice","Error","classList","contains","uuid"],"sources":["src/components/button/button.tsx","src/utils/closestPolifill.ts","src/plugins/filter/filter.style.scss?tag=revogr-filter-panel","src/plugins/filter/filter.pop.tsx"],"sourcesContent":["import { h } from '@stencil/core';\nimport { JSXBase, VNode } from '@stencil/core/internal';\n\ninterface Props extends Partial<JSXBase.ButtonHTMLAttributes<HTMLButtonElement>> {}\n\nexport const RevoButton = (props: Props, children: VNode[]) => {\n return (\n <button\n {...props}\n class={{\n ...(typeof props.class === 'object' ? props.class : props.class ? { [props.class]: true } : ''),\n ['revo-button']: true,\n }}\n >\n {children}\n </button>\n );\n};\n","(function closest() {\n if (!Element.prototype.matches) {\n Element.prototype.matches =\n ((Element.prototype as unknown) as { msMatchesSelector: (selectors: string) => boolean }).msMatchesSelector || Element.prototype.webkitMatchesSelector;\n }\n\n if (!Element.prototype.closest) {\n Element.prototype.closest = function (s: string) {\n let el: HTMLElement | Element | (Node & ParentNode) = this;\n\n do {\n if (Element.prototype.matches.call(el, s)) {\n return el;\n }\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n }\n})();\n","revogr-filter-panel {\n position: absolute;\n display: block;\n top: 0;\n left: 0;\n z-index: 100;\n\n opacity: 1;\n transform: none;\n background-color: #fff;\n transform-origin: 62px 0px;\n box-shadow: 0 5px 18px -2px rgba(black, 20%);\n padding: 10px;\n border-radius: 4px;\n\n min-width: 220px;\n text-align: left;\n\n .filter-holder > div {\n display: flex;\n flex-direction: column;\n }\n\n label {\n color: gray;\n font-size: 13px;\n font-weight: 600;\n display: block;\n padding: 8px 0;\n }\n\n select {\n width: 100%;\n }\n\n input[type=\"text\"] {\n border: 0;\n min-height: 34px;\n margin: 5px 0;\n background: #f3f3f3;\n border-radius: 5px;\n padding: 0 10px;\n box-sizing: border-box;\n width: 100%;\n }\n\n button {\n margin-top: 10px;\n margin-right: 5px;\n }\n\n\n .filter-actions {\n text-align: right;\n margin-right: -5px;\n }\n}\n\n.rgHeaderCell {\n &:hover .rv-filter {\n transition: opacity 267ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, transform 178ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n }\n &:hover .rv-filter,\n .rv-filter.active {\n opacity: 1;\n }\n\n .rv-filter {\n $btn-size: 24px;\n height: $btn-size;\n width: $btn-size;\n background: none;\n border: 0;\n opacity: 0;\n visibility: visible;\n cursor: pointer;\n border-radius: 4px;\n\n &.active {\n color: #10224a;\n }\n\n .filter-img {\n $img-size: 11px;\n color: gray;\n width: $img-size;\n }\n }\n}\n\n.select-css {\n $gradient: \"data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23007CB2%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E\";\n $linearGradient: linear-gradient(to bottom, #ffffff 0%, #ffffff 100%);\n $borderColor: #f1f1f1;\n\n display: block;\n font-family: sans-serif;\n font-weight: 600;\n color: #444;\n line-height: 1.3;\n padding: 0.6em 1.4em 0.5em 0.8em;\n width: 100%;\n max-width: 100%; /* useful when width is set to anything other than 100% */\n box-sizing: border-box;\n margin: 0;\n border: 1px solid $borderColor;\n box-shadow: transparent;\n border-radius: 0.5em;\n appearance: none;\n background-color: #fff;\n background-image: url($gradient), $linearGradient;\n background-repeat: no-repeat, repeat;\n /* arrow icon position (1em from the right, 50% vertical) , then gradient position*/\n background-position: right 0.7em top 50%, 0 0;\n /* icon size, then gradient */\n background-size: 0.65em auto, 100%;\n\n /* Hide arrow icon in IE browsers */\n &::-ms-expand {\n display: none;\n }\n /* Hover style */\n &:hover {\n border-color: rgb(197, 197, 197);\n }\n /* Focus style */\n &:focus {\n border-color: $borderColor;\n box-shadow: 0 0 1px 3px rgba(59, 153, 252, 0.7);\n box-shadow: 0 0 0 3px -moz-mac-focusring;\n color: #222;\n outline: none;\n }\n\n /* Set options to normal weight */\n option {\n font-weight: normal;\n }\n\n /* Disabled styles */\n &:disabled,\n &[aria-disabled=\"true\"] {\n color: gray;\n background-image: url(\"data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22graytext%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E\"),\n linear-gradient(to bottom, #ffffff 0%, #ffffff 100%);\n }\n\n &:disabled:hover,\n &[aria-disabled=\"true\"] {\n border-color: $borderColor;\n }\n}\n\n.multi-filter-list {\n margin-top: 5px;\n margin-bottom: 5px;\n\n div {\n white-space: nowrap;\n }\n\n .multi-filter-list-action {\n display: flex;\n\n justify-content: space-between;\n align-items: center;\n }\n\n .and-or-button {\n margin: 0 0 0 10px;\n min-width: 58px;\n cursor: pointer;\n }\n .trash-button {\n $btn-remove-size: 22px;\n margin: 0 0 -2px 6px;\n cursor: pointer;\n\n width: $btn-remove-size;\n height: $btn-remove-size;\n color: gray;\n font-size: 18px;\n\n\n .trash-img {\n width: 1em;\n }\n }\n}\n\n.add-filter-divider {\n display: block;\n margin: 0 -10px 10px -10px;\n\n border-bottom: 1px solid #d9d9d9;\n height: 10px;\n box-shadow: 0 4px 5px rgb(0 0 0 / 5%);\n}\n\n.select-input {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}","import { Component, h, Host, Listen, Prop, State, Event, EventEmitter, VNode, Method } from '@stencil/core';\nimport { FilterType } from './filter.service';\nimport { RevoGrid } from '../../interfaces';\nimport { AndOrButton, isFilterBtn, TrashButton } from './filter.button';\nimport { RevoButton } from '../../components/button/button';\nimport '../../utils/closestPolifill';\nimport { LogicFunction } from './filter.types';\nimport { FilterCaptions } from './filter.plugin';\nimport debounce from 'lodash/debounce';\n\n/**\n * @typedef FilterItem\n * @type {object}\n * @property {ColumnProp} prop - column id\n * @property {FilterType} type - filter type definition\n * @property {any} value - value for additional filtering, text value or some id\n */\nexport type FilterItem = {\n prop?: RevoGrid.ColumnProp;\n type?: FilterType;\n value?: any;\n};\n\nexport type FilterData = {\n id: number;\n type: FilterType;\n value?: any;\n relation: 'and' | 'or';\n};\n\nexport type MultiFilterItem = {\n [prop: string]: FilterData[];\n};\n\nexport type ShowData = {\n x: number;\n y: number;\n} & FilterItem;\n\nconst defaultType: FilterType = 'none';\n\nconst FILTER_LIST_CLASS = 'multi-filter-list';\nconst FILTER_LIST_CLASS_ACTION = 'multi-filter-list-action';\n\n@Component({\n tag: 'revogr-filter-panel',\n styleUrl: 'filter.style.scss',\n})\nexport class FilterPanel {\n private filterCaptionsInternal: FilterCaptions = {\n title: 'Filter by condition',\n save: 'Save',\n reset: 'Reset',\n cancel: 'Close',\n };\n @State() isFilterIdSet = false;\n @State() filterId = 0;\n @State() currentFilterId: number = -1;\n @State() currentFilterType: FilterType = defaultType;\n @State() changes: ShowData | undefined;\n @Prop({ mutable: true, reflect: true }) uuid: string;\n @Prop() filterItems: MultiFilterItem = {};\n @Prop() filterTypes: Record<string, string[]> = {};\n @Prop() filterNames: Record<string, string> = {};\n @Prop() filterEntities: Record<string, LogicFunction> = {};\n @Prop() filterCaptions: FilterCaptions | undefined;\n @Prop() disableDynamicFiltering: boolean = false;\n @Event() filterChange: EventEmitter<MultiFilterItem>;\n @Listen('mousedown', { target: 'document' }) onMouseDown(e: MouseEvent): void {\n if (this.changes && !e.defaultPrevented) {\n const el = e.target as HTMLElement;\n if (this.isOutside(el) && !isFilterBtn(el)) {\n this.changes = undefined;\n }\n }\n }\n @Method() async show(newEntity?: ShowData) {\n this.changes = newEntity;\n if (this.changes) {\n this.changes.type = this.changes.type || defaultType;\n }\n }\n\n @Method() async getChanges() {\n return this.changes;\n }\n\n componentWillRender() {\n if (!this.isFilterIdSet) {\n this.isFilterIdSet = true;\n const filterItems = Object.keys(this.filterItems);\n for (const prop of filterItems) {\n // we set the proper filterId so there won't be any conflict when removing filters\n this.filterId += this.filterItems[prop].length;\n }\n }\n }\n\n renderSelectOptions(type: FilterType, isDefaultTypeRemoved = false) {\n const options: VNode[] = [];\n const prop = this.changes?.prop;\n\n if (!isDefaultTypeRemoved) {\n options.push(\n <option selected={this.currentFilterType === defaultType} value={defaultType}>\n {prop && this.filterItems[prop] && this.filterItems[prop].length > 0 ? 'Add more condition...' : this.filterNames[defaultType]}\n </option>,\n );\n }\n\n for (let gIndex in this.filterTypes) {\n options.push(\n ...this.filterTypes[gIndex].map(k => (\n <option value={k} selected={type === k}>\n {this.filterNames[k]}\n </option>\n )),\n );\n options.push(<option disabled></option>);\n }\n return options;\n }\n\n renderExtra(prop: RevoGrid.ColumnProp, index: number) {\n const currentFilter = this.filterItems[prop];\n\n if (!currentFilter) return '';\n\n if (this.filterEntities[currentFilter[index].type].extra !== 'input') return '';\n\n return (\n <input\n id={`filter-input-${currentFilter[index].id}`}\n placeholder=\"Enter value...\"\n type=\"text\"\n value={currentFilter[index].value}\n onInput={this.onUserInput.bind(this, index, prop)}\n onKeyDown={e => this.onKeyDown(e)}\n />\n );\n }\n\n getFilterItemsList() {\n const prop = this.changes?.prop;\n if (!(prop || prop === 0)) return '';\n\n const propFilters = this.filterItems[prop] || [];\n return (\n <div key={this.filterId}>\n {propFilters.map((d, index) => {\n let andOrButton;\n\n // hide toggle button if there is only one filter and the last one\n if (index !== this.filterItems[prop].length - 1) {\n andOrButton = (\n <div onClick={() => this.toggleFilterAndOr(d.id)}>\n <AndOrButton isAnd={d.relation === 'and'} />\n </div>\n );\n }\n\n return (\n <div key={d.id} class={FILTER_LIST_CLASS}>\n <div class={{ 'select-input': true }}>\n <select class=\"select-css select-filter\" onChange={e => this.onFilterTypeChange(e, prop, index)}>\n {this.renderSelectOptions(this.filterItems[prop][index].type, true)}\n </select>\n <div class={FILTER_LIST_CLASS_ACTION}>{andOrButton}</div>\n <div onClick={() => this.onRemoveFilter(d.id)}>\n <TrashButton />\n </div>\n </div>\n <div>{this.renderExtra(prop, index)}</div>\n </div>\n );\n })}\n\n {propFilters.length > 0 ? <div class=\"add-filter-divider\"></div> : ''}\n </div>\n );\n }\n\n render() {\n if (!this.changes) {\n return <Host style={{ display: 'none' }}></Host>;\n }\n const style = {\n display: 'block',\n left: `${this.changes.x}px`,\n top: `${this.changes.y}px`,\n };\n\n const capts = Object.assign(this.filterCaptionsInternal, this.filterCaptions);\n\n return (\n <Host style={style}>\n <label>{capts.title}</label>\n <div class=\"filter-holder\">{this.getFilterItemsList()}</div>\n\n <div class=\"add-filter\">\n <select id=\"add-filter\" class=\"select-css\" onChange={e => this.onAddNewFilter(e)}>\n {this.renderSelectOptions(this.currentFilterType)}\n </select>\n </div>\n <div class=\"filter-actions\">\n {this.disableDynamicFiltering &&\n <RevoButton class={{ red: true, save: true }} onClick={() => this.onSave()}>\n {capts.save}\n </RevoButton>\n }\n <RevoButton class={{ red: true, reset: true }} onClick={() => this.onReset()}>\n {capts.reset}\n </RevoButton>\n <RevoButton class={{ light: true, cancel: true }} onClick={() => this.onCancel()}>\n {capts.cancel}\n </RevoButton>\n </div>\n </Host>\n );\n }\n\n private onFilterTypeChange(e: Event, prop: RevoGrid.ColumnProp, index: number) {\n const el = e.target as HTMLSelectElement;\n const type = el.value as FilterType;\n\n this.filterItems[prop][index].type = type;\n\n // this re-renders the input to know if we need extra input\n this.filterId++;\n\n // adding setTimeout will wait for the next tick DOM update then focus on input\n setTimeout(() => {\n const input = document.getElementById('filter-input-' + this.filterItems[prop][index].id) as HTMLInputElement;\n if (input) input.focus();\n }, 0);\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private debouncedApplyFilter = debounce(() => {\n this.filterChange.emit(this.filterItems);\n }, 400);\n\n private onAddNewFilter(e: Event) {\n const el = e.target as HTMLSelectElement;\n const type = el.value as FilterType;\n\n this.currentFilterType = type;\n this.addNewFilterToProp();\n\n // reset value after adding new filter\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) {\n select.value = defaultType;\n this.currentFilterType = defaultType;\n }\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private addNewFilterToProp() {\n const prop = this.changes?.prop;\n if (!(prop || prop === 0)) return;\n\n if (!this.filterItems[prop]) {\n this.filterItems[prop] = [];\n }\n\n if (this.currentFilterType === 'none') return;\n\n this.filterId++;\n this.currentFilterId = this.filterId;\n\n this.filterItems[prop].push({\n id: this.currentFilterId,\n type: this.currentFilterType,\n value: '',\n relation: 'and',\n });\n\n // adding setTimeout will wait for the next tick DOM update then focus on input\n setTimeout(() => {\n const input = document.getElementById('filter-input-' + this.currentFilterId) as HTMLInputElement;\n if (input) input.focus();\n }, 0);\n }\n\n private onUserInput(index: number, prop: RevoGrid.ColumnProp, event: Event) {\n // update the value of the filter item\n this.filterItems[prop][index].value = (event.target as HTMLInputElement).value;\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private onKeyDown(e: KeyboardEvent) {\n if (e.key.toLowerCase() === 'enter') {\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) {\n select.value = defaultType;\n this.currentFilterType = defaultType;\n this.addNewFilterToProp();\n select.focus();\n }\n return;\n }\n // keep event local, don't escalate farther to dom\n e.stopPropagation();\n }\n\n private onSave() {\n this.filterChange.emit(this.filterItems);\n }\n\n private onCancel() {\n this.changes = undefined;\n }\n\n private onReset() {\n this.assertChanges();\n\n delete this.filterItems[this.changes.prop];\n\n // this updates the DOM which is used by getFilterItemsList() key\n this.filterId++;\n\n this.filterChange.emit(this.filterItems);\n }\n\n private onRemoveFilter(id: number) {\n this.assertChanges();\n\n // this is for reactivity issues for getFilterItemsList()\n this.filterId++;\n\n const prop = this.changes.prop;\n\n const items = this.filterItems[prop];\n if (!items) return;\n\n const index = items.findIndex(d => d.id === id);\n if (index === -1) return;\n items.splice(index, 1);\n\n // let's remove the prop if no more filters so the filter icon will be removed\n if (items.length === 0) delete this.filterItems[prop];\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private toggleFilterAndOr(id: number) {\n this.assertChanges();\n\n // this is for reactivity issues for getFilterItemsList()\n this.filterId++;\n\n const prop = this.changes.prop;\n\n const items = this.filterItems[prop];\n if (!items) return;\n\n const index = items.findIndex(d => d.id === id);\n if (index === -1) return;\n\n items[index].relation = items[index].relation === 'and' ? 'or' : 'and';\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private assertChanges() {\n if (!this.changes) {\n throw new Error('Changes required per edit');\n }\n }\n\n private isOutside(e: HTMLElement | null) {\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) select.value = defaultType;\n\n this.currentFilterType = defaultType;\n this.changes.type = defaultType;\n this.currentFilterId = -1;\n if (e.classList.contains(`[uuid=\"${this.uuid}\"]`)) {\n return false;\n }\n return !e?.closest(`[uuid=\"${this.uuid}\"]`);\n }\n}\n"],"mappings":"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"}
|