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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/esm2022/libraries/components/cloud-confirm-dialog/cloud-confirm-dialog.component.mjs +3 -3
  2. package/esm2022/libraries/components/common-pages/error-page/error-page.component.mjs +7 -32
  3. package/esm2022/libraries/components/field-label/field-label.component.mjs +6 -39
  4. package/esm2022/libraries/components/field-validations/field-validations.component.mjs +5 -6
  5. package/esm2022/libraries/components/guest-open-ticket-dialog/guest-open-ticket-dialog.component.mjs +2 -2
  6. package/esm2022/libraries/components/intercom/intercom.component.mjs +2 -2
  7. package/esm2022/libraries/components/logo/logo.component.mjs +3 -3
  8. package/esm2022/libraries/components/message-bar/float-message-bar.service.mjs +6 -30
  9. package/esm2022/libraries/components/modal-buttons-wrapper/modal-buttons-wrapper.component.mjs +4 -9
  10. package/esm2022/libraries/components/notification/alert-notification/alert-notification.component.mjs +3 -3
  11. package/esm2022/libraries/components/notification/command-notification/command-notification.component.mjs +3 -3
  12. package/esm2022/libraries/components/notification/notification-type-label/notification-type-label.component.mjs +2 -2
  13. package/esm2022/libraries/components/notification/notification.service.mjs +3 -6
  14. package/esm2022/libraries/components/overlay-loading-container/empty-results/empty-results.component.mjs +3 -3
  15. package/esm2022/libraries/components/overlay-loading-container/error-results/error-results.component.mjs +2 -2
  16. package/esm2022/libraries/components/restart-link/restart-link.component.mjs +2 -2
  17. package/esm2022/libraries/directives/index.mjs +1 -4
  18. package/esm2022/libraries/directives/shared-directives.module.mjs +1 -16
  19. package/esm2022/libraries/enums/icon.enum.mjs +3 -1
  20. package/esm2022/libraries/enums/localization.enum.mjs +1 -38
  21. package/esm2022/libraries/enums/message-bar-duration.enum.mjs +2 -4
  22. package/esm2022/libraries/interfaces/table-column.interface.mjs +1 -1
  23. package/esm2022/libraries/modules/layout/layout.state.mjs +2 -2
  24. package/esm2022/libraries/resolvers/tech-tools-module.resolver.mjs +7 -7
  25. package/esm2022/libraries/services/can-deactivate.service.mjs +3 -4
  26. package/esm2022/libraries/services/modal.service.mjs +1 -14
  27. package/fesm2022/tiba-spark-client-shared-lib.mjs +55 -405
  28. package/fesm2022/tiba-spark-client-shared-lib.mjs.map +1 -1
  29. package/libraries/components/common-pages/error-page/error-page.component.d.ts +2 -10
  30. package/libraries/components/common-pages/error-page/error-page.component.d.ts.map +1 -1
  31. package/libraries/components/field-label/field-label.component.d.ts +3 -8
  32. package/libraries/components/field-label/field-label.component.d.ts.map +1 -1
  33. package/libraries/components/field-validations/field-validations.component.d.ts +4 -0
  34. package/libraries/components/field-validations/field-validations.component.d.ts.map +1 -1
  35. package/libraries/components/message-bar/float-message-bar.service.d.ts +0 -2
  36. package/libraries/components/message-bar/float-message-bar.service.d.ts.map +1 -1
  37. package/libraries/components/modal-buttons-wrapper/modal-buttons-wrapper.component.d.ts.map +1 -1
  38. package/libraries/components/notification/alert-notification/alert-notification.component.d.ts.map +1 -1
  39. package/libraries/components/notification/command-notification/command-notification.component.d.ts.map +1 -1
  40. package/libraries/components/notification/notification.service.d.ts.map +1 -1
  41. package/libraries/directives/index.d.ts +0 -3
  42. package/libraries/directives/index.d.ts.map +1 -1
  43. package/libraries/directives/shared-directives.module.d.ts +4 -7
  44. package/libraries/directives/shared-directives.module.d.ts.map +1 -1
  45. package/libraries/enums/icon.enum.d.ts +4 -2
  46. package/libraries/enums/icon.enum.d.ts.map +1 -1
  47. package/libraries/enums/localization.enum.d.ts +0 -37
  48. package/libraries/enums/localization.enum.d.ts.map +1 -1
  49. package/libraries/enums/message-bar-duration.enum.d.ts +1 -3
  50. package/libraries/enums/message-bar-duration.enum.d.ts.map +1 -1
  51. package/libraries/interfaces/table-column.interface.d.ts +0 -1
  52. package/libraries/interfaces/table-column.interface.d.ts.map +1 -1
  53. package/libraries/resolvers/tech-tools-module.resolver.d.ts.map +1 -1
  54. package/libraries/services/can-deactivate.service.d.ts.map +1 -1
  55. package/libraries/services/modal.service.d.ts +0 -1
  56. package/libraries/services/modal.service.d.ts.map +1 -1
  57. package/package.json +1 -1
  58. package/src/libraries/theme/_calendar.scss +1 -2
  59. package/src/libraries/theme/_card.scss +5 -6
  60. package/src/libraries/theme/_forms.scss +1 -1
  61. package/src/libraries/theme/_mixins.scss +1 -0
  62. package/src/libraries/theme/_modals.scss +2 -3
  63. package/src/libraries/theme/_ngx.scss +1 -0
  64. package/src/libraries/theme/_tables.scss +2 -3
  65. package/src/libraries/theme/_tabs.scss +4 -6
  66. package/src/libraries/theme/_utils.scss +4 -123
  67. package/src/libraries/theme/_variables.scss +8 -35
  68. package/src/libraries/theme/assets/icons/tech-tools-module-404.svg +11 -0
  69. package/src/libraries/theme/components/_carousel.scss +2 -2
  70. package/src/libraries/theme/components/_tb-search.scss +4 -10
  71. package/src/libraries/theme/mat-components/_mat-date-picker.scss +0 -4
  72. package/src/libraries/theme/mat-components/_mat-input.scss +0 -5
  73. package/src/libraries/theme/mat-components/_mat-menu.scss +14 -40
  74. package/src/libraries/theme/mat-components/_mat-select.scss +1 -23
  75. package/src/libraries/theme/mat-components/_mat-selection-list.scss +3 -2
  76. package/src/libraries/theme/mat-components/_mat-step.scss +0 -19
  77. package/src/libraries/theme/theme.scss +0 -119
  78. package/esm2022/libraries/directives/clear-all-button.directive.mjs +0 -49
  79. package/esm2022/libraries/directives/disabled.directive.mjs +0 -121
  80. package/esm2022/libraries/directives/icon-button.directive.mjs +0 -36
  81. package/libraries/directives/clear-all-button.directive.d.ts +0 -19
  82. package/libraries/directives/clear-all-button.directive.d.ts.map +0 -1
  83. package/libraries/directives/disabled.directive.d.ts +0 -30
  84. package/libraries/directives/disabled.directive.d.ts.map +0 -1
  85. package/libraries/directives/icon-button.directive.d.ts +0 -14
  86. package/libraries/directives/icon-button.directive.d.ts.map +0 -1
