@siemens/element-ng 48.0.3 → 48.2.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- package/accordion/index.d.ts +2 -1
- package/avatar/index.d.ts +3 -4
- package/card/index.d.ts +68 -29
- package/circle-status/index.d.ts +2 -1
- package/common/index.d.ts +11 -0
- package/dashboard/index.d.ts +6 -1
- package/datepicker/index.d.ts +32 -32
- package/fesm2022/siemens-element-ng-accordion.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-avatar.mjs +32 -36
- package/fesm2022/siemens-element-ng-avatar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-breadcrumb.mjs +2 -2
- package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-card.mjs +103 -37
- package/fesm2022/siemens-element-ng-card.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-circle-status.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-column-selection-dialog.mjs +2 -2
- package/fesm2022/siemens-element-ng-column-selection-dialog.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-common.mjs +6 -0
- package/fesm2022/siemens-element-ng-common.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-connection-strength.mjs +2 -2
- package/fesm2022/siemens-element-ng-connection-strength.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-content-action-bar.mjs +2 -2
- package/fesm2022/siemens-element-ng-content-action-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-dashboard.mjs +34 -35
- package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-datatable.mjs +5 -0
- package/fesm2022/siemens-element-ng-datatable.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-date-range-filter.mjs +1 -1
- package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-datepicker.mjs +176 -142
- package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-file-uploader.mjs +9 -2
- package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filter-bar.mjs +5 -5
- package/fesm2022/siemens-element-ng-filter-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filtered-search.mjs +34 -13
- package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-form.mjs +7 -1
- package/fesm2022/siemens-element-ng-form.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-formly.mjs +18 -18
- package/fesm2022/siemens-element-ng-formly.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-inline-notification.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-ip-input.mjs +38 -0
- package/fesm2022/siemens-element-ng-ip-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-language-switcher.mjs +1 -1
- package/fesm2022/siemens-element-ng-language-switcher.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-list-details.mjs +9 -4
- package/fesm2022/siemens-element-ng-list-details.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-main-detail-container.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar-vertical.mjs +16 -3
- package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-notification-item.mjs +71 -0
- package/fesm2022/siemens-element-ng-notification-item.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-pagination.mjs +2 -2
- package/fesm2022/siemens-element-ng-pagination.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-photo-upload.mjs +1 -1
- package/fesm2022/siemens-element-ng-photo-upload.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-progressbar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-resize-observer.mjs +0 -1
- package/fesm2022/siemens-element-ng-resize-observer.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-result-details-list.mjs +5 -0
- package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-search-bar.mjs +14 -4
- package/fesm2022/siemens-element-ng-search-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-side-panel.mjs +2 -2
- package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-sort-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-split.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-status-bar.mjs +2 -2
- package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tabs-legacy.mjs +2 -2
- package/fesm2022/siemens-element-ng-tabs-legacy.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tabs.mjs +45 -12
- package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tooltip.mjs +5 -6
- package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tree-view.mjs +4 -4
- package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-typeahead.mjs +329 -257
- package/fesm2022/siemens-element-ng-typeahead.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-wizard.mjs.map +1 -1
- package/file-uploader/index.d.ts +3 -1
- package/filter-bar/index.d.ts +13 -5
- package/form/index.d.ts +28 -29
- package/inline-notification/index.d.ts +3 -2
- package/ip-input/index.d.ts +42 -4
- package/landing-page/index.d.ts +3 -2
- package/language-switcher/index.d.ts +3 -1
- package/list-details/index.d.ts +2 -0
- package/main-detail-container/index.d.ts +4 -4
- package/navbar/index.d.ts +1 -1
- package/notification-item/index.d.ts +141 -0
- package/notification-item/package.json +3 -0
- package/package.json +19 -11
- package/progressbar/index.d.ts +3 -3
- package/result-details-list/index.d.ts +4 -2
- package/schematics/collection.json +28 -0
- package/schematics/ng-add/index.js +16 -0
- package/schematics/ng-add/schema.json +16 -0
- package/schematics/scss-import-to-siemens-migration/index.js +101 -0
- package/schematics/scss-import-to-siemens-migration/schema.json +16 -0
- package/schematics/scss-import-to-siemens-migration/style-mappings.js +46 -0
- package/schematics/simpl-siemens-migration/index.js +17 -0
- package/schematics/simpl-siemens-migration/schema.json +16 -0
- package/schematics/ts-import-to-siemens-migration/index.js +118 -0
- package/schematics/ts-import-to-siemens-migration/mappings/charts-ng-mappings.js +70 -0
- package/schematics/ts-import-to-siemens-migration/mappings/dashboards-ng-mappings.js +52 -0
- package/schematics/ts-import-to-siemens-migration/mappings/element-ng-mappings.js +651 -0
- package/schematics/ts-import-to-siemens-migration/mappings/element-translate-ng-mappings.js +21 -0
- package/schematics/ts-import-to-siemens-migration/mappings/index.js +9 -0
- package/schematics/ts-import-to-siemens-migration/mappings/maps-ng-mappings.js +46 -0
- package/schematics/ts-import-to-siemens-migration/model.js +4 -0
- package/schematics/ts-import-to-siemens-migration/schema.json +16 -0
- package/schematics/utils/index.js +8 -0
- package/schematics/utils/project-utils.js +75 -0
- package/schematics/utils/schematics-file-system.js +22 -0
- package/schematics/utils/testing.js +41 -0
- package/schematics/utils/ts-utils.js +99 -0
- package/search-bar/index.d.ts +11 -1
- package/select/index.d.ts +7 -5
- package/sort-bar/index.d.ts +3 -3
- package/split/index.d.ts +3 -2
- package/status-bar/index.d.ts +3 -2
- package/tabs/index.d.ts +15 -1
- package/template-i18n.json +8 -0
- package/tooltip/index.d.ts +1 -1
- package/translate/index.d.ts +8 -0
- package/tree-view/index.d.ts +4 -4
- package/typeahead/index.d.ts +85 -4
- package/wizard/index.d.ts +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-resize-observer.mjs","sources":["../../../../projects/element-ng/resize-observer/resize-observer.service.ts","../../../../projects/element-ng/resize-observer/si-resize-observer.directive.ts","../../../../projects/element-ng/resize-observer/si-responsive-container.directive.ts","../../../../projects/element-ng/resize-observer/si-resize-observer.module.ts","../../../../projects/element-ng/resize-observer/index.ts","../../../../projects/element-ng/resize-observer/siemens-element-ng-resize-observer.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, NgZone, PLATFORM_ID } from '@angular/core';\nimport { Observable, Subscriber } from 'rxjs';\n\nexport interface ElementDimensions {\n width: number;\n height: number;\n}\n\ninterface ResizeSubscriber {\n sub: Subscriber<ElementDimensions>;\n dim?: ElementDimensions;\n throttle: number;\n blocked: boolean;\n emitImmediate?: boolean;\n}\n\ninterface Listener {\n element: Element;\n subscribers: ResizeSubscriber[];\n}\n\ninterface QueueEntry {\n element: Element;\n subscriber: ResizeSubscriber;\n unblock: boolean;\n force: boolean;\n}\n\n/**\n * A service wrapping `ResizeObserver`. This is a service for those reasons:\n * - only one `ResizeObserver` should be used for performance reason.\n * - For Angular change detection to work, explicit `ngZone` calls are necessary\n * - Observable stream\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ResizeObserverService {\n private listeners = new Map<Element, Listener>();\n private resizeObserver?: ResizeObserver;\n private timerQueue = new Map<number, QueueEntry[]>();\n private zone = inject(NgZone);\n\n constructor() {\n const isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n if (!isBrowser || !ResizeObserver) {\n return;\n }\n this.resizeObserver = new ResizeObserver((entries: ResizeObserverEntry[]) =>\n entries.forEach(entry => this.handleElement(entry.target))\n );\n }\n\n /**\n * Observe the size of an element. Returns an observable with the changes.\n * @param element - The element to observe\n * @param throttle - Throttle time in ms. Will emit this time after the resize\n * @param emitInitial - Emit the initial size after subscribe?\n * @param emitImmediate - Emit an event immediately after the size changes. Useful e.g. for visibility checks.\n */\n observe(\n element: Element,\n throttle: number,\n emitInitial?: boolean,\n emitImmediate?: boolean\n ): Observable<ElementDimensions> {\n let entry = this.listeners.get(element);\n if (!entry) {\n entry = { element, subscribers: [] };\n this.listeners.set(element, entry);\n }\n\n return new Observable<ElementDimensions>(subscriber => {\n const sub: ResizeSubscriber = {\n sub: subscriber,\n dim: undefined,\n throttle,\n blocked: false,\n emitImmediate\n };\n this.subscriberAdded(entry!, sub, emitInitial);\n return () => this.subscriberRemoved(entry!, sub);\n });\n }\n\n private subscriberAdded(\n entry: Listener,\n subscriber: ResizeSubscriber,\n emitInitial?: boolean\n ): void {\n entry.subscribers.push(subscriber);\n if (entry.subscribers.length === 1) {\n this.resizeObserver?.observe(entry.element);\n }\n\n if (emitInitial) {\n this.schedule(0, entry.element, subscriber, false, true);\n }\n }\n\n private subscriberRemoved(entry: Listener, subscriber: ResizeSubscriber): void {\n const index = entry.subscribers.indexOf(subscriber);\n if (index >= 0) {\n entry.subscribers.splice(index, 1);\n }\n if (entry.subscribers.length === 0) {\n // no more subscribers, tear down everything\n this.resizeObserver?.unobserve(entry.element);\n this.listeners.delete(entry.element);\n }\n this.unschedule(subscriber);\n // close down, no re-subscription possible\n subscriber.sub.complete();\n }\n\n private handleElement(element: Element): void {\n const entry = this.listeners.get(element);\n if (!entry) {\n this.resizeObserver?.unobserve(element);\n return;\n }\n entry.subscribers.forEach(sub => this.handleResizeSubscriber(element, sub));\n }\n\n private handleResizeSubscriber(element: Element, entry: ResizeSubscriber): void {\n if (entry.blocked) {\n return;\n }\n if (entry.emitImmediate) {\n this.schedule(0, element, entry, false);\n }\n this.schedule(entry.throttle, element, entry, true);\n }\n\n private emitSize(element: Element, entry: ResizeSubscriber, force = false): void {\n const dimensions = { width: element.clientWidth, height: element.clientHeight };\n if (\n !force &&\n entry.dim?.width === dimensions.width &&\n entry.dim?.height === dimensions.height\n ) {\n // Prevent spurious emissions. Subpixels and all..\n return;\n }\n entry.dim = dimensions;\n entry.sub.next(dimensions);\n }\n\n private schedule(\n timeout: number,\n element: Element,\n subscriber: ResizeSubscriber,\n unblock: boolean,\n force = false\n ): void {\n if (unblock) {\n subscriber.blocked = true;\n }\n\n let queue = this.timerQueue.get(timeout);\n if (!queue) {\n queue = [];\n this.timerQueue.set(timeout, queue);\n setTimeout(() => {\n this.timerQueue.delete(timeout);\n this.processQueue(queue!);\n }, timeout);\n }\n\n queue.push({ element, subscriber, unblock, force });\n }\n\n private unschedule(entry: ResizeSubscriber): void {\n const queued = this.timerQueue.get(entry.throttle);\n if (queued) {\n const index = queued.findIndex(q => q.subscriber === entry);\n if (index > -1) {\n queued.splice(index, 1);\n }\n }\n }\n\n private processQueue(queue: QueueEntry[]): void {\n this.zone.run(() => {\n queue?.forEach(q => {\n if (q.unblock) {\n q.subscriber.blocked = false;\n }\n this.emitSize(q.element, q.subscriber, q.force);\n });\n });\n }\n\n /**\n * check size on all observed elements. Only use in testing!\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n _checkAll(): void {\n this.listeners.forEach(entry => this.handleElement(entry.element));\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n output\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ElementDimensions, ResizeObserverService } from './resize-observer.service';\n\n/**\n * Directive to emit events on element size change. Use like this:\n * `<div (siResizeObserver)=\"handleResize($event)\">`\n * When the size of the element changes, an event in the format\n * `{ width: number, height: number }`\n * will be emitted. Also an initial event will be emitted on init.\n *\n * By default, events are throttled and to an event every 100ms. To change\n * this, add `[resizeThrottle]=\"200\"` on the same element. Input in milliseconds.\n */\n@Directive({\n selector: '[siResizeObserver]'\n})\nexport class SiResizeObserverDirective implements OnInit, OnDestroy {\n /** @defaultValue 100 */\n readonly resizeThrottle = input(100);\n /** @defaultValue true */\n // TODO: switch default to false in v48.0.0\n readonly emitInitial = input(true, { transform: booleanAttribute });\n readonly siResizeObserver = output<ElementDimensions>();\n\n private subs?: Subscription;\n private element = inject(ElementRef);\n private service = inject(ResizeObserverService);\n\n ngOnInit(): void {\n this.subs = this.service\n .observe(this.element.nativeElement, this.resizeThrottle(), this.emitInitial())\n .subscribe(value => this.siResizeObserver.emit(value));\n }\n\n ngOnDestroy(): void {\n this.subs?.unsubscribe();\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Directive, ElementRef, inject, input, OnDestroy, OnInit, signal } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ResizeObserverService } from './resize-observer.service';\n\nexport interface Breakpoints {\n smMinimum: number;\n mdMinimum: number;\n lgMinimum: number;\n xlMinimum: number;\n xxlMinimum: number;\n}\n\n// keep in sync with the Bootstrap variables\nexport const BOOTSTRAP_BREAKPOINTS: Breakpoints = {\n smMinimum: 576,\n mdMinimum: 768,\n lgMinimum: 992,\n xlMinimum: 1200,\n xxlMinimum: 1400\n};\n\n/**\n * Directive to automatically set `si-container-*` classes so Bootstrap column classes work\n * in the context of the container instead of viewport size.\n */\n@Directive({\n selector: '[siResponsiveContainer]',\n host: {\n '[class.si-container-xs]': 'xs()',\n '[class.si-container-sm]': 'sm()',\n '[class.si-container-md]': 'md()',\n '[class.si-container-lg]': 'lg()',\n '[class.si-container-xl]': 'xl()',\n '[class.si-container-xxl]': 'xxl()'\n },\n exportAs: 'siResponsiveContainer'\n})\nexport class SiResponsiveContainerDirective implements OnInit, OnDestroy {\n /** @defaultValue false */\n readonly xs = signal(false);\n /**\n * @deprecated Use {@link xs} instead.\n * @defaultValue false\n **/\n isXs = false;\n /** @defaultValue false */\n readonly sm = signal(false);\n /**\n * @deprecated Use {@link sm} instead.\n * @defaultValue false\n **/\n isSm = false;\n /** @defaultValue false */\n readonly md = signal(false);\n /**\n * @deprecated Use {@link md} instead.\n * @defaultValue false\n **/\n isMd = false;\n /** @defaultValue false */\n readonly lg = signal(false);\n /**\n * @deprecated Use {@link lg} instead.\n * @defaultValue false\n **/\n isLg = false;\n /** @defaultValue false */\n readonly xl = signal(false);\n /**\n * @deprecated Use {@link xl} instead.\n * @defaultValue false\n **/\n isXl = false;\n /** @defaultValue false */\n readonly xxl = signal(false);\n /**\n * @deprecated Use {@link xxl} instead.\n * @defaultValue false\n **/\n isXxl = false;\n\n /** @defaultValue 100 */\n readonly resizeThrottle = input(100);\n readonly breakpoints = input<Breakpoints>();\n\n private subs?: Subscription;\n\n private element = inject(ElementRef);\n private service = inject(ResizeObserverService);\n\n ngOnInit(): void {\n this.subs = this.service\n .observe(this.element.nativeElement, this.resizeThrottle(), true)\n .subscribe(event => this.setResponsiveSize(event.width, event.height));\n }\n\n ngOnDestroy(): void {\n this.subs?.unsubscribe();\n }\n\n private setResponsiveSize(width: number, height: number): void {\n if (!width && !height) {\n // element is not visible, no point in changing anything\n return;\n }\n const breakpoints = this.breakpoints() ?? BOOTSTRAP_BREAKPOINTS;\n\n this.xs.set(width < breakpoints.smMinimum);\n this.isXs = this.xs();\n this.sm.set(width >= breakpoints.smMinimum && width < breakpoints.mdMinimum);\n this.isSm = this.sm();\n this.md.set(width >= breakpoints.mdMinimum && width < breakpoints.lgMinimum);\n this.isMd = this.md();\n this.lg.set(width >= breakpoints.lgMinimum && width < breakpoints.xlMinimum);\n this.isLg = this.lg();\n this.xl.set(width >= breakpoints.xlMinimum && width < breakpoints.xxlMinimum);\n this.isXl = this.xl();\n this.xxl.set(width >= breakpoints.xxlMinimum);\n this.isXxl = this.xxl();\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiResizeObserverDirective } from './si-resize-observer.directive';\nimport { SiResponsiveContainerDirective } from './si-responsive-container.directive';\n\n@NgModule({\n imports: [SiResizeObserverDirective, SiResponsiveContainerDirective],\n exports: [SiResizeObserverDirective, SiResponsiveContainerDirective]\n})\nexport class SiResizeObserverModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './resize-observer.service';\nexport * from './si-resize-observer.directive';\nexport * from './si-resize-observer.module';\nexport * from './si-responsive-container.directive';\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-resize-observer.mjs","sources":["../../../../projects/element-ng/resize-observer/resize-observer.service.ts","../../../../projects/element-ng/resize-observer/si-resize-observer.directive.ts","../../../../projects/element-ng/resize-observer/si-responsive-container.directive.ts","../../../../projects/element-ng/resize-observer/si-resize-observer.module.ts","../../../../projects/element-ng/resize-observer/index.ts","../../../../projects/element-ng/resize-observer/siemens-element-ng-resize-observer.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, NgZone, PLATFORM_ID } from '@angular/core';\nimport { Observable, Subscriber } from 'rxjs';\n\nexport interface ElementDimensions {\n width: number;\n height: number;\n}\n\ninterface ResizeSubscriber {\n sub: Subscriber<ElementDimensions>;\n dim?: ElementDimensions;\n throttle: number;\n blocked: boolean;\n emitImmediate?: boolean;\n}\n\ninterface Listener {\n element: Element;\n subscribers: ResizeSubscriber[];\n}\n\ninterface QueueEntry {\n element: Element;\n subscriber: ResizeSubscriber;\n unblock: boolean;\n force: boolean;\n}\n\n/**\n * A service wrapping `ResizeObserver`. This is a service for those reasons:\n * - only one `ResizeObserver` should be used for performance reason.\n * - For Angular change detection to work, explicit `ngZone` calls are necessary\n * - Observable stream\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ResizeObserverService {\n private listeners = new Map<Element, Listener>();\n private resizeObserver?: ResizeObserver;\n private timerQueue = new Map<number, QueueEntry[]>();\n private zone = inject(NgZone);\n\n constructor() {\n const isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n if (!isBrowser || !ResizeObserver) {\n return;\n }\n this.resizeObserver = new ResizeObserver((entries: ResizeObserverEntry[]) =>\n entries.forEach(entry => this.handleElement(entry.target))\n );\n }\n\n /**\n * Observe the size of an element. Returns an observable with the changes.\n * @param element - The element to observe\n * @param throttle - Throttle time in ms. Will emit this time after the resize\n * @param emitInitial - Emit the initial size after subscribe?\n * @param emitImmediate - Emit an event immediately after the size changes. Useful e.g. for visibility checks.\n */\n observe(\n element: Element,\n throttle: number,\n emitInitial?: boolean,\n emitImmediate?: boolean\n ): Observable<ElementDimensions> {\n let entry = this.listeners.get(element);\n if (!entry) {\n entry = { element, subscribers: [] };\n this.listeners.set(element, entry);\n }\n\n return new Observable<ElementDimensions>(subscriber => {\n const sub: ResizeSubscriber = {\n sub: subscriber,\n dim: undefined,\n throttle,\n blocked: false,\n emitImmediate\n };\n this.subscriberAdded(entry!, sub, emitInitial);\n return () => this.subscriberRemoved(entry!, sub);\n });\n }\n\n private subscriberAdded(\n entry: Listener,\n subscriber: ResizeSubscriber,\n emitInitial?: boolean\n ): void {\n entry.subscribers.push(subscriber);\n if (entry.subscribers.length === 1) {\n this.resizeObserver?.observe(entry.element);\n }\n\n if (emitInitial) {\n this.schedule(0, entry.element, subscriber, false, true);\n }\n }\n\n private subscriberRemoved(entry: Listener, subscriber: ResizeSubscriber): void {\n const index = entry.subscribers.indexOf(subscriber);\n if (index >= 0) {\n entry.subscribers.splice(index, 1);\n }\n if (entry.subscribers.length === 0) {\n // no more subscribers, tear down everything\n this.resizeObserver?.unobserve(entry.element);\n this.listeners.delete(entry.element);\n }\n this.unschedule(subscriber);\n // close down, no re-subscription possible\n subscriber.sub.complete();\n }\n\n private handleElement(element: Element): void {\n const entry = this.listeners.get(element);\n if (!entry) {\n this.resizeObserver?.unobserve(element);\n return;\n }\n entry.subscribers.forEach(sub => this.handleResizeSubscriber(element, sub));\n }\n\n private handleResizeSubscriber(element: Element, entry: ResizeSubscriber): void {\n if (entry.blocked) {\n return;\n }\n if (entry.emitImmediate) {\n this.schedule(0, element, entry, false);\n }\n this.schedule(entry.throttle, element, entry, true);\n }\n\n private emitSize(element: Element, entry: ResizeSubscriber, force = false): void {\n const dimensions = { width: element.clientWidth, height: element.clientHeight };\n if (\n !force &&\n entry.dim?.width === dimensions.width &&\n entry.dim?.height === dimensions.height\n ) {\n // Prevent spurious emissions. Subpixels and all..\n return;\n }\n entry.dim = dimensions;\n entry.sub.next(dimensions);\n }\n\n private schedule(\n timeout: number,\n element: Element,\n subscriber: ResizeSubscriber,\n unblock: boolean,\n force = false\n ): void {\n if (unblock) {\n subscriber.blocked = true;\n }\n\n let queue = this.timerQueue.get(timeout);\n if (!queue) {\n queue = [];\n this.timerQueue.set(timeout, queue);\n setTimeout(() => {\n this.timerQueue.delete(timeout);\n this.processQueue(queue!);\n }, timeout);\n }\n\n queue.push({ element, subscriber, unblock, force });\n }\n\n private unschedule(entry: ResizeSubscriber): void {\n const queued = this.timerQueue.get(entry.throttle);\n if (queued) {\n const index = queued.findIndex(q => q.subscriber === entry);\n if (index > -1) {\n queued.splice(index, 1);\n }\n }\n }\n\n private processQueue(queue: QueueEntry[]): void {\n this.zone.run(() => {\n queue?.forEach(q => {\n if (q.unblock) {\n q.subscriber.blocked = false;\n }\n this.emitSize(q.element, q.subscriber, q.force);\n });\n });\n }\n\n /**\n * check size on all observed elements. Only use in testing!\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n _checkAll(): void {\n this.listeners.forEach(entry => this.handleElement(entry.element));\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n output\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ElementDimensions, ResizeObserverService } from './resize-observer.service';\n\n/**\n * Directive to emit events on element size change. Use like this:\n * `<div (siResizeObserver)=\"handleResize($event)\">`\n * When the size of the element changes, an event in the format\n * `{ width: number, height: number }`\n * will be emitted. Also an initial event will be emitted on init.\n *\n * By default, events are throttled and to an event every 100ms. To change\n * this, add `[resizeThrottle]=\"200\"` on the same element. Input in milliseconds.\n */\n@Directive({\n selector: '[siResizeObserver]'\n})\nexport class SiResizeObserverDirective implements OnInit, OnDestroy {\n /** @defaultValue 100 */\n readonly resizeThrottle = input(100);\n /** @defaultValue true */\n readonly emitInitial = input(true, { transform: booleanAttribute });\n readonly siResizeObserver = output<ElementDimensions>();\n\n private subs?: Subscription;\n private element = inject(ElementRef);\n private service = inject(ResizeObserverService);\n\n ngOnInit(): void {\n this.subs = this.service\n .observe(this.element.nativeElement, this.resizeThrottle(), this.emitInitial())\n .subscribe(value => this.siResizeObserver.emit(value));\n }\n\n ngOnDestroy(): void {\n this.subs?.unsubscribe();\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Directive, ElementRef, inject, input, OnDestroy, OnInit, signal } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ResizeObserverService } from './resize-observer.service';\n\nexport interface Breakpoints {\n smMinimum: number;\n mdMinimum: number;\n lgMinimum: number;\n xlMinimum: number;\n xxlMinimum: number;\n}\n\n// keep in sync with the Bootstrap variables\nexport const BOOTSTRAP_BREAKPOINTS: Breakpoints = {\n smMinimum: 576,\n mdMinimum: 768,\n lgMinimum: 992,\n xlMinimum: 1200,\n xxlMinimum: 1400\n};\n\n/**\n * Directive to automatically set `si-container-*` classes so Bootstrap column classes work\n * in the context of the container instead of viewport size.\n */\n@Directive({\n selector: '[siResponsiveContainer]',\n host: {\n '[class.si-container-xs]': 'xs()',\n '[class.si-container-sm]': 'sm()',\n '[class.si-container-md]': 'md()',\n '[class.si-container-lg]': 'lg()',\n '[class.si-container-xl]': 'xl()',\n '[class.si-container-xxl]': 'xxl()'\n },\n exportAs: 'siResponsiveContainer'\n})\nexport class SiResponsiveContainerDirective implements OnInit, OnDestroy {\n /** @defaultValue false */\n readonly xs = signal(false);\n /**\n * @deprecated Use {@link xs} instead.\n * @defaultValue false\n **/\n isXs = false;\n /** @defaultValue false */\n readonly sm = signal(false);\n /**\n * @deprecated Use {@link sm} instead.\n * @defaultValue false\n **/\n isSm = false;\n /** @defaultValue false */\n readonly md = signal(false);\n /**\n * @deprecated Use {@link md} instead.\n * @defaultValue false\n **/\n isMd = false;\n /** @defaultValue false */\n readonly lg = signal(false);\n /**\n * @deprecated Use {@link lg} instead.\n * @defaultValue false\n **/\n isLg = false;\n /** @defaultValue false */\n readonly xl = signal(false);\n /**\n * @deprecated Use {@link xl} instead.\n * @defaultValue false\n **/\n isXl = false;\n /** @defaultValue false */\n readonly xxl = signal(false);\n /**\n * @deprecated Use {@link xxl} instead.\n * @defaultValue false\n **/\n isXxl = false;\n\n /** @defaultValue 100 */\n readonly resizeThrottle = input(100);\n readonly breakpoints = input<Breakpoints>();\n\n private subs?: Subscription;\n\n private element = inject(ElementRef);\n private service = inject(ResizeObserverService);\n\n ngOnInit(): void {\n this.subs = this.service\n .observe(this.element.nativeElement, this.resizeThrottle(), true)\n .subscribe(event => this.setResponsiveSize(event.width, event.height));\n }\n\n ngOnDestroy(): void {\n this.subs?.unsubscribe();\n }\n\n private setResponsiveSize(width: number, height: number): void {\n if (!width && !height) {\n // element is not visible, no point in changing anything\n return;\n }\n const breakpoints = this.breakpoints() ?? BOOTSTRAP_BREAKPOINTS;\n\n this.xs.set(width < breakpoints.smMinimum);\n this.isXs = this.xs();\n this.sm.set(width >= breakpoints.smMinimum && width < breakpoints.mdMinimum);\n this.isSm = this.sm();\n this.md.set(width >= breakpoints.mdMinimum && width < breakpoints.lgMinimum);\n this.isMd = this.md();\n this.lg.set(width >= breakpoints.lgMinimum && width < breakpoints.xlMinimum);\n this.isLg = this.lg();\n this.xl.set(width >= breakpoints.xlMinimum && width < breakpoints.xxlMinimum);\n this.isXl = this.xl();\n this.xxl.set(width >= breakpoints.xxlMinimum);\n this.isXxl = this.xxl();\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiResizeObserverDirective } from './si-resize-observer.directive';\nimport { SiResponsiveContainerDirective } from './si-responsive-container.directive';\n\n@NgModule({\n imports: [SiResizeObserverDirective, SiResponsiveContainerDirective],\n exports: [SiResizeObserverDirective, SiResponsiveContainerDirective]\n})\nexport class SiResizeObserverModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './resize-observer.service';\nexport * from './si-resize-observer.directive';\nexport * from './si-resize-observer.module';\nexport * from './si-responsive-container.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
31
31
|
args: [{ selector: 'si-result-details-list', imports: [SiLoadingSpinnerComponent, SiIconComponent, SiTranslatePipe], template: "<ul class=\"list-unstyled d-flex flex-column mb-0\">\n @for (step of steps(); track $index) {\n <li\n class=\"position-relative d-flex align-items-center timeline px-6 py-5\"\n [class.text-primary]=\"step.state === 'running'\"\n >\n @if (step.state === 'running') {\n <si-loading-spinner class=\"me-4\" />\n }\n @if (step.icon && step.state !== 'running') {\n <si-icon class=\"me-4 icon\" [icon]=\"step.icon\" />\n }\n @if (!step.icon && step.state !== 'running') {\n @switch (step.state) {\n @case ('passed') {\n <span class=\"me-4 icon icon-stack\">\n <si-icon class=\"status-success\" [icon]=\"icons.elementCircleFilled\" />\n <si-icon class=\"status-critical-contrast\" [icon]=\"icons.elementStateTick\" />\n </span>\n }\n @case ('failed') {\n <span class=\"me-4 icon icon-stack\">\n <si-icon class=\"status-danger\" [icon]=\"icons.elementCircleFilled\" />\n <si-icon\n class=\"status-critical-contrast\"\n [icon]=\"icons.elementStateExclamationMark\"\n />\n </span>\n }\n @case ('not-started') {\n <si-icon class=\"me-4 icon\" [icon]=\"icons.elementNotChecked\" />\n }\n @default {\n <si-icon class=\"me-4 icon\" [icon]=\"icons.elementOutOfService\" />\n }\n }\n }\n <div class=\"d-flex flex-column justify-content-center w-100 overflow-hidden\">\n <div class=\"d-flex\">\n <div class=\"result-description\">\n <span class=\"si-h5\">{{ step.description | translate: step.translationParams }}</span>\n @if (step.detail) {\n <div class=\"si-body text-secondary result-detail\">{{\n step.detail | translate: step.translationParams\n }}</div>\n }\n @if (step.errorMessage) {\n <div class=\"si-h5 text-danger\">{{\n step.errorMessage | translate: step.translationParams\n }}</div>\n }\n </div>\n @if (step.value) {\n <span class=\"result-value\">{{ step.value }}</span>\n } @else if (stepHasValue()) {\n <!-- empty placeholder to align step description with other steps-->\n <span class=\"result-value\"></span>\n }\n </div>\n </div>\n </li>\n }\n</ul>\n", styles: ["si-loading-spinner{--loading-spinner-size: 1.5rem;--loading-spinner-color: var(--element-text-active)}.result-description{flex:2 1;align-self:center;overflow:hidden}.result-value{flex:1 1;white-space:nowrap;align-self:top}.result-detail{letter-spacing:.15px;display:block;display:-webkit-box;max-block-size:2rem;word-wrap:break-word;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.timeline:not(:last-child):after,.timeline:not(:first-child):before{content:\"\";position:absolute;inline-size:1px;background-color:var(--element-ui-2);block-size:calc(50% - .75rem);margin-inline-start:calc(.75rem - .5px)}si-icon{color:var(--element-ui-2)}.timeline:not(:first-child):before{inset-block-start:0}.timeline:not(:last-child):after{inset-block-end:0}\n"] }]
|
|
32
32
|
}] });
|
|
33
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
36
|
+
* SPDX-License-Identifier: MIT
|
|
37
|
+
*/
|
|
38
|
+
|
|
34
39
|
/**
|
|
35
40
|
* Copyright (c) Siemens 2016 - 2025
|
|
36
41
|
* SPDX-License-Identifier: MIT
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-result-details-list.mjs","sources":["../../../../projects/element-ng/result-details-list/si-result-details-list.component.ts","../../../../projects/element-ng/result-details-list/si-result-details-list.component.html","../../../../projects/element-ng/result-details-list/si-result-details-list.module.ts","../../../../projects/element-ng/result-details-list/index.ts","../../../../projects/element-ng/result-details-list/siemens-element-ng-result-details-list.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed, input } from '@angular/core';\nimport {\n addIcons,\n elementCircleFilled,\n elementNotChecked,\n elementOutOfService,\n elementStateExclamationMark,\n elementStateTick,\n SiIconComponent\n} from '@siemens/element-ng/icon';\nimport { SiLoadingSpinnerComponent } from '@siemens/element-ng/loading-spinner';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\nimport { ResultDetailStep } from './si-result-details-list.datamodel';\n\n@Component({\n selector: 'si-result-details-list',\n imports: [SiLoadingSpinnerComponent, SiIconComponent, SiTranslatePipe],\n templateUrl: './si-result-details-list.component.html',\n styleUrl: './si-result-details-list.component.scss'\n})\nexport class SiResultDetailsListComponent {\n /**\n * Array of steps to show in the list.\n *\n * @defaultValue []\n */\n readonly steps = input<ResultDetailStep[]>([]);\n\n protected readonly stepHasValue = computed(() => this.steps().some(item => !!item.value));\n\n protected readonly icons = addIcons({\n elementCircleFilled,\n elementNotChecked,\n elementOutOfService,\n elementStateExclamationMark,\n elementStateTick\n });\n}\n","<ul class=\"list-unstyled d-flex flex-column mb-0\">\n @for (step of steps(); track $index) {\n <li\n class=\"position-relative d-flex align-items-center timeline px-6 py-5\"\n [class.text-primary]=\"step.state === 'running'\"\n >\n @if (step.state === 'running') {\n <si-loading-spinner class=\"me-4\" />\n }\n @if (step.icon && step.state !== 'running') {\n <si-icon class=\"me-4 icon\" [icon]=\"step.icon\" />\n }\n @if (!step.icon && step.state !== 'running') {\n @switch (step.state) {\n @case ('passed') {\n <span class=\"me-4 icon icon-stack\">\n <si-icon class=\"status-success\" [icon]=\"icons.elementCircleFilled\" />\n <si-icon class=\"status-critical-contrast\" [icon]=\"icons.elementStateTick\" />\n </span>\n }\n @case ('failed') {\n <span class=\"me-4 icon icon-stack\">\n <si-icon class=\"status-danger\" [icon]=\"icons.elementCircleFilled\" />\n <si-icon\n class=\"status-critical-contrast\"\n [icon]=\"icons.elementStateExclamationMark\"\n />\n </span>\n }\n @case ('not-started') {\n <si-icon class=\"me-4 icon\" [icon]=\"icons.elementNotChecked\" />\n }\n @default {\n <si-icon class=\"me-4 icon\" [icon]=\"icons.elementOutOfService\" />\n }\n }\n }\n <div class=\"d-flex flex-column justify-content-center w-100 overflow-hidden\">\n <div class=\"d-flex\">\n <div class=\"result-description\">\n <span class=\"si-h5\">{{ step.description | translate: step.translationParams }}</span>\n @if (step.detail) {\n <div class=\"si-body text-secondary result-detail\">{{\n step.detail | translate: step.translationParams\n }}</div>\n }\n @if (step.errorMessage) {\n <div class=\"si-h5 text-danger\">{{\n step.errorMessage | translate: step.translationParams\n }}</div>\n }\n </div>\n @if (step.value) {\n <span class=\"result-value\">{{ step.value }}</span>\n } @else if (stepHasValue()) {\n <!-- empty placeholder to align step description with other steps-->\n <span class=\"result-value\"></span>\n }\n </div>\n </div>\n </li>\n }\n</ul>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiResultDetailsListComponent } from './si-result-details-list.component';\n\n@NgModule({\n imports: [SiResultDetailsListComponent],\n exports: [SiResultDetailsListComponent]\n})\nexport class SiResultDetailsListModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-result-details-list.component';\nexport * from './si-result-details-list.datamodel';\nexport * from './si-result-details-list.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAAA;;;AAGG;MAsBU,4BAA4B,CAAA;AACvC;;;;AAIG;AACM,IAAA,KAAK,GAAG,KAAK,CAAqB,EAAE,CAAC;IAE3B,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEtE,KAAK,GAAG,QAAQ,CAAC;QAClC,mBAAmB;QACnB,iBAAiB;QACjB,mBAAmB;QACnB,2BAA2B;QAC3B;AACD,KAAA,CAAC;uGAhBS,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,sNCzBzC,28EA+DA,EAAA,MAAA,EAAA,CAAA,gyBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED1CY,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,kBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,iEAAE,eAAe,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAI1D,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,WACzB,CAAC,yBAAyB,EAAE,eAAe,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,28EAAA,EAAA,MAAA,EAAA,CAAA,gyBAAA,CAAA,EAAA;;;AErBxE;;;AAGG;MASU,yBAAyB,CAAA;uGAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAzB,yBAAyB,EAAA,OAAA,EAAA,CAH1B,4BAA4B,CAAA,EAAA,OAAA,EAAA,CAC5B,4BAA4B,CAAA,EAAA,CAAA;AAE3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAH1B,4BAA4B,CAAA,EAAA,CAAA;;2FAG3B,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,4BAA4B,CAAC;oBACvC,OAAO,EAAE,CAAC,4BAA4B;AACvC,iBAAA;;;ACXD;;;AAGG;;ACHH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"siemens-element-ng-result-details-list.mjs","sources":["../../../../projects/element-ng/result-details-list/si-result-details-list.component.ts","../../../../projects/element-ng/result-details-list/si-result-details-list.component.html","../../../../projects/element-ng/result-details-list/si-result-details-list.datamodel.ts","../../../../projects/element-ng/result-details-list/si-result-details-list.module.ts","../../../../projects/element-ng/result-details-list/index.ts","../../../../projects/element-ng/result-details-list/siemens-element-ng-result-details-list.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed, input } from '@angular/core';\nimport {\n addIcons,\n elementCircleFilled,\n elementNotChecked,\n elementOutOfService,\n elementStateExclamationMark,\n elementStateTick,\n SiIconComponent\n} from '@siemens/element-ng/icon';\nimport { SiLoadingSpinnerComponent } from '@siemens/element-ng/loading-spinner';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\nimport { ResultDetailStep } from './si-result-details-list.datamodel';\n\n@Component({\n selector: 'si-result-details-list',\n imports: [SiLoadingSpinnerComponent, SiIconComponent, SiTranslatePipe],\n templateUrl: './si-result-details-list.component.html',\n styleUrl: './si-result-details-list.component.scss'\n})\nexport class SiResultDetailsListComponent {\n /**\n * Array of steps to show in the list.\n *\n * @defaultValue []\n */\n readonly steps = input<ResultDetailStep[]>([]);\n\n protected readonly stepHasValue = computed(() => this.steps().some(item => !!item.value));\n\n protected readonly icons = addIcons({\n elementCircleFilled,\n elementNotChecked,\n elementOutOfService,\n elementStateExclamationMark,\n elementStateTick\n });\n}\n","<ul class=\"list-unstyled d-flex flex-column mb-0\">\n @for (step of steps(); track $index) {\n <li\n class=\"position-relative d-flex align-items-center timeline px-6 py-5\"\n [class.text-primary]=\"step.state === 'running'\"\n >\n @if (step.state === 'running') {\n <si-loading-spinner class=\"me-4\" />\n }\n @if (step.icon && step.state !== 'running') {\n <si-icon class=\"me-4 icon\" [icon]=\"step.icon\" />\n }\n @if (!step.icon && step.state !== 'running') {\n @switch (step.state) {\n @case ('passed') {\n <span class=\"me-4 icon icon-stack\">\n <si-icon class=\"status-success\" [icon]=\"icons.elementCircleFilled\" />\n <si-icon class=\"status-critical-contrast\" [icon]=\"icons.elementStateTick\" />\n </span>\n }\n @case ('failed') {\n <span class=\"me-4 icon icon-stack\">\n <si-icon class=\"status-danger\" [icon]=\"icons.elementCircleFilled\" />\n <si-icon\n class=\"status-critical-contrast\"\n [icon]=\"icons.elementStateExclamationMark\"\n />\n </span>\n }\n @case ('not-started') {\n <si-icon class=\"me-4 icon\" [icon]=\"icons.elementNotChecked\" />\n }\n @default {\n <si-icon class=\"me-4 icon\" [icon]=\"icons.elementOutOfService\" />\n }\n }\n }\n <div class=\"d-flex flex-column justify-content-center w-100 overflow-hidden\">\n <div class=\"d-flex\">\n <div class=\"result-description\">\n <span class=\"si-h5\">{{ step.description | translate: step.translationParams }}</span>\n @if (step.detail) {\n <div class=\"si-body text-secondary result-detail\">{{\n step.detail | translate: step.translationParams\n }}</div>\n }\n @if (step.errorMessage) {\n <div class=\"si-h5 text-danger\">{{\n step.errorMessage | translate: step.translationParams\n }}</div>\n }\n </div>\n @if (step.value) {\n <span class=\"result-value\">{{ step.value }}</span>\n } @else if (stepHasValue()) {\n <!-- empty placeholder to align step description with other steps-->\n <span class=\"result-value\"></span>\n }\n </div>\n </div>\n </li>\n }\n</ul>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\n\nimport { TranslatableString } from '@siemens/element-translate-ng/translate';\n\n/** */\nexport interface ResultDetailStep {\n /**\n * A description of the step.\n */\n description: TranslatableString;\n /**\n * A state object defining the state of the step.\n */\n state: ResultDetailStepState;\n /**\n * Optional value to be displayed for the step.\n */\n value?: string;\n /**\n * Optional error message to display.\n */\n errorMessage?: string;\n /**\n * Optional custom icon to display. Otherwise a default icon will be shown based on the state property.\n */\n icon?: string;\n /**\n * Optional detail text which appears below description.\n */\n detail?: TranslatableString;\n /**\n * Optional translation params to be used with translate pipe.\n */\n translationParams?: Record<string, unknown>;\n}\n\n/**\n * This type defines the state that a detailed result step can have.\n */\nexport type ResultDetailStepState =\n | 'passed'\n | 'failed'\n | 'running'\n | 'not-supported'\n | 'not-started';\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiResultDetailsListComponent } from './si-result-details-list.component';\n\n@NgModule({\n imports: [SiResultDetailsListComponent],\n exports: [SiResultDetailsListComponent]\n})\nexport class SiResultDetailsListModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-result-details-list.component';\nexport * from './si-result-details-list.datamodel';\nexport * from './si-result-details-list.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAAA;;;AAGG;MAsBU,4BAA4B,CAAA;AACvC;;;;AAIG;AACM,IAAA,KAAK,GAAG,KAAK,CAAqB,EAAE,CAAC;IAE3B,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEtE,KAAK,GAAG,QAAQ,CAAC;QAClC,mBAAmB;QACnB,iBAAiB;QACjB,mBAAmB;QACnB,2BAA2B;QAC3B;AACD,KAAA,CAAC;uGAhBS,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,sNCzBzC,28EA+DA,EAAA,MAAA,EAAA,CAAA,gyBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED1CY,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,kBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,iEAAE,eAAe,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAI1D,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,WACzB,CAAC,yBAAyB,EAAE,eAAe,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,28EAAA,EAAA,MAAA,EAAA,CAAA,gyBAAA,CAAA,EAAA;;;AErBxE;;;AAGG;;ACHH;;;AAGG;MASU,yBAAyB,CAAA;uGAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAzB,yBAAyB,EAAA,OAAA,EAAA,CAH1B,4BAA4B,CAAA,EAAA,OAAA,EAAA,CAC5B,4BAA4B,CAAA,EAAA,CAAA;AAE3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAH1B,4BAA4B,CAAA,EAAA,CAAA;;2FAG3B,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,4BAA4B,CAAC;oBACvC,OAAO,EAAE,CAAC,4BAA4B;AACvC,iBAAA;;;ACXD;;;AAGG;;ACHH;;AAEG;;;;"}
|
|
@@ -2,6 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { viewChild, signal, input, numberAttribute, booleanAttribute, output, computed, HostListener, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
|
|
3
3
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
4
|
import { addIcons, elementSearch, elementCancel, SiIconComponent } from '@siemens/element-ng/icon';
|
|
5
|
+
import { t, SiTranslatePipe } from '@siemens/element-translate-ng/translate';
|
|
5
6
|
import { Subject } from 'rxjs';
|
|
6
7
|
import { debounceTime } from 'rxjs/operators';
|
|
7
8
|
|
|
@@ -56,6 +57,15 @@ class SiSearchBarComponent {
|
|
|
56
57
|
/** @defaultValue false */
|
|
57
58
|
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
58
59
|
disabledInput = input(false, { alias: 'disabled', transform: booleanAttribute });
|
|
60
|
+
/**
|
|
61
|
+
* Aria label for the clear button.
|
|
62
|
+
*
|
|
63
|
+
* @defaultValue
|
|
64
|
+
* ```
|
|
65
|
+
* t(() => $localize`:@@SI_SEARCH_BAR.CLEAR_BUTTON:clear`)
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
clearButtonAriaLabel = input(t(() => $localize `:@@SI_SEARCH_BAR.CLEAR_BUTTON:clear`));
|
|
59
69
|
/**
|
|
60
70
|
* Output callback event will provide you with search term if search input changes.
|
|
61
71
|
*/
|
|
@@ -142,17 +152,17 @@ class SiSearchBarComponent {
|
|
|
142
152
|
this.inputRef().nativeElement.value = value;
|
|
143
153
|
}
|
|
144
154
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiSearchBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
145
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: SiSearchBarComponent, isStandalone: true, selector: "si-search-bar", inputs: { debounceTime: { classPropertyName: "debounceTime", publicName: "debounceTime", isSignal: true, isRequired: false, transformFunction: null }, prohibitedCharacters: { classPropertyName: "prohibitedCharacters", publicName: "prohibitedCharacters", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, showIcon: { classPropertyName: "showIcon", publicName: "showIcon", isSignal: true, isRequired: false, transformFunction: null }, tabbable: { classPropertyName: "tabbable", publicName: "tabbable", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, colorVariant: { classPropertyName: "colorVariant", publicName: "colorVariant", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchChange: "searchChange" }, host: { listeners: { "focus": "focus()" }, properties: { "class.readonly": "readonly()" } }, providers: [
|
|
155
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: SiSearchBarComponent, isStandalone: true, selector: "si-search-bar", inputs: { debounceTime: { classPropertyName: "debounceTime", publicName: "debounceTime", isSignal: true, isRequired: false, transformFunction: null }, prohibitedCharacters: { classPropertyName: "prohibitedCharacters", publicName: "prohibitedCharacters", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, showIcon: { classPropertyName: "showIcon", publicName: "showIcon", isSignal: true, isRequired: false, transformFunction: null }, tabbable: { classPropertyName: "tabbable", publicName: "tabbable", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, colorVariant: { classPropertyName: "colorVariant", publicName: "colorVariant", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, clearButtonAriaLabel: { classPropertyName: "clearButtonAriaLabel", publicName: "clearButtonAriaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchChange: "searchChange" }, host: { listeners: { "focus": "focus()" }, properties: { "class.readonly": "readonly()" } }, providers: [
|
|
146
156
|
{
|
|
147
157
|
provide: NG_VALUE_ACCESSOR,
|
|
148
158
|
useExisting: SiSearchBarComponent,
|
|
149
159
|
multi: true
|
|
150
160
|
}
|
|
151
|
-
], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["inputRef"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"position-relative\" [class.disabled]=\"disabled()\" [class.focus]=\"inFocus\">\n @if (showIcon()) {\n <si-icon class=\"search-bar-icon icon text-secondary\" [icon]=\"icons.elementSearch\" />\n }\n <input\n #inputRef\n type=\"text\"\n class=\"form-control\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n [class.dark-background]=\"colorVariant() === 'base-0'\"\n [class.ps-9]=\"showIcon()\"\n [class.is-invalid]=\"isInvalid\"\n [class.icon-end]=\"searchValue()\"\n [attr.tabindex]=\"tabbable() ? '' : '-1'\"\n [readonly]=\"readonly()\"\n (focus)=\"inFocus = true\"\n (blur)=\"onBlur()\"\n (input)=\"input($event)\"\n />\n @if (searchValue()) {\n <button\n type=\"button\"\n
|
|
161
|
+
], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["inputRef"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"position-relative\" [class.disabled]=\"disabled()\" [class.focus]=\"inFocus\">\n @if (showIcon()) {\n <si-icon class=\"search-bar-icon icon text-secondary\" [icon]=\"icons.elementSearch\" />\n }\n <input\n #inputRef\n type=\"text\"\n class=\"form-control\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n [class.dark-background]=\"colorVariant() === 'base-0'\"\n [class.ps-9]=\"showIcon()\"\n [class.is-invalid]=\"isInvalid\"\n [class.icon-end]=\"searchValue()\"\n [attr.tabindex]=\"tabbable() ? '' : '-1'\"\n [readonly]=\"readonly()\"\n (focus)=\"inFocus = true\"\n (blur)=\"onBlur()\"\n (input)=\"input($event)\"\n />\n @if (searchValue()) {\n <button\n type=\"button\"\n class=\"btn btn-circle btn-xs btn-ghost cancel-button\"\n [attr.aria-label]=\"clearButtonAriaLabel() | translate\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"resetForm()\"\n (focusin)=\"onCancelFocus($event)\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n }\n</div>\n", styles: [":host{--search-bar-icon-color: var(--element-text-secondary);--input-background-color: var(--element-base-1);--input-background-hover-color: var(--element-base-1)}:host div:hover .search-bar-icon,:host div:hover ::placeholder,:host div.focus .search-bar-icon,:host div.focus ::placeholder{color:var(--element-text-primary)!important}.dark-background{--input-background-color: var(--element-base-4);--input-background-hover-color: var(--element-ui-4)}input{transition:none;background-color:var(--input-background-color);border-radius:4px;border-width:0}input.form-control:focus-visible{background-color:var(--input-background-color)}.cancel-button{position:absolute;inset-block-start:4px;inset-inline-end:4px}.is-invalid~.cancel-button{color:var(--element-status-danger)}.search-bar-icon{position:absolute;inset-block-start:4px;inset-inline-start:4px;color:var(--search-bar-icon-color);line-height:1}.icon-end{padding-inline-end:1.5rem}::placeholder{color:var(--element-text-secondary);padding-inline-start:2px}.disabled .search-bar-icon,.disabled input,.disabled .cancel-button,.disabled ::placeholder{color:var(--element-text-disabled)}.disabled input{background-color:var(--input-background-color)}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
152
162
|
}
|
|
153
163
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiSearchBarComponent, decorators: [{
|
|
154
164
|
type: Component,
|
|
155
|
-
args: [{ selector: 'si-search-bar', imports: [SiIconComponent], providers: [
|
|
165
|
+
args: [{ selector: 'si-search-bar', imports: [SiIconComponent, SiTranslatePipe], providers: [
|
|
156
166
|
{
|
|
157
167
|
provide: NG_VALUE_ACCESSOR,
|
|
158
168
|
useExisting: SiSearchBarComponent,
|
|
@@ -160,7 +170,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
160
170
|
}
|
|
161
171
|
], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
162
172
|
'[class.readonly]': 'readonly()'
|
|
163
|
-
}, template: "<div class=\"position-relative\" [class.disabled]=\"disabled()\" [class.focus]=\"inFocus\">\n @if (showIcon()) {\n <si-icon class=\"search-bar-icon icon text-secondary\" [icon]=\"icons.elementSearch\" />\n }\n <input\n #inputRef\n type=\"text\"\n class=\"form-control\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n [class.dark-background]=\"colorVariant() === 'base-0'\"\n [class.ps-9]=\"showIcon()\"\n [class.is-invalid]=\"isInvalid\"\n [class.icon-end]=\"searchValue()\"\n [attr.tabindex]=\"tabbable() ? '' : '-1'\"\n [readonly]=\"readonly()\"\n (focus)=\"inFocus = true\"\n (blur)=\"onBlur()\"\n (input)=\"input($event)\"\n />\n @if (searchValue()) {\n <button\n type=\"button\"\n
|
|
173
|
+
}, template: "<div class=\"position-relative\" [class.disabled]=\"disabled()\" [class.focus]=\"inFocus\">\n @if (showIcon()) {\n <si-icon class=\"search-bar-icon icon text-secondary\" [icon]=\"icons.elementSearch\" />\n }\n <input\n #inputRef\n type=\"text\"\n class=\"form-control\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n [class.dark-background]=\"colorVariant() === 'base-0'\"\n [class.ps-9]=\"showIcon()\"\n [class.is-invalid]=\"isInvalid\"\n [class.icon-end]=\"searchValue()\"\n [attr.tabindex]=\"tabbable() ? '' : '-1'\"\n [readonly]=\"readonly()\"\n (focus)=\"inFocus = true\"\n (blur)=\"onBlur()\"\n (input)=\"input($event)\"\n />\n @if (searchValue()) {\n <button\n type=\"button\"\n class=\"btn btn-circle btn-xs btn-ghost cancel-button\"\n [attr.aria-label]=\"clearButtonAriaLabel() | translate\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"resetForm()\"\n (focusin)=\"onCancelFocus($event)\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n }\n</div>\n", styles: [":host{--search-bar-icon-color: var(--element-text-secondary);--input-background-color: var(--element-base-1);--input-background-hover-color: var(--element-base-1)}:host div:hover .search-bar-icon,:host div:hover ::placeholder,:host div.focus .search-bar-icon,:host div.focus ::placeholder{color:var(--element-text-primary)!important}.dark-background{--input-background-color: var(--element-base-4);--input-background-hover-color: var(--element-ui-4)}input{transition:none;background-color:var(--input-background-color);border-radius:4px;border-width:0}input.form-control:focus-visible{background-color:var(--input-background-color)}.cancel-button{position:absolute;inset-block-start:4px;inset-inline-end:4px}.is-invalid~.cancel-button{color:var(--element-status-danger)}.search-bar-icon{position:absolute;inset-block-start:4px;inset-inline-start:4px;color:var(--search-bar-icon-color);line-height:1}.icon-end{padding-inline-end:1.5rem}::placeholder{color:var(--element-text-secondary);padding-inline-start:2px}.disabled .search-bar-icon,.disabled input,.disabled .cancel-button,.disabled ::placeholder{color:var(--element-text-disabled)}.disabled input{background-color:var(--input-background-color)}\n"] }]
|
|
164
174
|
}], propDecorators: { focus: [{
|
|
165
175
|
type: HostListener,
|
|
166
176
|
args: ['focus']
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-search-bar.mjs","sources":["../../../../projects/element-ng/search-bar/si-search-bar.component.ts","../../../../projects/element-ng/search-bar/si-search-bar.component.html","../../../../projects/element-ng/search-bar/si-search-bar.module.ts","../../../../projects/element-ng/search-bar/index.ts","../../../../projects/element-ng/search-bar/siemens-element-ng-search-bar.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostListener,\n input,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n output,\n signal,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BackgroundColorVariant } from '@siemens/element-ng/common';\nimport { elementCancel, elementSearch, addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'si-search-bar',\n imports: [SiIconComponent],\n templateUrl: './si-search-bar.component.html',\n styleUrl: './si-search-bar.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SiSearchBarComponent,\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.readonly]': 'readonly()'\n }\n})\nexport class SiSearchBarComponent implements OnInit, OnDestroy, ControlValueAccessor, OnChanges {\n private readonly inputRef = viewChild.required<ElementRef<HTMLInputElement>>('inputRef');\n private debouncer = new Subject<string>();\n private readonly disabledNgControl = signal(false);\n\n /**\n * Time unit change of search input takes effect.\n *\n * @defaultValue 400\n */\n readonly debounceTime = input(400, { transform: numberAttribute });\n /**\n * Prohibited characters restricting search.\n */\n readonly prohibitedCharacters = input<string>();\n /**\n * Define search input placeholder.\n *\n * @defaultValue ''\n */\n readonly placeholder = input('');\n /**\n * Display search icon before search input.\n *\n * @defaultValue false\n */\n readonly showIcon = input(false, { transform: booleanAttribute });\n /**\n * Whether the search is tabbable or not.\n *\n * @defaultValue true\n */\n readonly tabbable = input(true, { transform: booleanAttribute });\n\n /**\n * Define search input content.\n */\n readonly value = input<string>();\n\n /** @defaultValue false */\n readonly readonly = input(false, { transform: booleanAttribute });\n /**\n * Color to use for component background\n *\n * @defaultValue 'base-1'\n */\n readonly colorVariant = input<BackgroundColorVariant>('base-1');\n\n /** @defaultValue false */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly disabledInput = input(false, { alias: 'disabled', transform: booleanAttribute });\n\n /**\n * Output callback event will provide you with search term if search input changes.\n */\n readonly searchChange = output<string>();\n\n protected isInvalid = false;\n protected inFocus = false;\n\n protected onChange = (val: any): void => {};\n protected onTouch = (): void => {};\n\n protected readonly disabled = computed(() => this.disabledInput() || this.disabledNgControl());\n\n protected readonly searchValue = signal('');\n protected readonly icons = addIcons({ elementCancel, elementSearch });\n\n /** @internal */\n writeValue(value: string): void {\n this.writeSearchValue(value ?? '');\n }\n\n /** @internal */\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n /** @internal */\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n /** @internal */\n setDisabledState(disabled: boolean): void {\n this.disabledNgControl.set(disabled);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.value) {\n this.writeSearchValue(changes.value.currentValue);\n }\n }\n\n ngOnInit(): void {\n this.debouncer.pipe(debounceTime(this.debounceTime())).subscribe(value => {\n this.setSearch(value);\n });\n }\n\n ngOnDestroy(): void {\n this.debouncer.complete();\n }\n\n private setSearch(value?: string): void {\n value ??= '';\n if (value !== this.searchValue()) {\n this.searchValue.set(value);\n this.inputRef().nativeElement.value = value;\n this.onChange(value);\n this.searchChange.emit(value);\n }\n }\n\n private isProhibitedCharactersUsed(searchString: string | null): boolean {\n const prohibitedCharacters = this.prohibitedCharacters();\n if (!prohibitedCharacters || !searchString) {\n return false;\n }\n\n for (const prohibitedCharacter of prohibitedCharacters) {\n if (searchString.includes(prohibitedCharacter)) {\n return true;\n }\n }\n\n return false;\n }\n\n /** @internal */\n @HostListener('focus')\n focus(): void {\n this.inputRef().nativeElement.focus();\n }\n\n protected onCancelFocus(event: Event): void {\n event.stopPropagation();\n }\n\n protected input(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n if (!this.isProhibitedCharactersUsed(value)) {\n this.debouncer.next(value);\n }\n }\n\n protected onBlur(): void {\n this.inFocus = false;\n this.onTouch();\n }\n\n protected resetForm(): void {\n this.setSearch('');\n }\n\n protected writeSearchValue(value: string): void {\n this.searchValue.set(value);\n this.inputRef().nativeElement.value = value;\n }\n}\n","<div class=\"position-relative\" [class.disabled]=\"disabled()\" [class.focus]=\"inFocus\">\n @if (showIcon()) {\n <si-icon class=\"search-bar-icon icon text-secondary\" [icon]=\"icons.elementSearch\" />\n }\n <input\n #inputRef\n type=\"text\"\n class=\"form-control\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n [class.dark-background]=\"colorVariant() === 'base-0'\"\n [class.ps-9]=\"showIcon()\"\n [class.is-invalid]=\"isInvalid\"\n [class.icon-end]=\"searchValue()\"\n [attr.tabindex]=\"tabbable() ? '' : '-1'\"\n [readonly]=\"readonly()\"\n (focus)=\"inFocus = true\"\n (blur)=\"onBlur()\"\n (input)=\"input($event)\"\n />\n @if (searchValue()) {\n <button\n type=\"button\"\n aria-label=\"clear\"\n class=\"btn btn-circle btn-xs btn-ghost cancel-button\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"resetForm()\"\n (focusin)=\"onCancelFocus($event)\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiSearchBarComponent } from './si-search-bar.component';\n\n@NgModule({\n imports: [SiSearchBarComponent],\n exports: [SiSearchBarComponent]\n})\nexport class SiSearchBarModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-search-bar.component';\nexport * from './si-search-bar.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAAA;;;AAGG;MAyCU,oBAAoB,CAAA;AACd,IAAA,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAA+B,UAAU,CAAC;AAChF,IAAA,SAAS,GAAG,IAAI,OAAO,EAAU;AACxB,IAAA,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC;AAElD;;;;AAIG;IACM,YAAY,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;AAClE;;AAEG;IACM,oBAAoB,GAAG,KAAK,EAAU;AAC/C;;;;AAIG;AACM,IAAA,WAAW,GAAG,KAAK,CAAC,EAAE,CAAC;AAChC;;;;AAIG;IACM,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACjE;;;;AAIG;IACM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAEhE;;AAEG;IACM,KAAK,GAAG,KAAK,EAAU;;IAGvB,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACjE;;;;AAIG;AACM,IAAA,YAAY,GAAG,KAAK,CAAyB,QAAQ,CAAC;;;AAItD,IAAA,aAAa,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAEzF;;AAEG;IACM,YAAY,GAAG,MAAM,EAAU;IAE9B,SAAS,GAAG,KAAK;IACjB,OAAO,GAAG,KAAK;AAEf,IAAA,QAAQ,GAAG,CAAC,GAAQ,KAAU,GAAG;AACjC,IAAA,OAAO,GAAG,MAAW,GAAG;AAEf,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAE3E,IAAA,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC;IACxB,KAAK,GAAG,QAAQ,CAAC,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;;AAGrE,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAAC;;;AAIpC,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;;AAIpB,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;;;AAInB,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC;;AAGtC,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;;;IAIrD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AACvE,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACvB,SAAC,CAAC;;IAGJ,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;;AAGnB,IAAA,SAAS,CAAC,KAAc,EAAA;QAC9B,KAAK,KAAK,EAAE;AACZ,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AAChC,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK;AAC3C,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;;;AAIzB,IAAA,0BAA0B,CAAC,YAA2B,EAAA;AAC5D,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACxD,QAAA,IAAI,CAAC,oBAAoB,IAAI,CAAC,YAAY,EAAE;AAC1C,YAAA,OAAO,KAAK;;AAGd,QAAA,KAAK,MAAM,mBAAmB,IAAI,oBAAoB,EAAE;AACtD,YAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;AAC9C,gBAAA,OAAO,IAAI;;;AAIf,QAAA,OAAO,KAAK;;;IAKd,KAAK,GAAA;QACH,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;;AAG7B,IAAA,aAAa,CAAC,KAAY,EAAA;QAClC,KAAK,CAAC,eAAe,EAAE;;AAGf,IAAA,KAAK,CAAC,KAAY,EAAA;AAC1B,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;QACtD,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,EAAE;AAC3C,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;;;IAIpB,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACpB,IAAI,CAAC,OAAO,EAAE;;IAGN,SAAS,GAAA;AACjB,QAAA,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;;AAGV,IAAA,gBAAgB,CAAC,KAAa,EAAA;AACtC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK;;uGA7JlC,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAZpB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,oBAAoB;AACjC,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtCH,miCAiCA,4uCDJY,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAed,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAjBhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAChB,CAAC,eAAe,CAAC,EAAA,SAAA,EAGf;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,oBAAsB;AACjC,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,kBAAkB,EAAE;AACrB,qBAAA,EAAA,QAAA,EAAA,miCAAA,EAAA,MAAA,EAAA,CAAA,orCAAA,CAAA,EAAA;8BAqID,KAAK,EAAA,CAAA;sBADJ,YAAY;uBAAC,OAAO;;;AE9KvB;;;AAGG;MASU,iBAAiB,CAAA;uGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAjB,iBAAiB,EAAA,OAAA,EAAA,CAHlB,oBAAoB,CAAA,EAAA,OAAA,EAAA,CACpB,oBAAoB,CAAA,EAAA,CAAA;AAEnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAHlB,oBAAoB,CAAA,EAAA,CAAA;;2FAGnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,oBAAoB,CAAC;oBAC/B,OAAO,EAAE,CAAC,oBAAoB;AAC/B,iBAAA;;;ACXD;;;AAGG;;ACHH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"siemens-element-ng-search-bar.mjs","sources":["../../../../projects/element-ng/search-bar/si-search-bar.component.ts","../../../../projects/element-ng/search-bar/si-search-bar.component.html","../../../../projects/element-ng/search-bar/si-search-bar.module.ts","../../../../projects/element-ng/search-bar/index.ts","../../../../projects/element-ng/search-bar/siemens-element-ng-search-bar.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostListener,\n input,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n output,\n signal,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BackgroundColorVariant } from '@siemens/element-ng/common';\nimport { elementCancel, elementSearch, addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'si-search-bar',\n imports: [SiIconComponent, SiTranslatePipe],\n templateUrl: './si-search-bar.component.html',\n styleUrl: './si-search-bar.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SiSearchBarComponent,\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.readonly]': 'readonly()'\n }\n})\nexport class SiSearchBarComponent implements OnInit, OnDestroy, ControlValueAccessor, OnChanges {\n private readonly inputRef = viewChild.required<ElementRef<HTMLInputElement>>('inputRef');\n private debouncer = new Subject<string>();\n private readonly disabledNgControl = signal(false);\n\n /**\n * Time unit change of search input takes effect.\n *\n * @defaultValue 400\n */\n readonly debounceTime = input(400, { transform: numberAttribute });\n /**\n * Prohibited characters restricting search.\n */\n readonly prohibitedCharacters = input<string>();\n /**\n * Define search input placeholder.\n *\n * @defaultValue ''\n */\n readonly placeholder = input('');\n /**\n * Display search icon before search input.\n *\n * @defaultValue false\n */\n readonly showIcon = input(false, { transform: booleanAttribute });\n /**\n * Whether the search is tabbable or not.\n *\n * @defaultValue true\n */\n readonly tabbable = input(true, { transform: booleanAttribute });\n\n /**\n * Define search input content.\n */\n readonly value = input<string>();\n\n /** @defaultValue false */\n readonly readonly = input(false, { transform: booleanAttribute });\n /**\n * Color to use for component background\n *\n * @defaultValue 'base-1'\n */\n readonly colorVariant = input<BackgroundColorVariant>('base-1');\n\n /** @defaultValue false */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly disabledInput = input(false, { alias: 'disabled', transform: booleanAttribute });\n\n /**\n * Aria label for the clear button.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_SEARCH_BAR.CLEAR_BUTTON:clear`)\n * ```\n */\n readonly clearButtonAriaLabel = input(t(() => $localize`:@@SI_SEARCH_BAR.CLEAR_BUTTON:clear`));\n\n /**\n * Output callback event will provide you with search term if search input changes.\n */\n readonly searchChange = output<string>();\n\n protected isInvalid = false;\n protected inFocus = false;\n\n protected onChange = (val: any): void => {};\n protected onTouch = (): void => {};\n\n protected readonly disabled = computed(() => this.disabledInput() || this.disabledNgControl());\n\n protected readonly searchValue = signal('');\n protected readonly icons = addIcons({ elementCancel, elementSearch });\n\n /** @internal */\n writeValue(value: string): void {\n this.writeSearchValue(value ?? '');\n }\n\n /** @internal */\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n /** @internal */\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n /** @internal */\n setDisabledState(disabled: boolean): void {\n this.disabledNgControl.set(disabled);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.value) {\n this.writeSearchValue(changes.value.currentValue);\n }\n }\n\n ngOnInit(): void {\n this.debouncer.pipe(debounceTime(this.debounceTime())).subscribe(value => {\n this.setSearch(value);\n });\n }\n\n ngOnDestroy(): void {\n this.debouncer.complete();\n }\n\n private setSearch(value?: string): void {\n value ??= '';\n if (value !== this.searchValue()) {\n this.searchValue.set(value);\n this.inputRef().nativeElement.value = value;\n this.onChange(value);\n this.searchChange.emit(value);\n }\n }\n\n private isProhibitedCharactersUsed(searchString: string | null): boolean {\n const prohibitedCharacters = this.prohibitedCharacters();\n if (!prohibitedCharacters || !searchString) {\n return false;\n }\n\n for (const prohibitedCharacter of prohibitedCharacters) {\n if (searchString.includes(prohibitedCharacter)) {\n return true;\n }\n }\n\n return false;\n }\n\n /** @internal */\n @HostListener('focus')\n focus(): void {\n this.inputRef().nativeElement.focus();\n }\n\n protected onCancelFocus(event: Event): void {\n event.stopPropagation();\n }\n\n protected input(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n if (!this.isProhibitedCharactersUsed(value)) {\n this.debouncer.next(value);\n }\n }\n\n protected onBlur(): void {\n this.inFocus = false;\n this.onTouch();\n }\n\n protected resetForm(): void {\n this.setSearch('');\n }\n\n protected writeSearchValue(value: string): void {\n this.searchValue.set(value);\n this.inputRef().nativeElement.value = value;\n }\n}\n","<div class=\"position-relative\" [class.disabled]=\"disabled()\" [class.focus]=\"inFocus\">\n @if (showIcon()) {\n <si-icon class=\"search-bar-icon icon text-secondary\" [icon]=\"icons.elementSearch\" />\n }\n <input\n #inputRef\n type=\"text\"\n class=\"form-control\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n [class.dark-background]=\"colorVariant() === 'base-0'\"\n [class.ps-9]=\"showIcon()\"\n [class.is-invalid]=\"isInvalid\"\n [class.icon-end]=\"searchValue()\"\n [attr.tabindex]=\"tabbable() ? '' : '-1'\"\n [readonly]=\"readonly()\"\n (focus)=\"inFocus = true\"\n (blur)=\"onBlur()\"\n (input)=\"input($event)\"\n />\n @if (searchValue()) {\n <button\n type=\"button\"\n class=\"btn btn-circle btn-xs btn-ghost cancel-button\"\n [attr.aria-label]=\"clearButtonAriaLabel() | translate\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"resetForm()\"\n (focusin)=\"onCancelFocus($event)\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiSearchBarComponent } from './si-search-bar.component';\n\n@NgModule({\n imports: [SiSearchBarComponent],\n exports: [SiSearchBarComponent]\n})\nexport class SiSearchBarModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-search-bar.component';\nexport * from './si-search-bar.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -501,7 +501,7 @@ class SiSidePanelContentComponent {
|
|
|
501
501
|
}
|
|
502
502
|
}
|
|
503
503
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiSidePanelContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
504
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: SiSidePanelContentComponent, isStandalone: true, selector: "si-side-panel-content", inputs: { collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: false, transformFunction: null }, primaryActions: { classPropertyName: "primaryActions", publicName: "primaryActions", isSignal: true, isRequired: false, transformFunction: null }, secondaryActions: { classPropertyName: "secondaryActions", publicName: "secondaryActions", isSignal: true, isRequired: false, transformFunction: null }, statusActions: { classPropertyName: "statusActions", publicName: "statusActions", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, closeButtonLabel: { classPropertyName: "closeButtonLabel", publicName: "closeButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, toggleItemLabel: { classPropertyName: "toggleItemLabel", publicName: "toggleItemLabel", isSignal: true, isRequired: false, transformFunction: null }, showMobileDrawerBadge: { classPropertyName: "showMobileDrawerBadge", publicName: "showMobileDrawerBadge", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchEvent: "searchEvent" }, host: { properties: { "class.collapsed": "isCollapsed()", "class.expanded": "isExpanded()", "class.enable-mobile": "enableMobile()" } }, providers: [SiAccordionHCollapseService], ngImport: i0, template: "<div class=\"rpanel-header pt-5\">\n <p class=\"si-h5 my-0 ms-6 auto-hide text-truncate\">{{ heading() | translate }}</p>\n @if ((primaryActions().length || secondaryActions().length) && focusable()) {\n <si-content-action-bar\n class=\"auto-hide ms-auto\"\n viewType=\"expanded\"\n [primaryActions]=\"primaryActions()\"\n [secondaryActions]=\"secondaryActions()\"\n [toggleItemLabel]=\"toggleItemLabel()\"\n />\n }\n <button\n type=\"button\"\n class=\"close-button btn btn-circle btn-sm btn-ghost element-cancel me-4\"\n [attr.aria-label]=\"closeButtonLabel() | translate\"\n [tabindex]=\"focusable() ? '0' : '-1'\"\n (click)=\"toggleSidePanel($event)\"\n ></button>\n <div class=\"collapse-toggle\">\n <button\n type=\"button\"\n class=\"side-panel-collapse-toggle btn btn-circle btn-sm btn-ghost mx-4\"\n [attr.aria-label]=\"toggleItemLabel() | translate\"\n (click)=\"toggleSidePanel($event)\"\n >\n <si-icon\n class=\"flip-rtl\"\n [class.badge-dot]=\"showMobileDrawerBadge()\"\n [icon]=\"isCollapsed() ? icons.elementDoubleLeft : icons.elementDoubleRight\"\n />\n </button>\n </div>\n</div>\n<div class=\"rpanel-wrapper d-flex flex-column\">\n @if (statusActions().length && focusable()) {\n <div class=\"rpanel-header rpanel-statusactions px-6\">\n @for (dp of statusActions(); track $index) {\n @if (!dp.disabled) {\n <a\n class=\"rpanel-statusaction position-relative focus-inside\"\n [attr.aria-label]=\"!isCollapsed ? '' : (dp.title | translate)\"\n [siLink]=\"dp\"\n >\n <si-icon class=\"icon\" [icon]=\"dp.icon!\" />\n @if (dp.overlayIcon) {\n <si-icon class=\"icon position-absolute\" [icon]=\"dp.overlayIcon\" />\n }\n <span class=\"ms-2 auto-hide\">{{ dp.title | translate }}</span>\n </a>\n }
|
|
504
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: SiSidePanelContentComponent, isStandalone: true, selector: "si-side-panel-content", inputs: { collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: false, transformFunction: null }, primaryActions: { classPropertyName: "primaryActions", publicName: "primaryActions", isSignal: true, isRequired: false, transformFunction: null }, secondaryActions: { classPropertyName: "secondaryActions", publicName: "secondaryActions", isSignal: true, isRequired: false, transformFunction: null }, statusActions: { classPropertyName: "statusActions", publicName: "statusActions", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, closeButtonLabel: { classPropertyName: "closeButtonLabel", publicName: "closeButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, toggleItemLabel: { classPropertyName: "toggleItemLabel", publicName: "toggleItemLabel", isSignal: true, isRequired: false, transformFunction: null }, showMobileDrawerBadge: { classPropertyName: "showMobileDrawerBadge", publicName: "showMobileDrawerBadge", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchEvent: "searchEvent" }, host: { properties: { "class.collapsed": "isCollapsed()", "class.expanded": "isExpanded()", "class.enable-mobile": "enableMobile()" } }, providers: [SiAccordionHCollapseService], ngImport: i0, template: "<div class=\"rpanel-header pt-5\">\n <p class=\"si-h5 my-0 ms-6 auto-hide text-truncate\">{{ heading() | translate }}</p>\n @if ((primaryActions().length || secondaryActions().length) && focusable()) {\n <si-content-action-bar\n class=\"auto-hide ms-auto\"\n viewType=\"expanded\"\n [primaryActions]=\"primaryActions()\"\n [secondaryActions]=\"secondaryActions()\"\n [toggleItemLabel]=\"toggleItemLabel()\"\n />\n }\n <button\n type=\"button\"\n class=\"close-button btn btn-circle btn-sm btn-ghost element-cancel me-4\"\n [attr.aria-label]=\"closeButtonLabel() | translate\"\n [tabindex]=\"focusable() ? '0' : '-1'\"\n (click)=\"toggleSidePanel($event)\"\n ></button>\n <div class=\"collapse-toggle\">\n <button\n type=\"button\"\n class=\"side-panel-collapse-toggle btn btn-circle btn-sm btn-ghost mx-4\"\n [attr.aria-label]=\"toggleItemLabel() | translate\"\n (click)=\"toggleSidePanel($event)\"\n >\n <si-icon\n class=\"flip-rtl\"\n [class.badge-dot]=\"showMobileDrawerBadge()\"\n [icon]=\"isCollapsed() ? icons.elementDoubleLeft : icons.elementDoubleRight\"\n />\n </button>\n </div>\n</div>\n<div class=\"rpanel-wrapper d-flex flex-column\">\n @if (statusActions().length && focusable()) {\n <div class=\"rpanel-header rpanel-statusactions px-6\">\n @for (dp of statusActions(); track $index) {\n @if (!dp.disabled) {\n <a\n class=\"rpanel-statusaction position-relative focus-inside\"\n [attr.aria-label]=\"!isCollapsed ? '' : (dp.title | translate)\"\n [siLink]=\"dp\"\n >\n <si-icon class=\"icon\" [icon]=\"dp.icon!\" />\n @if (dp.overlayIcon) {\n <si-icon class=\"icon position-absolute\" [icon]=\"dp.overlayIcon\" />\n }\n <span class=\"ms-2 auto-hide\">{{ dp.title | translate }}</span>\n </a>\n } @else {\n <div class=\"rpanel-statusaction dot-outer\" aria-hidden=\"true\">\n <div class=\"dot text-muted text-center\">•</div>\n </div>\n }\n }\n </div>\n }\n @if (searchable() && focusable()) {\n <div class=\"nav-search px-6 auto-hide\">\n <si-search-bar\n #searchBar\n class=\"m-0\"\n colorVariant=\"base-0\"\n prohibitedCharacters=\"*?\"\n [placeholder]=\"searchPlaceholder() | translate\"\n [debounceTime]=\"400\"\n [showIcon]=\"true\"\n (searchChange)=\"searchEvent.emit($event)\"\n />\n </div>\n }\n @if (focusable()) {\n <div class=\"rpanel-content\">\n <ng-content />\n </div>\n }\n</div>\n", styles: [":host{--si-accordion-radius: 0;display:flex;flex-direction:column;flex:1;gap:12px}:host-context(.collapsible) .close-button{display:none}:host-context(.collapsible) .collapse-toggle{display:block}:host-context(.collapsible) .rpanel-wrapper{gap:12px}:host-context(.collapsible) :host.collapsed{gap:0}:host-context(.collapsible) :host.collapsed .auto-hide{display:none}:host-context(.collapsible) :host.collapsed .rpanel-wrapper{gap:0;inline-size:var(--rpanel-collapsed-width)}:host-context(.collapsible) :host.collapsed .rpanel-content{flex:0 0 auto;margin-block-start:8px}:host-context(.collapsible) :host.collapsed .rpanel-statusactions{order:3;flex-direction:column;align-items:flex-start;padding:0!important}:host-context(.collapsible) :host.collapsed .rpanel-statusaction{padding-block:8px;padding-inline:12px}:host-context(.collapsible) :host.collapsed .rpanel-statusaction:not(.dot-outer):hover{background:var(--element-base-1-hover)}.collapse-toggle{display:none}.collapse-toggle i{vertical-align:bottom}.rpanel-header,.rpanel-statusaction{display:flex;align-items:center}.rpanel-header{justify-content:space-between}.rpanel-wrapper,.rpanel-content{min-block-size:0;flex:1 0 0;overflow-x:hidden;overflow-y:auto}.rpanel-statusaction{text-decoration:none}.rpanel-statusaction .dot{inline-size:24px;line-height:24px}.rpanel-statusaction span{font-size:12px;white-space:pre-wrap;color:var(--element-text-primary)}.rpanel-statusaction:hover span{color:var(--element-text-active)}@media (max-width: 575.98px){:host.enable-mobile:not(.collapsed):not(.expanded) si-content-action-bar{margin-inline-end:48px}:host.enable-mobile:not(.expanded) .collapse-toggle{position:fixed;border:0;text-align:end;padding-block:4px!important;margin-block-start:8px!important;inset-inline-end:0;inset-block-start:calc(48px + var(--element-titlebar-spacing, 0px) + var(--element-system-banner-spacing, 0px));border-start-start-radius:var(--element-radius-2);border-end-start-radius:var(--element-radius-2);border-start-end-radius:0!important;border-end-end-radius:0!important;background:var(--element-base-1);box-shadow:0 0 4px var(--element-box-shadow-color-1),0 4px 4px var(--element-box-shadow-color-2);z-index:2}}\n"], dependencies: [{ kind: "component", type: SiContentActionBarComponent, selector: "si-content-action-bar", inputs: ["primaryActions", "secondaryActions", "actionParam", "viewType", "toggleItemLabel", "preventIconsInDropdownMenus", "disabled"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "directive", type: SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "component", type: SiSearchBarComponent, selector: "si-search-bar", inputs: ["debounceTime", "prohibitedCharacters", "placeholder", "showIcon", "tabbable", "value", "readonly", "colorVariant", "disabled", "clearButtonAriaLabel"], outputs: ["searchChange"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }] });
|
|
505
505
|
}
|
|
506
506
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiSidePanelContentComponent, decorators: [{
|
|
507
507
|
type: Component,
|
|
@@ -515,7 +515,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
515
515
|
'[class.collapsed]': 'isCollapsed()',
|
|
516
516
|
'[class.expanded]': 'isExpanded()',
|
|
517
517
|
'[class.enable-mobile]': 'enableMobile()'
|
|
518
|
-
}, template: "<div class=\"rpanel-header pt-5\">\n <p class=\"si-h5 my-0 ms-6 auto-hide text-truncate\">{{ heading() | translate }}</p>\n @if ((primaryActions().length || secondaryActions().length) && focusable()) {\n <si-content-action-bar\n class=\"auto-hide ms-auto\"\n viewType=\"expanded\"\n [primaryActions]=\"primaryActions()\"\n [secondaryActions]=\"secondaryActions()\"\n [toggleItemLabel]=\"toggleItemLabel()\"\n />\n }\n <button\n type=\"button\"\n class=\"close-button btn btn-circle btn-sm btn-ghost element-cancel me-4\"\n [attr.aria-label]=\"closeButtonLabel() | translate\"\n [tabindex]=\"focusable() ? '0' : '-1'\"\n (click)=\"toggleSidePanel($event)\"\n ></button>\n <div class=\"collapse-toggle\">\n <button\n type=\"button\"\n class=\"side-panel-collapse-toggle btn btn-circle btn-sm btn-ghost mx-4\"\n [attr.aria-label]=\"toggleItemLabel() | translate\"\n (click)=\"toggleSidePanel($event)\"\n >\n <si-icon\n class=\"flip-rtl\"\n [class.badge-dot]=\"showMobileDrawerBadge()\"\n [icon]=\"isCollapsed() ? icons.elementDoubleLeft : icons.elementDoubleRight\"\n />\n </button>\n </div>\n</div>\n<div class=\"rpanel-wrapper d-flex flex-column\">\n @if (statusActions().length && focusable()) {\n <div class=\"rpanel-header rpanel-statusactions px-6\">\n @for (dp of statusActions(); track $index) {\n @if (!dp.disabled) {\n <a\n class=\"rpanel-statusaction position-relative focus-inside\"\n [attr.aria-label]=\"!isCollapsed ? '' : (dp.title | translate)\"\n [siLink]=\"dp\"\n >\n <si-icon class=\"icon\" [icon]=\"dp.icon!\" />\n @if (dp.overlayIcon) {\n <si-icon class=\"icon position-absolute\" [icon]=\"dp.overlayIcon\" />\n }\n <span class=\"ms-2 auto-hide\">{{ dp.title | translate }}</span>\n </a>\n }
|
|
518
|
+
}, template: "<div class=\"rpanel-header pt-5\">\n <p class=\"si-h5 my-0 ms-6 auto-hide text-truncate\">{{ heading() | translate }}</p>\n @if ((primaryActions().length || secondaryActions().length) && focusable()) {\n <si-content-action-bar\n class=\"auto-hide ms-auto\"\n viewType=\"expanded\"\n [primaryActions]=\"primaryActions()\"\n [secondaryActions]=\"secondaryActions()\"\n [toggleItemLabel]=\"toggleItemLabel()\"\n />\n }\n <button\n type=\"button\"\n class=\"close-button btn btn-circle btn-sm btn-ghost element-cancel me-4\"\n [attr.aria-label]=\"closeButtonLabel() | translate\"\n [tabindex]=\"focusable() ? '0' : '-1'\"\n (click)=\"toggleSidePanel($event)\"\n ></button>\n <div class=\"collapse-toggle\">\n <button\n type=\"button\"\n class=\"side-panel-collapse-toggle btn btn-circle btn-sm btn-ghost mx-4\"\n [attr.aria-label]=\"toggleItemLabel() | translate\"\n (click)=\"toggleSidePanel($event)\"\n >\n <si-icon\n class=\"flip-rtl\"\n [class.badge-dot]=\"showMobileDrawerBadge()\"\n [icon]=\"isCollapsed() ? icons.elementDoubleLeft : icons.elementDoubleRight\"\n />\n </button>\n </div>\n</div>\n<div class=\"rpanel-wrapper d-flex flex-column\">\n @if (statusActions().length && focusable()) {\n <div class=\"rpanel-header rpanel-statusactions px-6\">\n @for (dp of statusActions(); track $index) {\n @if (!dp.disabled) {\n <a\n class=\"rpanel-statusaction position-relative focus-inside\"\n [attr.aria-label]=\"!isCollapsed ? '' : (dp.title | translate)\"\n [siLink]=\"dp\"\n >\n <si-icon class=\"icon\" [icon]=\"dp.icon!\" />\n @if (dp.overlayIcon) {\n <si-icon class=\"icon position-absolute\" [icon]=\"dp.overlayIcon\" />\n }\n <span class=\"ms-2 auto-hide\">{{ dp.title | translate }}</span>\n </a>\n } @else {\n <div class=\"rpanel-statusaction dot-outer\" aria-hidden=\"true\">\n <div class=\"dot text-muted text-center\">•</div>\n </div>\n }\n }\n </div>\n }\n @if (searchable() && focusable()) {\n <div class=\"nav-search px-6 auto-hide\">\n <si-search-bar\n #searchBar\n class=\"m-0\"\n colorVariant=\"base-0\"\n prohibitedCharacters=\"*?\"\n [placeholder]=\"searchPlaceholder() | translate\"\n [debounceTime]=\"400\"\n [showIcon]=\"true\"\n (searchChange)=\"searchEvent.emit($event)\"\n />\n </div>\n }\n @if (focusable()) {\n <div class=\"rpanel-content\">\n <ng-content />\n </div>\n }\n</div>\n", styles: [":host{--si-accordion-radius: 0;display:flex;flex-direction:column;flex:1;gap:12px}:host-context(.collapsible) .close-button{display:none}:host-context(.collapsible) .collapse-toggle{display:block}:host-context(.collapsible) .rpanel-wrapper{gap:12px}:host-context(.collapsible) :host.collapsed{gap:0}:host-context(.collapsible) :host.collapsed .auto-hide{display:none}:host-context(.collapsible) :host.collapsed .rpanel-wrapper{gap:0;inline-size:var(--rpanel-collapsed-width)}:host-context(.collapsible) :host.collapsed .rpanel-content{flex:0 0 auto;margin-block-start:8px}:host-context(.collapsible) :host.collapsed .rpanel-statusactions{order:3;flex-direction:column;align-items:flex-start;padding:0!important}:host-context(.collapsible) :host.collapsed .rpanel-statusaction{padding-block:8px;padding-inline:12px}:host-context(.collapsible) :host.collapsed .rpanel-statusaction:not(.dot-outer):hover{background:var(--element-base-1-hover)}.collapse-toggle{display:none}.collapse-toggle i{vertical-align:bottom}.rpanel-header,.rpanel-statusaction{display:flex;align-items:center}.rpanel-header{justify-content:space-between}.rpanel-wrapper,.rpanel-content{min-block-size:0;flex:1 0 0;overflow-x:hidden;overflow-y:auto}.rpanel-statusaction{text-decoration:none}.rpanel-statusaction .dot{inline-size:24px;line-height:24px}.rpanel-statusaction span{font-size:12px;white-space:pre-wrap;color:var(--element-text-primary)}.rpanel-statusaction:hover span{color:var(--element-text-active)}@media (max-width: 575.98px){:host.enable-mobile:not(.collapsed):not(.expanded) si-content-action-bar{margin-inline-end:48px}:host.enable-mobile:not(.expanded) .collapse-toggle{position:fixed;border:0;text-align:end;padding-block:4px!important;margin-block-start:8px!important;inset-inline-end:0;inset-block-start:calc(48px + var(--element-titlebar-spacing, 0px) + var(--element-system-banner-spacing, 0px));border-start-start-radius:var(--element-radius-2);border-end-start-radius:var(--element-radius-2);border-start-end-radius:0!important;border-end-end-radius:0!important;background:var(--element-base-1);box-shadow:0 0 4px var(--element-box-shadow-color-1),0 4px 4px var(--element-box-shadow-color-2);z-index:2}}\n"] }]
|
|
519
519
|
}], ctorParameters: () => [] });
|
|
520
520
|
|
|
521
521
|
/**
|