wcs-core 7.1.0 → 7.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -11
- package/design-tokens/dist/sncf-groupe-root-scoped.css +590 -0
- package/design-tokens/dist/sncf-groupe.css +590 -0
- package/design-tokens/dist/sncf-groupe.json +10693 -0
- package/design-tokens/dist/sncf-holding-root-scoped.css +426 -425
- package/design-tokens/dist/sncf-holding.css +426 -425
- package/design-tokens/dist/sncf-holding.json +26 -3
- package/design-tokens/dist/sncf-reseau-root-scoped.css +465 -465
- package/design-tokens/dist/sncf-reseau.css +465 -465
- package/design-tokens/dist/sncf-voyageurs-root-scoped.css +383 -383
- package/design-tokens/dist/sncf-voyageurs.css +383 -383
- package/dist/cjs/{grid-pagination-e4f29c78.js → grid-pagination-4505d7b6.js} +25 -5
- package/dist/cjs/grid-pagination-4505d7b6.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/wcs-accordion-panel.cjs.entry.js +1 -1
- package/dist/cjs/wcs-accordion-panel.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-action-bar.cjs.entry.js +1 -1
- package/dist/cjs/wcs-action-bar.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-alert-drawer.cjs.entry.js +99 -0
- package/dist/cjs/wcs-alert-drawer.cjs.entry.js.map +1 -0
- package/dist/cjs/wcs-alert.cjs.entry.js +121 -0
- package/dist/cjs/wcs-alert.cjs.entry.js.map +1 -0
- package/dist/cjs/wcs-app.cjs.entry.js +3 -3
- package/dist/cjs/wcs-badge.cjs.entry.js +2 -2
- package/dist/cjs/wcs-badge.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-breadcrumb-item.cjs.entry.js +1 -1
- package/dist/cjs/wcs-breadcrumb-item.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-breadcrumb.cjs.entry.js +1 -1
- package/dist/cjs/wcs-button_2.cjs.entry.js +3 -8
- package/dist/cjs/wcs-button_2.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-card-body.cjs.entry.js +9 -2
- package/dist/cjs/wcs-card-body.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-card-content.cjs.entry.js +22 -0
- package/dist/cjs/wcs-card-content.cjs.entry.js.map +1 -0
- package/dist/cjs/wcs-card-footer.cjs.entry.js +22 -0
- package/dist/cjs/wcs-card-footer.cjs.entry.js.map +1 -0
- package/dist/cjs/wcs-card-header.cjs.entry.js +22 -0
- package/dist/cjs/wcs-card-header.cjs.entry.js.map +1 -0
- package/dist/cjs/wcs-card-media.cjs.entry.js +29 -0
- package/dist/cjs/wcs-card-media.cjs.entry.js.map +1 -0
- package/dist/cjs/wcs-card.cjs.entry.js +30 -2
- package/dist/cjs/wcs-card.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-checkbox.cjs.entry.js +1 -1
- package/dist/cjs/wcs-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-com-nav-category.cjs.entry.js +2 -2
- package/dist/cjs/wcs-com-nav-item.cjs.entry.js +1 -1
- package/dist/cjs/wcs-com-nav-submenu.cjs.entry.js +2 -2
- package/dist/cjs/wcs-com-nav.cjs.entry.js +2 -2
- package/dist/cjs/wcs-counter.cjs.entry.js +2 -12
- package/dist/cjs/wcs-counter.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-divider.cjs.entry.js +1 -1
- package/dist/cjs/wcs-dropdown-divider.cjs.entry.js +1 -1
- package/dist/cjs/wcs-dropdown-header.cjs.entry.js +1 -1
- package/dist/cjs/wcs-dropdown-item.cjs.entry.js +1 -1
- package/dist/cjs/wcs-dropdown.cjs.entry.js +1 -6
- package/dist/cjs/wcs-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-editable-field.cjs.entry.js +2 -2
- package/dist/cjs/wcs-editable-field.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-error_3.cjs.entry.js +3 -3
- package/dist/cjs/wcs-error_3.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-field-content.cjs.entry.js +1 -1
- package/dist/cjs/wcs-field-label.cjs.entry.js +1 -1
- package/dist/cjs/wcs-field.cjs.entry.js +1 -1
- package/dist/cjs/wcs-footer.cjs.entry.js +1 -1
- package/dist/cjs/wcs-galactic-menu.cjs.entry.js +2 -2
- package/dist/cjs/wcs-galactic.cjs.entry.js +1 -1
- package/dist/cjs/wcs-grid-column.cjs.entry.js +1 -1
- package/dist/cjs/wcs-grid-column.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-grid-custom-cell.cjs.entry.js +1 -1
- package/dist/cjs/wcs-grid-pagination.cjs.entry.js +1 -1
- package/dist/cjs/wcs-grid.cjs.entry.js +12 -4
- package/dist/cjs/wcs-grid.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-header.cjs.entry.js +2 -2
- package/dist/cjs/wcs-header.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-hint.cjs.entry.js +1 -1
- package/dist/cjs/wcs-horizontal-stepper.cjs.entry.js +1 -1
- package/dist/cjs/wcs-horizontal-stepper.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-icon.cjs.entry.js +1 -1
- package/dist/cjs/wcs-input.cjs.entry.js +2 -12
- package/dist/cjs/wcs-input.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-list-item-properties.cjs.entry.js +1 -1
- package/dist/cjs/wcs-list-item-property.cjs.entry.js +1 -1
- package/dist/cjs/wcs-list-item.cjs.entry.js +1 -1
- package/dist/cjs/wcs-mat-icon.cjs.entry.js +1 -1
- package/dist/cjs/wcs-mat-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-modal.cjs.entry.js +2 -2
- package/dist/cjs/wcs-modal.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-native-select.cjs.entry.js +2 -2
- package/dist/cjs/wcs-native-select.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-nav-item.cjs.entry.js +1 -1
- package/dist/cjs/wcs-nav.cjs.entry.js +2 -2
- package/dist/cjs/wcs-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-progress-bar.cjs.entry.js +3 -3
- package/dist/cjs/wcs-progress-bar.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-progress-radial.cjs.entry.js +2 -2
- package/dist/cjs/wcs-progress-radial.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/wcs-radio.cjs.entry.js +1 -1
- package/dist/cjs/wcs-radio.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-select_2.cjs.entry.js +18 -11
- package/dist/cjs/wcs-select_2.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-skeleton-circle.cjs.entry.js +1 -1
- package/dist/cjs/wcs-skeleton-rectangle.cjs.entry.js +1 -1
- package/dist/cjs/wcs-skeleton-text.cjs.entry.js +1 -1
- package/dist/cjs/wcs-switch.cjs.entry.js +1 -1
- package/dist/cjs/wcs-switch.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-tab.cjs.entry.js +1 -1
- package/dist/cjs/wcs-tabs.cjs.entry.js +149 -6
- package/dist/cjs/wcs-tabs.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-textarea.cjs.entry.js +1 -1
- package/dist/cjs/wcs-textarea.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/wcs-tooltip.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +6 -0
- package/dist/collection/components/accordion-panel/accordion-panel.js +1 -1
- package/dist/collection/components/accordion-panel/accordion-panel.js.map +1 -1
- package/dist/collection/components/action-bar/action-bar.js +1 -1
- package/dist/collection/components/action-bar/action-bar.js.map +1 -1
- package/dist/collection/components/alert/alert-interface.js +2 -0
- package/dist/collection/components/alert/alert-interface.js.map +1 -0
- package/dist/collection/components/alert/alert.css +115 -0
- package/dist/collection/components/alert/alert.e2e.js +142 -0
- package/dist/collection/components/alert/alert.e2e.js.map +1 -0
- package/dist/collection/components/alert/alert.js +257 -0
- package/dist/collection/components/alert/alert.js.map +1 -0
- package/dist/collection/components/alert-drawer/alert-drawer-interface.js +2 -0
- package/dist/collection/components/alert-drawer/alert-drawer-interface.js.map +1 -0
- package/dist/collection/components/alert-drawer/alert-drawer.css +103 -0
- package/dist/collection/components/alert-drawer/alert-drawer.e2e.js +111 -0
- package/dist/collection/components/alert-drawer/alert-drawer.e2e.js.map +1 -0
- package/dist/collection/components/alert-drawer/alert-drawer.js +237 -0
- package/dist/collection/components/alert-drawer/alert-drawer.js.map +1 -0
- package/dist/collection/components/app/app.js +3 -3
- package/dist/collection/components/badge/badge.css +4 -1
- package/dist/collection/components/badge/badge.js +1 -1
- package/dist/collection/components/breadcrumb/breadcrumb.js +1 -1
- package/dist/collection/components/breadcrumb-item/breadcrumb-item.js +1 -1
- package/dist/collection/components/breadcrumb-item/breadcrumb-item.js.map +1 -1
- package/dist/collection/components/button/button-interface.js +1 -5
- package/dist/collection/components/button/button-interface.js.map +1 -1
- package/dist/collection/components/button/button.css +2 -2
- package/dist/collection/components/button/button.js +1 -6
- package/dist/collection/components/button/button.js.map +1 -1
- package/dist/collection/components/card/card-interface.js.map +1 -1
- package/dist/collection/components/card/card.css +10 -0
- package/dist/collection/components/card/card.js +62 -1
- package/dist/collection/components/card/card.js.map +1 -1
- package/dist/collection/components/card-body/card-body.css +12 -1
- package/dist/collection/components/card-body/card-body.js +52 -2
- package/dist/collection/components/card-body/card-body.js.map +1 -1
- package/dist/collection/components/card-content/card-content.css +12 -0
- package/dist/collection/components/card-content/card-content.js +30 -0
- package/dist/collection/components/card-content/card-content.js.map +1 -0
- package/dist/collection/components/card-footer/card-footer.css +7 -0
- package/dist/collection/components/card-footer/card-footer.js +25 -0
- package/dist/collection/components/card-footer/card-footer.js.map +1 -0
- package/dist/collection/components/card-header/card-header.css +28 -0
- package/dist/collection/components/card-header/card-header.js +32 -0
- package/dist/collection/components/card-header/card-header.js.map +1 -0
- package/dist/collection/components/card-media/card-media.css +21 -0
- package/dist/collection/components/card-media/card-media.js +77 -0
- package/dist/collection/components/card-media/card-media.js.map +1 -0
- package/dist/collection/components/checkbox/checkbox.js +1 -1
- package/dist/collection/components/checkbox/checkbox.js.map +1 -1
- package/dist/collection/components/com-nav/com-nav.js +2 -2
- package/dist/collection/components/com-nav-category/com-nav-category.js +2 -2
- package/dist/collection/components/com-nav-item/com-nav-item.js +1 -1
- package/dist/collection/components/com-nav-submenu/com-nav-submenu.js +2 -2
- package/dist/collection/components/counter/counter-interface.js +1 -5
- package/dist/collection/components/counter/counter-interface.js.map +1 -1
- package/dist/collection/components/counter/counter.css +4 -1
- package/dist/collection/components/counter/counter.js +1 -6
- package/dist/collection/components/counter/counter.js.map +1 -1
- package/dist/collection/components/divider/divider.js +1 -1
- package/dist/collection/components/dropdown/dropdown.js +2 -7
- package/dist/collection/components/dropdown/dropdown.js.map +1 -1
- package/dist/collection/components/dropdown-divider/dropdown-divider.js +1 -1
- package/dist/collection/components/dropdown-header/dropdown-header.js +1 -1
- package/dist/collection/components/dropdown-item/dropdown-item.js +1 -1
- package/dist/collection/components/editable-field/editable-field.css +3 -0
- package/dist/collection/components/editable-field/editable-field.js +1 -1
- package/dist/collection/components/error/error.js +1 -1
- package/dist/collection/components/error/error.js.map +1 -1
- package/dist/collection/components/field/field.js +1 -1
- package/dist/collection/components/field-content/field-content.js +1 -1
- package/dist/collection/components/field-label/field-label.js +1 -1
- package/dist/collection/components/footer/footer.js +1 -1
- package/dist/collection/components/form-field/form-field.js +1 -1
- package/dist/collection/components/form-field/form-field.js.map +1 -1
- package/dist/collection/components/galactic/galactic.js +1 -1
- package/dist/collection/components/galactic-menu/galactic-menu.js +2 -2
- package/dist/collection/components/grid/grid.js +30 -5
- package/dist/collection/components/grid/grid.js.map +1 -1
- package/dist/collection/components/grid-column/grid-column.js +3 -3
- package/dist/collection/components/grid-column/grid-column.js.map +1 -1
- package/dist/collection/components/grid-custom-cell/grid-custom-cell.js +1 -1
- package/dist/collection/components/grid-pagination/grid-pagination-arrow.js +2 -2
- package/dist/collection/components/grid-pagination/grid-pagination-arrow.js.map +1 -1
- package/dist/collection/components/grid-pagination/grid-pagination.js +22 -2
- package/dist/collection/components/grid-pagination/grid-pagination.js.map +1 -1
- package/dist/collection/components/header/header.css +9 -1
- package/dist/collection/components/header/header.js +2 -1
- package/dist/collection/components/header/header.js.map +1 -1
- package/dist/collection/components/hint/hint.js +1 -1
- package/dist/collection/components/horizontal-stepper/horizontal-stepper.js +2 -2
- package/dist/collection/components/horizontal-stepper/horizontal-stepper.js.map +1 -1
- package/dist/collection/components/icon/icon.js +1 -1
- package/dist/collection/components/input/input-interface.js +1 -5
- package/dist/collection/components/input/input-interface.js.map +1 -1
- package/dist/collection/components/input/input.css +4 -0
- package/dist/collection/components/input/input.js +3 -8
- package/dist/collection/components/input/input.js.map +1 -1
- package/dist/collection/components/label/label.js +1 -1
- package/dist/collection/components/label/label.js.map +1 -1
- package/dist/collection/components/list-item/list-item.js +1 -1
- package/dist/collection/components/list-item-properties/list-item-properties.js +1 -1
- package/dist/collection/components/list-item-property/list-item-property.js +1 -1
- package/dist/collection/components/mat-icon/mat-icon.js +2 -2
- package/dist/collection/components/mat-icon/mat-icon.js.map +1 -1
- package/dist/collection/components/modal/modal-interface.js.map +1 -1
- package/dist/collection/components/modal/modal.css +1 -0
- package/dist/collection/components/modal/modal.js +2 -2
- package/dist/collection/components/modal/modal.js.map +1 -1
- package/dist/collection/components/native-select/native-select.css +2 -2
- package/dist/collection/components/native-select/native-select.js +2 -2
- package/dist/collection/components/native-select/native-select.js.map +1 -1
- package/dist/collection/components/nav/nav.css +2 -0
- package/dist/collection/components/nav/nav.js +1 -1
- package/dist/collection/components/nav-item/nav-item.js +1 -1
- package/dist/collection/components/progress-bar/progress-bar.css +2 -2
- package/dist/collection/components/progress-bar/progress-bar.js +3 -3
- package/dist/collection/components/progress-bar/progress-bar.js.map +1 -1
- package/dist/collection/components/progress-radial/progress-radial.js +3 -3
- package/dist/collection/components/progress-radial/progress-radial.js.map +1 -1
- package/dist/collection/components/radio/radio.js +1 -1
- package/dist/collection/components/radio/radio.js.map +1 -1
- package/dist/collection/components/radio-group/radio-group.js +1 -1
- package/dist/collection/components/select/select.css +1 -1
- package/dist/collection/components/select/select.js +16 -9
- package/dist/collection/components/select/select.js.map +1 -1
- package/dist/collection/components/select-option/select-option.js +2 -2
- package/dist/collection/components/select-option/select-option.js.map +1 -1
- package/dist/collection/components/skeleton-circle/skeleton-circle.js +1 -1
- package/dist/collection/components/skeleton-rectangle/skeleton-rectangle.js +1 -1
- package/dist/collection/components/skeleton-text/skeleton-text.js +1 -1
- package/dist/collection/components/spinner/spinner.js +1 -1
- package/dist/collection/components/switch/switch.js +1 -1
- package/dist/collection/components/switch/switch.js.map +1 -1
- package/dist/collection/components/tab/tab.js +1 -1
- package/dist/collection/components/tabs/tabs.css +104 -1
- package/dist/collection/components/tabs/tabs.js +180 -5
- package/dist/collection/components/tabs/tabs.js.map +1 -1
- package/dist/collection/components/textarea/textarea.js +3 -3
- package/dist/collection/components/textarea/textarea.js.map +1 -1
- package/dist/collection/components/tooltip/tooltip.js +2 -2
- package/dist/collection/components/tooltip/tooltip.js.map +1 -1
- package/dist/esm/{grid-pagination-976a86e9.js → grid-pagination-731726a6.js} +25 -5
- package/dist/esm/grid-pagination-731726a6.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/wcs-accordion-panel.entry.js +1 -1
- package/dist/esm/wcs-accordion-panel.entry.js.map +1 -1
- package/dist/esm/wcs-action-bar.entry.js +1 -1
- package/dist/esm/wcs-action-bar.entry.js.map +1 -1
- package/dist/esm/wcs-alert-drawer.entry.js +95 -0
- package/dist/esm/wcs-alert-drawer.entry.js.map +1 -0
- package/dist/esm/wcs-alert.entry.js +117 -0
- package/dist/esm/wcs-alert.entry.js.map +1 -0
- package/dist/esm/wcs-app.entry.js +3 -3
- package/dist/esm/wcs-badge.entry.js +2 -2
- package/dist/esm/wcs-badge.entry.js.map +1 -1
- package/dist/esm/wcs-breadcrumb-item.entry.js +1 -1
- package/dist/esm/wcs-breadcrumb-item.entry.js.map +1 -1
- package/dist/esm/wcs-breadcrumb.entry.js +1 -1
- package/dist/esm/wcs-button_2.entry.js +3 -8
- package/dist/esm/wcs-button_2.entry.js.map +1 -1
- package/dist/esm/wcs-card-body.entry.js +10 -3
- package/dist/esm/wcs-card-body.entry.js.map +1 -1
- package/dist/esm/wcs-card-content.entry.js +18 -0
- package/dist/esm/wcs-card-content.entry.js.map +1 -0
- package/dist/esm/wcs-card-footer.entry.js +18 -0
- package/dist/esm/wcs-card-footer.entry.js.map +1 -0
- package/dist/esm/wcs-card-header.entry.js +18 -0
- package/dist/esm/wcs-card-header.entry.js.map +1 -0
- package/dist/esm/wcs-card-media.entry.js +25 -0
- package/dist/esm/wcs-card-media.entry.js.map +1 -0
- package/dist/esm/wcs-card.entry.js +31 -3
- package/dist/esm/wcs-card.entry.js.map +1 -1
- package/dist/esm/wcs-checkbox.entry.js +1 -1
- package/dist/esm/wcs-checkbox.entry.js.map +1 -1
- package/dist/esm/wcs-com-nav-category.entry.js +2 -2
- package/dist/esm/wcs-com-nav-item.entry.js +1 -1
- package/dist/esm/wcs-com-nav-submenu.entry.js +2 -2
- package/dist/esm/wcs-com-nav.entry.js +2 -2
- package/dist/esm/wcs-counter.entry.js +2 -12
- package/dist/esm/wcs-counter.entry.js.map +1 -1
- package/dist/esm/wcs-divider.entry.js +1 -1
- package/dist/esm/wcs-dropdown-divider.entry.js +1 -1
- package/dist/esm/wcs-dropdown-header.entry.js +1 -1
- package/dist/esm/wcs-dropdown-item.entry.js +1 -1
- package/dist/esm/wcs-dropdown.entry.js +1 -6
- package/dist/esm/wcs-dropdown.entry.js.map +1 -1
- package/dist/esm/wcs-editable-field.entry.js +2 -2
- package/dist/esm/wcs-editable-field.entry.js.map +1 -1
- package/dist/esm/wcs-error_3.entry.js +3 -3
- package/dist/esm/wcs-error_3.entry.js.map +1 -1
- package/dist/esm/wcs-field-content.entry.js +1 -1
- package/dist/esm/wcs-field-label.entry.js +1 -1
- package/dist/esm/wcs-field.entry.js +1 -1
- package/dist/esm/wcs-footer.entry.js +1 -1
- package/dist/esm/wcs-galactic-menu.entry.js +2 -2
- package/dist/esm/wcs-galactic.entry.js +1 -1
- package/dist/esm/wcs-grid-column.entry.js +1 -1
- package/dist/esm/wcs-grid-column.entry.js.map +1 -1
- package/dist/esm/wcs-grid-custom-cell.entry.js +1 -1
- package/dist/esm/wcs-grid-pagination.entry.js +1 -1
- package/dist/esm/wcs-grid.entry.js +12 -4
- package/dist/esm/wcs-grid.entry.js.map +1 -1
- package/dist/esm/wcs-header.entry.js +2 -2
- package/dist/esm/wcs-header.entry.js.map +1 -1
- package/dist/esm/wcs-hint.entry.js +1 -1
- package/dist/esm/wcs-horizontal-stepper.entry.js +1 -1
- package/dist/esm/wcs-horizontal-stepper.entry.js.map +1 -1
- package/dist/esm/wcs-icon.entry.js +1 -1
- package/dist/esm/wcs-input.entry.js +2 -12
- package/dist/esm/wcs-input.entry.js.map +1 -1
- package/dist/esm/wcs-list-item-properties.entry.js +1 -1
- package/dist/esm/wcs-list-item-property.entry.js +1 -1
- package/dist/esm/wcs-list-item.entry.js +1 -1
- package/dist/esm/wcs-mat-icon.entry.js +1 -1
- package/dist/esm/wcs-mat-icon.entry.js.map +1 -1
- package/dist/esm/wcs-modal.entry.js +2 -2
- package/dist/esm/wcs-modal.entry.js.map +1 -1
- package/dist/esm/wcs-native-select.entry.js +2 -2
- package/dist/esm/wcs-native-select.entry.js.map +1 -1
- package/dist/esm/wcs-nav-item.entry.js +1 -1
- package/dist/esm/wcs-nav.entry.js +2 -2
- package/dist/esm/wcs-nav.entry.js.map +1 -1
- package/dist/esm/wcs-progress-bar.entry.js +3 -3
- package/dist/esm/wcs-progress-bar.entry.js.map +1 -1
- package/dist/esm/wcs-progress-radial.entry.js +2 -2
- package/dist/esm/wcs-progress-radial.entry.js.map +1 -1
- package/dist/esm/wcs-radio-group.entry.js +1 -1
- package/dist/esm/wcs-radio.entry.js +1 -1
- package/dist/esm/wcs-radio.entry.js.map +1 -1
- package/dist/esm/wcs-select_2.entry.js +18 -11
- package/dist/esm/wcs-select_2.entry.js.map +1 -1
- package/dist/esm/wcs-skeleton-circle.entry.js +1 -1
- package/dist/esm/wcs-skeleton-rectangle.entry.js +1 -1
- package/dist/esm/wcs-skeleton-text.entry.js +1 -1
- package/dist/esm/wcs-switch.entry.js +1 -1
- package/dist/esm/wcs-switch.entry.js.map +1 -1
- package/dist/esm/wcs-tab.entry.js +1 -1
- package/dist/esm/wcs-tabs.entry.js +149 -6
- package/dist/esm/wcs-tabs.entry.js.map +1 -1
- package/dist/esm/wcs-textarea.entry.js +1 -1
- package/dist/esm/wcs-textarea.entry.js.map +1 -1
- package/dist/esm/wcs-tooltip.entry.js +1 -1
- package/dist/esm/wcs-tooltip.entry.js.map +1 -1
- package/dist/esm/wcs.js +1 -1
- package/dist/types/components/alert/alert-interface.d.ts +11 -0
- package/dist/types/components/alert/alert.d.ts +79 -0
- package/dist/types/components/alert-drawer/alert-drawer-interface.d.ts +1 -0
- package/dist/types/components/alert-drawer/alert-drawer.d.ts +83 -0
- package/dist/types/components/button/button-interface.d.ts +1 -3
- package/dist/types/components/card/card-interface.d.ts +1 -0
- package/dist/types/components/card/card.d.ts +18 -1
- package/dist/types/components/card-body/card-body.d.ts +9 -0
- package/dist/types/components/card-content/card-content.d.ts +14 -0
- package/dist/types/components/card-footer/card-footer.d.ts +9 -0
- package/dist/types/components/card-header/card-header.d.ts +16 -0
- package/dist/types/components/card-media/card-media.d.ts +20 -0
- package/dist/types/components/counter/counter-interface.d.ts +1 -3
- package/dist/types/components/grid/grid.d.ts +4 -0
- package/dist/types/components/grid-pagination/grid-pagination.d.ts +6 -1
- package/dist/types/components/header/header.d.ts +1 -0
- package/dist/types/components/input/input-interface.d.ts +1 -3
- package/dist/types/components/mat-icon/mat-icon.d.ts +1 -1
- package/dist/types/components/modal/modal-interface.d.ts +2 -1
- package/dist/types/components/select/select.d.ts +7 -1
- package/dist/types/components/tabs/tabs.d.ts +55 -0
- package/dist/types/components.d.ts +571 -6
- package/dist/wcs/{p-9c012aae.entry.js → p-0424e545.entry.js} +2 -2
- package/dist/wcs/{p-50523b53.entry.js → p-0758d22e.entry.js} +2 -2
- package/dist/wcs/p-0b8157e7.entry.js +2 -0
- package/dist/wcs/p-0dd07842.entry.js +2 -0
- package/dist/wcs/p-0dd07842.entry.js.map +1 -0
- package/dist/wcs/{p-9554196c.entry.js → p-1244daa0.entry.js} +2 -2
- package/dist/wcs/{p-96bff8fe.entry.js → p-18fa39f4.entry.js} +2 -2
- package/dist/wcs/{p-96bff8fe.entry.js.map → p-18fa39f4.entry.js.map} +1 -1
- package/dist/wcs/p-1ba616c2.entry.js +2 -0
- package/dist/wcs/p-1ba616c2.entry.js.map +1 -0
- package/dist/wcs/p-1e7ea63c.entry.js +2 -0
- package/dist/wcs/p-1e7ea63c.entry.js.map +1 -0
- package/dist/wcs/p-1f593d06.entry.js +2 -0
- package/dist/wcs/p-1f593d06.entry.js.map +1 -0
- package/dist/wcs/{p-4dc52a25.entry.js → p-1fbe0328.entry.js} +2 -2
- package/dist/wcs/p-1fbe0328.entry.js.map +1 -0
- package/dist/wcs/{p-c2d35aa6.entry.js → p-204f2722.entry.js} +9 -9
- package/dist/wcs/p-204f2722.entry.js.map +1 -0
- package/dist/wcs/{p-37800935.entry.js → p-27b438c0.entry.js} +2 -2
- package/dist/wcs/{p-0ffdfc10.entry.js → p-352e1f99.entry.js} +2 -2
- package/dist/wcs/{p-3cfa1c4b.entry.js → p-367946fe.entry.js} +2 -2
- package/dist/wcs/p-3823f54e.entry.js +2 -0
- package/dist/wcs/{p-a7891233.entry.js → p-3a18535f.entry.js} +2 -2
- package/dist/wcs/p-41b946b2.entry.js +2 -0
- package/dist/wcs/p-41b946b2.entry.js.map +1 -0
- package/dist/wcs/{p-4661290b.entry.js → p-496115a5.entry.js} +2 -2
- package/dist/wcs/{p-4661290b.entry.js.map → p-496115a5.entry.js.map} +1 -1
- package/dist/wcs/p-4fb2d985.entry.js +2 -0
- package/dist/wcs/{p-9243a323.entry.js.map → p-4fb2d985.entry.js.map} +1 -1
- package/dist/wcs/{p-d895ffb4.entry.js → p-5202b323.entry.js} +2 -2
- package/dist/wcs/{p-ca8f3677.entry.js → p-53a395a9.entry.js} +2 -2
- package/dist/wcs/{p-ca8f3677.entry.js.map → p-53a395a9.entry.js.map} +1 -1
- package/dist/wcs/p-5607246c.entry.js +2 -0
- package/dist/wcs/p-5607246c.entry.js.map +1 -0
- package/dist/wcs/p-580b3142.entry.js +2 -0
- package/dist/wcs/p-5da0534f.entry.js +2 -0
- package/dist/wcs/p-5da0534f.entry.js.map +1 -0
- package/dist/wcs/p-5e8fff73.entry.js +2 -0
- package/dist/wcs/p-5e8fff73.entry.js.map +1 -0
- package/dist/wcs/{p-dddcd685.entry.js → p-622f7403.entry.js} +2 -2
- package/dist/wcs/p-637ec45a.entry.js +2 -0
- package/dist/wcs/p-637ec45a.entry.js.map +1 -0
- package/dist/wcs/p-6aededc6.entry.js +2 -0
- package/dist/wcs/p-6aededc6.entry.js.map +1 -0
- package/dist/wcs/p-6c6079ee.entry.js +2 -0
- package/dist/wcs/{p-76c92e22.entry.js.map → p-6c6079ee.entry.js.map} +1 -1
- package/dist/wcs/{p-e5c057c4.entry.js → p-781a956e.entry.js} +2 -2
- package/dist/wcs/p-7de847e0.entry.js +2 -0
- package/dist/wcs/p-8152d360.entry.js +2 -0
- package/dist/wcs/p-8152d360.entry.js.map +1 -0
- package/dist/wcs/{p-294732f7.entry.js → p-850fa9c9.entry.js} +2 -2
- package/dist/wcs/{p-796e690d.entry.js → p-86ec9ead.entry.js} +2 -2
- package/dist/wcs/{p-796e690d.entry.js.map → p-86ec9ead.entry.js.map} +1 -1
- package/dist/wcs/p-8c2605fd.entry.js +2 -0
- package/dist/wcs/p-8c2605fd.entry.js.map +1 -0
- package/dist/wcs/{p-16dd21cf.entry.js → p-8e9bd0f1.entry.js} +2 -2
- package/dist/wcs/p-98a8b806.entry.js +2 -0
- package/dist/wcs/p-98a8b806.entry.js.map +1 -0
- package/dist/wcs/p-9c73744c.entry.js +2 -0
- package/dist/wcs/p-9c73744c.entry.js.map +1 -0
- package/dist/wcs/p-9fd3366c.entry.js +2 -0
- package/dist/wcs/p-9fd3366c.entry.js.map +1 -0
- package/dist/wcs/p-a0f6ef30.entry.js +2 -0
- package/dist/wcs/p-a0f6ef30.entry.js.map +1 -0
- package/dist/wcs/{p-5bf73e05.entry.js → p-a94e685c.entry.js} +2 -2
- package/dist/wcs/{p-5bf73e05.entry.js.map → p-a94e685c.entry.js.map} +1 -1
- package/dist/wcs/{p-7d665a7e.entry.js → p-a956dc84.entry.js} +2 -2
- package/dist/wcs/p-a956dc84.entry.js.map +1 -0
- package/dist/wcs/{p-5d5f50ed.entry.js → p-aadf37e7.entry.js} +2 -2
- package/dist/wcs/{p-6b06d2e7.entry.js → p-ad286030.entry.js} +2 -2
- package/dist/wcs/p-ad5192cd.entry.js +2 -0
- package/dist/wcs/{p-dd60a6db.entry.js → p-b0a6eec6.entry.js} +2 -2
- package/dist/wcs/{p-dd60a6db.entry.js.map → p-b0a6eec6.entry.js.map} +1 -1
- package/dist/wcs/{p-9ad23e83.entry.js → p-b28b2fba.entry.js} +2 -2
- package/dist/wcs/p-b28b2fba.entry.js.map +1 -0
- package/dist/wcs/{p-29f5b974.entry.js → p-bc009574.entry.js} +2 -2
- package/dist/wcs/{p-29f5b974.entry.js.map → p-bc009574.entry.js.map} +1 -1
- package/dist/wcs/p-c211a5d1.entry.js +2 -0
- package/dist/wcs/{p-206c01d5.entry.js → p-c261eaf9.entry.js} +2 -2
- package/dist/wcs/p-c261eaf9.entry.js.map +1 -0
- package/dist/wcs/p-c5bad0b8.js +2 -0
- package/dist/wcs/p-c5bad0b8.js.map +1 -0
- package/dist/wcs/p-c7812760.entry.js +2 -0
- package/dist/wcs/{p-694724a2.entry.js → p-c84ae00d.entry.js} +2 -2
- package/dist/wcs/p-cad10435.entry.js +2 -0
- package/dist/wcs/{p-13e50077.entry.js.map → p-cad10435.entry.js.map} +1 -1
- package/dist/wcs/p-cbbca016.entry.js +2 -0
- package/dist/wcs/p-cbbca016.entry.js.map +1 -0
- package/dist/wcs/{p-619e1110.entry.js → p-cbda74f6.entry.js} +2 -2
- package/dist/wcs/{p-21b964cd.entry.js → p-d27d4a53.entry.js} +2 -2
- package/dist/wcs/p-d27d4a53.entry.js.map +1 -0
- package/dist/wcs/p-dfb52a1c.entry.js +2 -0
- package/dist/wcs/p-dfb52a1c.entry.js.map +1 -0
- package/dist/wcs/{p-6f5d570a.entry.js → p-dff8641e.entry.js} +2 -2
- package/dist/wcs/p-e26c19e5.entry.js +2 -0
- package/dist/wcs/{p-d9525519.entry.js → p-e56b9ce2.entry.js} +2 -2
- package/dist/wcs/p-ec383729.entry.js +2 -0
- package/dist/wcs/p-ec383729.entry.js.map +1 -0
- package/dist/wcs/p-f929b66f.entry.js +2 -0
- package/dist/wcs/p-f929b66f.entry.js.map +1 -0
- package/dist/wcs/{p-da4636fa.entry.js → p-fd187bce.entry.js} +2 -2
- package/dist/wcs/{p-b96f4921.entry.js → p-fdeae83e.entry.js} +2 -2
- package/dist/wcs/wcs.esm.js +1 -1
- package/dist/wcs/wcs.esm.js.map +1 -1
- package/package.json +5 -2
- package/dist/cjs/button-interface-629f3563.js +0 -12
- package/dist/cjs/button-interface-629f3563.js.map +0 -1
- package/dist/cjs/grid-pagination-e4f29c78.js.map +0 -1
- package/dist/esm/button-interface-dc5ddd51.js +0 -9
- package/dist/esm/button-interface-dc5ddd51.js.map +0 -1
- package/dist/esm/grid-pagination-976a86e9.js.map +0 -1
- package/dist/wcs/p-13090618.entry.js +0 -2
- package/dist/wcs/p-13090618.entry.js.map +0 -1
- package/dist/wcs/p-13e50077.entry.js +0 -2
- package/dist/wcs/p-1438530e.entry.js +0 -2
- package/dist/wcs/p-1438530e.entry.js.map +0 -1
- package/dist/wcs/p-206c01d5.entry.js.map +0 -1
- package/dist/wcs/p-21b964cd.entry.js.map +0 -1
- package/dist/wcs/p-21d2f06f.entry.js +0 -2
- package/dist/wcs/p-21d2f06f.entry.js.map +0 -1
- package/dist/wcs/p-258855a1.entry.js +0 -2
- package/dist/wcs/p-258855a1.entry.js.map +0 -1
- package/dist/wcs/p-2adf00be.entry.js +0 -2
- package/dist/wcs/p-2adf00be.entry.js.map +0 -1
- package/dist/wcs/p-388e6d75.entry.js +0 -2
- package/dist/wcs/p-388e6d75.entry.js.map +0 -1
- package/dist/wcs/p-43d70995.entry.js +0 -2
- package/dist/wcs/p-43d70995.entry.js.map +0 -1
- package/dist/wcs/p-4dc52a25.entry.js.map +0 -1
- package/dist/wcs/p-550012c2.entry.js +0 -2
- package/dist/wcs/p-5974be61.entry.js +0 -2
- package/dist/wcs/p-5974be61.entry.js.map +0 -1
- package/dist/wcs/p-5de993d7.entry.js +0 -2
- package/dist/wcs/p-5de993d7.entry.js.map +0 -1
- package/dist/wcs/p-71db0ed5.entry.js +0 -2
- package/dist/wcs/p-76c92e22.entry.js +0 -2
- package/dist/wcs/p-7d665a7e.entry.js.map +0 -1
- package/dist/wcs/p-8fcceaf1.js +0 -2
- package/dist/wcs/p-8fcceaf1.js.map +0 -1
- package/dist/wcs/p-9243a323.entry.js +0 -2
- package/dist/wcs/p-94aa269f.entry.js +0 -2
- package/dist/wcs/p-94aa269f.entry.js.map +0 -1
- package/dist/wcs/p-96195d9a.entry.js +0 -2
- package/dist/wcs/p-96195d9a.entry.js.map +0 -1
- package/dist/wcs/p-9ad23e83.entry.js.map +0 -1
- package/dist/wcs/p-9dc3f9a5.entry.js +0 -2
- package/dist/wcs/p-9dc3f9a5.entry.js.map +0 -1
- package/dist/wcs/p-9eb66fa9.entry.js +0 -2
- package/dist/wcs/p-ab49926d.entry.js +0 -2
- package/dist/wcs/p-ab49926d.entry.js.map +0 -1
- package/dist/wcs/p-b2080509.entry.js +0 -2
- package/dist/wcs/p-c2d35aa6.entry.js.map +0 -1
- package/dist/wcs/p-c6a28b79.js +0 -2
- package/dist/wcs/p-c6a28b79.js.map +0 -1
- package/dist/wcs/p-c752b85a.entry.js +0 -2
- package/dist/wcs/p-d443d419.entry.js +0 -2
- package/dist/wcs/p-e36b2ad1.entry.js +0 -2
- package/dist/wcs/p-f87636f6.entry.js +0 -2
- package/dist/wcs/p-f87636f6.entry.js.map +0 -1
- package/dist/wcs/p-fc115de4.entry.js +0 -2
- /package/dist/wcs/{p-9c012aae.entry.js.map → p-0424e545.entry.js.map} +0 -0
- /package/dist/wcs/{p-50523b53.entry.js.map → p-0758d22e.entry.js.map} +0 -0
- /package/dist/wcs/{p-e36b2ad1.entry.js.map → p-0b8157e7.entry.js.map} +0 -0
- /package/dist/wcs/{p-9554196c.entry.js.map → p-1244daa0.entry.js.map} +0 -0
- /package/dist/wcs/{p-37800935.entry.js.map → p-27b438c0.entry.js.map} +0 -0
- /package/dist/wcs/{p-0ffdfc10.entry.js.map → p-352e1f99.entry.js.map} +0 -0
- /package/dist/wcs/{p-3cfa1c4b.entry.js.map → p-367946fe.entry.js.map} +0 -0
- /package/dist/wcs/{p-c752b85a.entry.js.map → p-3823f54e.entry.js.map} +0 -0
- /package/dist/wcs/{p-a7891233.entry.js.map → p-3a18535f.entry.js.map} +0 -0
- /package/dist/wcs/{p-d895ffb4.entry.js.map → p-5202b323.entry.js.map} +0 -0
- /package/dist/wcs/{p-b2080509.entry.js.map → p-580b3142.entry.js.map} +0 -0
- /package/dist/wcs/{p-dddcd685.entry.js.map → p-622f7403.entry.js.map} +0 -0
- /package/dist/wcs/{p-e5c057c4.entry.js.map → p-781a956e.entry.js.map} +0 -0
- /package/dist/wcs/{p-550012c2.entry.js.map → p-7de847e0.entry.js.map} +0 -0
- /package/dist/wcs/{p-294732f7.entry.js.map → p-850fa9c9.entry.js.map} +0 -0
- /package/dist/wcs/{p-16dd21cf.entry.js.map → p-8e9bd0f1.entry.js.map} +0 -0
- /package/dist/wcs/{p-5d5f50ed.entry.js.map → p-aadf37e7.entry.js.map} +0 -0
- /package/dist/wcs/{p-6b06d2e7.entry.js.map → p-ad286030.entry.js.map} +0 -0
- /package/dist/wcs/{p-fc115de4.entry.js.map → p-ad5192cd.entry.js.map} +0 -0
- /package/dist/wcs/{p-9eb66fa9.entry.js.map → p-c211a5d1.entry.js.map} +0 -0
- /package/dist/wcs/{p-d443d419.entry.js.map → p-c7812760.entry.js.map} +0 -0
- /package/dist/wcs/{p-694724a2.entry.js.map → p-c84ae00d.entry.js.map} +0 -0
- /package/dist/wcs/{p-619e1110.entry.js.map → p-cbda74f6.entry.js.map} +0 -0
- /package/dist/wcs/{p-6f5d570a.entry.js.map → p-dff8641e.entry.js.map} +0 -0
- /package/dist/wcs/{p-71db0ed5.entry.js.map → p-e26c19e5.entry.js.map} +0 -0
- /package/dist/wcs/{p-d9525519.entry.js.map → p-e56b9ce2.entry.js.map} +0 -0
- /package/dist/wcs/{p-da4636fa.entry.js.map → p-fd187bce.entry.js.map} +0 -0
- /package/dist/wcs/{p-b96f4921.entry.js.map → p-fdeae83e.entry.js.map} +0 -0
|
@@ -24,6 +24,24 @@
|
|
|
24
24
|
--wcs-tabs-gutter-border-width: var(--wcs-semantic-border-width-default);
|
|
25
25
|
--wcs-tabs-gutter-background-color: var(--wcs-semantic-color-border-secondary);
|
|
26
26
|
--wcs-tabs-headers-border-bottom: var(--wcs-tabs-gutter-border-width) solid var(--wcs-tabs-gutter-background-color);
|
|
27
|
+
--wcs-tabs-mobile-breakpoint: var(--wcs-phone-breakpoint-max-width, 575px);
|
|
28
|
+
--wcs-tabs-mobile-overlay-border-width: var(--wcs-semantic-border-width-default);
|
|
29
|
+
--wcs-tabs-mobile-overlay-border-color: var(--wcs-semantic-color-border-secondary);
|
|
30
|
+
--wcs-tabs-mobile-overlay-background-color: var(--wcs-semantic-color-background-surface-primary);
|
|
31
|
+
--wcs-tabs-mobile-overlay-padding: var(--wcs-semantic-spacing-base);
|
|
32
|
+
--wcs-tabs-mobile-overlay-border-radius: var(--wcs-semantic-border-radius-base);
|
|
33
|
+
--wcs-tabs-mobile-gap: var(--wcs-semantic-spacing-base);
|
|
34
|
+
--wcs-tabs-mobile-padding: 0 var(--wcs-semantic-spacing-base);
|
|
35
|
+
--wcs-tabs-mobile-height: var(--wcs-semantic-size-m);
|
|
36
|
+
--wcs-tabs-mobile-font-weight-default: var(--wcs-semantic-font-weight-medium);
|
|
37
|
+
--wcs-tabs-mobile-font-weight-active: var(--wcs-semantic-font-weight-black);
|
|
38
|
+
--wcs-tabs-mobile-font-size: var(--wcs-semantic-font-size-base);
|
|
39
|
+
--wcs-tabs-mobile-color: var(--wcs-semantic-color-text-primary);
|
|
40
|
+
--wcs-tabs-mobile-background-color-default: var(--wcs-semantic-color-background-action-secondary-default);
|
|
41
|
+
--wcs-tabs-mobile-background-color-focus: var(--wcs-semantic-color-background-action-secondary-focus);
|
|
42
|
+
--wcs-tabs-mobile-background-color-hover: var(--wcs-semantic-color-background-action-secondary-hover);
|
|
43
|
+
--wcs-tabs-mobile-background-color-press: var(--wcs-semantic-color-background-action-secondary-press);
|
|
44
|
+
--wcs-tabs-mobile-border-radius: var(--wcs-semantic-border-radius-base);
|
|
27
45
|
--wcs-tabs-transition-duration: var(--wcs-semantic-motion-duration-feedback-base);
|
|
28
46
|
display: block;
|
|
29
47
|
}
|
|
@@ -100,4 +118,89 @@
|
|
|
100
118
|
height: var(--wcs-tabs-indicator-height);
|
|
101
119
|
background-color: var(--wcs-tabs-indicator-background-color);
|
|
102
120
|
border-radius: var(--wcs-tabs-indicator-border-radius);
|
|
103
|
-
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/* ============= */
|
|
124
|
+
/* region MOBILE */
|
|
125
|
+
/* ============= */
|
|
126
|
+
button {
|
|
127
|
+
background-color: inherit;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
#mobile-button {
|
|
131
|
+
border: 0;
|
|
132
|
+
font-family: var(--wcs-font-sans-serif), sans-serif;
|
|
133
|
+
text-align: center;
|
|
134
|
+
color: var(--wcs-tabs-color-default);
|
|
135
|
+
font-size: 1rem;
|
|
136
|
+
font-weight: var(--wcs-tabs-font-weight-default);
|
|
137
|
+
padding-right: calc(0.75 * var(--wcs-tabs-padding-right)); /* reduce padding right because of the arrow */
|
|
138
|
+
}
|
|
139
|
+
#mobile-button span {
|
|
140
|
+
display: flex;
|
|
141
|
+
align-items: center;
|
|
142
|
+
}
|
|
143
|
+
#mobile-button .arrow {
|
|
144
|
+
fill: var(--wcs-tabs-color-default);
|
|
145
|
+
}
|
|
146
|
+
#mobile-button:hover .arrow {
|
|
147
|
+
fill: var(--wcs-tabs-color-hover);
|
|
148
|
+
}
|
|
149
|
+
#mobile-button:active .arrow {
|
|
150
|
+
fill: var(--wcs-tabs-color-press);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.popover {
|
|
154
|
+
display: none;
|
|
155
|
+
z-index: 9999;
|
|
156
|
+
overflow: hidden;
|
|
157
|
+
border: var(--wcs-tabs-mobile-overlay-border-width) solid var(--wcs-tabs-mobile-overlay-border-color);
|
|
158
|
+
border-radius: var(--wcs-tabs-mobile-overlay-border-radius);
|
|
159
|
+
padding: var(--wcs-tabs-mobile-overlay-padding);
|
|
160
|
+
background-color: var(--wcs-tabs-mobile-overlay-background-color);
|
|
161
|
+
}
|
|
162
|
+
.popover [role=tab] {
|
|
163
|
+
display: flex;
|
|
164
|
+
flex-direction: row;
|
|
165
|
+
align-items: center;
|
|
166
|
+
cursor: pointer;
|
|
167
|
+
user-select: none;
|
|
168
|
+
gap: var(--wcs-tabs-mobile-gap);
|
|
169
|
+
padding: var(--wcs-tabs-mobile-padding);
|
|
170
|
+
height: var(--wcs-tabs-mobile-height);
|
|
171
|
+
font-weight: var(--wcs-tabs-mobile-font-weight-default);
|
|
172
|
+
font-size: var(--wcs-tabs-mobile-font-size);
|
|
173
|
+
color: var(--wcs-tabs-mobile-color);
|
|
174
|
+
background-color: var(--wcs-tabs-mobile-background-color);
|
|
175
|
+
border-radius: var(--wcs-tabs-mobile-border-radius);
|
|
176
|
+
transition-duration: var(--wcs-tabs-transition-duration);
|
|
177
|
+
transition-property: background-color, color;
|
|
178
|
+
transition-timing-function: ease;
|
|
179
|
+
overflow: hidden;
|
|
180
|
+
white-space: nowrap;
|
|
181
|
+
}
|
|
182
|
+
.popover [role=tab]:focus {
|
|
183
|
+
background-color: var(--wcs-tabs-mobile-background-color-focus);
|
|
184
|
+
}
|
|
185
|
+
.popover [role=tab]:focus-visible {
|
|
186
|
+
outline: var(--wcs-semantic-border-width-large) dashed var(--wcs-semantic-color-border-focus-base);
|
|
187
|
+
outline-offset: 0;
|
|
188
|
+
border-radius: var(--wcs-tabs-mobile-border-radius);
|
|
189
|
+
}
|
|
190
|
+
.popover [role=tab]:hover {
|
|
191
|
+
background-color: var(--wcs-tabs-mobile-background-color-hover);
|
|
192
|
+
}
|
|
193
|
+
.popover [role=tab]:active {
|
|
194
|
+
background-color: var(--wcs-tabs-mobile-background-color-press);
|
|
195
|
+
}
|
|
196
|
+
.popover .mobile-active {
|
|
197
|
+
font-weight: var(--wcs-tabs-mobile-font-weight-active);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
.show {
|
|
201
|
+
display: block;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/* ================ */
|
|
205
|
+
/* endregion MOBILE */
|
|
206
|
+
/* ================ */
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
2
|
import { inheritAriaAttributes, inheritAttributes, setOrRemoveAttribute } from "../../utils/helpers";
|
|
3
|
+
import { SelectArrow } from "../select/select-arrow";
|
|
4
|
+
import { createPopper } from "@popperjs/core";
|
|
3
5
|
const TABS_INHERITED_ATTRS = [];
|
|
4
6
|
/**
|
|
5
7
|
* Tabs component to switch between tab content. Use in conjunction with `wcs-tab`.
|
|
6
8
|
*
|
|
9
|
+
* ## Accessibility guidelines 💡
|
|
10
|
+
* > - Mobile display should be used for narrower screens (automatically set by default).
|
|
11
|
+
* > - The component respects the W3C [tab pattern](https://www.w3.org/WAI/ARIA/apg/patterns/tabs/)
|
|
12
|
+
*
|
|
7
13
|
* @cssprop --wcs-tabs-indicator-height - Height of the tabs indicator
|
|
8
14
|
* @cssprop --wcs-tabs-indicator-background-color - Background color of the tabs indicator
|
|
9
15
|
* @cssprop --wcs-tabs-indicator-border-radius - Border radius of the tabs indicator
|
|
@@ -25,6 +31,24 @@ const TABS_INHERITED_ATTRS = [];
|
|
|
25
31
|
* @cssprop --wcs-tabs-padding-left - Padding left of the tabs
|
|
26
32
|
* @cssprop --wcs-tabs-headers-border-bottom - Border bottom (gutter) below the tabs
|
|
27
33
|
* @cssprop --wcs-tabs-transition-duration - Transition duration of the tabs
|
|
34
|
+
* @cssprop --wcs-tabs-mobile-breakpoint - Breakpoint for mobile display (default: 575px)
|
|
35
|
+
* @cssprop --wcs-tabs-mobile-overlay-border-width - Border width of the mobile overlay
|
|
36
|
+
* @cssprop --wcs-tabs-mobile-overlay-border-color - Border color of the mobile overlay
|
|
37
|
+
* @cssprop --wcs-tabs-mobile-overlay-background-color - Background color of the mobile overlay
|
|
38
|
+
* @cssprop --wcs-tabs-mobile-overlay-padding - Padding of the mobile overlay
|
|
39
|
+
* @cssprop --wcs-tabs-mobile-overlay-border-radius - Border radius of the mobile overlay
|
|
40
|
+
* @cssprop --wcs-tabs-mobile-gap - Gap between the mobile tabs in the overlay
|
|
41
|
+
* @cssprop --wcs-tabs-mobile-padding - Padding of the mobile tabs in the overlay
|
|
42
|
+
* @cssprop --wcs-tabs-mobile-height - Height of the mobile tabs in the overlay
|
|
43
|
+
* @cssprop --wcs-tabs-mobile-font-weight-default - Default weight of the mobile tabs in the overlay
|
|
44
|
+
* @cssprop --wcs-tabs-mobile-font-weight-active - Active font weight of the mobile tabs in the overlay
|
|
45
|
+
* @cssprop --wcs-tabs-mobile-font-size - Font size of the mobile tabs in the overlay
|
|
46
|
+
* @cssprop --wcs-tabs-mobile-color - Text color of the mobile tabs in the overlay
|
|
47
|
+
* @cssprop --wcs-tabs-mobile-background-color-default - Default background color of the mobile tabs in the overlay
|
|
48
|
+
* @cssprop --wcs-tabs-mobile-background-color-focus - Focused background color of the mobile tabs in the overlay
|
|
49
|
+
* @cssprop --wcs-tabs-mobile-background-color-hover - Hovered background color of the mobile tabs in the overlay
|
|
50
|
+
* @cssprop --wcs-tabs-mobile-background-color-press - Pressed background color of the mobile tabs in the overlay
|
|
51
|
+
* @cssprop --wcs-tabs-mobile-border-radius - Border radius of the mobile tabs in the overlay
|
|
28
52
|
*/
|
|
29
53
|
export class Tabs {
|
|
30
54
|
constructor() {
|
|
@@ -36,6 +60,8 @@ export class Tabs {
|
|
|
36
60
|
this.headersOnly = false;
|
|
37
61
|
this.gutter = undefined;
|
|
38
62
|
this.description = undefined;
|
|
63
|
+
this.mobileOverlayExpanded = false;
|
|
64
|
+
this.mobile = false;
|
|
39
65
|
this.headers = [];
|
|
40
66
|
this.currentActiveTabIndex = 0;
|
|
41
67
|
}
|
|
@@ -45,6 +71,13 @@ export class Tabs {
|
|
|
45
71
|
selectedTabkeyChanged(newValue) {
|
|
46
72
|
this.updateCurrentActiveIndexByTabKey(newValue);
|
|
47
73
|
}
|
|
74
|
+
onMobileChange(newValue) {
|
|
75
|
+
// Remove the popper instance when switching from mobile to desktop for performance
|
|
76
|
+
if (!newValue) {
|
|
77
|
+
this.popper.destroy();
|
|
78
|
+
this.popper = null;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
48
81
|
emitActiveTabChange() {
|
|
49
82
|
this.tabChange.emit({
|
|
50
83
|
tabName: this.headers[this.currentActiveTabIndex],
|
|
@@ -63,6 +96,42 @@ export class Tabs {
|
|
|
63
96
|
onTabLoaded() {
|
|
64
97
|
this.refreshHeaders();
|
|
65
98
|
}
|
|
99
|
+
onWindowClickEvent(event) {
|
|
100
|
+
if (this.mobile) {
|
|
101
|
+
const clickedOnMobileButtonOrOverlay = event.composedPath().some(el => el === this.mobileButton || el === this.popoverDiv);
|
|
102
|
+
if (this.mobileOverlayExpanded && !clickedOnMobileButtonOrOverlay) {
|
|
103
|
+
this.mobileOverlayExpanded = false;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Init resize observer for mobile
|
|
109
|
+
*/
|
|
110
|
+
tabsDidLoadWithResizeObserver() {
|
|
111
|
+
const smallBreakpoint = getComputedStyle(this.el).getPropertyValue('--wcs-tabs-mobile-breakpoint') || '575px';
|
|
112
|
+
const smallBreakpointValue = parseInt(smallBreakpoint, 10);
|
|
113
|
+
return new ResizeObserver(entry => {
|
|
114
|
+
const cr = entry[0].contentRect;
|
|
115
|
+
const paddingRight = cr.right - cr.width;
|
|
116
|
+
const paddingLeft = cr.left;
|
|
117
|
+
// Switch to mobile mode if the screen is smaller than the breakpoint
|
|
118
|
+
this.mobile = cr.width <= smallBreakpointValue - (paddingLeft + paddingRight);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
initMobileOverlay() {
|
|
122
|
+
this.popper = createPopper(this.mobileButton, this.popoverDiv, {
|
|
123
|
+
placement: 'bottom-start',
|
|
124
|
+
strategy: 'fixed',
|
|
125
|
+
modifiers: [
|
|
126
|
+
{
|
|
127
|
+
name: 'offset',
|
|
128
|
+
options: {
|
|
129
|
+
offset: [0, 8]
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
]
|
|
133
|
+
});
|
|
134
|
+
}
|
|
66
135
|
componentDidLoad() {
|
|
67
136
|
this.putTabsInCorrectDivIfTheyAreNot();
|
|
68
137
|
this.refreshHeaders();
|
|
@@ -72,6 +141,20 @@ export class Tabs {
|
|
|
72
141
|
if (this.selectedKey) {
|
|
73
142
|
this.updateCurrentActiveIndexByTabKey(this.selectedKey);
|
|
74
143
|
}
|
|
144
|
+
if (!this.resizeObserver) {
|
|
145
|
+
this.resizeObserver = this.tabsDidLoadWithResizeObserver();
|
|
146
|
+
this.resizeObserver.observe(document.body);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
componentDidRender() {
|
|
150
|
+
if (this.mobile) {
|
|
151
|
+
if (!this.popper) {
|
|
152
|
+
this.initMobileOverlay();
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
this.popper.update();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
75
158
|
}
|
|
76
159
|
// XXX: Firefox < 63
|
|
77
160
|
putTabsInCorrectDivIfTheyAreNot() {
|
|
@@ -93,8 +176,7 @@ export class Tabs {
|
|
|
93
176
|
switch (ev.key) {
|
|
94
177
|
case ' ':
|
|
95
178
|
case 'Enter': {
|
|
96
|
-
this.
|
|
97
|
-
this.emitActiveTabChange();
|
|
179
|
+
this.selectTabAndEmitChangeEvent(tabIndex);
|
|
98
180
|
ev.preventDefault();
|
|
99
181
|
break;
|
|
100
182
|
}
|
|
@@ -130,6 +212,53 @@ export class Tabs {
|
|
|
130
212
|
}
|
|
131
213
|
}
|
|
132
214
|
}
|
|
215
|
+
handleKeyDownMobile(ev, tabIndex) {
|
|
216
|
+
var _a, _b;
|
|
217
|
+
const target = ev.target;
|
|
218
|
+
switch (ev.key) {
|
|
219
|
+
case ' ':
|
|
220
|
+
case 'Enter': {
|
|
221
|
+
this.selectTabAndEmitChangeEvent(tabIndex);
|
|
222
|
+
ev.preventDefault();
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
case 'ArrowUp': {
|
|
226
|
+
if ((_a = target.previousElementSibling) === null || _a === void 0 ? void 0 : _a.classList.contains('wcs-tab-header-mobile')) {
|
|
227
|
+
target.previousElementSibling.focus();
|
|
228
|
+
ev.preventDefault();
|
|
229
|
+
}
|
|
230
|
+
break;
|
|
231
|
+
}
|
|
232
|
+
case 'ArrowDown': {
|
|
233
|
+
if ((_b = target.nextElementSibling) === null || _b === void 0 ? void 0 : _b.classList.contains('wcs-tab-header-mobile')) {
|
|
234
|
+
target.nextElementSibling.focus();
|
|
235
|
+
ev.preventDefault();
|
|
236
|
+
}
|
|
237
|
+
break;
|
|
238
|
+
}
|
|
239
|
+
case 'Home': {
|
|
240
|
+
const firstTab = this.el.shadowRoot.querySelector('.wcs-tab-header-mobile:first-child');
|
|
241
|
+
if (firstTab) {
|
|
242
|
+
firstTab.focus();
|
|
243
|
+
ev.preventDefault();
|
|
244
|
+
}
|
|
245
|
+
break;
|
|
246
|
+
}
|
|
247
|
+
case 'End': {
|
|
248
|
+
const lastTab = this.el.shadowRoot.querySelector('.wcs-tab-header-mobile:last-child');
|
|
249
|
+
if (lastTab) {
|
|
250
|
+
lastTab.focus();
|
|
251
|
+
ev.preventDefault();
|
|
252
|
+
}
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
case 'Escape': {
|
|
256
|
+
this.mobileOverlayExpanded = false;
|
|
257
|
+
ev.preventDefault();
|
|
258
|
+
break;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
133
262
|
refreshHeaders() {
|
|
134
263
|
this.headers = [];
|
|
135
264
|
this.tabs
|
|
@@ -149,8 +278,13 @@ export class Tabs {
|
|
|
149
278
|
: [];
|
|
150
279
|
}
|
|
151
280
|
selectTabAndEmitChangeEvent(index) {
|
|
281
|
+
var _a;
|
|
152
282
|
this.currentActiveTabIndex = index;
|
|
153
283
|
this.emitActiveTabChange();
|
|
284
|
+
if (this.mobile) {
|
|
285
|
+
this.mobileOverlayExpanded = false;
|
|
286
|
+
(_a = this.mobileButton) === null || _a === void 0 ? void 0 : _a.focus();
|
|
287
|
+
}
|
|
154
288
|
}
|
|
155
289
|
componentWillUpdate() {
|
|
156
290
|
if (!this.headersOnly) {
|
|
@@ -163,8 +297,16 @@ export class Tabs {
|
|
|
163
297
|
componentWillLoad() {
|
|
164
298
|
this.inheritedAttributes = Object.assign(Object.assign({}, inheritAriaAttributes(this.el)), inheritAttributes(this.el, TABS_INHERITED_ATTRS));
|
|
165
299
|
}
|
|
300
|
+
disconnectedCallback() {
|
|
301
|
+
var _a;
|
|
302
|
+
if (this.popper) {
|
|
303
|
+
this.popper.destroy();
|
|
304
|
+
this.popper = null;
|
|
305
|
+
}
|
|
306
|
+
(_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
307
|
+
}
|
|
166
308
|
async setAriaAttribute(attr, value) {
|
|
167
|
-
setOrRemoveAttribute(this.nativeTablist, attr, value);
|
|
309
|
+
setOrRemoveAttribute(this.mobile ? this.popoverDiv : this.nativeTablist, attr, value);
|
|
168
310
|
}
|
|
169
311
|
updateTabVisibility() {
|
|
170
312
|
this.tabs.forEach((el, idx) => {
|
|
@@ -179,8 +321,29 @@ export class Tabs {
|
|
|
179
321
|
hideAllTabsContent() {
|
|
180
322
|
this.tabs.forEach((el) => el.hidden = true);
|
|
181
323
|
}
|
|
324
|
+
onMobileButtonClick() {
|
|
325
|
+
this.mobileOverlayExpanded = !this.mobileOverlayExpanded;
|
|
326
|
+
const tabElementToFocus = this.popoverDiv.querySelectorAll('[role=tab]')[this.currentActiveTabIndex];
|
|
327
|
+
requestAnimationFrame(() => {
|
|
328
|
+
tabElementToFocus === null || tabElementToFocus === void 0 ? void 0 : tabElementToFocus.focus();
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
onMobileButtonKeyDown(ev) {
|
|
332
|
+
if (ev.key === 'ArrowDown' || ev.key === 'ArrowUp') {
|
|
333
|
+
this.onMobileButtonClick();
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
mobileLayout() {
|
|
337
|
+
return [
|
|
338
|
+
h("button", { id: "mobile-button", class: "wcs-tab-header active", "aria-controls": "menu", role: "button", "aria-expanded": this.mobileOverlayExpanded ? 'true' : 'false', ref: el => this.mobileButton = el, onClick: () => this.onMobileButtonClick(), onKeyDown: (evt) => this.onMobileButtonKeyDown(evt), onBlur: ($event) => $event.stopImmediatePropagation() }, h("span", null, this.headers[this.currentActiveTabIndex], " ", h(SelectArrow, { up: this.mobileOverlayExpanded }))),
|
|
339
|
+
h("div", Object.assign({ class: (this.mobileOverlayExpanded ? 'show ' : '') + 'popover', role: "tablist", id: "menu", "aria-label": this.description, "aria-orientation": "vertical", ref: el => this.popoverDiv = el, tabIndex: -1 }, this.inheritedAttributes), this.headers.map((header, idx) => h("div", { class: 'wcs-tab-header-mobile ' + (this.currentActiveTabIndex === idx ? 'mobile-active' : ''), onClick: () => this.selectTabAndEmitChangeEvent(idx), onKeyDown: evt => this.handleKeyDownMobile(evt, idx), tabIndex: this.currentActiveTabIndex === idx ? 0 : -1, role: "tab", id: `tabs-id-${this.tabsId}-tab-id-${idx}`, "aria-controls": `tabs-id-${this.tabsId}-tab-panel-${idx}`, "aria-label": header, "aria-selected": this.currentActiveTabIndex === idx ? 'true' : 'false' }, h("span", null, header))))
|
|
340
|
+
];
|
|
341
|
+
}
|
|
342
|
+
desktopLayout() {
|
|
343
|
+
return (this.headers.map((header, idx) => h("div", { class: 'wcs-tab-header ' + (this.currentActiveTabIndex === idx ? 'active' : ''), onClick: () => this.selectTabAndEmitChangeEvent(idx), onKeyDown: evt => this.handleKeyDown(evt, idx), tabIndex: this.currentActiveTabIndex === idx ? 0 : -1, role: "tab", id: `tabs-id-${this.tabsId}-tab-id-${idx}`, "aria-controls": `tabs-id-${this.tabsId}-tab-panel-${idx}`, "aria-label": header, "aria-selected": this.currentActiveTabIndex === idx ? 'true' : 'false' }, h("span", null, header))));
|
|
344
|
+
}
|
|
182
345
|
render() {
|
|
183
|
-
return (h(Host, { key: '
|
|
346
|
+
return (h(Host, { key: '072fa3551b320a6415c20a3107500f2bee2aa690' }, h("div", Object.assign({ key: '294008dc27c2ff694119c3ce136caf866a0802b3', class: "wcs-tabs-headers", role: this.mobile ? null : 'tablist', ref: (el) => (this.nativeTablist = el), "aria-orientation": this.mobile ? null : 'horizontal', "aria-label": this.mobile ? null : this.description }, (!this.mobile && this.inheritedAttributes)), this.mobile ? this.mobileLayout() : this.desktopLayout()), h("div", { key: 'd20bb48fe80434a6797c86d206a86d11081b92ea', class: "wcs-tabs" }, h("slot", { key: 'd4a31047e41627dc9c2cfb63f201e5e7ddc40f15', onSlotchange: () => this.onTabsSlotChange(), name: "wcs-tab" }))));
|
|
184
347
|
}
|
|
185
348
|
/**
|
|
186
349
|
* Observe when a new tab panel is added to the slot to let's handle accessibility properties for tabs panel:
|
|
@@ -191,6 +354,7 @@ export class Tabs {
|
|
|
191
354
|
*/
|
|
192
355
|
onTabsSlotChange() {
|
|
193
356
|
let tabId = 0;
|
|
357
|
+
this.refreshHeaders();
|
|
194
358
|
this.tabs.forEach(tab => {
|
|
195
359
|
tab.setAttribute("aria-label", this.headers.at(tabId));
|
|
196
360
|
// set an ID to set aria-controls on header tab
|
|
@@ -287,7 +451,7 @@ export class Tabs {
|
|
|
287
451
|
"text": "Whether to skip rendering the tabpanel with the content of the selected tab. Use this prop if you plan to\nseparately render the tab content."
|
|
288
452
|
},
|
|
289
453
|
"attribute": "headers-only",
|
|
290
|
-
"reflect":
|
|
454
|
+
"reflect": true,
|
|
291
455
|
"defaultValue": "false"
|
|
292
456
|
},
|
|
293
457
|
"gutter": {
|
|
@@ -328,6 +492,8 @@ export class Tabs {
|
|
|
328
492
|
}
|
|
329
493
|
static get states() {
|
|
330
494
|
return {
|
|
495
|
+
"mobileOverlayExpanded": {},
|
|
496
|
+
"mobile": {},
|
|
331
497
|
"headers": {},
|
|
332
498
|
"currentActiveTabIndex": {}
|
|
333
499
|
};
|
|
@@ -398,6 +564,9 @@ export class Tabs {
|
|
|
398
564
|
}, {
|
|
399
565
|
"propName": "selectedKey",
|
|
400
566
|
"methodName": "selectedTabkeyChanged"
|
|
567
|
+
}, {
|
|
568
|
+
"propName": "mobile",
|
|
569
|
+
"methodName": "onMobileChange"
|
|
401
570
|
}];
|
|
402
571
|
}
|
|
403
572
|
static get listeners() {
|
|
@@ -407,6 +576,12 @@ export class Tabs {
|
|
|
407
576
|
"target": undefined,
|
|
408
577
|
"capture": false,
|
|
409
578
|
"passive": false
|
|
579
|
+
}, {
|
|
580
|
+
"name": "click",
|
|
581
|
+
"method": "onWindowClickEvent",
|
|
582
|
+
"target": "window",
|
|
583
|
+
"capture": false,
|
|
584
|
+
"passive": false
|
|
410
585
|
}];
|
|
411
586
|
}
|
|
412
587
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../src/components/tabs/tabs.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Prop,\n Element,\n State,\n ComponentInterface,\n Event,\n EventEmitter,\n Watch,\n h,\n Host,\n Listen, Method\n} from '@stencil/core';\n\nimport { WcsTabsAlignment, WcsTabChangeEvent } from './tabs-interface';\nimport { AriaAttributeName, MutableAriaAttribute } from \"../../utils/mutable-aria-attribute\";\nimport { inheritAriaAttributes, inheritAttributes, setOrRemoveAttribute } from \"../../utils/helpers\";\n\nconst TABS_INHERITED_ATTRS = [];\n\n/**\n * Tabs component to switch between tab content. Use in conjunction with `wcs-tab`.\n * \n * @cssprop --wcs-tabs-indicator-height - Height of the tabs indicator \n * @cssprop --wcs-tabs-indicator-background-color - Background color of the tabs indicator\n * @cssprop --wcs-tabs-indicator-border-radius - Border radius of the tabs indicator\n * @cssprop --wcs-tabs-color-default - Text color of the tabs\n * @cssprop --wcs-tabs-color-hover - Text color of the tabs when hovered\n * @cssprop --wcs-tabs-color-press - Text color of the tabs when pressed\n * @cssprop --wcs-tabs-color-focus - Text color of the tabs when focused\n * @cssprop --wcs-tabs-color-selected - Text color of the tabs when selected\n * @cssprop --wcs-tabs-background-color-focus - Background color of the tabs when focused\n * @cssprop --wcs-tabs-background-color-hover - Background color of the tabs when hovered\n * @cssprop --wcs-tabs-background-color-press - Background color of the tabs when pressed\n * @cssprop --wcs-tabs-border-radius - Border radius of the tabs\n * @cssprop --wcs-tabs-border-color-focus - Outline color on a focused tab\n * @cssprop --wcs-tabs-font-weight-default - Font weight of the tabs\n * @cssprop --wcs-tabs-font-weight-selected - Font weight of the tabs when selected\n * @cssprop --wcs-tabs-padding-top - Padding top of the tabs\n * @cssprop --wcs-tabs-padding-right - Padding right of the tabs\n * @cssprop --wcs-tabs-padding-bottom - Padding bottom of the tabs\n * @cssprop --wcs-tabs-padding-left - Padding left of the tabs\n * @cssprop --wcs-tabs-headers-border-bottom - Border bottom (gutter) below the tabs\n * @cssprop --wcs-tabs-transition-duration - Transition duration of the tabs\n */\n@Component({\n tag: 'wcs-tabs',\n styleUrl: 'tabs.scss',\n shadow: true,\n})\nexport class Tabs implements ComponentInterface, MutableAriaAttribute {\n @Element() private el!: HTMLWcsTabsElement;\n private nativeTablist!: HTMLElement;\n private inheritedAttributes: { [k: string]: any } = {};\n \n /**\n * Tab headers alignment.\n */\n @Prop({reflect: true}) align: WcsTabsAlignment = 'start';\n\n /**\n * Current selected tab index.\n * Starts at 0.\n */\n @Prop() selectedIndex: number = 0;\n\n @Prop() selectedKey: any;\n\n /**\n * Whether to skip rendering the tabpanel with the content of the selected tab. Use this prop if you plan to\n * separately render the tab content.\n */\n @Prop() headersOnly: boolean = false;\n /** Determines if tabs header should have a border at the bottom */\n @Prop({ reflect: true }) gutter: boolean;\n\n /**\n * Description is used to provide aria-label for the tabs container which has `role=\"tablist\"`.\n */\n @Prop() description: string;\n\n /**\n *\n * Emitted when the selected tab change.\n */\n @Event() tabChange!: EventEmitter<WcsTabChangeEvent>;\n\n @State() private headers: string[] = [];\n\n @State() private currentActiveTabIndex = 0;\n\n private tabsId: number = tabsId++;\n\n @Watch('selectedIndex')\n selectedIndexChanged(newValue: number) {\n this.currentActiveTabIndex = newValue;\n }\n\n @Watch('selectedKey')\n selectedTabkeyChanged(newValue: any) {\n this.updateCurrentActiveIndexByTabKey(newValue);\n }\n\n private emitActiveTabChange() {\n this.tabChange.emit({\n tabName: this.headers[this.currentActiveTabIndex],\n tabIndex: this.currentActiveTabIndex,\n selectedKey: this.tabs[this.currentActiveTabIndex].itemKey\n });\n }\n\n private updateCurrentActiveIndexByTabKey(newValue: any) {\n for (let i = 0; i < this.tabs.length; i++) {\n const tab = this.tabs[i];\n if (tab.itemKey === newValue) {\n this.currentActiveTabIndex = i;\n }\n }\n }\n\n @Listen('tabLoaded')\n onTabLoaded() {\n this.refreshHeaders();\n }\n\n componentDidLoad() {\n this.putTabsInCorrectDivIfTheyAreNot();\n this.refreshHeaders();\n if (this.selectedIndex) {\n this.currentActiveTabIndex = this.selectedIndex;\n }\n if (this.selectedKey) {\n this.updateCurrentActiveIndexByTabKey(this.selectedKey);\n }\n }\n\n // XXX: Firefox < 63\n private putTabsInCorrectDivIfTheyAreNot() {\n const tabDiv = this.el.shadowRoot.querySelector('.wcs-tabs');\n if (tabDiv.querySelector('slot') === null) {\n Array.from(this.el.querySelectorAll('wcs-tab'))\n .filter(node => node.parentNode !== tabDiv)\n .forEach(tab => {\n if (tab.parentElement.isEqualNode(this.el)) {\n this.el.removeChild(tab);\n tabDiv.appendChild(tab);\n }\n });\n }\n }\n\n handleKeyDown(ev: KeyboardEvent, tabIndex: number) {\n const target = ev.target as HTMLDivElement;\n switch (ev.key) {\n case ' ':\n case 'Enter': {\n this.currentActiveTabIndex = tabIndex;\n this.emitActiveTabChange();\n ev.preventDefault();\n break;\n }\n case 'ArrowLeft': {\n if (target.previousElementSibling?.classList.contains('wcs-tab-header')) {\n (target.previousElementSibling as HTMLDivElement).focus();\n ev.preventDefault();\n }\n break;\n }\n case 'ArrowRight': {\n if (target.nextElementSibling?.classList.contains('wcs-tab-header')) {\n (target.nextElementSibling as HTMLDivElement).focus();\n ev.preventDefault();\n }\n break;\n }\n case 'Home': {\n const firstTab = this.el.shadowRoot.querySelector('.wcs-tab-header:first-child');\n if (firstTab) {\n (firstTab as HTMLDivElement).focus();\n ev.preventDefault();\n }\n break;\n }\n case 'End': {\n const lastTab = this.el.shadowRoot.querySelector('.wcs-tab-header:last-child');\n if (lastTab) {\n (lastTab as HTMLDivElement).focus();\n ev.preventDefault();\n }\n break;\n }\n }\n }\n\n private refreshHeaders() {\n this.headers = [];\n this.tabs\n .forEach(x => {\n this.headers.push(x.getAttribute('header'));\n });\n }\n\n private get tabs() {\n const tabsEl = this.el.shadowRoot.querySelector('.wcs-tabs');\n // FIXME: problem with this selector being too greedy in ff < 63\n const tabs = this.el.shadowRoot.querySelectorAll('.wcs-tabs > wcs-tab');\n\n return tabs.length !== 0\n ? tabs\n : tabsEl?.querySelector('slot')\n ? tabsEl?.querySelector('slot')?.assignedElements() as unknown as NodeListOf<HTMLWcsTabElement>\n : [];\n }\n\n private selectTabAndEmitChangeEvent(index: number) {\n this.currentActiveTabIndex = index;\n this.emitActiveTabChange()\n }\n\n componentWillUpdate() {\n if (!this.headersOnly) {\n this.updateTabVisibility();\n } else {\n this.hideAllTabsContent();\n }\n }\n\n componentWillLoad(): Promise<void> | void {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el),\n ...inheritAttributes(this.el, TABS_INHERITED_ATTRS),\n };\n }\n\n @Method()\n async setAriaAttribute(attr: AriaAttributeName, value: string | null | undefined) {\n setOrRemoveAttribute(this.nativeTablist, attr, value);\n }\n\n private updateTabVisibility() {\n this.tabs.forEach((el: HTMLWcsTabElement, idx: number) => {\n if (idx !== this.currentActiveTabIndex) {\n el.hidden = true;\n } else {\n el.hidden = false;\n }\n });\n }\n\n private hideAllTabsContent() {\n this.tabs.forEach((el: HTMLWcsTabElement) => el.hidden = true);\n }\n\n render() {\n return (\n <Host>\n <div class=\"wcs-tabs-headers\"\n role=\"tablist\"\n ref={(el) => (this.nativeTablist = el)}\n aria-label={this.description}\n {...this.inheritedAttributes}>\n {this.headers.map((header, idx) =>\n <div class={'wcs-tab-header ' + (this.currentActiveTabIndex === idx ? 'active' : '')}\n onClick={() => this.selectTabAndEmitChangeEvent(idx)}\n onKeyDown={evt => this.handleKeyDown(evt, idx)}\n tabIndex={this.currentActiveTabIndex === idx ? 0 : -1}\n role=\"tab\"\n id={`tabs-id-${this.tabsId}-tab-id-${idx}`}\n // aria-controls refers to ID of the tab panel related to the header\n aria-controls={`tabs-id-${this.tabsId}-tab-panel-${idx}`}\n aria-label={header}\n aria-selected={this.currentActiveTabIndex === idx ? 'true' : 'false'}\n >\n <span>{header}</span>\n </div>\n )}\n </div>\n <div class=\"wcs-tabs\">\n <slot onSlotchange={() => this.onTabsSlotChange()} name=\"wcs-tab\"/>\n </div>\n </Host>\n );\n }\n\n /**\n * Observe when a new tab panel is added to the slot to let's handle accessibility properties for tabs panel:\n * - id: to let header tab refers it proper panel\n * - aria-label: take the same name as it's referenced header name\n * \n * @private\n */\n private onTabsSlotChange() {\n let tabId = 0;\n this.tabs.forEach(tab => {\n tab.setAttribute(\"aria-label\", this.headers.at(tabId));\n // set an ID to set aria-controls on header tab \n // (https://www.w3.org/WAI/ARIA/apg/patterns/tabs/examples/tabs-automatic/#:~:text=Refers%20to%20the%20element)\n tab.setAttribute(\"id\", `tabs-id-${this.tabsId}-tab-panel-${tabId}`);\n tabId++;\n });\n }\n}\n\nlet tabsId = 0;\n"]}
|
|
1
|
+
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../src/components/tabs/tabs.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Prop,\n Element,\n State,\n ComponentInterface,\n Event,\n EventEmitter,\n Watch,\n h,\n Host,\n Listen, Method\n} from '@stencil/core';\n\nimport { WcsTabsAlignment, WcsTabChangeEvent } from './tabs-interface';\nimport { AriaAttributeName, MutableAriaAttribute } from \"../../utils/mutable-aria-attribute\";\nimport {\n inheritAriaAttributes,\n inheritAttributes,\n setOrRemoveAttribute\n} from \"../../utils/helpers\";\nimport { SelectArrow } from \"../select/select-arrow\";\nimport { createPopper, Instance } from \"@popperjs/core\";\n\nconst TABS_INHERITED_ATTRS = [];\n\n/**\n * Tabs component to switch between tab content. Use in conjunction with `wcs-tab`.\n * \n * ## Accessibility guidelines 💡\n * > - Mobile display should be used for narrower screens (automatically set by default).\n * > - The component respects the W3C [tab pattern](https://www.w3.org/WAI/ARIA/apg/patterns/tabs/)\n * \n * @cssprop --wcs-tabs-indicator-height - Height of the tabs indicator \n * @cssprop --wcs-tabs-indicator-background-color - Background color of the tabs indicator\n * @cssprop --wcs-tabs-indicator-border-radius - Border radius of the tabs indicator\n * @cssprop --wcs-tabs-color-default - Text color of the tabs\n * @cssprop --wcs-tabs-color-hover - Text color of the tabs when hovered\n * @cssprop --wcs-tabs-color-press - Text color of the tabs when pressed\n * @cssprop --wcs-tabs-color-focus - Text color of the tabs when focused\n * @cssprop --wcs-tabs-color-selected - Text color of the tabs when selected\n * @cssprop --wcs-tabs-background-color-focus - Background color of the tabs when focused\n * @cssprop --wcs-tabs-background-color-hover - Background color of the tabs when hovered\n * @cssprop --wcs-tabs-background-color-press - Background color of the tabs when pressed\n * @cssprop --wcs-tabs-border-radius - Border radius of the tabs\n * @cssprop --wcs-tabs-border-color-focus - Outline color on a focused tab\n * @cssprop --wcs-tabs-font-weight-default - Font weight of the tabs\n * @cssprop --wcs-tabs-font-weight-selected - Font weight of the tabs when selected\n * @cssprop --wcs-tabs-padding-top - Padding top of the tabs\n * @cssprop --wcs-tabs-padding-right - Padding right of the tabs\n * @cssprop --wcs-tabs-padding-bottom - Padding bottom of the tabs\n * @cssprop --wcs-tabs-padding-left - Padding left of the tabs\n * @cssprop --wcs-tabs-headers-border-bottom - Border bottom (gutter) below the tabs\n * @cssprop --wcs-tabs-transition-duration - Transition duration of the tabs\n * @cssprop --wcs-tabs-mobile-breakpoint - Breakpoint for mobile display (default: 575px)\n * @cssprop --wcs-tabs-mobile-overlay-border-width - Border width of the mobile overlay\n * @cssprop --wcs-tabs-mobile-overlay-border-color - Border color of the mobile overlay\n * @cssprop --wcs-tabs-mobile-overlay-background-color - Background color of the mobile overlay\n * @cssprop --wcs-tabs-mobile-overlay-padding - Padding of the mobile overlay\n * @cssprop --wcs-tabs-mobile-overlay-border-radius - Border radius of the mobile overlay\n * @cssprop --wcs-tabs-mobile-gap - Gap between the mobile tabs in the overlay\n * @cssprop --wcs-tabs-mobile-padding - Padding of the mobile tabs in the overlay\n * @cssprop --wcs-tabs-mobile-height - Height of the mobile tabs in the overlay\n * @cssprop --wcs-tabs-mobile-font-weight-default - Default weight of the mobile tabs in the overlay\n * @cssprop --wcs-tabs-mobile-font-weight-active - Active font weight of the mobile tabs in the overlay\n * @cssprop --wcs-tabs-mobile-font-size - Font size of the mobile tabs in the overlay\n * @cssprop --wcs-tabs-mobile-color - Text color of the mobile tabs in the overlay\n * @cssprop --wcs-tabs-mobile-background-color-default - Default background color of the mobile tabs in the overlay\n * @cssprop --wcs-tabs-mobile-background-color-focus - Focused background color of the mobile tabs in the overlay\n * @cssprop --wcs-tabs-mobile-background-color-hover - Hovered background color of the mobile tabs in the overlay\n * @cssprop --wcs-tabs-mobile-background-color-press - Pressed background color of the mobile tabs in the overlay\n * @cssprop --wcs-tabs-mobile-border-radius - Border radius of the mobile tabs in the overlay\n */\n@Component({\n tag: 'wcs-tabs',\n styleUrl: 'tabs.scss',\n shadow: true,\n})\nexport class Tabs implements ComponentInterface, MutableAriaAttribute {\n @Element() private el!: HTMLWcsTabsElement;\n private nativeTablist!: HTMLElement;\n private inheritedAttributes: { [k: string]: any } = {};\n \n /**\n * Tab headers alignment.\n */\n @Prop({reflect: true}) align: WcsTabsAlignment = 'start';\n\n /**\n * Current selected tab index.\n * Starts at 0.\n */\n @Prop() selectedIndex: number = 0;\n\n @Prop() selectedKey: any;\n\n /**\n * Whether to skip rendering the tabpanel with the content of the selected tab. Use this prop if you plan to\n * separately render the tab content.\n */\n @Prop({ reflect: true }) headersOnly: boolean = false;\n /** Determines if tabs header should have a border at the bottom */\n @Prop({ reflect: true }) gutter: boolean;\n\n /**\n * Description is used to provide aria-label for the tabs container which has `role=\"tablist\"`.\n */\n @Prop() description: string;\n\n // region MOBILE\n \n /**\n * Mobile display : This div is shown on the user interface when the tabs are expanded\n * @private\n */\n private popoverDiv!: HTMLDivElement;\n\n private popper: Instance;\n \n @State() private mobileOverlayExpanded: boolean = false;\n\n /**\n * If true, the tabs will be displayed as a dropdown list containing the tabs. Useful for narrower screens.\n */\n @State() private mobile: boolean = false;\n\n /**\n * Mobile display: the selected tab semantically become a button that opens an overlay\n */\n private mobileButton!: HTMLButtonElement;\n\n /**\n * Observe the screen resize to switch between mobile and desktop mode\n */\n private resizeObserver: ResizeObserver;\n\n\n // endregion MOBILE\n\n /**\n *\n * Emitted when the selected tab change.\n */\n @Event() tabChange!: EventEmitter<WcsTabChangeEvent>;\n\n @State() private headers: string[] = [];\n\n @State() private currentActiveTabIndex = 0;\n\n private tabsId: number = tabsId++;\n\n @Watch('selectedIndex')\n selectedIndexChanged(newValue: number) {\n this.currentActiveTabIndex = newValue;\n }\n\n @Watch('selectedKey')\n selectedTabkeyChanged(newValue: any) {\n this.updateCurrentActiveIndexByTabKey(newValue);\n }\n \n @Watch('mobile')\n onMobileChange(newValue: boolean) {\n // Remove the popper instance when switching from mobile to desktop for performance\n if (!newValue) {\n this.popper.destroy();\n this.popper = null;\n }\n }\n\n private emitActiveTabChange() {\n this.tabChange.emit({\n tabName: this.headers[this.currentActiveTabIndex],\n tabIndex: this.currentActiveTabIndex,\n selectedKey: this.tabs[this.currentActiveTabIndex].itemKey\n });\n }\n\n private updateCurrentActiveIndexByTabKey(newValue: any) {\n for (let i = 0; i < this.tabs.length; i++) {\n const tab = this.tabs[i];\n if (tab.itemKey === newValue) {\n this.currentActiveTabIndex = i;\n }\n }\n }\n\n @Listen('tabLoaded')\n onTabLoaded() {\n this.refreshHeaders();\n }\n\n @Listen('click', {target: 'window'})\n onWindowClickEvent(event: MouseEvent) {\n if (this.mobile) {\n const clickedOnMobileButtonOrOverlay = event.composedPath().some(el => el === this.mobileButton || el === this.popoverDiv);\n if (this.mobileOverlayExpanded && !clickedOnMobileButtonOrOverlay) {\n this.mobileOverlayExpanded = false;\n }\n }\n }\n\n /**\n * Init resize observer for mobile\n */\n private tabsDidLoadWithResizeObserver(): ResizeObserver {\n const smallBreakpoint = getComputedStyle(this.el).getPropertyValue('--wcs-tabs-mobile-breakpoint') || '575px';\n const smallBreakpointValue = parseInt(smallBreakpoint, 10);\n\n return new ResizeObserver(entry => {\n const cr = entry[0].contentRect;\n const paddingRight = cr.right - cr.width;\n const paddingLeft = cr.left;\n // Switch to mobile mode if the screen is smaller than the breakpoint\n this.mobile = cr.width <= smallBreakpointValue - (paddingLeft + paddingRight);\n });\n }\n\n\n private initMobileOverlay() {\n this.popper = createPopper(this.mobileButton, this.popoverDiv, {\n placement: 'bottom-start',\n strategy: 'fixed',\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 8]\n }\n }\n ]\n });\n }\n\n componentDidLoad() {\n this.putTabsInCorrectDivIfTheyAreNot();\n this.refreshHeaders();\n if (this.selectedIndex) {\n this.currentActiveTabIndex = this.selectedIndex;\n }\n if (this.selectedKey) {\n this.updateCurrentActiveIndexByTabKey(this.selectedKey);\n }\n if (!this.resizeObserver) {\n this.resizeObserver = this.tabsDidLoadWithResizeObserver();\n this.resizeObserver.observe(document.body);\n }\n }\n\n componentDidRender() {\n if (this.mobile) {\n if(!this.popper) {\n this.initMobileOverlay();\n } else {\n this.popper.update();\n }\n }\n }\n\n // XXX: Firefox < 63\n private putTabsInCorrectDivIfTheyAreNot() {\n const tabDiv = this.el.shadowRoot.querySelector('.wcs-tabs');\n if (tabDiv.querySelector('slot') === null) {\n Array.from(this.el.querySelectorAll('wcs-tab'))\n .filter(node => node.parentNode !== tabDiv)\n .forEach(tab => {\n if (tab.parentElement.isEqualNode(this.el)) {\n this.el.removeChild(tab);\n tabDiv.appendChild(tab);\n }\n });\n }\n }\n\n handleKeyDown(ev: KeyboardEvent, tabIndex: number) {\n const target = ev.target as HTMLDivElement;\n switch (ev.key) {\n case ' ':\n case 'Enter': {\n this.selectTabAndEmitChangeEvent(tabIndex);\n ev.preventDefault();\n break;\n }\n case 'ArrowLeft': {\n if (target.previousElementSibling?.classList.contains('wcs-tab-header')) {\n (target.previousElementSibling as HTMLDivElement).focus();\n ev.preventDefault();\n }\n break;\n }\n case 'ArrowRight': {\n if (target.nextElementSibling?.classList.contains('wcs-tab-header')) {\n (target.nextElementSibling as HTMLDivElement).focus();\n ev.preventDefault();\n }\n break;\n }\n case 'Home': {\n const firstTab = this.el.shadowRoot.querySelector('.wcs-tab-header:first-child');\n if (firstTab) {\n (firstTab as HTMLDivElement).focus();\n ev.preventDefault();\n }\n break;\n }\n case 'End': {\n const lastTab = this.el.shadowRoot.querySelector('.wcs-tab-header:last-child');\n if (lastTab) {\n (lastTab as HTMLDivElement).focus();\n ev.preventDefault();\n }\n break;\n }\n }\n }\n\n handleKeyDownMobile(ev: KeyboardEvent, tabIndex: number) {\n const target = ev.target as HTMLDivElement;\n switch (ev.key) {\n case ' ':\n case 'Enter': {\n this.selectTabAndEmitChangeEvent(tabIndex);\n ev.preventDefault();\n break;\n }\n case 'ArrowUp': {\n if (target.previousElementSibling?.classList.contains('wcs-tab-header-mobile')) {\n (target.previousElementSibling as HTMLDivElement).focus();\n ev.preventDefault();\n }\n break;\n }\n case 'ArrowDown': {\n if (target.nextElementSibling?.classList.contains('wcs-tab-header-mobile')) {\n (target.nextElementSibling as HTMLDivElement).focus();\n ev.preventDefault();\n }\n break;\n }\n case 'Home': {\n const firstTab = this.el.shadowRoot.querySelector('.wcs-tab-header-mobile:first-child');\n if (firstTab) {\n (firstTab as HTMLDivElement).focus();\n ev.preventDefault();\n }\n break;\n }\n case 'End': {\n const lastTab = this.el.shadowRoot.querySelector('.wcs-tab-header-mobile:last-child');\n if (lastTab) {\n (lastTab as HTMLDivElement).focus();\n ev.preventDefault();\n }\n break;\n }\n case 'Escape': {\n this.mobileOverlayExpanded = false;\n ev.preventDefault();\n break;\n }\n }\n }\n\n private refreshHeaders() {\n this.headers = [];\n this.tabs\n .forEach(x => {\n this.headers.push(x.getAttribute('header'));\n });\n }\n\n private get tabs() {\n const tabsEl = this.el.shadowRoot.querySelector('.wcs-tabs');\n // FIXME: problem with this selector being too greedy in ff < 63\n const tabs = this.el.shadowRoot.querySelectorAll('.wcs-tabs > wcs-tab');\n\n return tabs.length !== 0\n ? tabs\n : tabsEl?.querySelector('slot')\n ? tabsEl?.querySelector('slot')?.assignedElements() as unknown as NodeListOf<HTMLWcsTabElement>\n : [];\n }\n\n private selectTabAndEmitChangeEvent(index: number) {\n this.currentActiveTabIndex = index;\n this.emitActiveTabChange();\n \n if (this.mobile) {\n this.mobileOverlayExpanded = false;\n this.mobileButton?.focus();\n \n }\n }\n\n componentWillUpdate() {\n if (!this.headersOnly) {\n this.updateTabVisibility();\n } else {\n this.hideAllTabsContent();\n }\n }\n\n componentWillLoad(): Promise<void> | void {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el),\n ...inheritAttributes(this.el, TABS_INHERITED_ATTRS),\n };\n }\n\n disconnectedCallback(): void {\n if (this.popper) {\n this.popper.destroy();\n this.popper = null;\n }\n this.resizeObserver?.disconnect();\n }\n\n @Method()\n async setAriaAttribute(attr: AriaAttributeName, value: string | null | undefined) {\n setOrRemoveAttribute(this.mobile ? this.popoverDiv : this.nativeTablist, attr, value);\n }\n\n private updateTabVisibility() {\n this.tabs.forEach((el: HTMLWcsTabElement, idx: number) => {\n if (idx !== this.currentActiveTabIndex) {\n el.hidden = true;\n } else {\n el.hidden = false;\n }\n });\n }\n\n private hideAllTabsContent() {\n this.tabs.forEach((el: HTMLWcsTabElement) => el.hidden = true);\n }\n \n onMobileButtonClick() {\n this.mobileOverlayExpanded = !this.mobileOverlayExpanded;\n const tabElementToFocus = this.popoverDiv.querySelectorAll('[role=tab]')[this.currentActiveTabIndex] as HTMLElement;\n requestAnimationFrame(() => {\n tabElementToFocus?.focus();\n })\n }\n \n onMobileButtonKeyDown(ev: KeyboardEvent) {\n if (ev.key === 'ArrowDown' || ev.key === 'ArrowUp') {\n this.onMobileButtonClick();\n }\n }\n\n mobileLayout() {\n return [\n <button id=\"mobile-button\"\n class=\"wcs-tab-header active\"\n aria-controls=\"menu\"\n role=\"button\"\n aria-expanded={this.mobileOverlayExpanded ? 'true' : 'false'}\n ref={el => this.mobileButton = el}\n onClick={() => this.onMobileButtonClick()}\n onKeyDown={(evt) => this.onMobileButtonKeyDown(evt)}\n onBlur={($event) => $event.stopImmediatePropagation()}>\n <span>\n {this.headers[this.currentActiveTabIndex]} <SelectArrow up={this.mobileOverlayExpanded}/>\n </span>\n </button>,\n <div class={(this.mobileOverlayExpanded ? 'show ' : '') + 'popover'}\n role=\"tablist\"\n id=\"menu\"\n aria-label={this.description}\n aria-orientation=\"vertical\"\n ref={el => this.popoverDiv = el}\n tabIndex={-1}\n {...this.inheritedAttributes}>\n {this.headers.map((header, idx) =>\n <div class={'wcs-tab-header-mobile ' + (this.currentActiveTabIndex === idx ? 'mobile-active' : '')}\n onClick={() => this.selectTabAndEmitChangeEvent(idx)}\n onKeyDown={evt => this.handleKeyDownMobile(evt, idx)}\n tabIndex={this.currentActiveTabIndex === idx ? 0 : -1}\n role=\"tab\"\n id={`tabs-id-${this.tabsId}-tab-id-${idx}`}\n // aria-controls refers to ID of the tab panel related to the header\n aria-controls={`tabs-id-${this.tabsId}-tab-panel-${idx}`}\n aria-label={header}\n aria-selected={this.currentActiveTabIndex === idx ? 'true' : 'false'}\n >\n <span>{header}</span>\n </div>\n )}\n </div>\n ]\n }\n \n desktopLayout() {\n return (\n this.headers.map((header, idx) =>\n <div class={'wcs-tab-header ' + (this.currentActiveTabIndex === idx ? 'active' : '')}\n onClick={() => this.selectTabAndEmitChangeEvent(idx)}\n onKeyDown={evt => this.handleKeyDown(evt, idx)}\n tabIndex={this.currentActiveTabIndex === idx ? 0 : -1}\n role=\"tab\"\n id={`tabs-id-${this.tabsId}-tab-id-${idx}`}\n // aria-controls refers to ID of the tab panel related to the header\n aria-controls={`tabs-id-${this.tabsId}-tab-panel-${idx}`}\n aria-label={header}\n aria-selected={this.currentActiveTabIndex === idx ? 'true' : 'false'}\n >\n <span>{header}</span>\n </div>\n )\n )\n }\n\n render() {\n return (\n <Host>\n <div class=\"wcs-tabs-headers\"\n role={this.mobile ? null : 'tablist'}\n ref={(el) => (this.nativeTablist = el)}\n aria-orientation={this.mobile ? null : 'horizontal'}\n aria-label={this.mobile ? null : this.description}\n {...(!this.mobile && this.inheritedAttributes)}>\n {this.mobile ? this.mobileLayout() : this.desktopLayout()}\n </div>\n <div class=\"wcs-tabs\">\n <slot onSlotchange={() => this.onTabsSlotChange()} name=\"wcs-tab\"/>\n </div>\n </Host>\n );\n }\n\n /**\n * Observe when a new tab panel is added to the slot to let's handle accessibility properties for tabs panel:\n * - id: to let header tab refers it proper panel\n * - aria-label: take the same name as it's referenced header name\n * \n * @private\n */\n private onTabsSlotChange() {\n let tabId = 0;\n this.refreshHeaders();\n this.tabs.forEach(tab => {\n tab.setAttribute(\"aria-label\", this.headers.at(tabId));\n // set an ID to set aria-controls on header tab \n // (https://www.w3.org/WAI/ARIA/apg/patterns/tabs/examples/tabs-automatic/#:~:text=Refers%20to%20the%20element)\n tab.setAttribute(\"id\", `tabs-id-${this.tabsId}-tab-panel-${tabId}`);\n tabId++;\n });\n }\n}\n\nlet tabsId = 0;\n"]}
|
|
@@ -170,7 +170,7 @@ export class Textarea {
|
|
|
170
170
|
render() {
|
|
171
171
|
const value = this.getValue();
|
|
172
172
|
const style = Object.assign({}, (this.resize && { 'resize': this.resize }));
|
|
173
|
-
return (h(Host, { key: '
|
|
173
|
+
return (h(Host, { key: '2ffd19f34c0feb9a49931942e48d7b7193ff377e', "aria-disabled": this.disabled ? 'true' : null }, this.icon ? (h("wcs-mat-icon", { icon: this.icon, size: "m" })) : null, h("textarea", Object.assign({ key: 'ce0c430d962cf93b962c7a6227ec98d6cfcc46f0', class: "native-textarea", ref: el => this.nativeInput = el, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, disabled: this.disabled, maxLength: this.maxlength, minLength: this.minlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, style: style }, this.inheritedAttributes), value)));
|
|
174
174
|
}
|
|
175
175
|
static get is() { return "wcs-textarea"; }
|
|
176
176
|
static get encapsulation() { return "shadow"; }
|
|
@@ -445,7 +445,7 @@ export class Textarea {
|
|
|
445
445
|
"text": "If `true`, the user must fill in a value before submitting a form."
|
|
446
446
|
},
|
|
447
447
|
"attribute": "required",
|
|
448
|
-
"reflect":
|
|
448
|
+
"reflect": true,
|
|
449
449
|
"defaultValue": "false"
|
|
450
450
|
},
|
|
451
451
|
"spellcheck": {
|
|
@@ -562,7 +562,7 @@ export class Textarea {
|
|
|
562
562
|
"text": "If `true`, the element height will increase based on the value."
|
|
563
563
|
},
|
|
564
564
|
"attribute": "auto-grow",
|
|
565
|
-
"reflect":
|
|
565
|
+
"reflect": true,
|
|
566
566
|
"defaultValue": "false"
|
|
567
567
|
},
|
|
568
568
|
"value": {
|