@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nile-virtual-select.test.js","sourceRoot":"","sources":["../../../src/nile-virtual-select-disabled/nile-virtual-select.test.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2023\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 { expect, fixture, html } from '@open-wc/testing';\nimport type NileVirtualSelect from './nile-virtual-select';\n\ndescribe('<nile-virtual-select>', () => {\n describe('maxOptionsVisible functionality', () => {\n it('should show \"+n More\" when more options are selected than maxOptionsVisible', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select multiple max-options-visible=\"2\">\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set up test data\n el.data = [\n { value: 'option-1', label: 'Option 1' },\n { value: 'option-2', label: 'Option 2' },\n { value: 'option-3', label: 'Option 3' },\n { value: 'option-4', label: 'Option 4' }\n ];\n el.renderItemConfig = {\n getDisplayText: (item: any) => item.label\n };\n\n // Set multiple values\n el.value = ['option-1', 'option-2', 'option-3'];\n\n await el.updateComplete;\n\n // Check that the tags count element exists\n const tagsCount = el.shadowRoot?.querySelector('.select__tags-count');\n expect(tagsCount).to.exist;\n expect(tagsCount?.textContent?.trim()).to.equal('+1 More');\n });\n\n it('should not show \"+n More\" when selected options are within maxOptionsVisible limit', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select multiple max-options-visible=\"3\">\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set up test data\n el.data = [\n { value: 'option-1', label: 'Option 1' },\n { value: 'option-2', label: 'Option 2' },\n { value: 'option-3', label: 'Option 3' }\n ];\n el.renderItemConfig = {\n getDisplayText: (item: any) => item.label\n };\n\n // Set values within limit\n el.value = ['option-1', 'option-2'];\n\n await el.updateComplete;\n\n // Check that the tags count element does not exist\n const tagsCount = el.shadowRoot?.querySelector('.select__tags-count');\n expect(tagsCount).to.not.exist;\n });\n\n it('should show all tags when maxOptionsVisible is 0', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select multiple max-options-visible=\"0\">\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set up test data\n el.data = [\n { value: 'option-1', label: 'Option 1' },\n { value: 'option-2', label: 'Option 2' },\n { value: 'option-3', label: 'Option 3' },\n { value: 'option-4', label: 'Option 4' }\n ];\n el.renderItemConfig = {\n getDisplayText: (item: any) => item.label\n };\n\n // Set multiple values\n el.value = ['option-1', 'option-2', 'option-3', 'option-4'];\n\n await el.updateComplete;\n\n // Check that the tags count element does not exist\n const tagsCount = el.shadowRoot?.querySelector('.select__tags-count');\n expect(tagsCount).to.not.exist;\n\n // Check that all tags are rendered\n const tags = el.shadowRoot?.querySelectorAll('nile-tag');\n expect(tags?.length).to.equal(4);\n });\n });\n\n describe('option width functionality', () => {\n it('should render options with full width', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select>\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set up test data\n el.data = [\n { value: 'option-1', label: 'Option 1' },\n { value: 'option-2', label: 'Option 2' },\n { value: 'option-3', label: 'Option 3' }\n ];\n el.renderItemConfig = {\n getDisplayText: (item: any) => item.label\n };\n\n // Open the select to render options\n el.open = true;\n await el.updateComplete;\n\n // Get the virtualized content\n const virtualizedContent = el.shadowRoot?.querySelector('.virtualized');\n expect(virtualizedContent).to.exist;\n\n // Check that the select__options wrapper exists\n const selectOptions = el.shadowRoot?.querySelector('.select__options');\n expect(selectOptions).to.exist;\n\n // Verify the structure matches the regular select\n const listbox = el.shadowRoot?.querySelector('.select__listbox');\n expect(listbox).to.exist;\n expect(listbox?.querySelector('.select__options')).to.exist;\n });\n\n it('should render options with proper CSS classes for width', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select>\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set up test data\n el.data = [\n { value: 'option-1', label: 'Option 1' },\n { value: 'option-2', label: 'Option 2' }\n ];\n el.renderItemConfig = {\n getDisplayText: (item: any) => item.label\n };\n\n // Open the select to render options\n el.open = true;\n await el.updateComplete;\n\n // Check that the virtualized container has the proper class\n const virtualized = el.shadowRoot?.querySelector('.virtualized');\n expect(virtualized).to.exist;\n\n // Check that the select__options container exists and has proper styling\n const selectOptions = el.shadowRoot?.querySelector('.select__options');\n expect(selectOptions).to.exist;\n\n // Check that the virtualizer element exists and has proper width styling\n const virtualizer = el.shadowRoot?.querySelector('lit-virtualizer');\n expect(virtualizer).to.exist;\n });\n\n it('should render virtualized options with full width structure', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select>\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set up test data\n el.data = [\n { value: 'option-1', label: 'Option 1' },\n { value: 'option-2', label: 'Option 2' },\n { value: 'option-3', label: 'Option 3' }\n ];\n el.renderItemConfig = {\n getDisplayText: (item: any) => item.label\n };\n\n // Open the select to render options\n el.open = true;\n await el.updateComplete;\n\n // Verify the complete structure matches the regular select\n const listbox = el.shadowRoot?.querySelector('.select__listbox');\n expect(listbox).to.exist;\n\n const selectOptions = listbox?.querySelector('.select__options');\n expect(selectOptions).to.exist;\n\n const virtualized = selectOptions?.querySelector('.virtualized');\n expect(virtualized).to.exist;\n\n // Check that the structure is properly nested\n expect(listbox?.contains(selectOptions || null)).to.be.true;\n expect(selectOptions?.contains(virtualized || null)).to.be.true;\n });\n });\n\n describe('selected options highlighting', () => {\n it('should highlight selected options with red border in single select mode', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select>\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set up test data\n el.data = [\n { value: 'option-1', label: 'Option 1' },\n { value: 'option-2', label: 'Option 2' },\n { value: 'option-3', label: 'Option 3' }\n ];\n el.renderItemConfig = {\n getDisplayText: (item: any) => item.label\n };\n\n // Set a selected value\n el.value = 'option-2';\n\n // Open the select to render options\n el.open = true;\n await el.updateComplete;\n\n // Check that the selected option has the selected attribute\n const selectedOption = el.shadowRoot?.querySelector('nile-option[selected]');\n expect(selectedOption).to.exist;\n expect(selectedOption?.getAttribute('value')).to.equal('option-2');\n });\n\n it('should highlight selected options with red border in multiple select mode', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select multiple>\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set up test data\n el.data = [\n { value: 'option-1', label: 'Option 1' },\n { value: 'option-2', label: 'Option 2' },\n { value: 'option-3', label: 'Option 3' }\n ];\n el.renderItemConfig = {\n getDisplayText: (item: any) => item.label\n };\n\n // Set multiple selected values\n el.value = ['option-1', 'option-3'];\n\n // Open the select to render options\n el.open = true;\n await el.updateComplete;\n\n // Check that the selected options have the selected attribute\n const selectedOptions = el.shadowRoot?.querySelectorAll('nile-option[selected]');\n expect(selectedOptions?.length).to.equal(2);\n \n const selectedValues = Array.from(selectedOptions || []).map(option => option.getAttribute('value'));\n expect(selectedValues).to.include('option-1');\n expect(selectedValues).to.include('option-3');\n });\n\n it('should not highlight unselected options', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select>\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set up test data\n el.data = [\n { value: 'option-1', label: 'Option 1' },\n { value: 'option-2', label: 'Option 2' },\n { value: 'option-3', label: 'Option 3' }\n ];\n el.renderItemConfig = {\n getDisplayText: (item: any) => item.label\n };\n\n // Set a selected value\n el.value = 'option-2';\n\n // Open the select to render options\n el.open = true;\n await el.updateComplete;\n\n // Check that unselected options don't have the selected attribute\n const unselectedOption = el.shadowRoot?.querySelector('nile-option[value=\"option-1\"]');\n expect(unselectedOption).to.exist;\n expect(unselectedOption?.hasAttribute('selected')).to.be.false;\n });\n\n it('should show tags for pre-selected values when data is set after value', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select multiple>\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set renderItemFunction first\n el.renderItemConfig = {\n getDisplayText: (item: any) => item.label\n };\n\n // Set value before data\n el.value = ['option-1', 'option-3'];\n\n await el.updateComplete;\n\n // Initially, no tags should be shown because data is empty\n const initialTags = el.shadowRoot?.querySelectorAll('nile-tag');\n expect(initialTags?.length).to.equal(0);\n\n // Now set data\n el.data = [\n { value: 'option-1', label: 'Option 1' },\n { value: 'option-2', label: 'Option 2' },\n { value: 'option-3', label: 'Option 3' }\n ];\n\n await el.updateComplete;\n\n // Now tags should be shown\n const tags = el.shadowRoot?.querySelectorAll('nile-tag');\n expect(tags?.length).to.equal(2);\n \n const tagTexts = Array.from(tags || []).map(tag => tag.textContent?.trim());\n expect(tagTexts).to.include('Option 1');\n expect(tagTexts).to.include('Option 3');\n });\n\n it('should show tags immediately without opening dropdown', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select multiple>\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set up test data\n el.renderItemConfig = {\n getDisplayText: (item: any) => item.label\n };\n el.data = [\n { value: 'option-1', label: 'Option 1' },\n { value: 'option-2', label: 'Option 2' },\n { value: 'option-3', label: 'Option 3' }\n ];\n el.value = ['option-1', 'option-3'];\n\n await el.updateComplete;\n\n // Ensure dropdown is closed\n el.open = false;\n await el.updateComplete;\n\n // Check that tags are shown even when dropdown is closed\n const tags = el.shadowRoot?.querySelectorAll('nile-tag');\n expect(tags?.length).to.equal(2);\n \n const tagTexts = Array.from(tags || []).map(tag => tag.textContent?.trim());\n expect(tagTexts).to.include('Option 1');\n expect(tagTexts).to.include('Option 3');\n });\n\n it('should show checkbox as checked for selected options in multiple mode', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select multiple>\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set up test data\n el.renderItemConfig = {\n getDisplayText: (item: any) => item.label\n };\n el.data = [\n { value: 'option-1', label: 'Option 1' },\n { value: 'option-2', label: 'Option 2' },\n { value: 'option-3', label: 'Option 3' }\n ];\n el.value = ['option-1', 'option-3'];\n\n // Open the select to render options\n el.open = true;\n await el.updateComplete;\n\n // Check that selected options have checked checkboxes\n const selectedOptions = el.shadowRoot?.querySelectorAll('nile-option[selected]');\n expect(selectedOptions?.length).to.equal(2);\n \n selectedOptions?.forEach(option => {\n const checkbox = option.shadowRoot?.querySelector('nile-checkbox');\n expect(checkbox).to.exist;\n expect(checkbox?.checked).to.be.true;\n });\n\n // Check that unselected options have unchecked checkboxes\n const unselectedOption = el.shadowRoot?.querySelector('nile-option[value=\"option-2\"]');\n expect(unselectedOption).to.exist;\n const unselectedCheckbox = unselectedOption?.shadowRoot?.querySelector('nile-checkbox');\n expect(unselectedCheckbox).to.exist;\n expect(unselectedCheckbox?.checked).to.be.false;\n });\n });\n\n describe('no results message functionality', () => {\n it('should show no results message when data is empty and not loading', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select>\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set empty data and not loading\n el.data = [];\n el.optionsLoading = false;\n el.open = true;\n\n await el.updateComplete;\n\n // Check that no results message is shown\n const noResultsMessage = el.shadowRoot?.querySelector('.select__no-results');\n expect(noResultsMessage).to.exist;\n expect(noResultsMessage?.textContent?.trim()).to.equal('No results found');\n });\n\n it('should show custom no results message when provided', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select no-results-message=\"No data available\">\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set empty data and not loading\n el.data = [];\n el.optionsLoading = false;\n el.open = true;\n\n await el.updateComplete;\n\n // Check that custom no results message is shown\n const noResultsMessage = el.shadowRoot?.querySelector('.select__no-results');\n expect(noResultsMessage).to.exist;\n expect(noResultsMessage?.textContent?.trim()).to.equal('No data available');\n });\n\n it('should not show no results message when loading', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select>\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set empty data but loading\n el.data = [];\n el.optionsLoading = true;\n el.open = true;\n\n await el.updateComplete;\n\n // Check that no results message is not shown when loading\n const noResultsMessage = el.shadowRoot?.querySelector('.select__no-results');\n expect(noResultsMessage).to.not.exist;\n });\n\n it('should show no results message when search returns no results', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select search-enabled>\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set up test data\n el.data = [\n { value: 'option-1', label: 'Apple' },\n { value: 'option-2', label: 'Banana' },\n { value: 'option-3', label: 'Cherry' }\n ];\n el.renderItemConfig = {\n getDisplayText: (item: any) => item.label\n };\n el.open = true;\n\n await el.updateComplete;\n\n // Simulate search with no results\n el.searchValue = 'Orange';\n el.filterVirtualOptions('Orange');\n\n await el.updateComplete;\n\n // Check that no results message is shown\n const noResultsMessage = el.shadowRoot?.querySelector('.select__no-results');\n expect(noResultsMessage).to.exist;\n expect(noResultsMessage?.textContent?.trim()).to.equal('No results found');\n });\n\n it('should hide no results message when data becomes available', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select>\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Initially set empty data\n el.data = [];\n el.optionsLoading = false;\n el.open = true;\n\n await el.updateComplete;\n\n // Check that no results message is shown initially\n let noResultsMessage = el.shadowRoot?.querySelector('.select__no-results');\n expect(noResultsMessage).to.exist;\n\n // Now add data\n el.data = [\n { value: 'option-1', label: 'Option 1' },\n { value: 'option-2', label: 'Option 2' }\n ];\n\n await el.updateComplete;\n\n // Check that no results message is hidden\n noResultsMessage = el.shadowRoot?.querySelector('.select__no-results');\n expect(noResultsMessage).to.not.exist;\n });\n });\n\n describe('scroll position reset functionality', () => {\n it('should reset scroll position to top when dropdown opens', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select>\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set up test data with many items to ensure scrolling is possible\n el.data = Array.from({ length: 100 }, (_, i) => ({\n value: `option-${i}`,\n label: `Option ${i}`\n }));\n el.renderItemConfig = {\n getDisplayText: (item: any) => item.label\n };\n\n // Open the select to render options\n el.open = true;\n await el.updateComplete;\n\n // Get the virtualized container\n const virtualizedContainer = el.shadowRoot?.querySelector('.virtualized') as HTMLElement;\n expect(virtualizedContainer).to.exist;\n\n // Simulate scrolling to bottom\n virtualizedContainer.scrollTop = 1000;\n expect(virtualizedContainer.scrollTop).to.equal(1000);\n\n // Close the dropdown\n el.open = false;\n await el.updateComplete;\n\n // Reopen the dropdown\n el.open = true;\n await el.updateComplete;\n\n // Check that scroll position is reset to top\n expect(virtualizedContainer.scrollTop).to.equal(0);\n });\n\n it('should reset scroll position when search value changes', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select search-enabled>\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set up test data with many items\n el.data = Array.from({ length: 100 }, (_, i) => ({\n value: `option-${i}`,\n label: `Option ${i}`\n }));\n el.renderItemConfig = {\n getDisplayText: (item: any) => item.label\n };\n\n // Open the select\n el.open = true;\n await el.updateComplete;\n\n // Get the virtualized container\n const virtualizedContainer = el.shadowRoot?.querySelector('.virtualized') as HTMLElement;\n expect(virtualizedContainer).to.exist;\n\n // Simulate scrolling to bottom\n virtualizedContainer.scrollTop = 1000;\n expect(virtualizedContainer.scrollTop).to.equal(1000);\n\n // Change search value\n el.searchValue = 'test';\n el.filterVirtualOptions('test');\n\n await el.updateComplete;\n\n // Check that scroll position is reset to top\n expect(virtualizedContainer.scrollTop).to.equal(0);\n });\n\n it('should reset scroll position when show selected state changes', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select multiple>\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set up test data with many items\n el.data = Array.from({ length: 100 }, (_, i) => ({\n value: `option-${i}`,\n label: `Option ${i}`\n }));\n el.renderItemConfig = {\n getDisplayText: (item: any) => item.label\n };\n el.value = ['option-1', 'option-2', 'option-3'];\n\n // Open the select\n el.open = true;\n await el.updateComplete;\n\n // Get the virtualized container\n const virtualizedContainer = el.shadowRoot?.querySelector('.virtualized') as HTMLElement;\n expect(virtualizedContainer).to.exist;\n\n // Simulate scrolling to bottom\n virtualizedContainer.scrollTop = 1000;\n expect(virtualizedContainer.scrollTop).to.equal(1000);\n\n // Toggle show selected\n const showSelectedCheckbox = el.shadowRoot?.querySelector('nile-checkbox') as HTMLElement;\n showSelectedCheckbox?.click();\n\n await el.updateComplete;\n\n // Check that scroll position is reset to top\n expect(virtualizedContainer.scrollTop).to.equal(0);\n });\n });\n\n describe('small dataset handling', () => {\n it('should render small datasets without virtualizer for better sizing', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select>\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set up test data with only 3 items (small dataset)\n el.data = [\n { value: 'option-1', label: 'Option 1' },\n { value: 'option-2', label: 'Option 2' },\n { value: 'option-3', label: 'Option 3' }\n ];\n el.renderItemConfig = {\n getDisplayText: (item: any) => item.label\n };\n\n // Open the select to render options\n el.open = true;\n await el.updateComplete;\n\n // Get the virtualized container\n const virtualizedContainer = el.shadowRoot?.querySelector('.virtualized') as HTMLElement;\n expect(virtualizedContainer).to.exist;\n\n // For small datasets, there should be no lit-virtualizer element\n const virtualizer = virtualizedContainer.querySelector('lit-virtualizer');\n expect(virtualizer).to.not.exist;\n\n // Check that all options are rendered directly\n const options = virtualizedContainer.querySelectorAll('nile-option');\n expect(options.length).to.equal(3);\n\n // Verify the options have the correct values\n const optionValues = Array.from(options).map(option => option.getAttribute('value'));\n expect(optionValues).to.deep.equal(['option-1', 'option-2', 'option-3']);\n });\n\n it('should use virtualizer for large datasets', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select>\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set up test data with 100 items (large dataset)\n el.data = Array.from({ length: 100 }, (_, i) => ({\n value: `option-${i + 1}`,\n label: `Option ${i + 1}`\n }));\n el.renderItemConfig = {\n getDisplayText: (item: any) => item.label\n };\n\n // Open the select to render options\n el.open = true;\n await el.updateComplete;\n\n // Get the virtualized container\n const virtualizedContainer = el.shadowRoot?.querySelector('.virtualized') as HTMLElement;\n expect(virtualizedContainer).to.exist;\n\n // For large datasets, there should be a lit-virtualizer element\n const virtualizer = virtualizedContainer.querySelector('lit-virtualizer');\n expect(virtualizer).to.exist;\n });\n\n it('should fit snugly without extra space for small datasets', async () => {\n const el = await fixture<NileVirtualSelect>(html`\n <nile-virtual-select>\n <div slot=\"label\">Test Select</div>\n </nile-virtual-select>\n `);\n\n // Set up test data with only 3 items\n el.data = [\n { value: 'option-1', label: 'Option 1' },\n { value: 'option-2', label: 'Option 2' },\n { value: 'option-3', label: 'Option 3' }\n ];\n el.renderItemConfig = {\n getDisplayText: (item: any) => item.label\n };\n\n // Open the select to render options\n el.open = true;\n await el.updateComplete;\n\n // Get the listbox container\n const listbox = el.shadowRoot?.querySelector('.select__listbox') as HTMLElement;\n expect(listbox).to.exist;\n\n // Get the virtualized container\n const virtualizedContainer = el.shadowRoot?.querySelector('.virtualized') as HTMLElement;\n expect(virtualizedContainer).to.exist;\n\n // Check that the container doesn't have unnecessary extra space\n // The height should be appropriate for the content\n const containerHeight = virtualizedContainer.offsetHeight;\n const options = virtualizedContainer.querySelectorAll('nile-option');\n \n // Each option should be visible and the container should not have excessive height\n expect(options.length).to.equal(3);\n expect(containerHeight).to.be.greaterThan(0);\n \n // The container should not have a fixed height that's too large for 3 items\n // This is a qualitative check - the container should fit the content snugly\n const totalOptionHeight = Array.from(options).reduce((total, option) => {\n return total + (option as HTMLElement).offsetHeight;\n }, 0);\n \n // The container height should be close to the total option height (with some tolerance for padding)\n expect(containerHeight).to.be.closeTo(totalOptionHeight, 20); // Allow 20px tolerance for padding\n });\n });\n});\n"]}
|
|
@@ -0,0 +1,45 @@
|
|
|
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 Placement, type MiddlewareData } from '@floating-ui/dom';
|
|
8
|
+
export declare class PortalManager {
|
|
9
|
+
private portalContainer;
|
|
10
|
+
private originalListboxParent;
|
|
11
|
+
private measuredPopupHeight;
|
|
12
|
+
private component;
|
|
13
|
+
private cleanupAutoUpdate;
|
|
14
|
+
private currentPlacement;
|
|
15
|
+
private currentMiddlewareData;
|
|
16
|
+
constructor(component: any);
|
|
17
|
+
private createPortalAppendContainer;
|
|
18
|
+
positionPortalAppend(): void;
|
|
19
|
+
private measurePopupHeight;
|
|
20
|
+
private computeFloatingUIPosition;
|
|
21
|
+
private calculateFloatingUIPosition;
|
|
22
|
+
private createFloatingUIMiddleware;
|
|
23
|
+
private handleSizeMiddleware;
|
|
24
|
+
private createCustomPlatform;
|
|
25
|
+
private applyFloatingUIPosition;
|
|
26
|
+
private fallbackPositioning;
|
|
27
|
+
private calculateAndSetAutoSizeProperties;
|
|
28
|
+
updatePortalAppendPosition(): void;
|
|
29
|
+
handleWindowResize(): void;
|
|
30
|
+
private setupAutoUpdatePositioning;
|
|
31
|
+
private cleanupAutoUpdatePositioning;
|
|
32
|
+
private extractStylesAsCSS;
|
|
33
|
+
private injectStylesToDocument;
|
|
34
|
+
private adoptStylesToPortalAppend;
|
|
35
|
+
setupPortalAppend(): void;
|
|
36
|
+
cleanupPortalAppend(): void;
|
|
37
|
+
get portalContainerElement(): HTMLElement | null;
|
|
38
|
+
resetMeasuredHeight(): void;
|
|
39
|
+
forceReposition(): void;
|
|
40
|
+
getCurrentPlacement(): Placement;
|
|
41
|
+
getCurrentMiddlewareData(): MiddlewareData | null;
|
|
42
|
+
isUsingFloatingUI(): boolean;
|
|
43
|
+
handleViewportChange(): void;
|
|
44
|
+
isPositioningOptimal(): boolean;
|
|
45
|
+
}
|
|
@@ -0,0 +1,333 @@
|
|
|
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 { autoUpdate, computePosition, flip, offset, shift, size, platform } from '@floating-ui/dom';
|
|
8
|
+
const PortalUtils = {
|
|
9
|
+
findBoundaryElements(referenceElement) {
|
|
10
|
+
return [];
|
|
11
|
+
},
|
|
12
|
+
getOptimalPlacement(referenceElement) {
|
|
13
|
+
return 'bottom';
|
|
14
|
+
},
|
|
15
|
+
calculateOptimalHeight(referenceElement, viewportHeight, currentPlacement) {
|
|
16
|
+
return 0;
|
|
17
|
+
},
|
|
18
|
+
applyCollisionData(floatingElement, middlewareData, placement) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
export class PortalManager {
|
|
23
|
+
constructor(component) {
|
|
24
|
+
this.portalContainer = null;
|
|
25
|
+
this.originalListboxParent = null;
|
|
26
|
+
this.measuredPopupHeight = null;
|
|
27
|
+
this.cleanupAutoUpdate = null;
|
|
28
|
+
this.currentPlacement = 'bottom';
|
|
29
|
+
this.currentMiddlewareData = null;
|
|
30
|
+
this.component = component;
|
|
31
|
+
}
|
|
32
|
+
createPortalAppendContainer() {
|
|
33
|
+
const container = document.createElement('div');
|
|
34
|
+
container.style.position = 'absolute';
|
|
35
|
+
container.style.zIndex = '9999';
|
|
36
|
+
container.style.pointerEvents = 'none';
|
|
37
|
+
container.className = 'nile-virtual-select-portal-append';
|
|
38
|
+
return container;
|
|
39
|
+
}
|
|
40
|
+
positionPortalAppend() {
|
|
41
|
+
if (!this.portalContainer || !this.component.popup)
|
|
42
|
+
return;
|
|
43
|
+
this.measurePopupHeight();
|
|
44
|
+
this.computeFloatingUIPosition();
|
|
45
|
+
}
|
|
46
|
+
measurePopupHeight() {
|
|
47
|
+
if (this.measuredPopupHeight || !this.portalContainer)
|
|
48
|
+
return;
|
|
49
|
+
// Temporarily position the container to measure its height
|
|
50
|
+
this.portalContainer.style.position = 'absolute';
|
|
51
|
+
this.portalContainer.style.visibility = 'hidden';
|
|
52
|
+
this.portalContainer.style.top = '0px';
|
|
53
|
+
this.portalContainer.style.left = '0px';
|
|
54
|
+
// Force a reflow to ensure the container is rendered
|
|
55
|
+
this.portalContainer.offsetHeight;
|
|
56
|
+
// Measure the actual height
|
|
57
|
+
this.measuredPopupHeight = this.portalContainer.offsetHeight;
|
|
58
|
+
// Reset visibility
|
|
59
|
+
this.portalContainer.style.visibility = '';
|
|
60
|
+
}
|
|
61
|
+
async computeFloatingUIPosition() {
|
|
62
|
+
if (!this.portalContainer)
|
|
63
|
+
return;
|
|
64
|
+
const referenceElement = this.component.combobox || this.component;
|
|
65
|
+
const floatingElement = this.portalContainer;
|
|
66
|
+
try {
|
|
67
|
+
const { x, y, placement, middlewareData } = await this.calculateFloatingUIPosition(referenceElement, floatingElement);
|
|
68
|
+
this.applyFloatingUIPosition(floatingElement, referenceElement, x, y, placement, middlewareData);
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
console.warn('Floating UI positioning failed, falling back to simple positioning:', error);
|
|
72
|
+
this.fallbackPositioning();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async calculateFloatingUIPosition(referenceElement, floatingElement) {
|
|
76
|
+
const boundary = PortalUtils.findBoundaryElements(referenceElement);
|
|
77
|
+
const initialPlacement = PortalUtils.getOptimalPlacement(referenceElement);
|
|
78
|
+
const middleware = this.createFloatingUIMiddleware(boundary);
|
|
79
|
+
return await computePosition(referenceElement, floatingElement, {
|
|
80
|
+
placement: initialPlacement,
|
|
81
|
+
strategy: 'fixed',
|
|
82
|
+
middleware,
|
|
83
|
+
platform: this.createCustomPlatform()
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
createFloatingUIMiddleware(boundary) {
|
|
87
|
+
return [
|
|
88
|
+
offset(4),
|
|
89
|
+
size({
|
|
90
|
+
apply: this.handleSizeMiddleware.bind(this),
|
|
91
|
+
padding: 10,
|
|
92
|
+
boundary: boundary
|
|
93
|
+
}),
|
|
94
|
+
flip({
|
|
95
|
+
fallbackPlacements: ['bottom', 'top', 'bottom-start', 'top-start', 'bottom-end', 'top-end'],
|
|
96
|
+
fallbackStrategy: 'bestFit',
|
|
97
|
+
padding: 10,
|
|
98
|
+
boundary: boundary
|
|
99
|
+
}),
|
|
100
|
+
shift({
|
|
101
|
+
padding: 10,
|
|
102
|
+
crossAxis: true,
|
|
103
|
+
boundary: boundary
|
|
104
|
+
})
|
|
105
|
+
];
|
|
106
|
+
}
|
|
107
|
+
handleSizeMiddleware({ availableWidth, availableHeight, elements, rects }) {
|
|
108
|
+
const maxHeight = PortalUtils.calculateOptimalHeight(this.component, window.innerHeight, this.currentPlacement);
|
|
109
|
+
elements.floating.style.maxWidth = `${availableWidth}px`;
|
|
110
|
+
elements.floating.style.maxHeight = `${maxHeight}px`;
|
|
111
|
+
elements.floating.style.setProperty('--auto-size-available-width', `${availableWidth}px`);
|
|
112
|
+
elements.floating.style.setProperty('--auto-size-available-height', `${maxHeight}px`);
|
|
113
|
+
}
|
|
114
|
+
createCustomPlatform() {
|
|
115
|
+
return platform;
|
|
116
|
+
}
|
|
117
|
+
applyFloatingUIPosition(floatingElement, referenceElement, x, y, placement, middlewareData) {
|
|
118
|
+
Object.assign(floatingElement.style, {
|
|
119
|
+
left: `${x}px`,
|
|
120
|
+
top: `${y}px`,
|
|
121
|
+
position: 'fixed',
|
|
122
|
+
pointerEvents: 'auto'
|
|
123
|
+
});
|
|
124
|
+
this.currentPlacement = placement;
|
|
125
|
+
this.currentMiddlewareData = middlewareData;
|
|
126
|
+
PortalUtils.applyCollisionData(floatingElement, middlewareData, placement);
|
|
127
|
+
const placementClass = placement.split('-')[0];
|
|
128
|
+
floatingElement.className = `nile-virtual-select-portal-append select__listbox--${placementClass}`;
|
|
129
|
+
const referenceRect = referenceElement.getBoundingClientRect();
|
|
130
|
+
floatingElement.style.width = `${referenceRect.width}px`;
|
|
131
|
+
}
|
|
132
|
+
fallbackPositioning() {
|
|
133
|
+
if (!this.portalContainer)
|
|
134
|
+
return;
|
|
135
|
+
const referenceElement = this.component.combobox || this.component;
|
|
136
|
+
const rect = referenceElement.getBoundingClientRect();
|
|
137
|
+
const viewportHeight = window.innerHeight;
|
|
138
|
+
const popupHeight = this.measuredPopupHeight || 200;
|
|
139
|
+
const spaceBelow = viewportHeight - rect.bottom;
|
|
140
|
+
const spaceAbove = rect.top;
|
|
141
|
+
let topPosition;
|
|
142
|
+
let placementClass;
|
|
143
|
+
let maxHeight;
|
|
144
|
+
if (spaceAbove > spaceBelow) {
|
|
145
|
+
maxHeight = Math.max(spaceAbove - 20, 100);
|
|
146
|
+
topPosition = Math.max(rect.top - maxHeight - 4, 10);
|
|
147
|
+
placementClass = 'top';
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
maxHeight = Math.max(spaceBelow - 20, 100);
|
|
151
|
+
topPosition = rect.bottom + 4;
|
|
152
|
+
placementClass = 'bottom';
|
|
153
|
+
}
|
|
154
|
+
this.portalContainer.style.left = `${rect.left}px`;
|
|
155
|
+
this.portalContainer.style.top = `${topPosition}px`;
|
|
156
|
+
this.portalContainer.style.width = `${rect.width}px`;
|
|
157
|
+
this.portalContainer.style.maxHeight = `${maxHeight}px`;
|
|
158
|
+
this.portalContainer.style.pointerEvents = 'auto';
|
|
159
|
+
this.portalContainer.className = `nile-virtual-select-portal-append select__listbox--${placementClass}`;
|
|
160
|
+
this.calculateAndSetAutoSizeProperties(rect, topPosition, placementClass);
|
|
161
|
+
}
|
|
162
|
+
calculateAndSetAutoSizeProperties(rect, topPosition, placementClass) {
|
|
163
|
+
if (!this.portalContainer)
|
|
164
|
+
return;
|
|
165
|
+
const viewportHeight = window.innerHeight;
|
|
166
|
+
const viewportWidth = window.innerWidth;
|
|
167
|
+
let availableHeight;
|
|
168
|
+
if (placementClass === 'top') {
|
|
169
|
+
availableHeight = rect.top - 10;
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
availableHeight = viewportHeight - rect.bottom - 10;
|
|
173
|
+
}
|
|
174
|
+
const availableWidth = Math.min(rect.width, viewportWidth - rect.left - 10);
|
|
175
|
+
this.portalContainer.style.setProperty('--auto-size-available-height', `${Math.max(availableHeight, 100)}px`);
|
|
176
|
+
this.portalContainer.style.setProperty('--auto-size-available-width', `${Math.max(availableWidth, 200)}px`);
|
|
177
|
+
}
|
|
178
|
+
updatePortalAppendPosition() {
|
|
179
|
+
if (this.component.portal && this.portalContainer) {
|
|
180
|
+
this.positionPortalAppend();
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
handleWindowResize() {
|
|
184
|
+
if (this.component.portal && this.portalContainer) {
|
|
185
|
+
this.positionPortalAppend();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
setupAutoUpdatePositioning() {
|
|
189
|
+
if (!this.portalContainer || !this.component)
|
|
190
|
+
return;
|
|
191
|
+
this.cleanupAutoUpdatePositioning();
|
|
192
|
+
this.cleanupAutoUpdate = autoUpdate(this.component, this.portalContainer, () => {
|
|
193
|
+
this.computeFloatingUIPosition();
|
|
194
|
+
}, {
|
|
195
|
+
ancestorScroll: true,
|
|
196
|
+
ancestorResize: true,
|
|
197
|
+
elementResize: true,
|
|
198
|
+
layoutShift: true,
|
|
199
|
+
animationFrame: true
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
cleanupAutoUpdatePositioning() {
|
|
203
|
+
if (this.cleanupAutoUpdate) {
|
|
204
|
+
this.cleanupAutoUpdate();
|
|
205
|
+
this.cleanupAutoUpdate = null;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
extractStylesAsCSS(styles) {
|
|
209
|
+
if (typeof styles === 'string') {
|
|
210
|
+
return styles;
|
|
211
|
+
}
|
|
212
|
+
if (Array.isArray(styles)) {
|
|
213
|
+
return styles.map(style => this.extractStylesAsCSS(style)).join('\n');
|
|
214
|
+
}
|
|
215
|
+
if (styles && typeof styles === 'object' && styles.cssText) {
|
|
216
|
+
return styles.cssText;
|
|
217
|
+
}
|
|
218
|
+
return '';
|
|
219
|
+
}
|
|
220
|
+
injectStylesToDocument() {
|
|
221
|
+
if (!this.portalContainer)
|
|
222
|
+
return;
|
|
223
|
+
// Create a unique identifier for this component instance
|
|
224
|
+
const styleId = `nile-virtual-select-styles-${Math.random().toString(36).substring(2, 11)}`;
|
|
225
|
+
// Check if styles are already injected
|
|
226
|
+
if (document.getElementById(styleId))
|
|
227
|
+
return;
|
|
228
|
+
// Get the component's styles
|
|
229
|
+
const componentStyles = this.component.constructor.styles;
|
|
230
|
+
if (!componentStyles)
|
|
231
|
+
return;
|
|
232
|
+
// Create a style element
|
|
233
|
+
const styleElement = document.createElement('style');
|
|
234
|
+
styleElement.id = styleId;
|
|
235
|
+
styleElement.textContent = this.extractStylesAsCSS(componentStyles);
|
|
236
|
+
// Inject into document head
|
|
237
|
+
document.head.appendChild(styleElement);
|
|
238
|
+
// Store reference for cleanup
|
|
239
|
+
this.portalContainer.__injectedStyleId = styleId;
|
|
240
|
+
}
|
|
241
|
+
adoptStylesToPortalAppend() {
|
|
242
|
+
if (!this.portalContainer)
|
|
243
|
+
return;
|
|
244
|
+
this.injectStylesToDocument();
|
|
245
|
+
}
|
|
246
|
+
setupPortalAppend() {
|
|
247
|
+
if (!this.component.portal)
|
|
248
|
+
return;
|
|
249
|
+
this.component.updateComplete.then(() => {
|
|
250
|
+
const listbox = this.component.shadowRoot?.querySelector('#listbox');
|
|
251
|
+
if (listbox) {
|
|
252
|
+
this.originalListboxParent = listbox.parentElement;
|
|
253
|
+
this.portalContainer = this.createPortalAppendContainer();
|
|
254
|
+
this.portalContainer.appendChild(listbox);
|
|
255
|
+
document.body.appendChild(this.portalContainer);
|
|
256
|
+
// Adopt the component's styles to the body append container
|
|
257
|
+
this.adoptStylesToPortalAppend();
|
|
258
|
+
listbox.style.display = '';
|
|
259
|
+
this.positionPortalAppend();
|
|
260
|
+
this.setupAutoUpdatePositioning();
|
|
261
|
+
window.addEventListener('resize', this.handleWindowResize.bind(this));
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
cleanupPortalAppend() {
|
|
266
|
+
this.cleanupAutoUpdatePositioning();
|
|
267
|
+
if (this.portalContainer && this.portalContainer.parentNode) {
|
|
268
|
+
const listbox = this.portalContainer.querySelector('#listbox');
|
|
269
|
+
if (listbox && this.originalListboxParent) {
|
|
270
|
+
this.originalListboxParent.appendChild(listbox);
|
|
271
|
+
listbox.style.display = this.component.portal ? 'none' : '';
|
|
272
|
+
}
|
|
273
|
+
// Clean up injected styles if they exist
|
|
274
|
+
const injectedStyleId = this.portalContainer.__injectedStyleId;
|
|
275
|
+
if (injectedStyleId) {
|
|
276
|
+
const styleElement = document.getElementById(injectedStyleId);
|
|
277
|
+
if (styleElement) {
|
|
278
|
+
styleElement.remove();
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
this.portalContainer.parentNode.removeChild(this.portalContainer);
|
|
282
|
+
}
|
|
283
|
+
window.removeEventListener('resize', this.handleWindowResize.bind(this));
|
|
284
|
+
this.portalContainer = null;
|
|
285
|
+
this.originalListboxParent = null;
|
|
286
|
+
this.measuredPopupHeight = null;
|
|
287
|
+
this.currentPlacement = 'bottom';
|
|
288
|
+
this.currentMiddlewareData = null;
|
|
289
|
+
}
|
|
290
|
+
get portalContainerElement() {
|
|
291
|
+
return this.portalContainer;
|
|
292
|
+
}
|
|
293
|
+
resetMeasuredHeight() {
|
|
294
|
+
this.measuredPopupHeight = null;
|
|
295
|
+
}
|
|
296
|
+
forceReposition() {
|
|
297
|
+
if (this.portalContainer) {
|
|
298
|
+
this.computeFloatingUIPosition();
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
getCurrentPlacement() {
|
|
302
|
+
return this.currentPlacement;
|
|
303
|
+
}
|
|
304
|
+
getCurrentMiddlewareData() {
|
|
305
|
+
return this.currentMiddlewareData;
|
|
306
|
+
}
|
|
307
|
+
isUsingFloatingUI() {
|
|
308
|
+
return this.cleanupAutoUpdate !== null;
|
|
309
|
+
}
|
|
310
|
+
handleViewportChange() {
|
|
311
|
+
if (this.portalContainer) {
|
|
312
|
+
this.resetMeasuredHeight();
|
|
313
|
+
this.forceReposition();
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
isPositioningOptimal() {
|
|
317
|
+
if (!this.portalContainer || !this.currentMiddlewareData)
|
|
318
|
+
return true;
|
|
319
|
+
const referenceElement = this.component.combobox || this.component;
|
|
320
|
+
const rect = referenceElement.getBoundingClientRect();
|
|
321
|
+
const viewportHeight = window.innerHeight;
|
|
322
|
+
const spaceBelow = viewportHeight - rect.bottom;
|
|
323
|
+
const spaceAbove = rect.top;
|
|
324
|
+
const isAbove = this.currentPlacement.startsWith('top');
|
|
325
|
+
const isBelow = this.currentPlacement.startsWith('bottom');
|
|
326
|
+
if (isAbove && spaceBelow > spaceAbove)
|
|
327
|
+
return false;
|
|
328
|
+
if (isBelow && spaceAbove > spaceBelow)
|
|
329
|
+
return false;
|
|
330
|
+
return true;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
//# sourceMappingURL=portal-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portal-manager.js","sourceRoot":"","sources":["../../../src/nile-virtual-select-disabled/portal-manager.ts"],"names":[],"mappings":"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","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 { \n autoUpdate, \n computePosition, \n flip, \n offset, \n shift, \n size, \n platform,\n type Placement,\n type MiddlewareData,\n type ComputePositionConfig,\n type Boundary\n} from '@floating-ui/dom';\n\nconst PortalUtils = {\n findBoundaryElements(referenceElement: HTMLElement): Element[] {\n return [];\n },\n getOptimalPlacement(referenceElement: HTMLElement): Placement {\n return 'bottom';\n },\n calculateOptimalHeight(referenceElement: HTMLElement, viewportHeight: number, currentPlacement: Placement): number {\n return 0;\n },\n applyCollisionData(floatingElement: HTMLElement, middlewareData: MiddlewareData, placement: Placement): void {\n return;\n }\n};\nexport class PortalManager {\n private portalContainer: HTMLElement | null = null;\n private originalListboxParent: HTMLElement | null = null;\n private measuredPopupHeight: number | null = null;\n private component: any;\n private cleanupAutoUpdate: (() => void) | null = null;\n private currentPlacement: Placement = 'bottom';\n private currentMiddlewareData: MiddlewareData | null = null;\n\n constructor(component: any) {\n this.component = component;\n }\n\n private createPortalAppendContainer(): HTMLElement {\n const container = document.createElement('div');\n container.style.position = 'absolute';\n container.style.zIndex = '9999';\n container.style.pointerEvents = 'none';\n container.className = 'nile-virtual-select-portal-append';\n return container;\n }\n\n positionPortalAppend(): void {\n if (!this.portalContainer || !this.component.popup) return;\n\n this.measurePopupHeight();\n this.computeFloatingUIPosition();\n }\n\n private measurePopupHeight(): void {\n if (this.measuredPopupHeight || !this.portalContainer) return;\n\n // Temporarily position the container to measure its height\n this.portalContainer.style.position = 'absolute';\n this.portalContainer.style.visibility = 'hidden';\n this.portalContainer.style.top = '0px';\n this.portalContainer.style.left = '0px';\n \n // Force a reflow to ensure the container is rendered\n this.portalContainer.offsetHeight;\n \n // Measure the actual height\n this.measuredPopupHeight = this.portalContainer.offsetHeight;\n \n // Reset visibility\n this.portalContainer.style.visibility = '';\n }\n\n\n private async computeFloatingUIPosition(): Promise<void> {\n if (!this.portalContainer) return;\n\n const referenceElement = this.component.combobox || this.component;\n const floatingElement = this.portalContainer;\n\n try {\n const { x, y, placement, middlewareData } = await this.calculateFloatingUIPosition(\n referenceElement,\n floatingElement\n );\n\n this.applyFloatingUIPosition(floatingElement, referenceElement, x, y, placement, middlewareData);\n\n } catch (error) {\n console.warn('Floating UI positioning failed, falling back to simple positioning:', error);\n this.fallbackPositioning();\n }\n }\n\n private async calculateFloatingUIPosition(\n referenceElement: HTMLElement,\n floatingElement: HTMLElement\n ): Promise<{ x: number; y: number; placement: Placement; middlewareData: MiddlewareData }> {\n const boundary = PortalUtils.findBoundaryElements(referenceElement);\n const initialPlacement = PortalUtils.getOptimalPlacement(referenceElement);\n const middleware = this.createFloatingUIMiddleware(boundary);\n\n return await computePosition(referenceElement, floatingElement, {\n placement: initialPlacement,\n strategy: 'fixed',\n middleware,\n platform: this.createCustomPlatform()\n });\n }\n\n private createFloatingUIMiddleware(boundary: Element[] | undefined): ComputePositionConfig['middleware'] {\n return [\n offset(4),\n size({\n apply: this.handleSizeMiddleware.bind(this),\n padding: 10,\n boundary: boundary\n }),\n flip({\n fallbackPlacements: ['bottom', 'top', 'bottom-start', 'top-start', 'bottom-end', 'top-end'],\n fallbackStrategy: 'bestFit',\n padding: 10,\n boundary: boundary\n }),\n shift({\n padding: 10,\n crossAxis: true,\n boundary: boundary\n })\n ];\n }\n\n private handleSizeMiddleware({ availableWidth, availableHeight, elements, rects }: {\n availableWidth: number;\n availableHeight: number;\n elements: { floating: HTMLElement };\n rects: { reference: { x: number; y: number; width: number; height: number } };\n }): void {\n const maxHeight = PortalUtils.calculateOptimalHeight(\n this.component as HTMLElement,\n window.innerHeight,\n this.currentPlacement\n );\n\n elements.floating.style.maxWidth = `${availableWidth}px`;\n elements.floating.style.maxHeight = `${maxHeight}px`;\n \n elements.floating.style.setProperty('--auto-size-available-width', `${availableWidth}px`);\n elements.floating.style.setProperty('--auto-size-available-height', `${maxHeight}px`);\n }\n\n private createCustomPlatform() {\n return platform;\n }\n\n private applyFloatingUIPosition(\n floatingElement: HTMLElement,\n referenceElement: HTMLElement,\n x: number,\n y: number,\n placement: Placement,\n middlewareData: MiddlewareData\n ): void {\n Object.assign(floatingElement.style, {\n left: `${x}px`,\n top: `${y}px`,\n position: 'fixed',\n pointerEvents: 'auto'\n });\n\n this.currentPlacement = placement;\n this.currentMiddlewareData = middlewareData;\n \n PortalUtils.applyCollisionData(floatingElement, middlewareData, placement);\n \n const placementClass = placement.split('-')[0];\n floatingElement.className = `nile-virtual-select-portal-append select__listbox--${placementClass}`;\n\n const referenceRect = (referenceElement as HTMLElement).getBoundingClientRect();\n floatingElement.style.width = `${referenceRect.width}px`;\n }\n\n private fallbackPositioning(): void {\n if (!this.portalContainer) return;\n\n const referenceElement = this.component.combobox || this.component;\n const rect = referenceElement.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const popupHeight = this.measuredPopupHeight || 200;\n \n const spaceBelow = viewportHeight - rect.bottom;\n const spaceAbove = rect.top;\n \n let topPosition: number;\n let placementClass: string;\n let maxHeight: number;\n \n if (spaceAbove > spaceBelow) {\n maxHeight = Math.max(spaceAbove - 20, 100);\n topPosition = Math.max(rect.top - maxHeight - 4, 10);\n placementClass = 'top';\n } else {\n maxHeight = Math.max(spaceBelow - 20, 100);\n topPosition = rect.bottom + 4;\n placementClass = 'bottom';\n }\n\n this.portalContainer.style.left = `${rect.left}px`;\n this.portalContainer.style.top = `${topPosition}px`;\n this.portalContainer.style.width = `${rect.width}px`;\n this.portalContainer.style.maxHeight = `${maxHeight}px`;\n this.portalContainer.style.pointerEvents = 'auto';\n this.portalContainer.className = `nile-virtual-select-portal-append select__listbox--${placementClass}`;\n \n this.calculateAndSetAutoSizeProperties(rect, topPosition, placementClass);\n }\n\n private calculateAndSetAutoSizeProperties(rect: DOMRect, topPosition: number, placementClass: string): void {\n if (!this.portalContainer) return;\n\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n \n let availableHeight: number;\n if (placementClass === 'top') {\n availableHeight = rect.top - 10;\n } else {\n availableHeight = viewportHeight - rect.bottom - 10;\n }\n \n const availableWidth = Math.min(rect.width, viewportWidth - rect.left - 10);\n \n this.portalContainer.style.setProperty('--auto-size-available-height', `${Math.max(availableHeight, 100)}px`);\n this.portalContainer.style.setProperty('--auto-size-available-width', `${Math.max(availableWidth, 200)}px`);\n }\n\n updatePortalAppendPosition(): void {\n if (this.component.portal && this.portalContainer) {\n this.positionPortalAppend();\n }\n }\n\n handleWindowResize(): void {\n if (this.component.portal && this.portalContainer) {\n this.positionPortalAppend();\n }\n }\n\n private setupAutoUpdatePositioning(): void {\n if (!this.portalContainer || !this.component) return;\n\n this.cleanupAutoUpdatePositioning();\n\n this.cleanupAutoUpdate = autoUpdate(\n this.component,\n this.portalContainer,\n () => {\n this.computeFloatingUIPosition();\n },\n {\n ancestorScroll: true,\n ancestorResize: true,\n elementResize: true,\n layoutShift: true,\n animationFrame: true\n }\n );\n }\n\n private cleanupAutoUpdatePositioning(): void {\n if (this.cleanupAutoUpdate) {\n this.cleanupAutoUpdate();\n this.cleanupAutoUpdate = null;\n }\n }\n\n private 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 private injectStylesToDocument(): void {\n if (!this.portalContainer) return;\n\n // Create a unique identifier for this component instance\n const styleId = `nile-virtual-select-styles-${Math.random().toString(36).substring(2, 11)}`;\n \n // Check if styles are already injected\n if (document.getElementById(styleId)) return;\n\n // Get the component's styles\n const componentStyles = (this.component.constructor as any).styles;\n if (!componentStyles) return;\n\n // Create a style element\n const styleElement = document.createElement('style');\n styleElement.id = styleId;\n styleElement.textContent = this.extractStylesAsCSS(componentStyles);\n \n // Inject into document head\n document.head.appendChild(styleElement);\n \n // Store reference for cleanup\n (this.portalContainer as any).__injectedStyleId = styleId;\n }\n\n private adoptStylesToPortalAppend(): void {\n if (!this.portalContainer) return;\n this.injectStylesToDocument();\n }\n\n setupPortalAppend(): void {\n if (!this.component.portal) return;\n\n this.component.updateComplete.then(() => {\n const listbox = this.component.shadowRoot?.querySelector('#listbox') as HTMLElement;\n if (listbox) {\n this.originalListboxParent = listbox.parentElement as HTMLElement;\n \n this.portalContainer = this.createPortalAppendContainer();\n this.portalContainer.appendChild(listbox);\n document.body.appendChild(this.portalContainer);\n \n // Adopt the component's styles to the body append container\n this.adoptStylesToPortalAppend();\n \n listbox.style.display = '';\n this.positionPortalAppend();\n \n this.setupAutoUpdatePositioning();\n \n window.addEventListener('resize', this.handleWindowResize.bind(this));\n }\n });\n }\n\n cleanupPortalAppend(): void {\n this.cleanupAutoUpdatePositioning();\n \n if (this.portalContainer && this.portalContainer.parentNode) {\n const listbox = this.portalContainer.querySelector('#listbox') as HTMLElement;\n \n if (listbox && this.originalListboxParent) {\n this.originalListboxParent.appendChild(listbox);\n listbox.style.display = this.component.portal ? 'none' : '';\n }\n \n // Clean up injected styles if they exist\n const injectedStyleId = (this.portalContainer as any).__injectedStyleId;\n if (injectedStyleId) {\n const styleElement = document.getElementById(injectedStyleId);\n if (styleElement) {\n styleElement.remove();\n }\n }\n \n this.portalContainer.parentNode.removeChild(this.portalContainer);\n }\n \n window.removeEventListener('resize', this.handleWindowResize.bind(this));\n \n this.portalContainer = null;\n this.originalListboxParent = null;\n this.measuredPopupHeight = null;\n this.currentPlacement = 'bottom';\n this.currentMiddlewareData = null;\n }\n\n get portalContainerElement(): HTMLElement | null {\n return this.portalContainer;\n }\n\n resetMeasuredHeight(): void {\n this.measuredPopupHeight = null;\n }\n\n forceReposition(): void {\n if (this.portalContainer) {\n this.computeFloatingUIPosition();\n }\n }\n\n getCurrentPlacement(): Placement {\n return this.currentPlacement;\n }\n\n getCurrentMiddlewareData(): MiddlewareData | null {\n return this.currentMiddlewareData;\n }\n\n isUsingFloatingUI(): boolean {\n return this.cleanupAutoUpdate !== null;\n }\n\n handleViewportChange(): void {\n if (this.portalContainer) {\n this.resetMeasuredHeight();\n this.forceReposition();\n }\n }\n\n isPositioningOptimal(): boolean {\n if (!this.portalContainer || !this.currentMiddlewareData) return true;\n\n const referenceElement = this.component.combobox || this.component;\n const rect = referenceElement.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const spaceBelow = viewportHeight - rect.bottom;\n const spaceAbove = rect.top;\n \n const isAbove = this.currentPlacement.startsWith('top');\n const isBelow = this.currentPlacement.startsWith('bottom');\n \n if (isAbove && spaceBelow > spaceAbove) return false;\n if (isBelow && spaceAbove > spaceBelow) return false;\n \n return true;\n }\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
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 TemplateResult } from 'lit';
|
|
8
|
+
export declare class VirtualSelectRenderer {
|
|
9
|
+
static getVirtualizedContent(data: any[], searchEnabled: boolean, renderItemFunction: (item: any) => string, value: string | string[], multiple: boolean, getDisplayText?: (item: any) => string, getItemValue?: (item: any) => string, showNoResults?: boolean, noResultsMessage?: string, loading?: boolean, onScroll?: (e: Event) => void): TemplateResult;
|
|
10
|
+
static getItemRenderFunction(item: any, renderItemFunction: (item: any) => string, value: string | string[], multiple: boolean, getDisplayText?: (item: any) => string, getItemValue?: (item: any) => string): TemplateResult;
|
|
11
|
+
/**
|
|
12
|
+
* Determines whether to use virtualizer based on dataset size
|
|
13
|
+
* For small datasets (less than 5 items), use regular rendering for better sizing
|
|
14
|
+
*/
|
|
15
|
+
private static shouldUseVirtualizer;
|
|
16
|
+
}
|