@siemens/element-ng 47.5.0 → 47.7.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 +4 -1
- package/about/index.d.ts +7 -0
- package/about/package.json +3 -0
- package/about/si-about-data.model.d.ts +49 -0
- package/about/si-about.component.d.ts +71 -0
- package/about/si-about.module.d.ts +7 -0
- package/accordion/index.d.ts +1 -1
- package/accordion/si-accordion.component.d.ts +1 -1
- package/accordion/si-collapsible-panel.component.d.ts +1 -1
- package/action-modal/index.d.ts +1 -1
- package/action-modal/si-action-dialog.types.d.ts +1 -1
- package/application-header/index.d.ts +1 -1
- package/application-header/launchpad/si-launchpad.model.d.ts +1 -1
- package/application-header/si-header-action-item-icon-base.directive.d.ts +1 -1
- package/application-header/si-header-action-item.base.d.ts +1 -1
- package/application-header/si-header-logo.directive.d.ts +1 -1
- package/assets/images/landing-page-steel.webp +0 -0
- package/auto-collapsable-list/index.d.ts +1 -1
- package/auto-collapsable-list/si-auto-collapsable-list-item.directive.d.ts +1 -1
- package/auto-collapsable-list/si-auto-collapsable-list-measurable.class.d.ts +1 -1
- package/auto-collapsable-list/si-auto-collapsable-list.directive.d.ts +1 -1
- package/autocomplete/index.d.ts +1 -1
- package/autocomplete/si-autocomplete-option.directive.d.ts +1 -1
- package/autocomplete/si-autocomplete.model.d.ts +1 -1
- package/avatar/index.d.ts +1 -1
- package/avatar/si-avatar-background-color.directive.d.ts +1 -1
- package/badge/index.d.ts +1 -1
- package/breadcrumb/breadcrumb-item.model.d.ts +1 -1
- package/breadcrumb/index.d.ts +1 -1
- package/breadcrumb-router/index.d.ts +8 -0
- package/breadcrumb-router/package.json +3 -0
- package/breadcrumb-router/si-breadcrumb-default-resolver.service.d.ts +23 -0
- package/breadcrumb-router/si-breadcrumb-router.component.d.ts +30 -0
- package/breadcrumb-router/si-breadcrumb-router.model.d.ts +53 -0
- package/breadcrumb-router/si-breadcrumb-router.module.d.ts +7 -0
- package/card/index.d.ts +1 -1
- package/circle-status/index.d.ts +1 -1
- package/color-picker/index.d.ts +1 -1
- package/column-selection-dialog/index.d.ts +1 -1
- package/column-selection-dialog/si-column-selection-dialog.types.d.ts +1 -1
- package/common/decorators/index.d.ts +1 -1
- package/common/decorators/webcomponent.decorator.d.ts +1 -1
- package/common/helpers/animation.helpers.d.ts +1 -1
- package/common/helpers/global-events.helpers.d.ts +1 -1
- package/common/helpers/index.d.ts +1 -1
- package/common/helpers/overlay-helper.d.ts +1 -1
- package/common/helpers/rtl.d.ts +1 -1
- package/common/helpers/track-by.helper.d.ts +1 -1
- package/common/index.d.ts +1 -1
- package/common/models/color-variant.model.d.ts +1 -1
- package/common/models/index.d.ts +1 -1
- package/common/models/menu.model.d.ts +1 -1
- package/common/models/positions.model.d.ts +1 -1
- package/common/models/status-type.model.d.ts +1 -1
- package/common/services/index.d.ts +1 -1
- package/connection-strength/index.d.ts +1 -1
- package/content-action-bar/index.d.ts +1 -1
- package/content-action-bar/si-content-action-bar.component.d.ts +1 -1
- package/content-action-bar/si-content-action-bar.model.d.ts +3 -3
- package/copyright-notice/index.d.ts +1 -1
- package/copyright-notice/si-copyright-notice.d.ts +1 -1
- package/datatable/index.d.ts +1 -1
- package/datatable/si-datatable-interaction.directive.d.ts +1 -1
- package/date-range-filter/index.d.ts +1 -1
- package/date-range-filter/si-date-range-filter.component.d.ts +5 -1
- package/date-range-filter/si-date-range-filter.types.d.ts +1 -1
- package/date-range-filter/si-relative-date.component.d.ts +1 -1
- package/datepicker/components/si-calendar-date-cell.directive.d.ts +1 -1
- package/datepicker/components/si-initial-focus.component.d.ts +1 -1
- package/datepicker/index.d.ts +1 -1
- package/datepicker/si-datepicker.directive.d.ts +1 -1
- package/datepicker/si-datepicker.model.d.ts +1 -1
- package/datepicker/si-timepicker.component.d.ts +1 -1
- package/electron-titlebar/electron.helpers.d.ts +1 -1
- package/electron-titlebar/index.d.ts +1 -1
- package/empty-state/index.d.ts +1 -1
- package/fesm2022/siemens-element-ng-about.mjs +157 -0
- package/fesm2022/siemens-element-ng-about.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-accordion.mjs +11 -12
- package/fesm2022/siemens-element-ng-accordion.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-action-modal.mjs +15 -16
- package/fesm2022/siemens-element-ng-action-modal.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-application-header.mjs +29 -30
- package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-auto-collapsable-list.mjs +7 -7
- package/fesm2022/siemens-element-ng-auto-collapsable-list.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-autocomplete.mjs +5 -5
- package/fesm2022/siemens-element-ng-autocomplete.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-avatar.mjs +4 -4
- package/fesm2022/siemens-element-ng-avatar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-badge.mjs +2 -2
- package/fesm2022/siemens-element-ng-badge.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-breadcrumb-router.mjs +263 -0
- package/fesm2022/siemens-element-ng-breadcrumb-router.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-breadcrumb.mjs +8 -9
- package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-card.mjs +7 -8
- package/fesm2022/siemens-element-ng-card.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-circle-status.mjs +6 -7
- package/fesm2022/siemens-element-ng-circle-status.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-color-picker.mjs +6 -7
- package/fesm2022/siemens-element-ng-color-picker.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-column-selection-dialog.mjs +11 -12
- package/fesm2022/siemens-element-ng-column-selection-dialog.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-common.mjs +14 -14
- package/fesm2022/siemens-element-ng-common.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-connection-strength.mjs +3 -3
- package/fesm2022/siemens-element-ng-connection-strength.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-content-action-bar.mjs +9 -10
- package/fesm2022/siemens-element-ng-content-action-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-copyright-notice.mjs +4 -4
- package/fesm2022/siemens-element-ng-copyright-notice.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-datatable.mjs +2 -2
- package/fesm2022/siemens-element-ng-datatable.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-date-range-filter.mjs +33 -14
- package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-datepicker.mjs +48 -54
- package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-electron-titlebar.mjs +7 -8
- package/fesm2022/siemens-element-ng-electron-titlebar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-empty-state.mjs +6 -7
- package/fesm2022/siemens-element-ng-empty-state.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-file-uploader.mjs +9 -10
- package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filter-bar.mjs +10 -11
- package/fesm2022/siemens-element-ng-filter-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filtered-search.mjs +19 -20
- package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-footer.mjs +7 -8
- package/fesm2022/siemens-element-ng-footer.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-form.mjs +20 -23
- package/fesm2022/siemens-element-ng-form.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-formly.mjs +48 -55
- package/fesm2022/siemens-element-ng-formly.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-header-dropdown.mjs +8 -9
- package/fesm2022/siemens-element-ng-header-dropdown.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-icon-status.mjs +3 -3
- package/fesm2022/siemens-element-ng-icon-status.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-icon.mjs +22 -37
- package/fesm2022/siemens-element-ng-icon.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-info-page.mjs +5 -6
- package/fesm2022/siemens-element-ng-info-page.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-inline-notification.mjs +6 -7
- package/fesm2022/siemens-element-ng-inline-notification.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-ip-input.mjs +4 -4
- package/fesm2022/siemens-element-ng-ip-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-landing-page.mjs +121 -0
- package/fesm2022/siemens-element-ng-landing-page.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-language-switcher.mjs +9 -10
- package/fesm2022/siemens-element-ng-language-switcher.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-link.mjs +6 -6
- package/fesm2022/siemens-element-ng-link.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-list-details.mjs +15 -16
- package/fesm2022/siemens-element-ng-list-details.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-loading-spinner.mjs +13 -14
- package/fesm2022/siemens-element-ng-loading-spinner.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-localization.mjs +6 -6
- package/fesm2022/siemens-element-ng-localization.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-main-detail-container.mjs +268 -0
- package/fesm2022/siemens-element-ng-main-detail-container.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-menu.mjs +22 -22
- package/fesm2022/siemens-element-ng-menu.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-modal.mjs +5 -5
- package/fesm2022/siemens-element-ng-modal.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar-vertical.mjs +801 -0
- package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-navbar.mjs +11 -12
- package/fesm2022/siemens-element-ng-navbar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-number-input.mjs +7 -8
- package/fesm2022/siemens-element-ng-number-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-pagination.mjs +6 -7
- package/fesm2022/siemens-element-ng-pagination.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-password-strength.mjs +6 -6
- package/fesm2022/siemens-element-ng-password-strength.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-password-toggle.mjs +8 -9
- package/fesm2022/siemens-element-ng-password-toggle.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-phone-number.mjs +16 -17
- package/fesm2022/siemens-element-ng-phone-number.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-photo-upload.mjs +7 -9
- package/fesm2022/siemens-element-ng-photo-upload.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-pills-input.mjs +14 -15
- package/fesm2022/siemens-element-ng-pills-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-popover-next.mjs +5 -5
- package/fesm2022/siemens-element-ng-popover-next.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-popover.mjs +3 -3
- package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-progressbar.mjs +7 -8
- package/fesm2022/siemens-element-ng-progressbar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-resize-observer.mjs +11 -8
- package/fesm2022/siemens-element-ng-resize-observer.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-result-details-list.mjs +6 -7
- package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-search-bar.mjs +6 -6
- package/fesm2022/siemens-element-ng-search-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-select.mjs +39 -40
- package/fesm2022/siemens-element-ng-select.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-shadow-root.mjs +2 -2
- package/fesm2022/siemens-element-ng-shadow-root.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-side-panel.mjs +13 -14
- package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-skip-links.mjs +7 -8
- package/fesm2022/siemens-element-ng-skip-links.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-slider.mjs +7 -8
- package/fesm2022/siemens-element-ng-slider.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-sort-bar.mjs +6 -7
- package/fesm2022/siemens-element-ng-sort-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-split.mjs +6 -7
- package/fesm2022/siemens-element-ng-split.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-status-bar.mjs +13 -14
- package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-status-toggle.mjs +5 -6
- package/fesm2022/siemens-element-ng-status-toggle.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-summary-chip.mjs +5 -6
- package/fesm2022/siemens-element-ng-summary-chip.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-summary-widget.mjs +5 -6
- package/fesm2022/siemens-element-ng-summary-widget.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-system-banner.mjs +5 -6
- package/fesm2022/siemens-element-ng-system-banner.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tabs-next.mjs +44 -180
- package/fesm2022/siemens-element-ng-tabs-next.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tabs.mjs +9 -16
- package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-theme.mjs +3 -3
- package/fesm2022/siemens-element-ng-theme.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-threshold.mjs +318 -0
- package/fesm2022/siemens-element-ng-threshold.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-toast-notification.mjs +9 -10
- package/fesm2022/siemens-element-ng-toast-notification.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tooltip.mjs +7 -8
- package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tour.mjs +383 -0
- package/fesm2022/siemens-element-ng-tour.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-translate.mjs +1 -1
- package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tree-view.mjs +23 -24
- package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-typeahead.mjs +12 -13
- package/fesm2022/siemens-element-ng-typeahead.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-unauthorized-page.mjs +6 -7
- package/fesm2022/siemens-element-ng-unauthorized-page.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-wizard.mjs +8 -9
- package/fesm2022/siemens-element-ng-wizard.mjs.map +1 -1
- package/fesm2022/siemens-element-ng.mjs +1 -1
- package/fesm2022/siemens-element-ng.mjs.map +1 -1
- package/file-uploader/index.d.ts +1 -1
- package/file-uploader/si-file-uploader.model.d.ts +1 -1
- package/filter-bar/filter.d.ts +1 -1
- package/filter-bar/index.d.ts +1 -1
- package/filtered-search/index.d.ts +1 -1
- package/filtered-search/si-filtered-search-value.component.d.ts +1 -1
- package/filtered-search/si-filtered-search.component.d.ts +1 -1
- package/filtered-search/si-filtered-search.model.d.ts +1 -1
- package/filtered-search/values/si-filtered-search-value.base.d.ts +1 -1
- package/filtered-search/values/typeahead/si-filtered-search-typeahead.component.d.ts +1 -1
- package/footer/index.d.ts +1 -1
- package/form/form-fieldset/si-form-fieldset.component.d.ts +1 -1
- package/form/index.d.ts +1 -1
- package/form/si-form-container/si-form-container.component.d.ts +24 -24
- package/form/si-form-item/si-form-field-native.control.d.ts +1 -1
- package/form/si-form-item.control.d.ts +1 -1
- package/form/si-form-validation-error.model.d.ts +1 -1
- package/form/si-form-validation-error.provider.d.ts +1 -1
- package/form/si-form-validation-tooltip/si-form-validation-tooltip.component.d.ts +1 -1
- package/form/si-form-validation-tooltip/si-form-validation-tooltip.directive.d.ts +1 -1
- package/form/si-form.module.d.ts +1 -1
- package/formly/fields/datetime/si-formly-datetime.component.d.ts +1 -1
- package/formly/fields/textarea/si-formly-textarea.component.d.ts +1 -1
- package/formly/fields/time/si-formly-time.component.d.ts +1 -1
- package/formly/index.d.ts +1 -1
- package/formly/si-formly-translate.extension.d.ts +1 -3
- package/formly/si-formly.component.d.ts +1 -1
- package/formly/structural/si-formly-accordion/si-formly-accordion.component.d.ts +1 -1
- package/formly/structural/si-formly-object-grid/si-formly-object-grid.component.d.ts +1 -1
- package/formly/structural/si-formly-object-grid/si-formly-object-grid.model.d.ts +1 -1
- package/formly/utils.d.ts +1 -1
- package/formly/wrapper/si-formly-form-field-provider.directive.d.ts +1 -1
- package/header-dropdown/index.d.ts +1 -1
- package/header-dropdown/si-header.model.d.ts +1 -1
- package/icon/element-icons.d.ts +1 -1
- package/icon/icon-status.d.ts +1 -1
- package/icon/index.d.ts +1 -1
- package/icon/si-status-icon.component.d.ts +1 -6
- package/icon-status/index.d.ts +1 -1
- package/info-page/index.d.ts +1 -1
- package/inline-notification/index.d.ts +1 -1
- package/ip-input/address-utils.d.ts +1 -1
- package/ip-input/address-validators.d.ts +1 -1
- package/ip-input/index.d.ts +1 -1
- package/ip-input/si-ip-input.directive.d.ts +1 -1
- package/landing-page/alert-config.model.d.ts +15 -0
- package/landing-page/index.d.ts +7 -0
- package/landing-page/package.json +3 -0
- package/landing-page/si-landing-page.component.d.ts +74 -0
- package/landing-page/si-landing-page.module.d.ts +7 -0
- package/language-switcher/index.d.ts +1 -1
- package/language-switcher/iso-language-value.d.ts +1 -1
- package/language-switcher/si-language-switcher.component.d.ts +1 -2
- package/link/aria-current.model.d.ts +1 -1
- package/link/index.d.ts +1 -1
- package/link/link.model.d.ts +1 -1
- package/list-details/index.d.ts +1 -1
- package/list-details/si-details-pane-header/si-details-pane-header.component.d.ts +1 -1
- package/loading-spinner/index.d.ts +1 -1
- package/localization/index.d.ts +1 -1
- package/localization/si-directionality.d.ts +1 -1
- package/localization/si-locale-store.d.ts +1 -1
- package/main-detail-container/index.d.ts +6 -0
- package/main-detail-container/package.json +3 -0
- package/main-detail-container/si-main-detail-container.component.d.ts +151 -0
- package/main-detail-container/si-main-detail-container.module.d.ts +7 -0
- package/menu/index.d.ts +1 -1
- package/menu/si-menu-action.service.d.ts +1 -1
- package/menu/si-menu-factory.component.d.ts +1 -1
- package/menu/si-menu-item-checkbox.component.d.ts +2 -1
- package/menu/si-menu-model.d.ts +1 -1
- package/modal/index.d.ts +1 -1
- package/modal/modal.helpers.d.ts +1 -1
- package/modal/modalref.d.ts +1 -1
- package/navbar/account.model.d.ts +1 -1
- package/navbar/index.d.ts +1 -1
- package/navbar/si-navbar-item/index.d.ts +1 -1
- package/navbar/si-navbar-primary/index.d.ts +1 -1
- package/navbar/si-navbar-primary/si-navbar-primary.model.d.ts +1 -1
- package/navbar-vertical/index.d.ts +7 -0
- package/navbar-vertical/package.json +3 -0
- package/navbar-vertical/si-navbar-vertical-divider.component.d.ts +5 -0
- package/navbar-vertical/si-navbar-vertical-group-trigger.directive.d.ts +38 -0
- package/navbar-vertical/si-navbar-vertical-group.component.d.ts +16 -0
- package/navbar-vertical/si-navbar-vertical-header.component.d.ts +6 -0
- package/navbar-vertical/si-navbar-vertical-item-legacy.component.d.ts +17 -0
- package/navbar-vertical/si-navbar-vertical-item.component.d.ts +21 -0
- package/navbar-vertical/si-navbar-vertical.component.d.ts +148 -0
- package/navbar-vertical/si-navbar-vertical.model.d.ts +77 -0
- package/navbar-vertical/si-navbar-vertical.module.d.ts +7 -0
- package/navbar-vertical/si-navbar-vertical.provider.d.ts +7 -0
- package/number-input/index.d.ts +1 -1
- package/number-input/si-number-input.component.d.ts +1 -1
- package/package.json +32 -4
- package/pagination/index.d.ts +1 -1
- package/password-strength/index.d.ts +1 -1
- package/password-strength/si-password-strength.component.d.ts +1 -1
- package/password-toggle/index.d.ts +1 -1
- package/phone-number/index.d.ts +1 -1
- package/phone-number/si-phone-number-input.models.d.ts +1 -1
- package/photo-upload/index.d.ts +1 -1
- package/pills-input/index.d.ts +1 -1
- package/pills-input/si-pills-input-pattern-base.d.ts +1 -1
- package/pills-input/si-pills-input.component.d.ts +1 -1
- package/popover/index.d.ts +1 -1
- package/popover/si-popover.component.d.ts +1 -1
- package/popover-next/index.d.ts +1 -1
- package/progressbar/index.d.ts +1 -1
- package/public-api.d.ts +1 -1
- package/resize-observer/index.d.ts +1 -1
- package/resize-observer/si-resize-observer.directive.d.ts +4 -2
- package/resize-observer/si-responsive-container.directive.d.ts +1 -1
- package/result-details-list/index.d.ts +1 -1
- package/result-details-list/si-result-details-list.datamodel.d.ts +1 -1
- package/search-bar/index.d.ts +1 -1
- package/search-bar/si-search-bar.component.d.ts +1 -1
- package/select/index.d.ts +1 -1
- package/select/options/si-select-complex-options.directive.d.ts +1 -1
- package/select/options/si-select-lazy-options.directive.d.ts +1 -1
- package/select/options/si-select-option.source.d.ts +1 -1
- package/select/options/si-select-options-strategy.base.d.ts +1 -1
- package/select/options/si-select-options-strategy.d.ts +1 -1
- package/select/options/si-select-simple-options.directive.d.ts +1 -1
- package/select/select-input/si-select-input.component.d.ts +1 -1
- package/select/select-list/si-select-list.base.d.ts +1 -1
- package/select/select-list/si-select-list.component.d.ts +1 -1
- package/select/select-option/si-select-option-row.component.d.ts +1 -1
- package/select/selection/si-select-selection-strategy.d.ts +1 -1
- package/select/si-select.types.d.ts +1 -1
- package/shadow-root/index.d.ts +1 -1
- package/shadow-root/si-shadow-root.directive.d.ts +1 -1
- package/side-panel/index.d.ts +1 -1
- package/side-panel/si-side-panel.service.d.ts +1 -1
- package/side-panel/side-panel.model.d.ts +1 -1
- package/skip-links/index.d.ts +1 -1
- package/skip-links/si-skip-link-target.directive.d.ts +1 -1
- package/slider/index.d.ts +1 -1
- package/sort-bar/index.d.ts +1 -1
- package/sort-bar/si-sort-bar.component.d.ts +1 -1
- package/split/index.d.ts +1 -1
- package/split/si-split.interfaces.d.ts +1 -1
- package/status-bar/index.d.ts +1 -1
- package/status-bar/si-status-bar-item/index.d.ts +1 -1
- package/status-bar/si-status-bar-item/si-status-bar-item.model.d.ts +1 -1
- package/status-toggle/index.d.ts +1 -1
- package/status-toggle/status-toggle.model.d.ts +1 -1
- package/summary-chip/index.d.ts +1 -1
- package/summary-widget/index.d.ts +1 -1
- package/system-banner/index.d.ts +1 -1
- package/tabs/index.d.ts +1 -1
- package/tabs/si-tab/index.d.ts +1 -1
- package/tabs/si-tab/si-tab.component.d.ts +1 -1
- package/tabs/si-tabset/index.d.ts +1 -1
- package/tabs-next/index.d.ts +1 -1
- package/tabs-next/si-tab-next-base.directive.d.ts +3 -6
- package/tabs-next/si-tab-next-link.component.d.ts +0 -2
- package/tabs-next/si-tabs-tokens.d.ts +1 -1
- package/tabs-next/si-tabset-next.component.d.ts +4 -19
- package/template-i18n.json +16 -0
- package/theme/index.d.ts +1 -1
- package/theme/si-theme-store.d.ts +1 -1
- package/theme/si-theme.model.d.ts +1 -1
- package/threshold/index.d.ts +6 -0
- package/threshold/package.json +3 -0
- package/threshold/si-readonly-threshold-option.component.d.ts +11 -0
- package/threshold/si-threshold.component.d.ts +147 -0
- package/threshold/si-threshold.module.d.ts +7 -0
- package/toast-notification/index.d.ts +1 -1
- package/toast-notification/si-toast.model.d.ts +1 -1
- package/tooltip/index.d.ts +1 -1
- package/tooltip/si-tooltip.component.d.ts +1 -1
- package/tooltip/si-tooltip.directive.d.ts +1 -1
- package/tooltip/si-tooltip.service.d.ts +1 -1
- package/tour/index.d.ts +6 -0
- package/tour/package.json +3 -0
- package/tour/si-tour-highlight.component.d.ts +15 -0
- package/tour/si-tour-token.model.d.ts +27 -0
- package/tour/si-tour.component.d.ts +31 -0
- package/tour/si-tour.model.d.ts +51 -0
- package/tour/si-tour.service.d.ts +62 -0
- package/translate/index.d.ts +1 -1
- package/translate/si-translatable-keys.interface.d.ts +16 -0
- package/translate/si-translatable-overrides.provider.d.ts +1 -1
- package/tree-view/drag-drop.util.d.ts +1 -1
- package/tree-view/index.d.ts +1 -1
- package/tree-view/si-tree-view-item/si-tree-view-item.component.d.ts +1 -1
- package/tree-view/si-tree-view-item/si-tree-view-item.directive.d.ts +1 -1
- package/tree-view/si-tree-view-item-context.d.ts +1 -1
- package/tree-view/si-tree-view-item-height.service.d.ts +1 -1
- package/tree-view/si-tree-view-item-template.directive.d.ts +1 -1
- package/tree-view/si-tree-view.component.d.ts +1 -1
- package/tree-view/si-tree-view.model.d.ts +1 -1
- package/tree-view/si-tree-view.service.d.ts +1 -1
- package/tree-view/si-tree-view.utils.d.ts +1 -1
- package/typeahead/index.d.ts +1 -1
- package/typeahead/si-typeahead.directive.d.ts +1 -1
- package/typeahead/si-typeahead.model.d.ts +1 -1
- package/typeahead/si-typeahead.sorting.d.ts +1 -1
- package/unauthorized-page/index.d.ts +1 -1
- package/wizard/index.d.ts +1 -1
|
@@ -3,18 +3,17 @@ import { CdkMenu, CdkMenuTrigger } from '@angular/cdk/menu';
|
|
|
3
3
|
import { NgClass, NgTemplateOutlet } from '@angular/common';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
5
|
import { InjectionToken, input, booleanAttribute, output, computed, inject, ElementRef, viewChild, TemplateRef, Directive, signal, effect, ChangeDetectionStrategy, Component, model, contentChildren, INJECTOR } from '@angular/core';
|
|
6
|
-
import * as i1
|
|
6
|
+
import * as i1 from '@angular/router';
|
|
7
7
|
import { Router, RouterLink, RouterLinkActive } from '@angular/router';
|
|
8
8
|
import { SiMenuDirective, SiMenuItemComponent } from '@siemens/element-ng/menu';
|
|
9
|
-
import * as
|
|
9
|
+
import * as i1$1 from '@siemens/element-ng/resize-observer';
|
|
10
10
|
import { SiResizeObserverModule } from '@siemens/element-ng/resize-observer';
|
|
11
|
-
import
|
|
12
|
-
import { SiTranslateModule } from '@siemens/element-translate-ng/translate';
|
|
11
|
+
import { SiTranslatePipe } from '@siemens/element-translate-ng/translate';
|
|
13
12
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
14
13
|
import { addIcons, elementCancel, SiIconNextComponent } from '@siemens/element-ng/icon';
|
|
15
14
|
|
|
16
15
|
/**
|
|
17
|
-
* Copyright Siemens 2016 - 2025
|
|
16
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
18
17
|
* SPDX-License-Identifier: MIT
|
|
19
18
|
*/
|
|
20
19
|
const SI_TABSET_NEXT = new InjectionToken('SiTabsetNextComponent');
|
|
@@ -66,7 +65,6 @@ class SiTabNextBaseDirective {
|
|
|
66
65
|
tabButton = inject(ElementRef);
|
|
67
66
|
tabContent = viewChild('tabContent', { read: TemplateRef });
|
|
68
67
|
static tabCounter = 0;
|
|
69
|
-
retainFocus = false;
|
|
70
68
|
indexBeforeClose = -1;
|
|
71
69
|
/** @internal */
|
|
72
70
|
tabId = `${SiTabNextBaseDirective.tabCounter++}`;
|
|
@@ -74,37 +72,19 @@ class SiTabNextBaseDirective {
|
|
|
74
72
|
tabset = inject(SI_TABSET_NEXT);
|
|
75
73
|
/** @internal */
|
|
76
74
|
index = computed(() => this.tabset.tabPanels().findIndex(tab => tab.tabId === this.tabId));
|
|
77
|
-
/** @internal */
|
|
78
|
-
isTabButtonFullyVisible() {
|
|
79
|
-
const tabButton = this.tabButton.nativeElement;
|
|
80
|
-
const tabsetElement = this.tabset.tabScrollContainer().nativeElement;
|
|
81
|
-
const tabButtonRect = tabButton.getBoundingClientRect();
|
|
82
|
-
const tabsetRect = tabsetElement.getBoundingClientRect();
|
|
83
|
-
return (Math.round(tabButtonRect.left) >= Math.round(tabsetRect.left) &&
|
|
84
|
-
Math.round(tabButtonRect.right) <= Math.round(tabsetRect.right));
|
|
85
|
-
}
|
|
86
75
|
ngOnDestroy() {
|
|
87
76
|
// adjust the focus index and selected tab index if component is destroyed
|
|
88
77
|
// as a side effect to close tab event
|
|
89
78
|
if (this.indexBeforeClose >= 0) {
|
|
90
79
|
const indexToFocus = this.tabset.getNextIndexToFocus(this.indexBeforeClose);
|
|
91
|
-
if (this.
|
|
92
|
-
// wait for a cycle to render the tab if not visible
|
|
93
|
-
setTimeout(() => {
|
|
94
|
-
this.tabset.focusKeyManager?.setActiveItem(indexToFocus);
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
else if (this.indexBeforeClose >= 0 && this.active()) {
|
|
80
|
+
if (this.active()) {
|
|
98
81
|
this.tabset.focusKeyManager?.updateActiveItem(indexToFocus);
|
|
99
82
|
this.tabset.tabPanels()[indexToFocus].tabButton.nativeElement.focus();
|
|
100
83
|
}
|
|
101
84
|
else {
|
|
102
|
-
|
|
103
|
-
if (selectedItemIndex > this.indexBeforeClose) {
|
|
104
|
-
selectedItemIndex--;
|
|
105
|
-
}
|
|
85
|
+
const selectedItemIndex = this.tabset.activeTabIndex() ?? 0;
|
|
106
86
|
this.tabset.focusKeyManager?.updateActiveItem(selectedItemIndex);
|
|
107
|
-
this.tabset.tabPanels()[selectedItemIndex].
|
|
87
|
+
this.tabset.tabPanels()[selectedItemIndex].focus();
|
|
108
88
|
}
|
|
109
89
|
// if this tab was the active one we need to select next tab as active
|
|
110
90
|
if (this.active()) {
|
|
@@ -113,26 +93,37 @@ class SiTabNextBaseDirective {
|
|
|
113
93
|
targetActiveTab.active.set(true);
|
|
114
94
|
}
|
|
115
95
|
}
|
|
116
|
-
this.tabset.updateVisibleTabIndexes(indexToFocus, 'next', true);
|
|
117
96
|
}
|
|
118
97
|
}
|
|
119
|
-
closeTab(event
|
|
98
|
+
closeTab(event) {
|
|
120
99
|
if (this.closable() && !this.disabledTab()) {
|
|
121
100
|
event.stopPropagation();
|
|
122
101
|
const index = this.index();
|
|
123
102
|
this.closeTriggered.emit();
|
|
124
|
-
this.retainFocus = retainFocus;
|
|
125
103
|
this.indexBeforeClose = index;
|
|
126
104
|
}
|
|
127
105
|
}
|
|
128
106
|
focus(origin) {
|
|
129
|
-
this.tabButton.nativeElement.focus();
|
|
107
|
+
this.tabButton.nativeElement.focus({ preventScroll: true });
|
|
108
|
+
// The element is not fully scrolled into view when focused. So we prevent and scroll it manually.
|
|
109
|
+
this.tabButton.nativeElement.scrollIntoView({
|
|
110
|
+
inline: 'nearest',
|
|
111
|
+
block: 'nearest',
|
|
112
|
+
behavior: 'instant'
|
|
113
|
+
});
|
|
130
114
|
}
|
|
131
115
|
get disabled() {
|
|
132
116
|
return this.disabledTab();
|
|
133
117
|
}
|
|
118
|
+
selectTab(retainFocus) {
|
|
119
|
+
this.tabset.focusKeyManager?.updateActiveItem(this.index());
|
|
120
|
+
if (retainFocus) {
|
|
121
|
+
// We need the timeout to wait for cdkMenu to restore the focus before we move it again.
|
|
122
|
+
setTimeout(() => this.focus());
|
|
123
|
+
}
|
|
124
|
+
}
|
|
134
125
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiTabNextBaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
135
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.0.6", type: SiTabNextBaseDirective, isStandalone: true, selector: "[siTabNextBase]", inputs: { heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: true, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, badgeContent: { classPropertyName: "badgeContent", publicName: "badgeContent", isSignal: true, isRequired: false, transformFunction: null }, badgeColor: { classPropertyName: "badgeColor", publicName: "badgeColor", isSignal: true, isRequired: false, transformFunction: null }, disabledTab: { classPropertyName: "disabledTab", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closeTriggered: "closeTriggered" }, host: { attributes: { "role": "tab" }, listeners: { "keydown.arrowLeft": "tabset.focusPrevious($event)", "keydown.arrowRight": "tabset.focusNext($event)", "keydown.delete": "closeTab($event
|
|
126
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.0.6", type: SiTabNextBaseDirective, isStandalone: true, selector: "[siTabNextBase]", inputs: { heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: true, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, badgeContent: { classPropertyName: "badgeContent", publicName: "badgeContent", isSignal: true, isRequired: false, transformFunction: null }, badgeColor: { classPropertyName: "badgeColor", publicName: "badgeColor", isSignal: true, isRequired: false, transformFunction: null }, disabledTab: { classPropertyName: "disabledTab", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closeTriggered: "closeTriggered" }, host: { attributes: { "role": "tab" }, listeners: { "keydown.arrowLeft": "tabset.focusPrevious($event)", "keydown.arrowRight": "tabset.focusNext($event)", "keydown.delete": "closeTab($event)" }, properties: { "class.disabled": "disabledTab()", "attr.id": "'tab-' + tabId", "attr.aria-disabled": "disabledTab()", "attr.tabindex": "tabset.focusKeyManager?.activeItem === this && !disabledTab() ? 0 : -1", "attr.aria-controls": "'content-' + tabId" }, classAttribute: "nav-link focus-inside px-5 si-title-1" }, viewQueries: [{ propertyName: "tabContent", first: true, predicate: ["tabContent"], descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0 });
|
|
136
127
|
}
|
|
137
128
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiTabNextBaseDirective, decorators: [{
|
|
138
129
|
type: Directive,
|
|
@@ -148,13 +139,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImpor
|
|
|
148
139
|
'[attr.aria-controls]': "'content-' + tabId",
|
|
149
140
|
'(keydown.arrowLeft)': 'tabset.focusPrevious($event)',
|
|
150
141
|
'(keydown.arrowRight)': 'tabset.focusNext($event)',
|
|
151
|
-
'(keydown.delete)': 'closeTab($event
|
|
142
|
+
'(keydown.delete)': 'closeTab($event)'
|
|
152
143
|
}
|
|
153
144
|
}]
|
|
154
145
|
}] });
|
|
155
146
|
|
|
156
147
|
/**
|
|
157
|
-
* Copyright Siemens 2016 - 2025
|
|
148
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
158
149
|
* SPDX-License-Identifier: MIT
|
|
159
150
|
*/
|
|
160
151
|
/** @experimental */
|
|
@@ -178,24 +169,12 @@ class SiTabNextLinkComponent extends SiTabNextBaseDirective {
|
|
|
178
169
|
}
|
|
179
170
|
});
|
|
180
171
|
}
|
|
181
|
-
/** @internal */
|
|
182
|
-
selectTab(retainFocus) {
|
|
183
|
-
if (!this.isTabButtonFullyVisible()) {
|
|
184
|
-
this.tabset.updateVisibleTabIndexes(this.index(), 'next');
|
|
185
|
-
this.tabset.focusKeyManager?.updateActiveItem(this.index());
|
|
186
|
-
}
|
|
187
|
-
if (retainFocus) {
|
|
188
|
-
setTimeout(() => {
|
|
189
|
-
this.tabset.focusKeyManager?.setActiveItem(this);
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
172
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiTabNextLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
194
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiTabNextLinkComponent, isStandalone: true, selector: "a[si-tab-next][routerLink]", host: { properties: { "class.active": "routerLinkActive.isActive", "attr.aria-selected": "routerLinkActive.isActive" } }, usesInheritance: true, hostDirectives: [{ directive: i1
|
|
173
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiTabNextLinkComponent, isStandalone: true, selector: "a[si-tab-next][routerLink]", host: { properties: { "class.active": "routerLinkActive.isActive", "attr.aria-selected": "routerLinkActive.isActive" } }, usesInheritance: true, hostDirectives: [{ directive: i1.RouterLinkActive }], ngImport: i0, template: "@let icon = this.icon();\n@if (icon) {\n <si-icon-next class=\"tab-icon\" [icon]=\"icon\" [attr.title]=\"heading() | translate\" />\n} @else {\n <span class=\"text-truncate\">{{ heading() | translate }}</span>\n}\n@if (badgeContent() === true) {\n <span class=\"badge-dot\"></span>\n} @else if (badgeContent() && badgeColor()) {\n <span class=\"badge\" [ngClass]=\"'bg-' + badgeColor()\">\n <!-- eslint-disable-next-line @angular-eslint/template/no-any -->\n {{ $any(badgeContent() ?? '') | translate }}\n </span>\n} @else if (badgeContent() && !badgeColor()) {\n <!-- eslint-disable-next-line @angular-eslint/template/no-any -->\n <span class=\"badge-text\"> {{ $any(badgeContent() ?? '') | translate }}</span>\n}\n@if (closable() && !disabledTab()) {\n <si-icon-next\n class=\"ms-4 me-n4 btn btn-circle btn-xs btn-ghost close\"\n [icon]=\"icons.elementCancel\"\n (click)=\"closeTab($event)\"\n />\n}\n\n<ng-template #tabContent>\n <ng-content />\n</ng-template>\n", styles: [":host.nav-link{flex-shrink:0;transform:translate(0);color:var(--element-text-primary)}:host.nav-link span.badge-dot{inset-block-end:100%;inset-inline-start:12px;margin-inline-end:12px}:host.nav-link span.badge-text{inset-block-end:calc(100% - 7px);inset-inline-start:2px}.tab-icon{font-size:24px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SiIconNextComponent, selector: "si-icon-next", inputs: ["icon"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
195
174
|
}
|
|
196
175
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiTabNextLinkComponent, decorators: [{
|
|
197
176
|
type: Component,
|
|
198
|
-
args: [{ selector: 'a[si-tab-next][routerLink]', imports: [NgClass, SiIconNextComponent,
|
|
177
|
+
args: [{ selector: 'a[si-tab-next][routerLink]', imports: [NgClass, SiIconNextComponent, SiTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
199
178
|
'[class.active]': 'routerLinkActive.isActive',
|
|
200
179
|
'[attr.aria-selected]': 'routerLinkActive.isActive'
|
|
201
180
|
}, hostDirectives: [
|
|
@@ -206,7 +185,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImpor
|
|
|
206
185
|
}], ctorParameters: () => [] });
|
|
207
186
|
|
|
208
187
|
/**
|
|
209
|
-
* Copyright Siemens 2016 - 2025
|
|
188
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
210
189
|
* SPDX-License-Identifier: MIT
|
|
211
190
|
*/
|
|
212
191
|
/** @experimental */
|
|
@@ -238,24 +217,15 @@ class SiTabNextComponent extends SiTabNextBaseDirective {
|
|
|
238
217
|
}
|
|
239
218
|
if (continueWithSelection) {
|
|
240
219
|
this.active.set(true);
|
|
241
|
-
|
|
242
|
-
}
|
|
243
|
-
if (!this.isTabButtonFullyVisible()) {
|
|
244
|
-
this.tabset.updateVisibleTabIndexes(newTabIndex, 'next');
|
|
245
|
-
this.tabset.focusKeyManager?.updateActiveItem(newTabIndex);
|
|
246
|
-
}
|
|
247
|
-
if (retainFocus) {
|
|
248
|
-
setTimeout(() => {
|
|
249
|
-
this.tabset.focusKeyManager?.activeItem?.focus();
|
|
250
|
-
});
|
|
220
|
+
super.selectTab(retainFocus);
|
|
251
221
|
}
|
|
252
222
|
}
|
|
253
223
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiTabNextComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
254
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiTabNextComponent, isStandalone: true, selector: "si-tab-next", inputs: { active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { active: "activeChange" }, host: { listeners: { "click": "selectTab()", "keydown.enter": "selectTab()" }, properties: { "class.active": "active()", "attr.aria-selected": "active()" } }, usesInheritance: true, ngImport: i0, template: "@let icon = this.icon();\n@if (icon) {\n <si-icon-next class=\"tab-icon\" [icon]=\"icon\" [attr.title]=\"heading() | translate\" />\n} @else {\n <span class=\"text-truncate\">{{ heading() | translate }}</span>\n}\n@if (badgeContent() === true) {\n <span class=\"badge-dot\"></span>\n} @else if (badgeContent() && badgeColor()) {\n <span class=\"badge\" [ngClass]=\"'bg-' + badgeColor()\">\n <!-- eslint-disable-next-line @angular-eslint/template/no-any -->\n {{ $any(badgeContent() ?? '') | translate }}\n </span>\n} @else if (badgeContent() && !badgeColor()) {\n <!-- eslint-disable-next-line @angular-eslint/template/no-any -->\n <span class=\"badge-text\"> {{ $any(badgeContent() ?? '') | translate }}</span>\n}\n@if (closable() && !disabledTab()) {\n <si-icon-next\n class=\"ms-4 me-n4 btn btn-circle btn-xs btn-ghost close\"\n [icon]=\"icons.elementCancel\"\n (click)=\"closeTab($event)\"\n />\n}\n\n<ng-template #tabContent>\n <ng-content />\n</ng-template>\n", styles: [":host.nav-link{flex-shrink:0;transform:translate(0);color:var(--element-text-primary)}:host.nav-link span.badge-dot{inset-block-end:100%;inset-inline-start:12px;margin-inline-end:12px}:host.nav-link span.badge-text{inset-block-end:calc(100% - 7px);inset-inline-start:2px}.tab-icon{font-size:24px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SiIconNextComponent, selector: "si-icon-next", inputs: ["icon"] }, { kind: "
|
|
224
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiTabNextComponent, isStandalone: true, selector: "si-tab-next", inputs: { active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { active: "activeChange" }, host: { listeners: { "click": "selectTab()", "keydown.enter": "selectTab()" }, properties: { "class.active": "active()", "attr.aria-selected": "active()" } }, usesInheritance: true, ngImport: i0, template: "@let icon = this.icon();\n@if (icon) {\n <si-icon-next class=\"tab-icon\" [icon]=\"icon\" [attr.title]=\"heading() | translate\" />\n} @else {\n <span class=\"text-truncate\">{{ heading() | translate }}</span>\n}\n@if (badgeContent() === true) {\n <span class=\"badge-dot\"></span>\n} @else if (badgeContent() && badgeColor()) {\n <span class=\"badge\" [ngClass]=\"'bg-' + badgeColor()\">\n <!-- eslint-disable-next-line @angular-eslint/template/no-any -->\n {{ $any(badgeContent() ?? '') | translate }}\n </span>\n} @else if (badgeContent() && !badgeColor()) {\n <!-- eslint-disable-next-line @angular-eslint/template/no-any -->\n <span class=\"badge-text\"> {{ $any(badgeContent() ?? '') | translate }}</span>\n}\n@if (closable() && !disabledTab()) {\n <si-icon-next\n class=\"ms-4 me-n4 btn btn-circle btn-xs btn-ghost close\"\n [icon]=\"icons.elementCancel\"\n (click)=\"closeTab($event)\"\n />\n}\n\n<ng-template #tabContent>\n <ng-content />\n</ng-template>\n", styles: [":host.nav-link{flex-shrink:0;transform:translate(0);color:var(--element-text-primary)}:host.nav-link span.badge-dot{inset-block-end:100%;inset-inline-start:12px;margin-inline-end:12px}:host.nav-link span.badge-text{inset-block-end:calc(100% - 7px);inset-inline-start:2px}.tab-icon{font-size:24px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SiIconNextComponent, selector: "si-icon-next", inputs: ["icon"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
255
225
|
}
|
|
256
226
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiTabNextComponent, decorators: [{
|
|
257
227
|
type: Component,
|
|
258
|
-
args: [{ selector: 'si-tab-next',
|
|
228
|
+
args: [{ selector: 'si-tab-next', imports: [NgClass, SiIconNextComponent, SiTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
259
229
|
'[class.active]': 'active()',
|
|
260
230
|
'[attr.aria-selected]': 'active()',
|
|
261
231
|
'(click)': 'selectTab()',
|
|
@@ -264,7 +234,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImpor
|
|
|
264
234
|
}] });
|
|
265
235
|
|
|
266
236
|
/**
|
|
267
|
-
* Copyright Siemens 2016 - 2025
|
|
237
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
268
238
|
* SPDX-License-Identifier: MIT
|
|
269
239
|
*/
|
|
270
240
|
/** @experimental */
|
|
@@ -274,8 +244,6 @@ class SiTabsetNextComponent {
|
|
|
274
244
|
*/
|
|
275
245
|
deselect = output();
|
|
276
246
|
/** @internal */
|
|
277
|
-
visibleTabIndexes = signal([]);
|
|
278
|
-
/** @internal */
|
|
279
247
|
activeTab = computed(() => {
|
|
280
248
|
return this.tabPanels().find(tab => tab.active());
|
|
281
249
|
});
|
|
@@ -293,25 +261,8 @@ class SiTabsetNextComponent {
|
|
|
293
261
|
];
|
|
294
262
|
return allTabs;
|
|
295
263
|
});
|
|
296
|
-
/** @internal */
|
|
297
|
-
tabContainer = viewChild.required('tabContainer');
|
|
298
|
-
tabScrollContainer = viewChild.required('tabScrollContainer');
|
|
299
|
-
maxWrapperWidth = computed(() => {
|
|
300
|
-
const visibleIndexes = this.visibleTabIndexes();
|
|
301
|
-
return visibleIndexes.length
|
|
302
|
-
? this.tabButtons()
|
|
303
|
-
.filter((_, index) => visibleIndexes.includes(index))
|
|
304
|
-
.reduce((total, current) => {
|
|
305
|
-
return total + current.nativeElement.clientWidth;
|
|
306
|
-
}, 0)
|
|
307
|
-
: undefined;
|
|
308
|
-
});
|
|
309
264
|
menu = viewChild('menu', { read: CdkMenu });
|
|
310
|
-
|
|
311
|
-
return this.tabPanels().map(tab => tab.tabButton);
|
|
312
|
-
});
|
|
313
|
-
menuButton = viewChild('menuButton');
|
|
314
|
-
previousWidth = 0;
|
|
265
|
+
showMenuButton = signal(false);
|
|
315
266
|
injector = inject(INJECTOR);
|
|
316
267
|
ngAfterViewInit() {
|
|
317
268
|
this.focusKeyManager = new FocusKeyManager(this.tabPanels, this.injector);
|
|
@@ -320,15 +271,6 @@ class SiTabsetNextComponent {
|
|
|
320
271
|
this.focusKeyManager?.updateActiveItem(this.tabPanels().findIndex(tab => !tab.disabledTab()));
|
|
321
272
|
});
|
|
322
273
|
}
|
|
323
|
-
resize(e) {
|
|
324
|
-
if (this.previousWidth && this.previousWidth === e.width) {
|
|
325
|
-
return;
|
|
326
|
-
}
|
|
327
|
-
else {
|
|
328
|
-
this.previousWidth = e.width;
|
|
329
|
-
}
|
|
330
|
-
this.updateVisibleTabIndexes(this.activeTabIndex(), 'next', true);
|
|
331
|
-
}
|
|
332
274
|
menuOpened() {
|
|
333
275
|
// wait for menu items to be rendered
|
|
334
276
|
setTimeout(() => {
|
|
@@ -352,67 +294,12 @@ class SiTabsetNextComponent {
|
|
|
352
294
|
/** @internal */
|
|
353
295
|
focusPrevious(e) {
|
|
354
296
|
e.preventDefault();
|
|
355
|
-
|
|
356
|
-
if (activeItemIndex > 0) {
|
|
357
|
-
this.focusKeyManager?.setPreviousItemActive();
|
|
358
|
-
this.updateVisibleTabIndexes(this.focusKeyManager.activeItemIndex, 'previous');
|
|
359
|
-
setTimeout(() => {
|
|
360
|
-
this.focusKeyManager?.setActiveItem(this.focusKeyManager.activeItemIndex);
|
|
361
|
-
});
|
|
362
|
-
}
|
|
297
|
+
this.focusKeyManager?.setPreviousItemActive();
|
|
363
298
|
}
|
|
364
299
|
/** @internal */
|
|
365
300
|
focusNext(e) {
|
|
366
301
|
e.preventDefault();
|
|
367
|
-
|
|
368
|
-
if (activeItemIndex < this.tabButtons().length) {
|
|
369
|
-
this.focusKeyManager?.setNextItemActive();
|
|
370
|
-
this.updateVisibleTabIndexes(this.focusKeyManager.activeItemIndex, 'next');
|
|
371
|
-
setTimeout(() => {
|
|
372
|
-
this.focusKeyManager?.setActiveItem(this.focusKeyManager.activeItemIndex);
|
|
373
|
-
});
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
/** @internal */
|
|
377
|
-
updateVisibleTabIndexes(startIndex, type, forceUpdate) {
|
|
378
|
-
if (startIndex < this.tabButtons().length) {
|
|
379
|
-
if (!this.visibleTabIndexes().includes(startIndex) || forceUpdate) {
|
|
380
|
-
let availableWidth = this.tabContainer().nativeElement.clientWidth;
|
|
381
|
-
if (this.menuButton()) {
|
|
382
|
-
availableWidth = availableWidth - this.menuButton().nativeElement.clientWidth;
|
|
383
|
-
}
|
|
384
|
-
let consumedWidth = 0;
|
|
385
|
-
const visibleTabIndexes = [];
|
|
386
|
-
const calculateConsumedWidth = (i) => {
|
|
387
|
-
consumedWidth += this.tabButtons()[i].nativeElement.clientWidth;
|
|
388
|
-
if (visibleTabIndexes.includes(0) &&
|
|
389
|
-
i === this.tabButtons().length - 1 &&
|
|
390
|
-
this.menuButton()) {
|
|
391
|
-
availableWidth = availableWidth + this.menuButton().nativeElement.clientWidth;
|
|
392
|
-
}
|
|
393
|
-
if (consumedWidth <= availableWidth) {
|
|
394
|
-
visibleTabIndexes.push(i);
|
|
395
|
-
return false;
|
|
396
|
-
}
|
|
397
|
-
else {
|
|
398
|
-
consumedWidth -= this.tabButtons()[i].nativeElement.clientWidth;
|
|
399
|
-
return true;
|
|
400
|
-
}
|
|
401
|
-
};
|
|
402
|
-
const isNextDirection = type === 'next';
|
|
403
|
-
// First pass: Calculate in primary direction
|
|
404
|
-
const primaryRange = this.getPrimaryRange(isNextDirection, startIndex, this.tabButtons().length);
|
|
405
|
-
this.traverseRange(primaryRange, calculateConsumedWidth);
|
|
406
|
-
// Second pass: Calculate in opposite direction if space available
|
|
407
|
-
if (consumedWidth < availableWidth) {
|
|
408
|
-
const secondaryRange = this.getSecondaryRange(isNextDirection, startIndex, this.tabButtons().length);
|
|
409
|
-
this.traverseRange(secondaryRange, calculateConsumedWidth);
|
|
410
|
-
}
|
|
411
|
-
visibleTabIndexes.sort((a, b) => a - b);
|
|
412
|
-
this.visibleTabIndexes.set(visibleTabIndexes);
|
|
413
|
-
this.scrollFirstVisibleTabIntoView();
|
|
414
|
-
}
|
|
415
|
-
}
|
|
302
|
+
this.focusKeyManager?.setNextItemActive();
|
|
416
303
|
}
|
|
417
304
|
/** @internal */
|
|
418
305
|
getNextIndexToFocus(currentIndex) {
|
|
@@ -425,32 +312,9 @@ class SiTabsetNextComponent {
|
|
|
425
312
|
}
|
|
426
313
|
return -1;
|
|
427
314
|
}
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
: { start: startIndex, end: length - 1, step: 1 };
|
|
432
|
-
}
|
|
433
|
-
getSecondaryRange(isNextDirection, startIndex, length) {
|
|
434
|
-
return isNextDirection
|
|
435
|
-
? { start: startIndex + 1, end: length - 1, step: 1 }
|
|
436
|
-
: { start: startIndex - 1, end: 0, step: -1 };
|
|
437
|
-
}
|
|
438
|
-
traverseRange(range, callback) {
|
|
439
|
-
const condition = (i) => (range.step > 0 ? i <= range.end : i >= range.end);
|
|
440
|
-
for (let i = range.start; condition(i); i += range.step) {
|
|
441
|
-
if (callback(i)) {
|
|
442
|
-
break;
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
scrollFirstVisibleTabIntoView() {
|
|
447
|
-
setTimeout(() => {
|
|
448
|
-
this.tabButtons().at(this.visibleTabIndexes()[0])?.nativeElement.scrollIntoView({
|
|
449
|
-
behavior: 'instant',
|
|
450
|
-
inline: 'start',
|
|
451
|
-
block: 'nearest'
|
|
452
|
-
});
|
|
453
|
-
});
|
|
315
|
+
resizeContainer(width, scrollWidth) {
|
|
316
|
+
// 48px is the width of the menu button.
|
|
317
|
+
this.showMenuButton.set(scrollWidth > width + (this.showMenuButton() ? 48 : 0));
|
|
454
318
|
}
|
|
455
319
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiTabsetNextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
456
320
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiTabsetNextComponent, isStandalone: true, selector: "si-tabset-next", outputs: { deselect: "deselect" }, providers: [
|
|
@@ -458,28 +322,28 @@ class SiTabsetNextComponent {
|
|
|
458
322
|
provide: SI_TABSET_NEXT,
|
|
459
323
|
useExisting: SiTabsetNextComponent
|
|
460
324
|
}
|
|
461
|
-
], queries: [{ propertyName: "tabPanelsLinks", predicate: SiTabNextLinkComponent, isSignal: true }, { propertyName: "tabPanelsComponents", predicate: SiTabNextComponent, isSignal: true }], viewQueries: [{ propertyName: "
|
|
325
|
+
], queries: [{ propertyName: "tabPanelsLinks", predicate: SiTabNextLinkComponent, isSignal: true }, { propertyName: "tabPanelsComponents", predicate: SiTabNextComponent, isSignal: true }], viewQueries: [{ propertyName: "menu", first: true, predicate: ["menu"], descendants: true, read: CdkMenu, isSignal: true }], ngImport: i0, template: "<div class=\"tabs-container\">\n <div class=\"tab-container-buttonbar-list nav nav-tabs\">\n <div\n #tabScrollContainer\n role=\"tablist\"\n tabindex=\"-1\"\n class=\"d-flex tabs-wrapper\"\n (siResizeObserver)=\"\n resizeContainer(tabScrollContainer.clientWidth, tabScrollContainer.scrollWidth)\n \"\n >\n <ng-content />\n </div>\n\n @if (showMenuButton()) {\n <button\n type=\"button\"\n class=\"dropdown btn btn-tertiary focus-inside\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [cdkMenuTriggerFor]=\"tabsMenu\"\n (cdkMenuOpened)=\"menuOpened()\"\n >\n <i class=\"icon element-options m-0\"></i>\n </button>\n }\n </div>\n @let tabContent = this.activeTab()?.tabContent();\n @let activeTab = this.activeTab();\n\n @if (activeTab) {\n <div\n class=\"tab-content\"\n role=\"tabpanel\"\n [id]=\"'content-' + activeTab.tabId\"\n [attr.aria-labelledby]=\"'tab-' + activeTab.tabId\"\n >\n @if (tabContent) {\n <ng-container [ngTemplateOutlet]=\"tabContent\" />\n }\n\n <ng-content select=\"router-outlet\" />\n </div>\n }\n</div>\n\n<ng-template #tabsMenu>\n <si-menu #menu>\n @for (tab of tabPanels(); track tab) {\n @let badgeColor = tab.badgeColor();\n @let badgeIsNumber = tab.badgeIsNumber();\n\n @if (badgeColor && badgeIsNumber) {\n <!-- eslint-disable @angular-eslint/template/no-any -->\n <a\n #menuItem\n si-menu-item\n [disabled]=\"tab.disabledTab()\"\n [badgeColor]=\"badgeColor\"\n [badge]=\"$any(tab.badgeContent())\"\n [icon]=\"tab.icon()\"\n [routerLink]=\"tabIsLink(tab) ? tab.routerLink?.urlTree : undefined\"\n (keydown.enter)=\"tab.selectTab(true)\"\n (triggered)=\"tab.selectTab(true)\"\n >\n <ng-container [ngTemplateOutlet]=\"badgeTemplate\" [ngTemplateOutletContext]=\"{ tab }\" />\n </a>\n } @else if (badgeIsNumber && badgeColor) {\n <a\n #menuItem\n si-menu-item\n [disabled]=\"tab.disabledTab()\"\n [icon]=\"tab.icon()\"\n [badgeColor]=\"badgeColor\"\n [badge]=\"$any(tab.badgeContent())\"\n [routerLink]=\"tabIsLink(tab) ? tab.routerLink?.urlTree : undefined\"\n (keydown.enter)=\"tab.selectTab(true)\"\n (triggered)=\"tab.selectTab(true)\"\n >\n <!-- eslint-enable -->\n <ng-container [ngTemplateOutlet]=\"badgeTemplate\" [ngTemplateOutletContext]=\"{ tab }\" />\n </a>\n } @else {\n <a\n #menuItem\n si-menu-item\n [disabled]=\"tab.disabledTab()\"\n [icon]=\"tab.icon()\"\n [routerLink]=\"tabIsLink(tab) ? tab.routerLink?.urlTree : undefined\"\n (keydown.enter)=\"tab.selectTab(true)\"\n (triggered)=\"tab.selectTab(true)\"\n >\n <ng-container [ngTemplateOutlet]=\"badgeTemplate\" [ngTemplateOutletContext]=\"{ tab }\" />\n </a>\n }\n }\n </si-menu>\n</ng-template>\n\n<ng-template #badgeTemplate let-tab=\"tab\">\n <div class=\"d-flex align-items-center space-between flex-no-wrap justify-content-between\">\n {{ tab.heading() }}\n @if (tab.badgeContent() === true) {\n <span class=\"badge-dot\"></span>\n } @else if (tab.badgeContent() && !tab.badgeColor()) {\n <!-- eslint-disable-next-line @angular-eslint/template/no-any -->\n <span class=\"badge-text\"> {{ $any(tab.badgeContent() ?? '') | translate }}</span>\n }\n </div>\n</ng-template>\n", styles: [":host{display:block;flex-direction:column}.tabs-container{display:flex;flex-wrap:wrap;overflow:hidden;block-size:100%;min-block-size:40px}.tabs-container:before{inset-block-start:38px;inset-block-end:auto}.tab-container-buttonbar-list{display:flex;min-block-size:40px;overflow:hidden;flex:1;order:1;min-inline-size:100px}.btn.dropdown{color:var(--element-text-primary);min-inline-size:0;border-block-end:2px solid var(--element-ui-4);order:2;block-size:40px;padding-inline:12px;flex-shrink:0}.btn.dropdown:hover{border-color:var(--element-ui-4);color:var(--element-action-secondary-text-hover)}a[si-menu-item] .badge-dot{inset-block-end:4px;min-inline-size:12px;margin-inline-start:4px}.tab-content{inline-size:100%;block-size:calc(100% - 40px);order:3}.tabs-wrapper{overflow-y:hidden;overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none}\n"], dependencies: [{ kind: "pipe", type: SiTranslatePipe, name: "translate" }, { kind: "directive", type: SiMenuDirective, selector: "si-menu" }, { kind: "component", type: SiMenuItemComponent, selector: "si-menu-item, a[si-menu-item], button[si-menu-item]" }, { kind: "directive", type: CdkMenuTrigger, selector: "[cdkMenuTriggerFor]", inputs: ["cdkMenuTriggerFor", "cdkMenuPosition", "cdkMenuTriggerData"], outputs: ["cdkMenuOpened", "cdkMenuClosed"], exportAs: ["cdkMenuTriggerFor"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: SiResizeObserverModule }, { kind: "directive", type: i1$1.SiResizeObserverDirective, selector: "[siResizeObserver]", inputs: ["resizeThrottle", "emitInitial"], outputs: ["siResizeObserver"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
462
326
|
}
|
|
463
327
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiTabsetNextComponent, decorators: [{
|
|
464
328
|
type: Component,
|
|
465
|
-
args: [{ selector: 'si-tabset-next',
|
|
466
|
-
|
|
329
|
+
args: [{ selector: 'si-tabset-next', imports: [
|
|
330
|
+
SiTranslatePipe,
|
|
467
331
|
SiMenuDirective,
|
|
468
332
|
SiMenuItemComponent,
|
|
469
333
|
CdkMenuTrigger,
|
|
470
334
|
NgTemplateOutlet,
|
|
471
335
|
SiResizeObserverModule,
|
|
472
336
|
RouterLink
|
|
473
|
-
], providers: [
|
|
337
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
474
338
|
{
|
|
475
339
|
provide: SI_TABSET_NEXT,
|
|
476
340
|
useExisting: SiTabsetNextComponent
|
|
477
341
|
}
|
|
478
|
-
], template: "<div class=\"tabs-container\">\n <div
|
|
342
|
+
], template: "<div class=\"tabs-container\">\n <div class=\"tab-container-buttonbar-list nav nav-tabs\">\n <div\n #tabScrollContainer\n role=\"tablist\"\n tabindex=\"-1\"\n class=\"d-flex tabs-wrapper\"\n (siResizeObserver)=\"\n resizeContainer(tabScrollContainer.clientWidth, tabScrollContainer.scrollWidth)\n \"\n >\n <ng-content />\n </div>\n\n @if (showMenuButton()) {\n <button\n type=\"button\"\n class=\"dropdown btn btn-tertiary focus-inside\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [cdkMenuTriggerFor]=\"tabsMenu\"\n (cdkMenuOpened)=\"menuOpened()\"\n >\n <i class=\"icon element-options m-0\"></i>\n </button>\n }\n </div>\n @let tabContent = this.activeTab()?.tabContent();\n @let activeTab = this.activeTab();\n\n @if (activeTab) {\n <div\n class=\"tab-content\"\n role=\"tabpanel\"\n [id]=\"'content-' + activeTab.tabId\"\n [attr.aria-labelledby]=\"'tab-' + activeTab.tabId\"\n >\n @if (tabContent) {\n <ng-container [ngTemplateOutlet]=\"tabContent\" />\n }\n\n <ng-content select=\"router-outlet\" />\n </div>\n }\n</div>\n\n<ng-template #tabsMenu>\n <si-menu #menu>\n @for (tab of tabPanels(); track tab) {\n @let badgeColor = tab.badgeColor();\n @let badgeIsNumber = tab.badgeIsNumber();\n\n @if (badgeColor && badgeIsNumber) {\n <!-- eslint-disable @angular-eslint/template/no-any -->\n <a\n #menuItem\n si-menu-item\n [disabled]=\"tab.disabledTab()\"\n [badgeColor]=\"badgeColor\"\n [badge]=\"$any(tab.badgeContent())\"\n [icon]=\"tab.icon()\"\n [routerLink]=\"tabIsLink(tab) ? tab.routerLink?.urlTree : undefined\"\n (keydown.enter)=\"tab.selectTab(true)\"\n (triggered)=\"tab.selectTab(true)\"\n >\n <ng-container [ngTemplateOutlet]=\"badgeTemplate\" [ngTemplateOutletContext]=\"{ tab }\" />\n </a>\n } @else if (badgeIsNumber && badgeColor) {\n <a\n #menuItem\n si-menu-item\n [disabled]=\"tab.disabledTab()\"\n [icon]=\"tab.icon()\"\n [badgeColor]=\"badgeColor\"\n [badge]=\"$any(tab.badgeContent())\"\n [routerLink]=\"tabIsLink(tab) ? tab.routerLink?.urlTree : undefined\"\n (keydown.enter)=\"tab.selectTab(true)\"\n (triggered)=\"tab.selectTab(true)\"\n >\n <!-- eslint-enable -->\n <ng-container [ngTemplateOutlet]=\"badgeTemplate\" [ngTemplateOutletContext]=\"{ tab }\" />\n </a>\n } @else {\n <a\n #menuItem\n si-menu-item\n [disabled]=\"tab.disabledTab()\"\n [icon]=\"tab.icon()\"\n [routerLink]=\"tabIsLink(tab) ? tab.routerLink?.urlTree : undefined\"\n (keydown.enter)=\"tab.selectTab(true)\"\n (triggered)=\"tab.selectTab(true)\"\n >\n <ng-container [ngTemplateOutlet]=\"badgeTemplate\" [ngTemplateOutletContext]=\"{ tab }\" />\n </a>\n }\n }\n </si-menu>\n</ng-template>\n\n<ng-template #badgeTemplate let-tab=\"tab\">\n <div class=\"d-flex align-items-center space-between flex-no-wrap justify-content-between\">\n {{ tab.heading() }}\n @if (tab.badgeContent() === true) {\n <span class=\"badge-dot\"></span>\n } @else if (tab.badgeContent() && !tab.badgeColor()) {\n <!-- eslint-disable-next-line @angular-eslint/template/no-any -->\n <span class=\"badge-text\"> {{ $any(tab.badgeContent() ?? '') | translate }}</span>\n }\n </div>\n</ng-template>\n", styles: [":host{display:block;flex-direction:column}.tabs-container{display:flex;flex-wrap:wrap;overflow:hidden;block-size:100%;min-block-size:40px}.tabs-container:before{inset-block-start:38px;inset-block-end:auto}.tab-container-buttonbar-list{display:flex;min-block-size:40px;overflow:hidden;flex:1;order:1;min-inline-size:100px}.btn.dropdown{color:var(--element-text-primary);min-inline-size:0;border-block-end:2px solid var(--element-ui-4);order:2;block-size:40px;padding-inline:12px;flex-shrink:0}.btn.dropdown:hover{border-color:var(--element-ui-4);color:var(--element-action-secondary-text-hover)}a[si-menu-item] .badge-dot{inset-block-end:4px;min-inline-size:12px;margin-inline-start:4px}.tab-content{inline-size:100%;block-size:calc(100% - 40px);order:3}.tabs-wrapper{overflow-y:hidden;overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none}\n"] }]
|
|
479
343
|
}] });
|
|
480
344
|
|
|
481
345
|
/**
|
|
482
|
-
* Copyright Siemens 2016 - 2025
|
|
346
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
483
347
|
* SPDX-License-Identifier: MIT
|
|
484
348
|
*/
|
|
485
349
|
|