udp-stencil-component-library 25.1.1 → 25.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/add-map-feature-popup_4.cjs.entry.js +11 -11
- package/dist/cjs/advanced-search-builder.cjs.entry.js +1 -1
- package/dist/cjs/advanced-search-builder.cjs.entry.js.map +1 -1
- package/dist/cjs/advanced-search-builder.entry.cjs.js.map +1 -1
- package/dist/cjs/advanced-search_50.cjs.entry.js +22 -22
- package/dist/cjs/advanced-search_50.cjs.entry.js.map +1 -1
- package/dist/cjs/ag-grid-base.ghost-render.grid-header.udp-dialog.udp-list-item.entry.cjs.js.map +1 -0
- package/dist/cjs/{ag-grid-base_2.cjs.entry.js → ag-grid-base_5.cjs.entry.js} +229 -16
- package/dist/cjs/ag-grid-base_5.cjs.entry.js.map +1 -0
- package/dist/cjs/api-method-instance-grid.cjs.entry.js +1 -1
- package/dist/cjs/check-box.cjs.entry.js +2 -2
- package/dist/cjs/chip-section.cjs.entry.js +2 -2
- package/dist/cjs/client-side-grid.cjs.entry.js +1 -1
- package/dist/cjs/color-preview.cjs.entry.js +1 -1
- package/dist/cjs/entity-maintenance-grid.cjs.entry.js +1 -1
- package/dist/cjs/feature-details-card_2.cjs.entry.js +5 -5
- package/dist/cjs/filter-group.validation-chip.entry.cjs.js.map +1 -1
- package/dist/cjs/filter-group_2.cjs.entry.js +1 -1
- package/dist/cjs/filter-group_2.cjs.entry.js.map +1 -1
- package/dist/cjs/image-upload_7.cjs.entry.js +5 -5
- package/dist/cjs/index-VfDbl-91.js +2 -10
- package/dist/cjs/inputs-example.cjs.entry.js +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/map-component_2.cjs.entry.js +2 -2
- package/dist/cjs/numeric-field_5.cjs.entry.js +15 -15
- package/dist/cjs/page-renderer.cjs.entry.js +1 -1
- package/dist/cjs/resource-timeline-calendar.cjs.entry.js +1 -1
- package/dist/cjs/resource-timeline-primary-bar.cjs.entry.js +1 -1
- package/dist/cjs/search-method-grid.cjs.entry.js +1 -1
- package/dist/cjs/server-side-grid.cjs.entry.js +1 -1
- package/dist/cjs/stencil-library.cjs.js +1 -1
- package/dist/cjs/udp-chip.udp-icon-button.udp-menu.entry.cjs.js.map +1 -1
- package/dist/cjs/udp-chip_3.cjs.entry.js +3 -3
- package/dist/cjs/udp-chip_3.cjs.entry.js.map +1 -1
- package/dist/cjs/udp-container-query-grid-item.cjs.entry.js +1 -1
- package/dist/cjs/udp-container-query-grid.cjs.entry.js +1 -1
- package/dist/cjs/udp-container-query.cjs.entry.js +2 -2
- package/dist/cjs/udp-container.cjs.entry.js +2 -2
- package/dist/cjs/udp-map.cjs.entry.js +3 -3
- package/dist/cjs/udp-page.cjs.entry.js +1 -1
- package/dist/cjs/udp-split-screen.cjs.entry.js +1 -1
- package/dist/cjs/udp-stepper-demo.cjs.entry.js +1 -1
- package/dist/cjs/udp-vertical-spacer.cjs.entry.js +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/my-component/UI/advanced-search-builder/advanced-search-builder.css +4 -4
- package/dist/collection/components/my-component/UI/advanced-search-builder/filter-group.css +23 -10
- package/dist/collection/components/my-component/UI/data-display/chips/udp-chip.css +4 -2
- package/dist/collection/components/my-component/UI/grid/new-grid/ag-grid-base.css +39 -6
- package/dist/collection/components/my-component/UI/grid/new-grid/ag-grid-base.js +9 -5
- package/dist/collection/components/my-component/UI/grid/new-grid/ag-grid-base.js.map +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/api-method-instance-grid.js +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/client-side-grid.js +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/entity-maintenance-grid.js +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/grid-header.css +6 -38
- package/dist/collection/components/my-component/UI/grid/new-grid/grid-header.js +3 -3
- package/dist/collection/components/my-component/UI/grid/new-grid/grid-header.js.map +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/gridFunctions/bulkActions.js +3 -3
- package/dist/collection/components/my-component/UI/grid/new-grid/gridFunctions/bulkActions.js.map +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/gridFunctions/savedViews.js +2 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/gridFunctions/savedViews.js.map +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/interfaces/grid.js.map +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/search-method-grid.js +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/server-side-grid.js +1 -1
- package/dist/collection/components/my-component/UI/grid/resource-timeline-calendar/resource-timeline-calendar.js +1 -1
- package/dist/collection/components/my-component/UI/grid/resource-timeline-calendar/resource-timeline-primary-bar.js +1 -1
- package/dist/collection/components/my-component/UI/inputs/checkbox/check-box.js +2 -2
- package/dist/collection/components/my-component/UI/inputs/date-selector/udp-date-selector.js +3 -3
- package/dist/collection/components/my-component/UI/inputs/date-time-selector/udp-datetime-selector.js +3 -3
- package/dist/collection/components/my-component/UI/inputs/image-upload/image-upload.js +1 -1
- package/dist/collection/components/my-component/UI/inputs/numeric-field/numeric-field.js +3 -3
- package/dist/collection/components/my-component/UI/inputs/signature-input/signature-input.js +2 -2
- package/dist/collection/components/my-component/UI/inputs/tally/tally.js +2 -2
- package/dist/collection/components/my-component/UI/inputs/text-area/text-area.js +3 -3
- package/dist/collection/components/my-component/UI/inputs/text-field/text-field.js +3 -3
- package/dist/collection/components/my-component/UI/inputs/time-selector/udp-time-selector.js +3 -3
- package/dist/collection/components/my-component/UI/inputs/toggle/stencil-toggle.js +4 -4
- package/dist/collection/components/my-component/UI/inputs/udp-selector/udp-selector.js +4 -4
- package/dist/collection/components/my-component/UI/layout/udp-container/udp-container.js +2 -2
- package/dist/collection/components/my-component/UI/layout/udp-container-query/udp-container-query.js +2 -2
- package/dist/collection/components/my-component/UI/layout/udp-container-query-grid/udp-container-query-grid.js +1 -1
- package/dist/collection/components/my-component/UI/layout/udp-container-query-grid-item/udp-container-query-grid-item.js +1 -1
- package/dist/collection/components/my-component/UI/layout/udp-page/udp-page.js +1 -1
- package/dist/collection/components/my-component/UI/layout/udp-split-screen/udp-split-screen.js +1 -1
- package/dist/collection/components/my-component/UI/layout/udp-vertical-spacer.js +1 -1
- package/dist/collection/components/my-component/UI/loaders/udp-grid-loader/udp-grid-loader.js +2 -2
- package/dist/collection/components/my-component/UI/loaders/udp-linear-loader/udp-linear-loader.js +1 -1
- package/dist/collection/components/my-component/UI/loaders/udp-skeleton-loading.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/map-component.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/popups/add-map-feature-popup.js +3 -3
- package/dist/collection/components/my-component/UI/map/udp-map/popups/feature-details-card/feature-details-card.js +4 -4
- package/dist/collection/components/my-component/UI/map/udp-map/popups/feature-details-popup.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/popups/select-layer-popup.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/popups/split-line-popup.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/toolbar/map-toolbar.js +6 -6
- package/dist/collection/components/my-component/UI/map/udp-map/udp-map-toolbar.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/udp-map.js +3 -3
- package/dist/collection/components/my-component/UI/menu/menu-item/udp-menu-item.js +1 -1
- package/dist/collection/components/my-component/UI/menu/menu-item/udp-menu-item.js.map +1 -1
- package/dist/collection/components/my-component/UI/menu/udp-menu.css +1 -7
- package/dist/collection/components/my-component/UI/menu/udp-menu.js +1 -1
- package/dist/collection/components/my-component/UI/stepper/udp-stepper-demo.js +1 -1
- package/dist/collection/components/my-component/UI/tabs/tab/tabs/udp-tabs.js +1 -1
- package/dist/collection/components/my-component/UI/tabs/tab/udp-tab.js +1 -1
- package/dist/collection/components/my-component/UI/toolbars/app-bar/app-bar.js +1 -1
- package/dist/collection/components/my-component/UI/unity-typography/unity-typography.css +1 -0
- package/dist/collection/components/my-component/UI/util/ghost-render/ghost-render.js +79 -0
- package/dist/collection/components/my-component/UI/util/ghost-render/ghost-render.js.map +1 -0
- package/dist/collection/components/my-component/demo/ambient-demo-container.js +1 -1
- package/dist/collection/components/test-component/inputs-example/inputs-example.js +2 -2
- package/dist/collection/components.stories.js +37 -0
- package/dist/collection/components.stories.js.map +1 -0
- package/dist/collection/page-renderer/page-renderer.js +1 -1
- package/dist/collection/theme/color-preview/color-preview.js +1 -1
- package/dist/collection/udp-utilities/layout/udp-dynamic-container-with-menu/chip-section/chip-section.js +2 -2
- package/dist/collection/udp-utilities/layout/udp-dynamic-container-with-menu/udp-dynamic-container-with-menu.js +1 -1
- package/dist/components/add-map-feature-popup.js +1 -1
- package/dist/components/advanced-search-builder.js +1 -1
- package/dist/components/advanced-search-grouped.js +1 -1
- package/dist/components/advanced-search.js +1 -1
- package/dist/components/ag-grid-base.js +1 -1
- package/dist/components/ambient-demo-container.js +1 -1
- package/dist/components/ambient-template-grid.js +1 -1
- package/dist/components/api-method-instance-grid.js +48 -24
- package/dist/components/api-method-instance-grid.js.map +1 -1
- package/dist/components/app-bar.js +1 -1
- package/dist/components/chart-container.js +1 -1
- package/dist/components/chart-kpi.js +1 -1
- package/dist/components/check-box-group.js +1 -1
- package/dist/components/check-box.js +1 -1
- package/dist/components/chip-section.js +5 -5
- package/dist/components/client-side-grid.js +44 -20
- package/dist/components/client-side-grid.js.map +1 -1
- package/dist/components/color-preview.js +2 -2
- package/dist/components/date-time-renderer.js +1 -1
- package/dist/components/edit-view-form-dialog.js +1 -1
- package/dist/components/entity-maintenance-grid.js +1 -1
- package/dist/components/feature-details-card.js +1 -1
- package/dist/components/feature-details-popup.js +1 -1
- package/dist/components/file-upload-renderer.js +1 -1
- package/dist/components/file-upload.js +1 -1
- package/dist/components/filter-conditions.js +1 -1
- package/dist/components/filter-group.js +1 -1
- package/dist/components/fluent-dialog.js +1 -1
- package/dist/components/ghost-render.d.ts +11 -0
- package/dist/components/ghost-render.js +9 -0
- package/dist/components/ghost-render.js.map +1 -0
- package/dist/components/grid-header.js +1 -1
- package/dist/components/grid-primary-bar.js +1 -1
- package/dist/components/hint-panel.js +1 -1
- package/dist/components/image-upload.js +1 -1
- package/dist/components/inputs-example.js +16 -16
- package/dist/components/kpi-list.js +1 -1
- package/dist/components/list-options-renderer.js +1 -1
- package/dist/components/logical-search-indicator.js +1 -1
- package/dist/components/map-component.js +1 -1
- package/dist/components/map-toolbar.js +1 -1
- package/dist/components/my-component.js +40 -40
- package/dist/components/numeric-field.js +1 -1
- package/dist/components/{p-ZWc9Pvfg.js → p--pXRF5nX.js} +6 -6
- package/dist/components/{p-ZWc9Pvfg.js.map → p--pXRF5nX.js.map} +1 -1
- package/dist/components/{p-Bi8LQyRU.js → p-32upo3dA.js} +3 -3
- package/dist/components/{p-Bi8LQyRU.js.map → p-32upo3dA.js.map} +1 -1
- package/dist/components/{p-Co0WarJh.js → p-51yj5lGg.js} +24 -24
- package/dist/components/{p-Co0WarJh.js.map → p-51yj5lGg.js.map} +1 -1
- package/dist/components/{p-AHMv8xJD.js → p-8-rtLJnl.js} +3 -3
- package/dist/components/{p-AHMv8xJD.js.map → p-8-rtLJnl.js.map} +1 -1
- package/dist/components/{p-CcwNgcqS.js → p-AoP4mfzt.js} +12 -12
- package/dist/components/p-AoP4mfzt.js.map +1 -0
- package/dist/components/{p-q8wb_sjl.js → p-B2ow6-jI.js} +4 -4
- package/dist/components/{p-q8wb_sjl.js.map → p-B2ow6-jI.js.map} +1 -1
- package/dist/components/{p-BTNfY6DI.js → p-B3eFeGrP.js} +58 -29
- package/dist/components/p-B3eFeGrP.js.map +1 -0
- package/dist/components/{p-ChM-1TY9.js → p-B5B8sEPP.js} +3 -3
- package/dist/components/{p-ChM-1TY9.js.map → p-B5B8sEPP.js.map} +1 -1
- package/dist/components/{p-B_OX9Nsg.js → p-B8L2UWDC.js} +6 -6
- package/dist/components/{p-B_OX9Nsg.js.map → p-B8L2UWDC.js.map} +1 -1
- package/dist/components/{p-ehYCARuO.js → p-BGc8zl7B.js} +4 -4
- package/dist/components/{p-ehYCARuO.js.map → p-BGc8zl7B.js.map} +1 -1
- package/dist/components/{p-CNjuwstj.js → p-BKaskn5l.js} +6 -6
- package/dist/components/{p-CNjuwstj.js.map → p-BKaskn5l.js.map} +1 -1
- package/dist/components/{p-BEBxaA92.js → p-BPEAhmN2.js} +4 -4
- package/dist/components/{p-BEBxaA92.js.map → p-BPEAhmN2.js.map} +1 -1
- package/dist/components/{p-CTEFRXiy.js → p-BQeMdszF.js} +3 -3
- package/dist/components/p-BQeMdszF.js.map +1 -0
- package/dist/components/{p-CU6P4zcO.js → p-BS0Xk6LA.js} +8 -8
- package/dist/components/{p-CU6P4zcO.js.map → p-BS0Xk6LA.js.map} +1 -1
- package/dist/components/{p-5olRcylk.js → p-BVUyI0wY.js} +9 -9
- package/dist/components/{p-5olRcylk.js.map → p-BVUyI0wY.js.map} +1 -1
- package/dist/components/{p-BwLnwaOk.js → p-BZ_9CNz8.js} +4 -4
- package/dist/components/{p-BwLnwaOk.js.map → p-BZ_9CNz8.js.map} +1 -1
- package/dist/components/{p-BaopI6Ey.js → p-B_83C-Zs.js} +3 -3
- package/dist/components/{p-BaopI6Ey.js.map → p-B_83C-Zs.js.map} +1 -1
- package/dist/components/{p-DuupCv8x.js → p-BeU_1z6t.js} +8 -8
- package/dist/components/{p-DuupCv8x.js.map → p-BeU_1z6t.js.map} +1 -1
- package/dist/components/{p-CJMiE2XV.js → p-BjHfY_hd.js} +5 -5
- package/dist/components/{p-CJMiE2XV.js.map → p-BjHfY_hd.js.map} +1 -1
- package/dist/components/{p-KoD5x01f.js → p-BnPjz3wB.js} +4 -4
- package/dist/components/{p-KoD5x01f.js.map → p-BnPjz3wB.js.map} +1 -1
- package/dist/components/{p-BNNPE7nC.js → p-BykridKJ.js} +4 -4
- package/dist/components/p-BykridKJ.js.map +1 -0
- package/dist/components/{p-djM81sM3.js → p-C0HU7Odo.js} +10 -10
- package/dist/components/{p-djM81sM3.js.map → p-C0HU7Odo.js.map} +1 -1
- package/dist/components/{p-CYjr8RrW.js → p-C4fEkny_.js} +6 -6
- package/dist/components/{p-CYjr8RrW.js.map → p-C4fEkny_.js.map} +1 -1
- package/dist/components/{p-BdIGnkC_.js → p-C5CPV0b2.js} +3 -3
- package/dist/components/{p-BdIGnkC_.js.map → p-C5CPV0b2.js.map} +1 -1
- package/dist/components/{p-CpD7yt7s.js → p-C5zDDN1d.js} +8 -8
- package/dist/components/{p-CpD7yt7s.js.map → p-C5zDDN1d.js.map} +1 -1
- package/dist/components/{p-pmDELcMO.js → p-C6WoWdN-.js} +4 -4
- package/dist/components/{p-pmDELcMO.js.map → p-C6WoWdN-.js.map} +1 -1
- package/dist/components/{p-D22mQG0o.js → p-CAzqPZz3.js} +5 -5
- package/dist/components/{p-D22mQG0o.js.map → p-CAzqPZz3.js.map} +1 -1
- package/dist/components/{p-B4RF622F.js → p-CBeStUbw.js} +16 -16
- package/dist/components/{p-B4RF622F.js.map → p-CBeStUbw.js.map} +1 -1
- package/dist/components/{p-CdLV5Vjd.js → p-CH2RfQk5.js} +9 -9
- package/dist/components/{p-CdLV5Vjd.js.map → p-CH2RfQk5.js.map} +1 -1
- package/dist/components/{p-CqhnR6WD.js → p-CHqcXeZD.js} +6 -6
- package/dist/components/{p-CqhnR6WD.js.map → p-CHqcXeZD.js.map} +1 -1
- package/dist/components/{p-Cy2K22TE.js → p-CIqfqpqS.js} +4 -4
- package/dist/components/p-CIqfqpqS.js.map +1 -0
- package/dist/components/{p-C4QoDLlk.js → p-CM0P8Co0.js} +10 -10
- package/dist/components/{p-C4QoDLlk.js.map → p-CM0P8Co0.js.map} +1 -1
- package/dist/components/{p-B2_W_QAO.js → p-COLpeOrl.js} +12 -12
- package/dist/components/{p-B2_W_QAO.js.map → p-COLpeOrl.js.map} +1 -1
- package/dist/components/p-COxiCaGR.js +100 -0
- package/dist/components/p-COxiCaGR.js.map +1 -0
- package/dist/components/{p-HRGtIvUD.js → p-CQeRPIfc.js} +3 -3
- package/dist/components/{p-HRGtIvUD.js.map → p-CQeRPIfc.js.map} +1 -1
- package/dist/components/{p-BADXItO0.js → p-CSRoweYf.js} +16 -16
- package/dist/components/{p-BADXItO0.js.map → p-CSRoweYf.js.map} +1 -1
- package/dist/components/p-CTJZqUNi.js +122 -0
- package/dist/components/p-CTJZqUNi.js.map +1 -0
- package/dist/components/{p-2rgTGLFc.js → p-C_GkBZyn.js} +7 -7
- package/dist/components/{p-2rgTGLFc.js.map → p-C_GkBZyn.js.map} +1 -1
- package/dist/{esm/udp-dialog.entry.js → components/p-CbIVOYM6.js} +59 -10
- package/dist/components/p-CbIVOYM6.js.map +1 -0
- package/dist/components/{p-DChiltQy.js → p-CbU7J4ou.js} +3 -3
- package/dist/components/{p-DChiltQy.js.map → p-CbU7J4ou.js.map} +1 -1
- package/dist/components/{p-BWOIQmp1.js → p-CbvU__9Y.js} +3 -3
- package/dist/components/{p-BWOIQmp1.js.map → p-CbvU__9Y.js.map} +1 -1
- package/dist/components/{p-BjnhIFmo.js → p-Cc8qkMa6.js} +3 -3
- package/dist/components/{p-BjnhIFmo.js.map → p-Cc8qkMa6.js.map} +1 -1
- package/dist/components/{p-BuCUt5kj.js → p-Cl8QWNR9.js} +3 -3
- package/dist/components/{p-BuCUt5kj.js.map → p-Cl8QWNR9.js.map} +1 -1
- package/dist/components/{p-BPkANAAZ.js → p-Cm6CVcqD.js} +8 -8
- package/dist/components/{p-BPkANAAZ.js.map → p-Cm6CVcqD.js.map} +1 -1
- package/dist/components/{p-Dh0msYO-.js → p-CmtPjl3R.js} +4 -4
- package/dist/components/{p-Dh0msYO-.js.map → p-CmtPjl3R.js.map} +1 -1
- package/dist/components/{p-Dx4Ldqtp.js → p-CmxDP51u.js} +7 -7
- package/dist/components/{p-Dx4Ldqtp.js.map → p-CmxDP51u.js.map} +1 -1
- package/dist/components/{p-Bn99oyF2.js → p-Cpr9avJF.js} +3 -3
- package/dist/components/{p-Bn99oyF2.js.map → p-Cpr9avJF.js.map} +1 -1
- package/dist/components/{p-DQQvBO32.js → p-CqwF7ihh.js} +7 -7
- package/dist/components/{p-DQQvBO32.js.map → p-CqwF7ihh.js.map} +1 -1
- package/dist/components/{p-DheoylxO.js → p-CsBzIkay.js} +4 -4
- package/dist/components/{p-DheoylxO.js.map → p-CsBzIkay.js.map} +1 -1
- package/dist/components/{p-BnqMordV.js → p-CuIK8vRp.js} +4 -4
- package/dist/components/{p-BnqMordV.js.map → p-CuIK8vRp.js.map} +1 -1
- package/dist/components/{p-CLO6X2VV.js → p-CueYesT1.js} +3 -3
- package/dist/components/{p-CLO6X2VV.js.map → p-CueYesT1.js.map} +1 -1
- package/dist/components/{p-DcjyBnkq.js → p-CvEceoRK.js} +3 -3
- package/dist/components/{p-DcjyBnkq.js.map → p-CvEceoRK.js.map} +1 -1
- package/dist/components/{p-GzvEq7ol.js → p-Cvh6faT7.js} +6 -6
- package/dist/components/{p-GzvEq7ol.js.map → p-Cvh6faT7.js.map} +1 -1
- package/dist/components/{p-DI_D5ajd.js → p-CyV8zkHj.js} +5 -5
- package/dist/components/{p-DI_D5ajd.js.map → p-CyV8zkHj.js.map} +1 -1
- package/dist/components/{p-KyHnMmDR.js → p-Cz_YXLEA.js} +48 -24
- package/dist/components/p-Cz_YXLEA.js.map +1 -0
- package/dist/components/{p-BxjQvoyz.js → p-D4-IakSf.js} +6 -6
- package/dist/components/{p-BxjQvoyz.js.map → p-D4-IakSf.js.map} +1 -1
- package/dist/components/{p-CDgTLuTo.js → p-D48rRItU.js} +4 -4
- package/dist/components/{p-CDgTLuTo.js.map → p-D48rRItU.js.map} +1 -1
- package/dist/components/{p-CAtawY3O.js → p-D4PRKvKg.js} +10 -10
- package/dist/components/{p-CAtawY3O.js.map → p-D4PRKvKg.js.map} +1 -1
- package/dist/components/{p-BQWYWcMT.js → p-D4wXQWaj.js} +3 -3
- package/dist/components/p-D4wXQWaj.js.map +1 -0
- package/dist/components/{p-DD_vOtxh.js → p-D5XVgb0x.js} +18 -18
- package/dist/components/{p-DD_vOtxh.js.map → p-D5XVgb0x.js.map} +1 -1
- package/dist/components/{p-Dn_VZVzC.js → p-D6zVaEti.js} +5 -5
- package/dist/components/{p-Dn_VZVzC.js.map → p-D6zVaEti.js.map} +1 -1
- package/dist/components/{p-L07LZdJB.js → p-D7fAvwDt.js} +3 -3
- package/dist/components/{p-L07LZdJB.js.map → p-D7fAvwDt.js.map} +1 -1
- package/dist/components/{p-LAlBMmf0.js → p-DBMOb9co.js} +4 -4
- package/dist/components/{p-LAlBMmf0.js.map → p-DBMOb9co.js.map} +1 -1
- package/dist/components/{p-DrYyCmZU.js → p-DC2-9Iyw.js} +5 -5
- package/dist/components/{p-DrYyCmZU.js.map → p-DC2-9Iyw.js.map} +1 -1
- package/dist/components/{p-DVymemB2.js → p-DGtafnkB.js} +3 -3
- package/dist/components/{p-DVymemB2.js.map → p-DGtafnkB.js.map} +1 -1
- package/dist/components/{p-YzyHL25r.js → p-DI43FUGP.js} +9 -9
- package/dist/components/{p-YzyHL25r.js.map → p-DI43FUGP.js.map} +1 -1
- package/dist/components/{p-CeTeeZTP.js → p-DNj1Jox5.js} +3 -3
- package/dist/components/{p-CeTeeZTP.js.map → p-DNj1Jox5.js.map} +1 -1
- package/dist/components/{p-B7cpYtlW.js → p-DR5UhKKb.js} +3 -3
- package/dist/components/{p-B7cpYtlW.js.map → p-DR5UhKKb.js.map} +1 -1
- package/dist/components/{p-D8DRYBU8.js → p-DUYoaPTf.js} +3 -3
- package/dist/components/{p-D8DRYBU8.js.map → p-DUYoaPTf.js.map} +1 -1
- package/dist/components/{p-DowHHNY1.js → p-DZapx9DD.js} +3 -3
- package/dist/components/{p-DowHHNY1.js.map → p-DZapx9DD.js.map} +1 -1
- package/dist/components/{p-FDDurs2l.js → p-DaDnLAH8.js} +11 -11
- package/dist/components/{p-FDDurs2l.js.map → p-DaDnLAH8.js.map} +1 -1
- package/dist/components/{p-C_xWTW_4.js → p-DfUoanwG.js} +6 -6
- package/dist/components/{p-C_xWTW_4.js.map → p-DfUoanwG.js.map} +1 -1
- package/dist/components/{p-COc1W-v5.js → p-DfrlG746.js} +19 -19
- package/dist/components/{p-COc1W-v5.js.map → p-DfrlG746.js.map} +1 -1
- package/dist/components/{p-ClXBIUHa.js → p-DquhuB3V.js} +20 -20
- package/dist/components/{p-ClXBIUHa.js.map → p-DquhuB3V.js.map} +1 -1
- package/dist/components/{p-C_mbutv5.js → p-DsqDFk7V.js} +7 -7
- package/dist/components/{p-C_mbutv5.js.map → p-DsqDFk7V.js.map} +1 -1
- package/dist/components/{p-CIitLjH2.js → p-DukRzZ5A.js} +3 -3
- package/dist/components/{p-CIitLjH2.js.map → p-DukRzZ5A.js.map} +1 -1
- package/dist/components/{p-BDnh4O-u.js → p-DyJGTScX.js} +3 -3
- package/dist/components/{p-BDnh4O-u.js.map → p-DyJGTScX.js.map} +1 -1
- package/dist/components/{p-DxVu7scp.js → p-Er_sd0US.js} +7 -7
- package/dist/components/{p-DxVu7scp.js.map → p-Er_sd0US.js.map} +1 -1
- package/dist/components/{p-DgoSpIzv.js → p-Fq5Ksvd8.js} +6 -6
- package/dist/components/{p-DgoSpIzv.js.map → p-Fq5Ksvd8.js.map} +1 -1
- package/dist/components/{p-Dl1-82iI.js → p-GQanl298.js} +6 -6
- package/dist/components/{p-Dl1-82iI.js.map → p-GQanl298.js.map} +1 -1
- package/dist/components/{p-DgJWksxD.js → p-IF3gGAvE.js} +5 -5
- package/dist/components/{p-DgJWksxD.js.map → p-IF3gGAvE.js.map} +1 -1
- package/dist/components/{p-C7118AFu.js → p-IPHh_Ox-.js} +8 -8
- package/dist/components/{p-C7118AFu.js.map → p-IPHh_Ox-.js.map} +1 -1
- package/dist/{esm/udp-list-item.entry.js → components/p-J8A9x-8W.js} +56 -10
- package/dist/components/p-J8A9x-8W.js.map +1 -0
- package/dist/components/{p-DuuEKOxP.js → p-KkM-w1Ho.js} +10 -10
- package/dist/components/{p-DuuEKOxP.js.map → p-KkM-w1Ho.js.map} +1 -1
- package/dist/components/{p-CjkDF1W-.js → p-Lj2N22oW.js} +9 -9
- package/dist/components/{p-CjkDF1W-.js.map → p-Lj2N22oW.js.map} +1 -1
- package/dist/components/{p-BR9Fq61C.js → p-LwhJgO3I.js} +6 -6
- package/dist/components/{p-BR9Fq61C.js.map → p-LwhJgO3I.js.map} +1 -1
- package/dist/components/{p-Dw3MI35q.js → p-SI2Wn3ib.js} +6 -6
- package/dist/components/{p-Dw3MI35q.js.map → p-SI2Wn3ib.js.map} +1 -1
- package/dist/components/{p-ebIpCxiZ.js → p-Tgipm6De.js} +5 -5
- package/dist/components/{p-ebIpCxiZ.js.map → p-Tgipm6De.js.map} +1 -1
- package/dist/components/{p-DhVT9gTo.js → p-Y4YCkUdD.js} +8 -8
- package/dist/components/{p-DhVT9gTo.js.map → p-Y4YCkUdD.js.map} +1 -1
- package/dist/components/{p-CM4b_phZ.js → p-cSNP7C_8.js} +3 -3
- package/dist/components/{p-CM4b_phZ.js.map → p-cSNP7C_8.js.map} +1 -1
- package/dist/components/{p-B-cZDMw-.js → p-da-jI1M6.js} +5 -5
- package/dist/components/{p-B-cZDMw-.js.map → p-da-jI1M6.js.map} +1 -1
- package/dist/components/{p-B1RT7HGF.js → p-fTPtMCLt.js} +35 -35
- package/dist/components/{p-B1RT7HGF.js.map → p-fTPtMCLt.js.map} +1 -1
- package/dist/components/{p-Cleiayy6.js → p-fpVFqbOo.js} +10 -10
- package/dist/components/{p-Cleiayy6.js.map → p-fpVFqbOo.js.map} +1 -1
- package/dist/components/{p-Y0xyUonA.js → p-hwo2h7Z9.js} +5 -5
- package/dist/components/{p-Y0xyUonA.js.map → p-hwo2h7Z9.js.map} +1 -1
- package/dist/components/{p-D8ANNMFQ.js → p-lN1ee8PF.js} +6 -6
- package/dist/components/{p-D8ANNMFQ.js.map → p-lN1ee8PF.js.map} +1 -1
- package/dist/components/{p-C4GQL77I.js → p-o8ikNcj0.js} +6 -6
- package/dist/components/{p-C4GQL77I.js.map → p-o8ikNcj0.js.map} +1 -1
- package/dist/components/{p-DOfPSxw3.js → p-oEWm3yJu.js} +7 -7
- package/dist/components/{p-DOfPSxw3.js.map → p-oEWm3yJu.js.map} +1 -1
- package/dist/components/{p-B1j3K3sc.js → p-q1ZE2woi.js} +9 -9
- package/dist/components/{p-B1j3K3sc.js.map → p-q1ZE2woi.js.map} +1 -1
- package/dist/components/{p-CvGSC_-s.js → p-q7POHITb.js} +19 -19
- package/dist/components/{p-CvGSC_-s.js.map → p-q7POHITb.js.map} +1 -1
- package/dist/components/{p-BmLaXwff.js → p-sojRqN8m.js} +5 -5
- package/dist/components/{p-BmLaXwff.js.map → p-sojRqN8m.js.map} +1 -1
- package/dist/components/{p-DHzj3DhQ.js → p-u530FQDK.js} +5 -5
- package/dist/components/{p-DHzj3DhQ.js.map → p-u530FQDK.js.map} +1 -1
- package/dist/components/{p-HCl418eB.js → p-vPOQX4A7.js} +46 -22
- package/dist/components/p-vPOQX4A7.js.map +1 -0
- package/dist/components/{p-Cy2uaM45.js → p-vi-29Jy_.js} +4 -4
- package/dist/components/{p-Cy2uaM45.js.map → p-vi-29Jy_.js.map} +1 -1
- package/dist/components/page-renderer.js +35 -35
- package/dist/components/primary-action-header.js +1 -1
- package/dist/components/question-configs-renderer.js +1 -1
- package/dist/components/question-specific-configs-renderer.js +1 -1
- package/dist/components/resource-timeline-calendar.js +7 -7
- package/dist/components/resource-timeline-primary-bar.js +1 -1
- package/dist/components/save-view-form-dialog.js +1 -1
- package/dist/components/search-list-item.js +1 -1
- package/dist/components/search-method-grid.js +1 -1
- package/dist/components/section-configs-renderer.js +1 -1
- package/dist/components/select-layer-popup.js +1 -1
- package/dist/components/selectable-list.js +1 -1
- package/dist/components/server-side-grid.js +1 -1
- package/dist/components/side-sheet.js +1 -1
- package/dist/components/signature-input.js +1 -1
- package/dist/components/split-line-popup.js +1 -1
- package/dist/components/stencil-chip.js +1 -1
- package/dist/components/stencil-icon-button-grid-action-header.js +1 -1
- package/dist/components/stencil-icon-button.js +1 -1
- package/dist/components/stencil-toggle.js +1 -1
- package/dist/components/tally-display.js +1 -1
- package/dist/components/text-area.js +1 -1
- package/dist/components/text-field.js +1 -1
- package/dist/components/text-input-renderer.js +1 -1
- package/dist/components/tree-list-item.js +1 -1
- package/dist/components/udp-advanced-search-builder.js +10 -10
- package/dist/components/udp-ambient-card.js +1 -1
- package/dist/components/udp-ambient-tool-tip.js +1 -1
- package/dist/components/udp-avatar.js +1 -1
- package/dist/components/udp-badge.js +1 -1
- package/dist/components/udp-bar-chart.js +1 -1
- package/dist/components/udp-card-header.js +1 -1
- package/dist/components/udp-card.js +1 -1
- package/dist/components/udp-charts-example.js +12 -12
- package/dist/components/udp-chip.js +1 -1
- package/dist/components/udp-column-header.js +1 -1
- package/dist/components/udp-container-query-grid-item.js +1 -1
- package/dist/components/udp-container-query-grid.js +2 -2
- package/dist/components/udp-container-query.js +1 -1
- package/dist/components/udp-container.js +1 -1
- package/dist/components/udp-date-selector.js +1 -1
- package/dist/components/udp-datetime-selector.js +1 -1
- package/dist/components/udp-dialog.js +1 -112
- package/dist/components/udp-dialog.js.map +1 -1
- package/dist/components/udp-distribution-chart.js +1 -1
- package/dist/components/udp-donut-chart.js +1 -1
- package/dist/components/udp-dynamic-container-with-menu.js +1 -1
- package/dist/components/udp-dynamic-form.js +8 -8
- package/dist/components/udp-empty-state-display.js +1 -1
- package/dist/components/udp-forms-builder-menu.js +1 -1
- package/dist/components/udp-forms-builder-question-item.js +1 -1
- package/dist/components/udp-forms-builder-style-override.js +1 -1
- package/dist/components/udp-forms-builder.js +30 -30
- package/dist/components/udp-forms-list-card.js +1 -1
- package/dist/components/udp-forms-list.js +14 -14
- package/dist/components/udp-forms-renderer.js +23 -23
- package/dist/components/udp-forms-ui.js +1 -1
- package/dist/components/udp-grid-loader.js +1 -1
- package/dist/components/udp-hotlist-form.js +1 -1
- package/dist/components/udp-icon-button.js +1 -1
- package/dist/components/udp-line-chart.js +1 -1
- package/dist/components/udp-linear-loader.js +1 -1
- package/dist/components/udp-list-item.js +1 -111
- package/dist/components/udp-list-item.js.map +1 -1
- package/dist/components/udp-map-toolbar.js +1 -1
- package/dist/components/udp-map.js +20 -20
- package/dist/components/udp-menu-item.js +1 -1
- package/dist/components/udp-menu.js +1 -1
- package/dist/components/udp-notification.js +1 -1
- package/dist/components/udp-page-header.js +1 -1
- package/dist/components/udp-page.js +1 -1
- package/dist/components/udp-pop-over-grid-action-header.js +1 -1
- package/dist/components/udp-question-comment.js +1 -1
- package/dist/components/udp-question.js +1 -1
- package/dist/components/udp-radio-button.js +1 -1
- package/dist/components/udp-sankey-chart.js +7 -7
- package/dist/components/udp-save-draft-button.js +1 -1
- package/dist/components/udp-selector.js +1 -1
- package/dist/components/udp-side-sheet.js +1 -1
- package/dist/components/udp-skeleton-loading.js +1 -1
- package/dist/components/udp-split-screen.js +1 -1
- package/dist/components/udp-stepper-demo.js +3 -3
- package/dist/components/udp-stepper.js +1 -1
- package/dist/components/udp-tab.js +1 -1
- package/dist/components/udp-tabs.js +1 -1
- package/dist/components/udp-time-selector.js +1 -1
- package/dist/components/udp-vertical-spacer.js +1 -1
- package/dist/components/udp-xy-chart.js +1 -1
- package/dist/components/udp-xy-multi-series-chart.js +7 -7
- package/dist/components/unity-typography.js +1 -1
- package/dist/components/upd-alert-banner.js +1 -1
- package/dist/components/validation-chip.js +1 -1
- package/dist/docs.d.ts +443 -0
- package/dist/docs.json +48798 -0
- package/dist/esm/add-map-feature-popup_4.entry.js +11 -11
- package/dist/esm/advanced-search-builder.entry.js +1 -1
- package/dist/esm/advanced-search-builder.entry.js.map +1 -1
- package/dist/esm/advanced-search_50.entry.js +22 -22
- package/dist/esm/advanced-search_50.entry.js.map +1 -1
- package/dist/esm/ag-grid-base.ghost-render.grid-header.udp-dialog.udp-list-item.entry.js.map +1 -0
- package/dist/esm/{ag-grid-base_2.entry.js → ag-grid-base_5.entry.js} +228 -18
- package/dist/esm/ag-grid-base_5.entry.js.map +1 -0
- package/dist/esm/api-method-instance-grid.entry.js +1 -1
- package/dist/esm/check-box.entry.js +2 -2
- package/dist/esm/chip-section.entry.js +2 -2
- package/dist/esm/client-side-grid.entry.js +1 -1
- package/dist/esm/color-preview.entry.js +1 -1
- package/dist/esm/entity-maintenance-grid.entry.js +1 -1
- package/dist/esm/feature-details-card_2.entry.js +5 -5
- package/dist/esm/filter-group.validation-chip.entry.js.map +1 -1
- package/dist/esm/filter-group_2.entry.js +1 -1
- package/dist/esm/filter-group_2.entry.js.map +1 -1
- package/dist/esm/image-upload_7.entry.js +5 -5
- package/dist/esm/index-C75VZPn2.js +2 -10
- package/dist/esm/inputs-example.entry.js +2 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/map-component_2.entry.js +2 -2
- package/dist/esm/numeric-field_5.entry.js +15 -15
- package/dist/esm/page-renderer.entry.js +1 -1
- package/dist/esm/resource-timeline-calendar.entry.js +1 -1
- package/dist/esm/resource-timeline-primary-bar.entry.js +1 -1
- package/dist/esm/search-method-grid.entry.js +1 -1
- package/dist/esm/server-side-grid.entry.js +1 -1
- package/dist/esm/stencil-library.js +1 -1
- package/dist/esm/udp-chip.udp-icon-button.udp-menu.entry.js.map +1 -1
- package/dist/esm/udp-chip_3.entry.js +3 -3
- package/dist/esm/udp-chip_3.entry.js.map +1 -1
- package/dist/esm/udp-container-query-grid-item.entry.js +1 -1
- package/dist/esm/udp-container-query-grid.entry.js +1 -1
- package/dist/esm/udp-container-query.entry.js +2 -2
- package/dist/esm/udp-container.entry.js +2 -2
- package/dist/esm/udp-map.entry.js +3 -3
- package/dist/esm/udp-page.entry.js +1 -1
- package/dist/esm/udp-split-screen.entry.js +1 -1
- package/dist/esm/udp-stepper-demo.entry.js +1 -1
- package/dist/esm/udp-vertical-spacer.entry.js +1 -1
- package/dist/stencil-library/advanced-search-builder.entry.esm.js.map +1 -1
- package/dist/stencil-library/ag-grid-base.ghost-render.grid-header.udp-dialog.udp-list-item.entry.esm.js.map +1 -0
- package/dist/stencil-library/filter-group.validation-chip.entry.esm.js.map +1 -1
- package/dist/stencil-library/{p-bc1f30cd.entry.js → p-14934f64.entry.js} +2 -2
- package/dist/stencil-library/p-1525cdd0.entry.js +2 -0
- package/dist/stencil-library/{p-75841059.entry.js → p-1738ea8b.entry.js} +2 -2
- package/dist/stencil-library/p-1e05f587.entry.js +2 -0
- package/dist/stencil-library/p-20aae59c.entry.js +2 -0
- package/dist/stencil-library/{p-53ab47bc.entry.js → p-297ea031.entry.js} +2 -2
- package/dist/stencil-library/{p-cd5ef378.entry.js → p-37e1dc4a.entry.js} +2 -2
- package/dist/stencil-library/{p-b60fde4e.entry.js → p-3d9d4f20.entry.js} +2 -2
- package/dist/stencil-library/{p-b60fde4e.entry.js.map → p-3d9d4f20.entry.js.map} +1 -1
- package/dist/stencil-library/{p-f96cd937.entry.js → p-428bf170.entry.js} +2 -2
- package/dist/stencil-library/p-5951ba80.entry.js +2 -0
- package/dist/stencil-library/p-5951ba80.entry.js.map +1 -0
- package/dist/stencil-library/{p-fe0f688f.entry.js → p-6805b175.entry.js} +2 -2
- package/dist/stencil-library/{p-4f52dfa4.entry.js → p-6ad39155.entry.js} +2 -2
- package/dist/stencil-library/p-6b7a5c44.entry.js +2 -0
- package/dist/stencil-library/p-72ed4b25.entry.js +2 -0
- package/dist/stencil-library/p-72ed4b25.entry.js.map +1 -0
- package/dist/stencil-library/{p-b6c440e6.entry.js → p-79517863.entry.js} +2 -2
- package/dist/stencil-library/{p-62816607.entry.js → p-7b082f2f.entry.js} +2 -2
- package/dist/stencil-library/{p-b6f349a1.entry.js → p-8026545b.entry.js} +2 -2
- package/dist/stencil-library/{p-c6666ca3.entry.js → p-83e25800.entry.js} +2 -2
- package/dist/stencil-library/{p-39ceb24c.entry.js → p-8685a7a0.entry.js} +2 -2
- package/dist/stencil-library/p-8b3d04ea.entry.js +2 -0
- package/dist/stencil-library/p-8b3d04ea.entry.js.map +1 -0
- package/dist/stencil-library/{p-be8b8b29.entry.js → p-8c61a770.entry.js} +2 -2
- package/dist/stencil-library/{p-22f255a9.entry.js → p-908b27fe.entry.js} +2 -2
- package/dist/stencil-library/{p-ab1dc8e5.entry.js → p-a3d4ab45.entry.js} +2 -2
- package/dist/stencil-library/{p-0df9bbc8.entry.js → p-a758f7b4.entry.js} +2 -2
- package/dist/stencil-library/p-aae0f83a.entry.js +2 -0
- package/dist/stencil-library/{p-91aad9d5.entry.js → p-b1df1128.entry.js} +2 -2
- package/dist/stencil-library/{p-30e4d9ef.entry.js → p-c59e623d.entry.js} +2 -2
- package/dist/stencil-library/{p-6e9a3690.entry.js → p-cac17b31.entry.js} +2 -2
- package/dist/stencil-library/{p-c357c38a.entry.js → p-de1ba5e0.entry.js} +2 -2
- package/dist/stencil-library/p-e4cd040e.entry.js +2 -0
- package/dist/stencil-library/p-ebeb4a9b.entry.js +2 -0
- package/dist/stencil-library/p-ebeb4a9b.entry.js.map +1 -0
- package/dist/stencil-library/stencil-library.esm.js +1 -1
- package/dist/stencil-library/udp-chip.udp-icon-button.udp-menu.entry.esm.js.map +1 -1
- package/dist/types/components/my-component/UI/charts/chartUtils.d.ts +5 -4
- package/dist/types/components/my-component/UI/grid/new-grid/interfaces/grid.d.ts +1 -1
- package/dist/types/components/my-component/UI/util/ghost-render/ghost-render.d.ts +69 -0
- package/dist/types/components.d.ts +13 -0
- package/dist/types/components.stories.d.ts +12 -0
- package/package.json +10 -3
- package/readme.md +622 -2
- package/dist/cjs/ag-grid-base.grid-header.entry.cjs.js.map +0 -1
- package/dist/cjs/ag-grid-base_2.cjs.entry.js.map +0 -1
- package/dist/cjs/udp-dialog.cjs.entry.js +0 -70
- package/dist/cjs/udp-dialog.cjs.entry.js.map +0 -1
- package/dist/cjs/udp-dialog.entry.cjs.js.map +0 -1
- package/dist/cjs/udp-list-item.cjs.entry.js +0 -72
- package/dist/cjs/udp-list-item.cjs.entry.js.map +0 -1
- package/dist/cjs/udp-list-item.entry.cjs.js.map +0 -1
- package/dist/components/p-BNNPE7nC.js.map +0 -1
- package/dist/components/p-BQWYWcMT.js.map +0 -1
- package/dist/components/p-BTNfY6DI.js.map +0 -1
- package/dist/components/p-CTEFRXiy.js.map +0 -1
- package/dist/components/p-CcwNgcqS.js.map +0 -1
- package/dist/components/p-Cy2K22TE.js.map +0 -1
- package/dist/components/p-DiOXyAYM.js +0 -122
- package/dist/components/p-DiOXyAYM.js.map +0 -1
- package/dist/components/p-HCl418eB.js.map +0 -1
- package/dist/components/p-KyHnMmDR.js.map +0 -1
- package/dist/esm/ag-grid-base.grid-header.entry.js.map +0 -1
- package/dist/esm/ag-grid-base_2.entry.js.map +0 -1
- package/dist/esm/udp-dialog.entry.js.map +0 -1
- package/dist/esm/udp-list-item.entry.js.map +0 -1
- package/dist/stencil-library/ag-grid-base.grid-header.entry.esm.js.map +0 -1
- package/dist/stencil-library/p-17364a58.entry.js +0 -2
- package/dist/stencil-library/p-3e31a847.entry.js +0 -2
- package/dist/stencil-library/p-3e31a847.entry.js.map +0 -1
- package/dist/stencil-library/p-45b253d9.entry.js +0 -2
- package/dist/stencil-library/p-5557251d.entry.js +0 -2
- package/dist/stencil-library/p-69949245.entry.js +0 -2
- package/dist/stencil-library/p-837c3e1f.entry.js +0 -2
- package/dist/stencil-library/p-837c3e1f.entry.js.map +0 -1
- package/dist/stencil-library/p-963059c8.entry.js +0 -2
- package/dist/stencil-library/p-963059c8.entry.js.map +0 -1
- package/dist/stencil-library/p-b772e7f0.entry.js +0 -2
- package/dist/stencil-library/p-c8ca2dc5.entry.js +0 -2
- package/dist/stencil-library/p-c8ca2dc5.entry.js.map +0 -1
- package/dist/stencil-library/p-e830dbe0.entry.js +0 -2
- package/dist/stencil-library/p-f393c8e9.entry.js +0 -2
- package/dist/stencil-library/p-f393c8e9.entry.js.map +0 -1
- package/dist/stencil-library/p-f4ccc3c0.entry.js +0 -2
- package/dist/stencil-library/p-f4ccc3c0.entry.js.map +0 -1
- package/dist/stencil-library/udp-dialog.entry.esm.js.map +0 -1
- package/dist/stencil-library/udp-list-item.entry.esm.js.map +0 -1
- /package/dist/stencil-library/{p-bc1f30cd.entry.js.map → p-14934f64.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-69949245.entry.js.map → p-1525cdd0.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-75841059.entry.js.map → p-1738ea8b.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-45b253d9.entry.js.map → p-1e05f587.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-e830dbe0.entry.js.map → p-20aae59c.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-53ab47bc.entry.js.map → p-297ea031.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-cd5ef378.entry.js.map → p-37e1dc4a.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-f96cd937.entry.js.map → p-428bf170.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-fe0f688f.entry.js.map → p-6805b175.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-4f52dfa4.entry.js.map → p-6ad39155.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-17364a58.entry.js.map → p-6b7a5c44.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-b6c440e6.entry.js.map → p-79517863.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-62816607.entry.js.map → p-7b082f2f.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-b6f349a1.entry.js.map → p-8026545b.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-c6666ca3.entry.js.map → p-83e25800.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-39ceb24c.entry.js.map → p-8685a7a0.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-be8b8b29.entry.js.map → p-8c61a770.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-22f255a9.entry.js.map → p-908b27fe.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-ab1dc8e5.entry.js.map → p-a3d4ab45.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-0df9bbc8.entry.js.map → p-a758f7b4.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-b772e7f0.entry.js.map → p-aae0f83a.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-91aad9d5.entry.js.map → p-b1df1128.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-30e4d9ef.entry.js.map → p-c59e623d.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-6e9a3690.entry.js.map → p-cac17b31.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-c357c38a.entry.js.map → p-de1ba5e0.entry.js.map} +0 -0
- /package/dist/stencil-library/{p-5557251d.entry.js.map → p-e4cd040e.entry.js.map} +0 -0
|
@@ -82,11 +82,11 @@ const AddMapFeaturePopUp = class {
|
|
|
82
82
|
}
|
|
83
83
|
render() {
|
|
84
84
|
var _a, _b, _c;
|
|
85
|
-
return (index.h("div", { key: '
|
|
85
|
+
return (index.h("div", { key: 'a5fb1dbb0584394e02a0b6c409e9577ea9039707', class: "popoverContent" }, !((_a = this.panelConfig) === null || _a === void 0 ? void 0 : _a.hideLayerSelector) && (index.h("div", { key: 'ca099fd68d51dd003a8900fe559f3da24c80f53f' }, index.h("udp-selector", { key: 'fff6ed66f0bd0fd3fe5ee6607dd36c80be30f733', id: 'layer', options: this.layerToAddOptions, initialValue: this.selectedLayer, label: 'Layer', onChange: (e) => {
|
|
86
86
|
this.handleSetSelectedLayer(e);
|
|
87
|
-
}, large: false }), index.h("div", { key: '
|
|
87
|
+
}, large: false }), index.h("div", { key: 'cdd0cf757ae32ff2d2c171e1872ab680b446fe5d', style: { height: '12px' } }))), index.h("udp-selector", { key: '9d8e845a9a9c36484e4a5339eae1c6821cb43093', id: 'type', options: (_b = this.drawingTypeOptions) !== null && _b !== void 0 ? _b : [], initialValue: this.selectedType, label: 'Type', onChange: (e) => {
|
|
88
88
|
this.handleSetSelectedType(e);
|
|
89
|
-
}, large: false }), index.h("div", { key: '
|
|
89
|
+
}, large: false }), index.h("div", { key: 'a258e80e600104b1fbdc6815512d334c2b74c724', style: { height: '12px' } }), index.h("div", { key: '595cef1e8bcc7c84747571d806debee420b48b34', class: "formButton" }, index.h("custom-button", { key: '397ab9862cf68cea4c9e65f73eede4b2bd364a9a', label: index.h("unity-typography", { variant: "button" }, 'Draw feature'), onClick: () => this.handleStartDrawingMapFeature(this.selectedLayer, this.selectedType), variant: 'outline', disabled: (this.selectedLayer === null && !((_c = this.panelConfig) === null || _c === void 0 ? void 0 : _c.hideLayerSelector)) || this.selectedType === null }))));
|
|
90
90
|
}
|
|
91
91
|
static get watchers() { return {
|
|
92
92
|
"panelConfig": ["watchPanelConfig"],
|
|
@@ -260,22 +260,22 @@ const MapToolbar = class {
|
|
|
260
260
|
}
|
|
261
261
|
render() {
|
|
262
262
|
var _a, _b;
|
|
263
|
-
return (index.h("div", { key: '
|
|
263
|
+
return (index.h("div", { key: 'cbaa7707108ddd452af8d8c5ae5b9f3f4dc129d0', class: "toolbarContainer" }, index.h("div", { key: '24938aeff47f9c2aee2816306b5443f1b2ce8184', class: "title" }, this.mapTitle && this.mapTitle.length > 0 && index.h("unity-typography", { key: 'af8c253b01ba24426ea9943c1422a3bef2f9b030', variant: "h4" }, this.mapTitle)), index.h("div", { key: '6ca068ad276897e78c847e7554f9cc94ffb35146', class: "buttons" }, index.h("div", { key: 'f1a6ac2e14ec447445e5501e66da692991ccb473', class: "buttonContainer" }, index.h("div", { key: '7cedf3ab110b34a2ab924791aac122631b37bb82', class: "secondaryButtons" }, this.filterPanel && (index.h("div", { key: '6609be6be93efcc2f3e5530ad0531da31101cbbb', id: "filterOption" }, index.h("div", { key: 'df67c95ba25bc1cee7023a97a143fe35e0e7a686', id: "filterOptionButton" }, index.h("stencil-icon-button", { key: '9b3c9edb4e3882413bfb6d1ec9586300fc168492', iconName: 'filterButton', iconClassName: 'iconButtonWrapper', tooltip: 'Filter', icon: es.Filter16, buttonId: 'filterButton', onClick: () => this.handleFilterOnclick() })), this.filterAnchor && (index.h("div", { key: '46fbfd44c751a100873b745a727b283615f99da4', id: "filterOptionDiv" }, index.h("udp-pop-over", { key: 'b5822922dc8482daefdfc7c0d73007e1a6e22eb0', isOpen: this.filterAnchor ? true : false, anchorElement: this.filterAnchor, handleOnClose: () => this.handleCloseFilterPopover(), popoverPlacement: 'bottom-start', overflow: 'visible' }, index.h("div", { key: 'e93ef8aedfea8fb47cbc3849a5e3cda43120be86', innerHTML: this.filterPanel })))))), this.layerOptions && (index.h("div", { key: '5338aa287eecc3b255922cf80ac09dd054772c46', id: "layerOption" }, index.h("div", { key: 'b2d448532e03b536838ea1a4a0923e75a82dbee4', id: "layerOptionButton" }, index.h("stencil-icon-button", { key: 'c2b286cb6b5b89404412a34c925db5771df68009', iconName: 'layersButton', iconClassName: 'iconButtonWrapper', tooltip: 'Layers', icon: es.Layers16, buttonId: 'layersButton', onClick: () => this.handleLayerOnclick(), count: (_a = this.visibleLayers) === null || _a === void 0 ? void 0 : _a.length })), index.h("div", { key: '3f17d77b57e1fab801bf43414e82c2c07638c644', id: "layerOptionDiv" }, this.layerAnchor && (index.h("udp-pop-over", { key: 'ea6b9cd0a865548ad8601422e2f72c9d9bc3f503', isOpen: this.layerAnchor ? true : false, anchorElement: this.layerAnchor, handleOnClose: () => this.handleCloseLayerPopover(), popoverPlacement: 'bottom-start', popoverMaxHeight: '500px' }, index.h("select-layer-popup", { key: 'b4591409c33d76f35e596cfad756666afbee3d8a', enableTileSelection: this.enableTileSelection, tileOptions: this.tileOptions, handleMapTypeInputChange: this.handleMapTypeInputChange, handleSearchLayers: this.handleSearchLayers, filteredOptions: this.filteredOptions, visibleLayers: this.visibleLayers, updateSelectedLayers: this.updateSelectedLayers, selectedTile: this.selectedTile })))))), !this.readOnlyMap && this.selectedFeaturesActionPanel && (index.h("div", { key: '02a37151a3ba19662158dc34301aaa1d6327aed4', id: "bulkSelectOption" }, index.h("div", { key: '2478369cc4364edb7a530bb0d4c1e26aa71fe05e', id: "bulkSelectOptionButton" }, index.h("stencil-icon-button", { key: '1bcb080c2f19ca1c864cce27c4c7025b3296257f', iconName: 'selectButton', iconClassName: 'iconButtonWrapper', tooltip: 'Select', icon: es.Select_0116, buttonId: 'selectButton', onClick: () => this.handleSelectionBtnOnclick() })), index.h("div", { key: '3407429658fa0a6c1d93ae33f6d6d336e8d51ea7', id: "bulkSelectOptionDiv" }, this.bulkSelectionTypeAnchor && (index.h("udp-pop-over", { key: '4fe5d9ce584b9ecf835e0202ec919255c5b7c6dd', isOpen: this.bulkSelectionTypeAnchor ? true : false, anchorElement: this.bulkSelectionTypeAnchor, handleOnClose: () => this.handleCloseBulkSelectionTypePopover(), popoverPlacement: 'bottom-start', overflow: 'visible' }, index.h("udp-menu-item", { key: '306b77012fc55b29156f5a77b2e006df4f7b83c6', label: 'Box', handleOnClick: () => {
|
|
264
264
|
this.handleBulkSelectionTypeOnclick('box');
|
|
265
|
-
} }), index.h("udp-menu-item", { key: '
|
|
265
|
+
} }), index.h("udp-menu-item", { key: 'e6478a49943366f66f7996380cb0cd4b9a1ba423', label: 'Circle', handleOnClick: () => {
|
|
266
266
|
this.handleBulkSelectionTypeOnclick('circle');
|
|
267
|
-
} }), index.h("udp-menu-item", { key: '
|
|
267
|
+
} }), index.h("udp-menu-item", { key: 'aad5e2e0899c6ce454f8211aff579289a9add433', label: 'Polygon', handleOnClick: () => {
|
|
268
268
|
this.handleBulkSelectionTypeOnclick('polygon');
|
|
269
|
-
} }), index.h("udp-menu-item", { key: '
|
|
269
|
+
} }), index.h("udp-menu-item", { key: 'f1175583cdc19bfcdb9277b18a989cdd714cbc9f', label: 'Lasso', handleOnClick: () => {
|
|
270
270
|
this.handleBulkSelectionTypeOnclick('lasso');
|
|
271
|
-
} })))))), !this.readOnlyMap && this.enableSplit && (index.h("div", { key: '
|
|
271
|
+
} })))))), !this.readOnlyMap && this.enableSplit && (index.h("div", { key: '7111752f3385ad2362943dcaa909e43223fd70d3', id: "splitOption" }, index.h("div", { key: '61a10461fa398fe1668f605a45df4edfb085e11c', id: "splitOptionButton" }, index.h("stencil-icon-button", { key: '5ff3b93da546293ebfb5c081afbe67f5a79280d1', iconName: 'splitButton', iconClassName: 'splitButtonWrapper', tooltip: 'Split Linear Feature', icon: es.Scalpel16, buttonId: 'splitButton', onClick: () => this.handleSplitBtnOnclick() })), index.h("div", { key: 'cb8d745d6e87b43e2d52be58e13affbcdc28328c', id: "splitOptionDiv" }, this.splitAnchor && (index.h("udp-pop-over", { key: 'e2fe4e5127034f07aab2281b9dc22745415f4aa4', isOpen: this.splitAnchor ? true : false, anchorElement: this.splitAnchor, handleOnClose: () => this.handleCloseSplitPopover(), popoverPlacement: 'bottom-start', overflow: 'visible' }, index.h("split-line-popup", { key: '3df7fd56f73d37fc5b5d25e7648ffbaae3e175d5', vectorLayerOptions: this.layerOptionsForPopup, selectedLayer: this.selectedLayerToAddFeature, handleStartSplitting: this.handleStartSplitting })))))), this.refreshEvent && (index.h("stencil-icon-button", { key: '15d086b7748977e455962f89909559c3c9bee598', iconName: 'refreshButton', iconClassName: 'iconButtonWrapper', tooltip: (_b = this.refreshButtonTooltip) !== null && _b !== void 0 ? _b : 'Refresh', icon: es.Renew16, buttonId: 'refreshButton', onClick: () => this.refreshEvent() })), !this.readOnlyMap && (this.enableDragBox || (this.addMultipleFeatures && this.enableAddNewFeature)) && (index.h("div", { key: 'bc75e795440eb6bd93880675f8c838dced82cb8a', class: "labelButtons" }, index.h("stencil-icon-button-grid-action-header", { key: '685d0df506fafffef72142dcb517a0a709fb66e3', showLabel: true, icon: this.getButtonIcon(), onClick: () => {
|
|
272
272
|
if (this.enableDragBox) {
|
|
273
273
|
this.handleCancelBoxSelection();
|
|
274
274
|
}
|
|
275
275
|
if (this.enableAddNewFeature) {
|
|
276
276
|
this.handleAddNewFeature();
|
|
277
277
|
}
|
|
278
|
-
}, tooltip: this.getButtonText(), iconClassName: 'save-icon-class' }, index.h("unity-typography", { key: '
|
|
278
|
+
}, tooltip: this.getButtonText(), iconClassName: 'save-icon-class' }, index.h("unity-typography", { key: '0e5817c1e519f44cff5ef58f830a40cf96bee104', variant: "button" }, this.getButtonText())))), this.showSplitButton && (index.h("div", { key: 'd1bcbf75fbf3b64d30ba6039151bb7b586486b10', class: "labelButtons" }, index.h("stencil-icon-button-grid-action-header", { key: 'd76adc81e1387ce5192bdda7f61967c2d63ec9d0', showLabel: true, icon: es.Checkmark16, onClick: () => this.handleSaveSplit(), tooltip: 'Save Split', iconClassName: 'save-icon-class' }, index.h("unity-typography", { key: '421cd3143618720b32013933ebbe73a5bd189bd3', variant: "button" }, 'Save Split')))), this.showSplitButton && (index.h("div", { key: '851ecc2119102227d1419d172dcbaa9f23fcbe79', class: "labelButtons" }, index.h("stencil-icon-button-grid-action-header", { key: 'b94e590cf5ce34779a1b7f9473bd74b5f96702a6', showLabel: true, icon: es.Close16, onClick: () => this.handleCancelSplit(), tooltip: 'Cancel Split', iconClassName: 'save-icon-class' }, index.h("unity-typography", { key: 'b8add6276ffecb771ad0ae4a41ab428c708c8f69', variant: "button" }, 'Cancel Split')))), !this.readOnlyMap && this.enableAddNewFeature && (index.h("div", { key: '69105b32f3500905695691100192fda7fae953a3', class: "labelButtons" }, index.h("stencil-icon-button-grid-action-header", { key: '708e158391c0c147e082f9e59c61c84ed972e39f', showLabel: true, icon: es.Close16, onClick: () => this.handleCancelAddNewFeature(), tooltip: 'Cancel Drawing', iconClassName: 'save-icon-class' }, index.h("unity-typography", { key: 'c9d160180aa52accfa4bed7a749aace963fec441', variant: "button" }, 'Cancel Drawing')))), !this.readOnlyMap && this.withSelected && (index.h("div", { key: '9e575cf914ff1f6c583dd089eb0311d06ec44233', class: "selectedFeaturesButtons labelButtons" }, index.h("div", { key: '9ce2e0e90d1b7f10fe0e8b7193e6d7720f1d7c14', id: "withSelectedOption" }, index.h("div", { key: '855dba9f56d5de13d0df2ea0a7df35227594ce2a', id: "withSelectedOptionButton" }, index.h("stencil-icon-button-grid-action-header", { key: 'f588dbd005a74c90704fbf3cb739f08d680d484d', showLabel: true, icon: es.OverflowMenuHorizontal16, onClick: () => this.handleSelectionActionOnclick(), tooltip: 'With Selected', iconClassName: 'save-icon-class', count: this.selectedFeatureByBoxSelection.length }, index.h("unity-typography", { key: '2ddbbeb214a06bfa1d914d018693dc924151f804', variant: "button" }, 'With Selected'))), index.h("div", { key: '8c05d5c263fc42dce7bf72bd33459387c44e5266', id: "withSelectedOptionDiv" }, this.selectedFeaturesActionPanel && this.selectionActionAnchor && (index.h("udp-pop-over", { key: '2eb511ea7a877e7f2361959fd6d320922939d576', isOpen: this.selectionActionAnchor ? true : false, anchorElement: this.selectionActionAnchor, handleOnClose: () => this.handleCloseSelectionActionPopover(), popoverPlacement: 'bottom-start' }, index.h("div", { key: '859d324e2c59207846f0d34edc2f0b67915aca37', innerHTML: this.selectedFeaturesActionPanel }))))), index.h("stencil-icon-button-grid-action-header", { key: 'ffe85e0a4fd41bb13058298ca52fe74972769cfa', showLabel: true, icon: es.Close16, onClick: () => this.unselectFeatures(), tooltip: 'Cancel selection', iconClassName: 'save-icon-class' }, index.h("unity-typography", { key: '3f6b84dc0b6c90254f3c602befda7a9c3ed000cf', variant: "button" }, 'Cancel Selection'))))), index.h("div", { key: '6a24e1f3dd181168ea7ef9a7432ffaa1aa8a23e4', id: "addOption" }, this.enableAdd && !this.readOnlyMap && (index.h("div", { key: '0a3f87cb1eafcb7cfb1937997c652c647b5ebcb9', id: "addOptionButton" }, index.h("custom-button", { key: '0dded4c903a0a30725a30f213f44fef1a84ca579', secondary: true, label: index.h("unity-typography", { variant: "button" }, 'Add'), onClick: () => this.handleAddOnclick(), size: "tall" }, index.h("udp-icon", { key: 'bc4158b0ad5d41ce53d919a5ee404c21eacc237a', iconName: 'add32', darkIcon: false })))), this.addFeatureAnchor && (index.h("udp-pop-over", { key: 'bda91d72d88eb0b1bbfce0e01bd4fb2d89b91235', isOpen: this.addFeatureAnchor ? true : false, anchorElement: this.addFeatureAnchor, handleOnClose: () => this.handleCloseAddMapFeature(), popoverPlacement: 'bottom-start', overflow: 'visible' }, index.h("add-map-feature-popup", { key: 'e4db99a02029439880a327ac9c4a0f234793a4a7', handleStartDrawingMapFeature: this.handleStartDrawingMapFeature, vectorLayerOptions: this.layerOptionsForPopup, selectedLayer: this.selectedLayerToAddFeature, selectedType: this.selectedTypeToAddFeature, panelConfig: this.addFeaturePanelConfig }))))))));
|
|
279
279
|
}
|
|
280
280
|
get mapToolbarElement() { return index.getElement(this); }
|
|
281
281
|
static get watchers() { return {
|
|
@@ -300,7 +300,7 @@ const SelectLayerPopUp = class {
|
|
|
300
300
|
}
|
|
301
301
|
render() {
|
|
302
302
|
var _a, _b, _c;
|
|
303
|
-
return (index.h("div", { key: '
|
|
303
|
+
return (index.h("div", { key: '0fea2e9e76129b4433b9ce462815c15c4a14fe55', class: "popoverContent" }, this.enableTileSelection && (index.h("udp-selector", { key: '5615df8e5b848d2dd18b23f1d17ea1107ffc5e02', id: "mapType", options: (_a = this.tileOptions) !== null && _a !== void 0 ? _a : [], initialValue: this.selectedTile.value, label: "Map Type", onChange: (e) => { this.handleMapTypeInputChange(e); }, large: false })), index.h("div", { key: '3848b9a25967c45b5723953d4a4832cac5a8753f', style: { height: '12px' } }), index.h("div", { key: '7e5d847e68ee3bde1fab79049e60a18f7fc07cb9' }, index.h("text-field", { key: '5242a50d4102305d2c61b504dee40b729ae7542a', label: "Search Layers", id: "searchFilter", value: "", onInput: (e) => this.handleSearchLayers(e) })), ((_b = this.filteredOptions) === null || _b === void 0 ? void 0 : _b.length) > 0 &&
|
|
304
304
|
((_c = this.filteredOptions) === null || _c === void 0 ? void 0 : _c.map((item) => (index.h("check-box-group", { title: item === null || item === void 0 ? void 0 : item.title, options: item === null || item === void 0 ? void 0 : item.options, values: this.visibleLayers, handleChange: this.updateSelectedLayers }))))));
|
|
305
305
|
}
|
|
306
306
|
};
|
|
@@ -316,7 +316,7 @@ const SplitLinePopup = class {
|
|
|
316
316
|
}
|
|
317
317
|
render() {
|
|
318
318
|
var _a;
|
|
319
|
-
return (index.h("div", { key: '
|
|
319
|
+
return (index.h("div", { key: '103ec14d5633494f7d427b5e0401cb550f28ff12', class: "popoverContent" }, index.h("udp-selector", { key: '10bdfdfb318e231772ff57f91a0704deb2d5e837', id: "layer", options: (_a = this.vectorLayerOptions.map((layer) => {
|
|
320
320
|
return {
|
|
321
321
|
label: layer,
|
|
322
322
|
value: layer
|
|
@@ -39,7 +39,7 @@ const generateFilterString = (data) => {
|
|
|
39
39
|
return rootGroup ? buildStringForGroup(rootGroup.groupId) : '';
|
|
40
40
|
};
|
|
41
41
|
|
|
42
|
-
const advancedSearchBuilderCss = ":host{display:flex;flex-direction:column;font-family:sans-serif;
|
|
42
|
+
const advancedSearchBuilderCss = ":host{display:flex;flex-direction:column;font-family:sans-serif;box-sizing:border-box;overflow:visible}:host(.host-collapsed){resize:none;height:auto}:host(.host-expanded){overflow-y:auto}:host(.is-resizable.host-expanded){resize:vertical;min-height:180px;max-height:80vh;overflow:auto}.advanced-filter-container{display:flex;flex-direction:column;height:100%;width:100%;overflow:hidden}.collapsed-view{display:flex;align-items:center;gap:0.5rem;padding:10px;border-bottom:1px solid #eee}.anim-container{flex-grow:1;overflow-y:auto;overflow-x:auto;display:flex}.content-wrapper{padding-bottom:15px;flex-grow:1}.advanced-filter-footer{display:flex;justify-content:flex-end;border-top:1px solid #eee;padding:10px;flex-shrink:0;gap:10px;align-items:center}.string-display-input{width:100%;padding:8px;border:1px solid #ccc;border-radius:4px;background-color:#f5f5f5;box-sizing:border-box;cursor:default;user-select:none}.string-display-input:focus{outline:none}.search-button{opacity:0;transform:scale(0.95);pointer-events:none;margin-right:10px}.advanced-filter-container.is-expanded .anim-container{overflow-y:auto;min-height:130px}.advanced-filter-container.is-expanded .collapsed-view{display:none}.advanced-filter-container.is-expanded .search-button{opacity:1;transform:scale(1);pointer-events:auto}.advanced-filter-container:not(.is-expanded) .anim-container{max-height:0;min-height:0;overflow:hidden}.advanced-filter-container:not(.is-expanded) .advanced-filter-footer{opacity:0;height:0;padding:0;border:none;pointer-events:none;overflow:hidden}";
|
|
43
43
|
|
|
44
44
|
const AdvancedSearchBuilder = class {
|
|
45
45
|
constructor(hostRef) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"advanced-search-builder.entry.cjs.js","mappings":"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","names":["getAllowedSearchOperators","h","Host"],"sources":["src/components/my-component/UI/advanced-search-builder/helperFunctions/createStringFromSearchObject.ts","src/components/my-component/UI/advanced-search-builder/advanced-search-builder.css?tag=advanced-search-builder&encapsulation=shadow","src/components/my-component/UI/advanced-search-builder/advanced-search-builder.tsx"],"sourcesContent":["import { Search } from '../../../../../udp-utilities/interfaces/searchObject';\n\nexport const generateFilterString = (data: Search ): string => {\n // Return an empty string if there's no data or no groups\n if (!data || !data.filterGroups || data.filterGroups.length === 0) {\n return '';\n }\n\n // Recursive helper function to build the string for a given group\n const buildStringForGroup = (groupId: number): string => {\n const groupInfo = data.filterGroups.find(g => g.groupId === groupId);\n if (!groupInfo) return '';\n\n const logicalOperator = groupInfo.logicalSearchOperator === 1 ? 'AND' : 'OR';\n const parts = [];\n\n // 1. Process all filters in this group\n const filtersInGroup = data.filterElements.filter(f => f.groupId === groupId);\n filtersInGroup.forEach(filter => {\n // Add quotes around string values\n const value =\n typeof filter.searchValue === 'string' ? `\"${filter.searchValue}\"` : filter.searchValue;\n parts.push(`[${filter.searchField}] ${filter.searchOperator} ${value}`);\n });\n\n // 2. Process all subgroups by calling this function recursively\n const subGroups = data.filterGroups.filter(g => g.parentGroupId === groupId);\n subGroups.forEach(subGroup => {\n const subGroupString = buildStringForGroup(subGroup.groupId);\n // Only add the part if the subgroup is not empty\n if (subGroupString) {\n parts.push(`(${subGroupString})`);\n }\n });\n\n // 3. Join all the parts together with the correct operator\n return parts.join(` ${logicalOperator} `);\n };\n\n // Find the root group (the one with no parent) and start the process\n const rootGroup = data.filterGroups.find(g => g.parentGroupId === null);\n return rootGroup ? buildStringForGroup(rootGroup.groupId) : '';\n }\n",":host {\n display: flex;\n flex-direction: column;\n font-family: sans-serif;\n border: 1px solid #ccc;\n border-radius: 4px;\n background: white;\n margin: 3px;\n box-sizing: border-box;\n overflow: visible;\n}\n\n/* --- Host State Styles --- */\n:host(.host-collapsed) {\n resize: none;\n height: auto;\n}\n\n:host(.host-expanded) {\n overflow-y: auto;\n}\n\n:host(.is-resizable.host-expanded) {\n resize: vertical;\n min-height: 180px;\n max-height: 80vh;\n overflow: auto;\n}\n\n/* --- Main Layout --- */\n.advanced-filter-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n overflow: hidden;\n}\n\n.collapsed-view {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 10px;\n border-bottom: 1px solid #eee;\n}\n\n.anim-container {\n flex-grow: 1;\n overflow-y: auto;\n overflow-x: auto;\n display: flex;\n}\n\n.content-wrapper {\n padding-bottom: 15px;\n flex-grow: 1;\n}\n\n.advanced-filter-footer {\n display: flex;\n justify-content: flex-end;\n border-top: 1px solid #eee;\n padding: 10px;\n flex-shrink: 0;\n gap: 10px;\n align-items: center;\n}\n\n/* --- Input & Button Styles --- */\n.string-display-input {\n width: 100%;\n padding: 8px;\n border: 1px solid #ccc;\n border-radius: 4px;\n background-color: #f5f5f5;\n box-sizing: border-box;\n cursor: default;\n user-select: none;\n}\n\n.string-display-input:focus {\n outline: none;\n}\n\n.search-button {\n opacity: 0;\n transform: scale(0.95);\n pointer-events: none;\n margin-right: 10px;\n}\n\n/* --- Animation & Visibility Rules --- */\n\n/* When EXPANDED, show the content */\n.advanced-filter-container.is-expanded .anim-container {\n overflow-y: auto;\n min-height: 130px;\n}\n\n.advanced-filter-container.is-expanded .collapsed-view {\n display: none;\n}\n\n.advanced-filter-container.is-expanded .search-button {\n opacity: 1;\n transform: scale(1);\n pointer-events: auto;\n}\n\n/* When COLLAPSED, hide the content */\n.advanced-filter-container:not(.is-expanded) .anim-container {\n max-height: 0;\n min-height: 0;\n overflow: hidden;\n}\n\n.advanced-filter-container:not(.is-expanded) .advanced-filter-footer {\n opacity: 0;\n height: 0;\n padding: 0;\n border: none;\n pointer-events: none;\n overflow: hidden;\n}\n","import { Component, h, Prop, State, Event, EventEmitter, Element, Host } from '@stencil/core';\nimport { Field } from './models';\nimport { generateFilterString } from './helperFunctions/createStringFromSearchObject';\nimport { Search } from '../../../../udp-utilities/interfaces/searchObject';\nimport { AdvancedFilterConfig } from './models';\nimport { getAllowedSearchOperators } from './helperFunctions/udpOperatorHelper';\n\n/**\n * A powerful and configurable component for building complex data queries.\n * It provides a user-friendly UI for adding filters and logical groups,\n * and emits the resulting search object for use in data grids or API calls.\n *\n * @example\n * <advanced-search-builder\n * fields={myFields}\n * initialFilterData={myFilter}\n * config={{ collapsible: false }}\n * onFilterSave={(e) => handleSearch(e.detail)}\n * onChange={(e) => console.log('Current state:', e.detail)}\n * />\n */\n\n@Component({\n tag: 'advanced-search-builder',\n styleUrl: 'advanced-search-builder.css',\n shadow: true,\n})\nexport class AdvancedSearchBuilder {\n /**\n * An array of `Field` objects that defines the available options in the\n * \"Fields\" dropdown. This can be a nested structure for expandable fields.\n */\n @Prop() fields: Field[] = [];\n\n /**\n * The initial state of the filter. The component uses this to build the\n * initial UI and manages its state internally thereafter.\n */\n @Prop() initialFilterData: Search;\n\n /**\n * A configuration object to control optional features of the component,\n * such as enabling or disabling the collapsible and resizable behaviors.\n */\n @Prop() config: AdvancedFilterConfig = {};\n\n /**\n * Emitted only when the user clicks the \"Search\" button in the footer.\n * This represents the final, committed filter state.\n *\n * @event filterSave\n * @param {Search} searchData - The complete, final search object.\n */\n @Event() filterSave: EventEmitter<Search>; //fires when the \"Search\" button is clicked\n\n /**\n * Emitted on every single change to the filter data (e.g., typing in a\n * value, changing an operator). This is useful for real-time feedback.\n *\n * @event change\n * @param {Search} searchData - The complete, up-to-the-minute search object.\n */\n @Event() change: EventEmitter<Search>;\n\n @State() private openAddMenuForGroupId: number | null = null;\n @State() filterString: string = '';\n @State() private isExpanded: boolean = true;\n\n @State() private currentFilterData: Search;\n @State() private isFilterValid: boolean = true;\n @State() private errorMessages: string[] = [];\n\n private nextGroupId = 1;\n private animContainerEl: HTMLElement;\n @Element() private el: HTMLElement;\n\n componentWillLoad() {\n // Initialize the internal state from the prop\n this.currentFilterData = this.getNormalizedData(this.initialFilterData);\n this.updateNextGroupId(this.currentFilterData);\n }\n\n componentDidLoad() {\n this.updateHostClasses();\n }\n\n private updateHostClasses() {\n if (this.isExpanded) {\n this.el.classList.add('host-expanded');\n this.el.classList.remove('host-collapsed');\n } else {\n this.el.classList.add('host-collapsed');\n this.el.classList.remove('host-expanded');\n this.el.style.height = null;\n }\n }\n\n private updateNextGroupId(data: Search) {\n // Check if there are any groups to scan\n if (data && data.filterGroups.length > 0) {\n // Find the highest existing groupId and add 1\n this.nextGroupId = Math.max(...data.filterGroups.map(g => g.groupId)) + 1;\n } else {\n // If there are no groups, start with 2 (since the default root is 1)\n this.nextGroupId = 2;\n }\n }\n\n private verifyFilterState(data: Search): { isValid: boolean; errors: string[] } {\n const errors: string[] = [];\n const guidRegex =\n /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;\n\n data.filterElements.forEach(filter => {\n delete filter._error; // Clear old errors first\n const isSearchFieldEmpty =\n filter.searchField === null ||\n filter.searchField === undefined ||\n filter.searchField === '';\n const isValueEmpty = !filter.searchValue;\n const operatorAllowsEmpty =\n filter.searchOperator === 'NULL' || filter.searchOperator === 'NOTNULL';\n\n if (isSearchFieldEmpty) {\n const errorMessage = `Search Field cannot be empty.`;\n filter._error = errorMessage;\n errors.push(errorMessage);\n } else if (filter.searchOperator === 'BETWEEN') {\n const values = (filter.searchValue || '').split(',');\n // Check if we have two values and that neither is an empty string.\n if (values.length !== 2 || !values[0] || !values[1]) {\n const errorMessage = `Two values required when using BETWEEN operator for field \"${filter.searchField}\".`;\n filter._error = errorMessage;\n errors.push(errorMessage);\n }\n } else if (isValueEmpty && !operatorAllowsEmpty) {\n const errorMessage = `Value cannot be empty for field \"${filter.searchField}\".`;\n filter._error = errorMessage;\n errors.push(errorMessage);\n } else if (filter._type === 'guid' && !isValueEmpty && !guidRegex.test(filter.searchValue)) {\n const errorMessage = `Invalid GUID for field \"${filter.searchField}\".`;\n filter._error = errorMessage;\n errors.push(errorMessage);\n }\n });\n\n return { isValid: errors.length === 0, errors: errors };\n }\n\n private handleSearch = () => {\n if (this.isFilterValid && this.filterSave) {\n this.filterSave.emit(this.currentFilterData);\n this.filterString = generateFilterString(this.currentFilterData);\n this.config.collapsible && this.toggleExpanded();\n } else {\n console.warn('Cannot run search: filter is invalid.');\n }\n };\n\n private getNormalizedData(data: Search): Search {\n if (data && data.filterGroups?.length > 0) {\n return data;\n }\n if (data && data.filterElements?.length > 0) {\n const rootGroupId = 1;\n return {\n ...data,\n filterGroups: [\n {\n groupId: rootGroupId,\n parentGroupId: null,\n logicalSearchOperator: data.logicalSearchOperator || 1,\n },\n ],\n filterElements: data.filterElements.map(el => ({ ...el, groupId: rootGroupId })),\n };\n }\n // Return a default structure if the prop is null or empty\n return {\n logicalSearchOperator: 1,\n filterGroups: [{ groupId: 1, parentGroupId: null, logicalSearchOperator: 1 }],\n filterElements: [],\n };\n }\n\n private toggleExpanded = () => {\n this.isExpanded = !this.isExpanded;\n this.updateHostClasses();\n };\n\n private handleToggleAddMenu = (event: CustomEvent<number>) => {\n const groupId = event.detail;\n // If clicking the same button, close the menu. Otherwise, open the new one.\n this.openAddMenuForGroupId = this.openAddMenuForGroupId === groupId ? null : groupId;\n\n if (this.openAddMenuForGroupId !== null) {\n const el = this.animContainerEl;\n if (el) {\n // We use requestAnimationFrame to ensure the scroll happens smoothly\n requestAnimationFrame(() => {\n el.scrollTop = el.scrollHeight;\n });\n }\n }\n };\n\n private runUpdateCycle(mutator: (data: Search) => void) {\n // Create a deep clone to avoid mutating the prop directly\n const newState = JSON.parse(JSON.stringify(this.currentFilterData));\n\n // Apply the mutations to the new state object\n mutator(newState);\n\n this.currentFilterData = newState;\n\n const validationResult = this.verifyFilterState(this.currentFilterData);\n this.isFilterValid = validationResult.isValid;\n this.errorMessages = validationResult.errors;\n\n this.change.emit(newState);\n }\n\n // --- Data Manipulation Methods ---\n\n private handleDrop = (event: CustomEvent<{ event: DragEvent; targetFilterId: string }>) => {\n const dragEvent = event.detail.event;\n const droppedOnFilterId = event.detail.targetFilterId;\n\n // Get the dragged filter's ID from the dataTransfer object\n const draggedFilterId = dragEvent.dataTransfer.getData('text/plain');\n\n if (!draggedFilterId || draggedFilterId === droppedOnFilterId) {\n return;\n }\n\n this.runUpdateCycle(newState => {\n const elements = newState.filterElements;\n const draggedItem = elements.find(f => f._id === draggedFilterId);\n if (!draggedItem) return;\n\n const fromIndex = elements.findIndex(f => f._id === draggedFilterId);\n const toIndex = elements.findIndex(f => f._id === droppedOnFilterId);\n\n elements.splice(fromIndex, 1);\n elements.splice(toIndex, 0, draggedItem);\n });\n };\n\n private handleAddFilter = (groupId: number) => {\n this.runUpdateCycle(newState => {\n const defaultField = this.fields?.[0];\n const allowedOperators = getAllowedSearchOperators(defaultField);\n const defaultOperator = allowedOperators?.[0]?.value || '';\n newState.filterElements.push({\n _id: `filter_${Math.random()}`,\n _type: defaultField?.type,\n groupId: groupId,\n searchField: defaultField?.name,\n searchOperator: defaultOperator, // Use the new default operator\n searchValue: '',\n });\n });\n this.openAddMenuForGroupId = null;\n };\n\n private handleAddGroup = (parentGroupId: number) => {\n this.runUpdateCycle(newState => {\n newState.filterGroups.push({\n groupId: this.nextGroupId++,\n parentGroupId: parentGroupId,\n logicalSearchOperator: 1,\n });\n });\n this.openAddMenuForGroupId = null;\n };\n\n private handleRemoveFilter = (filterId: string) => {\n this.runUpdateCycle(newState => {\n const index = newState.filterElements.findIndex(f => f._id === filterId);\n if (index > -1) newState.filterElements.splice(index, 1);\n });\n };\n\n private handleRemoveGroup = (groupIdToRemove: number) => {\n this.runUpdateCycle(newState => {\n const findDescendantGroupIds = (parentGroupId: number): number[] => {\n const children = newState.filterGroups.filter(g => g.parentGroupId === parentGroupId);\n let allDescendants = children.map(c => c.groupId);\n children.forEach(c => {\n allDescendants = [...allDescendants, ...findDescendantGroupIds(c.groupId)];\n });\n return allDescendants;\n };\n const allIdsToRemove = [groupIdToRemove, ...findDescendantGroupIds(groupIdToRemove)];\n newState.filterGroups = newState.filterGroups.filter(\n g => !allIdsToRemove.includes(g.groupId),\n );\n newState.filterElements = newState.filterElements.filter(\n f => !allIdsToRemove.includes(f.groupId),\n );\n });\n };\n\n private handleFilterChange = (event: CustomEvent) => {\n const { filterId, field, value, updates } = event.detail;\n this.runUpdateCycle(newState => {\n const filter = newState.filterElements.find(f => f._id === filterId);\n if (filter) {\n if (updates) {\n // If there are multiple updates, apply them all\n Object.assign(filter, updates);\n } else {\n // Otherwise, apply the single update\n filter[field] = value;\n }\n }\n });\n };\n\n private handleGroupChange = (event: CustomEvent) => {\n const { groupId, logicalSearchOperator } = event.detail;\n this.runUpdateCycle(newState => {\n const group = newState.filterGroups.find(g => g.groupId === groupId);\n if (group) group.logicalSearchOperator = logicalSearchOperator;\n });\n };\n\n private isDescendant(targetGroupId: number, draggedGroupId: number, allGroups: any[]): boolean {\n let currentGroup = allGroups.find(g => g.groupId === targetGroupId);\n // Traverse up the tree from the target\n while (currentGroup && currentGroup.parentGroupId !== null) {\n // If we find the dragged group in the ancestry, it's a descendant\n if (currentGroup.parentGroupId === draggedGroupId) {\n return true;\n }\n currentGroup = allGroups.find(g => g.groupId === currentGroup.parentGroupId);\n }\n return false;\n }\n\n private handleDropOnGroup = (event: CustomEvent<{ event: DragEvent; targetGroupId: number }>) => {\n const dragEvent = event.detail.event;\n const targetGroupId = event.detail.targetGroupId;\n\n // Read the type and ID from the dataTransfer object\n const dragType = dragEvent.dataTransfer.getData('application/drag-type');\n const draggedId = dragEvent.dataTransfer.getData('text/plain');\n\n if (!draggedId) return;\n\n this.runUpdateCycle(newState => {\n // --- Handle a dropped FILTER ---\n if (dragType === 'filter') {\n const draggedFilter = newState.filterElements.find(f => f._id === draggedId);\n if (draggedFilter && draggedFilter.groupId !== targetGroupId) {\n draggedFilter.groupId = targetGroupId;\n }\n }\n // --- Handle a dropped GROUP ---\n else if (dragType === 'group') {\n const draggedGroupId = parseInt(draggedId, 10);\n const draggedGroup = newState.filterGroups.find(g => g.groupId === draggedGroupId);\n\n // Safety checks:\n // 1. Can't drop a group on itself.\n // 2. Can't drop a group into its current parent.\n // 3. Can't drop a group into one of its own descendants.\n if (\n draggedGroup &&\n draggedGroupId !== targetGroupId &&\n draggedGroup.parentGroupId !== targetGroupId &&\n !this.isDescendant(targetGroupId, draggedGroupId, newState.filterGroups)\n ) {\n // If all checks pass, update the group's parentGroupId\n draggedGroup.parentGroupId = targetGroupId;\n }\n }\n });\n };\n\n render() {\n const rootGroup = this.currentFilterData.filterGroups.find(g => g.parentGroupId === null);\n\n const isCollapsible = this.config.collapsible === true;\n const isResizable = this.config.resizable !== false;\n const showFooter = this.config.showFooter !== false;\n\n const containerClasses = {\n 'advanced-filter-container': true,\n 'is-expanded': this.isExpanded,\n };\n\n const hostStyles = {};\n // Only apply a height style when the component is expanded\n if (this.isExpanded && this.config.height) {\n // If not resizable, this will be the fixed height.\n // If resizable, this will be the initial height, constrained by the CSS.\n hostStyles['height'] = this.config.height;\n }\n\n return (\n <Host\n style={hostStyles}\n class={{\n 'is-resizable': isResizable,\n 'host-expanded': this.isExpanded,\n 'host-collapsed': !this.isExpanded,\n }}\n >\n <div class={containerClasses}>\n {isCollapsible && (\n <div class=\"collapsed-view\">\n <input type=\"text\" readonly value={this.filterString} class=\"string-display-input\" />\n <custom-button\n class=\"toggle-button\"\n size=\"short\"\n variant=\"text\"\n handleClick={this.toggleExpanded}\n >\n <span>{this.isExpanded ? 'Collapse' : 'Expand'}</span>\n <svg class=\"toggle-icon\" viewBox=\"0 0 16 16\">\n <path d=\"M4 6L8 10L12 6\" stroke=\"currentColor\" stroke-width=\"2\" />\n </svg>\n </custom-button>\n </div>\n )}\n <div class=\"anim-container\" ref={el => (this.animContainerEl = el)}>\n <div class=\"content-wrapper\">\n {(this.isExpanded || !isCollapsible) && rootGroup && (\n <filter-group\n key={rootGroup.groupId}\n groupId={rootGroup.groupId}\n filterData={this.currentFilterData}\n fields={this.fields}\n isRoot={true}\n onAddFilter={e => this.handleAddFilter(e.detail)}\n onAddGroup={e => this.handleAddGroup(e.detail)}\n onRemoveFilter={e => this.handleRemoveFilter(e.detail)}\n onRemoveGroup={e => this.handleRemoveGroup(e.detail)}\n onFilterChange={this.handleFilterChange}\n onGroupChange={this.handleGroupChange}\n onDropOnFilter={this.handleDrop}\n openAddMenuForGroupId={this.openAddMenuForGroupId}\n onToggleAddMenu={this.handleToggleAddMenu}\n onDropOnGroup={this.handleDropOnGroup}\n />\n )}\n </div>\n </div>\n {showFooter && (\n <div class=\"advanced-filter-footer\">\n <validation-chip isValid={this.isFilterValid} errorMessages={this.errorMessages} />\n <udp-button\n disabled={!this.isFilterValid}\n onClick={this.handleSearch}\n variant=\"contained\"\n >\n Search\n </udp-button>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"advanced-search-builder.entry.cjs.js","mappings":"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","names":["getAllowedSearchOperators","h","Host"],"sources":["src/components/my-component/UI/advanced-search-builder/helperFunctions/createStringFromSearchObject.ts","src/components/my-component/UI/advanced-search-builder/advanced-search-builder.css?tag=advanced-search-builder&encapsulation=shadow","src/components/my-component/UI/advanced-search-builder/advanced-search-builder.tsx"],"sourcesContent":["import { Search } from '../../../../../udp-utilities/interfaces/searchObject';\n\nexport const generateFilterString = (data: Search ): string => {\n // Return an empty string if there's no data or no groups\n if (!data || !data.filterGroups || data.filterGroups.length === 0) {\n return '';\n }\n\n // Recursive helper function to build the string for a given group\n const buildStringForGroup = (groupId: number): string => {\n const groupInfo = data.filterGroups.find(g => g.groupId === groupId);\n if (!groupInfo) return '';\n\n const logicalOperator = groupInfo.logicalSearchOperator === 1 ? 'AND' : 'OR';\n const parts = [];\n\n // 1. Process all filters in this group\n const filtersInGroup = data.filterElements.filter(f => f.groupId === groupId);\n filtersInGroup.forEach(filter => {\n // Add quotes around string values\n const value =\n typeof filter.searchValue === 'string' ? `\"${filter.searchValue}\"` : filter.searchValue;\n parts.push(`[${filter.searchField}] ${filter.searchOperator} ${value}`);\n });\n\n // 2. Process all subgroups by calling this function recursively\n const subGroups = data.filterGroups.filter(g => g.parentGroupId === groupId);\n subGroups.forEach(subGroup => {\n const subGroupString = buildStringForGroup(subGroup.groupId);\n // Only add the part if the subgroup is not empty\n if (subGroupString) {\n parts.push(`(${subGroupString})`);\n }\n });\n\n // 3. Join all the parts together with the correct operator\n return parts.join(` ${logicalOperator} `);\n };\n\n // Find the root group (the one with no parent) and start the process\n const rootGroup = data.filterGroups.find(g => g.parentGroupId === null);\n return rootGroup ? buildStringForGroup(rootGroup.groupId) : '';\n }\n",":host {\n display: flex;\n flex-direction: column;\n font-family: sans-serif;\n /* border: 1px solid #ccc; */\n /* border-radius: 4px; */\n /* background: white; */\n /* margin: 3px; */\n box-sizing: border-box;\n overflow: visible;\n}\n\n/* --- Host State Styles --- */\n:host(.host-collapsed) {\n resize: none;\n height: auto;\n}\n\n:host(.host-expanded) {\n overflow-y: auto;\n}\n\n:host(.is-resizable.host-expanded) {\n resize: vertical;\n min-height: 180px;\n max-height: 80vh;\n overflow: auto;\n}\n\n/* --- Main Layout --- */\n.advanced-filter-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n overflow: hidden;\n}\n\n.collapsed-view {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 10px;\n border-bottom: 1px solid #eee;\n}\n\n.anim-container {\n flex-grow: 1;\n overflow-y: auto;\n overflow-x: auto;\n display: flex;\n}\n\n.content-wrapper {\n padding-bottom: 15px;\n flex-grow: 1;\n}\n\n.advanced-filter-footer {\n display: flex;\n justify-content: flex-end;\n border-top: 1px solid #eee;\n padding: 10px;\n flex-shrink: 0;\n gap: 10px;\n align-items: center;\n}\n\n/* --- Input & Button Styles --- */\n.string-display-input {\n width: 100%;\n padding: 8px;\n border: 1px solid #ccc;\n border-radius: 4px;\n background-color: #f5f5f5;\n box-sizing: border-box;\n cursor: default;\n user-select: none;\n}\n\n.string-display-input:focus {\n outline: none;\n}\n\n.search-button {\n opacity: 0;\n transform: scale(0.95);\n pointer-events: none;\n margin-right: 10px;\n}\n\n/* --- Animation & Visibility Rules --- */\n\n/* When EXPANDED, show the content */\n.advanced-filter-container.is-expanded .anim-container {\n overflow-y: auto;\n min-height: 130px;\n}\n\n.advanced-filter-container.is-expanded .collapsed-view {\n display: none;\n}\n\n.advanced-filter-container.is-expanded .search-button {\n opacity: 1;\n transform: scale(1);\n pointer-events: auto;\n}\n\n/* When COLLAPSED, hide the content */\n.advanced-filter-container:not(.is-expanded) .anim-container {\n max-height: 0;\n min-height: 0;\n overflow: hidden;\n}\n\n.advanced-filter-container:not(.is-expanded) .advanced-filter-footer {\n opacity: 0;\n height: 0;\n padding: 0;\n border: none;\n pointer-events: none;\n overflow: hidden;\n}\n","import { Component, h, Prop, State, Event, EventEmitter, Element, Host } from '@stencil/core';\nimport { Field } from './models';\nimport { generateFilterString } from './helperFunctions/createStringFromSearchObject';\nimport { Search } from '../../../../udp-utilities/interfaces/searchObject';\nimport { AdvancedFilterConfig } from './models';\nimport { getAllowedSearchOperators } from './helperFunctions/udpOperatorHelper';\n\n/**\n * A powerful and configurable component for building complex data queries.\n * It provides a user-friendly UI for adding filters and logical groups,\n * and emits the resulting search object for use in data grids or API calls.\n *\n * @example\n * <advanced-search-builder\n * fields={myFields}\n * initialFilterData={myFilter}\n * config={{ collapsible: false }}\n * onFilterSave={(e) => handleSearch(e.detail)}\n * onChange={(e) => console.log('Current state:', e.detail)}\n * />\n */\n\n@Component({\n tag: 'advanced-search-builder',\n styleUrl: 'advanced-search-builder.css',\n shadow: true,\n})\nexport class AdvancedSearchBuilder {\n /**\n * An array of `Field` objects that defines the available options in the\n * \"Fields\" dropdown. This can be a nested structure for expandable fields.\n */\n @Prop() fields: Field[] = [];\n\n /**\n * The initial state of the filter. The component uses this to build the\n * initial UI and manages its state internally thereafter.\n */\n @Prop() initialFilterData: Search;\n\n /**\n * A configuration object to control optional features of the component,\n * such as enabling or disabling the collapsible and resizable behaviors.\n */\n @Prop() config: AdvancedFilterConfig = {};\n\n /**\n * Emitted only when the user clicks the \"Search\" button in the footer.\n * This represents the final, committed filter state.\n *\n * @event filterSave\n * @param {Search} searchData - The complete, final search object.\n */\n @Event() filterSave: EventEmitter<Search>; //fires when the \"Search\" button is clicked\n\n /**\n * Emitted on every single change to the filter data (e.g., typing in a\n * value, changing an operator). This is useful for real-time feedback.\n *\n * @event change\n * @param {Search} searchData - The complete, up-to-the-minute search object.\n */\n @Event() change: EventEmitter<Search>;\n\n @State() private openAddMenuForGroupId: number | null = null;\n @State() filterString: string = '';\n @State() private isExpanded: boolean = true;\n\n @State() private currentFilterData: Search;\n @State() private isFilterValid: boolean = true;\n @State() private errorMessages: string[] = [];\n\n private nextGroupId = 1;\n private animContainerEl: HTMLElement;\n @Element() private el: HTMLElement;\n\n componentWillLoad() {\n // Initialize the internal state from the prop\n this.currentFilterData = this.getNormalizedData(this.initialFilterData);\n this.updateNextGroupId(this.currentFilterData);\n }\n\n componentDidLoad() {\n this.updateHostClasses();\n }\n\n private updateHostClasses() {\n if (this.isExpanded) {\n this.el.classList.add('host-expanded');\n this.el.classList.remove('host-collapsed');\n } else {\n this.el.classList.add('host-collapsed');\n this.el.classList.remove('host-expanded');\n this.el.style.height = null;\n }\n }\n\n private updateNextGroupId(data: Search) {\n // Check if there are any groups to scan\n if (data && data.filterGroups.length > 0) {\n // Find the highest existing groupId and add 1\n this.nextGroupId = Math.max(...data.filterGroups.map(g => g.groupId)) + 1;\n } else {\n // If there are no groups, start with 2 (since the default root is 1)\n this.nextGroupId = 2;\n }\n }\n\n private verifyFilterState(data: Search): { isValid: boolean; errors: string[] } {\n const errors: string[] = [];\n const guidRegex =\n /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;\n\n data.filterElements.forEach(filter => {\n delete filter._error; // Clear old errors first\n const isSearchFieldEmpty =\n filter.searchField === null ||\n filter.searchField === undefined ||\n filter.searchField === '';\n const isValueEmpty = !filter.searchValue;\n const operatorAllowsEmpty =\n filter.searchOperator === 'NULL' || filter.searchOperator === 'NOTNULL';\n\n if (isSearchFieldEmpty) {\n const errorMessage = `Search Field cannot be empty.`;\n filter._error = errorMessage;\n errors.push(errorMessage);\n } else if (filter.searchOperator === 'BETWEEN') {\n const values = (filter.searchValue || '').split(',');\n // Check if we have two values and that neither is an empty string.\n if (values.length !== 2 || !values[0] || !values[1]) {\n const errorMessage = `Two values required when using BETWEEN operator for field \"${filter.searchField}\".`;\n filter._error = errorMessage;\n errors.push(errorMessage);\n }\n } else if (isValueEmpty && !operatorAllowsEmpty) {\n const errorMessage = `Value cannot be empty for field \"${filter.searchField}\".`;\n filter._error = errorMessage;\n errors.push(errorMessage);\n } else if (filter._type === 'guid' && !isValueEmpty && !guidRegex.test(filter.searchValue)) {\n const errorMessage = `Invalid GUID for field \"${filter.searchField}\".`;\n filter._error = errorMessage;\n errors.push(errorMessage);\n }\n });\n\n return { isValid: errors.length === 0, errors: errors };\n }\n\n private handleSearch = () => {\n if (this.isFilterValid && this.filterSave) {\n this.filterSave.emit(this.currentFilterData);\n this.filterString = generateFilterString(this.currentFilterData);\n this.config.collapsible && this.toggleExpanded();\n } else {\n console.warn('Cannot run search: filter is invalid.');\n }\n };\n\n private getNormalizedData(data: Search): Search {\n if (data && data.filterGroups?.length > 0) {\n return data;\n }\n if (data && data.filterElements?.length > 0) {\n const rootGroupId = 1;\n return {\n ...data,\n filterGroups: [\n {\n groupId: rootGroupId,\n parentGroupId: null,\n logicalSearchOperator: data.logicalSearchOperator || 1,\n },\n ],\n filterElements: data.filterElements.map(el => ({ ...el, groupId: rootGroupId })),\n };\n }\n // Return a default structure if the prop is null or empty\n return {\n logicalSearchOperator: 1,\n filterGroups: [{ groupId: 1, parentGroupId: null, logicalSearchOperator: 1 }],\n filterElements: [],\n };\n }\n\n private toggleExpanded = () => {\n this.isExpanded = !this.isExpanded;\n this.updateHostClasses();\n };\n\n private handleToggleAddMenu = (event: CustomEvent<number>) => {\n const groupId = event.detail;\n // If clicking the same button, close the menu. Otherwise, open the new one.\n this.openAddMenuForGroupId = this.openAddMenuForGroupId === groupId ? null : groupId;\n\n if (this.openAddMenuForGroupId !== null) {\n const el = this.animContainerEl;\n if (el) {\n // We use requestAnimationFrame to ensure the scroll happens smoothly\n requestAnimationFrame(() => {\n el.scrollTop = el.scrollHeight;\n });\n }\n }\n };\n\n private runUpdateCycle(mutator: (data: Search) => void) {\n // Create a deep clone to avoid mutating the prop directly\n const newState = JSON.parse(JSON.stringify(this.currentFilterData));\n\n // Apply the mutations to the new state object\n mutator(newState);\n\n this.currentFilterData = newState;\n\n const validationResult = this.verifyFilterState(this.currentFilterData);\n this.isFilterValid = validationResult.isValid;\n this.errorMessages = validationResult.errors;\n\n this.change.emit(newState);\n }\n\n // --- Data Manipulation Methods ---\n\n private handleDrop = (event: CustomEvent<{ event: DragEvent; targetFilterId: string }>) => {\n const dragEvent = event.detail.event;\n const droppedOnFilterId = event.detail.targetFilterId;\n\n // Get the dragged filter's ID from the dataTransfer object\n const draggedFilterId = dragEvent.dataTransfer.getData('text/plain');\n\n if (!draggedFilterId || draggedFilterId === droppedOnFilterId) {\n return;\n }\n\n this.runUpdateCycle(newState => {\n const elements = newState.filterElements;\n const draggedItem = elements.find(f => f._id === draggedFilterId);\n if (!draggedItem) return;\n\n const fromIndex = elements.findIndex(f => f._id === draggedFilterId);\n const toIndex = elements.findIndex(f => f._id === droppedOnFilterId);\n\n elements.splice(fromIndex, 1);\n elements.splice(toIndex, 0, draggedItem);\n });\n };\n\n private handleAddFilter = (groupId: number) => {\n this.runUpdateCycle(newState => {\n const defaultField = this.fields?.[0];\n const allowedOperators = getAllowedSearchOperators(defaultField);\n const defaultOperator = allowedOperators?.[0]?.value || '';\n newState.filterElements.push({\n _id: `filter_${Math.random()}`,\n _type: defaultField?.type,\n groupId: groupId,\n searchField: defaultField?.name,\n searchOperator: defaultOperator, // Use the new default operator\n searchValue: '',\n });\n });\n this.openAddMenuForGroupId = null;\n };\n\n private handleAddGroup = (parentGroupId: number) => {\n this.runUpdateCycle(newState => {\n newState.filterGroups.push({\n groupId: this.nextGroupId++,\n parentGroupId: parentGroupId,\n logicalSearchOperator: 1,\n });\n });\n this.openAddMenuForGroupId = null;\n };\n\n private handleRemoveFilter = (filterId: string) => {\n this.runUpdateCycle(newState => {\n const index = newState.filterElements.findIndex(f => f._id === filterId);\n if (index > -1) newState.filterElements.splice(index, 1);\n });\n };\n\n private handleRemoveGroup = (groupIdToRemove: number) => {\n this.runUpdateCycle(newState => {\n const findDescendantGroupIds = (parentGroupId: number): number[] => {\n const children = newState.filterGroups.filter(g => g.parentGroupId === parentGroupId);\n let allDescendants = children.map(c => c.groupId);\n children.forEach(c => {\n allDescendants = [...allDescendants, ...findDescendantGroupIds(c.groupId)];\n });\n return allDescendants;\n };\n const allIdsToRemove = [groupIdToRemove, ...findDescendantGroupIds(groupIdToRemove)];\n newState.filterGroups = newState.filterGroups.filter(\n g => !allIdsToRemove.includes(g.groupId),\n );\n newState.filterElements = newState.filterElements.filter(\n f => !allIdsToRemove.includes(f.groupId),\n );\n });\n };\n\n private handleFilterChange = (event: CustomEvent) => {\n const { filterId, field, value, updates } = event.detail;\n this.runUpdateCycle(newState => {\n const filter = newState.filterElements.find(f => f._id === filterId);\n if (filter) {\n if (updates) {\n // If there are multiple updates, apply them all\n Object.assign(filter, updates);\n } else {\n // Otherwise, apply the single update\n filter[field] = value;\n }\n }\n });\n };\n\n private handleGroupChange = (event: CustomEvent) => {\n const { groupId, logicalSearchOperator } = event.detail;\n this.runUpdateCycle(newState => {\n const group = newState.filterGroups.find(g => g.groupId === groupId);\n if (group) group.logicalSearchOperator = logicalSearchOperator;\n });\n };\n\n private isDescendant(targetGroupId: number, draggedGroupId: number, allGroups: any[]): boolean {\n let currentGroup = allGroups.find(g => g.groupId === targetGroupId);\n // Traverse up the tree from the target\n while (currentGroup && currentGroup.parentGroupId !== null) {\n // If we find the dragged group in the ancestry, it's a descendant\n if (currentGroup.parentGroupId === draggedGroupId) {\n return true;\n }\n currentGroup = allGroups.find(g => g.groupId === currentGroup.parentGroupId);\n }\n return false;\n }\n\n private handleDropOnGroup = (event: CustomEvent<{ event: DragEvent; targetGroupId: number }>) => {\n const dragEvent = event.detail.event;\n const targetGroupId = event.detail.targetGroupId;\n\n // Read the type and ID from the dataTransfer object\n const dragType = dragEvent.dataTransfer.getData('application/drag-type');\n const draggedId = dragEvent.dataTransfer.getData('text/plain');\n\n if (!draggedId) return;\n\n this.runUpdateCycle(newState => {\n // --- Handle a dropped FILTER ---\n if (dragType === 'filter') {\n const draggedFilter = newState.filterElements.find(f => f._id === draggedId);\n if (draggedFilter && draggedFilter.groupId !== targetGroupId) {\n draggedFilter.groupId = targetGroupId;\n }\n }\n // --- Handle a dropped GROUP ---\n else if (dragType === 'group') {\n const draggedGroupId = parseInt(draggedId, 10);\n const draggedGroup = newState.filterGroups.find(g => g.groupId === draggedGroupId);\n\n // Safety checks:\n // 1. Can't drop a group on itself.\n // 2. Can't drop a group into its current parent.\n // 3. Can't drop a group into one of its own descendants.\n if (\n draggedGroup &&\n draggedGroupId !== targetGroupId &&\n draggedGroup.parentGroupId !== targetGroupId &&\n !this.isDescendant(targetGroupId, draggedGroupId, newState.filterGroups)\n ) {\n // If all checks pass, update the group's parentGroupId\n draggedGroup.parentGroupId = targetGroupId;\n }\n }\n });\n };\n\n render() {\n const rootGroup = this.currentFilterData.filterGroups.find(g => g.parentGroupId === null);\n\n const isCollapsible = this.config.collapsible === true;\n const isResizable = this.config.resizable !== false;\n const showFooter = this.config.showFooter !== false;\n\n const containerClasses = {\n 'advanced-filter-container': true,\n 'is-expanded': this.isExpanded,\n };\n\n const hostStyles = {};\n // Only apply a height style when the component is expanded\n if (this.isExpanded && this.config.height) {\n // If not resizable, this will be the fixed height.\n // If resizable, this will be the initial height, constrained by the CSS.\n hostStyles['height'] = this.config.height;\n }\n\n return (\n <Host\n style={hostStyles}\n class={{\n 'is-resizable': isResizable,\n 'host-expanded': this.isExpanded,\n 'host-collapsed': !this.isExpanded,\n }}\n >\n <div class={containerClasses}>\n {isCollapsible && (\n <div class=\"collapsed-view\">\n <input type=\"text\" readonly value={this.filterString} class=\"string-display-input\" />\n <custom-button\n class=\"toggle-button\"\n size=\"short\"\n variant=\"text\"\n handleClick={this.toggleExpanded}\n >\n <span>{this.isExpanded ? 'Collapse' : 'Expand'}</span>\n <svg class=\"toggle-icon\" viewBox=\"0 0 16 16\">\n <path d=\"M4 6L8 10L12 6\" stroke=\"currentColor\" stroke-width=\"2\" />\n </svg>\n </custom-button>\n </div>\n )}\n <div class=\"anim-container\" ref={el => (this.animContainerEl = el)}>\n <div class=\"content-wrapper\">\n {(this.isExpanded || !isCollapsible) && rootGroup && (\n <filter-group\n key={rootGroup.groupId}\n groupId={rootGroup.groupId}\n filterData={this.currentFilterData}\n fields={this.fields}\n isRoot={true}\n onAddFilter={e => this.handleAddFilter(e.detail)}\n onAddGroup={e => this.handleAddGroup(e.detail)}\n onRemoveFilter={e => this.handleRemoveFilter(e.detail)}\n onRemoveGroup={e => this.handleRemoveGroup(e.detail)}\n onFilterChange={this.handleFilterChange}\n onGroupChange={this.handleGroupChange}\n onDropOnFilter={this.handleDrop}\n openAddMenuForGroupId={this.openAddMenuForGroupId}\n onToggleAddMenu={this.handleToggleAddMenu}\n onDropOnGroup={this.handleDropOnGroup}\n />\n )}\n </div>\n </div>\n {showFooter && (\n <div class=\"advanced-filter-footer\">\n <validation-chip isValid={this.isFilterValid} errorMessages={this.errorMessages} />\n <udp-button\n disabled={!this.isFilterValid}\n onClick={this.handleSearch}\n variant=\"contained\"\n >\n Search\n </udp-button>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advanced-search-builder.entry.cjs.js","sources":["src/components/my-component/UI/advanced-search-builder/helperFunctions/createStringFromSearchObject.ts","src/components/my-component/UI/advanced-search-builder/advanced-search-builder.css?tag=advanced-search-builder&encapsulation=shadow","src/components/my-component/UI/advanced-search-builder/advanced-search-builder.tsx"],"sourcesContent":["import { Search } from '../../../../../udp-utilities/interfaces/searchObject';\n\nexport const generateFilterString = (data: Search ): string => {\n // Return an empty string if there's no data or no groups\n if (!data || !data.filterGroups || data.filterGroups.length === 0) {\n return '';\n }\n\n // Recursive helper function to build the string for a given group\n const buildStringForGroup = (groupId: number): string => {\n const groupInfo = data.filterGroups.find(g => g.groupId === groupId);\n if (!groupInfo) return '';\n\n const logicalOperator = groupInfo.logicalSearchOperator === 1 ? 'AND' : 'OR';\n const parts = [];\n\n // 1. Process all filters in this group\n const filtersInGroup = data.filterElements.filter(f => f.groupId === groupId);\n filtersInGroup.forEach(filter => {\n // Add quotes around string values\n const value =\n typeof filter.searchValue === 'string' ? `\"${filter.searchValue}\"` : filter.searchValue;\n parts.push(`[${filter.searchField}] ${filter.searchOperator} ${value}`);\n });\n\n // 2. Process all subgroups by calling this function recursively\n const subGroups = data.filterGroups.filter(g => g.parentGroupId === groupId);\n subGroups.forEach(subGroup => {\n const subGroupString = buildStringForGroup(subGroup.groupId);\n // Only add the part if the subgroup is not empty\n if (subGroupString) {\n parts.push(`(${subGroupString})`);\n }\n });\n\n // 3. Join all the parts together with the correct operator\n return parts.join(` ${logicalOperator} `);\n };\n\n // Find the root group (the one with no parent) and start the process\n const rootGroup = data.filterGroups.find(g => g.parentGroupId === null);\n return rootGroup ? buildStringForGroup(rootGroup.groupId) : '';\n }\n",":host {\n display: flex;\n flex-direction: column;\n font-family: sans-serif;\n border: 1px solid #ccc;\n border-radius: 4px;\n background: white;\n margin: 3px;\n box-sizing: border-box;\n overflow: visible;\n}\n\n/* --- Host State Styles --- */\n:host(.host-collapsed) {\n resize: none;\n height: auto;\n}\n\n:host(.host-expanded) {\n overflow-y: auto;\n}\n\n:host(.is-resizable.host-expanded) {\n resize: vertical;\n min-height: 180px;\n max-height: 80vh;\n overflow: auto;\n}\n\n/* --- Main Layout --- */\n.advanced-filter-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n overflow: hidden;\n}\n\n.collapsed-view {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 10px;\n border-bottom: 1px solid #eee;\n}\n\n.anim-container {\n flex-grow: 1;\n overflow-y: auto;\n overflow-x: auto;\n display: flex;\n}\n\n.content-wrapper {\n padding-bottom: 15px;\n flex-grow: 1;\n}\n\n.advanced-filter-footer {\n display: flex;\n justify-content: flex-end;\n border-top: 1px solid #eee;\n padding: 10px;\n flex-shrink: 0;\n gap: 10px;\n align-items: center;\n}\n\n/* --- Input & Button Styles --- */\n.string-display-input {\n width: 100%;\n padding: 8px;\n border: 1px solid #ccc;\n border-radius: 4px;\n background-color: #f5f5f5;\n box-sizing: border-box;\n cursor: default;\n user-select: none;\n}\n\n.string-display-input:focus {\n outline: none;\n}\n\n.search-button {\n opacity: 0;\n transform: scale(0.95);\n pointer-events: none;\n margin-right: 10px;\n}\n\n/* --- Animation & Visibility Rules --- */\n\n/* When EXPANDED, show the content */\n.advanced-filter-container.is-expanded .anim-container {\n overflow-y: auto;\n min-height: 130px;\n}\n\n.advanced-filter-container.is-expanded .collapsed-view {\n display: none;\n}\n\n.advanced-filter-container.is-expanded .search-button {\n opacity: 1;\n transform: scale(1);\n pointer-events: auto;\n}\n\n/* When COLLAPSED, hide the content */\n.advanced-filter-container:not(.is-expanded) .anim-container {\n max-height: 0;\n min-height: 0;\n overflow: hidden;\n}\n\n.advanced-filter-container:not(.is-expanded) .advanced-filter-footer {\n opacity: 0;\n height: 0;\n padding: 0;\n border: none;\n pointer-events: none;\n overflow: hidden;\n}\n","import { Component, h, Prop, State, Event, EventEmitter, Element, Host } from '@stencil/core';\nimport { Field } from './models';\nimport { generateFilterString } from './helperFunctions/createStringFromSearchObject';\nimport { Search } from '../../../../udp-utilities/interfaces/searchObject';\nimport { AdvancedFilterConfig } from './models';\nimport { getAllowedSearchOperators } from './helperFunctions/udpOperatorHelper';\n\n/**\n * A powerful and configurable component for building complex data queries.\n * It provides a user-friendly UI for adding filters and logical groups,\n * and emits the resulting search object for use in data grids or API calls.\n *\n * @example\n * <advanced-search-builder\n * fields={myFields}\n * initialFilterData={myFilter}\n * config={{ collapsible: false }}\n * onFilterSave={(e) => handleSearch(e.detail)}\n * onChange={(e) => console.log('Current state:', e.detail)}\n * />\n */\n\n@Component({\n tag: 'advanced-search-builder',\n styleUrl: 'advanced-search-builder.css',\n shadow: true,\n})\nexport class AdvancedSearchBuilder {\n /**\n * An array of `Field` objects that defines the available options in the\n * \"Fields\" dropdown. This can be a nested structure for expandable fields.\n */\n @Prop() fields: Field[] = [];\n\n /**\n * The initial state of the filter. The component uses this to build the\n * initial UI and manages its state internally thereafter.\n */\n @Prop() initialFilterData: Search;\n\n /**\n * A configuration object to control optional features of the component,\n * such as enabling or disabling the collapsible and resizable behaviors.\n */\n @Prop() config: AdvancedFilterConfig = {};\n\n /**\n * Emitted only when the user clicks the \"Search\" button in the footer.\n * This represents the final, committed filter state.\n *\n * @event filterSave\n * @param {Search} searchData - The complete, final search object.\n */\n @Event() filterSave: EventEmitter<Search>; //fires when the \"Search\" button is clicked\n\n /**\n * Emitted on every single change to the filter data (e.g., typing in a\n * value, changing an operator). This is useful for real-time feedback.\n *\n * @event change\n * @param {Search} searchData - The complete, up-to-the-minute search object.\n */\n @Event() change: EventEmitter<Search>;\n\n @State() private openAddMenuForGroupId: number | null = null;\n @State() filterString: string = '';\n @State() private isExpanded: boolean = true;\n\n @State() private currentFilterData: Search;\n @State() private isFilterValid: boolean = true;\n @State() private errorMessages: string[] = [];\n\n private nextGroupId = 1;\n private animContainerEl: HTMLElement;\n @Element() private el: HTMLElement;\n\n componentWillLoad() {\n // Initialize the internal state from the prop\n this.currentFilterData = this.getNormalizedData(this.initialFilterData);\n this.updateNextGroupId(this.currentFilterData);\n }\n\n componentDidLoad() {\n this.updateHostClasses();\n }\n\n private updateHostClasses() {\n if (this.isExpanded) {\n this.el.classList.add('host-expanded');\n this.el.classList.remove('host-collapsed');\n } else {\n this.el.classList.add('host-collapsed');\n this.el.classList.remove('host-expanded');\n this.el.style.height = null;\n }\n }\n\n private updateNextGroupId(data: Search) {\n // Check if there are any groups to scan\n if (data && data.filterGroups.length > 0) {\n // Find the highest existing groupId and add 1\n this.nextGroupId = Math.max(...data.filterGroups.map(g => g.groupId)) + 1;\n } else {\n // If there are no groups, start with 2 (since the default root is 1)\n this.nextGroupId = 2;\n }\n }\n\n private verifyFilterState(data: Search): { isValid: boolean; errors: string[] } {\n const errors: string[] = [];\n const guidRegex =\n /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;\n\n data.filterElements.forEach(filter => {\n delete filter._error; // Clear old errors first\n const isSearchFieldEmpty =\n filter.searchField === null ||\n filter.searchField === undefined ||\n filter.searchField === '';\n const isValueEmpty = !filter.searchValue;\n const operatorAllowsEmpty =\n filter.searchOperator === 'NULL' || filter.searchOperator === 'NOTNULL';\n\n if (isSearchFieldEmpty) {\n const errorMessage = `Search Field cannot be empty.`;\n filter._error = errorMessage;\n errors.push(errorMessage);\n } else if (filter.searchOperator === 'BETWEEN') {\n const values = (filter.searchValue || '').split(',');\n // Check if we have two values and that neither is an empty string.\n if (values.length !== 2 || !values[0] || !values[1]) {\n const errorMessage = `Two values required when using BETWEEN operator for field \"${filter.searchField}\".`;\n filter._error = errorMessage;\n errors.push(errorMessage);\n }\n } else if (isValueEmpty && !operatorAllowsEmpty) {\n const errorMessage = `Value cannot be empty for field \"${filter.searchField}\".`;\n filter._error = errorMessage;\n errors.push(errorMessage);\n } else if (filter._type === 'guid' && !isValueEmpty && !guidRegex.test(filter.searchValue)) {\n const errorMessage = `Invalid GUID for field \"${filter.searchField}\".`;\n filter._error = errorMessage;\n errors.push(errorMessage);\n }\n });\n\n return { isValid: errors.length === 0, errors: errors };\n }\n\n private handleSearch = () => {\n if (this.isFilterValid && this.filterSave) {\n this.filterSave.emit(this.currentFilterData);\n this.filterString = generateFilterString(this.currentFilterData);\n this.config.collapsible && this.toggleExpanded();\n } else {\n console.warn('Cannot run search: filter is invalid.');\n }\n };\n\n private getNormalizedData(data: Search): Search {\n if (data && data.filterGroups?.length > 0) {\n return data;\n }\n if (data && data.filterElements?.length > 0) {\n const rootGroupId = 1;\n return {\n ...data,\n filterGroups: [\n {\n groupId: rootGroupId,\n parentGroupId: null,\n logicalSearchOperator: data.logicalSearchOperator || 1,\n },\n ],\n filterElements: data.filterElements.map(el => ({ ...el, groupId: rootGroupId })),\n };\n }\n // Return a default structure if the prop is null or empty\n return {\n logicalSearchOperator: 1,\n filterGroups: [{ groupId: 1, parentGroupId: null, logicalSearchOperator: 1 }],\n filterElements: [],\n };\n }\n\n private toggleExpanded = () => {\n this.isExpanded = !this.isExpanded;\n this.updateHostClasses();\n };\n\n private handleToggleAddMenu = (event: CustomEvent<number>) => {\n const groupId = event.detail;\n // If clicking the same button, close the menu. Otherwise, open the new one.\n this.openAddMenuForGroupId = this.openAddMenuForGroupId === groupId ? null : groupId;\n\n if (this.openAddMenuForGroupId !== null) {\n const el = this.animContainerEl;\n if (el) {\n // We use requestAnimationFrame to ensure the scroll happens smoothly\n requestAnimationFrame(() => {\n el.scrollTop = el.scrollHeight;\n });\n }\n }\n };\n\n private runUpdateCycle(mutator: (data: Search) => void) {\n // Create a deep clone to avoid mutating the prop directly\n const newState = JSON.parse(JSON.stringify(this.currentFilterData));\n\n // Apply the mutations to the new state object\n mutator(newState);\n\n this.currentFilterData = newState;\n\n const validationResult = this.verifyFilterState(this.currentFilterData);\n this.isFilterValid = validationResult.isValid;\n this.errorMessages = validationResult.errors;\n\n this.change.emit(newState);\n }\n\n // --- Data Manipulation Methods ---\n\n private handleDrop = (event: CustomEvent<{ event: DragEvent; targetFilterId: string }>) => {\n const dragEvent = event.detail.event;\n const droppedOnFilterId = event.detail.targetFilterId;\n\n // Get the dragged filter's ID from the dataTransfer object\n const draggedFilterId = dragEvent.dataTransfer.getData('text/plain');\n\n if (!draggedFilterId || draggedFilterId === droppedOnFilterId) {\n return;\n }\n\n this.runUpdateCycle(newState => {\n const elements = newState.filterElements;\n const draggedItem = elements.find(f => f._id === draggedFilterId);\n if (!draggedItem) return;\n\n const fromIndex = elements.findIndex(f => f._id === draggedFilterId);\n const toIndex = elements.findIndex(f => f._id === droppedOnFilterId);\n\n elements.splice(fromIndex, 1);\n elements.splice(toIndex, 0, draggedItem);\n });\n };\n\n private handleAddFilter = (groupId: number) => {\n this.runUpdateCycle(newState => {\n const defaultField = this.fields?.[0];\n const allowedOperators = getAllowedSearchOperators(defaultField);\n const defaultOperator = allowedOperators?.[0]?.value || '';\n newState.filterElements.push({\n _id: `filter_${Math.random()}`,\n _type: defaultField?.type,\n groupId: groupId,\n searchField: defaultField?.name,\n searchOperator: defaultOperator, // Use the new default operator\n searchValue: '',\n });\n });\n this.openAddMenuForGroupId = null;\n };\n\n private handleAddGroup = (parentGroupId: number) => {\n this.runUpdateCycle(newState => {\n newState.filterGroups.push({\n groupId: this.nextGroupId++,\n parentGroupId: parentGroupId,\n logicalSearchOperator: 1,\n });\n });\n this.openAddMenuForGroupId = null;\n };\n\n private handleRemoveFilter = (filterId: string) => {\n this.runUpdateCycle(newState => {\n const index = newState.filterElements.findIndex(f => f._id === filterId);\n if (index > -1) newState.filterElements.splice(index, 1);\n });\n };\n\n private handleRemoveGroup = (groupIdToRemove: number) => {\n this.runUpdateCycle(newState => {\n const findDescendantGroupIds = (parentGroupId: number): number[] => {\n const children = newState.filterGroups.filter(g => g.parentGroupId === parentGroupId);\n let allDescendants = children.map(c => c.groupId);\n children.forEach(c => {\n allDescendants = [...allDescendants, ...findDescendantGroupIds(c.groupId)];\n });\n return allDescendants;\n };\n const allIdsToRemove = [groupIdToRemove, ...findDescendantGroupIds(groupIdToRemove)];\n newState.filterGroups = newState.filterGroups.filter(\n g => !allIdsToRemove.includes(g.groupId),\n );\n newState.filterElements = newState.filterElements.filter(\n f => !allIdsToRemove.includes(f.groupId),\n );\n });\n };\n\n private handleFilterChange = (event: CustomEvent) => {\n const { filterId, field, value, updates } = event.detail;\n this.runUpdateCycle(newState => {\n const filter = newState.filterElements.find(f => f._id === filterId);\n if (filter) {\n if (updates) {\n // If there are multiple updates, apply them all\n Object.assign(filter, updates);\n } else {\n // Otherwise, apply the single update\n filter[field] = value;\n }\n }\n });\n };\n\n private handleGroupChange = (event: CustomEvent) => {\n const { groupId, logicalSearchOperator } = event.detail;\n this.runUpdateCycle(newState => {\n const group = newState.filterGroups.find(g => g.groupId === groupId);\n if (group) group.logicalSearchOperator = logicalSearchOperator;\n });\n };\n\n private isDescendant(targetGroupId: number, draggedGroupId: number, allGroups: any[]): boolean {\n let currentGroup = allGroups.find(g => g.groupId === targetGroupId);\n // Traverse up the tree from the target\n while (currentGroup && currentGroup.parentGroupId !== null) {\n // If we find the dragged group in the ancestry, it's a descendant\n if (currentGroup.parentGroupId === draggedGroupId) {\n return true;\n }\n currentGroup = allGroups.find(g => g.groupId === currentGroup.parentGroupId);\n }\n return false;\n }\n\n private handleDropOnGroup = (event: CustomEvent<{ event: DragEvent; targetGroupId: number }>) => {\n const dragEvent = event.detail.event;\n const targetGroupId = event.detail.targetGroupId;\n\n // Read the type and ID from the dataTransfer object\n const dragType = dragEvent.dataTransfer.getData('application/drag-type');\n const draggedId = dragEvent.dataTransfer.getData('text/plain');\n\n if (!draggedId) return;\n\n this.runUpdateCycle(newState => {\n // --- Handle a dropped FILTER ---\n if (dragType === 'filter') {\n const draggedFilter = newState.filterElements.find(f => f._id === draggedId);\n if (draggedFilter && draggedFilter.groupId !== targetGroupId) {\n draggedFilter.groupId = targetGroupId;\n }\n }\n // --- Handle a dropped GROUP ---\n else if (dragType === 'group') {\n const draggedGroupId = parseInt(draggedId, 10);\n const draggedGroup = newState.filterGroups.find(g => g.groupId === draggedGroupId);\n\n // Safety checks:\n // 1. Can't drop a group on itself.\n // 2. Can't drop a group into its current parent.\n // 3. Can't drop a group into one of its own descendants.\n if (\n draggedGroup &&\n draggedGroupId !== targetGroupId &&\n draggedGroup.parentGroupId !== targetGroupId &&\n !this.isDescendant(targetGroupId, draggedGroupId, newState.filterGroups)\n ) {\n // If all checks pass, update the group's parentGroupId\n draggedGroup.parentGroupId = targetGroupId;\n }\n }\n });\n };\n\n render() {\n const rootGroup = this.currentFilterData.filterGroups.find(g => g.parentGroupId === null);\n\n const isCollapsible = this.config.collapsible === true;\n const isResizable = this.config.resizable !== false;\n const showFooter = this.config.showFooter !== false;\n\n const containerClasses = {\n 'advanced-filter-container': true,\n 'is-expanded': this.isExpanded,\n };\n\n const hostStyles = {};\n // Only apply a height style when the component is expanded\n if (this.isExpanded && this.config.height) {\n // If not resizable, this will be the fixed height.\n // If resizable, this will be the initial height, constrained by the CSS.\n hostStyles['height'] = this.config.height;\n }\n\n return (\n <Host\n style={hostStyles}\n class={{\n 'is-resizable': isResizable,\n 'host-expanded': this.isExpanded,\n 'host-collapsed': !this.isExpanded,\n }}\n >\n <div class={containerClasses}>\n {isCollapsible && (\n <div class=\"collapsed-view\">\n <input type=\"text\" readonly value={this.filterString} class=\"string-display-input\" />\n <custom-button\n class=\"toggle-button\"\n size=\"short\"\n variant=\"text\"\n handleClick={this.toggleExpanded}\n >\n <span>{this.isExpanded ? 'Collapse' : 'Expand'}</span>\n <svg class=\"toggle-icon\" viewBox=\"0 0 16 16\">\n <path d=\"M4 6L8 10L12 6\" stroke=\"currentColor\" stroke-width=\"2\" />\n </svg>\n </custom-button>\n </div>\n )}\n <div class=\"anim-container\" ref={el => (this.animContainerEl = el)}>\n <div class=\"content-wrapper\">\n {(this.isExpanded || !isCollapsible) && rootGroup && (\n <filter-group\n key={rootGroup.groupId}\n groupId={rootGroup.groupId}\n filterData={this.currentFilterData}\n fields={this.fields}\n isRoot={true}\n onAddFilter={e => this.handleAddFilter(e.detail)}\n onAddGroup={e => this.handleAddGroup(e.detail)}\n onRemoveFilter={e => this.handleRemoveFilter(e.detail)}\n onRemoveGroup={e => this.handleRemoveGroup(e.detail)}\n onFilterChange={this.handleFilterChange}\n onGroupChange={this.handleGroupChange}\n onDropOnFilter={this.handleDrop}\n openAddMenuForGroupId={this.openAddMenuForGroupId}\n onToggleAddMenu={this.handleToggleAddMenu}\n onDropOnGroup={this.handleDropOnGroup}\n />\n )}\n </div>\n </div>\n {showFooter && (\n <div class=\"advanced-filter-footer\">\n <validation-chip isValid={this.isFilterValid} errorMessages={this.errorMessages} />\n <udp-button\n disabled={!this.isFilterValid}\n onClick={this.handleSearch}\n variant=\"contained\"\n >\n Search\n </udp-button>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"names":["getAllowedSearchOperators","h","Host"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"advanced-search-builder.entry.cjs.js","sources":["src/components/my-component/UI/advanced-search-builder/helperFunctions/createStringFromSearchObject.ts","src/components/my-component/UI/advanced-search-builder/advanced-search-builder.css?tag=advanced-search-builder&encapsulation=shadow","src/components/my-component/UI/advanced-search-builder/advanced-search-builder.tsx"],"sourcesContent":["import { Search } from '../../../../../udp-utilities/interfaces/searchObject';\n\nexport const generateFilterString = (data: Search ): string => {\n // Return an empty string if there's no data or no groups\n if (!data || !data.filterGroups || data.filterGroups.length === 0) {\n return '';\n }\n\n // Recursive helper function to build the string for a given group\n const buildStringForGroup = (groupId: number): string => {\n const groupInfo = data.filterGroups.find(g => g.groupId === groupId);\n if (!groupInfo) return '';\n\n const logicalOperator = groupInfo.logicalSearchOperator === 1 ? 'AND' : 'OR';\n const parts = [];\n\n // 1. Process all filters in this group\n const filtersInGroup = data.filterElements.filter(f => f.groupId === groupId);\n filtersInGroup.forEach(filter => {\n // Add quotes around string values\n const value =\n typeof filter.searchValue === 'string' ? `\"${filter.searchValue}\"` : filter.searchValue;\n parts.push(`[${filter.searchField}] ${filter.searchOperator} ${value}`);\n });\n\n // 2. Process all subgroups by calling this function recursively\n const subGroups = data.filterGroups.filter(g => g.parentGroupId === groupId);\n subGroups.forEach(subGroup => {\n const subGroupString = buildStringForGroup(subGroup.groupId);\n // Only add the part if the subgroup is not empty\n if (subGroupString) {\n parts.push(`(${subGroupString})`);\n }\n });\n\n // 3. Join all the parts together with the correct operator\n return parts.join(` ${logicalOperator} `);\n };\n\n // Find the root group (the one with no parent) and start the process\n const rootGroup = data.filterGroups.find(g => g.parentGroupId === null);\n return rootGroup ? buildStringForGroup(rootGroup.groupId) : '';\n }\n",":host {\n display: flex;\n flex-direction: column;\n font-family: sans-serif;\n /* border: 1px solid #ccc; */\n /* border-radius: 4px; */\n /* background: white; */\n /* margin: 3px; */\n box-sizing: border-box;\n overflow: visible;\n}\n\n/* --- Host State Styles --- */\n:host(.host-collapsed) {\n resize: none;\n height: auto;\n}\n\n:host(.host-expanded) {\n overflow-y: auto;\n}\n\n:host(.is-resizable.host-expanded) {\n resize: vertical;\n min-height: 180px;\n max-height: 80vh;\n overflow: auto;\n}\n\n/* --- Main Layout --- */\n.advanced-filter-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n overflow: hidden;\n}\n\n.collapsed-view {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 10px;\n border-bottom: 1px solid #eee;\n}\n\n.anim-container {\n flex-grow: 1;\n overflow-y: auto;\n overflow-x: auto;\n display: flex;\n}\n\n.content-wrapper {\n padding-bottom: 15px;\n flex-grow: 1;\n}\n\n.advanced-filter-footer {\n display: flex;\n justify-content: flex-end;\n border-top: 1px solid #eee;\n padding: 10px;\n flex-shrink: 0;\n gap: 10px;\n align-items: center;\n}\n\n/* --- Input & Button Styles --- */\n.string-display-input {\n width: 100%;\n padding: 8px;\n border: 1px solid #ccc;\n border-radius: 4px;\n background-color: #f5f5f5;\n box-sizing: border-box;\n cursor: default;\n user-select: none;\n}\n\n.string-display-input:focus {\n outline: none;\n}\n\n.search-button {\n opacity: 0;\n transform: scale(0.95);\n pointer-events: none;\n margin-right: 10px;\n}\n\n/* --- Animation & Visibility Rules --- */\n\n/* When EXPANDED, show the content */\n.advanced-filter-container.is-expanded .anim-container {\n overflow-y: auto;\n min-height: 130px;\n}\n\n.advanced-filter-container.is-expanded .collapsed-view {\n display: none;\n}\n\n.advanced-filter-container.is-expanded .search-button {\n opacity: 1;\n transform: scale(1);\n pointer-events: auto;\n}\n\n/* When COLLAPSED, hide the content */\n.advanced-filter-container:not(.is-expanded) .anim-container {\n max-height: 0;\n min-height: 0;\n overflow: hidden;\n}\n\n.advanced-filter-container:not(.is-expanded) .advanced-filter-footer {\n opacity: 0;\n height: 0;\n padding: 0;\n border: none;\n pointer-events: none;\n overflow: hidden;\n}\n","import { Component, h, Prop, State, Event, EventEmitter, Element, Host } from '@stencil/core';\nimport { Field } from './models';\nimport { generateFilterString } from './helperFunctions/createStringFromSearchObject';\nimport { Search } from '../../../../udp-utilities/interfaces/searchObject';\nimport { AdvancedFilterConfig } from './models';\nimport { getAllowedSearchOperators } from './helperFunctions/udpOperatorHelper';\n\n/**\n * A powerful and configurable component for building complex data queries.\n * It provides a user-friendly UI for adding filters and logical groups,\n * and emits the resulting search object for use in data grids or API calls.\n *\n * @example\n * <advanced-search-builder\n * fields={myFields}\n * initialFilterData={myFilter}\n * config={{ collapsible: false }}\n * onFilterSave={(e) => handleSearch(e.detail)}\n * onChange={(e) => console.log('Current state:', e.detail)}\n * />\n */\n\n@Component({\n tag: 'advanced-search-builder',\n styleUrl: 'advanced-search-builder.css',\n shadow: true,\n})\nexport class AdvancedSearchBuilder {\n /**\n * An array of `Field` objects that defines the available options in the\n * \"Fields\" dropdown. This can be a nested structure for expandable fields.\n */\n @Prop() fields: Field[] = [];\n\n /**\n * The initial state of the filter. The component uses this to build the\n * initial UI and manages its state internally thereafter.\n */\n @Prop() initialFilterData: Search;\n\n /**\n * A configuration object to control optional features of the component,\n * such as enabling or disabling the collapsible and resizable behaviors.\n */\n @Prop() config: AdvancedFilterConfig = {};\n\n /**\n * Emitted only when the user clicks the \"Search\" button in the footer.\n * This represents the final, committed filter state.\n *\n * @event filterSave\n * @param {Search} searchData - The complete, final search object.\n */\n @Event() filterSave: EventEmitter<Search>; //fires when the \"Search\" button is clicked\n\n /**\n * Emitted on every single change to the filter data (e.g., typing in a\n * value, changing an operator). This is useful for real-time feedback.\n *\n * @event change\n * @param {Search} searchData - The complete, up-to-the-minute search object.\n */\n @Event() change: EventEmitter<Search>;\n\n @State() private openAddMenuForGroupId: number | null = null;\n @State() filterString: string = '';\n @State() private isExpanded: boolean = true;\n\n @State() private currentFilterData: Search;\n @State() private isFilterValid: boolean = true;\n @State() private errorMessages: string[] = [];\n\n private nextGroupId = 1;\n private animContainerEl: HTMLElement;\n @Element() private el: HTMLElement;\n\n componentWillLoad() {\n // Initialize the internal state from the prop\n this.currentFilterData = this.getNormalizedData(this.initialFilterData);\n this.updateNextGroupId(this.currentFilterData);\n }\n\n componentDidLoad() {\n this.updateHostClasses();\n }\n\n private updateHostClasses() {\n if (this.isExpanded) {\n this.el.classList.add('host-expanded');\n this.el.classList.remove('host-collapsed');\n } else {\n this.el.classList.add('host-collapsed');\n this.el.classList.remove('host-expanded');\n this.el.style.height = null;\n }\n }\n\n private updateNextGroupId(data: Search) {\n // Check if there are any groups to scan\n if (data && data.filterGroups.length > 0) {\n // Find the highest existing groupId and add 1\n this.nextGroupId = Math.max(...data.filterGroups.map(g => g.groupId)) + 1;\n } else {\n // If there are no groups, start with 2 (since the default root is 1)\n this.nextGroupId = 2;\n }\n }\n\n private verifyFilterState(data: Search): { isValid: boolean; errors: string[] } {\n const errors: string[] = [];\n const guidRegex =\n /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;\n\n data.filterElements.forEach(filter => {\n delete filter._error; // Clear old errors first\n const isSearchFieldEmpty =\n filter.searchField === null ||\n filter.searchField === undefined ||\n filter.searchField === '';\n const isValueEmpty = !filter.searchValue;\n const operatorAllowsEmpty =\n filter.searchOperator === 'NULL' || filter.searchOperator === 'NOTNULL';\n\n if (isSearchFieldEmpty) {\n const errorMessage = `Search Field cannot be empty.`;\n filter._error = errorMessage;\n errors.push(errorMessage);\n } else if (filter.searchOperator === 'BETWEEN') {\n const values = (filter.searchValue || '').split(',');\n // Check if we have two values and that neither is an empty string.\n if (values.length !== 2 || !values[0] || !values[1]) {\n const errorMessage = `Two values required when using BETWEEN operator for field \"${filter.searchField}\".`;\n filter._error = errorMessage;\n errors.push(errorMessage);\n }\n } else if (isValueEmpty && !operatorAllowsEmpty) {\n const errorMessage = `Value cannot be empty for field \"${filter.searchField}\".`;\n filter._error = errorMessage;\n errors.push(errorMessage);\n } else if (filter._type === 'guid' && !isValueEmpty && !guidRegex.test(filter.searchValue)) {\n const errorMessage = `Invalid GUID for field \"${filter.searchField}\".`;\n filter._error = errorMessage;\n errors.push(errorMessage);\n }\n });\n\n return { isValid: errors.length === 0, errors: errors };\n }\n\n private handleSearch = () => {\n if (this.isFilterValid && this.filterSave) {\n this.filterSave.emit(this.currentFilterData);\n this.filterString = generateFilterString(this.currentFilterData);\n this.config.collapsible && this.toggleExpanded();\n } else {\n console.warn('Cannot run search: filter is invalid.');\n }\n };\n\n private getNormalizedData(data: Search): Search {\n if (data && data.filterGroups?.length > 0) {\n return data;\n }\n if (data && data.filterElements?.length > 0) {\n const rootGroupId = 1;\n return {\n ...data,\n filterGroups: [\n {\n groupId: rootGroupId,\n parentGroupId: null,\n logicalSearchOperator: data.logicalSearchOperator || 1,\n },\n ],\n filterElements: data.filterElements.map(el => ({ ...el, groupId: rootGroupId })),\n };\n }\n // Return a default structure if the prop is null or empty\n return {\n logicalSearchOperator: 1,\n filterGroups: [{ groupId: 1, parentGroupId: null, logicalSearchOperator: 1 }],\n filterElements: [],\n };\n }\n\n private toggleExpanded = () => {\n this.isExpanded = !this.isExpanded;\n this.updateHostClasses();\n };\n\n private handleToggleAddMenu = (event: CustomEvent<number>) => {\n const groupId = event.detail;\n // If clicking the same button, close the menu. Otherwise, open the new one.\n this.openAddMenuForGroupId = this.openAddMenuForGroupId === groupId ? null : groupId;\n\n if (this.openAddMenuForGroupId !== null) {\n const el = this.animContainerEl;\n if (el) {\n // We use requestAnimationFrame to ensure the scroll happens smoothly\n requestAnimationFrame(() => {\n el.scrollTop = el.scrollHeight;\n });\n }\n }\n };\n\n private runUpdateCycle(mutator: (data: Search) => void) {\n // Create a deep clone to avoid mutating the prop directly\n const newState = JSON.parse(JSON.stringify(this.currentFilterData));\n\n // Apply the mutations to the new state object\n mutator(newState);\n\n this.currentFilterData = newState;\n\n const validationResult = this.verifyFilterState(this.currentFilterData);\n this.isFilterValid = validationResult.isValid;\n this.errorMessages = validationResult.errors;\n\n this.change.emit(newState);\n }\n\n // --- Data Manipulation Methods ---\n\n private handleDrop = (event: CustomEvent<{ event: DragEvent; targetFilterId: string }>) => {\n const dragEvent = event.detail.event;\n const droppedOnFilterId = event.detail.targetFilterId;\n\n // Get the dragged filter's ID from the dataTransfer object\n const draggedFilterId = dragEvent.dataTransfer.getData('text/plain');\n\n if (!draggedFilterId || draggedFilterId === droppedOnFilterId) {\n return;\n }\n\n this.runUpdateCycle(newState => {\n const elements = newState.filterElements;\n const draggedItem = elements.find(f => f._id === draggedFilterId);\n if (!draggedItem) return;\n\n const fromIndex = elements.findIndex(f => f._id === draggedFilterId);\n const toIndex = elements.findIndex(f => f._id === droppedOnFilterId);\n\n elements.splice(fromIndex, 1);\n elements.splice(toIndex, 0, draggedItem);\n });\n };\n\n private handleAddFilter = (groupId: number) => {\n this.runUpdateCycle(newState => {\n const defaultField = this.fields?.[0];\n const allowedOperators = getAllowedSearchOperators(defaultField);\n const defaultOperator = allowedOperators?.[0]?.value || '';\n newState.filterElements.push({\n _id: `filter_${Math.random()}`,\n _type: defaultField?.type,\n groupId: groupId,\n searchField: defaultField?.name,\n searchOperator: defaultOperator, // Use the new default operator\n searchValue: '',\n });\n });\n this.openAddMenuForGroupId = null;\n };\n\n private handleAddGroup = (parentGroupId: number) => {\n this.runUpdateCycle(newState => {\n newState.filterGroups.push({\n groupId: this.nextGroupId++,\n parentGroupId: parentGroupId,\n logicalSearchOperator: 1,\n });\n });\n this.openAddMenuForGroupId = null;\n };\n\n private handleRemoveFilter = (filterId: string) => {\n this.runUpdateCycle(newState => {\n const index = newState.filterElements.findIndex(f => f._id === filterId);\n if (index > -1) newState.filterElements.splice(index, 1);\n });\n };\n\n private handleRemoveGroup = (groupIdToRemove: number) => {\n this.runUpdateCycle(newState => {\n const findDescendantGroupIds = (parentGroupId: number): number[] => {\n const children = newState.filterGroups.filter(g => g.parentGroupId === parentGroupId);\n let allDescendants = children.map(c => c.groupId);\n children.forEach(c => {\n allDescendants = [...allDescendants, ...findDescendantGroupIds(c.groupId)];\n });\n return allDescendants;\n };\n const allIdsToRemove = [groupIdToRemove, ...findDescendantGroupIds(groupIdToRemove)];\n newState.filterGroups = newState.filterGroups.filter(\n g => !allIdsToRemove.includes(g.groupId),\n );\n newState.filterElements = newState.filterElements.filter(\n f => !allIdsToRemove.includes(f.groupId),\n );\n });\n };\n\n private handleFilterChange = (event: CustomEvent) => {\n const { filterId, field, value, updates } = event.detail;\n this.runUpdateCycle(newState => {\n const filter = newState.filterElements.find(f => f._id === filterId);\n if (filter) {\n if (updates) {\n // If there are multiple updates, apply them all\n Object.assign(filter, updates);\n } else {\n // Otherwise, apply the single update\n filter[field] = value;\n }\n }\n });\n };\n\n private handleGroupChange = (event: CustomEvent) => {\n const { groupId, logicalSearchOperator } = event.detail;\n this.runUpdateCycle(newState => {\n const group = newState.filterGroups.find(g => g.groupId === groupId);\n if (group) group.logicalSearchOperator = logicalSearchOperator;\n });\n };\n\n private isDescendant(targetGroupId: number, draggedGroupId: number, allGroups: any[]): boolean {\n let currentGroup = allGroups.find(g => g.groupId === targetGroupId);\n // Traverse up the tree from the target\n while (currentGroup && currentGroup.parentGroupId !== null) {\n // If we find the dragged group in the ancestry, it's a descendant\n if (currentGroup.parentGroupId === draggedGroupId) {\n return true;\n }\n currentGroup = allGroups.find(g => g.groupId === currentGroup.parentGroupId);\n }\n return false;\n }\n\n private handleDropOnGroup = (event: CustomEvent<{ event: DragEvent; targetGroupId: number }>) => {\n const dragEvent = event.detail.event;\n const targetGroupId = event.detail.targetGroupId;\n\n // Read the type and ID from the dataTransfer object\n const dragType = dragEvent.dataTransfer.getData('application/drag-type');\n const draggedId = dragEvent.dataTransfer.getData('text/plain');\n\n if (!draggedId) return;\n\n this.runUpdateCycle(newState => {\n // --- Handle a dropped FILTER ---\n if (dragType === 'filter') {\n const draggedFilter = newState.filterElements.find(f => f._id === draggedId);\n if (draggedFilter && draggedFilter.groupId !== targetGroupId) {\n draggedFilter.groupId = targetGroupId;\n }\n }\n // --- Handle a dropped GROUP ---\n else if (dragType === 'group') {\n const draggedGroupId = parseInt(draggedId, 10);\n const draggedGroup = newState.filterGroups.find(g => g.groupId === draggedGroupId);\n\n // Safety checks:\n // 1. Can't drop a group on itself.\n // 2. Can't drop a group into its current parent.\n // 3. Can't drop a group into one of its own descendants.\n if (\n draggedGroup &&\n draggedGroupId !== targetGroupId &&\n draggedGroup.parentGroupId !== targetGroupId &&\n !this.isDescendant(targetGroupId, draggedGroupId, newState.filterGroups)\n ) {\n // If all checks pass, update the group's parentGroupId\n draggedGroup.parentGroupId = targetGroupId;\n }\n }\n });\n };\n\n render() {\n const rootGroup = this.currentFilterData.filterGroups.find(g => g.parentGroupId === null);\n\n const isCollapsible = this.config.collapsible === true;\n const isResizable = this.config.resizable !== false;\n const showFooter = this.config.showFooter !== false;\n\n const containerClasses = {\n 'advanced-filter-container': true,\n 'is-expanded': this.isExpanded,\n };\n\n const hostStyles = {};\n // Only apply a height style when the component is expanded\n if (this.isExpanded && this.config.height) {\n // If not resizable, this will be the fixed height.\n // If resizable, this will be the initial height, constrained by the CSS.\n hostStyles['height'] = this.config.height;\n }\n\n return (\n <Host\n style={hostStyles}\n class={{\n 'is-resizable': isResizable,\n 'host-expanded': this.isExpanded,\n 'host-collapsed': !this.isExpanded,\n }}\n >\n <div class={containerClasses}>\n {isCollapsible && (\n <div class=\"collapsed-view\">\n <input type=\"text\" readonly value={this.filterString} class=\"string-display-input\" />\n <custom-button\n class=\"toggle-button\"\n size=\"short\"\n variant=\"text\"\n handleClick={this.toggleExpanded}\n >\n <span>{this.isExpanded ? 'Collapse' : 'Expand'}</span>\n <svg class=\"toggle-icon\" viewBox=\"0 0 16 16\">\n <path d=\"M4 6L8 10L12 6\" stroke=\"currentColor\" stroke-width=\"2\" />\n </svg>\n </custom-button>\n </div>\n )}\n <div class=\"anim-container\" ref={el => (this.animContainerEl = el)}>\n <div class=\"content-wrapper\">\n {(this.isExpanded || !isCollapsible) && rootGroup && (\n <filter-group\n key={rootGroup.groupId}\n groupId={rootGroup.groupId}\n filterData={this.currentFilterData}\n fields={this.fields}\n isRoot={true}\n onAddFilter={e => this.handleAddFilter(e.detail)}\n onAddGroup={e => this.handleAddGroup(e.detail)}\n onRemoveFilter={e => this.handleRemoveFilter(e.detail)}\n onRemoveGroup={e => this.handleRemoveGroup(e.detail)}\n onFilterChange={this.handleFilterChange}\n onGroupChange={this.handleGroupChange}\n onDropOnFilter={this.handleDrop}\n openAddMenuForGroupId={this.openAddMenuForGroupId}\n onToggleAddMenu={this.handleToggleAddMenu}\n onDropOnGroup={this.handleDropOnGroup}\n />\n )}\n </div>\n </div>\n {showFooter && (\n <div class=\"advanced-filter-footer\">\n <validation-chip isValid={this.isFilterValid} errorMessages={this.errorMessages} />\n <udp-button\n disabled={!this.isFilterValid}\n onClick={this.handleSearch}\n variant=\"contained\"\n >\n Search\n </udp-button>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"names":["getAllowedSearchOperators","h","Host"],"mappings":"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"}
|