@tiba-spark/client-shared-lib 26.3.0-628.a11y.13 → 26.3.0-630

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 (89) 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 -35
  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 -8
  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/constants/global-constants.mjs +1 -2
  18. package/esm2022/libraries/directives/index.mjs +1 -4
  19. package/esm2022/libraries/directives/shared-directives.module.mjs +1 -16
  20. package/esm2022/libraries/enums/localization.enum.mjs +5 -45
  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/services/can-deactivate.service.mjs +3 -4
  25. package/esm2022/libraries/services/modal.service.mjs +1 -94
  26. package/esm2022/libraries/utils/error.util.mjs +1 -12
  27. package/fesm2022/tiba-spark-client-shared-lib.mjs +93 -543
  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 -11
  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 -2
  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/constants/global-constants.d.ts +0 -1
  42. package/libraries/constants/global-constants.d.ts.map +1 -1
  43. package/libraries/directives/index.d.ts +0 -3
  44. package/libraries/directives/index.d.ts.map +1 -1
  45. package/libraries/directives/shared-directives.module.d.ts +4 -7
  46. package/libraries/directives/shared-directives.module.d.ts.map +1 -1
  47. package/libraries/enums/localization.enum.d.ts +4 -44
  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/services/can-deactivate.service.d.ts.map +1 -1
  54. package/libraries/services/modal.service.d.ts +0 -8
  55. package/libraries/services/modal.service.d.ts.map +1 -1
  56. package/libraries/utils/error.util.d.ts +0 -6
  57. package/libraries/utils/error.util.d.ts.map +1 -1
  58. package/package.json +1 -1
  59. package/src/libraries/theme/_calendar.scss +1 -2
  60. package/src/libraries/theme/_card.scss +5 -6
  61. package/src/libraries/theme/_forms.scss +1 -1
  62. package/src/libraries/theme/_mixins.scss +1 -0
  63. package/src/libraries/theme/_modals.scss +3 -25
  64. package/src/libraries/theme/_ngx.scss +1 -0
  65. package/src/libraries/theme/_tables.scss +2 -3
  66. package/src/libraries/theme/_tabs.scss +4 -6
  67. package/src/libraries/theme/_utils.scss +4 -196
  68. package/src/libraries/theme/_variables.scss +10 -42
  69. package/src/libraries/theme/components/_carousel.scss +4 -10
  70. package/src/libraries/theme/components/_tb-search.scss +4 -10
  71. package/src/libraries/theme/mat-components/_mat-checkbox.scss +1 -1
  72. package/src/libraries/theme/mat-components/_mat-date-picker.scss +0 -4
  73. package/src/libraries/theme/mat-components/_mat-input.scss +0 -5
  74. package/src/libraries/theme/mat-components/_mat-menu.scss +16 -42
  75. package/src/libraries/theme/mat-components/_mat-radio-group.scss +0 -5
  76. package/src/libraries/theme/mat-components/_mat-select.scss +9 -35
  77. package/src/libraries/theme/mat-components/_mat-selection-list.scss +3 -2
  78. package/src/libraries/theme/mat-components/_mat-slide-toggle.scss +1 -1
  79. package/src/libraries/theme/mat-components/_mat-step.scss +2 -41
  80. package/src/libraries/theme/theme.scss +0 -119
  81. package/esm2022/libraries/directives/clear-all-button.directive.mjs +0 -49
  82. package/esm2022/libraries/directives/disabled.directive.mjs +0 -121
  83. package/esm2022/libraries/directives/icon-button.directive.mjs +0 -36
  84. package/libraries/directives/clear-all-button.directive.d.ts +0 -19
  85. package/libraries/directives/clear-all-button.directive.d.ts.map +0 -1
  86. package/libraries/directives/disabled.directive.d.ts +0 -30
  87. package/libraries/directives/disabled.directive.d.ts.map +0 -1
  88. package/libraries/directives/icon-button.directive.d.ts +0 -14
  89. 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$1 = '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$1))) {
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;
@@ -72394,7 +72194,6 @@ const COLORS = {
72394
72194
  CHART_DEBIT: '#8DA0FE',
72395
72195
  CHART_COMPACT: '#7B61FF',
72396
72196
  CHART_MID_FULL_SIZE: '#B48CFF',
72397
- CHART_SLICE_GAP: '#FFFFFF',
72398
72197
  };
72399
72198
  const HOUR_FORMAT_12 = 12;
72400
72199
  const HOUR_FORMAT_24 = 24;
@@ -73005,8 +72804,6 @@ var Localization;
73005
72804
  Localization["start_time"] = "start_time";
73006
72805
  Localization["end_time"] = "end_time";
73007
72806
  Localization["pause"] = "pause";
73008
- Localization["pause_animation"] = "pause_animation";
73009
- Localization["play_animation"] = "play_animation";
73010
72807
  Localization["resume"] = "resume";
73011
72808
  Localization["ignored"] = "ignored";
73012
72809
  Localization["none"] = "none";
@@ -73483,7 +73280,9 @@ var Localization;
73483
73280
  Localization["no_results_device_table"] = "no_results_device_table";
73484
73281
  Localization["no_results_smart_park_list"] = "no_results_smart_park_list";
73485
73282
  Localization["no_results_devices_list"] = "no_results_devices_list";
73283
+ Localization["no_results_guest_history"] = "no_results_guest_history";
73486
73284
  Localization["no_results_monthly_history"] = "no_results_monthly_history";
73285
+ Localization["no_results_transient_history"] = "no_results_transient_history";
73487
73286
  Localization["no_results_transient_io"] = "no_results_transient_io";
73488
73287
  Localization["no_results_park_activity"] = "no_results_park_activity";
73489
73288
  Localization["no_results_lpr_black_list"] = "no_results_lpr_black_list";
@@ -73668,8 +73467,6 @@ var Localization;
73668
73467
  Localization["parking_lot_address"] = "parking_lot_address";
73669
73468
  Localization["allowed_usage"] = "allowed_usage";
73670
73469
  Localization["send"] = "send";
