@siemens/element-ng 47.9.0 → 48.0.0-next.2
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/about/index.d.ts +127 -3
- package/accordion/index.d.ts +152 -9
- package/action-modal/index.d.ts +92 -2
- package/application-header/index.d.ts +357 -13
- package/auto-collapsable-list/index.d.ts +114 -10
- package/autocomplete/index.d.ts +77 -8
- package/avatar/index.d.ts +83 -4
- package/badge/index.d.ts +21 -5
- package/breadcrumb/index.d.ts +90 -3
- package/breadcrumb-router/index.d.ts +104 -4
- package/card/index.d.ts +88 -6
- package/circle-status/index.d.ts +75 -6
- package/color-picker/index.d.ts +65 -5
- package/column-selection-dialog/index.d.ts +89 -2
- package/common/index.d.ts +421 -4
- package/connection-strength/index.d.ts +29 -6
- package/content-action-bar/index.d.ts +88 -3
- package/copyright-notice/index.d.ts +48 -3
- package/dashboard/index.d.ts +782 -16
- package/datatable/index.d.ts +45 -6
- package/date-range-filter/index.d.ts +333 -4
- package/datepicker/index.d.ts +1409 -11
- package/electron-titlebar/index.d.ts +84 -3
- package/empty-state/index.d.ts +27 -6
- package/fesm2022/siemens-element-ng-about.mjs +7 -7
- package/fesm2022/siemens-element-ng-about.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-accordion.mjs +17 -30
- package/fesm2022/siemens-element-ng-accordion.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-action-modal.mjs +41 -125
- package/fesm2022/siemens-element-ng-action-modal.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-application-header.mjs +63 -63
- package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-auto-collapsable-list.mjs +47 -43
- package/fesm2022/siemens-element-ng-auto-collapsable-list.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-autocomplete.mjs +35 -35
- package/fesm2022/siemens-element-ng-autocomplete.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-avatar.mjs +6 -6
- package/fesm2022/siemens-element-ng-avatar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-badge.mjs +3 -3
- package/fesm2022/siemens-element-ng-badge.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-breadcrumb-router.mjs +10 -10
- package/fesm2022/siemens-element-ng-breadcrumb-router.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-breadcrumb.mjs +13 -13
- package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-card.mjs +7 -7
- package/fesm2022/siemens-element-ng-card.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-circle-status.mjs +7 -7
- package/fesm2022/siemens-element-ng-circle-status.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-color-picker.mjs +11 -12
- package/fesm2022/siemens-element-ng-color-picker.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-column-selection-dialog.mjs +28 -31
- 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 +7 -7
- package/fesm2022/siemens-element-ng-content-action-bar.mjs +13 -13
- package/fesm2022/siemens-element-ng-content-action-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-copyright-notice.mjs +7 -7
- package/fesm2022/siemens-element-ng-copyright-notice.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-dashboard.mjs +61 -61
- package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-datatable.mjs +7 -7
- package/fesm2022/siemens-element-ng-datatable.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-date-range-filter.mjs +87 -73
- package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-datepicker.mjs +104 -142
- package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-electron-titlebar.mjs +14 -14
- package/fesm2022/siemens-element-ng-electron-titlebar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-empty-state.mjs +7 -7
- package/fesm2022/siemens-element-ng-empty-state.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-file-uploader.mjs +54 -54
- package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filter-bar.mjs +18 -18
- package/fesm2022/siemens-element-ng-filter-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filtered-search.mjs +31 -74
- package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-footer.mjs +7 -7
- package/fesm2022/siemens-element-ng-footer.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-form.mjs +125 -271
- package/fesm2022/siemens-element-ng-form.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-formly.mjs +78 -83
- package/fesm2022/siemens-element-ng-formly.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-header-dropdown.mjs +18 -17
- package/fesm2022/siemens-element-ng-header-dropdown.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-help-button.mjs +63 -0
- package/fesm2022/siemens-element-ng-help-button.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-icon-status.mjs +7 -7
- package/fesm2022/siemens-element-ng-icon-status.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-icon.mjs +28 -27
- package/fesm2022/siemens-element-ng-icon.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-info-page.mjs +3 -3
- package/fesm2022/siemens-element-ng-info-page.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-inline-notification.mjs +7 -7
- package/fesm2022/siemens-element-ng-inline-notification.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-ip-input.mjs +10 -9
- package/fesm2022/siemens-element-ng-ip-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-landing-page.mjs +7 -7
- package/fesm2022/siemens-element-ng-landing-page.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-language-switcher.mjs +10 -10
- package/fesm2022/siemens-element-ng-language-switcher.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-link.mjs +10 -10
- package/fesm2022/siemens-element-ng-list-details.mjs +27 -27
- package/fesm2022/siemens-element-ng-list-details.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-loading-spinner.mjs +19 -19
- package/fesm2022/siemens-element-ng-loading-spinner.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-localization.mjs +9 -9
- package/fesm2022/siemens-element-ng-localization.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-main-detail-container.mjs +10 -10
- package/fesm2022/siemens-element-ng-main-detail-container.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-menu.mjs +34 -34
- package/fesm2022/siemens-element-ng-menu.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-modal.mjs +8 -8
- package/fesm2022/siemens-element-ng-modal.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar-vertical.mjs +43 -57
- package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar.mjs +29 -29
- package/fesm2022/siemens-element-ng-navbar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-number-input.mjs +7 -7
- package/fesm2022/siemens-element-ng-number-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-pagination.mjs +14 -14
- package/fesm2022/siemens-element-ng-pagination.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-password-strength.mjs +13 -16
- package/fesm2022/siemens-element-ng-password-strength.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-password-toggle.mjs +12 -12
- package/fesm2022/siemens-element-ng-password-toggle.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-phone-number.mjs +19 -19
- package/fesm2022/siemens-element-ng-phone-number.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-photo-upload.mjs +25 -25
- package/fesm2022/siemens-element-ng-photo-upload.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-pills-input.mjs +22 -22
- package/fesm2022/siemens-element-ng-pills-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-popover-next.mjs +34 -23
- package/fesm2022/siemens-element-ng-popover-next.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-popover.mjs +10 -10
- package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-progressbar.mjs +10 -10
- package/fesm2022/siemens-element-ng-progressbar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-resize-observer.mjs +13 -13
- package/fesm2022/siemens-element-ng-resize-observer.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-result-details-list.mjs +8 -20
- package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-search-bar.mjs +18 -15
- package/fesm2022/siemens-element-ng-search-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-select.mjs +66 -66
- package/fesm2022/siemens-element-ng-select.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-shadow-root.mjs +4 -5
- package/fesm2022/siemens-element-ng-shadow-root.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-side-panel.mjs +24 -24
- package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-skip-links.mjs +12 -13
- package/fesm2022/siemens-element-ng-skip-links.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-slider.mjs +14 -14
- package/fesm2022/siemens-element-ng-slider.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-sort-bar.mjs +10 -10
- package/fesm2022/siemens-element-ng-sort-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-split.mjs +13 -29
- package/fesm2022/siemens-element-ng-split.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-status-bar.mjs +19 -19
- package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-status-toggle.mjs +7 -7
- package/fesm2022/siemens-element-ng-status-toggle.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-summary-chip.mjs +3 -3
- package/fesm2022/siemens-element-ng-summary-chip.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-summary-widget.mjs +5 -5
- package/fesm2022/siemens-element-ng-summary-widget.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-system-banner.mjs +3 -3
- package/fesm2022/siemens-element-ng-system-banner.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tabs-next.mjs +147 -176
- package/fesm2022/siemens-element-ng-tabs-next.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tabs.mjs +12 -11
- package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-theme.mjs +5 -5
- package/fesm2022/siemens-element-ng-theme.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-threshold.mjs +22 -22
- package/fesm2022/siemens-element-ng-threshold.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-toast-notification.mjs +74 -27
- package/fesm2022/siemens-element-ng-toast-notification.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tooltip.mjs +22 -16
- package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tour.mjs +19 -19
- package/fesm2022/siemens-element-ng-tour.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tree-view.mjs +44 -55
- package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-typeahead.mjs +19 -36
- package/fesm2022/siemens-element-ng-typeahead.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-unauthorized-page.mjs +7 -7
- package/fesm2022/siemens-element-ng-unauthorized-page.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-wizard.mjs +76 -109
- package/fesm2022/siemens-element-ng-wizard.mjs.map +1 -1
- package/file-uploader/index.d.ts +419 -4
- package/filter-bar/index.d.ts +117 -4
- package/filtered-search/index.d.ts +433 -3
- package/footer/index.d.ts +23 -6
- package/form/index.d.ts +411 -10
- package/formly/index.d.ts +217 -2
- package/header-dropdown/index.d.ts +150 -5
- package/help-button/index.d.ts +26 -0
- package/help-button/package.json +3 -0
- package/icon/index.d.ts +210 -7
- package/icon-status/index.d.ts +33 -6
- package/index.d.ts +5 -3
- package/info-page/index.d.ts +39 -3
- package/inline-notification/index.d.ts +49 -6
- package/ip-input/index.d.ts +87 -3
- package/landing-page/index.d.ts +95 -3
- package/language-switcher/index.d.ts +53 -3
- package/link/index.d.ts +127 -4
- package/list-details/index.d.ts +176 -12
- package/loading-spinner/index.d.ts +128 -9
- package/localization/index.d.ts +147 -4
- package/main-detail-container/index.d.ts +161 -6
- package/menu/index.d.ts +195 -11
- package/modal/index.d.ts +129 -3
- package/navbar/index.d.ts +304 -4
- package/navbar-vertical/index.d.ts +226 -3
- package/number-input/index.d.ts +111 -6
- package/package.json +25 -24
- package/pagination/index.d.ts +75 -6
- package/password-strength/index.d.ts +96 -7
- package/password-toggle/index.d.ts +49 -6
- package/phone-number/index.d.ts +192 -3
- package/photo-upload/index.d.ts +304 -4
- package/pills-input/index.d.ts +135 -9
- package/popover/index.d.ts +98 -6
- package/popover-next/index.d.ts +112 -7
- package/progressbar/index.d.ts +54 -6
- package/resize-observer/index.d.ts +143 -6
- package/result-details-list/index.d.ts +58 -3
- package/search-bar/index.d.ts +93 -6
- package/select/index.d.ts +605 -14
- package/shadow-root/index.d.ts +39 -1
- package/side-panel/index.d.ts +276 -5
- package/skip-links/index.d.ts +24 -3
- package/slider/index.d.ts +139 -6
- package/sort-bar/index.d.ts +49 -6
- package/split/index.d.ts +207 -4
- package/status-bar/index.d.ts +178 -3
- package/status-toggle/index.d.ts +81 -2
- package/summary-chip/index.d.ts +48 -5
- package/summary-widget/index.d.ts +48 -5
- package/system-banner/index.d.ts +24 -3
- package/tabs/index.d.ts +161 -7
- package/tabs-next/index.d.ts +121 -7
- package/template-i18n.json +0 -3
- package/theme/index.d.ts +259 -3
- package/threshold/index.d.ts +156 -4
- package/toast-notification/index.d.ts +70 -2
- package/tooltip/index.d.ts +92 -3
- package/tour/index.d.ts +114 -2
- package/translate/index.d.ts +199 -3
- package/tree-view/index.d.ts +818 -8
- package/typeahead/index.d.ts +262 -4
- package/unauthorized-page/index.d.ts +42 -4
- package/wizard/index.d.ts +209 -7
- package/about/si-about-data.model.d.ts +0 -49
- package/about/si-about.component.d.ts +0 -71
- package/about/si-about.module.d.ts +0 -7
- package/accordion/si-accordion-hcollapse.service.d.ts +0 -17
- package/accordion/si-accordion.component.d.ts +0 -37
- package/accordion/si-accordion.module.d.ts +0 -8
- package/accordion/si-accordion.service.d.ts +0 -17
- package/accordion/si-collapsible-panel.component.d.ts +0 -89
- package/action-modal/si-action-dialog.service.d.ts +0 -49
- package/action-modal/si-action-dialog.types.d.ts +0 -92
- package/action-modal/si-alert-dialog/si-alert-dialog.component.d.ts +0 -32
- package/action-modal/si-confirmation-dialog/si-confirmation-dialog.component.d.ts +0 -40
- package/action-modal/si-delete-confirmation-dialog/si-delete-confirmation-dialog.component.d.ts +0 -45
- package/action-modal/si-edit-discard-dialog/si-edit-discard-dialog.component.d.ts +0 -68
- package/application-header/launchpad/si-launchpad-app.component.d.ts +0 -21
- package/application-header/launchpad/si-launchpad-factory.component.d.ts +0 -85
- package/application-header/launchpad/si-launchpad.model.d.ts +0 -50
- package/application-header/si-application-header.component.d.ts +0 -60
- package/application-header/si-header-account-item.component.d.ts +0 -13
- package/application-header/si-header-action-item-icon-base.directive.d.ts +0 -26
- package/application-header/si-header-action-item.base.d.ts +0 -19
- package/application-header/si-header-action-item.component.d.ts +0 -9
- package/application-header/si-header-actions.directive.d.ts +0 -5
- package/application-header/si-header-brand.directive.d.ts +0 -5
- package/application-header/si-header-collapsible-actions.component.d.ts +0 -33
- package/application-header/si-header-logo.directive.d.ts +0 -16
- package/application-header/si-header-navigation-item.component.d.ts +0 -10
- package/application-header/si-header-navigation.component.d.ts +0 -11
- package/application-header/si-header-selection-item.component.d.ts +0 -12
- package/application-header/si-header-siemens-logo.component.d.ts +0 -21
- package/auto-collapsable-list/si-auto-collapsable-list-additional-content.directive.d.ts +0 -6
- package/auto-collapsable-list/si-auto-collapsable-list-item.directive.d.ts +0 -29
- package/auto-collapsable-list/si-auto-collapsable-list-measurable.class.d.ts +0 -16
- package/auto-collapsable-list/si-auto-collapsable-list-overflow-item.directive.d.ts +0 -12
- package/auto-collapsable-list/si-auto-collapsable-list.directive.d.ts +0 -47
- package/auto-collapsable-list/si-auto-collapsable-list.module.d.ts +0 -10
- package/autocomplete/si-autocomplete-listbox.directive.d.ts +0 -31
- package/autocomplete/si-autocomplete-option.directive.d.ts +0 -31
- package/autocomplete/si-autocomplete.directive.d.ts +0 -14
- package/autocomplete/si-autocomplete.model.d.ts +0 -7
- package/autocomplete/si-autocomplete.module.d.ts +0 -9
- package/avatar/si-avatar-background-color.directive.d.ts +0 -35
- package/avatar/si-avatar.component.d.ts +0 -51
- package/badge/si-badge.component.d.ts +0 -17
- package/breadcrumb/breadcrumb-item.model.d.ts +0 -36
- package/breadcrumb/si-breadcrumb-item-template.directive.d.ts +0 -10
- package/breadcrumb/si-breadcrumb.component.d.ts +0 -46
- package/breadcrumb/si-breadcrumb.module.d.ts +0 -7
- package/breadcrumb-router/si-breadcrumb-default-resolver.service.d.ts +0 -23
- package/breadcrumb-router/si-breadcrumb-router.component.d.ts +0 -30
- package/breadcrumb-router/si-breadcrumb-router.model.d.ts +0 -53
- package/breadcrumb-router/si-breadcrumb-router.module.d.ts +0 -7
- package/card/si-card.component.d.ts +0 -79
- package/card/si-card.module.d.ts +0 -7
- package/circle-status/si-circle-status.component.d.ts +0 -66
- package/circle-status/si-circle-status.module.d.ts +0 -7
- package/color-picker/si-color-picker.component.d.ts +0 -61
- package/column-selection-dialog/column-selection-editor/si-column-selection-editor.component.d.ts +0 -23
- package/column-selection-dialog/si-column-selection-dialog.component.d.ts +0 -114
- package/column-selection-dialog/si-column-selection-dialog.service.d.ts +0 -20
- package/column-selection-dialog/si-column-selection-dialog.types.d.ts +0 -68
- package/common/decorators/index.d.ts +0 -5
- package/common/decorators/webcomponent.decorator.d.ts +0 -6
- package/common/helpers/animation.helpers.d.ts +0 -10
- package/common/helpers/global-events.helpers.d.ts +0 -5
- package/common/helpers/index.d.ts +0 -10
- package/common/helpers/overlay-helper.d.ts +0 -24
- package/common/helpers/positioning.helpers.d.ts +0 -58
- package/common/helpers/rtl.d.ts +0 -6
- package/common/helpers/track-by.helper.d.ts +0 -27
- package/common/models/color-variant.model.d.ts +0 -8
- package/common/models/index.d.ts +0 -8
- package/common/models/menu.model.d.ts +0 -85
- package/common/models/positions.model.d.ts +0 -18
- package/common/models/status-type.model.d.ts +0 -21
- package/common/services/blink.service.d.ts +0 -41
- package/common/services/index.d.ts +0 -8
- package/common/services/scrollbar-helper.service.d.ts +0 -17
- package/common/services/si-uistate.service.d.ts +0 -61
- package/common/services/text-measure.service.d.ts +0 -21
- package/connection-strength/si-connection-strength.component.d.ts +0 -19
- package/connection-strength/si-connection-strength.module.d.ts +0 -7
- package/content-action-bar/si-content-action-bar-toggle.component.d.ts +0 -6
- package/content-action-bar/si-content-action-bar.component.d.ts +0 -72
- package/content-action-bar/si-content-action-bar.model.d.ts +0 -9
- package/content-action-bar/si-content-action-bar.module.d.ts +0 -7
- package/copyright-notice/si-copyright-notice.component.d.ts +0 -18
- package/copyright-notice/si-copyright-notice.d.ts +0 -23
- package/copyright-notice/si-copyright-notice.module.d.ts +0 -7
- package/dashboard/si-dashboard-card.component.d.ts +0 -82
- package/dashboard/si-dashboard.component.d.ts +0 -75
- package/dashboard/si-dashboard.module.d.ts +0 -8
- package/dashboard/si-dashboard.service.d.ts +0 -21
- package/dashboard/widgets/si-link-widget.component.d.ts +0 -25
- package/dashboard/widgets/si-list-widget/si-list-widget-body.component.d.ts +0 -98
- package/dashboard/widgets/si-list-widget/si-list-widget-item.component.d.ts +0 -39
- package/dashboard/widgets/si-list-widget/si-list-widget.component.d.ts +0 -115
- package/dashboard/widgets/si-timeline-widget/si-timeline-widget-body.component.d.ts +0 -21
- package/dashboard/widgets/si-timeline-widget/si-timeline-widget-item.component.d.ts +0 -103
- package/dashboard/widgets/si-timeline-widget/si-timeline-widget.component.d.ts +0 -52
- package/dashboard/widgets/si-value-widget-body.component.d.ts +0 -33
- package/dashboard/widgets/si-value-widget.component.d.ts +0 -115
- package/dashboard/widgets/si-widget-base.component.d.ts +0 -48
- package/datatable/si-datatable-interaction.directive.d.ts +0 -34
- package/datatable/si-datatable.module.d.ts +0 -7
- package/date-range-filter/si-date-range-calculation.service.d.ts +0 -33
- package/date-range-filter/si-date-range-filter.component.d.ts +0 -252
- package/date-range-filter/si-date-range-filter.module.d.ts +0 -7
- package/date-range-filter/si-date-range-filter.types.d.ts +0 -40
- package/date-range-filter/si-relative-date.component.d.ts +0 -31
- package/datepicker/components/si-calendar-body.component.d.ts +0 -137
- package/datepicker/components/si-calendar-date-cell.directive.d.ts +0 -16
- package/datepicker/components/si-calendar-direction-button.component.d.ts +0 -18
- package/datepicker/components/si-compare-adapter.d.ts +0 -37
- package/datepicker/components/si-day-selection.component.d.ts +0 -76
- package/datepicker/components/si-initial-focus.component.d.ts +0 -74
- package/datepicker/components/si-month-selection.component.d.ts +0 -62
- package/datepicker/components/si-year-selection.component.d.ts +0 -65
- package/datepicker/date-time-helper.d.ts +0 -302
- package/datepicker/si-calendar-button.component.d.ts +0 -49
- package/datepicker/si-date-input.directive.d.ts +0 -114
- package/datepicker/si-date-range.component.d.ts +0 -150
- package/datepicker/si-datepicker-overlay.component.d.ts +0 -82
- package/datepicker/si-datepicker-overlay.directive.d.ts +0 -104
- package/datepicker/si-datepicker.component.d.ts +0 -228
- package/datepicker/si-datepicker.directive.d.ts +0 -62
- package/datepicker/si-datepicker.model.d.ts +0 -129
- package/datepicker/si-datepicker.module.d.ts +0 -12
- package/datepicker/si-timepicker.component.d.ts +0 -214
- package/electron-titlebar/electron.helpers.d.ts +0 -5
- package/electron-titlebar/si-electron-titlebar.component.d.ts +0 -72
- package/electron-titlebar/si-electron-titlebar.module.d.ts +0 -7
- package/empty-state/si-empty-state.component.d.ts +0 -18
- package/empty-state/si-empty-state.module.d.ts +0 -7
- package/file-uploader/si-file-dropzone.component.d.ts +0 -106
- package/file-uploader/si-file-uploader.component.d.ts +0 -296
- package/file-uploader/si-file-uploader.model.d.ts +0 -12
- package/file-uploader/si-file-uploader.module.d.ts +0 -8
- package/filter-bar/filter.d.ts +0 -26
- package/filter-bar/si-filter-bar.component.d.ts +0 -65
- package/filter-bar/si-filter-bar.module.d.ts +0 -7
- package/filter-bar/si-filter-pill.component.d.ts +0 -20
- package/filtered-search/si-filtered-search-helper.d.ts +0 -22
- package/filtered-search/si-filtered-search-value.component.d.ts +0 -53
- package/filtered-search/si-filtered-search.component.d.ts +0 -329
- package/filtered-search/si-filtered-search.model.d.ts +0 -139
- package/filtered-search/si-filtered-search.module.d.ts +0 -7
- package/filtered-search/values/date-value/si-filtered-search-date-value.component.d.ts +0 -57
- package/filtered-search/values/si-filtered-search-value.base.d.ts +0 -27
- package/filtered-search/values/typeahead/si-filtered-search-typeahead.component.d.ts +0 -45
- package/footer/si-footer.component.d.ts +0 -14
- package/footer/si-footer.module.d.ts +0 -7
- package/form/form-fieldset/si-form-fieldset.component.d.ts +0 -40
- package/form/si-form-container/si-form-container.component.d.ts +0 -155
- package/form/si-form-item/si-form-field-native.control.d.ts +0 -22
- package/form/si-form-item/si-form-item.component.d.ts +0 -90
- package/form/si-form-item-control-input.directive.d.ts +0 -18
- package/form/si-form-item.control.d.ts +0 -35
- package/form/si-form-validation-error.model.d.ts +0 -55
- package/form/si-form-validation-error.provider.d.ts +0 -11
- package/form/si-form-validation-error.service.d.ts +0 -42
- package/form/si-form-validation-tooltip/si-form-validation-tooltip.component.d.ts +0 -13
- package/form/si-form-validation-tooltip/si-form-validation-tooltip.directive.d.ts +0 -42
- package/form/si-form.module.d.ts +0 -25
- package/formly/fields/button/si-formly-button.component.d.ts +0 -7
- package/formly/fields/date-range/si-formly-date-range.component.d.ts +0 -6
- package/formly/fields/datetime/si-formly-datetime.component.d.ts +0 -13
- package/formly/fields/email/si-formly-email.component.d.ts +0 -6
- package/formly/fields/ip-input/si-formly-ip-input.component.d.ts +0 -6
- package/formly/fields/number/si-formly-number.component.d.ts +0 -6
- package/formly/fields/password/si-formly-password.component.d.ts +0 -6
- package/formly/fields/select/si-formly-select.component.d.ts +0 -6
- package/formly/fields/text/si-formly-text-display.component.d.ts +0 -7
- package/formly/fields/textarea/si-formly-textarea.component.d.ts +0 -18
- package/formly/fields/time/si-formly-time.component.d.ts +0 -13
- package/formly/si-formly-translate.extension.d.ts +0 -9
- package/formly/si-formly.component.d.ts +0 -62
- package/formly/si-formly.module.d.ts +0 -35
- package/formly/structural/si-formly-accordion/si-formly-accordion.component.d.ts +0 -13
- package/formly/structural/si-formly-array/si-formly-array.component.d.ts +0 -6
- package/formly/structural/si-formly-object/si-formly-object.component.d.ts +0 -6
- package/formly/structural/si-formly-object-grid/si-formly-object-grid.component.d.ts +0 -22
- package/formly/structural/si-formly-object-grid/si-formly-object-grid.model.d.ts +0 -21
- package/formly/structural/si-formly-object-plain/si-formly-object-plain.component.d.ts +0 -6
- package/formly/structural/si-formly-tabset/si-formly-object-tabset.component.d.ts +0 -7
- package/formly/utils.d.ts +0 -6
- package/formly/wrapper/si-formly-fieldset.component.d.ts +0 -8
- package/formly/wrapper/si-formly-form-field-provider.directive.d.ts +0 -19
- package/formly/wrapper/si-formly-horizontal-wrapper.component.d.ts +0 -6
- package/formly/wrapper/si-formly-icon-wrapper.component.d.ts +0 -6
- package/formly/wrapper/si-formly-wrapper.component.d.ts +0 -8
- package/header-dropdown/si-header-dropdown-item.component.d.ts +0 -23
- package/header-dropdown/si-header-dropdown-items-factory.component.d.ts +0 -14
- package/header-dropdown/si-header-dropdown-trigger.directive.d.ts +0 -57
- package/header-dropdown/si-header-dropdown.component.d.ts +0 -20
- package/header-dropdown/si-header.model.d.ts +0 -37
- package/icon/element-icons.d.ts +0 -59
- package/icon/icon-status.d.ts +0 -22
- package/icon/si-icon-next.component.d.ts +0 -64
- package/icon/si-icon.component.d.ts +0 -23
- package/icon/si-icon.module.d.ts +0 -7
- package/icon/si-icons.d.ts +0 -31
- package/icon/si-status-icon.component.d.ts +0 -9
- package/icon-status/si-icon-status.component.d.ts +0 -24
- package/icon-status/si-icon-status.module.d.ts +0 -7
- package/info-page/si-info-page.component.d.ts +0 -38
- package/inline-notification/si-inline-notification.component.d.ts +0 -40
- package/inline-notification/si-inline-notification.module.d.ts +0 -7
- package/ip-input/address-utils.d.ts +0 -28
- package/ip-input/address-validators.d.ts +0 -21
- package/ip-input/si-ip-input.directive.d.ts +0 -53
- package/ip-input/si-ip4-input.directive.d.ts +0 -9
- package/ip-input/si-ip6-input.directive.d.ts +0 -10
- package/landing-page/alert-config.model.d.ts +0 -15
- package/landing-page/si-landing-page.component.d.ts +0 -74
- package/landing-page/si-landing-page.module.d.ts +0 -7
- package/language-switcher/iso-language-value.d.ts +0 -14
- package/language-switcher/si-language-switcher.component.d.ts +0 -31
- package/language-switcher/si-language-switcher.module.d.ts +0 -7
- package/link/aria-current.model.d.ts +0 -5
- package/link/link.model.d.ts +0 -57
- package/link/si-link-action.service.d.ts +0 -17
- package/link/si-link.directive.d.ts +0 -42
- package/link/si-link.module.d.ts +0 -7
- package/list-details/si-details-pane/si-details-pane.component.d.ts +0 -8
- package/list-details/si-details-pane-body/si-details-pane-body.component.d.ts +0 -6
- package/list-details/si-details-pane-footer/si-details-pane-footer.component.d.ts +0 -6
- package/list-details/si-details-pane-header/si-details-pane-header.component.d.ts +0 -38
- package/list-details/si-list-details.component.d.ts +0 -100
- package/list-details/si-list-pane/si-list-pane.component.d.ts +0 -10
- package/list-details/si-list-pane-body/si-list-pane-body.component.d.ts +0 -6
- package/list-details/si-list-pane-header/si-list-pane-header.component.d.ts +0 -6
- package/loading-spinner/si-loading-button.component.d.ts +0 -31
- package/loading-spinner/si-loading-spinner.component.d.ts +0 -32
- package/loading-spinner/si-loading-spinner.directive.d.ts +0 -37
- package/loading-spinner/si-loading-spinner.module.d.ts +0 -8
- package/loading-spinner/si-loading-spinner.service.d.ts +0 -18
- package/localization/si-directionality.d.ts +0 -41
- package/localization/si-locale-id.d.ts +0 -22
- package/localization/si-locale-store.d.ts +0 -16
- package/localization/si-locale.service.d.ts +0 -73
- package/main-detail-container/si-main-detail-container.component.d.ts +0 -151
- package/main-detail-container/si-main-detail-container.module.d.ts +0 -7
- package/menu/si-menu-action.service.d.ts +0 -13
- package/menu/si-menu-bar.directive.d.ts +0 -12
- package/menu/si-menu-divider.directive.d.ts +0 -5
- package/menu/si-menu-factory-item-guard.directive.d.ts +0 -11
- package/menu/si-menu-factory.component.d.ts +0 -15
- package/menu/si-menu-header.directive.d.ts +0 -5
- package/menu/si-menu-item-base.directive.d.ts +0 -16
- package/menu/si-menu-item-checkbox.component.d.ts +0 -11
- package/menu/si-menu-item-radio.component.d.ts +0 -10
- package/menu/si-menu-item.component.d.ts +0 -10
- package/menu/si-menu-model.d.ts +0 -91
- package/menu/si-menu.directive.d.ts +0 -6
- package/menu/si-menu.module.d.ts +0 -14
- package/modal/modal.helpers.d.ts +0 -8
- package/modal/modalref.d.ts +0 -64
- package/modal/si-modal.component.d.ts +0 -32
- package/modal/si-modal.service.d.ts +0 -57
- package/navbar/account.model.d.ts +0 -39
- package/navbar/si-navbar-item/index.d.ts +0 -5
- package/navbar/si-navbar-item/si-navbar-item.component.d.ts +0 -29
- package/navbar/si-navbar-primary/index.d.ts +0 -6
- package/navbar/si-navbar-primary/si-navbar-primary.component.d.ts +0 -198
- package/navbar/si-navbar-primary/si-navbar-primary.model.d.ts +0 -34
- package/navbar/si-navbar.module.d.ts +0 -9
- package/navbar-vertical/si-navbar-vertical-divider.component.d.ts +0 -5
- package/navbar-vertical/si-navbar-vertical-group-trigger.directive.d.ts +0 -38
- package/navbar-vertical/si-navbar-vertical-group.component.d.ts +0 -16
- package/navbar-vertical/si-navbar-vertical-header.component.d.ts +0 -6
- package/navbar-vertical/si-navbar-vertical-item-legacy.component.d.ts +0 -17
- package/navbar-vertical/si-navbar-vertical-item.component.d.ts +0 -21
- package/navbar-vertical/si-navbar-vertical.component.d.ts +0 -148
- package/navbar-vertical/si-navbar-vertical.model.d.ts +0 -77
- package/navbar-vertical/si-navbar-vertical.module.d.ts +0 -7
- package/navbar-vertical/si-navbar-vertical.provider.d.ts +0 -7
- package/number-input/si-number-input.component.d.ts +0 -106
- package/number-input/si-number-input.module.d.ts +0 -7
- package/pagination/si-pagination.component.d.ts +0 -65
- package/pagination/si-pagination.module.d.ts +0 -7
- package/password-strength/si-password-strength.component.d.ts +0 -25
- package/password-strength/si-password-strength.directive.d.ts +0 -65
- package/password-strength/si-password-strength.module.d.ts +0 -8
- package/password-toggle/si-password-toggle.component.d.ts +0 -39
- package/password-toggle/si-password-toggle.module.d.ts +0 -7
- package/phone-number/si-phone-number-input-select.directive.d.ts +0 -10
- package/phone-number/si-phone-number-input.component.d.ts +0 -137
- package/phone-number/si-phone-number-input.models.d.ts +0 -48
- package/phone-number/si-phone-number-input.module.d.ts +0 -7
- package/photo-upload/si-image-cropper-style.component.d.ts +0 -5
- package/photo-upload/si-photo-upload.component.d.ts +0 -298
- package/pills-input/si-input-pill.component.d.ts +0 -9
- package/pills-input/si-pills-input-csv.directive.d.ts +0 -8
- package/pills-input/si-pills-input-email.directive.d.ts +0 -10
- package/pills-input/si-pills-input-pattern-base.d.ts +0 -19
- package/pills-input/si-pills-input-value-handler.d.ts +0 -12
- package/pills-input/si-pills-input.component.d.ts +0 -87
- package/pills-input/si-pills-input.module.d.ts +0 -9
- package/popover/si-popover.component.d.ts +0 -26
- package/popover/si-popover.directive.d.ts +0 -89
- package/popover/si-popover.module.d.ts +0 -7
- package/popover-next/si-popover-description.directive.d.ts +0 -7
- package/popover-next/si-popover-next.directive.d.ts +0 -61
- package/popover-next/si-popover-title.directive.d.ts +0 -7
- package/popover-next/si-popover.component.d.ts +0 -27
- package/progressbar/si-progressbar.component.d.ts +0 -43
- package/progressbar/si-progressbar.module.d.ts +0 -7
- package/public-api.d.ts +0 -5
- package/resize-observer/resize-observer.service.d.ts +0 -41
- package/resize-observer/si-resize-observer.directive.d.ts +0 -31
- package/resize-observer/si-resize-observer.module.d.ts +0 -8
- package/resize-observer/si-responsive-container.directive.d.ts +0 -73
- package/result-details-list/si-result-details-list.component.d.ts +0 -14
- package/result-details-list/si-result-details-list.datamodel.d.ts +0 -48
- package/result-details-list/si-result-details-list.module.d.ts +0 -7
- package/search-bar/si-search-bar.component.d.ts +0 -87
- package/search-bar/si-search-bar.module.d.ts +0 -7
- package/select/options/si-select-complex-options.directive.d.ts +0 -69
- package/select/options/si-select-lazy-options.directive.d.ts +0 -38
- package/select/options/si-select-option.source.d.ts +0 -49
- package/select/options/si-select-options-strategy.base.d.ts +0 -35
- package/select/options/si-select-options-strategy.d.ts +0 -37
- package/select/options/si-select-simple-options.directive.d.ts +0 -34
- package/select/select-input/si-select-input.component.d.ts +0 -43
- package/select/select-list/si-select-list-has-filter.component.d.ts +0 -20
- package/select/select-list/si-select-list.base.d.ts +0 -37
- package/select/select-list/si-select-list.component.d.ts +0 -15
- package/select/select-option/si-select-option-row.component.d.ts +0 -16
- package/select/select-option/si-select-option.component.d.ts +0 -9
- package/select/selection/si-select-multi-value.directive.d.ts +0 -26
- package/select/selection/si-select-selection-strategy.d.ts +0 -58
- package/select/selection/si-select-single-value.directive.d.ts +0 -26
- package/select/si-select-action.directive.d.ts +0 -12
- package/select/si-select-actions.directive.d.ts +0 -5
- package/select/si-select-group-template.directive.d.ts +0 -20
- package/select/si-select-option-row-template.directive.d.ts +0 -9
- package/select/si-select-option-template.directive.d.ts +0 -21
- package/select/si-select.component.d.ts +0 -96
- package/select/si-select.module.d.ts +0 -15
- package/select/si-select.types.d.ts +0 -65
- package/shadow-root/si-shadow-root.directive.d.ts +0 -39
- package/side-panel/si-side-panel-content.component.d.ts +0 -105
- package/side-panel/si-side-panel.component.d.ts +0 -108
- package/side-panel/si-side-panel.module.d.ts +0 -8
- package/side-panel/si-side-panel.service.d.ts +0 -45
- package/side-panel/side-panel.model.d.ts +0 -16
- package/skip-links/si-skip-link-target.directive.d.ts +0 -27
- package/skip-links/si-skip-links.component.d.ts +0 -9
- package/skip-links/skip-link.service.d.ts +0 -14
- package/slider/si-slider.component.d.ts +0 -129
- package/slider/si-slider.module.d.ts +0 -7
- package/sort-bar/si-sort-bar.component.d.ts +0 -42
- package/sort-bar/si-sort-bar.module.d.ts +0 -7
- package/split/si-split-part.component.d.ts +0 -154
- package/split/si-split.component.d.ts +0 -48
- package/split/si-split.interfaces.d.ts +0 -17
- package/split/si-split.module.d.ts +0 -8
- package/status-bar/si-status-bar-item/index.d.ts +0 -6
- package/status-bar/si-status-bar-item/si-status-bar-item.component.d.ts +0 -22
- package/status-bar/si-status-bar-item/si-status-bar-item.model.d.ts +0 -33
- package/status-bar/si-status-bar.component.d.ts +0 -116
- package/status-bar/si-status-bar.module.d.ts +0 -7
- package/status-toggle/si-status-toggle.component.d.ts +0 -54
- package/status-toggle/status-toggle.model.d.ts +0 -26
- package/summary-chip/si-summary-chip.component.d.ts +0 -44
- package/summary-widget/si-summary-widget.component.d.ts +0 -44
- package/system-banner/system-banner.component.d.ts +0 -23
- package/tabs/si-tab/index.d.ts +0 -5
- package/tabs/si-tab/si-tab.component.d.ts +0 -58
- package/tabs/si-tabs.module.d.ts +0 -8
- package/tabs/si-tabset/index.d.ts +0 -5
- package/tabs/si-tabset/si-tabset.component.d.ts +0 -100
- package/tabs-next/si-tab-next-base.directive.d.ts +0 -63
- package/tabs-next/si-tab-next-link.component.d.ts +0 -16
- package/tabs-next/si-tab-next.component.d.ts +0 -16
- package/tabs-next/si-tabs-tokens.d.ts +0 -7
- package/tabs-next/si-tabset-next.component.d.ts +0 -57
- package/theme/si-theme-store.d.ts +0 -82
- package/theme/si-theme.model.d.ts +0 -48
- package/theme/si-theme.service.d.ts +0 -129
- package/threshold/si-readonly-threshold-option.component.d.ts +0 -11
- package/threshold/si-threshold.component.d.ts +0 -147
- package/threshold/si-threshold.module.d.ts +0 -7
- package/toast-notification/si-toast-notification/si-toast-notification.component.d.ts +0 -17
- package/toast-notification/si-toast-notification-drawer/si-toast-notification-drawer.component.d.ts +0 -9
- package/toast-notification/si-toast-notification.service.d.ts +0 -41
- package/toast-notification/si-toast.model.d.ts +0 -25
- package/tooltip/si-tooltip.component.d.ts +0 -25
- package/tooltip/si-tooltip.directive.d.ts +0 -45
- package/tooltip/si-tooltip.module.d.ts +0 -7
- package/tooltip/si-tooltip.service.d.ts +0 -44
- package/tour/si-tour-highlight.component.d.ts +0 -15
- package/tour/si-tour-token.model.d.ts +0 -27
- package/tour/si-tour.component.d.ts +0 -31
- package/tour/si-tour.model.d.ts +0 -51
- package/tour/si-tour.service.d.ts +0 -62
- package/translate/si-translatable-keys.interface.d.ts +0 -193
- package/translate/si-translatable-overrides.provider.d.ts +0 -7
- package/tree-view/drag-drop.util.d.ts +0 -32
- package/tree-view/si-tree-view-converter.service.d.ts +0 -41
- package/tree-view/si-tree-view-item/si-tree-view-item.component.d.ts +0 -104
- package/tree-view/si-tree-view-item/si-tree-view-item.directive.d.ts +0 -24
- package/tree-view/si-tree-view-item-context.d.ts +0 -11
- package/tree-view/si-tree-view-item-height.service.d.ts +0 -49
- package/tree-view/si-tree-view-item-template.directive.d.ts +0 -18
- package/tree-view/si-tree-view-virtualization.service.d.ts +0 -150
- package/tree-view/si-tree-view.component.d.ts +0 -467
- package/tree-view/si-tree-view.model.d.ts +0 -146
- package/tree-view/si-tree-view.module.d.ts +0 -10
- package/tree-view/si-tree-view.service.d.ts +0 -55
- package/tree-view/si-tree-view.utils.d.ts +0 -46
- package/typeahead/si-typeahead-item-template.directive.d.ts +0 -7
- package/typeahead/si-typeahead.component.d.ts +0 -22
- package/typeahead/si-typeahead.directive.d.ts +0 -196
- package/typeahead/si-typeahead.model.d.ts +0 -60
- package/typeahead/si-typeahead.module.d.ts +0 -8
- package/typeahead/si-typeahead.sorting.d.ts +0 -10
- package/unauthorized-page/si-unauthorized-page.component.d.ts +0 -35
- package/unauthorized-page/si-unauthorized-page.module.d.ts +0 -7
- package/wizard/si-wizard-step.component.d.ts +0 -21
- package/wizard/si-wizard.component.d.ts +0 -196
- package/wizard/si-wizard.module.d.ts +0 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-breadcrumb-router.mjs","sources":["../../../../projects/element-ng/breadcrumb-router/si-breadcrumb-default-resolver.service.ts","../../../../projects/element-ng/breadcrumb-router/si-breadcrumb-router.model.ts","../../../../projects/element-ng/breadcrumb-router/si-breadcrumb-router.component.ts","../../../../projects/element-ng/breadcrumb-router/si-breadcrumb-router.component.html","../../../../projects/element-ng/breadcrumb-router/si-breadcrumb-router.module.ts","../../../../projects/element-ng/breadcrumb-router/index.ts","../../../../projects/element-ng/breadcrumb-router/siemens-element-ng-breadcrumb-router.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { BreadcrumbItem } from '@siemens/element-ng/breadcrumb';\nimport { Observable } from 'rxjs';\n\nimport { BreadcrumbRouterLink, SiBreadcrumbResolverService } from './si-breadcrumb-router.model';\n\n@Injectable({ providedIn: 'root' })\nexport class SiBreadcrumbDefaultResolverService implements SiBreadcrumbResolverService {\n private locale = inject(LOCALE_ID).toString();\n\n /**\n * Method which resolves the route and creates the breadcrumb items from it.\n * Is called by the `si-breadcrumb-router-component` but can also be called manually in inheritance patterns.\n */\n resolve(route: ActivatedRouteSnapshot): BreadcrumbItem[] | Observable<BreadcrumbItem[]> {\n if (route.data.siBreadcrumb) {\n return this.resolveCustomRoutePart(route)!;\n } else {\n return this.resolveDefault(route);\n }\n }\n\n private resolveCustomRoutePart(route: ActivatedRouteSnapshot): BreadcrumbItem[] | undefined {\n if (route.data.siBreadcrumb) {\n const rawLinks = route.data.siBreadcrumb as BreadcrumbRouterLink[];\n return rawLinks.map(\n rl =>\n ({\n title: this.calculateName(route, rl.title),\n link: rl.link ? this.calculateUrl(route, rl.link) : route.fragment!\n }) as BreadcrumbItem\n );\n }\n return;\n }\n\n private resolveDefault(route: ActivatedRouteSnapshot | null): BreadcrumbItem[] {\n const links: BreadcrumbItem[] = [];\n let currRoute = route;\n while (currRoute != null) {\n if (currRoute.data.siBreadcrumb) {\n links.unshift(...this.resolveCustomRoutePart(currRoute)!);\n } else if (currRoute.url.length > 0) {\n const routeUrl: string = this.getUrl(currRoute);\n const routeName: string = this.getName(currRoute);\n let link: BreadcrumbItem;\n if (links.length === 0) {\n link = { title: routeName } as BreadcrumbItem;\n } else {\n link = { title: routeName, link: routeUrl } as BreadcrumbItem;\n }\n links.unshift(link);\n }\n currRoute = currRoute.parent;\n }\n return links;\n }\n\n private getUrl(route: ActivatedRouteSnapshot): string {\n const parent = route.parent;\n let url: string;\n if (parent != null) {\n url = this.getUrl(parent);\n } else {\n url = '';\n }\n const myUrl: string = route.url.map(o => o.toString()).join('/');\n if (!url.endsWith('/')) {\n url = url + '/';\n }\n url = url + myUrl;\n return url;\n }\n\n private getName(route: ActivatedRouteSnapshot): string {\n let name: string = route.data.title ?? route.url[0].path;\n if (typeof name === 'object') {\n name = name[this.locale];\n }\n\n return this.calculateName(route, name);\n }\n\n private calculateName(route: ActivatedRouteSnapshot, baseName: string): string {\n return this.calculate(route, baseName, /{(\\w+)}/g);\n }\n\n private calculateUrl(route: ActivatedRouteSnapshot, baseName: string): string {\n return this.calculate(route, baseName, /:(\\w+)\\/?/g, ':', '');\n }\n\n private calculate(\n route: ActivatedRouteSnapshot,\n base: string,\n pattern: RegExp,\n replaceStart = '{',\n replaceEnd = '}'\n ): string {\n let name = base;\n const values: string[] = [];\n\n let finding: RegExpExecArray | null;\n // tslint:disable-next-line:no-conditional-assignment\n while ((finding = pattern.exec(name)) != null) {\n values.push(finding[1]);\n }\n\n values.forEach(value => {\n let replace = this.findParam(route, value);\n if (route.data.replaceValues) {\n replace = route.data.replaceValues[replace] ?? replace;\n }\n name = name.replace(`${replaceStart}${value}${replaceEnd}`, replace);\n });\n\n return name;\n }\n\n private findParam(route: ActivatedRouteSnapshot, paramKey: string): string {\n return (\n route.paramMap.get(paramKey) ??\n (route.parent ? this.findParam(route.parent, paramKey) : paramKey)\n );\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { inject, InjectionToken } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { BreadcrumbItem } from '@siemens/element-ng/breadcrumb';\nimport { TranslatableString } from '@siemens/element-translate-ng/translate';\nimport { Observable } from 'rxjs';\n\nimport { SiBreadcrumbDefaultResolverService } from './si-breadcrumb-default-resolver.service';\n\n/**\n * Defines the title and link of a breadcrumb item in a\n * route configuration and compatible to {@link BreadcrumbItem}.\n *\n * ```\n * {\n * path: 'user-manual',\n * component: UserManualComponent,\n * data: {\n * siBreadcrumb: [\n * { title: 'USER_MANUAL.HEADING', link: '/main/user-manual' }\n * ]\n * }\n * }\n * ```\n *\n */\nexport interface BreadcrumbRouterLink {\n /**\n * Angular router link for the breadcrumb item.\n */\n link?: string;\n /**\n * Breadcrumb item title that will be translated.\n */\n title: TranslatableString;\n}\n\n/**\n * Service interface to resolve the breadcrumb items on the base of a route.\n */\nexport interface SiBreadcrumbResolverService {\n resolve(route: ActivatedRouteSnapshot): BreadcrumbItem[] | Observable<BreadcrumbItem[]>;\n}\n\n/**\n * Injection token to provide your own `SiBreadcrumbResolverService` implementation.\n *\n * ```\n * providers: [{\n * provide: SI_BREADCRUMB_RESOLVER_SERVICE,\n * useClass: CustomBreadcrumbResolverService,\n * }]\n * ```\n */\nexport const SI_BREADCRUMB_RESOLVER_SERVICE = new InjectionToken<SiBreadcrumbResolverService>(\n 'si.breadcrumb.resolver.service',\n { providedIn: 'root', factory: () => inject(SiBreadcrumbDefaultResolverService) }\n);\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Component, inject, input, OnDestroy, OnInit, signal } from '@angular/core';\nimport { ActivatedRoute, ActivatedRouteSnapshot, NavigationEnd, Router } from '@angular/router';\nimport { BreadcrumbItem, SiBreadcrumbComponent } from '@siemens/element-ng/breadcrumb';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { SI_BREADCRUMB_RESOLVER_SERVICE } from './si-breadcrumb-router.model';\n\n@Component({\n selector: 'si-breadcrumb-router',\n imports: [SiBreadcrumbComponent],\n templateUrl: './si-breadcrumb-router.component.html'\n})\nexport class SiBreadcrumbRouterComponent implements OnInit, OnDestroy {\n /**\n * Aria label for the main breadcrumb navigation. Needed for a11y.\n *\n * @defaultValue 'breadcrumb'\n */\n readonly ariaLabel = input('breadcrumb');\n\n protected readonly items = signal<BreadcrumbItem[]>([]);\n\n private readonly currentCalcUrl = signal<string | undefined>(undefined);\n private nextRoute = new Subject<void>();\n private resolverService = inject(SI_BREADCRUMB_RESOLVER_SERVICE);\n private route? = inject(ActivatedRoute, { optional: true });\n private router? = inject(Router, { optional: true });\n private routerSubscription?: Subscription;\n\n ngOnInit(): void {\n this.checkItems();\n }\n\n ngOnDestroy(): void {\n this.routerSubscription?.unsubscribe();\n this.nextRoute.next();\n }\n\n private checkItems(): void {\n if (!this.routerSubscription && this.route && this.router) {\n this.routerSubscription = this.router.events\n .pipe(filter(e => e instanceof NavigationEnd))\n .subscribe(navigationEvent => {\n const event = navigationEvent as NavigationEnd;\n // Get the new url\n const newUrl = event.urlAfterRedirects || event.url;\n // Only update when url differs from previous url\n\n if (this.currentCalcUrl() !== newUrl) {\n this.currentCalcUrl.set(newUrl);\n this.nextRoute.next();\n this.computePath();\n }\n });\n\n if (this.router.navigated) {\n this.currentCalcUrl.set(this.router.url);\n this.computePath();\n }\n }\n }\n\n private computePath(): void {\n if (!this.route || !this.resolverService) {\n return;\n }\n\n // Get a snapshot of the all current activate routes\n const pathFromRoot: ActivatedRouteSnapshot[] = this.route.snapshot.pathFromRoot;\n\n // Find the child/leaf route that fits to the url\n const route = this.findRouteWithUrl(pathFromRoot, this.currentCalcUrl()?.split('?')[0] ?? '');\n\n if (route) {\n // Workaround to fix a bug that the route is null, in some cases\n const links$ = this.resolverService.resolve(route);\n if (links$ instanceof Observable) {\n links$.pipe(takeUntil(this.nextRoute)).subscribe(links => {\n this.items.set([{ link: '/', title: '/' }, ...links]);\n });\n } else {\n this.items.set([{ link: '/', title: '/' }, ...links$]);\n }\n }\n }\n\n private findRouteWithUrl(\n routes: ActivatedRouteSnapshot[],\n url: string\n ): ActivatedRouteSnapshot | null {\n let result: ActivatedRouteSnapshot | null = null;\n for (const route of routes) {\n const routeUrl = this.getUrl(route);\n if (url === routeUrl && !route.data?.siBreadcrumbIgnore) {\n result = route;\n break;\n } else {\n result = this.findRouteWithUrl(route.children, url);\n if (result != null) {\n break;\n }\n }\n }\n return result;\n }\n\n private getUrl(route: ActivatedRouteSnapshot): string {\n let url = '';\n for (const routeSegment of route.pathFromRoot) {\n const myUrl: string = routeSegment.url.map(o => o.toString()).join('/');\n if (!url.endsWith('/')) {\n url = url + '/';\n }\n url = url + myUrl;\n }\n return url;\n }\n}\n","<si-breadcrumb [items]=\"items()\" [ariaLabel]=\"ariaLabel()\" />\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiBreadcrumbRouterComponent } from './si-breadcrumb-router.component';\n\n@NgModule({\n imports: [SiBreadcrumbRouterComponent],\n exports: [SiBreadcrumbRouterComponent]\n})\nexport class SiBreadcrumbRouterModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-breadcrumb-default-resolver.service';\nexport * from './si-breadcrumb-router.component';\nexport * from './si-breadcrumb-router.model';\nexport * from './si-breadcrumb-router.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"siemens-element-ng-breadcrumb-router.mjs","sources":["../../../../projects/element-ng/breadcrumb-router/si-breadcrumb-default-resolver.service.ts","../../../../projects/element-ng/breadcrumb-router/si-breadcrumb-router.model.ts","../../../../projects/element-ng/breadcrumb-router/si-breadcrumb-router.component.ts","../../../../projects/element-ng/breadcrumb-router/si-breadcrumb-router.component.html","../../../../projects/element-ng/breadcrumb-router/si-breadcrumb-router.module.ts","../../../../projects/element-ng/breadcrumb-router/index.ts","../../../../projects/element-ng/breadcrumb-router/siemens-element-ng-breadcrumb-router.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { BreadcrumbItem } from '@siemens/element-ng/breadcrumb';\nimport { Observable } from 'rxjs';\n\nimport { BreadcrumbRouterLink, SiBreadcrumbResolverService } from './si-breadcrumb-router.model';\n\n@Injectable({ providedIn: 'root' })\nexport class SiBreadcrumbDefaultResolverService implements SiBreadcrumbResolverService {\n private locale = inject(LOCALE_ID).toString();\n\n /**\n * Method which resolves the route and creates the breadcrumb items from it.\n * Is called by the `si-breadcrumb-router-component` but can also be called manually in inheritance patterns.\n */\n resolve(route: ActivatedRouteSnapshot): BreadcrumbItem[] | Observable<BreadcrumbItem[]> {\n if (route.data.siBreadcrumb) {\n return this.resolveCustomRoutePart(route)!;\n } else {\n return this.resolveDefault(route);\n }\n }\n\n private resolveCustomRoutePart(route: ActivatedRouteSnapshot): BreadcrumbItem[] | undefined {\n if (route.data.siBreadcrumb) {\n const rawLinks = route.data.siBreadcrumb as BreadcrumbRouterLink[];\n return rawLinks.map(\n rl =>\n ({\n title: this.calculateName(route, rl.title),\n link: rl.link ? this.calculateUrl(route, rl.link) : route.fragment!\n }) as BreadcrumbItem\n );\n }\n return;\n }\n\n private resolveDefault(route: ActivatedRouteSnapshot | null): BreadcrumbItem[] {\n const links: BreadcrumbItem[] = [];\n let currRoute = route;\n while (currRoute != null) {\n if (currRoute.data.siBreadcrumb) {\n links.unshift(...this.resolveCustomRoutePart(currRoute)!);\n } else if (currRoute.url.length > 0) {\n const routeUrl: string = this.getUrl(currRoute);\n const routeName: string = this.getName(currRoute);\n let link: BreadcrumbItem;\n if (links.length === 0) {\n link = { title: routeName } as BreadcrumbItem;\n } else {\n link = { title: routeName, link: routeUrl } as BreadcrumbItem;\n }\n links.unshift(link);\n }\n currRoute = currRoute.parent;\n }\n return links;\n }\n\n private getUrl(route: ActivatedRouteSnapshot): string {\n const parent = route.parent;\n let url: string;\n if (parent != null) {\n url = this.getUrl(parent);\n } else {\n url = '';\n }\n const myUrl: string = route.url.map(o => o.toString()).join('/');\n if (!url.endsWith('/')) {\n url = url + '/';\n }\n url = url + myUrl;\n return url;\n }\n\n private getName(route: ActivatedRouteSnapshot): string {\n let name: string = route.data.title ?? route.url[0].path;\n if (typeof name === 'object') {\n name = name[this.locale];\n }\n\n return this.calculateName(route, name);\n }\n\n private calculateName(route: ActivatedRouteSnapshot, baseName: string): string {\n return this.calculate(route, baseName, /{(\\w+)}/g);\n }\n\n private calculateUrl(route: ActivatedRouteSnapshot, baseName: string): string {\n return this.calculate(route, baseName, /:(\\w+)\\/?/g, ':', '');\n }\n\n private calculate(\n route: ActivatedRouteSnapshot,\n base: string,\n pattern: RegExp,\n replaceStart = '{',\n replaceEnd = '}'\n ): string {\n let name = base;\n const values: string[] = [];\n\n let finding: RegExpExecArray | null;\n // tslint:disable-next-line:no-conditional-assignment\n while ((finding = pattern.exec(name)) != null) {\n values.push(finding[1]);\n }\n\n values.forEach(value => {\n let replace = this.findParam(route, value);\n if (route.data.replaceValues) {\n replace = route.data.replaceValues[replace] ?? replace;\n }\n name = name.replace(`${replaceStart}${value}${replaceEnd}`, replace);\n });\n\n return name;\n }\n\n private findParam(route: ActivatedRouteSnapshot, paramKey: string): string {\n return (\n route.paramMap.get(paramKey) ??\n (route.parent ? this.findParam(route.parent, paramKey) : paramKey)\n );\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { inject, InjectionToken } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { BreadcrumbItem } from '@siemens/element-ng/breadcrumb';\nimport { TranslatableString } from '@siemens/element-translate-ng/translate';\nimport { Observable } from 'rxjs';\n\nimport { SiBreadcrumbDefaultResolverService } from './si-breadcrumb-default-resolver.service';\n\n/**\n * Defines the title and link of a breadcrumb item in a\n * route configuration and compatible to {@link BreadcrumbItem}.\n *\n * ```\n * {\n * path: 'user-manual',\n * component: UserManualComponent,\n * data: {\n * siBreadcrumb: [\n * { title: 'USER_MANUAL.HEADING', link: '/main/user-manual' }\n * ]\n * }\n * }\n * ```\n *\n */\nexport interface BreadcrumbRouterLink {\n /**\n * Angular router link for the breadcrumb item.\n */\n link?: string;\n /**\n * Breadcrumb item title that will be translated.\n */\n title: TranslatableString;\n}\n\n/**\n * Service interface to resolve the breadcrumb items on the base of a route.\n */\nexport interface SiBreadcrumbResolverService {\n resolve(route: ActivatedRouteSnapshot): BreadcrumbItem[] | Observable<BreadcrumbItem[]>;\n}\n\n/**\n * Injection token to provide your own `SiBreadcrumbResolverService` implementation.\n *\n * ```\n * providers: [{\n * provide: SI_BREADCRUMB_RESOLVER_SERVICE,\n * useClass: CustomBreadcrumbResolverService,\n * }]\n * ```\n */\nexport const SI_BREADCRUMB_RESOLVER_SERVICE = new InjectionToken<SiBreadcrumbResolverService>(\n 'si.breadcrumb.resolver.service',\n { providedIn: 'root', factory: () => inject(SiBreadcrumbDefaultResolverService) }\n);\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Component, inject, input, OnDestroy, OnInit, signal } from '@angular/core';\nimport { ActivatedRoute, ActivatedRouteSnapshot, NavigationEnd, Router } from '@angular/router';\nimport { BreadcrumbItem, SiBreadcrumbComponent } from '@siemens/element-ng/breadcrumb';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { SI_BREADCRUMB_RESOLVER_SERVICE } from './si-breadcrumb-router.model';\n\n@Component({\n selector: 'si-breadcrumb-router',\n imports: [SiBreadcrumbComponent],\n templateUrl: './si-breadcrumb-router.component.html'\n})\nexport class SiBreadcrumbRouterComponent implements OnInit, OnDestroy {\n /**\n * Aria label for the main breadcrumb navigation. Needed for a11y.\n *\n * @defaultValue 'breadcrumb'\n */\n readonly ariaLabel = input('breadcrumb');\n\n protected readonly items = signal<BreadcrumbItem[]>([]);\n\n private readonly currentCalcUrl = signal<string | undefined>(undefined);\n private nextRoute = new Subject<void>();\n private resolverService = inject(SI_BREADCRUMB_RESOLVER_SERVICE);\n private route? = inject(ActivatedRoute, { optional: true });\n private router? = inject(Router, { optional: true });\n private routerSubscription?: Subscription;\n\n ngOnInit(): void {\n this.checkItems();\n }\n\n ngOnDestroy(): void {\n this.routerSubscription?.unsubscribe();\n this.nextRoute.next();\n }\n\n private checkItems(): void {\n if (!this.routerSubscription && this.route && this.router) {\n this.routerSubscription = this.router.events\n .pipe(filter(e => e instanceof NavigationEnd))\n .subscribe(navigationEvent => {\n const event = navigationEvent as NavigationEnd;\n // Get the new url\n const newUrl = event.urlAfterRedirects || event.url;\n // Only update when url differs from previous url\n\n if (this.currentCalcUrl() !== newUrl) {\n this.currentCalcUrl.set(newUrl);\n this.nextRoute.next();\n this.computePath();\n }\n });\n\n if (this.router.navigated) {\n this.currentCalcUrl.set(this.router.url);\n this.computePath();\n }\n }\n }\n\n private computePath(): void {\n if (!this.route || !this.resolverService) {\n return;\n }\n\n // Get a snapshot of the all current activate routes\n const pathFromRoot: ActivatedRouteSnapshot[] = this.route.snapshot.pathFromRoot;\n\n // Find the child/leaf route that fits to the url\n const route = this.findRouteWithUrl(pathFromRoot, this.currentCalcUrl()?.split('?')[0] ?? '');\n\n if (route) {\n // Workaround to fix a bug that the route is null, in some cases\n const links$ = this.resolverService.resolve(route);\n if (links$ instanceof Observable) {\n links$.pipe(takeUntil(this.nextRoute)).subscribe(links => {\n this.items.set([{ link: '/', title: '/' }, ...links]);\n });\n } else {\n this.items.set([{ link: '/', title: '/' }, ...links$]);\n }\n }\n }\n\n private findRouteWithUrl(\n routes: ActivatedRouteSnapshot[],\n url: string\n ): ActivatedRouteSnapshot | null {\n let result: ActivatedRouteSnapshot | null = null;\n for (const route of routes) {\n const routeUrl = this.getUrl(route);\n if (url === routeUrl && !route.data?.siBreadcrumbIgnore) {\n result = route;\n break;\n } else {\n result = this.findRouteWithUrl(route.children, url);\n if (result != null) {\n break;\n }\n }\n }\n return result;\n }\n\n private getUrl(route: ActivatedRouteSnapshot): string {\n let url = '';\n for (const routeSegment of route.pathFromRoot) {\n const myUrl: string = routeSegment.url.map(o => o.toString()).join('/');\n if (!url.endsWith('/')) {\n url = url + '/';\n }\n url = url + myUrl;\n }\n return url;\n }\n}\n","<si-breadcrumb [items]=\"items()\" [ariaLabel]=\"ariaLabel()\" />\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiBreadcrumbRouterComponent } from './si-breadcrumb-router.component';\n\n@NgModule({\n imports: [SiBreadcrumbRouterComponent],\n exports: [SiBreadcrumbRouterComponent]\n})\nexport class SiBreadcrumbRouterModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-breadcrumb-default-resolver.service';\nexport * from './si-breadcrumb-router.component';\nexport * from './si-breadcrumb-router.model';\nexport * from './si-breadcrumb-router.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { Directive, input, booleanAttribute, viewChild, viewChildren, inject, Ch
|
|
|
4
4
|
import { addIcons, elementRight2, elementBreadcrumbRoot, SiIconNextComponent } from '@siemens/element-ng/icon';
|
|
5
5
|
import { SiLinkDirective } from '@siemens/element-ng/link';
|
|
6
6
|
import { SiResizeObserverDirective } from '@siemens/element-ng/resize-observer';
|
|
7
|
-
import { injectSiTranslateService, SiTranslatePipe } from '@siemens/element-translate-ng/translate';
|
|
7
|
+
import { t, injectSiTranslateService, SiTranslatePipe } from '@siemens/element-translate-ng/translate';
|
|
8
8
|
import { merge, of } from 'rxjs';
|
|
9
9
|
import { switchMap } from 'rxjs/operators';
|
|
10
10
|
|
|
@@ -16,10 +16,10 @@ class SiBreadcrumbItemTemplateDirective {
|
|
|
16
16
|
static ngTemplateContextGuard(directive, context) {
|
|
17
17
|
return true;
|
|
18
18
|
}
|
|
19
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
20
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
19
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiBreadcrumbItemTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
20
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.6", type: SiBreadcrumbItemTemplateDirective, isStandalone: true, selector: "[siBreadcrumbItemTemplate]", ngImport: i0 });
|
|
21
21
|
}
|
|
22
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiBreadcrumbItemTemplateDirective, decorators: [{
|
|
23
23
|
type: Directive,
|
|
24
24
|
args: [{ selector: '[siBreadcrumbItemTemplate]' }]
|
|
25
25
|
}] });
|
|
@@ -62,10 +62,10 @@ class SiBreadcrumbComponent {
|
|
|
62
62
|
*
|
|
63
63
|
* @defaultValue
|
|
64
64
|
* ```
|
|
65
|
-
* $localize`:@@SI_BREADCRUMB:Breadcrumbs`
|
|
65
|
+
* t(() => $localize`:@@SI_BREADCRUMB:Breadcrumbs`)
|
|
66
66
|
* ```
|
|
67
67
|
*/
|
|
68
|
-
ariaLabel = input($localize `:@@SI_BREADCRUMB:Breadcrumbs`);
|
|
68
|
+
ariaLabel = input(t(() => $localize `:@@SI_BREADCRUMB:Breadcrumbs`));
|
|
69
69
|
translationSubscription;
|
|
70
70
|
itemsProcessed = false;
|
|
71
71
|
numberOfItems = 0;
|
|
@@ -253,10 +253,10 @@ class SiBreadcrumbComponent {
|
|
|
253
253
|
// Manually detect changes to prevent them from not being detected on language change
|
|
254
254
|
this.changeDetector.detectChanges();
|
|
255
255
|
}
|
|
256
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
257
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
256
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiBreadcrumbComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
257
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: SiBreadcrumbComponent, isStandalone: true, selector: "si-breadcrumb", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, showRootAsText: { classPropertyName: "showRootAsText", publicName: "showRootAsText", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:click": "documentClick($event.target)" } }, viewQueries: [{ propertyName: "breadcrumbElement", first: true, predicate: ["breadcrumb"], descendants: true, isSignal: true }, { propertyName: "breadcrumbElements", predicate: ["breadcrumbItem"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<nav role=\"navigation\" [attr.aria-label]=\"ariaLabel() | translate\">\n <ol #breadcrumb class=\"breadcrumb\" (siResizeObserver)=\"resetBreadcrumb()\">\n @for (item of itemsShown; track $index; let isFirst = $first) {\n @if (!breadcrumbShortened || item.level !== ellipsesLevel) {\n @if (item.shortened) {\n <li #breadcrumbItem class=\"item text-nowrap shortened\">\n @if (!isFirst) {\n <si-icon-next class=\"separator flip-rtl\" [icon]=\"icons.elementRight2\" />\n }\n <div class=\"breadcrumb-dropdown-wrapper\">\n <ng-container\n *ngTemplateOutlet=\"\n toggleTemplate;\n context: { item: item, title: item.shortenedTitle }\n \"\n />\n @if (addExpandDropdown) {\n <div\n class=\"dropdown-menu\"\n role=\"menu\"\n [id]=\"controlId + item.level\"\n [class.show]=\"breadcrumbDropdownOpen === item.level\"\n >\n <ng-container *ngTemplateOutlet=\"dropdownTemplate; context: { item: item }\" />\n </div>\n }\n </div>\n </li>\n }\n @if (!item.shortened) {\n <li #breadcrumbItem class=\"item\">\n @if (!isFirst) {\n <si-icon-next class=\"separator flip-rtl\" [icon]=\"icons.elementRight2\" />\n }\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { item: item }\" />\n </li>\n }\n }\n @if (breadcrumbShortened && item.level === ellipsesLevel) {\n <li class=\"item breadcrumb-ellipses-item\">\n @if (!isFirst) {\n <si-icon-next class=\"separator flip-rtl\" [icon]=\"icons.elementRight2\" />\n }\n <div class=\"breadcrumb-dropdown-wrapper\">\n <ng-container *ngTemplateOutlet=\"toggleTemplate; context: { item: item, title: '' }\" />\n <div\n class=\"dropdown-menu\"\n role=\"menu\"\n [id]=\"controlId + item.level\"\n [class.show]=\"breadcrumbDropdownOpen === item.level\"\n >\n @for (item of itemsHidden; track $index) {\n <ng-container *ngTemplateOutlet=\"dropdownTemplate; context: { item: item }\" />\n }\n </div>\n </div>\n </li>\n }\n }\n </ol>\n</nav>\n\n<ng-template #itemTemplate let-item=\"item\" siBreadcrumbItemTemplate>\n <a\n class=\"breadcrumb-link text-nowrap\"\n activeClass=\"active\"\n ariaCurrent=\"page\"\n [class.disable-router-link]=\"!item.link && !item.action && !item.href\"\n [class.text-secondary]=\"item.lastItem\"\n [siLink]=\"item\"\n [exactMatch]=\"true\"\n [attr.aria-label]=\"item.title\"\n [attr.aria-disabled]=\"!item.link && !item.href && !item.action\"\n >\n @if (item.level === 0) {\n <si-icon-next class=\"icon flip-rtl\" [icon]=\"icons.elementBreadcrumbRoot\" />\n }\n @if (item.level !== 0) {\n <span>{{ item.title }}</span>\n }\n </a>\n</ng-template>\n\n<ng-template #toggleTemplate let-item=\"item\" let-title=\"title\" siBreadcrumbItemTemplate>\n <div\n class=\"breadcrumb-dropdown-toggle link\"\n role=\"button\"\n aria-haspopup=\"true\"\n tabindex=\"0\"\n [attr.aria-controls]=\"controlId + item.level\"\n [attr.aria-expanded]=\"breadcrumbDropdownOpen === item.level\"\n (keydown.enter)=\"toggleBreadcrumbDropdown(item.level)\"\n (click)=\"toggleBreadcrumbDropdown(item.level)\"\n >{{ title }}...</div\n >\n</ng-template>\n\n<ng-template #dropdownTemplate let-item=\"item\" siBreadcrumbItemTemplate>\n <a\n class=\"dropdown-item breadcrumb-link focus-inside\"\n activeClass=\"active\"\n ariaCurrent=\"page\"\n role=\"menuitem\"\n [class.disable-router-link]=\"!item.link && !item.action && !item.href\"\n [siLink]=\"item\"\n [exactMatch]=\"true\"\n [attr.aria-disabled]=\"!item.link && !item.action && !item.href\"\n >{{ item.title }}</a\n >\n</ng-template>\n", styles: [".breadcrumb{flex-wrap:nowrap}.dropdown-menu.show>.dropdown-item{background-color:var(--element-base-1)}.item{display:flex;align-items:center}.separator{font-size:1.5rem;color:var(--element-ui-2);margin-block:-.25rem;margin-inline:0}.breadcrumb-dropdown-toggle{cursor:pointer}.dropdown-item.active,.dropdown-item:active{background-color:var(--element-base-1)}.dropdown-item:hover,.dropdown-item:focus{background-color:var(--element-base-0)!important;text-decoration:underline}.disable-router-link,.disable-router-link:hover{pointer-events:none;color:var(--element-text-disabled)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SiIconNextComponent, selector: "si-icon-next", inputs: ["icon"] }, { kind: "directive", type: SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "directive", type: SiResizeObserverDirective, selector: "[siResizeObserver]", inputs: ["resizeThrottle", "emitInitial"], outputs: ["siResizeObserver"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }, { kind: "directive", type: SiBreadcrumbItemTemplateDirective, selector: "[siBreadcrumbItemTemplate]" }] });
|
|
258
258
|
}
|
|
259
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
259
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiBreadcrumbComponent, decorators: [{
|
|
260
260
|
type: Component,
|
|
261
261
|
args: [{ selector: 'si-breadcrumb', imports: [
|
|
262
262
|
NgTemplateOutlet,
|
|
@@ -276,11 +276,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImpor
|
|
|
276
276
|
* SPDX-License-Identifier: MIT
|
|
277
277
|
*/
|
|
278
278
|
class SiBreadcrumbModule {
|
|
279
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
280
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
281
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
279
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiBreadcrumbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
280
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: SiBreadcrumbModule, imports: [SiBreadcrumbComponent], exports: [SiBreadcrumbComponent] });
|
|
281
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiBreadcrumbModule, imports: [SiBreadcrumbComponent] });
|
|
282
282
|
}
|
|
283
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
283
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiBreadcrumbModule, decorators: [{
|
|
284
284
|
type: NgModule,
|
|
285
285
|
args: [{
|
|
286
286
|
imports: [SiBreadcrumbComponent],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-breadcrumb.mjs","sources":["../../../../projects/element-ng/breadcrumb/si-breadcrumb-item-template.directive.ts","../../../../projects/element-ng/breadcrumb/si-breadcrumb.component.ts","../../../../projects/element-ng/breadcrumb/si-breadcrumb.component.html","../../../../projects/element-ng/breadcrumb/si-breadcrumb.module.ts","../../../../projects/element-ng/breadcrumb/index.ts","../../../../projects/element-ng/breadcrumb/siemens-element-ng-breadcrumb.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Directive } from '@angular/core';\n\nimport { EnumeratedBreadcrumbItem } from './breadcrumb-item.model';\n\n@Directive({ selector: '[siBreadcrumbItemTemplate]' })\nexport class SiBreadcrumbItemTemplateDirective {\n static ngTemplateContextGuard(\n directive: SiBreadcrumbItemTemplateDirective,\n context: unknown\n ): context is { item: EnumeratedBreadcrumbItem; title?: string } {\n return true;\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n inject,\n input,\n OnChanges,\n OnDestroy,\n viewChild,\n viewChildren\n} from '@angular/core';\nimport {\n addIcons,\n elementBreadcrumbRoot,\n elementRight2,\n SiIconNextComponent\n} from '@siemens/element-ng/icon';\nimport { SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiResizeObserverDirective } from '@siemens/element-ng/resize-observer';\nimport { injectSiTranslateService, SiTranslatePipe } from '@siemens/element-translate-ng/translate';\nimport { merge, of, Subscription } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\n\nimport { BreadcrumbItem, EnumeratedBreadcrumbItem } from './breadcrumb-item.model';\nimport { SiBreadcrumbItemTemplateDirective } from './si-breadcrumb-item-template.directive';\n\n/**\n * Defines how many items should be displayed at the end of the breadcrumb if possible.\n */\nconst NUMBER_OF_SHOWN_ITEMS_AT_END = 2;\n\n/**\n * Defines how long a display item can be without it being shortened.\n * Cannot be lower than 4.\n * If this is 0, titles will not be shortened\n */\nconst ITEM_MAX_LENGTH = 30;\n\n/**\n * Defines how many characters of an item are always displayed in the beginning.\n * Must be at least 2 less than ITEM_MAX_LENGTH\n */\nconst ITEM_CHARACTERS_ALWAYS_DISPLAYED_IN_BEGINNING = 10;\n\n/**\n * Defines the width of the root icon in pixels.\n */\nconst ROOT_ICON_WIDTH = 24;\n\nlet controlIdCounter = 1;\n\n@Component({\n selector: 'si-breadcrumb',\n imports: [\n NgTemplateOutlet,\n SiIconNextComponent,\n SiLinkDirective,\n SiResizeObserverDirective,\n SiTranslatePipe,\n SiBreadcrumbItemTemplateDirective\n ],\n templateUrl: './si-breadcrumb.component.html',\n styleUrl: './si-breadcrumb.component.scss'\n})\nexport class SiBreadcrumbComponent implements OnChanges, OnDestroy {\n /** Array of breadcrumb items. */\n readonly items = input.required<BreadcrumbItem[]>();\n /**\n * Shows the \"root\" route as the provided title string instead of an icon.\n *\n * @defaultValue false\n */\n readonly showRootAsText = input(false, { transform: booleanAttribute });\n /**\n * Aria label for the main breadcrumb navigation. Needed for a11y.\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_BREADCRUMB:Breadcrumbs`\n * ```\n */\n readonly ariaLabel = input($localize`:@@SI_BREADCRUMB:Breadcrumbs`);\n\n private translationSubscription?: Subscription;\n private itemsProcessed = false;\n private numberOfItems = 0;\n\n protected itemsShown: EnumeratedBreadcrumbItem[] = [];\n protected itemsHidden: EnumeratedBreadcrumbItem[] = [];\n protected breadcrumbShortened = false;\n protected ellipsesLevel = 0;\n // Record to allow for -1 (root).\n protected breadcrumbDropdownOpen: number | undefined = undefined;\n protected addExpandDropdown = false;\n protected controlId = `__si-breadcrumb-${controlIdCounter++}-`;\n protected readonly icons = addIcons({ elementBreadcrumbRoot, elementRight2 });\n\n private readonly breadcrumbElement = viewChild.required<ElementRef>('breadcrumb');\n private readonly breadcrumbElements = viewChildren<ElementRef>('breadcrumbItem');\n\n private changeDetector = inject(ChangeDetectorRef);\n private translate = injectSiTranslateService();\n\n ngOnChanges(): void {\n // Reprocess items on every change and on init\n this.processItems();\n }\n\n ngOnDestroy(): void {\n this.translationSubscription?.unsubscribe();\n }\n\n private processItems(): void {\n this.numberOfItems = this.items().length;\n\n this.translationSubscription?.unsubscribe();\n if (this.numberOfItems) {\n this.translationSubscription = merge(this.translate.translationChange, of(undefined))\n .pipe(switchMap(() => this.translate.translateAsync(this.items().map(item => item.title))))\n .subscribe(translatedTitles => {\n // Add the level to the items and check if they need to be shortened.\n // If they need to be shortened, shorten them at a convenient place.\n // Set the lastItem tag to true for the last item\n let counter = -1;\n const enumeratedItems = this.items().map(item => {\n counter++;\n const title = translatedTitles[item.title];\n let shortened = false;\n let shortenedTitle = title;\n // If this is not the last item and the title too long, shorten the title\n if (counter !== this.numberOfItems - 1 && title && title.length > ITEM_MAX_LENGTH) {\n shortened = true;\n // This regex gets the last space, dash or underscore.\n const regexMatch = title\n .slice(ITEM_CHARACTERS_ALWAYS_DISPLAYED_IN_BEGINNING, ITEM_MAX_LENGTH - 2)\n .match(/^.*[- _](?=.*?$)/);\n if (regexMatch) {\n shortenedTitle = title.slice(\n 0,\n ITEM_CHARACTERS_ALWAYS_DISPLAYED_IN_BEGINNING + regexMatch[0].length - 1\n );\n } else {\n shortenedTitle = title.slice(0, ITEM_MAX_LENGTH - 3);\n }\n }\n\n // If the root element should be displayed as text, set level not to 0.\n // This is used to distinguish in the template between icon and text.\n const level = counter === 0 && this.showRootAsText() ? -1 : counter;\n\n return {\n ...item,\n title,\n level,\n hide: false,\n shortened,\n shortenedTitle,\n lastItem: counter === this.numberOfItems - 1\n };\n });\n this.itemsShown = enumeratedItems;\n this.itemsHidden = [];\n this.breadcrumbShortened = false;\n this.breadcrumbDropdownOpen = undefined;\n this.itemsProcessed = true;\n this.resetBreadcrumb();\n });\n } else {\n this.itemsShown = [];\n this.itemsHidden = [];\n this.breadcrumbShortened = false;\n this.breadcrumbDropdownOpen = undefined;\n this.itemsProcessed = true;\n this.resetBreadcrumb();\n }\n }\n\n /*\n * Toggle dropdown (on click of ellipses), either for\n * the general dropdown list if itemLevel is at ellipsesLevel\n * or otherwise the name expansion at the specified item level.\n * Close any open dropdown before opening a new one.\n */\n protected toggleBreadcrumbDropdown(itemLevel: number): void {\n this.breadcrumbDropdownOpen = this.breadcrumbDropdownOpen === itemLevel ? undefined : itemLevel;\n }\n\n // Close dropdown on click anywhere else\n @HostListener('document:click', ['$event.target'])\n protected documentClick(targetElement: any): void {\n if (this.breadcrumbDropdownOpen) {\n if (!this.breadcrumbElement().nativeElement.contains(targetElement)) {\n // Close all dropdowns.\n this.breadcrumbDropdownOpen = undefined;\n }\n }\n }\n\n protected resetBreadcrumb(): void {\n if (this.itemsProcessed) {\n this.numberOfItems = this.items().length;\n // Add an additional the ellipses item to the end of the shownItems (breadcrumb items).\n // Disable addExpandDropdown for now, to make every item a proper SiBreadcrumbItemComponent.\n const ellipsesItem = { title: '...', level: this.numberOfItems, shortenedTitle: '' };\n this.itemsShown.push(ellipsesItem);\n if (this.breadcrumbShortened) {\n // If the breadcrumb was shortened before, remove the ellipses and add back itemsHidden (breadcrumb dropdown items).\n this.breadcrumbShortened = false;\n this.itemsShown.splice(this.ellipsesLevel, 1, ...this.itemsHidden);\n this.itemsHidden = [];\n }\n this.addExpandDropdown = false;\n // Wait for the next change detection cycle to measure the updated item length.\n this.changeDetector.detectChanges();\n this.calculateBreadcrumb();\n }\n }\n\n private calculateBreadcrumb(): void {\n this.addExpandDropdown = true;\n const maxWidth = this.breadcrumbElement().nativeElement.clientWidth;\n const breadcrumbElementsList = this.breadcrumbElements().map(item => item);\n // Measure the length of the last additional ellipses item, then remove it from itemsShown (breadcrumb items).\n const ellipsesWidth = breadcrumbElementsList[this.numberOfItems].nativeElement.offsetWidth;\n this.itemsShown.splice(this.numberOfItems, 1);\n let currentWidth = this.showRootAsText() ? 0 : ROOT_ICON_WIDTH;\n const numberOfItemsKeptAtEnd = Math.min(NUMBER_OF_SHOWN_ITEMS_AT_END, this.numberOfItems - 1);\n let reverseCounter = this.numberOfItems;\n // Test for numberOfItemsKeptAtEnd items from the end if they still fit, if not, set breadcrumbShortened to true.\n breadcrumbElementsList\n .slice(this.numberOfItems - numberOfItemsKeptAtEnd, this.numberOfItems)\n .reverse()\n .map(item => {\n if (!this.breadcrumbShortened) {\n const currentItemWidth = item.nativeElement.offsetWidth;\n if (currentWidth + currentItemWidth > maxWidth) {\n this.breadcrumbShortened = true;\n // Test if the ellipses item still fits, if not remove last (actually next in original order) item as well.\n if (currentWidth + ellipsesWidth > maxWidth) {\n reverseCounter++;\n }\n } else {\n currentWidth += currentItemWidth;\n reverseCounter--;\n }\n }\n });\n\n const start = this.showRootAsText() ? 0 : 1;\n let counter = start;\n // If breadcrumbShortened is not true yet, test for the rest of the items from the start\n // Whether they still fit, if not, set breadcrumbShortened to true.\n breadcrumbElementsList.slice(start, this.numberOfItems - numberOfItemsKeptAtEnd).map(item => {\n if (!this.breadcrumbShortened) {\n const currentItemWidth = item.nativeElement.offsetWidth;\n if (currentWidth + currentItemWidth > maxWidth) {\n this.breadcrumbShortened = true;\n // Test if the ellipses item still fits, if not remove last item as well.\n // If the counter is still on 1, instead remove last (actually next in original order) from\n // the previous reverse calculation\n if (currentWidth + ellipsesWidth > maxWidth) {\n if (counter > 1) {\n counter--;\n } else {\n reverseCounter++;\n }\n }\n } else {\n currentWidth += currentItemWidth;\n counter++;\n }\n }\n });\n // If breadcrumbShortened is true, move the items that do not fit to itemsHidden (breadcrumb dropdown items) and add ellipses item.\n if (this.breadcrumbShortened) {\n this.ellipsesLevel = counter;\n this.itemsHidden = this.itemsShown.slice(this.ellipsesLevel, reverseCounter);\n const ellipsesItem = { title: '...', level: this.ellipsesLevel, shortenedTitle: '' };\n this.itemsShown.splice(this.ellipsesLevel, reverseCounter - this.ellipsesLevel, ellipsesItem);\n }\n // Manually detect changes to prevent them from not being detected on language change\n this.changeDetector.detectChanges();\n }\n}\n","<nav role=\"navigation\" [attr.aria-label]=\"ariaLabel() | translate\">\n <ol #breadcrumb class=\"breadcrumb\" (siResizeObserver)=\"resetBreadcrumb()\">\n @for (item of itemsShown; track $index; let isFirst = $first) {\n @if (!breadcrumbShortened || item.level !== ellipsesLevel) {\n @if (item.shortened) {\n <li #breadcrumbItem class=\"item text-nowrap shortened\">\n @if (!isFirst) {\n <si-icon-next class=\"separator flip-rtl\" [icon]=\"icons.elementRight2\" />\n }\n <div class=\"breadcrumb-dropdown-wrapper\">\n <ng-container\n *ngTemplateOutlet=\"\n toggleTemplate;\n context: { item: item, title: item.shortenedTitle }\n \"\n />\n @if (addExpandDropdown) {\n <div\n class=\"dropdown-menu\"\n role=\"menu\"\n [id]=\"controlId + item.level\"\n [class.show]=\"breadcrumbDropdownOpen === item.level\"\n >\n <ng-container *ngTemplateOutlet=\"dropdownTemplate; context: { item: item }\" />\n </div>\n }\n </div>\n </li>\n }\n @if (!item.shortened) {\n <li #breadcrumbItem class=\"item\">\n @if (!isFirst) {\n <si-icon-next class=\"separator flip-rtl\" [icon]=\"icons.elementRight2\" />\n }\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { item: item }\" />\n </li>\n }\n }\n @if (breadcrumbShortened && item.level === ellipsesLevel) {\n <li class=\"item breadcrumb-ellipses-item\">\n @if (!isFirst) {\n <si-icon-next class=\"separator flip-rtl\" [icon]=\"icons.elementRight2\" />\n }\n <div class=\"breadcrumb-dropdown-wrapper\">\n <ng-container *ngTemplateOutlet=\"toggleTemplate; context: { item: item, title: '' }\" />\n <div\n class=\"dropdown-menu\"\n role=\"menu\"\n [id]=\"controlId + item.level\"\n [class.show]=\"breadcrumbDropdownOpen === item.level\"\n >\n @for (item of itemsHidden; track $index) {\n <ng-container *ngTemplateOutlet=\"dropdownTemplate; context: { item: item }\" />\n }\n </div>\n </div>\n </li>\n }\n }\n </ol>\n</nav>\n\n<ng-template #itemTemplate let-item=\"item\" siBreadcrumbItemTemplate>\n <a\n class=\"breadcrumb-link text-nowrap\"\n activeClass=\"active\"\n ariaCurrent=\"page\"\n [class.disable-router-link]=\"!item.link && !item.action && !item.href\"\n [class.text-secondary]=\"item.lastItem\"\n [siLink]=\"item\"\n [exactMatch]=\"true\"\n [attr.aria-label]=\"item.title\"\n [attr.aria-disabled]=\"!item.link && !item.href && !item.action\"\n >\n @if (item.level === 0) {\n <si-icon-next class=\"icon flip-rtl\" [icon]=\"icons.elementBreadcrumbRoot\" />\n }\n @if (item.level !== 0) {\n <span>{{ item.title }}</span>\n }\n </a>\n</ng-template>\n\n<ng-template #toggleTemplate let-item=\"item\" let-title=\"title\" siBreadcrumbItemTemplate>\n <div\n class=\"breadcrumb-dropdown-toggle link\"\n role=\"button\"\n aria-haspopup=\"true\"\n tabindex=\"0\"\n [attr.aria-controls]=\"controlId + item.level\"\n [attr.aria-expanded]=\"breadcrumbDropdownOpen === item.level\"\n (keydown.enter)=\"toggleBreadcrumbDropdown(item.level)\"\n (click)=\"toggleBreadcrumbDropdown(item.level)\"\n >{{ title }}...</div\n >\n</ng-template>\n\n<ng-template #dropdownTemplate let-item=\"item\" siBreadcrumbItemTemplate>\n <a\n class=\"dropdown-item breadcrumb-link focus-inside\"\n activeClass=\"active\"\n ariaCurrent=\"page\"\n role=\"menuitem\"\n [class.disable-router-link]=\"!item.link && !item.action && !item.href\"\n [siLink]=\"item\"\n [exactMatch]=\"true\"\n [attr.aria-disabled]=\"!item.link && !item.action && !item.href\"\n >{{ item.title }}</a\n >\n</ng-template>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiBreadcrumbComponent } from './si-breadcrumb.component';\n\n@NgModule({\n imports: [SiBreadcrumbComponent],\n exports: [SiBreadcrumbComponent]\n})\nexport class SiBreadcrumbModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './breadcrumb-item.model';\nexport * from './si-breadcrumb.component';\nexport * from './si-breadcrumb.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"siemens-element-ng-breadcrumb.mjs","sources":["../../../../projects/element-ng/breadcrumb/si-breadcrumb-item-template.directive.ts","../../../../projects/element-ng/breadcrumb/si-breadcrumb.component.ts","../../../../projects/element-ng/breadcrumb/si-breadcrumb.component.html","../../../../projects/element-ng/breadcrumb/si-breadcrumb.module.ts","../../../../projects/element-ng/breadcrumb/index.ts","../../../../projects/element-ng/breadcrumb/siemens-element-ng-breadcrumb.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Directive } from '@angular/core';\n\nimport { EnumeratedBreadcrumbItem } from './breadcrumb-item.model';\n\n@Directive({ selector: '[siBreadcrumbItemTemplate]' })\nexport class SiBreadcrumbItemTemplateDirective {\n static ngTemplateContextGuard(\n directive: SiBreadcrumbItemTemplateDirective,\n context: unknown\n ): context is { item: EnumeratedBreadcrumbItem; title?: string } {\n return true;\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n inject,\n input,\n OnChanges,\n OnDestroy,\n viewChild,\n viewChildren\n} from '@angular/core';\nimport {\n addIcons,\n elementBreadcrumbRoot,\n elementRight2,\n SiIconNextComponent\n} from '@siemens/element-ng/icon';\nimport { SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiResizeObserverDirective } from '@siemens/element-ng/resize-observer';\nimport {\n injectSiTranslateService,\n SiTranslatePipe,\n t\n} from '@siemens/element-translate-ng/translate';\nimport { merge, of, Subscription } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\n\nimport { BreadcrumbItem, EnumeratedBreadcrumbItem } from './breadcrumb-item.model';\nimport { SiBreadcrumbItemTemplateDirective } from './si-breadcrumb-item-template.directive';\n\n/**\n * Defines how many items should be displayed at the end of the breadcrumb if possible.\n */\nconst NUMBER_OF_SHOWN_ITEMS_AT_END = 2;\n\n/**\n * Defines how long a display item can be without it being shortened.\n * Cannot be lower than 4.\n * If this is 0, titles will not be shortened\n */\nconst ITEM_MAX_LENGTH = 30;\n\n/**\n * Defines how many characters of an item are always displayed in the beginning.\n * Must be at least 2 less than ITEM_MAX_LENGTH\n */\nconst ITEM_CHARACTERS_ALWAYS_DISPLAYED_IN_BEGINNING = 10;\n\n/**\n * Defines the width of the root icon in pixels.\n */\nconst ROOT_ICON_WIDTH = 24;\n\nlet controlIdCounter = 1;\n\n@Component({\n selector: 'si-breadcrumb',\n imports: [\n NgTemplateOutlet,\n SiIconNextComponent,\n SiLinkDirective,\n SiResizeObserverDirective,\n SiTranslatePipe,\n SiBreadcrumbItemTemplateDirective\n ],\n templateUrl: './si-breadcrumb.component.html',\n styleUrl: './si-breadcrumb.component.scss'\n})\nexport class SiBreadcrumbComponent implements OnChanges, OnDestroy {\n /** Array of breadcrumb items. */\n readonly items = input.required<BreadcrumbItem[]>();\n /**\n * Shows the \"root\" route as the provided title string instead of an icon.\n *\n * @defaultValue false\n */\n readonly showRootAsText = input(false, { transform: booleanAttribute });\n /**\n * Aria label for the main breadcrumb navigation. Needed for a11y.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_BREADCRUMB:Breadcrumbs`)\n * ```\n */\n readonly ariaLabel = input(t(() => $localize`:@@SI_BREADCRUMB:Breadcrumbs`));\n\n private translationSubscription?: Subscription;\n private itemsProcessed = false;\n private numberOfItems = 0;\n\n protected itemsShown: EnumeratedBreadcrumbItem[] = [];\n protected itemsHidden: EnumeratedBreadcrumbItem[] = [];\n protected breadcrumbShortened = false;\n protected ellipsesLevel = 0;\n // Record to allow for -1 (root).\n protected breadcrumbDropdownOpen: number | undefined = undefined;\n protected addExpandDropdown = false;\n protected controlId = `__si-breadcrumb-${controlIdCounter++}-`;\n protected readonly icons = addIcons({ elementBreadcrumbRoot, elementRight2 });\n\n private readonly breadcrumbElement = viewChild.required<ElementRef>('breadcrumb');\n private readonly breadcrumbElements = viewChildren<ElementRef>('breadcrumbItem');\n\n private changeDetector = inject(ChangeDetectorRef);\n private translate = injectSiTranslateService();\n\n ngOnChanges(): void {\n // Reprocess items on every change and on init\n this.processItems();\n }\n\n ngOnDestroy(): void {\n this.translationSubscription?.unsubscribe();\n }\n\n private processItems(): void {\n this.numberOfItems = this.items().length;\n\n this.translationSubscription?.unsubscribe();\n if (this.numberOfItems) {\n this.translationSubscription = merge(this.translate.translationChange, of(undefined))\n .pipe(switchMap(() => this.translate.translateAsync(this.items().map(item => item.title))))\n .subscribe(translatedTitles => {\n // Add the level to the items and check if they need to be shortened.\n // If they need to be shortened, shorten them at a convenient place.\n // Set the lastItem tag to true for the last item\n let counter = -1;\n const enumeratedItems = this.items().map(item => {\n counter++;\n const title = translatedTitles[item.title];\n let shortened = false;\n let shortenedTitle = title;\n // If this is not the last item and the title too long, shorten the title\n if (counter !== this.numberOfItems - 1 && title && title.length > ITEM_MAX_LENGTH) {\n shortened = true;\n // This regex gets the last space, dash or underscore.\n const regexMatch = title\n .slice(ITEM_CHARACTERS_ALWAYS_DISPLAYED_IN_BEGINNING, ITEM_MAX_LENGTH - 2)\n .match(/^.*[- _](?=.*?$)/);\n if (regexMatch) {\n shortenedTitle = title.slice(\n 0,\n ITEM_CHARACTERS_ALWAYS_DISPLAYED_IN_BEGINNING + regexMatch[0].length - 1\n );\n } else {\n shortenedTitle = title.slice(0, ITEM_MAX_LENGTH - 3);\n }\n }\n\n // If the root element should be displayed as text, set level not to 0.\n // This is used to distinguish in the template between icon and text.\n const level = counter === 0 && this.showRootAsText() ? -1 : counter;\n\n return {\n ...item,\n title,\n level,\n hide: false,\n shortened,\n shortenedTitle,\n lastItem: counter === this.numberOfItems - 1\n };\n });\n this.itemsShown = enumeratedItems;\n this.itemsHidden = [];\n this.breadcrumbShortened = false;\n this.breadcrumbDropdownOpen = undefined;\n this.itemsProcessed = true;\n this.resetBreadcrumb();\n });\n } else {\n this.itemsShown = [];\n this.itemsHidden = [];\n this.breadcrumbShortened = false;\n this.breadcrumbDropdownOpen = undefined;\n this.itemsProcessed = true;\n this.resetBreadcrumb();\n }\n }\n\n /*\n * Toggle dropdown (on click of ellipses), either for\n * the general dropdown list if itemLevel is at ellipsesLevel\n * or otherwise the name expansion at the specified item level.\n * Close any open dropdown before opening a new one.\n */\n protected toggleBreadcrumbDropdown(itemLevel: number): void {\n this.breadcrumbDropdownOpen = this.breadcrumbDropdownOpen === itemLevel ? undefined : itemLevel;\n }\n\n // Close dropdown on click anywhere else\n @HostListener('document:click', ['$event.target'])\n protected documentClick(targetElement: any): void {\n if (this.breadcrumbDropdownOpen) {\n if (!this.breadcrumbElement().nativeElement.contains(targetElement)) {\n // Close all dropdowns.\n this.breadcrumbDropdownOpen = undefined;\n }\n }\n }\n\n protected resetBreadcrumb(): void {\n if (this.itemsProcessed) {\n this.numberOfItems = this.items().length;\n // Add an additional the ellipses item to the end of the shownItems (breadcrumb items).\n // Disable addExpandDropdown for now, to make every item a proper SiBreadcrumbItemComponent.\n const ellipsesItem = { title: '...', level: this.numberOfItems, shortenedTitle: '' };\n this.itemsShown.push(ellipsesItem);\n if (this.breadcrumbShortened) {\n // If the breadcrumb was shortened before, remove the ellipses and add back itemsHidden (breadcrumb dropdown items).\n this.breadcrumbShortened = false;\n this.itemsShown.splice(this.ellipsesLevel, 1, ...this.itemsHidden);\n this.itemsHidden = [];\n }\n this.addExpandDropdown = false;\n // Wait for the next change detection cycle to measure the updated item length.\n this.changeDetector.detectChanges();\n this.calculateBreadcrumb();\n }\n }\n\n private calculateBreadcrumb(): void {\n this.addExpandDropdown = true;\n const maxWidth = this.breadcrumbElement().nativeElement.clientWidth;\n const breadcrumbElementsList = this.breadcrumbElements().map(item => item);\n // Measure the length of the last additional ellipses item, then remove it from itemsShown (breadcrumb items).\n const ellipsesWidth = breadcrumbElementsList[this.numberOfItems].nativeElement.offsetWidth;\n this.itemsShown.splice(this.numberOfItems, 1);\n let currentWidth = this.showRootAsText() ? 0 : ROOT_ICON_WIDTH;\n const numberOfItemsKeptAtEnd = Math.min(NUMBER_OF_SHOWN_ITEMS_AT_END, this.numberOfItems - 1);\n let reverseCounter = this.numberOfItems;\n // Test for numberOfItemsKeptAtEnd items from the end if they still fit, if not, set breadcrumbShortened to true.\n breadcrumbElementsList\n .slice(this.numberOfItems - numberOfItemsKeptAtEnd, this.numberOfItems)\n .reverse()\n .map(item => {\n if (!this.breadcrumbShortened) {\n const currentItemWidth = item.nativeElement.offsetWidth;\n if (currentWidth + currentItemWidth > maxWidth) {\n this.breadcrumbShortened = true;\n // Test if the ellipses item still fits, if not remove last (actually next in original order) item as well.\n if (currentWidth + ellipsesWidth > maxWidth) {\n reverseCounter++;\n }\n } else {\n currentWidth += currentItemWidth;\n reverseCounter--;\n }\n }\n });\n\n const start = this.showRootAsText() ? 0 : 1;\n let counter = start;\n // If breadcrumbShortened is not true yet, test for the rest of the items from the start\n // Whether they still fit, if not, set breadcrumbShortened to true.\n breadcrumbElementsList.slice(start, this.numberOfItems - numberOfItemsKeptAtEnd).map(item => {\n if (!this.breadcrumbShortened) {\n const currentItemWidth = item.nativeElement.offsetWidth;\n if (currentWidth + currentItemWidth > maxWidth) {\n this.breadcrumbShortened = true;\n // Test if the ellipses item still fits, if not remove last item as well.\n // If the counter is still on 1, instead remove last (actually next in original order) from\n // the previous reverse calculation\n if (currentWidth + ellipsesWidth > maxWidth) {\n if (counter > 1) {\n counter--;\n } else {\n reverseCounter++;\n }\n }\n } else {\n currentWidth += currentItemWidth;\n counter++;\n }\n }\n });\n // If breadcrumbShortened is true, move the items that do not fit to itemsHidden (breadcrumb dropdown items) and add ellipses item.\n if (this.breadcrumbShortened) {\n this.ellipsesLevel = counter;\n this.itemsHidden = this.itemsShown.slice(this.ellipsesLevel, reverseCounter);\n const ellipsesItem = { title: '...', level: this.ellipsesLevel, shortenedTitle: '' };\n this.itemsShown.splice(this.ellipsesLevel, reverseCounter - this.ellipsesLevel, ellipsesItem);\n }\n // Manually detect changes to prevent them from not being detected on language change\n this.changeDetector.detectChanges();\n }\n}\n","<nav role=\"navigation\" [attr.aria-label]=\"ariaLabel() | translate\">\n <ol #breadcrumb class=\"breadcrumb\" (siResizeObserver)=\"resetBreadcrumb()\">\n @for (item of itemsShown; track $index; let isFirst = $first) {\n @if (!breadcrumbShortened || item.level !== ellipsesLevel) {\n @if (item.shortened) {\n <li #breadcrumbItem class=\"item text-nowrap shortened\">\n @if (!isFirst) {\n <si-icon-next class=\"separator flip-rtl\" [icon]=\"icons.elementRight2\" />\n }\n <div class=\"breadcrumb-dropdown-wrapper\">\n <ng-container\n *ngTemplateOutlet=\"\n toggleTemplate;\n context: { item: item, title: item.shortenedTitle }\n \"\n />\n @if (addExpandDropdown) {\n <div\n class=\"dropdown-menu\"\n role=\"menu\"\n [id]=\"controlId + item.level\"\n [class.show]=\"breadcrumbDropdownOpen === item.level\"\n >\n <ng-container *ngTemplateOutlet=\"dropdownTemplate; context: { item: item }\" />\n </div>\n }\n </div>\n </li>\n }\n @if (!item.shortened) {\n <li #breadcrumbItem class=\"item\">\n @if (!isFirst) {\n <si-icon-next class=\"separator flip-rtl\" [icon]=\"icons.elementRight2\" />\n }\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { item: item }\" />\n </li>\n }\n }\n @if (breadcrumbShortened && item.level === ellipsesLevel) {\n <li class=\"item breadcrumb-ellipses-item\">\n @if (!isFirst) {\n <si-icon-next class=\"separator flip-rtl\" [icon]=\"icons.elementRight2\" />\n }\n <div class=\"breadcrumb-dropdown-wrapper\">\n <ng-container *ngTemplateOutlet=\"toggleTemplate; context: { item: item, title: '' }\" />\n <div\n class=\"dropdown-menu\"\n role=\"menu\"\n [id]=\"controlId + item.level\"\n [class.show]=\"breadcrumbDropdownOpen === item.level\"\n >\n @for (item of itemsHidden; track $index) {\n <ng-container *ngTemplateOutlet=\"dropdownTemplate; context: { item: item }\" />\n }\n </div>\n </div>\n </li>\n }\n }\n </ol>\n</nav>\n\n<ng-template #itemTemplate let-item=\"item\" siBreadcrumbItemTemplate>\n <a\n class=\"breadcrumb-link text-nowrap\"\n activeClass=\"active\"\n ariaCurrent=\"page\"\n [class.disable-router-link]=\"!item.link && !item.action && !item.href\"\n [class.text-secondary]=\"item.lastItem\"\n [siLink]=\"item\"\n [exactMatch]=\"true\"\n [attr.aria-label]=\"item.title\"\n [attr.aria-disabled]=\"!item.link && !item.href && !item.action\"\n >\n @if (item.level === 0) {\n <si-icon-next class=\"icon flip-rtl\" [icon]=\"icons.elementBreadcrumbRoot\" />\n }\n @if (item.level !== 0) {\n <span>{{ item.title }}</span>\n }\n </a>\n</ng-template>\n\n<ng-template #toggleTemplate let-item=\"item\" let-title=\"title\" siBreadcrumbItemTemplate>\n <div\n class=\"breadcrumb-dropdown-toggle link\"\n role=\"button\"\n aria-haspopup=\"true\"\n tabindex=\"0\"\n [attr.aria-controls]=\"controlId + item.level\"\n [attr.aria-expanded]=\"breadcrumbDropdownOpen === item.level\"\n (keydown.enter)=\"toggleBreadcrumbDropdown(item.level)\"\n (click)=\"toggleBreadcrumbDropdown(item.level)\"\n >{{ title }}...</div\n >\n</ng-template>\n\n<ng-template #dropdownTemplate let-item=\"item\" siBreadcrumbItemTemplate>\n <a\n class=\"dropdown-item breadcrumb-link focus-inside\"\n activeClass=\"active\"\n ariaCurrent=\"page\"\n role=\"menuitem\"\n [class.disable-router-link]=\"!item.link && !item.action && !item.href\"\n [siLink]=\"item\"\n [exactMatch]=\"true\"\n [attr.aria-disabled]=\"!item.link && !item.action && !item.href\"\n >{{ item.title }}</a\n >\n</ng-template>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiBreadcrumbComponent } from './si-breadcrumb.component';\n\n@NgModule({\n imports: [SiBreadcrumbComponent],\n exports: [SiBreadcrumbComponent]\n})\nexport class SiBreadcrumbModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './breadcrumb-item.model';\nexport * from './si-breadcrumb.component';\nexport * from './si-breadcrumb.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -78,10 +78,10 @@ class SiCardComponent {
|
|
|
78
78
|
* Returns `true` when primary or secondary actions are set.
|
|
79
79
|
*/
|
|
80
80
|
displayContentActionBar = computed(() => this.primaryActions()?.length > 0 || this.secondaryActions()?.length > 0);
|
|
81
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
82
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
81
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
82
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: SiCardComponent, isStandalone: true, selector: "si-card", inputs: { heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: false, transformFunction: null }, primaryActions: { classPropertyName: "primaryActions", publicName: "primaryActions", isSignal: true, isRequired: false, transformFunction: null }, secondaryActions: { classPropertyName: "secondaryActions", publicName: "secondaryActions", isSignal: true, isRequired: false, transformFunction: null }, actionParam: { classPropertyName: "actionParam", publicName: "actionParam", isSignal: true, isRequired: false, transformFunction: null }, actionBarViewType: { classPropertyName: "actionBarViewType", publicName: "actionBarViewType", isSignal: true, isRequired: false, transformFunction: null }, actionBarTitle: { classPropertyName: "actionBarTitle", publicName: "actionBarTitle", isSignal: true, isRequired: false, transformFunction: null }, imgSrc: { classPropertyName: "imgSrc", publicName: "imgSrc", isSignal: true, isRequired: false, transformFunction: null }, imgAlt: { classPropertyName: "imgAlt", publicName: "imgAlt", isSignal: true, isRequired: false, transformFunction: null }, imgDir: { classPropertyName: "imgDir", publicName: "imgDir", isSignal: true, isRequired: false, transformFunction: null }, imgObjectFit: { classPropertyName: "imgObjectFit", publicName: "imgObjectFit", isSignal: true, isRequired: false, transformFunction: null }, imgObjectPosition: { classPropertyName: "imgObjectPosition", publicName: "imgObjectPosition", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.card-horizontal": "classCardHorizontal()", "style.--si-card-img-object-fit": "imgObjectFit()", "style.--si-card-img-object-position": "imgObjectPosition()" }, classAttribute: "card" }, ngImport: i0, template: "@if (imgSrc()) {\n <img\n class=\"card-content-split\"\n [class.card-img-top]=\"imgDir() !== 'horizontal'\"\n [class.card-img-start]=\"imgDir() === 'horizontal'\"\n [attr.src]=\"imgSrc()\"\n [attr.alt]=\"imgAlt() | translate\"\n />\n}\n\n<div class=\"content-container\" [class.card-content-split]=\"imgSrc()\">\n @if (heading() || displayContentActionBar()) {\n <div class=\"card-header d-flex justify-content-between\">\n <ng-content #cardHeaderIcon select=\"[headerIcon]\" />\n @if (heading()) {\n <div class=\"text-truncate\">{{ heading() | translate }}</div>\n }\n\n <div class=\"cab d-flex ms-6 my-n4 me-n5\">\n @if (displayContentActionBar()) {\n <si-content-action-bar\n class=\"ms-auto\"\n [primaryActions]=\"primaryActions()\"\n [secondaryActions]=\"secondaryActions()\"\n [actionParam]=\"actionParam()\"\n [viewType]=\"actionBarViewType()\"\n [attr.title]=\"actionBarTitle() | translate\"\n />\n }\n </div>\n </div>\n }\n <ng-content #cardBody select=\"[body]\" />\n <ng-content #cardFooter select=\"[footer]\" />\n</div>\n", styles: [":host.card-horizontal{flex-direction:row}.text-truncate{flex:0 1 auto}.cab{flex:1 0 0;min-inline-size:40px}.card-img-top{block-size:50%;inline-size:auto;object-fit:var(--si-card-img-object-fit, scale-down);object-position:var(--si-card-img-object-position, center top)}.card-img-start{block-size:auto;inline-size:50%;object-fit:var(--si-card-img-object-fit, scale-down);object-position:var(--si-card-img-object-position, left center)}.card-content-split{flex:0 0 50%}.content-container{overflow:hidden;position:relative;display:flex;flex-direction:column;flex:1 1 auto;min-inline-size:0;word-wrap:break-word;border-radius:inherit}\n"], dependencies: [{ kind: "component", type: SiContentActionBarComponent, selector: "si-content-action-bar", inputs: ["primaryActions", "secondaryActions", "actionParam", "viewType", "toggleItemLabel", "preventIconsInDropdownMenus", "disabled"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }] });
|
|
83
83
|
}
|
|
84
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiCardComponent, decorators: [{
|
|
85
85
|
type: Component,
|
|
86
86
|
args: [{ selector: 'si-card', imports: [SiContentActionBarComponent, SiTranslatePipe], host: {
|
|
87
87
|
class: 'card',
|
|
@@ -96,11 +96,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImpor
|
|
|
96
96
|
* SPDX-License-Identifier: MIT
|
|
97
97
|
*/
|
|
98
98
|
class SiCardModule {
|
|
99
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
100
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
101
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
99
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiCardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
100
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: SiCardModule, imports: [SiCardComponent], exports: [SiCardComponent] });
|
|
101
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiCardModule, imports: [SiCardComponent] });
|
|
102
102
|
}
|
|
103
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
103
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiCardModule, decorators: [{
|
|
104
104
|
type: NgModule,
|
|
105
105
|
args: [{
|
|
106
106
|
imports: [SiCardComponent],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-card.mjs","sources":["../../../../projects/element-ng/card/si-card.component.ts","../../../../projects/element-ng/card/si-card.component.html","../../../../projects/element-ng/card/si-card.module.ts","../../../../projects/element-ng/card/index.ts","../../../../projects/element-ng/card/siemens-element-ng-card.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed, input } from '@angular/core';\nimport { MenuItem as MenuItemLegacy } from '@siemens/element-ng/common';\nimport {\n ContentActionBarMainItem,\n SiContentActionBarComponent,\n ViewType\n} from '@siemens/element-ng/content-action-bar';\nimport { MenuItem } from '@siemens/element-ng/menu';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\n@Component({\n selector: 'si-card',\n imports: [SiContentActionBarComponent, SiTranslatePipe],\n templateUrl: './si-card.component.html',\n styleUrl: './si-card.component.scss',\n host: {\n class: 'card',\n '[class.card-horizontal]': 'classCardHorizontal()',\n '[style.--si-card-img-object-fit]': 'imgObjectFit()',\n '[style.--si-card-img-object-position]': 'imgObjectPosition()'\n }\n})\nexport class SiCardComponent {\n /**\n * Card header text.\n */\n readonly heading = input<TranslatableString>();\n /**\n * Input list of primary action items. Supports up to **4** actions and omits additional ones.\n *\n * @defaultValue []\n */\n readonly primaryActions = input<(MenuItemLegacy | ContentActionBarMainItem)[]>([]);\n /**\n * Input list of secondary action items.\n *\n * @defaultValue []\n */\n readonly secondaryActions = input<(MenuItemLegacy | MenuItem)[]>([]);\n /**\n * A param that will be passed to the `action` in the primary/secondary actions.\n * This allows to re-use the same primary/secondary action arrays across rows\n * in a table.\n */\n readonly actionParam = input<any>();\n /**\n * The view type of the content action bar of the card. Default is `collapsible`\n * for dashboards. However, in some cases you might need to change to `expanded`\n * or `mobile`.\n *\n * @defaultValue 'collapsible'\n */\n readonly actionBarViewType = input<ViewType>('collapsible');\n /**\n * Optional setting of html title attribute for the content action bar.\n * Helpful for a11y when only one action is configured in expand mode.\n *\n * @defaultValue ''\n */\n readonly actionBarTitle = input<TranslatableString>('');\n /**\n * Image source for the card.\n */\n readonly imgSrc = input<string>();\n /**\n * Alt text for a provided image.\n */\n readonly imgAlt = input<string>();\n /**\n * Defines if an image is placed on top or start (left) of the card.\n *\n * @defaultValue 'vertical'\n */\n readonly imgDir = input<('horizontal' | 'vertical') | undefined>('vertical');\n /**\n * Sets the image [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit) CSS property,\n * Sets the image [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit) CSS property.\n *\n * @defaultValue 'scale-down'\n */\n readonly imgObjectFit = input<('contain' | 'cover' | 'fill' | 'none' | 'scale-down') | undefined>(\n 'scale-down'\n );\n /**\n * Sets the image [object-position](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position) CSS property.\n */\n readonly imgObjectPosition = input<string>();\n /**\n * In case the card uses an image and horizontal direction is used we set flex row direction.\n */\n protected readonly classCardHorizontal = computed(\n () => !!this.imgSrc() && this.imgDir() === 'horizontal'\n );\n /**\n * Returns `true` when primary or secondary actions are set.\n */\n readonly displayContentActionBar = computed(\n () => this.primaryActions()?.length > 0 || this.secondaryActions()?.length > 0\n );\n}\n","@if (imgSrc()) {\n <img\n class=\"card-content-split\"\n [class.card-img-top]=\"imgDir() !== 'horizontal'\"\n [class.card-img-start]=\"imgDir() === 'horizontal'\"\n [attr.src]=\"imgSrc()\"\n [attr.alt]=\"imgAlt() | translate\"\n />\n}\n\n<div class=\"content-container\" [class.card-content-split]=\"imgSrc()\">\n @if (heading() || displayContentActionBar()) {\n <div class=\"card-header d-flex justify-content-between\">\n <ng-content #cardHeaderIcon select=\"[headerIcon]\" />\n @if (heading()) {\n <div class=\"text-truncate\">{{ heading() | translate }}</div>\n }\n\n <div class=\"cab d-flex ms-6 my-n4 me-n5\">\n @if (displayContentActionBar()) {\n <si-content-action-bar\n class=\"ms-auto\"\n [primaryActions]=\"primaryActions()\"\n [secondaryActions]=\"secondaryActions()\"\n [actionParam]=\"actionParam()\"\n [viewType]=\"actionBarViewType()\"\n [attr.title]=\"actionBarTitle() | translate\"\n />\n }\n </div>\n </div>\n }\n <ng-content #cardBody select=\"[body]\" />\n <ng-content #cardFooter select=\"[footer]\" />\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiCardComponent } from './si-card.component';\n\n@NgModule({\n imports: [SiCardComponent],\n exports: [SiCardComponent]\n})\nexport class SiCardModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-card.component';\nexport * from './si-card.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAA;;;AAGG;MAuBU,eAAe,CAAA;AAC1B;;AAEG;IACM,OAAO,GAAG,KAAK,EAAsB;AAC9C;;;;AAIG;AACM,IAAA,cAAc,GAAG,KAAK,CAAgD,EAAE,CAAC;AAClF;;;;AAIG;AACM,IAAA,gBAAgB,GAAG,KAAK,CAAgC,EAAE,CAAC;AACpE;;;;AAIG;IACM,WAAW,GAAG,KAAK,EAAO;AACnC;;;;;;AAMG;AACM,IAAA,iBAAiB,GAAG,KAAK,CAAW,aAAa,CAAC;AAC3D;;;;;AAKG;AACM,IAAA,cAAc,GAAG,KAAK,CAAqB,EAAE,CAAC;AACvD;;AAEG;IACM,MAAM,GAAG,KAAK,EAAU;AACjC;;AAEG;IACM,MAAM,GAAG,KAAK,EAAU;AACjC;;;;AAIG;AACM,IAAA,MAAM,GAAG,KAAK,CAA0C,UAAU,CAAC;AAC5E;;;;;AAKG;AACM,IAAA,YAAY,GAAG,KAAK,CAC3B,YAAY,CACb;AACD;;AAEG;IACM,iBAAiB,GAAG,KAAK,EAAU;AAC5C;;AAEG;IACgB,mBAAmB,GAAG,QAAQ,CAC/C,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,YAAY,CACxD;AACD;;AAEG;IACM,uBAAuB,GAAG,QAAQ,CACzC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,MAAM,GAAG,CAAC,CAC/E;uGA5EU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,
|
|
1
|
+
{"version":3,"file":"siemens-element-ng-card.mjs","sources":["../../../../projects/element-ng/card/si-card.component.ts","../../../../projects/element-ng/card/si-card.component.html","../../../../projects/element-ng/card/si-card.module.ts","../../../../projects/element-ng/card/index.ts","../../../../projects/element-ng/card/siemens-element-ng-card.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed, input } from '@angular/core';\nimport { MenuItem as MenuItemLegacy } from '@siemens/element-ng/common';\nimport {\n ContentActionBarMainItem,\n SiContentActionBarComponent,\n ViewType\n} from '@siemens/element-ng/content-action-bar';\nimport { MenuItem } from '@siemens/element-ng/menu';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\n@Component({\n selector: 'si-card',\n imports: [SiContentActionBarComponent, SiTranslatePipe],\n templateUrl: './si-card.component.html',\n styleUrl: './si-card.component.scss',\n host: {\n class: 'card',\n '[class.card-horizontal]': 'classCardHorizontal()',\n '[style.--si-card-img-object-fit]': 'imgObjectFit()',\n '[style.--si-card-img-object-position]': 'imgObjectPosition()'\n }\n})\nexport class SiCardComponent {\n /**\n * Card header text.\n */\n readonly heading = input<TranslatableString>();\n /**\n * Input list of primary action items. Supports up to **4** actions and omits additional ones.\n *\n * @defaultValue []\n */\n readonly primaryActions = input<(MenuItemLegacy | ContentActionBarMainItem)[]>([]);\n /**\n * Input list of secondary action items.\n *\n * @defaultValue []\n */\n readonly secondaryActions = input<(MenuItemLegacy | MenuItem)[]>([]);\n /**\n * A param that will be passed to the `action` in the primary/secondary actions.\n * This allows to re-use the same primary/secondary action arrays across rows\n * in a table.\n */\n readonly actionParam = input<any>();\n /**\n * The view type of the content action bar of the card. Default is `collapsible`\n * for dashboards. However, in some cases you might need to change to `expanded`\n * or `mobile`.\n *\n * @defaultValue 'collapsible'\n */\n readonly actionBarViewType = input<ViewType>('collapsible');\n /**\n * Optional setting of html title attribute for the content action bar.\n * Helpful for a11y when only one action is configured in expand mode.\n *\n * @defaultValue ''\n */\n readonly actionBarTitle = input<TranslatableString>('');\n /**\n * Image source for the card.\n */\n readonly imgSrc = input<string>();\n /**\n * Alt text for a provided image.\n */\n readonly imgAlt = input<string>();\n /**\n * Defines if an image is placed on top or start (left) of the card.\n *\n * @defaultValue 'vertical'\n */\n readonly imgDir = input<('horizontal' | 'vertical') | undefined>('vertical');\n /**\n * Sets the image [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit) CSS property,\n * Sets the image [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit) CSS property.\n *\n * @defaultValue 'scale-down'\n */\n readonly imgObjectFit = input<('contain' | 'cover' | 'fill' | 'none' | 'scale-down') | undefined>(\n 'scale-down'\n );\n /**\n * Sets the image [object-position](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position) CSS property.\n */\n readonly imgObjectPosition = input<string>();\n /**\n * In case the card uses an image and horizontal direction is used we set flex row direction.\n */\n protected readonly classCardHorizontal = computed(\n () => !!this.imgSrc() && this.imgDir() === 'horizontal'\n );\n /**\n * Returns `true` when primary or secondary actions are set.\n */\n readonly displayContentActionBar = computed(\n () => this.primaryActions()?.length > 0 || this.secondaryActions()?.length > 0\n );\n}\n","@if (imgSrc()) {\n <img\n class=\"card-content-split\"\n [class.card-img-top]=\"imgDir() !== 'horizontal'\"\n [class.card-img-start]=\"imgDir() === 'horizontal'\"\n [attr.src]=\"imgSrc()\"\n [attr.alt]=\"imgAlt() | translate\"\n />\n}\n\n<div class=\"content-container\" [class.card-content-split]=\"imgSrc()\">\n @if (heading() || displayContentActionBar()) {\n <div class=\"card-header d-flex justify-content-between\">\n <ng-content #cardHeaderIcon select=\"[headerIcon]\" />\n @if (heading()) {\n <div class=\"text-truncate\">{{ heading() | translate }}</div>\n }\n\n <div class=\"cab d-flex ms-6 my-n4 me-n5\">\n @if (displayContentActionBar()) {\n <si-content-action-bar\n class=\"ms-auto\"\n [primaryActions]=\"primaryActions()\"\n [secondaryActions]=\"secondaryActions()\"\n [actionParam]=\"actionParam()\"\n [viewType]=\"actionBarViewType()\"\n [attr.title]=\"actionBarTitle() | translate\"\n />\n }\n </div>\n </div>\n }\n <ng-content #cardBody select=\"[body]\" />\n <ng-content #cardFooter select=\"[footer]\" />\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiCardComponent } from './si-card.component';\n\n@NgModule({\n imports: [SiCardComponent],\n exports: [SiCardComponent]\n})\nexport class SiCardModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-card.component';\nexport * from './si-card.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAA;;;AAGG;MAuBU,eAAe,CAAA;AAC1B;;AAEG;IACM,OAAO,GAAG,KAAK,EAAsB;AAC9C;;;;AAIG;AACM,IAAA,cAAc,GAAG,KAAK,CAAgD,EAAE,CAAC;AAClF;;;;AAIG;AACM,IAAA,gBAAgB,GAAG,KAAK,CAAgC,EAAE,CAAC;AACpE;;;;AAIG;IACM,WAAW,GAAG,KAAK,EAAO;AACnC;;;;;;AAMG;AACM,IAAA,iBAAiB,GAAG,KAAK,CAAW,aAAa,CAAC;AAC3D;;;;;AAKG;AACM,IAAA,cAAc,GAAG,KAAK,CAAqB,EAAE,CAAC;AACvD;;AAEG;IACM,MAAM,GAAG,KAAK,EAAU;AACjC;;AAEG;IACM,MAAM,GAAG,KAAK,EAAU;AACjC;;;;AAIG;AACM,IAAA,MAAM,GAAG,KAAK,CAA0C,UAAU,CAAC;AAC5E;;;;;AAKG;AACM,IAAA,YAAY,GAAG,KAAK,CAC3B,YAAY,CACb;AACD;;AAEG;IACM,iBAAiB,GAAG,KAAK,EAAU;AAC5C;;AAEG;IACgB,mBAAmB,GAAG,QAAQ,CAC/C,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,YAAY,CACxD;AACD;;AAEG;IACM,uBAAuB,GAAG,QAAQ,CACzC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,MAAM,GAAG,CAAC,CAC/E;uGA5EU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,gCAAA,EAAA,gBAAA,EAAA,qCAAA,EAAA,qBAAA,EAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1B5B,yqCAmCA,EAAA,MAAA,EAAA,CAAA,0nBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDnBY,2BAA2B,sMAAE,eAAe,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAU3C,eAAe,EAAA,UAAA,EAAA,CAAA;kBAZ3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,WACV,CAAC,2BAA2B,EAAE,eAAe,CAAC,EAAA,IAAA,EAGjD;AACJ,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,yBAAyB,EAAE,uBAAuB;AAClD,wBAAA,kCAAkC,EAAE,gBAAgB;AACpD,wBAAA,uCAAuC,EAAE;AAC1C,qBAAA,EAAA,QAAA,EAAA,yqCAAA,EAAA,MAAA,EAAA,CAAA,0nBAAA,CAAA,EAAA;;;AExBH;;;AAGG;MASU,YAAY,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAZ,YAAY,EAAA,OAAA,EAAA,CAHb,eAAe,CAAA,EAAA,OAAA,EAAA,CACf,eAAe,CAAA,EAAA,CAAA;AAEd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAHb,eAAe,CAAA,EAAA,CAAA;;2FAGd,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,eAAe,CAAC;oBAC1B,OAAO,EAAE,CAAC,eAAe;AAC1B,iBAAA;;;ACXD;;;AAGG;;ACHH;;AAEG;;;;"}
|
|
@@ -107,10 +107,10 @@ class SiCircleStatusComponent {
|
|
|
107
107
|
?.map(v => +v);
|
|
108
108
|
return !!rgb && Math.round((rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000) <= 128;
|
|
109
109
|
}
|
|
110
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
111
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
110
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiCircleStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
111
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: SiCircleStatusComponent, isStandalone: true, selector: "si-circle-status", inputs: { status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, eventOut: { classPropertyName: "eventOut", publicName: "eventOut", isSignal: true, isRequired: false, transformFunction: null }, eventIcon: { classPropertyName: "eventIcon", publicName: "eventIcon", isSignal: true, isRequired: false, transformFunction: null }, blink: { classPropertyName: "blink", publicName: "blink", isSignal: true, isRequired: false, transformFunction: null }, blinkPulse: { classPropertyName: "blinkPulse", publicName: "blinkPulse", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "bg", first: true, predicate: ["bg"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"status-indication d-flex align-items-center justify-content-center\"\n role=\"status\"\n [class.has-icon]=\"icon()\"\n [class.small]=\"size() === 'small'\"\n [attr.aria-label]=\"theAriaLabel() | translate\"\n>\n <div\n #bg\n class=\"bg\"\n [class.pulse]=\"blinkOn()\"\n [class.deprecated-color]=\"!status()\"\n [class.contrast-fix]=\"contrastFix()\"\n [ngClass]=\"backgroundClass()\"\n [style.background-color]=\"color()\"\n ></div>\n @if (!status()) {\n <div class=\"deprecated-dot\" [style.background-color]=\"color()\"></div>\n }\n @let iconConfig = statusIcon();\n @if (iconConfig) {\n <span class=\"status-icon icon-stack indicator\">\n <si-icon-next class=\"status-icon\" [ngClass]=\"iconConfig.color\" [icon]=\"iconConfig.icon\" />\n <si-icon-next\n class=\"status-icon\"\n [ngClass]=\"iconConfig.stackedColor\"\n [icon]=\"iconConfig.stacked\"\n />\n </span>\n }\n @let eventIconValue = eventIcon();\n @if (eventOut()) {\n <si-icon-next class=\"icon text-body event-out flip-rtl\" [icon]=\"icons.elementRight4\" />\n } @else if (eventIconValue) {\n <si-icon-next class=\"icon text-body event-out\" [icon]=\"eventIconValue\" />\n }\n @let iconValue = icon();\n @if (iconValue) {\n <si-icon-next class=\"icon position-relative text-body\" [icon]=\"iconValue\" />\n }\n</div>\n", styles: [":host{display:inline-block;vertical-align:middle}:host .status-indication ::ng-deep .status-icon{font-size:24px}:host .status-indication.has-icon.small ::ng-deep .status-icon,:host .status-indication.has-icon.small ::ng-deep .event-out{font-size:16px}.deprecated-dot{inline-size:10px;block-size:10px;border-radius:50%}.event-out{position:absolute;inset-block-end:-2px;inset-inline-end:-13px}.status-indication{position:relative;inline-size:40px;block-size:40px;border-radius:50%;border:1px solid transparent}.status-indication.has-icon{border-color:var(--element-ui-4);background-color:var(--element-base-1);margin-block:6px;margin-inline:0 12px}.status-indication.has-icon .deprecated-dot,.status-indication.has-icon .indicator{position:absolute}.status-indication.has-icon .deprecated-dot{inset-block-start:-2px;inset-inline-end:0}.status-indication.has-icon .indicator{inset-block-start:-9px;inset-inline-end:-13px}.status-indication.has-icon.small{inline-size:32px;block-size:32px;margin-block:4px;margin-inline:0 8px}.status-indication.has-icon.small .event-out{inset-block-end:1px;inset-inline-end:-9px}.status-indication.has-icon.small .deprecated-dot{inline-size:8px;block-size:8px;inset-block-start:-1px;inset-inline-end:-1px}.status-indication.has-icon.small .indicator{inset-block-start:-6px;inset-inline-end:-8px}.status-indication>*{pointer-events:none;line-height:0}.bg{position:absolute;inset:0;border-radius:50%;transition:opacity calc(.5s * var(--element-animations-enabled, 1));opacity:0}.pulse.deprecated-color{opacity:.5}.pulse.deprecated-color.contrast-fix{opacity:.25}.pulse:not(.deprecated-color){opacity:1}\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 });
|
|
112
112
|
}
|
|
113
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
113
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiCircleStatusComponent, decorators: [{
|
|
114
114
|
type: Component,
|
|
115
115
|
args: [{ selector: 'si-circle-status', imports: [NgClass, SiIconNextComponent, SiTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"status-indication d-flex align-items-center justify-content-center\"\n role=\"status\"\n [class.has-icon]=\"icon()\"\n [class.small]=\"size() === 'small'\"\n [attr.aria-label]=\"theAriaLabel() | translate\"\n>\n <div\n #bg\n class=\"bg\"\n [class.pulse]=\"blinkOn()\"\n [class.deprecated-color]=\"!status()\"\n [class.contrast-fix]=\"contrastFix()\"\n [ngClass]=\"backgroundClass()\"\n [style.background-color]=\"color()\"\n ></div>\n @if (!status()) {\n <div class=\"deprecated-dot\" [style.background-color]=\"color()\"></div>\n }\n @let iconConfig = statusIcon();\n @if (iconConfig) {\n <span class=\"status-icon icon-stack indicator\">\n <si-icon-next class=\"status-icon\" [ngClass]=\"iconConfig.color\" [icon]=\"iconConfig.icon\" />\n <si-icon-next\n class=\"status-icon\"\n [ngClass]=\"iconConfig.stackedColor\"\n [icon]=\"iconConfig.stacked\"\n />\n </span>\n }\n @let eventIconValue = eventIcon();\n @if (eventOut()) {\n <si-icon-next class=\"icon text-body event-out flip-rtl\" [icon]=\"icons.elementRight4\" />\n } @else if (eventIconValue) {\n <si-icon-next class=\"icon text-body event-out\" [icon]=\"eventIconValue\" />\n }\n @let iconValue = icon();\n @if (iconValue) {\n <si-icon-next class=\"icon position-relative text-body\" [icon]=\"iconValue\" />\n }\n</div>\n", styles: [":host{display:inline-block;vertical-align:middle}:host .status-indication ::ng-deep .status-icon{font-size:24px}:host .status-indication.has-icon.small ::ng-deep .status-icon,:host .status-indication.has-icon.small ::ng-deep .event-out{font-size:16px}.deprecated-dot{inline-size:10px;block-size:10px;border-radius:50%}.event-out{position:absolute;inset-block-end:-2px;inset-inline-end:-13px}.status-indication{position:relative;inline-size:40px;block-size:40px;border-radius:50%;border:1px solid transparent}.status-indication.has-icon{border-color:var(--element-ui-4);background-color:var(--element-base-1);margin-block:6px;margin-inline:0 12px}.status-indication.has-icon .deprecated-dot,.status-indication.has-icon .indicator{position:absolute}.status-indication.has-icon .deprecated-dot{inset-block-start:-2px;inset-inline-end:0}.status-indication.has-icon .indicator{inset-block-start:-9px;inset-inline-end:-13px}.status-indication.has-icon.small{inline-size:32px;block-size:32px;margin-block:4px;margin-inline:0 8px}.status-indication.has-icon.small .event-out{inset-block-end:1px;inset-inline-end:-9px}.status-indication.has-icon.small .deprecated-dot{inline-size:8px;block-size:8px;inset-block-start:-1px;inset-inline-end:-1px}.status-indication.has-icon.small .indicator{inset-block-start:-6px;inset-inline-end:-8px}.status-indication>*{pointer-events:none;line-height:0}.bg{position:absolute;inset:0;border-radius:50%;transition:opacity calc(.5s * var(--element-animations-enabled, 1));opacity:0}.pulse.deprecated-color{opacity:.5}.pulse.deprecated-color.contrast-fix{opacity:.25}.pulse:not(.deprecated-color){opacity:1}\n"] }]
|
|
116
116
|
}] });
|
|
@@ -120,11 +120,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImpor
|
|
|
120
120
|
* SPDX-License-Identifier: MIT
|
|
121
121
|
*/
|
|
122
122
|
class SiCircleStatusModule {
|
|
123
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
124
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
125
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
123
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiCircleStatusModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
124
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: SiCircleStatusModule, imports: [SiCircleStatusComponent], exports: [SiCircleStatusComponent] });
|
|
125
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiCircleStatusModule, imports: [SiCircleStatusComponent] });
|
|
126
126
|
}
|
|
127
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
127
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiCircleStatusModule, decorators: [{
|
|
128
128
|
type: NgModule,
|
|
129
129
|
args: [{
|
|
130
130
|
imports: [SiCircleStatusComponent],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-circle-status.mjs","sources":["../../../../projects/element-ng/circle-status/si-circle-status.component.ts","../../../../projects/element-ng/circle-status/si-circle-status.component.html","../../../../projects/element-ng/circle-status/si-circle-status.module.ts","../../../../projects/element-ng/circle-status/index.ts","../../../../projects/element-ng/circle-status/siemens-element-ng-circle-status.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgClass } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n OnChanges,\n OnDestroy,\n signal,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { BlinkService, EntityStatusType, StatusIcon } from '@siemens/element-ng/common';\nimport {\n addIcons,\n elementRight4,\n SiIconNextComponent,\n STATUS_ICON_CONFIG\n} from '@siemens/element-ng/icon';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\nimport { Observable, Subscription } from 'rxjs';\n\n@Component({\n selector: 'si-circle-status',\n imports: [NgClass, SiIconNextComponent, SiTranslatePipe],\n templateUrl: './si-circle-status.component.html',\n styleUrl: './si-circle-status.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiCircleStatusComponent implements OnChanges, OnDestroy {\n private readonly statusIcons = inject(STATUS_ICON_CONFIG);\n /**\n * The status (success, info, warning, danger) to be visualized.\n */\n readonly status = input<EntityStatusType>();\n\n /* DO NOT REMOVE: Even though the input is marked as deprecated, the core-team decided not to remove the\n input. The possibility to have custom color is often requested by projects, so we keep it.\n however in order to discourage it's use, we keep it marked deprecated.\n */\n /**\n * A custom color (e.g. `#fefefe`) for exceptional cases.\n * @deprecated use the semantic `status` input instead.\n */\n readonly color = input<string>();\n\n /**\n * Set a domain type icon (e.g. `element-door`) for which the status shall be shown.\n * Leave undefined for visualizing the status without an icon.\n */\n readonly icon = input<string>();\n\n /**\n * Set the size using either regular or small only works when used together with `icon`\n *\n * @defaultValue 'regular'\n */\n readonly size = input<'regular' | 'small'>('regular');\n\n /**\n * event direction is out\n *\n * @defaultValue false\n */\n readonly eventOut = input(false, { transform: booleanAttribute });\n\n /**\n * Custom icon class for event out\n */\n readonly eventIcon = input<string>();\n\n /**\n * Whether the status should appear with a pulsing circle around the badge.\n *\n * @defaultValue false\n */\n readonly blink = input(false, { transform: booleanAttribute });\n\n /**\n * Blink pulse generator for synchronized blinking with other components\n */\n readonly blinkPulse = input<Observable<boolean>>();\n\n /**\n * Aria label for icon and status combo. Needed for a11y\n */\n readonly ariaLabel = input<string>();\n\n protected readonly backgroundClass = computed(() => this.statusIcon()?.background ?? '');\n protected readonly theAriaLabel = computed(() => this.ariaLabel() ?? this.autoLabel());\n protected readonly autoLabel = computed(() => {\n const status = this.status();\n const statusName = status && this.statusIcons[status] ? status : 'none';\n const direction = this.eventOut() ? ' out' : '';\n const iconName = this.icon()?.replace(/^element-{0,1}/, '') ?? '';\n return `${iconName.toLocaleLowerCase()}${\n this.status() && this.icon() ? ' in ' : ''\n }status ${statusName}${direction}`;\n });\n protected readonly statusIcon = computed<StatusIcon | undefined>(() => {\n const status = this.status();\n return status ? this.statusIcons[status] : undefined;\n });\n protected readonly blinkOn = signal(false);\n protected readonly contrastFix = signal(false);\n protected readonly icons = addIcons({ elementRight4 });\n private blinkSubs?: Subscription;\n\n private readonly bg = viewChild.required<ElementRef>('bg');\n\n private blinkService = inject(BlinkService);\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.blinkService && changes.blink) {\n this.blinkSubs?.unsubscribe();\n\n if (this.blink()) {\n const pulse = this.blinkPulse() ?? this.blinkService.pulse$;\n this.blinkSubs = pulse.subscribe(onOff => {\n this.blinkOn.set(onOff);\n });\n } else {\n this.blinkOn.set(false);\n }\n }\n if (changes.color || changes.blink) {\n queueMicrotask(() => {\n this.contrastFix.set(!!this.color() && this.blink() && this.calculateContrastFix());\n });\n }\n }\n\n ngOnDestroy(): void {\n this.blinkSubs?.unsubscribe();\n }\n\n private calculateContrastFix(): boolean {\n // see https://www.w3.org/TR/AERT/#color-contrast\n const rgb = getComputedStyle(this.bg().nativeElement)\n .backgroundColor?.match(/\\d+/g)\n ?.map(v => +v);\n return !!rgb && Math.round((rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000) <= 128;\n }\n}\n","<div\n class=\"status-indication d-flex align-items-center justify-content-center\"\n role=\"status\"\n [class.has-icon]=\"icon()\"\n [class.small]=\"size() === 'small'\"\n [attr.aria-label]=\"theAriaLabel() | translate\"\n>\n <div\n #bg\n class=\"bg\"\n [class.pulse]=\"blinkOn()\"\n [class.deprecated-color]=\"!status()\"\n [class.contrast-fix]=\"contrastFix()\"\n [ngClass]=\"backgroundClass()\"\n [style.background-color]=\"color()\"\n ></div>\n @if (!status()) {\n <div class=\"deprecated-dot\" [style.background-color]=\"color()\"></div>\n }\n @let iconConfig = statusIcon();\n @if (iconConfig) {\n <span class=\"status-icon icon-stack indicator\">\n <si-icon-next class=\"status-icon\" [ngClass]=\"iconConfig.color\" [icon]=\"iconConfig.icon\" />\n <si-icon-next\n class=\"status-icon\"\n [ngClass]=\"iconConfig.stackedColor\"\n [icon]=\"iconConfig.stacked\"\n />\n </span>\n }\n @let eventIconValue = eventIcon();\n @if (eventOut()) {\n <si-icon-next class=\"icon text-body event-out flip-rtl\" [icon]=\"icons.elementRight4\" />\n } @else if (eventIconValue) {\n <si-icon-next class=\"icon text-body event-out\" [icon]=\"eventIconValue\" />\n }\n @let iconValue = icon();\n @if (iconValue) {\n <si-icon-next class=\"icon position-relative text-body\" [icon]=\"iconValue\" />\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiCircleStatusComponent } from './si-circle-status.component';\n\n@NgModule({\n imports: [SiCircleStatusComponent],\n exports: [SiCircleStatusComponent]\n})\nexport class SiCircleStatusModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-circle-status.component';\nexport * from './si-circle-status.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"siemens-element-ng-circle-status.mjs","sources":["../../../../projects/element-ng/circle-status/si-circle-status.component.ts","../../../../projects/element-ng/circle-status/si-circle-status.component.html","../../../../projects/element-ng/circle-status/si-circle-status.module.ts","../../../../projects/element-ng/circle-status/index.ts","../../../../projects/element-ng/circle-status/siemens-element-ng-circle-status.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgClass } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n OnChanges,\n OnDestroy,\n signal,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { BlinkService, EntityStatusType, StatusIcon } from '@siemens/element-ng/common';\nimport {\n addIcons,\n elementRight4,\n SiIconNextComponent,\n STATUS_ICON_CONFIG\n} from '@siemens/element-ng/icon';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\nimport { Observable, Subscription } from 'rxjs';\n\n@Component({\n selector: 'si-circle-status',\n imports: [NgClass, SiIconNextComponent, SiTranslatePipe],\n templateUrl: './si-circle-status.component.html',\n styleUrl: './si-circle-status.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiCircleStatusComponent implements OnChanges, OnDestroy {\n private readonly statusIcons = inject(STATUS_ICON_CONFIG);\n /**\n * The status (success, info, warning, danger) to be visualized.\n */\n readonly status = input<EntityStatusType>();\n\n /* DO NOT REMOVE: Even though the input is marked as deprecated, the core-team decided not to remove the\n input. The possibility to have custom color is often requested by projects, so we keep it.\n however in order to discourage it's use, we keep it marked deprecated.\n */\n /**\n * A custom color (e.g. `#fefefe`) for exceptional cases.\n * @deprecated use the semantic `status` input instead.\n */\n readonly color = input<string>();\n\n /**\n * Set a domain type icon (e.g. `element-door`) for which the status shall be shown.\n * Leave undefined for visualizing the status without an icon.\n */\n readonly icon = input<string>();\n\n /**\n * Set the size using either regular or small only works when used together with `icon`\n *\n * @defaultValue 'regular'\n */\n readonly size = input<'regular' | 'small'>('regular');\n\n /**\n * event direction is out\n *\n * @defaultValue false\n */\n readonly eventOut = input(false, { transform: booleanAttribute });\n\n /**\n * Custom icon class for event out\n */\n readonly eventIcon = input<string>();\n\n /**\n * Whether the status should appear with a pulsing circle around the badge.\n *\n * @defaultValue false\n */\n readonly blink = input(false, { transform: booleanAttribute });\n\n /**\n * Blink pulse generator for synchronized blinking with other components\n */\n readonly blinkPulse = input<Observable<boolean>>();\n\n /**\n * Aria label for icon and status combo. Needed for a11y\n */\n readonly ariaLabel = input<string>();\n\n protected readonly backgroundClass = computed(() => this.statusIcon()?.background ?? '');\n protected readonly theAriaLabel = computed(() => this.ariaLabel() ?? this.autoLabel());\n protected readonly autoLabel = computed(() => {\n const status = this.status();\n const statusName = status && this.statusIcons[status] ? status : 'none';\n const direction = this.eventOut() ? ' out' : '';\n const iconName = this.icon()?.replace(/^element-{0,1}/, '') ?? '';\n return `${iconName.toLocaleLowerCase()}${\n this.status() && this.icon() ? ' in ' : ''\n }status ${statusName}${direction}`;\n });\n protected readonly statusIcon = computed<StatusIcon | undefined>(() => {\n const status = this.status();\n return status ? this.statusIcons[status] : undefined;\n });\n protected readonly blinkOn = signal(false);\n protected readonly contrastFix = signal(false);\n protected readonly icons = addIcons({ elementRight4 });\n private blinkSubs?: Subscription;\n\n private readonly bg = viewChild.required<ElementRef>('bg');\n\n private blinkService = inject(BlinkService);\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.blinkService && changes.blink) {\n this.blinkSubs?.unsubscribe();\n\n if (this.blink()) {\n const pulse = this.blinkPulse() ?? this.blinkService.pulse$;\n this.blinkSubs = pulse.subscribe(onOff => {\n this.blinkOn.set(onOff);\n });\n } else {\n this.blinkOn.set(false);\n }\n }\n if (changes.color || changes.blink) {\n queueMicrotask(() => {\n this.contrastFix.set(!!this.color() && this.blink() && this.calculateContrastFix());\n });\n }\n }\n\n ngOnDestroy(): void {\n this.blinkSubs?.unsubscribe();\n }\n\n private calculateContrastFix(): boolean {\n // see https://www.w3.org/TR/AERT/#color-contrast\n const rgb = getComputedStyle(this.bg().nativeElement)\n .backgroundColor?.match(/\\d+/g)\n ?.map(v => +v);\n return !!rgb && Math.round((rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000) <= 128;\n }\n}\n","<div\n class=\"status-indication d-flex align-items-center justify-content-center\"\n role=\"status\"\n [class.has-icon]=\"icon()\"\n [class.small]=\"size() === 'small'\"\n [attr.aria-label]=\"theAriaLabel() | translate\"\n>\n <div\n #bg\n class=\"bg\"\n [class.pulse]=\"blinkOn()\"\n [class.deprecated-color]=\"!status()\"\n [class.contrast-fix]=\"contrastFix()\"\n [ngClass]=\"backgroundClass()\"\n [style.background-color]=\"color()\"\n ></div>\n @if (!status()) {\n <div class=\"deprecated-dot\" [style.background-color]=\"color()\"></div>\n }\n @let iconConfig = statusIcon();\n @if (iconConfig) {\n <span class=\"status-icon icon-stack indicator\">\n <si-icon-next class=\"status-icon\" [ngClass]=\"iconConfig.color\" [icon]=\"iconConfig.icon\" />\n <si-icon-next\n class=\"status-icon\"\n [ngClass]=\"iconConfig.stackedColor\"\n [icon]=\"iconConfig.stacked\"\n />\n </span>\n }\n @let eventIconValue = eventIcon();\n @if (eventOut()) {\n <si-icon-next class=\"icon text-body event-out flip-rtl\" [icon]=\"icons.elementRight4\" />\n } @else if (eventIconValue) {\n <si-icon-next class=\"icon text-body event-out\" [icon]=\"eventIconValue\" />\n }\n @let iconValue = icon();\n @if (iconValue) {\n <si-icon-next class=\"icon position-relative text-body\" [icon]=\"iconValue\" />\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiCircleStatusComponent } from './si-circle-status.component';\n\n@NgModule({\n imports: [SiCircleStatusComponent],\n exports: [SiCircleStatusComponent]\n})\nexport class SiCircleStatusModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-circle-status.component';\nexport * from './si-circle-status.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|