@siemens/element-ng 47.4.0 → 47.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/breadcrumb-router/index.d.ts +8 -0
- package/breadcrumb-router/package.json +3 -0
- package/breadcrumb-router/si-breadcrumb-default-resolver.service.d.ts +23 -0
- package/breadcrumb-router/si-breadcrumb-router.component.d.ts +30 -0
- package/breadcrumb-router/si-breadcrumb-router.model.d.ts +53 -0
- package/breadcrumb-router/si-breadcrumb-router.module.d.ts +7 -0
- package/common/models/status-type.model.d.ts +2 -0
- package/datatable/index.d.ts +42 -0
- package/datatable/package.json +3 -0
- package/datatable/si-datatable-interaction.directive.d.ts +34 -0
- package/datatable/si-datatable.module.d.ts +7 -0
- package/date-range-filter/si-date-range-filter.component.d.ts +5 -1
- package/fesm2022/siemens-element-ng-breadcrumb-router.mjs +263 -0
- package/fesm2022/siemens-element-ng-breadcrumb-router.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-breadcrumb.mjs +1 -1
- package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-common.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-datatable.mjs +173 -0
- package/fesm2022/siemens-element-ng-datatable.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-date-range-filter.mjs +26 -5
- package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filtered-search.mjs +1139 -0
- package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-formly.mjs +935 -0
- package/fesm2022/siemens-element-ng-formly.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-icon.mjs +29 -15
- package/fesm2022/siemens-element-ng-icon.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-list-details.mjs +390 -0
- package/fesm2022/siemens-element-ng-list-details.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-loading-spinner.mjs +15 -12
- package/fesm2022/siemens-element-ng-loading-spinner.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-main-detail-container.mjs +269 -0
- package/fesm2022/siemens-element-ng-main-detail-container.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-modal.mjs +5 -2
- package/fesm2022/siemens-element-ng-modal.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar-vertical.mjs +802 -0
- package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-password-strength.mjs +22 -16
- package/fesm2022/siemens-element-ng-password-strength.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-phone-number.mjs +426 -0
- package/fesm2022/siemens-element-ng-phone-number.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-resize-observer.mjs +6 -3
- package/fesm2022/siemens-element-ng-resize-observer.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-result-details-list.mjs +74 -0
- package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-shadow-root.mjs +70 -0
- package/fesm2022/siemens-element-ng-shadow-root.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-side-panel.mjs +554 -0
- package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-status-bar.mjs +348 -0
- package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-tabs-next.mjs +356 -0
- package/fesm2022/siemens-element-ng-tabs-next.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-tabs.mjs +1 -1
- package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-threshold.mjs +319 -0
- package/fesm2022/siemens-element-ng-threshold.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-tour.mjs +384 -0
- package/fesm2022/siemens-element-ng-tour.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tree-view.mjs +2936 -0
- package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-wizard.mjs +2 -2
- package/fesm2022/siemens-element-ng-wizard.mjs.map +1 -1
- package/filtered-search/index.d.ts +7 -0
- package/filtered-search/package.json +3 -0
- package/filtered-search/si-filtered-search-helper.d.ts +22 -0
- package/filtered-search/si-filtered-search-value.component.d.ts +53 -0
- package/filtered-search/si-filtered-search.component.d.ts +329 -0
- package/filtered-search/si-filtered-search.model.d.ts +139 -0
- package/filtered-search/si-filtered-search.module.d.ts +7 -0
- package/filtered-search/values/date-value/si-filtered-search-date-value.component.d.ts +57 -0
- package/filtered-search/values/si-filtered-search-value.base.d.ts +27 -0
- package/filtered-search/values/typeahead/si-filtered-search-typeahead.component.d.ts +45 -0
- package/formly/fields/button/si-formly-button.component.d.ts +7 -0
- package/formly/fields/date-range/si-formly-date-range.component.d.ts +6 -0
- package/formly/fields/datetime/si-formly-datetime.component.d.ts +13 -0
- package/formly/fields/email/si-formly-email.component.d.ts +6 -0
- package/formly/fields/ip-input/si-formly-ip-input.component.d.ts +6 -0
- package/formly/fields/number/si-formly-number.component.d.ts +6 -0
- package/formly/fields/password/si-formly-password.component.d.ts +6 -0
- package/formly/fields/select/si-formly-select.component.d.ts +6 -0
- package/formly/fields/text/si-formly-text-display.component.d.ts +7 -0
- package/formly/fields/textarea/si-formly-textarea.component.d.ts +18 -0
- package/formly/fields/time/si-formly-time.component.d.ts +13 -0
- package/formly/index.d.ts +6 -0
- package/formly/package.json +3 -0
- package/formly/si-formly-translate.extension.d.ts +11 -0
- package/formly/si-formly.component.d.ts +62 -0
- package/formly/si-formly.module.d.ts +35 -0
- package/formly/structural/si-formly-accordion/si-formly-accordion.component.d.ts +13 -0
- package/formly/structural/si-formly-array/si-formly-array.component.d.ts +6 -0
- package/formly/structural/si-formly-object/si-formly-object.component.d.ts +6 -0
- package/formly/structural/si-formly-object-grid/si-formly-object-grid.component.d.ts +22 -0
- package/formly/structural/si-formly-object-grid/si-formly-object-grid.model.d.ts +21 -0
- package/formly/structural/si-formly-object-plain/si-formly-object-plain.component.d.ts +6 -0
- package/formly/structural/si-formly-tabset/si-formly-object-tabset.component.d.ts +7 -0
- package/formly/utils.d.ts +6 -0
- package/formly/wrapper/si-formly-fieldset.component.d.ts +8 -0
- package/formly/wrapper/si-formly-form-field-provider.directive.d.ts +19 -0
- package/formly/wrapper/si-formly-horizontal-wrapper.component.d.ts +6 -0
- package/formly/wrapper/si-formly-icon-wrapper.component.d.ts +6 -0
- package/formly/wrapper/si-formly-wrapper.component.d.ts +8 -0
- package/icon/element-icons.d.ts +5 -0
- package/list-details/index.d.ts +12 -0
- package/list-details/package.json +3 -0
- package/list-details/si-details-pane/si-details-pane.component.d.ts +8 -0
- package/list-details/si-details-pane-body/si-details-pane-body.component.d.ts +6 -0
- package/list-details/si-details-pane-footer/si-details-pane-footer.component.d.ts +6 -0
- package/list-details/si-details-pane-header/si-details-pane-header.component.d.ts +38 -0
- package/list-details/si-list-details.component.d.ts +100 -0
- package/list-details/si-list-pane/si-list-pane.component.d.ts +10 -0
- package/list-details/si-list-pane-body/si-list-pane-body.component.d.ts +6 -0
- package/list-details/si-list-pane-header/si-list-pane-header.component.d.ts +6 -0
- package/loading-spinner/si-loading-spinner.directive.d.ts +3 -2
- package/main-detail-container/index.d.ts +6 -0
- package/main-detail-container/package.json +3 -0
- package/main-detail-container/si-main-detail-container.component.d.ts +151 -0
- package/main-detail-container/si-main-detail-container.module.d.ts +7 -0
- package/navbar-vertical/index.d.ts +7 -0
- package/navbar-vertical/package.json +3 -0
- package/navbar-vertical/si-navbar-vertical-divider.component.d.ts +5 -0
- package/navbar-vertical/si-navbar-vertical-group-trigger.directive.d.ts +38 -0
- package/navbar-vertical/si-navbar-vertical-group.component.d.ts +16 -0
- package/navbar-vertical/si-navbar-vertical-header.component.d.ts +6 -0
- package/navbar-vertical/si-navbar-vertical-item-legacy.component.d.ts +17 -0
- package/navbar-vertical/si-navbar-vertical-item.component.d.ts +21 -0
- package/navbar-vertical/si-navbar-vertical.component.d.ts +148 -0
- package/navbar-vertical/si-navbar-vertical.model.d.ts +77 -0
- package/navbar-vertical/si-navbar-vertical.module.d.ts +7 -0
- package/navbar-vertical/si-navbar-vertical.provider.d.ts +7 -0
- package/package.json +93 -9
- package/password-strength/si-password-strength.directive.d.ts +11 -0
- package/phone-number/index.d.ts +7 -0
- package/phone-number/package.json +3 -0
- package/phone-number/si-phone-number-input-select.directive.d.ts +10 -0
- package/phone-number/si-phone-number-input.component.d.ts +137 -0
- package/phone-number/si-phone-number-input.models.d.ts +48 -0
- package/phone-number/si-phone-number-input.module.d.ts +7 -0
- package/resize-observer/si-resize-observer.directive.d.ts +3 -1
- package/result-details-list/index.d.ts +7 -0
- package/result-details-list/package.json +3 -0
- package/result-details-list/si-result-details-list.component.d.ts +14 -0
- package/result-details-list/si-result-details-list.datamodel.d.ts +48 -0
- package/result-details-list/si-result-details-list.module.d.ts +7 -0
- package/shadow-root/index.d.ts +5 -0
- package/shadow-root/package.json +3 -0
- package/shadow-root/si-shadow-root.directive.d.ts +39 -0
- package/side-panel/index.d.ts +9 -0
- package/side-panel/package.json +3 -0
- package/side-panel/si-side-panel-content.component.d.ts +105 -0
- package/side-panel/si-side-panel.component.d.ts +108 -0
- package/side-panel/si-side-panel.module.d.ts +8 -0
- package/side-panel/si-side-panel.service.d.ts +45 -0
- package/side-panel/side-panel.model.d.ts +16 -0
- package/status-bar/index.d.ts +7 -0
- package/status-bar/package.json +3 -0
- package/status-bar/si-status-bar-item/index.d.ts +6 -0
- package/status-bar/si-status-bar-item/si-status-bar-item.component.d.ts +22 -0
- package/status-bar/si-status-bar-item/si-status-bar-item.model.d.ts +33 -0
- package/status-bar/si-status-bar.component.d.ts +116 -0
- package/status-bar/si-status-bar.module.d.ts +7 -0
- package/tabs-next/index.d.ts +7 -0
- package/tabs-next/package.json +3 -0
- package/tabs-next/si-tab-next-base.directive.d.ts +63 -0
- package/tabs-next/si-tab-next-link.component.d.ts +16 -0
- package/tabs-next/si-tab-next.component.d.ts +16 -0
- package/tabs-next/si-tabs-tokens.d.ts +7 -0
- package/tabs-next/si-tabset-next.component.d.ts +57 -0
- package/template-i18n.json +45 -0
- package/threshold/index.d.ts +6 -0
- package/threshold/package.json +3 -0
- package/threshold/si-readonly-threshold-option.component.d.ts +11 -0
- package/threshold/si-threshold.component.d.ts +147 -0
- package/threshold/si-threshold.module.d.ts +7 -0
- package/tour/index.d.ts +6 -0
- package/tour/package.json +3 -0
- package/tour/si-tour-highlight.component.d.ts +15 -0
- package/tour/si-tour-token.model.d.ts +27 -0
- package/tour/si-tour.component.d.ts +31 -0
- package/tour/si-tour.model.d.ts +51 -0
- package/tour/si-tour.service.d.ts +62 -0
- package/translate/si-translatable-keys.interface.d.ts +45 -0
- package/tree-view/drag-drop.util.d.ts +32 -0
- package/tree-view/index.d.ts +12 -0
- package/tree-view/package.json +3 -0
- package/tree-view/si-tree-view-converter.service.d.ts +41 -0
- package/tree-view/si-tree-view-item/si-tree-view-item.component.d.ts +105 -0
- package/tree-view/si-tree-view-item/si-tree-view-item.directive.d.ts +24 -0
- package/tree-view/si-tree-view-item-context.d.ts +11 -0
- package/tree-view/si-tree-view-item-height.service.d.ts +49 -0
- package/tree-view/si-tree-view-item-template.directive.d.ts +18 -0
- package/tree-view/si-tree-view-virtualization.service.d.ts +150 -0
- package/tree-view/si-tree-view.component.d.ts +466 -0
- package/tree-view/si-tree-view.model.d.ts +146 -0
- package/tree-view/si-tree-view.module.d.ts +10 -0
- package/tree-view/si-tree-view.service.d.ts +55 -0
- package/tree-view/si-tree-view.utils.d.ts +46 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-date-range-filter.mjs","sources":["../../../../projects/element-ng/date-range-filter/si-date-range-calculation.service.ts","../../../../projects/element-ng/date-range-filter/si-date-range-filter.types.ts","../../../../projects/element-ng/date-range-filter/si-relative-date.component.ts","../../../../projects/element-ng/date-range-filter/si-relative-date.component.html","../../../../projects/element-ng/date-range-filter/si-date-range-filter.component.ts","../../../../projects/element-ng/date-range-filter/si-date-range-filter.component.html","../../../../projects/element-ng/date-range-filter/si-date-range-filter.module.ts","../../../../projects/element-ng/date-range-filter/index.ts","../../../../projects/element-ng/date-range-filter/siemens-element-ng-date-range-filter.ts"],"sourcesContent":["/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { Injectable } from '@angular/core';\n\nimport { DateRangeFilter, ResolvedDateRange } from './si-date-range-filter.types';\n\nexport interface ResolveDateRangeOptions {\n /**\n * Resolve time? When set to false, hours/minutes/seconds/ms are set to zero\n * @defaultValue true\n **/\n withTime?: boolean;\n /**\n * Skip normalization? When skipped, `point1` will always be `start`, `point2` will be `end`\n */\n skipNormalization?: boolean;\n}\n\n/**\n * Service to transform and calculate with DateRangeFilter objects.\n */\n@Injectable({ providedIn: 'root' })\nexport class SiDateRangeCalculationService {\n /**\n * Calculates the start and end dates of a DateRangeFilter.\n * @param filter - The date range filter object to be resolved.\n * @param options - Options for time handling\n * @returns The resolved result in form of a ResolvedDateRange object.\n */\n resolveDateRangeFilter(\n filter: DateRangeFilter,\n options?: ResolveDateRangeOptions\n ): ResolvedDateRange {\n const ref = filter.point1 === 'now' ? new Date() : new Date(filter.point1);\n const withTime = options?.withTime ?? true;\n\n if (!withTime) {\n this.removeTime(ref);\n }\n\n if (filter.point2 instanceof Date) {\n const point2 = withTime ? filter.point2 : this.removeTime(new Date(filter.point2));\n return this.normalize(ref, point2, options?.skipNormalization);\n }\n\n const offset = filter.point2;\n\n switch (filter.range) {\n case undefined:\n case 'before':\n return this.normalize(ref, this.datePlusOffset(ref, -offset), options?.skipNormalization);\n case 'after':\n return this.normalize(ref, this.datePlusOffset(ref, offset), options?.skipNormalization);\n case 'within':\n return this.normalize(\n this.datePlusOffset(ref, -offset),\n this.datePlusOffset(ref, offset),\n options?.skipNormalization\n );\n }\n }\n\n private datePlusOffset(date: Date, offset: number): Date {\n return new Date(date.getTime() + offset);\n }\n\n private normalize(date1: Date, date2: Date, skip?: boolean): ResolvedDateRange {\n const valid = !isNaN(date1.getTime()) && !isNaN(date2.getTime());\n return skip\n ? { start: date1, end: date2, valid }\n : date1 < date2\n ? { start: date1, end: date2, valid }\n : { start: date2, end: date1, valid };\n }\n\n /**\n * Utility to reset the time attributes to 0 (hours/minutes/seconds/milliseconds).\n */\n removeTime(date: Date): Date {\n date.setHours(0);\n date.setMinutes(0);\n date.setSeconds(0);\n date.setMilliseconds(0);\n return date;\n }\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { TranslatableString } from '@siemens/element-translate-ng/translate';\n\n/**\n * Simple DateRangeFilter preset based on offset from now\n */\nexport interface DateRangePresetOffset {\n type?: 'offset';\n /** translation key for label */\n label: TranslatableString;\n /** offset from current in milliseconds */\n offset: number;\n}\n\n/**\n * Advanced DateRageFilter preset with custom calculation\n */\nexport interface DateRangePresetCustom {\n type: 'custom';\n /** translation key for label */\n label: TranslatableString;\n /** calculation custom calculation function */\n calculate: (self: DateRangePresetCustom, currentRange: DateRangeFilter) => DateRangeFilter;\n /** Whether this should show only when time support is enabled */\n timeOnly?: boolean;\n}\n\nexport type DateRangePreset = DateRangePresetOffset | DateRangePresetCustom;\n\nexport interface DateRangeFilter {\n point1: Date | 'now';\n point2: number | Date;\n range?: 'before' | 'after' | 'within';\n}\n\nexport interface ResolvedDateRange {\n start: Date;\n end: Date;\n valid: boolean;\n}\n\nexport const ONE_MINUTE = 60 * 1000;\nexport const ONE_DAY = ONE_MINUTE * 60 * 24;\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n OnChanges,\n output,\n signal,\n SimpleChanges\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SiNumberInputComponent } from '@siemens/element-ng/number-input';\nimport {\n SelectOption,\n SiSelectComponent,\n SiSelectSimpleOptionsDirective,\n SiSelectSingleValueDirective\n} from '@siemens/element-ng/select';\n\nimport { ONE_DAY, ONE_MINUTE } from './si-date-range-filter.types';\n\ninterface OffsetOption extends SelectOption<string> {\n offset: number;\n}\n\n@Component({\n selector: 'si-relative-date',\n templateUrl: './si-relative-date.component.html',\n styleUrl: './si-relative-date.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n SiNumberInputComponent,\n SiSelectComponent,\n SiSelectSingleValueDirective,\n SiSelectSimpleOptionsDirective\n ]\n})\nexport class SiRelativeDateComponent implements OnChanges {\n /** @defaultValue 0 */\n readonly value = input(0);\n /** @defaultValue false */\n readonly enableTimeSelection = input(false, { transform: booleanAttribute });\n readonly valueLabel = input.required<string>();\n readonly unitLabel = input.required<string>();\n readonly valueChange = output<number>();\n\n protected readonly internalValue = signal(0);\n protected readonly offset = signal(0);\n protected readonly unit = signal('days');\n private readonly fullOffsetList: OffsetOption[] = [\n {\n type: 'option',\n value: 'minutes',\n label: $localize`:@@SI_DATE_RANGE_FILTER.MINUTES:Minutes`,\n offset: ONE_MINUTE\n },\n {\n type: 'option',\n value: 'hours',\n label: $localize`:@@SI_DATE_RANGE_FILTER.HOURS:Hours`,\n offset: 60 * ONE_MINUTE\n },\n {\n type: 'option',\n value: 'days',\n label: $localize`:@@SI_DATE_RANGE_FILTER.DAYS:Days`,\n offset: ONE_DAY\n },\n {\n type: 'option',\n value: 'weeks',\n label: $localize`:@@SI_DATE_RANGE_FILTER.WEEKS:Weeks`,\n offset: 7 * ONE_DAY\n },\n {\n type: 'option',\n value: 'months',\n label: $localize`:@@SI_DATE_RANGE_FILTER.MONTHS:Months`,\n offset: 30 * ONE_DAY\n },\n {\n type: 'option',\n value: 'years',\n label: $localize`:@@SI_DATE_RANGE_FILTER.YEARS:Years`,\n offset: 365 * ONE_DAY\n }\n ];\n\n protected readonly offsetList = computed(() =>\n this.enableTimeSelection()\n ? this.fullOffsetList\n : this.fullOffsetList.filter(item => item.offset >= ONE_DAY)\n );\n\n ngOnChanges(changes: SimpleChanges): void {\n const value = this.value();\n if (changes.value && value !== this.internalValue()) {\n this.internalValue.set(value);\n this.calculateOffset();\n }\n }\n\n private calculateOffset(): void {\n const offsetList = this.offsetList();\n let unit = '';\n if (offsetList.length) {\n this.offset.set(0);\n unit = offsetList[0].value;\n }\n\n for (let i = offsetList.length - 1; i >= 0; i--) {\n const item = offsetList[i];\n const raw = this.internalValue() / item.offset;\n const rounded = Math.round(raw);\n if (rounded > 0 && Math.abs(raw - rounded) < 0.001) {\n this.offset.set(rounded);\n unit = item.value;\n break;\n }\n }\n\n this.changeUnit(unit);\n }\n\n protected updateValue(offset: number): void {\n this.offset.set(offset);\n const item = this.offsetList().find(x => x.value === this.unit())!;\n this.internalValue.set(offset * item.offset);\n this.valueChange.emit(this.internalValue());\n }\n\n protected changeUnit(newUnit: string): void {\n this.unit.set(newUnit);\n const item = this.offsetList().find(x => x.value === this.unit())!;\n this.offset.set(Math.max(1, Math.round(this.internalValue() / item.offset)));\n this.internalValue.set(this.offset() * item.offset);\n this.valueChange.emit(this.internalValue());\n }\n}\n","<si-number-input\n class=\"form-control mb-4\"\n [aria-label]=\"valueLabel()\"\n [ngModel]=\"offset()\"\n (ngModelChange)=\"updateValue($event)\"\n/>\n<si-select\n class=\"form-control\"\n min=\"0\"\n [ariaLabel]=\"unitLabel()\"\n [options]=\"offsetList()\"\n [ngModel]=\"unit()\"\n (ngModelChange)=\"changeUnit($event)\"\n/>\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { CdkListbox, CdkOption } from '@angular/cdk/listbox';\nimport { DatePipe, NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n OnChanges,\n output,\n Pipe,\n PipeTransform,\n signal,\n SimpleChanges\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n DatepickerConfig,\n DatepickerInputConfig,\n DateRange,\n SiCalendarButtonComponent,\n SiDatepickerComponent,\n SiDatepickerDirective\n} from '@siemens/element-ng/datepicker';\nimport { SiSearchBarComponent } from '@siemens/element-ng/search-bar';\nimport { SiTranslateModule } from '@siemens/element-translate-ng/translate';\n\nimport { SiDateRangeCalculationService } from './si-date-range-calculation.service';\nimport {\n DateRangeFilter,\n DateRangePreset,\n ONE_DAY,\n ResolvedDateRange\n} from './si-date-range-filter.types';\nimport { SiRelativeDateComponent } from './si-relative-date.component';\n\n@Pipe({ name: 'presetMatchFilter', pure: true })\nexport class PresetMatchFilterPipe implements PipeTransform {\n transform(value: string, term: string): boolean {\n return !term ? true : value.toLowerCase().includes(term.toLowerCase());\n }\n}\n\n@Component({\n selector: 'si-date-range-filter',\n templateUrl: './si-date-range-filter.component.html',\n styleUrl: './si-date-range-filter.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CdkOption,\n CdkListbox,\n DatePipe,\n FormsModule,\n NgTemplateOutlet,\n PresetMatchFilterPipe,\n SiCalendarButtonComponent,\n SiDatepickerComponent,\n SiDatepickerDirective,\n SiRelativeDateComponent,\n SiSearchBarComponent,\n SiTranslateModule\n ]\n})\nexport class SiDateRangeFilterComponent implements OnChanges {\n private readonly service = inject(SiDateRangeCalculationService);\n\n /** The filter range object */\n readonly range = model.required<DateRangeFilter>();\n /** List of preset time ranges. When not present or empty, the preset section won't show */\n readonly presetList = input<DateRangePreset[]>();\n /**\n * Determines if there's a search field for the preset list\n *\n * @defaultValue true\n */\n readonly presetSearch = input(true, { transform: booleanAttribute });\n /**\n * Determines if time is selectable or only dates\n *\n * @defaultValue false\n */\n readonly enableTimeSelection = input(false, { transform: booleanAttribute });\n /**\n * Determines whether to show input fields or a date-range calendar in basic mode.\n * When time selection is enabled, this has no effect and input fields are always shown.\n *\n * @defaultValue 'calendar'\n */\n readonly basicMode = input<'input' | 'calendar'>('calendar');\n /**\n * Reverses the order of the from/to fields\n *\n * @defaultValue false\n */\n readonly reverseInputFields = input(false, { transform: booleanAttribute });\n\n /**\n * Determines whether to show the 'Apply' button\n *\n * @defaultValue false\n */\n readonly showApplyButton = input(false, { transform: booleanAttribute });\n /**\n * Hides the advanced mode if input allows\n *\n * @defaultValue false\n */\n readonly hideAdvancedMode = input(false, { transform: booleanAttribute });\n\n /**\n * label for the \"Reference point\" title\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.REF_POINT:Reference point`\n * ```\n */\n readonly refLabel = input($localize`:@@SI_DATE_RANGE_FILTER.REF_POINT:Reference point`);\n /**\n * label for the \"Reference point\" title\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.FROM:From`\n * ```\n */\n readonly fromLabel = input($localize`:@@SI_DATE_RANGE_FILTER.FROM:From`);\n /**\n * label for the \"Reference point\" title\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.TO:To`\n * ```\n */\n readonly toLabel = input($localize`:@@SI_DATE_RANGE_FILTER.TO:To`);\n /**\n * label for the \"Range\" title\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.RANGE:Range`\n * ```\n */\n readonly rangeLabel = input($localize`:@@SI_DATE_RANGE_FILTER.RANGE:Range`);\n /**\n * label for the \"Today\" checkbox\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.TODAY:Today`\n * ```\n */\n readonly todayLabel = input($localize`:@@SI_DATE_RANGE_FILTER.TODAY:Today`);\n /**\n * label for the \"Now\" checkbox\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.NOW:Now`\n * ```\n */\n readonly nowLabel = input($localize`:@@SI_DATE_RANGE_FILTER.NOW:Now`);\n /**\n * label for \"Date\" field / radio button\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.DATE:Date`\n * ```\n */\n readonly dateLabel = input($localize`:@@SI_DATE_RANGE_FILTER.DATE:Date`);\n /**\n * label for the \"Preview\" title\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.PREVIEW:Preview`\n * ```\n */\n readonly previewLabel = input($localize`:@@SI_DATE_RANGE_FILTER.PREVIEW:Preview`);\n /**\n * Placeholder for date fields\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.DATE_PLACEHOLDER:Select date`\n * ```\n */\n readonly datePlaceholder = input($localize`:@@SI_DATE_RANGE_FILTER.DATE_PLACEHOLDER:Select date`);\n /**\n * label for the \"Before\" toggle\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.BEFORE:Before`\n * ```\n */\n readonly beforeLabel = input($localize`:@@SI_DATE_RANGE_FILTER.BEFORE:Before`);\n /**\n * label for the \"After\" toggle\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.AFTER:After`\n * ```\n */\n readonly afterLabel = input($localize`:@@SI_DATE_RANGE_FILTER.AFTER:After`);\n /**\n * label for the \"Within\" toggle\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.WITHIN:Within`\n * ```\n */\n readonly withinLabel = input($localize`:@@SI_DATE_RANGE_FILTER.WITHIN:Within`);\n /**\n * label for the \"value\" number input\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.VALUE:Value`\n * ```\n */\n readonly valueLabel = input($localize`:@@SI_DATE_RANGE_FILTER.VALUE:Value`);\n /**\n * label for the \"Unit\" select\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.UNIT:Unit`\n * ```\n */\n readonly unitLabel = input($localize`:@@SI_DATE_RANGE_FILTER.UNIT:Unit`);\n /**\n * label for the \"search\" input\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.SEARCH:Search`\n * ```\n */\n readonly searchLabel = input($localize`:@@SI_DATE_RANGE_FILTER.SEARCH:Search`);\n /**\n * label for the \"search\" input\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.PRESETS:Presets`\n * ```\n */\n readonly presetLabel = input($localize`:@@SI_DATE_RANGE_FILTER.PRESETS:Presets`);\n /**\n * label for the \"advanced\" switch\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.ADVANCED:Advanced`\n * ```\n */\n readonly advancedLabel = input($localize`:@@SI_DATE_RANGE_FILTER.ADVANCED:Advanced`);\n /**\n * label for the \"apply\" switch\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.APPLY:Apply`\n * ```\n */\n readonly applyLabel = input($localize`:@@SI_DATE_RANGE_FILTER.APPLY:Apply`);\n\n /** Event fired when the apply button has been clicked */\n readonly applyClicked = output<void>();\n\n /** Base configuration on how the dates should be displayed, parts of it may be overwritten internally. */\n readonly datepickerConfig = input<DatepickerInputConfig>();\n\n protected advancedMode = false;\n protected dateRange: DateRange = { start: undefined, end: undefined };\n\n protected point1Now = true;\n protected point2Mode: 'duration' | 'date' = 'duration';\n\n protected point1date = this.getDateNow();\n protected point2date = this.getDateNow();\n protected point2offset = 0;\n protected point2range: 'before' | 'after' | 'within' = 'before';\n protected readonly calculatedRange = computed<ResolvedDateRange>(() =>\n this.resolve(this.range())\n );\n protected readonly pipeFormat = computed<string>(() =>\n this.enableTimeSelection()\n ? (this.datepickerConfig()?.dateTimeFormat ?? 'short')\n : (this.datepickerConfig()?.dateFormat ?? 'shortDate')\n );\n\n protected readonly datepickerConfigInternal = computed<DatepickerConfig>(() => ({\n ...(this.datepickerConfig() ?? {}),\n enableDateRange: false,\n showTime: this.enableTimeSelection(),\n mandatoryTime: this.enableTimeSelection()\n }));\n\n protected readonly dateRangeConfig = computed<DatepickerConfig>(() => ({\n ...(this.datepickerConfig() ?? {}),\n enableDateRange: true\n }));\n\n protected readonly filteredPresetList = computed<DateRangePreset[]>(() => {\n const timeFilter = (item: DateRangePreset): boolean => {\n const timeOnly = item.type === 'custom' ? item.timeOnly : item.offset < ONE_DAY;\n return this.enableTimeSelection() || !timeOnly;\n };\n return (this.presetList() ?? []).filter(timeFilter);\n });\n\n protected readonly presetFilter = signal('');\n\n protected readonly inputMode = computed(\n () => this.basicMode() === 'input' || this.enableTimeSelection()\n );\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes.enableTimeSelection ||\n changes.datepickerConfig ||\n (changes.range && this.rangeChanged(changes.range.previousValue, changes.range.currentValue))\n ) {\n this.updateFromRange();\n }\n if (\n (changes.basicMode || changes.enableTimeSelection) &&\n this.inputMode() &&\n !this.advancedMode\n ) {\n this.point2Mode = 'date';\n this.point2Changed();\n }\n }\n\n private getDateNow(): Date {\n const now = new Date();\n if (!this.enableTimeSelection()) {\n this.service.removeTime(now);\n }\n return now;\n }\n\n private rangeChanged(oldRange: DateRangeFilter | undefined, newRange: DateRangeFilter): boolean {\n return (\n !oldRange ||\n oldRange.point1 !== newRange.point1 ||\n oldRange.point2 !== newRange.point2 ||\n oldRange.range !== newRange.range\n );\n }\n\n private updateFromRange(): void {\n const rangeVal = this.range();\n this.point1Now = rangeVal.point1 === 'now';\n this.point1date = rangeVal.point1 === 'now' ? this.getDateNow() : rangeVal.point1;\n this.point2Mode = rangeVal.point2 instanceof Date ? 'date' : 'duration';\n this.point2date = rangeVal.point2 instanceof Date ? rangeVal.point2 : this.getDateNow();\n this.point2range = rangeVal.range ?? 'before';\n this.point2offset =\n rangeVal.point2 instanceof Date\n ? Math.round(this.point1date.getTime() - rangeVal.point2.getTime())\n : rangeVal.point2;\n if ((this.point1Now && this.basicMode() !== 'input') || this.point2Mode !== 'date') {\n this.advancedMode = true;\n } else {\n this.advancedMode = false;\n this.updateDateRange();\n }\n }\n\n private resolve(range: DateRangeFilter, skipNormalization?: boolean): ResolvedDateRange {\n return this.service.resolveDateRangeFilter(range, {\n withTime: this.enableTimeSelection(),\n skipNormalization\n });\n }\n\n protected updateDateRange(range = this.range()): void {\n const calculatedRange = this.resolve(range);\n this.dateRange.start = calculatedRange.start;\n this.dateRange.end = calculatedRange.end;\n }\n\n protected updateOnModeChange(): void {\n if (this.advancedMode) {\n const calculatedRange = this.resolve(this.range());\n this.point2Mode = 'duration';\n this.point2range = 'after';\n this.point2offset = Math.abs(calculatedRange.end.getTime() - calculatedRange.start.getTime());\n } else {\n this.updateSimpleMode(this.range());\n }\n }\n\n private updateSimpleMode(newRange: DateRangeFilter): void {\n if (this.inputMode()) {\n this.range.update(oldRange => ({\n ...oldRange,\n point1: newRange.point1\n }));\n // input mode supports `now`, so point1 needs to remain unchanged\n if (newRange.point1 === 'now') {\n this.point1Now = true;\n this.point1date = this.getDateNow();\n } else {\n this.point1Now = false;\n this.point1date = newRange.point1;\n }\n const calculatedRange = this.resolve(newRange, true);\n this.point2Mode = 'date';\n this.point2date = calculatedRange.end;\n this.range.update(oldRange => ({\n ...oldRange,\n range: undefined,\n point2: calculatedRange.end\n }));\n } else {\n this.point1Now = false;\n this.updateDateRange(newRange);\n this.updateFromDateRange();\n }\n }\n\n protected updateFromDateRange(): void {\n this.point1date = this.range().point1 = this.dateRange.start ?? this.getDateNow();\n this.point2date = this.range().point2 = this.dateRange.end ?? this.getDateNow();\n this.range.update(oldRange => ({ ...oldRange, range: undefined }));\n this.point2Mode = 'date';\n this.point2offset = 0;\n }\n\n protected point1Changed(): void {\n if (this.point1Now) {\n this.range.update(oldRange => ({ ...oldRange, point1: 'now' }));\n this.point1date = this.getDateNow();\n if (this.point2Mode !== 'date') {\n this.point2range ??= 'before';\n }\n } else {\n this.range.update(oldRange => ({ ...oldRange, point1: this.point1date ?? new Date(NaN) }));\n }\n }\n\n protected point2Changed(): void {\n if (this.point2Mode === 'date') {\n if (!(this.range().point2 instanceof Date)) {\n const calculatedRange = this.resolve(this.range());\n this.point2date =\n this.point1date < calculatedRange.end ? calculatedRange.start : calculatedRange.end;\n }\n this.range.update(oldRange => ({\n ...oldRange,\n range: undefined,\n point2: this.point2date\n }));\n } else {\n this.range.update(oldRange => ({\n ...oldRange,\n range: this.point2range\n }));\n if (this.range().point2 instanceof Date) {\n const calculatedRange = this.resolve(this.range());\n this.point2offset = Math.round(\n calculatedRange.end.getTime() - calculatedRange.start.getTime()\n );\n }\n this.range.update(oldRange => ({\n ...oldRange,\n point2: this.point2offset\n }));\n }\n }\n\n protected selectPresetItem(item: DateRangePreset): void {\n const newRange: DateRangeFilter =\n item.type === 'custom'\n ? item.calculate(item, this.range())\n : { point1: 'now', range: 'before', point2: item.offset };\n if (this.advancedMode) {\n Object.assign(this.range(), newRange);\n this.updateFromRange();\n } else {\n this.updateSimpleMode(newRange);\n }\n }\n}\n","@if (presetList()?.length) {\n <div class=\"preset-select border-end\">\n @if (presetSearch()) {\n <si-search-bar\n colorVariant=\"base-0\"\n class=\"mx-6 mt-5 mb-6\"\n [placeholder]=\"searchLabel() | translate\"\n [showIcon]=\"true\"\n [(ngModel)]=\"presetFilter\"\n />\n }\n <ul class=\"overflow-auto\" cdkListbox [attr.aria-label]=\"presetLabel() | translate\">\n @for (item of filteredPresetList(); track $index) {\n @if (item.label | translate | presetMatchFilter: presetFilter()) {\n <li\n class=\"preset-item focus-inside px-8 py-5\"\n [cdkOption]=\"item.label\"\n (click)=\"selectPresetItem(item)\"\n (keydown.enter)=\"selectPresetItem(item)\"\n >\n {{ item.label | translate }}\n </li>\n }\n }\n </ul>\n </div>\n}\n<form class=\"main-form d-flex flex-column flex-fill\">\n @if (advancedMode || inputMode()) {\n <div class=\"advanced-form px-6 py-4\">\n @if (!reverseInputFields()) {\n <ng-container *ngTemplateOutlet=\"formReferencePoint\" />\n }\n\n <div class=\"mb-8\">\n @if (point2Mode === 'date') {\n <ng-container *ngTemplateOutlet=\"formPoint2Date\" />\n }\n @if (point2Mode === 'duration') {\n <ng-container *ngTemplateOutlet=\"formPoint2Duration\" />\n }\n </div>\n\n @if (reverseInputFields()) {\n <ng-container *ngTemplateOutlet=\"formReferencePoint\" />\n }\n </div>\n } @else {\n <si-datepicker\n [config]=\"dateRangeConfig()\"\n [focusedDate]=\"dateRange.end ?? dateRange.start\"\n [(dateRange)]=\"dateRange\"\n (dateRangeChange)=\"updateFromDateRange()\"\n />\n }\n\n @if (advancedMode || !hideAdvancedMode()) {\n <label class=\"form-switch form-check ms-6\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n name=\"advancedMode\"\n role=\"switch\"\n [(ngModel)]=\"advancedMode\"\n (ngModelChange)=\"updateOnModeChange()\"\n />\n <span class=\"form-check-label\">{{ advancedLabel() | translate }}</span>\n </label>\n }\n\n <div class=\"mt-4 mb-6 ms-6\">\n {{ previewLabel() | translate }}:\n <span class=\"preview\">\n @if (calculatedRange().valid) {\n {{ calculatedRange().start | date: pipeFormat() }} -\n {{ calculatedRange().end | date: pipeFormat() }}\n } @else {\n ?\n }\n </span>\n </div>\n</form>\n\n@if (showApplyButton()) {\n <div class=\"footer border-top px-6 py-5 d-flex\">\n <button type=\"button\" class=\"btn btn-primary ms-auto\" (click)=\"applyClicked.emit()\">\n {{ applyLabel() | translate }}\n </button>\n </div>\n}\n\n<ng-template #formReferencePoint>\n <div class=\"mb-8\">\n <label class=\"d-block\">\n <span class=\"form-label\">{{\n (advancedMode ? refLabel() : reverseInputFields() ? toLabel() : fromLabel()) | translate\n }}</span>\n <si-calendar-button class=\"w-100\">\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"point1\"\n required\n siDatepicker\n [siDatepickerConfig]=\"datepickerConfigInternal()\"\n [disabled]=\"point1Now\"\n [placeholder]=\"datePlaceholder() | translate\"\n [(ngModel)]=\"point1date\"\n (ngModelChange)=\"point1Changed()\"\n />\n </si-calendar-button>\n </label>\n <label class=\"ms-4 mt-4 text-nowrap form-check\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n name=\"point1now\"\n [(ngModel)]=\"point1Now\"\n (ngModelChange)=\"point1Changed()\"\n />\n <span class=\"form-check-label\">{{\n (enableTimeSelection() ? nowLabel() : todayLabel()) | translate\n }}</span>\n </label>\n </div>\n</ng-template>\n\n<ng-template #formPoint2Date>\n <label class=\"d-block mb-4 bp-9\">\n <span class=\"form-label\">{{\n (reverseInputFields() ? fromLabel() : toLabel()) | translate\n }}</span>\n <si-calendar-button class=\"w-100\">\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"point2\"\n required\n siDatepicker\n [siDatepickerConfig]=\"datepickerConfigInternal()\"\n [attr.aria-label]=\"dateLabel() | translate\"\n [placeholder]=\"datePlaceholder() | translate\"\n [(ngModel)]=\"point2date\"\n (ngModelChange)=\"point2Changed()\"\n />\n </si-calendar-button>\n </label>\n</ng-template>\n\n<ng-template #formPoint2Duration>\n <div>\n <span class=\"form-label\">{{ rangeLabel() | translate }}</span>\n <si-relative-date\n class=\"d-block mb-4\"\n [unitLabel]=\"unitLabel() | translate\"\n [valueLabel]=\"valueLabel() | translate\"\n [enableTimeSelection]=\"enableTimeSelection()\"\n [(value)]=\"point2offset\"\n (valueChange)=\"point2Changed()\"\n />\n <div class=\"range-type ms-4\">\n <label class=\"form-check form-check-inline\">\n <input\n type=\"radio\"\n class=\"form-check-input\"\n value=\"before\"\n name=\"point2range\"\n [(ngModel)]=\"point2range\"\n (ngModelChange)=\"point2Changed()\"\n />\n <span class=\"form-check-label\">\n {{ beforeLabel() | translate }}\n </span>\n </label>\n <label class=\"form-check form-check-inline\">\n <input\n type=\"radio\"\n class=\"form-check-input\"\n value=\"after\"\n name=\"point2range\"\n [(ngModel)]=\"point2range\"\n (ngModelChange)=\"point2Changed()\"\n />\n <span class=\"form-check-label\">\n {{ afterLabel() | translate }}\n </span>\n </label>\n <label class=\"form-check form-check-inline\">\n <input\n type=\"radio\"\n class=\"form-check-input\"\n value=\"within\"\n name=\"point2range\"\n [(ngModel)]=\"point2range\"\n (ngModelChange)=\"point2Changed()\"\n />\n <span class=\"form-check-label\">\n {{ withinLabel() | translate }}\n </span>\n </label>\n </div>\n </div>\n</ng-template>\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiDateRangeFilterComponent } from './si-date-range-filter.component';\n\n@NgModule({\n imports: [SiDateRangeFilterComponent],\n exports: [SiDateRangeFilterComponent]\n})\nexport class SiDateRangeFilterModule {}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-date-range-filter.component';\nexport * from './si-date-range-filter.module';\nexport * from './si-date-range-filter.types';\nexport * from './si-date-range-calculation.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"siemens-element-ng-date-range-filter.mjs","sources":["../../../../projects/element-ng/date-range-filter/si-date-range-calculation.service.ts","../../../../projects/element-ng/date-range-filter/si-date-range-filter.types.ts","../../../../projects/element-ng/date-range-filter/si-relative-date.component.ts","../../../../projects/element-ng/date-range-filter/si-relative-date.component.html","../../../../projects/element-ng/date-range-filter/si-date-range-filter.component.ts","../../../../projects/element-ng/date-range-filter/si-date-range-filter.component.html","../../../../projects/element-ng/date-range-filter/si-date-range-filter.module.ts","../../../../projects/element-ng/date-range-filter/index.ts","../../../../projects/element-ng/date-range-filter/siemens-element-ng-date-range-filter.ts"],"sourcesContent":["/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { Injectable } from '@angular/core';\n\nimport { DateRangeFilter, ResolvedDateRange } from './si-date-range-filter.types';\n\nexport interface ResolveDateRangeOptions {\n /**\n * Resolve time? When set to false, hours/minutes/seconds/ms are set to zero\n * @defaultValue true\n **/\n withTime?: boolean;\n /**\n * Skip normalization? When skipped, `point1` will always be `start`, `point2` will be `end`\n */\n skipNormalization?: boolean;\n}\n\n/**\n * Service to transform and calculate with DateRangeFilter objects.\n */\n@Injectable({ providedIn: 'root' })\nexport class SiDateRangeCalculationService {\n /**\n * Calculates the start and end dates of a DateRangeFilter.\n * @param filter - The date range filter object to be resolved.\n * @param options - Options for time handling\n * @returns The resolved result in form of a ResolvedDateRange object.\n */\n resolveDateRangeFilter(\n filter: DateRangeFilter,\n options?: ResolveDateRangeOptions\n ): ResolvedDateRange {\n const ref = filter.point1 === 'now' ? new Date() : new Date(filter.point1);\n const withTime = options?.withTime ?? true;\n\n if (!withTime) {\n this.removeTime(ref);\n }\n\n if (filter.point2 instanceof Date) {\n const point2 = withTime ? filter.point2 : this.removeTime(new Date(filter.point2));\n return this.normalize(ref, point2, options?.skipNormalization);\n }\n\n const offset = filter.point2;\n\n switch (filter.range) {\n case undefined:\n case 'before':\n return this.normalize(ref, this.datePlusOffset(ref, -offset), options?.skipNormalization);\n case 'after':\n return this.normalize(ref, this.datePlusOffset(ref, offset), options?.skipNormalization);\n case 'within':\n return this.normalize(\n this.datePlusOffset(ref, -offset),\n this.datePlusOffset(ref, offset),\n options?.skipNormalization\n );\n }\n }\n\n private datePlusOffset(date: Date, offset: number): Date {\n return new Date(date.getTime() + offset);\n }\n\n private normalize(date1: Date, date2: Date, skip?: boolean): ResolvedDateRange {\n const valid = !isNaN(date1.getTime()) && !isNaN(date2.getTime());\n return skip\n ? { start: date1, end: date2, valid }\n : date1 < date2\n ? { start: date1, end: date2, valid }\n : { start: date2, end: date1, valid };\n }\n\n /**\n * Utility to reset the time attributes to 0 (hours/minutes/seconds/milliseconds).\n */\n removeTime(date: Date): Date {\n date.setHours(0);\n date.setMinutes(0);\n date.setSeconds(0);\n date.setMilliseconds(0);\n return date;\n }\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { TranslatableString } from '@siemens/element-translate-ng/translate';\n\n/**\n * Simple DateRangeFilter preset based on offset from now\n */\nexport interface DateRangePresetOffset {\n type?: 'offset';\n /** translation key for label */\n label: TranslatableString;\n /** offset from current in milliseconds */\n offset: number;\n}\n\n/**\n * Advanced DateRageFilter preset with custom calculation\n */\nexport interface DateRangePresetCustom {\n type: 'custom';\n /** translation key for label */\n label: TranslatableString;\n /** calculation custom calculation function */\n calculate: (self: DateRangePresetCustom, currentRange: DateRangeFilter) => DateRangeFilter;\n /** Whether this should show only when time support is enabled */\n timeOnly?: boolean;\n}\n\nexport type DateRangePreset = DateRangePresetOffset | DateRangePresetCustom;\n\nexport interface DateRangeFilter {\n point1: Date | 'now';\n point2: number | Date;\n range?: 'before' | 'after' | 'within';\n}\n\nexport interface ResolvedDateRange {\n start: Date;\n end: Date;\n valid: boolean;\n}\n\nexport const ONE_MINUTE = 60 * 1000;\nexport const ONE_DAY = ONE_MINUTE * 60 * 24;\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n OnChanges,\n output,\n signal,\n SimpleChanges\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SiNumberInputComponent } from '@siemens/element-ng/number-input';\nimport {\n SelectOption,\n SiSelectComponent,\n SiSelectSimpleOptionsDirective,\n SiSelectSingleValueDirective\n} from '@siemens/element-ng/select';\n\nimport { ONE_DAY, ONE_MINUTE } from './si-date-range-filter.types';\n\ninterface OffsetOption extends SelectOption<string> {\n offset: number;\n}\n\n@Component({\n selector: 'si-relative-date',\n templateUrl: './si-relative-date.component.html',\n styleUrl: './si-relative-date.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n SiNumberInputComponent,\n SiSelectComponent,\n SiSelectSingleValueDirective,\n SiSelectSimpleOptionsDirective\n ]\n})\nexport class SiRelativeDateComponent implements OnChanges {\n /** @defaultValue 0 */\n readonly value = input(0);\n /** @defaultValue false */\n readonly enableTimeSelection = input(false, { transform: booleanAttribute });\n readonly valueLabel = input.required<string>();\n readonly unitLabel = input.required<string>();\n readonly valueChange = output<number>();\n\n protected readonly internalValue = signal(0);\n protected readonly offset = signal(0);\n protected readonly unit = signal('days');\n private readonly fullOffsetList: OffsetOption[] = [\n {\n type: 'option',\n value: 'minutes',\n label: $localize`:@@SI_DATE_RANGE_FILTER.MINUTES:Minutes`,\n offset: ONE_MINUTE\n },\n {\n type: 'option',\n value: 'hours',\n label: $localize`:@@SI_DATE_RANGE_FILTER.HOURS:Hours`,\n offset: 60 * ONE_MINUTE\n },\n {\n type: 'option',\n value: 'days',\n label: $localize`:@@SI_DATE_RANGE_FILTER.DAYS:Days`,\n offset: ONE_DAY\n },\n {\n type: 'option',\n value: 'weeks',\n label: $localize`:@@SI_DATE_RANGE_FILTER.WEEKS:Weeks`,\n offset: 7 * ONE_DAY\n },\n {\n type: 'option',\n value: 'months',\n label: $localize`:@@SI_DATE_RANGE_FILTER.MONTHS:Months`,\n offset: 30 * ONE_DAY\n },\n {\n type: 'option',\n value: 'years',\n label: $localize`:@@SI_DATE_RANGE_FILTER.YEARS:Years`,\n offset: 365 * ONE_DAY\n }\n ];\n\n protected readonly offsetList = computed(() =>\n this.enableTimeSelection()\n ? this.fullOffsetList\n : this.fullOffsetList.filter(item => item.offset >= ONE_DAY)\n );\n\n ngOnChanges(changes: SimpleChanges): void {\n const value = this.value();\n if (changes.value && value !== this.internalValue()) {\n this.internalValue.set(value);\n this.calculateOffset();\n }\n }\n\n private calculateOffset(): void {\n const offsetList = this.offsetList();\n let unit = '';\n if (offsetList.length) {\n this.offset.set(0);\n unit = offsetList[0].value;\n }\n\n for (let i = offsetList.length - 1; i >= 0; i--) {\n const item = offsetList[i];\n const raw = this.internalValue() / item.offset;\n const rounded = Math.round(raw);\n if (rounded > 0 && Math.abs(raw - rounded) < 0.001) {\n this.offset.set(rounded);\n unit = item.value;\n break;\n }\n }\n\n this.changeUnit(unit);\n }\n\n protected updateValue(offset: number): void {\n this.offset.set(offset);\n const item = this.offsetList().find(x => x.value === this.unit())!;\n this.internalValue.set(offset * item.offset);\n this.valueChange.emit(this.internalValue());\n }\n\n protected changeUnit(newUnit: string): void {\n this.unit.set(newUnit);\n const item = this.offsetList().find(x => x.value === this.unit())!;\n this.offset.set(Math.max(1, Math.round(this.internalValue() / item.offset)));\n this.internalValue.set(this.offset() * item.offset);\n this.valueChange.emit(this.internalValue());\n }\n}\n","<si-number-input\n class=\"form-control mb-4\"\n [aria-label]=\"valueLabel()\"\n [ngModel]=\"offset()\"\n (ngModelChange)=\"updateValue($event)\"\n/>\n<si-select\n class=\"form-control\"\n min=\"0\"\n [ariaLabel]=\"unitLabel()\"\n [options]=\"offsetList()\"\n [ngModel]=\"unit()\"\n (ngModelChange)=\"changeUnit($event)\"\n/>\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { MediaMatcher } from '@angular/cdk/layout';\nimport { CdkListbox, CdkOption } from '@angular/cdk/listbox';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { DatePipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n OnChanges,\n output,\n Pipe,\n PipeTransform,\n signal,\n SimpleChanges\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n DatepickerConfig,\n DatepickerInputConfig,\n DateRange,\n SiCalendarButtonComponent,\n SiDatepickerComponent,\n SiDatepickerDirective\n} from '@siemens/element-ng/datepicker';\nimport { addIcons, elementDown2, SiIconNextComponent } from '@siemens/element-ng/icon';\nimport { BOOTSTRAP_BREAKPOINTS } from '@siemens/element-ng/resize-observer';\nimport { SiSearchBarComponent } from '@siemens/element-ng/search-bar';\nimport { SiTranslateModule } from '@siemens/element-translate-ng/translate';\n\nimport { SiDateRangeCalculationService } from './si-date-range-calculation.service';\nimport {\n DateRangeFilter,\n DateRangePreset,\n ONE_DAY,\n ResolvedDateRange\n} from './si-date-range-filter.types';\nimport { SiRelativeDateComponent } from './si-relative-date.component';\n\n@Pipe({ name: 'presetMatchFilter', pure: true })\nexport class PresetMatchFilterPipe implements PipeTransform {\n transform(value: string, term: string): boolean {\n return !term ? true : value.toLowerCase().includes(term.toLowerCase());\n }\n}\n\n@Component({\n selector: 'si-date-range-filter',\n templateUrl: './si-date-range-filter.component.html',\n styleUrl: './si-date-range-filter.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CdkOption,\n CdkListbox,\n CdkTrapFocus,\n DatePipe,\n FormsModule,\n NgClass,\n NgTemplateOutlet,\n OverlayModule,\n PresetMatchFilterPipe,\n SiCalendarButtonComponent,\n SiDatepickerComponent,\n SiDatepickerDirective,\n SiIconNextComponent,\n SiRelativeDateComponent,\n SiSearchBarComponent,\n SiTranslateModule\n ],\n host: {\n '[class.mobile]': 'smallScreen'\n }\n})\nexport class SiDateRangeFilterComponent implements OnChanges {\n private readonly service = inject(SiDateRangeCalculationService);\n private readonly mediaMatcher = inject(MediaMatcher);\n protected readonly smallScreen = this.mediaMatcher.matchMedia(\n `(max-width: ${BOOTSTRAP_BREAKPOINTS.mdMinimum}px)`\n ).matches;\n\n /** The filter range object */\n readonly range = model.required<DateRangeFilter>();\n /** List of preset time ranges. When not present or empty, the preset section won't show */\n readonly presetList = input<DateRangePreset[]>();\n /**\n * Determines if there's a search field for the preset list\n *\n * @defaultValue true\n */\n readonly presetSearch = input(true, { transform: booleanAttribute });\n /**\n * Determines if time is selectable or only dates\n *\n * @defaultValue false\n */\n readonly enableTimeSelection = input(false, { transform: booleanAttribute });\n /**\n * Determines whether to show input fields or a date-range calendar in basic mode.\n * When time selection is enabled, this has no effect and input fields are always shown.\n *\n * @defaultValue 'calendar'\n */\n readonly basicMode = input<'input' | 'calendar'>('calendar');\n /**\n * Reverses the order of the from/to fields\n *\n * @defaultValue false\n */\n readonly reverseInputFields = input(false, { transform: booleanAttribute });\n\n /**\n * Determines whether to show the 'Apply' button\n *\n * @defaultValue false\n */\n readonly showApplyButton = input(false, { transform: booleanAttribute });\n /**\n * Hides the advanced mode if input allows\n *\n * @defaultValue false\n */\n readonly hideAdvancedMode = input(false, { transform: booleanAttribute });\n\n /**\n * label for the \"Reference point\" title\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.REF_POINT:Reference point`\n * ```\n */\n readonly refLabel = input($localize`:@@SI_DATE_RANGE_FILTER.REF_POINT:Reference point`);\n /**\n * label for the \"Reference point\" title\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.FROM:From`\n * ```\n */\n readonly fromLabel = input($localize`:@@SI_DATE_RANGE_FILTER.FROM:From`);\n /**\n * label for the \"Reference point\" title\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.TO:To`\n * ```\n */\n readonly toLabel = input($localize`:@@SI_DATE_RANGE_FILTER.TO:To`);\n /**\n * label for the \"Range\" title\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.RANGE:Range`\n * ```\n */\n readonly rangeLabel = input($localize`:@@SI_DATE_RANGE_FILTER.RANGE:Range`);\n /**\n * label for the \"Today\" checkbox\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.TODAY:Today`\n * ```\n */\n readonly todayLabel = input($localize`:@@SI_DATE_RANGE_FILTER.TODAY:Today`);\n /**\n * label for the \"Now\" checkbox\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.NOW:Now`\n * ```\n */\n readonly nowLabel = input($localize`:@@SI_DATE_RANGE_FILTER.NOW:Now`);\n /**\n * label for \"Date\" field / radio button\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.DATE:Date`\n * ```\n */\n readonly dateLabel = input($localize`:@@SI_DATE_RANGE_FILTER.DATE:Date`);\n /**\n * label for the \"Preview\" title\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.PREVIEW:Preview`\n * ```\n */\n readonly previewLabel = input($localize`:@@SI_DATE_RANGE_FILTER.PREVIEW:Preview`);\n /**\n * Placeholder for date fields\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.DATE_PLACEHOLDER:Select date`\n * ```\n */\n readonly datePlaceholder = input($localize`:@@SI_DATE_RANGE_FILTER.DATE_PLACEHOLDER:Select date`);\n /**\n * label for the \"Before\" toggle\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.BEFORE:Before`\n * ```\n */\n readonly beforeLabel = input($localize`:@@SI_DATE_RANGE_FILTER.BEFORE:Before`);\n /**\n * label for the \"After\" toggle\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.AFTER:After`\n * ```\n */\n readonly afterLabel = input($localize`:@@SI_DATE_RANGE_FILTER.AFTER:After`);\n /**\n * label for the \"Within\" toggle\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.WITHIN:Within`\n * ```\n */\n readonly withinLabel = input($localize`:@@SI_DATE_RANGE_FILTER.WITHIN:Within`);\n /**\n * label for the \"value\" number input\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.VALUE:Value`\n * ```\n */\n readonly valueLabel = input($localize`:@@SI_DATE_RANGE_FILTER.VALUE:Value`);\n /**\n * label for the \"Unit\" select\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.UNIT:Unit`\n * ```\n */\n readonly unitLabel = input($localize`:@@SI_DATE_RANGE_FILTER.UNIT:Unit`);\n /**\n * label for the \"search\" input\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.SEARCH:Search`\n * ```\n */\n readonly searchLabel = input($localize`:@@SI_DATE_RANGE_FILTER.SEARCH:Search`);\n /**\n * label for the \"search\" input\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.PRESETS:Presets`\n * ```\n */\n readonly presetLabel = input($localize`:@@SI_DATE_RANGE_FILTER.PRESETS:Presets`);\n /**\n * label for the \"advanced\" switch\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.ADVANCED:Advanced`\n * ```\n */\n readonly advancedLabel = input($localize`:@@SI_DATE_RANGE_FILTER.ADVANCED:Advanced`);\n /**\n * label for the \"apply\" switch\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_DATE_RANGE_FILTER.APPLY:Apply`\n * ```\n */\n readonly applyLabel = input($localize`:@@SI_DATE_RANGE_FILTER.APPLY:Apply`);\n\n /** Event fired when the apply button has been clicked */\n readonly applyClicked = output<void>();\n\n /** Base configuration on how the dates should be displayed, parts of it may be overwritten internally. */\n readonly datepickerConfig = input<DatepickerInputConfig>();\n\n protected readonly icons = addIcons({ elementDown2 });\n protected advancedMode = false;\n protected dateRange: DateRange = { start: undefined, end: undefined };\n\n protected point1Now = true;\n protected point2Mode: 'duration' | 'date' = 'duration';\n\n protected point1date = this.getDateNow();\n protected point2date = this.getDateNow();\n protected point2offset = 0;\n protected point2range: 'before' | 'after' | 'within' = 'before';\n protected readonly calculatedRange = computed<ResolvedDateRange>(() =>\n this.resolve(this.range())\n );\n protected readonly pipeFormat = computed<string>(() =>\n this.enableTimeSelection()\n ? (this.datepickerConfig()?.dateTimeFormat ?? 'short')\n : (this.datepickerConfig()?.dateFormat ?? 'shortDate')\n );\n\n protected readonly datepickerConfigInternal = computed<DatepickerConfig>(() => ({\n ...(this.datepickerConfig() ?? {}),\n enableDateRange: false,\n showTime: this.enableTimeSelection(),\n mandatoryTime: this.enableTimeSelection()\n }));\n\n protected readonly dateRangeConfig = computed<DatepickerConfig>(() => ({\n ...(this.datepickerConfig() ?? {}),\n enableDateRange: true\n }));\n\n protected readonly filteredPresetList = computed<DateRangePreset[]>(() => {\n const timeFilter = (item: DateRangePreset): boolean => {\n const timeOnly = item.type === 'custom' ? item.timeOnly : item.offset < ONE_DAY;\n return this.enableTimeSelection() || !timeOnly;\n };\n return (this.presetList() ?? []).filter(timeFilter);\n });\n\n protected readonly presetFilter = signal('');\n protected readonly presetOpen = signal(false);\n protected readonly inputMode = computed(\n () => this.basicMode() === 'input' || this.enableTimeSelection()\n );\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes.enableTimeSelection ||\n changes.datepickerConfig ||\n (changes.range && this.rangeChanged(changes.range.previousValue, changes.range.currentValue))\n ) {\n this.updateFromRange();\n }\n if (\n (changes.basicMode || changes.enableTimeSelection) &&\n this.inputMode() &&\n !this.advancedMode\n ) {\n this.point2Mode = 'date';\n this.point2Changed();\n }\n }\n\n private getDateNow(): Date {\n const now = new Date();\n if (!this.enableTimeSelection()) {\n this.service.removeTime(now);\n }\n return now;\n }\n\n private rangeChanged(oldRange: DateRangeFilter | undefined, newRange: DateRangeFilter): boolean {\n return (\n !oldRange ||\n oldRange.point1 !== newRange.point1 ||\n oldRange.point2 !== newRange.point2 ||\n oldRange.range !== newRange.range\n );\n }\n\n private updateFromRange(): void {\n const rangeVal = this.range();\n this.point1Now = rangeVal.point1 === 'now';\n this.point1date = rangeVal.point1 === 'now' ? this.getDateNow() : rangeVal.point1;\n this.point2Mode = rangeVal.point2 instanceof Date ? 'date' : 'duration';\n this.point2date = rangeVal.point2 instanceof Date ? rangeVal.point2 : this.getDateNow();\n this.point2range = rangeVal.range ?? 'before';\n this.point2offset =\n rangeVal.point2 instanceof Date\n ? Math.round(this.point1date.getTime() - rangeVal.point2.getTime())\n : rangeVal.point2;\n if ((this.point1Now && this.basicMode() !== 'input') || this.point2Mode !== 'date') {\n this.advancedMode = true;\n } else {\n this.advancedMode = false;\n this.updateDateRange();\n }\n }\n\n private resolve(range: DateRangeFilter, skipNormalization?: boolean): ResolvedDateRange {\n return this.service.resolveDateRangeFilter(range, {\n withTime: this.enableTimeSelection(),\n skipNormalization\n });\n }\n\n protected updateDateRange(range = this.range()): void {\n const calculatedRange = this.resolve(range);\n this.dateRange.start = calculatedRange.start;\n this.dateRange.end = calculatedRange.end;\n }\n\n protected updateOnModeChange(): void {\n if (this.advancedMode) {\n const calculatedRange = this.resolve(this.range());\n this.point2Mode = 'duration';\n this.point2range = 'after';\n this.point2offset = Math.abs(calculatedRange.end.getTime() - calculatedRange.start.getTime());\n } else {\n this.updateSimpleMode(this.range());\n }\n }\n\n private updateSimpleMode(newRange: DateRangeFilter): void {\n if (this.inputMode()) {\n this.range.update(oldRange => ({\n ...oldRange,\n point1: newRange.point1\n }));\n // input mode supports `now`, so point1 needs to remain unchanged\n if (newRange.point1 === 'now') {\n this.point1Now = true;\n this.point1date = this.getDateNow();\n } else {\n this.point1Now = false;\n this.point1date = newRange.point1;\n }\n const calculatedRange = this.resolve(newRange, true);\n this.point2Mode = 'date';\n this.point2date = calculatedRange.end;\n this.range.update(oldRange => ({\n ...oldRange,\n range: undefined,\n point2: calculatedRange.end\n }));\n } else {\n this.point1Now = false;\n this.updateDateRange(newRange);\n this.updateFromDateRange();\n }\n }\n\n protected updateFromDateRange(): void {\n this.point1date = this.range().point1 = this.dateRange.start ?? this.getDateNow();\n this.point2date = this.range().point2 = this.dateRange.end ?? this.getDateNow();\n this.range.update(oldRange => ({ ...oldRange, range: undefined }));\n this.point2Mode = 'date';\n this.point2offset = 0;\n }\n\n protected point1Changed(): void {\n if (this.point1Now) {\n this.range.update(oldRange => ({ ...oldRange, point1: 'now' }));\n this.point1date = this.getDateNow();\n if (this.point2Mode !== 'date') {\n this.point2range ??= 'before';\n }\n } else {\n this.range.update(oldRange => ({ ...oldRange, point1: this.point1date ?? new Date(NaN) }));\n }\n }\n\n protected point2Changed(): void {\n if (this.point2Mode === 'date') {\n if (!(this.range().point2 instanceof Date)) {\n const calculatedRange = this.resolve(this.range());\n this.point2date =\n this.point1date < calculatedRange.end ? calculatedRange.start : calculatedRange.end;\n }\n this.range.update(oldRange => ({\n ...oldRange,\n range: undefined,\n point2: this.point2date\n }));\n } else {\n this.range.update(oldRange => ({\n ...oldRange,\n range: this.point2range\n }));\n if (this.range().point2 instanceof Date) {\n const calculatedRange = this.resolve(this.range());\n this.point2offset = Math.round(\n calculatedRange.end.getTime() - calculatedRange.start.getTime()\n );\n }\n this.range.update(oldRange => ({\n ...oldRange,\n point2: this.point2offset\n }));\n }\n }\n\n protected selectPresetItem(event: Event, item: DateRangePreset): void {\n const newRange: DateRangeFilter =\n item.type === 'custom'\n ? item.calculate(item, this.range())\n : { point1: 'now', range: 'before', point2: item.offset };\n if (this.advancedMode) {\n Object.assign(this.range(), newRange);\n this.updateFromRange();\n } else {\n this.updateSimpleMode(newRange);\n }\n if (this.smallScreen) {\n // Prevent re-opening the dropdown when pressing enter on the selected item\n event.preventDefault();\n this.presetOpen.set(false);\n }\n }\n}\n","@if (presetList()?.length) {\n @if (this.smallScreen) {\n <div class=\"presets d-flex\">\n <button\n #presetTrigger=\"cdkOverlayOrigin\"\n type=\"button\"\n class=\"btn btn-tertiary dropdown-toggle m-5 flex-grow-1\"\n cdkOverlayOrigin\n [class.show]=\"presetOpen()\"\n [attr.aria-expanded]=\"presetOpen()\"\n (click)=\"presetOpen.set(true)\"\n >\n {{ presetLabel() | translate }}\n <si-icon-next class=\"dropdown-caret icon\" [icon]=\"icons.elementDown2\" />\n </button>\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n cdkConnectedOverlayHasBackdrop\n [cdkConnectedOverlayOpen]=\"presetOpen()\"\n [cdkConnectedOverlayOrigin]=\"presetTrigger\"\n [cdkConnectedOverlayMinWidth]=\"\n presetTrigger.elementRef.nativeElement?.getBoundingClientRect().width\n \"\n (backdropClick)=\"presetOpen.set(false)\"\n (detach)=\"presetOpen.set(false)\"\n >\n <div\n cdkTrapFocus\n class=\"preset-select mobile elevation-2 rounded-2 w-100\"\n cdkTrapFocusAutoCapture\n >\n <ng-container *ngTemplateOutlet=\"presets\" />\n </div>\n </ng-template>\n </div>\n } @else {\n <div class=\"preset-select border-end\">\n <ng-container *ngTemplateOutlet=\"presets\" />\n </div>\n }\n}\n<form class=\"main-form d-flex flex-column flex-fill\">\n @if (advancedMode || inputMode()) {\n <div class=\"advanced-form px-6 py-4\">\n @if (!reverseInputFields()) {\n <ng-container *ngTemplateOutlet=\"formReferencePoint\" />\n }\n\n <div class=\"mb-8\">\n @if (point2Mode === 'date') {\n <ng-container *ngTemplateOutlet=\"formPoint2Date\" />\n }\n @if (point2Mode === 'duration') {\n <ng-container *ngTemplateOutlet=\"formPoint2Duration\" />\n }\n </div>\n\n @if (reverseInputFields()) {\n <ng-container *ngTemplateOutlet=\"formReferencePoint\" />\n }\n </div>\n } @else {\n <si-datepicker\n [config]=\"dateRangeConfig()\"\n [focusedDate]=\"dateRange.end ?? dateRange.start\"\n [(dateRange)]=\"dateRange\"\n (dateRangeChange)=\"updateFromDateRange()\"\n />\n }\n\n @if (advancedMode || !hideAdvancedMode()) {\n <label class=\"form-switch form-check ms-6\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n name=\"advancedMode\"\n role=\"switch\"\n [(ngModel)]=\"advancedMode\"\n (ngModelChange)=\"updateOnModeChange()\"\n />\n <span class=\"form-check-label\">{{ advancedLabel() | translate }}</span>\n </label>\n }\n\n <div class=\"mt-4 mb-6 ms-6\">\n {{ previewLabel() | translate }}:\n <span class=\"preview\">\n @if (calculatedRange().valid) {\n {{ calculatedRange().start | date: pipeFormat() }} -\n {{ calculatedRange().end | date: pipeFormat() }}\n } @else {\n ?\n }\n </span>\n </div>\n</form>\n\n@if (showApplyButton()) {\n <div class=\"footer border-top px-6 py-5 d-flex\">\n <button type=\"button\" class=\"btn btn-primary ms-auto\" (click)=\"applyClicked.emit()\">\n {{ applyLabel() | translate }}\n </button>\n </div>\n}\n<ng-template #presets>\n @if (presetSearch()) {\n <si-search-bar\n colorVariant=\"base-0\"\n class=\"mx-6 mt-5 mb-6\"\n [placeholder]=\"searchLabel() | translate\"\n [showIcon]=\"true\"\n [(ngModel)]=\"presetFilter\"\n />\n }\n <ul class=\"overflow-auto\" cdkListbox [attr.aria-label]=\"presetLabel() | translate\">\n @for (item of filteredPresetList(); track $index) {\n @if (item.label | translate | presetMatchFilter: presetFilter()) {\n <li\n class=\"preset-item focus-inside px-8 py-5\"\n [cdkOption]=\"item.label\"\n (click)=\"selectPresetItem($event, item)\"\n (keydown.enter)=\"selectPresetItem($event, item)\"\n >\n {{ item.label | translate }}\n </li>\n }\n }\n </ul>\n</ng-template>\n<ng-template #formReferencePoint>\n <div class=\"mb-8\">\n <label class=\"d-block\">\n <span class=\"form-label\">{{\n (advancedMode ? refLabel() : reverseInputFields() ? toLabel() : fromLabel()) | translate\n }}</span>\n <si-calendar-button class=\"w-100\">\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"point1\"\n required\n siDatepicker\n [siDatepickerConfig]=\"datepickerConfigInternal()\"\n [disabled]=\"point1Now\"\n [placeholder]=\"datePlaceholder() | translate\"\n [(ngModel)]=\"point1date\"\n (ngModelChange)=\"point1Changed()\"\n />\n </si-calendar-button>\n </label>\n <label class=\"ms-4 mt-4 text-nowrap form-check\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n name=\"point1now\"\n [(ngModel)]=\"point1Now\"\n (ngModelChange)=\"point1Changed()\"\n />\n <span class=\"form-check-label\">{{\n (enableTimeSelection() ? nowLabel() : todayLabel()) | translate\n }}</span>\n </label>\n </div>\n</ng-template>\n\n<ng-template #formPoint2Date>\n <label class=\"d-block mb-4 bp-9\">\n <span class=\"form-label\">{{\n (reverseInputFields() ? fromLabel() : toLabel()) | translate\n }}</span>\n <si-calendar-button class=\"w-100\">\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"point2\"\n required\n siDatepicker\n [siDatepickerConfig]=\"datepickerConfigInternal()\"\n [attr.aria-label]=\"dateLabel() | translate\"\n [placeholder]=\"datePlaceholder() | translate\"\n [(ngModel)]=\"point2date\"\n (ngModelChange)=\"point2Changed()\"\n />\n </si-calendar-button>\n </label>\n</ng-template>\n\n<ng-template #formPoint2Duration>\n <div>\n <span class=\"form-label\">{{ rangeLabel() | translate }}</span>\n <si-relative-date\n class=\"d-block mb-4\"\n [unitLabel]=\"unitLabel() | translate\"\n [valueLabel]=\"valueLabel() | translate\"\n [enableTimeSelection]=\"enableTimeSelection()\"\n [(value)]=\"point2offset\"\n (valueChange)=\"point2Changed()\"\n />\n <div class=\"range-type ms-4\">\n <label class=\"form-check form-check-inline\">\n <input\n type=\"radio\"\n class=\"form-check-input\"\n value=\"before\"\n name=\"point2range\"\n [(ngModel)]=\"point2range\"\n (ngModelChange)=\"point2Changed()\"\n />\n <span class=\"form-check-label\">\n {{ beforeLabel() | translate }}\n </span>\n </label>\n <label class=\"form-check form-check-inline\">\n <input\n type=\"radio\"\n class=\"form-check-input\"\n value=\"after\"\n name=\"point2range\"\n [(ngModel)]=\"point2range\"\n (ngModelChange)=\"point2Changed()\"\n />\n <span class=\"form-check-label\">\n {{ afterLabel() | translate }}\n </span>\n </label>\n <label class=\"form-check form-check-inline\">\n <input\n type=\"radio\"\n class=\"form-check-input\"\n value=\"within\"\n name=\"point2range\"\n [(ngModel)]=\"point2range\"\n (ngModelChange)=\"point2Changed()\"\n />\n <span class=\"form-check-label\">\n {{ withinLabel() | translate }}\n </span>\n </label>\n </div>\n </div>\n</ng-template>\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiDateRangeFilterComponent } from './si-date-range-filter.component';\n\n@NgModule({\n imports: [SiDateRangeFilterComponent],\n exports: [SiDateRangeFilterComponent]\n})\nexport class SiDateRangeFilterModule {}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-date-range-filter.component';\nexport * from './si-date-range-filter.module';\nexport * from './si-date-range-filter.types';\nexport * from './si-date-range-calculation.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|