@siemens/element-ng 47.6.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 +1 -1
- package/breadcrumb-router/si-breadcrumb-router.component.d.ts +1 -1
- package/breadcrumb-router/si-breadcrumb-router.model.d.ts +1 -1
- 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.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 +5 -5
- package/fesm2022/siemens-element-ng-breadcrumb-router.mjs.map +1 -1
- 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 +13 -15
- 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 +46 -53
- 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 +17 -18
- 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 +6 -7
- package/fesm2022/siemens-element-ng-main-detail-container.mjs.map +1 -1
- 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 +4 -4
- package/fesm2022/siemens-element-ng-modal.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar-vertical.mjs +31 -32
- package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
- 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 +5 -5
- 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 +12 -13
- 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 +16 -17
- 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 +11 -12
- package/fesm2022/siemens-element-ng-threshold.mjs.map +1 -1
- 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 +7 -8
- package/fesm2022/siemens-element-ng-tour.mjs.map +1 -1
- 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 +22 -23
- 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-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 +1 -1
- 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 +1 -1
- package/navbar-vertical/si-navbar-vertical.model.d.ts +1 -1
- package/navbar-vertical/si-navbar-vertical.provider.d.ts +1 -1
- package/number-input/index.d.ts +1 -1
- package/number-input/si-number-input.component.d.ts +1 -1
- package/package.json +11 -3
- 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 +1 -1
- 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 +1 -1
- package/tabs-next/si-tabs-tokens.d.ts +1 -1
- package/tabs-next/si-tabset-next.component.d.ts +1 -1
- 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 +1 -1
- 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 +1 -1
- package/tour/si-tour-token.model.d.ts +1 -1
- package/tour/si-tour.model.d.ts +1 -1
- package/translate/index.d.ts +1 -1
- 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.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
|
@@ -2,11 +2,10 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { input, model, booleanAttribute, computed, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
3
|
import { STATUS_ICON } from '@siemens/element-ng/common';
|
|
4
4
|
import { SiIconComponent } from '@siemens/element-ng/icon';
|
|
5
|
-
import
|
|
6
|
-
import { SiTranslateModule } from '@siemens/element-translate-ng/translate';
|
|
5
|
+
import { SiTranslatePipe } from '@siemens/element-translate-ng/translate';
|
|
7
6
|
|
|
8
7
|
/**
|
|
9
|
-
* Copyright Siemens 2016 - 2025
|
|
8
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
10
9
|
* SPDX-License-Identifier: MIT
|
|
11
10
|
*/
|
|
12
11
|
class SiSummaryWidgetComponent {
|
|
@@ -57,15 +56,15 @@ class SiSummaryWidgetComponent {
|
|
|
57
56
|
}
|
|
58
57
|
}
|
|
59
58
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiSummaryWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
60
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiSummaryWidgetComponent, isStandalone: true, selector: "si-summary-widget", inputs: { status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, stackedIcon: { classPropertyName: "stackedIcon", publicName: "stackedIcon", isSignal: true, isRequired: false, transformFunction: null }, stackedColor: { classPropertyName: "stackedColor", publicName: "stackedColor", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selectedChange" }, ngImport: i0, template: "<div\n class=\"widget ps-2 pe-4 gap-2\"\n role=\"checkbox\"\n [attr.tabindex]=\"interactive() ? '0' : ''\"\n [attr.aria-disabled]=\"!interactive()\"\n [attr.aria-checked]=\"selected()\"\n [class.selected]=\"selected()\"\n [class.disabled]=\"disabled()\"\n [class.interactive]=\"interactive()\"\n (click)=\"toggleSelected()\"\n (keydown.enter)=\"toggleSelected()\"\n>\n @let actualIcon = statusIcon();\n @if (actualIcon.icon) {\n <si-icon\n size=\"icon\"\n alt=\"\"\n [icon]=\"actualIcon.icon\"\n [color]=\"actualIcon.color\"\n [stackedIcon]=\"actualIcon.stacked\"\n [stackedColor]=\"actualIcon.stackedColor\"\n />\n }\n <div class=\"d-flex flex-column py-2\" [class.ps-2]=\"!actualIcon.icon\">\n <div class=\"si-title-2\">{{ value() | translate }}</div>\n <div class=\"si-body-2 text-secondary\">{{ label() | translate }}</div>\n </div>\n</div>\n", styles: [".widget{display:inline-flex;align-items:start;block-size:100%;border-radius:var(--element-radius-1)}.widget.interactive{cursor:pointer}.widget.interactive:not(.selected):hover{background:var(--element-base-1-hover)}.selected{background:var(--element-base-1-selected)}.disabled{opacity:var(--element-action-disabled-opacity)}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon", "color", "stackedIcon", "stackedColor", "alt", "size"] }, { kind: "
|
|
59
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiSummaryWidgetComponent, isStandalone: true, selector: "si-summary-widget", inputs: { status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, stackedIcon: { classPropertyName: "stackedIcon", publicName: "stackedIcon", isSignal: true, isRequired: false, transformFunction: null }, stackedColor: { classPropertyName: "stackedColor", publicName: "stackedColor", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selectedChange" }, ngImport: i0, template: "<div\n class=\"widget ps-2 pe-4 gap-2\"\n role=\"checkbox\"\n [attr.tabindex]=\"interactive() ? '0' : ''\"\n [attr.aria-disabled]=\"!interactive()\"\n [attr.aria-checked]=\"selected()\"\n [class.selected]=\"selected()\"\n [class.disabled]=\"disabled()\"\n [class.interactive]=\"interactive()\"\n (click)=\"toggleSelected()\"\n (keydown.enter)=\"toggleSelected()\"\n>\n @let actualIcon = statusIcon();\n @if (actualIcon.icon) {\n <si-icon\n size=\"icon\"\n alt=\"\"\n [icon]=\"actualIcon.icon\"\n [color]=\"actualIcon.color\"\n [stackedIcon]=\"actualIcon.stacked\"\n [stackedColor]=\"actualIcon.stackedColor\"\n />\n }\n <div class=\"d-flex flex-column py-2\" [class.ps-2]=\"!actualIcon.icon\">\n <div class=\"si-title-2\">{{ value() | translate }}</div>\n <div class=\"si-body-2 text-secondary\">{{ label() | translate }}</div>\n </div>\n</div>\n", styles: [".widget{display:inline-flex;align-items:start;block-size:100%;border-radius:var(--element-radius-1)}.widget.interactive{cursor:pointer}.widget.interactive:not(.selected):hover{background:var(--element-base-1-hover)}.selected{background:var(--element-base-1-selected)}.disabled{opacity:var(--element-action-disabled-opacity)}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon", "color", "stackedIcon", "stackedColor", "alt", "size"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
61
60
|
}
|
|
62
61
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiSummaryWidgetComponent, decorators: [{
|
|
63
62
|
type: Component,
|
|
64
|
-
args: [{ selector: 'si-summary-widget',
|
|
63
|
+
args: [{ selector: 'si-summary-widget', imports: [SiIconComponent, SiTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"widget ps-2 pe-4 gap-2\"\n role=\"checkbox\"\n [attr.tabindex]=\"interactive() ? '0' : ''\"\n [attr.aria-disabled]=\"!interactive()\"\n [attr.aria-checked]=\"selected()\"\n [class.selected]=\"selected()\"\n [class.disabled]=\"disabled()\"\n [class.interactive]=\"interactive()\"\n (click)=\"toggleSelected()\"\n (keydown.enter)=\"toggleSelected()\"\n>\n @let actualIcon = statusIcon();\n @if (actualIcon.icon) {\n <si-icon\n size=\"icon\"\n alt=\"\"\n [icon]=\"actualIcon.icon\"\n [color]=\"actualIcon.color\"\n [stackedIcon]=\"actualIcon.stacked\"\n [stackedColor]=\"actualIcon.stackedColor\"\n />\n }\n <div class=\"d-flex flex-column py-2\" [class.ps-2]=\"!actualIcon.icon\">\n <div class=\"si-title-2\">{{ value() | translate }}</div>\n <div class=\"si-body-2 text-secondary\">{{ label() | translate }}</div>\n </div>\n</div>\n", styles: [".widget{display:inline-flex;align-items:start;block-size:100%;border-radius:var(--element-radius-1)}.widget.interactive{cursor:pointer}.widget.interactive:not(.selected):hover{background:var(--element-base-1-hover)}.selected{background:var(--element-base-1-selected)}.disabled{opacity:var(--element-action-disabled-opacity)}\n"] }]
|
|
65
64
|
}] });
|
|
66
65
|
|
|
67
66
|
/**
|
|
68
|
-
* Copyright Siemens 2016 - 2025
|
|
67
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
69
68
|
* SPDX-License-Identifier: MIT
|
|
70
69
|
*/
|
|
71
70
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-summary-widget.mjs","sources":["../../../../projects/element-ng/summary-widget/si-summary-widget.component.ts","../../../../projects/element-ng/summary-widget/si-summary-widget.component.html","../../../../projects/element-ng/summary-widget/index.ts","../../../../projects/element-ng/summary-widget/siemens-element-ng-summary-widget.ts"],"sourcesContent":["/**\n * Copyright Siemens 2016 - 2025
|
|
1
|
+
{"version":3,"file":"siemens-element-ng-summary-widget.mjs","sources":["../../../../projects/element-ng/summary-widget/si-summary-widget.component.ts","../../../../projects/element-ng/summary-widget/si-summary-widget.component.html","../../../../projects/element-ng/summary-widget/index.ts","../../../../projects/element-ng/summary-widget/siemens-element-ng-summary-widget.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model\n} from '@angular/core';\nimport { ExtendedStatusType, STATUS_ICON } from '@siemens/element-ng/common';\nimport { SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\n@Component({\n selector: 'si-summary-widget',\n imports: [SiIconComponent, SiTranslatePipe],\n templateUrl: './si-summary-widget.component.html',\n styleUrl: './si-summary-widget.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiSummaryWidgetComponent {\n /** Status. Alternatively, use {@link icon} and {@link color}. */\n readonly status = input<ExtendedStatusType>();\n /** Icon token, see {@link https://element.siemens.io/icons/element}. */\n readonly icon = input<string>();\n /** Color class, see {@link https://element.siemens.io/fundamentals/typography/#color-variants-classes}. */\n readonly color = input<string>();\n /** Icon token, see {@link https://element.siemens.io/fundamentals/icons/}. */\n readonly stackedIcon = input<string>();\n /** Color class, see {@link https://element.siemens.io/fundamentals/icons/}. */\n readonly stackedColor = input<string>();\n /** The label. */\n readonly label = input.required<TranslatableString>();\n /** Value to display. */\n readonly value = input.required<TranslatableString>();\n /**\n * Selected state, will change when clicked.\n * @defaultValue false\n */\n readonly selected = model(false);\n /**\n * Readonly state.\n * @defaultValue false\n */\n readonly readonly = input(false, { transform: booleanAttribute });\n /**\n * Disabled state.\n * @defaultValue false\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n protected readonly interactive = computed(() => !this.disabled() && !this.readonly());\n\n protected readonly statusIcon = computed(() => {\n const status = this.status();\n return status\n ? STATUS_ICON[status]\n : {\n icon: this.icon(),\n color: this.color(),\n stacked: this.stackedIcon(),\n stackedColor: this.stackedColor()\n };\n });\n\n protected toggleSelected(): void {\n if (this.interactive()) {\n this.selected.set(!this.selected());\n }\n }\n}\n","<div\n class=\"widget ps-2 pe-4 gap-2\"\n role=\"checkbox\"\n [attr.tabindex]=\"interactive() ? '0' : ''\"\n [attr.aria-disabled]=\"!interactive()\"\n [attr.aria-checked]=\"selected()\"\n [class.selected]=\"selected()\"\n [class.disabled]=\"disabled()\"\n [class.interactive]=\"interactive()\"\n (click)=\"toggleSelected()\"\n (keydown.enter)=\"toggleSelected()\"\n>\n @let actualIcon = statusIcon();\n @if (actualIcon.icon) {\n <si-icon\n size=\"icon\"\n alt=\"\"\n [icon]=\"actualIcon.icon\"\n [color]=\"actualIcon.color\"\n [stackedIcon]=\"actualIcon.stacked\"\n [stackedColor]=\"actualIcon.stackedColor\"\n />\n }\n <div class=\"d-flex flex-column py-2\" [class.ps-2]=\"!actualIcon.icon\">\n <div class=\"si-title-2\">{{ value() | translate }}</div>\n <div class=\"si-body-2 text-secondary\">{{ label() | translate }}</div>\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-summary-widget.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
-
import
|
|
4
|
-
import { SiTranslateModule } from '@siemens/element-translate-ng/translate';
|
|
3
|
+
import { SiTranslatePipe } from '@siemens/element-translate-ng/translate';
|
|
5
4
|
|
|
6
5
|
/**
|
|
7
|
-
* Copyright Siemens 2016 - 2025
|
|
6
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
8
7
|
* SPDX-License-Identifier: MIT
|
|
9
8
|
*/
|
|
10
9
|
/**
|
|
@@ -25,17 +24,17 @@ class SiSystemBannerComponent {
|
|
|
25
24
|
message = input.required();
|
|
26
25
|
bannerClass = computed(() => `banner-${this.status()}`);
|
|
27
26
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiSystemBannerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.6", type: SiSystemBannerComponent, isStandalone: true, selector: "si-system-banner", inputs: { status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class": "bannerClass()" } }, ngImport: i0, template: "<div\n class=\"text-center text-truncate si-title-2 banner\"\n role=\"alert\"\n aria-atomic=\"true\"\n aria-live=\"assertive\"\n>\n {{ message() | translate }}\n</div>\n", styles: [":host{display:block;inline-size:100%}:host .banner{padding-block:2px;padding-inline:12px}:host.banner-info{background-color:var(--element-status-information);color:var(--element-status-information-contrast)}:host.banner-success{background-color:var(--element-status-success);color:var(--element-status-success-contrast)}:host.banner-warning{background-color:var(--element-status-warning);color:var(--element-status-warning-contrast)}:host.banner-caution{background-color:var(--element-status-caution);color:var(--element-status-caution-contrast)}:host.banner-danger{background-color:var(--element-status-danger);color:var(--element-status-danger-contrast)}:host.banner-critical{background-color:var(--element-status-critical);color:var(--element-status-critical-contrast)}\n"], dependencies: [{ kind: "
|
|
27
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.6", type: SiSystemBannerComponent, isStandalone: true, selector: "si-system-banner", inputs: { status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class": "bannerClass()" } }, ngImport: i0, template: "<div\n class=\"text-center text-truncate si-title-2 banner\"\n role=\"alert\"\n aria-atomic=\"true\"\n aria-live=\"assertive\"\n>\n {{ message() | translate }}\n</div>\n", styles: [":host{display:block;inline-size:100%}:host .banner{padding-block:2px;padding-inline:12px}:host.banner-info{background-color:var(--element-status-information);color:var(--element-status-information-contrast)}:host.banner-success{background-color:var(--element-status-success);color:var(--element-status-success-contrast)}:host.banner-warning{background-color:var(--element-status-warning);color:var(--element-status-warning-contrast)}:host.banner-caution{background-color:var(--element-status-caution);color:var(--element-status-caution-contrast)}:host.banner-danger{background-color:var(--element-status-danger);color:var(--element-status-danger-contrast)}:host.banner-critical{background-color:var(--element-status-critical);color:var(--element-status-critical-contrast)}\n"], dependencies: [{ kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
29
28
|
}
|
|
30
29
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiSystemBannerComponent, decorators: [{
|
|
31
30
|
type: Component,
|
|
32
|
-
args: [{
|
|
31
|
+
args: [{ selector: 'si-system-banner', imports: [SiTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
33
32
|
'[class]': 'bannerClass()'
|
|
34
33
|
}, template: "<div\n class=\"text-center text-truncate si-title-2 banner\"\n role=\"alert\"\n aria-atomic=\"true\"\n aria-live=\"assertive\"\n>\n {{ message() | translate }}\n</div>\n", styles: [":host{display:block;inline-size:100%}:host .banner{padding-block:2px;padding-inline:12px}:host.banner-info{background-color:var(--element-status-information);color:var(--element-status-information-contrast)}:host.banner-success{background-color:var(--element-status-success);color:var(--element-status-success-contrast)}:host.banner-warning{background-color:var(--element-status-warning);color:var(--element-status-warning-contrast)}:host.banner-caution{background-color:var(--element-status-caution);color:var(--element-status-caution-contrast)}:host.banner-danger{background-color:var(--element-status-danger);color:var(--element-status-danger-contrast)}:host.banner-critical{background-color:var(--element-status-critical);color:var(--element-status-critical-contrast)}\n"] }]
|
|
35
34
|
}] });
|
|
36
35
|
|
|
37
36
|
/**
|
|
38
|
-
* Copyright Siemens 2016 - 2025
|
|
37
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
39
38
|
* SPDX-License-Identifier: MIT
|
|
40
39
|
*/
|
|
41
40
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-system-banner.mjs","sources":["../../../../projects/element-ng/system-banner/system-banner.component.ts","../../../../projects/element-ng/system-banner/system-banner.component.html","../../../../projects/element-ng/system-banner/index.ts","../../../../projects/element-ng/system-banner/siemens-element-ng-system-banner.ts"],"sourcesContent":["/**\n * Copyright Siemens 2016 - 2025
|
|
1
|
+
{"version":3,"file":"siemens-element-ng-system-banner.mjs","sources":["../../../../projects/element-ng/system-banner/system-banner.component.ts","../../../../projects/element-ng/system-banner/system-banner.component.html","../../../../projects/element-ng/system-banner/index.ts","../../../../projects/element-ng/system-banner/siemens-element-ng-system-banner.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { ExtendedStatusType } from '@siemens/element-ng/common';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\n/**\n * The system banner component displays a message with specific status as background.\n * Use this component for displaying system level messages on top of the page.\n */\n@Component({\n selector: 'si-system-banner',\n imports: [SiTranslatePipe],\n templateUrl: './system-banner.component.html',\n styleUrl: './system-banner.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'bannerClass()'\n }\n})\nexport class SiSystemBannerComponent {\n /**\n * Status of the system banner.\n * Possible values are 'info', 'success', 'warning', 'caution', 'danger', 'critical'.\n *\n * @defaultValue 'info'\n */\n readonly status = input<ExtendedStatusType>('info');\n /**\n * Message to be displayed in the system banner.\n */\n readonly message = input.required<TranslatableString>();\n\n protected readonly bannerClass = computed(() => `banner-${this.status()}`);\n}\n","<div\n class=\"text-center text-truncate si-title-2 banner\"\n role=\"alert\"\n aria-atomic=\"true\"\n aria-live=\"assertive\"\n>\n {{ message() | translate }}\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './system-banner.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;AAGG;AAKH;;;AAGG;MAWU,uBAAuB,CAAA;AAClC;;;;;AAKG;AACM,IAAA,MAAM,GAAG,KAAK,CAAqB,MAAM,CAAC;AACnD;;AAEG;AACM,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAsB;AAEpC,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAU,OAAA,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,CAAE,CAAC;uGAb/D,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBpC,gLAQA,EAAA,MAAA,EAAA,CAAA,wwBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDMY,eAAe,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAQd,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAVnC,SAAS;+BACE,kBAAkB,EAAA,OAAA,EACnB,CAAC,eAAe,CAAC,mBAGT,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,SAAS,EAAE;AACZ,qBAAA,EAAA,QAAA,EAAA,gLAAA,EAAA,MAAA,EAAA,CAAA,wwBAAA,CAAA,EAAA;;;AEpBH;;;AAGG;;ACHH;;AAEG;;;;"}
|
|
@@ -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');
|
|
@@ -146,7 +145,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImpor
|
|
|
146
145
|
}] });
|
|
147
146
|
|
|
148
147
|
/**
|
|
149
|
-
* Copyright Siemens 2016 - 2025
|
|
148
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
150
149
|
* SPDX-License-Identifier: MIT
|
|
151
150
|
*/
|
|
152
151
|
/** @experimental */
|
|
@@ -171,11 +170,11 @@ class SiTabNextLinkComponent extends SiTabNextBaseDirective {
|
|
|
171
170
|
});
|
|
172
171
|
}
|
|
173
172
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiTabNextLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
174
|
-
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 });
|
|
175
174
|
}
|
|
176
175
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiTabNextLinkComponent, decorators: [{
|
|
177
176
|
type: Component,
|
|
178
|
-
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: {
|
|
179
178
|
'[class.active]': 'routerLinkActive.isActive',
|
|
180
179
|
'[attr.aria-selected]': 'routerLinkActive.isActive'
|
|
181
180
|
}, hostDirectives: [
|
|
@@ -186,7 +185,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImpor
|
|
|
186
185
|
}], ctorParameters: () => [] });
|
|
187
186
|
|
|
188
187
|
/**
|
|
189
|
-
* Copyright Siemens 2016 - 2025
|
|
188
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
190
189
|
* SPDX-License-Identifier: MIT
|
|
191
190
|
*/
|
|
192
191
|
/** @experimental */
|
|
@@ -222,11 +221,11 @@ class SiTabNextComponent extends SiTabNextBaseDirective {
|
|
|
222
221
|
}
|
|
223
222
|
}
|
|
224
223
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiTabNextComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
225
|
-
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 });
|
|
226
225
|
}
|
|
227
226
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiTabNextComponent, decorators: [{
|
|
228
227
|
type: Component,
|
|
229
|
-
args: [{ selector: 'si-tab-next',
|
|
228
|
+
args: [{ selector: 'si-tab-next', imports: [NgClass, SiIconNextComponent, SiTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
230
229
|
'[class.active]': 'active()',
|
|
231
230
|
'[attr.aria-selected]': 'active()',
|
|
232
231
|
'(click)': 'selectTab()',
|
|
@@ -235,7 +234,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImpor
|
|
|
235
234
|
}] });
|
|
236
235
|
|
|
237
236
|
/**
|
|
238
|
-
* Copyright Siemens 2016 - 2025
|
|
237
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
239
238
|
* SPDX-License-Identifier: MIT
|
|
240
239
|
*/
|
|
241
240
|
/** @experimental */
|
|
@@ -323,19 +322,19 @@ class SiTabsetNextComponent {
|
|
|
323
322
|
provide: SI_TABSET_NEXT,
|
|
324
323
|
useExisting: SiTabsetNextComponent
|
|
325
324
|
}
|
|
326
|
-
], 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: "
|
|
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 });
|
|
327
326
|
}
|
|
328
327
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiTabsetNextComponent, decorators: [{
|
|
329
328
|
type: Component,
|
|
330
|
-
args: [{ selector: 'si-tabset-next',
|
|
331
|
-
|
|
329
|
+
args: [{ selector: 'si-tabset-next', imports: [
|
|
330
|
+
SiTranslatePipe,
|
|
332
331
|
SiMenuDirective,
|
|
333
332
|
SiMenuItemComponent,
|
|
334
333
|
CdkMenuTrigger,
|
|
335
334
|
NgTemplateOutlet,
|
|
336
335
|
SiResizeObserverModule,
|
|
337
336
|
RouterLink
|
|
338
|
-
], providers: [
|
|
337
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
339
338
|
{
|
|
340
339
|
provide: SI_TABSET_NEXT,
|
|
341
340
|
useExisting: SiTabsetNextComponent
|
|
@@ -344,7 +343,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImpor
|
|
|
344
343
|
}] });
|
|
345
344
|
|
|
346
345
|
/**
|
|
347
|
-
* Copyright Siemens 2016 - 2025
|
|
346
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
348
347
|
* SPDX-License-Identifier: MIT
|
|
349
348
|
*/
|
|
350
349
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-tabs-next.mjs","sources":["../../../../projects/element-ng/tabs-next/si-tabs-tokens.ts","../../../../projects/element-ng/tabs-next/si-tab-next-base.directive.ts","../../../../projects/element-ng/tabs-next/si-tab-next-link.component.ts","../../../../projects/element-ng/tabs-next/si-tab-next.component.html","../../../../projects/element-ng/tabs-next/si-tab-next.component.ts","../../../../projects/element-ng/tabs-next/si-tabset-next.component.ts","../../../../projects/element-ng/tabs-next/si-tabset-next.component.html","../../../../projects/element-ng/tabs-next/index.ts","../../../../projects/element-ng/tabs-next/siemens-element-ng-tabs-next.ts"],"sourcesContent":["/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { InjectionToken } from '@angular/core';\n\nimport { SiTabsetNextComponent } from './si-tabset-next.component';\n\nexport const SI_TABSET_NEXT = new InjectionToken<SiTabsetNextComponent>('SiTabsetNextComponent');\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { FocusableOption, FocusOrigin } from '@angular/cdk/a11y';\nimport {\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n output,\n TemplateRef,\n viewChild,\n WritableSignal\n} from '@angular/core';\nimport { addIcons, elementCancel } from '@siemens/element-ng/icon';\nimport { TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SI_TABSET_NEXT } from './si-tabs-tokens';\n\n@Directive({\n selector: '[siTabNextBase]',\n host: {\n class: 'nav-link focus-inside px-5 si-title-1',\n role: 'tab',\n '[class.disabled]': 'disabledTab()',\n '[attr.id]': \"'tab-' + tabId\",\n '[attr.aria-disabled]': 'disabledTab()',\n '[attr.tabindex]': 'tabset.focusKeyManager?.activeItem === this && !disabledTab() ? 0 : -1',\n '[attr.aria-controls]': \"'content-' + tabId\",\n '(keydown.arrowLeft)': 'tabset.focusPrevious($event)',\n '(keydown.arrowRight)': 'tabset.focusNext($event)',\n '(keydown.delete)': 'closeTab($event)'\n }\n})\nexport abstract class SiTabNextBaseDirective implements OnDestroy, FocusableOption {\n abstract readonly active: WritableSignal<boolean>;\n /** Title of the tab item. */\n readonly heading = input.required<TranslatableString>();\n /**\n * Icon of the tab item.\n * If provided, heading text will be ignored and only icon will be displayed.\n */\n readonly icon = input<string>();\n /**\n * Additional badge content. A value of\n * - `true` will render a red dot\n * - any string without a `badgeColor` will render a red dot with text\n * - any string with a `badgeColor` will render a normal badge\n */\n readonly badgeContent = input<TranslatableString | boolean>();\n /**\n * Background color of the badge.\n * If no color is provided a red dot badge will be rendered.\n */\n readonly badgeColor = input<string>();\n /**\n * Disables the tab.\n *\n * @defaultValue false\n */\n readonly disabledTab = input(false, {\n transform: booleanAttribute,\n // eslint-disable-next-line @angular-eslint/no-input-rename\n alias: 'disabled'\n });\n /**\n * Close the current tab.\n *\n * @defaultValue false\n */\n readonly closable = input(false, {\n transform: booleanAttribute\n });\n /** Event emitter to notify when a tab is closed. */\n readonly closeTriggered = output();\n\n /** @internal */\n readonly badgeIsNumber = computed(() => {\n return typeof this.badgeContent() !== 'boolean';\n });\n\n readonly tabButton = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly tabContent = viewChild('tabContent', { read: TemplateRef });\n\n private static tabCounter = 0;\n private indexBeforeClose = -1;\n\n /** @internal */\n tabId = `${SiTabNextBaseDirective.tabCounter++}`;\n protected readonly icons = addIcons({ elementCancel });\n protected tabset = inject(SI_TABSET_NEXT);\n /** @internal */\n readonly index = computed(() =>\n this.tabset.tabPanels().findIndex(tab => tab.tabId === this.tabId)\n );\n\n ngOnDestroy(): void {\n // adjust the focus index and selected tab index if component is destroyed\n // as a side effect to close tab event\n if (this.indexBeforeClose >= 0) {\n const indexToFocus = this.tabset.getNextIndexToFocus(this.indexBeforeClose);\n if (this.active()) {\n this.tabset.focusKeyManager?.updateActiveItem(indexToFocus);\n this.tabset.tabPanels()[indexToFocus].tabButton.nativeElement.focus();\n } else {\n const selectedItemIndex = this.tabset.activeTabIndex() ?? 0;\n this.tabset.focusKeyManager?.updateActiveItem(selectedItemIndex);\n this.tabset.tabPanels()[selectedItemIndex].focus();\n }\n // if this tab was the active one we need to select next tab as active\n if (this.active()) {\n const targetActiveTab = this.tabset.tabPanels()[indexToFocus];\n if (targetActiveTab) {\n targetActiveTab.active.set(true);\n }\n }\n }\n }\n\n protected closeTab(event: Event): void {\n if (this.closable() && !this.disabledTab()) {\n event.stopPropagation();\n const index = this.index();\n this.closeTriggered.emit();\n this.indexBeforeClose = index;\n }\n }\n\n focus(origin?: FocusOrigin): void {\n this.tabButton.nativeElement.focus({ preventScroll: true });\n // The element is not fully scrolled into view when focused. So we prevent and scroll it manually.\n this.tabButton.nativeElement.scrollIntoView({\n inline: 'nearest',\n block: 'nearest',\n behavior: 'instant'\n });\n }\n\n get disabled(): boolean {\n return this.disabledTab();\n }\n\n selectTab(retainFocus?: boolean): void {\n this.tabset.focusKeyManager?.updateActiveItem(this.index());\n if (retainFocus) {\n // We need the timeout to wait for cdkMenu to restore the focus before we move it again.\n setTimeout(() => this.focus());\n }\n }\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Router, RouterLink, RouterLinkActive } from '@angular/router';\nimport { SiIconNextComponent } from '@siemens/element-ng/icon';\nimport { SiTranslateModule } from '@siemens/element-translate-ng/translate';\n\nimport { SiTabNextBaseDirective } from './si-tab-next-base.directive';\n\n/** @experimental */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'a[si-tab-next][routerLink]',\n templateUrl: './si-tab-next.component.html',\n styleUrl: './si-tab-next.component.scss',\n imports: [NgClass, SiIconNextComponent, SiTranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.active]': 'routerLinkActive.isActive',\n '[attr.aria-selected]': 'routerLinkActive.isActive'\n },\n hostDirectives: [\n {\n directive: RouterLinkActive\n }\n ]\n})\nexport class SiTabNextLinkComponent extends SiTabNextBaseDirective {\n private router = inject(Router, { optional: true });\n /** @defaultValue false */\n override readonly active = signal(false);\n /** @internal */\n routerLink = inject(RouterLink, { optional: true, self: true });\n private routerLinkActive = inject(RouterLinkActive, { self: true });\n constructor() {\n super();\n this.routerLinkActive.isActiveChange\n .pipe(takeUntilDestroyed())\n .subscribe(isActive => this.active.set(isActive));\n\n effect(() => {\n if (this.active()) {\n if (this.router && this.routerLink?.urlTree) {\n this.router.navigateByUrl(this.routerLink.urlTree);\n }\n }\n });\n }\n}\n","@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","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, model, OnDestroy } from '@angular/core';\nimport { SiIconNextComponent } from '@siemens/element-ng/icon';\nimport { SiTranslateModule } from '@siemens/element-translate-ng/translate';\n\nimport { SiTabNextBaseDirective } from './si-tab-next-base.directive';\n\n/** @experimental */\n@Component({\n selector: 'si-tab-next',\n templateUrl: './si-tab-next.component.html',\n styleUrl: './si-tab-next.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, SiIconNextComponent, SiTranslateModule],\n host: {\n '[class.active]': 'active()',\n '[attr.aria-selected]': 'active()',\n '(click)': 'selectTab()',\n '(keydown.enter)': 'selectTab()'\n }\n})\nexport class SiTabNextComponent extends SiTabNextBaseDirective implements OnDestroy {\n /**\n * Whether the tab is active or not.\n * If set to `true`, the tab will be selected and its content will be displayed.\n * @defaultValue false\n * */\n override readonly active = model(false);\n\n /** @internal */\n override selectTab(retainFocus?: boolean): void {\n const tabs = this.tabset.tabPanels();\n const newTabIndex = this.index();\n const currentTabIndex = this.tabset.activeTabIndex();\n let continueWithSelection = newTabIndex !== currentTabIndex;\n\n if (continueWithSelection && currentTabIndex !== -1) {\n const currentTab = tabs[currentTabIndex];\n const deselectEvent = {\n target: currentTab,\n tabIndex: currentTabIndex,\n cancel: () => {\n continueWithSelection = false;\n currentTab.active.set(true);\n }\n };\n\n currentTab.active.set(false);\n this.tabset.deselect.emit(deselectEvent);\n }\n\n if (continueWithSelection) {\n this.active.set(true);\n super.selectTab(retainFocus);\n }\n }\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { CdkMenu, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n inject,\n INJECTOR,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { SiMenuDirective, SiMenuItemComponent } from '@siemens/element-ng/menu';\nimport { SiResizeObserverModule } from '@siemens/element-ng/resize-observer';\nimport { SiTranslateModule } from '@siemens/element-translate-ng/translate';\n\nimport { SiTabNextLinkComponent } from './si-tab-next-link.component';\nimport { SiTabNextComponent } from './si-tab-next.component';\nimport { SI_TABSET_NEXT } from './si-tabs-tokens';\n\n/** @experimental */\nexport interface SiTabNextDeselectionEvent {\n /**\n * The target tab\n */\n target: SiTabNextComponent | SiTabNextLinkComponent;\n /**\n * The index of target tab\n */\n tabIndex: number;\n /**\n * To be called to prevent switching the tab\n */\n cancel: () => void;\n}\n\n/** @experimental */\n@Component({\n selector: 'si-tabset-next',\n templateUrl: './si-tabset-next.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './si-tabset-next.component.scss',\n imports: [\n SiTranslateModule,\n SiMenuDirective,\n SiMenuItemComponent,\n CdkMenuTrigger,\n NgTemplateOutlet,\n SiResizeObserverModule,\n RouterLink\n ],\n providers: [\n {\n provide: SI_TABSET_NEXT,\n useExisting: SiTabsetNextComponent\n }\n ]\n})\nexport class SiTabsetNextComponent implements AfterViewInit {\n /**\n * Event emitter to notify when a tab became inactive.\n */\n readonly deselect = output<SiTabNextDeselectionEvent>();\n\n /** @internal */\n readonly activeTab = computed(() => {\n return this.tabPanels().find(tab => tab.active());\n });\n /** @internal */\n readonly activeTabIndex = computed(() => this.activeTab()?.index() ?? -1);\n\n /** @internal */\n focusKeyManager?: FocusKeyManager<SiTabNextComponent | SiTabNextLinkComponent>;\n\n private readonly tabPanelsLinks = contentChildren(SiTabNextLinkComponent);\n private readonly tabPanelsComponents = contentChildren(SiTabNextComponent);\n\n /** @internal */\n readonly tabPanels = computed(() => {\n const allTabs: (SiTabNextLinkComponent | SiTabNextComponent)[] = [\n ...this.tabPanelsLinks(),\n ...this.tabPanelsComponents()\n ];\n return allTabs;\n });\n\n protected readonly menu = viewChild('menu', { read: CdkMenu });\n protected readonly showMenuButton = signal(false);\n\n private injector = inject(INJECTOR);\n\n ngAfterViewInit(): void {\n this.focusKeyManager = new FocusKeyManager(this.tabPanels, this.injector);\n // To avoid ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n this.focusKeyManager?.updateActiveItem(this.tabPanels().findIndex(tab => !tab.disabledTab()));\n });\n }\n\n protected menuOpened(): void {\n // wait for menu items to be rendered\n setTimeout(() => {\n const nextMenuItemToFocus = this.getNextIndexToFocus(this.activeTabIndex() + 1);\n const menuItems = this.menu()?.items.toArray() ?? [];\n if (nextMenuItemToFocus >= 0 && nextMenuItemToFocus < menuItems.length) {\n menuItems[nextMenuItemToFocus].focus();\n // bug in cdk as setting focus on menu item does not update focus manager active item\n // eslint-disable-next-line @typescript-eslint/dot-notation\n const focusManager = this.menu()?.['keyManager'];\n focusManager?.updateActiveItem(nextMenuItemToFocus);\n } else {\n menuItems[0].focus();\n }\n });\n }\n\n protected tabIsLink(tab: unknown): tab is SiTabNextLinkComponent {\n return tab instanceof SiTabNextLinkComponent;\n }\n\n /** @internal */\n focusPrevious(e: Event): void {\n e.preventDefault();\n this.focusKeyManager?.setPreviousItemActive();\n }\n\n /** @internal */\n focusNext(e: Event): void {\n e.preventDefault();\n this.focusKeyManager?.setNextItemActive();\n }\n\n /** @internal */\n getNextIndexToFocus(currentIndex: number): number {\n for (let i = 0; i < this.tabPanels().length; i++) {\n // Get the actual index using modulo to wrap around\n const checkIndex = (currentIndex + i) % this.tabPanels().length;\n\n if (!this.tabPanels()[checkIndex].disabledTab()) {\n return this.tabPanels()[checkIndex].index();\n }\n }\n return -1;\n }\n\n protected resizeContainer(width: number, scrollWidth: number): void {\n // 48px is the width of the menu button.\n this.showMenuButton.set(scrollWidth > width + (this.showMenuButton() ? 48 : 0));\n }\n}\n","<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","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-tabset-next.component';\nexport * from './si-tab-next.component';\nexport * from './si-tab-next-link.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"siemens-element-ng-tabs-next.mjs","sources":["../../../../projects/element-ng/tabs-next/si-tabs-tokens.ts","../../../../projects/element-ng/tabs-next/si-tab-next-base.directive.ts","../../../../projects/element-ng/tabs-next/si-tab-next-link.component.ts","../../../../projects/element-ng/tabs-next/si-tab-next.component.html","../../../../projects/element-ng/tabs-next/si-tab-next.component.ts","../../../../projects/element-ng/tabs-next/si-tabset-next.component.ts","../../../../projects/element-ng/tabs-next/si-tabset-next.component.html","../../../../projects/element-ng/tabs-next/index.ts","../../../../projects/element-ng/tabs-next/siemens-element-ng-tabs-next.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { InjectionToken } from '@angular/core';\n\nimport { SiTabsetNextComponent } from './si-tabset-next.component';\n\nexport const SI_TABSET_NEXT = new InjectionToken<SiTabsetNextComponent>('SiTabsetNextComponent');\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { FocusableOption, FocusOrigin } from '@angular/cdk/a11y';\nimport {\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n output,\n TemplateRef,\n viewChild,\n WritableSignal\n} from '@angular/core';\nimport { addIcons, elementCancel } from '@siemens/element-ng/icon';\nimport { TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SI_TABSET_NEXT } from './si-tabs-tokens';\n\n@Directive({\n selector: '[siTabNextBase]',\n host: {\n class: 'nav-link focus-inside px-5 si-title-1',\n role: 'tab',\n '[class.disabled]': 'disabledTab()',\n '[attr.id]': \"'tab-' + tabId\",\n '[attr.aria-disabled]': 'disabledTab()',\n '[attr.tabindex]': 'tabset.focusKeyManager?.activeItem === this && !disabledTab() ? 0 : -1',\n '[attr.aria-controls]': \"'content-' + tabId\",\n '(keydown.arrowLeft)': 'tabset.focusPrevious($event)',\n '(keydown.arrowRight)': 'tabset.focusNext($event)',\n '(keydown.delete)': 'closeTab($event)'\n }\n})\nexport abstract class SiTabNextBaseDirective implements OnDestroy, FocusableOption {\n abstract readonly active: WritableSignal<boolean>;\n /** Title of the tab item. */\n readonly heading = input.required<TranslatableString>();\n /**\n * Icon of the tab item.\n * If provided, heading text will be ignored and only icon will be displayed.\n */\n readonly icon = input<string>();\n /**\n * Additional badge content. A value of\n * - `true` will render a red dot\n * - any string without a `badgeColor` will render a red dot with text\n * - any string with a `badgeColor` will render a normal badge\n */\n readonly badgeContent = input<TranslatableString | boolean>();\n /**\n * Background color of the badge.\n * If no color is provided a red dot badge will be rendered.\n */\n readonly badgeColor = input<string>();\n /**\n * Disables the tab.\n *\n * @defaultValue false\n */\n readonly disabledTab = input(false, {\n transform: booleanAttribute,\n // eslint-disable-next-line @angular-eslint/no-input-rename\n alias: 'disabled'\n });\n /**\n * Close the current tab.\n *\n * @defaultValue false\n */\n readonly closable = input(false, {\n transform: booleanAttribute\n });\n /** Event emitter to notify when a tab is closed. */\n readonly closeTriggered = output();\n\n /** @internal */\n readonly badgeIsNumber = computed(() => {\n return typeof this.badgeContent() !== 'boolean';\n });\n\n readonly tabButton = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly tabContent = viewChild('tabContent', { read: TemplateRef });\n\n private static tabCounter = 0;\n private indexBeforeClose = -1;\n\n /** @internal */\n tabId = `${SiTabNextBaseDirective.tabCounter++}`;\n protected readonly icons = addIcons({ elementCancel });\n protected tabset = inject(SI_TABSET_NEXT);\n /** @internal */\n readonly index = computed(() =>\n this.tabset.tabPanels().findIndex(tab => tab.tabId === this.tabId)\n );\n\n ngOnDestroy(): void {\n // adjust the focus index and selected tab index if component is destroyed\n // as a side effect to close tab event\n if (this.indexBeforeClose >= 0) {\n const indexToFocus = this.tabset.getNextIndexToFocus(this.indexBeforeClose);\n if (this.active()) {\n this.tabset.focusKeyManager?.updateActiveItem(indexToFocus);\n this.tabset.tabPanels()[indexToFocus].tabButton.nativeElement.focus();\n } else {\n const selectedItemIndex = this.tabset.activeTabIndex() ?? 0;\n this.tabset.focusKeyManager?.updateActiveItem(selectedItemIndex);\n this.tabset.tabPanels()[selectedItemIndex].focus();\n }\n // if this tab was the active one we need to select next tab as active\n if (this.active()) {\n const targetActiveTab = this.tabset.tabPanels()[indexToFocus];\n if (targetActiveTab) {\n targetActiveTab.active.set(true);\n }\n }\n }\n }\n\n protected closeTab(event: Event): void {\n if (this.closable() && !this.disabledTab()) {\n event.stopPropagation();\n const index = this.index();\n this.closeTriggered.emit();\n this.indexBeforeClose = index;\n }\n }\n\n focus(origin?: FocusOrigin): void {\n this.tabButton.nativeElement.focus({ preventScroll: true });\n // The element is not fully scrolled into view when focused. So we prevent and scroll it manually.\n this.tabButton.nativeElement.scrollIntoView({\n inline: 'nearest',\n block: 'nearest',\n behavior: 'instant'\n });\n }\n\n get disabled(): boolean {\n return this.disabledTab();\n }\n\n selectTab(retainFocus?: boolean): void {\n this.tabset.focusKeyManager?.updateActiveItem(this.index());\n if (retainFocus) {\n // We need the timeout to wait for cdkMenu to restore the focus before we move it again.\n setTimeout(() => this.focus());\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Router, RouterLink, RouterLinkActive } from '@angular/router';\nimport { SiIconNextComponent } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\nimport { SiTabNextBaseDirective } from './si-tab-next-base.directive';\n\n/** @experimental */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'a[si-tab-next][routerLink]',\n imports: [NgClass, SiIconNextComponent, SiTranslatePipe],\n templateUrl: './si-tab-next.component.html',\n styleUrl: './si-tab-next.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.active]': 'routerLinkActive.isActive',\n '[attr.aria-selected]': 'routerLinkActive.isActive'\n },\n hostDirectives: [\n {\n directive: RouterLinkActive\n }\n ]\n})\nexport class SiTabNextLinkComponent extends SiTabNextBaseDirective {\n private router = inject(Router, { optional: true });\n /** @defaultValue false */\n override readonly active = signal(false);\n /** @internal */\n routerLink = inject(RouterLink, { optional: true, self: true });\n private routerLinkActive = inject(RouterLinkActive, { self: true });\n constructor() {\n super();\n this.routerLinkActive.isActiveChange\n .pipe(takeUntilDestroyed())\n .subscribe(isActive => this.active.set(isActive));\n\n effect(() => {\n if (this.active()) {\n if (this.router && this.routerLink?.urlTree) {\n this.router.navigateByUrl(this.routerLink.urlTree);\n }\n }\n });\n }\n}\n","@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","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, model, OnDestroy } from '@angular/core';\nimport { SiIconNextComponent } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\nimport { SiTabNextBaseDirective } from './si-tab-next-base.directive';\n\n/** @experimental */\n@Component({\n selector: 'si-tab-next',\n imports: [NgClass, SiIconNextComponent, SiTranslatePipe],\n templateUrl: './si-tab-next.component.html',\n styleUrl: './si-tab-next.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.active]': 'active()',\n '[attr.aria-selected]': 'active()',\n '(click)': 'selectTab()',\n '(keydown.enter)': 'selectTab()'\n }\n})\nexport class SiTabNextComponent extends SiTabNextBaseDirective implements OnDestroy {\n /**\n * Whether the tab is active or not.\n * If set to `true`, the tab will be selected and its content will be displayed.\n * @defaultValue false\n * */\n override readonly active = model(false);\n\n /** @internal */\n override selectTab(retainFocus?: boolean): void {\n const tabs = this.tabset.tabPanels();\n const newTabIndex = this.index();\n const currentTabIndex = this.tabset.activeTabIndex();\n let continueWithSelection = newTabIndex !== currentTabIndex;\n\n if (continueWithSelection && currentTabIndex !== -1) {\n const currentTab = tabs[currentTabIndex];\n const deselectEvent = {\n target: currentTab,\n tabIndex: currentTabIndex,\n cancel: () => {\n continueWithSelection = false;\n currentTab.active.set(true);\n }\n };\n\n currentTab.active.set(false);\n this.tabset.deselect.emit(deselectEvent);\n }\n\n if (continueWithSelection) {\n this.active.set(true);\n super.selectTab(retainFocus);\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { CdkMenu, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n inject,\n INJECTOR,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { SiMenuDirective, SiMenuItemComponent } from '@siemens/element-ng/menu';\nimport { SiResizeObserverModule } from '@siemens/element-ng/resize-observer';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\nimport { SiTabNextLinkComponent } from './si-tab-next-link.component';\nimport { SiTabNextComponent } from './si-tab-next.component';\nimport { SI_TABSET_NEXT } from './si-tabs-tokens';\n\n/** @experimental */\nexport interface SiTabNextDeselectionEvent {\n /**\n * The target tab\n */\n target: SiTabNextComponent | SiTabNextLinkComponent;\n /**\n * The index of target tab\n */\n tabIndex: number;\n /**\n * To be called to prevent switching the tab\n */\n cancel: () => void;\n}\n\n/** @experimental */\n@Component({\n selector: 'si-tabset-next',\n imports: [\n SiTranslatePipe,\n SiMenuDirective,\n SiMenuItemComponent,\n CdkMenuTrigger,\n NgTemplateOutlet,\n SiResizeObserverModule,\n RouterLink\n ],\n templateUrl: './si-tabset-next.component.html',\n styleUrl: './si-tabset-next.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: SI_TABSET_NEXT,\n useExisting: SiTabsetNextComponent\n }\n ]\n})\nexport class SiTabsetNextComponent implements AfterViewInit {\n /**\n * Event emitter to notify when a tab became inactive.\n */\n readonly deselect = output<SiTabNextDeselectionEvent>();\n\n /** @internal */\n readonly activeTab = computed(() => {\n return this.tabPanels().find(tab => tab.active());\n });\n /** @internal */\n readonly activeTabIndex = computed(() => this.activeTab()?.index() ?? -1);\n\n /** @internal */\n focusKeyManager?: FocusKeyManager<SiTabNextComponent | SiTabNextLinkComponent>;\n\n private readonly tabPanelsLinks = contentChildren(SiTabNextLinkComponent);\n private readonly tabPanelsComponents = contentChildren(SiTabNextComponent);\n\n /** @internal */\n readonly tabPanels = computed(() => {\n const allTabs: (SiTabNextLinkComponent | SiTabNextComponent)[] = [\n ...this.tabPanelsLinks(),\n ...this.tabPanelsComponents()\n ];\n return allTabs;\n });\n\n protected readonly menu = viewChild('menu', { read: CdkMenu });\n protected readonly showMenuButton = signal(false);\n\n private injector = inject(INJECTOR);\n\n ngAfterViewInit(): void {\n this.focusKeyManager = new FocusKeyManager(this.tabPanels, this.injector);\n // To avoid ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n this.focusKeyManager?.updateActiveItem(this.tabPanels().findIndex(tab => !tab.disabledTab()));\n });\n }\n\n protected menuOpened(): void {\n // wait for menu items to be rendered\n setTimeout(() => {\n const nextMenuItemToFocus = this.getNextIndexToFocus(this.activeTabIndex() + 1);\n const menuItems = this.menu()?.items.toArray() ?? [];\n if (nextMenuItemToFocus >= 0 && nextMenuItemToFocus < menuItems.length) {\n menuItems[nextMenuItemToFocus].focus();\n // bug in cdk as setting focus on menu item does not update focus manager active item\n // eslint-disable-next-line @typescript-eslint/dot-notation\n const focusManager = this.menu()?.['keyManager'];\n focusManager?.updateActiveItem(nextMenuItemToFocus);\n } else {\n menuItems[0].focus();\n }\n });\n }\n\n protected tabIsLink(tab: unknown): tab is SiTabNextLinkComponent {\n return tab instanceof SiTabNextLinkComponent;\n }\n\n /** @internal */\n focusPrevious(e: Event): void {\n e.preventDefault();\n this.focusKeyManager?.setPreviousItemActive();\n }\n\n /** @internal */\n focusNext(e: Event): void {\n e.preventDefault();\n this.focusKeyManager?.setNextItemActive();\n }\n\n /** @internal */\n getNextIndexToFocus(currentIndex: number): number {\n for (let i = 0; i < this.tabPanels().length; i++) {\n // Get the actual index using modulo to wrap around\n const checkIndex = (currentIndex + i) % this.tabPanels().length;\n\n if (!this.tabPanels()[checkIndex].disabledTab()) {\n return this.tabPanels()[checkIndex].index();\n }\n }\n return -1;\n }\n\n protected resizeContainer(width: number, scrollWidth: number): void {\n // 48px is the width of the menu button.\n this.showMenuButton.set(scrollWidth > width + (this.showMenuButton() ? 48 : 0));\n }\n}\n","<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","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-tabset-next.component';\nexport * from './si-tab-next.component';\nexport * from './si-tab-next-link.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -3,15 +3,14 @@ import { NgClass } from '@angular/common';
|
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { EventEmitter, signal, booleanAttribute, HostBinding, Output, Input, ChangeDetectionStrategy, Component, viewChild, viewChildren, inject, ChangeDetectorRef, ContentChildren, NgModule } from '@angular/core';
|
|
5
5
|
import { isRTL, WebComponentContentChildren } from '@siemens/element-ng/common';
|
|
6
|
-
import { addIcons, elementRight3, elementLeft3, elementCancel, SiIconNextComponent
|
|
6
|
+
import { addIcons, elementRight3, elementLeft3, elementCancel, SiIconNextComponent } from '@siemens/element-ng/icon';
|
|
7
7
|
import { SiResizeObserverDirective } from '@siemens/element-ng/resize-observer';
|
|
8
|
-
import
|
|
9
|
-
import { SiTranslateModule } from '@siemens/element-translate-ng/translate';
|
|
8
|
+
import { SiTranslatePipe } from '@siemens/element-translate-ng/translate';
|
|
10
9
|
import { asyncScheduler } from 'rxjs';
|
|
11
10
|
import { first, observeOn } from 'rxjs/operators';
|
|
12
11
|
|
|
13
12
|
/**
|
|
14
|
-
* Copyright Siemens 2016 - 2025
|
|
13
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
15
14
|
* SPDX-License-Identifier: MIT
|
|
16
15
|
*/
|
|
17
16
|
class SiTabComponent {
|
|
@@ -324,20 +323,14 @@ class SiTabsetComponent {
|
|
|
324
323
|
this.focusedTabIndex = undefined;
|
|
325
324
|
}
|
|
326
325
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiTabsetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
327
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiTabsetComponent, isStandalone: true, selector: "si-tabset", inputs: { selectDefaultTab: ["selectDefaultTab", "selectDefaultTab", booleanAttribute], selectedTabIndex: "selectedTabIndex", tabButtonMaxWidth: "tabButtonMaxWidth" }, outputs: { selectedTabIndexChange: "selectedTabIndexChange", deselect: "deselect" }, queries: [{ propertyName: "tabPanels", predicate: SiTabComponent }], viewQueries: [{ propertyName: "tabContainer", first: true, predicate: ["tabContainer"], descendants: true, isSignal: true }, { propertyName: "innerTabContainer", first: true, predicate: ["innerTabContainer"], descendants: true, isSignal: true }, { propertyName: "tabs", predicate: ["tabElement"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n class=\"nav nav-tabs tab-container-header focus-inside\"\n role=\"tablist\"\n [class.is-scrollable]=\"scrollable\"\n (siResizeObserver)=\"resize()\"\n>\n @if (scrollable) {\n <button\n type=\"button\"\n class=\"tab-container-control focus-inside\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [hidden]=\"!xPos\"\n (keydown.enter)=\"scrollStart()\"\n (mousedown)=\"scrollStart()\"\n >\n <si-icon-next class=\"icon flip-rtl\" [icon]=\"icons.elementLeft3\" />\n </button>\n }\n\n <div #tabContainer class=\"tab-container-buttonbar\" (wheel)=\"mouseScroll($event)\">\n <div #innerTabContainer class=\"tab-container-buttonbar-list focus-inside\">\n @for (tab of tabPanels; track $index) {\n <button\n #tabElement\n type=\"button\"\n role=\"tab\"\n class=\"nav-link focus-inside px-5\"\n [attr.aria-controls]=\"tab.id\"\n [id]=\"tab.tabId\"\n [style.max-width.px]=\"tabButtonMaxWidth\"\n [tabindex]=\"!tab.disabled && tab.active() && focusedTabIndex === undefined ? 0 : -1\"\n [class.active]=\"tab.active()\"\n [attr.aria-selected]=\"tab.active()\"\n [class.disabled]=\"tab.disabled\"\n (click)=\"selectTab(tab)\"\n (keydown.arrowLeft)=\"focusPrevious()\"\n (keydown.arrowRight)=\"focusNext()\"\n (keydown.delete)=\"tab.closeTriggered.emit(tab)\"\n (blur)=\"blur()\"\n (focus)=\"focus($index)\"\n >\n <span class=\"text-truncate\">{{ tab.heading | translate }}</span>\n @if (tab.icon) {\n <si-icon-next\n class=\"icon\"\n [attr.role]=\"tab.iconAltText ? 'img' : 'presentation'\"\n [icon]=\"tab.icon\"\n [attr.aria-label]=\"(tab.iconAltText | translate) ?? undefined\"\n />\n }\n @if (tab.badgeContent === true) {\n <span class=\"badge-dot\"></span>\n } @else if (tab.badgeContent && tab.badgeColor) {\n <span class=\"badge\" [ngClass]=\"'bg-' + tab.badgeColor\">\n {{ tab.badgeContent | translate }}\n </span>\n } @else if (tab.badgeContent && !tab.badgeColor) {\n <span class=\"badge-text\"> {{ tab.badgeContent | translate }}</span>\n }\n @if (tab.closable && !tab.disabled) {\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, tab)\"\n />\n }\n </button>\n }\n </div>\n </div>\n @if (scrollable) {\n <button\n type=\"button\"\n class=\"tab-container-control is-end focus-inside\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [hidden]=\"endArrowDisabled\"\n (keydown.enter)=\"scrollEnd()\"\n (mousedown)=\"scrollEnd()\"\n >\n <si-icon-next class=\"icon flip-rtl\" [icon]=\"icons.elementRight3\" />\n </button>\n }\n</div>\n\n<ng-content />\n", styles: [":host{display:block;flex-direction:column}.tab-container-header{overflow:hidden;display:flex}.tab-container-buttonbar{flex:1;overflow:hidden}.tab-container-buttonbar-list{display:flex;margin:0;padding:0;list-style-type:none;transition:calc(.25s * var(--element-animations-enabled, 1))}.tab-container-buttonbar-list-item{flex:none}.tab-container-control{background:transparent;border:0;-webkit-user-select:none;user-select:none;padding-inline:0 7px;padding-block:6px 10px}.tab-container-control .is-end{padding-inline:7px 0}.tab-container-control:hover{color:var(--element-text-active)}.tab-container-control:disabled{color:var(--element-text-disabled);cursor:default}.nav-link{flex-shrink:0}.nav-link span.badge-dot{inset-block-end:100%;inset-inline-start:12px;margin-inline-end:12px}.nav-link span.badge-text{inset-block-end:calc(100% - 7px);inset-inline-start:2px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SiIconNextComponent, selector: "si-icon-next", inputs: ["icon"] }, { kind: "directive", type: SiResizeObserverDirective, selector: "[siResizeObserver]", inputs: ["resizeThrottle", "emitInitial"], outputs: ["siResizeObserver"] }, { kind: "
|
|
326
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiTabsetComponent, isStandalone: true, selector: "si-tabset", inputs: { selectDefaultTab: ["selectDefaultTab", "selectDefaultTab", booleanAttribute], selectedTabIndex: "selectedTabIndex", tabButtonMaxWidth: "tabButtonMaxWidth" }, outputs: { selectedTabIndexChange: "selectedTabIndexChange", deselect: "deselect" }, queries: [{ propertyName: "tabPanels", predicate: SiTabComponent }], viewQueries: [{ propertyName: "tabContainer", first: true, predicate: ["tabContainer"], descendants: true, isSignal: true }, { propertyName: "innerTabContainer", first: true, predicate: ["innerTabContainer"], descendants: true, isSignal: true }, { propertyName: "tabs", predicate: ["tabElement"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n class=\"nav nav-tabs tab-container-header focus-inside\"\n role=\"tablist\"\n [class.is-scrollable]=\"scrollable\"\n (siResizeObserver)=\"resize()\"\n>\n @if (scrollable) {\n <button\n type=\"button\"\n class=\"tab-container-control focus-inside\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [hidden]=\"!xPos\"\n (keydown.enter)=\"scrollStart()\"\n (mousedown)=\"scrollStart()\"\n >\n <si-icon-next class=\"icon flip-rtl\" [icon]=\"icons.elementLeft3\" />\n </button>\n }\n\n <div #tabContainer class=\"tab-container-buttonbar\" (wheel)=\"mouseScroll($event)\">\n <div #innerTabContainer class=\"tab-container-buttonbar-list focus-inside\">\n @for (tab of tabPanels; track $index) {\n <button\n #tabElement\n type=\"button\"\n role=\"tab\"\n class=\"nav-link focus-inside px-5\"\n [attr.aria-controls]=\"tab.id\"\n [id]=\"tab.tabId\"\n [style.max-width.px]=\"tabButtonMaxWidth\"\n [tabindex]=\"!tab.disabled && tab.active() && focusedTabIndex === undefined ? 0 : -1\"\n [class.active]=\"tab.active()\"\n [attr.aria-selected]=\"tab.active()\"\n [class.disabled]=\"tab.disabled\"\n (click)=\"selectTab(tab)\"\n (keydown.arrowLeft)=\"focusPrevious()\"\n (keydown.arrowRight)=\"focusNext()\"\n (keydown.delete)=\"tab.closeTriggered.emit(tab)\"\n (blur)=\"blur()\"\n (focus)=\"focus($index)\"\n >\n <span class=\"text-truncate\">{{ tab.heading | translate }}</span>\n @if (tab.icon) {\n <si-icon-next\n class=\"icon\"\n [attr.role]=\"tab.iconAltText ? 'img' : 'presentation'\"\n [icon]=\"tab.icon\"\n [attr.aria-label]=\"(tab.iconAltText | translate) ?? undefined\"\n />\n }\n @if (tab.badgeContent === true) {\n <span class=\"badge-dot\"></span>\n } @else if (tab.badgeContent && tab.badgeColor) {\n <span class=\"badge\" [ngClass]=\"'bg-' + tab.badgeColor\">\n {{ tab.badgeContent | translate }}\n </span>\n } @else if (tab.badgeContent && !tab.badgeColor) {\n <span class=\"badge-text\"> {{ tab.badgeContent | translate }}</span>\n }\n @if (tab.closable && !tab.disabled) {\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, tab)\"\n />\n }\n </button>\n }\n </div>\n </div>\n @if (scrollable) {\n <button\n type=\"button\"\n class=\"tab-container-control is-end focus-inside\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [hidden]=\"endArrowDisabled\"\n (keydown.enter)=\"scrollEnd()\"\n (mousedown)=\"scrollEnd()\"\n >\n <si-icon-next class=\"icon flip-rtl\" [icon]=\"icons.elementRight3\" />\n </button>\n }\n</div>\n\n<ng-content />\n", styles: [":host{display:block;flex-direction:column}.tab-container-header{overflow:hidden;display:flex}.tab-container-buttonbar{flex:1;overflow:hidden}.tab-container-buttonbar-list{display:flex;margin:0;padding:0;list-style-type:none;transition:calc(.25s * var(--element-animations-enabled, 1))}.tab-container-buttonbar-list-item{flex:none}.tab-container-control{background:transparent;border:0;-webkit-user-select:none;user-select:none;padding-inline:0 7px;padding-block:6px 10px}.tab-container-control .is-end{padding-inline:7px 0}.tab-container-control:hover{color:var(--element-text-active)}.tab-container-control:disabled{color:var(--element-text-disabled);cursor:default}.nav-link{flex-shrink:0}.nav-link span.badge-dot{inset-block-end:100%;inset-inline-start:12px;margin-inline-end:12px}.nav-link span.badge-text{inset-block-end:calc(100% - 7px);inset-inline-start:2px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SiIconNextComponent, selector: "si-icon-next", inputs: ["icon"] }, { kind: "directive", type: SiResizeObserverDirective, selector: "[siResizeObserver]", inputs: ["resizeThrottle", "emitInitial"], outputs: ["siResizeObserver"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
328
327
|
}
|
|
329
328
|
__decorate([
|
|
330
329
|
WebComponentContentChildren(SiTabComponent)
|
|
331
330
|
], SiTabsetComponent.prototype, "tabPanels", void 0);
|
|
332
331
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiTabsetComponent, decorators: [{
|
|
333
332
|
type: Component,
|
|
334
|
-
args: [{ selector: 'si-tabset', changeDetection: ChangeDetectionStrategy.OnPush,
|
|
335
|
-
NgClass,
|
|
336
|
-
SiIconNextComponent,
|
|
337
|
-
SiIconComponent,
|
|
338
|
-
SiResizeObserverDirective,
|
|
339
|
-
SiTranslateModule
|
|
340
|
-
], template: "<div\n class=\"nav nav-tabs tab-container-header focus-inside\"\n role=\"tablist\"\n [class.is-scrollable]=\"scrollable\"\n (siResizeObserver)=\"resize()\"\n>\n @if (scrollable) {\n <button\n type=\"button\"\n class=\"tab-container-control focus-inside\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [hidden]=\"!xPos\"\n (keydown.enter)=\"scrollStart()\"\n (mousedown)=\"scrollStart()\"\n >\n <si-icon-next class=\"icon flip-rtl\" [icon]=\"icons.elementLeft3\" />\n </button>\n }\n\n <div #tabContainer class=\"tab-container-buttonbar\" (wheel)=\"mouseScroll($event)\">\n <div #innerTabContainer class=\"tab-container-buttonbar-list focus-inside\">\n @for (tab of tabPanels; track $index) {\n <button\n #tabElement\n type=\"button\"\n role=\"tab\"\n class=\"nav-link focus-inside px-5\"\n [attr.aria-controls]=\"tab.id\"\n [id]=\"tab.tabId\"\n [style.max-width.px]=\"tabButtonMaxWidth\"\n [tabindex]=\"!tab.disabled && tab.active() && focusedTabIndex === undefined ? 0 : -1\"\n [class.active]=\"tab.active()\"\n [attr.aria-selected]=\"tab.active()\"\n [class.disabled]=\"tab.disabled\"\n (click)=\"selectTab(tab)\"\n (keydown.arrowLeft)=\"focusPrevious()\"\n (keydown.arrowRight)=\"focusNext()\"\n (keydown.delete)=\"tab.closeTriggered.emit(tab)\"\n (blur)=\"blur()\"\n (focus)=\"focus($index)\"\n >\n <span class=\"text-truncate\">{{ tab.heading | translate }}</span>\n @if (tab.icon) {\n <si-icon-next\n class=\"icon\"\n [attr.role]=\"tab.iconAltText ? 'img' : 'presentation'\"\n [icon]=\"tab.icon\"\n [attr.aria-label]=\"(tab.iconAltText | translate) ?? undefined\"\n />\n }\n @if (tab.badgeContent === true) {\n <span class=\"badge-dot\"></span>\n } @else if (tab.badgeContent && tab.badgeColor) {\n <span class=\"badge\" [ngClass]=\"'bg-' + tab.badgeColor\">\n {{ tab.badgeContent | translate }}\n </span>\n } @else if (tab.badgeContent && !tab.badgeColor) {\n <span class=\"badge-text\"> {{ tab.badgeContent | translate }}</span>\n }\n @if (tab.closable && !tab.disabled) {\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, tab)\"\n />\n }\n </button>\n }\n </div>\n </div>\n @if (scrollable) {\n <button\n type=\"button\"\n class=\"tab-container-control is-end focus-inside\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [hidden]=\"endArrowDisabled\"\n (keydown.enter)=\"scrollEnd()\"\n (mousedown)=\"scrollEnd()\"\n >\n <si-icon-next class=\"icon flip-rtl\" [icon]=\"icons.elementRight3\" />\n </button>\n }\n</div>\n\n<ng-content />\n", styles: [":host{display:block;flex-direction:column}.tab-container-header{overflow:hidden;display:flex}.tab-container-buttonbar{flex:1;overflow:hidden}.tab-container-buttonbar-list{display:flex;margin:0;padding:0;list-style-type:none;transition:calc(.25s * var(--element-animations-enabled, 1))}.tab-container-buttonbar-list-item{flex:none}.tab-container-control{background:transparent;border:0;-webkit-user-select:none;user-select:none;padding-inline:0 7px;padding-block:6px 10px}.tab-container-control .is-end{padding-inline:7px 0}.tab-container-control:hover{color:var(--element-text-active)}.tab-container-control:disabled{color:var(--element-text-disabled);cursor:default}.nav-link{flex-shrink:0}.nav-link span.badge-dot{inset-block-end:100%;inset-inline-start:12px;margin-inline-end:12px}.nav-link span.badge-text{inset-block-end:calc(100% - 7px);inset-inline-start:2px}\n"] }]
|
|
333
|
+
args: [{ selector: 'si-tabset', imports: [NgClass, SiIconNextComponent, SiResizeObserverDirective, SiTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"nav nav-tabs tab-container-header focus-inside\"\n role=\"tablist\"\n [class.is-scrollable]=\"scrollable\"\n (siResizeObserver)=\"resize()\"\n>\n @if (scrollable) {\n <button\n type=\"button\"\n class=\"tab-container-control focus-inside\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [hidden]=\"!xPos\"\n (keydown.enter)=\"scrollStart()\"\n (mousedown)=\"scrollStart()\"\n >\n <si-icon-next class=\"icon flip-rtl\" [icon]=\"icons.elementLeft3\" />\n </button>\n }\n\n <div #tabContainer class=\"tab-container-buttonbar\" (wheel)=\"mouseScroll($event)\">\n <div #innerTabContainer class=\"tab-container-buttonbar-list focus-inside\">\n @for (tab of tabPanels; track $index) {\n <button\n #tabElement\n type=\"button\"\n role=\"tab\"\n class=\"nav-link focus-inside px-5\"\n [attr.aria-controls]=\"tab.id\"\n [id]=\"tab.tabId\"\n [style.max-width.px]=\"tabButtonMaxWidth\"\n [tabindex]=\"!tab.disabled && tab.active() && focusedTabIndex === undefined ? 0 : -1\"\n [class.active]=\"tab.active()\"\n [attr.aria-selected]=\"tab.active()\"\n [class.disabled]=\"tab.disabled\"\n (click)=\"selectTab(tab)\"\n (keydown.arrowLeft)=\"focusPrevious()\"\n (keydown.arrowRight)=\"focusNext()\"\n (keydown.delete)=\"tab.closeTriggered.emit(tab)\"\n (blur)=\"blur()\"\n (focus)=\"focus($index)\"\n >\n <span class=\"text-truncate\">{{ tab.heading | translate }}</span>\n @if (tab.icon) {\n <si-icon-next\n class=\"icon\"\n [attr.role]=\"tab.iconAltText ? 'img' : 'presentation'\"\n [icon]=\"tab.icon\"\n [attr.aria-label]=\"(tab.iconAltText | translate) ?? undefined\"\n />\n }\n @if (tab.badgeContent === true) {\n <span class=\"badge-dot\"></span>\n } @else if (tab.badgeContent && tab.badgeColor) {\n <span class=\"badge\" [ngClass]=\"'bg-' + tab.badgeColor\">\n {{ tab.badgeContent | translate }}\n </span>\n } @else if (tab.badgeContent && !tab.badgeColor) {\n <span class=\"badge-text\"> {{ tab.badgeContent | translate }}</span>\n }\n @if (tab.closable && !tab.disabled) {\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, tab)\"\n />\n }\n </button>\n }\n </div>\n </div>\n @if (scrollable) {\n <button\n type=\"button\"\n class=\"tab-container-control is-end focus-inside\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [hidden]=\"endArrowDisabled\"\n (keydown.enter)=\"scrollEnd()\"\n (mousedown)=\"scrollEnd()\"\n >\n <si-icon-next class=\"icon flip-rtl\" [icon]=\"icons.elementRight3\" />\n </button>\n }\n</div>\n\n<ng-content />\n", styles: [":host{display:block;flex-direction:column}.tab-container-header{overflow:hidden;display:flex}.tab-container-buttonbar{flex:1;overflow:hidden}.tab-container-buttonbar-list{display:flex;margin:0;padding:0;list-style-type:none;transition:calc(.25s * var(--element-animations-enabled, 1))}.tab-container-buttonbar-list-item{flex:none}.tab-container-control{background:transparent;border:0;-webkit-user-select:none;user-select:none;padding-inline:0 7px;padding-block:6px 10px}.tab-container-control .is-end{padding-inline:7px 0}.tab-container-control:hover{color:var(--element-text-active)}.tab-container-control:disabled{color:var(--element-text-disabled);cursor:default}.nav-link{flex-shrink:0}.nav-link span.badge-dot{inset-block-end:100%;inset-inline-start:12px;margin-inline-end:12px}.nav-link span.badge-text{inset-block-end:calc(100% - 7px);inset-inline-start:2px}\n"] }]
|
|
341
334
|
}], propDecorators: { tabPanels: [{
|
|
342
335
|
type: ContentChildren,
|
|
343
336
|
args: [SiTabComponent]
|
|
@@ -355,17 +348,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImpor
|
|
|
355
348
|
}] } });
|
|
356
349
|
|
|
357
350
|
/**
|
|
358
|
-
* Copyright Siemens 2016 - 2025
|
|
351
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
359
352
|
* SPDX-License-Identifier: MIT
|
|
360
353
|
*/
|
|
361
354
|
|
|
362
355
|
/**
|
|
363
|
-
* Copyright Siemens 2016 - 2025
|
|
356
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
364
357
|
* SPDX-License-Identifier: MIT
|
|
365
358
|
*/
|
|
366
359
|
|
|
367
360
|
/**
|
|
368
|
-
* Copyright Siemens 2016 - 2025
|
|
361
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
369
362
|
* SPDX-License-Identifier: MIT
|
|
370
363
|
*/
|
|
371
364
|
const components = [SiTabsetComponent, SiTabComponent];
|
|
@@ -383,7 +376,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImpor
|
|
|
383
376
|
}] });
|
|
384
377
|
|
|
385
378
|
/**
|
|
386
|
-
* Copyright Siemens 2016 - 2025
|
|
379
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
387
380
|
* SPDX-License-Identifier: MIT
|
|
388
381
|
*/
|
|
389
382
|
|