73671
- Localization["check_details_before_continuing"] = "check_details_before_continuing";
73672
- Localization["confirm_and_send"] = "confirm_and_send";
73673
73470
  Localization["coupon_qr_code_preview"] = "coupon_qr_code_preview";
73674
73471
  Localization["upload_image_failed"] = "upload_image_failed";
73675
73472
  Localization["unsupported_image_format"] = "unsupported_image_format";
@@ -74806,8 +74603,8 @@ var Localization;
74806
74603
  Localization["form_validation_units_balance_maximum"] = "form_validation_units_balance_maximum";
74807
74604
  Localization["form_validation_units_balance_minimum"] = "form_validation_units_balance_minimum";
74808
74605
  Localization["user_saved_and_status_changed_msg"] = "user_saved_and_status_changed_msg";
74809
- Localization["on"] = "on";
74810
- Localization["off"] = "off";
74606
+ Localization["on"] = "On";
74607
+ Localization["off"] = "Off";
74811
74608
  Localization["update_and_continue"] = "update_and_continue";
74812
74609
  Localization["delete_and_continue"] = "delete_and_continue";
74813
74610
  Localization["permission_levels"] = "permission_levels";
@@ -76021,44 +75818,6 @@ var Localization;
76021
75818
  Localization["search_room_number"] = "search_room_number";
76022
75819
  Localization["tech_tools_module"] = "tech_tools_module";
76023
75820
  Localization["device_configurator"] = "device_configurator";
76024
- Localization["reason_unsupported_version"] = "reason_unsupported_version";
76025
- Localization["reason_no_permission"] = "reason_no_permission";
76026
- Localization["collapse_side_menu"] = "collapse_side_menu";
76027
- Localization["expand_side_menu"] = "expand_side_menu";
76028
- Localization["breadcrumb"] = "breadcrumb";
76029
- Localization["expand_row"] = "expand_row";
76030
- Localization["table_rows"] = "table_rows";
76031
- Localization["increase"] = "increase";
76032
- Localization["decrease"] = "decrease";
76033
- Localization["move_row"] = "move_row";
76034
- Localization["moved_to_position"] = "moved_to_position";
76035
- Localization["date_part_day"] = "date_part_day";
76036
- Localization["date_part_hour"] = "date_part_hour";
76037
- Localization["date_part_minute"] = "date_part_minute";
76038
- Localization["show_password"] = "show_password";
76039
- Localization["hide_password"] = "hide_password";
76040
- Localization["clear"] = "clear";
76041
- Localization["enlarge_image"] = "enlarge_image";
76042
- Localization["shrink_image"] = "shrink_image";
76043
- Localization["past_day"] = "past_day";
76044
- Localization["warning"] = "warning";
76045
- Localization["devices_found_count"] = "devices_found_count";
76046
- Localization["clear_field"] = "clear_field";
76047
- Localization["open_field_calendar"] = "open_field_calendar";
76048
- Localization["date_format"] = "date_format";
76049
- Localization["form_validation_invalid_date_example"] = "form_validation_invalid_date_example";
76050
- Localization["form_validation_date_from_to"] = "form_validation_date_from_to";
76051
- Localization["form_validation_date_from"] = "form_validation_date_from";
76052
- Localization["form_validation_date_to"] = "form_validation_date_to";
76053
- Localization["whatsapp_phone_format"] = "whatsapp_phone_format";
76054
- Localization["choose_time"] = "choose_time";
76055
- Localization["date_part_placeholder_year"] = "date_part_placeholder_year";
76056
- Localization["date_part_placeholder_month"] = "date_part_placeholder_month";
76057
- Localization["date_part_placeholder_day"] = "date_part_placeholder_day";
76058
- Localization["date_part_placeholder_hour"] = "date_part_placeholder_hour";
76059
- Localization["date_part_placeholder_minute"] = "date_part_placeholder_minute";
76060
- Localization["clear_search"] = "clear_search";
76061
- Localization["selected_label"] = "selected_label";
76062
75821
  Localization["lost_ticket_active_rate_description"] = "lost_ticket_active_rate_description";
76063
75822
  Localization["lost_ticket_lane_firmware_unknown"] = "lost_ticket_lane_firmware_unknown";
76064
75823
  })(Localization || (Localization = {}));
@@ -117338,17 +117097,11 @@ class SharedDirectivesModule {
117338
117097
  TBNumberDirective,
117339
117098
  UnsafeHtmlValidatorDirective,
117340
117099
  VarDirective], imports: [CommonModule,
117341
- ClearAllButtonDirective,
117342
117100
  ContainerRefDirective,
117343
- DisabledDirective,
117344
- IconButtonDirective,
117345
117101
  MatHintErrorDirective,
117346
117102
  SanitizedInnerHtmlDirective], exports: [AutofocusDirective,
117347
- ClearAllButtonDirective,
117348
117103
  ContainerRefDirective,
117349
- DisabledDirective,
117350
117104
  EllipsisMultilineDirective,
117351
- IconButtonDirective,
117352
117105
  IsEllipsisDirective,
117353
117106
  NativeElementInjectorDirective,
117354
117107
  OffScreenDirective,
@@ -117376,20 +117129,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
117376
117129
  ],
117377
117130
  imports: [
117378
117131
  CommonModule,
117379
- ClearAllButtonDirective,
117380
117132
  ContainerRefDirective,
117381
- DisabledDirective,
117382
- IconButtonDirective,
117383
117133
  MatHintErrorDirective,
117384
117134
  SanitizedInnerHtmlDirective,
117385
117135
  ],
117386
117136
  exports: [
117387
117137
  AutofocusDirective,
117388
- ClearAllButtonDirective,
117389
117138
  ContainerRefDirective,
117390
- DisabledDirective,
117391
117139
  EllipsisMultilineDirective,
117392
- IconButtonDirective,
117393
117140
  IsEllipsisDirective,
117394
117141
  NativeElementInjectorDirective,
117395
117142
  OffScreenDirective,
@@ -117965,57 +117712,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
117965
117712
  args: [{ name: 'wrapFn', standalone: true }]
117966
117713
  }] });
117967
117714
 
