@aquera/nile-elements 1.3.0-beta-1.1 → 1.3.0-beta-1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/demo/index.html +269 -34
- package/dist/assets/nile-elements-4b5c262d.css +1 -0
- package/dist/{fixture-54600b35.cjs.js → fixture-1c49c014.cjs.js} +2 -2
- package/dist/{fixture-73855806.cjs.js.map → fixture-1c49c014.cjs.js.map} +1 -1
- package/dist/{fixture-9871e8a9.esm.js → fixture-985bba12.esm.js} +1 -1
- package/dist/{fixture-73855806.cjs.js → fixture-d1470b58.cjs.js} +2 -2
- package/dist/{fixture-54600b35.cjs.js.map → fixture-d1470b58.cjs.js.map} +1 -1
- package/dist/{fixture-5b79f853.cjs.js → fixture-dff65c89.cjs.js} +2 -2
- package/dist/{fixture-c1d78368.cjs.js.map → fixture-dff65c89.cjs.js.map} +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +280 -280
- 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/index.cjs.js +1 -1
- package/dist/nile-auto-complete/index.esm.js +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.cjs.js +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.cjs.js.map +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.esm.js +2 -2
- package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js.map +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.cjs.js.map +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/index.cjs.js +1 -1
- package/dist/nile-chip/index.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 +2 -2
- package/dist/nile-chip/nile-chip.test.cjs.js +1 -1
- package/dist/nile-chip/nile-chip.test.cjs.js.map +1 -1
- package/dist/nile-chip/nile-chip.test.esm.js +1 -1
- 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/index.cjs.js +1 -1
- package/dist/nile-dropdown/index.esm.js +1 -1
- package/dist/nile-dropdown/nile-dropdown.cjs.js +1 -1
- package/dist/nile-dropdown/nile-dropdown.cjs.js.map +1 -1
- package/dist/nile-dropdown/nile-dropdown.esm.js +2 -2
- package/dist/nile-dropdown/nile-dropdown.test.cjs.js +1 -1
- package/dist/nile-dropdown/nile-dropdown.test.cjs.js.map +1 -1
- package/dist/nile-dropdown/nile-dropdown.test.esm.js +6 -6
- 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-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-inline-edit/index.cjs.js +1 -1
- package/dist/nile-inline-edit/index.esm.js +1 -1
- package/dist/nile-inline-edit/nile-inline-edit.cjs.js +1 -1
- package/dist/nile-inline-edit/nile-inline-edit.cjs.js.map +1 -1
- package/dist/nile-inline-edit/nile-inline-edit.esm.js +4 -4
- 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-light-tooltip/index.esm.js +1 -0
- package/dist/nile-light-tooltip/nile-light-tooltip.css.esm.js +6 -0
- package/dist/nile-light-tooltip/nile-light-tooltip.esm.js +1 -0
- 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-lite-tooltip/index.cjs.js +1 -1
- package/dist/nile-lite-tooltip/index.esm.js +1 -1
- package/dist/nile-lite-tooltip/nile-lite-tooltip.cjs.js +1 -1
- package/dist/nile-lite-tooltip/nile-lite-tooltip.cjs.js.map +1 -1
- package/dist/nile-lite-tooltip/nile-lite-tooltip.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/index.cjs.js +1 -1
- package/dist/nile-popover/index.esm.js +1 -1
- package/dist/nile-popover/nile-popover.cjs.js +3 -3
- package/dist/nile-popover/nile-popover.cjs.js.map +1 -1
- package/dist/nile-popover/nile-popover.esm.js +4 -4
- package/dist/nile-popover/nile-popover.test.cjs.js +1 -1
- package/dist/nile-popover/nile-popover.test.cjs.js.map +1 -1
- package/dist/nile-popover/nile-popover.test.esm.js +4 -4
- 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-select/index.cjs.js +1 -1
- package/dist/nile-select/index.esm.js +1 -1
- package/dist/nile-select/nile-select.cjs.js +1 -1
- package/dist/nile-select/nile-select.cjs.js.map +1 -1
- package/dist/nile-select/nile-select.esm.js +2 -2
- package/dist/nile-select/nile-select.test.cjs.js +1 -1
- package/dist/nile-select/nile-select.test.cjs.js.map +1 -1
- package/dist/nile-select/nile-select.test.esm.js +1 -1
- 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-tooltip/index.cjs.js +1 -1
- package/dist/nile-tooltip/index.esm.js +1 -1
- package/dist/nile-tooltip/nile-tooltip.cjs.js +1 -1
- package/dist/nile-tooltip/nile-tooltip.cjs.js.map +1 -1
- package/dist/nile-tooltip/nile-tooltip.esm.js +2 -2
- package/dist/nile-virtual-select/index.cjs.js +1 -1
- package/dist/nile-virtual-select/index.esm.js +1 -1
- package/dist/nile-virtual-select/nile-virtual-select.cjs.js +2 -2
- package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +1 -1
- package/dist/nile-virtual-select/nile-virtual-select.esm.js +13 -13
- 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/src/nile-auto-complete/nile-auto-complete.d.ts +4 -0
- package/dist/src/nile-auto-complete/nile-auto-complete.js +41 -0
- package/dist/src/nile-auto-complete/nile-auto-complete.js.map +1 -1
- package/dist/src/nile-chip/nile-chip.d.ts +4 -0
- package/dist/src/nile-chip/nile-chip.js +47 -0
- package/dist/src/nile-chip/nile-chip.js.map +1 -1
- package/dist/src/nile-dropdown/nile-dropdown.d.ts +4 -1
- package/dist/src/nile-dropdown/nile-dropdown.js +38 -1
- package/dist/src/nile-dropdown/nile-dropdown.js.map +1 -1
- package/dist/src/nile-inline-edit/nile-inline-edit.d.ts +0 -8
- package/dist/src/nile-inline-edit/nile-inline-edit.js +1 -47
- package/dist/src/nile-inline-edit/nile-inline-edit.js.map +1 -1
- package/dist/src/nile-light-tooltip/index.d.ts +1 -0
- package/dist/src/nile-light-tooltip/index.js +2 -0
- package/dist/src/nile-light-tooltip/index.js.map +1 -0
- package/dist/src/nile-light-tooltip/nile-light-tooltip.css.d.ts +12 -0
- package/dist/src/nile-light-tooltip/nile-light-tooltip.css.js +18 -0
- package/dist/src/nile-light-tooltip/nile-light-tooltip.css.js.map +1 -0
- package/dist/src/nile-light-tooltip/nile-light-tooltip.d.ts +40 -0
- package/dist/src/nile-light-tooltip/nile-light-tooltip.js +101 -0
- package/dist/src/nile-light-tooltip/nile-light-tooltip.js.map +1 -0
- package/dist/src/nile-lite-tooltip/nile-lite-tooltip.d.ts +5 -1
- package/dist/src/nile-lite-tooltip/nile-lite-tooltip.js +44 -0
- package/dist/src/nile-lite-tooltip/nile-lite-tooltip.js.map +1 -1
- package/dist/src/nile-menu/virtual-menu-search-manager.d.ts +11 -0
- package/dist/src/nile-menu/virtual-menu-search-manager.js +43 -0
- package/dist/src/nile-menu/virtual-menu-search-manager.js.map +1 -0
- package/dist/src/nile-popover/nile-popover.d.ts +4 -0
- package/dist/src/nile-popover/nile-popover.js +40 -0
- package/dist/src/nile-popover/nile-popover.js.map +1 -1
- package/dist/src/nile-select/nile-select.d.ts +1 -5
- package/dist/src/nile-select/nile-select.js +28 -67
- package/dist/src/nile-select/nile-select.js.map +1 -1
- package/dist/src/nile-tooltip/nile-tooltip.d.ts +3 -0
- package/dist/src/nile-tooltip/nile-tooltip.js +38 -0
- package/dist/src/nile-tooltip/nile-tooltip.js.map +1 -1
- package/dist/src/nile-virtual-select/nile-virtual-select.d.ts +2 -5
- package/dist/src/nile-virtual-select/nile-virtual-select.js +29 -66
- package/dist/src/nile-virtual-select/nile-virtual-select.js.map +1 -1
- package/dist/src/utilities/visibility-manager.d.ts +20 -0
- package/dist/src/utilities/visibility-manager.js +64 -0
- package/dist/src/utilities/visibility-manager.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/dist/utilities/visibility-manager.cjs.js +2 -0
- package/dist/utilities/visibility-manager.cjs.js.map +1 -0
- package/dist/utilities/visibility-manager.esm.js +1 -0
- package/package.json +2 -2
- package/src/nile-auto-complete/nile-auto-complete.ts +44 -0
- package/src/nile-chip/nile-chip.ts +53 -0
- package/src/nile-dropdown/nile-dropdown.ts +40 -1
- package/src/nile-inline-edit/nile-inline-edit.ts +1 -59
- package/src/nile-lite-tooltip/nile-lite-tooltip.ts +52 -1
- package/src/nile-popover/nile-popover.ts +44 -0
- package/src/nile-select/nile-select.ts +31 -87
- package/src/nile-tooltip/nile-tooltip.ts +39 -0
- package/src/nile-virtual-select/nile-virtual-select.ts +32 -87
- package/src/utilities/visibility-manager.ts +104 -0
- package/vscode-html-custom-data.json +69 -13
- package/dist/fixture-5b79f853.cjs.js.map +0 -1
- package/dist/fixture-90b199c4.esm.js +0 -569
- package/dist/fixture-c1d78368.cjs.js +0 -395
- package/dist/fixture-cf7bfcf5.esm.js +0 -569
- package/dist/fixture-dbd66009.cjs.js +0 -395
- package/dist/fixture-dbd66009.cjs.js.map +0 -1
- package/dist/nile-code-editor/backup_nile-code-editor copy.cjs.js +0 -2
- package/dist/nile-code-editor/backup_nile-code-editor copy.cjs.js.map +0 -1
- package/dist/nile-code-editor/backup_nile-code-editor copy.esm.js +0 -1
- package/dist/nile-inline-edit/nile-inline-edit-utils.cjs.js +0 -2
- package/dist/nile-inline-edit/nile-inline-edit-utils.cjs.js.map +0 -1
- package/dist/nile-inline-edit/nile-inline-edit-utils.esm.js +0 -1
- package/dist/nile-sidebar/index.cjs.js +0 -2
- package/dist/nile-sidebar/index.cjs.js.map +0 -1
- package/dist/nile-sidebar/index.esm.js +0 -75
- package/dist/nile-sidebar-menu/index.cjs.js +0 -2
- package/dist/nile-sidebar-menu/index.cjs.js.map +0 -1
- package/dist/nile-sidebar-menu/index.esm.js +0 -1
- package/dist/nile-sidebar-menu/nile-sidebar-menu.cjs.js +0 -2
- package/dist/nile-sidebar-menu/nile-sidebar-menu.cjs.js.map +0 -1
- package/dist/nile-sidebar-menu/nile-sidebar-menu.css.cjs.js +0 -2
- package/dist/nile-sidebar-menu/nile-sidebar-menu.css.cjs.js.map +0 -1
- package/dist/nile-sidebar-menu/nile-sidebar-menu.css.esm.js +0 -38
- package/dist/nile-sidebar-menu/nile-sidebar-menu.esm.js +0 -10
- package/dist/nile-sidebar-menu-items/index.cjs.js +0 -2
- package/dist/nile-sidebar-menu-items/index.cjs.js.map +0 -1
- package/dist/nile-sidebar-menu-items/index.esm.js +0 -1
- package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.cjs.js +0 -2
- package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.cjs.js.map +0 -1
- package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.css.cjs.js +0 -2
- package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.css.cjs.js.map +0 -1
- package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.css.esm.js +0 -36
- package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.esm.js +0 -15
- package/dist/nile-sidebar-wrapper/index.cjs.js +0 -2
- package/dist/nile-sidebar-wrapper/index.cjs.js.map +0 -1
- package/dist/nile-sidebar-wrapper/index.esm.js +0 -1
- package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.cjs.js +0 -2
- package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.cjs.js.map +0 -1
- package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.css.cjs.js +0 -2
- package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.css.cjs.js.map +0 -1
- package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.css.esm.js +0 -105
- package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.esm.js +0 -16
- package/dist/nile-virtual-select/group-manager.cjs.js +0 -2
- package/dist/nile-virtual-select/group-manager.cjs.js.map +0 -1
- package/dist/nile-virtual-select/group-manager.esm.js +0 -1
- package/dist/nile-virtual-select/temp_nile-virtual-select copy.cjs.js +0 -2
- package/dist/nile-virtual-select/temp_nile-virtual-select copy.cjs.js.map +0 -1
- package/dist/nile-virtual-select/temp_nile-virtual-select copy.esm.js +0 -231
- package/dist/scopedElementsWrapper-4c29be11.esm.js +0 -7
- package/dist/scopedElementsWrapper-a112fc73.cjs.js +0 -6
- package/dist/scopedElementsWrapper-a112fc73.cjs.js.map +0 -1
- package/dist/src/internal/portal-manager.d.ts +0 -53
- package/dist/src/internal/portal-manager.js +0 -196
- package/dist/src/internal/portal-manager.js.map +0 -1
- package/dist/src/internal/portal.d.ts +0 -60
- package/dist/src/internal/portal.js +0 -199
- package/dist/src/internal/portal.js.map +0 -1
- package/dist/src/internal/resizable-helper.d.ts +0 -59
- package/dist/src/internal/resizable-helper.js +0 -115
- package/dist/src/internal/resizable-helper.js.map +0 -1
- package/dist/src/internal/resizable-styles.d.ts +0 -16
- package/dist/src/internal/resizable-styles.js +0 -144
- package/dist/src/internal/resizable-styles.js.map +0 -1
- package/dist/src/internal/virtualizer-error-handler.d.ts +0 -30
- package/dist/src/internal/virtualizer-error-handler.js +0 -82
- package/dist/src/internal/virtualizer-error-handler.js.map +0 -1
- package/dist/src/lib/index.d.ts +0 -7
- package/dist/src/lib/index.js +0 -8
- package/dist/src/lib/index.js.map +0 -1
- package/dist/src/lib/virtualize.d.ts +0 -32
- package/dist/src/lib/virtualize.js +0 -105
- package/dist/src/lib/virtualize.js.map +0 -1
- package/dist/src/lib/virtualize.test.d.ts +0 -7
- package/dist/src/lib/virtualize.test.js +0 -57
- package/dist/src/lib/virtualize.test.js.map +0 -1
- package/dist/src/nile-badge/__snapshots__/nile-badge.test.snap.js +0 -17
- package/dist/src/nile-calendar/__snapshots__/nile-calendar.test.snap.js +0 -310
- package/dist/src/nile-card/__snapshots__/nile-card.test.snap.js +0 -34
- package/dist/src/nile-checkbox/__snapshots__/nile-checkbox.test.snap.js +0 -31
- package/dist/src/nile-code-editor/Old_theme copy.d.ts +0 -191
- package/dist/src/nile-code-editor/Old_theme copy.js +0 -193
- package/dist/src/nile-code-editor/Old_theme copy.js.map +0 -1
- 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 +0 -675
- package/dist/src/nile-code-editor/backup_nile-code-editor copy.js.map +0 -1
- package/dist/src/nile-code-editor/theme copy.d.ts +0 -191
- package/dist/src/nile-code-editor/theme copy.js +0 -193
- package/dist/src/nile-code-editor/theme copy.js.map +0 -1
- package/dist/src/nile-grid/data-processor.d.ts +0 -37
- package/dist/src/nile-grid/data-processor.js +0 -122
- package/dist/src/nile-grid/data-processor.js.map +0 -1
- package/dist/src/nile-grid/event-handlers.d.ts +0 -35
- package/dist/src/nile-grid/event-handlers.js +0 -158
- package/dist/src/nile-grid/event-handlers.js.map +0 -1
- package/dist/src/nile-grid/renderer.d.ts +0 -8
- package/dist/src/nile-grid/renderer.js +0 -78
- package/dist/src/nile-grid/renderer.js.map +0 -1
- package/dist/src/nile-grid/resize-handler.d.ts +0 -4
- package/dist/src/nile-grid/resize-handler.js +0 -36
- package/dist/src/nile-grid/resize-handler.js.map +0 -1
- package/dist/src/nile-grid/types.d.ts +0 -32
- package/dist/src/nile-grid/types.js +0 -2
- package/dist/src/nile-grid/types.js.map +0 -1
- package/dist/src/nile-grid/utils.d.ts +0 -4
- package/dist/src/nile-grid/utils.js +0 -32
- package/dist/src/nile-grid/utils.js.map +0 -1
- package/dist/src/nile-hero/__snapshots__/nile-hero.test.snap.js +0 -47
- package/dist/src/nile-icon/__snapshots__/nile-icon.test.snap.js +0 -16
- package/dist/src/nile-inline-edit/nile-inline-edit-utils.d.ts +0 -20
- package/dist/src/nile-inline-edit/nile-inline-edit-utils.js +0 -70
- package/dist/src/nile-inline-edit/nile-inline-edit-utils.js.map +0 -1
- package/dist/src/nile-input/__snapshots__/nile-input.test.snap.js +0 -75
- package/dist/src/nile-menu/portal-manager.d.ts +0 -39
- package/dist/src/nile-menu/portal-manager.js +0 -340
- package/dist/src/nile-menu/portal-manager.js.map +0 -1
- package/dist/src/nile-menu/portal-utils.d.ts +0 -21
- package/dist/src/nile-menu/portal-utils.js +0 -128
- package/dist/src/nile-menu/portal-utils.js.map +0 -1
- package/dist/src/nile-popover/__snapshots__/nile-popover.test.snap.js +0 -22
- package/dist/src/nile-popover/popover-portal-handler.d.ts +0 -21
- package/dist/src/nile-popover/popover-portal-handler.js +0 -106
- package/dist/src/nile-popover/popover-portal-handler.js.map +0 -1
- package/dist/src/nile-portal-wrapper/index.d.ts +0 -1
- package/dist/src/nile-portal-wrapper/index.js +0 -2
- package/dist/src/nile-portal-wrapper/index.js.map +0 -1
- package/dist/src/nile-portal-wrapper/nile-portal-wrapper.d.ts +0 -47
- package/dist/src/nile-portal-wrapper/nile-portal-wrapper.js +0 -451
- package/dist/src/nile-portal-wrapper/nile-portal-wrapper.js.map +0 -1
- package/dist/src/nile-select/body-append-manager.d.ts +0 -90
- package/dist/src/nile-select/body-append-manager.js +0 -298
- package/dist/src/nile-select/body-append-manager.js.map +0 -1
- package/dist/src/nile-table-body/virtual-scroll-helper.d.ts +0 -9
- package/dist/src/nile-table-body/virtual-scroll-helper.js +0 -24
- package/dist/src/nile-table-body/virtual-scroll-helper.js.map +0 -1
- package/dist/src/nile-virtual-select/body-append-helper.d.ts +0 -16
- package/dist/src/nile-virtual-select/body-append-helper.js +0 -95
- package/dist/src/nile-virtual-select/body-append-helper.js.map +0 -1
- package/dist/src/nile-virtual-select/group-manager.d.ts +0 -32
- package/dist/src/nile-virtual-select/group-manager.js +0 -134
- package/dist/src/nile-virtual-select/group-manager.js.map +0 -1
- package/dist/src/nile-virtual-select/portal-utils.d.ts +0 -65
- package/dist/src/nile-virtual-select/portal-utils.js +0 -376
- package/dist/src/nile-virtual-select/portal-utils.js.map +0 -1
- package/dist/src/nile-virtual-select/temp_nile-virtual-select copy.d.ts +0 -273
- package/dist/src/nile-virtual-select/temp_nile-virtual-select copy.js +0 -1305
- package/dist/src/nile-virtual-select/temp_nile-virtual-select copy.js.map +0 -1
- package/dist/src/nile-virtual-select/virtualizer-error-handler.d.ts +0 -21
- package/dist/src/nile-virtual-select/virtualizer-error-handler.js +0 -56
- package/dist/src/nile-virtual-select/virtualizer-error-handler.js.map +0 -1
- package/dist/src/nile-virtual-select-disabled/index.d.ts +0 -1
- package/dist/src/nile-virtual-select-disabled/index.js +0 -2
- package/dist/src/nile-virtual-select-disabled/index.js.map +0 -1
- package/dist/src/nile-virtual-select-disabled/nile-virtual-select.css.d.ts +0 -12
- package/dist/src/nile-virtual-select-disabled/nile-virtual-select.css.js +0 -538
- package/dist/src/nile-virtual-select-disabled/nile-virtual-select.css.js.map +0 -1
- package/dist/src/nile-virtual-select-disabled/nile-virtual-select.d.ts +0 -299
- package/dist/src/nile-virtual-select-disabled/nile-virtual-select.js +0 -1441
- package/dist/src/nile-virtual-select-disabled/nile-virtual-select.js.map +0 -1
- package/dist/src/nile-virtual-select-disabled/nile-virtual-select.test.d.ts +0 -7
- package/dist/src/nile-virtual-select-disabled/nile-virtual-select.test.js +0 -631
- package/dist/src/nile-virtual-select-disabled/nile-virtual-select.test.js.map +0 -1
- package/dist/src/nile-virtual-select-disabled/portal-manager.d.ts +0 -45
- package/dist/src/nile-virtual-select-disabled/portal-manager.js +0 -333
- package/dist/src/nile-virtual-select-disabled/portal-manager.js.map +0 -1
- package/dist/src/nile-virtual-select-disabled/renderer.d.ts +0 -16
- package/dist/src/nile-virtual-select-disabled/renderer.js +0 -79
- package/dist/src/nile-virtual-select-disabled/renderer.js.map +0 -1
- package/dist/src/nile-virtual-select-disabled/search-manager.d.ts +0 -12
- package/dist/src/nile-virtual-select-disabled/search-manager.js +0 -40
- package/dist/src/nile-virtual-select-disabled/search-manager.js.map +0 -1
- package/dist/src/nile-virtual-select-disabled/selection-manager.d.ts +0 -12
- package/dist/src/nile-virtual-select-disabled/selection-manager.js +0 -64
- package/dist/src/nile-virtual-select-disabled/selection-manager.js.map +0 -1
- package/dist/src/nile-virtual-select-disabled/types.d.ts +0 -50
- package/dist/src/nile-virtual-select-disabled/types.js +0 -8
- package/dist/src/nile-virtual-select-disabled/types.js.map +0 -1
- package/dist/src/nile-virtual-table-body/index.d.ts +0 -2
- package/dist/src/nile-virtual-table-body/index.js +0 -3
- package/dist/src/nile-virtual-table-body/index.js.map +0 -1
- package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.d.ts +0 -1
- package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.js +0 -44
- package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.js.map +0 -1
- package/dist/src/nile-virtual-table-body/nile-virtual-table-body.d.ts +0 -50
- package/dist/src/nile-virtual-table-body/nile-virtual-table-body.js +0 -135
- package/dist/src/nile-virtual-table-body/nile-virtual-table-body.js.map +0 -1
- package/dist/src/nile-virtual-table-body/renderer.d.ts +0 -16
- package/dist/src/nile-virtual-table-body/renderer.js +0 -49
- package/dist/src/nile-virtual-table-body/renderer.js.map +0 -1
- package/dist/src/utilities/stepper-utils.d.ts +0 -71
- package/dist/src/utilities/stepper-utils.js +0 -108
- package/dist/src/utilities/stepper-utils.js.map +0 -1
- package/src/nile-inline-edit/nile-inline-edit-utils.ts +0 -94
|
@@ -42,6 +42,7 @@ import NileOptionGroup from '../nile-option-group/nile-option-group';
|
|
|
42
42
|
import { GroupAttributes } from './nile-select.interface';
|
|
43
43
|
import { ResizeController } from '@lit-labs/observers/resize-controller.js';
|
|
44
44
|
import { PortalManager } from './portal-manager';
|
|
45
|
+
import { VisibilityManager } from '../utilities/visibility-manager';
|
|
45
46
|
|
|
46
47
|
type NileRemoveEvent = CustomEvent<Record<PropertyKey, never>>;
|
|
47
48
|
|
|
@@ -123,6 +124,8 @@ export class NileSelect extends NileElement implements NileFormControl{
|
|
|
123
124
|
private scrolling = false;
|
|
124
125
|
private options: NileOption[] = [];
|
|
125
126
|
private resizeController?: ResizeController;
|
|
127
|
+
private visibilityManager?: VisibilityManager;
|
|
128
|
+
|
|
126
129
|
|
|
127
130
|
@query('.select') popup: NilePopup;
|
|
128
131
|
@query('.select__combobox') combobox: HTMLSlotElement;
|
|
@@ -333,6 +336,7 @@ export class NileSelect extends NileElement implements NileFormControl{
|
|
|
333
336
|
clearTimeout(this.scrollTimeout);
|
|
334
337
|
this.scrollTimeout = undefined;
|
|
335
338
|
}
|
|
339
|
+
this.visibilityManager?.cleanup();
|
|
336
340
|
// Clean up body append elements
|
|
337
341
|
this.portalManager.cleanupPortalAppend();
|
|
338
342
|
this.emit('nile-destroy');
|
|
@@ -373,6 +377,31 @@ export class NileSelect extends NileElement implements NileFormControl{
|
|
|
373
377
|
if(_changedProperties.has('multiple')) {
|
|
374
378
|
this.setCheckBoxInOption(this.multiple as boolean);
|
|
375
379
|
}
|
|
380
|
+
this.visibilityManager = new VisibilityManager({
|
|
381
|
+
host: this,
|
|
382
|
+
target: this.combobox,
|
|
383
|
+
enableVisibilityEffect: this.enableVisibilityEffect,
|
|
384
|
+
enableTabClose: this.enableTabClose,
|
|
385
|
+
isOpen: () => this.open,
|
|
386
|
+
onAnchorOutOfView: () => {
|
|
387
|
+
this.hide();
|
|
388
|
+
this.emit('nile-visibility-change', {
|
|
389
|
+
visible: false,
|
|
390
|
+
reason: 'anchor-out-of-view',
|
|
391
|
+
name: this.name,
|
|
392
|
+
});
|
|
393
|
+
},
|
|
394
|
+
onDocumentHidden: () => {
|
|
395
|
+
this.hide();
|
|
396
|
+
this.emit('nile-visibility-change', {
|
|
397
|
+
visible: false,
|
|
398
|
+
reason: 'document-hidden',
|
|
399
|
+
name: this.name,
|
|
400
|
+
});
|
|
401
|
+
},
|
|
402
|
+
emit: (event, detail) => this.emit(`nile-${event}`, detail),
|
|
403
|
+
});
|
|
404
|
+
|
|
376
405
|
}
|
|
377
406
|
|
|
378
407
|
setCheckBoxInOption(checked: boolean): void {
|
|
@@ -428,89 +457,6 @@ export class NileSelect extends NileElement implements NileFormControl{
|
|
|
428
457
|
|
|
429
458
|
|
|
430
459
|
|
|
431
|
-
private anchorVisibilityObservers: IntersectionObserver[] = [];
|
|
432
|
-
|
|
433
|
-
private getScrollableAncestors(element: HTMLElement): HTMLElement[] {
|
|
434
|
-
const scrollables: HTMLElement[] = [];
|
|
435
|
-
let parent = element.parentElement;
|
|
436
|
-
while (parent) {
|
|
437
|
-
const style = getComputedStyle(parent);
|
|
438
|
-
const canScroll =
|
|
439
|
-
/(auto|scroll)/.test(style.overflow + style.overflowY + style.overflowX);
|
|
440
|
-
if (canScroll) {
|
|
441
|
-
scrollables.push(parent);
|
|
442
|
-
}
|
|
443
|
-
parent = parent.parentElement;
|
|
444
|
-
}
|
|
445
|
-
return scrollables;
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
private handleDocumentVisibilityChange = (): void => {
|
|
450
|
-
if (!this.enableTabClose) return;
|
|
451
|
-
if (document.visibilityState === 'hidden' && this.open) {
|
|
452
|
-
this.hide();
|
|
453
|
-
this.emit('nile-visibility-change', {
|
|
454
|
-
visible: false,
|
|
455
|
-
reason: 'document-hidden',
|
|
456
|
-
name: this.name,
|
|
457
|
-
});
|
|
458
|
-
}
|
|
459
|
-
};
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
private setupAnchorVisibilityObserver(): void {
|
|
463
|
-
if (!this.enableVisibilityEffect) return;
|
|
464
|
-
|
|
465
|
-
this.cleanupAnchorVisibilityObserver();
|
|
466
|
-
|
|
467
|
-
const combobox = this.combobox;
|
|
468
|
-
if (!combobox) return;
|
|
469
|
-
const scrollContainers = [...this.getScrollableAncestors(this), null];
|
|
470
|
-
|
|
471
|
-
scrollContainers.forEach((rootContainer) => {
|
|
472
|
-
const observer = new IntersectionObserver(
|
|
473
|
-
(entries) => {
|
|
474
|
-
for (const entry of entries) {
|
|
475
|
-
if (!entry.isIntersecting && this.open) {
|
|
476
|
-
this.hide();
|
|
477
|
-
this.emit('nile-visibility-change', {
|
|
478
|
-
visible: false,
|
|
479
|
-
reason: 'anchor-out-of-view',
|
|
480
|
-
name: this.name,
|
|
481
|
-
root: rootContainer,
|
|
482
|
-
});
|
|
483
|
-
return;
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
},
|
|
487
|
-
{
|
|
488
|
-
root: rootContainer,
|
|
489
|
-
threshold: 0.1,
|
|
490
|
-
}
|
|
491
|
-
);
|
|
492
|
-
|
|
493
|
-
observer.observe(combobox);
|
|
494
|
-
this.anchorVisibilityObservers.push(observer);
|
|
495
|
-
});
|
|
496
|
-
|
|
497
|
-
if (this.enableTabClose) {
|
|
498
|
-
document.addEventListener(
|
|
499
|
-
'visibilitychange',
|
|
500
|
-
this.handleDocumentVisibilityChange
|
|
501
|
-
);
|
|
502
|
-
}
|
|
503
|
-
}
|
|
504
|
-
|
|
505
|
-
private cleanupAnchorVisibilityObserver(): void {
|
|
506
|
-
this.anchorVisibilityObservers.forEach((o) => o.disconnect());
|
|
507
|
-
this.anchorVisibilityObservers = [];
|
|
508
|
-
|
|
509
|
-
document.removeEventListener(
|
|
510
|
-
'visibilitychange',
|
|
511
|
-
this.handleDocumentVisibilityChange
|
|
512
|
-
);
|
|
513
|
-
}
|
|
514
460
|
|
|
515
461
|
|
|
516
462
|
|
|
@@ -1162,6 +1108,7 @@ export class NileSelect extends NileElement implements NileFormControl{
|
|
|
1162
1108
|
}
|
|
1163
1109
|
|
|
1164
1110
|
this.addOpenListeners();
|
|
1111
|
+
this.visibilityManager?.setup();
|
|
1165
1112
|
|
|
1166
1113
|
this.showNoResults = !this.getAllOptions()?.length;
|
|
1167
1114
|
|
|
@@ -1174,10 +1121,6 @@ export class NileSelect extends NileElement implements NileFormControl{
|
|
|
1174
1121
|
this.setCurrentOption(this.currentOption);
|
|
1175
1122
|
});
|
|
1176
1123
|
|
|
1177
|
-
if (this.enableVisibilityEffect) {
|
|
1178
|
-
this.setupAnchorVisibilityObserver();
|
|
1179
|
-
}
|
|
1180
|
-
|
|
1181
1124
|
const { keyframes, options } = getAnimation(this, 'select.show', {
|
|
1182
1125
|
dir: 'ltr',
|
|
1183
1126
|
});
|
|
@@ -1203,6 +1146,7 @@ export class NileSelect extends NileElement implements NileFormControl{
|
|
|
1203
1146
|
this.emit('nile-hide', { value: this.value, name: this.name });
|
|
1204
1147
|
this.showSelected = false;
|
|
1205
1148
|
this.removeOpenListeners();
|
|
1149
|
+
this.visibilityManager?.cleanup();
|
|
1206
1150
|
|
|
1207
1151
|
await stopAnimations(this);
|
|
1208
1152
|
const { keyframes, options } = getAnimation(this, 'select.hide', {
|
|
@@ -22,6 +22,8 @@ import { watch } from '../internal/watch';
|
|
|
22
22
|
import NileElement from '../internal/nile-element';
|
|
23
23
|
import type { CSSResultGroup } from 'lit';
|
|
24
24
|
import type NilePopup from '../nile-popup/nile-popup';
|
|
25
|
+
import { VisibilityManager } from '../utilities/visibility-manager.js';
|
|
26
|
+
|
|
25
27
|
/**
|
|
26
28
|
* Nile icon component.
|
|
27
29
|
*
|
|
@@ -95,6 +97,12 @@ export class NileTooltip extends NileElement {
|
|
|
95
97
|
*/
|
|
96
98
|
@property({ type: Boolean }) hoist = false;
|
|
97
99
|
|
|
100
|
+
private visibilityManager?: VisibilityManager;
|
|
101
|
+
|
|
102
|
+
@property({ type: Boolean, reflect: true }) enableVisibilityEffect = false;
|
|
103
|
+
@property({ type: Boolean, reflect: true }) enableTabClose = false;
|
|
104
|
+
|
|
105
|
+
|
|
98
106
|
connectedCallback() {
|
|
99
107
|
super.connectedCallback();
|
|
100
108
|
this.handleBlur = this.handleBlur.bind(this);
|
|
@@ -122,10 +130,39 @@ export class NileTooltip extends NileElement {
|
|
|
122
130
|
this.popup.active = true;
|
|
123
131
|
this.popup.reposition();
|
|
124
132
|
}
|
|
133
|
+
|
|
134
|
+
// Get the tooltip anchor (the element inside the default slot)
|
|
135
|
+
const anchorSlot = this.renderRoot.querySelector('slot:not([name])') as HTMLSlotElement | null;
|
|
136
|
+
const anchorEl = anchorSlot?.assignedElements({ flatten: true })[0] as HTMLElement | undefined;
|
|
137
|
+
|
|
138
|
+
// Initialize visibility manager
|
|
139
|
+
this.visibilityManager = new VisibilityManager({
|
|
140
|
+
host: this,
|
|
141
|
+
target: anchorEl || null,
|
|
142
|
+
enableVisibilityEffect: this.enableVisibilityEffect,
|
|
143
|
+
enableTabClose: this.enableTabClose,
|
|
144
|
+
isOpen: () => this.open,
|
|
145
|
+
onAnchorOutOfView: () => {
|
|
146
|
+
this.hide();
|
|
147
|
+
this.emit('nile-visibility-change', {
|
|
148
|
+
visible: false,
|
|
149
|
+
reason: 'anchor-out-of-view',
|
|
150
|
+
});
|
|
151
|
+
},
|
|
152
|
+
onDocumentHidden: () => {
|
|
153
|
+
this.hide();
|
|
154
|
+
this.emit('nile-visibility-change', {
|
|
155
|
+
visible: false,
|
|
156
|
+
reason: 'document-hidden',
|
|
157
|
+
});
|
|
158
|
+
},
|
|
159
|
+
emit: (event, detail) => this.emit(`nile-${event}`, detail),
|
|
160
|
+
});
|
|
125
161
|
}
|
|
126
162
|
|
|
127
163
|
disconnectedCallback() {
|
|
128
164
|
super.disconnectedCallback();
|
|
165
|
+
this.visibilityManager?.cleanup();
|
|
129
166
|
this.removeEventListener('blur', this.handleBlur, true);
|
|
130
167
|
this.removeEventListener('focus', this.handleFocus, true);
|
|
131
168
|
this.removeEventListener('click', this.handleClick);
|
|
@@ -192,6 +229,7 @@ export class NileTooltip extends NileElement {
|
|
|
192
229
|
@watch('open', { waitUntilFirstUpdate: true })
|
|
193
230
|
async handleOpenChange() {
|
|
194
231
|
if (this.open) {
|
|
232
|
+
this.visibilityManager?.setup();
|
|
195
233
|
if (this.disabled) {
|
|
196
234
|
return;
|
|
197
235
|
}
|
|
@@ -209,6 +247,7 @@ export class NileTooltip extends NileElement {
|
|
|
209
247
|
|
|
210
248
|
this.emit('nile-after-show');
|
|
211
249
|
} else {
|
|
250
|
+
this.visibilityManager?.cleanup();
|
|
212
251
|
// Hide
|
|
213
252
|
this.emit('nile-hide');
|
|
214
253
|
|
|
@@ -42,6 +42,7 @@ import { VirtualSelectSearchManager } from './search-manager.js';
|
|
|
42
42
|
import { VirtualSelectRenderer } from './renderer.js';
|
|
43
43
|
import { PortalManager } from './portal-manager.js';
|
|
44
44
|
import { ResizeController } from '@lit-labs/observers/resize-controller.js';
|
|
45
|
+
import { VisibilityManager } from '../utilities/visibility-manager.js';
|
|
45
46
|
|
|
46
47
|
/**
|
|
47
48
|
* Nile Virtual Select component.
|
|
@@ -123,6 +124,7 @@ export class NileVirtualSelect extends NileElement implements NileFormControl {
|
|
|
123
124
|
|
|
124
125
|
private scrollTimeout: number | undefined;
|
|
125
126
|
private scrolling = false;
|
|
127
|
+
private visibilityManager?: VisibilityManager;
|
|
126
128
|
|
|
127
129
|
/** The name of the select, submitted as a name/value pair with form data. */
|
|
128
130
|
@property() name = '';
|
|
@@ -297,6 +299,7 @@ export class NileVirtualSelect extends NileElement implements NileFormControl {
|
|
|
297
299
|
|
|
298
300
|
disconnectedCallback() {
|
|
299
301
|
this.removeOpenListeners();
|
|
302
|
+
this.visibilityManager?.cleanup();
|
|
300
303
|
// Clear any pending scroll timeout to prevent memory leaks
|
|
301
304
|
if (this.scrollTimeout) {
|
|
302
305
|
clearTimeout(this.scrollTimeout);
|
|
@@ -397,88 +400,33 @@ export class NileVirtualSelect extends NileElement implements NileFormControl {
|
|
|
397
400
|
}
|
|
398
401
|
|
|
399
402
|
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
private setupAnchorVisibilityObserver(): void {
|
|
429
|
-
if (!this.enableVisibilityEffect) return;
|
|
430
|
-
|
|
431
|
-
this.cleanupAnchorVisibilityObserver();
|
|
432
|
-
|
|
433
|
-
const combobox = this.combobox;
|
|
434
|
-
if (!combobox) return;
|
|
435
|
-
|
|
436
|
-
const scrollContainers = [...this.getScrollableAncestors(this), null];
|
|
437
|
-
|
|
438
|
-
scrollContainers.forEach((rootContainer) => {
|
|
439
|
-
const observer = new IntersectionObserver(
|
|
440
|
-
(entries) => {
|
|
441
|
-
for (const entry of entries) {
|
|
442
|
-
if (!entry.isIntersecting && this.open) {
|
|
443
|
-
this.hide();
|
|
444
|
-
this.emit('nile-visibility-change', {
|
|
445
|
-
visible: false,
|
|
446
|
-
reason: 'anchor-out-of-view',
|
|
447
|
-
name: this.name,
|
|
448
|
-
root: rootContainer,
|
|
449
|
-
});
|
|
450
|
-
return;
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
},
|
|
454
|
-
{
|
|
455
|
-
root: rootContainer,
|
|
456
|
-
threshold: 0.1,
|
|
457
|
-
}
|
|
458
|
-
);
|
|
459
|
-
|
|
460
|
-
observer.observe(combobox);
|
|
461
|
-
this.anchorVisibilityObservers.push(observer);
|
|
462
|
-
});
|
|
463
|
-
|
|
464
|
-
if (this.enableTabClose) {
|
|
465
|
-
document.addEventListener(
|
|
466
|
-
'visibilitychange',
|
|
467
|
-
this.handleDocumentVisibilityChange
|
|
468
|
-
);
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
private cleanupAnchorVisibilityObserver(): void {
|
|
473
|
-
this.anchorVisibilityObservers.forEach((o) => o.disconnect());
|
|
474
|
-
this.anchorVisibilityObservers = [];
|
|
475
|
-
|
|
476
|
-
document.removeEventListener(
|
|
477
|
-
'visibilitychange',
|
|
478
|
-
this.handleDocumentVisibilityChange
|
|
479
|
-
);
|
|
480
|
-
}
|
|
481
|
-
|
|
403
|
+
protected firstUpdated(_changed: PropertyValues) {
|
|
404
|
+
super.firstUpdated?.(_changed);
|
|
405
|
+
this.visibilityManager = new VisibilityManager({
|
|
406
|
+
host: this,
|
|
407
|
+
target: this.combobox,
|
|
408
|
+
enableVisibilityEffect: this.enableVisibilityEffect,
|
|
409
|
+
enableTabClose: this.enableTabClose,
|
|
410
|
+
isOpen: () => this.open,
|
|
411
|
+
onAnchorOutOfView: () => {
|
|
412
|
+
this.hide();
|
|
413
|
+
this.emit('nile-visibility-change', {
|
|
414
|
+
visible: false,
|
|
415
|
+
reason: 'anchor-out-of-view',
|
|
416
|
+
name: this.name,
|
|
417
|
+
});
|
|
418
|
+
},
|
|
419
|
+
onDocumentHidden: () => {
|
|
420
|
+
this.hide();
|
|
421
|
+
this.emit('nile-visibility-change', {
|
|
422
|
+
visible: false,
|
|
423
|
+
reason: 'document-hidden',
|
|
424
|
+
name: this.name,
|
|
425
|
+
});
|
|
426
|
+
},
|
|
427
|
+
emit: (event, detail) => this.emit(`nile-${event}`, detail),
|
|
428
|
+
});
|
|
429
|
+
}
|
|
482
430
|
|
|
483
431
|
|
|
484
432
|
|
|
@@ -1003,6 +951,7 @@ export class NileVirtualSelect extends NileElement implements NileFormControl {
|
|
|
1003
951
|
@watch('open', { waitUntilFirstUpdate: true })
|
|
1004
952
|
async handleOpenChange(): Promise<void> {
|
|
1005
953
|
if (this.open && !this.disabled) {
|
|
954
|
+
this.visibilityManager?.setup();
|
|
1006
955
|
this.showListbox = true;
|
|
1007
956
|
await this.updateComplete;
|
|
1008
957
|
await this.handleOpen();
|
|
@@ -1011,6 +960,7 @@ export class NileVirtualSelect extends NileElement implements NileFormControl {
|
|
|
1011
960
|
this.portalManager.setupPortalAppend();
|
|
1012
961
|
}
|
|
1013
962
|
} else {
|
|
963
|
+
this.visibilityManager?.cleanup();
|
|
1014
964
|
await this.handleClose();
|
|
1015
965
|
this.showListbox = false;
|
|
1016
966
|
|
|
@@ -1056,17 +1006,12 @@ export class NileVirtualSelect extends NileElement implements NileFormControl {
|
|
|
1056
1006
|
this.wasShowSelectedCheckedOnClose = false;
|
|
1057
1007
|
}
|
|
1058
1008
|
|
|
1059
|
-
if (this.enableVisibilityEffect) {
|
|
1060
|
-
this.setupAnchorVisibilityObserver();
|
|
1061
|
-
}
|
|
1062
|
-
|
|
1063
1009
|
this.filterVirtualOptions("");
|
|
1064
1010
|
this.resetScrollPosition();
|
|
1065
1011
|
this.emit('nile-after-show', { value: this.value, name: this.name });
|
|
1066
1012
|
}
|
|
1067
1013
|
|
|
1068
1014
|
private async handleClose(): Promise<void> {
|
|
1069
|
-
this.cleanupAnchorVisibilityObserver();
|
|
1070
1015
|
this.emit('nile-hide', { value: this.value, name: this.name });
|
|
1071
1016
|
this.removeOpenListeners();
|
|
1072
1017
|
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
|
|
2
|
+
export interface VisibilityManagerOptions {
|
|
3
|
+
|
|
4
|
+
host: HTMLElement;
|
|
5
|
+
|
|
6
|
+
target: HTMLElement | null;
|
|
7
|
+
|
|
8
|
+
enableVisibilityEffect?: boolean;
|
|
9
|
+
|
|
10
|
+
enableTabClose?: boolean;
|
|
11
|
+
|
|
12
|
+
onAnchorOutOfView?: (root?: Element | Document | null) => void;
|
|
13
|
+
|
|
14
|
+
onDocumentHidden?: () => void;
|
|
15
|
+
|
|
16
|
+
emit?: (event: string, detail?: Record<string, any>) => void;
|
|
17
|
+
|
|
18
|
+
isOpen?: () => boolean;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export class VisibilityManager {
|
|
22
|
+
private observers: IntersectionObserver[] = [];
|
|
23
|
+
private options: VisibilityManagerOptions;
|
|
24
|
+
private handleVisibilityChange: () => void;
|
|
25
|
+
|
|
26
|
+
constructor(options: VisibilityManagerOptions) {
|
|
27
|
+
this.options = options;
|
|
28
|
+
this.handleVisibilityChange = this.onDocumentVisibilityChange.bind(this);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
setup(): void {
|
|
33
|
+
const {
|
|
34
|
+
target,
|
|
35
|
+
enableVisibilityEffect,
|
|
36
|
+
enableTabClose,
|
|
37
|
+
} = this.options;
|
|
38
|
+
|
|
39
|
+
if (!enableVisibilityEffect || !target) return;
|
|
40
|
+
|
|
41
|
+
this.cleanup();
|
|
42
|
+
|
|
43
|
+
const scrollContainers = [...this.getScrollableAncestors(this.options.host), null];
|
|
44
|
+
|
|
45
|
+
scrollContainers.forEach(rootContainer => {
|
|
46
|
+
const observer = new IntersectionObserver(
|
|
47
|
+
entries => {
|
|
48
|
+
for (const entry of entries) {
|
|
49
|
+
if (!entry.isIntersecting && this.options.isOpen?.()) {
|
|
50
|
+
this.options.onAnchorOutOfView?.(rootContainer);
|
|
51
|
+
this.options.emit?.('visibility-change', {
|
|
52
|
+
visible: false,
|
|
53
|
+
reason: 'anchor-out-of-view',
|
|
54
|
+
root: rootContainer,
|
|
55
|
+
});
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{ root: rootContainer, threshold: 0.1 }
|
|
61
|
+
);
|
|
62
|
+
observer.observe(target);
|
|
63
|
+
this.observers.push(observer);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
if (enableTabClose) {
|
|
67
|
+
document.addEventListener('visibilitychange', this.handleVisibilityChange);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
cleanup(): void {
|
|
72
|
+
this.observers.forEach(o => o.disconnect());
|
|
73
|
+
this.observers = [];
|
|
74
|
+
document.removeEventListener('visibilitychange', this.handleVisibilityChange);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
private onDocumentVisibilityChange(): void {
|
|
78
|
+
const { enableTabClose, isOpen, onDocumentHidden, emit } = this.options;
|
|
79
|
+
if (!enableTabClose) return;
|
|
80
|
+
|
|
81
|
+
if (document.visibilityState === 'hidden' && isOpen?.()) {
|
|
82
|
+
onDocumentHidden?.();
|
|
83
|
+
emit?.('visibility-change', {
|
|
84
|
+
visible: false,
|
|
85
|
+
reason: 'document-hidden',
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
private getScrollableAncestors(element: HTMLElement): HTMLElement[] {
|
|
91
|
+
const scrollables: HTMLElement[] = [];
|
|
92
|
+
let parent = element.parentElement;
|
|
93
|
+
while (parent) {
|
|
94
|
+
const style = getComputedStyle(parent);
|
|
95
|
+
const canScroll = /(auto|scroll)/.test(
|
|
96
|
+
style.overflow + style.overflowY + style.overflowX
|
|
97
|
+
);
|
|
98
|
+
if (canScroll) scrollables.push(parent);
|
|
99
|
+
parent = parent.parentElement;
|
|
100
|
+
}
|
|
101
|
+
return scrollables;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|