@tiba-spark/client-shared-lib 26.3.0-621 → 26.3.0-624

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.
Files changed (86) hide show
  1. package/esm2022/libraries/components/cloud-confirm-dialog/cloud-confirm-dialog.component.mjs +3 -3
  2. package/esm2022/libraries/components/common-pages/error-page/error-page.component.mjs +7 -32
  3. package/esm2022/libraries/components/field-label/field-label.component.mjs +6 -39
  4. package/esm2022/libraries/components/field-validations/field-validations.component.mjs +5 -6
  5. package/esm2022/libraries/components/guest-open-ticket-dialog/guest-open-ticket-dialog.component.mjs +2 -2
  6. package/esm2022/libraries/components/intercom/intercom.component.mjs +2 -2
  7. package/esm2022/libraries/components/logo/logo.component.mjs +3 -3
  8. package/esm2022/libraries/components/message-bar/float-message-bar.service.mjs +6 -30
  9. package/esm2022/libraries/components/modal-buttons-wrapper/modal-buttons-wrapper.component.mjs +4 -9
  10. package/esm2022/libraries/components/notification/alert-notification/alert-notification.component.mjs +3 -3
  11. package/esm2022/libraries/components/notification/command-notification/command-notification.component.mjs +3 -3
  12. package/esm2022/libraries/components/notification/notification-type-label/notification-type-label.component.mjs +2 -2
  13. package/esm2022/libraries/components/notification/notification.service.mjs +3 -6
  14. package/esm2022/libraries/components/overlay-loading-container/empty-results/empty-results.component.mjs +3 -3
  15. package/esm2022/libraries/components/overlay-loading-container/error-results/error-results.component.mjs +2 -2
  16. package/esm2022/libraries/components/restart-link/restart-link.component.mjs +2 -2
  17. package/esm2022/libraries/directives/index.mjs +1 -4
  18. package/esm2022/libraries/directives/shared-directives.module.mjs +1 -16
  19. package/esm2022/libraries/enums/icon.enum.mjs +3 -1
  20. package/esm2022/libraries/enums/localization.enum.mjs +1 -38
  21. package/esm2022/libraries/enums/message-bar-duration.enum.mjs +2 -4
  22. package/esm2022/libraries/interfaces/table-column.interface.mjs +1 -1
  23. package/esm2022/libraries/modules/layout/layout.state.mjs +2 -2
  24. package/esm2022/libraries/resolvers/tech-tools-module.resolver.mjs +7 -7
  25. package/esm2022/libraries/services/can-deactivate.service.mjs +3 -4
  26. package/esm2022/libraries/services/modal.service.mjs +1 -14
  27. package/fesm2022/tiba-spark-client-shared-lib.mjs +55 -405
  28. package/fesm2022/tiba-spark-client-shared-lib.mjs.map +1 -1
  29. package/libraries/components/common-pages/error-page/error-page.component.d.ts +2 -10
  30. package/libraries/components/common-pages/error-page/error-page.component.d.ts.map +1 -1
  31. package/libraries/components/field-label/field-label.component.d.ts +3 -8
  32. package/libraries/components/field-label/field-label.component.d.ts.map +1 -1
  33. package/libraries/components/field-validations/field-validations.component.d.ts +4 -0
  34. package/libraries/components/field-validations/field-validations.component.d.ts.map +1 -1
  35. package/libraries/components/message-bar/float-message-bar.service.d.ts +0 -2
  36. package/libraries/components/message-bar/float-message-bar.service.d.ts.map +1 -1
  37. package/libraries/components/modal-buttons-wrapper/modal-buttons-wrapper.component.d.ts.map +1 -1
  38. package/libraries/components/notification/alert-notification/alert-notification.component.d.ts.map +1 -1
  39. package/libraries/components/notification/command-notification/command-notification.component.d.ts.map +1 -1
  40. package/libraries/components/notification/notification.service.d.ts.map +1 -1
  41. package/libraries/directives/index.d.ts +0 -3
  42. package/libraries/directives/index.d.ts.map +1 -1
  43. package/libraries/directives/shared-directives.module.d.ts +4 -7
  44. package/libraries/directives/shared-directives.module.d.ts.map +1 -1
  45. package/libraries/enums/icon.enum.d.ts +4 -2
  46. package/libraries/enums/icon.enum.d.ts.map +1 -1
  47. package/libraries/enums/localization.enum.d.ts +0 -37
  48. package/libraries/enums/localization.enum.d.ts.map +1 -1
  49. package/libraries/enums/message-bar-duration.enum.d.ts +1 -3
  50. package/libraries/enums/message-bar-duration.enum.d.ts.map +1 -1
  51. package/libraries/interfaces/table-column.interface.d.ts +0 -1
  52. package/libraries/interfaces/table-column.interface.d.ts.map +1 -1
  53. package/libraries/resolvers/tech-tools-module.resolver.d.ts.map +1 -1
  54. package/libraries/services/can-deactivate.service.d.ts.map +1 -1
  55. package/libraries/services/modal.service.d.ts +0 -1
  56. package/libraries/services/modal.service.d.ts.map +1 -1
  57. package/package.json +1 -1
  58. package/src/libraries/theme/_calendar.scss +1 -2
  59. package/src/libraries/theme/_card.scss +5 -6
  60. package/src/libraries/theme/_forms.scss +1 -1
  61. package/src/libraries/theme/_mixins.scss +1 -0
  62. package/src/libraries/theme/_modals.scss +2 -3
  63. package/src/libraries/theme/_ngx.scss +1 -0
  64. package/src/libraries/theme/_tables.scss +2 -3
  65. package/src/libraries/theme/_tabs.scss +4 -6
  66. package/src/libraries/theme/_utils.scss +4 -123
  67. package/src/libraries/theme/_variables.scss +8 -35
  68. package/src/libraries/theme/assets/icons/tech-tools-module-404.svg +11 -0
  69. package/src/libraries/theme/components/_carousel.scss +2 -2
  70. package/src/libraries/theme/components/_tb-search.scss +4 -10
  71. package/src/libraries/theme/mat-components/_mat-date-picker.scss +0 -4
  72. package/src/libraries/theme/mat-components/_mat-input.scss +0 -5
  73. package/src/libraries/theme/mat-components/_mat-menu.scss +14 -40
  74. package/src/libraries/theme/mat-components/_mat-select.scss +1 -23
  75. package/src/libraries/theme/mat-components/_mat-selection-list.scss +3 -2
  76. package/src/libraries/theme/mat-components/_mat-step.scss +0 -19
  77. package/src/libraries/theme/theme.scss +0 -119
  78. package/esm2022/libraries/directives/clear-all-button.directive.mjs +0 -49
  79. package/esm2022/libraries/directives/disabled.directive.mjs +0 -121
  80. package/esm2022/libraries/directives/icon-button.directive.mjs +0 -36
  81. package/libraries/directives/clear-all-button.directive.d.ts +0 -19
  82. package/libraries/directives/clear-all-button.directive.d.ts.map +0 -1
  83. package/libraries/directives/disabled.directive.d.ts +0 -30
  84. package/libraries/directives/disabled.directive.d.ts.map +0 -1
  85. package/libraries/directives/icon-button.directive.d.ts +0 -14
  86. package/libraries/directives/icon-button.directive.d.ts.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import * as i2 from '@angular/common';
2
2
  import { DatePipe, CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Directive, inject, ElementRef, input, effect, Injectable, HostListener, HostBinding, Input, Optional, InjectionToken, Inject, NgModule, forwardRef, Pipe, Component, ChangeDetectionStrategy, EventEmitter, Output, createComponent, signal, computed, Injector, ViewChild, ChangeDetectorRef } from '@angular/core';
4
+ import { Directive, Injectable, HostListener, HostBinding, Input, Optional, InjectionToken, Inject, NgModule, forwardRef, Pipe, Component, ChangeDetectionStrategy, EventEmitter, Output, createComponent, signal, computed, inject, Injector, effect, input, ChangeDetectorRef, ViewChild } from '@angular/core';
5
5
  import DOMPurify from 'dompurify';
6
6
  import { Subject, merge, takeUntil, throwError, of, Observable, delay, debounceTime, switchMap, map, from, noop, BehaviorSubject, Subscription, combineLatest, filter as filter$1, take, distinctUntilChanged as distinctUntilChanged$1, tap as tap$1, first as first$1, catchError as catchError$1, EMPTY, fromEvent, timer, distinctUntilKeyChanged, firstValueFrom, finalize as finalize$1, defer, ReplaySubject } from 'rxjs';
7
7
  import * as i1 from '@angular/forms';
@@ -64,53 +64,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
64
64
  }]
65
65
  }], ctorParameters: () => [{ type: i0.ElementRef }] });
66
66
 
67
- const ENABLED_CLASS = 'active-button';
68
- /**
69
- * Every "Clear All" filter button (`.tb-clear-all-filters-button`) is a keyboard button.
70
- * Pages enable it with the `active-button` class; without it the button is disabled for
71
- * the mouse (theme `pointer-events: none`), so it also leaves the Tab order and ignores keys.
72
- */
73
- class ClearAllButtonDirective {
74
- constructor() {
75
- this.el = inject(ElementRef).nativeElement;
76
- this.observer = new MutationObserver(() => this.sync());
77
- }
78
- ngOnInit() {
79
- this.observer.observe(this.el, { attributes: true, attributeFilter: ['class'] });
80
- this.sync();
81
- }
82
- ngOnDestroy() {
83
- this.observer.disconnect();
84
- }
85
- activate(event) {
86
- event.preventDefault();
87
- if (this.enabled && !event.repeat) {
88
- this.el.click();
89
- }
90
- }
91
- get enabled() {
92
- return this.el.classList.contains(ENABLED_CLASS);
93
- }
94
- sync() {
95
- this.el.tabIndex = this.enabled ? 0 : -1;
96
- this.el.setAttribute('aria-disabled', String(!this.enabled));
97
- }
98
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ClearAllButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
99
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: ClearAllButtonDirective, isStandalone: true, selector: ".tb-clear-all-filters-button", host: { attributes: { "role": "button" }, listeners: { "keydown.enter": "activate($event)", "keydown.space": "activate($event)" } }, ngImport: i0 }); }
100
- }
101
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ClearAllButtonDirective, decorators: [{
102
- type: Directive,
103
- args: [{
104
- selector: '.tb-clear-all-filters-button',
105
- standalone: true,
106
- host: {
107
- role: 'button',
108
- '(keydown.enter)': 'activate($event)',
109
- '(keydown.space)': 'activate($event)',
110
- },
111
- }]
112
- }] });
113
-
114
67
  class ContainerRefDirective {
115
68
  constructor(viewContainerRef) {
116
69
  this.viewContainerRef = viewContainerRef;
@@ -126,125 +79,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
126
79
  }]
127
80
  }], ctorParameters: () => [{ type: i0.ViewContainerRef }] });
128
81
 
129
- const BLOCKED_KEYS = ['Enter', ' '];
130
- const FOCUSABLE = 'a[href], button, input, select, textarea, [tabindex]';
131
- /**
132
- * Disables an element for mouse, keyboard and assistive technology.
133
- * Drop-in for `[class.tb-action-disabled]`: `[tbDisabled]="isDisabled"`.
134
- */
135
- class DisabledDirective {
136
- constructor() {
137
- this.tbDisabled = input(false);
138
- this.tbDisabledClass = input('tb-action-disabled');
139
- /** Id of the element that explains why it is disabled; the host then stays focusable. */
140
- this.tbDisabledDescribedBy = input(null);
141
- this.el = inject(ElementRef).nativeElement;
142
- this.appliedClass = null;
143
- this.appliedReasonId = null;
144
- this.appliedNativeDisabled = false;
145
- /** Focusable children taken out of the Tab order with the host, and their original attributes. */
146
- this.skippedChildren = new Map();
147
- // Projected content (e.g. a button inside tb-tooltip) can render after the host is disabled.
148
- this.childObserver = new MutationObserver(() => this.skipChildren());
149
- this.block = (event) => {
150
- if (!this.tbDisabled()) {
151
- return;
152
- }
153
- if (event instanceof KeyboardEvent && !BLOCKED_KEYS.includes(event.key)) {
154
- return;
155
- }
156
- event.preventDefault();
157
- event.stopImmediatePropagation();
158
- };
159
- effect(() => this.apply(this.tbDisabled(), this.tbDisabledClass(), this.tbDisabledDescribedBy()));
160
- // Capture phase, so projected children cannot be activated either.
161
- this.el.addEventListener('click', this.block, true);
162
- this.el.addEventListener('keydown', this.block, true);
163
- }
164
- apply(disabled, cssClass, reasonId) {
165
- if (this.appliedClass) {
166
- this.el.classList.remove(this.appliedClass);
167
- }
168
- this.appliedClass = disabled ? cssClass : null;
169
- if (this.appliedClass) {
170
- this.el.classList.add(this.appliedClass);
171
- }
172
- const isButton = this.el instanceof HTMLButtonElement;
173
- const nativeDisabled = disabled && isButton && !reasonId;
174
- if (nativeDisabled || this.appliedNativeDisabled) {
175
- this.el.disabled = nativeDisabled;
176
- this.appliedNativeDisabled = nativeDisabled;
177
- }
178
- this.setAttribute('aria-disabled', disabled && !nativeDisabled ? 'true' : null);
179
- this.setReason(disabled ? reasonId : null);
180
- this.setSkipInTabOrder(disabled && !isButton && !reasonId);
181
- }
182
- setReason(reasonId) {
183
- const ids = (this.el.getAttribute('aria-describedby') ?? '')
184
- .split(' ')
185
- .filter(id => id && id !== this.appliedReasonId);
186
- if (reasonId) {
187
- ids.push(reasonId);
188
- }
189
- this.appliedReasonId = reasonId;
190
- this.setAttribute('aria-describedby', ids.length ? ids.join(' ') : null);
191
- }
192
- setSkipInTabOrder(skip) {
193
- if (skip) {
194
- this.skipChildren();
195
- this.childObserver.observe(this.el, { childList: true, subtree: true, attributes: true, attributeFilter: ['tabindex'] });
196
- }
197
- else {
198
- this.childObserver.disconnect();
199
- this.skippedChildren.forEach((saved, child) => {
200
- this.setAttributeOn(child, 'tabindex', saved.tabIndex);
201
- this.setAttributeOn(child, 'aria-disabled', saved.ariaDisabled);
202
- });
203
- this.skippedChildren.clear();
204
- }
205
- if (skip && this.savedTabIndex === undefined) {
206
- this.savedTabIndex = this.el.getAttribute('tabindex');
207
- this.el.setAttribute('tabindex', '-1');
208
- }
209
- else if (!skip && this.savedTabIndex !== undefined) {
210
- this.setAttribute('tabindex', this.savedTabIndex);
211
- this.savedTabIndex = undefined;
212
- }
213
- }
214
- skipChildren() {
215
- for (const child of Array.from(this.el.querySelectorAll(FOCUSABLE))) {
216
- if (child.tabIndex >= 0 && !this.skippedChildren.has(child)) {
217
- this.skippedChildren.set(child, {
218
- tabIndex: child.getAttribute('tabindex'),
219
- ariaDisabled: child.getAttribute('aria-disabled'),
220
- });
221
- child.setAttribute('tabindex', '-1');
222
- child.setAttribute('aria-disabled', 'true');
223
- }
224
- }
225
- }
226
- setAttribute(name, value) {
227
- this.setAttributeOn(this.el, name, value);
228
- }
229
- setAttributeOn(element, name, value) {
230
- if (value === null) {
231
- element.removeAttribute(name);
232
- }
233
- else {
234
- element.setAttribute(name, value);
235
- }
236
- }
237
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DisabledDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
238
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: DisabledDirective, isStandalone: true, selector: "[tbDisabled]", inputs: { tbDisabled: { classPropertyName: "tbDisabled", publicName: "tbDisabled", isSignal: true, isRequired: false, transformFunction: null }, tbDisabledClass: { classPropertyName: "tbDisabledClass", publicName: "tbDisabledClass", isSignal: true, isRequired: false, transformFunction: null }, tbDisabledDescribedBy: { classPropertyName: "tbDisabledDescribedBy", publicName: "tbDisabledDescribedBy", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
239
- }
240
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DisabledDirective, decorators: [{
241
- type: Directive,
242
- args: [{
243
- selector: '[tbDisabled]',
244
- standalone: true,
245
- }]
246
- }], ctorParameters: () => [] });
247
-
248
82
  const ALLOWED_TAGS = [
249
83
  'a',
250
84
  'b',
@@ -506,40 +340,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
506
340
  args: ['window:resize', ['$event']]
507
341
  }] } });
508
342
 
509
- /**
510
- * Makes a mouse-only clickable element (usually `tb-icon`) a keyboard button:
511
- * `<tb-icon (click)="edit()" [tbIconButton]="L.edit | translate">`.
512
- * Enter and Space call the element's existing click handler.
513
- */
514
- class IconButtonDirective {
515
- constructor() {
516
- this.tbIconButton = input.required();
517
- this.el = inject(ElementRef).nativeElement;
518
- }
519
- activate(event) {
520
- event.preventDefault();
521
- if (!event.repeat && this.el.getAttribute('aria-disabled') !== 'true') {
522
- this.el.click();
523
- }
524
- }
525
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IconButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
526
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: IconButtonDirective, isStandalone: true, selector: "[tbIconButton]", inputs: { tbIconButton: { classPropertyName: "tbIconButton", publicName: "tbIconButton", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "role": "button", "tabindex": "0" }, listeners: { "keydown.enter": "activate($event)", "keydown.space": "activate($event)" }, properties: { "attr.aria-label": "tbIconButton()" } }, ngImport: i0 }); }
527
- }
528
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IconButtonDirective, decorators: [{
529
- type: Directive,
530
- args: [{
531
- selector: '[tbIconButton]',
532
- standalone: true,
533
- host: {
534
- role: 'button',
535
- tabindex: '0',
536
- '[attr.aria-label]': 'tbIconButton()',
537
- '(keydown.enter)': 'activate($event)',
538
- '(keydown.space)': 'activate($event)',
539
- },
540
- }]
541
- }] });
542
-
543
343
  class IsEllipsisDirective {
544
344
  constructor(elementRef, cdr) {
545
345
  this.elementRef = elementRef;
@@ -73004,8 +72804,6 @@ var Localization;
73004
72804
  Localization["start_time"] = "start_time";
73005
72805
  Localization["end_time"] = "end_time";
73006
72806
  Localization["pause"] = "pause";
73007
- Localization["pause_animation"] = "pause_animation";
73008
- Localization["play_animation"] = "play_animation";
73009
72807
  Localization["resume"] = "resume";
73010
72808
  Localization["ignored"] = "ignored";
73011
72809
  Localization["none"] = "none";
@@ -76020,41 +75818,6 @@ var Localization;
76020
75818
  Localization["search_room_number"] = "search_room_number";
76021
75819
  Localization["tech_tools_module"] = "tech_tools_module";
76022
75820
  Localization["device_configurator"] = "device_configurator";
76023
- Localization["reason_unsupported_version"] = "reason_unsupported_version";
76024
- Localization["reason_no_permission"] = "reason_no_permission";
76025
- Localization["clear_search"] = "clear_search";
76026
- Localization["selected_label"] = "selected_label";
76027
- Localization["collapse_side_menu"] = "collapse_side_menu";
76028
- Localization["expand_side_menu"] = "expand_side_menu";
76029
- Localization["breadcrumb"] = "breadcrumb";
76030
- Localization["expand_row"] = "expand_row";
76031
- Localization["table_rows"] = "table_rows";
76032
- Localization["increase"] = "increase";
76033
- Localization["decrease"] = "decrease";
76034
- Localization["move_row"] = "move_row";
76035
- Localization["moved_to_position"] = "moved_to_position";
76036
- Localization["date_part_day"] = "date_part_day";
76037
- Localization["date_part_hour"] = "date_part_hour";
76038
- Localization["date_part_minute"] = "date_part_minute";
76039
- Localization["show_password"] = "show_password";
76040
- Localization["hide_password"] = "hide_password";
76041
- Localization["clear"] = "clear";
76042
- Localization["enlarge_image"] = "enlarge_image";
76043
- Localization["shrink_image"] = "shrink_image";
76044
- Localization["past_day"] = "past_day";
76045
- Localization["warning"] = "warning";
76046
- Localization["devices_found_count"] = "devices_found_count";
76047
- Localization["clear_field"] = "clear_field";
76048
- Localization["open_field_calendar"] = "open_field_calendar";
76049
- Localization["date_format"] = "date_format";
76050
- Localization["form_validation_invalid_date_example"] = "form_validation_invalid_date_example";
76051
- Localization["choose_time"] = "choose_time";
76052
- Localization["date_part_placeholder_year"] = "date_part_placeholder_year";
76053
- Localization["date_part_placeholder_month"] = "date_part_placeholder_month";
76054
- Localization["date_part_placeholder_day"] = "date_part_placeholder_day";
76055
- Localization["date_part_placeholder_hour"] = "date_part_placeholder_hour";
76056
- Localization["date_part_placeholder_minute"] = "date_part_placeholder_minute";
76057
- Localization["skip_to_content"] = "skip_to_content";
76058
75821
  Localization["lost_ticket_active_rate_description"] = "lost_ticket_active_rate_description";
76059
75822
  Localization["lost_ticket_lane_firmware_unknown"] = "lost_ticket_lane_firmware_unknown";
76060
75823
  })(Localization || (Localization = {}));
@@ -117334,17 +117097,11 @@ class SharedDirectivesModule {
117334
117097
  TBNumberDirective,
117335
117098
  UnsafeHtmlValidatorDirective,
117336
117099
  VarDirective], imports: [CommonModule,
117337
- ClearAllButtonDirective,
117338
117100
  ContainerRefDirective,
117339
- DisabledDirective,
117340
- IconButtonDirective,
117341
117101
  MatHintErrorDirective,
117342
117102
  SanitizedInnerHtmlDirective], exports: [AutofocusDirective,
117343
- ClearAllButtonDirective,
117344
117103
  ContainerRefDirective,
117345
- DisabledDirective,
117346
117104
  EllipsisMultilineDirective,
117347
- IconButtonDirective,
117348
117105
  IsEllipsisDirective,
117349
117106
  NativeElementInjectorDirective,
117350
117107
  OffScreenDirective,
@@ -117372,20 +117129,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
117372
117129
  ],
117373
117130
  imports: [
117374
117131
  CommonModule,
117375
- ClearAllButtonDirective,
117376
117132
  ContainerRefDirective,
117377
- DisabledDirective,
117378
- IconButtonDirective,
117379
117133
  MatHintErrorDirective,
117380
117134
  SanitizedInnerHtmlDirective,
117381
117135
  ],