117968
- const DATE_TIME_ERROR_INVALID_DATE = 'invalidDate';
117969
- const DATE_TIME_ERROR_INVALID_DATE_RANGE = 'invalidDateRange';
117970
- const DATE_TIME_ERROR_REQUIRED = 'required';
117971
- /** Message key for an out-of-range date: names the allowed dates when the error carries them. */
117972
- function dateRangeKey(range) {
117973
- if (range === true) {
117974
- return Localization.form_validation_invalid_date_range;
117975
- }
117976
- if (range.min && range.max) {
117977
- return Localization.form_validation_date_from_to;
117978
- }
117979
- return range.min ? Localization.form_validation_date_from : Localization.form_validation_date_to;
117980
- }
117981
- const DATE_TIME_ERRORS = [
117982
- DATE_TIME_ERROR_INVALID_DATE,
117983
- DATE_TIME_ERROR_INVALID_DATE_RANGE,
117984
- DATE_TIME_ERROR_REQUIRED,
117985
- ];
117986
- function setErrorMessage(formName, controlName, errors) {
117987
- if (errors) {
117988
- const control = formName.get(controlName);
117989
- if (control) {
117990
- control.setErrors(errors);
117991
- control.markAsTouched();
117992
- }
117993
- }
117994
- }
117995
- function setDateTimeErrorMessage(formName, controlName, errors) {
117996
- const control = formName.get(controlName);
117997
- if (control) {
117998
- const currentErrors = control.errors ?? {};
117999
- if (errors) {
118000
- // Strip any stale DateTime keys before merging so incoming errors are authoritative
118001
- const nonDateTimeErrors = { ...currentErrors };
118002
- DATE_TIME_ERRORS.forEach((key) => delete nonDateTimeErrors[key]);
118003
- control.setErrors({ ...nonDateTimeErrors, ...errors });
118004
- control.markAsTouched();
118005
- }
118006
- else {
118007
- // Create a copy to prevent direct mutation of Angular's internal errors object
118008
- const cleanedErrors = { ...currentErrors };
118009
- // No DateTime error → remove only DateTime-related errors
118010
- DATE_TIME_ERRORS.forEach((key) => {
118011
- delete cleanedErrors[key];
118012
- });
118013
- // If no errors left, clear errors completely
118014
- control.setErrors(Object.keys(cleanedErrors).length > 0 ? cleanedErrors : null);
118015
- }
118016
- }
118017
- }
118018
-
118019
117715
  var DataQaAttribute;
118020
117716
  (function (DataQaAttribute) {
118021
117717
  DataQaAttribute["select_http_status_multiple"] = "select-http-status-multiple";
@@ -118441,7 +118137,7 @@ let LayoutState = class LayoutState {
118441
118137
  constructor(mediaMatcher, store) {
118442
118138
  this.store = store;
118443
118139
  this.mobileQuerySubject = new Subject();
118444
- this.mobileQuery = mediaMatcher.matchMedia('(max-width: 640px)');
118140
+ this.mobileQuery = mediaMatcher.matchMedia('(max-width: 600px)');
118445
118141
  this.mobileQuery.onchange = (event) => this.mobileQuerySubject.next(event.matches);
118446
118142
  this.mobileQuerySubject
118447
118143
  .pipe(distinctUntilChanged())
@@ -118506,18 +118202,16 @@ class FieldValidationsComponent extends BaseComponent {
118506
118202
  constructor(controlContainer) {
118507
118203
  super();
118508
118204
  this.controlContainer = controlContainer;
118509
- this.dateRangeKey = dateRangeKey;
118205
+ this.ObjectKeys = Object.keys;
118510
118206
  }
118511
- // Only the first error shows, so a field failing several rules still says what to fix (not just "Invalid").
118512
118207
  getErrors(errors) {
118513
118208
  if (errors) {
118514
118209
  delete errors.mask; // remove default NgxMaskDirective validation
118515
118210
  }
118516
- const first = errors && Object.keys(errors)[0];
118517
- return first ? { [first]: errors[first] } : null;
118211
+ return errors;
118518
118212
  }
118519
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 }); }
118520
- 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 as range\">\n {{ dateRangeKey(range) | translate: range }}</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"] }] }); }
118521
118215
  }
