@aquera/nile-elements 0.0.119 → 0.0.120
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 +6 -0
- package/dist/nile-accordion/nile-accordion.cjs.js +1 -1
- package/dist/nile-accordion/nile-accordion.cjs.js.map +1 -1
- package/dist/nile-accordion/nile-accordion.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 +15 -6
- package/dist/nile-avatar/nile-avatar.cjs.js +1 -1
- package/dist/nile-avatar/nile-avatar.cjs.js.map +1 -1
- package/dist/nile-avatar/nile-avatar.esm.js +1 -1
- package/dist/nile-badge/nile-badge.cjs.js +1 -1
- package/dist/nile-badge/nile-badge.cjs.js.map +1 -1
- package/dist/nile-badge/nile-badge.esm.js +1 -1
- package/dist/nile-breadcrumb/nile-breadcrumb.cjs.js +1 -1
- package/dist/nile-breadcrumb/nile-breadcrumb.cjs.js.map +1 -1
- package/dist/nile-breadcrumb/nile-breadcrumb.esm.js +1 -1
- package/dist/nile-breadcrumb-item/nile-breadcrumb-item.cjs.js +1 -1
- package/dist/nile-breadcrumb-item/nile-breadcrumb-item.cjs.js.map +1 -1
- package/dist/nile-breadcrumb-item/nile-breadcrumb-item.esm.js +2 -2
- package/dist/nile-button/nile-button.cjs.js +1 -1
- package/dist/nile-button/nile-button.cjs.js.map +1 -1
- package/dist/nile-button/nile-button.esm.js +1 -1
- package/dist/nile-button-toggle/nile-button-toggle.cjs.js +1 -1
- package/dist/nile-button-toggle/nile-button-toggle.cjs.js.map +1 -1
- package/dist/nile-button-toggle/nile-button-toggle.esm.js +1 -1
- package/dist/nile-button-toggle-group/nile-button-toggle-group.cjs.js +1 -1
- package/dist/nile-button-toggle-group/nile-button-toggle-group.cjs.js.map +1 -1
- package/dist/nile-button-toggle-group/nile-button-toggle-group.esm.js +1 -1
- package/dist/nile-calendar/nile-calendar.cjs.js +1 -1
- package/dist/nile-calendar/nile-calendar.cjs.js.map +1 -1
- package/dist/nile-calendar/nile-calendar.css.cjs.js +1 -1
- package/dist/nile-calendar/nile-calendar.css.cjs.js.map +1 -1
- package/dist/nile-calendar/nile-calendar.css.esm.js +4 -1
- package/dist/nile-calendar/nile-calendar.esm.js +9 -2
- 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 +5 -5
- package/dist/nile-card/nile-card.cjs.js +1 -1
- package/dist/nile-card/nile-card.cjs.js.map +1 -1
- package/dist/nile-card/nile-card.esm.js +1 -1
- package/dist/nile-checkbox/nile-checkbox.cjs.js +1 -1
- package/dist/nile-checkbox/nile-checkbox.cjs.js.map +1 -1
- package/dist/nile-checkbox/nile-checkbox.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 +6 -2
- package/dist/nile-chip/nile-chip.test.cjs.js.map +1 -1
- package/dist/nile-code-editor/nile-code-editor.cjs.js +1 -1
- package/dist/nile-code-editor/nile-code-editor.cjs.js.map +1 -1
- package/dist/nile-code-editor/nile-code-editor.esm.js +1 -1
- package/dist/nile-content-editor/nile-content-editor.cjs.js +1 -1
- package/dist/nile-content-editor/nile-content-editor.cjs.js.map +1 -1
- package/dist/nile-content-editor/nile-content-editor.esm.js +5 -5
- package/dist/nile-date-picker/nile-date-picker.cjs.js +1 -1
- package/dist/nile-date-picker/nile-date-picker.cjs.js.map +1 -1
- package/dist/nile-date-picker/nile-date-picker.esm.js +17 -6
- package/dist/nile-dialog/nile-dialog.cjs.js +1 -1
- package/dist/nile-dialog/nile-dialog.cjs.js.map +1 -1
- package/dist/nile-dialog/nile-dialog.esm.js +1 -1
- package/dist/nile-drawer/nile-drawer.cjs.js +1 -1
- package/dist/nile-drawer/nile-drawer.cjs.js.map +1 -1
- package/dist/nile-drawer/nile-drawer.esm.js +1 -1
- package/dist/nile-empty-state/nile-empty-state.cjs.js +1 -1
- package/dist/nile-empty-state/nile-empty-state.cjs.js.map +1 -1
- package/dist/nile-empty-state/nile-empty-state.esm.js +1 -1
- package/dist/nile-icon-button/nile-icon-button.cjs.js +1 -1
- package/dist/nile-icon-button/nile-icon-button.cjs.js.map +1 -1
- package/dist/nile-icon-button/nile-icon-button.esm.js +1 -1
- package/dist/nile-input/nile-input.cjs.js +1 -1
- package/dist/nile-input/nile-input.cjs.js.map +1 -1
- package/dist/nile-input/nile-input.esm.js +1 -1
- package/dist/nile-link/nile-link.cjs.js +1 -1
- package/dist/nile-link/nile-link.cjs.js.map +1 -1
- package/dist/nile-link/nile-link.esm.js +1 -1
- package/dist/nile-list/nile-list.cjs.js +1 -1
- package/dist/nile-list/nile-list.cjs.js.map +1 -1
- package/dist/nile-list/nile-list.esm.js +1 -1
- package/dist/nile-list-item/nile-list-item.cjs.js +1 -1
- package/dist/nile-list-item/nile-list-item.cjs.js.map +1 -1
- package/dist/nile-list-item/nile-list-item.esm.js +1 -1
- package/dist/nile-menu/nile-menu.cjs.js +1 -1
- package/dist/nile-menu/nile-menu.cjs.js.map +1 -1
- package/dist/nile-menu/nile-menu.esm.js +5 -2
- package/dist/nile-menu-item/nile-menu-item.cjs.js +1 -1
- package/dist/nile-menu-item/nile-menu-item.cjs.js.map +1 -1
- package/dist/nile-menu-item/nile-menu-item.esm.js +1 -1
- package/dist/nile-option/nile-option.cjs.js +1 -1
- package/dist/nile-option/nile-option.cjs.js.map +1 -1
- package/dist/nile-option/nile-option.esm.js +1 -1
- package/dist/nile-popover/nile-popover.cjs.js +1 -1
- package/dist/nile-popover/nile-popover.cjs.js.map +1 -1
- package/dist/nile-popover/nile-popover.esm.js +2 -2
- package/dist/nile-popup/nile-popup.cjs.js +1 -1
- package/dist/nile-popup/nile-popup.cjs.js.map +1 -1
- package/dist/nile-popup/nile-popup.esm.js +1 -1
- package/dist/nile-radio-group/nile-radio-group.cjs.js +1 -1
- package/dist/nile-radio-group/nile-radio-group.cjs.js.map +1 -1
- package/dist/nile-radio-group/nile-radio-group.esm.js +1 -1
- package/dist/nile-radio-group/nile-radio-group.test.cjs.js +2 -0
- package/dist/nile-radio-group/nile-radio-group.test.cjs.js.map +1 -0
- package/dist/nile-radio-group/nile-radio-group.test.esm.js +57 -0
- 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 +6 -4
- package/dist/nile-select/nile-select.test.cjs.js +2 -0
- package/dist/nile-select/nile-select.test.cjs.js.map +1 -0
- package/dist/nile-select/nile-select.test.esm.js +55 -0
- package/dist/nile-slide-toggle/nile-slide-toggle.cjs.js +1 -1
- package/dist/nile-slide-toggle/nile-slide-toggle.cjs.js.map +1 -1
- package/dist/nile-slide-toggle/nile-slide-toggle.esm.js +3 -3
- package/dist/nile-split-panel/nile-split-panel.cjs.js +1 -1
- package/dist/nile-split-panel/nile-split-panel.cjs.js.map +1 -1
- package/dist/nile-split-panel/nile-split-panel.esm.js +1 -1
- package/dist/nile-split-panel/nile-split-panel.test.cjs.js +2 -0
- package/dist/nile-split-panel/nile-split-panel.test.cjs.js.map +1 -0
- package/dist/nile-split-panel/nile-split-panel.test.esm.js +1 -0
- package/dist/nile-stepper/nile-stepper.cjs.js +1 -1
- package/dist/nile-stepper/nile-stepper.cjs.js.map +1 -1
- package/dist/nile-stepper/nile-stepper.esm.js +1 -1
- package/dist/nile-stepper/nile-stepper.test.cjs.js +1 -1
- package/dist/nile-stepper/nile-stepper.test.cjs.js.map +1 -1
- package/dist/nile-stepper/nile-stepper.test.esm.js +1 -1
- package/dist/nile-tab/nile-tab.cjs.js +1 -1
- package/dist/nile-tab/nile-tab.cjs.js.map +1 -1
- package/dist/nile-tab/nile-tab.esm.js +1 -1
- package/dist/nile-tab-group/nile-tab-group.cjs.js +1 -1
- package/dist/nile-tab-group/nile-tab-group.cjs.js.map +1 -1
- package/dist/nile-tab-group/nile-tab-group.esm.js +1 -1
- package/dist/nile-table-body/nile-table-body.cjs.js +1 -1
- package/dist/nile-table-body/nile-table-body.cjs.js.map +1 -1
- package/dist/nile-table-body/nile-table-body.esm.js +1 -1
- package/dist/nile-tag/nile-tag.cjs.js +1 -1
- package/dist/nile-tag/nile-tag.cjs.js.map +1 -1
- package/dist/nile-tag/nile-tag.esm.js +1 -1
- package/dist/nile-textarea/nile-textarea.cjs.js +1 -1
- package/dist/nile-textarea/nile-textarea.cjs.js.map +1 -1
- package/dist/nile-textarea/nile-textarea.esm.js +1 -1
- package/dist/nile-textarea/nile-textarea.test.cjs.js.map +1 -1
- package/dist/nile-toast/nile-toast.cjs.js +1 -1
- package/dist/nile-toast/nile-toast.cjs.js.map +1 -1
- package/dist/nile-toast/nile-toast.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 +1 -1
- package/dist/nile-tree/nile-tree.cjs.js +1 -1
- package/dist/nile-tree/nile-tree.cjs.js.map +1 -1
- package/dist/nile-tree/nile-tree.esm.js +1 -1
- package/dist/nile-tree/nile-tree.test.cjs.js +2 -0
- package/dist/nile-tree/nile-tree.test.cjs.js.map +1 -0
- package/dist/nile-tree/nile-tree.test.esm.js +1 -0
- package/dist/src/nile-accordion/nile-accordion.d.ts +1 -0
- package/dist/src/nile-accordion/nile-accordion.js +1 -0
- package/dist/src/nile-accordion/nile-accordion.js.map +1 -1
- package/dist/src/nile-auto-complete/nile-auto-complete.d.ts +1 -0
- package/dist/src/nile-auto-complete/nile-auto-complete.js +12 -2
- package/dist/src/nile-auto-complete/nile-auto-complete.js.map +1 -1
- package/dist/src/nile-avatar/nile-avatar.d.ts +1 -0
- package/dist/src/nile-avatar/nile-avatar.js +1 -0
- package/dist/src/nile-avatar/nile-avatar.js.map +1 -1
- package/dist/src/nile-badge/nile-badge.d.ts +1 -0
- package/dist/src/nile-badge/nile-badge.js +1 -0
- package/dist/src/nile-badge/nile-badge.js.map +1 -1
- package/dist/src/nile-breadcrumb/nile-breadcrumb.d.ts +1 -0
- package/dist/src/nile-breadcrumb/nile-breadcrumb.js +5 -0
- package/dist/src/nile-breadcrumb/nile-breadcrumb.js.map +1 -1
- package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.d.ts +1 -0
- package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.js +1 -0
- package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.js.map +1 -1
- package/dist/src/nile-button/nile-button.d.ts +1 -0
- package/dist/src/nile-button/nile-button.js +1 -0
- package/dist/src/nile-button/nile-button.js.map +1 -1
- package/dist/src/nile-button-toggle/nile-button-toggle.d.ts +1 -0
- package/dist/src/nile-button-toggle/nile-button-toggle.js +1 -0
- package/dist/src/nile-button-toggle/nile-button-toggle.js.map +1 -1
- package/dist/src/nile-button-toggle-group/nile-button-toggle-group.d.ts +1 -0
- package/dist/src/nile-button-toggle-group/nile-button-toggle-group.js +1 -0
- package/dist/src/nile-button-toggle-group/nile-button-toggle-group.js.map +1 -1
- package/dist/src/nile-calendar/nile-calendar.css.js +4 -1
- package/dist/src/nile-calendar/nile-calendar.css.js.map +1 -1
- package/dist/src/nile-calendar/nile-calendar.d.ts +5 -1
- package/dist/src/nile-calendar/nile-calendar.js +34 -0
- package/dist/src/nile-calendar/nile-calendar.js.map +1 -1
- package/dist/src/nile-calendar/nile-calendar.test.d.ts +6 -0
- package/dist/src/nile-calendar/nile-calendar.test.js +6 -0
- package/dist/src/nile-calendar/nile-calendar.test.js.map +1 -1
- package/dist/src/nile-card/nile-card.d.ts +1 -0
- package/dist/src/nile-card/nile-card.js +1 -0
- package/dist/src/nile-card/nile-card.js.map +1 -1
- package/dist/src/nile-checkbox/nile-checkbox.d.ts +1 -0
- package/dist/src/nile-checkbox/nile-checkbox.js +1 -0
- package/dist/src/nile-checkbox/nile-checkbox.js.map +1 -1
- package/dist/src/nile-chip/nile-chip.d.ts +1 -0
- package/dist/src/nile-chip/nile-chip.js +5 -0
- package/dist/src/nile-chip/nile-chip.js.map +1 -1
- package/dist/src/nile-chip/nile-chip.test.js.map +1 -1
- package/dist/src/nile-code-editor/nile-code-editor.d.ts +1 -0
- package/dist/src/nile-code-editor/nile-code-editor.js +1 -0
- package/dist/src/nile-code-editor/nile-code-editor.js.map +1 -1
- package/dist/src/nile-content-editor/nile-content-editor.d.ts +1 -0
- package/dist/src/nile-content-editor/nile-content-editor.js +1 -0
- package/dist/src/nile-content-editor/nile-content-editor.js.map +1 -1
- package/dist/src/nile-date-picker/nile-date-picker.d.ts +3 -0
- package/dist/src/nile-date-picker/nile-date-picker.js +24 -5
- package/dist/src/nile-date-picker/nile-date-picker.js.map +1 -1
- package/dist/src/nile-dialog/nile-dialog.d.ts +1 -0
- package/dist/src/nile-dialog/nile-dialog.js +1 -0
- package/dist/src/nile-dialog/nile-dialog.js.map +1 -1
- package/dist/src/nile-drawer/nile-drawer.d.ts +1 -0
- package/dist/src/nile-drawer/nile-drawer.js +1 -0
- package/dist/src/nile-drawer/nile-drawer.js.map +1 -1
- package/dist/src/nile-empty-state/nile-empty-state.d.ts +1 -0
- package/dist/src/nile-empty-state/nile-empty-state.js +1 -0
- package/dist/src/nile-empty-state/nile-empty-state.js.map +1 -1
- package/dist/src/nile-icon-button/nile-icon-button.d.ts +1 -0
- package/dist/src/nile-icon-button/nile-icon-button.js +1 -0
- package/dist/src/nile-icon-button/nile-icon-button.js.map +1 -1
- package/dist/src/nile-input/nile-input.d.ts +1 -0
- package/dist/src/nile-input/nile-input.js +1 -0
- package/dist/src/nile-input/nile-input.js.map +1 -1
- package/dist/src/nile-link/nile-link.d.ts +1 -0
- package/dist/src/nile-link/nile-link.js +1 -0
- package/dist/src/nile-link/nile-link.js.map +1 -1
- package/dist/src/nile-list/nile-list.d.ts +1 -0
- package/dist/src/nile-list/nile-list.js +5 -0
- package/dist/src/nile-list/nile-list.js.map +1 -1
- package/dist/src/nile-list-item/nile-list-item.d.ts +1 -0
- package/dist/src/nile-list-item/nile-list-item.js +1 -0
- package/dist/src/nile-list-item/nile-list-item.js.map +1 -1
- package/dist/src/nile-menu/nile-menu.d.ts +1 -0
- package/dist/src/nile-menu/nile-menu.js +4 -0
- package/dist/src/nile-menu/nile-menu.js.map +1 -1
- package/dist/src/nile-menu-item/nile-menu-item.d.ts +2 -0
- package/dist/src/nile-menu-item/nile-menu-item.js +2 -0
- package/dist/src/nile-menu-item/nile-menu-item.js.map +1 -1
- package/dist/src/nile-option/nile-option.d.ts +2 -0
- package/dist/src/nile-option/nile-option.js +2 -0
- package/dist/src/nile-option/nile-option.js.map +1 -1
- package/dist/src/nile-popover/nile-popover.d.ts +1 -0
- package/dist/src/nile-popover/nile-popover.js +1 -0
- package/dist/src/nile-popover/nile-popover.js.map +1 -1
- package/dist/src/nile-popup/nile-popup.d.ts +2 -0
- package/dist/src/nile-popup/nile-popup.js +2 -0
- package/dist/src/nile-popup/nile-popup.js.map +1 -1
- package/dist/src/nile-radio-group/nile-radio-group.d.ts +1 -0
- package/dist/src/nile-radio-group/nile-radio-group.js +1 -0
- package/dist/src/nile-radio-group/nile-radio-group.js.map +1 -1
- package/dist/src/nile-radio-group/nile-radio-group.test.d.ts +2 -0
- package/dist/src/nile-radio-group/nile-radio-group.test.js +174 -0
- package/dist/src/nile-radio-group/nile-radio-group.test.js.map +1 -0
- package/dist/src/nile-select/nile-select.d.ts +1 -0
- package/dist/src/nile-select/nile-select.js +6 -37
- package/dist/src/nile-select/nile-select.js.map +1 -1
- package/dist/src/nile-select/nile-select.test.d.ts +6 -0
- package/dist/src/nile-select/nile-select.test.js +247 -0
- package/dist/src/nile-select/nile-select.test.js.map +1 -0
- package/dist/src/nile-slide-toggle/nile-slide-toggle.d.ts +1 -0
- package/dist/src/nile-slide-toggle/nile-slide-toggle.js +3 -2
- package/dist/src/nile-slide-toggle/nile-slide-toggle.js.map +1 -1
- package/dist/src/nile-split-panel/nile-split-panel.d.ts +1 -0
- package/dist/src/nile-split-panel/nile-split-panel.js +1 -0
- package/dist/src/nile-split-panel/nile-split-panel.js.map +1 -1
- package/dist/src/nile-split-panel/nile-split-panel.test.d.ts +1 -0
- package/dist/src/nile-split-panel/nile-split-panel.test.js +4 -0
- package/dist/src/nile-split-panel/nile-split-panel.test.js.map +1 -0
- package/dist/src/nile-stepper/nile-stepper.d.ts +1 -0
- package/dist/src/nile-stepper/nile-stepper.js +1 -0
- package/dist/src/nile-stepper/nile-stepper.js.map +1 -1
- package/dist/src/nile-stepper/nile-stepper.test.d.ts +4 -0
- package/dist/src/nile-stepper/nile-stepper.test.js +6 -164
- package/dist/src/nile-stepper/nile-stepper.test.js.map +1 -1
- package/dist/src/nile-tab/nile-tab.d.ts +1 -0
- package/dist/src/nile-tab/nile-tab.js +1 -0
- package/dist/src/nile-tab/nile-tab.js.map +1 -1
- package/dist/src/nile-tab-group/nile-tab-group.d.ts +1 -0
- package/dist/src/nile-tab-group/nile-tab-group.js +1 -0
- package/dist/src/nile-tab-group/nile-tab-group.js.map +1 -1
- package/dist/src/nile-table-body/nile-table-body.d.ts +1 -0
- package/dist/src/nile-table-body/nile-table-body.js +1 -0
- package/dist/src/nile-table-body/nile-table-body.js.map +1 -1
- package/dist/src/nile-tag/nile-tag.d.ts +1 -0
- package/dist/src/nile-tag/nile-tag.js +1 -0
- package/dist/src/nile-tag/nile-tag.js.map +1 -1
- package/dist/src/nile-textarea/nile-textarea.d.ts +1 -0
- package/dist/src/nile-textarea/nile-textarea.js +1 -0
- package/dist/src/nile-textarea/nile-textarea.js.map +1 -1
- package/dist/src/nile-textarea/nile-textarea.test.js.map +1 -1
- package/dist/src/nile-toast/nile-toast.d.ts +1 -0
- package/dist/src/nile-toast/nile-toast.js +1 -0
- package/dist/src/nile-toast/nile-toast.js.map +1 -1
- package/dist/src/nile-tooltip/nile-tooltip.d.ts +1 -0
- package/dist/src/nile-tooltip/nile-tooltip.js +1 -0
- package/dist/src/nile-tooltip/nile-tooltip.js.map +1 -1
- package/dist/src/nile-tree/nile-tree.d.ts +1 -0
- package/dist/src/nile-tree/nile-tree.js +1 -0
- package/dist/src/nile-tree/nile-tree.js.map +1 -1
- package/dist/src/nile-tree/nile-tree.test.d.ts +2 -0
- package/dist/src/nile-tree/nile-tree.test.js +5 -0
- package/dist/src/nile-tree/nile-tree.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/nile-accordion/nile-accordion.ts +1 -0
- package/src/nile-auto-complete/nile-auto-complete.ts +13 -2
- package/src/nile-avatar/nile-avatar.ts +2 -0
- package/src/nile-badge/nile-badge.ts +2 -0
- package/src/nile-breadcrumb/nile-breadcrumb.ts +2 -0
- package/src/nile-breadcrumb-item/nile-breadcrumb-item.ts +2 -0
- package/src/nile-button/nile-button.ts +2 -0
- package/src/nile-button-toggle/nile-button-toggle.ts +2 -0
- package/src/nile-button-toggle-group/nile-button-toggle-group.ts +2 -0
- package/src/nile-calendar/nile-calendar.css.ts +4 -1
- package/src/nile-calendar/nile-calendar.test.ts +7 -0
- package/src/nile-calendar/nile-calendar.ts +33 -1
- package/src/nile-card/nile-card.ts +2 -0
- package/src/nile-checkbox/nile-checkbox.ts +2 -0
- package/src/nile-chip/nile-chip.test.ts +0 -1
- package/src/nile-chip/nile-chip.ts +6 -0
- package/src/nile-code-editor/nile-code-editor.ts +2 -0
- package/src/nile-content-editor/nile-content-editor.ts +2 -0
- package/src/nile-date-picker/nile-date-picker.ts +21 -5
- package/src/nile-dialog/nile-dialog.ts +2 -0
- package/src/nile-drawer/nile-drawer.ts +2 -0
- package/src/nile-empty-state/nile-empty-state.ts +2 -0
- package/src/nile-icon-button/nile-icon-button.ts +2 -0
- package/src/nile-input/nile-input.ts +2 -0
- package/src/nile-link/nile-link.ts +2 -0
- package/src/nile-list/nile-list.ts +2 -0
- package/src/nile-list-item/nile-list-item.ts +2 -0
- package/src/nile-menu/nile-menu.ts +6 -0
- package/src/nile-menu-item/nile-menu-item.ts +3 -0
- package/src/nile-option/nile-option.ts +3 -0
- package/src/nile-popover/nile-popover.ts +2 -0
- package/src/nile-popup/nile-popup.ts +3 -0
- package/src/nile-radio-group/nile-radio-group.test.ts +215 -0
- package/src/nile-radio-group/nile-radio-group.ts +2 -0
- package/src/nile-select/nile-select.test.ts +309 -0
- package/src/nile-select/nile-select.ts +7 -38
- package/src/nile-slide-toggle/nile-slide-toggle.ts +4 -2
- package/src/nile-split-panel/nile-split-panel.test.ts +7 -0
- package/src/nile-split-panel/nile-split-panel.ts +2 -0
- package/src/nile-stepper/nile-stepper.test.ts +12 -174
- package/src/nile-stepper/nile-stepper.ts +2 -0
- package/src/nile-tab/nile-tab.ts +2 -0
- package/src/nile-tab-group/nile-tab-group.ts +2 -0
- package/src/nile-table-body/nile-table-body.ts +2 -0
- package/src/nile-tag/nile-tag.ts +2 -0
- package/src/nile-textarea/nile-textarea.test.ts +1 -1
- package/src/nile-textarea/nile-textarea.ts +2 -0
- package/src/nile-toast/nile-toast.ts +2 -0
- package/src/nile-tooltip/nile-tooltip.ts +2 -0
- package/src/nile-tree/nile-tree.test.ts +9 -0
- package/src/nile-tree/nile-tree.ts +2 -0
@@ -0,0 +1,215 @@
|
|
1
|
+
import { html, fixture, expect } from '@open-wc/testing';
|
2
|
+
import './nile-radio-group';
|
3
|
+
import NileRadioGroup from './nile-radio-group';
|
4
|
+
import NileRadio from '../nile-radio/nile-radio';
|
5
|
+
import'../nile-radio/nile-radio';
|
6
|
+
|
7
|
+
describe('nile-radio-group', () => {
|
8
|
+
it('should render the radio group with radios', async () => {
|
9
|
+
const element = await fixture<NileRadioGroup>(html`
|
10
|
+
<nile-radio-group label="Select an option" name="options" value="2">
|
11
|
+
<nile-radio name="test" value="1" label="Radio 1"></nile-radio>
|
12
|
+
<nile-radio name="test" value="2" label="Radio 2"></nile-radio>
|
13
|
+
<nile-radio name="test" value="3" label="Radio 3"></nile-radio>
|
14
|
+
</nile-radio-group>
|
15
|
+
`);
|
16
|
+
|
17
|
+
const radios = element.querySelectorAll('nile-radio');
|
18
|
+
expect(radios.length).to.equal(3);
|
19
|
+
expect(element.label).to.equal('Select an option');
|
20
|
+
});
|
21
|
+
|
22
|
+
it('should select the correct radio based on value', async () => {
|
23
|
+
const element = await fixture<NileRadioGroup>(html`
|
24
|
+
<nile-radio-group label="Select an option" name="options" value="2">
|
25
|
+
<nile-radio name="test" value="1" label="Radio 1"></nile-radio>
|
26
|
+
<nile-radio name="test" value="2" label="Radio 2"></nile-radio>
|
27
|
+
<nile-radio name="test" value="3" label="Radio 3"></nile-radio>
|
28
|
+
</nile-radio-group>
|
29
|
+
`);
|
30
|
+
|
31
|
+
const selectedRadio = element.querySelector<NileRadio>('nile-radio[value="2"]');
|
32
|
+
expect(selectedRadio?.checked).to.be.true;
|
33
|
+
});
|
34
|
+
|
35
|
+
it('should emit change event when radio selection changes', async () => {
|
36
|
+
const element = await fixture<NileRadioGroup>(html`
|
37
|
+
<nile-radio-group label="Select an option" name="options" value="1">
|
38
|
+
<nile-radio name="test" value="1" label="Radio 1"></nile-radio>
|
39
|
+
<nile-radio name="test" value="2" label="Radio 2"></nile-radio>
|
40
|
+
</nile-radio-group>
|
41
|
+
`);
|
42
|
+
|
43
|
+
let changeEventFired = false;
|
44
|
+
element.addEventListener('change', () => {
|
45
|
+
changeEventFired = true;
|
46
|
+
});
|
47
|
+
|
48
|
+
const secondRadio = element.querySelector<NileRadio>('nile-radio[value="2"]');
|
49
|
+
secondRadio?.click(); // Simulate user clicking the second radio
|
50
|
+
await element.updateComplete;
|
51
|
+
|
52
|
+
expect(changeEventFired).to.be.true;
|
53
|
+
expect(element.value).to.equal('2');
|
54
|
+
});
|
55
|
+
|
56
|
+
it('should handle disabled radios correctly', async () => {
|
57
|
+
const element = await fixture<NileRadioGroup>(html`
|
58
|
+
<nile-radio-group label="Disabled Option" name="options">
|
59
|
+
<nile-radio name="test" value="1"> Radio 1 </nile-radio>
|
60
|
+
<nile-radio name="test" value="2" disabled islabelborder>Radio 2</nile-radio>
|
61
|
+
<nile-radio name="test" value="3" disabled>Radio 3</nile-radio>
|
62
|
+
<nile-radio name="test" value="4">Radio 4</nile-radio>
|
63
|
+
</nile-radio-group>
|
64
|
+
`);
|
65
|
+
|
66
|
+
const disabledRadios = element.querySelectorAll('nile-radio[disabled]');
|
67
|
+
expect(disabledRadios.length).to.equal(2);
|
68
|
+
|
69
|
+
const enabledRadio = element.querySelector<NileRadio>('nile-radio[value="1"]');
|
70
|
+
enabledRadio?.click(); // Simulate clicking the enabled radio
|
71
|
+
await element.updateComplete;
|
72
|
+
|
73
|
+
expect(element.value).to.equal('1'); // Should select the enabled radio
|
74
|
+
});
|
75
|
+
|
76
|
+
it('should not allow selection of disabled radio', async () => {
|
77
|
+
const element = await fixture<NileRadioGroup>(html`
|
78
|
+
<nile-radio-group label="Disabled Option" name="options">
|
79
|
+
<nile-radio name="test" value="1"> Radio 1 </nile-radio>
|
80
|
+
<nile-radio name="test" value="2" disabled>Radio 2</nile-radio>
|
81
|
+
<nile-radio name="test" value="3">Radio 3</nile-radio>
|
82
|
+
</nile-radio-group>
|
83
|
+
`);
|
84
|
+
|
85
|
+
const disabledRadio = element.querySelector<NileRadio>('nile-radio[value="2"]');
|
86
|
+
disabledRadio?.click(); // Attempt to click the disabled radio
|
87
|
+
await element.updateComplete;
|
88
|
+
|
89
|
+
expect(element.value).to.equal(''); // Should not change selection
|
90
|
+
});
|
91
|
+
|
92
|
+
it('should correctly handle the islabelborder property', async () => {
|
93
|
+
const element = await fixture<NileRadioGroup>(html`
|
94
|
+
<nile-radio-group label="Border Option" name="options" islabelborder>
|
95
|
+
<nile-radio name="test" value="1"> Radio 1 </nile-radio>
|
96
|
+
<nile-radio name="test" value="2"> Radio 2 </nile-radio>
|
97
|
+
</nile-radio-group>
|
98
|
+
`);
|
99
|
+
|
100
|
+
const radios = element.querySelectorAll('nile-radio');
|
101
|
+
radios.forEach(radio => {
|
102
|
+
expect(radio.islabelborder).to.be.true; // Ensure islabelborder is set
|
103
|
+
});
|
104
|
+
});
|
105
|
+
|
106
|
+
it('should focus the first radio when the label is clicked', async () => {
|
107
|
+
const element = await fixture<NileRadioGroup>(html`
|
108
|
+
<nile-radio-group label="Focus Test" name="options">
|
109
|
+
<nile-radio name="test" value="1"> Radio 1 </nile-radio>
|
110
|
+
<nile-radio name="test" value="2"> Radio 2 </nile-radio>
|
111
|
+
</nile-radio-group>
|
112
|
+
`);
|
113
|
+
|
114
|
+
const label = element.shadowRoot?.querySelector<HTMLElement>('label');
|
115
|
+
label?.click(); // Simulate clicking the label
|
116
|
+
await element.updateComplete;
|
117
|
+
|
118
|
+
const firstRadio = element.querySelector('nile-radio[value="1"]');
|
119
|
+
expect(document.activeElement).to.equal(firstRadio); // Should focus the first radio
|
120
|
+
});
|
121
|
+
|
122
|
+
it('should set required attribute correctly', async () => {
|
123
|
+
const element = await fixture<NileRadioGroup>(html`
|
124
|
+
<nile-radio-group label="Required Test" name="options" required>
|
125
|
+
<nile-radio name="test" value="1"> Radio 1 </nile-radio>
|
126
|
+
<nile-radio name="test" value="2"> Radio 2 </nile-radio>
|
127
|
+
</nile-radio-group>
|
128
|
+
`);
|
129
|
+
|
130
|
+
const validationInput = element.shadowRoot?.querySelector<HTMLInputElement>('.radio-group__validation-input');
|
131
|
+
expect(validationInput?.required).to.be.true; // Should be marked as required
|
132
|
+
});
|
133
|
+
|
134
|
+
it('should reflect the current value property correctly', async () => {
|
135
|
+
const element = await fixture<NileRadioGroup>(html`
|
136
|
+
<nile-radio-group label="Reflect Test" name="options" value="1">
|
137
|
+
<nile-radio name="test" value="1"> Radio 1 </nile-radio>
|
138
|
+
<nile-radio name="test" value="2"> Radio 2 </nile-radio>
|
139
|
+
</nile-radio-group>
|
140
|
+
`);
|
141
|
+
|
142
|
+
expect(element.value).to.equal('1'); // Check initial value
|
143
|
+
element.value = '2'; // Change value
|
144
|
+
await element.updateComplete;
|
145
|
+
|
146
|
+
expect(element.value).to.equal('2'); // Ensure value reflects the change
|
147
|
+
const selectedRadio = element.querySelector<NileRadio>('nile-radio[value="2"]');
|
148
|
+
expect(selectedRadio?.checked).to.be.true; // Check if the correct radio is selected
|
149
|
+
});
|
150
|
+
|
151
|
+
it('should toggle selection with arrow keys', async () => {
|
152
|
+
const element = await fixture<NileRadioGroup>(html`
|
153
|
+
<nile-radio-group label="Arrow Key Navigation" name="options">
|
154
|
+
<nile-radio name="test" value="1" label="Radio 1"></nile-radio>
|
155
|
+
<nile-radio name="test" value="2" label="Radio 2"></nile-radio>
|
156
|
+
<nile-radio name="test" value="3" label="Radio 3"></nile-radio>
|
157
|
+
</nile-radio-group>
|
158
|
+
`);
|
159
|
+
const slot=element.shadowRoot?.querySelector("fieldset > div > div:nth-child(2) > slot")
|
160
|
+
|
161
|
+
// Start by selecting the first radio button
|
162
|
+
const firstRadio = element.querySelector<NileRadio>('nile-radio[value="1"]');
|
163
|
+
firstRadio?.click();
|
164
|
+
await element.updateComplete;
|
165
|
+
|
166
|
+
// Simulate Arrow Right key press
|
167
|
+
const rightEvent = new KeyboardEvent('keydown', { key: 'ArrowRight' });
|
168
|
+
slot?.dispatchEvent(rightEvent);
|
169
|
+
await element.updateComplete;
|
170
|
+
|
171
|
+
// Check if the second radio is selected
|
172
|
+
const secondRadio = element.querySelector<NileRadio>('nile-radio[value="2"]');
|
173
|
+
expect(secondRadio?.checked).to.be.true;
|
174
|
+
|
175
|
+
// Simulate Arrow Right key press again
|
176
|
+
slot?.dispatchEvent(rightEvent);
|
177
|
+
await element.updateComplete;
|
178
|
+
|
179
|
+
// Check if the third radio is selected
|
180
|
+
const thirdRadio = element.querySelector<NileRadio>('nile-radio[value="3"]');
|
181
|
+
expect(thirdRadio?.checked).to.be.true;
|
182
|
+
|
183
|
+
// Simulate Arrow Left key press
|
184
|
+
const leftEvent = new KeyboardEvent('keydown', { key: 'ArrowLeft' });
|
185
|
+
slot?.dispatchEvent(leftEvent);
|
186
|
+
await element.updateComplete;
|
187
|
+
|
188
|
+
// Check if the second radio is selected again
|
189
|
+
expect(secondRadio?.checked).to.be.true;
|
190
|
+
|
191
|
+
// Simulate Arrow Left key press again
|
192
|
+
slot?.dispatchEvent(leftEvent);
|
193
|
+
await element.updateComplete;
|
194
|
+
|
195
|
+
// Check if the first radio is selected again
|
196
|
+
expect(firstRadio?.checked).to.be.true;
|
197
|
+
|
198
|
+
// Simulate Arrow Down key press (assuming vertical layout)
|
199
|
+
const downEvent = new KeyboardEvent('keydown', { key: 'ArrowDown' });
|
200
|
+
slot?.dispatchEvent(downEvent);
|
201
|
+
await element.updateComplete;
|
202
|
+
|
203
|
+
// Check if the second radio is selected again (depending on your layout)
|
204
|
+
expect(secondRadio?.checked).to.be.true;
|
205
|
+
|
206
|
+
// Simulate Arrow Up key press (assuming vertical layout)
|
207
|
+
const upEvent = new KeyboardEvent('keydown', { key: 'ArrowUp' });
|
208
|
+
slot?.dispatchEvent(upEvent);
|
209
|
+
await element.updateComplete;
|
210
|
+
|
211
|
+
// Check if the first radio is selected again
|
212
|
+
expect(firstRadio?.checked).to.be.true;
|
213
|
+
});
|
214
|
+
|
215
|
+
});
|
@@ -28,6 +28,8 @@ import type NileRadio from '../nile-radio/nile-radio';
|
|
28
28
|
export class NileRadioGroup extends NileElement {
|
29
29
|
static styles: CSSResultGroup = styles;
|
30
30
|
|
31
|
+
protected override BUBBLES: boolean=false;
|
32
|
+
|
31
33
|
private readonly hasSlotController = new HasSlotController(this, 'help-text', 'label');
|
32
34
|
private customValidityMessage = '';
|
33
35
|
|
@@ -0,0 +1,309 @@
|
|
1
|
+
import { expect, fixture, html, oneEvent, elementUpdated } from '@open-wc/testing';
|
2
|
+
import './nile-select'; // Assuming the component is registered and imported
|
3
|
+
import NileSelect from './nile-select';
|
4
|
+
import { NileOption } from '../nile-option';
|
5
|
+
import { NileInput } from '../nile-input';
|
6
|
+
import '../nile-option/nile-option';
|
7
|
+
import '../nile-input/nile-input';
|
8
|
+
import '../nile-popup/nile-popup';
|
9
|
+
import '../nile-tag/nile-tag';
|
10
|
+
import '../nile-checkbox/nile-checkbox';
|
11
|
+
|
12
|
+
const wait=(ms:number=50000)=>new Promise(resolve => setTimeout(resolve, ms))
|
13
|
+
|
14
|
+
const keyboardEvent = new KeyboardEvent('keydown', {
|
15
|
+
code: 'Enter',
|
16
|
+
key: 'Enter',
|
17
|
+
charCode: 13,
|
18
|
+
keyCode: 13,
|
19
|
+
view: window,
|
20
|
+
bubbles: true
|
21
|
+
});
|
22
|
+
|
23
|
+
const mouseUpEvent = new MouseEvent("mouseup", {
|
24
|
+
bubbles: true,
|
25
|
+
cancelable: true,
|
26
|
+
view: window
|
27
|
+
});
|
28
|
+
|
29
|
+
describe('NileSelect Component', () => {
|
30
|
+
|
31
|
+
it('should render the placeholder when no value is selected', async () => {
|
32
|
+
const el = await fixture<NileSelect>(html`<nile-select placeholder="Select an option..."></nile-select>`);
|
33
|
+
const displayInput = el.shadowRoot?.querySelector<HTMLInputElement>('.select__display-input');
|
34
|
+
expect(displayInput?.placeholder).to.equal('Select an option...');
|
35
|
+
});
|
36
|
+
|
37
|
+
it('should open the dropdown when clicked', async () => {
|
38
|
+
const el = await fixture<NileSelect>(html`
|
39
|
+
<nile-select>
|
40
|
+
<nile-option value="option1">Option 1</nile-option>
|
41
|
+
</nile-select>
|
42
|
+
`);
|
43
|
+
|
44
|
+
const combobox = el.shadowRoot?.querySelector<HTMLElement>("div.select__combobox");
|
45
|
+
combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
|
46
|
+
await elementUpdated(el);
|
47
|
+
|
48
|
+
const popup = el.shadowRoot?.querySelector('.select');
|
49
|
+
expect(popup?.classList.contains('select--open')).to.be.true;
|
50
|
+
});
|
51
|
+
|
52
|
+
it('should close the dropdown when clicked again', async () => {
|
53
|
+
const el = await fixture<NileSelect>(html`
|
54
|
+
<nile-select>
|
55
|
+
<nile-option value="option1">Option 1</nile-option>
|
56
|
+
</nile-select>
|
57
|
+
`);
|
58
|
+
|
59
|
+
const combobox = el.shadowRoot?.querySelector<HTMLElement>("div.select__combobox");
|
60
|
+
|
61
|
+
// Open dropdown first
|
62
|
+
combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
|
63
|
+
await elementUpdated(el);
|
64
|
+
expect(el.open).to.be.true;
|
65
|
+
|
66
|
+
// Click again to close dropdown
|
67
|
+
combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
|
68
|
+
await elementUpdated(el);
|
69
|
+
expect(el.open).to.be.false;
|
70
|
+
});
|
71
|
+
|
72
|
+
it('should update the display label when an option is selected', async () => {
|
73
|
+
const el = await fixture<NileSelect>(html`
|
74
|
+
<nile-select>
|
75
|
+
<nile-option value="option1">Option 1</nile-option>
|
76
|
+
<nile-option value="option2">Option 2</nile-option>
|
77
|
+
</nile-select>
|
78
|
+
`);
|
79
|
+
|
80
|
+
const combobox = el.shadowRoot?.querySelector<HTMLElement>("div.select__combobox");
|
81
|
+
combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
|
82
|
+
await elementUpdated(el);
|
83
|
+
|
84
|
+
// Select the first option
|
85
|
+
const option1 = el.querySelector<NileOption>('nile-option[value="option1"]');
|
86
|
+
option1?.dispatchEvent(mouseUpEvent);
|
87
|
+
await elementUpdated(el);
|
88
|
+
|
89
|
+
const displayInput = el.shadowRoot?.querySelector<HTMLInputElement>('.select__display-input');
|
90
|
+
expect(displayInput?.value).to.equal('Option 1');
|
91
|
+
});
|
92
|
+
|
93
|
+
it('should handle multi-select and show selected tags', async () => {
|
94
|
+
const el = await fixture<NileSelect>(html`
|
95
|
+
<nile-select multiple>
|
96
|
+
<nile-option value="option1">Option 1</nile-option>
|
97
|
+
<nile-option value="option2">Option 2</nile-option>
|
98
|
+
<nile-option value="option3">Option 3</nile-option>
|
99
|
+
</nile-select>
|
100
|
+
`);
|
101
|
+
|
102
|
+
const combobox = el.shadowRoot?.querySelector<HTMLElement>("div.select__combobox");
|
103
|
+
combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
|
104
|
+
await elementUpdated(el);
|
105
|
+
|
106
|
+
// Select multiple options
|
107
|
+
const option1 = el.querySelector<NileOption>('nile-option[value="option1"]');
|
108
|
+
const option2 = el.querySelector<NileOption>('nile-option[value="option2"]');
|
109
|
+
|
110
|
+
option1?.dispatchEvent(mouseUpEvent);
|
111
|
+
option2?.dispatchEvent(mouseUpEvent);
|
112
|
+
await elementUpdated(el);
|
113
|
+
|
114
|
+
// Check if the tags are displayed
|
115
|
+
const tags = el.shadowRoot?.querySelectorAll('nile-tag');
|
116
|
+
expect(tags?.length).to.equal(2);
|
117
|
+
expect(tags?.[0].textContent?.trim()).to.equal('Option 1');
|
118
|
+
expect(tags?.[1].textContent?.trim()).to.equal('Option 2');
|
119
|
+
});
|
120
|
+
|
121
|
+
it('should clear selected value when clear button is clicked', async () => {
|
122
|
+
const el = await fixture<NileSelect>(html`
|
123
|
+
<nile-select clearable>
|
124
|
+
<nile-option value="option1">Option 1</nile-option>
|
125
|
+
</nile-select>
|
126
|
+
`);
|
127
|
+
|
128
|
+
const combobox = el.shadowRoot?.querySelector<HTMLElement>("div.select__combobox");
|
129
|
+
combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
|
130
|
+
await elementUpdated(el);
|
131
|
+
|
132
|
+
// Select an option
|
133
|
+
const option1 = el.querySelector<NileOption>('nile-option[value="option1"]');
|
134
|
+
option1?.click();
|
135
|
+
await elementUpdated(el);
|
136
|
+
|
137
|
+
// Clear the selected value
|
138
|
+
const clearButton = el.shadowRoot?.querySelector<HTMLButtonElement>('.select__clear');
|
139
|
+
clearButton?.click();
|
140
|
+
await elementUpdated(el);
|
141
|
+
|
142
|
+
const displayInput = el.shadowRoot?.querySelector<HTMLInputElement>('.select__display-input');
|
143
|
+
expect(displayInput?.value).to.be.empty;
|
144
|
+
});
|
145
|
+
|
146
|
+
it('should emit nile-change event when value changes', async () => {
|
147
|
+
const el = await fixture<NileSelect>(html`
|
148
|
+
<nile-select>
|
149
|
+
<nile-option value="option1">Option 1</nile-option>
|
150
|
+
<nile-option value="option2">Option 2</nile-option>
|
151
|
+
</nile-select>
|
152
|
+
`);
|
153
|
+
|
154
|
+
const listener = oneEvent(el, 'nile-change');
|
155
|
+
const combobox = el.shadowRoot?.querySelector<HTMLElement>("div.select__combobox");
|
156
|
+
combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
|
157
|
+
await elementUpdated(el);
|
158
|
+
|
159
|
+
const option1 = el.querySelector<NileOption>('nile-option[value="option1"]');
|
160
|
+
option1?.dispatchEvent(mouseUpEvent);
|
161
|
+
|
162
|
+
const event = await listener;
|
163
|
+
expect(event.detail.value).to.equal('option1');
|
164
|
+
});
|
165
|
+
|
166
|
+
it('should not open when disabled', async () => {
|
167
|
+
const el = await fixture<NileSelect>(html`
|
168
|
+
<nile-select disabled>
|
169
|
+
<nile-option value="option1">Option 1</nile-option>
|
170
|
+
</nile-select>
|
171
|
+
`);
|
172
|
+
|
173
|
+
const combobox = el.shadowRoot?.querySelector<HTMLElement>("div.select__combobox");
|
174
|
+
combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
|
175
|
+
await elementUpdated(el);
|
176
|
+
|
177
|
+
const popup = el.shadowRoot?.querySelector('.select');
|
178
|
+
expect(popup?.classList.contains('select--open')).to.be.false;
|
179
|
+
});
|
180
|
+
|
181
|
+
it('should display the search bar if searchEnabled is true', async () => {
|
182
|
+
const el = await fixture<NileSelect>(html`
|
183
|
+
<nile-select searchEnabled>
|
184
|
+
<nile-option value="option1">Option 1</nile-option>
|
185
|
+
<nile-option value="option2">Option 2</nile-option>
|
186
|
+
</nile-select>
|
187
|
+
`);
|
188
|
+
|
189
|
+
const combobox = el.shadowRoot?.querySelector<HTMLElement>("div.select__combobox");
|
190
|
+
combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
|
191
|
+
await elementUpdated(el);
|
192
|
+
|
193
|
+
const searchBar = el.shadowRoot?.querySelector('.select__search');
|
194
|
+
expect(searchBar).to.exist;
|
195
|
+
});
|
196
|
+
|
197
|
+
it('should show "No results found" when searching for an invalid query', async () => {
|
198
|
+
const el = await fixture<NileSelect>(html`
|
199
|
+
<nile-select searchEnabled>
|
200
|
+
<nile-option value="option1">Option 1</nile-option>
|
201
|
+
<nile-option value="option2">Option 2</nile-option>
|
202
|
+
</nile-select>
|
203
|
+
`);
|
204
|
+
|
205
|
+
const combobox = el.shadowRoot?.querySelector<HTMLElement>('.select__combobox');
|
206
|
+
combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
|
207
|
+
await elementUpdated(el);
|
208
|
+
|
209
|
+
// Simulate typing an invalid search query
|
210
|
+
const searchInput = el.shadowRoot?.querySelector<NileInput>('.select__search nile-input');
|
211
|
+
if (searchInput) {
|
212
|
+
searchInput.value = 'invalid';
|
213
|
+
searchInput.dispatchEvent(new CustomEvent('nile-input',{detail:{value:'invalid'}}));
|
214
|
+
}
|
215
|
+
await elementUpdated(el);
|
216
|
+
|
217
|
+
const noResultsMessage = el.shadowRoot?.querySelector('.select__no-results');
|
218
|
+
expect(noResultsMessage).to.exist;
|
219
|
+
expect(noResultsMessage?.textContent?.trim()).to.equal('No results found');
|
220
|
+
});
|
221
|
+
|
222
|
+
|
223
|
+
it('should allow selecting multiple options, display the selected count, and clear selections when clear button is clicked', async () => {
|
224
|
+
const el = await fixture<NileSelect>(html`
|
225
|
+
<nile-select multiple clearable>
|
226
|
+
<nile-option value="1">Option 1</nile-option>
|
227
|
+
<nile-option value="2">Option 2</nile-option>
|
228
|
+
<nile-option value="3">Option 3</nile-option>
|
229
|
+
</nile-select>
|
230
|
+
`);
|
231
|
+
|
232
|
+
const combobox = el.shadowRoot?.querySelector<HTMLElement>('.select__combobox');
|
233
|
+
const options = el.querySelectorAll('nile-option');
|
234
|
+
const displayInput = el.shadowRoot?.querySelector<NileInput>('.select__display-input');
|
235
|
+
|
236
|
+
// Open the dropdown
|
237
|
+
combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
|
238
|
+
await el.updateComplete;
|
239
|
+
|
240
|
+
// Select the first two options
|
241
|
+
options[0].dispatchEvent(mouseUpEvent);
|
242
|
+
options[1].dispatchEvent(mouseUpEvent);
|
243
|
+
await el.updateComplete;
|
244
|
+
|
245
|
+
// Verify the display label reflects the number of selected options
|
246
|
+
expect(displayInput?.value).to.equal('2 selected');
|
247
|
+
|
248
|
+
// Check that the clearable button is visible
|
249
|
+
const clearButton = el.shadowRoot?.querySelector<HTMLElement>('.select__clear');
|
250
|
+
console.log(clearButton)
|
251
|
+
expect(clearButton).to.exist;
|
252
|
+
|
253
|
+
// Click the clear button
|
254
|
+
clearButton?.click();
|
255
|
+
await el.updateComplete;
|
256
|
+
|
257
|
+
// Verify the display label is cleared and placeholder is shown
|
258
|
+
expect(displayInput?.value).to.equal('');
|
259
|
+
|
260
|
+
// Verify that no options are selected
|
261
|
+
expect(Array.from(options).every(option => !option.selected)).to.be.true;
|
262
|
+
});
|
263
|
+
|
264
|
+
it('should allow selecting multiple options, clearing selections, and handling backspace to deselect the last selected option', async () => {
|
265
|
+
const el = await fixture<NileSelect>(html`
|
266
|
+
<nile-select multiple clearable>
|
267
|
+
<nile-option value="option1">Option 1</nile-option>
|
268
|
+
<nile-option value="option2">Option 2</nile-option>
|
269
|
+
<nile-option value="option3">Option 3</nile-option>
|
270
|
+
</nile-select>
|
271
|
+
`);
|
272
|
+
|
273
|
+
const combobox = el.shadowRoot?.querySelector<HTMLElement>('div.select__combobox');
|
274
|
+
const options = el.querySelectorAll('nile-option');
|
275
|
+
const displayInput = el.shadowRoot?.querySelector<NileInput>('.select__display-input');
|
276
|
+
const clearButton = el.shadowRoot?.querySelector<HTMLButtonElement>('.select__clear');
|
277
|
+
|
278
|
+
// Open the dropdown and select three options
|
279
|
+
combobox?.click();
|
280
|
+
await el.updateComplete;
|
281
|
+
|
282
|
+
options[0].dispatchEvent(mouseUpEvent);
|
283
|
+
options[1].dispatchEvent(mouseUpEvent);
|
284
|
+
options[2].dispatchEvent(mouseUpEvent);
|
285
|
+
await el.updateComplete;
|
286
|
+
|
287
|
+
// Verify that three options are selected
|
288
|
+
expect(displayInput?.value).to.equal('3 selected');
|
289
|
+
expect(Array.from(options).every(option => option.selected)).to.be.true;
|
290
|
+
|
291
|
+
// // Reopen dropdown, select three options again
|
292
|
+
// combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
|
293
|
+
// await el.updateComplete;
|
294
|
+
|
295
|
+
// options[0].dispatchEvent(mouseUpEvent);
|
296
|
+
// options[1].dispatchEvent(mouseUpEvent);
|
297
|
+
options[2].dispatchEvent(mouseUpEvent);
|
298
|
+
await el.updateComplete;
|
299
|
+
|
300
|
+
// Verify only the first two options are selected
|
301
|
+
expect(options[0].selected).to.be.true;
|
302
|
+
expect(options[1].selected).to.be.true;
|
303
|
+
expect(options[2].selected).to.be.false;
|
304
|
+
|
305
|
+
// Verify display label reflects two selected options
|
306
|
+
expect(displayInput?.value).to.equal('2 selected');
|
307
|
+
});
|
308
|
+
|
309
|
+
});
|
@@ -97,6 +97,8 @@ type NileRemoveEvent = CustomEvent<Record<PropertyKey, never>>;
|
|
97
97
|
export class NileSelect extends NileElement implements NileFormControl {
|
98
98
|
static styles: CSSResultGroup = styles;
|
99
99
|
|
100
|
+
protected override BUBBLES: boolean=false;
|
101
|
+
|
100
102
|
// protected override BUBBLES=false;
|
101
103
|
|
102
104
|
private readonly formControlController = new FormControlController(this, {
|
@@ -397,41 +399,6 @@ export class NileSelect extends NileElement implements NileFormControl {
|
|
397
399
|
return;
|
398
400
|
}
|
399
401
|
|
400
|
-
// Navigate options
|
401
|
-
if (['ArrowUp', 'ArrowDown', 'Home', 'End'].includes(event.key)) {
|
402
|
-
const allOptions = this.getAllOptions();
|
403
|
-
const currentIndex = allOptions.indexOf(this.currentOption);
|
404
|
-
let newIndex = Math.max(0, currentIndex);
|
405
|
-
|
406
|
-
// Prevent scrolling
|
407
|
-
event.preventDefault();
|
408
|
-
|
409
|
-
// Open it
|
410
|
-
if (!this.open) {
|
411
|
-
this.show();
|
412
|
-
|
413
|
-
// If an option is already selected, stop here because we want that one to remain highlighted when the listbox
|
414
|
-
// opens for the first time
|
415
|
-
if (this.currentOption) {
|
416
|
-
return;
|
417
|
-
}
|
418
|
-
}
|
419
|
-
|
420
|
-
if (event.key === 'ArrowDown') {
|
421
|
-
newIndex = currentIndex + 1;
|
422
|
-
if (newIndex > allOptions.length - 1) newIndex = 0;
|
423
|
-
} else if (event.key === 'ArrowUp') {
|
424
|
-
newIndex = currentIndex - 1;
|
425
|
-
if (newIndex < 0) newIndex = allOptions.length - 1;
|
426
|
-
} else if (event.key === 'Home') {
|
427
|
-
newIndex = 0;
|
428
|
-
} else if (event.key === 'End') {
|
429
|
-
newIndex = allOptions.length - 1;
|
430
|
-
}
|
431
|
-
|
432
|
-
this.setCurrentOption(allOptions[newIndex]);
|
433
|
-
}
|
434
|
-
|
435
402
|
// All other "printable" keys trigger type to select
|
436
403
|
if (event.key.length === 1 || event.key === 'Backspace') {
|
437
404
|
const allOptions = this.getAllOptions();
|
@@ -1255,9 +1222,11 @@ export class NileSelect extends NileElement implements NileFormControl {
|
|
1255
1222
|
clearable
|
1256
1223
|
.value=${this.searchValue}
|
1257
1224
|
placeholder="${this.internalSearchPlaceHolder}"
|
1258
|
-
@nile-
|
1259
|
-
@nile-
|
1260
|
-
@nile-change="${this.onInputChange}"
|
1225
|
+
@nile-focus="${(e:CustomEvent)=>{this.handleSearchFocus();this.emit('nile-focus',e.detail)}}"
|
1226
|
+
@nile-blur="${(e:CustomEvent)=>{this.emit('nile-blur',e.detail)}}"
|
1227
|
+
@nile-change="${(e:CustomEvent)=>{this.onInputChange(e);this.emit('nile-change',e.detail)}}"
|
1228
|
+
@nile-input="${(e:CustomEvent)=>{this.handleSearchChange(e);this.emit('nile-input',e.detail)}}"
|
1229
|
+
@nile-clear=${(e:CustomEvent)=>this.emit('nile-clear',e.detail)}
|
1261
1230
|
>
|
1262
1231
|
<nile-icon name="search" slot="suffix"> </nile-icon>
|
1263
1232
|
</nile-input>
|
@@ -8,15 +8,17 @@ import { classMap } from 'lit/directives/class-map.js';
|
|
8
8
|
export class NileSlideToggle extends NileElement {
|
9
9
|
public static styles: CSSResultGroup = styles;
|
10
10
|
|
11
|
+
protected override BUBBLES: boolean=false;
|
12
|
+
|
11
13
|
@property({ type: String }) label = '';
|
12
14
|
|
13
15
|
@property({ type: String }) sublabel = '';
|
14
16
|
|
15
|
-
@property({ type: String,
|
17
|
+
@property({ type: String, }) textPosition:'left' | 'right' = 'right';
|
16
18
|
|
17
19
|
@property({ type: Boolean, reflect: true }) isChecked = false;
|
18
20
|
|
19
|
-
@property({ type: Boolean, reflect: true
|
21
|
+
@property({ type: Boolean, reflect: true }) fullWidth = false;
|
20
22
|
|
21
23
|
@property({ type: Boolean, reflect: true }) disabled = false;
|
22
24
|
|