117382
117136
  exports: [
117383
117137
  AutofocusDirective,
117384
- ClearAllButtonDirective,
117385
117138
  ContainerRefDirective,
117386
- DisabledDirective,
117387
117139
  EllipsisMultilineDirective,
117388
- IconButtonDirective,
117389
117140
  IsEllipsisDirective,
117390
117141
  NativeElementInjectorDirective,
117391
117142
  OffScreenDirective,
@@ -118386,7 +118137,7 @@ let LayoutState = class LayoutState {
118386
118137
  constructor(mediaMatcher, store) {
118387
118138
  this.store = store;
118388
118139
  this.mobileQuerySubject = new Subject();
118389
- this.mobileQuery = mediaMatcher.matchMedia('(max-width: 640px)');
118140
+ this.mobileQuery = mediaMatcher.matchMedia('(max-width: 600px)');
118390
118141
  this.mobileQuery.onchange = (event) => this.mobileQuerySubject.next(event.matches);
118391
118142
  this.mobileQuerySubject
118392
118143
  .pipe(distinctUntilChanged())
@@ -118451,17 +118202,16 @@ class FieldValidationsComponent extends BaseComponent {
118451
118202
  constructor(controlContainer) {
118452
118203
  super();
118453
118204
  this.controlContainer = controlContainer;
118205
+ this.ObjectKeys = Object.keys;
118454
118206
  }
118455
- // Only the first error shows, so a field failing several rules still says what to fix (not just "Invalid").
118456
118207
  getErrors(errors) {
118457
118208
  if (errors) {
118458
118209
  delete errors.mask; // remove default NgxMaskDirective validation
118459
118210
  }
118460
- const first = errors && Object.keys(errors)[0];
118461
- return first ? { [first]: errors[first] } : null;
118211
+ return errors;
118462
118212
  }
118463
118213
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldValidationsComponent, deps: [{ token: i1.ControlContainer }], target: i0.ɵɵFactoryTarget.Component }); }
118464
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FieldValidationsComponent, isStandalone: true, selector: "[tb-field-validations]", inputs: { controlName: "controlName", label: "label", errors: "errors", touched: "touched" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"touched || controlContainer.control.get(controlName)?.touched\">\n <ng-container *tbVar=\"getErrors | wrapFn: controlContainer.control.get(controlName)?.errors ?? errors as errors\">\n <ng-container>\n <div *ngIf=\"errors?.required\">\n {{ L.form_validation_required_message | translate }}</div>\n <div *ngIf=\"errors?.invalidDate\">\n {{ errors.invalidDate.example ? (L.form_validation_invalid_date_example | translate: { example: errors.invalidDate.example })\n : (L.form_validation_invalid_date_message | translate) }}</div>\n <div *ngIf=\"errors?.invalidDateRange\">\n {{ L.form_validation_invalid_date_range | translate }}</div>\n <div *ngIf=\"errors?.invalidTerms\">\n {{ L.form_validation_terms_policy | translate }}</div>\n <div *ngIf=\"errors?.min min\">\n {{ L.form_validation_min_message | translate: { controlName: label | translate, value: errors?.min.min || 0 } }}\n </div>\n <div *ngIf=\"errors?.max\">\n {{ L.form_validation_max_message | translate: { controlName: label | translate, value: errors?.max.max || 0 } }}\n </div>\n <div *ngIf=\"errors?.minlength\">\n {{ L.form_validation_min_length_message | translate: { controlName: label | translate, value: errors?.minlength.requiredLength || 0 } }}\n </div>\n <div *ngIf=\"errors?.maxlength\">\n {{ L.form_validation_max_length_message | translate: { controlName: label | translate, value: errors?.maxlength.requiredLength || 0 } }}\n </div>\n <div *ngIf=\"errors?.invalidNumberLength\">\n {{ L.form_validation_invalid_length_message | translate: { controlName: label | translate, value: errors?.invalidNumberLength.requiredLength\n || 0 } }}\n </div>\n <div *ngIf=\"errors?.integerNumber\">\n {{ L.form_validation_invalid_integer_number_message | translate: { controlName: label | translate, value: errors?.integerNumber.value || 0 }\n }}\n </div>\n <div *ngIf=\"errors?.integerPositiveNumber\">\n {{ L.form_validation_invalid_integer_positive_number_message | translate: { controlName: label | translate, value:\n errors?.integerPositiveNumber.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.decimalNumber\">\n {{ L.form_validation_invalid_decimal_number_message | translate: { controlName: label | translate, value: errors?.decimalNumber.value || 0 }\n }}\n </div>\n <div *ngIf=\"errors?.decimalPositiveNumber\">\n {{ L.form_validation_invalid_decimal_positive_number_message | translate: { controlName: label | translate, value:\n errors?.decimalPositiveNumber.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.positiveNumbers\">\n {{ L.form_validation_invalid_positive_number_message | translate: { controlName: label | translate, value: errors?.positiveNumbers.value || 0\n } }}\n </div>\n <div *ngIf=\"errors?.positiveNumbersGreaterThanZero\">\n {{ L.form_validation_invalid_positive_number_greater_than_zero | translate: { controlName: label | translate, value:\n errors?.positiveNumbersGreaterThanZero.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.mobileNumbers\">\n {{ L.form_validation_invalid_mobile_number_message | translate: { controlName: label | translate, value: errors?.mobileNumbers.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.email\">\n {{ L.form_validation_email_pattern | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.pattern\">\n {{ L.form_validation_password_pattern | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.passwordPolicyRequirements\">\n {{ L.form_validation_password_policy | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.passwordNotMatch\">\n {{ L.form_validation_password_not_match | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.passwordMatch\">\n {{ L.form_validation_password_match | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.noWhitespaceWithinSentence\">\n {{ L.form_validation_no_white_space_within_sentence | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.noDotWithinSentence\">\n {{ L.form_validation_no_dot_space_within_sentence | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.guidIsValid\">\n {{ L.form_validation_invalid_uuid | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.noDefaultAccessProfile\">\n {{ L.no_access_default_profile | translate: { controlName: label | translate,\n companyName: errors?.noDefaultAccessProfile?.companyName } }}\n </div>\n <div *ngIf=\"errors?.noEmoji\">\n {{ L.form_validation_invalid_no_emoji_message | translate: { controlName: label | translate, value: errors?.noEmoji.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.form_validation_unsafe_html\">\n {{ L.form_validation_unsafe_html | translate }}\n </div>\n <div *ngIf=\"errors?.ipv4Format\">\n {{ L.form_validation_invalid_ipv4_message | translate: { controlName: label | translate, value: errors?.ipv4Format.value } }}\n </div>\n <div *ngIf=\"errors?.ipv4NotZero\">\n {{ L.form_validation_ipv4_not_zero | translate: { controlName: label | translate } }}\n </div>\n <div *ngIf=\"errors?.duplicateIP\">\n {{ L.form_validation_duplicate_ip | translate: { controlName: label | translate } }}\n </div>\n <div *ngIf=\"errors?.alphanumericRegex\">\n {{ L.form_validation_alphanumeric_message | translate: { controlName: label | translate, value: errors?.alphanumericRegex.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.validatePositiveInteger\">\n {{ L.form_validation_invalid_positive_integer_number_message | translate: { controlName: label | translate, value:\n errors?.validatePositiveInteger.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.roleNameAlreadyExists\">\n {{ L.role_name_already_exists | translate }}\n </div>\n <div *ngIf=\"errors?.rateNumberAlreadyExists\">\n {{ L.rate_number_already_exists | translate }}\n </div>\n <div *ngIf=\"errors?.accessProfileNumberTaken\">\n {{ L.access_profile_number_already_exists | translate }}\n </div>\n <div *ngIf=\"errors?.cashierNumberTaken\">\n {{ L.cashier_number_already_exists | translate }}\n </div>\n <div *ngIf=\"errors?.signCodeInUse\">\n {{ L.sign_code_already_in_use | translate }}\n </div>\n <div *ngIf=\"errors?.signCodeInvalidFormat\">\n {{ L.sign_code_invalid_format | translate }}\n </div>\n <div *ngIf=\"errors?.rateNumberIsZero\">\n {{ L.rate_number_is_zero | translate }}\n </div>\n <div *ngIf=\"errors?.form_validation_invalid_time\">\n {{ L.form_validation_invalid_time | translate: { controlName: label ,from: '00:00',to:'00:00' } }}\n </div>\n <div *ngIf=\"errors?.form_validation_invalid_time_format\">\n {{ L.form_validation_invalid_time_format | translate: { controlName: label } }}\n </div>\n <div *ngIf=\"errors?.positiveIntegerNumbersGreaterThanZeroRegex\">\n {{ L.form_validation_invalid_positive_integer_number_wo_zero_message | translate: { controlName: label | translate, value:\n errors?.positiveIntegerNumbersGreaterThanZeroRegex.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.form_validation_units_balance_maximum\">\n {{ L.form_validation_units_balance_maximum | translate: { controlName: label | translate } }}\n </div>\n <div *ngIf=\"errors?.form_validation_units_balance_minimum\">\n {{ L.form_validation_units_balance_minimum | translate: { controlName: label | translate } }}\n </div>\n <div *ngIf=\"errors?.form_validation_invalid_percentage\">\n {{ L.form_validation_invalid_percentage_message | translate }}\n </div>\n <div *ngIf=\"errors?.form_validation_invalid_decimal_percentage\">\n {{ L.form_validation_invalid_percentage_decimal_message | translate }}\n </div>\n <div *ngIf=\"errors?.revert_at_must_be_less_than_occupancy\">\n {{ L.revert_at_must_be_less_than_occupancy_message | translate }}\n </div>\n <div *ngIf=\"errors?.revert_at_must_be_more_than_occupancy\">\n {{ L.revert_at_must_be_more_than_occupancy_message | translate }}\n </div>\n <div *ngIf=\"errors?.car_plate_sequential_required\">\n {{ L.car_plate_sequential_required | translate }}\n </div>\n <div *ngIf=\"errors?.card_sequential_required\">\n {{ L.card_sequential_required | translate }}\n </div>\n </ng-container>\n </ng-container>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: WrapFnPipe, name: "wrapFn" }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: SharedDirectivesModule }, { kind: "directive", type: VarDirective, selector: "[tbVar]", inputs: ["tbVar"] }] }); }
118214
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FieldValidationsComponent, isStandalone: true, selector: "[tb-field-validations]", inputs: { controlName: "controlName", label: "label", errors: "errors", touched: "touched" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"touched || controlContainer.control.get(controlName)?.touched\">\n <ng-container *tbVar=\"getErrors | wrapFn: controlContainer.control.get(controlName)?.errors ?? errors as errors\">\n <div *ngIf=\"ObjectKeys(errors || {}).length > 1; then hasMultiErrors else hasOneError\"></div>\n <ng-template #hasMultiErrors>\n {{ L.invalid | translate: { controlName: label | translate} }}\n </ng-template>\n <ng-template #hasOneError>\n <div *ngIf=\"errors?.required\">\n {{ L.form_validation_required_message | translate }}</div>\n <div *ngIf=\"errors?.invalidDate\">\n {{ L.form_validation_invalid_date_message | translate }}</div>\n <div *ngIf=\"errors?.invalidDateRange\">\n {{ L.form_validation_invalid_date_range | translate }}</div>\n <div *ngIf=\"errors?.invalidTerms\">\n {{ L.form_validation_terms_policy | translate }}</div>\n <div *ngIf=\"errors?.min min\">\n {{ L.form_validation_min_message | translate: { controlName: label | translate, value: errors?.min.min || 0 } }}\n </div>\n <div *ngIf=\"errors?.max\">\n {{ L.form_validation_max_message | translate: { controlName: label | translate, value: errors?.max.max || 0 } }}\n </div>\n <div *ngIf=\"errors?.minlength\">\n {{ L.form_validation_min_length_message | translate: { controlName: label | translate, value: errors?.minlength.requiredLength || 0 } }}\n </div>\n <div *ngIf=\"errors?.maxlength\">\n {{ L.form_validation_max_length_message | translate: { controlName: label | translate, value: errors?.maxlength.requiredLength || 0 } }}\n </div>\n <div *ngIf=\"errors?.invalidNumberLength\">\n {{ L.form_validation_invalid_length_message | translate: { controlName: label | translate, value: errors?.invalidNumberLength.requiredLength\n || 0 } }}\n </div>\n <div *ngIf=\"errors?.integerNumber\">\n {{ L.form_validation_invalid_integer_number_message | translate: { controlName: label | translate, value: errors?.integerNumber.value || 0 }\n }}\n </div>\n <div *ngIf=\"errors?.integerPositiveNumber\">\n {{ L.form_validation_invalid_integer_positive_number_message | translate: { controlName: label | translate, value:\n errors?.integerPositiveNumber.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.decimalNumber\">\n {{ L.form_validation_invalid_decimal_number_message | translate: { controlName: label | translate, value: errors?.decimalNumber.value || 0 }\n }}\n </div>\n <div *ngIf=\"errors?.decimalPositiveNumber\">\n {{ L.form_validation_invalid_decimal_positive_number_message | translate: { controlName: label | translate, value:\n errors?.decimalPositiveNumber.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.positiveNumbers\">\n {{ L.form_validation_invalid_positive_number_message | translate: { controlName: label | translate, value: errors?.positiveNumbers.value || 0\n } }}\n </div>\n <div *ngIf=\"errors?.positiveNumbersGreaterThanZero\">\n {{ L.form_validation_invalid_positive_number_greater_than_zero | translate: { controlName: label | translate, value:\n errors?.positiveNumbersGreaterThanZero.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.mobileNumbers\">\n {{ L.form_validation_invalid_mobile_number_message | translate: { controlName: label | translate, value: errors?.mobileNumbers.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.email\">\n {{ L.form_validation_email_pattern | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.pattern\">\n {{ L.form_validation_password_pattern | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.passwordPolicyRequirements\">\n {{ L.form_validation_password_policy | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.passwordNotMatch\">\n {{ L.form_validation_password_not_match | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.passwordMatch\">\n {{ L.form_validation_password_match | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.noWhitespaceWithinSentence\">\n {{ L.form_validation_no_white_space_within_sentence | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.noDotWithinSentence\">\n {{ L.form_validation_no_dot_space_within_sentence | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.guidIsValid\">\n {{ L.form_validation_invalid_uuid | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.noDefaultAccessProfile\">\n {{ L.no_access_default_profile | translate: { controlName: label | translate,\n companyName: errors?.noDefaultAccessProfile?.companyName } }}\n </div>\n <div *ngIf=\"errors?.noEmoji\">\n {{ L.form_validation_invalid_no_emoji_message | translate: { controlName: label | translate, value: errors?.noEmoji.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.form_validation_unsafe_html\">\n {{ L.form_validation_unsafe_html | translate }}\n </div>\n <div *ngIf=\"errors?.ipv4Format\">\n {{ L.form_validation_invalid_ipv4_message | translate: { controlName: label | translate, value: errors?.ipv4Format.value } }}\n </div>\n <div *ngIf=\"errors?.ipv4NotZero\">\n {{ L.form_validation_ipv4_not_zero | translate: { controlName: label | translate } }}\n </div>\n <div *ngIf=\"errors?.duplicateIP\">\n {{ L.form_validation_duplicate_ip | translate: { controlName: label | translate } }}\n </div>\n <div *ngIf=\"errors?.alphanumericRegex\">\n {{ L.form_validation_alphanumeric_message | translate: { controlName: label | translate, value: errors?.alphanumericRegex.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.validatePositiveInteger\">\n {{ L.form_validation_invalid_positive_integer_number_message | translate: { controlName: label | translate, value:\n errors?.validatePositiveInteger.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.roleNameAlreadyExists\">\n {{ L.role_name_already_exists | translate }}\n </div>\n <div *ngIf=\"errors?.rateNumberAlreadyExists\">\n {{ L.rate_number_already_exists | translate }}\n </div>\n <div *ngIf=\"errors?.accessProfileNumberTaken\">\n {{ L.access_profile_number_already_exists | translate }}\n </div>\n <div *ngIf=\"errors?.cashierNumberTaken\">\n {{ L.cashier_number_already_exists | translate }}\n </div>\n <div *ngIf=\"errors?.signCodeInUse\">\n {{ L.sign_code_already_in_use | translate }}\n </div>\n <div *ngIf=\"errors?.signCodeInvalidFormat\">\n {{ L.sign_code_invalid_format | translate }}\n </div>\n <div *ngIf=\"errors?.rateNumberIsZero\">\n {{ L.rate_number_is_zero | translate }}\n </div>\n <div *ngIf=\"errors?.form_validation_invalid_time\">\n {{ L.form_validation_invalid_time | translate: { controlName: label ,from: '00:00',to:'00:00' } }}\n </div>\n <div *ngIf=\"errors?.form_validation_invalid_time_format\">\n {{ L.form_validation_invalid_time_format | translate: { controlName: label } }}\n </div>\n <div *ngIf=\"errors?.positiveIntegerNumbersGreaterThanZeroRegex\">\n {{ L.form_validation_invalid_positive_integer_number_wo_zero_message | translate: { controlName: label | translate, value:\n errors?.positiveIntegerNumbersGreaterThanZeroRegex.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.form_validation_units_balance_maximum\">\n {{ L.form_validation_units_balance_maximum | translate: { controlName: label | translate } }}\n </div>\n <div *ngIf=\"errors?.form_validation_units_balance_minimum\">\n {{ L.form_validation_units_balance_minimum | translate: { controlName: label | translate } }}\n </div>\n <div *ngIf=\"errors?.form_validation_invalid_percentage\">\n {{ L.form_validation_invalid_percentage_message | translate }}\n </div>\n <div *ngIf=\"errors?.form_validation_invalid_decimal_percentage\">\n {{ L.form_validation_invalid_percentage_decimal_message | translate }}\n </div>\n <div *ngIf=\"errors?.revert_at_must_be_less_than_occupancy\">\n {{ L.revert_at_must_be_less_than_occupancy_message | translate }}\n </div>\n <div *ngIf=\"errors?.revert_at_must_be_more_than_occupancy\">\n {{ L.revert_at_must_be_more_than_occupancy_message | translate }}\n </div>\n <div *ngIf=\"errors?.car_plate_sequential_required\">\n {{ L.car_plate_sequential_required | translate }}\n </div>\n <div *ngIf=\"errors?.card_sequential_required\">\n {{ L.card_sequential_required | translate }}\n </div>\n </ng-template>\n </ng-container>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: WrapFnPipe, name: "wrapFn" }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: SharedDirectivesModule }, { kind: "directive", type: VarDirective, selector: "[tbVar]", inputs: ["tbVar"] }] }); }
118465
118215
  }
118466
118216
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldValidationsComponent, decorators: [{
118467
118217
  type: Component,
@@ -118470,7 +118220,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
118470
118220
  WrapFnPipe,
118471
118221
  LocalizationModule,
118472
118222
  SharedDirectivesModule,
118473
- ], template: "<ng-container *ngIf=\"touched || controlContainer.control.get(controlName)?.touched\">\n <ng-container *tbVar=\"getErrors | wrapFn: controlContainer.control.get(controlName)?.errors ?? errors as errors\">\n <ng-container>\n <div *ngIf=\"errors?.required\">\n {{ L.form_validation_required_message | translate }}</div>\n <div *ngIf=\"errors?.invalidDate\">\n {{ errors.invalidDate.example ? (L.form_validation_invalid_date_example | translate: { example: errors.invalidDate.example })\n : (L.form_validation_invalid_date_message | translate) }}</div>\n <div *ngIf=\"errors?.invalidDateRange\">\n {{ L.form_validation_invalid_date_range | translate }}</div>\n <div *ngIf=\"errors?.invalidTerms\">\n {{ L.form_validation_terms_policy | translate }}</div>\n <div *ngIf=\"errors?.min min\">\n {{ L.form_validation_min_message | translate: { controlName: label | translate, value: errors?.min.min || 0 } }}\n </div>\n <div *ngIf=\"errors?.max\">\n {{ L.form_validation_max_message | translate: { controlName: label | translate, value: errors?.max.max || 0 } }}\n </div>\n <div *ngIf=\"errors?.minlength\">\n {{ L.form_validation_min_length_message | translate: { controlName: label | translate, value: errors?.minlength.requiredLength || 0 } }}\n </div>\n <div *ngIf=\"errors?.maxlength\">\n {{ L.form_validation_max_length_message | translate: { controlName: label | translate, value: errors?.maxlength.requiredLength || 0 } }}\n </div>\n <div *ngIf=\"errors?.invalidNumberLength\">\n {{ L.form_validation_invalid_length_message | translate: { controlName: label | translate, value: errors?.invalidNumberLength.requiredLength\n || 0 } }}\n </div>\n <div *ngIf=\"errors?.integerNumber\">\n {{ L.form_validation_invalid_integer_number_message | translate: { controlName: label | translate, value: errors?.integerNumber.value || 0 }\n }}\n </div>\n <div *ngIf=\"errors?.integerPositiveNumber\">\n {{ L.form_validation_invalid_integer_positive_number_message | translate: { controlName: label | translate, value:\n errors?.integerPositiveNumber.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.decimalNumber\">\n {{ L.form_validation_invalid_decimal_number_message | translate: { controlName: label | translate, value: errors?.decimalNumber.value || 0 }\n }}\n </div>\n <div *ngIf=\"errors?.decimalPositiveNumber\">\n {{ L.form_validation_invalid_decimal_positive_number_message | translate: { controlName: label | translate, value:\n errors?.decimalPositiveNumber.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.positiveNumbers\">\n {{ L.form_validation_invalid_positive_number_message | translate: { controlName: label | translate, value: errors?.positiveNumbers.value || 0\n } }}\n </div>\n <div *ngIf=\"errors?.positiveNumbersGreaterThanZero\">\n {{ L.form_validation_invalid_positive_number_greater_than_zero | translate: { controlName: label | translate, value:\n errors?.positiveNumbersGreaterThanZero.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.mobileNumbers\">\n {{ L.form_validation_invalid_mobile_number_message | translate: { controlName: label | translate, value: errors?.mobileNumbers.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.email\">\n {{ L.form_validation_email_pattern | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.pattern\">\n {{ L.form_validation_password_pattern | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.passwordPolicyRequirements\">\n {{ L.form_validation_password_policy | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.passwordNotMatch\">\n {{ L.form_validation_password_not_match | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.passwordMatch\">\n {{ L.form_validation_password_match | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.noWhitespaceWithinSentence\">\n {{ L.form_validation_no_white_space_within_sentence | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.noDotWithinSentence\">\n {{ L.form_validation_no_dot_space_within_sentence | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.guidIsValid\">\n {{ L.form_validation_invalid_uuid | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.noDefaultAccessProfile\">\n {{ L.no_access_default_profile | translate: { controlName: label | translate,\n companyName: errors?.noDefaultAccessProfile?.companyName } }}\n </div>\n <div *ngIf=\"errors?.noEmoji\">\n {{ L.form_validation_invalid_no_emoji_message | translate: { controlName: label | translate, value: errors?.noEmoji.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.form_validation_unsafe_html\">\n {{ L.form_validation_unsafe_html | translate }}\n </div>\n <div *ngIf=\"errors?.ipv4Format\">\n {{ L.form_validation_invalid_ipv4_message | translate: { controlName: label | translate, value: errors?.ipv4Format.value } }}\n </div>\n <div *ngIf=\"errors?.ipv4NotZero\">\n {{ L.form_validation_ipv4_not_zero | translate: { controlName: label | translate } }}\n </div>\n <div *ngIf=\"errors?.duplicateIP\">\n {{ L.form_validation_duplicate_ip | translate: { controlName: label | translate } }}\n </div>\n <div *ngIf=\"errors?.alphanumericRegex\">\n {{ L.form_validation_alphanumeric_message | translate: { controlName: label | translate, value: errors?.alphanumericRegex.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.validatePositiveInteger\">\n {{ L.form_validation_invalid_positive_integer_number_message | translate: { controlName: label | translate, value:\n errors?.validatePositiveInteger.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.roleNameAlreadyExists\">\n {{ L.role_name_already_exists | translate }}\n </div>\n <div *ngIf=\"errors?.rateNumberAlreadyExists\">\n {{ L.rate_number_already_exists | translate }}\n </div>\n <div *ngIf=\"errors?.accessProfileNumberTaken\">\n {{ L.access_profile_number_already_exists | translate }}\n </div>\n <div *ngIf=\"errors?.cashierNumberTaken\">\n {{ L.cashier_number_already_exists | translate }}\n </div>\n <div *ngIf=\"errors?.signCodeInUse\">\n {{ L.sign_code_already_in_use | translate }}\n </div>\n <div *ngIf=\"errors?.signCodeInvalidFormat\">\n {{ L.sign_code_invalid_format | translate }}\n </div>\n <div *ngIf=\"errors?.rateNumberIsZero\">\n {{ L.rate_number_is_zero | translate }}\n </div>\n <div *ngIf=\"errors?.form_validation_invalid_time\">\n {{ L.form_validation_invalid_time | translate: { controlName: label ,from: '00:00',to:'00:00' } }}\n </div>\n <div *ngIf=\"errors?.form_validation_invalid_time_format\">\n {{ L.form_validation_invalid_time_format | translate: { controlName: label } }}\n </div>\n <div *ngIf=\"errors?.positiveIntegerNumbersGreaterThanZeroRegex\">\n {{ L.form_validation_invalid_positive_integer_number_wo_zero_message | translate: { controlName: label | translate, value:\n errors?.positiveIntegerNumbersGreaterThanZeroRegex.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.form_validation_units_balance_maximum\">\n {{ L.form_validation_units_balance_maximum | translate: { controlName: label | translate } }}\n </div>\n <div *ngIf=\"errors?.form_validation_units_balance_minimum\">\n {{ L.form_validation_units_balance_minimum | translate: { controlName: label | translate } }}\n </div>\n <div *ngIf=\"errors?.form_validation_invalid_percentage\">\n {{ L.form_validation_invalid_percentage_message | translate }}\n </div>\n <div *ngIf=\"errors?.form_validation_invalid_decimal_percentage\">\n {{ L.form_validation_invalid_percentage_decimal_message | translate }}\n </div>\n <div *ngIf=\"errors?.revert_at_must_be_less_than_occupancy\">\n {{ L.revert_at_must_be_less_than_occupancy_message | translate }}\n </div>\n <div *ngIf=\"errors?.revert_at_must_be_more_than_occupancy\">\n {{ L.revert_at_must_be_more_than_occupancy_message | translate }}\n </div>\n <div *ngIf=\"errors?.car_plate_sequential_required\">\n {{ L.car_plate_sequential_required | translate }}\n </div>\n <div *ngIf=\"errors?.card_sequential_required\">\n {{ L.card_sequential_required | translate }}\n </div>\n </ng-container>\n </ng-container>\n</ng-container>\n" }]
118223
+ ], template: "<ng-container *ngIf=\"touched || controlContainer.control.get(controlName)?.touched\">\n <ng-container *tbVar=\"getErrors | wrapFn: controlContainer.control.get(controlName)?.errors ?? errors as errors\">\n <div *ngIf=\"ObjectKeys(errors || {}).length > 1; then hasMultiErrors else hasOneError\"></div>\n <ng-template #hasMultiErrors>\n {{ L.invalid | translate: { controlName: label | translate} }}\n </ng-template>\n <ng-template #hasOneError>\n <div *ngIf=\"errors?.required\">\n {{ L.form_validation_required_message | translate }}</div>\n <div *ngIf=\"errors?.invalidDate\">\n {{ L.form_validation_invalid_date_message | translate }}</div>\n <div *ngIf=\"errors?.invalidDateRange\">\n {{ L.form_validation_invalid_date_range | translate }}</div>\n <div *ngIf=\"errors?.invalidTerms\">\n {{ L.form_validation_terms_policy | translate }}</div>\n <div *ngIf=\"errors?.min min\">\n {{ L.form_validation_min_message | translate: { controlName: label | translate, value: errors?.min.min || 0 } }}\n </div>\n <div *ngIf=\"errors?.max\">\n {{ L.form_validation_max_message | translate: { controlName: label | translate, value: errors?.max.max || 0 } }}\n </div>\n <div *ngIf=\"errors?.minlength\">\n {{ L.form_validation_min_length_message | translate: { controlName: label | translate, value: errors?.minlength.requiredLength || 0 } }}\n </div>\n <div *ngIf=\"errors?.maxlength\">\n {{ L.form_validation_max_length_message | translate: { controlName: label | translate, value: errors?.maxlength.requiredLength || 0 } }}\n </div>\n <div *ngIf=\"errors?.invalidNumberLength\">\n {{ L.form_validation_invalid_length_message | translate: { controlName: label | translate, value: errors?.invalidNumberLength.requiredLength\n || 0 } }}\n </div>\n <div *ngIf=\"errors?.integerNumber\">\n {{ L.form_validation_invalid_integer_number_message | translate: { controlName: label | translate, value: errors?.integerNumber.value || 0 }\n }}\n </div>\n <div *ngIf=\"errors?.integerPositiveNumber\">\n {{ L.form_validation_invalid_integer_positive_number_message | translate: { controlName: label | translate, value:\n errors?.integerPositiveNumber.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.decimalNumber\">\n {{ L.form_validation_invalid_decimal_number_message | translate: { controlName: label | translate, value: errors?.decimalNumber.value || 0 }\n }}\n </div>\n <div *ngIf=\"errors?.decimalPositiveNumber\">\n {{ L.form_validation_invalid_decimal_positive_number_message | translate: { controlName: label | translate, value:\n errors?.decimalPositiveNumber.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.positiveNumbers\">\n {{ L.form_validation_invalid_positive_number_message | translate: { controlName: label | translate, value: errors?.positiveNumbers.value || 0\n } }}\n </div>\n <div *ngIf=\"errors?.positiveNumbersGreaterThanZero\">\n {{ L.form_validation_invalid_positive_number_greater_than_zero | translate: { controlName: label | translate, value:\n errors?.positiveNumbersGreaterThanZero.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.mobileNumbers\">\n {{ L.form_validation_invalid_mobile_number_message | translate: { controlName: label | translate, value: errors?.mobileNumbers.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.email\">\n {{ L.form_validation_email_pattern | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.pattern\">\n {{ L.form_validation_password_pattern | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.passwordPolicyRequirements\">\n {{ L.form_validation_password_policy | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.passwordNotMatch\">\n {{ L.form_validation_password_not_match | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.passwordMatch\">\n {{ L.form_validation_password_match | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.noWhitespaceWithinSentence\">\n {{ L.form_validation_no_white_space_within_sentence | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.noDotWithinSentence\">\n {{ L.form_validation_no_dot_space_within_sentence | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.guidIsValid\">\n {{ L.form_validation_invalid_uuid | translate: { controlName: label | translate} }}\n </div>\n <div *ngIf=\"errors?.noDefaultAccessProfile\">\n {{ L.no_access_default_profile | translate: { controlName: label | translate,\n companyName: errors?.noDefaultAccessProfile?.companyName } }}\n </div>\n <div *ngIf=\"errors?.noEmoji\">\n {{ L.form_validation_invalid_no_emoji_message | translate: { controlName: label | translate, value: errors?.noEmoji.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.form_validation_unsafe_html\">\n {{ L.form_validation_unsafe_html | translate }}\n </div>\n <div *ngIf=\"errors?.ipv4Format\">\n {{ L.form_validation_invalid_ipv4_message | translate: { controlName: label | translate, value: errors?.ipv4Format.value } }}\n </div>\n <div *ngIf=\"errors?.ipv4NotZero\">\n {{ L.form_validation_ipv4_not_zero | translate: { controlName: label | translate } }}\n </div>\n <div *ngIf=\"errors?.duplicateIP\">\n {{ L.form_validation_duplicate_ip | translate: { controlName: label | translate } }}\n </div>\n <div *ngIf=\"errors?.alphanumericRegex\">\n {{ L.form_validation_alphanumeric_message | translate: { controlName: label | translate, value: errors?.alphanumericRegex.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.validatePositiveInteger\">\n {{ L.form_validation_invalid_positive_integer_number_message | translate: { controlName: label | translate, value:\n errors?.validatePositiveInteger.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.roleNameAlreadyExists\">\n {{ L.role_name_already_exists | translate }}\n </div>\n <div *ngIf=\"errors?.rateNumberAlreadyExists\">\n {{ L.rate_number_already_exists | translate }}\n </div>\n <div *ngIf=\"errors?.accessProfileNumberTaken\">\n {{ L.access_profile_number_already_exists | translate }}\n </div>\n <div *ngIf=\"errors?.cashierNumberTaken\">\n {{ L.cashier_number_already_exists | translate }}\n </div>\n <div *ngIf=\"errors?.signCodeInUse\">\n {{ L.sign_code_already_in_use | translate }}\n </div>\n <div *ngIf=\"errors?.signCodeInvalidFormat\">\n {{ L.sign_code_invalid_format | translate }}\n </div>\n <div *ngIf=\"errors?.rateNumberIsZero\">\n {{ L.rate_number_is_zero | translate }}\n </div>\n <div *ngIf=\"errors?.form_validation_invalid_time\">\n {{ L.form_validation_invalid_time | translate: { controlName: label ,from: '00:00',to:'00:00' } }}\n </div>\n <div *ngIf=\"errors?.form_validation_invalid_time_format\">\n {{ L.form_validation_invalid_time_format | translate: { controlName: label } }}\n </div>\n <div *ngIf=\"errors?.positiveIntegerNumbersGreaterThanZeroRegex\">\n {{ L.form_validation_invalid_positive_integer_number_wo_zero_message | translate: { controlName: label | translate, value:\n errors?.positiveIntegerNumbersGreaterThanZeroRegex.value || 0 } }}\n </div>\n <div *ngIf=\"errors?.form_validation_units_balance_maximum\">\n {{ L.form_validation_units_balance_maximum | translate: { controlName: label | translate } }}\n </div>\n <div *ngIf=\"errors?.form_validation_units_balance_minimum\">\n {{ L.form_validation_units_balance_minimum | translate: { controlName: label | translate } }}\n </div>\n <div *ngIf=\"errors?.form_validation_invalid_percentage\">\n {{ L.form_validation_invalid_percentage_message | translate }}\n </div>\n <div *ngIf=\"errors?.form_validation_invalid_decimal_percentage\">\n {{ L.form_validation_invalid_percentage_decimal_message | translate }}\n </div>\n <div *ngIf=\"errors?.revert_at_must_be_less_than_occupancy\">\n {{ L.revert_at_must_be_less_than_occupancy_message | translate }}\n </div>\n <div *ngIf=\"errors?.revert_at_must_be_more_than_occupancy\">\n {{ L.revert_at_must_be_more_than_occupancy_message | translate }}\n </div>\n <div *ngIf=\"errors?.car_plate_sequential_required\">\n {{ L.car_plate_sequential_required | translate }}\n </div>\n <div *ngIf=\"errors?.card_sequential_required\">\n {{ L.card_sequential_required | translate }}\n </div>\n </ng-template>\n </ng-container>\n</ng-container>\n" }]
118474
118224
  }], ctorParameters: () => [{ type: i1.ControlContainer }], propDecorators: { controlName: [{
118475
118225
  type: Input
118476
118226
  }], label: [{
@@ -118652,22 +118402,12 @@ const extractErrorsChanges = (control) => {
118652
118402
  return setErrorsChanges$;
118653
118403
  };
118654
118404
 
118655
- let nextLabelId = 0;
118656
- /** How far up from the label to look for its field. */
118657
- const FIELD_SEARCH_DEPTH = 4;
118658
- const FIELD_SELECTOR = 'input:not([type=hidden]):not([type=checkbox]):not([type=radio]), textarea';
118659
118405
  class FieldLabelComponent {
118660
- constructor(controlContainer, elementRef) {
118406
+ constructor(controlContainer) {
118661
118407
  this.controlContainer = controlContainer;
118662
- this.elementRef = elementRef;
118663
- this.labelId = `tb-field-label-${nextLabelId++}`;
118664
118408
  this.isRequired$ = new BehaviorSubject(false);
118665
118409
  this.isInvalid$ = new BehaviorSubject(false);
118666
118410
  }
118667
- ngAfterViewInit() {
118668
- // ponytail: links once; a field rendered later (behind *ngIf) stays unlinked.
118669
- setTimeout(() => this.linkField());
118670
- }
118671
118411
  ngOnInit() {
118672
118412
  this.control = this.controlContainer.control?.get(this.controlName);
118673
118413
  if (!this.control) {
@@ -118686,29 +118426,6 @@ class FieldLabelComponent {
118686
118426
  });
118687
118427
  });
118688
118428
  }
118689
- /** Names the first text field after this label (before the next label) with the label text. */
118690
- linkField() {
118691
- if (!this.control) {
118692
- return;
118693
- }
118694
- const host = this.elementRef.nativeElement;
118695
- const follows = (a, b) => !!(a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING);
118696
- let scope = host.parentElement;
118697
- for (let depth = 0; scope && depth < FIELD_SEARCH_DEPTH; depth++, scope = scope.parentElement) {
118698
- const nextLabel = Array.from(scope.querySelectorAll('[tb-field-label]')).find(label => follows(host, label));
118699
- const field = Array.from(scope.querySelectorAll(FIELD_SELECTOR))
118700
- .find(candidate => follows(host, candidate) && (!nextLabel || follows(candidate, nextLabel)));
118701
- if (field) {
118702
- if (!field.hasAttribute('aria-labelledby') && !field.hasAttribute('aria-label') && !field.labels?.length) {
118703
- field.setAttribute('aria-labelledby', this.labelId);
118704
- }
118705
- return;
118706
- }
118707
- if (nextLabel) {
118708
- return;
118709
- }
118710
- }
118711
- }
118712
118429
  get isControlRequired() {
118713
118430
  return this.control.hasValidator(Validators.required);
118714
118431
  }
@@ -118721,11 +118438,11 @@ class FieldLabelComponent {
118721
118438
  this.touchedChangesSubscription?.unsubscribe();
118722
118439
  });
118723
118440
  }
118724
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldLabelComponent, deps: [{ token: i1.ControlContainer }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
118441
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldLabelComponent, deps: [{ token: i1.ControlContainer }], target: i0.ɵɵFactoryTarget.Component }); }
118725
118442
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FieldLabelComponent, isStandalone: true, selector: "[tb-field-label]", inputs: { controlName: "controlName", label: "label", ngLabelClass: "ngLabelClass" }, ngImport: i0, template: `
118726
118443
  <div class="tb-field-label" *ngIf="control">
118727
118444
  <span class="required-asterisk" *ngIf="isRequired$ | async" [class.required]="isInvalid$ | async">*</span>
118728
- <span [id]="labelId" [ngClass]="ngLabelClass">{{ label | translate }}</span>
118445
+ <span [ngClass]="ngLabelClass">{{ label | translate }}</span>
118729
118446
  <ng-content select="[tooltip]"></ng-content>
118730
118447
  </div>
118731
118448
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -118737,7 +118454,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
118737
118454
  template: `
118738
118455
  <div class="tb-field-label" *ngIf="control">
118739
118456
  <span class="required-asterisk" *ngIf="isRequired$ | async" [class.required]="isInvalid$ | async">*</span>
118740
- <span [id]="labelId" [ngClass]="ngLabelClass">{{ label | translate }}</span>
118457
+ <span [ngClass]="ngLabelClass">{{ label | translate }}</span>
118741
118458
  <ng-content select="[tooltip]"></ng-content>
118742
118459
  </div>
