@siemens/ix 0.0.0-20240508065324 → 0.0.0-20240522073858
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/components/base-button.js +26 -3
- package/components/base-button.js.map +1 -1
- package/components/breadcrumb-item.js +1 -1
- package/components/breadcrumb-item.js.map +1 -1
- package/components/button.js +3 -3
- package/components/button.js.map +1 -1
- package/components/date-picker.js +4 -4
- package/components/date-picker.js.map +1 -1
- package/components/dropdown.js +29 -12
- package/components/dropdown.js.map +1 -1
- package/components/icon-button.js +2 -2
- package/components/icon-button.js.map +1 -1
- package/components/ix-blind.js +1 -1
- package/components/ix-blind.js.map +1 -1
- package/components/ix-category-filter.js +1 -1
- package/components/ix-category-filter.js.map +1 -1
- package/components/ix-date-dropdown.js +14 -5
- package/components/ix-date-dropdown.js.map +1 -1
- package/components/ix-icon-toggle-button.js +1 -1
- package/components/ix-icon-toggle-button.js.map +1 -1
- package/components/ix-menu.js +3 -3
- package/components/ix-menu.js.map +1 -1
- package/components/ix-pagination.js +1 -1
- package/components/ix-pagination.js.map +1 -1
- package/components/ix-workflow-step.js +4 -4
- package/components/ix-workflow-step.js.map +1 -1
- package/components/ix-workflow-steps.js +1 -1
- package/components/ix-workflow-steps.js.map +1 -1
- package/components/tooltip.js +5 -2
- package/components/tooltip.js.map +1 -1
- package/dist/cjs/{app-globals-7ea20f68.js → app-globals-5cfdf2a0.js} +2 -2
- package/dist/cjs/{app-globals-7ea20f68.js.map → app-globals-5cfdf2a0.js.map} +1 -1
- package/dist/cjs/{base-button-2f74b19d.js → base-button-7c45a6c4.js} +27 -4
- package/dist/cjs/base-button-7c45a6c4.js.map +1 -0
- package/dist/cjs/{base-icon-button-848c77f2.js → base-icon-button-ac2fcf4b.js} +2 -2
- package/dist/cjs/{base-icon-button-848c77f2.js.map → base-icon-button-ac2fcf4b.js.map} +1 -1
- package/dist/cjs/{core-js-a890bac8.js → core-js-2fc351ee.js} +1 -1
- package/dist/cjs/{core-js-a890bac8.js.map → core-js-2fc351ee.js.map} +1 -1
- package/dist/cjs/dom-83fb07d8.js.map +1 -1
- package/dist/cjs/{index.es2017-0db94b91.js → index.es2017-0c2b80b6.js} +3 -3
- package/dist/cjs/{index.es2017-0db94b91.js.map → index.es2017-0c2b80b6.js.map} +1 -1
- package/dist/cjs/ix-avatar_2.cjs.entry.js +1 -1
- package/dist/cjs/ix-blind.cjs.entry.js +1 -1
- package/dist/cjs/ix-blind.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-breadcrumb-item.cjs.entry.js +2 -2
- package/dist/cjs/ix-breadcrumb-item.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-button.cjs.entry.js +4 -4
- package/dist/cjs/ix-button.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-category-filter.cjs.entry.js +2 -2
- package/dist/cjs/ix-category-filter.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-col_4.cjs.entry.js +4 -4
- package/dist/cjs/ix-col_4.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-date-dropdown.cjs.entry.js +11 -4
- package/dist/cjs/ix-date-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-dropdown.cjs.entry.js +28 -12
- package/dist/cjs/ix-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-icon-button_2.cjs.entry.js +4 -4
- package/dist/cjs/ix-icon-button_2.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-icon-toggle-button.cjs.entry.js +3 -3
- package/dist/cjs/ix-icon-toggle-button.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-icon.entry-e95ddded.js +1533 -0
- package/dist/cjs/ix-icon.entry-e95ddded.js.map +1 -0
- package/dist/cjs/ix-menu-expand-icon.cjs.entry.js +1 -1
- package/dist/cjs/ix-menu.cjs.entry.js +3 -3
- package/dist/cjs/ix-menu.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-pagination.cjs.entry.js +2 -2
- package/dist/cjs/ix-pagination.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-toggle-button.cjs.entry.js +1 -1
- package/dist/cjs/ix-tooltip.cjs.entry.js +5 -2
- package/dist/cjs/ix-tooltip.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-workflow-step.cjs.entry.js +4 -4
- package/dist/cjs/ix-workflow-step.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-workflow-steps.cjs.entry.js +1 -1
- package/dist/cjs/ix-workflow-steps.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/siemens-ix.cjs.js +2 -2
- package/dist/collection/components/action-card/action-card.js.map +1 -1
- package/dist/collection/components/application/application.js.map +1 -1
- package/dist/collection/components/application-header/application-header.js.map +1 -1
- package/dist/collection/components/application-header/application-switch-modal/application-switch-modal.js.map +1 -1
- package/dist/collection/components/application-header/test/application-header.ct.js.map +1 -1
- package/dist/collection/components/application-sidebar/application-sidebar.js.map +1 -1
- package/dist/collection/components/application-sidebar/events.js.map +1 -1
- package/dist/collection/components/avatar/avatar.js.map +1 -1
- package/dist/collection/components/avatar/test/avatar.ct.js.map +1 -1
- package/dist/collection/components/basic-navigation/basic-navigation.js.map +1 -1
- package/dist/collection/components/blind/blind.css +1 -1
- package/dist/collection/components/blind/blind.js.map +1 -1
- package/dist/collection/components/blind/test/blind.ct.js.map +1 -1
- package/dist/collection/components/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/collection/components/breadcrumb/test/breadcrumb.ct.js.map +1 -1
- package/dist/collection/components/breadcrumb-item/breadcrumb-item.css +181 -0
- package/dist/collection/components/breadcrumb-item/breadcrumb-item.js.map +1 -1
- package/dist/collection/components/button/base-button.js +25 -2
- package/dist/collection/components/button/base-button.js.map +1 -1
- package/dist/collection/components/button/button.css +181 -0
- package/dist/collection/components/button/button.js +7 -4
- package/dist/collection/components/button/button.js.map +1 -1
- package/dist/collection/components/button/test/button.ct.js +11 -0
- package/dist/collection/components/button/test/button.ct.js.map +1 -1
- package/dist/collection/components/button/test/button.spec.js.map +1 -1
- package/dist/collection/components/card/card.js.map +1 -1
- package/dist/collection/components/card-accordion/card-accordion.js.map +1 -1
- package/dist/collection/components/card-content/card-content.js.map +1 -1
- package/dist/collection/components/card-list/card-list.js.map +1 -1
- package/dist/collection/components/card-title/card-title.js.map +1 -1
- package/dist/collection/components/category-filter/category-filter.css +181 -0
- package/dist/collection/components/category-filter/category-filter.js.map +1 -1
- package/dist/collection/components/category-filter/filter-state.js.map +1 -1
- package/dist/collection/components/category-filter/input-state.js.map +1 -1
- package/dist/collection/components/category-filter/logical-filter-operator.js.map +1 -1
- package/dist/collection/components/chip/chip.js.map +1 -1
- package/dist/collection/components/col/col.js.map +1 -1
- package/dist/collection/components/content/content.js.map +1 -1
- package/dist/collection/components/content-header/content-header.js.map +1 -1
- package/dist/collection/components/css-grid/builder.js.map +1 -1
- package/dist/collection/components/css-grid/css-grid-item.js.map +1 -1
- package/dist/collection/components/css-grid/css-grid.js.map +1 -1
- package/dist/collection/components/date-dropdown/date-dropdown.js +33 -3
- package/dist/collection/components/date-dropdown/date-dropdown.js.map +1 -1
- package/dist/collection/components/date-dropdown/test/date-dropdown.ct.js +43 -0
- package/dist/collection/components/date-dropdown/test/date-dropdown.ct.js.map +1 -1
- package/dist/collection/components/date-picker/date-picker.js +4 -4
- package/dist/collection/components/date-picker/date-picker.js.map +1 -1
- package/dist/collection/components/date-picker/test/date-picker.ct.js.map +1 -1
- package/dist/collection/components/date-time-card/date-time-card.js.map +1 -1
- package/dist/collection/components/datetime-picker/datetime-picker.js.map +1 -1
- package/dist/collection/components/datetime-picker/test/datetime-picker.ct.js.map +1 -1
- package/dist/collection/components/divider/divider.js.map +1 -1
- package/dist/collection/components/drawer/drawer.js.map +1 -1
- package/dist/collection/components/drawer/test/drawer.ct.js.map +1 -1
- package/dist/collection/components/drawer/test/drawer.spec.js.map +1 -1
- package/dist/collection/components/dropdown/dropdown-controller.js +19 -6
- package/dist/collection/components/dropdown/dropdown-controller.js.map +1 -1
- package/dist/collection/components/dropdown/dropdown.js +30 -6
- package/dist/collection/components/dropdown/dropdown.js.map +1 -1
- package/dist/collection/components/dropdown/placement.js.map +1 -1
- package/dist/collection/components/dropdown/test/dropdown-controller.spec.js.map +1 -1
- package/dist/collection/components/dropdown/test/dropdown.ct.js.map +1 -1
- package/dist/collection/components/dropdown-button/dropdown-button.js +1 -1
- package/dist/collection/components/dropdown-button/dropdown-button.js.map +1 -1
- package/dist/collection/components/dropdown-header/dropdown-header.js.map +1 -1
- package/dist/collection/components/dropdown-item/dropdown-item.js.map +1 -1
- package/dist/collection/components/dropdown-quick-actions/dropdown-quick-actions.js.map +1 -1
- package/dist/collection/components/empty-state/empty-state.js.map +1 -1
- package/dist/collection/components/event-list/event-list.js.map +1 -1
- package/dist/collection/components/event-list/test/event-list.ct.js.map +1 -1
- package/dist/collection/components/event-list/test/event-list.spec.js.map +1 -1
- package/dist/collection/components/event-list-item/event-list-item.js.map +1 -1
- package/dist/collection/components/event-list-item/test/event-list-item.spec.js.map +1 -1
- package/dist/collection/components/expanding-search/expanding-search.js.map +1 -1
- package/dist/collection/components/expanding-search/test/expanding-search.ct.js.map +1 -1
- package/dist/collection/components/expanding-search/test/expanding-search.spec.js.map +1 -1
- package/dist/collection/components/filter-chip/filter-chip.js.map +1 -1
- package/dist/collection/components/flip-tile/flip-tile-state.js.map +1 -1
- package/dist/collection/components/flip-tile/flip-tile.js.map +1 -1
- package/dist/collection/components/flip-tile/test/flip-tile.ct.js.map +1 -1
- package/dist/collection/components/flip-tile-content/flip-tile-content.js.map +1 -1
- package/dist/collection/components/form-field/form-field.js.map +1 -1
- package/dist/collection/components/grid/layout-grid.js.map +1 -1
- package/dist/collection/components/group/group-context-menu.js.map +1 -1
- package/dist/collection/components/group/group.js.map +1 -1
- package/dist/collection/components/group/test/group.ct.js.map +1 -1
- package/dist/collection/components/group-item/group-item.js.map +1 -1
- package/dist/collection/components/icon-button/base-icon-button.js.map +1 -1
- package/dist/collection/components/icon-button/icon-button.css +181 -0
- package/dist/collection/components/icon-button/icon-button.js +6 -3
- package/dist/collection/components/icon-button/icon-button.js.map +1 -1
- package/dist/collection/components/icon-button/test/icon-button.ct.js.map +1 -1
- package/dist/collection/components/icon-button/test/icon-button.spec.js.map +1 -1
- package/dist/collection/components/icon-toggle-button/icon-toggle-button.css +181 -0
- package/dist/collection/components/icon-toggle-button/icon-toggle-button.js +1 -1
- package/dist/collection/components/icon-toggle-button/icon-toggle-button.js.map +1 -1
- package/dist/collection/components/input-group/input-group.js.map +1 -1
- package/dist/collection/components/input-group/tests/input-group.ct.js.map +1 -1
- package/dist/collection/components/key-value/key-value.js.map +1 -1
- package/dist/collection/components/key-value-list/key-value-list.js.map +1 -1
- package/dist/collection/components/kpi/kpi.js.map +1 -1
- package/dist/collection/components/link-button/link-button.js.map +1 -1
- package/dist/collection/components/map-navigation/map-navigation.js.map +1 -1
- package/dist/collection/components/map-navigation-overlay/map-navigation-overlay.js.map +1 -1
- package/dist/collection/components/menu/menu-expand-icon.js.map +1 -1
- package/dist/collection/components/menu/menu.js +3 -3
- package/dist/collection/components/menu/menu.js.map +1 -1
- package/dist/collection/components/menu/test/menu.ct.js.map +1 -1
- package/dist/collection/components/menu-about/menu-about.js.map +1 -1
- package/dist/collection/components/menu-about-item/menu-about-item.js.map +1 -1
- package/dist/collection/components/menu-about-news/menu-about-news.js.map +1 -1
- package/dist/collection/components/menu-avatar/menu-avatar.js.map +1 -1
- package/dist/collection/components/menu-avatar-item/menu-avatar-item.js.map +1 -1
- package/dist/collection/components/menu-avatar-item/test/menu-avatar-item.ct.js.map +1 -1
- package/dist/collection/components/menu-category/enter-leave.js.map +1 -1
- package/dist/collection/components/menu-category/menu-category.js.map +1 -1
- package/dist/collection/components/menu-category/test/menu-category.ct.js.map +1 -1
- package/dist/collection/components/menu-item/menu-item.js.map +1 -1
- package/dist/collection/components/menu-item/test/menu-item.ct.js.map +1 -1
- package/dist/collection/components/menu-settings/menu-settings.js.map +1 -1
- package/dist/collection/components/menu-settings-item/menu-settings-item.js.map +1 -1
- package/dist/collection/components/message-bar/message-bar.js.map +1 -1
- package/dist/collection/components/message-bar/test/message-bar.spec.js.map +1 -1
- package/dist/collection/components/modal/modal.js.map +1 -1
- package/dist/collection/components/modal/test/modal.ct.js.map +1 -1
- package/dist/collection/components/modal-content/modal-content.js.map +1 -1
- package/dist/collection/components/modal-footer/modal-footer.js.map +1 -1
- package/dist/collection/components/modal-header/modal-header.js.map +1 -1
- package/dist/collection/components/modal-loading/modal-loading.js.map +1 -1
- package/dist/collection/components/pagination/pagination.css +181 -0
- package/dist/collection/components/pagination/pagination.js.map +1 -1
- package/dist/collection/components/pagination/test/pagination.ct.js.map +1 -1
- package/dist/collection/components/pagination/test/pagination.spec.js.map +1 -1
- package/dist/collection/components/pane/pane.js.map +1 -1
- package/dist/collection/components/pane/test/panes.ct.js.map +1 -1
- package/dist/collection/components/pane-layout/pane-layout.js.map +1 -1
- package/dist/collection/components/pane-layout/test/pane-layout.ct.js.map +1 -1
- package/dist/collection/components/pill/pill.js.map +1 -1
- package/dist/collection/components/playground/example-modal.js.map +1 -1
- package/dist/collection/components/playground/playground.js.map +1 -1
- package/dist/collection/components/push-card/push-card.js.map +1 -1
- package/dist/collection/components/row/row.js.map +1 -1
- package/dist/collection/components/select/select.js.map +1 -1
- package/dist/collection/components/select/test/select.ct.js.map +1 -1
- package/dist/collection/components/select-item/events.js.map +1 -1
- package/dist/collection/components/select-item/select-item.js.map +1 -1
- package/dist/collection/components/select-item/test/select-item.spec.js.map +1 -1
- package/dist/collection/components/slider/slider.js.map +1 -1
- package/dist/collection/components/slider/test/slider.ct.js.map +1 -1
- package/dist/collection/components/spinner/spinner.js.map +1 -1
- package/dist/collection/components/split-button/split-button.js +1 -1
- package/dist/collection/components/split-button/split-button.js.map +1 -1
- package/dist/collection/components/split-button-item/split-button-item.js.map +1 -1
- package/dist/collection/components/tab-item/tab-item.js.map +1 -1
- package/dist/collection/components/tabs/tabs.js.map +1 -1
- package/dist/collection/components/tabs/test/tabs.ct.js.map +1 -1
- package/dist/collection/components/tile/tile.js.map +1 -1
- package/dist/collection/components/time-picker/test/time-picker.ct.js.map +1 -1
- package/dist/collection/components/time-picker/time-picker.js.map +1 -1
- package/dist/collection/components/toast/toast-container.js.map +1 -1
- package/dist/collection/components/toast/toast-utils.js.map +1 -1
- package/dist/collection/components/toast/toast.js.map +1 -1
- package/dist/collection/components/toggle/test/toggle.ct.js.map +1 -1
- package/dist/collection/components/toggle/toggle.js.map +1 -1
- package/dist/collection/components/toggle-button/toggle-button.js +1 -1
- package/dist/collection/components/toggle-button/toggle-button.js.map +1 -1
- package/dist/collection/components/tooltip/test/tooltip.ct.js.map +1 -1
- package/dist/collection/components/tooltip/tooltip-controller.js.map +1 -1
- package/dist/collection/components/tooltip/tooltip.js +5 -2
- package/dist/collection/components/tooltip/tooltip.js.map +1 -1
- package/dist/collection/components/tree/test/tree.ct.js.map +1 -1
- package/dist/collection/components/tree/tree-model.js.map +1 -1
- package/dist/collection/components/tree/tree.js.map +1 -1
- package/dist/collection/components/tree-item/default-tree-item.js.map +1 -1
- package/dist/collection/components/tree-item/tree-item.js.map +1 -1
- package/dist/collection/components/typography/test/ix-typography.spec.js.map +1 -1
- package/dist/collection/components/typography/type-mapping.js.map +1 -1
- package/dist/collection/components/typography/typography.js.map +1 -1
- package/dist/collection/components/upload/upload-file-state.js.map +1 -1
- package/dist/collection/components/upload/upload.js.map +1 -1
- package/dist/collection/components/utils/a11y.js.map +1 -1
- package/dist/collection/components/utils/animation.js.map +1 -1
- package/dist/collection/components/utils/app-switch/index.js.map +1 -1
- package/dist/collection/components/utils/application-layout/context.js.map +1 -1
- package/dist/collection/components/utils/application-layout/index.js.map +1 -1
- package/dist/collection/components/utils/application-layout/service.js.map +1 -1
- package/dist/collection/components/utils/breakpoints.js.map +1 -1
- package/dist/collection/components/utils/condition-checks.js.map +1 -1
- package/dist/collection/components/utils/context.js.map +1 -1
- package/dist/collection/components/utils/debounce.js.map +1 -1
- package/dist/collection/components/utils/delegate.js.map +1 -1
- package/dist/collection/components/utils/focus.js.map +1 -1
- package/dist/collection/components/utils/internal/component.js.map +1 -1
- package/dist/collection/components/utils/internal/index.js.map +1 -1
- package/dist/collection/components/utils/listener.js.map +1 -1
- package/dist/collection/components/utils/make-ref.js.map +1 -1
- package/dist/collection/components/utils/menu-service/menu-service.js.map +1 -1
- package/dist/collection/components/utils/menu-tabs/menu-tabs-fc.js.map +1 -1
- package/dist/collection/components/utils/menu-tabs/menu-tabs-utils.js.map +1 -1
- package/dist/collection/components/utils/modal/index.js.map +1 -1
- package/dist/collection/components/utils/modal/loading.js.map +1 -1
- package/dist/collection/components/utils/modal/message.js.map +1 -1
- package/dist/collection/components/utils/modal/modal.js.map +1 -1
- package/dist/collection/components/utils/mutation-observer.js.map +1 -1
- package/dist/collection/components/utils/notification-color.js.map +1 -1
- package/dist/collection/components/utils/overlay.js.map +1 -1
- package/dist/collection/components/utils/requestAnimationFrame.js.map +1 -1
- package/dist/collection/components/utils/rwd.util.js.map +1 -1
- package/dist/collection/components/utils/shadow-dom.js.map +1 -1
- package/dist/collection/components/utils/theme-switcher.js.map +1 -1
- package/dist/collection/components/utils/typed-event.js.map +1 -1
- package/dist/collection/components/utils/waitForElement.js.map +1 -1
- package/dist/collection/components/validation-tooltip/validation-tooltip.js.map +1 -1
- package/dist/collection/components/workflow-step/workflow-step.css +27 -7
- package/dist/collection/components/workflow-step/workflow-step.js +3 -3
- package/dist/collection/components/workflow-step/workflow-step.js.map +1 -1
- package/dist/collection/components/workflow-steps/test/workflow-steps.ct.js.map +1 -1
- package/dist/collection/components/workflow-steps/test/workflow-steps.spec.js.map +1 -1
- package/dist/collection/components/workflow-steps/workflow-steps.css +9 -1
- package/dist/collection/components/workflow-steps/workflow-steps.js.map +1 -1
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/setup.js.map +1 -1
- package/dist/collection/tests/action-card/action-card.e2e.js.map +1 -1
- package/dist/collection/tests/application/application.e2e.js.map +1 -1
- package/dist/collection/tests/application-header/application-header.e2e.js.map +1 -1
- package/dist/collection/tests/avatar/avatar.e2e.js.map +1 -1
- package/dist/collection/tests/basic-navigation/basic-navigation.e2e.js.map +1 -1
- package/dist/collection/tests/blind/blind.e2e.js.map +1 -1
- package/dist/collection/tests/breadcrumb/breadcrumb.e2e.js.map +1 -1
- package/dist/collection/tests/button/button.e2e.js.map +1 -1
- package/dist/collection/tests/card/card.e2e.js.map +1 -1
- package/dist/collection/tests/card-list/card-list.e2e.js.map +1 -1
- package/dist/collection/tests/category-filter/category-filter.e2e.js.map +1 -1
- package/dist/collection/tests/checkbox/checkbox.e2e.js.map +1 -1
- package/dist/collection/tests/chip/chip.e2e.js.map +1 -1
- package/dist/collection/tests/content-header/content-header.e2e.js.map +1 -1
- package/dist/collection/tests/date-dropdown/date-dropdown.e2e.js.map +1 -1
- package/dist/collection/tests/date-picker/date-picker.e2e.js.map +1 -1
- package/dist/collection/tests/date-picker-rework/date-picker-rework.e2e.js.map +1 -1
- package/dist/collection/tests/datetime-picker/datetime-picker.e2e.js.map +1 -1
- package/dist/collection/tests/datetime-picker-rework/datetime-picker-rework.e2e.js.map +1 -1
- package/dist/collection/tests/divider/divider.e2e.js.map +1 -1
- package/dist/collection/tests/drawer/drawer.e2e.js.map +1 -1
- package/dist/collection/tests/dropdown/dropdown.e2e.js.map +1 -1
- package/dist/collection/tests/dropdown-button/dropdown-button.e2e.js.map +1 -1
- package/dist/collection/tests/dropdown-quick-actions/dropdown-quick-actions.e2e.js.map +1 -1
- package/dist/collection/tests/empty-state/empty-state.e2e.js.map +1 -1
- package/dist/collection/tests/event-list/event-list.e2e.js.map +1 -1
- package/dist/collection/tests/expanding-search/expanding-search.e2e.js.map +1 -1
- package/dist/collection/tests/flip-tile/flip-tile.e2e.js.map +1 -1
- package/dist/collection/tests/fonts/fonts.e2e.js.map +1 -1
- package/dist/collection/tests/group/group.e2e.js.map +1 -1
- package/dist/collection/tests/html-table/html-table.e2e.js.map +1 -1
- package/dist/collection/tests/icon/icon.e2e.js.map +1 -1
- package/dist/collection/tests/icon-button/icon-button.e2e.js +34 -2
- package/dist/collection/tests/icon-button/icon-button.e2e.js.map +1 -1
- package/dist/collection/tests/icon-toggle-button/toggle-button.e2e.js.map +1 -1
- package/dist/collection/tests/input/input.e2e.js.map +1 -1
- package/dist/collection/tests/input-group/input-group.e2e.js.map +1 -1
- package/dist/collection/tests/key-value/key-value.e2e.js.map +1 -1
- package/dist/collection/tests/key-value-list/key-value-list.e2e.js.map +1 -1
- package/dist/collection/tests/kpi/kpi.e2e.js.map +1 -1
- package/dist/collection/tests/layout-grid/layout-grid.e2e.js.map +1 -1
- package/dist/collection/tests/link-button/link-button.e2e.js.map +1 -1
- package/dist/collection/tests/map-navigation/map-navigation.e2e.js.map +1 -1
- package/dist/collection/tests/map-navigation-overlay/map-navigation.e2e.js.map +1 -1
- package/dist/collection/tests/menu/menu.e2e.js.map +1 -1
- package/dist/collection/tests/menu-about/menu-about.e2e.js.map +1 -1
- package/dist/collection/tests/menu-about-news/menu-about-news.e2e.js.map +1 -1
- package/dist/collection/tests/menu-avatar/menu-avatar.e2e.js.map +1 -1
- package/dist/collection/tests/menu-settings/menu-settings.e2e.js.map +1 -1
- package/dist/collection/tests/message-bar/message-bar.e2e.js.map +1 -1
- package/dist/collection/tests/modal/modal.e2e.js.map +1 -1
- package/dist/collection/tests/pagination/pagination.e2e.js.map +1 -1
- package/dist/collection/tests/panes/panes.e2e.js.map +1 -1
- package/dist/collection/tests/pill/pill.e2e.js.map +1 -1
- package/dist/collection/tests/push-card/push-card.e2e.js.map +1 -1
- package/dist/collection/tests/radiobutton/radiobutton.e2e.js.map +1 -1
- package/dist/collection/tests/select/select.e2e.js.map +1 -1
- package/dist/collection/tests/slider/slider.e2e.js.map +1 -1
- package/dist/collection/tests/spinner/spinner.e2e.js.map +1 -1
- package/dist/collection/tests/split-button/split-button.e2e.js.map +1 -1
- package/dist/collection/tests/tabs/tabs.e2e.js.map +1 -1
- package/dist/collection/tests/textarea/textarea.e2e.js.map +1 -1
- package/dist/collection/tests/tile/tile.e2e.js.map +1 -1
- package/dist/collection/tests/time-picker-rework/time-picker-rework.e2e.js.map +1 -1
- package/dist/collection/tests/toast/toast.e2e.js.map +1 -1
- package/dist/collection/tests/toggle/toggle.e2e.js.map +1 -1
- package/dist/collection/tests/toggle-button/toggle-button.e2e.js.map +1 -1
- package/dist/collection/tests/tooltip/tooltip.e2e.js.map +1 -1
- package/dist/collection/tests/tree/tree.e2e.js.map +1 -1
- package/dist/collection/tests/typography/typography.e2e.js.map +1 -1
- package/dist/collection/tests/upload/upload.e2e.js.map +1 -1
- package/dist/collection/tests/utils/test/index.js.map +1 -1
- package/dist/collection/tests/utils/test/page.js.map +1 -1
- package/dist/collection/tests/workflow-steps/workflow-steps.e2e.js.map +1 -1
- package/dist/esm/{app-globals-bdfc5499.js → app-globals-0cd07cd9.js} +2 -2
- package/dist/esm/{app-globals-bdfc5499.js.map → app-globals-0cd07cd9.js.map} +1 -1
- package/dist/esm/{base-button-37b915d6.js → base-button-3ac703a7.js} +27 -4
- package/dist/esm/base-button-3ac703a7.js.map +1 -0
- package/dist/esm/{base-icon-button-976ef0f6.js → base-icon-button-59eb1fe5.js} +2 -2
- package/dist/esm/{base-icon-button-976ef0f6.js.map → base-icon-button-59eb1fe5.js.map} +1 -1
- package/dist/esm/{core-js-1c33b685.js → core-js-78b486a8.js} +1 -1
- package/dist/esm/{core-js-1c33b685.js.map → core-js-78b486a8.js.map} +1 -1
- package/dist/esm/dom-64ac48b5.js.map +1 -1
- package/dist/esm/{index.es2017-45304832.js → index.es2017-93ac816c.js} +3 -3
- package/dist/esm/{index.es2017-45304832.js.map → index.es2017-93ac816c.js.map} +1 -1
- package/dist/esm/ix-avatar_2.entry.js +1 -1
- package/dist/esm/ix-blind.entry.js +1 -1
- package/dist/esm/ix-blind.entry.js.map +1 -1
- package/dist/esm/ix-breadcrumb-item.entry.js +2 -2
- package/dist/esm/ix-breadcrumb-item.entry.js.map +1 -1
- package/dist/esm/ix-button.entry.js +4 -4
- package/dist/esm/ix-button.entry.js.map +1 -1
- package/dist/esm/ix-category-filter.entry.js +2 -2
- package/dist/esm/ix-category-filter.entry.js.map +1 -1
- package/dist/esm/ix-col_4.entry.js +4 -4
- package/dist/esm/ix-col_4.entry.js.map +1 -1
- package/dist/esm/ix-date-dropdown.entry.js +11 -4
- package/dist/esm/ix-date-dropdown.entry.js.map +1 -1
- package/dist/esm/ix-dropdown.entry.js +28 -12
- package/dist/esm/ix-dropdown.entry.js.map +1 -1
- package/dist/esm/ix-icon-button_2.entry.js +4 -4
- package/dist/esm/ix-icon-button_2.entry.js.map +1 -1
- package/dist/esm/ix-icon-toggle-button.entry.js +3 -3
- package/dist/esm/ix-icon-toggle-button.entry.js.map +1 -1
- package/dist/esm/ix-icon.entry-621b700a.js +1531 -0
- package/dist/esm/ix-icon.entry-621b700a.js.map +1 -0
- package/dist/esm/ix-menu-expand-icon.entry.js +1 -1
- package/dist/esm/ix-menu.entry.js +3 -3
- package/dist/esm/ix-menu.entry.js.map +1 -1
- package/dist/esm/ix-pagination.entry.js +2 -2
- package/dist/esm/ix-pagination.entry.js.map +1 -1
- package/dist/esm/ix-toggle-button.entry.js +1 -1
- package/dist/esm/ix-tooltip.entry.js +5 -2
- package/dist/esm/ix-tooltip.entry.js.map +1 -1
- package/dist/esm/ix-workflow-step.entry.js +4 -4
- package/dist/esm/ix-workflow-step.entry.js.map +1 -1
- package/dist/esm/ix-workflow-steps.entry.js +1 -1
- package/dist/esm/ix-workflow-steps.entry.js.map +1 -1
- package/dist/esm/loader.js +2 -2
- package/dist/esm/siemens-ix.js +2 -2
- package/dist/siemens-ix/p-01b8b98c.entry.js +2 -0
- package/dist/siemens-ix/{p-8d161202.entry.js.map → p-01b8b98c.entry.js.map} +1 -1
- package/dist/siemens-ix/p-0fee2dd5.entry.js +2 -0
- package/dist/siemens-ix/p-0fee2dd5.entry.js.map +1 -0
- package/dist/siemens-ix/p-18a1c4dd.entry.js +2 -0
- package/dist/siemens-ix/p-18a1c4dd.entry.js.map +1 -0
- package/dist/siemens-ix/p-18a27007.entry.js +2 -0
- package/dist/siemens-ix/p-18a27007.entry.js.map +1 -0
- package/dist/siemens-ix/{p-84430d2c.js → p-1f6df0c6.js} +2 -2
- package/dist/siemens-ix/{p-84430d2c.js.map → p-1f6df0c6.js.map} +1 -1
- package/dist/siemens-ix/p-213f16d5.entry.js +2 -0
- package/dist/siemens-ix/{p-64c895ac.entry.js.map → p-213f16d5.entry.js.map} +1 -1
- package/dist/siemens-ix/{p-7702a8c2.js → p-235c14ca.js} +2 -2
- package/dist/siemens-ix/p-2459f98f.entry.js +2 -0
- package/dist/siemens-ix/p-2459f98f.entry.js.map +1 -0
- package/dist/siemens-ix/p-2c14670e.entry.js +2 -0
- package/dist/siemens-ix/p-2c14670e.entry.js.map +1 -0
- package/dist/siemens-ix/{p-af74fc62.entry.js → p-306c5ab2.entry.js} +2 -2
- package/dist/siemens-ix/{p-0b7741b7.entry.js → p-493cb880.entry.js} +2 -2
- package/dist/siemens-ix/p-493cb880.entry.js.map +1 -0
- package/dist/siemens-ix/{p-bd310180.entry.js → p-4cf6e817.entry.js} +2 -2
- package/dist/siemens-ix/p-5d43cae8.js.map +1 -1
- package/dist/siemens-ix/p-8362e966.js +2 -0
- package/dist/siemens-ix/p-8362e966.js.map +1 -0
- package/dist/siemens-ix/p-a147b152.entry.js +2 -0
- package/dist/siemens-ix/p-a147b152.entry.js.map +1 -0
- package/dist/siemens-ix/{p-b5c53faf.js → p-a2200306.js} +1 -1
- package/dist/siemens-ix/{p-b5c53faf.js.map → p-a2200306.js.map} +1 -1
- package/dist/siemens-ix/p-a8838a77.js +2 -0
- package/dist/siemens-ix/p-bd576793.entry.js +2 -0
- package/dist/siemens-ix/p-bd576793.entry.js.map +1 -0
- package/dist/siemens-ix/p-bdc57334.entry.js +2 -0
- package/dist/siemens-ix/{p-f7e82b50.entry.js.map → p-bdc57334.entry.js.map} +1 -1
- package/dist/siemens-ix/{p-262026ab.entry.js → p-cf546284.entry.js} +2 -2
- package/dist/siemens-ix/p-cf546284.entry.js.map +1 -0
- package/dist/siemens-ix/{p-ac1d46d6.entry.js → p-def8b3a4.entry.js} +2 -2
- package/dist/siemens-ix/{p-ac1d46d6.entry.js.map → p-def8b3a4.entry.js.map} +1 -1
- package/dist/siemens-ix/p-e4e24f59.entry.js +2 -0
- package/dist/siemens-ix/{p-c29aff68.entry.js.map → p-e4e24f59.entry.js.map} +1 -1
- package/dist/siemens-ix/{p-b02fd2c5.entry.js → p-fb55854a.entry.js} +2 -2
- package/dist/siemens-ix/p-fe87443e.js +2 -0
- package/dist/siemens-ix/p-fe87443e.js.map +1 -0
- package/dist/siemens-ix/siemens-ix.css +72 -0
- package/dist/siemens-ix/siemens-ix.esm.js +1 -1
- package/dist/siemens-ix/siemens-ix.esm.js.map +1 -1
- package/dist/siemens-ix/theme/classic-dark.css +1 -1
- package/dist/siemens-ix/theme/classic-light.css +1 -1
- package/dist/types/components/button/base-button.d.ts +3 -0
- package/dist/types/components/button/button.d.ts +2 -1
- package/dist/types/components/date-dropdown/date-dropdown.d.ts +7 -0
- package/dist/types/components/dropdown/dropdown-controller.d.ts +2 -2
- package/dist/types/components/dropdown/dropdown.d.ts +2 -0
- package/dist/types/components/icon-button/icon-button.d.ts +1 -0
- package/dist/types/components.d.ts +15 -0
- package/package.json +1 -1
- package/scss/theme/classic-dark/_color.scss +36 -0
- package/scss/theme/classic-light/_color.scss +36 -0
- package/dist/cjs/base-button-2f74b19d.js.map +0 -1
- package/dist/cjs/ix-icon.entry-01b3822b.js +0 -1487
- package/dist/cjs/ix-icon.entry-01b3822b.js.map +0 -1
- package/dist/esm/base-button-37b915d6.js.map +0 -1
- package/dist/esm/ix-icon.entry-9fafcf35.js +0 -1485
- package/dist/esm/ix-icon.entry-9fafcf35.js.map +0 -1
- package/dist/playwright-ct.config.js +0 -23
- package/dist/playwright-ct.config.js.map +0 -1
- package/dist/playwright.config.js +0 -75
- package/dist/playwright.config.js.map +0 -1
- package/dist/siemens-ix/p-0b7741b7.entry.js.map +0 -1
- package/dist/siemens-ix/p-16826ff7.js +0 -2
- package/dist/siemens-ix/p-16d378f3.js +0 -2
- package/dist/siemens-ix/p-16d378f3.js.map +0 -1
- package/dist/siemens-ix/p-262026ab.entry.js.map +0 -1
- package/dist/siemens-ix/p-29b0bef3.entry.js +0 -2
- package/dist/siemens-ix/p-29b0bef3.entry.js.map +0 -1
- package/dist/siemens-ix/p-64c895ac.entry.js +0 -2
- package/dist/siemens-ix/p-6f097cae.entry.js +0 -2
- package/dist/siemens-ix/p-6f097cae.entry.js.map +0 -1
- package/dist/siemens-ix/p-8d161202.entry.js +0 -2
- package/dist/siemens-ix/p-a039faa9.entry.js +0 -2
- package/dist/siemens-ix/p-a039faa9.entry.js.map +0 -1
- package/dist/siemens-ix/p-a4e489ea.js +0 -2
- package/dist/siemens-ix/p-a4e489ea.js.map +0 -1
- package/dist/siemens-ix/p-acdeb192.entry.js +0 -2
- package/dist/siemens-ix/p-acdeb192.entry.js.map +0 -1
- package/dist/siemens-ix/p-c29aff68.entry.js +0 -2
- package/dist/siemens-ix/p-c4d3f089.entry.js +0 -2
- package/dist/siemens-ix/p-c4d3f089.entry.js.map +0 -1
- package/dist/siemens-ix/p-dbf234e5.entry.js +0 -2
- package/dist/siemens-ix/p-dbf234e5.entry.js.map +0 -1
- package/dist/siemens-ix/p-f7e82b50.entry.js +0 -2
- package/dist/siemens-ix/p-fe273de4.entry.js +0 -2
- package/dist/siemens-ix/p-fe273de4.entry.js.map +0 -1
- package/dist/types/Users/daniel/dev/oss/ix/packages/core/.stencil/playwright-ct.config.d.ts +0 -7
- package/dist/types/Users/daniel/dev/oss/ix/packages/core/.stencil/playwright.config.d.ts +0 -7
- /package/dist/siemens-ix/{p-7702a8c2.js.map → p-235c14ca.js.map} +0 -0
- /package/dist/siemens-ix/{p-af74fc62.entry.js.map → p-306c5ab2.entry.js.map} +0 -0
- /package/dist/siemens-ix/{p-bd310180.entry.js.map → p-4cf6e817.entry.js.map} +0 -0
- /package/dist/siemens-ix/{p-16826ff7.js.map → p-a8838a77.js.map} +0 -0
- /package/dist/siemens-ix/{p-b02fd2c5.entry.js.map → p-fb55854a.entry.js.map} +0 -0
|
@@ -53,11 +53,24 @@ class DropdownController {
|
|
|
53
53
|
delete this.submenuIds[dropdown.getId()];
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
dismissAll(ignoreBehaviorForIds = []) {
|
|
56
|
+
dismissAll(ignoreBehaviorForIds = [], ignoreRelatedDropdowns = false) {
|
|
57
57
|
this.dropdowns.forEach((dropdown) => {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
const preventClosing = dropdown.closeBehavior === 'inside' || dropdown.closeBehavior === false;
|
|
59
|
+
const shouldIgnore = ignoreBehaviorForIds.includes(dropdown.getId());
|
|
60
|
+
const path = this.buildComposedPath(dropdown.getId(), new Set());
|
|
61
|
+
if (ignoreBehaviorForIds.length > 0 && ignoreRelatedDropdowns) {
|
|
62
|
+
let skipRelatedDropdown = false;
|
|
63
|
+
ignoreBehaviorForIds.forEach((id) => {
|
|
64
|
+
if (path.has(id)) {
|
|
65
|
+
skipRelatedDropdown = true;
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
if (!skipRelatedDropdown) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (!shouldIgnore && preventClosing) {
|
|
61
74
|
return;
|
|
62
75
|
}
|
|
63
76
|
this.dismiss(dropdown);
|
|
@@ -77,11 +90,11 @@ class DropdownController {
|
|
|
77
90
|
for (let eventTarget of eventTargets) {
|
|
78
91
|
if (eventTarget instanceof HTMLElement) {
|
|
79
92
|
if (eventTarget.hasAttribute('data-ix-dropdown-trigger')) {
|
|
80
|
-
return
|
|
93
|
+
return eventTarget;
|
|
81
94
|
}
|
|
82
95
|
}
|
|
83
96
|
}
|
|
84
|
-
return
|
|
97
|
+
return;
|
|
85
98
|
}
|
|
86
99
|
pathIncludesDropdown(eventTargets) {
|
|
87
100
|
return !!eventTargets.find((element) => element.tagName === 'IX-DROPDOWN');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown-controller.js","sourceRoot":"","sources":["../../../../src/components/dropdown/dropdown-controller.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { IxComponent } from '../utils/internal';\nexport type CloseBehavior = 'inside' | 'outside' | 'both' | boolean;\n\nexport interface DropdownInterface extends IxComponent {\n closeBehavior: CloseBehavior;\n discoverAllSubmenus: boolean;\n\n getAssignedSubmenuIds(): string[];\n getId(): string;\n\n discoverSubmenu(): void;\n\n isPresent(): boolean;\n\n willPresent?(): boolean;\n willDismiss?(): boolean;\n\n present(): void;\n dismiss(): void;\n}\n\nexport function hasDropdownItemWrapperImplemented(\n item: unknown\n): item is DropdownItemWrapper {\n return (\n item &&\n (item as DropdownItemWrapper).getDropdownItemElement !== undefined &&\n typeof (item as DropdownItemWrapper).getDropdownItemElement === 'function'\n );\n}\n\nexport interface DropdownItemWrapper {\n getDropdownItemElement(): Promise<HTMLIxDropdownItemElement>;\n}\n\ntype SubmenuIds = Record<string, string[]>;\n\nclass DropdownController {\n private dropdowns: Map<string, DropdownInterface> = new Map<\n string,\n DropdownInterface\n >();\n private submenuIds: SubmenuIds = {};\n\n private isWindowListenerActive = false;\n\n connected(dropdown: DropdownInterface) {\n if (!this.isWindowListenerActive) {\n this.addOverlayListeners();\n }\n this.dropdowns.set(dropdown.getId(), dropdown);\n\n if (dropdown.discoverAllSubmenus) {\n this.discoverSubmenus();\n }\n }\n\n disconnected(dropdown: DropdownInterface) {\n this.dropdowns.delete(dropdown.getId());\n }\n\n discoverSubmenus() {\n this.dropdowns.forEach((dropdown) => {\n dropdown.discoverSubmenu();\n });\n }\n\n present(dropdown: DropdownInterface) {\n if (!dropdown.isPresent() && dropdown.willPresent()) {\n this.submenuIds[dropdown.getId()] = dropdown.getAssignedSubmenuIds();\n dropdown.present();\n }\n }\n\n dismissChildren(uid: string) {\n const childIds = this.submenuIds[uid] || [];\n for (const id of childIds) {\n this.dismiss(this.dropdowns.get(id));\n }\n }\n\n dismiss(dropdown: DropdownInterface) {\n if (dropdown.isPresent() && dropdown.willDismiss()) {\n this.dismissChildren(dropdown.getId());\n dropdown.dismiss();\n delete this.submenuIds[dropdown.getId()];\n }\n }\n\n dismissAll(ignoreBehaviorForIds: string[] = []) {\n this.dropdowns.forEach((dropdown) => {\n if (\n !ignoreBehaviorForIds.includes(dropdown.getId()) &&\n (dropdown.closeBehavior === 'inside' ||\n dropdown.closeBehavior === false)\n ) {\n return;\n }\n\n this.dismiss(dropdown);\n });\n }\n\n dismissOthers(uid: string) {\n let path = this.buildComposedPath(uid, new Set<string>());\n\n this.dropdowns.forEach((dropdown) => {\n if (\n dropdown.closeBehavior !== 'inside' &&\n dropdown.closeBehavior !== false &&\n !path.has(dropdown.getId())\n ) {\n this.dismiss(dropdown);\n }\n });\n }\n\n pathIncludesTrigger(eventTargets: EventTarget[]) {\n for (let eventTarget of eventTargets) {\n if (eventTarget instanceof HTMLElement) {\n if (eventTarget.hasAttribute('data-ix-dropdown-trigger')) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n private pathIncludesDropdown(eventTargets: EventTarget[]) {\n return !!eventTargets.find(\n (element: HTMLElement) => element.tagName === 'IX-DROPDOWN'\n );\n }\n\n private buildComposedPath(id: string, path: Set<string>): Set<string> {\n if (this.submenuIds[id]) {\n path.add(id);\n }\n\n for (const ruleKey of Object.keys(this.submenuIds)) {\n if (this.submenuIds[ruleKey].includes(id)) {\n this.buildComposedPath(ruleKey, path).forEach((key) => path.add(key));\n }\n }\n\n return path;\n }\n\n private addOverlayListeners() {\n this.isWindowListenerActive = true;\n\n window.addEventListener('click', (event: PointerEvent) => {\n const hasTrigger = this.pathIncludesTrigger(event.composedPath());\n const hasDropdown = this.pathIncludesDropdown(event.composedPath());\n\n if (!hasTrigger && !hasDropdown) {\n this.dismissAll();\n }\n });\n\n window.addEventListener('keydown', (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n this.dismissAll([...this.dropdowns.keys()]);\n }\n });\n }\n}\n\nexport const addDisposableEventListener = (\n element: Element | Window | Document,\n eventType: string,\n callback: EventListenerOrEventListenerObject\n) => {\n element.addEventListener(eventType, callback);\n\n return () => {\n element.removeEventListener(eventType, callback);\n };\n};\n\nexport const addDisposableEventListenerAsArray = (\n listener: {\n element: Element | Window | Document;\n eventType: string;\n callback: EventListenerOrEventListenerObject;\n }[]\n) => {\n const disposables = listener.map(({ callback, element, eventType }) =>\n addDisposableEventListener(element, eventType, callback)\n );\n\n return () => disposables.forEach((dispose) => dispose());\n};\n\nexport const dropdownController = new DropdownController();\n"]}
|
|
1
|
+
{"version":3,"file":"dropdown-controller.js","sourceRoot":"","sources":["../../../src/components/dropdown/dropdown-controller.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { IxComponent } from '../utils/internal';\nexport type CloseBehavior = 'inside' | 'outside' | 'both' | boolean;\n\nexport interface DropdownInterface extends IxComponent {\n closeBehavior: CloseBehavior;\n discoverAllSubmenus: boolean;\n\n getAssignedSubmenuIds(): string[];\n getId(): string;\n\n discoverSubmenu(): void;\n\n isPresent(): boolean;\n\n willPresent?(): boolean;\n willDismiss?(): boolean;\n\n present(): void;\n dismiss(): void;\n}\n\nexport function hasDropdownItemWrapperImplemented(\n item: unknown\n): item is DropdownItemWrapper {\n return (\n item &&\n (item as DropdownItemWrapper).getDropdownItemElement !== undefined &&\n typeof (item as DropdownItemWrapper).getDropdownItemElement === 'function'\n );\n}\n\nexport interface DropdownItemWrapper {\n getDropdownItemElement(): Promise<HTMLIxDropdownItemElement>;\n}\n\ntype SubmenuIds = Record<string, string[]>;\n\nclass DropdownController {\n private dropdowns: Map<string, DropdownInterface> = new Map<\n string,\n DropdownInterface\n >();\n private submenuIds: SubmenuIds = {};\n\n private isWindowListenerActive = false;\n\n connected(dropdown: DropdownInterface) {\n if (!this.isWindowListenerActive) {\n this.addOverlayListeners();\n }\n this.dropdowns.set(dropdown.getId(), dropdown);\n\n if (dropdown.discoverAllSubmenus) {\n this.discoverSubmenus();\n }\n }\n\n disconnected(dropdown: DropdownInterface) {\n this.dropdowns.delete(dropdown.getId());\n }\n\n discoverSubmenus() {\n this.dropdowns.forEach((dropdown) => {\n dropdown.discoverSubmenu();\n });\n }\n\n present(dropdown: DropdownInterface) {\n if (!dropdown.isPresent() && dropdown.willPresent()) {\n this.submenuIds[dropdown.getId()] = dropdown.getAssignedSubmenuIds();\n dropdown.present();\n }\n }\n\n dismissChildren(uid: string) {\n const childIds = this.submenuIds[uid] || [];\n for (const id of childIds) {\n this.dismiss(this.dropdowns.get(id));\n }\n }\n\n dismiss(dropdown: DropdownInterface) {\n if (dropdown.isPresent() && dropdown.willDismiss()) {\n this.dismissChildren(dropdown.getId());\n dropdown.dismiss();\n delete this.submenuIds[dropdown.getId()];\n }\n }\n\n dismissAll(\n ignoreBehaviorForIds: string[] = [],\n ignoreRelatedDropdowns = false\n ) {\n this.dropdowns.forEach((dropdown) => {\n const preventClosing =\n dropdown.closeBehavior === 'inside' || dropdown.closeBehavior === false;\n\n const shouldIgnore = ignoreBehaviorForIds.includes(dropdown.getId());\n const path = this.buildComposedPath(dropdown.getId(), new Set<string>());\n\n if (ignoreBehaviorForIds.length > 0 && ignoreRelatedDropdowns) {\n let skipRelatedDropdown = false;\n\n ignoreBehaviorForIds.forEach((id) => {\n if (path.has(id)) {\n skipRelatedDropdown = true;\n return;\n }\n });\n\n if (!skipRelatedDropdown) {\n return;\n }\n }\n\n if (!shouldIgnore && preventClosing) {\n return;\n }\n\n this.dismiss(dropdown);\n });\n }\n\n dismissOthers(uid: string) {\n let path = this.buildComposedPath(uid, new Set<string>());\n\n this.dropdowns.forEach((dropdown) => {\n if (\n dropdown.closeBehavior !== 'inside' &&\n dropdown.closeBehavior !== false &&\n !path.has(dropdown.getId())\n ) {\n this.dismiss(dropdown);\n }\n });\n }\n\n pathIncludesTrigger(eventTargets: EventTarget[]) {\n for (let eventTarget of eventTargets) {\n if (eventTarget instanceof HTMLElement) {\n if (eventTarget.hasAttribute('data-ix-dropdown-trigger')) {\n return eventTarget;\n }\n }\n }\n\n return;\n }\n\n private pathIncludesDropdown(eventTargets: EventTarget[]) {\n return !!eventTargets.find(\n (element: HTMLElement) => element.tagName === 'IX-DROPDOWN'\n );\n }\n\n private buildComposedPath(id: string, path: Set<string>): Set<string> {\n if (this.submenuIds[id]) {\n path.add(id);\n }\n\n for (const ruleKey of Object.keys(this.submenuIds)) {\n if (this.submenuIds[ruleKey].includes(id)) {\n this.buildComposedPath(ruleKey, path).forEach((key) => path.add(key));\n }\n }\n\n return path;\n }\n\n private addOverlayListeners() {\n this.isWindowListenerActive = true;\n\n window.addEventListener('click', (event: PointerEvent) => {\n const hasTrigger = this.pathIncludesTrigger(event.composedPath());\n const hasDropdown = this.pathIncludesDropdown(event.composedPath());\n\n if (!hasTrigger && !hasDropdown) {\n this.dismissAll();\n }\n });\n\n window.addEventListener('keydown', (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n this.dismissAll([...this.dropdowns.keys()]);\n }\n });\n }\n}\n\nexport const addDisposableEventListener = (\n element: Element | Window | Document,\n eventType: string,\n callback: EventListenerOrEventListenerObject\n) => {\n element.addEventListener(eventType, callback);\n\n return () => {\n element.removeEventListener(eventType, callback);\n };\n};\n\nexport const addDisposableEventListenerAsArray = (\n listener: {\n element: Element | Window | Document;\n eventType: string;\n callback: EventListenerOrEventListenerObject;\n }[]\n) => {\n const disposables = listener.map(({ callback, element, eventType }) =>\n addDisposableEventListener(element, eventType, callback)\n );\n\n return () => disposables.forEach((dispose) => dispose());\n};\n\nexport const dropdownController = new DropdownController();\n"]}
|
|
@@ -31,6 +31,7 @@ export class Dropdown {
|
|
|
31
31
|
this.offset = undefined;
|
|
32
32
|
this.overwriteDropdownStyle = undefined;
|
|
33
33
|
this.discoverAllSubmenus = false;
|
|
34
|
+
this.ignoreRelatedSubmenu = false;
|
|
34
35
|
}
|
|
35
36
|
connectedCallback() {
|
|
36
37
|
dropdownController.connected(this);
|
|
@@ -113,7 +114,7 @@ export class Dropdown {
|
|
|
113
114
|
var _a;
|
|
114
115
|
(_a = this.triggerElement) === null || _a === void 0 ? void 0 : _a.dispatchEvent(new CustomEvent('ix-assign-sub-menu', {
|
|
115
116
|
bubbles: true,
|
|
116
|
-
composed:
|
|
117
|
+
composed: true,
|
|
117
118
|
cancelable: true,
|
|
118
119
|
detail: this.localUId,
|
|
119
120
|
}));
|
|
@@ -293,14 +294,16 @@ export class Dropdown {
|
|
|
293
294
|
return trigger;
|
|
294
295
|
}
|
|
295
296
|
onDropdownClick(event) {
|
|
296
|
-
|
|
297
|
+
const target = dropdownController.pathIncludesTrigger(event.composedPath());
|
|
298
|
+
if (target) {
|
|
297
299
|
event.preventDefault();
|
|
298
|
-
if (this.isTriggerElement(
|
|
300
|
+
if (this.isTriggerElement(target)) {
|
|
299
301
|
return;
|
|
300
302
|
}
|
|
301
303
|
}
|
|
302
304
|
if (this.closeBehavior === 'inside' || this.closeBehavior === 'both') {
|
|
303
|
-
dropdownController.dismissAll([this.getId()]);
|
|
305
|
+
dropdownController.dismissAll([this.getId()], this.ignoreRelatedSubmenu);
|
|
306
|
+
return;
|
|
304
307
|
}
|
|
305
308
|
dropdownController.dismissOthers(this.getId());
|
|
306
309
|
}
|
|
@@ -311,7 +314,7 @@ export class Dropdown {
|
|
|
311
314
|
this.applyDropdownPosition();
|
|
312
315
|
}
|
|
313
316
|
render() {
|
|
314
|
-
return (h(Host, { key: '
|
|
317
|
+
return (h(Host, { key: 'd235024aac5f2ef9d849b6ec73b2cfe69d4bf902', "data-ix-dropdown": this.localUId, ref: (ref) => (this.dropdownRef = ref), class: {
|
|
315
318
|
'dropdown-menu': true,
|
|
316
319
|
show: this.show,
|
|
317
320
|
overflow: true,
|
|
@@ -319,7 +322,7 @@ export class Dropdown {
|
|
|
319
322
|
margin: '0',
|
|
320
323
|
minWidth: '0px',
|
|
321
324
|
position: this.positioningStrategy,
|
|
322
|
-
}, role: "list", onClick: (event) => this.onDropdownClick(event) }, h("div", { key: '
|
|
325
|
+
}, role: "list", onClick: (event) => this.onDropdownClick(event) }, h("div", { key: '9502d259b770f3badcc56d3132d8c02b00cca30a', style: { display: 'contents' } }, this.header && h("div", { class: "dropdown-header" }, this.header), h("slot", { key: '73be2831a06b820a4284a44ed0d128ddffca38a2' }))));
|
|
323
326
|
}
|
|
324
327
|
static get is() { return "ix-dropdown"; }
|
|
325
328
|
static get encapsulation() { return "shadow"; }
|
|
@@ -578,6 +581,27 @@ export class Dropdown {
|
|
|
578
581
|
"attribute": "discover-all-submenus",
|
|
579
582
|
"reflect": false,
|
|
580
583
|
"defaultValue": "false"
|
|
584
|
+
},
|
|
585
|
+
"ignoreRelatedSubmenu": {
|
|
586
|
+
"type": "boolean",
|
|
587
|
+
"mutable": false,
|
|
588
|
+
"complexType": {
|
|
589
|
+
"original": "boolean",
|
|
590
|
+
"resolved": "boolean",
|
|
591
|
+
"references": {}
|
|
592
|
+
},
|
|
593
|
+
"required": false,
|
|
594
|
+
"optional": false,
|
|
595
|
+
"docs": {
|
|
596
|
+
"tags": [{
|
|
597
|
+
"name": "internal",
|
|
598
|
+
"text": undefined
|
|
599
|
+
}],
|
|
600
|
+
"text": ""
|
|
601
|
+
},
|
|
602
|
+
"attribute": "ignore-related-submenu",
|
|
603
|
+
"reflect": false,
|
|
604
|
+
"defaultValue": "false"
|
|
581
605
|
}
|
|
582
606
|
};
|
|
583
607
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../../../src/components/dropdown/dropdown.tsx"],"names":[],"mappings":"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","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n autoUpdate,\n computePosition,\n ComputePositionConfig,\n flip,\n inline,\n offset,\n shift,\n} from '@floating-ui/dom';\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { ComponentInterface } from '@stencil/core/internal';\nimport { ArrowFocusController } from '../utils/focus';\nimport {\n addDisposableEventListener,\n CloseBehavior,\n dropdownController,\n DropdownInterface,\n hasDropdownItemWrapperImplemented,\n} from './dropdown-controller';\nimport { AlignedPlacement } from './placement';\n\nlet sequenceId = 0;\n\n@Component({\n tag: 'ix-dropdown',\n styleUrl: 'dropdown.scss',\n shadow: true,\n})\nexport class Dropdown implements ComponentInterface, DropdownInterface {\n @Element() hostElement!: HTMLIxDropdownElement;\n\n /**\n * Suppress the automatic placement of the dropdown.\n *\n * @since 2.0.0\n */\n @Prop() suppressAutomaticPlacement = false;\n\n /**\n * Show dropdown\n */\n @Prop({ mutable: true, reflect: true }) show = false;\n\n /**\n * Define an element that triggers the dropdown.\n * A trigger can either be a string that will be interpreted as id attribute or a DOM element.\n */\n @Prop() trigger: string | HTMLElement | Promise<HTMLElement>;\n\n /**\n * Define an anchor element\n */\n @Prop() anchor: string | HTMLElement;\n\n /**\n * Controls if the dropdown will be closed in response to a click event depending on the position of the event relative to the dropdown.\n * If the dropdown is a child of another one, it will be closed with the parent, regardless of its own close behavior.\n */\n @Prop() closeBehavior: CloseBehavior = 'both';\n\n /**\n * Placement of the dropdown\n */\n @Prop() placement: AlignedPlacement = 'bottom-start';\n\n /**\n * Position strategy\n */\n @Prop() positioningStrategy: 'absolute' | 'fixed' = 'fixed';\n\n /**\n * An optional header shown at the top of the dropdown\n */\n @Prop() header?: string;\n\n /**\n * Move dropdown along main axis of alignment\n *\n * @internal\n */\n @Prop() offset: {\n mainAxis?: number;\n crossAxis?: number;\n alignmentAxis?: number;\n };\n\n /**\n * @internal\n */\n @Prop() overwriteDropdownStyle: (delegate: {\n dropdownRef: HTMLElement;\n triggerRef?: HTMLElement;\n }) => Promise<Partial<CSSStyleDeclaration>>;\n\n /**\n * @internal\n * If initialisation of this dropdown is expected to be defered submenu discovery will have to be re-run globally by the controller.\n * This property indicates the need for that to the controller.\n */\n @Prop() discoverAllSubmenus = false;\n\n /**\n * Fire event after visibility of dropdown has changed\n */\n @Event() showChanged: EventEmitter<boolean>;\n\n private autoUpdateCleanup: () => void = null;\n\n private triggerElement?: Element;\n private anchorElement?: Element;\n\n private dropdownRef: HTMLElement;\n private localUId = `dropdown-${sequenceId++}`;\n private assignedSubmenu: string[] = [];\n\n private arrowFocusController: ArrowFocusController;\n private focusDropdownItemBind = this.focusDropdownItem.bind(this);\n\n private itemObserver = new MutationObserver(() => {\n this.arrowFocusController.items = this.dropdownItems;\n });\n\n connectedCallback(): void {\n dropdownController.connected(this);\n\n if (this.trigger != undefined) {\n this.registerListener(this.trigger);\n }\n }\n\n @Listen('ix-assign-sub-menu')\n cacheSubmenuId(event: CustomEvent<string>) {\n event.stopImmediatePropagation();\n event.preventDefault();\n\n const { detail } = event;\n\n if (this.assignedSubmenu.indexOf(detail) === -1) {\n this.assignedSubmenu.push(detail);\n }\n }\n\n disconnectedCallback() {\n dropdownController.dismiss(this);\n dropdownController.disconnected(this);\n\n if (this.disposeClickListener) {\n this.disposeClickListener();\n }\n\n if (this.disposeKeyListener) {\n this.disposeKeyListener();\n }\n\n if (this.autoUpdateCleanup) {\n this.autoUpdateCleanup();\n }\n }\n\n getAssignedSubmenuIds() {\n return this.assignedSubmenu;\n }\n\n isPresent() {\n return this.show;\n }\n\n present() {\n this.show = true;\n }\n\n dismiss() {\n this.show = false;\n }\n\n getId() {\n return this.localUId;\n }\n\n willDismiss() {\n const { defaultPrevented } = this.showChanged.emit(false);\n return !defaultPrevented;\n }\n\n willPresent() {\n const { defaultPrevented } = this.showChanged.emit(true);\n return !defaultPrevented;\n }\n\n get dropdownItems() {\n return Array.from(this.hostElement.querySelectorAll('ix-dropdown-item'));\n }\n\n get slotElement() {\n return this.hostElement.shadowRoot.querySelector('slot');\n }\n\n private disposeClickListener?: () => void;\n private disposeKeyListener?: () => void;\n\n private addEventListenersFor() {\n this.disposeClickListener?.();\n this.disposeKeyListener?.();\n\n const toggleController = () => {\n if (!this.isPresent()) {\n dropdownController.present(this);\n } else {\n dropdownController.dismiss(this);\n }\n\n dropdownController.dismissOthers(this.getId());\n };\n\n this.disposeClickListener = addDisposableEventListener(\n this.triggerElement,\n 'click',\n (event: PointerEvent) => {\n if (!event.defaultPrevented) {\n toggleController();\n }\n }\n );\n\n this.triggerElement?.setAttribute(\n 'data-ix-dropdown-trigger',\n this.localUId\n );\n }\n\n /** @internal */\n @Method()\n async discoverSubmenu() {\n this.triggerElement?.dispatchEvent(\n new CustomEvent('ix-assign-sub-menu', {\n bubbles: true,\n composed: false,\n cancelable: true,\n detail: this.localUId,\n })\n );\n }\n\n private registerKeyListener() {\n if (!this.triggerElement) {\n return;\n }\n\n this.disposeKeyListener = addDisposableEventListener(\n this.triggerElement,\n 'keydown',\n (event: KeyboardEvent) => {\n if (event.key !== 'ArrowDown') {\n return;\n }\n\n if (document.activeElement !== this.triggerElement) {\n return;\n }\n\n dropdownController.present(this);\n\n setTimeout(() => {\n this.focusDropdownItem(0);\n });\n }\n );\n }\n\n private async registerListener(\n element: string | HTMLElement | Promise<HTMLElement>\n ) {\n this.triggerElement = await this.resolveElement(element);\n if (this.triggerElement) {\n this.addEventListenersFor();\n this.discoverSubmenu();\n }\n }\n\n private async resolveElement(\n element: string | HTMLElement | Promise<HTMLElement>\n ) {\n const el = await this.findElement(element);\n\n return this.checkForSubmenuAnchor(el);\n }\n\n private async checkForSubmenuAnchor(element: Element) {\n if (!element) {\n return null;\n }\n\n if (hasDropdownItemWrapperImplemented(element)) {\n const dropdownItem = await element.getDropdownItemElement();\n dropdownItem.isSubMenu = true;\n this.hostElement.style.zIndex = `var(--theme-z-index-dropdown)`;\n }\n\n if (element.tagName === 'IX-DROPDOWN-ITEM') {\n (element as HTMLIxDropdownItemElement).isSubMenu = true;\n this.hostElement.style.zIndex = `var(--theme-z-index-dropdown)`;\n }\n\n return element;\n }\n\n private findElement(\n element: string | HTMLElement | Promise<HTMLElement>\n ): Promise<Element> {\n if (element instanceof Promise) {\n return element;\n }\n\n if (typeof element === 'object') {\n return Promise.resolve(element);\n }\n\n if (typeof element != 'string') {\n return;\n }\n\n const selector = `#${element}`;\n return new Promise((resolve) => {\n if (document.querySelector(selector)) {\n return resolve(document.querySelector(selector));\n }\n\n const observer = new MutationObserver(() => {\n if (document.querySelector(selector)) {\n resolve(document.querySelector(selector));\n observer.disconnect();\n }\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n });\n }\n\n @Watch('show')\n async changedShow(newShow: boolean) {\n if (newShow) {\n this.anchorElement = await (this.anchor\n ? this.resolveElement(this.anchor)\n : this.resolveElement(this.trigger));\n\n if (this.anchorElement) {\n this.applyDropdownPosition();\n }\n\n this.arrowFocusController = new ArrowFocusController(\n this.dropdownItems,\n this.dropdownRef,\n this.focusDropdownItemBind\n );\n\n this.itemObserver.observe(this.dropdownRef, {\n childList: true,\n subtree: true,\n });\n\n this.registerKeyListener();\n } else {\n this.arrowFocusController.disconnect();\n this.itemObserver.disconnect();\n this.disposeKeyListener?.();\n }\n }\n\n @Watch('trigger')\n changedTrigger(newTriggerValue: string | HTMLElement | Promise<HTMLElement>) {\n this.registerListener(newTriggerValue);\n }\n\n private isAnchorSubmenu(): boolean {\n if (!hasDropdownItemWrapperImplemented(this.anchorElement)) {\n // Is no official dropdown-item, but check if any dropdown-item\n // is placed somewhere up the DOM\n return !!this.anchorElement?.closest('ix-dropdown-item');\n }\n\n return true;\n }\n\n private async applyDropdownPosition() {\n if (!this.show) {\n return;\n }\n if (!this.anchorElement) {\n return;\n }\n if (!this.dropdownRef) {\n return;\n }\n const isSubmenu = this.isAnchorSubmenu();\n\n let positionConfig: Partial<ComputePositionConfig> = {\n strategy: this.positioningStrategy,\n middleware: [],\n };\n\n if (!this.suppressAutomaticPlacement) {\n positionConfig.middleware.push(\n flip({ fallbackStrategy: 'initialPlacement' })\n );\n }\n\n positionConfig.placement = isSubmenu ? 'right-start' : this.placement;\n\n positionConfig.middleware = [\n ...positionConfig.middleware,\n inline(),\n shift(),\n ];\n\n if (this.offset) {\n positionConfig.middleware.push(offset(this.offset));\n }\n\n if (this.autoUpdateCleanup) {\n this.autoUpdateCleanup();\n this.autoUpdateCleanup = null;\n }\n\n this.autoUpdateCleanup = autoUpdate(\n this.anchorElement,\n this.dropdownRef,\n async () => {\n const computeResponse = await computePosition(\n this.anchorElement,\n this.dropdownRef,\n positionConfig\n );\n Object.assign(this.dropdownRef.style, {\n top: '0',\n left: '0',\n transform: `translate(${Math.round(computeResponse.x)}px,${Math.round(\n computeResponse.y\n )}px)`,\n });\n if (this.overwriteDropdownStyle) {\n const overwriteStyle = await this.overwriteDropdownStyle({\n dropdownRef: this.dropdownRef,\n triggerRef: this.triggerElement as HTMLElement,\n });\n\n Object.assign(this.dropdownRef.style, overwriteStyle);\n }\n },\n {\n ancestorResize: true,\n ancestorScroll: true,\n elementResize: true,\n }\n );\n }\n\n private focusDropdownItem(index: number) {\n requestAnimationFrame(() => {\n this.dropdownItems[index]?.shadowRoot.querySelector('button').focus();\n });\n }\n\n async componentDidLoad() {\n this.changedTrigger(this.trigger);\n }\n\n async componentDidRender() {\n await this.applyDropdownPosition();\n this.anchorElement = await (this.anchor\n ? this.resolveElement(this.anchor)\n : this.resolveElement(this.trigger));\n }\n\n private isTriggerElement(element: HTMLElement) {\n const trigger = !!element.hasAttribute('data-ix-dropdown-trigger');\n\n return trigger;\n }\n\n private onDropdownClick(event: PointerEvent) {\n if (dropdownController.pathIncludesTrigger(event.composedPath())) {\n event.preventDefault();\n\n if (this.isTriggerElement(event.target as HTMLElement)) {\n return;\n }\n }\n\n if (this.closeBehavior === 'inside' || this.closeBehavior === 'both') {\n dropdownController.dismissAll([this.getId()]);\n }\n\n dropdownController.dismissOthers(this.getId());\n }\n\n /**\n * Update position of dropdown\n */\n @Method()\n async updatePosition() {\n this.applyDropdownPosition();\n }\n\n render() {\n return (\n <Host\n data-ix-dropdown={this.localUId}\n ref={(ref) => (this.dropdownRef = ref)}\n class={{\n 'dropdown-menu': true,\n show: this.show,\n overflow: true,\n }}\n style={{\n margin: '0',\n minWidth: '0px',\n position: this.positioningStrategy,\n }}\n role=\"list\"\n onClick={(event: PointerEvent) => this.onDropdownClick(event)}\n >\n <div style={{ display: 'contents' }}>\n {this.header && <div class=\"dropdown-header\">{this.header}</div>}\n\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../../src/components/dropdown/dropdown.tsx"],"names":[],"mappings":"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","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n autoUpdate,\n computePosition,\n ComputePositionConfig,\n flip,\n inline,\n offset,\n shift,\n} from '@floating-ui/dom';\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { ComponentInterface } from '@stencil/core/internal';\nimport { ArrowFocusController } from '../utils/focus';\nimport {\n addDisposableEventListener,\n CloseBehavior,\n dropdownController,\n DropdownInterface,\n hasDropdownItemWrapperImplemented,\n} from './dropdown-controller';\nimport { AlignedPlacement } from './placement';\n\nlet sequenceId = 0;\n\n@Component({\n tag: 'ix-dropdown',\n styleUrl: 'dropdown.scss',\n shadow: true,\n})\nexport class Dropdown implements ComponentInterface, DropdownInterface {\n @Element() hostElement!: HTMLIxDropdownElement;\n\n /**\n * Suppress the automatic placement of the dropdown.\n *\n * @since 2.0.0\n */\n @Prop() suppressAutomaticPlacement = false;\n\n /**\n * Show dropdown\n */\n @Prop({ mutable: true, reflect: true }) show = false;\n\n /**\n * Define an element that triggers the dropdown.\n * A trigger can either be a string that will be interpreted as id attribute or a DOM element.\n */\n @Prop() trigger: string | HTMLElement | Promise<HTMLElement>;\n\n /**\n * Define an anchor element\n */\n @Prop() anchor: string | HTMLElement;\n\n /**\n * Controls if the dropdown will be closed in response to a click event depending on the position of the event relative to the dropdown.\n * If the dropdown is a child of another one, it will be closed with the parent, regardless of its own close behavior.\n */\n @Prop() closeBehavior: CloseBehavior = 'both';\n\n /**\n * Placement of the dropdown\n */\n @Prop() placement: AlignedPlacement = 'bottom-start';\n\n /**\n * Position strategy\n */\n @Prop() positioningStrategy: 'absolute' | 'fixed' = 'fixed';\n\n /**\n * An optional header shown at the top of the dropdown\n */\n @Prop() header?: string;\n\n /**\n * Move dropdown along main axis of alignment\n *\n * @internal\n */\n @Prop() offset: {\n mainAxis?: number;\n crossAxis?: number;\n alignmentAxis?: number;\n };\n\n /**\n * @internal\n */\n @Prop() overwriteDropdownStyle: (delegate: {\n dropdownRef: HTMLElement;\n triggerRef?: HTMLElement;\n }) => Promise<Partial<CSSStyleDeclaration>>;\n\n /**\n * @internal\n * If initialisation of this dropdown is expected to be defered submenu discovery will have to be re-run globally by the controller.\n * This property indicates the need for that to the controller.\n */\n @Prop() discoverAllSubmenus = false;\n\n /** @internal */\n @Prop() ignoreRelatedSubmenu = false;\n\n /**\n * Fire event after visibility of dropdown has changed\n */\n @Event() showChanged: EventEmitter<boolean>;\n\n private autoUpdateCleanup: () => void = null;\n\n private triggerElement?: Element;\n private anchorElement?: Element;\n\n private dropdownRef: HTMLElement;\n private localUId = `dropdown-${sequenceId++}`;\n private assignedSubmenu: string[] = [];\n\n private arrowFocusController: ArrowFocusController;\n private focusDropdownItemBind = this.focusDropdownItem.bind(this);\n\n private itemObserver = new MutationObserver(() => {\n this.arrowFocusController.items = this.dropdownItems;\n });\n\n connectedCallback(): void {\n dropdownController.connected(this);\n\n if (this.trigger != undefined) {\n this.registerListener(this.trigger);\n }\n }\n\n @Listen('ix-assign-sub-menu')\n cacheSubmenuId(event: CustomEvent<string>) {\n event.stopImmediatePropagation();\n event.preventDefault();\n\n const { detail } = event;\n\n if (this.assignedSubmenu.indexOf(detail) === -1) {\n this.assignedSubmenu.push(detail);\n }\n }\n\n disconnectedCallback() {\n dropdownController.dismiss(this);\n dropdownController.disconnected(this);\n\n if (this.disposeClickListener) {\n this.disposeClickListener();\n }\n\n if (this.disposeKeyListener) {\n this.disposeKeyListener();\n }\n\n if (this.autoUpdateCleanup) {\n this.autoUpdateCleanup();\n }\n }\n\n getAssignedSubmenuIds() {\n return this.assignedSubmenu;\n }\n\n isPresent() {\n return this.show;\n }\n\n present() {\n this.show = true;\n }\n\n dismiss() {\n this.show = false;\n }\n\n getId() {\n return this.localUId;\n }\n\n willDismiss() {\n const { defaultPrevented } = this.showChanged.emit(false);\n return !defaultPrevented;\n }\n\n willPresent() {\n const { defaultPrevented } = this.showChanged.emit(true);\n return !defaultPrevented;\n }\n\n get dropdownItems() {\n return Array.from(this.hostElement.querySelectorAll('ix-dropdown-item'));\n }\n\n get slotElement() {\n return this.hostElement.shadowRoot.querySelector('slot');\n }\n\n private disposeClickListener?: () => void;\n private disposeKeyListener?: () => void;\n\n private addEventListenersFor() {\n this.disposeClickListener?.();\n this.disposeKeyListener?.();\n\n const toggleController = () => {\n if (!this.isPresent()) {\n dropdownController.present(this);\n } else {\n dropdownController.dismiss(this);\n }\n\n dropdownController.dismissOthers(this.getId());\n };\n\n this.disposeClickListener = addDisposableEventListener(\n this.triggerElement,\n 'click',\n (event: PointerEvent) => {\n if (!event.defaultPrevented) {\n toggleController();\n }\n }\n );\n\n this.triggerElement?.setAttribute(\n 'data-ix-dropdown-trigger',\n this.localUId\n );\n }\n\n /** @internal */\n @Method()\n async discoverSubmenu() {\n this.triggerElement?.dispatchEvent(\n new CustomEvent('ix-assign-sub-menu', {\n bubbles: true,\n composed: true,\n cancelable: true,\n detail: this.localUId,\n })\n );\n }\n\n private registerKeyListener() {\n if (!this.triggerElement) {\n return;\n }\n\n this.disposeKeyListener = addDisposableEventListener(\n this.triggerElement,\n 'keydown',\n (event: KeyboardEvent) => {\n if (event.key !== 'ArrowDown') {\n return;\n }\n\n if (document.activeElement !== this.triggerElement) {\n return;\n }\n\n dropdownController.present(this);\n\n setTimeout(() => {\n this.focusDropdownItem(0);\n });\n }\n );\n }\n\n private async registerListener(\n element: string | HTMLElement | Promise<HTMLElement>\n ) {\n this.triggerElement = await this.resolveElement(element);\n if (this.triggerElement) {\n this.addEventListenersFor();\n this.discoverSubmenu();\n }\n }\n\n private async resolveElement(\n element: string | HTMLElement | Promise<HTMLElement>\n ) {\n const el = await this.findElement(element);\n\n return this.checkForSubmenuAnchor(el);\n }\n\n private async checkForSubmenuAnchor(element: Element) {\n if (!element) {\n return null;\n }\n\n if (hasDropdownItemWrapperImplemented(element)) {\n const dropdownItem = await element.getDropdownItemElement();\n dropdownItem.isSubMenu = true;\n this.hostElement.style.zIndex = `var(--theme-z-index-dropdown)`;\n }\n\n if (element.tagName === 'IX-DROPDOWN-ITEM') {\n (element as HTMLIxDropdownItemElement).isSubMenu = true;\n this.hostElement.style.zIndex = `var(--theme-z-index-dropdown)`;\n }\n\n return element;\n }\n\n private findElement(\n element: string | HTMLElement | Promise<HTMLElement>\n ): Promise<Element> {\n if (element instanceof Promise) {\n return element;\n }\n\n if (typeof element === 'object') {\n return Promise.resolve(element);\n }\n\n if (typeof element != 'string') {\n return;\n }\n\n const selector = `#${element}`;\n return new Promise((resolve) => {\n if (document.querySelector(selector)) {\n return resolve(document.querySelector(selector));\n }\n\n const observer = new MutationObserver(() => {\n if (document.querySelector(selector)) {\n resolve(document.querySelector(selector));\n observer.disconnect();\n }\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n });\n }\n\n @Watch('show')\n async changedShow(newShow: boolean) {\n if (newShow) {\n this.anchorElement = await (this.anchor\n ? this.resolveElement(this.anchor)\n : this.resolveElement(this.trigger));\n\n if (this.anchorElement) {\n this.applyDropdownPosition();\n }\n\n this.arrowFocusController = new ArrowFocusController(\n this.dropdownItems,\n this.dropdownRef,\n this.focusDropdownItemBind\n );\n\n this.itemObserver.observe(this.dropdownRef, {\n childList: true,\n subtree: true,\n });\n\n this.registerKeyListener();\n } else {\n this.arrowFocusController.disconnect();\n this.itemObserver.disconnect();\n this.disposeKeyListener?.();\n }\n }\n\n @Watch('trigger')\n changedTrigger(newTriggerValue: string | HTMLElement | Promise<HTMLElement>) {\n this.registerListener(newTriggerValue);\n }\n\n private isAnchorSubmenu(): boolean {\n if (!hasDropdownItemWrapperImplemented(this.anchorElement)) {\n // Is no official dropdown-item, but check if any dropdown-item\n // is placed somewhere up the DOM\n return !!this.anchorElement?.closest('ix-dropdown-item');\n }\n\n return true;\n }\n\n private async applyDropdownPosition() {\n if (!this.show) {\n return;\n }\n if (!this.anchorElement) {\n return;\n }\n if (!this.dropdownRef) {\n return;\n }\n const isSubmenu = this.isAnchorSubmenu();\n\n let positionConfig: Partial<ComputePositionConfig> = {\n strategy: this.positioningStrategy,\n middleware: [],\n };\n\n if (!this.suppressAutomaticPlacement) {\n positionConfig.middleware.push(\n flip({ fallbackStrategy: 'initialPlacement' })\n );\n }\n\n positionConfig.placement = isSubmenu ? 'right-start' : this.placement;\n\n positionConfig.middleware = [\n ...positionConfig.middleware,\n inline(),\n shift(),\n ];\n\n if (this.offset) {\n positionConfig.middleware.push(offset(this.offset));\n }\n\n if (this.autoUpdateCleanup) {\n this.autoUpdateCleanup();\n this.autoUpdateCleanup = null;\n }\n\n this.autoUpdateCleanup = autoUpdate(\n this.anchorElement,\n this.dropdownRef,\n async () => {\n const computeResponse = await computePosition(\n this.anchorElement,\n this.dropdownRef,\n positionConfig\n );\n Object.assign(this.dropdownRef.style, {\n top: '0',\n left: '0',\n transform: `translate(${Math.round(computeResponse.x)}px,${Math.round(\n computeResponse.y\n )}px)`,\n });\n if (this.overwriteDropdownStyle) {\n const overwriteStyle = await this.overwriteDropdownStyle({\n dropdownRef: this.dropdownRef,\n triggerRef: this.triggerElement as HTMLElement,\n });\n\n Object.assign(this.dropdownRef.style, overwriteStyle);\n }\n },\n {\n ancestorResize: true,\n ancestorScroll: true,\n elementResize: true,\n }\n );\n }\n\n private focusDropdownItem(index: number) {\n requestAnimationFrame(() => {\n this.dropdownItems[index]?.shadowRoot.querySelector('button').focus();\n });\n }\n\n async componentDidLoad() {\n this.changedTrigger(this.trigger);\n }\n\n async componentDidRender() {\n await this.applyDropdownPosition();\n this.anchorElement = await (this.anchor\n ? this.resolveElement(this.anchor)\n : this.resolveElement(this.trigger));\n }\n\n private isTriggerElement(element: HTMLElement) {\n const trigger = !!element.hasAttribute('data-ix-dropdown-trigger');\n\n return trigger;\n }\n\n private onDropdownClick(event: PointerEvent) {\n const target = dropdownController.pathIncludesTrigger(event.composedPath());\n if (target) {\n event.preventDefault();\n\n if (this.isTriggerElement(target)) {\n return;\n }\n }\n\n if (this.closeBehavior === 'inside' || this.closeBehavior === 'both') {\n dropdownController.dismissAll([this.getId()], this.ignoreRelatedSubmenu);\n return;\n }\n\n dropdownController.dismissOthers(this.getId());\n }\n\n /**\n * Update position of dropdown\n */\n @Method()\n async updatePosition() {\n this.applyDropdownPosition();\n }\n\n render() {\n return (\n <Host\n data-ix-dropdown={this.localUId}\n ref={(ref) => (this.dropdownRef = ref)}\n class={{\n 'dropdown-menu': true,\n show: this.show,\n overflow: true,\n }}\n style={{\n margin: '0',\n minWidth: '0px',\n position: this.positioningStrategy,\n }}\n role=\"list\"\n onClick={(event: PointerEvent) => this.onDropdownClick(event)}\n >\n <div style={{ display: 'contents' }}>\n {this.header && <div class=\"dropdown-header\">{this.header}</div>}\n\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"placement.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"placement.js","sourceRoot":"","sources":["../../../src/components/dropdown/placement.ts"],"names":[],"mappings":"","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nexport declare const top: 'top';\nexport declare const bottom: 'bottom';\nexport declare const right: 'right';\nexport declare const left: 'left';\n\nexport type Alignment = 'start' | 'end';\nexport type Side = 'top' | 'right' | 'bottom' | 'left';\nexport type AlignedPlacement = `${Side}-${Alignment}`;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown-controller.spec.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"dropdown-controller.spec.js","sourceRoot":"","sources":["../../../../src/components/dropdown/test/dropdown-controller.spec.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAEL,iCAAiC,GAClC,MAAM,wBAAwB,CAAC;AAEhC,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,gBAAgB,GAAG,EAAyB,CAAC;QACnD,MAAM,cAAc,GAAG;YACrB,sBAAsB,EAAE,GAAG,EAAE,GAAE,CAAC;SACV,CAAC;QAEzB,MAAM,CAAC,iCAAiC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QAC5D,MAAM,CAAC,iCAAiC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACxE,MAAM,CAAC,iCAAiC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport {\n DropdownItemWrapper,\n hasDropdownItemWrapperImplemented,\n} from '../dropdown-controller';\n\ndescribe('dropdown-controller', () => {\n it('check wrapper interface implementation', () => {\n const noWrapperElement = {} as DropdownItemWrapper;\n const wrapperElement = {\n getDropdownItemElement: () => {},\n } as DropdownItemWrapper;\n\n expect(hasDropdownItemWrapperImplemented(null)).toBeFalsy();\n expect(hasDropdownItemWrapperImplemented(noWrapperElement)).toBeFalsy();\n expect(hasDropdownItemWrapperImplemented(wrapperElement)).toBeTruthy();\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown.ct.js","sourceRoot":"","sources":["../../../../../src/components/dropdown/test/dropdown.ct.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { ElementHandle, expect, Locator, Page } from '@playwright/test';\nimport { test, viewPorts } from '@utils/test';\n\nconst html = String.raw;\n\ntest('renders', async ({ mount, page }) => {\n await mount(`\n <ix-split-button label=\"Test 1\">\n <ix-dropdown-item>Test 1</ix-dropdown-item>\n </ix-split-button>\n\n <ix-split-button label=\"Test 2\">\n <ix-dropdown-item>Test 1</ix-dropdown-item>\n </ix-split-button>\n\n <ix-group header=\"Title\" sub-header=\"Subtitle\">\n <ix-dropdown slot=\"dropdown\">\n <ix-dropdown-item label=\"Item 1\" icon=\"pin\" />\n <ix-dropdown-item label=\"Item 2\" icon=\"star\" />\n <ix-dropdown-item label=\"Item 3\" icon=\"heart\" />\n <ix-dropdown-item label=\"Item 4\" icon=\"cogwheel\" />\n </ix-dropdown>\n </ix-group>\n\n <ix-group header=\"Title\" sub-header=\"Subtitle\">\n <ix-dropdown slot=\"dropdown\">\n <ix-dropdown-item label=\"Item 1\" icon=\"pin\" />\n <ix-dropdown-item label=\"Item 2\" icon=\"star\" />\n <ix-dropdown-item label=\"Item 3\" icon=\"heart\" />\n <ix-dropdown-item label=\"Item 4\" icon=\"cogwheel\" />\n </ix-dropdown>\n </ix-group>\n `);\n\n const sb1 = page.locator('ix-split-button').nth(0);\n const sb2 = page.locator('ix-split-button').nth(1);\n\n const g1 = page.locator('ix-group').nth(0);\n const g2 = page.locator('ix-group').nth(1);\n\n const sb1Dropdown = sb1.locator('ix-dropdown');\n const sb2Dropdown = sb2.locator('ix-dropdown');\n const g1Dropdown = g1.locator('ix-dropdown');\n const g2Dropdown = g2.locator('ix-dropdown');\n\n await sb1.locator('ix-icon-button').first().click();\n\n await expectToBeVisible(\n [sb1Dropdown, sb2Dropdown, g1Dropdown, g2Dropdown],\n 0\n );\n\n await sb2.locator('ix-icon-button').first().click();\n\n await expectToBeVisible(\n [sb1Dropdown, sb2Dropdown, g1Dropdown, g2Dropdown],\n 1\n );\n\n await g2.locator('ix-icon-button').click();\n\n await expectToBeVisible(\n [sb1Dropdown, sb2Dropdown, g1Dropdown, g2Dropdown],\n 3\n );\n});\n\nfunction expectToBeVisible(elements: Locator[], index: number) {\n return Promise.all(\n elements.map(async (element, i) => {\n let ef = expect(element);\n if (i !== index) {\n ef = ef.not;\n }\n await ef.toBeVisible();\n })\n );\n}\n\ntest('trigger toggles', async ({ mount, page }) => {\n await mount(`<ix-button id=\"trigger\">Open</ix-button>\n <ix-dropdown trigger=\"trigger\" trigger-toggles=\"true\">\n <ix-dropdown-item label=\"Item 1\"></ix-dropdown-item>\n <ix-dropdown-item label=\"Item 2\"></ix-dropdown-item>\n </ix-dropdown>\n `);\n\n await page.locator('ix-button').click();\n const dropdown = page.locator('.dropdown-menu');\n await expect(dropdown).toHaveClass(/show/);\n await expect(dropdown).toBeVisible();\n\n await page.locator('ix-button').click();\n const after = page.locator('.dropdown-menu');\n await expect(after).not.toHaveClass(/show/);\n await expect(dropdown).not.toBeVisible();\n});\n\ntest.describe('Close behavior', () => {\n function mountDropdown(\n mount: (selector: string) => Promise<ElementHandle<HTMLElement>>,\n config: {\n closeBehavior: string | boolean;\n }\n ) {\n const closeBehavior = config.closeBehavior\n ? `close-behavior=\"${config.closeBehavior}\"`\n : '';\n\n return mount(`\n <ix-button id=\"level-1\">Trigger</ix-button>\n <ix-dropdown id=\"dropdown-level-1\" trigger=\"level-1\" ${closeBehavior}>\n <ix-dropdown-item>Item 1</ix-dropdown-item>\n <ix-dropdown-item>Item 2</ix-dropdown-item>\n <ix-dropdown-item>Item 3</ix-dropdown-item>\n </ix-dropdown>\n `);\n }\n\n let triggerButton: Locator;\n let dropdownLevel1: Locator;\n\n let dropdownLevel1_Item1: Locator;\n\n function setupTest(page: Page) {\n triggerButton = page.locator('#level-1');\n dropdownLevel1 = page.locator('#dropdown-level-1');\n\n dropdownLevel1_Item1 = dropdownLevel1\n .locator('ix-dropdown-item')\n .getByText('Item 1');\n }\n\n test(' = both', async ({ mount, page }) => {\n await mountDropdown(mount, {\n closeBehavior: 'both',\n });\n\n setupTest(page);\n\n await triggerButton.click();\n await expect(dropdownLevel1).toBeVisible();\n\n await page.mouse.click(400, 200);\n await expect(dropdownLevel1).not.toBeVisible();\n\n await triggerButton.click();\n await expect(dropdownLevel1).toBeVisible();\n\n await dropdownLevel1_Item1.click();\n await expect(dropdownLevel1).not.toBeVisible();\n });\n\n test(' = inside', async ({ mount, page }) => {\n await mountDropdown(mount, {\n closeBehavior: 'inside',\n });\n\n setupTest(page);\n\n await triggerButton.click();\n await expect(dropdownLevel1).toBeVisible();\n\n await page.mouse.click(400, 200);\n await expect(dropdownLevel1).toBeVisible();\n\n await dropdownLevel1_Item1.click();\n await expect(dropdownLevel1).not.toBeVisible();\n });\n\n test(' = outside', async ({ mount, page }) => {\n await mountDropdown(mount, {\n closeBehavior: 'outside',\n });\n\n setupTest(page);\n\n await triggerButton.click();\n await expect(dropdownLevel1).toBeVisible();\n\n await page.mouse.click(400, 200);\n await expect(dropdownLevel1).not.toBeVisible();\n\n await triggerButton.click();\n await expect(dropdownLevel1).toBeVisible();\n\n await dropdownLevel1_Item1.click();\n await expect(dropdownLevel1).toBeVisible();\n });\n\n test(' = false', async ({ mount, page }) => {\n await mountDropdown(mount, {\n // Disable close behavior\n closeBehavior: false,\n });\n\n // Have to be provided via javascript, otherwise the component parse the value as a string.\n await page\n .locator('ix-dropdown')\n .evaluate((dropdown: any) => (dropdown.closeBehavior = false));\n\n setupTest(page);\n\n await triggerButton.click();\n await expect(dropdownLevel1).toBeVisible();\n\n await page.mouse.click(400, 200);\n await expect(dropdownLevel1).toBeVisible();\n\n await triggerButton.click();\n await expect(dropdownLevel1).not.toBeVisible();\n\n await triggerButton.click();\n await expect(dropdownLevel1).toBeVisible();\n\n await dropdownLevel1_Item1.click({\n force: true,\n });\n await expect(dropdownLevel1).toBeVisible();\n });\n});\n\ntest.describe('Nested dropdowns 1/3', () => {\n function mountDropdown(\n mount: (selector: string) => Promise<ElementHandle<HTMLElement>>,\n config?: {\n closeBehavior: string | boolean;\n }\n ) {\n return mount(html`\n <ix-button id=\"trigger-dropdown-1\">Trigger 1</ix-button>\n <ix-dropdown\n close-behavior=\"${config?.closeBehavior ?? 'both'}\"\n id=\"dropdown-1\"\n trigger=\"trigger-dropdown-1\"\n >\n <ix-dropdown-item id=\"trigger-dropdown-2\">Item 1</ix-dropdown-item>\n <ix-dropdown-item>Item 2</ix-dropdown-item>\n <ix-dropdown-item id=\"trigger-dropdown-3\">Item 3</ix-dropdown-item>\n </ix-dropdown>\n\n <ix-dropdown trigger=\"trigger-dropdown-2\" id=\"dropdown-2\">\n <ix-dropdown-item>Item 1.1</ix-dropdown-item>\n <ix-dropdown-item>Item 1.2</ix-dropdown-item>\n <ix-dropdown-item>Item 1.3</ix-dropdown-item>\n </ix-dropdown>\n\n <ix-dropdown trigger=\"trigger-dropdown-3\" id=\"dropdown-3\">\n <ix-dropdown-item>Item 3.1</ix-dropdown-item>\n <ix-dropdown-item>Item 3.2</ix-dropdown-item>\n <ix-dropdown-item id=\"trigger-dropdown-4\">Item 3.3</ix-dropdown-item>\n </ix-dropdown>\n\n <ix-dropdown trigger=\"trigger-dropdown-4\" id=\"dropdown-4\">\n <ix-dropdown-item>Item 3.3.1</ix-dropdown-item>\n <ix-dropdown-item>Item 3.3.2</ix-dropdown-item>\n <ix-dropdown-item>Item 3.3.3</ix-dropdown-item>\n </ix-dropdown>\n\n <ix-button id=\"trigger-dropdown-5\">Trigger 5</ix-button>\n <ix-dropdown id=\"dropdown-5\" trigger=\"trigger-dropdown-5\">\n <ix-dropdown-item>Item 1</ix-dropdown-item>\n <ix-dropdown-item>Item 2</ix-dropdown-item>\n <ix-dropdown-item id=\"trigger-dropdown-6\">Item 3</ix-dropdown-item>\n </ix-dropdown>\n\n <ix-dropdown id=\"dropdown-6\" trigger=\"trigger-dropdown-6\">\n <ix-dropdown-item>Item 1</ix-dropdown-item>\n <ix-dropdown-item>Item 2</ix-dropdown-item>\n <ix-dropdown-item>Item 3</ix-dropdown-item>\n </ix-dropdown>\n `);\n }\n\n let triggerDropdown1: Locator;\n let triggerDropdown2: Locator;\n let triggerDropdown3: Locator;\n let triggerDropdown4: Locator;\n let triggerDropdown5: Locator;\n\n let dropdown1: Locator;\n let dropdown2: Locator;\n let dropdown3: Locator;\n let dropdown4: Locator;\n let dropdown5: Locator;\n\n function setupTest(page: Page) {\n triggerDropdown1 = page.locator('#trigger-dropdown-1');\n triggerDropdown2 = page.locator('#trigger-dropdown-2');\n triggerDropdown3 = page.locator('#trigger-dropdown-3');\n triggerDropdown4 = page.locator('#trigger-dropdown-4');\n triggerDropdown5 = page.locator('#trigger-dropdown-5');\n\n dropdown1 = page.locator('#dropdown-1');\n dropdown2 = page.locator('#dropdown-2');\n dropdown3 = page.locator('#dropdown-3');\n dropdown4 = page.locator('#dropdown-4');\n dropdown5 = page.locator('#dropdown-5');\n }\n\n test('close neighbor sub menu', async ({ mount, page }) => {\n await mountDropdown(mount);\n setupTest(page);\n\n await triggerDropdown1.click();\n await expect(dropdown1).toBeVisible();\n\n await triggerDropdown3.click();\n await expect(dropdown3).toBeVisible();\n\n await triggerDropdown5.click();\n await expect(dropdown5).toBeVisible();\n await expect(dropdown1).not.toBeVisible();\n await expect(dropdown3).not.toBeVisible();\n });\n\n test('close assigned submenu', async ({ mount, page }) => {\n await mountDropdown(mount);\n\n setupTest(page);\n\n await triggerDropdown1.click();\n await expect(dropdown1).toBeVisible();\n\n await triggerDropdown2.click();\n await expect(dropdown2).toBeVisible();\n\n await triggerDropdown3.click();\n await expect(dropdown2).not.toBeVisible();\n await expect(dropdown3).toBeVisible();\n\n await triggerDropdown4.click();\n await expect(dropdown4).toBeVisible();\n\n await triggerDropdown3.click();\n await expect(dropdown3).not.toBeVisible();\n await expect(dropdown4).not.toBeVisible();\n });\n\n test.describe('close by Escape with close behavior', () => {\n test(' = both', async ({ mount, page }) => {\n await mountDropdown(mount);\n\n setupTest(page);\n\n await triggerDropdown1.click();\n await expect(dropdown1).toBeVisible();\n\n await triggerDropdown2.click();\n await expect(dropdown2).toBeVisible();\n\n await triggerDropdown3.click();\n await expect(dropdown2).not.toBeVisible();\n await expect(dropdown3).toBeVisible();\n\n await triggerDropdown4.click();\n await expect(dropdown4).toBeVisible();\n\n await page.keyboard.press('Escape');\n\n await expect(dropdown1).not.toBeVisible();\n await expect(dropdown2).not.toBeVisible();\n await expect(dropdown3).not.toBeVisible();\n await expect(dropdown4).not.toBeVisible();\n });\n\n test(' = inside', async ({ mount, page }) => {\n await mountDropdown(mount, {\n closeBehavior: 'inside',\n });\n\n setupTest(page);\n\n await triggerDropdown1.click();\n await expect(dropdown1).toBeVisible();\n\n await triggerDropdown2.click();\n await expect(dropdown2).toBeVisible();\n\n await triggerDropdown3.click();\n await expect(dropdown2).not.toBeVisible();\n await expect(dropdown3).toBeVisible();\n\n await triggerDropdown4.click();\n await expect(dropdown4).toBeVisible();\n\n await page.keyboard.press('Escape');\n\n await expect(dropdown1).not.toBeVisible();\n await expect(dropdown2).not.toBeVisible();\n await expect(dropdown3).not.toBeVisible();\n await expect(dropdown4).not.toBeVisible();\n });\n\n test(' = outside', async ({ mount, page }) => {\n await mountDropdown(mount, { closeBehavior: 'outside' });\n\n setupTest(page);\n\n await triggerDropdown1.click();\n await expect(dropdown1).toBeVisible();\n\n await triggerDropdown2.click();\n await expect(dropdown2).toBeVisible();\n\n await triggerDropdown3.click();\n await expect(dropdown2).not.toBeVisible();\n await expect(dropdown3).toBeVisible();\n\n await triggerDropdown4.click();\n await expect(dropdown4).toBeVisible();\n\n await page.keyboard.press('Escape');\n\n await expect(dropdown1).not.toBeVisible();\n await expect(dropdown2).not.toBeVisible();\n await expect(dropdown3).not.toBeVisible();\n await expect(dropdown4).not.toBeVisible();\n });\n\n test(' = false', async ({ mount, page }) => {\n await mountDropdown(mount, { closeBehavior: false });\n\n setupTest(page);\n\n await triggerDropdown1.click();\n await expect(dropdown1).toBeVisible();\n\n await triggerDropdown2.click();\n await expect(dropdown2).toBeVisible();\n\n await triggerDropdown3.click();\n await expect(dropdown2).not.toBeVisible();\n await expect(dropdown3).toBeVisible();\n\n await triggerDropdown4.click();\n await expect(dropdown4).toBeVisible();\n\n await page.keyboard.press('Escape');\n\n await expect(dropdown1).not.toBeVisible();\n await expect(dropdown2).not.toBeVisible();\n await expect(dropdown3).not.toBeVisible();\n await expect(dropdown4).not.toBeVisible();\n });\n });\n});\n\ntest.describe('nested dropdown 2/3', () => {\n const button1Text = 'Triggerbutton1';\n const button2Text = 'Triggerbutton2';\n\n test.beforeEach(async ({ mount }) => {\n await mount(`\n <button id=\"trigger1\">${button1Text}</button>\n <ix-dropdown trigger=\"trigger1\">\n <button id=\"trigger2\">${button2Text}</button>\n <ix-dropdown trigger=\"trigger2\">\n <ix-dropdown-item label=\"Item 1\"></ix-dropdown-item>\n </ix-dropdown>\n </ix-dropdown>\n `);\n });\n\n test('can open nested dropdown', async ({ page }) => {\n await page.getByText(button1Text).click();\n await page.getByText(button2Text).click();\n const nestedDropdownItem = page.locator('ix-dropdown-item');\n\n await expect(nestedDropdownItem).toHaveClass(/hydrated/);\n });\n});\n\ntest.describe('nested dropdown 3/3', () => {\n test.beforeEach(async ({ mount }) => {\n await mount(`\n <ix-button id=\"trigger-dropdown-1\">Trigger 1</ix-button>\n <ix-dropdown id=\"dropdown-1\" close-behavior=\"outside\" trigger=\"trigger-dropdown-1\">\n <ix-dropdown-item id=\"trigger-dropdown-2\">Item 1</ix-dropdown-item>\n <ix-dropdown-item>Item 2</ix-dropdown-item>\n </ix-dropdown>\n\n <ix-dropdown trigger=\"trigger-dropdown-2\" id=\"dropdown-2\" close-behavior=\"inside\">\n <ix-dropdown-item>Item 1.1</ix-dropdown-item>\n <ix-dropdown-item>Item 1.2</ix-dropdown-item>\n <ix-dropdown-item>Item 1.3</ix-dropdown-item>\n </ix-dropdown>\n `);\n });\n\n test('close child on parent dismiss', async ({ page }) => {\n const triggerDropdown1 = page.locator('#trigger-dropdown-1');\n const triggerDropdown2 = page.locator('#trigger-dropdown-2');\n\n const dropdown1 = page.locator('#dropdown-1');\n const dropdown2 = page.locator('#dropdown-2');\n\n await triggerDropdown1.click();\n await triggerDropdown2.click();\n await triggerDropdown1.click();\n\n await expect(dropdown1).not.toBeVisible();\n await expect(dropdown2).not.toBeVisible();\n });\n});\n\ntest('Nested dropdowns within application-header', async ({ mount, page }) => {\n await mount(html`\n <ix-application-header>\n <ix-dropdown-button label=\"Trigger\">\n <ix-dropdown-item label=\"MainItem 1\"></ix-dropdown-item>\n <ix-dropdown-item label=\"MainItem 2\"></ix-dropdown-item>\n <ix-dropdown-item label=\"MainItem 3\" id=\"submenu-01\"></ix-dropdown-item>\n </ix-dropdown-button>\n </ix-application-header>\n <ix-dropdown id=\"submenu\" trigger=\"submenu-01\">\n <ix-dropdown-item>SubMenuItem 1</ix-dropdown-item>\n <ix-dropdown-item>SubMenuItem 2</ix-dropdown-item>\n <ix-dropdown-item>SubMenuItem 3</ix-dropdown-item>\n <ix-dropdown-item>SubMenuItem 4</ix-dropdown-item>\n </ix-dropdown>\n `);\n await page.setViewportSize(viewPorts.sm);\n await page.waitForTimeout(500);\n\n const header = page.locator('ix-application-header');\n await expect(header).toBeVisible();\n\n const overflowTrigger = header.getByRole('button', { name: 'More Menu' });\n await overflowTrigger.click();\n\n const dropdownButton = header.locator('ix-dropdown-button');\n await dropdownButton.locator('ix-button').click();\n\n const dropdownOfDropdownButton = dropdownButton.locator('ix-dropdown');\n await expect(dropdownOfDropdownButton).toBeVisible();\n\n const submenuTrigger = page\n .locator('ix-dropdown-item')\n .getByText('MainItem 3');\n await expect(submenuTrigger).toBeVisible();\n await submenuTrigger.click();\n\n const submenuDropdown = page.locator('#submenu');\n\n await expect(submenuDropdown).toBeVisible();\n\n const subMenuItem = submenuDropdown\n .locator('ix-dropdown-item')\n .getByText('SubMenuItem 3');\n\n await subMenuItem.click();\n\n await expect(submenuDropdown).not.toBeVisible();\n await expect(dropdownOfDropdownButton).not.toBeVisible();\n});\n\ntest.describe('resolve during element connect', () => {\n test.beforeEach(async ({ mount }) => {\n await mount(`\n <ix-button id=\"trigger\">Open</ix-button>\n <ix-dropdown trigger=\"trigger\">\n <ix-dropdown-item label=\"Item 1\" icon=\"print\"></ix-dropdown-item>\n <ix-dropdown-item label=\"Item 2\"></ix-dropdown-item>\n <ix-dropdown-item>Custom</ix-dropdown-item>\n </ix-dropdown>\n `);\n });\n\n test('attach and detach from dom', async ({ page }) => {\n await page.evaluate(() => {\n const dropdown = document.querySelector('ix-dropdown');\n const mount = document.querySelector('#mount');\n mount.removeChild(dropdown);\n mount.append(dropdown);\n });\n\n const dropdown = page.locator('ix-dropdown');\n await page.locator('ix-button').first().click();\n\n await expect(dropdown).toBeVisible();\n });\n\n test('add element within runtime', async ({ page }) => {\n await page.evaluate(async () => {\n const divElement = document.createElement('div');\n const mount = document.querySelector('#mount');\n mount.appendChild(divElement);\n });\n\n const dropdown = page.locator('ix-dropdown');\n await page.locator('ix-button').first().click();\n\n await expect(dropdown).toBeVisible();\n });\n});\n\ntest.describe('A11y', () => {\n test.describe('Keyboard navigation', () => {\n test.beforeEach(async ({ page, mount }) => {\n await mount(`\n <ix-button id=\"trigger\">Open</ix-button>\n <ix-dropdown trigger=\"trigger\">\n <ix-dropdown-item label=\"Item 1\" icon=\"print\"></ix-dropdown-item>\n <ix-dropdown-item label=\"Item 2\"></ix-dropdown-item>\n <ix-dropdown-item>Custom</ix-dropdown-item>\n </ix-dropdown>\n `);\n\n await page.locator('#trigger').click();\n });\n\n test.describe('ArrowDown', () => {\n test('trigger -> first item', async ({ page }) => {\n await page.keyboard.press('ArrowDown');\n await page.waitForTimeout(100);\n const item = await page.locator('ix-dropdown-item').first();\n await expect(item).toBeFocused();\n });\n\n test('first item -> second item', async ({ page }) => {\n await page.keyboard.press('ArrowDown');\n await page.waitForTimeout(100);\n await page.keyboard.press('ArrowDown');\n await page.waitForTimeout(100);\n const item = await page.locator('ix-dropdown-item').nth(1);\n await expect(item).toBeFocused();\n });\n });\n\n test.describe('ArrowUp', () => {\n test('second item -> fist item', async ({ page }) => {\n await page.keyboard.press('ArrowDown');\n await page.waitForTimeout(100);\n await page.keyboard.press('ArrowDown');\n await page.waitForTimeout(100);\n await page.keyboard.press('ArrowUp');\n const item = await page.locator('ix-dropdown-item').first();\n await expect(item).toBeFocused();\n });\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"dropdown.ct.js","sourceRoot":"","sources":["../../../../src/components/dropdown/test/dropdown.ct.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { ElementHandle, expect, Locator, Page } from '@playwright/test';\nimport { test, viewPorts } from '@utils/test';\n\nconst html = String.raw;\n\ntest('renders', async ({ mount, page }) => {\n await mount(`\n <ix-split-button label=\"Test 1\">\n <ix-dropdown-item>Test 1</ix-dropdown-item>\n </ix-split-button>\n\n <ix-split-button label=\"Test 2\">\n <ix-dropdown-item>Test 1</ix-dropdown-item>\n </ix-split-button>\n\n <ix-group header=\"Title\" sub-header=\"Subtitle\">\n <ix-dropdown slot=\"dropdown\">\n <ix-dropdown-item label=\"Item 1\" icon=\"pin\" />\n <ix-dropdown-item label=\"Item 2\" icon=\"star\" />\n <ix-dropdown-item label=\"Item 3\" icon=\"heart\" />\n <ix-dropdown-item label=\"Item 4\" icon=\"cogwheel\" />\n </ix-dropdown>\n </ix-group>\n\n <ix-group header=\"Title\" sub-header=\"Subtitle\">\n <ix-dropdown slot=\"dropdown\">\n <ix-dropdown-item label=\"Item 1\" icon=\"pin\" />\n <ix-dropdown-item label=\"Item 2\" icon=\"star\" />\n <ix-dropdown-item label=\"Item 3\" icon=\"heart\" />\n <ix-dropdown-item label=\"Item 4\" icon=\"cogwheel\" />\n </ix-dropdown>\n </ix-group>\n `);\n\n const sb1 = page.locator('ix-split-button').nth(0);\n const sb2 = page.locator('ix-split-button').nth(1);\n\n const g1 = page.locator('ix-group').nth(0);\n const g2 = page.locator('ix-group').nth(1);\n\n const sb1Dropdown = sb1.locator('ix-dropdown');\n const sb2Dropdown = sb2.locator('ix-dropdown');\n const g1Dropdown = g1.locator('ix-dropdown');\n const g2Dropdown = g2.locator('ix-dropdown');\n\n await sb1.locator('ix-icon-button').first().click();\n\n await expectToBeVisible(\n [sb1Dropdown, sb2Dropdown, g1Dropdown, g2Dropdown],\n 0\n );\n\n await sb2.locator('ix-icon-button').first().click();\n\n await expectToBeVisible(\n [sb1Dropdown, sb2Dropdown, g1Dropdown, g2Dropdown],\n 1\n );\n\n await g2.locator('ix-icon-button').click();\n\n await expectToBeVisible(\n [sb1Dropdown, sb2Dropdown, g1Dropdown, g2Dropdown],\n 3\n );\n});\n\nfunction expectToBeVisible(elements: Locator[], index: number) {\n return Promise.all(\n elements.map(async (element, i) => {\n let ef = expect(element);\n if (i !== index) {\n ef = ef.not;\n }\n await ef.toBeVisible();\n })\n );\n}\n\ntest('trigger toggles', async ({ mount, page }) => {\n await mount(`<ix-button id=\"trigger\">Open</ix-button>\n <ix-dropdown trigger=\"trigger\" trigger-toggles=\"true\">\n <ix-dropdown-item label=\"Item 1\"></ix-dropdown-item>\n <ix-dropdown-item label=\"Item 2\"></ix-dropdown-item>\n </ix-dropdown>\n `);\n\n await page.locator('ix-button').click();\n const dropdown = page.locator('.dropdown-menu');\n await expect(dropdown).toHaveClass(/show/);\n await expect(dropdown).toBeVisible();\n\n await page.locator('ix-button').click();\n const after = page.locator('.dropdown-menu');\n await expect(after).not.toHaveClass(/show/);\n await expect(dropdown).not.toBeVisible();\n});\n\ntest.describe('Close behavior', () => {\n function mountDropdown(\n mount: (selector: string) => Promise<ElementHandle<HTMLElement>>,\n config: {\n closeBehavior: string | boolean;\n }\n ) {\n const closeBehavior = config.closeBehavior\n ? `close-behavior=\"${config.closeBehavior}\"`\n : '';\n\n return mount(`\n <ix-button id=\"level-1\">Trigger</ix-button>\n <ix-dropdown id=\"dropdown-level-1\" trigger=\"level-1\" ${closeBehavior}>\n <ix-dropdown-item>Item 1</ix-dropdown-item>\n <ix-dropdown-item>Item 2</ix-dropdown-item>\n <ix-dropdown-item>Item 3</ix-dropdown-item>\n </ix-dropdown>\n `);\n }\n\n let triggerButton: Locator;\n let dropdownLevel1: Locator;\n\n let dropdownLevel1_Item1: Locator;\n\n function setupTest(page: Page) {\n triggerButton = page.locator('#level-1');\n dropdownLevel1 = page.locator('#dropdown-level-1');\n\n dropdownLevel1_Item1 = dropdownLevel1\n .locator('ix-dropdown-item')\n .getByText('Item 1');\n }\n\n test(' = both', async ({ mount, page }) => {\n await mountDropdown(mount, {\n closeBehavior: 'both',\n });\n\n setupTest(page);\n\n await triggerButton.click();\n await expect(dropdownLevel1).toBeVisible();\n\n await page.mouse.click(400, 200);\n await expect(dropdownLevel1).not.toBeVisible();\n\n await triggerButton.click();\n await expect(dropdownLevel1).toBeVisible();\n\n await dropdownLevel1_Item1.click();\n await expect(dropdownLevel1).not.toBeVisible();\n });\n\n test(' = inside', async ({ mount, page }) => {\n await mountDropdown(mount, {\n closeBehavior: 'inside',\n });\n\n setupTest(page);\n\n await triggerButton.click();\n await expect(dropdownLevel1).toBeVisible();\n\n await page.mouse.click(400, 200);\n await expect(dropdownLevel1).toBeVisible();\n\n await dropdownLevel1_Item1.click();\n await expect(dropdownLevel1).not.toBeVisible();\n });\n\n test(' = outside', async ({ mount, page }) => {\n await mountDropdown(mount, {\n closeBehavior: 'outside',\n });\n\n setupTest(page);\n\n await triggerButton.click();\n await expect(dropdownLevel1).toBeVisible();\n\n await page.mouse.click(400, 200);\n await expect(dropdownLevel1).not.toBeVisible();\n\n await triggerButton.click();\n await expect(dropdownLevel1).toBeVisible();\n\n await dropdownLevel1_Item1.click();\n await expect(dropdownLevel1).toBeVisible();\n });\n\n test(' = false', async ({ mount, page }) => {\n await mountDropdown(mount, {\n // Disable close behavior\n closeBehavior: false,\n });\n\n // Have to be provided via javascript, otherwise the component parse the value as a string.\n await page\n .locator('ix-dropdown')\n .evaluate((dropdown: any) => (dropdown.closeBehavior = false));\n\n setupTest(page);\n\n await triggerButton.click();\n await expect(dropdownLevel1).toBeVisible();\n\n await page.mouse.click(400, 200);\n await expect(dropdownLevel1).toBeVisible();\n\n await triggerButton.click();\n await expect(dropdownLevel1).not.toBeVisible();\n\n await triggerButton.click();\n await expect(dropdownLevel1).toBeVisible();\n\n await dropdownLevel1_Item1.click({\n force: true,\n });\n await expect(dropdownLevel1).toBeVisible();\n });\n});\n\ntest.describe('Nested dropdowns 1/3', () => {\n function mountDropdown(\n mount: (selector: string) => Promise<ElementHandle<HTMLElement>>,\n config?: {\n closeBehavior: string | boolean;\n }\n ) {\n return mount(html`\n <ix-button id=\"trigger-dropdown-1\">Trigger 1</ix-button>\n <ix-dropdown\n close-behavior=\"${config?.closeBehavior ?? 'both'}\"\n id=\"dropdown-1\"\n trigger=\"trigger-dropdown-1\"\n >\n <ix-dropdown-item id=\"trigger-dropdown-2\">Item 1</ix-dropdown-item>\n <ix-dropdown-item>Item 2</ix-dropdown-item>\n <ix-dropdown-item id=\"trigger-dropdown-3\">Item 3</ix-dropdown-item>\n </ix-dropdown>\n\n <ix-dropdown trigger=\"trigger-dropdown-2\" id=\"dropdown-2\">\n <ix-dropdown-item>Item 1.1</ix-dropdown-item>\n <ix-dropdown-item>Item 1.2</ix-dropdown-item>\n <ix-dropdown-item>Item 1.3</ix-dropdown-item>\n </ix-dropdown>\n\n <ix-dropdown trigger=\"trigger-dropdown-3\" id=\"dropdown-3\">\n <ix-dropdown-item>Item 3.1</ix-dropdown-item>\n <ix-dropdown-item>Item 3.2</ix-dropdown-item>\n <ix-dropdown-item id=\"trigger-dropdown-4\">Item 3.3</ix-dropdown-item>\n </ix-dropdown>\n\n <ix-dropdown trigger=\"trigger-dropdown-4\" id=\"dropdown-4\">\n <ix-dropdown-item>Item 3.3.1</ix-dropdown-item>\n <ix-dropdown-item>Item 3.3.2</ix-dropdown-item>\n <ix-dropdown-item>Item 3.3.3</ix-dropdown-item>\n </ix-dropdown>\n\n <ix-button id=\"trigger-dropdown-5\">Trigger 5</ix-button>\n <ix-dropdown id=\"dropdown-5\" trigger=\"trigger-dropdown-5\">\n <ix-dropdown-item>Item 1</ix-dropdown-item>\n <ix-dropdown-item>Item 2</ix-dropdown-item>\n <ix-dropdown-item id=\"trigger-dropdown-6\">Item 3</ix-dropdown-item>\n </ix-dropdown>\n\n <ix-dropdown id=\"dropdown-6\" trigger=\"trigger-dropdown-6\">\n <ix-dropdown-item>Item 1</ix-dropdown-item>\n <ix-dropdown-item>Item 2</ix-dropdown-item>\n <ix-dropdown-item>Item 3</ix-dropdown-item>\n </ix-dropdown>\n `);\n }\n\n let triggerDropdown1: Locator;\n let triggerDropdown2: Locator;\n let triggerDropdown3: Locator;\n let triggerDropdown4: Locator;\n let triggerDropdown5: Locator;\n\n let dropdown1: Locator;\n let dropdown2: Locator;\n let dropdown3: Locator;\n let dropdown4: Locator;\n let dropdown5: Locator;\n\n function setupTest(page: Page) {\n triggerDropdown1 = page.locator('#trigger-dropdown-1');\n triggerDropdown2 = page.locator('#trigger-dropdown-2');\n triggerDropdown3 = page.locator('#trigger-dropdown-3');\n triggerDropdown4 = page.locator('#trigger-dropdown-4');\n triggerDropdown5 = page.locator('#trigger-dropdown-5');\n\n dropdown1 = page.locator('#dropdown-1');\n dropdown2 = page.locator('#dropdown-2');\n dropdown3 = page.locator('#dropdown-3');\n dropdown4 = page.locator('#dropdown-4');\n dropdown5 = page.locator('#dropdown-5');\n }\n\n test('close neighbor sub menu', async ({ mount, page }) => {\n await mountDropdown(mount);\n setupTest(page);\n\n await triggerDropdown1.click();\n await expect(dropdown1).toBeVisible();\n\n await triggerDropdown3.click();\n await expect(dropdown3).toBeVisible();\n\n await triggerDropdown5.click();\n await expect(dropdown5).toBeVisible();\n await expect(dropdown1).not.toBeVisible();\n await expect(dropdown3).not.toBeVisible();\n });\n\n test('close assigned submenu', async ({ mount, page }) => {\n await mountDropdown(mount);\n\n setupTest(page);\n\n await triggerDropdown1.click();\n await expect(dropdown1).toBeVisible();\n\n await triggerDropdown2.click();\n await expect(dropdown2).toBeVisible();\n\n await triggerDropdown3.click();\n await expect(dropdown2).not.toBeVisible();\n await expect(dropdown3).toBeVisible();\n\n await triggerDropdown4.click();\n await expect(dropdown4).toBeVisible();\n\n await triggerDropdown3.click();\n await expect(dropdown3).not.toBeVisible();\n await expect(dropdown4).not.toBeVisible();\n });\n\n test.describe('close by Escape with close behavior', () => {\n test(' = both', async ({ mount, page }) => {\n await mountDropdown(mount);\n\n setupTest(page);\n\n await triggerDropdown1.click();\n await expect(dropdown1).toBeVisible();\n\n await triggerDropdown2.click();\n await expect(dropdown2).toBeVisible();\n\n await triggerDropdown3.click();\n await expect(dropdown2).not.toBeVisible();\n await expect(dropdown3).toBeVisible();\n\n await triggerDropdown4.click();\n await expect(dropdown4).toBeVisible();\n\n await page.keyboard.press('Escape');\n\n await expect(dropdown1).not.toBeVisible();\n await expect(dropdown2).not.toBeVisible();\n await expect(dropdown3).not.toBeVisible();\n await expect(dropdown4).not.toBeVisible();\n });\n\n test(' = inside', async ({ mount, page }) => {\n await mountDropdown(mount, {\n closeBehavior: 'inside',\n });\n\n setupTest(page);\n\n await triggerDropdown1.click();\n await expect(dropdown1).toBeVisible();\n\n await triggerDropdown2.click();\n await expect(dropdown2).toBeVisible();\n\n await triggerDropdown3.click();\n await expect(dropdown2).not.toBeVisible();\n await expect(dropdown3).toBeVisible();\n\n await triggerDropdown4.click();\n await expect(dropdown4).toBeVisible();\n\n await page.keyboard.press('Escape');\n\n await expect(dropdown1).not.toBeVisible();\n await expect(dropdown2).not.toBeVisible();\n await expect(dropdown3).not.toBeVisible();\n await expect(dropdown4).not.toBeVisible();\n });\n\n test(' = outside', async ({ mount, page }) => {\n await mountDropdown(mount, { closeBehavior: 'outside' });\n\n setupTest(page);\n\n await triggerDropdown1.click();\n await expect(dropdown1).toBeVisible();\n\n await triggerDropdown2.click();\n await expect(dropdown2).toBeVisible();\n\n await triggerDropdown3.click();\n await expect(dropdown2).not.toBeVisible();\n await expect(dropdown3).toBeVisible();\n\n await triggerDropdown4.click();\n await expect(dropdown4).toBeVisible();\n\n await page.keyboard.press('Escape');\n\n await expect(dropdown1).not.toBeVisible();\n await expect(dropdown2).not.toBeVisible();\n await expect(dropdown3).not.toBeVisible();\n await expect(dropdown4).not.toBeVisible();\n });\n\n test(' = false', async ({ mount, page }) => {\n await mountDropdown(mount, { closeBehavior: false });\n\n setupTest(page);\n\n await triggerDropdown1.click();\n await expect(dropdown1).toBeVisible();\n\n await triggerDropdown2.click();\n await expect(dropdown2).toBeVisible();\n\n await triggerDropdown3.click();\n await expect(dropdown2).not.toBeVisible();\n await expect(dropdown3).toBeVisible();\n\n await triggerDropdown4.click();\n await expect(dropdown4).toBeVisible();\n\n await page.keyboard.press('Escape');\n\n await expect(dropdown1).not.toBeVisible();\n await expect(dropdown2).not.toBeVisible();\n await expect(dropdown3).not.toBeVisible();\n await expect(dropdown4).not.toBeVisible();\n });\n });\n});\n\ntest.describe('nested dropdown 2/3', () => {\n const button1Text = 'Triggerbutton1';\n const button2Text = 'Triggerbutton2';\n\n test.beforeEach(async ({ mount }) => {\n await mount(`\n <button id=\"trigger1\">${button1Text}</button>\n <ix-dropdown trigger=\"trigger1\">\n <button id=\"trigger2\">${button2Text}</button>\n <ix-dropdown trigger=\"trigger2\">\n <ix-dropdown-item label=\"Item 1\"></ix-dropdown-item>\n </ix-dropdown>\n </ix-dropdown>\n `);\n });\n\n test('can open nested dropdown', async ({ page }) => {\n await page.getByText(button1Text).click();\n await page.getByText(button2Text).click();\n const nestedDropdownItem = page.locator('ix-dropdown-item');\n\n await expect(nestedDropdownItem).toHaveClass(/hydrated/);\n });\n});\n\ntest.describe('nested dropdown 3/3', () => {\n test.beforeEach(async ({ mount }) => {\n await mount(`\n <ix-button id=\"trigger-dropdown-1\">Trigger 1</ix-button>\n <ix-dropdown id=\"dropdown-1\" close-behavior=\"outside\" trigger=\"trigger-dropdown-1\">\n <ix-dropdown-item id=\"trigger-dropdown-2\">Item 1</ix-dropdown-item>\n <ix-dropdown-item>Item 2</ix-dropdown-item>\n </ix-dropdown>\n\n <ix-dropdown trigger=\"trigger-dropdown-2\" id=\"dropdown-2\" close-behavior=\"inside\">\n <ix-dropdown-item>Item 1.1</ix-dropdown-item>\n <ix-dropdown-item>Item 1.2</ix-dropdown-item>\n <ix-dropdown-item>Item 1.3</ix-dropdown-item>\n </ix-dropdown>\n `);\n });\n\n test('close child on parent dismiss', async ({ page }) => {\n const triggerDropdown1 = page.locator('#trigger-dropdown-1');\n const triggerDropdown2 = page.locator('#trigger-dropdown-2');\n\n const dropdown1 = page.locator('#dropdown-1');\n const dropdown2 = page.locator('#dropdown-2');\n\n await triggerDropdown1.click();\n await triggerDropdown2.click();\n await triggerDropdown1.click();\n\n await expect(dropdown1).not.toBeVisible();\n await expect(dropdown2).not.toBeVisible();\n });\n});\n\ntest('Nested dropdowns within application-header', async ({ mount, page }) => {\n await mount(html`\n <ix-application-header>\n <ix-dropdown-button label=\"Trigger\">\n <ix-dropdown-item label=\"MainItem 1\"></ix-dropdown-item>\n <ix-dropdown-item label=\"MainItem 2\"></ix-dropdown-item>\n <ix-dropdown-item label=\"MainItem 3\" id=\"submenu-01\"></ix-dropdown-item>\n </ix-dropdown-button>\n </ix-application-header>\n <ix-dropdown id=\"submenu\" trigger=\"submenu-01\">\n <ix-dropdown-item>SubMenuItem 1</ix-dropdown-item>\n <ix-dropdown-item>SubMenuItem 2</ix-dropdown-item>\n <ix-dropdown-item>SubMenuItem 3</ix-dropdown-item>\n <ix-dropdown-item>SubMenuItem 4</ix-dropdown-item>\n </ix-dropdown>\n `);\n await page.setViewportSize(viewPorts.sm);\n await page.waitForTimeout(500);\n\n const header = page.locator('ix-application-header');\n await expect(header).toBeVisible();\n\n const overflowTrigger = header.getByRole('button', { name: 'More Menu' });\n await overflowTrigger.click();\n\n const dropdownButton = header.locator('ix-dropdown-button');\n await dropdownButton.locator('ix-button').click();\n\n const dropdownOfDropdownButton = dropdownButton.locator('ix-dropdown');\n await expect(dropdownOfDropdownButton).toBeVisible();\n\n const submenuTrigger = page\n .locator('ix-dropdown-item')\n .getByText('MainItem 3');\n await expect(submenuTrigger).toBeVisible();\n await submenuTrigger.click();\n\n const submenuDropdown = page.locator('#submenu');\n\n await expect(submenuDropdown).toBeVisible();\n\n const subMenuItem = submenuDropdown\n .locator('ix-dropdown-item')\n .getByText('SubMenuItem 3');\n\n await subMenuItem.click();\n\n await expect(submenuDropdown).not.toBeVisible();\n await expect(dropdownOfDropdownButton).not.toBeVisible();\n});\n\ntest.describe('resolve during element connect', () => {\n test.beforeEach(async ({ mount }) => {\n await mount(`\n <ix-button id=\"trigger\">Open</ix-button>\n <ix-dropdown trigger=\"trigger\">\n <ix-dropdown-item label=\"Item 1\" icon=\"print\"></ix-dropdown-item>\n <ix-dropdown-item label=\"Item 2\"></ix-dropdown-item>\n <ix-dropdown-item>Custom</ix-dropdown-item>\n </ix-dropdown>\n `);\n });\n\n test('attach and detach from dom', async ({ page }) => {\n await page.evaluate(() => {\n const dropdown = document.querySelector('ix-dropdown');\n const mount = document.querySelector('#mount');\n mount.removeChild(dropdown);\n mount.append(dropdown);\n });\n\n const dropdown = page.locator('ix-dropdown');\n await page.locator('ix-button').first().click();\n\n await expect(dropdown).toBeVisible();\n });\n\n test('add element within runtime', async ({ page }) => {\n await page.evaluate(async () => {\n const divElement = document.createElement('div');\n const mount = document.querySelector('#mount');\n mount.appendChild(divElement);\n });\n\n const dropdown = page.locator('ix-dropdown');\n await page.locator('ix-button').first().click();\n\n await expect(dropdown).toBeVisible();\n });\n});\n\ntest.describe('A11y', () => {\n test.describe('Keyboard navigation', () => {\n test.beforeEach(async ({ page, mount }) => {\n await mount(`\n <ix-button id=\"trigger\">Open</ix-button>\n <ix-dropdown trigger=\"trigger\">\n <ix-dropdown-item label=\"Item 1\" icon=\"print\"></ix-dropdown-item>\n <ix-dropdown-item label=\"Item 2\"></ix-dropdown-item>\n <ix-dropdown-item>Custom</ix-dropdown-item>\n </ix-dropdown>\n `);\n\n await page.locator('#trigger').click();\n });\n\n test.describe('ArrowDown', () => {\n test('trigger -> first item', async ({ page }) => {\n await page.keyboard.press('ArrowDown');\n await page.waitForTimeout(100);\n const item = await page.locator('ix-dropdown-item').first();\n await expect(item).toBeFocused();\n });\n\n test('first item -> second item', async ({ page }) => {\n await page.keyboard.press('ArrowDown');\n await page.waitForTimeout(100);\n await page.keyboard.press('ArrowDown');\n await page.waitForTimeout(100);\n const item = await page.locator('ix-dropdown-item').nth(1);\n await expect(item).toBeFocused();\n });\n });\n\n test.describe('ArrowUp', () => {\n test('second item -> fist item', async ({ page }) => {\n await page.keyboard.press('ArrowDown');\n await page.waitForTimeout(100);\n await page.keyboard.press('ArrowDown');\n await page.waitForTimeout(100);\n await page.keyboard.press('ArrowUp');\n const item = await page.locator('ix-dropdown-item').first();\n await expect(item).toBeFocused();\n });\n });\n });\n});\n"]}
|
|
@@ -59,7 +59,7 @@ export class DropdownButton {
|
|
|
59
59
|
"mutable": false,
|
|
60
60
|
"complexType": {
|
|
61
61
|
"original": "DropdownButtonVariant",
|
|
62
|
-
"resolved": "\"primary\" | \"secondary\"",
|
|
62
|
+
"resolved": "\"danger\" | \"primary\" | \"secondary\"",
|
|
63
63
|
"references": {
|
|
64
64
|
"DropdownButtonVariant": {
|
|
65
65
|
"location": "local",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown-button.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"dropdown-button.js","sourceRoot":"","sources":["../../../src/components/dropdown-button/dropdown-button.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAMzE;;GAEG;AAMH,MAAM,OAAO,cAAc;;uBAMgB,SAAS;uBAKhC,KAAK;qBAKP,KAAK;wBAKF,KAAK;;;6BAgByC,MAAM;;;;IAW/D,WAAW;QACjB,OAAO,CACL,WACE,KAAK,EAAE;gBACL,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,EAAE;gBACvB,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK,SAAS;gBACnC,SAAS,EAAE,IAAI,CAAC,OAAO,KAAK,WAAW;gBACvC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,GACI,CACR,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,CACL,EAAC,IAAI,qDACH,KAAK,EAAE;gBACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,EACD,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;gBACX,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;YAC5B,CAAC;YAED,4DAAK,KAAK,EAAC,iBAAiB,IACzB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CACZ,iBACE,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,SAAS,EAAC,OAAO;gBAEjB,WAAK,KAAK,EAAE,SAAS;oBAClB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CACX,eACE,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,IAAI,EAAC,IAAI,EACT,KAAK,EAAE,eAAe,GACb,CACZ,CAAC,CAAC,CAAC,IAAI;oBACR,WAAK,KAAK,EAAE,cAAc,IAAG,IAAI,CAAC,KAAK,CAAO;oBAC9C,eAAS,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAC,IAAI,GAAW,CACrD,CACI,CACb,CAAC,CAAC,CAAC,CACF;gBACE,sBACE,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,GACP;gBACjB,IAAI,CAAC,WAAW,EAAE,CACf,CACP,CACG;YAEN,oEACE,KAAK,EAAC,UAAU,EAChB,OAAO,EAAE,IAAI,CAAC,cAAc,EAC5B,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,aAAa,EAAE,IAAI,CAAC,aAAa;gBAEjC,8DAAa,CACD,CACT,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { Component, Element, h, Host, Prop, State } from '@stencil/core';\nimport { ButtonVariant } from '../button/button';\nimport { AlignedPlacement } from '../dropdown/placement';\n\nexport type DropdownButtonVariant = ButtonVariant;\n\n/**\n * @since 1.3.0\n */\n@Component({\n tag: 'ix-dropdown-button',\n styleUrl: 'dropdown-button.scss',\n shadow: true,\n})\nexport class DropdownButton {\n @Element() hostElement!: HTMLIxDropdownButtonElement;\n\n /**\n * Button variant\n */\n @Prop() variant: DropdownButtonVariant = 'primary';\n\n /**\n * Outline button\n */\n @Prop() outline = false;\n\n /**\n * Button with no background or outline\n */\n @Prop() ghost = false;\n\n /**\n * Disable button\n */\n @Prop() disabled = false;\n\n /**\n * Set label\n */\n @Prop() label: string;\n\n /**\n * Button icon\n */\n @Prop() icon: string;\n\n /**\n * Controls if the dropdown will be closed in response to a click event depending on the position of the event relative to the dropdown.\n * @since 2.1.0\n */\n @Prop() closeBehavior: 'inside' | 'outside' | 'both' | boolean = 'both';\n\n /**\n * Placement of the dropdown\n *\n * @since 2.0.0\n */\n @Prop() placement: AlignedPlacement;\n\n @State() dropdownAnchor!: HTMLElement;\n\n private getTriangle() {\n return (\n <div\n class={{\n triangle: true,\n hide: this.label !== '',\n primary: this.variant === 'primary',\n secondary: this.variant === 'secondary',\n ghost: this.ghost,\n outline: this.outline,\n disabled: this.disabled,\n }}\n ></div>\n );\n }\n\n render() {\n return (\n <Host\n class={{\n disabled: this.disabled,\n }}\n ref={(ref) => {\n this.dropdownAnchor = ref;\n }}\n >\n <div class=\"dropdown-button\">\n {this.label ? (\n <ix-button\n variant={this.variant}\n outline={this.outline}\n ghost={this.ghost}\n disabled={this.disabled}\n alignment=\"start\"\n >\n <div class={'content'}>\n {this.icon ? (\n <ix-icon\n name={this.icon}\n size=\"24\"\n class={'dropdown-icon'}\n ></ix-icon>\n ) : null}\n <div class={'button-label'}>{this.label}</div>\n <ix-icon name={'chevron-down-small'} size=\"24\"></ix-icon>\n </div>\n </ix-button>\n ) : (\n <div>\n <ix-icon-button\n icon={this.icon}\n variant={this.variant}\n outline={this.outline}\n ghost={this.ghost}\n disabled={this.disabled}\n ></ix-icon-button>\n {this.getTriangle()}\n </div>\n )}\n </div>\n\n <ix-dropdown\n class=\"dropdown\"\n trigger={this.dropdownAnchor}\n placement={this.placement}\n closeBehavior={this.closeBehavior}\n >\n <slot></slot>\n </ix-dropdown>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown-header.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"dropdown-header.js","sourceRoot":"","sources":["../../../src/components/dropdown-header/dropdown-header.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEzD;;GAEG;AAMH,MAAM,OAAO,cAAc;;;;IAMzB,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,sEAAe,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,IAC5D,IAAI,CAAC,KAAK,CACG,CACX,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { Component, h, Host, Prop } from '@stencil/core';\n\n/**\n * @since 2.0.0\n */\n@Component({\n tag: 'ix-dropdown-header',\n styleUrl: 'dropdown-header.scss',\n shadow: true,\n})\nexport class DropdownHeader {\n /**\n * Display name of the header\n */\n @Prop() label: string;\n\n render() {\n return (\n <Host>\n <ix-typography class={'category-text'} variant={'default-title'}>\n {this.label}\n </ix-typography>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown-item.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"dropdown-item.js","sourceRoot":"","sources":["../../../src/components/dropdown-item/dropdown-item.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,SAAS,EACT,OAAO,EACP,KAAK,EAEL,CAAC,EACD,IAAI,EACJ,MAAM,EACN,IAAI,GACL,MAAM,eAAe,CAAC;AAQvB,MAAM,OAAO,YAAY;;;;qBAgBP,KAAK;wBAKF,KAAK;uBAKN,KAAK;yBAGH,KAAK;+BAGC,KAAK;;IAK/B;;OAEG;IAEH,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAED,gBAAgB;IAEhB,KAAK,CAAC,sBAAsB;QAC1B,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEO,UAAU;QAChB,OAAO,CACL,IAAI,CAAC,KAAK,KAAK,SAAS;YACxB,IAAI,CAAC,WAAW,CAAC,SAAS,KAAK,EAAE;YACjC,IAAI,CAAC,IAAI,KAAK,SAAS,CACxB,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,CACL,EAAC,IAAI,qDACH,KAAK,EAAE;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE;gBAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,OAAO,EAAE,IAAI,CAAC,SAAS;aACxB,EACD,IAAI,EAAC,UAAU;YAEf,+DACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE;oBACL,eAAe,EAAE,IAAI;oBACrB,kBAAkB,EAAE,IAAI,CAAC,eAAe;iBACzC,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE;gBAElC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CACvB,WAAK,KAAK,EAAC,uBAAuB,IAC/B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CACd,eACE,KAAK,EAAC,WAAW,EACjB,IAAI,EAAE,cAAc,EACpB,IAAI,EAAC,IAAI,GACA,CACZ,CAAC,CAAC,CAAC,IAAI,CACJ,CACP,CAAC,CAAC,CAAC,IAAI;gBACP,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CACX,eAAS,KAAK,EAAC,oBAAoB,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAY,CAChE,CAAC,CAAC,CAAC,IAAI;gBACR,4DAAK,KAAK,EAAC,oBAAoB;oBAC5B,IAAI,CAAC,KAAK;oBACX,8DAAa,CACT;gBACL,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAChB,eACE,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE,cAAc,GACZ,CACZ,CAAC,CAAC,CAAC,IAAI,CACD,CACJ,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n} from '@stencil/core';\nimport { DropdownItemWrapper } from '../dropdown/dropdown-controller';\n\n@Component({\n tag: 'ix-dropdown-item',\n styleUrl: 'dropdown-item.scss',\n shadow: true,\n})\nexport class DropdownItem implements DropdownItemWrapper {\n @Element() hostElement!: HTMLIxDropdownItemElement;\n\n /**\n * Label of dropdown item\n */\n @Prop() label: string;\n\n /**\n * Icon of dropdown item\n */\n @Prop() icon: string;\n\n /**\n * Display hover state\n */\n @Prop() hover = false;\n\n /**\n * Disable item and remove event listeners\n */\n @Prop() disabled = false;\n\n /**\n * Whether the item is checked or not. If true a checkmark will mark the item as checked.\n */\n @Prop() checked = false;\n\n /** @internal */\n @Prop() isSubMenu = false;\n\n /** @internal */\n @Prop() suppressChecked = false;\n\n /** @internal */\n @Event() itemClick: EventEmitter<HTMLIxDropdownItemElement>;\n\n /**\n * Internal usage only\n */\n @Method()\n async emitItemClick() {\n this.itemClick.emit(this.hostElement);\n }\n\n /** @internal */\n @Method()\n async getDropdownItemElement() {\n return this.hostElement;\n }\n\n private isIconOnly() {\n return (\n this.label === undefined &&\n this.hostElement.innerText === '' &&\n this.icon !== undefined\n );\n }\n\n render() {\n return (\n <Host\n class={{\n hover: this.hover,\n 'icon-only': this.isIconOnly(),\n disabled: this.disabled,\n submenu: this.isSubMenu,\n }}\n role=\"listitem\"\n >\n <button\n type=\"button\"\n tabIndex={0}\n class={{\n 'dropdown-item': true,\n 'no-checked-field': this.suppressChecked,\n }}\n onClick={() => this.emitItemClick()}\n >\n {!this.suppressChecked ? (\n <div class=\"dropdown-item-checked\">\n {this.checked ? (\n <ix-icon\n class=\"checkmark\"\n name={'single-check'}\n size=\"16\"\n ></ix-icon>\n ) : null}\n </div>\n ) : null}\n {this.icon ? (\n <ix-icon class=\"dropdown-item-icon\" name={this.icon}></ix-icon>\n ) : null}\n <div class=\"dropdown-item-text\">\n {this.label}\n <slot></slot>\n </div>\n {this.isSubMenu ? (\n <ix-icon\n name={'chevron-right-small'}\n class={'submenu-icon'}\n ></ix-icon>\n ) : null}\n </button>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown-quick-actions.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"dropdown-quick-actions.js","sourceRoot":"","sources":["../../../src/components/dropdown-quick-actions/dropdown-quick-actions.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEnD;;GAEG;AAMH,MAAM,OAAO,oBAAoB;IAC/B,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,8DAAa,CACR,CACR,CAAC;IACJ,CAAC;;;;;;;;;CACF","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { Component, h, Host } from '@stencil/core';\n\n/**\n * @since 1.4.0\n */\n@Component({\n tag: 'ix-dropdown-quick-actions',\n styleUrl: 'dropdown-quick-actions.scss',\n shadow: true,\n})\nexport class DropdownQuickActions {\n render() {\n return (\n <Host>\n <slot></slot>\n </Host>\n );\n }\n}\n"]}
|