@aquera/nile-elements 1.3.3 → 1.3.4-beta-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/demo/index.html +20 -27
- package/dist/{fixture-1c49c014.cjs.js → fixture-54600b35.cjs.js} +2 -2
- package/dist/{fixture-1c49c014.cjs.js.map → fixture-54600b35.cjs.js.map} +1 -1
- package/dist/fixture-5b79f853.cjs.js +395 -0
- package/dist/fixture-5b79f853.cjs.js.map +1 -0
- package/dist/fixture-73855806.cjs.js +395 -0
- package/dist/fixture-73855806.cjs.js.map +1 -0
- package/dist/fixture-90b199c4.esm.js +569 -0
- package/dist/{fixture-985bba12.esm.js → fixture-9871e8a9.esm.js} +1 -1
- package/dist/fixture-c1d78368.cjs.js +395 -0
- package/dist/fixture-c1d78368.cjs.js.map +1 -0
- package/dist/fixture-cf7bfcf5.esm.js +569 -0
- package/dist/fixture-dbd66009.cjs.js +395 -0
- package/dist/fixture-dbd66009.cjs.js.map +1 -0
- package/dist/index.js +4 -3
- package/dist/nile-accordion/nile-accordian.test.cjs.js +1 -1
- package/dist/nile-accordion/nile-accordian.test.esm.js +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.test.esm.js +1 -1
- package/dist/nile-avatar/nile-avatar.test.cjs.js +1 -1
- package/dist/nile-avatar/nile-avatar.test.esm.js +1 -1
- package/dist/nile-badge/nile-badge.test.cjs.js +1 -1
- package/dist/nile-badge/nile-badge.test.esm.js +1 -1
- package/dist/nile-button/nile-button.test.cjs.js +1 -1
- package/dist/nile-button/nile-button.test.esm.js +1 -1
- package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js +1 -1
- package/dist/nile-button-toggle-group/nile-button-toggle-group.test.esm.js +1 -1
- package/dist/nile-calendar/nile-calendar.test.cjs.js +1 -1
- package/dist/nile-calendar/nile-calendar.test.esm.js +1 -1
- package/dist/nile-card/nile-card.test.cjs.js +1 -1
- package/dist/nile-card/nile-card.test.esm.js +1 -1
- package/dist/nile-checkbox/nile-checkbox.test.cjs.js +1 -1
- package/dist/nile-checkbox/nile-checkbox.test.esm.js +1 -1
- package/dist/nile-chip/nile-chip.cjs.js +1 -1
- package/dist/nile-chip/nile-chip.cjs.js.map +1 -1
- package/dist/nile-chip/nile-chip.esm.js +3 -2
- package/dist/nile-chip/nile-chip.test.cjs.js +1 -1
- package/dist/nile-chip/nile-chip.test.esm.js +1 -1
- package/dist/nile-code-editor/backup_nile-code-editor copy.cjs.js +2 -0
- package/dist/nile-code-editor/backup_nile-code-editor copy.cjs.js.map +1 -0
- package/dist/nile-code-editor/backup_nile-code-editor copy.esm.js +1 -0
- package/dist/nile-dialog/nile-dialog.test.cjs.js +1 -1
- package/dist/nile-dialog/nile-dialog.test.esm.js +1 -1
- package/dist/nile-drawer/nile-drawer.test.cjs.js +1 -1
- package/dist/nile-drawer/nile-drawer.test.esm.js +1 -1
- package/dist/nile-dropdown/nile-dropdown.test.cjs.js +1 -1
- package/dist/nile-dropdown/nile-dropdown.test.esm.js +1 -1
- package/dist/nile-dropdown/portal-utils.cjs.js +1 -1
- package/dist/nile-dropdown/portal-utils.cjs.js.map +1 -1
- package/dist/nile-dropdown/portal-utils.esm.js +1 -1
- package/dist/nile-empty-state/nile-empty-state.test.cjs.js +1 -1
- package/dist/nile-empty-state/nile-empty-state.test.esm.js +1 -1
- package/dist/nile-error-message/nile-error-message.test.cjs.js +1 -1
- package/dist/nile-error-message/nile-error-message.test.esm.js +1 -1
- package/dist/nile-file-preview/nile-file-preview.test.cjs.js +1 -1
- package/dist/nile-file-preview/nile-file-preview.test.esm.js +1 -1
- package/dist/nile-file-upload/nile-file-upload.test.cjs.js +1 -1
- package/dist/nile-file-upload/nile-file-upload.test.esm.js +1 -1
- package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js +1 -1
- package/dist/nile-filter-chip/nile-filter-chip.test.esm.js +1 -1
- package/dist/nile-form-group/nile-form-group.test.cjs.js +1 -1
- package/dist/nile-form-group/nile-form-group.test.esm.js +1 -1
- package/dist/nile-form-help-text/nile-form-help-text.test.cjs.js +1 -1
- package/dist/nile-form-help-text/nile-form-help-text.test.esm.js +1 -1
- package/dist/nile-grid/nile-grid.types.cjs.js +2 -0
- package/dist/nile-grid/nile-grid.types.cjs.js.map +1 -0
- package/dist/nile-grid/nile-grid.types.esm.js +1 -0
- package/dist/nile-grid-body/index.cjs.js +2 -0
- package/dist/nile-grid-body/index.cjs.js.map +1 -0
- package/dist/nile-grid-body/index.esm.js +1 -0
- package/dist/nile-grid-body/nile-grid-body.cjs.js +2 -0
- package/dist/nile-grid-body/nile-grid-body.cjs.js.map +1 -0
- package/dist/nile-grid-body/nile-grid-body.css.cjs.js +2 -0
- package/dist/nile-grid-body/nile-grid-body.css.cjs.js.map +1 -0
- package/dist/nile-grid-body/nile-grid-body.css.esm.js +10 -0
- package/dist/nile-grid-body/nile-grid-body.esm.js +5 -0
- package/dist/nile-grid-cell-item/index.cjs.js +2 -0
- package/dist/nile-grid-cell-item/index.cjs.js.map +1 -0
- package/dist/nile-grid-cell-item/index.esm.js +1 -0
- package/dist/nile-grid-cell-item/nile-grid-cell-item.cjs.js +2 -0
- package/dist/nile-grid-cell-item/nile-grid-cell-item.cjs.js.map +1 -0
- package/dist/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js +2 -0
- package/dist/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js.map +1 -0
- package/dist/nile-grid-cell-item/nile-grid-cell-item.css.esm.js +35 -0
- package/dist/nile-grid-cell-item/nile-grid-cell-item.esm.js +12 -0
- package/dist/nile-grid-cell-item/nile-grid-cell-item.utils.cjs.js +2 -0
- package/dist/nile-grid-cell-item/nile-grid-cell-item.utils.cjs.js.map +1 -0
- package/dist/nile-grid-cell-item/nile-grid-cell-item.utils.esm.js +1 -0
- package/dist/nile-grid-head/index.cjs.js +2 -0
- package/dist/nile-grid-head/index.cjs.js.map +1 -0
- package/dist/nile-grid-head/index.esm.js +1 -0
- package/dist/nile-grid-head/nile-grid-head.cjs.js +2 -0
- package/dist/nile-grid-head/nile-grid-head.cjs.js.map +1 -0
- package/dist/nile-grid-head/nile-grid-head.css.cjs.js +2 -0
- package/dist/nile-grid-head/nile-grid-head.css.cjs.js.map +1 -0
- package/dist/nile-grid-head/nile-grid-head.css.esm.js +7 -0
- package/dist/nile-grid-head/nile-grid-head.esm.js +5 -0
- package/dist/nile-grid-head-item/index.cjs.js +2 -0
- package/dist/nile-grid-head-item/index.cjs.js.map +1 -0
- package/dist/nile-grid-head-item/index.esm.js +1 -0
- package/dist/nile-grid-head-item/nile-grid-head-item.cjs.js +2 -0
- package/dist/nile-grid-head-item/nile-grid-head-item.cjs.js.map +1 -0
- package/dist/nile-grid-head-item/nile-grid-head-item.css.cjs.js +2 -0
- package/dist/nile-grid-head-item/nile-grid-head-item.css.cjs.js.map +1 -0
- package/dist/nile-grid-head-item/nile-grid-head-item.css.esm.js +34 -0
- package/dist/nile-grid-head-item/nile-grid-head-item.esm.js +12 -0
- package/dist/nile-grid-head-item/nile-grid-head-item.utils.cjs.js +2 -0
- package/dist/nile-grid-head-item/nile-grid-head-item.utils.cjs.js.map +1 -0
- package/dist/nile-grid-head-item/nile-grid-head-item.utils.esm.js +1 -0
- package/dist/nile-grid-row/index.cjs.js +2 -0
- package/dist/nile-grid-row/index.cjs.js.map +1 -0
- package/dist/nile-grid-row/index.esm.js +1 -0
- package/dist/nile-grid-row/nile-grid-row.cjs.js +2 -0
- package/dist/nile-grid-row/nile-grid-row.cjs.js.map +1 -0
- package/dist/nile-grid-row/nile-grid-row.css.cjs.js +2 -0
- package/dist/nile-grid-row/nile-grid-row.css.cjs.js.map +1 -0
- package/dist/nile-grid-row/nile-grid-row.css.esm.js +15 -0
- package/dist/nile-grid-row/nile-grid-row.esm.js +7 -0
- package/dist/nile-hero/nile-hero.test.cjs.js +1 -1
- package/dist/nile-hero/nile-hero.test.esm.js +1 -1
- package/dist/nile-icon/nile-icon.test.cjs.js +1 -1
- package/dist/nile-icon/nile-icon.test.esm.js +1 -1
- package/dist/nile-input/nile-input.test.cjs.js +1 -1
- package/dist/nile-input/nile-input.test.esm.js +1 -1
- package/dist/nile-link/nile-link.test.cjs.js +1 -1
- package/dist/nile-link/nile-link.test.esm.js +1 -1
- package/dist/nile-loader/nile-loader.test.cjs.js +1 -1
- package/dist/nile-loader/nile-loader.test.esm.js +1 -1
- package/dist/nile-popover/nile-popover.test.cjs.js +1 -1
- package/dist/nile-popover/nile-popover.test.esm.js +1 -1
- package/dist/nile-popup/nile-popup.test.cjs.js +1 -1
- package/dist/nile-popup/nile-popup.test.esm.js +1 -1
- package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js +1 -1
- package/dist/nile-progress-bar/nile-progress-bar.test.esm.js +1 -1
- package/dist/nile-radio/nile-radio.test.cjs.js +1 -1
- package/dist/nile-radio/nile-radio.test.esm.js +1 -1
- package/dist/nile-radio-group/nile-radio-group.test.cjs.js +1 -1
- package/dist/nile-radio-group/nile-radio-group.test.esm.js +1 -1
- package/dist/nile-rich-text-editor/utils.cjs.js +2 -0
- package/dist/nile-rich-text-editor/utils.cjs.js.map +1 -0
- package/dist/nile-rich-text-editor/utils.esm.js +1 -0
- package/dist/nile-select/nile-select.test.cjs.js +1 -1
- package/dist/nile-select/nile-select.test.esm.js +1 -1
- package/dist/nile-sidebar/index.cjs.js +2 -0
- package/dist/nile-sidebar/index.cjs.js.map +1 -0
- package/dist/nile-sidebar/index.esm.js +75 -0
- package/dist/nile-sidebar-menu/index.cjs.js +2 -0
- package/dist/nile-sidebar-menu/index.cjs.js.map +1 -0
- package/dist/nile-sidebar-menu/index.esm.js +1 -0
- package/dist/nile-sidebar-menu/nile-sidebar-menu.cjs.js +2 -0
- package/dist/nile-sidebar-menu/nile-sidebar-menu.cjs.js.map +1 -0
- package/dist/nile-sidebar-menu/nile-sidebar-menu.css.cjs.js +2 -0
- package/dist/nile-sidebar-menu/nile-sidebar-menu.css.cjs.js.map +1 -0
- package/dist/nile-sidebar-menu/nile-sidebar-menu.css.esm.js +38 -0
- package/dist/nile-sidebar-menu/nile-sidebar-menu.esm.js +10 -0
- package/dist/nile-sidebar-menu-items/index.cjs.js +2 -0
- package/dist/nile-sidebar-menu-items/index.cjs.js.map +1 -0
- package/dist/nile-sidebar-menu-items/index.esm.js +1 -0
- package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.cjs.js +2 -0
- package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.cjs.js.map +1 -0
- package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.css.cjs.js +2 -0
- package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.css.cjs.js.map +1 -0
- package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.css.esm.js +36 -0
- package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.esm.js +15 -0
- package/dist/nile-sidebar-wrapper/index.cjs.js +2 -0
- package/dist/nile-sidebar-wrapper/index.cjs.js.map +1 -0
- package/dist/nile-sidebar-wrapper/index.esm.js +1 -0
- package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.cjs.js +2 -0
- package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.cjs.js.map +1 -0
- package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.css.cjs.js +2 -0
- package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.css.cjs.js.map +1 -0
- package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.css.esm.js +105 -0
- package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.esm.js +16 -0
- package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js +1 -1
- package/dist/nile-slide-toggle/nile-slide-toggle.test.esm.js +1 -1
- package/dist/nile-tab-group/nile-tab-group.test.cjs.js +1 -1
- package/dist/nile-tab-group/nile-tab-group.test.esm.js +1 -1
- package/dist/nile-textarea/nile-textarea.test.cjs.js +1 -1
- package/dist/nile-textarea/nile-textarea.test.esm.js +1 -1
- package/dist/nile-virtual-select/group-manager.cjs.js +2 -0
- package/dist/nile-virtual-select/group-manager.cjs.js.map +1 -0
- package/dist/nile-virtual-select/group-manager.esm.js +1 -0
- package/dist/nile-virtual-select/nile-virtual-select.test.cjs.js +1 -1
- package/dist/nile-virtual-select/nile-virtual-select.test.esm.js +1 -1
- package/dist/nile-virtual-select/temp_nile-virtual-select copy.cjs.js +2 -0
- package/dist/nile-virtual-select/temp_nile-virtual-select copy.cjs.js.map +1 -0
- package/dist/nile-virtual-select/temp_nile-virtual-select copy.esm.js +231 -0
- package/dist/scopedElementsWrapper-1bff26ef.cjs.js +2 -0
- package/dist/scopedElementsWrapper-1bff26ef.cjs.js.map +1 -0
- package/dist/scopedElementsWrapper-4c29be11.esm.js +7 -0
- package/dist/scopedElementsWrapper-a112fc73.cjs.js +6 -0
- package/dist/scopedElementsWrapper-a112fc73.cjs.js.map +1 -0
- package/dist/scopedElementsWrapper-c815042c.cjs.js +2 -0
- package/dist/scopedElementsWrapper-c815042c.cjs.js.map +1 -0
- package/dist/src/internal/portal-manager.d.ts +53 -0
- package/dist/src/internal/portal-manager.js +196 -0
- package/dist/src/internal/portal-manager.js.map +1 -0
- package/dist/src/internal/portal.d.ts +60 -0
- package/dist/src/internal/portal.js +199 -0
- package/dist/src/internal/portal.js.map +1 -0
- package/dist/src/internal/resizable-helper.d.ts +59 -0
- package/dist/src/internal/resizable-helper.js +115 -0
- package/dist/src/internal/resizable-helper.js.map +1 -0
- package/dist/src/internal/resizable-styles.d.ts +16 -0
- package/dist/src/internal/resizable-styles.js +144 -0
- package/dist/src/internal/resizable-styles.js.map +1 -0
- package/dist/src/internal/virtualizer-error-handler.d.ts +30 -0
- package/dist/src/internal/virtualizer-error-handler.js +82 -0
- package/dist/src/internal/virtualizer-error-handler.js.map +1 -0
- package/dist/src/lib/index.d.ts +7 -0
- package/dist/src/lib/index.js +8 -0
- package/dist/src/lib/index.js.map +1 -0
- package/dist/src/lib/virtualize.d.ts +32 -0
- package/dist/src/lib/virtualize.js +105 -0
- package/dist/src/lib/virtualize.js.map +1 -0
- package/dist/src/lib/virtualize.test.d.ts +7 -0
- package/dist/src/lib/virtualize.test.js +57 -0
- package/dist/src/lib/virtualize.test.js.map +1 -0
- package/dist/src/nile-badge/__snapshots__/nile-badge.test.snap.js +17 -0
- package/dist/src/nile-calendar/__snapshots__/nile-calendar.test.snap.js +310 -0
- package/dist/src/nile-card/__snapshots__/nile-card.test.snap.js +34 -0
- package/dist/src/nile-checkbox/__snapshots__/nile-checkbox.test.snap.js +31 -0
- package/dist/src/nile-chip/nile-chip.js +8 -0
- package/dist/src/nile-chip/nile-chip.js.map +1 -1
- package/dist/src/nile-code-editor/Old_theme copy.d.ts +191 -0
- package/dist/src/nile-code-editor/Old_theme copy.js +193 -0
- package/dist/src/nile-code-editor/Old_theme copy.js.map +1 -0
- package/dist/src/nile-code-editor/backup_nile-code-editor copy.d.ts +0 -0
- package/dist/src/nile-code-editor/backup_nile-code-editor copy.js +675 -0
- package/dist/src/nile-code-editor/backup_nile-code-editor copy.js.map +1 -0
- package/dist/src/nile-code-editor/theme copy.d.ts +191 -0
- package/dist/src/nile-code-editor/theme copy.js +193 -0
- package/dist/src/nile-code-editor/theme copy.js.map +1 -0
- package/dist/src/nile-dropdown/portal-utils.js +143 -59
- package/dist/src/nile-dropdown/portal-utils.js.map +1 -1
- package/dist/src/nile-floating-panel/anchor-manager.d.ts +26 -0
- package/dist/src/nile-floating-panel/anchor-manager.js +49 -0
- package/dist/src/nile-floating-panel/anchor-manager.js.map +1 -0
- package/dist/src/nile-floating-panel/content-manager.d.ts +23 -0
- package/dist/src/nile-floating-panel/content-manager.js +67 -0
- package/dist/src/nile-floating-panel/content-manager.js.map +1 -0
- package/dist/src/nile-floating-panel/event-manager.d.ts +38 -0
- package/dist/src/nile-floating-panel/event-manager.js +81 -0
- package/dist/src/nile-floating-panel/event-manager.js.map +1 -0
- package/dist/src/nile-floating-panel/index.d.ts +1 -0
- package/dist/src/nile-floating-panel/index.js +2 -0
- package/dist/src/nile-floating-panel/index.js.map +1 -0
- package/dist/src/nile-floating-panel/nile-floating-panel.css.d.ts +17 -0
- package/dist/src/nile-floating-panel/nile-floating-panel.css.js +51 -0
- package/dist/src/nile-floating-panel/nile-floating-panel.css.js.map +1 -0
- package/dist/src/nile-floating-panel/nile-floating-panel.d.ts +67 -0
- package/dist/src/nile-floating-panel/nile-floating-panel.js +203 -0
- package/dist/src/nile-floating-panel/nile-floating-panel.js.map +1 -0
- package/dist/src/nile-floating-panel/position-manager.d.ts +47 -0
- package/dist/src/nile-floating-panel/position-manager.js +94 -0
- package/dist/src/nile-floating-panel/position-manager.js.map +1 -0
- package/dist/src/nile-floating-panel/style-manager.d.ts +31 -0
- package/dist/src/nile-floating-panel/style-manager.js +74 -0
- package/dist/src/nile-floating-panel/style-manager.js.map +1 -0
- package/dist/src/nile-floating-panel/types.d.ts +29 -0
- package/dist/src/nile-floating-panel/types.js +8 -0
- package/dist/src/nile-floating-panel/types.js.map +1 -0
- package/dist/src/nile-grid/data-processor.d.ts +37 -0
- package/dist/src/nile-grid/data-processor.js +122 -0
- package/dist/src/nile-grid/data-processor.js.map +1 -0
- package/dist/src/nile-grid/event-handlers.d.ts +35 -0
- package/dist/src/nile-grid/event-handlers.js +158 -0
- package/dist/src/nile-grid/event-handlers.js.map +1 -0
- package/dist/src/nile-grid/nile-grid.types.d.ts +3 -0
- package/dist/src/nile-grid/nile-grid.types.js +2 -0
- package/dist/src/nile-grid/nile-grid.types.js.map +1 -0
- package/dist/src/nile-grid/renderer.d.ts +8 -0
- package/dist/src/nile-grid/renderer.js +78 -0
- package/dist/src/nile-grid/renderer.js.map +1 -0
- package/dist/src/nile-grid/resize-handler.d.ts +4 -0
- package/dist/src/nile-grid/resize-handler.js +36 -0
- package/dist/src/nile-grid/resize-handler.js.map +1 -0
- package/dist/src/nile-grid/types.d.ts +32 -0
- package/dist/src/nile-grid/types.js +2 -0
- package/dist/src/nile-grid/types.js.map +1 -0
- package/dist/src/nile-grid/utils.d.ts +4 -0
- package/dist/src/nile-grid/utils.js +32 -0
- package/dist/src/nile-grid/utils.js.map +1 -0
- package/dist/src/nile-grid-body/index.d.ts +1 -0
- package/dist/src/nile-grid-body/index.js +2 -0
- package/dist/src/nile-grid-body/index.js.map +1 -0
- package/dist/src/nile-grid-body/nile-grid-body.css.d.ts +12 -0
- package/dist/src/nile-grid-body/nile-grid-body.css.js +22 -0
- package/dist/src/nile-grid-body/nile-grid-body.css.js.map +1 -0
- package/dist/src/nile-grid-body/nile-grid-body.d.ts +29 -0
- package/dist/src/nile-grid-body/nile-grid-body.js +43 -0
- package/dist/src/nile-grid-body/nile-grid-body.js.map +1 -0
- package/dist/src/nile-grid-cell-item/index.d.ts +1 -0
- package/dist/src/nile-grid-cell-item/index.js +2 -0
- package/dist/src/nile-grid-cell-item/index.js.map +1 -0
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.d.ts +12 -0
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.js +47 -0
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.js.map +1 -0
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.d.ts +36 -0
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.js +93 -0
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.js.map +1 -0
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.utils.d.ts +10 -0
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.utils.js +34 -0
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.utils.js.map +1 -0
- package/dist/src/nile-grid-head/index.d.ts +1 -0
- package/dist/src/nile-grid-head/index.js +2 -0
- package/dist/src/nile-grid-head/index.js.map +1 -0
- package/dist/src/nile-grid-head/nile-grid-head.css.d.ts +12 -0
- package/dist/src/nile-grid-head/nile-grid-head.css.js +19 -0
- package/dist/src/nile-grid-head/nile-grid-head.css.js.map +1 -0
- package/dist/src/nile-grid-head/nile-grid-head.d.ts +28 -0
- package/dist/src/nile-grid-head/nile-grid-head.js +41 -0
- package/dist/src/nile-grid-head/nile-grid-head.js.map +1 -0
- package/dist/src/nile-grid-head-item/index.d.ts +1 -0
- package/dist/src/nile-grid-head-item/index.js +2 -0
- package/dist/src/nile-grid-head-item/index.js.map +1 -0
- package/dist/src/nile-grid-head-item/nile-grid-head-item.css.d.ts +12 -0
- package/dist/src/nile-grid-head-item/nile-grid-head-item.css.js +46 -0
- package/dist/src/nile-grid-head-item/nile-grid-head-item.css.js.map +1 -0
- package/dist/src/nile-grid-head-item/nile-grid-head-item.d.ts +37 -0
- package/dist/src/nile-grid-head-item/nile-grid-head-item.js +100 -0
- package/dist/src/nile-grid-head-item/nile-grid-head-item.js.map +1 -0
- package/dist/src/nile-grid-head-item/nile-grid-head-item.utils.d.ts +10 -0
- package/dist/src/nile-grid-head-item/nile-grid-head-item.utils.js +34 -0
- package/dist/src/nile-grid-head-item/nile-grid-head-item.utils.js.map +1 -0
- package/dist/src/nile-grid-row/index.d.ts +1 -0
- package/dist/src/nile-grid-row/index.js +2 -0
- package/dist/src/nile-grid-row/index.js.map +1 -0
- package/dist/src/nile-grid-row/nile-grid-row.css.d.ts +12 -0
- package/dist/src/nile-grid-row/nile-grid-row.css.js +27 -0
- package/dist/src/nile-grid-row/nile-grid-row.css.js.map +1 -0
- package/dist/src/nile-grid-row/nile-grid-row.d.ts +29 -0
- package/dist/src/nile-grid-row/nile-grid-row.js +45 -0
- package/dist/src/nile-grid-row/nile-grid-row.js.map +1 -0
- package/dist/src/nile-hero/__snapshots__/nile-hero.test.snap.js +47 -0
- package/dist/src/nile-icon/__snapshots__/nile-icon.test.snap.js +16 -0
- package/dist/src/nile-input/__snapshots__/nile-input.test.snap.js +75 -0
- package/dist/src/nile-menu/portal-manager.d.ts +39 -0
- package/dist/src/nile-menu/portal-manager.js +340 -0
- package/dist/src/nile-menu/portal-manager.js.map +1 -0
- package/dist/src/nile-menu/portal-utils.d.ts +21 -0
- package/dist/src/nile-menu/portal-utils.js +128 -0
- package/dist/src/nile-menu/portal-utils.js.map +1 -0
- package/dist/src/nile-popover/__snapshots__/nile-popover.test.snap.js +22 -0
- package/dist/src/nile-popover/popover-portal-handler.d.ts +21 -0
- package/dist/src/nile-popover/popover-portal-handler.js +106 -0
- package/dist/src/nile-popover/popover-portal-handler.js.map +1 -0
- package/dist/src/nile-portal-wrapper/index.d.ts +1 -0
- package/dist/src/nile-portal-wrapper/index.js +2 -0
- package/dist/src/nile-portal-wrapper/index.js.map +1 -0
- package/dist/src/nile-portal-wrapper/nile-portal-wrapper.d.ts +47 -0
- package/dist/src/nile-portal-wrapper/nile-portal-wrapper.js +451 -0
- package/dist/src/nile-portal-wrapper/nile-portal-wrapper.js.map +1 -0
- package/dist/src/nile-rich-text-editor/utils.d.ts +13 -0
- package/dist/src/nile-rich-text-editor/utils.js +538 -0
- package/dist/src/nile-rich-text-editor/utils.js.map +1 -0
- package/dist/src/nile-select/body-append-manager.d.ts +90 -0
- package/dist/src/nile-select/body-append-manager.js +298 -0
- package/dist/src/nile-select/body-append-manager.js.map +1 -0
- package/dist/src/nile-sidebar/index.d.ts +28 -0
- package/dist/src/nile-sidebar/index.js +116 -0
- package/dist/src/nile-sidebar/index.js.map +1 -0
- package/dist/src/nile-sidebar-menu/index.d.ts +1 -0
- package/dist/src/nile-sidebar-menu/index.js +2 -0
- package/dist/src/nile-sidebar-menu/index.js.map +1 -0
- package/dist/src/nile-sidebar-menu/nile-sidebar-menu.css.d.ts +12 -0
- package/dist/src/nile-sidebar-menu/nile-sidebar-menu.css.js +47 -0
- package/dist/src/nile-sidebar-menu/nile-sidebar-menu.css.js.map +1 -0
- package/dist/src/nile-sidebar-menu/nile-sidebar-menu.d.ts +37 -0
- package/dist/src/nile-sidebar-menu/nile-sidebar-menu.js +84 -0
- package/dist/src/nile-sidebar-menu/nile-sidebar-menu.js.map +1 -0
- package/dist/src/nile-sidebar-menu-items/index.d.ts +1 -0
- package/dist/src/nile-sidebar-menu-items/index.js +2 -0
- package/dist/src/nile-sidebar-menu-items/index.js.map +1 -0
- package/dist/src/nile-sidebar-menu-items/nile-sidebar-menu-items.css.d.ts +12 -0
- package/dist/src/nile-sidebar-menu-items/nile-sidebar-menu-items.css.js +45 -0
- package/dist/src/nile-sidebar-menu-items/nile-sidebar-menu-items.css.js.map +1 -0
- package/dist/src/nile-sidebar-menu-items/nile-sidebar-menu-items.d.ts +35 -0
- package/dist/src/nile-sidebar-menu-items/nile-sidebar-menu-items.js +78 -0
- package/dist/src/nile-sidebar-menu-items/nile-sidebar-menu-items.js.map +1 -0
- package/dist/src/nile-sidebar-wrapper/index.d.ts +1 -0
- package/dist/src/nile-sidebar-wrapper/index.js +2 -0
- package/dist/src/nile-sidebar-wrapper/index.js.map +1 -0
- package/dist/src/nile-sidebar-wrapper/nile-sidebar-wrapper.css.d.ts +12 -0
- package/dist/src/nile-sidebar-wrapper/nile-sidebar-wrapper.css.js +114 -0
- package/dist/src/nile-sidebar-wrapper/nile-sidebar-wrapper.css.js.map +1 -0
- package/dist/src/nile-sidebar-wrapper/nile-sidebar-wrapper.d.ts +35 -0
- package/dist/src/nile-sidebar-wrapper/nile-sidebar-wrapper.js +89 -0
- package/dist/src/nile-sidebar-wrapper/nile-sidebar-wrapper.js.map +1 -0
- package/dist/src/nile-table-body/virtual-scroll-helper.d.ts +9 -0
- package/dist/src/nile-table-body/virtual-scroll-helper.js +24 -0
- package/dist/src/nile-table-body/virtual-scroll-helper.js.map +1 -0
- package/dist/src/nile-virtual-select/body-append-helper.d.ts +16 -0
- package/dist/src/nile-virtual-select/body-append-helper.js +95 -0
- package/dist/src/nile-virtual-select/body-append-helper.js.map +1 -0
- package/dist/src/nile-virtual-select/group-manager.d.ts +32 -0
- package/dist/src/nile-virtual-select/group-manager.js +134 -0
- package/dist/src/nile-virtual-select/group-manager.js.map +1 -0
- package/dist/src/nile-virtual-select/portal-utils.d.ts +65 -0
- package/dist/src/nile-virtual-select/portal-utils.js +376 -0
- package/dist/src/nile-virtual-select/portal-utils.js.map +1 -0
- package/dist/src/nile-virtual-select/temp_nile-virtual-select copy.d.ts +273 -0
- package/dist/src/nile-virtual-select/temp_nile-virtual-select copy.js +1305 -0
- package/dist/src/nile-virtual-select/temp_nile-virtual-select copy.js.map +1 -0
- package/dist/src/nile-virtual-select/virtualizer-error-handler.d.ts +21 -0
- package/dist/src/nile-virtual-select/virtualizer-error-handler.js +56 -0
- package/dist/src/nile-virtual-select/virtualizer-error-handler.js.map +1 -0
- package/dist/src/nile-virtual-select-disabled/index.d.ts +1 -0
- package/dist/src/nile-virtual-select-disabled/index.js +2 -0
- package/dist/src/nile-virtual-select-disabled/index.js.map +1 -0
- package/dist/src/nile-virtual-select-disabled/nile-virtual-select.css.d.ts +12 -0
- package/dist/src/nile-virtual-select-disabled/nile-virtual-select.css.js +538 -0
- package/dist/src/nile-virtual-select-disabled/nile-virtual-select.css.js.map +1 -0
- package/dist/src/nile-virtual-select-disabled/nile-virtual-select.d.ts +299 -0
- package/dist/src/nile-virtual-select-disabled/nile-virtual-select.js +1441 -0
- package/dist/src/nile-virtual-select-disabled/nile-virtual-select.js.map +1 -0
- package/dist/src/nile-virtual-select-disabled/nile-virtual-select.test.d.ts +7 -0
- package/dist/src/nile-virtual-select-disabled/nile-virtual-select.test.js +631 -0
- package/dist/src/nile-virtual-select-disabled/nile-virtual-select.test.js.map +1 -0
- package/dist/src/nile-virtual-select-disabled/portal-manager.d.ts +45 -0
- package/dist/src/nile-virtual-select-disabled/portal-manager.js +333 -0
- package/dist/src/nile-virtual-select-disabled/portal-manager.js.map +1 -0
- package/dist/src/nile-virtual-select-disabled/renderer.d.ts +16 -0
- package/dist/src/nile-virtual-select-disabled/renderer.js +79 -0
- package/dist/src/nile-virtual-select-disabled/renderer.js.map +1 -0
- package/dist/src/nile-virtual-select-disabled/search-manager.d.ts +12 -0
- package/dist/src/nile-virtual-select-disabled/search-manager.js +40 -0
- package/dist/src/nile-virtual-select-disabled/search-manager.js.map +1 -0
- package/dist/src/nile-virtual-select-disabled/selection-manager.d.ts +12 -0
- package/dist/src/nile-virtual-select-disabled/selection-manager.js +64 -0
- package/dist/src/nile-virtual-select-disabled/selection-manager.js.map +1 -0
- package/dist/src/nile-virtual-select-disabled/types.d.ts +50 -0
- package/dist/src/nile-virtual-select-disabled/types.js +8 -0
- package/dist/src/nile-virtual-select-disabled/types.js.map +1 -0
- package/dist/src/nile-virtual-table-body/index.d.ts +2 -0
- package/dist/src/nile-virtual-table-body/index.js +3 -0
- package/dist/src/nile-virtual-table-body/index.js.map +1 -0
- package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.d.ts +1 -0
- package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.js +44 -0
- package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.js.map +1 -0
- package/dist/src/nile-virtual-table-body/nile-virtual-table-body.d.ts +50 -0
- package/dist/src/nile-virtual-table-body/nile-virtual-table-body.js +135 -0
- package/dist/src/nile-virtual-table-body/nile-virtual-table-body.js.map +1 -0
- package/dist/src/nile-virtual-table-body/renderer.d.ts +16 -0
- package/dist/src/nile-virtual-table-body/renderer.js +49 -0
- package/dist/src/nile-virtual-table-body/renderer.js.map +1 -0
- package/dist/src/utilities/stepper-utils.d.ts +71 -0
- package/dist/src/utilities/stepper-utils.js +108 -0
- package/dist/src/utilities/stepper-utils.js.map +1 -0
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/nile-chip/nile-chip.ts +9 -0
- package/src/nile-dropdown/portal-utils.ts +153 -61
|
@@ -183,22 +183,9 @@ export class PortalContentUtils {
|
|
|
183
183
|
static processInlineEventHandlers(element) {
|
|
184
184
|
const eventHandlerAttrs = ['onclick', 'onchange', 'oninput', 'onsubmit', 'onfocus', 'onblur', 'onkeydown', 'onkeyup'];
|
|
185
185
|
eventHandlerAttrs.forEach(attr => {
|
|
186
|
-
|
|
187
|
-
const handler = element.getAttribute(attr);
|
|
188
|
-
if (handler) {
|
|
189
|
-
element.removeAttribute(attr);
|
|
190
|
-
element.addEventListener(eventType, (event) => {
|
|
191
|
-
new Function('event', handler).call(element, event);
|
|
192
|
-
});
|
|
193
|
-
}
|
|
186
|
+
element.removeAttribute(attr);
|
|
194
187
|
element.querySelectorAll(`[${attr}]`).forEach(child => {
|
|
195
|
-
|
|
196
|
-
if (childHandler) {
|
|
197
|
-
child.removeAttribute(attr);
|
|
198
|
-
child.addEventListener(eventType, (event) => {
|
|
199
|
-
new Function('event', childHandler).call(child, event);
|
|
200
|
-
});
|
|
201
|
-
}
|
|
188
|
+
child.removeAttribute(attr);
|
|
202
189
|
});
|
|
203
190
|
});
|
|
204
191
|
}
|
|
@@ -250,63 +237,160 @@ export class PortalEventUtils {
|
|
|
250
237
|
const originalMenu = assignedElements[0];
|
|
251
238
|
if (!originalMenu)
|
|
252
239
|
return;
|
|
240
|
+
const findOriginalElement = (clonedElement) => {
|
|
241
|
+
const clonedMenuItem = clonedElement.closest('nile-menu-item');
|
|
242
|
+
if (clonedMenuItem) {
|
|
243
|
+
const clonedItems = Array.from(clonedPanel.querySelectorAll('nile-menu-item'));
|
|
244
|
+
const originalItems = Array.from(originalMenu.querySelectorAll('nile-menu-item'));
|
|
245
|
+
const index = clonedItems.indexOf(clonedMenuItem);
|
|
246
|
+
const originalMenuItem = originalItems[index];
|
|
247
|
+
if (originalMenuItem) {
|
|
248
|
+
if (clonedElement === clonedMenuItem) {
|
|
249
|
+
return originalMenuItem;
|
|
250
|
+
}
|
|
251
|
+
const clonedTagName = clonedElement.tagName.toLowerCase();
|
|
252
|
+
const clonedElements = Array.from(clonedMenuItem.querySelectorAll(clonedTagName));
|
|
253
|
+
const originalElements = Array.from(originalMenuItem.querySelectorAll(clonedTagName));
|
|
254
|
+
const elementIndex = clonedElements.indexOf(clonedElement);
|
|
255
|
+
if (elementIndex >= 0 && originalElements[elementIndex]) {
|
|
256
|
+
return originalElements[elementIndex];
|
|
257
|
+
}
|
|
258
|
+
return originalMenuItem;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return null;
|
|
262
|
+
};
|
|
263
|
+
const forwardEvent = (event, originalElement) => {
|
|
264
|
+
const originalEvent = event;
|
|
265
|
+
let newEvent;
|
|
266
|
+
if (originalEvent instanceof MouseEvent) {
|
|
267
|
+
newEvent = new MouseEvent(event.type, {
|
|
268
|
+
bubbles: true,
|
|
269
|
+
cancelable: true,
|
|
270
|
+
composed: true,
|
|
271
|
+
button: originalEvent.button,
|
|
272
|
+
buttons: originalEvent.buttons,
|
|
273
|
+
clientX: originalEvent.clientX,
|
|
274
|
+
clientY: originalEvent.clientY,
|
|
275
|
+
ctrlKey: originalEvent.ctrlKey,
|
|
276
|
+
shiftKey: originalEvent.shiftKey,
|
|
277
|
+
altKey: originalEvent.altKey,
|
|
278
|
+
metaKey: originalEvent.metaKey
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
else if (originalEvent instanceof KeyboardEvent) {
|
|
282
|
+
newEvent = new KeyboardEvent(event.type, {
|
|
283
|
+
bubbles: true,
|
|
284
|
+
cancelable: true,
|
|
285
|
+
composed: true,
|
|
286
|
+
key: originalEvent.key,
|
|
287
|
+
code: originalEvent.code,
|
|
288
|
+
keyCode: originalEvent.keyCode,
|
|
289
|
+
which: originalEvent.which,
|
|
290
|
+
ctrlKey: originalEvent.ctrlKey,
|
|
291
|
+
shiftKey: originalEvent.shiftKey,
|
|
292
|
+
altKey: originalEvent.altKey,
|
|
293
|
+
metaKey: originalEvent.metaKey
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
else if (originalEvent instanceof CustomEvent) {
|
|
297
|
+
newEvent = new CustomEvent(event.type, {
|
|
298
|
+
bubbles: true,
|
|
299
|
+
cancelable: true,
|
|
300
|
+
composed: true,
|
|
301
|
+
detail: originalEvent.detail
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
newEvent = new Event(event.type, {
|
|
306
|
+
bubbles: true,
|
|
307
|
+
cancelable: true,
|
|
308
|
+
composed: true
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
originalElement.dispatchEvent(newEvent);
|
|
312
|
+
};
|
|
313
|
+
const syncElementState = (clonedElement, originalElement) => {
|
|
314
|
+
if (clonedElement.tagName.toLowerCase() === 'nile-checkbox' &&
|
|
315
|
+
originalElement.tagName.toLowerCase() === 'nile-checkbox') {
|
|
316
|
+
const clonedCheckbox = clonedElement;
|
|
317
|
+
const originalCheckbox = originalElement;
|
|
318
|
+
if ('checked' in originalCheckbox && 'checked' in clonedCheckbox) {
|
|
319
|
+
clonedCheckbox.checked = originalCheckbox.checked;
|
|
320
|
+
}
|
|
321
|
+
if ('indeterminate' in originalCheckbox && 'indeterminate' in clonedCheckbox) {
|
|
322
|
+
clonedCheckbox.indeterminate = originalCheckbox.indeterminate;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
};
|
|
253
326
|
const eventTypes = ['click', 'change', 'input', 'submit', 'focus', 'blur', 'keydown', 'keyup', 'mousedown', 'mouseup'];
|
|
254
327
|
eventTypes.forEach(eventType => {
|
|
255
328
|
clonedPanel.addEventListener(eventType, (event) => {
|
|
256
329
|
const target = event.target;
|
|
257
330
|
if (!target)
|
|
258
331
|
return;
|
|
259
|
-
const
|
|
260
|
-
if (
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
shiftKey: originalEvent.shiftKey,
|
|
279
|
-
altKey: originalEvent.altKey,
|
|
280
|
-
metaKey: originalEvent.metaKey
|
|
281
|
-
});
|
|
282
|
-
}
|
|
283
|
-
else if (originalEvent instanceof KeyboardEvent) {
|
|
284
|
-
newEvent = new KeyboardEvent(eventType, {
|
|
285
|
-
bubbles: true,
|
|
286
|
-
cancelable: true,
|
|
287
|
-
composed: true,
|
|
288
|
-
key: originalEvent.key,
|
|
289
|
-
code: originalEvent.code,
|
|
290
|
-
keyCode: originalEvent.keyCode,
|
|
291
|
-
which: originalEvent.which,
|
|
292
|
-
ctrlKey: originalEvent.ctrlKey,
|
|
293
|
-
shiftKey: originalEvent.shiftKey,
|
|
294
|
-
altKey: originalEvent.altKey,
|
|
295
|
-
metaKey: originalEvent.metaKey
|
|
296
|
-
});
|
|
332
|
+
const originalItem = findOriginalElement(target);
|
|
333
|
+
if (originalItem) {
|
|
334
|
+
if (eventType === 'click') {
|
|
335
|
+
if (target.tagName.toLowerCase() === 'nile-checkbox') {
|
|
336
|
+
event.stopImmediatePropagation();
|
|
337
|
+
event.preventDefault();
|
|
338
|
+
const originalCheckbox = originalItem;
|
|
339
|
+
if (originalCheckbox && typeof originalCheckbox.click === 'function') {
|
|
340
|
+
originalCheckbox.click();
|
|
341
|
+
setTimeout(() => {
|
|
342
|
+
syncElementState(target, originalItem);
|
|
343
|
+
}, 10);
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
forwardEvent(event, originalItem);
|
|
347
|
+
setTimeout(() => {
|
|
348
|
+
syncElementState(target, originalItem);
|
|
349
|
+
}, 10);
|
|
350
|
+
}
|
|
297
351
|
}
|
|
298
352
|
else {
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
composed: true
|
|
303
|
-
});
|
|
353
|
+
event.stopImmediatePropagation();
|
|
354
|
+
event.preventDefault();
|
|
355
|
+
forwardEvent(event, originalItem);
|
|
304
356
|
}
|
|
305
|
-
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
forwardEvent(event, originalItem);
|
|
306
360
|
}
|
|
307
361
|
}
|
|
308
362
|
}, true);
|
|
309
363
|
});
|
|
364
|
+
const clonedCheckboxes = Array.from(clonedPanel.querySelectorAll('nile-checkbox'));
|
|
365
|
+
const originalCheckboxes = Array.from(originalMenu.querySelectorAll('nile-checkbox'));
|
|
366
|
+
clonedCheckboxes.forEach((clonedCheckbox, index) => {
|
|
367
|
+
const originalCheckbox = originalCheckboxes[index];
|
|
368
|
+
if (originalCheckbox) {
|
|
369
|
+
originalCheckbox.addEventListener('nile-change', () => {
|
|
370
|
+
syncElementState(clonedCheckbox, originalCheckbox);
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
clonedPanel.addEventListener('nile-change', (event) => {
|
|
375
|
+
const target = event.target;
|
|
376
|
+
if (!target)
|
|
377
|
+
return;
|
|
378
|
+
const originalElement = findOriginalElement(target);
|
|
379
|
+
if (originalElement) {
|
|
380
|
+
const originalEvent = event;
|
|
381
|
+
if (target.tagName.toLowerCase() === 'nile-checkbox' && originalEvent.detail?.checked !== undefined) {
|
|
382
|
+
const clonedCheckbox = target;
|
|
383
|
+
clonedCheckbox.checked = originalEvent.detail.checked;
|
|
384
|
+
}
|
|
385
|
+
const newEvent = new CustomEvent('nile-change', {
|
|
386
|
+
bubbles: true,
|
|
387
|
+
cancelable: true,
|
|
388
|
+
composed: true,
|
|
389
|
+
detail: originalEvent.detail
|
|
390
|
+
});
|
|
391
|
+
originalElement.dispatchEvent(newEvent);
|
|
392
|
+
}
|
|
393
|
+
}, true);
|
|
310
394
|
}
|
|
311
395
|
}
|
|
312
396
|
//# sourceMappingURL=portal-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal-utils.js","sourceRoot":"","sources":["../../../src/nile-dropdown/portal-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { \n type Placement,\n type MiddlewareData\n} from '@floating-ui/dom';\n\nexport class PortalUtils {\n static calculateAvailableSpace(referenceElement: HTMLElement): {\n spaceAbove: number;\n spaceBelow: number;\n spaceLeft: number;\n spaceRight: number;\n viewportHeight: number;\n viewportWidth: number;\n } {\n const rect = referenceElement.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n const spaceBelow = viewportHeight - rect.bottom;\n const spaceAbove = rect.top;\n const spaceRight = viewportWidth - rect.right;\n const spaceLeft = rect.left;\n \n return { spaceAbove, spaceBelow, spaceLeft, spaceRight, viewportHeight, viewportWidth };\n }\n\n static getOptimalPlacement(referenceElement: HTMLElement): Placement {\n const { spaceAbove, spaceBelow, spaceLeft, spaceRight } = this.calculateAvailableSpace(referenceElement);\n \n if (spaceBelow >= 200 && spaceBelow >= spaceAbove) {\n return 'bottom';\n } else if (spaceAbove >= 200 && spaceAbove > spaceBelow) {\n return 'top';\n }\n \n if (spaceRight >= 200 && spaceRight >= spaceLeft) {\n return 'right';\n } else if (spaceLeft >= 200) {\n return 'left';\n }\n \n return 'bottom';\n }\n\n static findBoundaryElements(component: HTMLElement): Element[] | undefined {\n const boundaryElements: Element[] = [];\n \n let currentElement = component.parentElement;\n \n while (currentElement && currentElement !== document.body) {\n const computedStyle = window.getComputedStyle(currentElement);\n const overflow = computedStyle.overflow;\n const overflowY = computedStyle.overflowY;\n const overflowX = computedStyle.overflowX;\n \n if (overflow === 'auto' || overflow === 'scroll' || \n overflowY === 'auto' || overflowY === 'scroll' ||\n overflowX === 'auto' || overflowX === 'scroll') {\n boundaryElements.push(currentElement);\n }\n \n if (currentElement.hasAttribute('data-floating-boundary') ||\n currentElement.classList.contains('floating-boundary') ||\n currentElement.classList.contains('scroll-container')) {\n boundaryElements.push(currentElement);\n }\n \n currentElement = currentElement.parentElement;\n }\n \n return boundaryElements.length > 0 ? boundaryElements : undefined;\n }\n\n static calculateOptimalHeight(\n referenceRect: { x: number; y: number; width: number; height: number },\n viewportHeight: number,\n placement: Placement\n ): number {\n const spaceBelow = viewportHeight - (referenceRect.y + referenceRect.height);\n const spaceAbove = referenceRect.y;\n \n if (placement.startsWith('top')) {\n return Math.max(spaceAbove - 20, 100);\n } else if (placement.startsWith('bottom')) {\n return Math.max(spaceBelow - 20, 100);\n } else if (placement.startsWith('left') || placement.startsWith('right')) {\n return Math.max(Math.min(spaceAbove, spaceBelow) - 20, 100);\n }\n \n return Math.max(Math.min(spaceAbove, spaceBelow) - 20, 100);\n }\n\n static extractStylesAsCSS(styles: any): string {\n if (typeof styles === 'string') {\n return styles;\n }\n \n if (Array.isArray(styles)) {\n return styles.map(style => this.extractStylesAsCSS(style)).join('\\n');\n }\n \n if (styles && typeof styles === 'object' && styles.cssText) {\n return styles.cssText;\n }\n \n return '';\n }\n\n static generateStyleId(): string {\n return `nile-dropdown-styles-${Math.random().toString(36).substring(2, 11)}`;\n }\n\n static isPositioningOptimal(\n placement: Placement,\n referenceElement: HTMLElement\n ): boolean {\n const { spaceAbove, spaceBelow, spaceLeft, spaceRight } = this.calculateAvailableSpace(referenceElement);\n \n const isAbove = placement.startsWith('top');\n const isBelow = placement.startsWith('bottom');\n const isLeft = placement.startsWith('left');\n const isRight = placement.startsWith('right');\n \n if (isAbove && spaceBelow > spaceAbove) return false;\n if (isBelow && spaceAbove > spaceBelow) return false;\n if (isLeft && spaceRight > spaceLeft) return false;\n if (isRight && spaceLeft > spaceRight) return false;\n \n return true;\n }\n\n static applyCollisionData(\n element: HTMLElement,\n middlewareData: MiddlewareData,\n placement: Placement\n ): void {\n if (middlewareData.flip) {\n const { overflows } = middlewareData.flip;\n \n element.setAttribute('data-placement', placement);\n \n if (overflows && overflows.length > 0) {\n const overflowPlacements = overflows.map(overflow => overflow.placement).join(',');\n element.setAttribute('data-overflow', overflowPlacements);\n } else {\n element.removeAttribute('data-overflow');\n }\n }\n\n if (middlewareData.shift) {\n const { x, y } = middlewareData.shift;\n \n if (x !== undefined && y !== undefined && (x !== 0 || y !== 0)) {\n element.setAttribute('data-shift', `${x},${y}`);\n } else {\n element.removeAttribute('data-shift');\n }\n }\n\n if (middlewareData.size) {\n const { availableWidth, availableHeight } = middlewareData.size;\n \n if (availableWidth !== undefined) {\n element.setAttribute('data-available-width', availableWidth.toString());\n }\n if (availableHeight !== undefined) {\n element.setAttribute('data-available-height', availableHeight.toString());\n }\n }\n }\n}\n\nexport class PortalContentUtils {\n static createPortalPanel(component: any): HTMLElement {\n // Find the panel slot content (typically a nile-menu)\n const panelSlot = component.shadowRoot?.querySelector('.dropdown__panel') as HTMLSlotElement;\n if (!panelSlot) {\n // Fallback: try to find in light DOM\n const slot = component.querySelector('[slot]');\n if (!slot || slot.getAttribute('slot') === 'trigger') {\n return document.createElement('div');\n }\n }\n\n // Get assigned elements from the slot\n let assignedElements: Element[] = panelSlot?.assignedElements({ flatten: true }) as Element[] || [];\n \n // If no assigned elements, try direct children that aren't in trigger slot\n if (assignedElements.length === 0) {\n const children = Array.from(component.children) as Element[];\n assignedElements = children.filter(child => {\n const slot = child.getAttribute('slot');\n return !slot || slot !== 'trigger';\n });\n }\n\n // Create a container for the cloned panel\n const panelContainer = document.createElement('div');\n panelContainer.className = 'dropdown__panel';\n panelContainer.setAttribute('part', 'panel');\n panelContainer.setAttribute('aria-hidden', 'false');\n panelContainer.setAttribute('aria-labelledby', 'dropdown');\n\n // Clone all assigned elements\n assignedElements.forEach((element: Element) => {\n const clonedElement = element.cloneNode(true) as HTMLElement;\n this.processInlineEventHandlers(clonedElement);\n panelContainer.appendChild(clonedElement);\n });\n\n return panelContainer;\n }\n\n static updatePortalPanel(clonedPanel: HTMLElement, component: any): void {\n if (!clonedPanel) return;\n\n // Clear existing content\n clonedPanel.innerHTML = '';\n\n // Re-clone the panel content\n const panelSlot = component.shadowRoot?.querySelector('.dropdown__panel') as HTMLSlotElement;\n let assignedElements: Element[] = panelSlot?.assignedElements({ flatten: true }) as Element[] || [];\n \n if (assignedElements.length === 0) {\n const children = Array.from(component.children) as Element[];\n assignedElements = children.filter(child => {\n const slot = child.getAttribute('slot');\n return !slot || slot !== 'trigger';\n });\n }\n\n assignedElements.forEach((element: Element) => {\n const clonedElement = element.cloneNode(true) as HTMLElement;\n this.processInlineEventHandlers(clonedElement);\n clonedPanel.appendChild(clonedElement);\n });\n }\n\n static processInlineEventHandlers(element: HTMLElement): void {\n const eventHandlerAttrs = ['onclick', 'onchange', 'oninput', 'onsubmit', 'onfocus', 'onblur', 'onkeydown', 'onkeyup'];\n \n eventHandlerAttrs.forEach(attr => {\n const eventType = attr.replace('on', '');\n const handler = element.getAttribute(attr);\n if (handler) {\n element.removeAttribute(attr);\n element.addEventListener(eventType, (event: Event) => {\n new Function('event', handler).call(element, event);\n });\n }\n element.querySelectorAll(`[${attr}]`).forEach(child => {\n const childHandler = child.getAttribute(attr);\n if (childHandler) {\n child.removeAttribute(attr);\n child.addEventListener(eventType, (event: Event) => {\n new Function('event', childHandler).call(child, event);\n });\n }\n });\n });\n }\n}\n\nexport class PortalEventUtils {\n static setupPortalEventListeners(clonedPanel: HTMLElement, component: any): void {\n if (!clonedPanel) return;\n\n this.setupMenuSelectListeners(clonedPanel, component);\n this.setupKeyDownListeners(clonedPanel, component);\n this.setupEventForwarding(clonedPanel, component);\n }\n\n static setupMenuSelectListeners(clonedPanel: HTMLElement, component: any): void {\n if (!clonedPanel) return;\n\n // Listen for nile-select events from menu items\n clonedPanel.addEventListener('nile-select', (event: Event) => {\n const customEvent = event as CustomEvent;\n // Forward the event to the original component\n if (component.handlePanelSelect) {\n component.handlePanelSelect(customEvent);\n }\n });\n }\n\n static setupKeyDownListeners(clonedPanel: HTMLElement, component: any): void {\n if (!clonedPanel) return;\n\n // Listen for keydown events (like Escape)\n clonedPanel.addEventListener('keydown', (event: KeyboardEvent) => {\n if (component.handleKeyDown) {\n component.handleKeyDown(event);\n }\n });\n }\n\n static setupEventForwarding(clonedPanel: HTMLElement, component: any): void {\n if (!clonedPanel) return;\n\n const panelSlot = component.shadowRoot?.querySelector('.dropdown__panel') as HTMLSlotElement;\n if (!panelSlot) return;\n\n let assignedElements: Element[] = panelSlot.assignedElements({ flatten: true }) as Element[] || [];\n if (assignedElements.length === 0) {\n const children = Array.from(component.children) as Element[];\n assignedElements = children.filter(child => {\n const slot = child.getAttribute('slot');\n return !slot || slot !== 'trigger';\n });\n }\n\n const originalMenu = assignedElements[0];\n if (!originalMenu) return;\n\n const eventTypes = ['click', 'change', 'input', 'submit', 'focus', 'blur', 'keydown', 'keyup', 'mousedown', 'mouseup'];\n \n eventTypes.forEach(eventType => {\n clonedPanel.addEventListener(eventType, (event: Event) => {\n const target = event.target as HTMLElement;\n if (!target) return;\n\n const clonedMenuItem = target.closest('nile-menu-item');\n if (clonedMenuItem) {\n const clonedItems = Array.from(clonedPanel.querySelectorAll('nile-menu-item'));\n const originalItems = Array.from(originalMenu.querySelectorAll('nile-menu-item'));\n const index = clonedItems.indexOf(clonedMenuItem);\n const originalItem = originalItems[index];\n\n if (originalItem) {\n const originalEvent = event as any;\n let newEvent: Event;\n \n if (originalEvent instanceof MouseEvent) {\n newEvent = new MouseEvent(eventType, {\n bubbles: true,\n cancelable: true,\n composed: true,\n button: originalEvent.button,\n buttons: originalEvent.buttons,\n clientX: originalEvent.clientX,\n clientY: originalEvent.clientY,\n ctrlKey: originalEvent.ctrlKey,\n shiftKey: originalEvent.shiftKey,\n altKey: originalEvent.altKey,\n metaKey: originalEvent.metaKey\n });\n } else if (originalEvent instanceof KeyboardEvent) {\n newEvent = new KeyboardEvent(eventType, {\n bubbles: true,\n cancelable: true,\n composed: true,\n key: originalEvent.key,\n code: originalEvent.code,\n keyCode: originalEvent.keyCode,\n which: originalEvent.which,\n ctrlKey: originalEvent.ctrlKey,\n shiftKey: originalEvent.shiftKey,\n altKey: originalEvent.altKey,\n metaKey: originalEvent.metaKey\n });\n } else {\n newEvent = new Event(eventType, {\n bubbles: true,\n cancelable: true,\n composed: true\n });\n }\n \n originalItem.dispatchEvent(newEvent);\n }\n }\n }, true);\n });\n }\n}\n\n"]}
|
|
1
|
+
{"version":3,"file":"portal-utils.js","sourceRoot":"","sources":["../../../src/nile-dropdown/portal-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { \n type Placement,\n type MiddlewareData\n} from '@floating-ui/dom';\n\nexport class PortalUtils {\n static calculateAvailableSpace(referenceElement: HTMLElement): {\n spaceAbove: number;\n spaceBelow: number;\n spaceLeft: number;\n spaceRight: number;\n viewportHeight: number;\n viewportWidth: number;\n } {\n const rect = referenceElement.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n const spaceBelow = viewportHeight - rect.bottom;\n const spaceAbove = rect.top;\n const spaceRight = viewportWidth - rect.right;\n const spaceLeft = rect.left;\n \n return { spaceAbove, spaceBelow, spaceLeft, spaceRight, viewportHeight, viewportWidth };\n }\n\n static getOptimalPlacement(referenceElement: HTMLElement): Placement {\n const { spaceAbove, spaceBelow, spaceLeft, spaceRight } = this.calculateAvailableSpace(referenceElement);\n \n if (spaceBelow >= 200 && spaceBelow >= spaceAbove) {\n return 'bottom';\n } else if (spaceAbove >= 200 && spaceAbove > spaceBelow) {\n return 'top';\n }\n \n if (spaceRight >= 200 && spaceRight >= spaceLeft) {\n return 'right';\n } else if (spaceLeft >= 200) {\n return 'left';\n }\n \n return 'bottom';\n }\n\n static findBoundaryElements(component: HTMLElement): Element[] | undefined {\n const boundaryElements: Element[] = [];\n \n let currentElement = component.parentElement;\n \n while (currentElement && currentElement !== document.body) {\n const computedStyle = window.getComputedStyle(currentElement);\n const overflow = computedStyle.overflow;\n const overflowY = computedStyle.overflowY;\n const overflowX = computedStyle.overflowX;\n \n if (overflow === 'auto' || overflow === 'scroll' || \n overflowY === 'auto' || overflowY === 'scroll' ||\n overflowX === 'auto' || overflowX === 'scroll') {\n boundaryElements.push(currentElement);\n }\n \n if (currentElement.hasAttribute('data-floating-boundary') ||\n currentElement.classList.contains('floating-boundary') ||\n currentElement.classList.contains('scroll-container')) {\n boundaryElements.push(currentElement);\n }\n \n currentElement = currentElement.parentElement;\n }\n \n return boundaryElements.length > 0 ? boundaryElements : undefined;\n }\n\n static calculateOptimalHeight(\n referenceRect: { x: number; y: number; width: number; height: number },\n viewportHeight: number,\n placement: Placement\n ): number {\n const spaceBelow = viewportHeight - (referenceRect.y + referenceRect.height);\n const spaceAbove = referenceRect.y;\n \n if (placement.startsWith('top')) {\n return Math.max(spaceAbove - 20, 100);\n } else if (placement.startsWith('bottom')) {\n return Math.max(spaceBelow - 20, 100);\n } else if (placement.startsWith('left') || placement.startsWith('right')) {\n return Math.max(Math.min(spaceAbove, spaceBelow) - 20, 100);\n }\n \n return Math.max(Math.min(spaceAbove, spaceBelow) - 20, 100);\n }\n\n static extractStylesAsCSS(styles: any): string {\n if (typeof styles === 'string') {\n return styles;\n }\n \n if (Array.isArray(styles)) {\n return styles.map(style => this.extractStylesAsCSS(style)).join('\\n');\n }\n \n if (styles && typeof styles === 'object' && styles.cssText) {\n return styles.cssText;\n }\n \n return '';\n }\n\n static generateStyleId(): string {\n return `nile-dropdown-styles-${Math.random().toString(36).substring(2, 11)}`;\n }\n\n static isPositioningOptimal(\n placement: Placement,\n referenceElement: HTMLElement\n ): boolean {\n const { spaceAbove, spaceBelow, spaceLeft, spaceRight } = this.calculateAvailableSpace(referenceElement);\n \n const isAbove = placement.startsWith('top');\n const isBelow = placement.startsWith('bottom');\n const isLeft = placement.startsWith('left');\n const isRight = placement.startsWith('right');\n \n if (isAbove && spaceBelow > spaceAbove) return false;\n if (isBelow && spaceAbove > spaceBelow) return false;\n if (isLeft && spaceRight > spaceLeft) return false;\n if (isRight && spaceLeft > spaceRight) return false;\n \n return true;\n }\n\n static applyCollisionData(\n element: HTMLElement,\n middlewareData: MiddlewareData,\n placement: Placement\n ): void {\n if (middlewareData.flip) {\n const { overflows } = middlewareData.flip;\n \n element.setAttribute('data-placement', placement);\n \n if (overflows && overflows.length > 0) {\n const overflowPlacements = overflows.map(overflow => overflow.placement).join(',');\n element.setAttribute('data-overflow', overflowPlacements);\n } else {\n element.removeAttribute('data-overflow');\n }\n }\n\n if (middlewareData.shift) {\n const { x, y } = middlewareData.shift;\n \n if (x !== undefined && y !== undefined && (x !== 0 || y !== 0)) {\n element.setAttribute('data-shift', `${x},${y}`);\n } else {\n element.removeAttribute('data-shift');\n }\n }\n\n if (middlewareData.size) {\n const { availableWidth, availableHeight } = middlewareData.size;\n \n if (availableWidth !== undefined) {\n element.setAttribute('data-available-width', availableWidth.toString());\n }\n if (availableHeight !== undefined) {\n element.setAttribute('data-available-height', availableHeight.toString());\n }\n }\n }\n}\n\nexport class PortalContentUtils {\n static createPortalPanel(component: any): HTMLElement {\n // Find the panel slot content (typically a nile-menu)\n const panelSlot = component.shadowRoot?.querySelector('.dropdown__panel') as HTMLSlotElement;\n if (!panelSlot) {\n // Fallback: try to find in light DOM\n const slot = component.querySelector('[slot]');\n if (!slot || slot.getAttribute('slot') === 'trigger') {\n return document.createElement('div');\n }\n }\n\n // Get assigned elements from the slot\n let assignedElements: Element[] = panelSlot?.assignedElements({ flatten: true }) as Element[] || [];\n \n // If no assigned elements, try direct children that aren't in trigger slot\n if (assignedElements.length === 0) {\n const children = Array.from(component.children) as Element[];\n assignedElements = children.filter(child => {\n const slot = child.getAttribute('slot');\n return !slot || slot !== 'trigger';\n });\n }\n\n // Create a container for the cloned panel\n const panelContainer = document.createElement('div');\n panelContainer.className = 'dropdown__panel';\n panelContainer.setAttribute('part', 'panel');\n panelContainer.setAttribute('aria-hidden', 'false');\n panelContainer.setAttribute('aria-labelledby', 'dropdown');\n\n // Clone all assigned elements\n assignedElements.forEach((element: Element) => {\n const clonedElement = element.cloneNode(true) as HTMLElement;\n this.processInlineEventHandlers(clonedElement);\n panelContainer.appendChild(clonedElement);\n });\n\n return panelContainer;\n }\n\n static updatePortalPanel(clonedPanel: HTMLElement, component: any): void {\n if (!clonedPanel) return;\n\n // Clear existing content\n clonedPanel.innerHTML = '';\n\n // Re-clone the panel content\n const panelSlot = component.shadowRoot?.querySelector('.dropdown__panel') as HTMLSlotElement;\n let assignedElements: Element[] = panelSlot?.assignedElements({ flatten: true }) as Element[] || [];\n \n if (assignedElements.length === 0) {\n const children = Array.from(component.children) as Element[];\n assignedElements = children.filter(child => {\n const slot = child.getAttribute('slot');\n return !slot || slot !== 'trigger';\n });\n }\n\n assignedElements.forEach((element: Element) => {\n const clonedElement = element.cloneNode(true) as HTMLElement;\n this.processInlineEventHandlers(clonedElement);\n clonedPanel.appendChild(clonedElement);\n });\n }\n\n static processInlineEventHandlers(element: HTMLElement): void {\n const eventHandlerAttrs = ['onclick', 'onchange', 'oninput', 'onsubmit', 'onfocus', 'onblur', 'onkeydown', 'onkeyup'];\n \n eventHandlerAttrs.forEach(attr => {\n element.removeAttribute(attr);\n element.querySelectorAll(`[${attr}]`).forEach(child => {\n child.removeAttribute(attr);\n });\n });\n }\n}\n\nexport class PortalEventUtils {\n static setupPortalEventListeners(clonedPanel: HTMLElement, component: any): void {\n if (!clonedPanel) return;\n\n this.setupMenuSelectListeners(clonedPanel, component);\n this.setupKeyDownListeners(clonedPanel, component);\n this.setupEventForwarding(clonedPanel, component);\n }\n\n static setupMenuSelectListeners(clonedPanel: HTMLElement, component: any): void {\n if (!clonedPanel) return;\n\n // Listen for nile-select events from menu items\n clonedPanel.addEventListener('nile-select', (event: Event) => {\n const customEvent = event as CustomEvent;\n // Forward the event to the original component\n if (component.handlePanelSelect) {\n component.handlePanelSelect(customEvent);\n }\n });\n }\n\n static setupKeyDownListeners(clonedPanel: HTMLElement, component: any): void {\n if (!clonedPanel) return;\n\n // Listen for keydown events (like Escape)\n clonedPanel.addEventListener('keydown', (event: KeyboardEvent) => {\n if (component.handleKeyDown) {\n component.handleKeyDown(event);\n }\n });\n }\n\n static setupEventForwarding(clonedPanel: HTMLElement, component: any): void {\n if (!clonedPanel) return;\n\n const panelSlot = component.shadowRoot?.querySelector('.dropdown__panel') as HTMLSlotElement;\n if (!panelSlot) return;\n\n let assignedElements: Element[] = panelSlot.assignedElements({ flatten: true }) as Element[] || [];\n if (assignedElements.length === 0) {\n const children = Array.from(component.children) as Element[];\n assignedElements = children.filter(child => {\n const slot = child.getAttribute('slot');\n return !slot || slot !== 'trigger';\n });\n }\n\n const originalMenu = assignedElements[0];\n if (!originalMenu) return;\n\n const findOriginalElement = (clonedElement: HTMLElement): HTMLElement | null => {\n const clonedMenuItem = clonedElement.closest('nile-menu-item');\n if (clonedMenuItem) {\n const clonedItems = Array.from(clonedPanel.querySelectorAll('nile-menu-item'));\n const originalItems = Array.from(originalMenu.querySelectorAll('nile-menu-item'));\n const index = clonedItems.indexOf(clonedMenuItem);\n const originalMenuItem = originalItems[index];\n \n if (originalMenuItem) {\n if (clonedElement === clonedMenuItem) {\n return originalMenuItem;\n }\n \n const clonedTagName = clonedElement.tagName.toLowerCase();\n const clonedElements = Array.from(clonedMenuItem.querySelectorAll(clonedTagName));\n const originalElements = Array.from(originalMenuItem.querySelectorAll(clonedTagName));\n const elementIndex = clonedElements.indexOf(clonedElement);\n \n if (elementIndex >= 0 && originalElements[elementIndex]) {\n return originalElements[elementIndex] as HTMLElement;\n }\n \n return originalMenuItem;\n }\n }\n return null;\n };\n\n const forwardEvent = (event: Event, originalElement: HTMLElement) => {\n const originalEvent = event as any;\n let newEvent: Event;\n \n if (originalEvent instanceof MouseEvent) {\n newEvent = new MouseEvent(event.type, {\n bubbles: true,\n cancelable: true,\n composed: true,\n button: originalEvent.button,\n buttons: originalEvent.buttons,\n clientX: originalEvent.clientX,\n clientY: originalEvent.clientY,\n ctrlKey: originalEvent.ctrlKey,\n shiftKey: originalEvent.shiftKey,\n altKey: originalEvent.altKey,\n metaKey: originalEvent.metaKey\n });\n } else if (originalEvent instanceof KeyboardEvent) {\n newEvent = new KeyboardEvent(event.type, {\n bubbles: true,\n cancelable: true,\n composed: true,\n key: originalEvent.key,\n code: originalEvent.code,\n keyCode: originalEvent.keyCode,\n which: originalEvent.which,\n ctrlKey: originalEvent.ctrlKey,\n shiftKey: originalEvent.shiftKey,\n altKey: originalEvent.altKey,\n metaKey: originalEvent.metaKey\n });\n } else if (originalEvent instanceof CustomEvent) {\n newEvent = new CustomEvent(event.type, {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: originalEvent.detail\n });\n } else {\n newEvent = new Event(event.type, {\n bubbles: true,\n cancelable: true,\n composed: true\n });\n }\n \n originalElement.dispatchEvent(newEvent);\n };\n\n const syncElementState = (clonedElement: HTMLElement, originalElement: HTMLElement) => {\n if (clonedElement.tagName.toLowerCase() === 'nile-checkbox' && \n originalElement.tagName.toLowerCase() === 'nile-checkbox') {\n const clonedCheckbox = clonedElement as any;\n const originalCheckbox = originalElement as any;\n if ('checked' in originalCheckbox && 'checked' in clonedCheckbox) {\n clonedCheckbox.checked = originalCheckbox.checked;\n }\n if ('indeterminate' in originalCheckbox && 'indeterminate' in clonedCheckbox) {\n clonedCheckbox.indeterminate = originalCheckbox.indeterminate;\n }\n }\n };\n\n const eventTypes = ['click', 'change', 'input', 'submit', 'focus', 'blur', 'keydown', 'keyup', 'mousedown', 'mouseup'];\n \n eventTypes.forEach(eventType => {\n clonedPanel.addEventListener(eventType, (event: Event) => {\n const target = event.target as HTMLElement;\n if (!target) return;\n\n const originalItem = findOriginalElement(target);\n if (originalItem) {\n if (eventType === 'click') {\n if (target.tagName.toLowerCase() === 'nile-checkbox') {\n event.stopImmediatePropagation();\n event.preventDefault();\n \n const originalCheckbox = originalItem as any;\n if (originalCheckbox && typeof originalCheckbox.click === 'function') {\n originalCheckbox.click();\n setTimeout(() => {\n syncElementState(target, originalItem);\n }, 10);\n } else {\n forwardEvent(event, originalItem);\n setTimeout(() => {\n syncElementState(target, originalItem);\n }, 10);\n }\n } else {\n event.stopImmediatePropagation();\n event.preventDefault();\n forwardEvent(event, originalItem);\n }\n } else {\n forwardEvent(event, originalItem);\n }\n }\n }, true);\n });\n\n const clonedCheckboxes = Array.from(clonedPanel.querySelectorAll('nile-checkbox'));\n const originalCheckboxes = Array.from(originalMenu.querySelectorAll('nile-checkbox'));\n \n clonedCheckboxes.forEach((clonedCheckbox, index) => {\n const originalCheckbox = originalCheckboxes[index];\n if (originalCheckbox) {\n originalCheckbox.addEventListener('nile-change', () => {\n syncElementState(clonedCheckbox as HTMLElement, originalCheckbox as HTMLElement);\n });\n }\n });\n\n clonedPanel.addEventListener('nile-change', (event: CustomEvent) => {\n const target = event.target as HTMLElement;\n if (!target) return;\n\n const originalElement = findOriginalElement(target);\n if (originalElement) {\n const originalEvent = event as CustomEvent;\n \n if (target.tagName.toLowerCase() === 'nile-checkbox' && originalEvent.detail?.checked !== undefined) {\n const clonedCheckbox = target as any;\n clonedCheckbox.checked = originalEvent.detail.checked;\n }\n \n const newEvent = new CustomEvent('nile-change', {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: originalEvent.detail\n });\n originalElement.dispatchEvent(newEvent);\n }\n }, true);\n }\n}\n\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2025
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import type { FloatingPanelAnchor } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* Manages anchor resolution for the floating panel
|
|
10
|
+
*/
|
|
11
|
+
export declare class AnchorManager {
|
|
12
|
+
/**
|
|
13
|
+
* Resolves the anchor element from the anchor property
|
|
14
|
+
* @param anchor - The anchor property (HTMLElement, string selector, or null)
|
|
15
|
+
* @returns The resolved HTMLElement (defaults to document.body)
|
|
16
|
+
*/
|
|
17
|
+
static resolveAnchor(anchor: FloatingPanelAnchor): HTMLElement;
|
|
18
|
+
/**
|
|
19
|
+
* Appends the panel container to the anchor element
|
|
20
|
+
*/
|
|
21
|
+
static appendToAnchor(anchor: HTMLElement, panelContainer: HTMLElement): void;
|
|
22
|
+
/**
|
|
23
|
+
* Removes the panel container from its parent
|
|
24
|
+
*/
|
|
25
|
+
static removeFromAnchor(panelContainer: HTMLElement): void;
|
|
26
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2025
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Manages anchor resolution for the floating panel
|
|
9
|
+
*/
|
|
10
|
+
export class AnchorManager {
|
|
11
|
+
/**
|
|
12
|
+
* Resolves the anchor element from the anchor property
|
|
13
|
+
* @param anchor - The anchor property (HTMLElement, string selector, or null)
|
|
14
|
+
* @returns The resolved HTMLElement (defaults to document.body)
|
|
15
|
+
*/
|
|
16
|
+
static resolveAnchor(anchor) {
|
|
17
|
+
if (anchor instanceof HTMLElement) {
|
|
18
|
+
return anchor;
|
|
19
|
+
}
|
|
20
|
+
if (typeof anchor === 'string') {
|
|
21
|
+
// Try querySelector first, then getElementById
|
|
22
|
+
const element = document.querySelector(anchor);
|
|
23
|
+
if (element) {
|
|
24
|
+
return element;
|
|
25
|
+
}
|
|
26
|
+
const byId = document.getElementById(anchor);
|
|
27
|
+
if (byId) {
|
|
28
|
+
return byId;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// Default to document.body
|
|
32
|
+
return document.body;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Appends the panel container to the anchor element
|
|
36
|
+
*/
|
|
37
|
+
static appendToAnchor(anchor, panelContainer) {
|
|
38
|
+
anchor.appendChild(panelContainer);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Removes the panel container from its parent
|
|
42
|
+
*/
|
|
43
|
+
static removeFromAnchor(panelContainer) {
|
|
44
|
+
if (panelContainer.parentNode) {
|
|
45
|
+
panelContainer.parentNode.removeChild(panelContainer);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=anchor-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anchor-manager.js","sourceRoot":"","sources":["../../../src/nile-floating-panel/anchor-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,MAAM,OAAO,aAAa;IACxB;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,MAA2B;QAC9C,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,+CAA+C;YAC/C,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAgB,CAAC;YAC9D,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,OAAO,CAAC;YACjB,CAAC;YACD,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,MAAmB,EAAE,cAA2B;QACpE,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,cAA2B;QACjD,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC;YAC9B,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;CACF","sourcesContent":["/**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport type { FloatingPanelAnchor } from './types';\n\n/**\n * Manages anchor resolution for the floating panel\n */\nexport class AnchorManager {\n /**\n * Resolves the anchor element from the anchor property\n * @param anchor - The anchor property (HTMLElement, string selector, or null)\n * @returns The resolved HTMLElement (defaults to document.body)\n */\n static resolveAnchor(anchor: FloatingPanelAnchor): HTMLElement {\n if (anchor instanceof HTMLElement) {\n return anchor;\n }\n\n if (typeof anchor === 'string') {\n // Try querySelector first, then getElementById\n const element = document.querySelector(anchor) as HTMLElement;\n if (element) {\n return element;\n }\n const byId = document.getElementById(anchor);\n if (byId) {\n return byId;\n }\n }\n\n // Default to document.body\n return document.body;\n }\n\n /**\n * Appends the panel container to the anchor element\n */\n static appendToAnchor(anchor: HTMLElement, panelContainer: HTMLElement): void {\n anchor.appendChild(panelContainer);\n }\n\n /**\n * Removes the panel container from its parent\n */\n static removeFromAnchor(panelContainer: HTMLElement): void {\n if (panelContainer.parentNode) {\n panelContainer.parentNode.removeChild(panelContainer);\n }\n }\n}\n\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2025
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Manages content for the floating panel (slot or data attribute)
|
|
9
|
+
*/
|
|
10
|
+
export declare class ContentManager {
|
|
11
|
+
/**
|
|
12
|
+
* Updates the panel container with content from slot or data attribute
|
|
13
|
+
*/
|
|
14
|
+
static updatePanelContent(panelContainer: HTMLElement, slot: HTMLSlotElement | null, dataContent: string): void;
|
|
15
|
+
/**
|
|
16
|
+
* Checks if slot has content
|
|
17
|
+
*/
|
|
18
|
+
static hasSlotContent(slot: HTMLSlotElement | null): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Gets slot content
|
|
21
|
+
*/
|
|
22
|
+
static getSlotContent(slot: HTMLSlotElement | null): Node[];
|
|
23
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2025
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Manages content for the floating panel (slot or data attribute)
|
|
9
|
+
*/
|
|
10
|
+
export class ContentManager {
|
|
11
|
+
/**
|
|
12
|
+
* Updates the panel container with content from slot or data attribute
|
|
13
|
+
*/
|
|
14
|
+
static updatePanelContent(panelContainer, slot, dataContent) {
|
|
15
|
+
// Clear existing content
|
|
16
|
+
panelContainer.innerHTML = '';
|
|
17
|
+
// Get slot content from light DOM
|
|
18
|
+
const slotContent = slot ? slot.assignedNodes({ flatten: true }) : [];
|
|
19
|
+
// Check if slot has meaningful content
|
|
20
|
+
const hasSlotContent = slotContent.length > 0 &&
|
|
21
|
+
slotContent.some(node => {
|
|
22
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
23
|
+
return node.textContent?.trim() !== '';
|
|
24
|
+
}
|
|
25
|
+
return node instanceof HTMLElement;
|
|
26
|
+
});
|
|
27
|
+
if (hasSlotContent) {
|
|
28
|
+
// Clone slot content
|
|
29
|
+
slotContent.forEach(node => {
|
|
30
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
31
|
+
const textNode = document.createTextNode(node.textContent || '');
|
|
32
|
+
panelContainer.appendChild(textNode);
|
|
33
|
+
}
|
|
34
|
+
else if (node instanceof HTMLElement) {
|
|
35
|
+
panelContainer.appendChild(node.cloneNode(true));
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
else if (dataContent) {
|
|
40
|
+
// Use data attribute content
|
|
41
|
+
panelContainer.textContent = dataContent;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Checks if slot has content
|
|
46
|
+
*/
|
|
47
|
+
static hasSlotContent(slot) {
|
|
48
|
+
if (!slot) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
const slotContent = slot.assignedNodes({ flatten: true });
|
|
52
|
+
return slotContent.length > 0 &&
|
|
53
|
+
slotContent.some(node => {
|
|
54
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
55
|
+
return node.textContent?.trim() !== '';
|
|
56
|
+
}
|
|
57
|
+
return node instanceof HTMLElement;
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Gets slot content
|
|
62
|
+
*/
|
|
63
|
+
static getSlotContent(slot) {
|
|
64
|
+
return slot ? slot.assignedNodes({ flatten: true }) : [];
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=content-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-manager.js","sourceRoot":"","sources":["../../../src/nile-floating-panel/content-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,MAAM,OAAO,cAAc;IACzB;;OAEG;IACH,MAAM,CAAC,kBAAkB,CACvB,cAA2B,EAC3B,IAA4B,EAC5B,WAAmB;QAEnB,yBAAyB;QACzB,cAAc,CAAC,SAAS,GAAG,EAAE,CAAC;QAE9B,kCAAkC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtE,uCAAuC;QACvC,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;YAC3C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACtB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;oBACrC,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;gBACzC,CAAC;gBACD,OAAO,IAAI,YAAY,WAAW,CAAC;YACrC,CAAC,CAAC,CAAC;QAEL,IAAI,cAAc,EAAE,CAAC;YACnB,qBAAqB;YACrB,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;oBACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;oBACjE,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBACvC,CAAC;qBAAM,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;oBACvC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,WAAW,EAAE,CAAC;YACvB,6BAA6B;YAC7B,cAAc,CAAC,WAAW,GAAG,WAAW,CAAC;QAC3C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,IAA4B;QAChD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC;YAC3B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACtB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;oBACrC,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;gBACzC,CAAC;gBACD,OAAO,IAAI,YAAY,WAAW,CAAC;YACrC,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,IAA4B;QAChD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,CAAC;CACF","sourcesContent":["/**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport type { FloatingPanelContentConfig } from './types';\n\n/**\n * Manages content for the floating panel (slot or data attribute)\n */\nexport class ContentManager {\n /**\n * Updates the panel container with content from slot or data attribute\n */\n static updatePanelContent(\n panelContainer: HTMLElement,\n slot: HTMLSlotElement | null,\n dataContent: string\n ): void {\n // Clear existing content\n panelContainer.innerHTML = '';\n\n // Get slot content from light DOM\n const slotContent = slot ? slot.assignedNodes({ flatten: true }) : [];\n\n // Check if slot has meaningful content\n const hasSlotContent = slotContent.length > 0 &&\n slotContent.some(node => {\n if (node.nodeType === Node.TEXT_NODE) {\n return node.textContent?.trim() !== '';\n }\n return node instanceof HTMLElement;\n });\n\n if (hasSlotContent) {\n // Clone slot content\n slotContent.forEach(node => {\n if (node.nodeType === Node.TEXT_NODE) {\n const textNode = document.createTextNode(node.textContent || '');\n panelContainer.appendChild(textNode);\n } else if (node instanceof HTMLElement) {\n panelContainer.appendChild(node.cloneNode(true));\n }\n });\n } else if (dataContent) {\n // Use data attribute content\n panelContainer.textContent = dataContent;\n }\n }\n\n /**\n * Checks if slot has content\n */\n static hasSlotContent(slot: HTMLSlotElement | null): boolean {\n if (!slot) {\n return false;\n }\n\n const slotContent = slot.assignedNodes({ flatten: true });\n return slotContent.length > 0 &&\n slotContent.some(node => {\n if (node.nodeType === Node.TEXT_NODE) {\n return node.textContent?.trim() !== '';\n }\n return node instanceof HTMLElement;\n });\n }\n\n /**\n * Gets slot content\n */\n static getSlotContent(slot: HTMLSlotElement | null): Node[] {\n return slot ? slot.assignedNodes({ flatten: true }) : [];\n }\n}\n\n"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2025
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Manages all event handling for the floating panel
|
|
9
|
+
*/
|
|
10
|
+
export declare class EventManager {
|
|
11
|
+
private component;
|
|
12
|
+
private panelContainer;
|
|
13
|
+
private closeOnOutsideClick;
|
|
14
|
+
private isOpen;
|
|
15
|
+
private boundHandleDocumentClick;
|
|
16
|
+
private onCloseCallback;
|
|
17
|
+
constructor(component: HTMLElement);
|
|
18
|
+
/**
|
|
19
|
+
* Sets up the outside click handler
|
|
20
|
+
*/
|
|
21
|
+
setupOutsideClickHandler(panelContainer: HTMLElement, closeOnOutsideClick: boolean, isOpen: boolean, onClose: () => void): void;
|
|
22
|
+
/**
|
|
23
|
+
* Updates the outside click handler configuration
|
|
24
|
+
*/
|
|
25
|
+
updateOutsideClickHandler(panelContainer: HTMLElement | null, closeOnOutsideClick: boolean, isOpen: boolean): void;
|
|
26
|
+
/**
|
|
27
|
+
* Cleans up the outside click handler
|
|
28
|
+
*/
|
|
29
|
+
cleanupOutsideClickHandler(): void;
|
|
30
|
+
/**
|
|
31
|
+
* Handles document click events to detect outside clicks
|
|
32
|
+
*/
|
|
33
|
+
private handleDocumentClick;
|
|
34
|
+
/**
|
|
35
|
+
* Cleans up all event handlers
|
|
36
|
+
*/
|
|
37
|
+
destroy(): void;
|
|
38
|
+
}
|