@siemens/element-ng 51.0.1 → 51.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/siemens-element-ng-about.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-accordion.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-action-modal.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-ag-grid.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-auto-collapsable-list.mjs +7 -5
- package/fesm2022/siemens-element-ng-auto-collapsable-list.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-autocomplete.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-avatar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-badge.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-breadcrumb-router.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-card.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-carousel.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-chat-messages.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-circle-status.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-color-picker.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-column-selection-dialog.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-common.mjs +13 -17
- package/fesm2022/siemens-element-ng-common.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-connection-strength.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-content-action-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-copyright-notice.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-dashboard.mjs +15 -1
- package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-datatable.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-electron-titlebar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-empty-state.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filter-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filtered-search.mjs +1 -2
- package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-footer.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-form.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-formly-legacy.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-formly.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-header-dropdown.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-help-button.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-icon.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-info-page.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-inline-notification.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-ip-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-landing-page.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-language-switcher.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-link.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-list-details.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-loading-spinner.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-localization.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-main-detail-container.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-maplibre.mjs +2 -2
- package/fesm2022/siemens-element-ng-maplibre.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-markdown-directives-tabs.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-markdown-extensions-citations.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-markdown-extensions-katex.mjs +2 -2
- package/fesm2022/siemens-element-ng-markdown-extensions-katex.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-markdown-extensions-mermaid.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-markdown-hightlighter-highlightjs.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-markdown.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-menu.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-modal.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs +176 -33
- package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-notification-item.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-number-input.mjs +0 -1
- package/fesm2022/siemens-element-ng-number-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-pagination.mjs +2 -2
- package/fesm2022/siemens-element-ng-pagination.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-password-strength.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-password-toggle.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-phone-number.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-photo-upload.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-pills-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-popover-legacy.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-progressbar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-resize-observer.mjs +5 -5
- package/fesm2022/siemens-element-ng-resize-observer.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-search-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-select.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-shadow-root.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-skip-links.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-slider.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-source-chip.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-split.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-status-counter.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-status-toggle.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-summary-chip.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-summary-widget.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-system-banner.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tabs-legacy.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tabs.mjs +7 -5
- package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-theme.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-threshold.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-toast-notification.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -1
- 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.map +1 -1
- package/fesm2022/siemens-element-ng-typeahead.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-wizard.mjs.map +1 -1
- package/fesm2022/siemens-element-ng.mjs.map +1 -1
- package/maplibre/styles/maplibre-gl.scss +8 -2
- package/package.json +4 -4
- package/schematics/utils/index.js +0 -1
- package/template-i18n.json +3 -2
- package/types/siemens-element-ng-auto-collapsable-list.d.ts +2 -1
- package/types/siemens-element-ng-dashboard.d.ts +2 -0
- package/types/siemens-element-ng-navbar-vertical-next.d.ts +48 -1
- package/types/siemens-element-ng-tabs.d.ts +1 -0
- package/types/siemens-element-ng-translate.d.ts +1 -0
- package/schematics/migrations/data/migration-test-data.js +0 -304
- package/schematics/utils/testing.js +0 -54
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-theme.mjs","sources":["../../../../projects/element-ng/theme/si-theme-store.ts","../../../../projects/element-ng/theme/si-theme.model.ts","../../../../projects/element-ng/theme/si-theme.service.ts","../../../../projects/element-ng/theme/si-theme-signals.ts","../../../../projects/element-ng/theme/index.ts","../../../../projects/element-ng/theme/siemens-element-ng-theme.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Observable, of } from 'rxjs';\n\nimport { Theme } from './si-theme.model';\n\n/**\n * SiThemeStore object is used by the theme service to load and\n * store the themes. You can inject your own implementation to provide\n * a backend implementation. Otherwise a localStorage based implementation\n * is used.\n */\nexport abstract class SiThemeStore {\n /**\n * Load and return an alternative custom theme, other then\n * the default element theme. This method is invoked initially\n * to check for an alternative custom theme.\n * @returns The active theme to be used, or undefined if the\n * default element theme shall be used. All wrapped in an observable\n * that can also emit errors.\n */\n abstract loadActiveTheme(): Observable<Theme | undefined>;\n /**\n * Sets the theme with the given name to active.\n * @param name - The name of the theme to become active.\n * @returns True on success, otherwise false.\n */\n abstract activateTheme(name: string): Observable<boolean>;\n /**\n * Deactivate any active theme and makes the element theme the default one.\n * @returns True on success, otherwise false.\n */\n abstract deactivateTheme(): Observable<boolean>;\n /**\n * Load and return the available theme names.\n * @returns An `Observable` of available theme names, other than the\n * default element theme.\n */\n abstract loadThemeNames(): Observable<string[]>;\n /**\n * Load theme with the given `name`.\n * @param name - The name of the theme to be returned.\n * @returns Observable with the named theme or `undefined` if no such theme exist.\n */\n abstract loadTheme(name: string): Observable<Theme | undefined>;\n /**\n * Saves a theme to the store. The name shall not be empty. A theme with\n * identical name gets overwritten.\n * @param theme - The theme to be saved.\n * @returns True on success, otherwise false. All nicely wrapped in\n * an observable that may also emit errors.\n */\n abstract saveTheme(theme: Theme): Observable<boolean>;\n /**\n * Deletes the theme with the given name from the store.\n * @param name - The name of the theme to be deleted.\n * @returns True on success, otherwise false. All nicely wrapped in\n * an observable that may also emit errors. Returns false,\n * if the theme does not exist.\n */\n abstract deleteTheme(name: string): Observable<boolean>;\n}\n\nexport const SI_THEME_LOCAL_STORAGE_KEY = 'si-themes';\n\nexport interface ThemeStorage {\n activeTheme: string | undefined;\n themes: { [key: string]: Theme };\n}\n\nexport class SiDefaultThemeStore extends SiThemeStore {\n private isBrowser: boolean;\n\n constructor(isBrowser: boolean) {\n super();\n this.isBrowser = isBrowser;\n }\n\n loadActiveTheme(): Observable<Theme | undefined> {\n if (!this.isBrowser) {\n return of(undefined);\n }\n\n const store = this.loadStore();\n if (store.activeTheme) {\n return of(store.themes[store.activeTheme]);\n } else {\n return of(undefined);\n }\n }\n\n activateTheme(name: string): Observable<boolean> {\n if (!this.isBrowser) {\n return of(false);\n }\n\n const store = this.loadStore();\n if (store.themes[name]) {\n store.activeTheme = name;\n this.saveStore(store);\n return of(true);\n } else {\n return of(false);\n }\n }\n\n deactivateTheme(): Observable<boolean> {\n if (!this.isBrowser) {\n return of(false);\n }\n\n const store = this.loadStore();\n store.activeTheme = undefined;\n this.saveStore(store);\n return of(true);\n }\n\n loadThemeNames(): Observable<string[]> {\n if (!this.isBrowser) {\n return of([]);\n }\n const store = this.loadStore();\n return of(Array.from(Object.keys(store.themes)));\n }\n\n saveTheme(theme: Theme): Observable<boolean> {\n if (!this.isBrowser) {\n return of(false);\n }\n\n const store = this.loadStore();\n store.themes[theme.name] = theme;\n this.saveStore(store);\n return of(true);\n }\n\n loadTheme(name: string): Observable<Theme | undefined> {\n if (!this.isBrowser) {\n return of(undefined);\n }\n const store = this.loadStore();\n return of(store.themes[name]);\n }\n\n deleteTheme(name: string): Observable<boolean> {\n if (!this.isBrowser) {\n return of(false);\n }\n\n const store = this.loadStore();\n delete store.themes[name];\n if (store.activeTheme === name) {\n store.activeTheme = undefined;\n }\n this.saveStore(store);\n return of(true);\n }\n\n private loadStore(): ThemeStorage {\n const storeStr = localStorage.getItem(SI_THEME_LOCAL_STORAGE_KEY);\n if (storeStr) {\n return JSON.parse(storeStr) as ThemeStorage;\n } else {\n return { activeTheme: undefined, themes: {} };\n }\n }\n\n private saveStore(store: ThemeStorage): void {\n localStorage.setItem(SI_THEME_LOCAL_STORAGE_KEY, JSON.stringify(store));\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n/** */\nexport interface ThemeDescription {\n name: string;\n groups: ThemePropertyGroup[];\n}\n\nexport interface ThemePropertyGroup {\n name: string;\n description?: string;\n properties: ThemeProperty[];\n}\n\nexport interface ThemeProperty {\n name: string;\n usage: string;\n type: ThemePropertyType;\n}\n\nexport type ThemePropertyType = 'color' | 'gradient' | 'font' | 'url' | 'text' | 'number';\n\nexport interface Theme {\n name: string;\n schemes: ThemeColorSchemes;\n /**\n * A map of icons that overrides the default Element icons.\n * The key must be the key of the original icon that should be overridden.\n * The value has to be a data SVG string.\n *\n * @example\n * ```ts\n * {\n * elementUser: \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'>...</svg>\"\n * }\n * ```\n *\n * @experimental\n */\n icons?: Record<string, string>;\n}\n\nexport interface ThemeColorSchemes {\n light?: ThemeColorScheme;\n dark?: ThemeColorScheme;\n}\n\nexport type ThemeColorScheme = { [key: string]: string };\n\nexport type ThemeType = 'dark' | 'light' | 'auto';\n\nexport const ELEMENT_THEME_NAME = 'element';\n\nexport const elementTheme: ThemeDescription = {\n name: 'element',\n groups: [\n {\n name: 'Branding',\n description: 'Configure the brand logo.',\n properties: [\n {\n name: '--element-brand-logo',\n usage: 'Enter a brand logo in the format: \\'url(\"https://company/logo.svg\")\\'',\n type: 'text'\n },\n {\n name: '--element-brand-logo-width',\n usage: \"Enter the width of the logo as CSS width value. Example: '100px'\",\n type: 'text'\n },\n {\n name: '--element-brand-logo-height',\n usage: \"Enter the height of the logo as CSS width value. Max: 48px; Example: '16px'\",\n type: 'text'\n },\n {\n name: '--element-brand-logo-text',\n usage:\n 'Enter a textual representation of the logo. Example: \\'\"Siemens logo\"\\'. The text must be wrapped in double quotes.',\n type: 'text'\n }\n ]\n },\n {\n name: 'Basic definitions',\n description: 'Basic definitions',\n properties: [\n {\n name: '--element-body-font-family',\n usage: 'The theme only uses one font everywhere.',\n type: 'font'\n },\n { name: '--element-button-radius', usage: 'Button border radius', type: 'text' },\n { name: '--element-button-focus-width', usage: 'Focus width', type: 'text' },\n {\n name: '--element-button-focus-overlay-width',\n usage: 'Focus overlay width',\n type: 'text'\n },\n {\n name: '--element-button-focus-overlay-color',\n usage: 'Focus overlay color',\n type: 'text'\n },\n { name: '--element-input-radius', usage: 'Input field border radius', type: 'text' },\n { name: '--element-logo-color', usage: 'Logo color', type: 'text' },\n { name: '--element-radius-1', usage: 'Border radius-1', type: 'text' },\n { name: '--element-radius-2', usage: 'Border radius-2', type: 'text' },\n { name: '--element-radius-3', usage: 'Border radius-3', type: 'text' }\n ]\n },\n {\n name: 'UI',\n description:\n 'UI colors are used on structural properties and icons and provide good contrast when used over any background.',\n properties: [\n { name: '--element-ui-0', usage: 'Logo, selected (active) elements', type: 'color' },\n { name: '--element-ui-0-hover', usage: 'Selected hover', type: 'color' },\n { name: '--element-ui-1', usage: 'Primary icons', type: 'color' },\n { name: '--element-ui-2', usage: 'Secondary icons', type: 'color' },\n { name: '--element-ui-3', usage: 'Disabled', type: 'color' },\n { name: '--element-ui-4', usage: 'Borders', type: 'color' },\n { name: '--element-ui-5', usage: 'Inverse', type: 'color' },\n { name: '--element-ui-6', usage: 'Shadows', type: 'color' },\n { name: '--element-box-shadow-color-1', usage: 'Box shadow color 1', type: 'color' },\n { name: '--element-box-shadow-color-2', usage: 'Box shadow color 2', type: 'color' },\n { name: '--element-focus-default', usage: 'Default focus color', type: 'color' }\n ]\n },\n {\n name: 'Base',\n description: 'Base colors are used as backgrounds of containers.',\n properties: [\n { name: '--element-base-0', usage: 'Page background, row background', type: 'color' },\n {\n name: '--element-base-1',\n usage: 'Header, navigation, card, table background',\n type: 'color'\n },\n {\n name: '--element-base-1-hover',\n usage: 'Hover on base-1 backgrounds, like table, tree, or menu',\n type: 'color'\n },\n {\n name: '--element-base-1-selected',\n usage: 'Selected on base-1 backgrounds, like table, tree, or menu',\n type: 'color'\n },\n {\n name: '--element-base-2',\n usage: 'Page background with higher contrast pages in dark mode',\n type: 'color'\n },\n {\n name: '--element-base-information',\n usage: 'Informational component background for e.g. badges',\n type: 'gradient'\n },\n {\n name: '--element-base-success',\n usage: 'Success component background for e.g. badges',\n type: 'gradient'\n },\n {\n name: '--element-base-caution',\n usage: 'Caution component background for e.g. badges',\n type: 'gradient'\n },\n {\n name: '--element-base-warning',\n usage: 'Warning component background for e.g. badges',\n type: 'gradient'\n },\n {\n name: '--element-base-danger',\n usage: 'Danger component background for e.g. badges',\n type: 'gradient'\n },\n {\n name: '--element-base-translucent-1',\n usage: 'Translucent background, e.g. backdrop',\n type: 'gradient'\n },\n {\n name: '--element-base-translucent-2',\n usage: 'Slightly translucent background, e.g. toasts',\n type: 'gradient'\n }\n ]\n },\n {\n name: 'Actions',\n description: 'Action colors are used to indicate actions that users can perform.',\n properties: [\n { name: '--element-action-primary', usage: 'Primary interaction', type: 'gradient' },\n {\n name: '--element-action-primary-hover',\n usage: 'Primary action background on hover',\n type: 'gradient'\n },\n { name: '--element-action-primary-text', usage: 'Primary text color', type: 'color' },\n { name: '--element-action-secondary', usage: 'Secondary interaction', type: 'gradient' },\n {\n name: '--element-action-secondary-hover',\n usage: 'Secondary action background on hover',\n type: 'gradient'\n },\n { name: '--element-action-secondary-text', usage: 'Secondary text color', type: 'color' },\n {\n name: '--element-action-secondary-text-hover',\n usage: 'Secondary text color on hover',\n type: 'color'\n },\n {\n name: '--element-action-secondary-border',\n usage: 'Secondary border color',\n type: 'color'\n },\n {\n name: '--element-action-secondary-border-hover',\n usage: 'Secondary border color on hover',\n type: 'color'\n },\n { name: '--element-action-warning', usage: 'Warning', type: 'gradient' },\n {\n name: '--element-action-warning-hover',\n usage: 'Warning action background on hover',\n type: 'gradient'\n },\n { name: '--element-action-warning-text', usage: 'Warning text color', type: 'color' },\n { name: '--element-action-danger', usage: 'Danger', type: 'gradient' },\n {\n name: '--element-action-danger-hover',\n usage: 'Danger action background on hover',\n type: 'gradient'\n },\n { name: '--element-action-danger-text', usage: 'Danger text color', type: 'color' },\n {\n name: '--element-action-disabled-opacity',\n usage: 'Disabled action opacity',\n type: 'number'\n }\n ]\n },\n {\n name: 'Text',\n description: 'Similarly, categories for typography colors are also defined in this system.',\n properties: [\n { name: '--element-text-primary', usage: 'Primary', type: 'color' },\n { name: '--element-text-secondary', usage: 'Secondary', type: 'color' },\n { name: '--element-text-disabled', usage: 'Disabled', type: 'color' },\n { name: '--element-text-inverse', usage: 'Inverse', type: 'color' },\n { name: '--element-text-active', usage: 'Active', type: 'color' },\n { name: '--element-text-information', usage: 'Informational', type: 'color' },\n { name: '--element-text-success', usage: 'Success', type: 'color' },\n { name: '--element-text-caution', usage: 'Caution', type: 'color' },\n { name: '--element-text-warning', usage: 'Warning', type: 'color' },\n { name: '--element-text-danger', usage: 'Danger', type: 'color' }\n ]\n },\n {\n name: 'Status',\n description:\n 'Status colors are used to describe and/or report on the status of different things.',\n properties: [\n { name: '--element-status-information', usage: 'Informational', type: 'color' },\n {\n name: '--element-status-information-contrast',\n usage: 'Informational contrast',\n type: 'color'\n },\n { name: '--element-status-success', usage: 'Success', type: 'color' },\n { name: '--element-status-success-contrast', usage: 'Success contrast', type: 'color' },\n { name: '--element-status-caution', usage: 'Caution', type: 'color' },\n { name: '--element-status-caution-contrast', usage: 'Caution contrast', type: 'color' },\n { name: '--element-status-warning', usage: 'Warning', type: 'color' },\n { name: '--element-status-warning-contrast', usage: 'Warning contrast', type: 'color' },\n { name: '--element-status-danger', usage: 'Danger', type: 'color' },\n { name: '--element-status-danger-contrast', usage: 'Danger contrast', type: 'color' }\n ]\n },\n {\n name: 'Form feedback icons',\n description: 'Icons that are used to indicate a form item status',\n properties: [{ name: '--element-invalid-feedback-icon', usage: 'Danger', type: 'text' }]\n }\n ]\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { isPlatformBrowser } from '@angular/common';\nimport { DOCUMENT, EventEmitter, inject, Injectable, PLATFORM_ID, signal } from '@angular/core';\nimport { Meta } from '@angular/platform-browser';\nimport { Observable, of, ReplaySubject, throwError } from 'rxjs';\nimport { map, switchMap, take, tap } from 'rxjs/operators';\n\nimport { SiDefaultThemeStore, SiThemeStore } from './si-theme-store';\nimport {\n ELEMENT_THEME_NAME,\n Theme,\n ThemeColorScheme,\n ThemeColorSchemes,\n ThemeType\n} from './si-theme.model';\n\n@Injectable({ providedIn: 'root' })\nexport class SiThemeService {\n /**\n * The current color scheme. (e.g. light or dark).\n */\n private _resolvedColorScheme: ThemeType | undefined = 'light';\n private resolvedColorSchemeSub = new ReplaySubject<keyof ThemeColorSchemes>(1);\n /**\n * Emits events when the color scheme changes.\n *\n * @defaultValue this.resolvedColorSchemeSub.asObservable()\n */\n readonly resolvedColorScheme$ = this.resolvedColorSchemeSub.asObservable();\n /**\n * The current color scheme. (e.g. light or dark).\n */\n get resolvedColorScheme(): ThemeType | undefined {\n return this._resolvedColorScheme;\n }\n\n /**\n * All available theme names, including element theme name.\n */\n private _themeNames: string[] = [ELEMENT_THEME_NAME];\n private themeNamesSub = new ReplaySubject<string[]>(1);\n /**\n * Emits events when the list of available theme names changes.\n *\n * @defaultValue this.themeNamesSub.asObservable()\n */\n readonly themeNames$ = this.themeNamesSub.asObservable();\n\n /**\n * All available theme names, including element theme name.\n */\n get themeNames(): string[] {\n return this._themeNames;\n }\n\n /**\n * Emits events when the currently applied theme changes. Either by\n * changing to another theme or by re-applying a theme with updated\n * properties. When switching to default theme element, `undefined`\n * is emitted.\n */\n readonly themeChange = new EventEmitter<Theme | undefined>();\n\n /**\n * The name of the theme that is active. Theme name `element` is the default.\n */\n activeThemeName?: string;\n /**\n * Icon overrides by the currently activeTheme.\n * @defaultValue\n * ```\n * {}\n * ```\n */\n readonly themeIcons = signal<Record<string, string>>({});\n\n private themes: Map<string, Theme> = new Map();\n private darkMediaQuery?: MediaQueryList;\n private mediaQueryListener?: () => void;\n private isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n private previewTheme?: Theme;\n\n private themeStore =\n inject(SiThemeStore, { optional: true }) ?? new SiDefaultThemeStore(this.isBrowser);\n private meta = inject(Meta);\n private document = inject(DOCUMENT);\n\n constructor() {\n this.resolvedColorScheme$.subscribe(scheme => (this._resolvedColorScheme = scheme));\n this.themeNames$.subscribe(names => (this._themeNames = names));\n\n if (this.isBrowser) {\n this.darkMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n this.mediaQueryListener = () => this.toggleDark(this.darkMediaQuery!.matches);\n }\n\n this.getActiveTheme()\n .pipe(take(1))\n .subscribe({\n next: theme => this.applyThemeStyle(theme, this._resolvedColorScheme),\n error: error => console.error('Cannot load active theme', error)\n });\n\n this.themeStore\n .loadThemeNames()\n .pipe(take(1))\n .subscribe({\n next: names => {\n names.push(ELEMENT_THEME_NAME);\n this.themeNamesSub.next(names);\n },\n error: error => console.error('Cannot load theme names', error)\n });\n }\n\n /**\n * Returns `true` if a theme with the given name is available.\n */\n hasTheme(name: string): boolean {\n return this._themeNames.includes(name);\n }\n\n /**\n * Returns a clone of the theme with the given name or `undefined` if not\n * available or name is `element`.\n * @param name - The name of the theme to be returned.\n * @returns The theme with the given name and `undefined` if name is `element`.\n */\n getTheme(name: string): Observable<Theme | undefined> {\n if (name === ELEMENT_THEME_NAME || !this.hasTheme(name)) {\n return of(undefined);\n }\n\n if (this.themes.has(name)) {\n const theme = this.themes.get(name)!;\n // return a clone to avoid changes as a side effect\n return of(this.cloneTheme(theme));\n }\n\n return this.themeStore.loadTheme(name).pipe(\n tap(theme => {\n if (theme) {\n this.themes.set(theme.name, this.cloneTheme(theme));\n }\n })\n );\n }\n\n /**\n * Loads and returns the currently active theme. Returns undefined if no custom theme is used.\n * @returns A custom theme or `undefined` if the default element theme is used.\n */\n getActiveTheme(): Observable<Theme | undefined> {\n if (this.activeThemeName) {\n return of(this.themes.get(this.activeThemeName));\n }\n return this.themeStore.loadActiveTheme().pipe(\n map(theme => {\n if (theme) {\n this.activeThemeName = theme.name;\n this.themes.set(theme.name, theme);\n this.applyTheme(theme, this._resolvedColorScheme);\n return theme;\n }\n this.activeThemeName = ELEMENT_THEME_NAME;\n return undefined;\n })\n );\n }\n\n /**\n * Adds or updates the given theme in the theme store.\n * @param theme - The theme to be saved.\n * @returns `true` if the theme was saved successfully.\n */\n addOrUpdateTheme(theme: Theme): Observable<boolean> {\n const result = new ReplaySubject<boolean>(1);\n\n this.themeStore.saveTheme(theme).subscribe({\n next: saveResult => {\n if (saveResult) {\n this.themes.set(theme.name, this.cloneTheme(theme));\n // Update list of theme names when this is a new one\n if (!this.hasTheme(theme.name)) {\n const names = this._themeNames.concat(theme.name);\n this.themeNamesSub.next(names);\n }\n }\n result.next(saveResult);\n result.complete();\n },\n error: error => result.error(error),\n complete: () => result.complete()\n });\n return result;\n }\n\n /**\n * Deletes the theme with the given name from the theme store.\n */\n deleteTheme(name: string): Observable<boolean> {\n const result = new ReplaySubject<boolean>(1);\n if (!this.hasTheme(name) || name === ELEMENT_THEME_NAME) {\n result.next(false);\n result.complete();\n } else {\n this.removeThemeCSS(name);\n this.themeStore.deleteTheme(name).subscribe({\n next: deleteResult => {\n if (deleteResult) {\n this.themes.delete(name);\n const names = this._themeNames.filter(themeName => themeName !== name);\n this.themeNamesSub.next(names);\n }\n result.next(deleteResult);\n result.complete();\n },\n error: error => result.error(error),\n complete: () => result.complete()\n });\n }\n return result;\n }\n\n /**\n * Resets the preview theme to the default element theme.\n */\n resetPreview(): void {\n this.previewTheme = { name: '__preview', schemes: { dark: {}, light: {} } };\n this.removeThemeCSS(this.previewTheme.name);\n }\n\n /**\n * Sets the active theme to the given name. If no name is given, the default element theme is used.\n */\n setActiveTheme(name?: string, type?: ThemeType): Observable<boolean> {\n const theType = type ?? this._resolvedColorScheme ?? 'auto';\n const theName = name ?? this.activeThemeName ?? ELEMENT_THEME_NAME;\n\n if (theName === this.activeThemeName) {\n return of(true);\n }\n if (!this.hasTheme(theName)) {\n return of(false);\n }\n\n const result = new ReplaySubject<boolean>(1);\n this.activeThemeName = theName;\n // Make the change in the remove store\n const store =\n theName !== ELEMENT_THEME_NAME\n ? this.themeStore.activateTheme(theName)\n : this.themeStore.deactivateTheme();\n store\n .pipe(\n // On success, load the theme\n switchMap(storeResult => {\n if (storeResult) {\n return this.getTheme(theName);\n } else {\n return throwError(() => 'Cannot change active theme in theme store.');\n }\n }),\n // Only take one to avoid unsubscription issues\n take(1)\n )\n .subscribe({\n next: theme => {\n this.applyTheme(theme, theType);\n result.next(true);\n },\n error: error => {\n console.error(`Activating theme ${name} failed`, error);\n result.next(false);\n },\n complete: () => result.complete()\n });\n return result;\n }\n\n /**\n * Apply `light` or `dark` theme to the document.\n */\n applyThemeType(type: ThemeType): void {\n if (type === this._resolvedColorScheme || !this.darkMediaQuery || !this.mediaQueryListener) {\n return;\n }\n\n this.darkMediaQuery.removeEventListener('change', this.mediaQueryListener);\n\n if (type === 'light') {\n this.toggleDark(false);\n } else if (type === 'dark') {\n this.toggleDark(true);\n } else {\n this.mediaQueryListener();\n this.darkMediaQuery.addEventListener('change', this.mediaQueryListener);\n }\n }\n\n /**\n * Applies the given theme to the document. If no theme is given, the active theme is applied.\n */\n applyTheme(theme?: Theme, type?: ThemeType, overwrite?: boolean): void {\n if (theme) {\n this.applyThemeStyle(theme, type, overwrite);\n } else {\n this.getActiveTheme()\n .pipe(take(1))\n .subscribe({\n next: loadedTheme => this.applyThemeStyle(loadedTheme, type),\n error: error => console.error('Cannot load active theme', error)\n });\n }\n }\n\n /**\n * Updates the given property of the preview theme.\n */\n updateProperty(name: string, value: string, type: keyof ThemeColorSchemes): void {\n if (!this.previewTheme) {\n this.resetPreview();\n }\n this.previewTheme!.schemes[type]![name] = value;\n this.createThemeCSS(this.previewTheme!);\n this.document.documentElement.classList.add('theme-__preview');\n this.dispatchThemeSwitchEvent();\n }\n\n /**\n * Checks if the given theme JSON object is a valid theme.\n */\n isThemeValid(data: unknown): boolean {\n const theme = data as Theme;\n return (\n !!data &&\n typeof data === 'object' &&\n 'name' in data &&\n 'schemes' in data &&\n typeof theme.name === 'string' &&\n typeof theme.schemes === 'object' &&\n this.isThemeTypeValid(theme, 'light') &&\n this.isThemeTypeValid(theme, 'dark')\n );\n }\n\n private isThemeTypeValid(theme: Theme, type: 'light' | 'dark'): boolean {\n return (\n !(type in theme.schemes) ||\n (typeof theme.schemes[type] === 'object' &&\n Object.values(theme.schemes[type] as ThemeColorScheme).every(\n item => typeof item === 'string'\n ) &&\n Object.keys(theme.schemes[type] as ThemeColorScheme).every(\n item => typeof item === 'string'\n ))\n );\n }\n\n private applyThemeStyle(theme?: Theme, type?: ThemeType, overwrite?: boolean): void {\n if (!this.isBrowser) {\n return;\n }\n this.resetPreview();\n\n if (theme && theme.name !== ELEMENT_THEME_NAME && (overwrite || !this.hasThemeCSS(theme))) {\n this.createThemeCSS(theme);\n }\n this.activateTheme(theme);\n\n if (type && type !== this._resolvedColorScheme) {\n this.applyThemeType(type);\n }\n\n this.themeIcons.set(\n Object.fromEntries(Object.entries(theme?.icons ?? {}).map(([key, icon]) => [key, icon]))\n );\n this.themeChange.emit(theme);\n }\n\n private activateTheme(theme?: Theme): void {\n const classList = this.document.documentElement.classList;\n classList.forEach(c => {\n if (c.startsWith('theme-')) {\n classList.remove(c);\n }\n });\n if (theme) {\n classList.add(`theme-${theme.name}`);\n }\n }\n\n private hasThemeCSS(theme: Theme): boolean {\n const id = `__theme-${theme.name}`;\n return !!this.document.getElementById(id);\n }\n\n private createThemeCSS(theme: Theme): void {\n let css = '';\n const themeSelector = `:root.theme-${theme.name}`;\n if (theme.schemes.light) {\n css = this.createThemeVariantCSS(css, themeSelector, theme.schemes.light);\n }\n if (theme.schemes.dark) {\n css = this.createThemeVariantCSS(css, themeSelector + '.app--dark', theme.schemes.dark);\n }\n\n this.removeThemeCSS(theme.name);\n const cssElement = this.document.createElement('style');\n cssElement.id = `__theme-${theme.name}`;\n cssElement.textContent = css;\n\n this.document.body.appendChild(cssElement);\n }\n\n private createThemeVariantCSS(css: string, selector: string, scheme: ThemeColorScheme): string {\n css += `${selector} {\\n`;\n for (const key of Object.keys(scheme)) {\n css += `${key}: ${scheme[key]};\\n`;\n }\n css += '}\\n';\n return css;\n }\n\n private removeThemeCSS(name: string): void {\n const id = `__theme-${name}`;\n this.document.getElementById(id)?.remove();\n this.document.documentElement.classList.remove(`theme-${name}`);\n }\n\n private toggleDark(dark: boolean): void {\n if (!this.isBrowser) {\n return;\n }\n\n this.document.documentElement.classList.toggle('app--dark', dark);\n const colorScheme = dark ? 'dark' : 'light';\n this.meta.updateTag({ name: 'color-scheme', content: colorScheme });\n this.resolvedColorSchemeSub.next(colorScheme);\n this.dispatchThemeSwitchEvent();\n }\n\n private cloneTheme(theme: Theme): Theme {\n const clone: Theme = { ...theme, schemes: {} };\n if (theme.schemes.light) {\n clone.schemes.light = { ...theme.schemes.light };\n }\n if (theme.schemes.dark) {\n clone.schemes.dark = { ...theme.schemes.dark };\n }\n return clone;\n }\n\n private dispatchThemeSwitchEvent(): void {\n window.dispatchEvent(\n new CustomEvent('theme-switch', {\n detail: {\n dark: this._resolvedColorScheme === 'dark',\n colorScheme: this._resolvedColorScheme\n }\n })\n );\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { isPlatformBrowser } from '@angular/common';\nimport { inject, PLATFORM_ID, signal, Signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { fromEvent, map } from 'rxjs';\n\n/**\n * Returns a signal that reflects whether the current Element theme is dark (`true`) or light\n * (`false`). The signal reacts to `theme-switch` events dispatched on `window`.\n *\n * @experimental\n * @returns A boolean signal — `true` when the active theme is dark\n * @throws When called outside of an Angular injection context\n */\nexport const injectIsDarkTheme = (): Signal<boolean> => {\n if (!isPlatformBrowser(inject(PLATFORM_ID))) {\n return signal(false);\n }\n\n return toSignal(\n fromEvent<CustomEvent<{ dark: boolean }>>(window, 'theme-switch').pipe(map(e => e.detail.dark)),\n {\n initialValue: document.documentElement.classList.contains('app--dark')\n }\n );\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-theme-store';\nexport * from './si-theme.service';\nexport * from './si-theme.model';\nexport * from './si-theme-signals';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"siemens-element-ng-theme.mjs","sources":["../../../../projects/element-ng/theme/si-theme-store.ts","../../../../projects/element-ng/theme/si-theme.model.ts","../../../../projects/element-ng/theme/si-theme.service.ts","../../../../projects/element-ng/theme/si-theme-signals.ts","../../../../projects/element-ng/theme/index.ts","../../../../projects/element-ng/theme/siemens-element-ng-theme.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Observable, of } from 'rxjs';\n\nimport { Theme } from './si-theme.model';\n\n/**\n * SiThemeStore object is used by the theme service to load and\n * store the themes. You can inject your own implementation to provide\n * a backend implementation. Otherwise a localStorage based implementation\n * is used.\n */\nexport abstract class SiThemeStore {\n /**\n * Load and return an alternative custom theme, other then\n * the default element theme. This method is invoked initially\n * to check for an alternative custom theme.\n * @returns The active theme to be used, or undefined if the\n * default element theme shall be used. All wrapped in an observable\n * that can also emit errors.\n */\n abstract loadActiveTheme(): Observable<Theme | undefined>;\n /**\n * Sets the theme with the given name to active.\n * @param name - The name of the theme to become active.\n * @returns True on success, otherwise false.\n */\n abstract activateTheme(name: string): Observable<boolean>;\n /**\n * Deactivate any active theme and makes the element theme the default one.\n * @returns True on success, otherwise false.\n */\n abstract deactivateTheme(): Observable<boolean>;\n /**\n * Load and return the available theme names.\n * @returns An `Observable` of available theme names, other than the\n * default element theme.\n */\n abstract loadThemeNames(): Observable<string[]>;\n /**\n * Load theme with the given `name`.\n * @param name - The name of the theme to be returned.\n * @returns Observable with the named theme or `undefined` if no such theme exist.\n */\n abstract loadTheme(name: string): Observable<Theme | undefined>;\n /**\n * Saves a theme to the store. The name shall not be empty. A theme with\n * identical name gets overwritten.\n * @param theme - The theme to be saved.\n * @returns True on success, otherwise false. All nicely wrapped in\n * an observable that may also emit errors.\n */\n abstract saveTheme(theme: Theme): Observable<boolean>;\n /**\n * Deletes the theme with the given name from the store.\n * @param name - The name of the theme to be deleted.\n * @returns True on success, otherwise false. All nicely wrapped in\n * an observable that may also emit errors. Returns false,\n * if the theme does not exist.\n */\n abstract deleteTheme(name: string): Observable<boolean>;\n}\n\nexport const SI_THEME_LOCAL_STORAGE_KEY = 'si-themes';\n\nexport interface ThemeStorage {\n activeTheme: string | undefined;\n themes: { [key: string]: Theme };\n}\n\nexport class SiDefaultThemeStore extends SiThemeStore {\n private isBrowser: boolean;\n\n constructor(isBrowser: boolean) {\n super();\n this.isBrowser = isBrowser;\n }\n\n loadActiveTheme(): Observable<Theme | undefined> {\n if (!this.isBrowser) {\n return of(undefined);\n }\n\n const store = this.loadStore();\n if (store.activeTheme) {\n return of(store.themes[store.activeTheme]);\n } else {\n return of(undefined);\n }\n }\n\n activateTheme(name: string): Observable<boolean> {\n if (!this.isBrowser) {\n return of(false);\n }\n\n const store = this.loadStore();\n if (store.themes[name]) {\n store.activeTheme = name;\n this.saveStore(store);\n return of(true);\n } else {\n return of(false);\n }\n }\n\n deactivateTheme(): Observable<boolean> {\n if (!this.isBrowser) {\n return of(false);\n }\n\n const store = this.loadStore();\n store.activeTheme = undefined;\n this.saveStore(store);\n return of(true);\n }\n\n loadThemeNames(): Observable<string[]> {\n if (!this.isBrowser) {\n return of([]);\n }\n const store = this.loadStore();\n return of(Array.from(Object.keys(store.themes)));\n }\n\n saveTheme(theme: Theme): Observable<boolean> {\n if (!this.isBrowser) {\n return of(false);\n }\n\n const store = this.loadStore();\n store.themes[theme.name] = theme;\n this.saveStore(store);\n return of(true);\n }\n\n loadTheme(name: string): Observable<Theme | undefined> {\n if (!this.isBrowser) {\n return of(undefined);\n }\n const store = this.loadStore();\n return of(store.themes[name]);\n }\n\n deleteTheme(name: string): Observable<boolean> {\n if (!this.isBrowser) {\n return of(false);\n }\n\n const store = this.loadStore();\n delete store.themes[name];\n if (store.activeTheme === name) {\n store.activeTheme = undefined;\n }\n this.saveStore(store);\n return of(true);\n }\n\n private loadStore(): ThemeStorage {\n const storeStr = localStorage.getItem(SI_THEME_LOCAL_STORAGE_KEY);\n if (storeStr) {\n return JSON.parse(storeStr) as ThemeStorage;\n } else {\n return { activeTheme: undefined, themes: {} };\n }\n }\n\n private saveStore(store: ThemeStorage): void {\n localStorage.setItem(SI_THEME_LOCAL_STORAGE_KEY, JSON.stringify(store));\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n/** */\nexport interface ThemeDescription {\n name: string;\n groups: ThemePropertyGroup[];\n}\n\nexport interface ThemePropertyGroup {\n name: string;\n description?: string;\n properties: ThemeProperty[];\n}\n\nexport interface ThemeProperty {\n name: string;\n usage: string;\n type: ThemePropertyType;\n}\n\nexport type ThemePropertyType = 'color' | 'gradient' | 'font' | 'url' | 'text' | 'number';\n\nexport interface Theme {\n name: string;\n schemes: ThemeColorSchemes;\n /**\n * A map of icons that overrides the default Element icons.\n * The key must be the key of the original icon that should be overridden.\n * The value has to be a data SVG string.\n *\n * @example\n * ```ts\n * {\n * elementUser: \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'>...</svg>\"\n * }\n * ```\n *\n * @experimental\n */\n icons?: Record<string, string>;\n}\n\nexport interface ThemeColorSchemes {\n light?: ThemeColorScheme;\n dark?: ThemeColorScheme;\n}\n\nexport type ThemeColorScheme = { [key: string]: string };\n\nexport type ThemeType = 'dark' | 'light' | 'auto';\n\nexport const ELEMENT_THEME_NAME = 'element';\n\nexport const elementTheme: ThemeDescription = {\n name: 'element',\n groups: [\n {\n name: 'Branding',\n description: 'Configure the brand logo.',\n properties: [\n {\n name: '--element-brand-logo',\n usage: 'Enter a brand logo in the format: \\'url(\"https://company/logo.svg\")\\'',\n type: 'text'\n },\n {\n name: '--element-brand-logo-width',\n usage: \"Enter the width of the logo as CSS width value. Example: '100px'\",\n type: 'text'\n },\n {\n name: '--element-brand-logo-height',\n usage: \"Enter the height of the logo as CSS width value. Max: 48px; Example: '16px'\",\n type: 'text'\n },\n {\n name: '--element-brand-logo-text',\n usage:\n 'Enter a textual representation of the logo. Example: \\'\"Siemens logo\"\\'. The text must be wrapped in double quotes.',\n type: 'text'\n }\n ]\n },\n {\n name: 'Basic definitions',\n description: 'Basic definitions',\n properties: [\n {\n name: '--element-body-font-family',\n usage: 'The theme only uses one font everywhere.',\n type: 'font'\n },\n { name: '--element-button-radius', usage: 'Button border radius', type: 'text' },\n { name: '--element-button-focus-width', usage: 'Focus width', type: 'text' },\n {\n name: '--element-button-focus-overlay-width',\n usage: 'Focus overlay width',\n type: 'text'\n },\n {\n name: '--element-button-focus-overlay-color',\n usage: 'Focus overlay color',\n type: 'text'\n },\n { name: '--element-input-radius', usage: 'Input field border radius', type: 'text' },\n { name: '--element-logo-color', usage: 'Logo color', type: 'text' },\n { name: '--element-radius-1', usage: 'Border radius-1', type: 'text' },\n { name: '--element-radius-2', usage: 'Border radius-2', type: 'text' },\n { name: '--element-radius-3', usage: 'Border radius-3', type: 'text' }\n ]\n },\n {\n name: 'UI',\n description:\n 'UI colors are used on structural properties and icons and provide good contrast when used over any background.',\n properties: [\n { name: '--element-ui-0', usage: 'Logo, selected (active) elements', type: 'color' },\n { name: '--element-ui-0-hover', usage: 'Selected hover', type: 'color' },\n { name: '--element-ui-1', usage: 'Primary icons', type: 'color' },\n { name: '--element-ui-2', usage: 'Secondary icons', type: 'color' },\n { name: '--element-ui-3', usage: 'Disabled', type: 'color' },\n { name: '--element-ui-4', usage: 'Borders', type: 'color' },\n { name: '--element-ui-5', usage: 'Inverse', type: 'color' },\n { name: '--element-ui-6', usage: 'Shadows', type: 'color' },\n { name: '--element-box-shadow-color-1', usage: 'Box shadow color 1', type: 'color' },\n { name: '--element-box-shadow-color-2', usage: 'Box shadow color 2', type: 'color' },\n { name: '--element-focus-default', usage: 'Default focus color', type: 'color' }\n ]\n },\n {\n name: 'Base',\n description: 'Base colors are used as backgrounds of containers.',\n properties: [\n { name: '--element-base-0', usage: 'Page background, row background', type: 'color' },\n {\n name: '--element-base-1',\n usage: 'Header, navigation, card, table background',\n type: 'color'\n },\n {\n name: '--element-base-1-hover',\n usage: 'Hover on base-1 backgrounds, like table, tree, or menu',\n type: 'color'\n },\n {\n name: '--element-base-1-selected',\n usage: 'Selected on base-1 backgrounds, like table, tree, or menu',\n type: 'color'\n },\n {\n name: '--element-base-2',\n usage: 'Page background with higher contrast pages in dark mode',\n type: 'color'\n },\n {\n name: '--element-base-information',\n usage: 'Informational component background for e.g. badges',\n type: 'gradient'\n },\n {\n name: '--element-base-success',\n usage: 'Success component background for e.g. badges',\n type: 'gradient'\n },\n {\n name: '--element-base-caution',\n usage: 'Caution component background for e.g. badges',\n type: 'gradient'\n },\n {\n name: '--element-base-warning',\n usage: 'Warning component background for e.g. badges',\n type: 'gradient'\n },\n {\n name: '--element-base-danger',\n usage: 'Danger component background for e.g. badges',\n type: 'gradient'\n },\n {\n name: '--element-base-translucent-1',\n usage: 'Translucent background, e.g. backdrop',\n type: 'gradient'\n },\n {\n name: '--element-base-translucent-2',\n usage: 'Slightly translucent background, e.g. toasts',\n type: 'gradient'\n }\n ]\n },\n {\n name: 'Actions',\n description: 'Action colors are used to indicate actions that users can perform.',\n properties: [\n { name: '--element-action-primary', usage: 'Primary interaction', type: 'gradient' },\n {\n name: '--element-action-primary-hover',\n usage: 'Primary action background on hover',\n type: 'gradient'\n },\n { name: '--element-action-primary-text', usage: 'Primary text color', type: 'color' },\n { name: '--element-action-secondary', usage: 'Secondary interaction', type: 'gradient' },\n {\n name: '--element-action-secondary-hover',\n usage: 'Secondary action background on hover',\n type: 'gradient'\n },\n { name: '--element-action-secondary-text', usage: 'Secondary text color', type: 'color' },\n {\n name: '--element-action-secondary-text-hover',\n usage: 'Secondary text color on hover',\n type: 'color'\n },\n {\n name: '--element-action-secondary-border',\n usage: 'Secondary border color',\n type: 'color'\n },\n {\n name: '--element-action-secondary-border-hover',\n usage: 'Secondary border color on hover',\n type: 'color'\n },\n { name: '--element-action-warning', usage: 'Warning', type: 'gradient' },\n {\n name: '--element-action-warning-hover',\n usage: 'Warning action background on hover',\n type: 'gradient'\n },\n { name: '--element-action-warning-text', usage: 'Warning text color', type: 'color' },\n { name: '--element-action-danger', usage: 'Danger', type: 'gradient' },\n {\n name: '--element-action-danger-hover',\n usage: 'Danger action background on hover',\n type: 'gradient'\n },\n { name: '--element-action-danger-text', usage: 'Danger text color', type: 'color' },\n {\n name: '--element-action-disabled-opacity',\n usage: 'Disabled action opacity',\n type: 'number'\n }\n ]\n },\n {\n name: 'Text',\n description: 'Similarly, categories for typography colors are also defined in this system.',\n properties: [\n { name: '--element-text-primary', usage: 'Primary', type: 'color' },\n { name: '--element-text-secondary', usage: 'Secondary', type: 'color' },\n { name: '--element-text-disabled', usage: 'Disabled', type: 'color' },\n { name: '--element-text-inverse', usage: 'Inverse', type: 'color' },\n { name: '--element-text-active', usage: 'Active', type: 'color' },\n { name: '--element-text-information', usage: 'Informational', type: 'color' },\n { name: '--element-text-success', usage: 'Success', type: 'color' },\n { name: '--element-text-caution', usage: 'Caution', type: 'color' },\n { name: '--element-text-warning', usage: 'Warning', type: 'color' },\n { name: '--element-text-danger', usage: 'Danger', type: 'color' }\n ]\n },\n {\n name: 'Status',\n description:\n 'Status colors are used to describe and/or report on the status of different things.',\n properties: [\n { name: '--element-status-information', usage: 'Informational', type: 'color' },\n {\n name: '--element-status-information-contrast',\n usage: 'Informational contrast',\n type: 'color'\n },\n { name: '--element-status-success', usage: 'Success', type: 'color' },\n { name: '--element-status-success-contrast', usage: 'Success contrast', type: 'color' },\n { name: '--element-status-caution', usage: 'Caution', type: 'color' },\n { name: '--element-status-caution-contrast', usage: 'Caution contrast', type: 'color' },\n { name: '--element-status-warning', usage: 'Warning', type: 'color' },\n { name: '--element-status-warning-contrast', usage: 'Warning contrast', type: 'color' },\n { name: '--element-status-danger', usage: 'Danger', type: 'color' },\n { name: '--element-status-danger-contrast', usage: 'Danger contrast', type: 'color' }\n ]\n },\n {\n name: 'Form feedback icons',\n description: 'Icons that are used to indicate a form item status',\n properties: [{ name: '--element-invalid-feedback-icon', usage: 'Danger', type: 'text' }]\n }\n ]\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { isPlatformBrowser } from '@angular/common';\nimport { DOCUMENT, EventEmitter, inject, Injectable, PLATFORM_ID, signal } from '@angular/core';\nimport { Meta } from '@angular/platform-browser';\nimport { Observable, of, ReplaySubject, throwError } from 'rxjs';\nimport { map, switchMap, take, tap } from 'rxjs/operators';\n\nimport { SiDefaultThemeStore, SiThemeStore } from './si-theme-store';\nimport {\n ELEMENT_THEME_NAME,\n Theme,\n ThemeColorScheme,\n ThemeColorSchemes,\n ThemeType\n} from './si-theme.model';\n\n@Injectable({ providedIn: 'root' })\nexport class SiThemeService {\n /**\n * The current color scheme. (e.g. light or dark).\n */\n private _resolvedColorScheme: ThemeType | undefined = 'light';\n private resolvedColorSchemeSub = new ReplaySubject<keyof ThemeColorSchemes>(1);\n /**\n * Emits events when the color scheme changes.\n *\n * @defaultValue this.resolvedColorSchemeSub.asObservable()\n */\n readonly resolvedColorScheme$ = this.resolvedColorSchemeSub.asObservable();\n /**\n * The current color scheme. (e.g. light or dark).\n */\n get resolvedColorScheme(): ThemeType | undefined {\n return this._resolvedColorScheme;\n }\n\n /**\n * All available theme names, including element theme name.\n */\n private _themeNames: string[] = [ELEMENT_THEME_NAME];\n private themeNamesSub = new ReplaySubject<string[]>(1);\n /**\n * Emits events when the list of available theme names changes.\n *\n * @defaultValue this.themeNamesSub.asObservable()\n */\n readonly themeNames$ = this.themeNamesSub.asObservable();\n\n /**\n * All available theme names, including element theme name.\n */\n get themeNames(): string[] {\n return this._themeNames;\n }\n\n /**\n * Emits events when the currently applied theme changes. Either by\n * changing to another theme or by re-applying a theme with updated\n * properties. When switching to default theme element, `undefined`\n * is emitted.\n */\n readonly themeChange = new EventEmitter<Theme | undefined>();\n\n /**\n * The name of the theme that is active. Theme name `element` is the default.\n */\n activeThemeName?: string;\n /**\n * Icon overrides by the currently activeTheme.\n * @defaultValue\n * ```\n * {}\n * ```\n */\n readonly themeIcons = signal<Record<string, string>>({});\n\n private themes: Map<string, Theme> = new Map();\n private darkMediaQuery?: MediaQueryList;\n private mediaQueryListener?: () => void;\n private isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n private previewTheme?: Theme;\n\n private themeStore =\n inject(SiThemeStore, { optional: true }) ?? new SiDefaultThemeStore(this.isBrowser);\n private meta = inject(Meta);\n private document = inject(DOCUMENT);\n\n constructor() {\n this.resolvedColorScheme$.subscribe(scheme => (this._resolvedColorScheme = scheme));\n this.themeNames$.subscribe(names => (this._themeNames = names));\n\n if (this.isBrowser) {\n this.darkMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n this.mediaQueryListener = () => this.toggleDark(this.darkMediaQuery!.matches);\n }\n\n this.getActiveTheme()\n .pipe(take(1))\n .subscribe({\n next: theme => this.applyThemeStyle(theme, this._resolvedColorScheme),\n error: error => console.error('Cannot load active theme', error)\n });\n\n this.themeStore\n .loadThemeNames()\n .pipe(take(1))\n .subscribe({\n next: names => {\n names.push(ELEMENT_THEME_NAME);\n this.themeNamesSub.next(names);\n },\n error: error => console.error('Cannot load theme names', error)\n });\n }\n\n /**\n * Returns `true` if a theme with the given name is available.\n */\n hasTheme(name: string): boolean {\n return this._themeNames.includes(name);\n }\n\n /**\n * Returns a clone of the theme with the given name or `undefined` if not\n * available or name is `element`.\n * @param name - The name of the theme to be returned.\n * @returns The theme with the given name and `undefined` if name is `element`.\n */\n getTheme(name: string): Observable<Theme | undefined> {\n if (name === ELEMENT_THEME_NAME || !this.hasTheme(name)) {\n return of(undefined);\n }\n\n if (this.themes.has(name)) {\n const theme = this.themes.get(name)!;\n // return a clone to avoid changes as a side effect\n return of(this.cloneTheme(theme));\n }\n\n return this.themeStore.loadTheme(name).pipe(\n tap(theme => {\n if (theme) {\n this.themes.set(theme.name, this.cloneTheme(theme));\n }\n })\n );\n }\n\n /**\n * Loads and returns the currently active theme. Returns undefined if no custom theme is used.\n * @returns A custom theme or `undefined` if the default element theme is used.\n */\n getActiveTheme(): Observable<Theme | undefined> {\n if (this.activeThemeName) {\n return of(this.themes.get(this.activeThemeName));\n }\n return this.themeStore.loadActiveTheme().pipe(\n map(theme => {\n if (theme) {\n this.activeThemeName = theme.name;\n this.themes.set(theme.name, theme);\n this.applyTheme(theme, this._resolvedColorScheme);\n return theme;\n }\n this.activeThemeName = ELEMENT_THEME_NAME;\n return undefined;\n })\n );\n }\n\n /**\n * Adds or updates the given theme in the theme store.\n * @param theme - The theme to be saved.\n * @returns `true` if the theme was saved successfully.\n */\n addOrUpdateTheme(theme: Theme): Observable<boolean> {\n const result = new ReplaySubject<boolean>(1);\n\n this.themeStore.saveTheme(theme).subscribe({\n next: saveResult => {\n if (saveResult) {\n this.themes.set(theme.name, this.cloneTheme(theme));\n // Update list of theme names when this is a new one\n if (!this.hasTheme(theme.name)) {\n const names = this._themeNames.concat(theme.name);\n this.themeNamesSub.next(names);\n }\n }\n result.next(saveResult);\n result.complete();\n },\n error: error => result.error(error),\n complete: () => result.complete()\n });\n return result;\n }\n\n /**\n * Deletes the theme with the given name from the theme store.\n */\n deleteTheme(name: string): Observable<boolean> {\n const result = new ReplaySubject<boolean>(1);\n if (!this.hasTheme(name) || name === ELEMENT_THEME_NAME) {\n result.next(false);\n result.complete();\n } else {\n this.removeThemeCSS(name);\n this.themeStore.deleteTheme(name).subscribe({\n next: deleteResult => {\n if (deleteResult) {\n this.themes.delete(name);\n const names = this._themeNames.filter(themeName => themeName !== name);\n this.themeNamesSub.next(names);\n }\n result.next(deleteResult);\n result.complete();\n },\n error: error => result.error(error),\n complete: () => result.complete()\n });\n }\n return result;\n }\n\n /**\n * Resets the preview theme to the default element theme.\n */\n resetPreview(): void {\n this.previewTheme = { name: '__preview', schemes: { dark: {}, light: {} } };\n this.removeThemeCSS(this.previewTheme.name);\n }\n\n /**\n * Sets the active theme to the given name. If no name is given, the default element theme is used.\n */\n setActiveTheme(name?: string, type?: ThemeType): Observable<boolean> {\n const theType = type ?? this._resolvedColorScheme ?? 'auto';\n const theName = name ?? this.activeThemeName ?? ELEMENT_THEME_NAME;\n\n if (theName === this.activeThemeName) {\n return of(true);\n }\n if (!this.hasTheme(theName)) {\n return of(false);\n }\n\n const result = new ReplaySubject<boolean>(1);\n this.activeThemeName = theName;\n // Make the change in the remove store\n const store =\n theName !== ELEMENT_THEME_NAME\n ? this.themeStore.activateTheme(theName)\n : this.themeStore.deactivateTheme();\n store\n .pipe(\n // On success, load the theme\n switchMap(storeResult => {\n if (storeResult) {\n return this.getTheme(theName);\n } else {\n return throwError(() => 'Cannot change active theme in theme store.');\n }\n }),\n // Only take one to avoid unsubscription issues\n take(1)\n )\n .subscribe({\n next: theme => {\n this.applyTheme(theme, theType);\n result.next(true);\n },\n error: error => {\n console.error(`Activating theme ${name} failed`, error);\n result.next(false);\n },\n complete: () => result.complete()\n });\n return result;\n }\n\n /**\n * Apply `light` or `dark` theme to the document.\n */\n applyThemeType(type: ThemeType): void {\n if (type === this._resolvedColorScheme || !this.darkMediaQuery || !this.mediaQueryListener) {\n return;\n }\n\n this.darkMediaQuery.removeEventListener('change', this.mediaQueryListener);\n\n if (type === 'light') {\n this.toggleDark(false);\n } else if (type === 'dark') {\n this.toggleDark(true);\n } else {\n this.mediaQueryListener();\n this.darkMediaQuery.addEventListener('change', this.mediaQueryListener);\n }\n }\n\n /**\n * Applies the given theme to the document. If no theme is given, the active theme is applied.\n */\n applyTheme(theme?: Theme, type?: ThemeType, overwrite?: boolean): void {\n if (theme) {\n this.applyThemeStyle(theme, type, overwrite);\n } else {\n this.getActiveTheme()\n .pipe(take(1))\n .subscribe({\n next: loadedTheme => this.applyThemeStyle(loadedTheme, type),\n error: error => console.error('Cannot load active theme', error)\n });\n }\n }\n\n /**\n * Updates the given property of the preview theme.\n */\n updateProperty(name: string, value: string, type: keyof ThemeColorSchemes): void {\n if (!this.previewTheme) {\n this.resetPreview();\n }\n this.previewTheme!.schemes[type]![name] = value;\n this.createThemeCSS(this.previewTheme!);\n this.document.documentElement.classList.add('theme-__preview');\n this.dispatchThemeSwitchEvent();\n }\n\n /**\n * Checks if the given theme JSON object is a valid theme.\n */\n isThemeValid(data: unknown): boolean {\n const theme = data as Theme;\n return (\n !!data &&\n typeof data === 'object' &&\n 'name' in data &&\n 'schemes' in data &&\n typeof theme.name === 'string' &&\n typeof theme.schemes === 'object' &&\n this.isThemeTypeValid(theme, 'light') &&\n this.isThemeTypeValid(theme, 'dark')\n );\n }\n\n private isThemeTypeValid(theme: Theme, type: 'light' | 'dark'): boolean {\n return (\n !(type in theme.schemes) ||\n (typeof theme.schemes[type] === 'object' &&\n Object.values(theme.schemes[type] as ThemeColorScheme).every(\n item => typeof item === 'string'\n ) &&\n Object.keys(theme.schemes[type] as ThemeColorScheme).every(\n item => typeof item === 'string'\n ))\n );\n }\n\n private applyThemeStyle(theme?: Theme, type?: ThemeType, overwrite?: boolean): void {\n if (!this.isBrowser) {\n return;\n }\n this.resetPreview();\n\n if (theme && theme.name !== ELEMENT_THEME_NAME && (overwrite || !this.hasThemeCSS(theme))) {\n this.createThemeCSS(theme);\n }\n this.activateTheme(theme);\n\n if (type && type !== this._resolvedColorScheme) {\n this.applyThemeType(type);\n }\n\n this.themeIcons.set(\n Object.fromEntries(Object.entries(theme?.icons ?? {}).map(([key, icon]) => [key, icon]))\n );\n this.themeChange.emit(theme);\n }\n\n private activateTheme(theme?: Theme): void {\n const classList = this.document.documentElement.classList;\n classList.forEach(c => {\n if (c.startsWith('theme-')) {\n classList.remove(c);\n }\n });\n if (theme) {\n classList.add(`theme-${theme.name}`);\n }\n }\n\n private hasThemeCSS(theme: Theme): boolean {\n const id = `__theme-${theme.name}`;\n return !!this.document.getElementById(id);\n }\n\n private createThemeCSS(theme: Theme): void {\n let css = '';\n const themeSelector = `:root.theme-${theme.name}`;\n if (theme.schemes.light) {\n css = this.createThemeVariantCSS(css, themeSelector, theme.schemes.light);\n }\n if (theme.schemes.dark) {\n css = this.createThemeVariantCSS(css, themeSelector + '.app--dark', theme.schemes.dark);\n }\n\n this.removeThemeCSS(theme.name);\n const cssElement = this.document.createElement('style');\n cssElement.id = `__theme-${theme.name}`;\n cssElement.textContent = css;\n\n this.document.body.appendChild(cssElement);\n }\n\n private createThemeVariantCSS(css: string, selector: string, scheme: ThemeColorScheme): string {\n css += `${selector} {\\n`;\n for (const key of Object.keys(scheme)) {\n css += `${key}: ${scheme[key]};\\n`;\n }\n css += '}\\n';\n return css;\n }\n\n private removeThemeCSS(name: string): void {\n const id = `__theme-${name}`;\n this.document.getElementById(id)?.remove();\n this.document.documentElement.classList.remove(`theme-${name}`);\n }\n\n private toggleDark(dark: boolean): void {\n if (!this.isBrowser) {\n return;\n }\n\n this.document.documentElement.classList.toggle('app--dark', dark);\n const colorScheme = dark ? 'dark' : 'light';\n this.meta.updateTag({ name: 'color-scheme', content: colorScheme });\n this.resolvedColorSchemeSub.next(colorScheme);\n this.dispatchThemeSwitchEvent();\n }\n\n private cloneTheme(theme: Theme): Theme {\n const clone: Theme = { ...theme, schemes: {} };\n if (theme.schemes.light) {\n clone.schemes.light = { ...theme.schemes.light };\n }\n if (theme.schemes.dark) {\n clone.schemes.dark = { ...theme.schemes.dark };\n }\n return clone;\n }\n\n private dispatchThemeSwitchEvent(): void {\n window.dispatchEvent(\n new CustomEvent('theme-switch', {\n detail: {\n dark: this._resolvedColorScheme === 'dark',\n colorScheme: this._resolvedColorScheme\n }\n })\n );\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { isPlatformBrowser } from '@angular/common';\nimport { inject, PLATFORM_ID, signal, Signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { fromEvent, map } from 'rxjs';\n\n/**\n * Returns a signal that reflects whether the current Element theme is dark (`true`) or light\n * (`false`). The signal reacts to `theme-switch` events dispatched on `window`.\n *\n * @experimental\n * @returns A boolean signal — `true` when the active theme is dark\n * @throws When called outside of an Angular injection context\n */\nexport const injectIsDarkTheme = (): Signal<boolean> => {\n if (!isPlatformBrowser(inject(PLATFORM_ID))) {\n return signal(false);\n }\n\n return toSignal(\n fromEvent<CustomEvent<{ dark: boolean }>>(window, 'theme-switch').pipe(map(e => e.detail.dark)),\n {\n initialValue: document.documentElement.classList.contains('app--dark')\n }\n );\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-theme-store';\nexport * from './si-theme.service';\nexport * from './si-theme.model';\nexport * from './si-theme-signals';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-threshold.mjs","sources":["../../../../projects/element-ng/threshold/si-readonly-threshold-option.component.ts","../../../../projects/element-ng/threshold/si-threshold.component.ts","../../../../projects/element-ng/threshold/si-threshold.component.html","../../../../projects/element-ng/threshold/si-threshold.module.ts","../../../../projects/element-ng/threshold/index.ts","../../../../projects/element-ng/threshold/siemens-element-ng-threshold.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { SiIconComponent } from '@siemens/element-ng/icon';\nimport { SelectOption } from '@siemens/element-ng/select';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\n@Component({\n selector: 'si-readonly-threshold-option',\n imports: [SiTranslatePipe, SiIconComponent],\n template: `@let opt = option();\n @if (opt && opt.icon) {\n <i class=\"icon-stack\">\n <si-icon class=\"icon me-2\" [class]=\"color()\" [icon]=\"opt.icon\" />\n @if (opt.stackedIcon) {\n <si-icon class=\"icon me-2\" [class]=\"opt.stackedIconColor\" [icon]=\"opt.stackedIcon\" />\n }\n </i>\n }\n <span class=\"text-truncate\">{{ label() | translate }}</span>`,\n styleUrl: './si-readonly-threshold-option.component.scss',\n changeDetection: ChangeDetectionStrategy.Eager,\n host: { class: 'd-flex align-items-center py-2 my-4 px-4 si-h5' }\n})\nexport class SiReadonlyThresholdOptionComponent {\n /** Value of the option to display. */\n readonly value = input.required<string>();\n /** Available threshold options from which the displayed option is selected. */\n readonly options = input.required<SelectOption<unknown>[]>();\n\n protected readonly option = computed(() => {\n const options = this.options();\n const value = this.value();\n if (value && options) {\n return options.find(opt => opt.value === value);\n }\n return undefined;\n });\n\n protected readonly color = computed(() => {\n const option = this.option();\n return !option || option.disabled ? undefined : option.iconColor;\n });\n\n protected readonly label = computed(() => this.option()?.label);\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n OnChanges,\n output,\n viewChildren\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { elementDelete, elementPlus } from '@siemens/element-icons';\nimport { defaultConnectedOverlayScrollStrategy } from '@siemens/element-ng/common';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiNumberInputComponent } from '@siemens/element-ng/number-input';\nimport {\n SelectOption,\n SiSelectComponent,\n SiSelectSimpleOptionsDirective,\n SiSelectSingleValueDirective\n} from '@siemens/element-ng/select';\nimport { SiTranslatePipe, t, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiReadonlyThresholdOptionComponent } from './si-readonly-threshold-option.component';\n\n/**\n * One step in a list of thresholds\n */\nexport interface ThresholdStep {\n /** Threshold value, the first step has no value */\n value?: number;\n /** One of the `SelectOption.id` */\n optionValue: string;\n /** When set to `false`, input fields are highlighted as invalid */\n valid?: boolean;\n /** Optional alias label for the threshold step, used when `useAliasForStepValues` is `true` */\n aliasLabel?: TranslatableString;\n}\n\n@Component({\n selector: 'si-threshold',\n imports: [\n FormsModule,\n NgTemplateOutlet,\n SiIconComponent,\n SiNumberInputComponent,\n SiSelectComponent,\n SiSelectSingleValueDirective,\n SiSelectSimpleOptionsDirective,\n SiTranslatePipe,\n SiReadonlyThresholdOptionComponent\n ],\n templateUrl: './si-threshold.component.html',\n styleUrl: './si-threshold.component.scss',\n changeDetection: ChangeDetectionStrategy.Eager,\n host: {\n '[class.add-remove]': 'canAddRemoveSteps()',\n '[class.horizontal]': 'horizontalLayout()',\n '[class.dec-inc-buttons]': 'showDecIncButtons()'\n }\n})\nexport class SiThresholdComponent implements OnChanges {\n /**\n * Options to be shown in select dropdown\n *\n * @defaultValue []\n */\n readonly options = input<SelectOption<unknown>[]>([]);\n /**\n * The thresholds\n *\n * @defaultValue []\n */\n readonly thresholdSteps = model<ThresholdStep[]>([]);\n /**\n * The unit to show\n *\n * @defaultValue ''\n */\n readonly unit = input('');\n /**\n * The min. value for the threshold value\n *\n * @defaultValue 0\n */\n readonly minValue = input(0);\n /**\n * The max. value for the threshold value\n *\n * @defaultValue 100\n */\n readonly maxValue = input(100);\n /**\n * The step size for the threshold value\n *\n * @defaultValue 1\n */\n readonly stepSize = input(1);\n /**\n * Max. number of steps, 0 for no hard limit\n *\n * @defaultValue 0\n */\n readonly maxSteps = input(0);\n /**\n * Do validation?\n *\n * @defaultValue true\n */\n readonly validation = input(true, { transform: booleanAttribute });\n /**\n * When disabled, steps cannot be added/removed\n *\n * @defaultValue true\n */\n readonly canAddRemoveSteps = input(true, { transform: booleanAttribute });\n /**\n * Use horizontal layout?\n *\n * @defaultValue false\n */\n readonly horizontalLayout = input(false, { transform: booleanAttribute });\n /**\n * Show dec/inc buttons?\n *\n * @defaultValue true\n */\n readonly showDecIncButtons = input(true, { transform: booleanAttribute });\n /**\n * The obvious\n *\n * @defaultValue false\n */\n readonly readonly = input(false, { transform: booleanAttribute });\n /**\n * Indicate that the threshold options are readonly and cannot be changed. This will also disable adding / removing steps.\n *\n * @defaultValue false\n */\n readonly readonlyConditions = input(false, { transform: booleanAttribute });\n /**\n * CDK scroll strategy used for threshold option select overlays.\n *\n * @defaultValue defaultConnectedOverlayScrollStrategy()\n */\n readonly scrollStrategy = input(defaultConnectedOverlayScrollStrategy());\n /**\n * The aria-label for delete button\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_THRESHOLD.DELETE:Remove step`)\n * ```\n */\n readonly deleteAriaLabel = input(t(() => $localize`:@@SI_THRESHOLD.DELETE:Remove step`));\n /**\n * The aria-label for add button\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_THRESHOLD.ADD:Add step`)\n * ```\n */\n readonly addAriaLabel = input(t(() => $localize`:@@SI_THRESHOLD.ADD:Add step`));\n /**\n * The aria-label for input field\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_THRESHOLD.INPUT_LABEL:Threshold value`)\n * ```\n */\n readonly inputAriaLabel = input(t(() => $localize`:@@SI_THRESHOLD.INPUT_LABEL:Threshold value`));\n /**\n * The aria-label for status selection\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_THRESHOLD.STATUS:Status`)\n * ```\n */\n readonly statusAriaLabel = input(t(() => $localize`:@@SI_THRESHOLD.STATUS:Status`));\n\n /**\n * When enabled, numeric step inputs are replaced with readonly text fields displaying the `aliasLabel` of each step.\n * Add/remove step buttons are also hidden.\n *\n * @defaultValue false\n */\n readonly useAliasForStepValues = input(false, { transform: booleanAttribute });\n\n /** Fired when validation status changes */\n readonly validChange = output<boolean>();\n\n protected readonly colors = computed(() => {\n const colorMap = new Map<unknown, string>();\n for (const opt of this.options()) {\n colorMap.set(opt.value, opt.iconColor ?? '');\n }\n return this.thresholdSteps().map(ths => colorMap.get(ths.optionValue) ?? '');\n });\n\n protected readonly icons = addIcons({ elementDelete, elementPlus });\n private _valid = true;\n /**\n * Whether the current input value is valid or not.\n */\n get valid(): boolean {\n return this._valid;\n }\n\n private readonly numberInputs = viewChildren(SiNumberInputComponent);\n\n protected readonly showAddRemoveButtons = computed(\n () =>\n !this.useAliasForStepValues() &&\n this.canAddRemoveSteps() &&\n !this.readonly() &&\n !this.readonlyConditions()\n );\n\n ngOnChanges(): void {\n this.validate();\n }\n\n protected deleteStep(index: number): void {\n const updated = [...this.thresholdSteps()];\n updated.splice(index, 1);\n this.thresholdSteps.set(updated);\n this.validate();\n }\n\n protected addStep(index: number): void {\n const newStep: ThresholdStep = { ...this.thresholdSteps()[index], value: undefined };\n const updated = [...this.thresholdSteps()];\n updated.splice(index + 1, 0, newStep);\n this.thresholdSteps.set(updated);\n this.validate();\n setTimeout(() => this.numberInputs()[index].inputElement().nativeElement.focus());\n }\n\n protected stepChange(): void {\n this.thresholdSteps.set([...this.thresholdSteps()]);\n this.validate();\n }\n\n private validate(): void {\n const prevValid = this.valid;\n this._valid = true;\n for (let i = 1; i < this.thresholdSteps().length; i++) {\n const step = this.thresholdSteps()[i];\n\n if (this.validation()) {\n const prev = this.thresholdSteps()[i - 1];\n const next = this.thresholdSteps()[i + 1];\n\n // valid: withing min/max, each step is lower than next step with step size between\n step.valid =\n step.value != null &&\n step.value >= this.minValue() &&\n step.value <= this.maxValue() &&\n (prev.value == null || step.value - this.stepSize() >= prev.value) &&\n (next?.value == null || step.value + this.stepSize() <= next.value);\n this._valid &&= step.valid;\n } else {\n step.valid = true;\n }\n }\n if (this.valid !== prevValid) {\n this.validChange.emit(this.valid);\n }\n }\n}\n","@for (step of thresholdSteps(); track step) {\n <div class=\"ths-step\">\n @if (!$first) {\n <div class=\"ths-value d-flex align-items-center\">\n @if (showAddRemoveButtons()) {\n <button\n type=\"button\"\n class=\"btn btn-circle btn-tertiary-ghost m-4\"\n [attr.aria-label]=\"deleteAriaLabel() | translate\"\n (click)=\"deleteStep($index)\"\n >\n <si-icon [icon]=\"icons.elementDelete\" />\n </button>\n } @else {\n <div class=\"py-4 my-4\">​</div>\n }\n <div class=\"line\">\n <div class=\"segment\" [class]=\"colors()[$index - 1]\"></div>\n <div class=\"dot\"></div>\n <div class=\"segment\" [class]=\"colors()[$index]\"></div>\n </div>\n <div class=\"d-flex align-items-center text-nowrap m-4\">\n @if (useAliasForStepValues()) {\n <input\n type=\"text\"\n readonly\n class=\"form-control\"\n [value]=\"step.aliasLabel ?? '' | translate\"\n />\n } @else {\n <si-number-input\n #valueInput=\"ngModel\"\n class=\"form-control text-end\"\n [class.is-invalid]=\"step.valid === false\"\n [aria-label]=\"inputAriaLabel() | translate\"\n [readonly]=\"readonly()\"\n [ngModelOptions]=\"{ standalone: true }\"\n [min]=\"minValue()\"\n [max]=\"maxValue()\"\n [step]=\"stepSize()\"\n [unit]=\"unit()\"\n [showButtons]=\"showDecIncButtons()\"\n [required]=\"true\"\n [(ngModel)]=\"step.value\"\n (ngModelChange)=\"stepChange()\"\n />\n }\n </div>\n </div>\n }\n @if ($first && horizontalLayout()) {\n <ng-container\n [ngTemplateOutlet]=\"startend\"\n [ngTemplateOutletContext]=\"{ color: colors()[$index] }\"\n />\n }\n <div class=\"ths-option d-flex align-items-center\">\n @if (showAddRemoveButtons()) {\n <button\n type=\"button\"\n class=\"btn btn-circle btn-secondary m-4\"\n [disabled]=\"maxSteps() && $count >= maxSteps()\"\n [attr.aria-label]=\"addAriaLabel() | translate\"\n (click)=\"addStep($index)\"\n >\n <si-icon [icon]=\"icons.elementPlus\" />\n </button>\n } @else {\n <div class=\"py-4 my-4\">​</div>\n }\n <div class=\"line\" [class]=\"colors()[$index]\">\n <div class=\"segment\"></div>\n </div>\n @if (!readonly() && !readonlyConditions()) {\n <si-select\n class=\"btn btn-ghost my-4\"\n [ariaLabel]=\"statusAriaLabel() | translate\"\n [readonly]=\"readonly()\"\n [options]=\"options()\"\n [scrollStrategy]=\"scrollStrategy()\"\n [(value)]=\"step.optionValue\"\n (valueChange)=\"stepChange()\"\n />\n }\n @if (readonly() || readonlyConditions()) {\n <si-readonly-threshold-option [options]=\"options()\" [value]=\"step.optionValue\" />\n }\n </div>\n @if ($last && horizontalLayout()) {\n <ng-container\n [ngTemplateOutlet]=\"startend\"\n [ngTemplateOutletContext]=\"{ color: colors()[$index] }\"\n />\n }\n </div>\n}\n\n<ng-template #startend let-color=\"color\">\n <div class=\"ths-value d-flex align-items-center startend\">\n <div class=\"py-4 my-4\">​</div>\n <div class=\"line\">\n <div class=\"segment\" [class]=\"color\"></div>\n </div>\n </div>\n</ng-template>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiThresholdComponent } from './si-threshold.component';\n\n@NgModule({\n imports: [SiThresholdComponent],\n exports: [SiThresholdComponent]\n})\nexport class SiThresholdModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-threshold.component';\nexport * from './si-threshold.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-threshold.mjs","sources":["../../../../projects/element-ng/threshold/si-readonly-threshold-option.component.ts","../../../../projects/element-ng/threshold/si-threshold.component.ts","../../../../projects/element-ng/threshold/si-threshold.component.html","../../../../projects/element-ng/threshold/si-threshold.module.ts","../../../../projects/element-ng/threshold/index.ts","../../../../projects/element-ng/threshold/siemens-element-ng-threshold.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { SiIconComponent } from '@siemens/element-ng/icon';\nimport { SelectOption } from '@siemens/element-ng/select';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\n@Component({\n selector: 'si-readonly-threshold-option',\n imports: [SiTranslatePipe, SiIconComponent],\n template: `@let opt = option();\n @if (opt && opt.icon) {\n <i class=\"icon-stack\">\n <si-icon class=\"icon me-2\" [class]=\"color()\" [icon]=\"opt.icon\" />\n @if (opt.stackedIcon) {\n <si-icon class=\"icon me-2\" [class]=\"opt.stackedIconColor\" [icon]=\"opt.stackedIcon\" />\n }\n </i>\n }\n <span class=\"text-truncate\">{{ label() | translate }}</span>`,\n styleUrl: './si-readonly-threshold-option.component.scss',\n changeDetection: ChangeDetectionStrategy.Eager,\n host: { class: 'd-flex align-items-center py-2 my-4 px-4 si-h5' }\n})\nexport class SiReadonlyThresholdOptionComponent {\n /** Value of the option to display. */\n readonly value = input.required<string>();\n /** Available threshold options from which the displayed option is selected. */\n readonly options = input.required<SelectOption<unknown>[]>();\n\n protected readonly option = computed(() => {\n const options = this.options();\n const value = this.value();\n if (value && options) {\n return options.find(opt => opt.value === value);\n }\n return undefined;\n });\n\n protected readonly color = computed(() => {\n const option = this.option();\n return !option || option.disabled ? undefined : option.iconColor;\n });\n\n protected readonly label = computed(() => this.option()?.label);\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n OnChanges,\n output,\n viewChildren\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { elementDelete, elementPlus } from '@siemens/element-icons';\nimport { defaultConnectedOverlayScrollStrategy } from '@siemens/element-ng/common';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiNumberInputComponent } from '@siemens/element-ng/number-input';\nimport {\n SelectOption,\n SiSelectComponent,\n SiSelectSimpleOptionsDirective,\n SiSelectSingleValueDirective\n} from '@siemens/element-ng/select';\nimport { SiTranslatePipe, t, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiReadonlyThresholdOptionComponent } from './si-readonly-threshold-option.component';\n\n/**\n * One step in a list of thresholds\n */\nexport interface ThresholdStep {\n /** Threshold value, the first step has no value */\n value?: number;\n /** One of the `SelectOption.id` */\n optionValue: string;\n /** When set to `false`, input fields are highlighted as invalid */\n valid?: boolean;\n /** Optional alias label for the threshold step, used when `useAliasForStepValues` is `true` */\n aliasLabel?: TranslatableString;\n}\n\n@Component({\n selector: 'si-threshold',\n imports: [\n FormsModule,\n NgTemplateOutlet,\n SiIconComponent,\n SiNumberInputComponent,\n SiSelectComponent,\n SiSelectSingleValueDirective,\n SiSelectSimpleOptionsDirective,\n SiTranslatePipe,\n SiReadonlyThresholdOptionComponent\n ],\n templateUrl: './si-threshold.component.html',\n styleUrl: './si-threshold.component.scss',\n changeDetection: ChangeDetectionStrategy.Eager,\n host: {\n '[class.add-remove]': 'canAddRemoveSteps()',\n '[class.horizontal]': 'horizontalLayout()',\n '[class.dec-inc-buttons]': 'showDecIncButtons()'\n }\n})\nexport class SiThresholdComponent implements OnChanges {\n /**\n * Options to be shown in select dropdown\n *\n * @defaultValue []\n */\n readonly options = input<SelectOption<unknown>[]>([]);\n /**\n * The thresholds\n *\n * @defaultValue []\n */\n readonly thresholdSteps = model<ThresholdStep[]>([]);\n /**\n * The unit to show\n *\n * @defaultValue ''\n */\n readonly unit = input('');\n /**\n * The min. value for the threshold value\n *\n * @defaultValue 0\n */\n readonly minValue = input(0);\n /**\n * The max. value for the threshold value\n *\n * @defaultValue 100\n */\n readonly maxValue = input(100);\n /**\n * The step size for the threshold value\n *\n * @defaultValue 1\n */\n readonly stepSize = input(1);\n /**\n * Max. number of steps, 0 for no hard limit\n *\n * @defaultValue 0\n */\n readonly maxSteps = input(0);\n /**\n * Do validation?\n *\n * @defaultValue true\n */\n readonly validation = input(true, { transform: booleanAttribute });\n /**\n * When disabled, steps cannot be added/removed\n *\n * @defaultValue true\n */\n readonly canAddRemoveSteps = input(true, { transform: booleanAttribute });\n /**\n * Use horizontal layout?\n *\n * @defaultValue false\n */\n readonly horizontalLayout = input(false, { transform: booleanAttribute });\n /**\n * Show dec/inc buttons?\n *\n * @defaultValue true\n */\n readonly showDecIncButtons = input(true, { transform: booleanAttribute });\n /**\n * The obvious\n *\n * @defaultValue false\n */\n readonly readonly = input(false, { transform: booleanAttribute });\n /**\n * Indicate that the threshold options are readonly and cannot be changed. This will also disable adding / removing steps.\n *\n * @defaultValue false\n */\n readonly readonlyConditions = input(false, { transform: booleanAttribute });\n /**\n * CDK scroll strategy used for threshold option select overlays.\n *\n * @defaultValue defaultConnectedOverlayScrollStrategy()\n */\n readonly scrollStrategy = input(defaultConnectedOverlayScrollStrategy());\n /**\n * The aria-label for delete button\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_THRESHOLD.DELETE:Remove step`)\n * ```\n */\n readonly deleteAriaLabel = input(t(() => $localize`:@@SI_THRESHOLD.DELETE:Remove step`));\n /**\n * The aria-label for add button\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_THRESHOLD.ADD:Add step`)\n * ```\n */\n readonly addAriaLabel = input(t(() => $localize`:@@SI_THRESHOLD.ADD:Add step`));\n /**\n * The aria-label for input field\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_THRESHOLD.INPUT_LABEL:Threshold value`)\n * ```\n */\n readonly inputAriaLabel = input(t(() => $localize`:@@SI_THRESHOLD.INPUT_LABEL:Threshold value`));\n /**\n * The aria-label for status selection\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_THRESHOLD.STATUS:Status`)\n * ```\n */\n readonly statusAriaLabel = input(t(() => $localize`:@@SI_THRESHOLD.STATUS:Status`));\n\n /**\n * When enabled, numeric step inputs are replaced with readonly text fields displaying the `aliasLabel` of each step.\n * Add/remove step buttons are also hidden.\n *\n * @defaultValue false\n */\n readonly useAliasForStepValues = input(false, { transform: booleanAttribute });\n\n /** Fired when validation status changes */\n readonly validChange = output<boolean>();\n\n protected readonly colors = computed(() => {\n const colorMap = new Map<unknown, string>();\n for (const opt of this.options()) {\n colorMap.set(opt.value, opt.iconColor ?? '');\n }\n return this.thresholdSteps().map(ths => colorMap.get(ths.optionValue) ?? '');\n });\n\n protected readonly icons = addIcons({ elementDelete, elementPlus });\n private _valid = true;\n /**\n * Whether the current input value is valid or not.\n */\n get valid(): boolean {\n return this._valid;\n }\n\n private readonly numberInputs = viewChildren(SiNumberInputComponent);\n\n protected readonly showAddRemoveButtons = computed(\n () =>\n !this.useAliasForStepValues() &&\n this.canAddRemoveSteps() &&\n !this.readonly() &&\n !this.readonlyConditions()\n );\n\n ngOnChanges(): void {\n this.validate();\n }\n\n protected deleteStep(index: number): void {\n const updated = [...this.thresholdSteps()];\n updated.splice(index, 1);\n this.thresholdSteps.set(updated);\n this.validate();\n }\n\n protected addStep(index: number): void {\n const newStep: ThresholdStep = { ...this.thresholdSteps()[index], value: undefined };\n const updated = [...this.thresholdSteps()];\n updated.splice(index + 1, 0, newStep);\n this.thresholdSteps.set(updated);\n this.validate();\n setTimeout(() => this.numberInputs()[index].inputElement().nativeElement.focus());\n }\n\n protected stepChange(): void {\n this.thresholdSteps.set([...this.thresholdSteps()]);\n this.validate();\n }\n\n private validate(): void {\n const prevValid = this.valid;\n this._valid = true;\n for (let i = 1; i < this.thresholdSteps().length; i++) {\n const step = this.thresholdSteps()[i];\n\n if (this.validation()) {\n const prev = this.thresholdSteps()[i - 1];\n const next = this.thresholdSteps()[i + 1];\n\n // valid: withing min/max, each step is lower than next step with step size between\n step.valid =\n step.value != null &&\n step.value >= this.minValue() &&\n step.value <= this.maxValue() &&\n (prev.value == null || step.value - this.stepSize() >= prev.value) &&\n (next?.value == null || step.value + this.stepSize() <= next.value);\n this._valid &&= step.valid;\n } else {\n step.valid = true;\n }\n }\n if (this.valid !== prevValid) {\n this.validChange.emit(this.valid);\n }\n }\n}\n","@for (step of thresholdSteps(); track step) {\n <div class=\"ths-step\">\n @if (!$first) {\n <div class=\"ths-value d-flex align-items-center\">\n @if (showAddRemoveButtons()) {\n <button\n type=\"button\"\n class=\"btn btn-circle btn-tertiary-ghost m-4\"\n [attr.aria-label]=\"deleteAriaLabel() | translate\"\n (click)=\"deleteStep($index)\"\n >\n <si-icon [icon]=\"icons.elementDelete\" />\n </button>\n } @else {\n <div class=\"py-4 my-4\">​</div>\n }\n <div class=\"line\">\n <div class=\"segment\" [class]=\"colors()[$index - 1]\"></div>\n <div class=\"dot\"></div>\n <div class=\"segment\" [class]=\"colors()[$index]\"></div>\n </div>\n <div class=\"d-flex align-items-center text-nowrap m-4\">\n @if (useAliasForStepValues()) {\n <input\n type=\"text\"\n readonly\n class=\"form-control\"\n [value]=\"step.aliasLabel ?? '' | translate\"\n />\n } @else {\n <si-number-input\n #valueInput=\"ngModel\"\n class=\"form-control text-end\"\n [class.is-invalid]=\"step.valid === false\"\n [aria-label]=\"inputAriaLabel() | translate\"\n [readonly]=\"readonly()\"\n [ngModelOptions]=\"{ standalone: true }\"\n [min]=\"minValue()\"\n [max]=\"maxValue()\"\n [step]=\"stepSize()\"\n [unit]=\"unit()\"\n [showButtons]=\"showDecIncButtons()\"\n [required]=\"true\"\n [(ngModel)]=\"step.value\"\n (ngModelChange)=\"stepChange()\"\n />\n }\n </div>\n </div>\n }\n @if ($first && horizontalLayout()) {\n <ng-container\n [ngTemplateOutlet]=\"startend\"\n [ngTemplateOutletContext]=\"{ color: colors()[$index] }\"\n />\n }\n <div class=\"ths-option d-flex align-items-center\">\n @if (showAddRemoveButtons()) {\n <button\n type=\"button\"\n class=\"btn btn-circle btn-secondary m-4\"\n [disabled]=\"maxSteps() && $count >= maxSteps()\"\n [attr.aria-label]=\"addAriaLabel() | translate\"\n (click)=\"addStep($index)\"\n >\n <si-icon [icon]=\"icons.elementPlus\" />\n </button>\n } @else {\n <div class=\"py-4 my-4\">​</div>\n }\n <div class=\"line\" [class]=\"colors()[$index]\">\n <div class=\"segment\"></div>\n </div>\n @if (!readonly() && !readonlyConditions()) {\n <si-select\n class=\"btn btn-ghost my-4\"\n [ariaLabel]=\"statusAriaLabel() | translate\"\n [readonly]=\"readonly()\"\n [options]=\"options()\"\n [scrollStrategy]=\"scrollStrategy()\"\n [(value)]=\"step.optionValue\"\n (valueChange)=\"stepChange()\"\n />\n }\n @if (readonly() || readonlyConditions()) {\n <si-readonly-threshold-option [options]=\"options()\" [value]=\"step.optionValue\" />\n }\n </div>\n @if ($last && horizontalLayout()) {\n <ng-container\n [ngTemplateOutlet]=\"startend\"\n [ngTemplateOutletContext]=\"{ color: colors()[$index] }\"\n />\n }\n </div>\n}\n\n<ng-template #startend let-color=\"color\">\n <div class=\"ths-value d-flex align-items-center startend\">\n <div class=\"py-4 my-4\">​</div>\n <div class=\"line\">\n <div class=\"segment\" [class]=\"color\"></div>\n </div>\n </div>\n</ng-template>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiThresholdComponent } from './si-threshold.component';\n\n@NgModule({\n imports: [SiThresholdComponent],\n exports: [SiThresholdComponent]\n})\nexport class SiThresholdModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-threshold.component';\nexport * from './si-threshold.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-toast-notification.mjs","sources":["../../../../projects/element-ng/toast-notification/si-toast.model.ts","../../../../projects/element-ng/toast-notification/si-toast-notification/si-toast-notification.component.ts","../../../../projects/element-ng/toast-notification/si-toast-notification/si-toast-notification.component.html","../../../../projects/element-ng/toast-notification/si-toast-notification-drawer/si-toast-notification-drawer.component.ts","../../../../projects/element-ng/toast-notification/si-toast-notification-drawer/si-toast-notification-drawer.component.html","../../../../projects/element-ng/toast-notification/si-toast-notification.service.ts","../../../../projects/element-ng/toast-notification/index.ts","../../../../projects/element-ng/toast-notification/siemens-element-ng-toast-notification.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { StatusType } from '@siemens/element-ng/common';\nimport { Link } from '@siemens/element-ng/link';\nimport { TranslatableString } from '@siemens/element-translate-ng/translate';\nimport { Subject } from 'rxjs';\n\nexport interface SiToast {\n state: StatusType;\n title: TranslatableString;\n message: TranslatableString;\n disableManualClose?: boolean;\n disableAutoClose?: boolean;\n timeout?: number;\n action?: Link;\n close?: () => void;\n translationParams?: { [key: string]: any };\n hidden?: Subject<void>;\n closeAriaLabel?: TranslatableString;\n}\n\nexport const SI_TOAST_AUTO_HIDE_DELAY = 6000;\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostListener,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { elementCancel } from '@siemens/element-icons';\nimport {\n addIcons,\n SiIconComponent,\n SiStatusIconComponent,\n STATUS_ICON_CONFIG\n} from '@siemens/element-ng/icon';\nimport { SiLinkModule } from '@siemens/element-ng/link';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\n\nimport { SI_TOAST_AUTO_HIDE_DELAY, SiToast } from '../si-toast.model';\n\n@Component({\n selector: 'si-toast-notification',\n imports: [SiLinkModule, SiIconComponent, SiStatusIconComponent, SiTranslatePipe],\n templateUrl: './si-toast-notification.component.html',\n styleUrl: './si-toast-notification.component.scss',\n changeDetection: ChangeDetectionStrategy.Eager\n})\nexport class SiToastNotificationComponent {\n private readonly statusIcons = inject(STATUS_ICON_CONFIG);\n /** Toast notification to display. */\n readonly toast = input.required<SiToast>();\n\n private closeAriaLabelDefault = t(() => $localize`:@@SI_TOAST.CLOSE:Close`);\n protected readonly closeAriaLabel = computed(\n () => this.toast().closeAriaLabel ?? this.closeAriaLabelDefault\n );\n protected readonly icons = addIcons({ elementCancel });\n protected readonly status = computed(() => {\n const toast = this.toast();\n return Object.keys(this.statusIcons).includes(toast.state) ? toast.state : 'info';\n });\n protected readonly statusColor = computed(() => this.statusIcons[this.status()].color);\n protected readonly toastTimeoutInSeconds = computed(() => {\n const toast = this.toast();\n return toast.timeout ? toast.timeout / 1000 : SI_TOAST_AUTO_HIDE_DELAY / 1000;\n });\n protected readonly animationMode = signal('running');\n /** Emits when the user pauses automatic dismissal by hovering over the notification. */\n readonly paused = output<void>();\n /** Emits when the user resumes automatic dismissal by moving the pointer away. */\n readonly resumed = output<void>();\n\n @HostListener('mouseenter')\n protected onMouseEnter(): void {\n if (!this.toast().disableAutoClose) {\n this.animationMode.set('paused');\n this.paused.emit();\n }\n }\n\n @HostListener('mouseleave')\n protected onMouseLeave(): void {\n if (!this.toast().disableAutoClose) {\n this.animationMode.set('running');\n this.resumed.emit();\n }\n }\n\n protected close(): void {\n this.toast().close!();\n }\n}\n","@let toastValue = toast();\n@let autoClose = !toastValue.disableAutoClose;\n@let manualClose = !toastValue.disableManualClose;\n<div class=\"si-toast shadow-3\" [class.si-toast-auto-close]=\"autoClose\">\n @if (autoClose) {\n <div\n class=\"si-toast-timer-bar\"\n [style.--play-state]=\"animationMode()\"\n [style.--toast-timer-duration.s]=\"toastTimeoutInSeconds()\"\n ></div>\n }\n <div [class]=\"`bar ${statusColor()}`\"></div>\n <si-status-icon class=\"icon\" [status]=\"status()\" />\n\n <div class=\"toast-content px-4\">\n <p class=\"toast-title\"\n ><b>{{ toastValue.title | translate: toastValue.translationParams }}</b></p\n >\n @if (toastValue.message) {\n <p class=\"mt-4\">{{ toastValue.message | translate: toastValue.translationParams }}</p>\n }\n @if (toastValue.action) {\n <p [class.mt-3]=\"toastValue.message\" [class.mt-4]=\"!toastValue.message\">\n <a [siLink]=\"toastValue.action\">{{\n toastValue.action!.title | translate: toastValue.translationParams\n }}</a>\n </p>\n }\n </div>\n @if (manualClose) {\n <button\n type=\"button\"\n class=\"btn btn-icon btn-tertiary-ghost mt-n2 me-n2\"\n [attr.aria-label]=\"closeAriaLabel() | translate\"\n (click)=\"close()\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, input, output } from '@angular/core';\nimport { areAnimationsDisabled } from '@siemens/element-ng/common';\n\nimport { SiToastNotificationComponent } from '../si-toast-notification/si-toast-notification.component';\nimport { SiToast } from '../si-toast.model';\n\n@Component({\n selector: 'si-toast-notification-drawer',\n imports: [SiToastNotificationComponent],\n templateUrl: './si-toast-notification-drawer.component.html',\n styleUrl: './si-toast-notification-drawer.component.scss',\n host: {\n 'aria-live': 'polite',\n '[class.animations-disabled]': 'animationsDisabled'\n }\n})\nexport class SiToastNotificationDrawerComponent {\n /** Toast notifications displayed by the drawer. */\n readonly toasts = input.required<SiToast[]>();\n /** Emits when the user pauses a toast's automatic dismissal by hovering over it. */\n readonly toastPaused = output<SiToast>();\n /** Emits when the user resumes a toast's automatic dismissal by moving the pointer away. */\n readonly toastResumed = output<SiToast>();\n\n protected animationsDisabled = areAnimationsDisabled();\n}\n","@for (toast of toasts(); track toast) {\n <si-toast-notification\n class=\"position-relative\"\n animate.enter=\"toast-enter\"\n animate.leave=\"toast-leave\"\n [toast]=\"toast\"\n (paused)=\"toastPaused.emit(toast)\"\n (resumed)=\"toastResumed.emit(toast)\"\n />\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n ComponentRef,\n inject,\n Injectable,\n Injector,\n inputBinding,\n OnDestroy,\n outputBinding,\n PLATFORM_ID,\n signal\n} from '@angular/core';\nimport { isRTL, StatusType } from '@siemens/element-ng/common';\nimport { Link } from '@siemens/element-ng/link';\nimport { SiNoTranslateService, SiTranslateService } from '@siemens/element-translate-ng/translate';\nimport { Subject } from 'rxjs';\n\nimport { SiToastNotificationDrawerComponent } from './si-toast-notification-drawer/si-toast-notification-drawer.component';\nimport { SI_TOAST_AUTO_HIDE_DELAY, SiToast } from './si-toast.model';\n\n@Injectable({ providedIn: 'root' })\nexport class SiToastNotificationService implements OnDestroy {\n private readonly activeToastsSignal = signal<SiToast[]>([]);\n\n /** List of currently active toasts to see details or close them. */\n get activeToasts(): SiToast[] {\n return this.activeToastsSignal();\n }\n\n private readonly maxToasts = 3;\n\n private componentRef?: ComponentRef<SiToastNotificationDrawerComponent>;\n private overlayRef?: OverlayRef;\n\n private injector = inject(Injector);\n private overlay = inject(Overlay);\n private toastTimeoutMap = new Map<SiToast, any>();\n private toastTimerDefaults = new Map<\n SiToast,\n { pendingTimeout: number; initializeTime: number }\n >();\n\n constructor() {\n if (isPlatformBrowser(inject(PLATFORM_ID))) {\n this.addToastDrawer();\n }\n }\n\n ngOnDestroy(): void {\n this.overlayRef?.dispose();\n this.componentRef?.destroy();\n }\n\n /**\n * Queue a new toast to be shown.\n * @param action - Passing a Link object will optionally add a clickable link to the toast which can contain an action.\n * @returns the toast object\n */\n queueToastNotification(\n state: StatusType,\n title: string,\n message: string,\n disableAutoClose?: boolean,\n disableManualClose?: boolean,\n action?: Link,\n translationParams?: { [key: string]: any }\n ): SiToast {\n const toast: SiToast = {\n state,\n title,\n message,\n disableAutoClose,\n disableManualClose,\n action,\n hidden: new Subject(),\n translationParams\n };\n return this.showToastNotification(toast);\n }\n\n /**\n * Show a toast notification\n * @param toast - The toast object of the toast to be shown, can also be constructed while calling this.\n */\n showToastNotification(toast: SiToast): SiToast {\n this.overlayRef?.setDirection(isRTL() ? 'rtl' : 'ltr');\n toast.timeout ??= SI_TOAST_AUTO_HIDE_DELAY;\n toast.hidden ??= new Subject();\n toast.close = () => this.hideToastNotification(toast);\n\n const toasts = this.activeToastsSignal().concat(toast);\n this.activeToastsSignal.set(toasts);\n if (toasts.length > this.maxToasts) {\n this.hideToastNotification(toasts[0]);\n }\n if (!toast.disableAutoClose && toast.timeout) {\n this.toastTimerDefaults.set(toast, {\n pendingTimeout: toast.timeout,\n initializeTime: Date.now()\n });\n this.toastTimeoutMap.set(\n toast,\n setTimeout(() => this.hideToastNotification(toast), toast.timeout)\n );\n }\n\n // when using popover API, brings toast to top layer\n const host = this.overlayRef?.hostElement;\n if (host?.getAttribute('popover')) {\n try {\n host.hidePopover();\n host.showPopover();\n } catch {\n // ignored\n }\n }\n\n return toast;\n }\n\n /**\n * Hide a toast notification\n * @param toast - The toast object of the toast to be hidden, can be retrieved from {@link activeToasts} and is returned by {@link queueToastNotification}.\n */\n hideToastNotification(toast?: SiToast): void {\n const hiddenToasts: SiToast[] = [];\n const activeToasts: SiToast[] = [];\n this.activeToastsSignal().forEach(item => {\n if (!toast || item === toast) {\n hiddenToasts.push(item);\n } else {\n activeToasts.push(item);\n }\n });\n\n this.activeToastsSignal.set(activeToasts);\n\n hiddenToasts.forEach(item => {\n item.hidden?.next();\n item.hidden?.complete();\n this.toastTimerDefaults.delete(item);\n this.toastTimeoutMap.delete(item);\n });\n }\n\n private pauseToastNotification(toast: SiToast): void {\n if (!toast.disableAutoClose) {\n clearTimeout(this.toastTimeoutMap.get(toast));\n\n const initialTimeout = this.toastTimerDefaults.get(toast)?.initializeTime;\n const elapsedTime = initialTimeout ? Date.now() - initialTimeout : 0;\n this.toastTimerDefaults.get(toast)!.pendingTimeout -= elapsedTime;\n }\n }\n\n private resumeToastNotification(toast: SiToast): void {\n if (!toast.disableAutoClose) {\n this.toastTimerDefaults.get(toast)!.initializeTime = Date.now();\n this.toastTimeoutMap.set(\n toast,\n setTimeout(() => {\n this.hideToastNotification(toast);\n }, this.toastTimerDefaults.get(toast)!.pendingTimeout)\n );\n }\n }\n\n private addToastDrawer(): void {\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay.position().global().end().bottom()\n });\n const portal = new ComponentPortal(\n SiToastNotificationDrawerComponent,\n null,\n this.buildInjector(),\n undefined,\n [\n inputBinding('toasts', this.activeToastsSignal),\n outputBinding('toastPaused', (toast: SiToast) => this.pauseToastNotification(toast)),\n outputBinding('toastResumed', (toast: SiToast) => this.resumeToastNotification(toast))\n ]\n );\n this.componentRef = this.overlayRef.attach(portal);\n }\n\n private buildInjector(): Injector {\n if (this.injector.get(SiTranslateService, null)) {\n return this.injector;\n }\n // TODO remove once translation must be defined at application start\n // Notification service is provided in 'root'. If no translation is defined, SiNoTranslateService is not provided\n return Injector.create({\n providers: [{ provide: SiTranslateService, useClass: SiNoTranslateService, deps: [] }],\n parent: this.injector\n });\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-toast.model';\nexport * from './si-toast-notification.service';\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-toast-notification.mjs","sources":["../../../../projects/element-ng/toast-notification/si-toast.model.ts","../../../../projects/element-ng/toast-notification/si-toast-notification/si-toast-notification.component.ts","../../../../projects/element-ng/toast-notification/si-toast-notification/si-toast-notification.component.html","../../../../projects/element-ng/toast-notification/si-toast-notification-drawer/si-toast-notification-drawer.component.ts","../../../../projects/element-ng/toast-notification/si-toast-notification-drawer/si-toast-notification-drawer.component.html","../../../../projects/element-ng/toast-notification/si-toast-notification.service.ts","../../../../projects/element-ng/toast-notification/index.ts","../../../../projects/element-ng/toast-notification/siemens-element-ng-toast-notification.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { StatusType } from '@siemens/element-ng/common';\nimport { Link } from '@siemens/element-ng/link';\nimport { TranslatableString } from '@siemens/element-translate-ng/translate';\nimport { Subject } from 'rxjs';\n\nexport interface SiToast {\n state: StatusType;\n title: TranslatableString;\n message: TranslatableString;\n disableManualClose?: boolean;\n disableAutoClose?: boolean;\n timeout?: number;\n action?: Link;\n close?: () => void;\n translationParams?: { [key: string]: any };\n hidden?: Subject<void>;\n closeAriaLabel?: TranslatableString;\n}\n\nexport const SI_TOAST_AUTO_HIDE_DELAY = 6000;\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostListener,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { elementCancel } from '@siemens/element-icons';\nimport {\n addIcons,\n SiIconComponent,\n SiStatusIconComponent,\n STATUS_ICON_CONFIG\n} from '@siemens/element-ng/icon';\nimport { SiLinkModule } from '@siemens/element-ng/link';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\n\nimport { SI_TOAST_AUTO_HIDE_DELAY, SiToast } from '../si-toast.model';\n\n@Component({\n selector: 'si-toast-notification',\n imports: [SiLinkModule, SiIconComponent, SiStatusIconComponent, SiTranslatePipe],\n templateUrl: './si-toast-notification.component.html',\n styleUrl: './si-toast-notification.component.scss',\n changeDetection: ChangeDetectionStrategy.Eager\n})\nexport class SiToastNotificationComponent {\n private readonly statusIcons = inject(STATUS_ICON_CONFIG);\n /** Toast notification to display. */\n readonly toast = input.required<SiToast>();\n\n private closeAriaLabelDefault = t(() => $localize`:@@SI_TOAST.CLOSE:Close`);\n protected readonly closeAriaLabel = computed(\n () => this.toast().closeAriaLabel ?? this.closeAriaLabelDefault\n );\n protected readonly icons = addIcons({ elementCancel });\n protected readonly status = computed(() => {\n const toast = this.toast();\n return Object.keys(this.statusIcons).includes(toast.state) ? toast.state : 'info';\n });\n protected readonly statusColor = computed(() => this.statusIcons[this.status()].color);\n protected readonly toastTimeoutInSeconds = computed(() => {\n const toast = this.toast();\n return toast.timeout ? toast.timeout / 1000 : SI_TOAST_AUTO_HIDE_DELAY / 1000;\n });\n protected readonly animationMode = signal('running');\n /** Emits when the user pauses automatic dismissal by hovering over the notification. */\n readonly paused = output<void>();\n /** Emits when the user resumes automatic dismissal by moving the pointer away. */\n readonly resumed = output<void>();\n\n @HostListener('mouseenter')\n protected onMouseEnter(): void {\n if (!this.toast().disableAutoClose) {\n this.animationMode.set('paused');\n this.paused.emit();\n }\n }\n\n @HostListener('mouseleave')\n protected onMouseLeave(): void {\n if (!this.toast().disableAutoClose) {\n this.animationMode.set('running');\n this.resumed.emit();\n }\n }\n\n protected close(): void {\n this.toast().close!();\n }\n}\n","@let toastValue = toast();\n@let autoClose = !toastValue.disableAutoClose;\n@let manualClose = !toastValue.disableManualClose;\n<div class=\"si-toast shadow-3\" [class.si-toast-auto-close]=\"autoClose\">\n @if (autoClose) {\n <div\n class=\"si-toast-timer-bar\"\n [style.--play-state]=\"animationMode()\"\n [style.--toast-timer-duration.s]=\"toastTimeoutInSeconds()\"\n ></div>\n }\n <div [class]=\"`bar ${statusColor()}`\"></div>\n <si-status-icon class=\"icon\" [status]=\"status()\" />\n\n <div class=\"toast-content px-4\">\n <p class=\"toast-title\"\n ><b>{{ toastValue.title | translate: toastValue.translationParams }}</b></p\n >\n @if (toastValue.message) {\n <p class=\"mt-4\">{{ toastValue.message | translate: toastValue.translationParams }}</p>\n }\n @if (toastValue.action) {\n <p [class.mt-3]=\"toastValue.message\" [class.mt-4]=\"!toastValue.message\">\n <a [siLink]=\"toastValue.action\">{{\n toastValue.action!.title | translate: toastValue.translationParams\n }}</a>\n </p>\n }\n </div>\n @if (manualClose) {\n <button\n type=\"button\"\n class=\"btn btn-icon btn-tertiary-ghost mt-n2 me-n2\"\n [attr.aria-label]=\"closeAriaLabel() | translate\"\n (click)=\"close()\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, input, output } from '@angular/core';\nimport { areAnimationsDisabled } from '@siemens/element-ng/common';\n\nimport { SiToastNotificationComponent } from '../si-toast-notification/si-toast-notification.component';\nimport { SiToast } from '../si-toast.model';\n\n@Component({\n selector: 'si-toast-notification-drawer',\n imports: [SiToastNotificationComponent],\n templateUrl: './si-toast-notification-drawer.component.html',\n styleUrl: './si-toast-notification-drawer.component.scss',\n host: {\n 'aria-live': 'polite',\n '[class.animations-disabled]': 'animationsDisabled'\n }\n})\nexport class SiToastNotificationDrawerComponent {\n /** Toast notifications displayed by the drawer. */\n readonly toasts = input.required<SiToast[]>();\n /** Emits when the user pauses a toast's automatic dismissal by hovering over it. */\n readonly toastPaused = output<SiToast>();\n /** Emits when the user resumes a toast's automatic dismissal by moving the pointer away. */\n readonly toastResumed = output<SiToast>();\n\n protected animationsDisabled = areAnimationsDisabled();\n}\n","@for (toast of toasts(); track toast) {\n <si-toast-notification\n class=\"position-relative\"\n animate.enter=\"toast-enter\"\n animate.leave=\"toast-leave\"\n [toast]=\"toast\"\n (paused)=\"toastPaused.emit(toast)\"\n (resumed)=\"toastResumed.emit(toast)\"\n />\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n ComponentRef,\n inject,\n Injectable,\n Injector,\n inputBinding,\n OnDestroy,\n outputBinding,\n PLATFORM_ID,\n signal\n} from '@angular/core';\nimport { isRTL, StatusType } from '@siemens/element-ng/common';\nimport { Link } from '@siemens/element-ng/link';\nimport { SiNoTranslateService, SiTranslateService } from '@siemens/element-translate-ng/translate';\nimport { Subject } from 'rxjs';\n\nimport { SiToastNotificationDrawerComponent } from './si-toast-notification-drawer/si-toast-notification-drawer.component';\nimport { SI_TOAST_AUTO_HIDE_DELAY, SiToast } from './si-toast.model';\n\n@Injectable({ providedIn: 'root' })\nexport class SiToastNotificationService implements OnDestroy {\n private readonly activeToastsSignal = signal<SiToast[]>([]);\n\n /** List of currently active toasts to see details or close them. */\n get activeToasts(): SiToast[] {\n return this.activeToastsSignal();\n }\n\n private readonly maxToasts = 3;\n\n private componentRef?: ComponentRef<SiToastNotificationDrawerComponent>;\n private overlayRef?: OverlayRef;\n\n private injector = inject(Injector);\n private overlay = inject(Overlay);\n private toastTimeoutMap = new Map<SiToast, any>();\n private toastTimerDefaults = new Map<\n SiToast,\n { pendingTimeout: number; initializeTime: number }\n >();\n\n constructor() {\n if (isPlatformBrowser(inject(PLATFORM_ID))) {\n this.addToastDrawer();\n }\n }\n\n ngOnDestroy(): void {\n this.overlayRef?.dispose();\n this.componentRef?.destroy();\n }\n\n /**\n * Queue a new toast to be shown.\n * @param action - Passing a Link object will optionally add a clickable link to the toast which can contain an action.\n * @returns the toast object\n */\n queueToastNotification(\n state: StatusType,\n title: string,\n message: string,\n disableAutoClose?: boolean,\n disableManualClose?: boolean,\n action?: Link,\n translationParams?: { [key: string]: any }\n ): SiToast {\n const toast: SiToast = {\n state,\n title,\n message,\n disableAutoClose,\n disableManualClose,\n action,\n hidden: new Subject(),\n translationParams\n };\n return this.showToastNotification(toast);\n }\n\n /**\n * Show a toast notification\n * @param toast - The toast object of the toast to be shown, can also be constructed while calling this.\n */\n showToastNotification(toast: SiToast): SiToast {\n this.overlayRef?.setDirection(isRTL() ? 'rtl' : 'ltr');\n toast.timeout ??= SI_TOAST_AUTO_HIDE_DELAY;\n toast.hidden ??= new Subject();\n toast.close = () => this.hideToastNotification(toast);\n\n const toasts = this.activeToastsSignal().concat(toast);\n this.activeToastsSignal.set(toasts);\n if (toasts.length > this.maxToasts) {\n this.hideToastNotification(toasts[0]);\n }\n if (!toast.disableAutoClose && toast.timeout) {\n this.toastTimerDefaults.set(toast, {\n pendingTimeout: toast.timeout,\n initializeTime: Date.now()\n });\n this.toastTimeoutMap.set(\n toast,\n setTimeout(() => this.hideToastNotification(toast), toast.timeout)\n );\n }\n\n // when using popover API, brings toast to top layer\n const host = this.overlayRef?.hostElement;\n if (host?.getAttribute('popover')) {\n try {\n host.hidePopover();\n host.showPopover();\n } catch {\n // ignored\n }\n }\n\n return toast;\n }\n\n /**\n * Hide a toast notification\n * @param toast - The toast object of the toast to be hidden, can be retrieved from {@link activeToasts} and is returned by {@link queueToastNotification}.\n */\n hideToastNotification(toast?: SiToast): void {\n const hiddenToasts: SiToast[] = [];\n const activeToasts: SiToast[] = [];\n this.activeToastsSignal().forEach(item => {\n if (!toast || item === toast) {\n hiddenToasts.push(item);\n } else {\n activeToasts.push(item);\n }\n });\n\n this.activeToastsSignal.set(activeToasts);\n\n hiddenToasts.forEach(item => {\n item.hidden?.next();\n item.hidden?.complete();\n this.toastTimerDefaults.delete(item);\n this.toastTimeoutMap.delete(item);\n });\n }\n\n private pauseToastNotification(toast: SiToast): void {\n if (!toast.disableAutoClose) {\n clearTimeout(this.toastTimeoutMap.get(toast));\n\n const initialTimeout = this.toastTimerDefaults.get(toast)?.initializeTime;\n const elapsedTime = initialTimeout ? Date.now() - initialTimeout : 0;\n this.toastTimerDefaults.get(toast)!.pendingTimeout -= elapsedTime;\n }\n }\n\n private resumeToastNotification(toast: SiToast): void {\n if (!toast.disableAutoClose) {\n this.toastTimerDefaults.get(toast)!.initializeTime = Date.now();\n this.toastTimeoutMap.set(\n toast,\n setTimeout(() => {\n this.hideToastNotification(toast);\n }, this.toastTimerDefaults.get(toast)!.pendingTimeout)\n );\n }\n }\n\n private addToastDrawer(): void {\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay.position().global().end().bottom()\n });\n const portal = new ComponentPortal(\n SiToastNotificationDrawerComponent,\n null,\n this.buildInjector(),\n undefined,\n [\n inputBinding('toasts', this.activeToastsSignal),\n outputBinding('toastPaused', (toast: SiToast) => this.pauseToastNotification(toast)),\n outputBinding('toastResumed', (toast: SiToast) => this.resumeToastNotification(toast))\n ]\n );\n this.componentRef = this.overlayRef.attach(portal);\n }\n\n private buildInjector(): Injector {\n if (this.injector.get(SiTranslateService, null)) {\n return this.injector;\n }\n // TODO remove once translation must be defined at application start\n // Notification service is provided in 'root'. If no translation is defined, SiNoTranslateService is not provided\n return Injector.create({\n providers: [{ provide: SiTranslateService, useClass: SiNoTranslateService, deps: [] }],\n parent: this.injector\n });\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-toast.model';\nexport * from './si-toast-notification.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|