118743
118460
  `,
@@ -118748,7 +118465,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
118748
118465
  LocalizationModule
118749
118466
  ]
118750
118467
  }]
118751
- }], ctorParameters: () => [{ type: i1.ControlContainer }, { type: i0.ElementRef }], propDecorators: { controlName: [{
118468
+ }], ctorParameters: () => [{ type: i1.ControlContainer }], propDecorators: { controlName: [{
118752
118469
  type: Input
118753
118470
  }], label: [{
118754
118471
  type: Input
@@ -120570,6 +120287,7 @@ var IconsHelper;
120570
120287
  IconsHelper[IconsHelper["access_mode_not_active"] = 222] = "access_mode_not_active";
120571
120288
  IconsHelper[IconsHelper["whatsapp"] = 223] = "whatsapp";
120572
120289
  IconsHelper[IconsHelper["whatsapp_grey"] = 224] = "whatsapp_grey";
120290
+ IconsHelper[IconsHelper["tech_tools_module_blue"] = 225] = "tech_tools_module_blue";
120573
120291
  })(IconsHelper || (IconsHelper = {}));
120574
120292
  var IconsHelperText;
120575
120293
  (function (IconsHelperText) {
@@ -120799,6 +120517,7 @@ var IconsHelperText;
120799
120517
  IconsHelperText["access_mode_not_active"] = "access-mode-not-active";
120800
120518
  IconsHelperText["whatsapp"] = "whatsapp";
120801
120519
  IconsHelperText["whatsapp_grey"] = "whatsapp-grey";
120520
+ IconsHelperText["tech_tools_module_blue"] = "tech-tools-module-blue";
120802
120521
  })(IconsHelperText || (IconsHelperText = {}));
120803
120522
 
120804
120523
  var DeviceActivityMode;
@@ -121550,12 +121269,10 @@ var LprTransactionsOptionsText;
121550
121269
  LprTransactionsOptionsText["NotRecognized"] = "not_recognized";
121551
121270
  })(LprTransactionsOptionsText || (LprTransactionsOptionsText = {}));
121552
121271
 
121553
- /** Shortest time a message stays up, so it can be read. */
121554
- const MIN_MESSAGE_DURATION = ONE_SECOND_IN_MILLISECONDS * 5;
121555
121272
  var DurationMessageBar;
121556
121273
  (function (DurationMessageBar) {
121557
121274
  DurationMessageBar[DurationMessageBar["displayContinuously"] = 0] = "displayContinuously";
121558
- DurationMessageBar[DurationMessageBar["defaultDisplayOneMessage"] = 5000] = "defaultDisplayOneMessage";
121275
+ DurationMessageBar[DurationMessageBar["defaultDisplayOneMessage"] = 3000] = "defaultDisplayOneMessage";
121559
121276
  DurationMessageBar[DurationMessageBar["defaultDisplayMultiMessages"] = 5000] = "defaultDisplayMultiMessages";
121560
121277
  DurationMessageBar[DurationMessageBar["defaultDisplayLongMessage"] = 8000] = "defaultDisplayLongMessage";
121561
121278
  })(DurationMessageBar || (DurationMessageBar = {}));
@@ -123517,51 +123234,27 @@ class FloatMessageBarService {
123517
123234
  openFromMessageBarComponent(messageBarDetails, options) {
123518
123235
  const messagesInfo = buildMessageInfos(this.translateService, messageBarDetails, options);
123519
123236
  const duration = options?.duration === DurationMessageBar.displayContinuously ? undefined : (options?.duration || DurationMessageBar.defaultDisplayMultiMessages); // On duration "0", the snack bar will be display continuously
123520
- const ref = this._snackBar.openFromComponent(MessageBarComponent, {
123237
+ this._snackBar.openFromComponent(MessageBarComponent, {
123521
123238
  data: messagesInfo,
123522
123239
  horizontalPosition: 'center',
123523
123240
  verticalPosition: 'top',
123241
+ duration,
123524
123242
  panelClass: 'message-bar'
123525
123243
  });
123526
- this.dismissWhenIdle(ref, duration);
123527
123244
  }
123528
123245
  openMessageBarContainerComponent(message) {
123529
123246
  const duration = message.duration === DurationMessageBar.displayContinuously ? undefined : (message.duration || DurationMessageBar.defaultDisplayOneMessage); // On duration "0", the snack bar will be display continuously
123530
- const ref = this._snackBar.openFromComponent(MessageBarContainerComponent, {
123247
+ this._snackBar.openFromComponent(MessageBarContainerComponent, {
123531
123248
  data: message,
123532
123249
  horizontalPosition: 'center',
123533
123250
  verticalPosition: 'top',
123251
+ duration,
123534
123252
  panelClass: 'message-bar'
123535
123253
  });
123536
- this.dismissWhenIdle(ref, duration);
123537
123254
  }
123538
123255
  clearSnackbar() {
123539
123256
  this._snackBar.dismiss();
123540
123257
  }
123541
- /** Closes after `duration` (at least 5 s), restarting the wait while hovered or focused. */
123542
- dismissWhenIdle(ref, duration) {
123543
- if (!duration) {
123544
- return;
123545
- }
123546
- ref.afterOpened().subscribe(() => {
123547
- const element = document.querySelector('mat-snack-bar-container.message-bar');
123548
- let timer;
123549
- const stop = () => clearTimeout(timer);
123550
- const start = () => {
123551
- stop();
123552
- if (!element?.matches(':hover') && !element?.contains(document.activeElement)) {
123553
- timer = setTimeout(() => ref.dismiss(), Math.max(duration, MIN_MESSAGE_DURATION));
123554
- }
123555
- };
123556
- element?.addEventListener('mouseenter', stop);
123557
- element?.addEventListener('focusin', stop);
123558
- element?.addEventListener('mouseleave', start);
123559
- // focusout fires before focus lands on the next element.
123560
- element?.addEventListener('focusout', () => setTimeout(start));
123561
- ref.afterDismissed().subscribe(stop);
123562
- start();
123563
- });
123564
- }
123565
123258
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FloatMessageBarService, deps: [{ token: i1$5.MatSnackBar }, { token: i1$4.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
123566
123259
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FloatMessageBarService, providedIn: 'root' }); }
123567
123260
  }
@@ -125205,10 +124898,8 @@ class BaseNotificationService {
125205
124898
  show(config, notificationComponent) {
125206
124899
  this.options.toastComponent = notificationComponent;
125207
124900
  this.options.toastClass = config.class;
125208
- // 0 or no duration keeps the notification open.
125209
- const duration = config.duration ? Math.max(config.duration, MIN_MESSAGE_DURATION) : config.duration;
125210
- this.options.timeOut = duration;
125211
- this.options.extendedTimeOut = duration;
124901
+ this.options.timeOut = config.duration;
124902
+ this.options.extendedTimeOut = config.duration;
125212
124903
  this.options.autoDismiss = !!config.maxOpened;
125213
124904
  this.options.maxOpened = config.maxOpened;
125214
124905
  this.options.easeTime = 0;
@@ -125289,14 +124980,14 @@ class NotificationTypeLabelComponent extends BaseComponent {
125289
124980
  this.notificationTypeClass = notificationTypeClasses.join(" ");
125290
124981
  }
125291
124982
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NotificationTypeLabelComponent, deps: [{ token: i1$4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
125292
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: NotificationTypeLabelComponent, isStandalone: true, selector: "tb-notification-type-label", inputs: { notificationSeverity: "notificationSeverity", notificationSeverityInvert: "notificationSeverityInvert", notificationSeverityText: "notificationSeverityText" }, usesInheritance: true, ngImport: i0, template: "<div [ngClass]=\"notificationTypeClass\">\n <span>{{ notificationSeverityText }}</span>\n</div>", styles: [".notification-type-label{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;display:flex;align-items:center;width:fit-content;padding:0 5px;font-size:13px;line-height:20px;border-radius:4px}.notification-type-label.critical{background-color:#ff0e4d;color:#fff}.notification-type-label.critical.invert{background-color:#fff;color:#ff0e4d}.notification-type-label.high{background-color:#e3554c;color:#fff}.notification-type-label.medium{background-color:#ffd362;color:#2c3e50}.notification-type-label.low{background-color:#c1e0fa;color:#2c3e50}.notification-type-label.information{background-color:#0670c7;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: LocalizationModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
124983
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: NotificationTypeLabelComponent, isStandalone: true, selector: "tb-notification-type-label", inputs: { notificationSeverity: "notificationSeverity", notificationSeverityInvert: "notificationSeverityInvert", notificationSeverityText: "notificationSeverityText" }, usesInheritance: true, ngImport: i0, template: "<div [ngClass]=\"notificationTypeClass\">\n <span>{{ notificationSeverityText }}</span>\n</div>", styles: [".notification-type-label{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;display:flex;align-items:center;width:fit-content;padding:0 5px;font-size:13px;line-height:20px;border-radius:4px}.notification-type-label.critical{background-color:#ff0e4d;color:#fff}.notification-type-label.critical.invert{background-color:#fff;color:#ff0e4d}.notification-type-label.high{background-color:#e3554c;color:#fff}.notification-type-label.medium{background-color:#ffd362;color:#2c3e50}.notification-type-label.low{background-color:#c1e0fa;color:#2c3e50}.notification-type-label.information{background-color:#0985eb;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: LocalizationModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
125293
124984
  }
125294
124985
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NotificationTypeLabelComponent, decorators: [{
125295
124986
  type: Component,
125296
124987
  args: [{ selector: 'tb-notification-type-label', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
125297
124988
  CommonModule,
125298
124989
  LocalizationModule,
125299
- ], template: "<div [ngClass]=\"notificationTypeClass\">\n <span>{{ notificationSeverityText }}</span>\n</div>", styles: [".notification-type-label{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;display:flex;align-items:center;width:fit-content;padding:0 5px;font-size:13px;line-height:20px;border-radius:4px}.notification-type-label.critical{background-color:#ff0e4d;color:#fff}.notification-type-label.critical.invert{background-color:#fff;color:#ff0e4d}.notification-type-label.high{background-color:#e3554c;color:#fff}.notification-type-label.medium{background-color:#ffd362;color:#2c3e50}.notification-type-label.low{background-color:#c1e0fa;color:#2c3e50}.notification-type-label.information{background-color:#0670c7;color:#fff}\n"] }]
124990
+ ], template: "<div [ngClass]=\"notificationTypeClass\">\n <span>{{ notificationSeverityText }}</span>\n</div>", styles: [".notification-type-label{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;display:flex;align-items:center;width:fit-content;padding:0 5px;font-size:13px;line-height:20px;border-radius:4px}.notification-type-label.critical{background-color:#ff0e4d;color:#fff}.notification-type-label.critical.invert{background-color:#fff;color:#ff0e4d}.notification-type-label.high{background-color:#e3554c;color:#fff}.notification-type-label.medium{background-color:#ffd362;color:#2c3e50}.notification-type-label.low{background-color:#c1e0fa;color:#2c3e50}.notification-type-label.information{background-color:#0985eb;color:#fff}\n"] }]
125300
124991
  }], ctorParameters: () => [{ type: i1$4.TranslateService }], propDecorators: { notificationSeverity: [{
125301
124992
  type: Input
125302
124993
  }], notificationSeverityInvert: [{
@@ -125318,11 +125009,11 @@ class AlertNotificationComponent extends Toast {
125318
125009
  $event.stopPropagation();
125319
125010
  }
125320
125011
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertNotificationComponent, deps: [{ token: i1$8.ToastrService }, { token: i1$8.ToastPackage }], target: i0.ɵɵFactoryTarget.Component }); }
125321
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertNotificationComponent, isStandalone: true, selector: "tb-alert-notification", inputs: { data: "data", activeToast: "activeToast" }, host: { listeners: { "focusin": "stickAround()", "focusout": "delayedHideToast()" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"tb-alert-notification-container tb-flex tb-full-height\">\n <div class=\"tb-status alert-notification-prefix\" [ngClass]=\"'tb-status-' + NotificationSeverity[data.severity] | lowercase\">\n </div>\n <div class=\"tb-messages alert-notification-content\">\n <div *ngFor=\"let message of data?.messages\" [ngClass]=\"message.class\">\n <span>{{ message.value | translate }}</span>\n </div>\n </div>\n <div class=\"alert-notification-suffix\">\n <div class=\"alert-notification-dismiss\">\n <tb-icon *ngIf=\"options.closeButton\" [settings]=\"IconsHelper.cancel\" class=\"tb-button tb-icon-30\" (click)=\"closeNotification($event)\">\n </tb-icon>\n </div>\n <tb-notification-type-label class=\"tb-mr-5\" [notificationSeverity]=\"data.severity\">\n </tb-notification-type-label>\n </div>\n</div>\n<div *ngIf=\"options.progressBar\">\n <div class=\"notification-progress\" [style.width]=\"width + '%'\"></div>\n</div>\n<div class=\"tb-alert-notification-container-shadow\" [matTooltip]=\"data.titleTooltip\"\n [matTooltipDisabled]=\"!data.titleTooltip\" [matTooltipPosition]=\"'above'\"></div>", styles: [":host{position:relative;min-height:75px;width:395px;padding:0;background-color:#fff;border-left:6px solid #dee2e6;border-radius:4px;margin-bottom:10px;overflow:hidden;pointer-events:initial;box-shadow:0 3px 15px #0000004d;cursor:pointer;transition:all .2s ease;display:flex}:host .tb-alert-notification-container{flex:1}:host .tb-alert-notification-container div{z-index:1;pointer-events:none}:host .tb-alert-notification-container .alert-notification-suffix{display:flex;flex-direction:column;align-items:flex-end;margin-right:5px}:host .tb-alert-notification-container .alert-notification-dismiss{pointer-events:all;display:flex;height:30px;width:30px;margin:5px;color:#2c3e50;border-radius:4px}:host .tb-alert-notification-container .alert-notification-dismiss:hover{background-color:#ecedf0}:host .tb-alert-notification-container .alert-notification-dismiss .tb-icon{border-radius:4px;cursor:pointer}:host .tb-alert-notification-container-shadow{position:absolute;width:100%;height:100%}:host .tb-alert-notification-container-shadow:hover{background:#ecedf0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.LowerCasePipe, name: "lowercase" }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: NotificationTypeLabelComponent, selector: "tb-notification-type-label", inputs: ["notificationSeverity", "notificationSeverityInvert", "notificationSeverityText"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: IconComponent, selector: "tb-icon", inputs: ["setCursorPointer", "facilityCommandIcon", "remoteCommandIcon", "settings"] }], animations: [notificationAnimation()] }); }
125012
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertNotificationComponent, isStandalone: true, selector: "tb-alert-notification", inputs: { data: "data", activeToast: "activeToast" }, usesInheritance: true, ngImport: i0, template: "<div class=\"tb-alert-notification-container tb-flex tb-full-height\">\n <div class=\"tb-status alert-notification-prefix\" [ngClass]=\"'tb-status-' + NotificationSeverity[data.severity] | lowercase\">\n </div>\n <div class=\"tb-messages alert-notification-content\">\n <div *ngFor=\"let message of data?.messages\" [ngClass]=\"message.class\">\n <span>{{ message.value | translate }}</span>\n </div>\n </div>\n <div class=\"alert-notification-suffix\">\n <div class=\"alert-notification-dismiss\">\n <tb-icon *ngIf=\"options.closeButton\" [settings]=\"IconsHelper.cancel\" class=\"tb-button tb-icon-30\" (click)=\"closeNotification($event)\">\n </tb-icon>\n </div>\n <tb-notification-type-label class=\"tb-mr-5\" [notificationSeverity]=\"data.severity\">\n </tb-notification-type-label>\n </div>\n</div>\n<div *ngIf=\"options.progressBar\">\n <div class=\"notification-progress\" [style.width]=\"width + '%'\"></div>\n</div>\n<div class=\"tb-alert-notification-container-shadow\" [matTooltip]=\"data.titleTooltip\"\n [matTooltipDisabled]=\"!data.titleTooltip\" [matTooltipPosition]=\"'above'\"></div>", styles: [":host{position:relative;min-height:75px;width:395px;padding:0;background-color:#fff;border-left:6px solid #dee2e6;border-radius:4px;margin-bottom:10px;overflow:hidden;pointer-events:initial;box-shadow:0 3px 15px #0000004d;cursor:pointer;transition:all .2s ease;display:flex}:host .tb-alert-notification-container{flex:1}:host .tb-alert-notification-container div{z-index:1;pointer-events:none}:host .tb-alert-notification-container .alert-notification-suffix{display:flex;flex-direction:column;align-items:flex-end;margin-right:5px}:host .tb-alert-notification-container .alert-notification-dismiss{pointer-events:all;display:flex;height:30px;width:30px;margin:5px;color:#2c3e50;border-radius:4px}:host .tb-alert-notification-container .alert-notification-dismiss:hover{background-color:#ecedf0}:host .tb-alert-notification-container .alert-notification-dismiss .tb-icon{border-radius:4px;cursor:pointer}:host .tb-alert-notification-container-shadow{position:absolute;width:100%;height:100%}:host .tb-alert-notification-container-shadow:hover{background:#ecedf0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.LowerCasePipe, name: "lowercase" }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: NotificationTypeLabelComponent, selector: "tb-notification-type-label", inputs: ["notificationSeverity", "notificationSeverityInvert", "notificationSeverityText"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: IconComponent, selector: "tb-icon", inputs: ["setCursorPointer", "facilityCommandIcon", "remoteCommandIcon", "settings"] }], animations: [notificationAnimation()] }); }
125322
125013
  }
125323
125014
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertNotificationComponent, decorators: [{
125324
125015
  type: Component,
125325
- args: [{ selector: 'tb-alert-notification', animations: [notificationAnimation()], host: { '(focusin)': 'stickAround()', '(focusout)': 'delayedHideToast()' }, standalone: true, imports: [
125016
+ args: [{ selector: 'tb-alert-notification', animations: [notificationAnimation()], standalone: true, imports: [
125326
125017
  CommonModule,
125327
125018
  LocalizationModule,
125328
125019
  MatTooltipModule,
@@ -127278,11 +126969,11 @@ class CommandNotificationComponent extends Toast {
127278
126969
  this.CommandNotificationType = CommandNotificationType;
127279
126970
  }
127280
126971
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CommandNotificationComponent, deps: [{ token: i1$8.ToastrService }, { token: i1$8.ToastPackage }], target: i0.ɵɵFactoryTarget.Component }); }
127281
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CommandNotificationComponent, isStandalone: true, selector: "tb-command-notification", inputs: { data: "data" }, host: { listeners: { "focusin": "stickAround()", "focusout": "delayedHideToast()" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"tb-flex tb-full-height\">\n <div [ngClass]=\"'tb-status-' + CommandNotificationType[data.type] | lowercase\" class=\"tb-status\"></div>\n <div class=\"tb-messages\">\n <div *ngFor=\"let message of data?.messages\" [ngClass]=\"message.class\">\n <span>{{ message.value }}</span>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;min-height:75px;padding:0;background-color:#fff;border-left:6px solid #dee2e6;border-radius:4px;position:relative;-ms-flex-align:center;align-items:center;margin:10px;max-width:33vw;min-width:344px;transform-origin:center;box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i2.LowerCasePipe, name: "lowercase" }], animations: [notificationAnimation()] }); }
126972
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CommandNotificationComponent, isStandalone: true, selector: "tb-command-notification", inputs: { data: "data" }, usesInheritance: true, ngImport: i0, template: "<div class=\"tb-flex tb-full-height\">\n <div [ngClass]=\"'tb-status-' + CommandNotificationType[data.type] | lowercase\" class=\"tb-status\"></div>\n <div class=\"tb-messages\">\n <div *ngFor=\"let message of data?.messages\" [ngClass]=\"message.class\">\n <span>{{ message.value }}</span>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;min-height:75px;padding:0;background-color:#fff;border-left:6px solid #dee2e6;border-radius:4px;position:relative;-ms-flex-align:center;align-items:center;margin:10px;max-width:33vw;min-width:344px;transform-origin:center;box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i2.LowerCasePipe, name: "lowercase" }], animations: [notificationAnimation()] }); }
127282
126973
  }
127283
126974
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CommandNotificationComponent, decorators: [{
127284
126975
  type: Component,
127285
- args: [{ selector: 'tb-command-notification', animations: [notificationAnimation()], host: { '(focusin)': 'stickAround()', '(focusout)': 'delayedHideToast()' }, standalone: true, imports: [
126976
+ args: [{ selector: 'tb-command-notification', animations: [notificationAnimation()], standalone: true, imports: [
127286
126977
  CommonModule,
127287
126978
  ], template: "<div class=\"tb-flex tb-full-height\">\n <div [ngClass]=\"'tb-status-' + CommandNotificationType[data.type] | lowercase\" class=\"tb-status\"></div>\n <div class=\"tb-messages\">\n <div *ngFor=\"let message of data?.messages\" [ngClass]=\"message.class\">\n <span>{{ message.value }}</span>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;min-height:75px;padding:0;background-color:#fff;border-left:6px solid #dee2e6;border-radius:4px;position:relative;-ms-flex-align:center;align-items:center;margin:10px;max-width:33vw;min-width:344px;transform-origin:center;box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}\n"] }]
127288
126979
  }], ctorParameters: () => [{ type: i1$8.ToastrService }, { type: i1$8.ToastPackage }], propDecorators: { data: [{
@@ -129388,11 +129079,11 @@ class RestartLinkComponent {
129388
129079
  window.location.reload();
129389
129080
  }
129390
129081
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RestartLinkComponent, deps: [{ token: i1$4.TranslateService }, { token: i1$2.Store }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
129391
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: RestartLinkComponent, selector: "tb-restart-link", inputs: { label: "label", messageText: "messageText" }, ngImport: i0, template: "<div class=\"restart-link-container\">\n <div class=\"text-content\">\n <span>\n {{ messageText }}\n </span>\n <span class=\"tb-text-link\" (click)=\"onClick()\">\n {{ label }}\n </span>\n </div>\n <tb-icon [settings]=\"IconSettings.refresh\" [setCursorPointer]=\"false\" class=\"tb-icon-30 tb-mt-2 icon-fixed\"></tb-icon>\n</div>\n", styles: [":host{display:inline-block;padding-left:4px;min-width:270px}:host[dir=rtl] .restart-link-container{flex-direction:row-reverse}:host[dir=rtl] .text-content{direction:rtl;text-align:right}:host[dir=ltr] .text-content{direction:ltr;text-align:left}.restart-link-container,.restart-link-container .text-content{display:flex;align-items:center;gap:.5em}.restart-link-container .tb-text-link{color:#0670c7;cursor:pointer;display:flex;align-items:center;text-decoration:none}.restart-link-container .tb-text-link:hover{opacity:.9}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "tb-icon", inputs: ["setCursorPointer", "facilityCommandIcon", "remoteCommandIcon", "settings"] }] }); }
129082
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: RestartLinkComponent, selector: "tb-restart-link", inputs: { label: "label", messageText: "messageText" }, ngImport: i0, template: "<div class=\"restart-link-container\">\n <div class=\"text-content\">\n <span>\n {{ messageText }}\n </span>\n <span class=\"tb-text-link\" (click)=\"onClick()\">\n {{ label }}\n </span>\n </div>\n <tb-icon [settings]=\"IconSettings.refresh\" [setCursorPointer]=\"false\" class=\"tb-icon-30 tb-mt-2 icon-fixed\"></tb-icon>\n</div>\n", styles: [":host{display:inline-block;padding-left:4px;min-width:270px}:host[dir=rtl] .restart-link-container{flex-direction:row-reverse}:host[dir=rtl] .text-content{direction:rtl;text-align:right}:host[dir=ltr] .text-content{direction:ltr;text-align:left}.restart-link-container,.restart-link-container .text-content{display:flex;align-items:center;gap:.5em}.restart-link-container .tb-text-link{color:#0985eb;cursor:pointer;display:flex;align-items:center;text-decoration:none}.restart-link-container .tb-text-link:hover{opacity:.9}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "tb-icon", inputs: ["setCursorPointer", "facilityCommandIcon", "remoteCommandIcon", "settings"] }] }); }
129392
129083
  }
129393
129084
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RestartLinkComponent, decorators: [{
129394
129085
  type: Component,
129395
- args: [{ selector: 'tb-restart-link', template: "<div class=\"restart-link-container\">\n <div class=\"text-content\">\n <span>\n {{ messageText }}\n </span>\n <span class=\"tb-text-link\" (click)=\"onClick()\">\n {{ label }}\n </span>\n </div>\n <tb-icon [settings]=\"IconSettings.refresh\" [setCursorPointer]=\"false\" class=\"tb-icon-30 tb-mt-2 icon-fixed\"></tb-icon>\n</div>\n", styles: [":host{display:inline-block;padding-left:4px;min-width:270px}:host[dir=rtl] .restart-link-container{flex-direction:row-reverse}:host[dir=rtl] .text-content{direction:rtl;text-align:right}:host[dir=ltr] .text-content{direction:ltr;text-align:left}.restart-link-container,.restart-link-container .text-content{display:flex;align-items:center;gap:.5em}.restart-link-container .tb-text-link{color:#0670c7;cursor:pointer;display:flex;align-items:center;text-decoration:none}.restart-link-container .tb-text-link:hover{opacity:.9}\n"] }]
129086
+ args: [{ selector: 'tb-restart-link', template: "<div class=\"restart-link-container\">\n <div class=\"text-content\">\n <span>\n {{ messageText }}\n </span>\n <span class=\"tb-text-link\" (click)=\"onClick()\">\n {{ label }}\n </span>\n </div>\n <tb-icon [settings]=\"IconSettings.refresh\" [setCursorPointer]=\"false\" class=\"tb-icon-30 tb-mt-2 icon-fixed\"></tb-icon>\n</div>\n", styles: [":host{display:inline-block;padding-left:4px;min-width:270px}:host[dir=rtl] .restart-link-container{flex-direction:row-reverse}:host[dir=rtl] .text-content{direction:rtl;text-align:right}:host[dir=ltr] .text-content{direction:ltr;text-align:left}.restart-link-container,.restart-link-container .text-content{display:flex;align-items:center;gap:.5em}.restart-link-container .tb-text-link{color:#0985eb;cursor:pointer;display:flex;align-items:center;text-decoration:none}.restart-link-container .tb-text-link:hover{opacity:.9}\n"] }]
129396
129087
  }], ctorParameters: () => [{ type: i1$4.TranslateService }, { type: i1$2.Store }, { type: i0.ElementRef }], propDecorators: { label: [{
129397
129088
  type: Input
129398
129089
  }], messageText: [{
@@ -131997,7 +131688,6 @@ class ModalService {
131997
131688
  const dialogRef = this.dialog.open(modalComponent, this.buildDialogConfig(modalConfig));
131998
131689
  this.createBackdrop(dialogRef.id);
131999
131690
  this.attachButtonWrapper(dialogRef, modalConfig);
132000
- this.closeOnEscape(dialogRef);
132001
131691
  // take(1), not first(): router teardown can complete these subjects without ever emitting,
132002
131692
  // and first() turns that benign completion into an unhandled EmptyError (SPRK3-14821).
132003
131693
  //
@@ -132153,18 +131843,6 @@ class ModalService {
132153
131843
  }
132154
131844
  });
132155
131845
  }
132156
- // Esc does what the dialog's X does; a dialog without an X stays open. Listened on the dialog itself:
132157
- // the overlay keyboard dispatcher gives keys only to the top overlay, often a tooltip left on the opener.
132158
- closeOnEscape(dialogRef) {
132159
- dialogRef.afterOpened().pipe(take$1(1)).subscribe(() => {
132160
- const container = document.getElementById(dialogRef.id);
132161
- container?.addEventListener('keydown', (event) => {
132162
- if (event.key === 'Escape' && !event.defaultPrevented) {
132163
- container.querySelector('.modal-close-icon')?.click();
132164
- }
132165
- });
132166
- });
132167
- }
132168
131846
  detachButtonWrapper(dialogId) {
132169
131847
  const ref = this._buttonWrapperRefs[dialogId];
132170
131848
  if (ref) {
@@ -135349,7 +135027,7 @@ class CloudConfirmDialogComponent extends BaseComponent {
135349
135027
  this.dialogRef.close(ok);
135350
135028
  }
135351
135029
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CloudConfirmDialogComponent, deps: [{ token: i1$4.TranslateService }, { token: MAT_DIALOG_DATA }, { token: i2$1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
135352
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CloudConfirmDialogComponent, isStandalone: true, selector: "tb-cloud-confirm-dialog", usesInheritance: true, ngImport: i0, template: "<div class=\"tb-modal\">\n <div class=\"modal-title-container\">\n <div class=\"ellipsis modal-title-content\" mat-dialog-title>\n <div class=\"modal-title-primary ellipsis\">{{data.confirmTitle}}</div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data.confirmSubTitle\">{{data.confirmSubTitle}}</div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data?.ticket\">\n <span class=\"entity-identifier-type\">{{ data.ticket.type }}</span>\n <span>#{{ data.ticket.number }}</span>\n </div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data?.device\">{{ data.device.name }} | #{{ data.device.commId\n }}</div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data?.lpr\">{{ L.car_plate | translate }}: {{ data.lpr.lprString\n }}</div>\n <div class=\"modal-title-sub-secondary ellipsis\" *ngIf=\"data?.parkName\">\n <span>{{ data.parkName }}</span>\n <span *ngIf=\"data?.zoneName\"> | {{ data.zoneName }}</span>\n </div>\n </div>\n <div class=\"modal-button-wrapper\">\n <tb-notification-type-label *ngIf=\"data?.notificationSeverity\" class=\"tb-mr-5\"\n [notificationSeverity]=\"data?.notificationSeverity\"\n [notificationSeverityInvert]=\"data?.notificationSeverityInvert\">\n </tb-notification-type-label>\n </div>\n </div>\n <mat-dialog-content>\n <tb-message-bar *ngIf=\"data.showMessageBar\" [dialog]=\"true\"></tb-message-bar>\n <div class=\"modal-text\" *ngFor=\"let confirmMessage of data.confirmMessages\">\n <span [innerHTML]=\"confirmMessage | curlyToBold\"></span>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <div class=\"buttons-wrapper\">\n <div class=\"buttons-wrapper-left\">\n <!-- No Left Action -->\n </div>\n <div class=\"buttons-wrapper-right\">\n <!-- Confirmations change data: the safe choice takes focus, so Enter cannot confirm by accident. -->\n <button *ngIf=\"!data.hideCancel\" class='tb-button tb-tertiary-button basic-button'\n (click)=\"close(false)\" cdkFocusInitial [attr.data-qa]=\"DataQaAttribute.cloud_confirm_diaglog+'_'+DataQaAttribute.cancel_btn\"\n matRipple>\n <span class=\"button-text\">{{ data.cancelText | translate }}</span>\n </button>\n <button *ngIf=\"!data.hideOk\" class='tb-button tb-primary-button basic-button' (click)=\"close(true)\" [attr.cdkFocusInitial]=\"data.hideCancel ? '' : null\"\n [attr.data-qa]=\"DataQaAttribute.cloud_confirm_diaglog+'_'+DataQaAttribute.confirm_btn\" matRipple>\n <span class=\"button-text\">{{ data.okText | translate }}</span>\n </button>\n </div>\n </div>\n\n </mat-dialog-actions>\n</div>\n", styles: [".modal-text span{white-space:pre-line}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$4.TranslatePipe, name: "translate" }, { kind: "component", type: NotificationTypeLabelComponent, selector: "tb-notification-type-label", inputs: ["notificationSeverity", "notificationSeverityInvert", "notificationSeverityText"] }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i2$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i2$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i4$1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "ngmodule", type: MessageBarModule }, { kind: "component", type: MessageBarComponent, selector: "tb-message-bar", inputs: ["id", "stack", "fade", "dialog", "class"] }, { kind: "pipe", type: CurlyToBoldPipe, name: "curlyToBold" }, { kind: "directive", type: SanitizedInnerHtmlDirective, selector: "[innerHTML]", inputs: ["innerHTML"] }] }); }
135030
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CloudConfirmDialogComponent, isStandalone: true, selector: "tb-cloud-confirm-dialog", usesInheritance: true, ngImport: i0, template: "<div class=\"tb-modal\">\n <div class=\"modal-title-container\">\n <div class=\"ellipsis modal-title-content\" mat-dialog-title>\n <div class=\"modal-title-primary ellipsis\">{{data.confirmTitle}}</div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data.confirmSubTitle\">{{data.confirmSubTitle}}</div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data?.ticket\">\n <span class=\"entity-identifier-type\">{{ data.ticket.type }}</span>\n <span>#{{ data.ticket.number }}</span>\n </div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data?.device\">{{ data.device.name }} | #{{ data.device.commId\n }}</div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data?.lpr\">{{ L.car_plate | translate }}: {{ data.lpr.lprString\n }}</div>\n <div class=\"modal-title-sub-secondary ellipsis\" *ngIf=\"data?.parkName\">\n <span>{{ data.parkName }}</span>\n <span *ngIf=\"data?.zoneName\"> | {{ data.zoneName }}</span>\n </div>\n </div>\n <div class=\"modal-button-wrapper\">\n <tb-notification-type-label *ngIf=\"data?.notificationSeverity\" class=\"tb-mr-5\"\n [notificationSeverity]=\"data?.notificationSeverity\"\n [notificationSeverityInvert]=\"data?.notificationSeverityInvert\">\n </tb-notification-type-label>\n </div>\n </div>\n <mat-dialog-content>\n <tb-message-bar *ngIf=\"data.showMessageBar\" [dialog]=\"true\"></tb-message-bar>\n <div class=\"modal-text\" *ngFor=\"let confirmMessage of data.confirmMessages\">\n <span [innerHTML]=\"confirmMessage | curlyToBold\"></span>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <div class=\"buttons-wrapper\">\n <div class=\"buttons-wrapper-left\">\n <!-- No Left Action -->\n </div>\n <div class=\"buttons-wrapper-right\">\n <button *ngIf=\"!data.hideCancel\" class='tb-button tb-tertiary-button basic-button' tabindex=\"-1\"\n (click)=\"close(false)\" [attr.data-qa]=\"DataQaAttribute.cloud_confirm_diaglog+'_'+DataQaAttribute.cancel_btn\"\n matRipple>\n <span class=\"button-text\">{{ data.cancelText | translate }}</span>\n </button>\n <button *ngIf=\"!data.hideOk\" class='tb-button tb-primary-button basic-button' (click)=\"close(true)\"\n [attr.data-qa]=\"DataQaAttribute.cloud_confirm_diaglog+'_'+DataQaAttribute.confirm_btn\" matRipple>\n <span class=\"button-text\">{{ data.okText | translate }}</span>\n </button>\n </div>\n </div>\n\n </mat-dialog-actions>\n</div>\n", styles: [".modal-text span{white-space:pre-line}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$4.TranslatePipe, name: "translate" }, { kind: "component", type: NotificationTypeLabelComponent, selector: "tb-notification-type-label", inputs: ["notificationSeverity", "notificationSeverityInvert", "notificationSeverityText"] }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i2$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i2$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i4$1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "ngmodule", type: MessageBarModule }, { kind: "component", type: MessageBarComponent, selector: "tb-message-bar", inputs: ["id", "stack", "fade", "dialog", "class"] }, { kind: "pipe", type: CurlyToBoldPipe, name: "curlyToBold" }, { kind: "directive", type: SanitizedInnerHtmlDirective, selector: "[innerHTML]", inputs: ["innerHTML"] }] }); }
135353
135031
  }
135354
135032
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CloudConfirmDialogComponent, decorators: [{
135355
135033
  type: Component,
@@ -135364,7 +135042,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
135364
135042
  MessageBarModule,
135365
135043
  CurlyToBoldPipe,
135366
135044
  SanitizedInnerHtmlDirective,
135367
- ], template: "<div class=\"tb-modal\">\n <div class=\"modal-title-container\">\n <div class=\"ellipsis modal-title-content\" mat-dialog-title>\n <div class=\"modal-title-primary ellipsis\">{{data.confirmTitle}}</div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data.confirmSubTitle\">{{data.confirmSubTitle}}</div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data?.ticket\">\n <span class=\"entity-identifier-type\">{{ data.ticket.type }}</span>\n <span>#{{ data.ticket.number }}</span>\n </div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data?.device\">{{ data.device.name }} | #{{ data.device.commId\n }}</div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data?.lpr\">{{ L.car_plate | translate }}: {{ data.lpr.lprString\n }}</div>\n <div class=\"modal-title-sub-secondary ellipsis\" *ngIf=\"data?.parkName\">\n <span>{{ data.parkName }}</span>\n <span *ngIf=\"data?.zoneName\"> | {{ data.zoneName }}</span>\n </div>\n </div>\n <div class=\"modal-button-wrapper\">\n <tb-notification-type-label *ngIf=\"data?.notificationSeverity\" class=\"tb-mr-5\"\n [notificationSeverity]=\"data?.notificationSeverity\"\n [notificationSeverityInvert]=\"data?.notificationSeverityInvert\">\n </tb-notification-type-label>\n </div>\n </div>\n <mat-dialog-content>\n <tb-message-bar *ngIf=\"data.showMessageBar\" [dialog]=\"true\"></tb-message-bar>\n <div class=\"modal-text\" *ngFor=\"let confirmMessage of data.confirmMessages\">\n <span [innerHTML]=\"confirmMessage | curlyToBold\"></span>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <div class=\"buttons-wrapper\">\n <div class=\"buttons-wrapper-left\">\n <!-- No Left Action -->\n </div>\n <div class=\"buttons-wrapper-right\">\n <!-- Confirmations change data: the safe choice takes focus, so Enter cannot confirm by accident. -->\n <button *ngIf=\"!data.hideCancel\" class='tb-button tb-tertiary-button basic-button'\n (click)=\"close(false)\" cdkFocusInitial [attr.data-qa]=\"DataQaAttribute.cloud_confirm_diaglog+'_'+DataQaAttribute.cancel_btn\"\n matRipple>\n <span class=\"button-text\">{{ data.cancelText | translate }}</span>\n </button>\n <button *ngIf=\"!data.hideOk\" class='tb-button tb-primary-button basic-button' (click)=\"close(true)\" [attr.cdkFocusInitial]=\"data.hideCancel ? '' : null\"\n [attr.data-qa]=\"DataQaAttribute.cloud_confirm_diaglog+'_'+DataQaAttribute.confirm_btn\" matRipple>\n <span class=\"button-text\">{{ data.okText | translate }}</span>\n </button>\n </div>\n </div>\n\n </mat-dialog-actions>\n</div>\n", styles: [".modal-text span{white-space:pre-line}\n"] }]
135045
+ ], template: "<div class=\"tb-modal\">\n <div class=\"modal-title-container\">\n <div class=\"ellipsis modal-title-content\" mat-dialog-title>\n <div class=\"modal-title-primary ellipsis\">{{data.confirmTitle}}</div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data.confirmSubTitle\">{{data.confirmSubTitle}}</div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data?.ticket\">\n <span class=\"entity-identifier-type\">{{ data.ticket.type }}</span>\n <span>#{{ data.ticket.number }}</span>\n </div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data?.device\">{{ data.device.name }} | #{{ data.device.commId\n }}</div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data?.lpr\">{{ L.car_plate | translate }}: {{ data.lpr.lprString\n }}</div>\n <div class=\"modal-title-sub-secondary ellipsis\" *ngIf=\"data?.parkName\">\n <span>{{ data.parkName }}</span>\n <span *ngIf=\"data?.zoneName\"> | {{ data.zoneName }}</span>\n </div>\n </div>\n <div class=\"modal-button-wrapper\">\n <tb-notification-type-label *ngIf=\"data?.notificationSeverity\" class=\"tb-mr-5\"\n [notificationSeverity]=\"data?.notificationSeverity\"\n [notificationSeverityInvert]=\"data?.notificationSeverityInvert\">\n </tb-notification-type-label>\n </div>\n </div>\n <mat-dialog-content>\n <tb-message-bar *ngIf=\"data.showMessageBar\" [dialog]=\"true\"></tb-message-bar>\n <div class=\"modal-text\" *ngFor=\"let confirmMessage of data.confirmMessages\">\n <span [innerHTML]=\"confirmMessage | curlyToBold\"></span>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <div class=\"buttons-wrapper\">\n <div class=\"buttons-wrapper-left\">\n <!-- No Left Action -->\n </div>\n <div class=\"buttons-wrapper-right\">\n <button *ngIf=\"!data.hideCancel\" class='tb-button tb-tertiary-button basic-button' tabindex=\"-1\"\n (click)=\"close(false)\" [attr.data-qa]=\"DataQaAttribute.cloud_confirm_diaglog+'_'+DataQaAttribute.cancel_btn\"\n matRipple>\n <span class=\"button-text\">{{ data.cancelText | translate }}</span>\n </button>\n <button *ngIf=\"!data.hideOk\" class='tb-button tb-primary-button basic-button' (click)=\"close(true)\"\n [attr.data-qa]=\"DataQaAttribute.cloud_confirm_diaglog+'_'+DataQaAttribute.confirm_btn\" matRipple>\n <span class=\"button-text\">{{ data.okText | translate }}</span>\n </button>\n </div>\n </div>\n\n </mat-dialog-actions>\n</div>\n", styles: [".modal-text span{white-space:pre-line}\n"] }]
135368
135046
  }], ctorParameters: () => [{ type: i1$4.TranslateService }, { type: undefined, decorators: [{
135369
135047
  type: Inject,
135370
135048
  args: [MAT_DIALOG_DATA]
@@ -135379,8 +135057,7 @@ class CanDeactivateService {
135379
135057
  canDeactivate() {
135380
135058
  const isDialogClosed = this.isDialogClosed();
135381
135059
  if (this.hasUnsavedChanges() && isDialogClosed) {
135382
- // X and Esc close the dialog without a result: stay, like Cancel.
135383
- return this.displayDialog().pipe(map(value => value === true), tap$1(value => {
135060
+ return this.displayDialog().pipe(tap$1(value => {
135384
135061
  if (value) {
135385
135062
  this.hasUnsavedChanges.set(false);
135386
135063
  }
@@ -139453,11 +139130,11 @@ class GuestOpenTicketDialogComponent {
139453
139130
  this.dialogRef.close(null);
139454
139131
  }
139455
139132
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GuestOpenTicketDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i2$1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
139456
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: GuestOpenTicketDialogComponent, isStandalone: true, selector: "tb-guest-open-ticket-dialog", ngImport: i0, template: "<div class=\"tb-open-ticket-dialog\">\n <!-- Named by id rather than by mat-dialog-title: the directive brings Material's own title\n typography and spacing with it, which would fight the coloured header band. The dialog's\n accessible name comes from ariaLabelledBy on the modal config. -->\n <header id=\"tb-guest-open-ticket-title\" class=\"tb-open-ticket-dialog__header\">\n {{ L.guest_open_ticket_detected_title | translate }}\n </header>\n\n <div class=\"tb-open-ticket-dialog__body\">\n <section class=\"tb-open-ticket-dialog__summary\">\n <!-- One key, not four concatenated fragments: he.json is a live RTL locale and a translator\n cannot reorder pieces the template glues together in source order. The emphasis on the\n plate and dates is given up deliberately - a sentence that can be translated is worth\n more than the bold. -->\n <p class=\"tb-open-ticket-dialog__summary-text\">\n {{\n (data.entryBeforeCheckIn ? L.guest_open_ticket_summary : L.guest_open_ticket_summary_after)\n | translate\n : {\n carPlate: data.carPlate,\n ticketNumber: data.ticketNumber,\n entryTime: data.entryDate | date: data.dateFormat,\n checkInTime: data.checkInDate | date: data.dateFormat,\n passEndTime: data.passEndDate | date: data.dateFormat\n }\n }}\n </p>\n <!-- Only meaningful before check-in: an entry after the pass period has no gap to absorb. -->\n <p *ngIf=\"data.entryBeforeCheckIn\" class=\"tb-open-ticket-dialog__duration\">\n {{ L.guest_open_ticket_duration_before_check_in | translate }}\n <strong>{{ data.durationBeforeCheckIn }}</strong>\n </p>\n </section>\n\n <!-- With only one option left there is no choice to make, so asking \"how would you like to\n proceed?\" above a single radio reads as a rendering fault. State the outcome instead. -->\n <h3 id=\"tb-guest-open-ticket-question\" class=\"tb-open-ticket-dialog__question\">\n {{\n (data.coverAllowed ? L.guest_open_ticket_how_to_proceed : L.guest_open_ticket_only_exit_option)\n | translate\n }}\n </h3>\n\n <mat-radio-group\n class=\"tb-open-ticket-dialog__options\"\n aria-labelledby=\"tb-guest-open-ticket-question\"\n [(ngModel)]=\"choice\"\n name=\"openTicketChoice\">\n <!-- A div, not a label: mat-radio-button renders its own <label for>, and nesting that\n inside another label is invalid HTML and makes the click target ambiguous. The click\n handler keeps the whole card selectable. -->\n <div\n *ngIf=\"data.coverAllowed\"\n class=\"tb-open-ticket-dialog__option\"\n [class.tb-open-ticket-dialog__option--selected]=\"choice === Choice.CoverParkingPeriod\"\n (click)=\"choice = Choice.CoverParkingPeriod\">\n <mat-radio-button [value]=\"Choice.CoverParkingPeriod\">\n <span class=\"tb-open-ticket-dialog__option-title\">\n {{ L.guest_open_ticket_option_cover_title | translate }}\n </span>\n </mat-radio-button>\n <p class=\"tb-open-ticket-dialog__option-detail\">\n {{\n L.guest_open_ticket_option_cover_detail\n | translate\n : {\n entryTime: data.entryDate | date: data.dateFormat,\n duration: data.durationShort\n }\n }}\n </p>\n <p class=\"tb-open-ticket-dialog__outcome tb-open-ticket-dialog__outcome--closed\">\n {{ L.guest_open_ticket_outcome_closed | translate }}\n </p>\n </div>\n\n <div\n class=\"tb-open-ticket-dialog__option\"\n [class.tb-open-ticket-dialog__option--selected]=\"choice === Choice.ExitAndReenter\"\n (click)=\"choice = Choice.ExitAndReenter\">\n <mat-radio-button [value]=\"Choice.ExitAndReenter\">\n <span class=\"tb-open-ticket-dialog__option-title\">\n {{ L.guest_open_ticket_option_exit_title | translate }}\n </span>\n </mat-radio-button>\n <p class=\"tb-open-ticket-dialog__option-detail\">\n {{\n L.guest_open_ticket_option_exit_detail\n | translate: { checkInTime: data.checkInDate | date: data.dateFormat }\n }}\n </p>\n <p class=\"tb-open-ticket-dialog__outcome tb-open-ticket-dialog__outcome--open\">\n {{ L.guest_open_ticket_outcome_open | translate }}\n </p>\n </div>\n </mat-radio-group>\n </div>\n\n <mat-dialog-actions class=\"tb-open-ticket-dialog__footer\">\n <div class=\"buttons-wrapper\">\n <div class=\"buttons-wrapper-right\">\n <button (click)=\"cancel()\" class=\"tb-button tb-tertiary-button basic-button\"\n [attr.data-qa]=\"DataQaAttribute.guest_open_ticket_dialog + '_' + DataQaAttribute.cancel_btn\" matRipple>\n <span class=\"button-text\">{{ L.cancel | translate }}</span>\n </button>\n <button (click)=\"createGuest()\" class=\"tb-button tb-primary-button basic-button\"\n [attr.data-qa]=\"DataQaAttribute.guest_open_ticket_dialog + '_' + DataQaAttribute.confirm_btn\" matRipple>\n <span class=\"button-text\">{{ L.guest_open_ticket_create_guest | translate }}</span>\n </button>\n </div>\n </div>\n </mat-dialog-actions>\n</div>\n", styles: [".tb-open-ticket-dialog{display:flex;flex-direction:column;height:100%}.tb-open-ticket-dialog__header{background:#ffd362;padding:8px 16px;font-size:14px;font-weight:600;color:#2c3e50}.tb-open-ticket-dialog__body{flex:1;overflow-y:auto;padding:10px 16px}.tb-open-ticket-dialog__summary{background:#f9f9f9;border-radius:4px;padding:10px 12px;margin-bottom:10px}.tb-open-ticket-dialog__summary-text{margin:0;font-size:12px;line-height:1.45;color:#2c3e50}.tb-open-ticket-dialog__ticket{color:#0670c7;font-weight:600}.tb-open-ticket-dialog__duration{margin:6px 0 0;font-size:12px;color:#5f6b78}.tb-open-ticket-dialog__question{margin:0 0 8px;font-size:12px;font-weight:600;color:#2c3e50}.tb-open-ticket-dialog__options{display:flex;flex-direction:column;gap:6px}.tb-open-ticket-dialog__option{display:block;border:1px solid #dee2e6;border-radius:6px;padding:10px 12px;cursor:pointer}.tb-open-ticket-dialog__option--selected{border-color:#0670c7;background:#f2f7fb}.tb-open-ticket-dialog__option-title{font-size:12px;font-weight:600;color:#2c3e50}.tb-open-ticket-dialog__option-detail{margin:3px 0 0 30px;font-size:11px;line-height:1.4;color:#5f6b78}.tb-open-ticket-dialog__outcome{margin:5px 0 0 30px;font-size:11px;font-weight:500}.tb-open-ticket-dialog__outcome--closed{color:#26d637}.tb-open-ticket-dialog__outcome--open{color:#8a6d1a}.tb-open-ticket-dialog__footer{padding:10px 16px;border-top:1px solid #dee2e6}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i2$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i5.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i5.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i4$1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }] }); }
139133
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: GuestOpenTicketDialogComponent, isStandalone: true, selector: "tb-guest-open-ticket-dialog", ngImport: i0, template: "<div class=\"tb-open-ticket-dialog\">\n <!-- Named by id rather than by mat-dialog-title: the directive brings Material's own title\n typography and spacing with it, which would fight the coloured header band. The dialog's\n accessible name comes from ariaLabelledBy on the modal config. -->\n <header id=\"tb-guest-open-ticket-title\" class=\"tb-open-ticket-dialog__header\">\n {{ L.guest_open_ticket_detected_title | translate }}\n </header>\n\n <div class=\"tb-open-ticket-dialog__body\">\n <section class=\"tb-open-ticket-dialog__summary\">\n <!-- One key, not four concatenated fragments: he.json is a live RTL locale and a translator\n cannot reorder pieces the template glues together in source order. The emphasis on the\n plate and dates is given up deliberately - a sentence that can be translated is worth\n more than the bold. -->\n <p class=\"tb-open-ticket-dialog__summary-text\">\n {{\n (data.entryBeforeCheckIn ? L.guest_open_ticket_summary : L.guest_open_ticket_summary_after)\n | translate\n : {\n carPlate: data.carPlate,\n ticketNumber: data.ticketNumber,\n entryTime: data.entryDate | date: data.dateFormat,\n checkInTime: data.checkInDate | date: data.dateFormat,\n passEndTime: data.passEndDate | date: data.dateFormat\n }\n }}\n </p>\n <!-- Only meaningful before check-in: an entry after the pass period has no gap to absorb. -->\n <p *ngIf=\"data.entryBeforeCheckIn\" class=\"tb-open-ticket-dialog__duration\">\n {{ L.guest_open_ticket_duration_before_check_in | translate }}\n <strong>{{ data.durationBeforeCheckIn }}</strong>\n </p>\n </section>\n\n <!-- With only one option left there is no choice to make, so asking \"how would you like to\n proceed?\" above a single radio reads as a rendering fault. State the outcome instead. -->\n <h3 id=\"tb-guest-open-ticket-question\" class=\"tb-open-ticket-dialog__question\">\n {{\n (data.coverAllowed ? L.guest_open_ticket_how_to_proceed : L.guest_open_ticket_only_exit_option)\n | translate\n }}\n </h3>\n\n <mat-radio-group\n class=\"tb-open-ticket-dialog__options\"\n aria-labelledby=\"tb-guest-open-ticket-question\"\n [(ngModel)]=\"choice\"\n name=\"openTicketChoice\">\n <!-- A div, not a label: mat-radio-button renders its own <label for>, and nesting that\n inside another label is invalid HTML and makes the click target ambiguous. The click\n handler keeps the whole card selectable. -->\n <div\n *ngIf=\"data.coverAllowed\"\n class=\"tb-open-ticket-dialog__option\"\n [class.tb-open-ticket-dialog__option--selected]=\"choice === Choice.CoverParkingPeriod\"\n (click)=\"choice = Choice.CoverParkingPeriod\">\n <mat-radio-button [value]=\"Choice.CoverParkingPeriod\">\n <span class=\"tb-open-ticket-dialog__option-title\">\n {{ L.guest_open_ticket_option_cover_title | translate }}\n </span>\n </mat-radio-button>\n <p class=\"tb-open-ticket-dialog__option-detail\">\n {{\n L.guest_open_ticket_option_cover_detail\n | translate\n : {\n entryTime: data.entryDate | date: data.dateFormat,\n duration: data.durationShort\n }\n }}\n </p>\n <p class=\"tb-open-ticket-dialog__outcome tb-open-ticket-dialog__outcome--closed\">\n {{ L.guest_open_ticket_outcome_closed | translate }}\n </p>\n </div>\n\n <div\n class=\"tb-open-ticket-dialog__option\"\n [class.tb-open-ticket-dialog__option--selected]=\"choice === Choice.ExitAndReenter\"\n (click)=\"choice = Choice.ExitAndReenter\">\n <mat-radio-button [value]=\"Choice.ExitAndReenter\">\n <span class=\"tb-open-ticket-dialog__option-title\">\n {{ L.guest_open_ticket_option_exit_title | translate }}\n </span>\n </mat-radio-button>\n <p class=\"tb-open-ticket-dialog__option-detail\">\n {{\n L.guest_open_ticket_option_exit_detail\n | translate: { checkInTime: data.checkInDate | date: data.dateFormat }\n }}\n </p>\n <p class=\"tb-open-ticket-dialog__outcome tb-open-ticket-dialog__outcome--open\">\n {{ L.guest_open_ticket_outcome_open | translate }}\n </p>\n </div>\n </mat-radio-group>\n </div>\n\n <mat-dialog-actions class=\"tb-open-ticket-dialog__footer\">\n <div class=\"buttons-wrapper\">\n <div class=\"buttons-wrapper-right\">\n <button (click)=\"cancel()\" class=\"tb-button tb-tertiary-button basic-button\"\n [attr.data-qa]=\"DataQaAttribute.guest_open_ticket_dialog + '_' + DataQaAttribute.cancel_btn\" matRipple>\n <span class=\"button-text\">{{ L.cancel | translate }}</span>\n </button>\n <button (click)=\"createGuest()\" class=\"tb-button tb-primary-button basic-button\"\n [attr.data-qa]=\"DataQaAttribute.guest_open_ticket_dialog + '_' + DataQaAttribute.confirm_btn\" matRipple>\n <span class=\"button-text\">{{ L.guest_open_ticket_create_guest | translate }}</span>\n </button>\n </div>\n </div>\n </mat-dialog-actions>\n</div>\n", styles: [".tb-open-ticket-dialog{display:flex;flex-direction:column;height:100%}.tb-open-ticket-dialog__header{background:#ffd362;padding:8px 16px;font-size:14px;font-weight:600;color:#2c3e50}.tb-open-ticket-dialog__body{flex:1;overflow-y:auto;padding:10px 16px}.tb-open-ticket-dialog__summary{background:#f9f9f9;border-radius:4px;padding:10px 12px;margin-bottom:10px}.tb-open-ticket-dialog__summary-text{margin:0;font-size:12px;line-height:1.45;color:#2c3e50}.tb-open-ticket-dialog__ticket{color:#0985eb;font-weight:600}.tb-open-ticket-dialog__duration{margin:6px 0 0;font-size:12px;color:#919eab}.tb-open-ticket-dialog__question{margin:0 0 8px;font-size:12px;font-weight:600;color:#2c3e50}.tb-open-ticket-dialog__options{display:flex;flex-direction:column;gap:6px}.tb-open-ticket-dialog__option{display:block;border:1px solid #dee2e6;border-radius:6px;padding:10px 12px;cursor:pointer}.tb-open-ticket-dialog__option--selected{border-color:#0985eb;background:#f2f7fb}.tb-open-ticket-dialog__option-title{font-size:12px;font-weight:600;color:#2c3e50}.tb-open-ticket-dialog__option-detail{margin:3px 0 0 30px;font-size:11px;line-height:1.4;color:#919eab}.tb-open-ticket-dialog__outcome{margin:5px 0 0 30px;font-size:11px;font-weight:500}.tb-open-ticket-dialog__outcome--closed{color:#26d637}.tb-open-ticket-dialog__outcome--open{color:#8a6d1a}.tb-open-ticket-dialog__footer{padding:10px 16px;border-top:1px solid #dee2e6}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i2$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i5.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i5.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i4$1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }] }); }
139457
139134
  }
139458
139135
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GuestOpenTicketDialogComponent, decorators: [{
139459
139136
  type: Component,
139460
- args: [{ selector: 'tb-guest-open-ticket-dialog', standalone: true, imports: [CommonModule, FormsModule, LocalizationModule, MatDialogModule, MatRadioModule, MatRippleModule], template: "<div class=\"tb-open-ticket-dialog\">\n <!-- Named by id rather than by mat-dialog-title: the directive brings Material's own title\n typography and spacing with it, which would fight the coloured header band. The dialog's\n accessible name comes from ariaLabelledBy on the modal config. -->\n <header id=\"tb-guest-open-ticket-title\" class=\"tb-open-ticket-dialog__header\">\n {{ L.guest_open_ticket_detected_title | translate }}\n </header>\n\n <div class=\"tb-open-ticket-dialog__body\">\n <section class=\"tb-open-ticket-dialog__summary\">\n <!-- One key, not four concatenated fragments: he.json is a live RTL locale and a translator\n cannot reorder pieces the template glues together in source order. The emphasis on the\n plate and dates is given up deliberately - a sentence that can be translated is worth\n more than the bold. -->\n <p class=\"tb-open-ticket-dialog__summary-text\">\n {{\n (data.entryBeforeCheckIn ? L.guest_open_ticket_summary : L.guest_open_ticket_summary_after)\n | translate\n : {\n carPlate: data.carPlate,\n ticketNumber: data.ticketNumber,\n entryTime: data.entryDate | date: data.dateFormat,\n checkInTime: data.checkInDate | date: data.dateFormat,\n passEndTime: data.passEndDate | date: data.dateFormat\n }\n }}\n </p>\n <!-- Only meaningful before check-in: an entry after the pass period has no gap to absorb. -->\n <p *ngIf=\"data.entryBeforeCheckIn\" class=\"tb-open-ticket-dialog__duration\">\n {{ L.guest_open_ticket_duration_before_check_in | translate }}\n <strong>{{ data.durationBeforeCheckIn }}</strong>\n </p>\n </section>\n\n <!-- With only one option left there is no choice to make, so asking \"how would you like to\n proceed?\" above a single radio reads as a rendering fault. State the outcome instead. -->\n <h3 id=\"tb-guest-open-ticket-question\" class=\"tb-open-ticket-dialog__question\">\n {{\n (data.coverAllowed ? L.guest_open_ticket_how_to_proceed : L.guest_open_ticket_only_exit_option)\n | translate\n }}\n </h3>\n\n <mat-radio-group\n class=\"tb-open-ticket-dialog__options\"\n aria-labelledby=\"tb-guest-open-ticket-question\"\n [(ngModel)]=\"choice\"\n name=\"openTicketChoice\">\n <!-- A div, not a label: mat-radio-button renders its own <label for>, and nesting that\n inside another label is invalid HTML and makes the click target ambiguous. The click\n handler keeps the whole card selectable. -->\n <div\n *ngIf=\"data.coverAllowed\"\n class=\"tb-open-ticket-dialog__option\"\n [class.tb-open-ticket-dialog__option--selected]=\"choice === Choice.CoverParkingPeriod\"\n (click)=\"choice = Choice.CoverParkingPeriod\">\n <mat-radio-button [value]=\"Choice.CoverParkingPeriod\">\n <span class=\"tb-open-ticket-dialog__option-title\">\n {{ L.guest_open_ticket_option_cover_title | translate }}\n </span>\n </mat-radio-button>\n <p class=\"tb-open-ticket-dialog__option-detail\">\n {{\n L.guest_open_ticket_option_cover_detail\n | translate\n : {\n entryTime: data.entryDate | date: data.dateFormat,\n duration: data.durationShort\n }\n }}\n </p>\n <p class=\"tb-open-ticket-dialog__outcome tb-open-ticket-dialog__outcome--closed\">\n {{ L.guest_open_ticket_outcome_closed | translate }}\n </p>\n </div>\n\n <div\n class=\"tb-open-ticket-dialog__option\"\n [class.tb-open-ticket-dialog__option--selected]=\"choice === Choice.ExitAndReenter\"\n (click)=\"choice = Choice.ExitAndReenter\">\n <mat-radio-button [value]=\"Choice.ExitAndReenter\">\n <span class=\"tb-open-ticket-dialog__option-title\">\n {{ L.guest_open_ticket_option_exit_title | translate }}\n </span>\n </mat-radio-button>\n <p class=\"tb-open-ticket-dialog__option-detail\">\n {{\n L.guest_open_ticket_option_exit_detail\n | translate: { checkInTime: data.checkInDate | date: data.dateFormat }\n }}\n </p>\n <p class=\"tb-open-ticket-dialog__outcome tb-open-ticket-dialog__outcome--open\">\n {{ L.guest_open_ticket_outcome_open | translate }}\n </p>\n </div>\n </mat-radio-group>\n </div>\n\n <mat-dialog-actions class=\"tb-open-ticket-dialog__footer\">\n <div class=\"buttons-wrapper\">\n <div class=\"buttons-wrapper-right\">\n <button (click)=\"cancel()\" class=\"tb-button tb-tertiary-button basic-button\"\n [attr.data-qa]=\"DataQaAttribute.guest_open_ticket_dialog + '_' + DataQaAttribute.cancel_btn\" matRipple>\n <span class=\"button-text\">{{ L.cancel | translate }}</span>\n </button>\n <button (click)=\"createGuest()\" class=\"tb-button tb-primary-button basic-button\"\n [attr.data-qa]=\"DataQaAttribute.guest_open_ticket_dialog + '_' + DataQaAttribute.confirm_btn\" matRipple>\n <span class=\"button-text\">{{ L.guest_open_ticket_create_guest | translate }}</span>\n </button>\n </div>\n </div>\n </mat-dialog-actions>\n</div>\n", styles: [".tb-open-ticket-dialog{display:flex;flex-direction:column;height:100%}.tb-open-ticket-dialog__header{background:#ffd362;padding:8px 16px;font-size:14px;font-weight:600;color:#2c3e50}.tb-open-ticket-dialog__body{flex:1;overflow-y:auto;padding:10px 16px}.tb-open-ticket-dialog__summary{background:#f9f9f9;border-radius:4px;padding:10px 12px;margin-bottom:10px}.tb-open-ticket-dialog__summary-text{margin:0;font-size:12px;line-height:1.45;color:#2c3e50}.tb-open-ticket-dialog__ticket{color:#0670c7;font-weight:600}.tb-open-ticket-dialog__duration{margin:6px 0 0;font-size:12px;color:#5f6b78}.tb-open-ticket-dialog__question{margin:0 0 8px;font-size:12px;font-weight:600;color:#2c3e50}.tb-open-ticket-dialog__options{display:flex;flex-direction:column;gap:6px}.tb-open-ticket-dialog__option{display:block;border:1px solid #dee2e6;border-radius:6px;padding:10px 12px;cursor:pointer}.tb-open-ticket-dialog__option--selected{border-color:#0670c7;background:#f2f7fb}.tb-open-ticket-dialog__option-title{font-size:12px;font-weight:600;color:#2c3e50}.tb-open-ticket-dialog__option-detail{margin:3px 0 0 30px;font-size:11px;line-height:1.4;color:#5f6b78}.tb-open-ticket-dialog__outcome{margin:5px 0 0 30px;font-size:11px;font-weight:500}.tb-open-ticket-dialog__outcome--closed{color:#26d637}.tb-open-ticket-dialog__outcome--open{color:#8a6d1a}.tb-open-ticket-dialog__footer{padding:10px 16px;border-top:1px solid #dee2e6}\n"] }]
139137
+ args: [{ selector: 'tb-guest-open-ticket-dialog', standalone: true, imports: [CommonModule, FormsModule, LocalizationModule, MatDialogModule, MatRadioModule, MatRippleModule], template: "<div class=\"tb-open-ticket-dialog\">\n <!-- Named by id rather than by mat-dialog-title: the directive brings Material's own title\n typography and spacing with it, which would fight the coloured header band. The dialog's\n accessible name comes from ariaLabelledBy on the modal config. -->\n <header id=\"tb-guest-open-ticket-title\" class=\"tb-open-ticket-dialog__header\">\n {{ L.guest_open_ticket_detected_title | translate }}\n </header>\n\n <div class=\"tb-open-ticket-dialog__body\">\n <section class=\"tb-open-ticket-dialog__summary\">\n <!-- One key, not four concatenated fragments: he.json is a live RTL locale and a translator\n cannot reorder pieces the template glues together in source order. The emphasis on the\n plate and dates is given up deliberately - a sentence that can be translated is worth\n more than the bold. -->\n <p class=\"tb-open-ticket-dialog__summary-text\">\n {{\n (data.entryBeforeCheckIn ? L.guest_open_ticket_summary : L.guest_open_ticket_summary_after)\n | translate\n : {\n carPlate: data.carPlate,\n ticketNumber: data.ticketNumber,\n entryTime: data.entryDate | date: data.dateFormat,\n checkInTime: data.checkInDate | date: data.dateFormat,\n passEndTime: data.passEndDate | date: data.dateFormat\n }\n }}\n </p>\n <!-- Only meaningful before check-in: an entry after the pass period has no gap to absorb. -->\n <p *ngIf=\"data.entryBeforeCheckIn\" class=\"tb-open-ticket-dialog__duration\">\n {{ L.guest_open_ticket_duration_before_check_in | translate }}\n <strong>{{ data.durationBeforeCheckIn }}</strong>\n </p>\n </section>\n\n <!-- With only one option left there is no choice to make, so asking \"how would you like to\n proceed?\" above a single radio reads as a rendering fault. State the outcome instead. -->\n <h3 id=\"tb-guest-open-ticket-question\" class=\"tb-open-ticket-dialog__question\">\n {{\n (data.coverAllowed ? L.guest_open_ticket_how_to_proceed : L.guest_open_ticket_only_exit_option)\n | translate\n }}\n </h3>\n\n <mat-radio-group\n class=\"tb-open-ticket-dialog__options\"\n aria-labelledby=\"tb-guest-open-ticket-question\"\n [(ngModel)]=\"choice\"\n name=\"openTicketChoice\">\n <!-- A div, not a label: mat-radio-button renders its own <label for>, and nesting that\n inside another label is invalid HTML and makes the click target ambiguous. The click\n handler keeps the whole card selectable. -->\n <div\n *ngIf=\"data.coverAllowed\"\n class=\"tb-open-ticket-dialog__option\"\n [class.tb-open-ticket-dialog__option--selected]=\"choice === Choice.CoverParkingPeriod\"\n (click)=\"choice = Choice.CoverParkingPeriod\">\n <mat-radio-button [value]=\"Choice.CoverParkingPeriod\">\n <span class=\"tb-open-ticket-dialog__option-title\">\n {{ L.guest_open_ticket_option_cover_title | translate }}\n </span>\n </mat-radio-button>\n <p class=\"tb-open-ticket-dialog__option-detail\">\n {{\n L.guest_open_ticket_option_cover_detail\n | translate\n : {\n entryTime: data.entryDate | date: data.dateFormat,\n duration: data.durationShort\n }\n }}\n </p>\n <p class=\"tb-open-ticket-dialog__outcome tb-open-ticket-dialog__outcome--closed\">\n {{ L.guest_open_ticket_outcome_closed | translate }}\n </p>\n </div>\n\n <div\n class=\"tb-open-ticket-dialog__option\"\n [class.tb-open-ticket-dialog__option--selected]=\"choice === Choice.ExitAndReenter\"\n (click)=\"choice = Choice.ExitAndReenter\">\n <mat-radio-button [value]=\"Choice.ExitAndReenter\">\n <span class=\"tb-open-ticket-dialog__option-title\">\n {{ L.guest_open_ticket_option_exit_title | translate }}\n </span>\n </mat-radio-button>\n <p class=\"tb-open-ticket-dialog__option-detail\">\n {{\n L.guest_open_ticket_option_exit_detail\n | translate: { checkInTime: data.checkInDate | date: data.dateFormat }\n }}\n </p>\n <p class=\"tb-open-ticket-dialog__outcome tb-open-ticket-dialog__outcome--open\">\n {{ L.guest_open_ticket_outcome_open | translate }}\n </p>\n </div>\n </mat-radio-group>\n </div>\n\n <mat-dialog-actions class=\"tb-open-ticket-dialog__footer\">\n <div class=\"buttons-wrapper\">\n <div class=\"buttons-wrapper-right\">\n <button (click)=\"cancel()\" class=\"tb-button tb-tertiary-button basic-button\"\n [attr.data-qa]=\"DataQaAttribute.guest_open_ticket_dialog + '_' + DataQaAttribute.cancel_btn\" matRipple>\n <span class=\"button-text\">{{ L.cancel | translate }}</span>\n </button>\n <button (click)=\"createGuest()\" class=\"tb-button tb-primary-button basic-button\"\n [attr.data-qa]=\"DataQaAttribute.guest_open_ticket_dialog + '_' + DataQaAttribute.confirm_btn\" matRipple>\n <span class=\"button-text\">{{ L.guest_open_ticket_create_guest | translate }}</span>\n </button>\n </div>\n </div>\n </mat-dialog-actions>\n</div>\n", styles: [".tb-open-ticket-dialog{display:flex;flex-direction:column;height:100%}.tb-open-ticket-dialog__header{background:#ffd362;padding:8px 16px;font-size:14px;font-weight:600;color:#2c3e50}.tb-open-ticket-dialog__body{flex:1;overflow-y:auto;padding:10px 16px}.tb-open-ticket-dialog__summary{background:#f9f9f9;border-radius:4px;padding:10px 12px;margin-bottom:10px}.tb-open-ticket-dialog__summary-text{margin:0;font-size:12px;line-height:1.45;color:#2c3e50}.tb-open-ticket-dialog__ticket{color:#0985eb;font-weight:600}.tb-open-ticket-dialog__duration{margin:6px 0 0;font-size:12px;color:#919eab}.tb-open-ticket-dialog__question{margin:0 0 8px;font-size:12px;font-weight:600;color:#2c3e50}.tb-open-ticket-dialog__options{display:flex;flex-direction:column;gap:6px}.tb-open-ticket-dialog__option{display:block;border:1px solid #dee2e6;border-radius:6px;padding:10px 12px;cursor:pointer}.tb-open-ticket-dialog__option--selected{border-color:#0985eb;background:#f2f7fb}.tb-open-ticket-dialog__option-title{font-size:12px;font-weight:600;color:#2c3e50}.tb-open-ticket-dialog__option-detail{margin:3px 0 0 30px;font-size:11px;line-height:1.4;color:#919eab}.tb-open-ticket-dialog__outcome{margin:5px 0 0 30px;font-size:11px;font-weight:500}.tb-open-ticket-dialog__outcome--closed{color:#26d637}.tb-open-ticket-dialog__outcome--open{color:#8a6d1a}.tb-open-ticket-dialog__footer{padding:10px 16px;border-top:1px solid #dee2e6}\n"] }]
139461
139138
  }], ctorParameters: () => [{ type: undefined, decorators: [{
139462
139139
  type: Inject,
139463
139140
  args: [MAT_DIALOG_DATA]
@@ -142417,13 +142094,13 @@ class TechToolsModuleResolver {
142417
142094
  // dropdown on the page. getSmartparkBasicAll still runs to populate the facility
142418
142095
  // dictionary the dropdown + device grid read from.
142419
142096
  this.store.dispatch(new MenuLoadAction(this.menuService.getTechToolsMenu(), AppModule$2.TechTools));
142420
- // Return the facility-load request so the router waits for it before activating the route — the
142421
- // facility dictionary (park dropdown + device grid) must be populated first, otherwise the first
142422
- // facility/device load hits empty state. Real-time / alert subscriptions run as a side effect.
142423
- return this.smartparkService.getSmartparkBasicAll(AppModule$2.TechTools).pipe(first(), tap(smartparkBasic => {
142097
+ // Not returned to the router: a failed load would cancel the navigation. The page waits for the facilities itself.
142098
+ this.smartparkService.getSmartparkBasicAll(AppModule$2.TechTools).pipe(first())
142099
+ .subscribe(smartparkBasic => {
142424
142100
  this.subscribeToRealTimeEvents(smartparkBasic.data);
142425
142101
  this.subscribeToHandleAlertNotificationEvents(smartparkBasic.data);
142426
- }));
142102
+ });
142103
+ return null;
142427
142104
  }
142428
142105
  subscribeToRealTimeEvents(smartparkBasic) {
142429
142106
  const parksSubscription = this.realtimeEventService.getCrossParkSubscriptions(smartparkBasic);
@@ -142534,16 +142211,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
142534
142211
  // Resolvers
142535
142212
 
142536
142213
  class ErrorPageComponent extends BaseComponent {
142537
- constructor(store, sessionStorageService, httpCancelService, appConfig, activatedRoute, elementRef) {
142214
+ constructor(store, sessionStorageService, httpCancelService, appConfig, activatedRoute) {
142538
142215
  super();
142539
142216
  this.store = store;
142540
142217
  this.sessionStorageService = sessionStorageService;
142541
142218
  this.httpCancelService = httpCancelService;
142542
142219
  this.appConfig = appConfig;
142543
142220
  this.activatedRoute = activatedRoute;
142544
- this.elementRef = elementRef;
142545
142221
  this.drawerCollapsed = true;
142546
- this.animationPaused = false;
142547
142222
  this.appSectionLabel = AppSectionLabel;
142548
142223
  this.iconsHelper = IconsHelper;
142549
142224
  }
@@ -142553,10 +142228,6 @@ class ErrorPageComponent extends BaseComponent {
142553
142228
  this.httpCancelService.cancelPendingRequests();
142554
142229
  this.isCloud = this.appConfig.getConfig().appType === AppType.Cloud;
142555
142230
  }
142556
- /** Moving content beside text needs a way to stop it (WCAG 2.2.2). */
142557
- toggleAnimation() {
142558
- this.animationPaused = this.elementRef.nativeElement.classList.toggle('tb-still');
142559
- }
142560
142231
  extractedErrorClass(activatedRoute) {
142561
142232
  this.statusCodeError = activatedRoute.routeConfig.path === '**' ? '404' : activatedRoute.routeConfig.path;
142562
142233
  this.statusCodeErrorMessage = this.statusCodeError === '404' ? this.L.error_page_message_404 : this.L.error_page_message_403;
@@ -142610,37 +142281,18 @@ class ErrorPageComponent extends BaseComponent {
142610
142281
  }
142611
142282
  this.store.dispatch(new Navigate(route));
142612
142283
  }
142613
- /** Opening the narrow-screen menu moves focus to its first module. */
142614
- toggleDrawer() {
142615
- this.drawerCollapsed = !this.drawerCollapsed;
142616
- if (!this.drawerCollapsed) {
142617
- setTimeout(() => this.elementRef.nativeElement.querySelector('.tb-module')?.focus());
142618
- }
142619
- }
142620
- closeDrawerFromKeyboard() {
142621
- if (!this.drawerCollapsed) {
142622
- this.drawerCollapsed = true;
142623
- this.menuButton?.nativeElement.focus();
142624
- }
142625
- }
142626
142284
  click() {
142627
142285
  if (!this.drawerCollapsed) {
142628
142286
  this.drawerCollapsed = true;
142629
142287
  }
142630
142288
  }
142631
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ErrorPageComponent, deps: [{ token: i1$2.Store }, { token: SessionStorageService }, { token: HttpCancelService }, { token: AppConfigService }, { token: i1$7.ActivatedRoute }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
142632
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ErrorPageComponent, selector: "tb-error-page", host: { listeners: { "document:keydown.escape": "closeDrawerFromKeyboard()", "document:click": "click($event)" } }, viewQueries: [{ propertyName: "menuButton", first: true, predicate: ["menuButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"tb-container\" [@routerTransition]>\n <header>\n <div class=\"tb-flex tb-align-items-center tb-full-height tb-space-between tb-flex-grow\">\n <div class=\"wrapper-logo tb-flex-center\">\n <div class=\"tb-logo\" (click)=\"navigateToDefaultRoute()\"></div>\n </div>\n <button type=\"button\" #menuButton class=\"tb-button tb-mr-28\" [attr.aria-expanded]=\"!drawerCollapsed\" aria-controls=\"tb-error-page-modules\"\n [attr.aria-label]=\"L.modules | translateLocal | async\" (click)=\"toggleDrawer(); $event.stopPropagation();\">\n <tb-icon [settings]=\"iconsHelper.three_bars_mobile\" class=\"tb-icon tb-icon-30\" aria-hidden=\"true\"></tb-icon>\n </button>\n </div>\n <nav id=\"tb-error-page-modules\" class=\"tb-modules\" [class.drawer-collapsed]=\"drawerCollapsed\" [attr.aria-label]=\"L.modules | translateLocal | async\">\n <button type=\"button\" class=\"tb-module\" *ngFor=\"let appSectionKey of appSectionModuleMenu\"\n (click)=\"navigateToModule(appSectionKey)\">\n <tb-icon [settings]=\"iconsHelper[appSectionLabel.get(appSectionKey) + '_blue']\" aria-hidden=\"true\"></tb-icon>\n <span class=\"tb-menu-header-text\"> {{appSectionLabel.get(appSectionKey) | translateLocal | async}}</span>\n </button>\n </nav>\n </header>\n\n <main>\n <div class=\"container\">\n <div class=\"left-section\">\n <div class=\"inner-content\">\n <h1 class=\"heading\">{{ statusCodeError }}</h1>\n <p class=\"subheading\">{{ statusCodeErrorMessage | translateLocal | async }}</p>\n <button type=\"button\" class=\"tb-animation-toggle\" (click)=\"toggleAnimation()\">\n {{ (animationPaused ? L.play_animation : L.pause_animation) | translateLocal | async }}\n </button>\n </div>\n </div>\n <div class=\"right-section\">\n <div>\n <img class=\"mountains-image\" src=\"assets/mountains-{{statusCodeError}}.svg\">\n <img *ngIf=\"statusCodeError=='404'\" class=\"blue-gate\" src=\"assets/blue-gate.svg\">\n </div>\n </div>\n </div>\n <div id=\"clouds\">\n <div class=\"cloud background light-blue-cloud\"></div>\n <div class=\"cloud foreground light-blue-cloud\"></div>\n <div class=\"cloud background grey-cloud\"></div>\n <div class=\"cloud background light-blue-cloud\"></div>\n </div>\n </main>\n</div>", styles: ["@keyframes gate-up-animation-default{0%{transform:none}20%{transform:none}50%{transform:rotate(-40deg) translate(14px,-47px)}70%{transform:rotate(-40deg) translate(14px,-47px)}to{transform:none}}@keyframes gate-up-animation-mobile{0%{transform:none}20%{transform:none}50%{transform:rotate(-40deg) translate(11px,-22px)}70%{transform:rotate(-40deg) translate(11px,-22px)}to{transform:none}}div.tb-container{position:absolute;inset:0;background-size:cover;background-color:#fff;overflow:hidden}div.tb-container header{display:flex;flex-direction:row;align-items:flex-end;height:100px;background:#263544 0% 0% no-repeat padding-box}div.tb-container header div:first-child{z-index:4;background:inherit}div.tb-container header .tb-button{display:none;padding:0;border:none;background:none;cursor:pointer}div.tb-container header .tb-button:focus-visible,div.tb-container header .tb-module:focus-visible{outline:1px solid #ffffff;outline-offset:-3px;border-radius:4px}div.tb-container header .wrapper-logo{width:166px;height:64px;padding:18px 56px}div.tb-container header .wrapper-logo .tb-logo{height:100%;width:100%;background:url(/assets/tiba-logo.svg) no-repeat;background-size:contain;cursor:pointer}div.tb-container header .tb-modules{display:flex;align-items:center;width:680px;min-width:340px;margin-left:80px;flex:100%}div.tb-container header .tb-modules .tb-module{flex:1;height:100px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;max-width:180px;min-width:120px;padding:0;border:none;background:none;font:inherit}div.tb-container header .tb-modules .tb-module span{text-align:center;font-size:13px;font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;color:#fff}div.tb-container header .tb-modules .tb-module:hover{background:#ffffff1a}div.tb-container header .tb-modules .tb-module ::ng-deep .tb-icon-insights-module-blue{background-image:url(/assets/icons/insights-blue-404.svg)}div.tb-container main{height:calc(100% - 100px)}div.tb-container main .left-section .inner-content{position:absolute;top:100px}div.tb-container main .container{position:relative;margin:0 auto;width:85%;height:100%;padding-bottom:25vh;display:flex;flex-direction:row;justify-content:space-around}div.tb-container main .left-section,div.tb-container main .right-section{position:relative}div.tb-container main .left-section{width:40%}div.tb-container main .heading{text-align:center;font-size:300px;line-height:1.3em;margin:2rem 0 .5rem;padding:0;font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;font-weight:900;color:#2c3e50}div.tb-container main .subheading{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;color:#2c3e50;text-align:center;max-width:606px;font-size:34px;line-height:1.15em;padding:0 1rem;margin:0 auto}div.tb-container main .right-section{width:50%;display:flex;justify-content:center}div.tb-container main .right-section div{height:100%;width:100%;position:relative}div.tb-container main .mountains-image{position:absolute;bottom:0;padding-top:10vh;padding-left:1vh;max-height:100%;min-width:500px;z-index:1}div.tb-container main .blue-gate{position:absolute;bottom:165px;left:493px;animation:gate-up-animation-default linear 10s infinite;animation-delay:2s}div.tb-container #clouds{height:100%;width:100%}div.tb-container #clouds .light-blue-cloud{width:187px;height:131px;background-image:url(/assets/light-blue-cloud.svg)}div.tb-container #clouds .grey-cloud{width:154px;height:108px;background-image:url(/assets/grey-cloud.svg)}div.tb-container #clouds .cloud{position:absolute;animation-fill-mode:both}div.tb-container #clouds .cloud.foreground{z-index:2}div.tb-container #clouds .cloud.background{z-index:-1}@keyframes cloud-animation{0%{left:-10%}to{left:100%}}@keyframes cloud1-animation{0%{left:-10%}to{left:100%}}div.tb-container #clouds .cloud:nth-child(1){left:-10%;top:147px;animation:cloud1-animation linear,cloud-animation linear infinite;animation-duration:24s,27s;animation-delay:0s,24s}@keyframes cloud2-animation{0%{left:50%}to{left:100%}}div.tb-container #clouds .cloud:nth-child(2){left:50%;top:283px;animation:cloud2-animation linear,cloud-animation linear infinite;animation-duration:18s,26s;animation-delay:0s,18s}@keyframes cloud3-animation{0%{left:53%}to{left:100%}}div.tb-container #clouds .cloud:nth-child(3){left:53%;top:278px;animation:cloud3-animation linear,cloud-animation linear infinite;animation-duration:12s,25s;animation-delay:0s,12s}@keyframes cloud4-animation{0%{left:85%}to{left:100%}}div.tb-container #clouds .cloud:nth-child(4){left:85%;top:488px;animation:cloud4-animation linear,cloud-animation linear infinite;animation-duration:6s,24s;animation-delay:0s,6s}@media (max-width: 1300px){div.tb-container header{height:80px}div.tb-container header .wrapper-logo{height:100%;width:121px;padding:0 0 0 20px}div.tb-container header .wrapper-logo .tb-logo{width:121px;max-width:121px;max-height:45px}div.tb-container header .tb-button{display:block}div.tb-container header .tb-modules{position:absolute;top:80px;background:#263544 0% 0% no-repeat padding-box;max-height:440px;overflow:auto;width:100%!important;margin:-1px 0 0!important;padding-bottom:20px;z-index:3;display:grid!important;grid-template-columns:repeat(4,180px);align-content:space-around;justify-content:center;transition:transform 1s}div.tb-container header .tb-modules.drawer-collapsed{transform:translateY(-100%);visibility:hidden;transition:transform 1s,visibility 0s 1s}div.tb-container main{height:calc(100% - 80px)}div.tb-container main .container{flex-direction:column;padding-bottom:0vh}div.tb-container main .left-section{width:100%;height:40%;position:absolute;top:0}div.tb-container main .left-section .inner-content{position:relative;padding:1rem 0}div.tb-container main .heading{font-size:143px;line-height:1.15;margin:0}div.tb-container main .subheading{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;color:#2c3e50;font-size:16px;line-height:1.15;max-width:100%}div.tb-container main .right-section{width:100%;height:60%;position:absolute;bottom:0}div.tb-container main .right-section>div{display:flex;justify-content:center}div.tb-container main .right-section>div img.mountains-image{width:375px}div.tb-container main .right-section>div img.blue-gate{width:75px;left:47px;top:105px;animation:gate-up-animation-mobile linear 10s infinite;position:relative}div.tb-container main .mountains-image{padding:0}div.tb-container #clouds .light-blue-cloud{width:88px;height:62px;background-size:contain}div.tb-container #clouds .grey-cloud{width:73px;height:51px;background-size:contain}div.tb-container #clouds .cloud:nth-child(1){top:120px}div.tb-container #clouds .cloud:nth-child(2){top:185px}div.tb-container #clouds .cloud:nth-child(3){top:182px}div.tb-container #clouds .cloud:nth-child(4){top:325px}}@media (max-width: 800px){div.tb-container header .tb-modules{grid-template-columns:repeat(3,180px)}}@media (max-width: 640px){div.tb-container header .tb-modules{grid-template-columns:repeat(2,180px)}}:host.tb-still *{animation-play-state:paused!important}@media (prefers-reduced-motion: reduce){:host *{animation:none!important}.tb-animation-toggle{display:none}}.tb-animation-toggle{margin-top:16px;padding:6px 12px;border:1px solid #0670c7;border-radius:4px;background:#fff;color:#0670c7;font:inherit;font-size:13px;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconComponent, selector: "tb-icon", inputs: ["setCursorPointer", "facilityCommandIcon", "remoteCommandIcon", "settings"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: TranslateLocalPipe, name: "translateLocal" }], animations: [appModuleAnimation()], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
142289
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ErrorPageComponent, deps: [{ token: i1$2.Store }, { token: SessionStorageService }, { token: HttpCancelService }, { token: AppConfigService }, { token: i1$7.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
142290
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ErrorPageComponent, selector: "tb-error-page", host: { listeners: { "document:click": "click($event)" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"tb-container\" [@routerTransition]>\n <header>\n <div class=\"tb-flex tb-align-items-center tb-full-height tb-space-between tb-flex-grow\">\n <div class=\"wrapper-logo tb-flex-center\">\n <div class=\"tb-logo\" (click)=\"navigateToDefaultRoute()\"></div>\n </div>\n <div class=\"tb-button tb-mr-28\" (click)=\"drawerCollapsed = !drawerCollapsed; $event.stopPropagation();\">\n <tb-icon [settings]=\"iconsHelper.three_bars_mobile\" class=\"tb-icon tb-icon-30\"></tb-icon>\n </div>\n </div>\n <div class=\"tb-modules\" [class.drawer-collapsed]=\"drawerCollapsed\">\n <div class=\"tb-module\" *ngFor=\"let appSectionKey of appSectionModuleMenu\"\n (click)=\"navigateToModule(appSectionKey)\">\n <tb-icon [settings]=\"iconsHelper[appSectionLabel.get(appSectionKey) + '_blue']\"></tb-icon>\n <span class=\"tb-menu-header-text\"> {{appSectionLabel.get(appSectionKey) | translateLocal | async}}</span>\n </div>\n </div>\n </header>\n\n <main>\n <div class=\"container\">\n <div class=\"left-section\">\n <div class=\"inner-content\">\n <h1 class=\"heading\">{{ statusCodeError }}</h1>\n <p class=\"subheading\">{{ statusCodeErrorMessage | translateLocal | async }}</p>\n </div>\n </div>\n <div class=\"right-section\">\n <div>\n <img class=\"mountains-image\" src=\"assets/mountains-{{statusCodeError}}.svg\">\n <img *ngIf=\"statusCodeError=='404'\" class=\"blue-gate\" src=\"assets/blue-gate.svg\">\n </div>\n </div>\n </div>\n <div id=\"clouds\">\n <div class=\"cloud background light-blue-cloud\"></div>\n <div class=\"cloud foreground light-blue-cloud\"></div>\n <div class=\"cloud background grey-cloud\"></div>\n <div class=\"cloud background light-blue-cloud\"></div>\n </div>\n </main>\n</div>", styles: ["@keyframes gate-up-animation-default{0%{transform:none}20%{transform:none}50%{transform:rotate(-40deg) translate(14px,-47px)}70%{transform:rotate(-40deg) translate(14px,-47px)}to{transform:none}}@keyframes gate-up-animation-mobile{0%{transform:none}20%{transform:none}50%{transform:rotate(-40deg) translate(11px,-22px)}70%{transform:rotate(-40deg) translate(11px,-22px)}to{transform:none}}div.tb-container{position:absolute;inset:0;background-size:cover;overflow:hidden}div.tb-container header{display:flex;flex-direction:row;align-items:flex-end;height:100px;background:#263544 0% 0% no-repeat padding-box}div.tb-container header div:first-child{z-index:4;background:inherit}div.tb-container header .tb-button{display:none}div.tb-container header .wrapper-logo{width:166px;height:64px;padding:18px 56px}div.tb-container header .wrapper-logo .tb-logo{height:100%;width:100%;background:url(/assets/tiba-logo.svg) no-repeat;background-size:contain;cursor:pointer}div.tb-container header .tb-modules{display:flex;align-items:center;width:680px;min-width:340px;margin-left:80px;flex:100%}div.tb-container header .tb-modules .tb-module{flex:1;height:110px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;max-width:180px;min-width:120px}div.tb-container header .tb-modules .tb-module span{text-align:center;font-size:13px;font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;color:#fff}div.tb-container header .tb-modules .tb-module:hover{background:#ffffff1a}div.tb-container header .tb-modules .tb-module ::ng-deep .tb-icon-insights-module-blue{background-image:url(/assets/icons/insights-blue-404.svg)}div.tb-container header .tb-modules .tb-module ::ng-deep .tb-icon-tech-tools-module-blue{background-image:url(/assets/icons/tech-tools-module-404.svg)}div.tb-container main{height:calc(100% - 100px)}div.tb-container main .left-section .inner-content{position:absolute;top:100px}div.tb-container main .container{position:relative;margin:0 auto;width:85%;height:100%;padding-bottom:25vh;display:flex;flex-direction:row;justify-content:space-around}div.tb-container main .left-section,div.tb-container main .right-section{position:relative}div.tb-container main .left-section{width:40%}div.tb-container main .heading{text-align:center;font-size:300px;line-height:1.3em;margin:2rem 0 .5rem;padding:0;font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;font-weight:900;color:#2c3e50}div.tb-container main .subheading{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;color:#2c3e50;text-align:center;max-width:606px;font-size:34px;line-height:1.15em;padding:0 1rem;margin:0 auto}div.tb-container main .right-section{width:50%;display:flex;justify-content:center}div.tb-container main .right-section div{height:100%;width:100%;position:relative}div.tb-container main .mountains-image{position:absolute;bottom:0;padding-top:10vh;padding-left:1vh;max-height:100%;min-width:500px;z-index:1}div.tb-container main .blue-gate{position:absolute;bottom:165px;left:493px;animation:gate-up-animation-default linear 10s infinite;animation-delay:2s}div.tb-container #clouds{height:100%;width:100%}div.tb-container #clouds .light-blue-cloud{width:187px;height:131px;background-image:url(/assets/light-blue-cloud.svg)}div.tb-container #clouds .grey-cloud{width:154px;height:108px;background-image:url(/assets/grey-cloud.svg)}div.tb-container #clouds .cloud{position:absolute;animation-fill-mode:both}div.tb-container #clouds .cloud.foreground{z-index:2}div.tb-container #clouds .cloud.background{z-index:-1}@keyframes cloud-animation{0%{left:-10%}to{left:100%}}@keyframes cloud1-animation{0%{left:-10%}to{left:100%}}div.tb-container #clouds .cloud:nth-child(1){left:-10%;top:147px;animation:cloud1-animation linear,cloud-animation linear infinite;animation-duration:24s,27s;animation-delay:0s,24s}@keyframes cloud2-animation{0%{left:50%}to{left:100%}}div.tb-container #clouds .cloud:nth-child(2){left:50%;top:283px;animation:cloud2-animation linear,cloud-animation linear infinite;animation-duration:18s,26s;animation-delay:0s,18s}@keyframes cloud3-animation{0%{left:53%}to{left:100%}}div.tb-container #clouds .cloud:nth-child(3){left:53%;top:278px;animation:cloud3-animation linear,cloud-animation linear infinite;animation-duration:12s,25s;animation-delay:0s,12s}@keyframes cloud4-animation{0%{left:85%}to{left:100%}}div.tb-container #clouds .cloud:nth-child(4){left:85%;top:488px;animation:cloud4-animation linear,cloud-animation linear infinite;animation-duration:6s,24s;animation-delay:0s,6s}@media (max-width: 1300px){div.tb-container header{height:80px}div.tb-container header .wrapper-logo{height:100%;width:121px;padding:0 0 0 20px}div.tb-container header .wrapper-logo .tb-logo{width:121px;max-width:121px;max-height:45px}div.tb-container header .tb-button{display:block}div.tb-container header .tb-modules{position:absolute;top:80px;background:#263544 0% 0% no-repeat padding-box;max-height:440px;overflow:auto;width:100%!important;margin:-1px 0 0!important;padding-bottom:20px;z-index:3;display:grid!important;grid-template-columns:repeat(4,180px);align-content:space-around;justify-content:center;transition:transform 1s}div.tb-container header .tb-modules.drawer-collapsed{transform:translateY(-100%)}div.tb-container main{height:calc(100% - 80px)}div.tb-container main .container{flex-direction:column;padding-bottom:0vh}div.tb-container main .left-section{width:100%;height:40%;position:absolute;top:0}div.tb-container main .left-section .inner-content{position:relative;padding:1rem 0}div.tb-container main .heading{font-size:143px;line-height:1.15;margin:0}div.tb-container main .subheading{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;color:#2c3e50;font-size:16px;line-height:1.15;max-width:100%}div.tb-container main .right-section{width:100%;height:60%;position:absolute;bottom:0}div.tb-container main .right-section>div{display:flex;justify-content:center}div.tb-container main .right-section>div img.mountains-image{width:375px}div.tb-container main .right-section>div img.blue-gate{width:75px;left:47px;top:105px;animation:gate-up-animation-mobile linear 10s infinite;position:relative}div.tb-container main .mountains-image{padding:0}div.tb-container #clouds .light-blue-cloud{width:88px;height:62px;background-size:contain}div.tb-container #clouds .grey-cloud{width:73px;height:51px;background-size:contain}div.tb-container #clouds .cloud:nth-child(1){top:120px}div.tb-container #clouds .cloud:nth-child(2){top:185px}div.tb-container #clouds .cloud:nth-child(3){top:182px}div.tb-container #clouds .cloud:nth-child(4){top:325px}}@media (max-width: 800px){div.tb-container header .tb-modules{grid-template-columns:repeat(3,180px)}}@media (max-width: 600px){div.tb-container header .tb-modules{grid-template-columns:repeat(2,180px)}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconComponent, selector: "tb-icon", inputs: ["setCursorPointer", "facilityCommandIcon", "remoteCommandIcon", "settings"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: TranslateLocalPipe, name: "translateLocal" }], animations: [appModuleAnimation()], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
142633
142291
  }
142634
142292
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ErrorPageComponent, decorators: [{
142635
142293
  type: Component,
142636
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'tb-error-page', animations: [appModuleAnimation()], standalone: false, template: "<div class=\"tb-container\" [@routerTransition]>\n <header>\n <div class=\"tb-flex tb-align-items-center tb-full-height tb-space-between tb-flex-grow\">\n <div class=\"wrapper-logo tb-flex-center\">\n <div class=\"tb-logo\" (click)=\"navigateToDefaultRoute()\"></div>\n </div>\n <button type=\"button\" #menuButton class=\"tb-button tb-mr-28\" [attr.aria-expanded]=\"!drawerCollapsed\" aria-controls=\"tb-error-page-modules\"\n [attr.aria-label]=\"L.modules | translateLocal | async\" (click)=\"toggleDrawer(); $event.stopPropagation();\">\n <tb-icon [settings]=\"iconsHelper.three_bars_mobile\" class=\"tb-icon tb-icon-30\" aria-hidden=\"true\"></tb-icon>\n </button>\n </div>\n <nav id=\"tb-error-page-modules\" class=\"tb-modules\" [class.drawer-collapsed]=\"drawerCollapsed\" [attr.aria-label]=\"L.modules | translateLocal | async\">\n <button type=\"button\" class=\"tb-module\" *ngFor=\"let appSectionKey of appSectionModuleMenu\"\n (click)=\"navigateToModule(appSectionKey)\">\n <tb-icon [settings]=\"iconsHelper[appSectionLabel.get(appSectionKey) + '_blue']\" aria-hidden=\"true\"></tb-icon>\n <span class=\"tb-menu-header-text\"> {{appSectionLabel.get(appSectionKey) | translateLocal | async}}</span>\n </button>\n </nav>\n </header>\n\n <main>\n <div class=\"container\">\n <div class=\"left-section\">\n <div class=\"inner-content\">\n <h1 class=\"heading\">{{ statusCodeError }}</h1>\n <p class=\"subheading\">{{ statusCodeErrorMessage | translateLocal | async }}</p>\n <button type=\"button\" class=\"tb-animation-toggle\" (click)=\"toggleAnimation()\">\n {{ (animationPaused ? L.play_animation : L.pause_animation) | translateLocal | async }}\n </button>\n </div>\n </div>\n <div class=\"right-section\">\n <div>\n <img class=\"mountains-image\" src=\"assets/mountains-{{statusCodeError}}.svg\">\n <img *ngIf=\"statusCodeError=='404'\" class=\"blue-gate\" src=\"assets/blue-gate.svg\">\n </div>\n </div>\n </div>\n <div id=\"clouds\">\n <div class=\"cloud background light-blue-cloud\"></div>\n <div class=\"cloud foreground light-blue-cloud\"></div>\n <div class=\"cloud background grey-cloud\"></div>\n <div class=\"cloud background light-blue-cloud\"></div>\n </div>\n </main>\n</div>", styles: ["@keyframes gate-up-animation-default{0%{transform:none}20%{transform:none}50%{transform:rotate(-40deg) translate(14px,-47px)}70%{transform:rotate(-40deg) translate(14px,-47px)}to{transform:none}}@keyframes gate-up-animation-mobile{0%{transform:none}20%{transform:none}50%{transform:rotate(-40deg) translate(11px,-22px)}70%{transform:rotate(-40deg) translate(11px,-22px)}to{transform:none}}div.tb-container{position:absolute;inset:0;background-size:cover;background-color:#fff;overflow:hidden}div.tb-container header{display:flex;flex-direction:row;align-items:flex-end;height:100px;background:#263544 0% 0% no-repeat padding-box}div.tb-container header div:first-child{z-index:4;background:inherit}div.tb-container header .tb-button{display:none;padding:0;border:none;background:none;cursor:pointer}div.tb-container header .tb-button:focus-visible,div.tb-container header .tb-module:focus-visible{outline:1px solid #ffffff;outline-offset:-3px;border-radius:4px}div.tb-container header .wrapper-logo{width:166px;height:64px;padding:18px 56px}div.tb-container header .wrapper-logo .tb-logo{height:100%;width:100%;background:url(/assets/tiba-logo.svg) no-repeat;background-size:contain;cursor:pointer}div.tb-container header .tb-modules{display:flex;align-items:center;width:680px;min-width:340px;margin-left:80px;flex:100%}div.tb-container header .tb-modules .tb-module{flex:1;height:100px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;max-width:180px;min-width:120px;padding:0;border:none;background:none;font:inherit}div.tb-container header .tb-modules .tb-module span{text-align:center;font-size:13px;font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;color:#fff}div.tb-container header .tb-modules .tb-module:hover{background:#ffffff1a}div.tb-container header .tb-modules .tb-module ::ng-deep .tb-icon-insights-module-blue{background-image:url(/assets/icons/insights-blue-404.svg)}div.tb-container main{height:calc(100% - 100px)}div.tb-container main .left-section .inner-content{position:absolute;top:100px}div.tb-container main .container{position:relative;margin:0 auto;width:85%;height:100%;padding-bottom:25vh;display:flex;flex-direction:row;justify-content:space-around}div.tb-container main .left-section,div.tb-container main .right-section{position:relative}div.tb-container main .left-section{width:40%}div.tb-container main .heading{text-align:center;font-size:300px;line-height:1.3em;margin:2rem 0 .5rem;padding:0;font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;font-weight:900;color:#2c3e50}div.tb-container main .subheading{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;color:#2c3e50;text-align:center;max-width:606px;font-size:34px;line-height:1.15em;padding:0 1rem;margin:0 auto}div.tb-container main .right-section{width:50%;display:flex;justify-content:center}div.tb-container main .right-section div{height:100%;width:100%;position:relative}div.tb-container main .mountains-image{position:absolute;bottom:0;padding-top:10vh;padding-left:1vh;max-height:100%;min-width:500px;z-index:1}div.tb-container main .blue-gate{position:absolute;bottom:165px;left:493px;animation:gate-up-animation-default linear 10s infinite;animation-delay:2s}div.tb-container #clouds{height:100%;width:100%}div.tb-container #clouds .light-blue-cloud{width:187px;height:131px;background-image:url(/assets/light-blue-cloud.svg)}div.tb-container #clouds .grey-cloud{width:154px;height:108px;background-image:url(/assets/grey-cloud.svg)}div.tb-container #clouds .cloud{position:absolute;animation-fill-mode:both}div.tb-container #clouds .cloud.foreground{z-index:2}div.tb-container #clouds .cloud.background{z-index:-1}@keyframes cloud-animation{0%{left:-10%}to{left:100%}}@keyframes cloud1-animation{0%{left:-10%}to{left:100%}}div.tb-container #clouds .cloud:nth-child(1){left:-10%;top:147px;animation:cloud1-animation linear,cloud-animation linear infinite;animation-duration:24s,27s;animation-delay:0s,24s}@keyframes cloud2-animation{0%{left:50%}to{left:100%}}div.tb-container #clouds .cloud:nth-child(2){left:50%;top:283px;animation:cloud2-animation linear,cloud-animation linear infinite;animation-duration:18s,26s;animation-delay:0s,18s}@keyframes cloud3-animation{0%{left:53%}to{left:100%}}div.tb-container #clouds .cloud:nth-child(3){left:53%;top:278px;animation:cloud3-animation linear,cloud-animation linear infinite;animation-duration:12s,25s;animation-delay:0s,12s}@keyframes cloud4-animation{0%{left:85%}to{left:100%}}div.tb-container #clouds .cloud:nth-child(4){left:85%;top:488px;animation:cloud4-animation linear,cloud-animation linear infinite;animation-duration:6s,24s;animation-delay:0s,6s}@media (max-width: 1300px){div.tb-container header{height:80px}div.tb-container header .wrapper-logo{height:100%;width:121px;padding:0 0 0 20px}div.tb-container header .wrapper-logo .tb-logo{width:121px;max-width:121px;max-height:45px}div.tb-container header .tb-button{display:block}div.tb-container header .tb-modules{position:absolute;top:80px;background:#263544 0% 0% no-repeat padding-box;max-height:440px;overflow:auto;width:100%!important;margin:-1px 0 0!important;padding-bottom:20px;z-index:3;display:grid!important;grid-template-columns:repeat(4,180px);align-content:space-around;justify-content:center;transition:transform 1s}div.tb-container header .tb-modules.drawer-collapsed{transform:translateY(-100%);visibility:hidden;transition:transform 1s,visibility 0s 1s}div.tb-container main{height:calc(100% - 80px)}div.tb-container main .container{flex-direction:column;padding-bottom:0vh}div.tb-container main .left-section{width:100%;height:40%;position:absolute;top:0}div.tb-container main .left-section .inner-content{position:relative;padding:1rem 0}div.tb-container main .heading{font-size:143px;line-height:1.15;margin:0}div.tb-container main .subheading{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;color:#2c3e50;font-size:16px;line-height:1.15;max-width:100%}div.tb-container main .right-section{width:100%;height:60%;position:absolute;bottom:0}div.tb-container main .right-section>div{display:flex;justify-content:center}div.tb-container main .right-section>div img.mountains-image{width:375px}div.tb-container main .right-section>div img.blue-gate{width:75px;left:47px;top:105px;animation:gate-up-animation-mobile linear 10s infinite;position:relative}div.tb-container main .mountains-image{padding:0}div.tb-container #clouds .light-blue-cloud{width:88px;height:62px;background-size:contain}div.tb-container #clouds .grey-cloud{width:73px;height:51px;background-size:contain}div.tb-container #clouds .cloud:nth-child(1){top:120px}div.tb-container #clouds .cloud:nth-child(2){top:185px}div.tb-container #clouds .cloud:nth-child(3){top:182px}div.tb-container #clouds .cloud:nth-child(4){top:325px}}@media (max-width: 800px){div.tb-container header .tb-modules{grid-template-columns:repeat(3,180px)}}@media (max-width: 640px){div.tb-container header .tb-modules{grid-template-columns:repeat(2,180px)}}:host.tb-still *{animation-play-state:paused!important}@media (prefers-reduced-motion: reduce){:host *{animation:none!important}.tb-animation-toggle{display:none}}.tb-animation-toggle{margin-top:16px;padding:6px 12px;border:1px solid #0670c7;border-radius:4px;background:#fff;color:#0670c7;font:inherit;font-size:13px;cursor:pointer}\n"] }]
142637
- }], ctorParameters: () => [{ type: i1$2.Store }, { type: SessionStorageService }, { type: HttpCancelService }, { type: AppConfigService }, { type: i1$7.ActivatedRoute }, { type: i0.ElementRef }], propDecorators: { menuButton: [{
142638
- type: ViewChild,
142639
- args: ['menuButton']
142640
- }], closeDrawerFromKeyboard: [{
142641
- type: HostListener,
142642
- args: ['document:keydown.escape']
142643
- }], click: [{
142294
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'tb-error-page', animations: [appModuleAnimation()], standalone: false, template: "<div class=\"tb-container\" [@routerTransition]>\n <header>\n <div class=\"tb-flex tb-align-items-center tb-full-height tb-space-between tb-flex-grow\">\n <div class=\"wrapper-logo tb-flex-center\">\n <div class=\"tb-logo\" (click)=\"navigateToDefaultRoute()\"></div>\n </div>\n <div class=\"tb-button tb-mr-28\" (click)=\"drawerCollapsed = !drawerCollapsed; $event.stopPropagation();\">\n <tb-icon [settings]=\"iconsHelper.three_bars_mobile\" class=\"tb-icon tb-icon-30\"></tb-icon>\n </div>\n </div>\n <div class=\"tb-modules\" [class.drawer-collapsed]=\"drawerCollapsed\">\n <div class=\"tb-module\" *ngFor=\"let appSectionKey of appSectionModuleMenu\"\n (click)=\"navigateToModule(appSectionKey)\">\n <tb-icon [settings]=\"iconsHelper[appSectionLabel.get(appSectionKey) + '_blue']\"></tb-icon>\n <span class=\"tb-menu-header-text\"> {{appSectionLabel.get(appSectionKey) | translateLocal | async}}</span>\n </div>\n </div>\n </header>\n\n <main>\n <div class=\"container\">\n <div class=\"left-section\">\n <div class=\"inner-content\">\n <h1 class=\"heading\">{{ statusCodeError }}</h1>\n <p class=\"subheading\">{{ statusCodeErrorMessage | translateLocal | async }}</p>\n </div>\n </div>\n <div class=\"right-section\">\n <div>\n <img class=\"mountains-image\" src=\"assets/mountains-{{statusCodeError}}.svg\">\n <img *ngIf=\"statusCodeError=='404'\" class=\"blue-gate\" src=\"assets/blue-gate.svg\">\n </div>\n </div>\n </div>\n <div id=\"clouds\">\n <div class=\"cloud background light-blue-cloud\"></div>\n <div class=\"cloud foreground light-blue-cloud\"></div>\n <div class=\"cloud background grey-cloud\"></div>\n <div class=\"cloud background light-blue-cloud\"></div>\n </div>\n </main>\n</div>", styles: ["@keyframes gate-up-animation-default{0%{transform:none}20%{transform:none}50%{transform:rotate(-40deg) translate(14px,-47px)}70%{transform:rotate(-40deg) translate(14px,-47px)}to{transform:none}}@keyframes gate-up-animation-mobile{0%{transform:none}20%{transform:none}50%{transform:rotate(-40deg) translate(11px,-22px)}70%{transform:rotate(-40deg) translate(11px,-22px)}to{transform:none}}div.tb-container{position:absolute;inset:0;background-size:cover;overflow:hidden}div.tb-container header{display:flex;flex-direction:row;align-items:flex-end;height:100px;background:#263544 0% 0% no-repeat padding-box}div.tb-container header div:first-child{z-index:4;background:inherit}div.tb-container header .tb-button{display:none}div.tb-container header .wrapper-logo{width:166px;height:64px;padding:18px 56px}div.tb-container header .wrapper-logo .tb-logo{height:100%;width:100%;background:url(/assets/tiba-logo.svg) no-repeat;background-size:contain;cursor:pointer}div.tb-container header .tb-modules{display:flex;align-items:center;width:680px;min-width:340px;margin-left:80px;flex:100%}div.tb-container header .tb-modules .tb-module{flex:1;height:110px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;max-width:180px;min-width:120px}div.tb-container header .tb-modules .tb-module span{text-align:center;font-size:13px;font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;color:#fff}div.tb-container header .tb-modules .tb-module:hover{background:#ffffff1a}div.tb-container header .tb-modules .tb-module ::ng-deep .tb-icon-insights-module-blue{background-image:url(/assets/icons/insights-blue-404.svg)}div.tb-container header .tb-modules .tb-module ::ng-deep .tb-icon-tech-tools-module-blue{background-image:url(/assets/icons/tech-tools-module-404.svg)}div.tb-container main{height:calc(100% - 100px)}div.tb-container main .left-section .inner-content{position:absolute;top:100px}div.tb-container main .container{position:relative;margin:0 auto;width:85%;height:100%;padding-bottom:25vh;display:flex;flex-direction:row;justify-content:space-around}div.tb-container main .left-section,div.tb-container main .right-section{position:relative}div.tb-container main .left-section{width:40%}div.tb-container main .heading{text-align:center;font-size:300px;line-height:1.3em;margin:2rem 0 .5rem;padding:0;font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;font-weight:900;color:#2c3e50}div.tb-container main .subheading{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;color:#2c3e50;text-align:center;max-width:606px;font-size:34px;line-height:1.15em;padding:0 1rem;margin:0 auto}div.tb-container main .right-section{width:50%;display:flex;justify-content:center}div.tb-container main .right-section div{height:100%;width:100%;position:relative}div.tb-container main .mountains-image{position:absolute;bottom:0;padding-top:10vh;padding-left:1vh;max-height:100%;min-width:500px;z-index:1}div.tb-container main .blue-gate{position:absolute;bottom:165px;left:493px;animation:gate-up-animation-default linear 10s infinite;animation-delay:2s}div.tb-container #clouds{height:100%;width:100%}div.tb-container #clouds .light-blue-cloud{width:187px;height:131px;background-image:url(/assets/light-blue-cloud.svg)}div.tb-container #clouds .grey-cloud{width:154px;height:108px;background-image:url(/assets/grey-cloud.svg)}div.tb-container #clouds .cloud{position:absolute;animation-fill-mode:both}div.tb-container #clouds .cloud.foreground{z-index:2}div.tb-container #clouds .cloud.background{z-index:-1}@keyframes cloud-animation{0%{left:-10%}to{left:100%}}@keyframes cloud1-animation{0%{left:-10%}to{left:100%}}div.tb-container #clouds .cloud:nth-child(1){left:-10%;top:147px;animation:cloud1-animation linear,cloud-animation linear infinite;animation-duration:24s,27s;animation-delay:0s,24s}@keyframes cloud2-animation{0%{left:50%}to{left:100%}}div.tb-container #clouds .cloud:nth-child(2){left:50%;top:283px;animation:cloud2-animation linear,cloud-animation linear infinite;animation-duration:18s,26s;animation-delay:0s,18s}@keyframes cloud3-animation{0%{left:53%}to{left:100%}}div.tb-container #clouds .cloud:nth-child(3){left:53%;top:278px;animation:cloud3-animation linear,cloud-animation linear infinite;animation-duration:12s,25s;animation-delay:0s,12s}@keyframes cloud4-animation{0%{left:85%}to{left:100%}}div.tb-container #clouds .cloud:nth-child(4){left:85%;top:488px;animation:cloud4-animation linear,cloud-animation linear infinite;animation-duration:6s,24s;animation-delay:0s,6s}@media (max-width: 1300px){div.tb-container header{height:80px}div.tb-container header .wrapper-logo{height:100%;width:121px;padding:0 0 0 20px}div.tb-container header .wrapper-logo .tb-logo{width:121px;max-width:121px;max-height:45px}div.tb-container header .tb-button{display:block}div.tb-container header .tb-modules{position:absolute;top:80px;background:#263544 0% 0% no-repeat padding-box;max-height:440px;overflow:auto;width:100%!important;margin:-1px 0 0!important;padding-bottom:20px;z-index:3;display:grid!important;grid-template-columns:repeat(4,180px);align-content:space-around;justify-content:center;transition:transform 1s}div.tb-container header .tb-modules.drawer-collapsed{transform:translateY(-100%)}div.tb-container main{height:calc(100% - 80px)}div.tb-container main .container{flex-direction:column;padding-bottom:0vh}div.tb-container main .left-section{width:100%;height:40%;position:absolute;top:0}div.tb-container main .left-section .inner-content{position:relative;padding:1rem 0}div.tb-container main .heading{font-size:143px;line-height:1.15;margin:0}div.tb-container main .subheading{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;color:#2c3e50;font-size:16px;line-height:1.15;max-width:100%}div.tb-container main .right-section{width:100%;height:60%;position:absolute;bottom:0}div.tb-container main .right-section>div{display:flex;justify-content:center}div.tb-container main .right-section>div img.mountains-image{width:375px}div.tb-container main .right-section>div img.blue-gate{width:75px;left:47px;top:105px;animation:gate-up-animation-mobile linear 10s infinite;position:relative}div.tb-container main .mountains-image{padding:0}div.tb-container #clouds .light-blue-cloud{width:88px;height:62px;background-size:contain}div.tb-container #clouds .grey-cloud{width:73px;height:51px;background-size:contain}div.tb-container #clouds .cloud:nth-child(1){top:120px}div.tb-container #clouds .cloud:nth-child(2){top:185px}div.tb-container #clouds .cloud:nth-child(3){top:182px}div.tb-container #clouds .cloud:nth-child(4){top:325px}}@media (max-width: 800px){div.tb-container header .tb-modules{grid-template-columns:repeat(3,180px)}}@media (max-width: 600px){div.tb-container header .tb-modules{grid-template-columns:repeat(2,180px)}}\n"] }]
142295
+ }], ctorParameters: () => [{ type: i1$2.Store }, { type: SessionStorageService }, { type: HttpCancelService }, { type: AppConfigService }, { type: i1$7.ActivatedRoute }], propDecorators: { click: [{
142644
142296
  type: HostListener,
142645
142297
  args: ['document:click', ['$event']]
142646
142298
  }] } });
@@ -142700,13 +142352,13 @@ class IntercomComponent {
142700
142352
  });
142701
142353
  }
142702
142354
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IntercomComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
142703
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: IntercomComponent, isStandalone: true, selector: "tb-intercom", inputs: { intercom: { classPropertyName: "intercom", publicName: "intercom", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div [ngClass]=\"intercomStatusClass()\" class=\"tb-intercom-icon\"></div>\n", styles: [":host{display:block}.tb-intercom-icon{display:block;height:22px;width:22px;background-image:url(/assets/icons/devices/status/phone.svg);background-size:12px;background-repeat:no-repeat;background-position:center;background-color:#d8dbe0;border-radius:50%;display:flex;justify-content:center;align-items:center}.tb-intercom-status-active,.tb-intercom-status-ringing{background-color:#0670c7}.tb-intercom-status-ringing:before{content:\"\";position:absolute;border:1px solid #0670c7;width:calc(100% + 10px);height:calc(100% + 10px);border-radius:50%;animation:pulse 1s linear infinite}.tb-intercom-status-ringing:after{content:\"\";position:absolute;border:1px solid #0670c7;width:calc(100% + 10px);height:calc(100% + 10px);border-radius:50%;animation:pulse 1s linear infinite;animation-delay:.3s}@keyframes pulse{0%{transform:scale(.5);opacity:0}50%{transform:scale(1);opacity:1}to{transform:scale(1.3);opacity:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
142355
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: IntercomComponent, isStandalone: true, selector: "tb-intercom", inputs: { intercom: { classPropertyName: "intercom", publicName: "intercom", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div [ngClass]=\"intercomStatusClass()\" class=\"tb-intercom-icon\"></div>\n", styles: [":host{display:block}.tb-intercom-icon{display:block;height:22px;width:22px;background-image:url(/assets/icons/devices/status/phone.svg);background-size:12px;background-repeat:no-repeat;background-position:center;background-color:#d8dbe0;border-radius:50%;display:flex;justify-content:center;align-items:center}.tb-intercom-status-active,.tb-intercom-status-ringing{background-color:#0985eb}.tb-intercom-status-ringing:before{content:\"\";position:absolute;border:1px solid #0985eb;width:calc(100% + 10px);height:calc(100% + 10px);border-radius:50%;animation:pulse 1s linear infinite}.tb-intercom-status-ringing:after{content:\"\";position:absolute;border:1px solid #0985eb;width:calc(100% + 10px);height:calc(100% + 10px);border-radius:50%;animation:pulse 1s linear infinite;animation-delay:.3s}@keyframes pulse{0%{transform:scale(.5);opacity:0}50%{transform:scale(1);opacity:1}to{transform:scale(1.3);opacity:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
142704
142356
  }
142705
142357
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IntercomComponent, decorators: [{
142706
142358
  type: Component,
142707
142359
  args: [{ selector: 'tb-intercom', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
142708
142360
  CommonModule
142709
- ], template: "<div [ngClass]=\"intercomStatusClass()\" class=\"tb-intercom-icon\"></div>\n", styles: [":host{display:block}.tb-intercom-icon{display:block;height:22px;width:22px;background-image:url(/assets/icons/devices/status/phone.svg);background-size:12px;background-repeat:no-repeat;background-position:center;background-color:#d8dbe0;border-radius:50%;display:flex;justify-content:center;align-items:center}.tb-intercom-status-active,.tb-intercom-status-ringing{background-color:#0670c7}.tb-intercom-status-ringing:before{content:\"\";position:absolute;border:1px solid #0670c7;width:calc(100% + 10px);height:calc(100% + 10px);border-radius:50%;animation:pulse 1s linear infinite}.tb-intercom-status-ringing:after{content:\"\";position:absolute;border:1px solid #0670c7;width:calc(100% + 10px);height:calc(100% + 10px);border-radius:50%;animation:pulse 1s linear infinite;animation-delay:.3s}@keyframes pulse{0%{transform:scale(.5);opacity:0}50%{transform:scale(1);opacity:1}to{transform:scale(1.3);opacity:0}}\n"] }]
142361
+ ], template: "<div [ngClass]=\"intercomStatusClass()\" class=\"tb-intercom-icon\"></div>\n", styles: [":host{display:block}.tb-intercom-icon{display:block;height:22px;width:22px;background-image:url(/assets/icons/devices/status/phone.svg);background-size:12px;background-repeat:no-repeat;background-position:center;background-color:#d8dbe0;border-radius:50%;display:flex;justify-content:center;align-items:center}.tb-intercom-status-active,.tb-intercom-status-ringing{background-color:#0985eb}.tb-intercom-status-ringing:before{content:\"\";position:absolute;border:1px solid #0985eb;width:calc(100% + 10px);height:calc(100% + 10px);border-radius:50%;animation:pulse 1s linear infinite}.tb-intercom-status-ringing:after{content:\"\";position:absolute;border:1px solid #0985eb;width:calc(100% + 10px);height:calc(100% + 10px);border-radius:50%;animation:pulse 1s linear infinite;animation-delay:.3s}@keyframes pulse{0%{transform:scale(.5);opacity:0}50%{transform:scale(1);opacity:1}to{transform:scale(1.3);opacity:0}}\n"] }]
142710
142362
  }] });
142711
142363
 
142712
142364
  const ENTRY_TL60 = 'entry-tl60';
@@ -143428,7 +143080,7 @@ class EmptyResultsComponent extends BaseComponent {
143428
143080
  ngOnInit() {
143429
143081
  }
143430
143082
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmptyResultsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
143431
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: EmptyResultsComponent, isStandalone: true, selector: "tb-empty-results", inputs: { options: "options" }, usesInheritance: true, ngImport: i0, template: "<div class=\"empty-results-wrapper {{options?.cssClass}}\" [class.has-leading-icon]=\"options?.icon !== undefined\">\n <!-- SPRK3-13627: leading icon, above the message. Absent unless a caller sets options.icon. -->\n <tb-icon *ngIf=\"options?.icon !== undefined\" [settings]=\"options?.icon\" [setCursorPointer]=\"false\" class=\"tb-icon-30 empty-results-icon\"></tb-icon>\n <ng-container *ngIf=\"options?.searchValue else noMessageValue\">\n <span class=\"empty-results-message\" [innerHTML]=\"options?.noDataMessage | translate:{ searchValue: options?.searchValue}\"></span>\n </ng-container>\n <ng-template #noMessageValue>\n <span class=\"empty-results-message\" [innerHTML]=\"options?.noDataMessage | translate\"></span>\n </ng-template>\n <tb-icon *ngIf=\"options?.tooltip?.icon\" [settings]=\"options?.tooltip?.icon\" class=\"tb-icon-30\" tabindex=\"0\" role=\"img\" [attr.aria-label]=\"L.info | translate\" [matTooltip]=\"options?.tooltip?.text | translate\"\n [matTooltipPosition]=\"options?.tooltip?.position\">\n </tb-icon>\n</div>\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1}:host.tb-mobile-search-validate-ticket{border:none}.empty-results-wrapper{display:flex;flex:1;justify-content:center}.empty-results-wrapper.tb-search-validate-ticket,.empty-results-wrapper.tb-mobile-search-validate-ticket{flex:unset}.empty-results-wrapper.tb-mobile-search-validate-ticket span{font-family:Quicksand,Quicksand Local,Roboto,Roboto Local,sans-serif;font-size:17px;font-weight:700;text-align:center}.empty-results-wrapper.tb-mobile-search-validate-ticket tb-icon{display:none}.empty-results-wrapper.has-leading-icon{flex-direction:column;align-items:center;justify-content:center;gap:16px}.empty-results-wrapper.has-leading-icon .empty-results-message{display:block}.empty-results-wrapper .empty-results-message{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;display:flex;align-items:center;color:#5f6b78;cursor:default;text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: IconComponent, selector: "tb-icon", inputs: ["setCursorPointer", "facilityCommandIcon", "remoteCommandIcon", "settings"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: SanitizedInnerHtmlDirective, selector: "[innerHTML]", inputs: ["innerHTML"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
143083
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: EmptyResultsComponent, isStandalone: true, selector: "tb-empty-results", inputs: { options: "options" }, usesInheritance: true, ngImport: i0, template: "<div class=\"empty-results-wrapper {{options?.cssClass}}\" [class.has-leading-icon]=\"options?.icon !== undefined\">\n <!-- SPRK3-13627: leading icon, above the message. Absent unless a caller sets options.icon. -->\n <tb-icon *ngIf=\"options?.icon !== undefined\" [settings]=\"options?.icon\" [setCursorPointer]=\"false\" class=\"tb-icon-30 empty-results-icon\"></tb-icon>\n <ng-container *ngIf=\"options?.searchValue else noMessageValue\">\n <span class=\"empty-results-message\" [innerHTML]=\"options?.noDataMessage | translate:{ searchValue: options?.searchValue}\"></span>\n </ng-container>\n <ng-template #noMessageValue>\n <span class=\"empty-results-message\" [innerHTML]=\"options?.noDataMessage | translate\"></span>\n </ng-template>\n <tb-icon *ngIf=\"options?.tooltip?.icon\" [settings]=\"options?.tooltip?.icon\" class=\"tb-icon-30\" [matTooltip]=\"options?.tooltip?.text | translate\"\n [matTooltipPosition]=\"options?.tooltip?.position\">\n </tb-icon>\n</div>\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1}:host.tb-mobile-search-validate-ticket{border:none}.empty-results-wrapper{display:flex;flex:1;justify-content:center}.empty-results-wrapper.tb-search-validate-ticket,.empty-results-wrapper.tb-mobile-search-validate-ticket{flex:unset}.empty-results-wrapper.tb-mobile-search-validate-ticket span{font-family:Quicksand,Quicksand Local,Roboto,Roboto Local,sans-serif;font-size:17px;font-weight:700;text-align:center}.empty-results-wrapper.tb-mobile-search-validate-ticket tb-icon{display:none}.empty-results-wrapper.has-leading-icon{flex-direction:column;align-items:center;justify-content:center;gap:16px}.empty-results-wrapper.has-leading-icon .empty-results-message{display:block}.empty-results-wrapper .empty-results-message{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;display:flex;align-items:center;color:#919eab;cursor:default;text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: IconComponent, selector: "tb-icon", inputs: ["setCursorPointer", "facilityCommandIcon", "remoteCommandIcon", "settings"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: SanitizedInnerHtmlDirective, selector: "[innerHTML]", inputs: ["innerHTML"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
143432
143084
  }
143433
143085
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmptyResultsComponent, decorators: [{
143434
143086
  type: Component,
@@ -143438,7 +143090,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
143438
143090
  LocalizationModule,
143439
143091
  MatTooltipModule,
143440
143092
  SanitizedInnerHtmlDirective,
143441
- ], template: "<div class=\"empty-results-wrapper {{options?.cssClass}}\" [class.has-leading-icon]=\"options?.icon !== undefined\">\n <!-- SPRK3-13627: leading icon, above the message. Absent unless a caller sets options.icon. -->\n <tb-icon *ngIf=\"options?.icon !== undefined\" [settings]=\"options?.icon\" [setCursorPointer]=\"false\" class=\"tb-icon-30 empty-results-icon\"></tb-icon>\n <ng-container *ngIf=\"options?.searchValue else noMessageValue\">\n <span class=\"empty-results-message\" [innerHTML]=\"options?.noDataMessage | translate:{ searchValue: options?.searchValue}\"></span>\n </ng-container>\n <ng-template #noMessageValue>\n <span class=\"empty-results-message\" [innerHTML]=\"options?.noDataMessage | translate\"></span>\n </ng-template>\n <tb-icon *ngIf=\"options?.tooltip?.icon\" [settings]=\"options?.tooltip?.icon\" class=\"tb-icon-30\" tabindex=\"0\" role=\"img\" [attr.aria-label]=\"L.info | translate\" [matTooltip]=\"options?.tooltip?.text | translate\"\n [matTooltipPosition]=\"options?.tooltip?.position\">\n </tb-icon>\n</div>\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1}:host.tb-mobile-search-validate-ticket{border:none}.empty-results-wrapper{display:flex;flex:1;justify-content:center}.empty-results-wrapper.tb-search-validate-ticket,.empty-results-wrapper.tb-mobile-search-validate-ticket{flex:unset}.empty-results-wrapper.tb-mobile-search-validate-ticket span{font-family:Quicksand,Quicksand Local,Roboto,Roboto Local,sans-serif;font-size:17px;font-weight:700;text-align:center}.empty-results-wrapper.tb-mobile-search-validate-ticket tb-icon{display:none}.empty-results-wrapper.has-leading-icon{flex-direction:column;align-items:center;justify-content:center;gap:16px}.empty-results-wrapper.has-leading-icon .empty-results-message{display:block}.empty-results-wrapper .empty-results-message{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;display:flex;align-items:center;color:#5f6b78;cursor:default;text-align:center}\n"] }]
143093
+ ], template: "<div class=\"empty-results-wrapper {{options?.cssClass}}\" [class.has-leading-icon]=\"options?.icon !== undefined\">\n <!-- SPRK3-13627: leading icon, above the message. Absent unless a caller sets options.icon. -->\n <tb-icon *ngIf=\"options?.icon !== undefined\" [settings]=\"options?.icon\" [setCursorPointer]=\"false\" class=\"tb-icon-30 empty-results-icon\"></tb-icon>\n <ng-container *ngIf=\"options?.searchValue else noMessageValue\">\n <span class=\"empty-results-message\" [innerHTML]=\"options?.noDataMessage | translate:{ searchValue: options?.searchValue}\"></span>\n </ng-container>\n <ng-template #noMessageValue>\n <span class=\"empty-results-message\" [innerHTML]=\"options?.noDataMessage | translate\"></span>\n </ng-template>\n <tb-icon *ngIf=\"options?.tooltip?.icon\" [settings]=\"options?.tooltip?.icon\" class=\"tb-icon-30\" [matTooltip]=\"options?.tooltip?.text | translate\"\n [matTooltipPosition]=\"options?.tooltip?.position\">\n </tb-icon>\n</div>\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1}:host.tb-mobile-search-validate-ticket{border:none}.empty-results-wrapper{display:flex;flex:1;justify-content:center}.empty-results-wrapper.tb-search-validate-ticket,.empty-results-wrapper.tb-mobile-search-validate-ticket{flex:unset}.empty-results-wrapper.tb-mobile-search-validate-ticket span{font-family:Quicksand,Quicksand Local,Roboto,Roboto Local,sans-serif;font-size:17px;font-weight:700;text-align:center}.empty-results-wrapper.tb-mobile-search-validate-ticket tb-icon{display:none}.empty-results-wrapper.has-leading-icon{flex-direction:column;align-items:center;justify-content:center;gap:16px}.empty-results-wrapper.has-leading-icon .empty-results-message{display:block}.empty-results-wrapper .empty-results-message{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;display:flex;align-items:center;color:#919eab;cursor:default;text-align:center}\n"] }]
143442
143094
  }], ctorParameters: () => [], propDecorators: { options: [{
143443
143095
  type: Input
143444
143096
  }] } });
@@ -143449,7 +143101,7 @@ class ErrorResultsComponent extends BaseComponent {
143449
143101
  this.IconsHelper = IconsHelper;
143450
143102
  }
143451
143103
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ErrorResultsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
143452
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ErrorResultsComponent, isStandalone: true, selector: "tb-error-results", usesInheritance: true, ngImport: i0, template: "<div class=\"tb-loading-error\">\n <tb-icon [settings]=\"IconsHelper.info_gray\" class=\"cursor-default\"></tb-icon>\n <div class=\"error-general error-primary tb-center-text\">{{ L.something_went_wrong | translate }}</div>\n <div class=\"error-general error-secondary tb-center-text\">{{ L.please_contact_us_to_report_the_error | translate }}\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;height:100%;width:100%}.tb-loading-error{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;display:flex;height:100%;justify-content:center;align-items:center;flex-direction:column;color:#5f6b78;padding:20px 0}.tb-loading-error .error-general{margin-top:10px;font-weight:500}.tb-loading-error .error-general.error-primary{font-size:15px}.tb-loading-error .error-general.error-secondary{font-size:13px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: IconComponent, selector: "tb-icon", inputs: ["setCursorPointer", "facilityCommandIcon", "remoteCommandIcon", "settings"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
143104
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ErrorResultsComponent, isStandalone: true, selector: "tb-error-results", usesInheritance: true, ngImport: i0, template: "<div class=\"tb-loading-error\">\n <tb-icon [settings]=\"IconsHelper.info_gray\" class=\"cursor-default\"></tb-icon>\n <div class=\"error-general error-primary tb-center-text\">{{ L.something_went_wrong | translate }}</div>\n <div class=\"error-general error-secondary tb-center-text\">{{ L.please_contact_us_to_report_the_error | translate }}\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;height:100%;width:100%}.tb-loading-error{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;display:flex;height:100%;justify-content:center;align-items:center;flex-direction:column;color:#919eab;padding:20px 0}.tb-loading-error .error-general{margin-top:10px;font-weight:500}.tb-loading-error .error-general.error-primary{font-size:15px}.tb-loading-error .error-general.error-secondary{font-size:13px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: IconComponent, selector: "tb-icon", inputs: ["setCursorPointer", "facilityCommandIcon", "remoteCommandIcon", "settings"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
143453
143105
  }
143454
143106
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ErrorResultsComponent, decorators: [{
143455
143107
  type: Component,
@@ -143457,7 +143109,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
143457
143109
  CommonModule,
143458
143110
  IconModule,
143459
143111
  LocalizationModule,
143460
- ], template: "<div class=\"tb-loading-error\">\n <tb-icon [settings]=\"IconsHelper.info_gray\" class=\"cursor-default\"></tb-icon>\n <div class=\"error-general error-primary tb-center-text\">{{ L.something_went_wrong | translate }}</div>\n <div class=\"error-general error-secondary tb-center-text\">{{ L.please_contact_us_to_report_the_error | translate }}\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;height:100%;width:100%}.tb-loading-error{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;display:flex;height:100%;justify-content:center;align-items:center;flex-direction:column;color:#5f6b78;padding:20px 0}.tb-loading-error .error-general{margin-top:10px;font-weight:500}.tb-loading-error .error-general.error-primary{font-size:15px}.tb-loading-error .error-general.error-secondary{font-size:13px}\n"] }]
143112
+ ], template: "<div class=\"tb-loading-error\">\n <tb-icon [settings]=\"IconsHelper.info_gray\" class=\"cursor-default\"></tb-icon>\n <div class=\"error-general error-primary tb-center-text\">{{ L.something_went_wrong | translate }}</div>\n <div class=\"error-general error-secondary tb-center-text\">{{ L.please_contact_us_to_report_the_error | translate }}\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;height:100%;width:100%}.tb-loading-error{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;display:flex;height:100%;justify-content:center;align-items:center;flex-direction:column;color:#919eab;padding:20px 0}.tb-loading-error .error-general{margin-top:10px;font-weight:500}.tb-loading-error .error-general.error-primary{font-size:15px}.tb-loading-error .error-general.error-secondary{font-size:13px}\n"] }]
143461
143113
  }], ctorParameters: () => [] });
143462
143114
 
143463
143115
  class LoadingOverlayComponent extends BaseComponent {
@@ -143701,7 +143353,7 @@ class LogoComponent extends BaseComponent {
143701
143353
  ngOnInit() {
143702
143354
  }
143703
143355
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LogoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
143704
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LogoComponent, isStandalone: true, selector: "tb-logo", inputs: { classImage: "classImage" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"image$ | async as image\">\n <div [class.tb-h-60]=\"image\" class=\"tb-logo-wrapper {{classImage}}\">\n <img class=\"image-logo\" [src]=\"image\" alt=\"\">\n </div>\n</ng-container>\n", styles: [":host{width:100%}.tb-logo-wrapper{display:flex;justify-content:center}.tb-logo-wrapper.tb-user-menu-logo{height:20px!important;max-width:50px;margin:5px 10px}.image-logo{max-width:100%;object-fit:contain}.mobile-menu-logo{margin:0;padding:5px 6px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TenantLogoModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
143356
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LogoComponent, isStandalone: true, selector: "tb-logo", inputs: { classImage: "classImage" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"image$ | async as image\">\n <div [class.tb-h-60]=\"image\" class=\"tb-logo-wrapper {{classImage}}\">\n <img class=\"image-logo\" [src]=\"image\">\n </div>\n</ng-container>\n", styles: [":host{width:100%}.tb-logo-wrapper{display:flex;justify-content:center}.tb-logo-wrapper.tb-user-menu-logo{height:20px!important;max-width:50px;margin:5px 10px}.image-logo{max-width:100%;object-fit:contain}.mobile-menu-logo{margin:0;padding:5px 6px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TenantLogoModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
143705
143357
  }
143706
143358
  __decorate([
143707
143359
  Select(LogoState.image)
@@ -143711,7 +143363,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
143711
143363
  args: [{ selector: 'tb-logo', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
143712
143364
  CommonModule,
143713
143365
  TenantLogoModule,
143714
- ], template: "<ng-container *ngIf=\"image$ | async as image\">\n <div [class.tb-h-60]=\"image\" class=\"tb-logo-wrapper {{classImage}}\">\n <img class=\"image-logo\" [src]=\"image\" alt=\"\">\n </div>\n</ng-container>\n", styles: [":host{width:100%}.tb-logo-wrapper{display:flex;justify-content:center}.tb-logo-wrapper.tb-user-menu-logo{height:20px!important;max-width:50px;margin:5px 10px}.image-logo{max-width:100%;object-fit:contain}.mobile-menu-logo{margin:0;padding:5px 6px}\n"] }]
143366
+ ], template: "<ng-container *ngIf=\"image$ | async as image\">\n <div [class.tb-h-60]=\"image\" class=\"tb-logo-wrapper {{classImage}}\">\n <img class=\"image-logo\" [src]=\"image\">\n </div>\n</ng-container>\n", styles: [":host{width:100%}.tb-logo-wrapper{display:flex;justify-content:center}.tb-logo-wrapper.tb-user-menu-logo{height:20px!important;max-width:50px;margin:5px 10px}.image-logo{max-width:100%;object-fit:contain}.mobile-menu-logo{margin:0;padding:5px 6px}\n"] }]
143715
143367
  }], ctorParameters: () => [], propDecorators: { image$: [], classImage: [{
143716
143368
  type: Input
143717
143369
  }] } });
@@ -143740,7 +143392,7 @@ class ModalButtonsWrapperComponent extends BaseComponent {
143740
143392
  this.minimize.next(this.isMinimized);
143741
143393
  }
143742
143394
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ModalButtonsWrapperComponent, deps: [{ token: i1$2.Store }], target: i0.ɵɵFactoryTarget.Component }); }
143743
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ModalButtonsWrapperComponent, isStandalone: true, selector: "tb-modal-buttons-wrapper", inputs: { enabledMinimized: "enabledMinimized" }, outputs: { close: "close", minimize: "minimize" }, usesInheritance: true, ngImport: i0, template: "<tb-icon *ngIf=\"enabledMinimized\" (click)=\"toggleMinimize()\" [settings]=\"isMinimized ? IconsHelper.fullscreen : IconsHelper.minus\"\n [tbIconButton]=\"(isMinimized ? L.restore : L.minimize) | translate\"\n class=\"tb-button tb-icon-30 modal-minimize-icon tb-mr-5\" [class.disabled]=\"isMinimizeIconDisabled$ | async\">\n</tb-icon>\n\n<tb-icon (click)=\"close.next()\" [settings]=\"IconsHelper.cancel\" class=\"tb-button tb-icon-30 modal-close-icon\" [attr.data-qa]=\"DataQaAttribute.close\"\n [tbIconButton]=\"L.close | translate\">\n</tb-icon>", styles: [":host{display:flex}tb-icon:hover{height:30px;width:30px;border-radius:4px;background-color:#ecedf0}tb-icon.disabled{opacity:.5;cursor:default;pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: IconComponent, selector: "tb-icon", inputs: ["setCursorPointer", "facilityCommandIcon", "remoteCommandIcon", "settings"] }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: IconButtonDirective, selector: "[tbIconButton]", inputs: ["tbIconButton"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$4.TranslatePipe, name: "translate" }] }); }
143395
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ModalButtonsWrapperComponent, isStandalone: true, selector: "tb-modal-buttons-wrapper", inputs: { enabledMinimized: "enabledMinimized" }, outputs: { close: "close", minimize: "minimize" }, usesInheritance: true, ngImport: i0, template: "<tb-icon *ngIf=\"enabledMinimized\" (click)=\"toggleMinimize()\" [settings]=\"isMinimized ? IconsHelper.fullscreen : IconsHelper.minus\"\n class=\"tb-button tb-icon-30 modal-minimize-icon tb-mr-5\" [class.disabled]=\"isMinimizeIconDisabled$ | async\">\n</tb-icon>\n\n<tb-icon (click)=\"close.next()\" [settings]=\"IconsHelper.cancel\" class=\"tb-button tb-icon-30 modal-close-icon\" [attr.data-qa]=\"DataQaAttribute.close\">\n</tb-icon>", styles: [":host{display:flex}tb-icon:hover{height:30px;width:30px;border-radius:4px;background-color:#ecedf0}tb-icon.disabled{opacity:.5;cursor:default;pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: IconComponent, selector: "tb-icon", inputs: ["setCursorPointer", "facilityCommandIcon", "remoteCommandIcon", "settings"] }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: MatDialogModule }] }); }
143744
143396
  }
143745
143397
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ModalButtonsWrapperComponent, decorators: [{
143746
143398
  type: Component,
@@ -143748,10 +143400,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
143748
143400
  CommonModule,
143749
143401
  IconModule,
143750
143402
  MatSnackBarModule,
143751
- MatDialogModule,
143752
- IconButtonDirective,
143753
- LocalizationModule,
143754
- ], template: "<tb-icon *ngIf=\"enabledMinimized\" (click)=\"toggleMinimize()\" [settings]=\"isMinimized ? IconsHelper.fullscreen : IconsHelper.minus\"\n [tbIconButton]=\"(isMinimized ? L.restore : L.minimize) | translate\"\n class=\"tb-button tb-icon-30 modal-minimize-icon tb-mr-5\" [class.disabled]=\"isMinimizeIconDisabled$ | async\">\n</tb-icon>\n\n<tb-icon (click)=\"close.next()\" [settings]=\"IconsHelper.cancel\" class=\"tb-button tb-icon-30 modal-close-icon\" [attr.data-qa]=\"DataQaAttribute.close\"\n [tbIconButton]=\"L.close | translate\">\n</tb-icon>", styles: [":host{display:flex}tb-icon:hover{height:30px;width:30px;border-radius:4px;background-color:#ecedf0}tb-icon.disabled{opacity:.5;cursor:default;pointer-events:none}\n"] }]
143403
+ MatDialogModule
143404
+ ], template: "<tb-icon *ngIf=\"enabledMinimized\" (click)=\"toggleMinimize()\" [settings]=\"isMinimized ? IconsHelper.fullscreen : IconsHelper.minus\"\n class=\"tb-button tb-icon-30 modal-minimize-icon tb-mr-5\" [class.disabled]=\"isMinimizeIconDisabled$ | async\">\n</tb-icon>\n\n<tb-icon (click)=\"close.next()\" [settings]=\"IconsHelper.cancel\" class=\"tb-button tb-icon-30 modal-close-icon\" [attr.data-qa]=\"DataQaAttribute.close\">\n</tb-icon>", styles: [":host{display:flex}tb-icon:hover{height:30px;width:30px;border-radius:4px;background-color:#ecedf0}tb-icon.disabled{opacity:.5;cursor:default;pointer-events:none}\n"] }]
143755
143405
  }], ctorParameters: () => [{ type: i1$2.Store }], propDecorators: { enabledMinimized: [{
143756
143406
  type: Input
143757
143407
  }], close: [{
@@ -143923,5 +143573,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
143923
143573
  * Generated bundle index. Do not edit.
143924
143574
  */
143925
143575
 
143926
- export { ACCESS_PROFILE_DAT_TYPES_SP, ACTION_STATUS, ACTIVE_BYTE, ADVANCED_OPTIONS_VALUE, ADVANCED_PERMISSION_DEPENDENCIES, AES_DEFAULT_IV, ALERT_DESCRIPTION_DISPLAY_LENGTH, ALERT_NOTIFICATION_CONTAINER, ALLOWED_FILES_FORMATS, ALLOWED_FILES_MAX_SIZE_1_MB, ALLOWED_FILES_MAX_SIZE_200_KB, ALLOWED_FILES_MAX_SIZE_2_MB, ALLOWED_FILES_MAX_SIZE_MB, ALLOWED_NUMBER_OF_DAYS, ALLOWED_UPLOAD_FILES_QUANTITY, ALL_DAYS_IN_BINARY, ALL_DAYS_IN_BYTE, AccessModeIconPipe, AccessProfileChangeValidTypesText, AccessProfileDayTypesText, AccessProfileRestrictionTypesText, AccessProfileShortDayTypesText, AccessProfileSpecialDaysMap, AccessProfileTypesText, AccountFrameMessageBarComponent, AccountLinkedEntitiesText, AccountLinkedEntityText, AccountSetPasswordAction, AccountSetPasswordErrorAction, AccountSetPasswordInitAction, ActionStatusService, AddSmartparkAction, AddUserAction, AdministrativeNotificationEntityType, AdministrativeNotificationsModule, AdministrativeNotificationsState, AggregatedStatusText, AlertChangedAction, AlertNotificationBorderClass, AlertNotificationClassificationMap, AlertNotificationComponent, AlertNotificationService, AlertsAndNotificationsService, AlertsAndNotificationsState, AlertsDeviceTypeLabel, AlertsDeviceTypeOptions, AlertsDeviceTypeOptionsMapping, AmountStepSurchargeMinLimit, AnalyticsCommandsText, AnalyticsEventsText, AnalyticsService, AnalyticsSourceComponent, AnalyticsSourceProps, AppConfigService, AppModuleService, AppModuleToMainPermissionTypeMap, AppSectionLabel, AppSectionModuleMenuOrder, AppSectionRoute, AppSettingsService, AppType, AuditActionTypeText, AuditLogoutAction, AuthModule, AuthRouteGuard, AuthService, AuthTokenService, Authenticate2FAforUser, AuthenticateMultipleTenantsAction, AutofocusDirective, BC_DS_P_VALIDATION, BOM_UNICODE, BackOfficeParkerType, BackofficeAutheticateAction, BarcodeTypeLength, BarrireStateText, BaseComponent, BaseDeviceItemComponent, BaseDeviceService, BaseFacilityCommandsConfigService, BaseFacilityCommandsService, BaseNotificationService, BillDispenserStatusText, BillTypeText, BillValidatorStatusText, ButtonStatus, CANCEL_ALL_RELAY_VALUE, CLogItPipe, COLORS, CREDIT_CARD_POSTFIX_LENGTH, CalculatorModule, CalculatorState, CanDeactivateService, CancelWhatsAppReceiptAction, CarModule, CarState, CassetteStatusText, CategoryModule, CategoryState, CentToCoinPipe, ChangeLanguageAction, ChangePasswordAction, ChartLayout, CleanLogoAction, ClearAdministrativeNotificationsAction, ClearAdministrativeNotificationsByEntityTypeAction, ClearAlertsAndNotificationsAction, ClearAllButtonDirective, ClearBaseZonesAction, ClearCalculatorPriceAction, ClearCategoriesAction, ClearColorsAction, ClearConflictDetected, ClearDeviceAction, ClearDeviceEventsExpanded, ClearDevicesAction, ClearEventActivitiesExpanded, ClearFacilityDictionaryAction, ClearGroupsAction, ClearGuestAction, ClearGuestProfilesAction, ClearGuestsListAction, ClearHandledGuest, ClearInactiveSelectedParkAction, ClearJobTitlesAction, ClearLocateTicketSearchAction, ClearLocatedTicketAction, ClearLprTransactionsExpanded, ClearMacroCommandsAction, ClearModelsAction, ClearParkerAction, ClearRateAction, ClearSearchResultsAction, ClearSearchTermAction, ClearSearchTicketAction, ClearSelectedFacilityAction, ClearSelectedParkAction, ClearSelectedRow, ClearSelectedSmartparkAction, ClearSmartparksBasicAction, ClearSpAndSparkVersionsAction, ClearSpecialTransientTablesAction, ClearSuspendedParkActivitiesAction, ClearUserSettingsByCategoryAction, ClearUsersAction, ClearValidationTypesAction, ClearZoneAction, ClearZonesAction, ClearZsAction, cloudServiceProxies as Cloud, CloudConfirmDialogComponent, CofCredentialSubTypeText, CoinStatusText, CollapsedGuestsByBatchIdAction, ComAggregatedStatus, ComAggregatedStatusText, ComStatusIconComponent, CommandCenterModuleResolver, CommandNotificationBorderClass, CommandNotificationComponent, CommandNotificationDisplayCase, CommandNotificationService, CommandNotificationType, CommandsLocalizationKey, CommonPagesModule, CompanyService, ConfigResolver, ConnectSmartparkAction, ContainerRefDirective, CoreEntities, CouponSearchFieldSelectorText, CreateBasicBatchAction, CreateBasicGuestAction, CreateBatchAction, CreateCategoryAction, CreateColorAction, CreateGroupAction, CreateGuestAction, CreateJobTitleAction, CreateModelAction, CreateOrUpdateSMTPDetailsAction, CredentialTypeText, CreditCardTypeText, CrudOperationText, CurlyToBoldPipe, DATA_IMAGE_BASE64_PREFIX, DATE_TIME_ERROR_INVALID_DATE, DATE_TIME_ERROR_INVALID_DATE_RANGE, DATE_TIME_ERROR_REQUIRED, DEFAULT_DATE_FORMAT, DEFAULT_EXPIRATION_MONTHS_COUNT, DEFAULT_MINIMUM_LENGTH, DEFAULT_MODULE, DEFAULT_PASSWORD_HISTORY_COUNT, DEFAULT_PERMITTED_CREDENTIALS, DEFAULT_SMART_PARK_DATE_TIME, DEFAULT_SORT_MENU, DEFAULT_SPECIAL_TRANSIENT_CATEGORY, DEFAULT_STICKER_NUM, DEVICE_EVENT_OPTIONS_KEY, DEVICE_NAVIGATE_KEY, DISABLED_FOCUS_ELEMENT_CLASSES, DISABLED_FOCUS_ELEMENT_TYPES, DYNAMIC_PRICING_CONDITION, DataQaAttribute, DateService, DateValidityText, DaysText, DecimalToAmountPipe, DecimalToCurrencyPipe, DefaultImageTimeout, DeleteCategoryAction, DeleteGroupAction, DeleteGuestAction, DeleteJobTitleAction, DeleteLogoAction, DeleteUserAction, DetectBrowserService, DeviceActivityChangedAction, DeviceActivityLabel, DeviceActivityMode, DeviceActivityModeIcon, DeviceActivityModeText, DeviceActivityStatus, DeviceActivityType, DeviceAggregatedStatus, DeviceAggregatedStatusText, DeviceEventChangedAction, DeviceIconComponent, DeviceIndicationStatus, DeviceLaneTypes, DeviceLoop, DeviceModule, DevicePipeModule, DevicePrinterStatusText, DeviceRemoteCommandsService, DeviceSortBy, DeviceStatusBaseComponent, DeviceStatusChangedAction, DeviceTypeIconName, DeviceTypeText, DeviceTypesAlertsMapping, DevicesViewMode, DialogMode, DipSwitchStatus, Disable2FAAction, DisableUserSSOAction, DisabledDirective, DisconnectSmartParkAction, DoorSensorStatus, DoorStatusText, DurationMessageBar, DynamicContainerComponent, DynamicEllipsisTooltipDirective, ENGLISH_LANGUAGE, ENVIRONMENT, EXPIRATION_MONTHS_COUNT_OPTIONS, edgeServiceProxies as Edge, EditUserAction, ElectronicWalletPaymentMethodTypesText, EllipsisMultilineDirective, EmailServerModule, EmailServerState, EmptyResultsComponent, Enable2FAAction, EnumsToArrayPipe, EnvironmentModeText, ErrorPageComponent, ErrorPageResolver, ErrorResultsComponent, ExceedingBehaviorTypeText, ExpandGuestsByBatchIdAction, ExportFileService, ExportGuestsAction, ExportPdfSmartparksTableAction, ExportSmartparkAction, FONT_BASE64, FacilitiesAndSmartparksState, FacilityChangedAction, FacilityMenuService, FacilityModule, FacilityRemoteCommandExecutedAction, FacilityRemoteCommandTypesIcon, FacilityRemoteCommandsLocalizationKey, FacilityRemoteCommandsMenuItems, FacilityService, FacilityState, FieldLabelComponent, FieldValidationsComponent, FileGenerateMethod, FileSanitizerService, FileService, FilterByDeviceType, FilterDevicesByTypePipe, FilterDevicesByZonePipe, FilterKeysPipe, FilterNumbersPipe, FilterPipe, FlattenedCoreEntities, FloatMessageBarService, ForgotPasswordAction, ForgotPasswordTenantlessAction, FormValidationsComponent, FormattedInputDirective, FrequentParkingActionText, FrequentParkingErrorActionText, GATE_STATE_VALUE, GeneralActionService, GenerateSearchParamsDto, GenerateSlimSearchParamsDto, GetAllLocalizationsAction, GetLogoAction, GetRateByIdAction, GetSpecialTransientTablesAction, GetUserSettingsByCategoryAction, GlobalErrorService, GlobalMessageContainerComponent, GroupModule, GroupPermissionsPipe, GroupState, GuestModule, GuestOpenTicketChoice, GuestOpenTicketDialogComponent, GuestOpenTicketResolutionService, GuestSearchFieldSelectorText, GuestState, GuestTypeCastText, GuestTypesText, HOUR_FORMAT_12, HOUR_FORMAT_24, HOUR_FORMAT_FULL_DAY, HandleAlertsAction, HandleNotificationAction, HandledNotificationAction, HasActionErrored, HealthAction, HoldRelayMode, HoldRelayModeText, HopperStatusText, HotelGuestSearchFieldSelectorText, HtmlSanitizerService, HttpCancelBlackListUrls, HttpCancelInterceptor, HttpCancelService, HumanizePipe, INPUT_SEARCH_DEBOUNCE_TIME, INPUT_SEARCH_DEBOUNCE_TIME_LOW, INPUT_SEARCH_DEBOUNCE_TIME_MEDIUM, IconButtonDirective, IconColumnComponent, IconComponent, IconModule, IconsHelper, IconsHelperText, identityServiceProxies as Identity, ImportMonthyStastusFieldSelectorText, InitAddSmartparkConnectionAction, InitSMTPDetailsAction, InitSessionFromLocalStorageAction, InitSmartparkTransportAction, IntercomComponent, InternetConnectionService, InternetConnectionStatus, IsActionExecuting, IsEllipsisDirective, JobTitleModule, JobTitleState, LOCAL_ENGLISH_LANGUAGE, LOCATION_OPTIONS, LOGGED_TENANT_KEY, LOOKUP_NAME_MAX_LENGTH, LanguageTypeKeys, LayoutModule, LayoutState, Load2FAUserAction, LoadAccessProfileBaseZonesAction, LoadAccessProfileZoneAction, LoadAccessProfileZonesAction, LoadAdministrativeNotificationsAction, LoadAlertsAndNotificationsAction, LoadAppConfigurationAction, LoadBackofficeAppConfigurationAction, LoadBackofficeSmartparksTableAction, LoadBackofficeSpAndSparkVersionsAction, LoadBackofficeVarByIdAction, LoadBackofficeVarsAction, LoadCalculatorPriceAction, LoadCategoriesAction, LoadCcMainBaseZonesAction, LoadCcMainZonesAction, LoadColorsAction, LoadColorsAction1, LoadColorsAction2, LoadColorsAction3, LoadColorsAction4, LoadColorsAction5, LoadDeviceAction, LoadDeviceEventActivitiesAction, LoadDeviceEventsAction, LoadDeviceEventsCollapse, LoadDeviceLprTransactionsAction, LoadDeviceStatusAction, LoadDevicesAction, LoadDevicesByTypeAction, LoadDynamicPricingBaseZonesAction, LoadDynamicPricingZoneAction, LoadEventActivitiesCollapse, LoadFacilityAction, LoadFacilityRemoteCommandsRefAction, LoadGroupAction, LoadGuestByIdAction, LoadGuestProfilesAction, LoadGuestsAction, LoadGuestsByBatchIdAction, LoadGuestsByBatchIdCancelledAction, LoadJobTitleAction, LoadLocateTicketSearchAction, LoadLocatedTicketAction, LoadLprTransactionsCollapse, LoadMacroCommandsAction, LoadModelsAction, LoadModelsAction1, LoadModelsAction2, LoadModelsAction3, LoadModelsAction4, LoadModelsAction5, LoadOverflowPriceTableAction, LoadParkActivitiesAction, LoadParkDevicesAction, LoadParkerAction, LoadParkersAction, LoadParkingLotAction, LoadParksAction, LoadRateByIdAction, LoadRatesAction, LoadRemoteCommandsRefAction, LoadReportsBaseZonesAction, LoadReportsZoneAction, LoadReportsZonesAction, LoadSMTPDetailsAction, LoadSelectedDeviceAction, LoadSmartparksAction, LoadSmartparksDropdownAction, LoadSmartparksTableAction, LoadSpAndSparkVersionsAction, LoadStickerPriceTableAction, LoadTicketNumParkersAction, LoadTransientPriceTableAction, LoadUserCapabilitiesAction, LoadUsersAction, LoadUsersAdministrativeNotificationsAction, LoadValidationTypeAction, LoadVarsAction, LoadZsAction, LoadingOverlayComponent, LocalStorageMigrator, LocalStorageService, Localization, LocalizationModule, LocalizationResolver, LocalizationService, LocalizationState, LoginModule, LoginRequestAction, LoginService, LoginState, LoginSuccess, LogoComponent, LogoState, LogoutAction, LogoutMobileAction, LoopStatus, LowerCaseUrlSerializer, LprTransactionsChangedAction, LprTransactionsOptionsText, LprTransactionsSearchFieldSelectorText, MANUAL_ACTION_REASON_NAME_MAX_LENGTH, MAX_ALLOWED_BADGE_VALUE, MAX_ALLOWED_CURRENT_BALANCE, MAX_ALLOWED_DEDUCTION_VALUE, MAX_ALLOWED_GUEST_UNIT_QUANTITY, MAX_ALLOWED_IDENTIFIER_VALUE, MAX_ALLOWED_STARTING_PURSE_VALUE, MAX_CAPACITY_VALUE, MAX_CARDS, MAX_CAR_PLATES, MAX_EMAIL_CHARACTERS_LENGTH, MAX_EXPORT_RECORDS, MAX_HOTEL_ROOM_NUMBER_LENGTH, MAX_INT16_VALUE, MAX_INT32_VALUE, MAX_INTEGER_VALUE, MAX_LENGTH_BATCH_NAME, MAX_LENGTH_DESCRIPTION_50, MAX_LENGTH_DESCRIPTION_70, MAX_LENGTH_FOOTER, MAX_LENGTH_LEFT, MAX_LENGTH_LEFT_BACKWARD_COMPATIBILITY, MAX_LENGTH_MANUAL_TEXT, MAX_LENGTH_NAME_100, MAX_LENGTH_NAME_20, MAX_LENGTH_NAME_25, MAX_LENGTH_NAME_30, MAX_LENGTH_NAME_50, MAX_LENGTH_NOTES, MAX_LENGTH_QUANTITY, MAX_LENGTH_REASON_DESCRIPTION, MAX_LENGTH_SERACH_TERM, MAX_LENGTH_SERACH_TERM_30, MAX_MOBILE_LENGTH, MAX_NUMBER_OF_NIGHTS, MAX_NUMBER_OF_ROW_IN_MENU, MAX_OCCUPANCY_VALUE, MAX_PERIOD_TIME, MAX_PLATE_ID_LENGTH, MAX_PRICE_NO_TIME_LIMIT_VALUE, MAX_PRICE_PERIOD_VALUE, MAX_REPEAT_COUNT_VALUE, MAX_RESULTS, MAX_ROLE_NAME_LENGTH, MAX_SP, MAX_TIME_RANGE_ITEMS_PER_KEY, MC_READER_ID, MESSAGE_BAR_DEFAULT_ID, MINIMUM_DROPDOWN_RESULTS_WITHOUT_SEARCH, MINIMUM_LENGTH_OPTIONS, MINUTES_PER_HOUR, MIN_ALLOWED_GUEST_UNIT_QUANTITY, MIN_LENGTH_QUANTITY, MIN_MESSAGE_DURATION, MIN_NUMBER_OF_ROW_IN_MENU, MIN_TIME_RANGE_ITEMS_PER_KEY, MOBILE_REFRESH_INFO, MSALGuardConfigFactory, MSALInstanceFactory, MSALInterceptorConfigFactory, MSLAuthService, MULTIPLE, MainModuleToSubModulesPermissionTypeMap, MatHintErrorDirective, MaxAllowedSurchargeAmount, MaxAllowedSurchargeMaxLimit, MaxAllowedSurchargeMinLimit, MaxDisplayTimeout, MaxIPV4TextLength, MaxSurchargeNameLength, MenuAppModuleLoadAction, MenuClearAction, MenuLoadAction, MenuService, MenuSubModuleClearAction, MenuSubModuleLoadAction, MessageBarComponent, MessageBarContainerComponent, MessageBarModule, MessageBarPosition, MessageBarService, MessageBarStatus, MiddayPeriod, MinAllowedSurchargeAmount, MinAllowedSurchargeMaxLimit, MinAllowedSurchargeMinLimit, MinDisplayTimeout, MobileAppSectionLabel, MobileLogoutAction, ModalButtonsWrapperComponent, ModalService, ModuleGuard, ModuleMenuBaseComponent, MonthlyRenewalSettingsActionTypesText, MonthlyRenewalSettingsActionTypesValueText, MonthlySearchFieldSelectorText, MslEventType, NONE_ACTIVE_BYTE, NONE_USER_ID, NO_RESULT, NativeElementInjectorDirective, NotSupportedBrowserGuard, NotSupportedBrowserPageComponent, NotificationChangedAction, NotificationClass, NotificationClassficationType, NotificationCloseAllButtonComponent, NotificationConfig, NotificationEventService, NotificationHPositions, NotificationModule, NotificationSeverityText, NotificationTypeLabelComponent, NotificationTypeText, NotificationVPositions, NotificationsModule, ONE_DAY_IN_MINUTES_VALUE, ONE_MINUTE_IN_MILLISECONDS, ONE_SECOND_IN_MILLISECONDS, OPEN_TICKET_CHECK_MIN_VERSION, OPEN_TICKET_CHECK_NOTICE_DELAY_MS, OffScreenDirective, OpenIdAuthInitializeService, OpenIdAuthService, OpenIdAutheticateAction, Operator, OrderBy, OrderByPipe, OrderDirection, OrphanFacilitiesPipe, PARKER_SEARCH_AUTO_REDIRECT, PASSWORD_EXPIRED, PASSWORD_HISTORY_COUNT_OPTIONS, PREVENT_CLICK_ELEMENT_CLASSES, ParkActivitiesModule, ParkActivitiesState, ParkActivityChangedAction, ParkConnectionStatus, ParkConnectionStatusClass, ParkConnectionStatusText, ParkManagerModule, ParkManagerState, ParkService, ParkTimeService, ParkerSearchTerm, ParkerService, ParkerState, ParkerTagsText, ParkerTypesText, PasswordScore, PasswordStrengthService, PaymentSearchFieldSelectorText, PaymentServiceTypeText, PaymentsTypesText, PermissionCacheService, PermissionConfigService, PermissionGroupText, PermissionTypeSupportedVersionDictionary, PermissionTypeText, PermissionsService, PrintReceiptAction, ProfileTypeText, QUERY_INTENT_PATTERNS, RATE_ID_WITH_VALUE_2, REDIRECT_URL, RELAY_2_VALUE, RELAY_3_VALUE, RELAY_4_VALUE, REPORT_CATEGORY_ALL, RESET_PASSWORD_EMAIL, RESTRICTED_CAR_NOTE_MAX_LENGTH, REVENUE_DATA_UNAVAILABLE, RTL_LANGUAGES, RTObjectObject, RangeModes, RangeModesText, RateModule, RateState, RealtimeEventService, RealtimeResolver, ReceiptGeneratedAction, RefreshTokenService, RefreshTokenState, RelayStatus, ReloadParkerAction, RemoteCommandService, RemoteCommandTypesIcon, RemoteValidationModule, RemoteValidationState, RemoveExpiredAlertsAndNotificationsAction, RemoveSmartparkBasicAction, ReportMethodDictionary, ResendPendingAdminInvitationsAction, ResendUserInvitationAction, ResetRatesAction, RestartLinkComponent, RestartLinkModule, RestrictionLocationTypeText, RestrictionLocationTypeTextTable, RestrictionTypeText, RevenueService, RouteService, RowOperation, rpcServiceProxies as Rpc, SESSION, SPECIAL_TRANSIENT_CATEGORIES, SPECIAL_TRANSIENT_LABEL_NOT_AVAILABLE, STATUS_CODE_SERVER_VALIDATION, STATUS_CODE_UNAUTHORIZED, STRING_ZERO, SUPER_PARK_ROUTE_KEY, SUPPORETD_RESTORE_TICKET_TYPES, SUPPORTED_CAR_ON_LOOP_DEVICE_TYPES, SUPPORTED_DEVICES_SCHEDULER, SUPPORTED_GATE_DEVICE_TYPES, SUPPORTED_LPR_TRANSACTIONS_DEVICE_TYPES, SUPPORTED_PAYMENT_FOR_ISF_TYPES, SUPPORTED_RESTORE_TICKET_DEVICE_TYPES, SUPPORTED_STATUS_DEVICE_TYPES, SUPPORTED_TICKET_INSIDE_DEVICE_TYPES, SYSTEM_ALERT_VALUE, SanitizedInnerHtmlDirective, SearchFacilitiesMode, SearchFieldSelectorText, SearchTicketAction, SearchValueHighlightComponent, SecurityModule, SecurityState, SelectDeviceAction, SelectLprTransactionsRowAction, SelectParkAction, SelectSmartParkAction, SelectedRowAction, SendEmailFromEntityAction, SendEmailToGuestAction, SendGuestPassesToEmailAction, SendTestEmailAction, ServiceProxyModule, ServicesRunningStatusChangedAction, SessionState, SessionStorageService, SetBackofficeSmartParkVersionsAction, SetBasicMenuAction, SetConflictDetected, SetDeviceEventsExpanded, SetDeviceRemoteCommandsMapAction, SetDeviceStatusAction, SetDeviceViewModeAction, SetEnableHotelPostingAction, SetEventActivitiesExpanded, SetFacilityRemoteCommandsMapAction, SetGuestsAction, SetLprTransactionsExpanded, SetMobileModeAction, SetParkActivitiesAction, SetRealTimeEventStatusAction, SetSearchTermAction, SetSelectedParkAction, SetSelectedSmartparkAction, SetSmartParkAction, SetSmartParkTableAction, SetSmartParkVersionsAction, SetSmartparkBasicAction, SetSmartparkBasicAllAction, SetSmartparkEdgeWebhooksAction, SetStateAction, SetTFASetupAction, SetTenantUserAction, SetTicketIdentifierAction, SetUserNameAction, SetUserStatusAction, SetUsersAction, SetkeepMeLoggedInAction, SharedComponentsModule, SharedDirectivesModule, SharedModule, SharedPipesModule, SideNavSortBy, SidenavModule, SidenavState, SignalR, SignalRObject, SignalRRefreshTokenAction, SingleSignOnProviderText, SmartParkDeviceStatusChangedAction, SmartParkStatusText, SmartparkDateTimePipe, SmartparkModule, SmartparkService, SmartparkState, SortDevicesPipe, SortPipe, SparkKeyboardEvent, SparkNotification, SpecialDaysPipe, SpecialTransientCategory, SpecialTransientCategoryText, SpinnerDiameterSize, StaticMessageBarService, StatusIconComponent, StickerSearchFieldSelectorText, StopPropagationDirective, StringItPipe, SubModuleGuard, SubstrHightlightManyPipe, SubstrHightlightPipe, SubstrHightlightSinglePipe, SwallowUnitStatusText, SwitchUserToSSOAction, SyncUsersAndRolesBySmartparkIdAction, TAKE_TOP_300, TBFormatPipe, TBNumberDirective, TENANT_KEY, TENS_MULTIPLIER, TableColumnGroup, TableColumnGroupLabel, TableRowHeightSizes, TableTypeText, TagLabelType, TechToolsModuleResolver, TenantClearAction, TenantLoadAction, TenantLogoModule, TenantService, TenantlessLoginMode, TibaDateFormat, TibaMatDialogConfig, TibaRetryPolicy, TibaValidators, TicketService, TimeAgoPipe, TimeElapsedCounterComponent, TimeElapsedFormats, TimeElapsedPipe, TimeRangeFormats, TimeRangePipe, ToggleDrawerAction, ToggleDrawerCollapseAction, TooltipPositions, TrackAction, TransientParkingActionText, TranslateLocalPipe, TreeFilterKeysPipe, TreeMode, TruncatePipe, TypeCastText, UNSAVED_DATA, USER_IS_TEMPORARY_BLOCKED, UnloadParkingLotAction, UnsafeHtmlValidatorDirective, UpdateAndActivateUserAction, UpdateAuthTokenAction, UpdateBasicGuestAction, UpdateDocumentAction, UpdateGuestAction, UpdateGuestLocationAction, UpdateMobileMode, UpdateSmartparkAction, UpdateSmartparkNameAction, UpdateSmartparkVarAction, UpdateTenantInfoProps, UpdateTenantSingleSignOnAction, UpdateTicketPlateIdAction, UpdateUserAlertsPreferencesAction, UpdateUserNotificaitonsPreferencesAction, UpdateUserSettingsAction, UpdateUserSettingsInSessionAction, UploadLogoAction, UserCreationType, UserModule, UserSettingsModule, UserSettingsState, UserState, VALIDATION_TYPE_BY_HOURS_41, VALIDATION_TYPE_BY_HOURS_42, VALID_DATETIME_FILTERS, VALID_TIME_MAX_LENGTH, VALID_ZIP_CODE_LENGTH, VERSION_10_1_0, VERSION_10_2_0, VERSION_10_2_1, VERSION_10_3_0, VERSION_10_3_9, VERSION_10_4_0, VERSION_25_1_0, VERSION_25_2_0, VERSION_25_2_1, VERSION_25_3_0, VERSION_25_3_1, VERSION_25_3_6, VERSION_25_4_0, VERSION_25_4_1, VERSION_26_1_0, VERSION_26_1_1, VERSION_26_1_2, VERSION_26_2_0, VERSION_26_3_0, VERSION_7_4_0, VERSION_7_4_1, VERSION_8_1_0, VERSION_8_2_0, VERSION_8_3_0, VERSION_8_4_0, VERSION_9_1_0, VERSION_9_2_0, VERSION_9_2_2, VERSION_9_3_0, VERSION_9_4_0, VGuestWithBatchTableData, VIRTUAL_DEVICE_LPR_COMPACT_LAYOUT_MEDIA_QUERY, ValidateUserTokenAction, ValidationService, ValidationStickerType, ValidationTypeModule, ValidationTypeState, VarDirective, Verify2FactorAuthenticationAction, VirtualValidationStatusText, WhatsAppReceiptAction, WrapFnPipe, YEAR_LIMIT_IN_DAYS, ZerofyNegativePipe, ZoneChangedAction, ZoneModule, ZoneState, accountModuleAnimation, adjustForTimezone, allowSpecialKeys, alphanumericRegex, appModuleAnimation, areDatesIdentical, areVersionsCompatible, arrayEquals, arraysAreDifferent, baseReduce, blobToBase64, buildMessageInfos, buildMessages, camelize, cancelOn, canceled, capitalizeFirstLetter, compareValues, composeSubCategoryLabel, convert24HoursToAmPM, convertAmPmTo24Hours, convertBinaryToDecimal, convertCentToWholeCoin, convertDecimalToBinary, convertFeaturePermissionsToDictionary, convertFormatWithoutTime, convertWholeCoinToCent, createDescriptor, createMessageText, dateDiffInSeconds, days, daysTranslation, decimalNumberRegex, decimalPercentageRegex, decimalPositiveNumberRegex, decryptClientSecret, delayCancellation, deviceIndicationStatusLocalization, deviceTypeFilterOptions, diffInMillis, dispatched, distinctObjectByProperties, distinctObjectByProperty, downloadFile, ensureObjectMetadata, entryDevicesLaneTypes, errored, exceedsLength, exitDevicesLaneTypes, extractErrorsChanges, extractNumber, extractResetChanges, extractSetValueChanges, extractToggleStatusChanges, extractTouchedChanges, extractUpdateValueAndValidityChanges, filterDependentPermissions, filterDevicesByTypes, filterKeyValueBaseReduce, findChildRoute, findObjectDifferences, findParentElement, findParentElementDimensions, findParentRoute, findParentRouteConfig, flattenByKey, formatMinutesToTimeNumber, formatTimeToMinutes, formatTimeToString, formatTimeWithMidnight, formatTimeWithSeparator, formatTimeWithoutMidnight, formatTimeWithoutSeparator, formatTimeWithoutSeperatorAndWithMidnight, formatTimeWithoutSeperatorAndWithoutMidnight, getActivatedRoutePathSegment, getAddress, getCurrentLang, getDateTimeInSeconds, getDateWithoutTime, getDaysFromValue, getDefaultDeviceStatus, getFormattedTime, getMomenWithTime, getMomentNullable, getMomentWithoutTime, getNavigationRoute, getObjectMetadata, getParkerTypesText, getPasswordMinimalLength, getSecondsBackoff, getTooltipTextByParkerType, getUserTimeZone, getUtcMomentNullable, hasMiddayPeriod, hasMonthName, hasRequiredField, hasUnsafeHtmlValue, hasValue, humanizeTimeElapsed, humanizeUtcTimeElapsed, identity, initializeMsal, initializeOpenId, integerNumberRegex, integerPositiveNumberRegex, ipv4Regex, isBoolean, isCharacterLengthValid, isDefinedAndNotEmpty, isDeviceActive, isDeviceDisplayedActive, isDeviceInFilterDeviceTypes, isDeviceInFiltersDeviceTypes, isFalsy, isIOSDevice, isMaxDaysRangeValid, isNullOrEmpty, isNumber, isObjectEmpty, isQueryIntentRequest, isSearchFieldChanged, isSingularOrPlural, isTrueInBinary, isTruthy, isVersionGreaterThanEqual, loadHTMLContent, lowerCase, lowerCaseFirstLetter, mapTransientTags, markEntitiesAsChanged, markEntityAsUnchanged, matchesDeviceCriteria, matchesDeviceParkingLotCriteria, matchesDevicesParkingLotCriteria, minutesToTime, mobileRegex, nameof, navigateToForbiddenAccessPage, navigateToNotSupportedBrowserPage, noEmojiRegex, notificationAnimation, numberWithLeadingZero, objectKeystoLowerCase, ofStatus, omitKeys, openBackgroundIframe, openCloseFiltersAnimation, parentParkBaseEventTypes, parentParkEventTypes, parkBaseEventTypes, parkEventTypes, parkerEnumToText, parseApiErrorData, parseApiErrorMessage, parseDateTimeToSparkParkTime, parseSmartParkTime, passwordRegex, percentageRegex, printSpecialDaysText, printStackTrace, readjustForTimezone, regexExp, remoteCommandLocalizationMap, replaceAll, resolveAccessModeIcon, resolveSpecialTransientCategory, rtEventPermissions, safeParse, sanitizeHtmlValue, searchBarPopupAnimation, setDateTimeErrorMessage, setErrorMessage, shortDaysTranslation, sleep, slideFromBottom, slideFromRight, slideFromUp, slideUpDown, successful, timeToMinutes, timeToMoment, toInt, toNumberMap, toStringMap, truncate, wrapConstructor };
143576
+ export { ACCESS_PROFILE_DAT_TYPES_SP, ACTION_STATUS, ACTIVE_BYTE, ADVANCED_OPTIONS_VALUE, ADVANCED_PERMISSION_DEPENDENCIES, AES_DEFAULT_IV, ALERT_DESCRIPTION_DISPLAY_LENGTH, ALERT_NOTIFICATION_CONTAINER, ALLOWED_FILES_FORMATS, ALLOWED_FILES_MAX_SIZE_1_MB, ALLOWED_FILES_MAX_SIZE_200_KB, ALLOWED_FILES_MAX_SIZE_2_MB, ALLOWED_FILES_MAX_SIZE_MB, ALLOWED_NUMBER_OF_DAYS, ALLOWED_UPLOAD_FILES_QUANTITY, ALL_DAYS_IN_BINARY, ALL_DAYS_IN_BYTE, AccessModeIconPipe, AccessProfileChangeValidTypesText, AccessProfileDayTypesText, AccessProfileRestrictionTypesText, AccessProfileShortDayTypesText, AccessProfileSpecialDaysMap, AccessProfileTypesText, AccountFrameMessageBarComponent, AccountLinkedEntitiesText, AccountLinkedEntityText, AccountSetPasswordAction, AccountSetPasswordErrorAction, AccountSetPasswordInitAction, ActionStatusService, AddSmartparkAction, AddUserAction, AdministrativeNotificationEntityType, AdministrativeNotificationsModule, AdministrativeNotificationsState, AggregatedStatusText, AlertChangedAction, AlertNotificationBorderClass, AlertNotificationClassificationMap, AlertNotificationComponent, AlertNotificationService, AlertsAndNotificationsService, AlertsAndNotificationsState, AlertsDeviceTypeLabel, AlertsDeviceTypeOptions, AlertsDeviceTypeOptionsMapping, AmountStepSurchargeMinLimit, AnalyticsCommandsText, AnalyticsEventsText, AnalyticsService, AnalyticsSourceComponent, AnalyticsSourceProps, AppConfigService, AppModuleService, AppModuleToMainPermissionTypeMap, AppSectionLabel, AppSectionModuleMenuOrder, AppSectionRoute, AppSettingsService, AppType, AuditActionTypeText, AuditLogoutAction, AuthModule, AuthRouteGuard, AuthService, AuthTokenService, Authenticate2FAforUser, AuthenticateMultipleTenantsAction, AutofocusDirective, BC_DS_P_VALIDATION, BOM_UNICODE, BackOfficeParkerType, BackofficeAutheticateAction, BarcodeTypeLength, BarrireStateText, BaseComponent, BaseDeviceItemComponent, BaseDeviceService, BaseFacilityCommandsConfigService, BaseFacilityCommandsService, BaseNotificationService, BillDispenserStatusText, BillTypeText, BillValidatorStatusText, ButtonStatus, CANCEL_ALL_RELAY_VALUE, CLogItPipe, COLORS, CREDIT_CARD_POSTFIX_LENGTH, CalculatorModule, CalculatorState, CanDeactivateService, CancelWhatsAppReceiptAction, CarModule, CarState, CassetteStatusText, CategoryModule, CategoryState, CentToCoinPipe, ChangeLanguageAction, ChangePasswordAction, ChartLayout, CleanLogoAction, ClearAdministrativeNotificationsAction, ClearAdministrativeNotificationsByEntityTypeAction, ClearAlertsAndNotificationsAction, ClearBaseZonesAction, ClearCalculatorPriceAction, ClearCategoriesAction, ClearColorsAction, ClearConflictDetected, ClearDeviceAction, ClearDeviceEventsExpanded, ClearDevicesAction, ClearEventActivitiesExpanded, ClearFacilityDictionaryAction, ClearGroupsAction, ClearGuestAction, ClearGuestProfilesAction, ClearGuestsListAction, ClearHandledGuest, ClearInactiveSelectedParkAction, ClearJobTitlesAction, ClearLocateTicketSearchAction, ClearLocatedTicketAction, ClearLprTransactionsExpanded, ClearMacroCommandsAction, ClearModelsAction, ClearParkerAction, ClearRateAction, ClearSearchResultsAction, ClearSearchTermAction, ClearSearchTicketAction, ClearSelectedFacilityAction, ClearSelectedParkAction, ClearSelectedRow, ClearSelectedSmartparkAction, ClearSmartparksBasicAction, ClearSpAndSparkVersionsAction, ClearSpecialTransientTablesAction, ClearSuspendedParkActivitiesAction, ClearUserSettingsByCategoryAction, ClearUsersAction, ClearValidationTypesAction, ClearZoneAction, ClearZonesAction, ClearZsAction, cloudServiceProxies as Cloud, CloudConfirmDialogComponent, CofCredentialSubTypeText, CoinStatusText, CollapsedGuestsByBatchIdAction, ComAggregatedStatus, ComAggregatedStatusText, ComStatusIconComponent, CommandCenterModuleResolver, CommandNotificationBorderClass, CommandNotificationComponent, CommandNotificationDisplayCase, CommandNotificationService, CommandNotificationType, CommandsLocalizationKey, CommonPagesModule, CompanyService, ConfigResolver, ConnectSmartparkAction, ContainerRefDirective, CoreEntities, CouponSearchFieldSelectorText, CreateBasicBatchAction, CreateBasicGuestAction, CreateBatchAction, CreateCategoryAction, CreateColorAction, CreateGroupAction, CreateGuestAction, CreateJobTitleAction, CreateModelAction, CreateOrUpdateSMTPDetailsAction, CredentialTypeText, CreditCardTypeText, CrudOperationText, CurlyToBoldPipe, DATA_IMAGE_BASE64_PREFIX, DATE_TIME_ERROR_INVALID_DATE, DATE_TIME_ERROR_INVALID_DATE_RANGE, DATE_TIME_ERROR_REQUIRED, DEFAULT_DATE_FORMAT, DEFAULT_EXPIRATION_MONTHS_COUNT, DEFAULT_MINIMUM_LENGTH, DEFAULT_MODULE, DEFAULT_PASSWORD_HISTORY_COUNT, DEFAULT_PERMITTED_CREDENTIALS, DEFAULT_SMART_PARK_DATE_TIME, DEFAULT_SORT_MENU, DEFAULT_SPECIAL_TRANSIENT_CATEGORY, DEFAULT_STICKER_NUM, DEVICE_EVENT_OPTIONS_KEY, DEVICE_NAVIGATE_KEY, DISABLED_FOCUS_ELEMENT_CLASSES, DISABLED_FOCUS_ELEMENT_TYPES, DYNAMIC_PRICING_CONDITION, DataQaAttribute, DateService, DateValidityText, DaysText, DecimalToAmountPipe, DecimalToCurrencyPipe, DefaultImageTimeout, DeleteCategoryAction, DeleteGroupAction, DeleteGuestAction, DeleteJobTitleAction, DeleteLogoAction, DeleteUserAction, DetectBrowserService, DeviceActivityChangedAction, DeviceActivityLabel, DeviceActivityMode, DeviceActivityModeIcon, DeviceActivityModeText, DeviceActivityStatus, DeviceActivityType, DeviceAggregatedStatus, DeviceAggregatedStatusText, DeviceEventChangedAction, DeviceIconComponent, DeviceIndicationStatus, DeviceLaneTypes, DeviceLoop, DeviceModule, DevicePipeModule, DevicePrinterStatusText, DeviceRemoteCommandsService, DeviceSortBy, DeviceStatusBaseComponent, DeviceStatusChangedAction, DeviceTypeIconName, DeviceTypeText, DeviceTypesAlertsMapping, DevicesViewMode, DialogMode, DipSwitchStatus, Disable2FAAction, DisableUserSSOAction, DisconnectSmartParkAction, DoorSensorStatus, DoorStatusText, DurationMessageBar, DynamicContainerComponent, DynamicEllipsisTooltipDirective, ENGLISH_LANGUAGE, ENVIRONMENT, EXPIRATION_MONTHS_COUNT_OPTIONS, edgeServiceProxies as Edge, EditUserAction, ElectronicWalletPaymentMethodTypesText, EllipsisMultilineDirective, EmailServerModule, EmailServerState, EmptyResultsComponent, Enable2FAAction, EnumsToArrayPipe, EnvironmentModeText, ErrorPageComponent, ErrorPageResolver, ErrorResultsComponent, ExceedingBehaviorTypeText, ExpandGuestsByBatchIdAction, ExportFileService, ExportGuestsAction, ExportPdfSmartparksTableAction, ExportSmartparkAction, FONT_BASE64, FacilitiesAndSmartparksState, FacilityChangedAction, FacilityMenuService, FacilityModule, FacilityRemoteCommandExecutedAction, FacilityRemoteCommandTypesIcon, FacilityRemoteCommandsLocalizationKey, FacilityRemoteCommandsMenuItems, FacilityService, FacilityState, FieldLabelComponent, FieldValidationsComponent, FileGenerateMethod, FileSanitizerService, FileService, FilterByDeviceType, FilterDevicesByTypePipe, FilterDevicesByZonePipe, FilterKeysPipe, FilterNumbersPipe, FilterPipe, FlattenedCoreEntities, FloatMessageBarService, ForgotPasswordAction, ForgotPasswordTenantlessAction, FormValidationsComponent, FormattedInputDirective, FrequentParkingActionText, FrequentParkingErrorActionText, GATE_STATE_VALUE, GeneralActionService, GenerateSearchParamsDto, GenerateSlimSearchParamsDto, GetAllLocalizationsAction, GetLogoAction, GetRateByIdAction, GetSpecialTransientTablesAction, GetUserSettingsByCategoryAction, GlobalErrorService, GlobalMessageContainerComponent, GroupModule, GroupPermissionsPipe, GroupState, GuestModule, GuestOpenTicketChoice, GuestOpenTicketDialogComponent, GuestOpenTicketResolutionService, GuestSearchFieldSelectorText, GuestState, GuestTypeCastText, GuestTypesText, HOUR_FORMAT_12, HOUR_FORMAT_24, HOUR_FORMAT_FULL_DAY, HandleAlertsAction, HandleNotificationAction, HandledNotificationAction, HasActionErrored, HealthAction, HoldRelayMode, HoldRelayModeText, HopperStatusText, HotelGuestSearchFieldSelectorText, HtmlSanitizerService, HttpCancelBlackListUrls, HttpCancelInterceptor, HttpCancelService, HumanizePipe, INPUT_SEARCH_DEBOUNCE_TIME, INPUT_SEARCH_DEBOUNCE_TIME_LOW, INPUT_SEARCH_DEBOUNCE_TIME_MEDIUM, IconColumnComponent, IconComponent, IconModule, IconsHelper, IconsHelperText, identityServiceProxies as Identity, ImportMonthyStastusFieldSelectorText, InitAddSmartparkConnectionAction, InitSMTPDetailsAction, InitSessionFromLocalStorageAction, InitSmartparkTransportAction, IntercomComponent, InternetConnectionService, InternetConnectionStatus, IsActionExecuting, IsEllipsisDirective, JobTitleModule, JobTitleState, LOCAL_ENGLISH_LANGUAGE, LOCATION_OPTIONS, LOGGED_TENANT_KEY, LOOKUP_NAME_MAX_LENGTH, LanguageTypeKeys, LayoutModule, LayoutState, Load2FAUserAction, LoadAccessProfileBaseZonesAction, LoadAccessProfileZoneAction, LoadAccessProfileZonesAction, LoadAdministrativeNotificationsAction, LoadAlertsAndNotificationsAction, LoadAppConfigurationAction, LoadBackofficeAppConfigurationAction, LoadBackofficeSmartparksTableAction, LoadBackofficeSpAndSparkVersionsAction, LoadBackofficeVarByIdAction, LoadBackofficeVarsAction, LoadCalculatorPriceAction, LoadCategoriesAction, LoadCcMainBaseZonesAction, LoadCcMainZonesAction, LoadColorsAction, LoadColorsAction1, LoadColorsAction2, LoadColorsAction3, LoadColorsAction4, LoadColorsAction5, LoadDeviceAction, LoadDeviceEventActivitiesAction, LoadDeviceEventsAction, LoadDeviceEventsCollapse, LoadDeviceLprTransactionsAction, LoadDeviceStatusAction, LoadDevicesAction, LoadDevicesByTypeAction, LoadDynamicPricingBaseZonesAction, LoadDynamicPricingZoneAction, LoadEventActivitiesCollapse, LoadFacilityAction, LoadFacilityRemoteCommandsRefAction, LoadGroupAction, LoadGuestByIdAction, LoadGuestProfilesAction, LoadGuestsAction, LoadGuestsByBatchIdAction, LoadGuestsByBatchIdCancelledAction, LoadJobTitleAction, LoadLocateTicketSearchAction, LoadLocatedTicketAction, LoadLprTransactionsCollapse, LoadMacroCommandsAction, LoadModelsAction, LoadModelsAction1, LoadModelsAction2, LoadModelsAction3, LoadModelsAction4, LoadModelsAction5, LoadOverflowPriceTableAction, LoadParkActivitiesAction, LoadParkDevicesAction, LoadParkerAction, LoadParkersAction, LoadParkingLotAction, LoadParksAction, LoadRateByIdAction, LoadRatesAction, LoadRemoteCommandsRefAction, LoadReportsBaseZonesAction, LoadReportsZoneAction, LoadReportsZonesAction, LoadSMTPDetailsAction, LoadSelectedDeviceAction, LoadSmartparksAction, LoadSmartparksDropdownAction, LoadSmartparksTableAction, LoadSpAndSparkVersionsAction, LoadStickerPriceTableAction, LoadTicketNumParkersAction, LoadTransientPriceTableAction, LoadUserCapabilitiesAction, LoadUsersAction, LoadUsersAdministrativeNotificationsAction, LoadValidationTypeAction, LoadVarsAction, LoadZsAction, LoadingOverlayComponent, LocalStorageMigrator, LocalStorageService, Localization, LocalizationModule, LocalizationResolver, LocalizationService, LocalizationState, LoginModule, LoginRequestAction, LoginService, LoginState, LoginSuccess, LogoComponent, LogoState, LogoutAction, LogoutMobileAction, LoopStatus, LowerCaseUrlSerializer, LprTransactionsChangedAction, LprTransactionsOptionsText, LprTransactionsSearchFieldSelectorText, MANUAL_ACTION_REASON_NAME_MAX_LENGTH, MAX_ALLOWED_BADGE_VALUE, MAX_ALLOWED_CURRENT_BALANCE, MAX_ALLOWED_DEDUCTION_VALUE, MAX_ALLOWED_GUEST_UNIT_QUANTITY, MAX_ALLOWED_IDENTIFIER_VALUE, MAX_ALLOWED_STARTING_PURSE_VALUE, MAX_CAPACITY_VALUE, MAX_CARDS, MAX_CAR_PLATES, MAX_EMAIL_CHARACTERS_LENGTH, MAX_EXPORT_RECORDS, MAX_HOTEL_ROOM_NUMBER_LENGTH, MAX_INT16_VALUE, MAX_INT32_VALUE, MAX_INTEGER_VALUE, MAX_LENGTH_BATCH_NAME, MAX_LENGTH_DESCRIPTION_50, MAX_LENGTH_DESCRIPTION_70, MAX_LENGTH_FOOTER, MAX_LENGTH_LEFT, MAX_LENGTH_LEFT_BACKWARD_COMPATIBILITY, MAX_LENGTH_MANUAL_TEXT, MAX_LENGTH_NAME_100, MAX_LENGTH_NAME_20, MAX_LENGTH_NAME_25, MAX_LENGTH_NAME_30, MAX_LENGTH_NAME_50, MAX_LENGTH_NOTES, MAX_LENGTH_QUANTITY, MAX_LENGTH_REASON_DESCRIPTION, MAX_LENGTH_SERACH_TERM, MAX_LENGTH_SERACH_TERM_30, MAX_MOBILE_LENGTH, MAX_NUMBER_OF_NIGHTS, MAX_NUMBER_OF_ROW_IN_MENU, MAX_OCCUPANCY_VALUE, MAX_PERIOD_TIME, MAX_PLATE_ID_LENGTH, MAX_PRICE_NO_TIME_LIMIT_VALUE, MAX_PRICE_PERIOD_VALUE, MAX_REPEAT_COUNT_VALUE, MAX_RESULTS, MAX_ROLE_NAME_LENGTH, MAX_SP, MAX_TIME_RANGE_ITEMS_PER_KEY, MC_READER_ID, MESSAGE_BAR_DEFAULT_ID, MINIMUM_DROPDOWN_RESULTS_WITHOUT_SEARCH, MINIMUM_LENGTH_OPTIONS, MINUTES_PER_HOUR, MIN_ALLOWED_GUEST_UNIT_QUANTITY, MIN_LENGTH_QUANTITY, MIN_NUMBER_OF_ROW_IN_MENU, MIN_TIME_RANGE_ITEMS_PER_KEY, MOBILE_REFRESH_INFO, MSALGuardConfigFactory, MSALInstanceFactory, MSALInterceptorConfigFactory, MSLAuthService, MULTIPLE, MainModuleToSubModulesPermissionTypeMap, MatHintErrorDirective, MaxAllowedSurchargeAmount, MaxAllowedSurchargeMaxLimit, MaxAllowedSurchargeMinLimit, MaxDisplayTimeout, MaxIPV4TextLength, MaxSurchargeNameLength, MenuAppModuleLoadAction, MenuClearAction, MenuLoadAction, MenuService, MenuSubModuleClearAction, MenuSubModuleLoadAction, MessageBarComponent, MessageBarContainerComponent, MessageBarModule, MessageBarPosition, MessageBarService, MessageBarStatus, MiddayPeriod, MinAllowedSurchargeAmount, MinAllowedSurchargeMaxLimit, MinAllowedSurchargeMinLimit, MinDisplayTimeout, MobileAppSectionLabel, MobileLogoutAction, ModalButtonsWrapperComponent, ModalService, ModuleGuard, ModuleMenuBaseComponent, MonthlyRenewalSettingsActionTypesText, MonthlyRenewalSettingsActionTypesValueText, MonthlySearchFieldSelectorText, MslEventType, NONE_ACTIVE_BYTE, NONE_USER_ID, NO_RESULT, NativeElementInjectorDirective, NotSupportedBrowserGuard, NotSupportedBrowserPageComponent, NotificationChangedAction, NotificationClass, NotificationClassficationType, NotificationCloseAllButtonComponent, NotificationConfig, NotificationEventService, NotificationHPositions, NotificationModule, NotificationSeverityText, NotificationTypeLabelComponent, NotificationTypeText, NotificationVPositions, NotificationsModule, ONE_DAY_IN_MINUTES_VALUE, ONE_MINUTE_IN_MILLISECONDS, ONE_SECOND_IN_MILLISECONDS, OPEN_TICKET_CHECK_MIN_VERSION, OPEN_TICKET_CHECK_NOTICE_DELAY_MS, OffScreenDirective, OpenIdAuthInitializeService, OpenIdAuthService, OpenIdAutheticateAction, Operator, OrderBy, OrderByPipe, OrderDirection, OrphanFacilitiesPipe, PARKER_SEARCH_AUTO_REDIRECT, PASSWORD_EXPIRED, PASSWORD_HISTORY_COUNT_OPTIONS, PREVENT_CLICK_ELEMENT_CLASSES, ParkActivitiesModule, ParkActivitiesState, ParkActivityChangedAction, ParkConnectionStatus, ParkConnectionStatusClass, ParkConnectionStatusText, ParkManagerModule, ParkManagerState, ParkService, ParkTimeService, ParkerSearchTerm, ParkerService, ParkerState, ParkerTagsText, ParkerTypesText, PasswordScore, PasswordStrengthService, PaymentSearchFieldSelectorText, PaymentServiceTypeText, PaymentsTypesText, PermissionCacheService, PermissionConfigService, PermissionGroupText, PermissionTypeSupportedVersionDictionary, PermissionTypeText, PermissionsService, PrintReceiptAction, ProfileTypeText, QUERY_INTENT_PATTERNS, RATE_ID_WITH_VALUE_2, REDIRECT_URL, RELAY_2_VALUE, RELAY_3_VALUE, RELAY_4_VALUE, REPORT_CATEGORY_ALL, RESET_PASSWORD_EMAIL, RESTRICTED_CAR_NOTE_MAX_LENGTH, REVENUE_DATA_UNAVAILABLE, RTL_LANGUAGES, RTObjectObject, RangeModes, RangeModesText, RateModule, RateState, RealtimeEventService, RealtimeResolver, ReceiptGeneratedAction, RefreshTokenService, RefreshTokenState, RelayStatus, ReloadParkerAction, RemoteCommandService, RemoteCommandTypesIcon, RemoteValidationModule, RemoteValidationState, RemoveExpiredAlertsAndNotificationsAction, RemoveSmartparkBasicAction, ReportMethodDictionary, ResendPendingAdminInvitationsAction, ResendUserInvitationAction, ResetRatesAction, RestartLinkComponent, RestartLinkModule, RestrictionLocationTypeText, RestrictionLocationTypeTextTable, RestrictionTypeText, RevenueService, RouteService, RowOperation, rpcServiceProxies as Rpc, SESSION, SPECIAL_TRANSIENT_CATEGORIES, SPECIAL_TRANSIENT_LABEL_NOT_AVAILABLE, STATUS_CODE_SERVER_VALIDATION, STATUS_CODE_UNAUTHORIZED, STRING_ZERO, SUPER_PARK_ROUTE_KEY, SUPPORETD_RESTORE_TICKET_TYPES, SUPPORTED_CAR_ON_LOOP_DEVICE_TYPES, SUPPORTED_DEVICES_SCHEDULER, SUPPORTED_GATE_DEVICE_TYPES, SUPPORTED_LPR_TRANSACTIONS_DEVICE_TYPES, SUPPORTED_PAYMENT_FOR_ISF_TYPES, SUPPORTED_RESTORE_TICKET_DEVICE_TYPES, SUPPORTED_STATUS_DEVICE_TYPES, SUPPORTED_TICKET_INSIDE_DEVICE_TYPES, SYSTEM_ALERT_VALUE, SanitizedInnerHtmlDirective, SearchFacilitiesMode, SearchFieldSelectorText, SearchTicketAction, SearchValueHighlightComponent, SecurityModule, SecurityState, SelectDeviceAction, SelectLprTransactionsRowAction, SelectParkAction, SelectSmartParkAction, SelectedRowAction, SendEmailFromEntityAction, SendEmailToGuestAction, SendGuestPassesToEmailAction, SendTestEmailAction, ServiceProxyModule, ServicesRunningStatusChangedAction, SessionState, SessionStorageService, SetBackofficeSmartParkVersionsAction, SetBasicMenuAction, SetConflictDetected, SetDeviceEventsExpanded, SetDeviceRemoteCommandsMapAction, SetDeviceStatusAction, SetDeviceViewModeAction, SetEnableHotelPostingAction, SetEventActivitiesExpanded, SetFacilityRemoteCommandsMapAction, SetGuestsAction, SetLprTransactionsExpanded, SetMobileModeAction, SetParkActivitiesAction, SetRealTimeEventStatusAction, SetSearchTermAction, SetSelectedParkAction, SetSelectedSmartparkAction, SetSmartParkAction, SetSmartParkTableAction, SetSmartParkVersionsAction, SetSmartparkBasicAction, SetSmartparkBasicAllAction, SetSmartparkEdgeWebhooksAction, SetStateAction, SetTFASetupAction, SetTenantUserAction, SetTicketIdentifierAction, SetUserNameAction, SetUserStatusAction, SetUsersAction, SetkeepMeLoggedInAction, SharedComponentsModule, SharedDirectivesModule, SharedModule, SharedPipesModule, SideNavSortBy, SidenavModule, SidenavState, SignalR, SignalRObject, SignalRRefreshTokenAction, SingleSignOnProviderText, SmartParkDeviceStatusChangedAction, SmartParkStatusText, SmartparkDateTimePipe, SmartparkModule, SmartparkService, SmartparkState, SortDevicesPipe, SortPipe, SparkKeyboardEvent, SparkNotification, SpecialDaysPipe, SpecialTransientCategory, SpecialTransientCategoryText, SpinnerDiameterSize, StaticMessageBarService, StatusIconComponent, StickerSearchFieldSelectorText, StopPropagationDirective, StringItPipe, SubModuleGuard, SubstrHightlightManyPipe, SubstrHightlightPipe, SubstrHightlightSinglePipe, SwallowUnitStatusText, SwitchUserToSSOAction, SyncUsersAndRolesBySmartparkIdAction, TAKE_TOP_300, TBFormatPipe, TBNumberDirective, TENANT_KEY, TENS_MULTIPLIER, TableColumnGroup, TableColumnGroupLabel, TableRowHeightSizes, TableTypeText, TagLabelType, TechToolsModuleResolver, TenantClearAction, TenantLoadAction, TenantLogoModule, TenantService, TenantlessLoginMode, TibaDateFormat, TibaMatDialogConfig, TibaRetryPolicy, TibaValidators, TicketService, TimeAgoPipe, TimeElapsedCounterComponent, TimeElapsedFormats, TimeElapsedPipe, TimeRangeFormats, TimeRangePipe, ToggleDrawerAction, ToggleDrawerCollapseAction, TooltipPositions, TrackAction, TransientParkingActionText, TranslateLocalPipe, TreeFilterKeysPipe, TreeMode, TruncatePipe, TypeCastText, UNSAVED_DATA, USER_IS_TEMPORARY_BLOCKED, UnloadParkingLotAction, UnsafeHtmlValidatorDirective, UpdateAndActivateUserAction, UpdateAuthTokenAction, UpdateBasicGuestAction, UpdateDocumentAction, UpdateGuestAction, UpdateGuestLocationAction, UpdateMobileMode, UpdateSmartparkAction, UpdateSmartparkNameAction, UpdateSmartparkVarAction, UpdateTenantInfoProps, UpdateTenantSingleSignOnAction, UpdateTicketPlateIdAction, UpdateUserAlertsPreferencesAction, UpdateUserNotificaitonsPreferencesAction, UpdateUserSettingsAction, UpdateUserSettingsInSessionAction, UploadLogoAction, UserCreationType, UserModule, UserSettingsModule, UserSettingsState, UserState, VALIDATION_TYPE_BY_HOURS_41, VALIDATION_TYPE_BY_HOURS_42, VALID_DATETIME_FILTERS, VALID_TIME_MAX_LENGTH, VALID_ZIP_CODE_LENGTH, VERSION_10_1_0, VERSION_10_2_0, VERSION_10_2_1, VERSION_10_3_0, VERSION_10_3_9, VERSION_10_4_0, VERSION_25_1_0, VERSION_25_2_0, VERSION_25_2_1, VERSION_25_3_0, VERSION_25_3_1, VERSION_25_3_6, VERSION_25_4_0, VERSION_25_4_1, VERSION_26_1_0, VERSION_26_1_1, VERSION_26_1_2, VERSION_26_2_0, VERSION_26_3_0, VERSION_7_4_0, VERSION_7_4_1, VERSION_8_1_0, VERSION_8_2_0, VERSION_8_3_0, VERSION_8_4_0, VERSION_9_1_0, VERSION_9_2_0, VERSION_9_2_2, VERSION_9_3_0, VERSION_9_4_0, VGuestWithBatchTableData, VIRTUAL_DEVICE_LPR_COMPACT_LAYOUT_MEDIA_QUERY, ValidateUserTokenAction, ValidationService, ValidationStickerType, ValidationTypeModule, ValidationTypeState, VarDirective, Verify2FactorAuthenticationAction, VirtualValidationStatusText, WhatsAppReceiptAction, WrapFnPipe, YEAR_LIMIT_IN_DAYS, ZerofyNegativePipe, ZoneChangedAction, ZoneModule, ZoneState, accountModuleAnimation, adjustForTimezone, allowSpecialKeys, alphanumericRegex, appModuleAnimation, areDatesIdentical, areVersionsCompatible, arrayEquals, arraysAreDifferent, baseReduce, blobToBase64, buildMessageInfos, buildMessages, camelize, cancelOn, canceled, capitalizeFirstLetter, compareValues, composeSubCategoryLabel, convert24HoursToAmPM, convertAmPmTo24Hours, convertBinaryToDecimal, convertCentToWholeCoin, convertDecimalToBinary, convertFeaturePermissionsToDictionary, convertFormatWithoutTime, convertWholeCoinToCent, createDescriptor, createMessageText, dateDiffInSeconds, days, daysTranslation, decimalNumberRegex, decimalPercentageRegex, decimalPositiveNumberRegex, decryptClientSecret, delayCancellation, deviceIndicationStatusLocalization, deviceTypeFilterOptions, diffInMillis, dispatched, distinctObjectByProperties, distinctObjectByProperty, downloadFile, ensureObjectMetadata, entryDevicesLaneTypes, errored, exceedsLength, exitDevicesLaneTypes, extractErrorsChanges, extractNumber, extractResetChanges, extractSetValueChanges, extractToggleStatusChanges, extractTouchedChanges, extractUpdateValueAndValidityChanges, filterDependentPermissions, filterDevicesByTypes, filterKeyValueBaseReduce, findChildRoute, findObjectDifferences, findParentElement, findParentElementDimensions, findParentRoute, findParentRouteConfig, flattenByKey, formatMinutesToTimeNumber, formatTimeToMinutes, formatTimeToString, formatTimeWithMidnight, formatTimeWithSeparator, formatTimeWithoutMidnight, formatTimeWithoutSeparator, formatTimeWithoutSeperatorAndWithMidnight, formatTimeWithoutSeperatorAndWithoutMidnight, getActivatedRoutePathSegment, getAddress, getCurrentLang, getDateTimeInSeconds, getDateWithoutTime, getDaysFromValue, getDefaultDeviceStatus, getFormattedTime, getMomenWithTime, getMomentNullable, getMomentWithoutTime, getNavigationRoute, getObjectMetadata, getParkerTypesText, getPasswordMinimalLength, getSecondsBackoff, getTooltipTextByParkerType, getUserTimeZone, getUtcMomentNullable, hasMiddayPeriod, hasMonthName, hasRequiredField, hasUnsafeHtmlValue, hasValue, humanizeTimeElapsed, humanizeUtcTimeElapsed, identity, initializeMsal, initializeOpenId, integerNumberRegex, integerPositiveNumberRegex, ipv4Regex, isBoolean, isCharacterLengthValid, isDefinedAndNotEmpty, isDeviceActive, isDeviceDisplayedActive, isDeviceInFilterDeviceTypes, isDeviceInFiltersDeviceTypes, isFalsy, isIOSDevice, isMaxDaysRangeValid, isNullOrEmpty, isNumber, isObjectEmpty, isQueryIntentRequest, isSearchFieldChanged, isSingularOrPlural, isTrueInBinary, isTruthy, isVersionGreaterThanEqual, loadHTMLContent, lowerCase, lowerCaseFirstLetter, mapTransientTags, markEntitiesAsChanged, markEntityAsUnchanged, matchesDeviceCriteria, matchesDeviceParkingLotCriteria, matchesDevicesParkingLotCriteria, minutesToTime, mobileRegex, nameof, navigateToForbiddenAccessPage, navigateToNotSupportedBrowserPage, noEmojiRegex, notificationAnimation, numberWithLeadingZero, objectKeystoLowerCase, ofStatus, omitKeys, openBackgroundIframe, openCloseFiltersAnimation, parentParkBaseEventTypes, parentParkEventTypes, parkBaseEventTypes, parkEventTypes, parkerEnumToText, parseApiErrorData, parseApiErrorMessage, parseDateTimeToSparkParkTime, parseSmartParkTime, passwordRegex, percentageRegex, printSpecialDaysText, printStackTrace, readjustForTimezone, regexExp, remoteCommandLocalizationMap, replaceAll, resolveAccessModeIcon, resolveSpecialTransientCategory, rtEventPermissions, safeParse, sanitizeHtmlValue, searchBarPopupAnimation, setDateTimeErrorMessage, setErrorMessage, shortDaysTranslation, sleep, slideFromBottom, slideFromRight, slideFromUp, slideUpDown, successful, timeToMinutes, timeToMoment, toInt, toNumberMap, toStringMap, truncate, wrapConstructor };
143927
143577
  //# sourceMappingURL=tiba-spark-client-shared-lib.mjs.map