@@ -11,125 +11,6 @@ body {
11
11
  --mat-sidenav-content-text-color: #{ variables.$text-color};
12
12
  }
13
13
 
14
- // Text fields show focus with their own border.
15
- :focus-visible:not(input, textarea) {
16
- outline: 1px solid variables.$focus-ring-color;
17
- outline-offset: 2px;
18
- }
19
-
20
- // The side menu and tab strip clip outside the element, so draw the ring inside.
21
- .mat-drawer :focus-visible,
22
- .mdc-tab:focus-visible {
23
- outline-offset: -1px;
24
- }
25
-
26
- // Dropdowns look like text fields on focus: a 1px blue line over their own border.
27
- .tb-dropdown-menu-trigger:focus-visible {
28
- outline-width: 1px;
29
- outline-offset: -1px;
30
- }
31
-
32
- // The select's field border already turns blue on focus.
33
- .mat-mdc-select:focus-visible {
34
- outline: none;
35
- }
36
-
37
- // Dialog X and minimize: rounded like their hover background, so the focus ring is rounded too.
38
- .modal-close-icon,
39
- .modal-minimize-icon {
40
- border-radius: 4px;
41
- }
42
-
43
- // Round ring on icon buttons inside a field (search clear X), inset: the field clips anything outside it.
44
- .mat-mdc-form-field-icon-suffix [role='button']:focus-visible,
45
- .mat-mdc-form-field-icon-suffix .mat-mdc-icon-button:focus-visible {
46
- border-radius: 50%;
47
- margin: auto 0;
48
- outline-offset: -2px;
49
- }
50
-
51
- // Focused icon buttons get the 1px ring only, not Material's gray focus fill.
52
- .mat-mdc-icon-button.cdk-keyboard-focused,
53
- .mat-mdc-icon-button.cdk-program-focused {
54
- .mat-mdc-button-persistent-ripple::before {
55
- opacity: 0;
56
- }
57
- }
58
-
59
- // Radios and checkboxes hide their native input; ring the visible circle or box, not the input.
60
- .mdc-radio__native-control:focus-visible,
61
- .mdc-checkbox__native-control:focus-visible {
62
- outline: none;
63
- }
64
-
65
- .mdc-radio__native-control:focus-visible ~ .mdc-radio__background,
66
- .mdc-checkbox__native-control:focus-visible ~ .mdc-checkbox__background {
67
- outline: 1px solid variables.$focus-ring-color;
68
- outline-offset: 2px;
69
- }
70
-
71
- .mdc-radio__native-control:focus-visible ~ .mdc-radio__background {
72
- border-radius: 50%;
73
- // Clear of the selected radio's own blue circle.
74
- outline-offset: 3px;
75
- }
76
-
77
- // The ring is drawn by ::after below.
78
- .mdc-switch:focus-visible {
79
- outline: none;
80
- }
81
-
82
- // The 20px knob overhangs the 15px track; ring it with an even gap around both.
83
- .mdc-switch:focus-visible::after {
84
- content: '';
85
- position: absolute;
86
- inset: -6px -3px;
87
- border: 1px solid variables.$focus-ring-color;
88
- border-radius: 14px;
89
- pointer-events: none;
90
- }
91
-
92
- .mat-drawer .mdc-switch:focus-visible::after {
93
- border-color: variables.$focus-ring-color-on-dark;
94
- }
95
-
96
- // Adjacent tabs (all z-index 1) and joined fields paint over the ring; lift the focused one.
97
- .mdc-tab:focus-visible,
98
- .mat-mdc-form-field:has(:focus-visible) {
99
- z-index: 2;
100
- }
101
-
102
- .mat-drawer :focus-visible {
103
- outline-color: variables.$focus-ring-color-on-dark;
104
- }
105
-
106
- // Material sets outline: none on expansion headers; the panel clips, so the ring goes inside.
107
- .mat-expansion-panel .mat-expansion-panel-header:focus-visible {
108
- outline: 1px solid variables.$focus-ring-color;
109
- outline-offset: -1px;
110
- }
111
-
112
- // Same for list items (Material sets outline: 0); dropdown options show a bar instead.
113
- .mat-mdc-list-item.mdc-list-item:focus-visible:not(.list-option-item) {
114
- outline: 1px solid variables.$focus-ring-color;
115
- outline-offset: -1px;
116
- }
117
-
118
- // Side menu: the row's own children paint over an outline on hover, so draw the ring as an overlay.
119
- .mat-drawer .mat-expansion-panel .mat-expansion-panel-header:focus-visible,
120
- .mat-drawer .mat-mdc-list-item.mdc-list-item:focus-visible:not(.list-option-item) {
121
- outline: none;
122
-
123
- &::after {
124
- content: '';
125
- position: absolute;
126
- inset: 2px;
127
- border: 1px solid variables.$focus-ring-color-on-dark;
128
- pointer-events: none;
129
- z-index: 1;
130
- }
131
- }
132
-
133
14
  /* Override all Material Typography */