118522
118216
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldValidationsComponent, decorators: [{
118523
118217
  type: Component,
@@ -118526,7 +118220,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
118526
118220
  WrapFnPipe,
118527
118221
  LocalizationModule,
118528
118222
  SharedDirectivesModule,
118529
- ], 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 as range\">\n {{ dateRangeKey(range) | translate: range }}</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" }]
118530
118224
  }], ctorParameters: () => [{ type: i1.ControlContainer }], propDecorators: { controlName: [{
118531
118225
  type: Input
118532
118226
  }], label: [{
@@ -118708,22 +118402,12 @@ const extractErrorsChanges = (control) => {
118708
118402
  return setErrorsChanges$;
118709
118403
  };
118710
118404
 
118711
- let nextLabelId = 0;
118712
- /** How far up from the label to look for its field. */
118713
- const FIELD_SEARCH_DEPTH = 4;
118714
- const FIELD_SELECTOR = 'input:not([type=hidden]):not([type=checkbox]):not([type=radio]), textarea';
118715
118405
  class FieldLabelComponent {
118716
- constructor(controlContainer, elementRef) {
118406
+ constructor(controlContainer) {
118717
118407
  this.controlContainer = controlContainer;
118718
- this.elementRef = elementRef;
118719
- this.labelId = `tb-field-label-${nextLabelId++}`;
118720
118408
  this.isRequired$ = new BehaviorSubject(false);
118721
118409
  this.isInvalid$ = new BehaviorSubject(false);
118722
118410
  }
118723
- ngAfterViewInit() {
118724
- // ponytail: links once; a field rendered later (behind *ngIf) stays unlinked.
118725
- setTimeout(() => this.linkField());
118726
- }
118727
118411
  ngOnInit() {
118728
118412
  this.control = this.controlContainer.control?.get(this.controlName);
118729
118413
  if (!this.control) {
@@ -118742,29 +118426,6 @@ class FieldLabelComponent {
118742
118426
  });
118743
118427
  });
118744
118428
  }
118745
- /** Names the first text field after this label (before the next label) with the label text. */
118746
- linkField() {
118747
- if (!this.control) {
118748
- return;
118749
- }
118750
- const host = this.elementRef.nativeElement;
118751
- const follows = (a, b) => !!(a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING);
118752
- let scope = host.parentElement;
118753
- for (let depth = 0; scope && depth < FIELD_SEARCH_DEPTH; depth++, scope = scope.parentElement) {
118754
- const nextLabel = Array.from(scope.querySelectorAll('[tb-field-label]')).find(label => follows(host, label));
118755
- const field = Array.from(scope.querySelectorAll(FIELD_SELECTOR))
118756
- .find(candidate => follows(host, candidate) && (!nextLabel || follows(candidate, nextLabel)));
118757
- if (field) {
118758
- if (!field.hasAttribute('aria-labelledby') && !field.hasAttribute('aria-label') && !field.labels?.length) {
118759
- field.setAttribute('aria-labelledby', this.labelId);
118760
- }
118761
- return;
118762
- }
118763
- if (nextLabel) {
118764
- return;
118765
- }
118766
- }
118767
- }
118768
118429
  get isControlRequired() {
118769
118430
  return this.control.hasValidator(Validators.required);
118770
118431
  }
@@ -118777,11 +118438,11 @@ class FieldLabelComponent {
118777
118438
  this.touchedChangesSubscription?.unsubscribe();
118778
118439
  });
118779
118440
  }
118780
- 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 }); }
118781
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: `
118782
118443
  <div class="tb-field-label" *ngIf="control">
118783
118444
  <span class="required-asterisk" *ngIf="isRequired$ | async" [class.required]="isInvalid$ | async">*</span>
118784
- <span [id]="labelId" [ngClass]="ngLabelClass">{{ label | translate }}</span>
118445
+ <span [ngClass]="ngLabelClass">{{ label | translate }}</span>
118785
118446
  <ng-content select="[tooltip]"></ng-content>
118786
118447
  </div>
118787
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 }); }
@@ -118793,7 +118454,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
118793
118454
  template: `
118794
118455
  <div class="tb-field-label" *ngIf="control">
118795
118456
  <span class="required-asterisk" *ngIf="isRequired$ | async" [class.required]="isInvalid$ | async">*</span>
118796
- <span [id]="labelId" [ngClass]="ngLabelClass">{{ label | translate }}</span>
118457
+ <span [ngClass]="ngLabelClass">{{ label | translate }}</span>
118797
118458
  <ng-content select="[tooltip]"></ng-content>
118798
118459
  </div>
