@revolist/revogrid 4.4.0-next.2 → 4.4.0-next.21
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/columnService.js +1 -1
- package/custom-element/consts.js +2 -1
- package/custom-element/consts.js.map +1 -1
- package/custom-element/localScrollService.js +1 -1
- package/custom-element/localScrollService.js.map +1 -1
- package/custom-element/revo-grid.js +163 -97
- package/custom-element/revo-grid.js.map +1 -1
- package/custom-element/revogr-clipboard.js +24 -5
- package/custom-element/revogr-clipboard.js.map +1 -1
- package/custom-element/revogr-edit2.js +12 -6
- package/custom-element/revogr-edit2.js.map +1 -1
- package/custom-element/revogr-focus2.js +1 -1
- package/custom-element/revogr-focus2.js.map +1 -1
- package/custom-element/revogr-header2.js +25 -11
- package/custom-element/revogr-header2.js.map +1 -1
- package/custom-element/revogr-overlay-selection2.js +99 -32
- package/custom-element/revogr-overlay-selection2.js.map +1 -1
- package/custom-element/revogr-row-headers2.js +1 -2
- package/custom-element/revogr-row-headers2.js.map +1 -1
- package/custom-element/revogr-viewport-scroll2.js +39 -6
- package/custom-element/revogr-viewport-scroll2.js.map +1 -1
- package/dist/cjs/{debounce-525dd66c.js → debounce-f50730b6.js} +1 -38
- package/dist/cjs/debounce-f50730b6.js.map +1 -0
- package/dist/cjs/dispatcher-20520c70.js +21 -0
- package/dist/cjs/dispatcher-20520c70.js.map +1 -0
- package/dist/cjs/events-030618fc.js +459 -0
- package/dist/cjs/events-030618fc.js.map +1 -0
- package/dist/cjs/filter.button-6badec7a.js +44 -0
- package/dist/cjs/filter.button-6badec7a.js.map +1 -0
- package/dist/cjs/{index-aad39b7b.js → index-ee2ef5ae.js} +96 -36
- package/dist/cjs/index-ee2ef5ae.js.map +1 -0
- package/dist/cjs/index-effc94b9.js +3944 -0
- package/dist/cjs/index-effc94b9.js.map +1 -0
- package/dist/cjs/isString-3dde8d95.js +38 -0
- package/dist/cjs/isString-3dde8d95.js.map +1 -0
- package/dist/cjs/keyCodes.utils-d665ebed.js +271 -0
- package/dist/cjs/keyCodes.utils-d665ebed.js.map +1 -0
- package/dist/cjs/loader.cjs.js +3 -3
- package/dist/cjs/loader.cjs.js.map +1 -1
- package/dist/cjs/localScrollService-a81823c5.js +403 -0
- package/dist/cjs/localScrollService-a81823c5.js.map +1 -0
- package/dist/cjs/revo-grid.cjs.entry.js +3858 -0
- package/dist/cjs/revo-grid.cjs.entry.js.map +1 -0
- package/dist/cjs/revo-grid.cjs.js +3 -3
- package/dist/cjs/revo-grid.cjs.js.map +1 -1
- package/dist/cjs/revogr-clipboard.cjs.entry.js +24 -6
- package/dist/cjs/revogr-clipboard.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-data_3.cjs.entry.js +1138 -0
- package/dist/cjs/revogr-data_3.cjs.entry.js.map +1 -0
- package/dist/cjs/revogr-edit_2.cjs.entry.js +325 -0
- package/dist/cjs/revogr-edit_2.cjs.entry.js.map +1 -0
- package/dist/cjs/revogr-filter-panel.cjs.entry.js +6 -5
- package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-focus_5.cjs.entry.js +1231 -0
- package/dist/cjs/revogr-focus_5.cjs.entry.js.map +1 -0
- package/dist/cjs/{revo-grid_11.cjs.entry.js → viewport.helpers-70ccec8f.js} +13978 -25269
- package/dist/cjs/viewport.helpers-70ccec8f.js.map +1 -0
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/clipboard/revogr-clipboard.d.ts +6 -2
- package/dist/collection/components/clipboard/revogr-clipboard.js +46 -5
- package/dist/collection/components/clipboard/revogr-clipboard.js.map +1 -1
- package/dist/collection/components/header/headerCellRenderer.d.ts +2 -1
- package/dist/collection/components/header/headerCellRenderer.js +1 -1
- package/dist/collection/components/header/headerCellRenderer.js.map +1 -1
- package/dist/collection/components/header/headerRenderer.d.ts +2 -2
- package/dist/collection/components/header/headerRenderer.js +1 -1
- package/dist/collection/components/header/headerRenderer.js.map +1 -1
- package/dist/collection/components/header/revogr-header.d.ts +15 -1
- package/dist/collection/components/header/revogr-header.js +34 -8
- package/dist/collection/components/header/revogr-header.js.map +1 -1
- package/dist/collection/components/overlay/autofill.service.d.ts +7 -3
- package/dist/collection/components/overlay/autofill.service.js +32 -12
- package/dist/collection/components/overlay/autofill.service.js.map +1 -1
- package/dist/collection/components/overlay/clipboard.service.d.ts +1 -1
- package/dist/collection/components/overlay/clipboard.service.js +2 -2
- package/dist/collection/components/overlay/clipboard.service.js.map +1 -1
- package/dist/collection/components/overlay/keyboard.service.js +2 -6
- package/dist/collection/components/overlay/keyboard.service.js.map +1 -1
- package/dist/collection/components/overlay/revogr-edit.d.ts +8 -0
- package/dist/collection/components/overlay/revogr-edit.js +34 -9
- package/dist/collection/components/overlay/revogr-edit.js.map +1 -1
- package/dist/collection/components/overlay/revogr-overlay-selection.d.ts +32 -10
- package/dist/collection/components/overlay/revogr-overlay-selection.js +80 -12
- package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -1
- package/dist/collection/components/overlay/revogr-overlay-style.css +71 -4
- package/dist/collection/components/revoGrid/revo-grid.d.ts +15 -4
- package/dist/collection/components/revoGrid/revo-grid.js +60 -19
- package/dist/collection/components/revoGrid/revo-grid.js.map +1 -1
- package/dist/collection/components/revoGrid/viewport.scrolling.service.d.ts +6 -2
- package/dist/collection/components/revoGrid/viewport.scrolling.service.js +26 -4
- package/dist/collection/components/revoGrid/viewport.scrolling.service.js.map +1 -1
- package/dist/collection/components/revoGrid/viewport.section.d.ts +3 -2
- package/dist/collection/components/revoGrid/viewport.section.js +8 -4
- package/dist/collection/components/revoGrid/viewport.section.js.map +1 -1
- package/dist/collection/components/revoGrid/viewport.service.d.ts +4 -0
- package/dist/collection/components/revoGrid/viewport.service.js +15 -3
- package/dist/collection/components/revoGrid/viewport.service.js.map +1 -1
- package/dist/collection/components/rowHeaders/revogr-row-headers.js.map +1 -1
- package/dist/collection/components/scroll/revogr-viewport-scroll-style.css +3 -0
- package/dist/collection/components/scroll/revogr-viewport-scroll.d.ts +16 -5
- package/dist/collection/components/scroll/revogr-viewport-scroll.js +64 -9
- package/dist/collection/components/scroll/revogr-viewport-scroll.js.map +1 -1
- package/dist/collection/components/selectionFocus/revogr-focus-style.css +1 -1
- package/dist/collection/components.d.ts +110 -6
- package/dist/collection/interfaces.d.ts +4 -1
- package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.d.ts +3 -2
- package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js +2 -2
- package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js.map +1 -1
- package/dist/collection/plugins/groupingColumn/headerGroupRenderer.d.ts +2 -2
- package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js +1 -1
- package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js.map +1 -1
- package/dist/collection/plugins/sorting/sorting.plugin.d.ts +21 -13
- package/dist/collection/plugins/sorting/sorting.plugin.js +77 -70
- package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -1
- package/dist/collection/serve/controller.js +183 -0
- package/dist/collection/services/localScrollService.js +1 -1
- package/dist/collection/services/localScrollService.js.map +1 -1
- package/dist/collection/services/resizable.directive.d.ts +8 -7
- package/dist/collection/services/resizable.directive.js +13 -36
- package/dist/collection/services/resizable.directive.js.map +1 -1
- package/dist/collection/services/resizable.element.d.ts +4 -0
- package/dist/collection/services/resizable.element.js +39 -0
- package/dist/collection/services/resizable.element.js.map +1 -0
- package/dist/collection/stencil-public-runtime.d.ts +1 -0
- package/dist/collection/store/viewPort/viewport.store.js +0 -1
- package/dist/collection/store/viewPort/viewport.store.js.map +1 -1
- package/dist/collection/utils/consts.d.ts +1 -0
- package/dist/collection/utils/consts.js +1 -0
- package/dist/collection/utils/consts.js.map +1 -1
- package/dist/collection/utils/events.d.ts +2 -1
- package/dist/collection/utils/events.js +18 -2
- package/dist/collection/utils/events.js.map +1 -1
- package/dist/collection/utils/mobile.d.ts +1 -0
- package/dist/collection/utils/mobile.js +7 -0
- package/dist/collection/utils/mobile.js.map +1 -0
- package/dist/esm/{debounce-301fd4d2.js → debounce-820b5a8b.js} +2 -34
- package/dist/esm/debounce-820b5a8b.js.map +1 -0
- package/dist/esm/dispatcher-9e9c0233.js +19 -0
- package/dist/esm/dispatcher-9e9c0233.js.map +1 -0
- package/dist/esm/events-31272e5e.js +454 -0
- package/dist/esm/events-31272e5e.js.map +1 -0
- package/dist/esm/filter.button-21ce90ef.js +38 -0
- package/dist/esm/filter.button-21ce90ef.js.map +1 -0
- package/dist/esm/{index-5e90b19b.js → index-05947c5f.js} +97 -37
- package/dist/esm/index-05947c5f.js.map +1 -0
- package/dist/esm/index-728bf6e3.js +3889 -0
- package/dist/esm/index-728bf6e3.js.map +1 -0
- package/dist/esm/isString-d539060a.js +36 -0
- package/dist/esm/isString-d539060a.js.map +1 -0
- package/dist/esm/keyCodes.utils-c0064460.js +265 -0
- package/dist/esm/keyCodes.utils-c0064460.js.map +1 -0
- package/dist/esm/loader.js +4 -4
- package/dist/esm/loader.js.map +1 -1
- package/dist/esm/localScrollService-884d8952.js +400 -0
- package/dist/esm/localScrollService-884d8952.js.map +1 -0
- package/dist/esm/revo-grid.entry.js +3854 -0
- package/dist/esm/revo-grid.entry.js.map +1 -0
- package/dist/esm/revo-grid.js +4 -4
- package/dist/esm/revo-grid.js.map +1 -1
- package/dist/esm/revogr-clipboard.entry.js +24 -6
- package/dist/esm/revogr-clipboard.entry.js.map +1 -1
- package/dist/esm/revogr-data_3.entry.js +1132 -0
- package/dist/esm/revogr-data_3.entry.js.map +1 -0
- package/dist/esm/revogr-edit_2.entry.js +320 -0
- package/dist/esm/revogr-edit_2.entry.js.map +1 -0
- package/dist/esm/revogr-filter-panel.entry.js +3 -2
- package/dist/esm/revogr-filter-panel.entry.js.map +1 -1
- package/dist/esm/revogr-focus_5.entry.js +1223 -0
- package/dist/esm/revogr-focus_5.entry.js.map +1 -0
- package/dist/esm/{revo-grid_11.entry.js → viewport.helpers-c08e729e.js} +13790 -25093
- package/dist/esm/viewport.helpers-c08e729e.js.map +1 -0
- package/dist/revo-grid/debounce-820b5a8b.js +5 -0
- package/dist/revo-grid/debounce-820b5a8b.js.map +1 -0
- package/dist/revo-grid/dispatcher-9e9c0233.js +5 -0
- package/dist/revo-grid/dispatcher-9e9c0233.js.map +1 -0
- package/dist/revo-grid/events-31272e5e.js +5 -0
- package/dist/revo-grid/events-31272e5e.js.map +1 -0
- package/dist/revo-grid/filter.button-21ce90ef.js +5 -0
- package/dist/revo-grid/filter.button-21ce90ef.js.map +1 -0
- package/dist/revo-grid/index-05947c5f.js +6 -0
- package/dist/revo-grid/index-05947c5f.js.map +1 -0
- package/dist/revo-grid/index-728bf6e3.js +5 -0
- package/dist/revo-grid/index-728bf6e3.js.map +1 -0
- package/dist/revo-grid/isString-d539060a.js +5 -0
- package/dist/revo-grid/isString-d539060a.js.map +1 -0
- package/dist/revo-grid/keyCodes.utils-c0064460.js +5 -0
- package/dist/revo-grid/keyCodes.utils-c0064460.js.map +1 -0
- package/dist/revo-grid/localScrollService-884d8952.js +5 -0
- package/dist/revo-grid/localScrollService-884d8952.js.map +1 -0
- package/dist/revo-grid/revo-grid.entry.js +5 -0
- package/dist/revo-grid/revo-grid.entry.js.map +1 -0
- package/dist/revo-grid/revo-grid.esm.js +1 -1
- package/dist/revo-grid/revo-grid.esm.js.map +1 -1
- package/dist/revo-grid/revogr-clipboard.entry.js +1 -1
- package/dist/revo-grid/revogr-clipboard.entry.js.map +1 -1
- package/dist/revo-grid/revogr-data_3.entry.js +5 -0
- package/dist/revo-grid/revogr-data_3.entry.js.map +1 -0
- package/dist/revo-grid/revogr-edit_2.entry.js +5 -0
- package/dist/revo-grid/revogr-edit_2.entry.js.map +1 -0
- package/dist/revo-grid/revogr-filter-panel.entry.js +1 -1
- package/dist/revo-grid/revogr-filter-panel.entry.js.map +1 -1
- package/dist/revo-grid/revogr-focus_5.entry.js +5 -0
- package/dist/revo-grid/revogr-focus_5.entry.js.map +1 -0
- package/dist/revo-grid/viewport.helpers-c08e729e.js +5 -0
- package/dist/revo-grid/viewport.helpers-c08e729e.js.map +1 -0
- package/dist/types/components/clipboard/revogr-clipboard.d.ts +6 -2
- package/dist/types/components/header/headerCellRenderer.d.ts +2 -1
- package/dist/types/components/header/headerRenderer.d.ts +2 -2
- package/dist/types/components/header/revogr-header.d.ts +15 -1
- package/dist/types/components/overlay/autofill.service.d.ts +7 -3
- package/dist/types/components/overlay/clipboard.service.d.ts +1 -1
- package/dist/types/components/overlay/revogr-edit.d.ts +8 -0
- package/dist/types/components/overlay/revogr-overlay-selection.d.ts +32 -10
- package/dist/types/components/revoGrid/revo-grid.d.ts +15 -4
- package/dist/types/components/revoGrid/viewport.scrolling.service.d.ts +6 -2
- package/dist/types/components/revoGrid/viewport.section.d.ts +3 -2
- package/dist/types/components/revoGrid/viewport.service.d.ts +4 -0
- package/dist/types/components/scroll/revogr-viewport-scroll.d.ts +16 -5
- package/dist/types/components.d.ts +110 -6
- package/dist/types/interfaces.d.ts +4 -1
- package/dist/types/plugins/groupingColumn/columnGroupsRenderer.d.ts +3 -2
- package/dist/types/plugins/groupingColumn/headerGroupRenderer.d.ts +2 -2
- package/dist/types/plugins/sorting/sorting.plugin.d.ts +21 -13
- package/dist/types/services/resizable.directive.d.ts +8 -7
- package/dist/types/services/resizable.element.d.ts +4 -0
- package/dist/types/stencil-public-runtime.d.ts +1 -0
- package/dist/types/utils/consts.d.ts +1 -0
- package/dist/types/utils/events.d.ts +2 -1
- package/dist/types/utils/mobile.d.ts +1 -0
- package/package.json +4 -3
- package/dist/cjs/debounce-525dd66c.js.map +0 -1
- package/dist/cjs/index-aad39b7b.js.map +0 -1
- package/dist/cjs/revo-grid_11.cjs.entry.js.map +0 -1
- package/dist/esm/debounce-301fd4d2.js.map +0 -1
- package/dist/esm/index-5e90b19b.js.map +0 -1
- package/dist/esm/revo-grid_11.entry.js.map +0 -1
- package/dist/revo-grid/debounce-301fd4d2.js +0 -5
- package/dist/revo-grid/debounce-301fd4d2.js.map +0 -1
- package/dist/revo-grid/index-5e90b19b.js +0 -6
- package/dist/revo-grid/index-5e90b19b.js.map +0 -1
- package/dist/revo-grid/revo-grid_11.entry.js +0 -5
- package/dist/revo-grid/revo-grid_11.entry.js.map +0 -1
- /package/dist/collection/{utilsExternal/generate-data.js → serve/data.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"revogr-filter-panel.entry.js","mappings":"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","names":["debounce"],"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"],"version":3}
|
|
1
|
+
{"file":"revogr-filter-panel.entry.js","mappings":"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","names":["debounce"],"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"],"version":3}
|