134
15
  * {
135
16
  letter-spacing: 0 !important;
@@ -1,49 +0,0 @@
1
- import { Directive, ElementRef, inject } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- const ENABLED_CLASS = 'active-button';
4
- /**
5
- * Every "Clear All" filter button (`.tb-clear-all-filters-button`) is a keyboard button.
6
- * Pages enable it with the `active-button` class; without it the button is disabled for
7
- * the mouse (theme `pointer-events: none`), so it also leaves the Tab order and ignores keys.
8
- */
9
- export class ClearAllButtonDirective {
10
- constructor() {
11
- this.el = inject(ElementRef).nativeElement;
12
- this.observer = new MutationObserver(() => this.sync());
13
- }
14
- ngOnInit() {
15
- this.observer.observe(this.el, { attributes: true, attributeFilter: ['class'] });
16
- this.sync();
17
- }
18
- ngOnDestroy() {
19
- this.observer.disconnect();
20
- }
21
- activate(event) {
22
- event.preventDefault();
23
- if (this.enabled && !event.repeat) {
24
- this.el.click();
25
- }
26
- }
27
- get enabled() {
28
- return this.el.classList.contains(ENABLED_CLASS);
29
- }
30
- sync() {
31
- this.el.tabIndex = this.enabled ? 0 : -1;
32
- this.el.setAttribute('aria-disabled', String(!this.enabled));
33
- }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ClearAllButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
35
- 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 }); }
36
- }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ClearAllButtonDirective, decorators: [{
38
- type: Directive,
39
- args: [{
40
- selector: '.tb-clear-all-filters-button',
41
- standalone: true,
42
- host: {
43
- role: 'button',
44
- '(keydown.enter)': 'activate($event)',
45
- '(keydown.space)': 'activate($event)',
46
- },
47
- }]
48
- }] });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXItYWxsLWJ1dHRvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtc2hhcmVkLWxpYi9zcmMvbGlicmFyaWVzL2RpcmVjdGl2ZXMvY2xlYXItYWxsLWJ1dHRvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFakYsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDO0FBRXRDOzs7O0dBSUc7QUFVSCxNQUFNLE9BQU8sdUJBQXVCO0lBVHBDO1FBVW1CLE9BQUUsR0FBZ0IsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUNuRCxhQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztLQTBCckU7SUF4QkMsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFvQjtRQUMzQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFZLE9BQU87UUFDakIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVPLElBQUk7UUFDVixJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDOytHQTNCVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFUbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsOEJBQThCO29CQUN4QyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNKLElBQUksRUFBRSxRQUFRO3dCQUNkLGlCQUFpQixFQUFFLGtCQUFrQjt3QkFDckMsaUJBQWlCLEVBQUUsa0JBQWtCO3FCQUN0QztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBPbkluaXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5jb25zdCBFTkFCTEVEX0NMQVNTID0gJ2FjdGl2ZS1idXR0b24nO1xuXG4vKipcbiAqIEV2ZXJ5IFwiQ2xlYXIgQWxsXCIgZmlsdGVyIGJ1dHRvbiAoYC50Yi1jbGVhci1hbGwtZmlsdGVycy1idXR0b25gKSBpcyBhIGtleWJvYXJkIGJ1dHRvbi5cbiAqIFBhZ2VzIGVuYWJsZSBpdCB3aXRoIHRoZSBgYWN0aXZlLWJ1dHRvbmAgY2xhc3M7IHdpdGhvdXQgaXQgdGhlIGJ1dHRvbiBpcyBkaXNhYmxlZCBmb3JcbiAqIHRoZSBtb3VzZSAodGhlbWUgYHBvaW50ZXItZXZlbnRzOiBub25lYCksIHNvIGl0IGFsc28gbGVhdmVzIHRoZSBUYWIgb3JkZXIgYW5kIGlnbm9yZXMga2V5cy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnLnRiLWNsZWFyLWFsbC1maWx0ZXJzLWJ1dHRvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICByb2xlOiAnYnV0dG9uJyxcbiAgICAnKGtleWRvd24uZW50ZXIpJzogJ2FjdGl2YXRlKCRldmVudCknLFxuICAgICcoa2V5ZG93bi5zcGFjZSknOiAnYWN0aXZhdGUoJGV2ZW50KScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIENsZWFyQWxsQnV0dG9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGVsOiBIVE1MRWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4gdGhpcy5zeW5jKCkpO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsLCB7IGF0dHJpYnV0ZXM6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogWydjbGFzcyddIH0pO1xuICAgIHRoaXMuc3luYygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBhY3RpdmF0ZShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHRoaXMuZW5hYmxlZCAmJiAhZXZlbnQucmVwZWF0KSB7XG4gICAgICB0aGlzLmVsLmNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbC5jbGFzc0xpc3QuY29udGFpbnMoRU5BQkxFRF9DTEFTUyk7XG4gIH1cblxuICBwcml2YXRlIHN5bmMoKSB7XG4gICAgdGhpcy5lbC50YWJJbmRleCA9IHRoaXMuZW5hYmxlZCA/IDAgOiAtMTtcbiAgICB0aGlzLmVsLnNldEF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcsIFN0cmluZyghdGhpcy5lbmFibGVkKSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,121 +0,0 @@
1
- import { Directive, ElementRef, effect, inject, input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- const BLOCKED_KEYS = ['Enter', ' '];
4
- const FOCUSABLE = 'a[href], button, input, select, textarea, [tabindex]';
5
- /**
6
- * Disables an element for mouse, keyboard and assistive technology.
7
- * Drop-in for `[class.tb-action-disabled]`: `[tbDisabled]="isDisabled"`.
8
- */
9
- export class DisabledDirective {
10
- constructor() {
11
- this.tbDisabled = input(false);
12
- this.tbDisabledClass = input('tb-action-disabled');
13
- /** Id of the element that explains why it is disabled; the host then stays focusable. */
14
- this.tbDisabledDescribedBy = input(null);
15
- this.el = inject(ElementRef).nativeElement;
16
- this.appliedClass = null;
17
- this.appliedReasonId = null;
18
- this.appliedNativeDisabled = false;
19
- /** Focusable children taken out of the Tab order with the host, and their original attributes. */
20
- this.skippedChildren = new Map();
21
- // Projected content (e.g. a button inside tb-tooltip) can render after the host is disabled.
22
- this.childObserver = new MutationObserver(() => this.skipChildren());
23
- this.block = (event) => {
24
- if (!this.tbDisabled()) {
25
- return;
26
- }
27
- if (event instanceof KeyboardEvent && !BLOCKED_KEYS.includes(event.key)) {
28
- return;
29
- }
30
- event.preventDefault();
31
- event.stopImmediatePropagation();
32
- };
33
- effect(() => this.apply(this.tbDisabled(), this.tbDisabledClass(), this.tbDisabledDescribedBy()));
34
- // Capture phase, so projected children cannot be activated either.
35
- this.el.addEventListener('click', this.block, true);
36
- this.el.addEventListener('keydown', this.block, true);
37
- }
38
- apply(disabled, cssClass, reasonId) {
39
- if (this.appliedClass) {
40
- this.el.classList.remove(this.appliedClass);
41
- }
42
- this.appliedClass = disabled ? cssClass : null;
43
- if (this.appliedClass) {
44
- this.el.classList.add(this.appliedClass);
45
- }
46
- const isButton = this.el instanceof HTMLButtonElement;
47
- const nativeDisabled = disabled && isButton && !reasonId;
48
- if (nativeDisabled || this.appliedNativeDisabled) {
49
- this.el.disabled = nativeDisabled;
50
- this.appliedNativeDisabled = nativeDisabled;
51
- }
52
- this.setAttribute('aria-disabled', disabled && !nativeDisabled ? 'true' : null);
53
- this.setReason(disabled ? reasonId : null);
54
- this.setSkipInTabOrder(disabled && !isButton && !reasonId);
55
- }
56
- setReason(reasonId) {
57
- const ids = (this.el.getAttribute('aria-describedby') ?? '')
58
- .split(' ')
59
- .filter(id => id && id !== this.appliedReasonId);
60
- if (reasonId) {
61
- ids.push(reasonId);
62
- }
63
- this.appliedReasonId = reasonId;
64
- this.setAttribute('aria-describedby', ids.length ? ids.join(' ') : null);
65
- }
66
- setSkipInTabOrder(skip) {
67
- if (skip) {
68
- this.skipChildren();
69
- this.childObserver.observe(this.el, { childList: true, subtree: true, attributes: true, attributeFilter: ['tabindex'] });
70
- }
71
- else {
72
- this.childObserver.disconnect();
73
- this.skippedChildren.forEach((saved, child) => {
74
- this.setAttributeOn(child, 'tabindex', saved.tabIndex);
75
- this.setAttributeOn(child, 'aria-disabled', saved.ariaDisabled);
76
- });
77
- this.skippedChildren.clear();
78
- }
79
- if (skip && this.savedTabIndex === undefined) {
80
- this.savedTabIndex = this.el.getAttribute('tabindex');
81
- this.el.setAttribute('tabindex', '-1');
82
- }
83
- else if (!skip && this.savedTabIndex !== undefined) {
84
- this.setAttribute('tabindex', this.savedTabIndex);
85
- this.savedTabIndex = undefined;
86
- }
87
- }
88
- skipChildren() {
89
- for (const child of Array.from(this.el.querySelectorAll(FOCUSABLE))) {
90
- if (child.tabIndex >= 0 && !this.skippedChildren.has(child)) {
91
- this.skippedChildren.set(child, {
92
- tabIndex: child.getAttribute('tabindex'),
93
- ariaDisabled: child.getAttribute('aria-disabled'),
94
- });
95
- child.setAttribute('tabindex', '-1');
96
- child.setAttribute('aria-disabled', 'true');
97
- }
98
- }
99
- }
100
- setAttribute(name, value) {
101
- this.setAttributeOn(this.el, name, value);
102
- }
103
- setAttributeOn(element, name, value) {
104
- if (value === null) {
105
- element.removeAttribute(name);
106
- }
107
- else {
108
- element.setAttribute(name, value);
109
- }
110
- }
111
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DisabledDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
112
- 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 }); }
113
- }
114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DisabledDirective, decorators: [{
115
- type: Directive,
116
- args: [{
117
- selector: '[tbDisabled]',
118
- standalone: true,
119
- }]
120
- }], ctorParameters: () => [] });
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZWQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9kaXJlY3RpdmVzL2Rpc2FibGVkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFN0UsTUFBTSxZQUFZLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDcEMsTUFBTSxTQUFTLEdBQUcsc0RBQXNELENBQUM7QUFFekU7OztHQUdHO0FBS0gsTUFBTSxPQUFPLGlCQUFpQjtJQWdCNUI7UUFmUyxlQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLG9CQUFlLEdBQUcsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdkQseUZBQXlGO1FBQ2hGLDBCQUFxQixHQUFHLEtBQUssQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFFM0MsT0FBRSxHQUFnQixNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQzVELGlCQUFZLEdBQWtCLElBQUksQ0FBQztRQUNuQyxvQkFBZSxHQUFrQixJQUFJLENBQUM7UUFDdEMsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBRXRDLGtHQUFrRztRQUNqRixvQkFBZSxHQUFHLElBQUksR0FBRyxFQUF5RSxDQUFDO1FBQ3BILDZGQUE2RjtRQUM1RSxrQkFBYSxHQUFHLElBQUksZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFVaEUsVUFBSyxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUN2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Q0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7K0dBaEhVLGlCQUFpQjttR0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUo3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5jb25zdCBCTE9DS0VEX0tFWVMgPSBbJ0VudGVyJywgJyAnXTtcbmNvbnN0IEZPQ1VTQUJMRSA9ICdhW2hyZWZdLCBidXR0b24sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbdGFiaW5kZXhdJztcblxuLyoqXG4gKiBEaXNhYmxlcyBhbiBlbGVtZW50IGZvciBtb3VzZSwga2V5Ym9hcmQgYW5kIGFzc2lzdGl2ZSB0ZWNobm9sb2d5LlxuICogRHJvcC1pbiBmb3IgYFtjbGFzcy50Yi1hY3Rpb24tZGlzYWJsZWRdYDogYFt0YkRpc2FibGVkXT1cImlzRGlzYWJsZWRcImAuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0YkRpc2FibGVkXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIERpc2FibGVkRGlyZWN0aXZlIHtcbiAgcmVhZG9ubHkgdGJEaXNhYmxlZCA9IGlucHV0KGZhbHNlKTtcbiAgcmVhZG9ubHkgdGJEaXNhYmxlZENsYXNzID0gaW5wdXQoJ3RiLWFjdGlvbi1kaXNhYmxlZCcpO1xuICAvKiogSWQgb2YgdGhlIGVsZW1lbnQgdGhhdCBleHBsYWlucyB3aHkgaXQgaXMgZGlzYWJsZWQ7IHRoZSBob3N0IHRoZW4gc3RheXMgZm9jdXNhYmxlLiAqL1xuICByZWFkb25seSB0YkRpc2FibGVkRGVzY3JpYmVkQnkgPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGVsOiBIVE1MRWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50O1xuICBwcml2YXRlIGFwcGxpZWRDbGFzczogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgYXBwbGllZFJlYXNvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBhcHBsaWVkTmF0aXZlRGlzYWJsZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBzYXZlZFRhYkluZGV4OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAvKiogRm9jdXNhYmxlIGNoaWxkcmVuIHRha2VuIG91dCBvZiB0aGUgVGFiIG9yZGVyIHdpdGggdGhlIGhvc3QsIGFuZCB0aGVpciBvcmlnaW5hbCBhdHRyaWJ1dGVzLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHNraXBwZWRDaGlsZHJlbiA9IG5ldyBNYXA8SFRNTEVsZW1lbnQsIHsgdGFiSW5kZXg6IHN0cmluZyB8IG51bGw7IGFyaWFEaXNhYmxlZDogc3RyaW5nIHwgbnVsbCB9PigpO1xuICAvLyBQcm9qZWN0ZWQgY29udGVudCAoZS5nLiBhIGJ1dHRvbiBpbnNpZGUgdGItdG9vbHRpcCkgY2FuIHJlbmRlciBhZnRlciB0aGUgaG9zdCBpcyBkaXNhYmxlZC5cbiAgcHJpdmF0ZSByZWFkb25seSBjaGlsZE9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4gdGhpcy5za2lwQ2hpbGRyZW4oKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHRoaXMuYXBwbHkodGhpcy50YkRpc2FibGVkKCksIHRoaXMudGJEaXNhYmxlZENsYXNzKCksIHRoaXMudGJEaXNhYmxlZERlc2NyaWJlZEJ5KCkpKTtcblxuICAgIC8vIENhcHR1cmUgcGhhc2UsIHNvIHByb2plY3RlZCBjaGlsZHJlbiBjYW5ub3QgYmUgYWN0aXZhdGVkIGVpdGhlci5cbiAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5ibG9jaywgdHJ1ZSk7XG4gICAgdGhpcy5lbC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5ibG9jaywgdHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGJsb2NrID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmICghdGhpcy50YkRpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgS2V5Ym9hcmRFdmVudCAmJiAhQkxPQ0tFRF9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgfTtcblxuICBwcml2YXRlIGFwcGx5KGRpc2FibGVkOiBib29sZWFuLCBjc3NDbGFzczogc3RyaW5nLCByZWFzb25JZDogc3RyaW5nIHwgbnVsbCkge1xuICAgIGlmICh0aGlzLmFwcGxpZWRDbGFzcykge1xuICAgICAgdGhpcy5lbC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuYXBwbGllZENsYXNzKTtcbiAgICB9XG4gICAgdGhpcy5hcHBsaWVkQ2xhc3MgPSBkaXNhYmxlZCA/IGNzc0NsYXNzIDogbnVsbDtcbiAgICBpZiAodGhpcy5hcHBsaWVkQ2xhc3MpIHtcbiAgICAgIHRoaXMuZWwuY2xhc3NMaXN0LmFkZCh0aGlzLmFwcGxpZWRDbGFzcyk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNCdXR0b24gPSB0aGlzLmVsIGluc3RhbmNlb2YgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgY29uc3QgbmF0aXZlRGlzYWJsZWQgPSBkaXNhYmxlZCAmJiBpc0J1dHRvbiAmJiAhcmVhc29uSWQ7XG4gICAgaWYgKG5hdGl2ZURpc2FibGVkIHx8IHRoaXMuYXBwbGllZE5hdGl2ZURpc2FibGVkKSB7XG4gICAgICAodGhpcy5lbCBhcyBIVE1MQnV0dG9uRWxlbWVudCkuZGlzYWJsZWQgPSBuYXRpdmVEaXNhYmxlZDtcbiAgICAgIHRoaXMuYXBwbGllZE5hdGl2ZURpc2FibGVkID0gbmF0aXZlRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGlzYWJsZWQnLCBkaXNhYmxlZCAmJiAhbmF0aXZlRGlzYWJsZWQgPyAndHJ1ZScgOiBudWxsKTtcbiAgICB0aGlzLnNldFJlYXNvbihkaXNhYmxlZCA/IHJlYXNvbklkIDogbnVsbCk7XG4gICAgdGhpcy5zZXRTa2lwSW5UYWJPcmRlcihkaXNhYmxlZCAmJiAhaXNCdXR0b24gJiYgIXJlYXNvbklkKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UmVhc29uKHJlYXNvbklkOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgY29uc3QgaWRzID0gKHRoaXMuZWwuZ2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JykgPz8gJycpXG4gICAgICAuc3BsaXQoJyAnKVxuICAgICAgLmZpbHRlcihpZCA9PiBpZCAmJiBpZCAhPT0gdGhpcy5hcHBsaWVkUmVhc29uSWQpO1xuICAgIGlmIChyZWFzb25JZCkge1xuICAgICAgaWRzLnB1c2gocmVhc29uSWQpO1xuICAgIH1cbiAgICB0aGlzLmFwcGxpZWRSZWFzb25JZCA9IHJlYXNvbklkO1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JywgaWRzLmxlbmd0aCA/IGlkcy5qb2luKCcgJykgOiBudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U2tpcEluVGFiT3JkZXIoc2tpcDogYm9vbGVhbikge1xuICAgIGlmIChza2lwKSB7XG4gICAgICB0aGlzLnNraXBDaGlsZHJlbigpO1xuICAgICAgdGhpcy5jaGlsZE9ic2VydmVyLm9ic2VydmUodGhpcy5lbCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUsIGF0dHJpYnV0ZXM6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogWyd0YWJpbmRleCddIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNoaWxkT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5za2lwcGVkQ2hpbGRyZW4uZm9yRWFjaCgoc2F2ZWQsIGNoaWxkKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0QXR0cmlidXRlT24oY2hpbGQsICd0YWJpbmRleCcsIHNhdmVkLnRhYkluZGV4KTtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVPbihjaGlsZCwgJ2FyaWEtZGlzYWJsZWQnLCBzYXZlZC5hcmlhRGlzYWJsZWQpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNraXBwZWRDaGlsZHJlbi5jbGVhcigpO1xuICAgIH1cblxuICAgIGlmIChza2lwICYmIHRoaXMuc2F2ZWRUYWJJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNhdmVkVGFiSW5kZXggPSB0aGlzLmVsLmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKTtcbiAgICAgIHRoaXMuZWwuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpO1xuICAgIH0gZWxzZSBpZiAoIXNraXAgJiYgdGhpcy5zYXZlZFRhYkluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsIHRoaXMuc2F2ZWRUYWJJbmRleCk7XG4gICAgICB0aGlzLnNhdmVkVGFiSW5kZXggPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBza2lwQ2hpbGRyZW4oKSB7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBBcnJheS5mcm9tKHRoaXMuZWwucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oRk9DVVNBQkxFKSkpIHtcbiAgICAgIGlmIChjaGlsZC50YWJJbmRleCA+PSAwICYmICF0aGlzLnNraXBwZWRDaGlsZHJlbi5oYXMoY2hpbGQpKSB7XG4gICAgICAgIHRoaXMuc2tpcHBlZENoaWxkcmVuLnNldChjaGlsZCwge1xuICAgICAgICAgIHRhYkluZGV4OiBjaGlsZC5nZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JyksXG4gICAgICAgICAgYXJpYURpc2FibGVkOiBjaGlsZC5nZXRBdHRyaWJ1dGUoJ2FyaWEtZGlzYWJsZWQnKSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNoaWxkLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgICAgY2hpbGQuc2V0QXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJywgJ3RydWUnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGVPbih0aGlzLmVsLCBuYW1lLCB2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHNldEF0dHJpYnV0ZU9uKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,36 +0,0 @@
1
- import { Directive, ElementRef, inject, input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Makes a mouse-only clickable element (usually `tb-icon`) a keyboard button:
5
- * `<tb-icon (click)="edit()" [tbIconButton]="L.edit | translate">`.
6
- * Enter and Space call the element's existing click handler.
7
- */
8
- export class IconButtonDirective {
9
- constructor() {
10
- this.tbIconButton = input.required();
11
- this.el = inject(ElementRef).nativeElement;
12
- }
13
- activate(event) {
14
- event.preventDefault();
15
- if (!event.repeat && this.el.getAttribute('aria-disabled') !== 'true') {
16
- this.el.click();
17
- }
18
- }
19
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IconButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
20
- 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 }); }
21
- }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IconButtonDirective, decorators: [{
23
- type: Directive,
24
- args: [{
25
- selector: '[tbIconButton]',
26
- standalone: true,
27
- host: {
28
- role: 'button',
29
- tabindex: '0',
30
- '[attr.aria-label]': 'tbIconButton()',
31
- '(keydown.enter)': 'activate($event)',
32
- '(keydown.space)': 'activate($event)',
33
- },
34
- }]
35
- }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1idXR0b24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9kaXJlY3RpdmVzL2ljb24tYnV0dG9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUVyRTs7OztHQUlHO0FBWUgsTUFBTSxPQUFPLG1CQUFtQjtJQVhoQztRQVlXLGlCQUFZLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBRWhDLE9BQUUsR0FBZ0IsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQztLQVFyRTtJQU5DLFFBQVEsQ0FBQyxLQUFZO1FBQ25CLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUUsS0FBdUIsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDekYsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQzsrR0FWVSxtQkFBbUI7bUdBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFYL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNKLElBQUksRUFBRSxRQUFRO3dCQUNkLFFBQVEsRUFBRSxHQUFHO3dCQUNiLG1CQUFtQixFQUFFLGdCQUFnQjt3QkFDckMsaUJBQWlCLEVBQUUsa0JBQWtCO3dCQUNyQyxpQkFBaUIsRUFBRSxrQkFBa0I7cUJBQ3RDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogTWFrZXMgYSBtb3VzZS1vbmx5IGNsaWNrYWJsZSBlbGVtZW50ICh1c3VhbGx5IGB0Yi1pY29uYCkgYSBrZXlib2FyZCBidXR0b246XG4gKiBgPHRiLWljb24gKGNsaWNrKT1cImVkaXQoKVwiIFt0Ykljb25CdXR0b25dPVwiTC5lZGl0IHwgdHJhbnNsYXRlXCI+YC5cbiAqIEVudGVyIGFuZCBTcGFjZSBjYWxsIHRoZSBlbGVtZW50J3MgZXhpc3RpbmcgY2xpY2sgaGFuZGxlci5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3RiSWNvbkJ1dHRvbl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBob3N0OiB7XG4gICAgcm9sZTogJ2J1dHRvbicsXG4gICAgdGFiaW5kZXg6ICcwJyxcbiAgICAnW2F0dHIuYXJpYS1sYWJlbF0nOiAndGJJY29uQnV0dG9uKCknLFxuICAgICcoa2V5ZG93bi5lbnRlciknOiAnYWN0aXZhdGUoJGV2ZW50KScsXG4gICAgJyhrZXlkb3duLnNwYWNlKSc6ICdhY3RpdmF0ZSgkZXZlbnQpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgSWNvbkJ1dHRvbkRpcmVjdGl2ZSB7XG4gIHJlYWRvbmx5IHRiSWNvbkJ1dHRvbiA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGVsOiBIVE1MRWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50O1xuXG4gIGFjdGl2YXRlKGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKCEoZXZlbnQgYXMgS2V5Ym9hcmRFdmVudCkucmVwZWF0ICYmIHRoaXMuZWwuZ2V0QXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJykgIT09ICd0cnVlJykge1xuICAgICAgdGhpcy5lbC5jbGljaygpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,19 +0,0 @@
1
- import { OnDestroy, OnInit } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Every "Clear All" filter button (`.tb-clear-all-filters-button`) is a keyboard button.
5
- * Pages enable it with the `active-button` class; without it the button is disabled for
6
- * the mouse (theme `pointer-events: none`), so it also leaves the Tab order and ignores keys.
7
- */
8
- export declare class ClearAllButtonDirective implements OnInit, OnDestroy {
9
- private readonly el;
10
- private readonly observer;
11
- ngOnInit(): void;
12
- ngOnDestroy(): void;
13
- activate(event: KeyboardEvent): void;
14
- private get enabled();
15
- private sync;
16
- static ɵfac: i0.ɵɵFactoryDeclaration<ClearAllButtonDirective, never>;
17
- static ɵdir: i0.ɵɵDirectiveDeclaration<ClearAllButtonDirective, ".tb-clear-all-filters-button", never, {}, {}, never, never, true, never>;
18
- }
19
- //# sourceMappingURL=clear-all-button.directive.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clear-all-button.directive.d.ts","sourceRoot":"","sources":["../../../../projects/client-shared-lib/src/libraries/directives/clear-all-button.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,SAAS,EAAE,MAAM,EAAU,MAAM,eAAe,CAAC;;AAIjF;;;;GAIG;AACH,qBASa,uBAAwB,YAAW,MAAM,EAAE,SAAS;IAC/D,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiD;IACpE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2C;IAEpE,QAAQ;IAKR,WAAW;IAIX,QAAQ,CAAC,KAAK,EAAE,aAAa;IAO7B,OAAO,KAAK,OAAO,GAElB;IAED,OAAO,CAAC,IAAI;yCAxBD,uBAAuB;2CAAvB,uBAAuB;CA4BnC"}
@@ -1,30 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- /**
3
- * Disables an element for mouse, keyboard and assistive technology.
4
- * Drop-in for `[class.tb-action-disabled]`: `[tbDisabled]="isDisabled"`.
5
- */
6
- export declare class DisabledDirective {
7
- readonly tbDisabled: import("@angular/core").InputSignal<boolean>;
8
- readonly tbDisabledClass: import("@angular/core").InputSignal<string>;
9
- /** Id of the element that explains why it is disabled; the host then stays focusable. */
10
- readonly tbDisabledDescribedBy: import("@angular/core").InputSignal<string>;
11
- private readonly el;
12
- private appliedClass;
13
- private appliedReasonId;
14
- private appliedNativeDisabled;
15
- private savedTabIndex;
16
- /** Focusable children taken out of the Tab order with the host, and their original attributes. */
17
- private readonly skippedChildren;
18
- private readonly childObserver;
19
- constructor();
20
- private readonly block;
21
- private apply;
22
- private setReason;
23
- private setSkipInTabOrder;
24
- private skipChildren;
25
- private setAttribute;
26
- private setAttributeOn;
27
- static ɵfac: i0.ɵɵFactoryDeclaration<DisabledDirective, never>;
28
- static ɵdir: i0.ɵɵDirectiveDeclaration<DisabledDirective, "[tbDisabled]", never, { "tbDisabled": { "alias": "tbDisabled"; "required": false; "isSignal": true; }; "tbDisabledClass": { "alias": "tbDisabledClass"; "required": false; "isSignal": true; }; "tbDisabledDescribedBy": { "alias": "tbDisabledDescribedBy"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
29
- }
30
- //# sourceMappingURL=disabled.directive.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"disabled.directive.d.ts","sourceRoot":"","sources":["../../../../projects/client-shared-lib/src/libraries/directives/disabled.directive.ts"],"names":[],"mappings":";AAKA;;;GAGG;AACH,qBAIa,iBAAiB;IAC5B,QAAQ,CAAC,UAAU,+CAAgB;IACnC,QAAQ,CAAC,eAAe,8CAA+B;IACvD,yFAAyF;IACzF,QAAQ,CAAC,qBAAqB,8CAA8B;IAE5D,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiD;IACpE,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,aAAa,CAA4B;IACjD,kGAAkG;IAClG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoF;IAEpH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmD;;IAUjF,OAAO,CAAC,QAAQ,CAAC,KAAK,CASpB;IAEF,OAAO,CAAC,KAAK;IAqBb,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,cAAc;yCA1GX,iBAAiB;2CAAjB,iBAAiB;CAiH7B"}
@@ -1,14 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- /**
3
- * Makes a mouse-only clickable element (usually `tb-icon`) a keyboard button:
4
- * `<tb-icon (click)="edit()" [tbIconButton]="L.edit | translate">`.
5
- * Enter and Space call the element's existing click handler.
6
- */
7
- export declare class IconButtonDirective {
8
- readonly tbIconButton: import("@angular/core").InputSignal<string>;
9
- private readonly el;
10
- activate(event: Event): void;
11
- static ɵfac: i0.ɵɵFactoryDeclaration<IconButtonDirective, never>;
12
- static ɵdir: i0.ɵɵDirectiveDeclaration<IconButtonDirective, "[tbIconButton]", never, { "tbIconButton": { "alias": "tbIconButton"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
13
- }
14
- //# sourceMappingURL=icon-button.directive.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"icon-button.directive.d.ts","sourceRoot":"","sources":["../../../../projects/client-shared-lib/src/libraries/directives/icon-button.directive.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AACH,qBAWa,mBAAmB;IAC9B,QAAQ,CAAC,YAAY,8CAA4B;IAEjD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiD;IAEpE,QAAQ,CAAC,KAAK,EAAE,KAAK;yCALV,mBAAmB;2CAAnB,mBAAmB;CAW/B"}