118799
118460
  `,
@@ -118804,7 +118465,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
118804
118465
  LocalizationModule
118805
118466
  ]
118806
118467
  }]
118807
- }], ctorParameters: () => [{ type: i1.ControlContainer }, { type: i0.ElementRef }], propDecorators: { controlName: [{
118468
+ }], ctorParameters: () => [{ type: i1.ControlContainer }], propDecorators: { controlName: [{
118808
118469
  type: Input
118809
118470
  }], label: [{
118810
118471
  type: Input
@@ -121608,12 +121269,10 @@ var LprTransactionsOptionsText;
121608
121269
  LprTransactionsOptionsText["NotRecognized"] = "not_recognized";
121609
121270
  })(LprTransactionsOptionsText || (LprTransactionsOptionsText = {}));
121610
121271
 
121611
- /** Shortest time a message stays up, so it can be read. */
121612
- const MIN_MESSAGE_DURATION = ONE_SECOND_IN_MILLISECONDS * 5;
121613
121272
  var DurationMessageBar;
121614
121273
  (function (DurationMessageBar) {
121615
121274
  DurationMessageBar[DurationMessageBar["displayContinuously"] = 0] = "displayContinuously";
121616
- DurationMessageBar[DurationMessageBar["defaultDisplayOneMessage"] = 5000] = "defaultDisplayOneMessage";
121275
+ DurationMessageBar[DurationMessageBar["defaultDisplayOneMessage"] = 3000] = "defaultDisplayOneMessage";
121617
121276
  DurationMessageBar[DurationMessageBar["defaultDisplayMultiMessages"] = 5000] = "defaultDisplayMultiMessages";
121618
121277
  DurationMessageBar[DurationMessageBar["defaultDisplayLongMessage"] = 8000] = "defaultDisplayLongMessage";
121619
121278
  })(DurationMessageBar || (DurationMessageBar = {}));
@@ -123575,51 +123234,27 @@ class FloatMessageBarService {
123575
123234
  openFromMessageBarComponent(messageBarDetails, options) {
123576
123235
  const messagesInfo = buildMessageInfos(this.translateService, messageBarDetails, options);
123577
123236
  const duration = options?.duration === DurationMessageBar.displayContinuously ? undefined : (options?.duration || DurationMessageBar.defaultDisplayMultiMessages); // On duration "0", the snack bar will be display continuously
123578
- const ref = this._snackBar.openFromComponent(MessageBarComponent, {
123237
+ this._snackBar.openFromComponent(MessageBarComponent, {
123579
123238
  data: messagesInfo,
123580
123239
  horizontalPosition: 'center',
123581
123240
  verticalPosition: 'top',
123241
+ duration,
123582
123242
  panelClass: 'message-bar'
123583
123243
  });
123584
- this.dismissWhenIdle(ref, duration);
123585
123244
  }
123586
123245
  openMessageBarContainerComponent(message) {
123587
123246
  const duration = message.duration === DurationMessageBar.displayContinuously ? undefined : (message.duration || DurationMessageBar.defaultDisplayOneMessage); // On duration "0", the snack bar will be display continuously
123588
- const ref = this._snackBar.openFromComponent(MessageBarContainerComponent, {
123247
+ this._snackBar.openFromComponent(MessageBarContainerComponent, {
123589
123248
  data: message,
123590
123249
  horizontalPosition: 'center',
123591
123250
  verticalPosition: 'top',
123251
+ duration,
123592
123252
  panelClass: 'message-bar'
123593
123253
  });
123594
- this.dismissWhenIdle(ref, duration);
123595
123254
  }
123596
123255
  clearSnackbar() {
123597
123256
  this._snackBar.dismiss();
123598
123257
  }
123599
- /** Closes after `duration` (at least 5 s), restarting the wait while hovered or focused. */
123600
- dismissWhenIdle(ref, duration) {
123601
- if (!duration) {
123602
- return;
123603
- }
123604
- ref.afterOpened().subscribe(() => {
123605
- const element = document.querySelector('mat-snack-bar-container.message-bar');
123606
- let timer;
123607
- const stop = () => clearTimeout(timer);
123608
- const start = () => {
123609
- stop();
123610
- if (!element?.matches(':hover') && !element?.contains(document.activeElement)) {
123611
- timer = setTimeout(() => ref.dismiss(), Math.max(duration, MIN_MESSAGE_DURATION));
123612
- }
123613
- };
123614
- element?.addEventListener('mouseenter', stop);
123615
- element?.addEventListener('focusin', stop);
123616
- element?.addEventListener('mouseleave', start);
123617
- // focusout fires before focus lands on the next element.
123618
- element?.addEventListener('focusout', () => setTimeout(start));
123619
- ref.afterDismissed().subscribe(stop);
123620
- start();
123621
- });
123622
- }
123623
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 }); }
123624
123259
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FloatMessageBarService, providedIn: 'root' }); }
123625
123260
  }
@@ -125263,10 +124898,8 @@ class BaseNotificationService {
125263
124898
  show(config, notificationComponent) {
125264
124899
  this.options.toastComponent = notificationComponent;
125265
124900
  this.options.toastClass = config.class;
125266
- // 0 or no duration keeps the notification open.
125267
- const duration = config.duration ? Math.max(config.duration, MIN_MESSAGE_DURATION) : config.duration;
125268
- this.options.timeOut = duration;
125269
- this.options.extendedTimeOut = duration;
124901
+ this.options.timeOut = config.duration;
124902
+ this.options.extendedTimeOut = config.duration;
125270
124903
  this.options.autoDismiss = !!config.maxOpened;
125271
124904
  this.options.maxOpened = config.maxOpened;
125272
124905
  this.options.easeTime = 0;
@@ -125347,14 +124980,14 @@ class NotificationTypeLabelComponent extends BaseComponent {
125347
124980
  this.notificationTypeClass = notificationTypeClasses.join(" ");
125348
124981
  }
125349
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 }); }
125350
- 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:#ec003e;color:#fff}.notification-type-label.critical.invert{background-color:#fff;color:#ec003e}.notification-type-label.high{background-color:#dd3329;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 }); }
125351
124984
  }
125352
124985
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NotificationTypeLabelComponent, decorators: [{
125353
124986
  type: Component,
125354
124987
  args: [{ selector: 'tb-notification-type-label', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
125355
124988
  CommonModule,
125356
124989
  LocalizationModule,
125357
- ], 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:#ec003e;color:#fff}.notification-type-label.critical.invert{background-color:#fff;color:#ec003e}.notification-type-label.high{background-color:#dd3329;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"] }]
125358
124991
  }], ctorParameters: () => [{ type: i1$4.TranslateService }], propDecorators: { notificationSeverity: [{
125359
124992
  type: Input
125360
124993
  }], notificationSeverityInvert: [{
@@ -125376,11 +125009,11 @@ class AlertNotificationComponent extends Toast {
125376
125009
  $event.stopPropagation();
125377
125010
  }
125378
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 }); }
125379
- 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()] }); }
125380
125013
  }
125381
125014
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertNotificationComponent, decorators: [{
125382
125015
  type: Component,
125383
- 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: [
125384
125017
  CommonModule,
125385
125018
  LocalizationModule,
125386
125019
  MatTooltipModule,
@@ -127336,11 +126969,11 @@ class CommandNotificationComponent extends Toast {
127336
126969
  this.CommandNotificationType = CommandNotificationType;
127337
126970
  }
127338
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 }); }
127339
- 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()] }); }
127340
126973
  }
127341
126974
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CommandNotificationComponent, decorators: [{
127342
126975
  type: Component,
127343
- 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: [
127344
126977
  CommonModule,
127345
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"] }]
127346
126979
  }], ctorParameters: () => [{ type: i1$8.ToastrService }, { type: i1$8.ToastPackage }], propDecorators: { data: [{
@@ -129446,11 +129079,11 @@ class RestartLinkComponent {
129446
129079
  window.location.reload();
129447
129080
  }
129448
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 }); }
129449
- 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"] }] }); }
129450
129083
  }
129451
129084
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RestartLinkComponent, decorators: [{
129452
129085
  type: Component,
129453
- 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"] }]
129454
129087
  }], ctorParameters: () => [{ type: i1$4.TranslateService }, { type: i1$2.Store }, { type: i0.ElementRef }], propDecorators: { label: [{
129455
129088
  type: Input
129456
129089
  }], messageText: [{
@@ -129692,6 +129325,47 @@ function isBoolean(value) {
129692
129325
  }
129693
129326
  }
129694
129327
 
129328
+ const DATE_TIME_ERROR_INVALID_DATE = 'invalidDate';
129329
+ const DATE_TIME_ERROR_INVALID_DATE_RANGE = 'invalidDateRange';
129330
+ const DATE_TIME_ERROR_REQUIRED = 'required';
129331
+ const DATE_TIME_ERRORS = [
129332
+ DATE_TIME_ERROR_INVALID_DATE,
129333
+ DATE_TIME_ERROR_INVALID_DATE_RANGE,
129334
+ DATE_TIME_ERROR_REQUIRED,
129335
+ ];
129336
+ function setErrorMessage(formName, controlName, errors) {
129337
+ if (errors) {
129338
+ const control = formName.get(controlName);
129339
+ if (control) {
129340
+ control.setErrors(errors);
129341
+ control.markAsTouched();
129342
+ }
129343
+ }
129344
+ }
129345
+ function setDateTimeErrorMessage(formName, controlName, errors) {
129346
+ const control = formName.get(controlName);
129347
+ if (control) {
129348
+ const currentErrors = control.errors ?? {};
129349
+ if (errors) {
129350
+ // Strip any stale DateTime keys before merging so incoming errors are authoritative
129351
+ const nonDateTimeErrors = { ...currentErrors };
129352
+ DATE_TIME_ERRORS.forEach((key) => delete nonDateTimeErrors[key]);
129353
+ control.setErrors({ ...nonDateTimeErrors, ...errors });
129354
+ control.markAsTouched();
129355
+ }
129356
+ else {
129357
+ // Create a copy to prevent direct mutation of Angular's internal errors object
129358
+ const cleanedErrors = { ...currentErrors };
129359
+ // No DateTime error → remove only DateTime-related errors
129360
+ DATE_TIME_ERRORS.forEach((key) => {
129361
+ delete cleanedErrors[key];
129362
+ });
129363
+ // If no errors left, clear errors completely
129364
+ control.setErrors(Object.keys(cleanedErrors).length > 0 ? cleanedErrors : null);
129365
+ }
129366
+ }
129367
+ }
129368
+
129695
129369
  function hasRequiredField(abstractControl) {
129696
129370
  return abstractControl?.hasValidator(Validators.required);
129697
129371
  }
@@ -131990,58 +131664,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
131990
131664
  type: Injectable
131991
131665
  }], ctorParameters: () => [{ type: i1$4.TranslateService }] });
131992
131666
 
131993
- const FOCUSABLE = 'input:not([type=hidden]), select, textarea, button, [tabindex]:not([tabindex="-1"])';
131994
- const isShown = (el) => el.getClientRects().length > 0;
131995
- /** Focuses the first visible invalid field in `container`, else its first error message; false when there is neither. */
131996
- function focusFirstProblem(container) {
131997
- if (focusFirstInvalidField(container)) {
131998
- return true;
131999
- }
132000
- // A rule over several fields (one of Card, Car Plate or Mobile) marks no single field: read its message.
132001
- const message = Array.from(container.querySelectorAll('[role="alert"]')).find((el) => isShown(el) && !el.closest('mat-dialog-actions'));
132002
- if (!message) {
132003
- return false;
132004
- }
132005
- message.tabIndex = -1;
132006
- message.focus();
132007
- return true;
132008
- }
132009
- /** As focusFirstProblem; when the open tab has none but the form is invalid, opens the first other tab that has one. */
132010
- async function focusFirstProblemInTabs(container, settle = () => new Promise((resolve) => setTimeout(resolve, 300))) {
132011
- if (focusFirstProblem(container)) {
132012
- return true;
132013
- }
132014
- // Valid form = a save in progress: never flip through its tabs.
132015
- if (!container.querySelector('.ng-invalid, [aria-invalid="true"]')) {
132016
- return false;
132017
- }
132018
- const tabs = Array.from(container.querySelectorAll('[role="tab"]'));
132019
- const current = tabs.find((tab) => tab.getAttribute('aria-selected') === 'true');
132020
- for (const tab of tabs.filter((t) => t !== current)) {
132021
- tab.click();
132022
- await settle();
132023
- if (focusFirstProblem(container)) {
132024
- return true;
132025
- }
132026
- }
132027
- current?.click();
132028
- return false;
132029
- }
132030
- /** Focuses the first visible invalid field in `container`; false when there is none. */
132031
- function focusFirstInvalidField(container) {
132032
- for (const el of Array.from(container.querySelectorAll('.ng-invalid, [aria-invalid="true"]'))) {
132033
- // A form or group is invalid because of a field inside it: that field comes next in page order.
132034
- if (el.matches('form, [formGroupName], [formgroupname], [formGroup], [formgroup], [formArrayName], [formarrayname]')) {
132035
- continue;
132036
- }
132037
- const target = el.matches(FOCUSABLE) ? el : el.querySelector(FOCUSABLE);
132038
- if (target && isShown(target) && !target.closest('[inert]')) {
132039
- target.focus();
132040
- return true;
132041
- }
132042
- }
132043
- return false;
132044
- }
132045
131667
  const Z_INDEX_FRONT = '1000';
132046
131668
  const Z_INDEX_BACK = '999';
132047
131669
  class ModalService {
@@ -132066,8 +131688,6 @@ class ModalService {
132066
131688
  const dialogRef = this.dialog.open(modalComponent, this.buildDialogConfig(modalConfig));
132067
131689
  this.createBackdrop(dialogRef.id);
132068
131690
  this.attachButtonWrapper(dialogRef, modalConfig);
132069
- this.closeOnEscape(dialogRef);
132070
- this.keepFocusInDialog(dialogRef);
132071
131691
  // take(1), not first(): router teardown can complete these subjects without ever emitting,
132072
131692
  // and first() turns that benign completion into an unhandled EmptyError (SPRK3-14821).
132073
131693
  //
@@ -132223,45 +131843,6 @@ class ModalService {
132223
131843
  }
132224
131844
  });
132225
131845
  }
132226
- // Esc does what the dialog's X does; a dialog without an X stays open. Listened on the dialog itself:
132227
- // the overlay keyboard dispatcher gives keys only to the top overlay, often a tooltip left on the opener.
132228
- closeOnEscape(dialogRef) {
132229
- dialogRef.afterOpened().pipe(take$1(1)).subscribe(() => {
132230
- const container = document.getElementById(dialogRef.id);
132231
- container?.addEventListener('keydown', (event) => {
132232
- if (event.key === 'Escape' && !event.defaultPrevented) {
132233
- container.querySelector('.modal-close-icon')?.click();
132234
- }
132235
- });
132236
- });
132237
- }
132238
- // A wizard swaps Next for Save (or drops Back on the first step) under the keyboard focus; the browser
132239
- // then drops focus to <body>, outside the dialog, where Tab and Esc no longer reach it.
132240
- keepFocusInDialog(dialogRef) {
132241
- dialogRef.afterOpened().pipe(take$1(1)).subscribe(() => {
132242
- const container = document.getElementById(dialogRef.id);
132243
- if (!container) {
132244
- return;
132245
- }
132246
- let focused = null;
132247
- container.addEventListener('focusin', (event) => (focused = event.target));
132248
- const observer = new MutationObserver(() => {
132249
- if (focused && !focused.isConnected && (!document.activeElement || document.activeElement === document.body)) {
132250
- focused = null;
132251
- (container.querySelector('mat-dialog-actions .tb-primary-button:not([disabled])') ?? container).focus();
132252
- }
132253
- });
132254
- // Create / Next / Save pressed but the dialog stayed on an invalid form: take the keyboard to the problem.
132255
- container.addEventListener('click', (event) => {
132256
- const button = event.target.closest('mat-dialog-actions .tb-primary-button');
132257
- if (button) {
132258
- setTimeout(() => document.activeElement === button && focusFirstProblemInTabs(container));
132259
- }
132260
- });
132261
- observer.observe(container, { childList: true, subtree: true });
132262
- dialogRef.afterClosed().pipe(take$1(1)).subscribe(() => observer.disconnect());
132263
- });
132264
- }
132265
131846
  detachButtonWrapper(dialogId) {
132266
131847
  const ref = this._buttonWrapperRefs[dialogId];
132267
131848
  if (ref) {
@@ -135446,7 +135027,7 @@ class CloudConfirmDialogComponent extends BaseComponent {
135446
135027
  this.dialogRef.close(ok);
135447
135028
  }
135448
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 }); }
135449
- 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"] }] }); }
135450
135031
  }
135451
135032
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CloudConfirmDialogComponent, decorators: [{
135452
135033
  type: Component,
@@ -135461,7 +135042,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
135461
135042
  MessageBarModule,
135462
135043
  CurlyToBoldPipe,
135463
135044
  SanitizedInnerHtmlDirective,
135464
- ], 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"] }]
135465
135046
  }], ctorParameters: () => [{ type: i1$4.TranslateService }, { type: undefined, decorators: [{
135466
135047
  type: Inject,
135467
135048
  args: [MAT_DIALOG_DATA]
@@ -135476,8 +135057,7 @@ class CanDeactivateService {
135476
135057
  canDeactivate() {
135477
135058
  const isDialogClosed = this.isDialogClosed();
135478
135059
  if (this.hasUnsavedChanges() && isDialogClosed) {
135479
- // X and Esc close the dialog without a result: stay, like Cancel.
135480
- return this.displayDialog().pipe(map(value => value === true), tap$1(value => {
135060
+ return this.displayDialog().pipe(tap$1(value => {
135481
135061
  if (value) {
135482
135062
  this.hasUnsavedChanges.set(false);
135483
135063
  }
@@ -139550,11 +139130,11 @@ class GuestOpenTicketDialogComponent {
139550
139130
  this.dialogRef.close(null);
139551
139131
  }
139552
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 }); }
139553
- 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"] }] }); }
139554
139134
  }
139555
139135
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GuestOpenTicketDialogComponent, decorators: [{
139556
139136
  type: Component,
139557
- 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"] }]
139558
139138
  }], ctorParameters: () => [{ type: undefined, decorators: [{
139559
139139
  type: Inject,
139560
139140
  args: [MAT_DIALOG_DATA]
@@ -142631,18 +142211,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
142631
142211
  // Resolvers
142632
142212
 
142633
142213
  class ErrorPageComponent extends BaseComponent {
142634
- constructor(store, sessionStorageService, httpCancelService, appConfig, activatedRoute, elementRef) {
142214
+ constructor(store, sessionStorageService, httpCancelService, appConfig, activatedRoute) {
142635
142215
  super();
142636
142216
  this.store = store;
142637
142217
  this.sessionStorageService = sessionStorageService;
142638
142218
  this.httpCancelService = httpCancelService;
142639
142219
  this.appConfig = appConfig;
142640
142220
  this.activatedRoute = activatedRoute;
142641
- this.elementRef = elementRef;
142642
142221
  this.drawerCollapsed = true;
142643
- this.animationPaused = false;
142644
- // A button's changed name is not read again under focus: the new label is said here after a press.
142645
- this.announcement = '';
142646
142222
  this.appSectionLabel = AppSectionLabel;
142647
142223
  this.iconsHelper = IconsHelper;
142648
142224
  }
@@ -142652,11 +142228,6 @@ class ErrorPageComponent extends BaseComponent {
142652
142228
  this.httpCancelService.cancelPendingRequests();
142653
142229
  this.isCloud = this.appConfig.getConfig().appType === AppType.Cloud;
142654
142230
  }
142655
- /** Moving content beside text needs a way to stop it (WCAG 2.2.2). */
142656
- toggleAnimation() {
142657
- this.animationPaused = this.elementRef.nativeElement.classList.toggle('tb-still');
142658
- this.announcement = this.animationPaused ? this.L.play_animation : this.L.pause_animation;
142659
- }
142660
142231
  extractedErrorClass(activatedRoute) {
142661
142232
  this.statusCodeError = activatedRoute.routeConfig.path === '**' ? '404' : activatedRoute.routeConfig.path;
142662
142233
  this.statusCodeErrorMessage = this.statusCodeError === '404' ? this.L.error_page_message_404 : this.L.error_page_message_403;
@@ -142710,37 +142281,18 @@ class ErrorPageComponent extends BaseComponent {
142710
142281
  }
142711
142282
  this.store.dispatch(new Navigate(route));
142712
142283
  }
142713
- /** Opening the narrow-screen menu moves focus to its first module. */
142714
- toggleDrawer() {
142715
- this.drawerCollapsed = !this.drawerCollapsed;
142716
- if (!this.drawerCollapsed) {
142717
- setTimeout(() => this.elementRef.nativeElement.querySelector('.tb-module')?.focus());
142718
- }
142719
- }
142720
- closeDrawerFromKeyboard() {
142721
- if (!this.drawerCollapsed) {
142722
- this.drawerCollapsed = true;
142723
- this.menuButton?.nativeElement.focus();
142724
- }
142725
- }
142726
142284
  click() {
142727
142285
  if (!this.drawerCollapsed) {
142728
142286
  this.drawerCollapsed = true;
142729
142287
  }
142730
142288
  }
142731
- 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 }); }
142732
- 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 <span class=\"cdk-visually-hidden\" aria-live=\"polite\">{{ announcement ? (announcement | translateLocal | async) : '' }}</span>\n </div>\n </div>\n <div class=\"right-section\">\n <div>\n <img class=\"mountains-image\" alt=\"\" src=\"assets/mountains-{{statusCodeError}}.svg\">\n <img *ngIf=\"statusCodeError=='404'\" class=\"blue-gate\" alt=\"\" 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 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{overflow-y:auto}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:auto;min-height:calc(100% - 80px)}div.tb-container main .container{flex-direction:column;padding-bottom:0vh;height:auto}div.tb-container main .left-section{width:100%}div.tb-container main .left-section .inner-content{position:relative;top:0;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:260px;flex:none}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 }); }
142733
142291
  }
142734
142292
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ErrorPageComponent, decorators: [{
142735
142293
  type: Component,
142736
- 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 <span class=\"cdk-visually-hidden\" aria-live=\"polite\">{{ announcement ? (announcement | translateLocal | async) : '' }}</span>\n </div>\n </div>\n <div class=\"right-section\">\n <div>\n <img class=\"mountains-image\" alt=\"\" src=\"assets/mountains-{{statusCodeError}}.svg\">\n <img *ngIf=\"statusCodeError=='404'\" class=\"blue-gate\" alt=\"\" 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 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{overflow-y:auto}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:auto;min-height:calc(100% - 80px)}div.tb-container main .container{flex-direction:column;padding-bottom:0vh;height:auto}div.tb-container main .left-section{width:100%}div.tb-container main .left-section .inner-content{position:relative;top:0;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:260px;flex:none}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"] }]
142737
- }], ctorParameters: () => [{ type: i1$2.Store }, { type: SessionStorageService }, { type: HttpCancelService }, { type: AppConfigService }, { type: i1$7.ActivatedRoute }, { type: i0.ElementRef }], propDecorators: { menuButton: [{
142738
- type: ViewChild,
142739
- args: ['menuButton']
142740
- }], closeDrawerFromKeyboard: [{
142741
- type: HostListener,
142742
- args: ['document:keydown.escape']
142743
- }], 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: [{
142744
142296
  type: HostListener,
142745
142297
  args: ['document:click', ['$event']]
142746
142298
  }] } });
@@ -142800,13 +142352,13 @@ class IntercomComponent {
142800
142352
  });
142801
142353
  }
142802
142354
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IntercomComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
142803
- 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 }); }
142804
142356
  }
142805
142357
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IntercomComponent, decorators: [{
142806
142358
  type: Component,
142807
142359
  args: [{ selector: 'tb-intercom', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
142808
142360
  CommonModule
142809
- ], 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"] }]
142810
142362
  }] });
142811
142363
 
142812
142364
  const ENTRY_TL60 = 'entry-tl60';
@@ -143528,7 +143080,7 @@ class EmptyResultsComponent extends BaseComponent {
143528
143080
  ngOnInit() {
143529
143081
  }
143530
143082
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmptyResultsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
143531
- 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 }); }
143532
143084
  }
143533
143085
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmptyResultsComponent, decorators: [{
143534
143086
  type: Component,
@@ -143538,7 +143090,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
143538
143090
  LocalizationModule,
143539
143091
  MatTooltipModule,
143540
143092
  SanitizedInnerHtmlDirective,
143541
- ], 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"] }]
143542
143094
  }], ctorParameters: () => [], propDecorators: { options: [{
143543
143095
  type: Input
143544
143096
  }] } });
@@ -143549,7 +143101,7 @@ class ErrorResultsComponent extends BaseComponent {
143549
143101
  this.IconsHelper = IconsHelper;
143550
143102
  }
143551
143103
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ErrorResultsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
143552
- 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 }); }
143553
143105
  }
143554
143106
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ErrorResultsComponent, decorators: [{
143555
143107
  type: Component,
@@ -143557,7 +143109,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
143557
143109
  CommonModule,
143558
143110
  IconModule,
143559
143111
  LocalizationModule,
143560
- ], 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"] }]
143561
143113
  }], ctorParameters: () => [] });
143562
143114
 
143563
143115
  class LoadingOverlayComponent extends BaseComponent {
@@ -143801,7 +143353,7 @@ class LogoComponent extends BaseComponent {
143801
143353
  ngOnInit() {
143802
143354
  }
143803
143355
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LogoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
143804
- 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 }); }
143805
143357
  }
143806
143358
  __decorate([
143807
143359
  Select(LogoState.image)
@@ -143811,7 +143363,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
143811
143363
  args: [{ selector: 'tb-logo', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
143812
143364
  CommonModule,
143813
143365
  TenantLogoModule,
143814
- ], 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"] }]
143815
143367
  }], ctorParameters: () => [], propDecorators: { image$: [], classImage: [{
143816
143368
  type: Input
143817
143369
  }] } });
@@ -143840,7 +143392,7 @@ class ModalButtonsWrapperComponent extends BaseComponent {
143840
143392
  this.minimize.next(this.isMinimized);
143841
143393
  }
143842
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 }); }
143843
- 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 }] }); }
143844
143396
  }
143845
143397
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ModalButtonsWrapperComponent, decorators: [{
143846
143398
  type: Component,
@@ -143848,10 +143400,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
143848
143400
  CommonModule,
143849
143401
  IconModule,
143850
143402
  MatSnackBarModule,
143851
- MatDialogModule,
143852
- IconButtonDirective,
143853
- LocalizationModule,
143854
- ], 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"] }]
143855
143405
  }], ctorParameters: () => [{ type: i1$2.Store }], propDecorators: { enabledMinimized: [{
143856
143406
  type: Input
143857
143407
  }], close: [{
@@ -144023,5 +143573,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
144023
143573
  * Generated bundle index. Do not edit.
144024
143574
  */
144025
143575
 
144026
- 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, dateRangeKey, 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, focusFirstInvalidField, focusFirstProblem, focusFirstProblemInTabs, 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 };
144027
143577
  //# sourceMappingURL=tiba-spark-client-shared-lib.mjs.map