@design-factory/design-factory 15.2.3 → 16.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/README.md +17 -1
  2. package/assets/fonts/amadeus-neue/bold/AmadeusNeue-Bold.ttf +0 -0
  3. package/assets/fonts/amadeus-neue/bold/AmadeusNeue-Bold.woff +0 -0
  4. package/assets/fonts/amadeus-neue/bold/AmadeusNeue-Bold.woff2 +0 -0
  5. package/assets/fonts/amadeus-neue/bold/AmadeusNeue-BoldItalic.ttf +0 -0
  6. package/assets/fonts/amadeus-neue/bold/AmadeusNeue-BoldItalic.woff +0 -0
  7. package/assets/fonts/amadeus-neue/bold/AmadeusNeue-BoldItalic.woff2 +0 -0
  8. package/assets/fonts/amadeus-neue/light/AmadeusNeue-Light.ttf +0 -0
  9. package/assets/fonts/amadeus-neue/light/AmadeusNeue-Light.woff +0 -0
  10. package/assets/fonts/amadeus-neue/light/AmadeusNeue-Light.woff2 +0 -0
  11. package/assets/fonts/amadeus-neue/light/AmadeusNeue-LightItalic.ttf +0 -0
  12. package/assets/fonts/amadeus-neue/light/AmadeusNeue-LightItalic.woff +0 -0
  13. package/assets/fonts/amadeus-neue/light/AmadeusNeue-LightItalic.woff2 +0 -0
  14. package/assets/fonts/amadeus-neue/medium/AmadeusNeue-Medium.ttf +0 -0
  15. package/assets/fonts/amadeus-neue/medium/AmadeusNeue-Medium.woff +0 -0
  16. package/assets/fonts/amadeus-neue/medium/AmadeusNeue-Medium.woff2 +0 -0
  17. package/assets/fonts/amadeus-neue/medium/AmadeusNeue-MediumItalic.ttf +0 -0
  18. package/assets/fonts/amadeus-neue/medium/AmadeusNeue-MediumItalic.woff +0 -0
  19. package/assets/fonts/amadeus-neue/medium/AmadeusNeue-MediumItalic.woff2 +0 -0
  20. package/assets/fonts/amadeus-neue/regular/AmadeusNeue-Regular.ttf +0 -0
  21. package/assets/fonts/amadeus-neue/regular/AmadeusNeue-Regular.woff +0 -0
  22. package/assets/fonts/amadeus-neue/regular/AmadeusNeue-Regular.woff2 +0 -0
  23. package/assets/fonts/amadeus-neue/regular/AmadeusNeue-RegularItalic.ttf +0 -0
  24. package/assets/fonts/amadeus-neue/regular/AmadeusNeue-RegularItalic.woff +0 -0
  25. package/assets/fonts/amadeus-neue/regular/AmadeusNeue-RegularItalic.woff2 +0 -0
  26. package/design-factory-initial-branding.css +1 -0
  27. package/design-factory-initial-branding.scss +1 -0
  28. package/design-factory.css +1 -3
  29. package/design-factory.scss +1 -0
  30. package/esm2022/lib/angular/accessibility/components/skip-links-container/skip-links-container.component.mjs +3 -3
  31. package/esm2022/lib/angular/df.module.mjs +102 -0
  32. package/esm2022/lib/angular/icon/amadeus-icon.mjs +2 -2
  33. package/esm2022/lib/angular/sidenav/sidenavlist.component.mjs +3 -12
  34. package/esm2022/lib/angular/stepper/stepper.component.mjs +65 -0
  35. package/esm2022/lib/angular/stepper/stepper.directive.mjs +174 -0
  36. package/esm2022/lib/angular/stepper/stepper.module.mjs +17 -0
  37. package/esm2022/lib/angular/stepper/stepper.service.mjs +213 -0
  38. package/esm2022/lib/angular/tooltip/truncate/tooltipTruncate.directive.mjs +5 -3
  39. package/esm2022/lib/index.mjs +9 -96
  40. package/fesm2022/design-factory.mjs +1838 -1427
  41. package/fesm2022/design-factory.mjs.map +1 -1
  42. package/lib/angular/df.module.d.ts +26 -0
  43. package/lib/angular/stepper/stepper.component.d.ts +31 -0
  44. package/lib/angular/stepper/stepper.directive.d.ts +37 -0
  45. package/lib/angular/stepper/stepper.module.d.ts +8 -0
  46. package/lib/angular/stepper/stepper.service.d.ts +126 -0
  47. package/lib/angular/tooltip/truncate/tooltipTruncate.directive.d.ts +1 -0
  48. package/lib/index.d.ts +7 -23
  49. package/package.json +23 -4
  50. package/schematics/migrations/15_0_0/remove-ngx-slider/index.js +0 -1
  51. package/schematics/migrations/16_0_0/navbar-logo-dark/index.d.ts +9 -0
  52. package/schematics/migrations/16_0_0/navbar-logo-dark/index.js +43 -0
  53. package/schematics/migrations/16_0_0/revert-to-old-brand/index.d.ts +7 -0
  54. package/schematics/migrations/16_0_0/revert-to-old-brand/index.js +115 -0
  55. package/schematics/migrations/16_0_0/scss-var/files/removed.json +55 -0
  56. package/schematics/migrations/16_0_0/scss-var/files/renames.json +76 -0
  57. package/schematics/migrations/16_0_0/scss-var/index.d.ts +7 -0
  58. package/schematics/migrations/16_0_0/scss-var/index.js +57 -0
  59. package/schematics/migrations/16_0_0/stepper-classes/index.d.ts +13 -0
  60. package/schematics/migrations/16_0_0/stepper-classes/index.js +63 -0
  61. package/schematics/migrations/helpers.js +0 -1
  62. package/schematics/migrations/migration.json +23 -1
  63. package/schematics/migrations/utils/component-resource-collector.d.ts +44 -0
  64. package/schematics/migrations/utils/component-resource-collector.js +166 -0
  65. package/schematics/migrations/utils/project_tsconfig_paths.js +0 -1
  66. package/schematics/migrations/utils/style-updater.d.ts +9 -0
  67. package/schematics/migrations/utils/style-updater.js +38 -0
  68. package/schematics/migrations/utils/template-updater.d.ts +9 -0
  69. package/schematics/migrations/utils/template-updater.js +38 -0
  70. package/schematics/migrations/utils/typescript/compiler_host.js +0 -1
  71. package/schematics/migrations/utils/typescript/decorators.d.ts +22 -0
  72. package/schematics/migrations/utils/typescript/decorators.js +41 -0
  73. package/schematics/migrations/utils/typescript/functions.d.ts +14 -0
  74. package/schematics/migrations/utils/typescript/functions.js +20 -0
  75. package/schematics/migrations/utils/typescript/imports.d.ts +17 -0
  76. package/schematics/migrations/utils/typescript/imports.js +110 -0
  77. package/schematics/migrations/utils/typescript/line-mappings.d.ts +21 -0
  78. package/schematics/migrations/utils/typescript/line-mappings.js +75 -0
  79. package/schematics/migrations/utils/typescript/parse_tsconfig.js +0 -1
  80. package/schematics/migrations/utils/typescript/property-name.d.ts +18 -0
  81. package/schematics/migrations/utils/typescript/property-name.js +27 -0
  82. package/schematics/ng-add/index.js +0 -1
  83. package/schematics/ng-add/schema.js +0 -1
  84. package/styles/scss/_common.root.scss +37 -0
  85. package/styles/scss/_common.scss +3 -9
  86. package/styles/scss/_common.variables.scss +16 -6
  87. package/styles/scss/_variables.scss +0 -1
  88. package/styles/scss/bootstrap/_maps.scss +10 -9
  89. package/styles/scss/bootstrap/_mixins-override.scss +26 -0
  90. package/styles/scss/bootstrap/_variables.scss +927 -267
  91. package/styles/scss/components/accordion/_accordion.scss +31 -14
  92. package/styles/scss/components/accordion/_accordion.variables.scss +5 -5
  93. package/styles/scss/components/alert/_alert.scss +130 -228
  94. package/styles/scss/components/alert/_alert.variables.scss +22 -33
  95. package/styles/scss/components/badge/_badge.scss +130 -118
  96. package/styles/scss/components/badge/_badge.variables.scss +14 -8
  97. package/styles/scss/components/brand-color/_brand-color.mixins.scss +19 -4
  98. package/styles/scss/components/brand-color/_brand-color.scss +4 -6
  99. package/styles/scss/components/brand-color/_brand-color.variables.scss +1 -7
  100. package/styles/scss/components/brand-color/_brand-color_container.scss +28 -0
  101. package/styles/scss/components/breadcrumbs/_breadcrumbs.scss +77 -65
  102. package/styles/scss/components/breadcrumbs/_breadcrumbs.variables.scss +6 -4
  103. package/styles/scss/components/button/_button.scss +120 -55
  104. package/styles/scss/components/button/_button.variables.scss +18 -4
  105. package/styles/scss/components/button/_button_container.scss +9 -45
  106. package/styles/scss/components/card/_card.scss +90 -58
  107. package/styles/scss/components/card/_card.variables.scss +13 -13
  108. package/styles/scss/components/carousel/_carousel.scss +22 -23
  109. package/styles/scss/components/carousel/_carousel.variables.scss +2 -1
  110. package/styles/scss/components/checkbox/_checkbox.scss +14 -8
  111. package/styles/scss/components/checkbox/_checkbox.variables.scss +2 -2
  112. package/styles/scss/components/collapse/_collapse.scss +15 -7
  113. package/styles/scss/components/collapse/_collapse.variables.scss +3 -3
  114. package/styles/scss/components/datepicker/_datepicker.scss +178 -122
  115. package/styles/scss/components/datepicker/_datepicker.variables.scss +22 -15
  116. package/styles/scss/components/dropdown/_dropdown.mixins.scss +4 -4
  117. package/styles/scss/components/dropdown/_dropdown.scss +39 -19
  118. package/styles/scss/components/dropdown/_dropdown.variables.scss +4 -4
  119. package/styles/scss/components/fieldset/_fieldset.scss +4 -2
  120. package/styles/scss/components/fonts/_fonts-family.scss +112 -29
  121. package/styles/scss/components/fonts/_fonts.root.scss +27 -0
  122. package/styles/scss/components/fonts/_fonts.scss +25 -26
  123. package/styles/scss/components/fonts/_fonts.variables.scss +2 -2
  124. package/styles/scss/components/footer/_footer.scss +48 -18
  125. package/styles/scss/components/footer/_footer.variables.scss +4 -2
  126. package/styles/scss/components/form/_form.scss +69 -16
  127. package/styles/scss/components/form/_form.variables.scss +23 -3
  128. package/styles/scss/components/icon/_amadeus-icon.scss +2 -2
  129. package/styles/scss/components/icon/_amadeus-icon.variables.scss +1 -0
  130. package/styles/scss/components/inputs/_inputs.mixin.scss +8 -4
  131. package/styles/scss/components/inputs/_inputs.root.scss +8 -0
  132. package/styles/scss/components/inputs/_inputs.scss +159 -118
  133. package/styles/scss/components/inputs/_inputs.variables.scss +2 -1
  134. package/styles/scss/components/link/_link.mixins.scss +49 -49
  135. package/styles/scss/components/link/_link.scss +84 -22
  136. package/styles/scss/components/link/_link.variables.scss +6 -6
  137. package/styles/scss/components/list/_list.scss +10 -5
  138. package/styles/scss/components/list-group/_list-group.scss +54 -48
  139. package/styles/scss/components/list-group/_list-group.variables.scss +6 -14
  140. package/styles/scss/components/media/_media.scss +17 -9
  141. package/styles/scss/components/media/_media.variables.scss +2 -1
  142. package/styles/scss/components/modal/_modal.scss +88 -39
  143. package/styles/scss/components/modal/_modal.variables.scss +4 -5
  144. package/styles/scss/components/navbar/_navbar.scss +298 -115
  145. package/styles/scss/components/navbar/_navbar.variables.scss +29 -18
  146. package/styles/scss/components/pagination/_pagination.scss +68 -82
  147. package/styles/scss/components/pagination/_pagination.variables.scss +5 -8
  148. package/styles/scss/components/pagination/_pagination_container.scss +3 -0
  149. package/styles/scss/components/popover/_popover.mixin.scss +20 -33
  150. package/styles/scss/components/popover/_popover.scss +25 -7
  151. package/styles/scss/components/popover/_popover_container.scss +123 -74
  152. package/styles/scss/components/progressbar/_progressbar.scss +15 -7
  153. package/styles/scss/components/progressbar/_progressbar.variables.scss +3 -2
  154. package/styles/scss/components/radio/_radio.scss +19 -14
  155. package/styles/scss/components/rating/_rating.scss +41 -22
  156. package/styles/scss/components/rating/_rating.variables.scss +5 -5
  157. package/styles/scss/components/scrollspy/_scrollspy.scss +30 -13
  158. package/styles/scss/components/scrollspy/_scrollspy.variables.scss +2 -1
  159. package/styles/scss/components/select/_select.scss +232 -166
  160. package/styles/scss/components/select/_select.variables.scss +15 -15
  161. package/styles/scss/components/separator/_separator.scss +2 -1
  162. package/styles/scss/components/sidenav/_sidenav.scss +208 -135
  163. package/styles/scss/components/sidenav/_sidenav.variables.scss +19 -20
  164. package/styles/scss/components/skip-links/_skip-links.scss +31 -16
  165. package/styles/scss/components/skip-links/_skip-links.variables.scss +6 -6
  166. package/styles/scss/components/slider/_slider.scss +11 -10
  167. package/styles/scss/components/slider/_slider.variables.scss +8 -8
  168. package/styles/scss/components/speechbubble/_speechbubble.scss +50 -30
  169. package/styles/scss/components/speechbubble/_speechbubble.variables.scss +4 -2
  170. package/styles/scss/components/spinner/_spinner.scss +34 -29
  171. package/styles/scss/components/stepper/_stepper.mixins.scss +111 -151
  172. package/styles/scss/components/stepper/_stepper.scss +163 -69
  173. package/styles/scss/components/stepper/_stepper.variables.scss +23 -17
  174. package/styles/scss/components/table/_advancedtables.scss +50 -31
  175. package/styles/scss/components/table/_table.variables.scss +3 -2
  176. package/styles/scss/components/tabs/_tabs.scss +98 -49
  177. package/styles/scss/components/tabs/_tabs.variables.scss +11 -10
  178. package/styles/scss/components/toast/_toast.scss +136 -68
  179. package/styles/scss/components/toast/_toast.variables.scss +4 -4
  180. package/styles/scss/components/toggle/_toggle.scss +90 -44
  181. package/styles/scss/components/toggle/_toggle.variables.scss +7 -5
  182. package/styles/scss/components/typeahead/_typeahead.scss +18 -8
  183. package/styles/scss/components/typeahead/_typeahead.variables.scss +1 -1
  184. package/styles/scss/df-styles-namespace.scss +8 -11
  185. package/styles/scss/df-styles.scss +6 -3
  186. package/styles/scss/themes/brand2023/_variables.scss +588 -0
  187. package/styles/scss/utilities/_common.utilities.scss +112 -32
  188. package/assets/fonts/amadeus-light/amadeus-light.svg +0 -8658
  189. package/assets/fonts/amadeus-light/amadeus-light.ttf +0 -0
  190. package/assets/fonts/amadeus-light/amadeus-light.woff +0 -0
  191. package/assets/fonts/amadeus-light/amadeus-light.woff2 +0 -0
  192. package/assets/icon-amadeus.svg +0 -1
  193. package/esm2022/lib/angular/utils/html-element-helper.mjs +0 -8
  194. package/esm2022/lib/angular/utils/titleTruncate.directive.mjs +0 -39
  195. package/lib/angular/utils/html-element-helper.d.ts +0 -5
  196. package/lib/angular/utils/titleTruncate.directive.d.ts +0 -16
  197. package/schematics/migrations/15_0_0/remove-ngx-slider/index.js.map +0 -1
  198. package/schematics/migrations/helpers.js.map +0 -1
  199. package/schematics/migrations/utils/project_tsconfig_paths.js.map +0 -1
  200. package/schematics/migrations/utils/typescript/compiler_host.js.map +0 -1
  201. package/schematics/migrations/utils/typescript/parse_tsconfig.js.map +0 -1
  202. package/schematics/ng-add/index.js.map +0 -1
  203. package/schematics/ng-add/schema.js.map +0 -1
  204. package/styles/scss/components/tooltip/_tooltip.scss +0 -3
  205. package/styles/scss/components/tooltip/_tooltip.variables.scss +0 -5
@@ -0,0 +1,174 @@
1
+ import { Directive, ElementRef, HostListener, Renderer2, inject } from '@angular/core';
2
+ import { DfDirectionDetectionService, RightToLeftDirectionEnum } from '../right-to-left/directionDetection.service';
3
+ import { DfStepperService } from './stepper.service';
4
+ import * as i0 from "@angular/core";
5
+ export const DF_STEP_CLASS = 'df-stepper-step';
6
+ export class DfStepperStepDirective {
7
+ constructor() {
8
+ this.unlistener = [];
9
+ this.renderer2 = inject(Renderer2);
10
+ this.element = inject(ElementRef);
11
+ }
12
+ ngOnInit() {
13
+ this.unlistener.push(this.renderer2.listen(this.element.nativeElement, 'focus', () => {
14
+ this.handleFocusTabIndex();
15
+ }));
16
+ this.unlistener.push(this.renderer2.listen(this.element.nativeElement, 'blur', (event) => {
17
+ this.handleBlurTabIndex(event);
18
+ }));
19
+ }
20
+ handleFocusTabIndex() {
21
+ this.element.nativeElement.tabIndex = 0;
22
+ }
23
+ handleBlurTabIndex(event) {
24
+ if (event.relatedTarget &&
25
+ 'classList' in event.relatedTarget &&
26
+ event.relatedTarget.classList.contains(DF_STEP_CLASS)) {
27
+ this.element.nativeElement.tabIndex = -1;
28
+ }
29
+ }
30
+ ngOnDestroy() {
31
+ this.unlistener.forEach((ul) => ul());
32
+ }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfStepperStepDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
34
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.4", type: DfStepperStepDirective, isStandalone: true, selector: "[dfStepperStep]", exportAs: ["dfStepperStep"], ngImport: i0 }); }
35
+ }
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfStepperStepDirective, decorators: [{
37
+ type: Directive,
38
+ args: [{
39
+ selector: '[dfStepperStep]',
40
+ exportAs: 'dfStepperStep',
41
+ standalone: true
42
+ }]
43
+ }] });
44
+ export class DfStepperDirective {
45
+ constructor() {
46
+ this.stepperService = inject(DfStepperService);
47
+ this.element = inject(ElementRef);
48
+ this.rtlDirectionService = inject(DfDirectionDetectionService);
49
+ }
50
+ ngOnInit() {
51
+ this.direction = this.rtlDirectionService.getPageDirection(this.element);
52
+ }
53
+ handleEnterDown() {
54
+ this.handleSelect();
55
+ }
56
+ handleSpaceDown() {
57
+ this.handleSelect();
58
+ }
59
+ handleGoPrevious() {
60
+ if (this.direction === RightToLeftDirectionEnum.LeftToRight) {
61
+ this.arrowLeftInnerHandler();
62
+ }
63
+ else {
64
+ this.arrowRightInnerHandler();
65
+ }
66
+ }
67
+ handleGoNext() {
68
+ if (this.direction === RightToLeftDirectionEnum.LeftToRight) {
69
+ this.arrowRightInnerHandler();
70
+ }
71
+ else {
72
+ this.arrowLeftInnerHandler();
73
+ }
74
+ }
75
+ handleKeyDownRight(event) {
76
+ if (!this.stepperService.state.isVertical) {
77
+ this.handleGoNext();
78
+ event.preventDefault();
79
+ }
80
+ }
81
+ handleKeyDown(event) {
82
+ if (!this.stepperService.state.isVertical) {
83
+ this.handleGoPrevious();
84
+ event.preventDefault();
85
+ }
86
+ }
87
+ handleKeyDownUp(event) {
88
+ if (this.stepperService.state.isVertical) {
89
+ this.handleGoNext();
90
+ event.preventDefault();
91
+ }
92
+ }
93
+ handleKeyDownDown(event) {
94
+ if (this.stepperService.state.isVertical) {
95
+ this.handleGoPrevious();
96
+ event.preventDefault();
97
+ }
98
+ }
99
+ getSteps() {
100
+ return this.element.nativeElement.querySelectorAll(`:scope .${DF_STEP_CLASS}`);
101
+ }
102
+ handleSelect() {
103
+ const listStep = this.getSteps();
104
+ const currentPos = Array.prototype.indexOf.call(listStep, document.activeElement);
105
+ if (currentPos !== -1) {
106
+ listStep[currentPos].click();
107
+ }
108
+ }
109
+ arrowRightInnerHandler() {
110
+ const listStep = this.getSteps();
111
+ const currentPos = Array.prototype.indexOf.call(listStep, document.activeElement);
112
+ // Test if the focus is in the list (otherwise we do nothing)
113
+ if (currentPos !== -1) {
114
+ // we put the focus on the next element.
115
+ if (currentPos === listStep.length - 1) {
116
+ listStep[0].focus();
117
+ }
118
+ else {
119
+ listStep[currentPos + 1].focus();
120
+ }
121
+ }
122
+ }
123
+ arrowLeftInnerHandler() {
124
+ const listStep = this.getSteps();
125
+ const currentPos = Array.prototype.indexOf.call(listStep, document.activeElement);
126
+ // Test if the focus is in the list (otherwise we do nothing)
127
+ if (currentPos !== -1) {
128
+ // we put the focus on the next element.
129
+ if (currentPos === 0) {
130
+ listStep[listStep.length - 1].focus();
131
+ }
132
+ else {
133
+ listStep[currentPos - 1].focus();
134
+ }
135
+ }
136
+ }
137
+ ngAfterViewChecked() {
138
+ // Put back the focus on the active elements
139
+ if (this.stepperService.setFocus) {
140
+ const listStep = this.getSteps();
141
+ listStep[this.stepperService.state.active].focus();
142
+ this.stepperService.resetFocus();
143
+ }
144
+ }
145
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfStepperDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
146
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.4", type: DfStepperDirective, isStandalone: true, selector: "[dfStepperLogic]", host: { listeners: { "keydown.Enter": "handleEnterDown()", "keydown.Space": "handleSpaceDown()", "keydown.arrowRight": "handleKeyDownRight($event)", "keydown.arrowLeft": "handleKeyDown($event)", "keydown.arrowDown": "handleKeyDownUp($event)", "keydown.arrowUp": "handleKeyDownDown($event)" } }, exportAs: ["dfStepperLogic"], ngImport: i0 }); }
147
+ }
148
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfStepperDirective, decorators: [{
149
+ type: Directive,
150
+ args: [{
151
+ selector: '[dfStepperLogic]',
152
+ exportAs: 'dfStepperLogic',
153
+ standalone: true
154
+ }]
155
+ }], propDecorators: { handleEnterDown: [{
156
+ type: HostListener,
157
+ args: ['keydown.Enter']
158
+ }], handleSpaceDown: [{
159
+ type: HostListener,
160
+ args: ['keydown.Space']
161
+ }], handleKeyDownRight: [{
162
+ type: HostListener,
163
+ args: ['keydown.arrowRight', ['$event']]
164
+ }], handleKeyDown: [{
165
+ type: HostListener,
166
+ args: ['keydown.arrowLeft', ['$event']]
167
+ }], handleKeyDownUp: [{
168
+ type: HostListener,
169
+ args: ['keydown.arrowDown', ['$event']]
170
+ }], handleKeyDownDown: [{
171
+ type: HostListener,
172
+ args: ['keydown.arrowUp', ['$event']]
173
+ }] } });
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tZmFjdG9yeS9zcmMvbGliL2FuZ3VsYXIvc3RlcHBlci9zdGVwcGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBR1osU0FBUyxFQUNULE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNwSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFDckQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGlCQUFpQixDQUFDO0FBTy9DLE1BQU0sT0FBTyxzQkFBc0I7SUFMbkM7UUFNbUIsZUFBVSxHQUFzQixFQUFFLENBQUM7UUFFbkMsY0FBUyxHQUFjLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QyxZQUFPLEdBQWUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBZ0MzRDtJQTlCQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDOUQsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxLQUFpQixFQUFFLEVBQUU7WUFDOUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUss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Q0FBQztnQkFTN0MsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVM3QyxpQkFBaUI7c0JBRGhCLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbiAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGZEaXJlY3Rpb25EZXRlY3Rpb25TZXJ2aWNlLCBSaWdodFRvTGVmdERpcmVjdGlvbkVudW0gfSBmcm9tICcuLi9yaWdodC10by1sZWZ0L2RpcmVjdGlvbkRldGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IERmU3RlcHBlclNlcnZpY2UgfSBmcm9tICcuL3N0ZXBwZXIuc2VydmljZSc7XG5leHBvcnQgY29uc3QgREZfU1RFUF9DTEFTUyA9ICdkZi1zdGVwcGVyLXN0ZXAnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZGZTdGVwcGVyU3RlcF0nLFxuICBleHBvcnRBczogJ2RmU3RlcHBlclN0ZXAnLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERmU3RlcHBlclN0ZXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdW5saXN0ZW5lcjogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyMjogUmVuZGVyZXIyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudDogRWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnVubGlzdGVuZXIucHVzaChcbiAgICAgIHRoaXMucmVuZGVyZXIyLmxpc3Rlbih0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUZvY3VzVGFiSW5kZXgoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnVubGlzdGVuZXIucHVzaChcbiAgICAgIHRoaXMucmVuZGVyZXIyLmxpc3Rlbih0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2JsdXInLCAoZXZlbnQ6IEZvY3VzRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVCbHVyVGFiSW5kZXgoZXZlbnQpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgaGFuZGxlRm9jdXNUYWJJbmRleCgpIHtcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IDA7XG4gIH1cblxuICBoYW5kbGVCbHVyVGFiSW5kZXgoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICBpZiAoXG4gICAgICBldmVudC5yZWxhdGVkVGFyZ2V0ICYmXG4gICAgICAnY2xhc3NMaXN0JyBpbiBldmVudC5yZWxhdGVkVGFyZ2V0ICYmXG4gICAgICAoZXZlbnQucmVsYXRlZFRhcmdldC5jbGFzc0xpc3QgYXMgRE9NVG9rZW5MaXN0KS5jb250YWlucyhERl9TVEVQX0NMQVNTKVxuICAgICkge1xuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSAtMTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnVubGlzdGVuZXIuZm9yRWFjaCgodWwpID0+IHVsKCkpO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tkZlN0ZXBwZXJMb2dpY10nLFxuICBleHBvcnRBczogJ2RmU3RlcHBlckxvZ2ljJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEZlN0ZXBwZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0NoZWNrZWQge1xuICBwcml2YXRlIGRpcmVjdGlvbiE6IHN0cmluZztcbiAgc3RlcHBlclNlcnZpY2UgPSBpbmplY3QoRGZTdGVwcGVyU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudDogRWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBydGxEaXJlY3Rpb25TZXJ2aWNlOiBEZkRpcmVjdGlvbkRldGVjdGlvblNlcnZpY2UgPSBpbmplY3QoRGZEaXJlY3Rpb25EZXRlY3Rpb25TZXJ2aWNlKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpcmVjdGlvbiA9IHRoaXMucnRsRGlyZWN0aW9uU2VydmljZS5nZXRQYWdlRGlyZWN0aW9uKHRoaXMuZWxlbWVudCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkVudGVyJylcbiAgaGFuZGxlRW50ZXJEb3duKCkge1xuICAgIHRoaXMuaGFuZGxlU2VsZWN0KCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLlNwYWNlJylcbiAgaGFuZGxlU3BhY2VEb3duKCkge1xuICAgIHRoaXMuaGFuZGxlU2VsZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUdvUHJldmlvdXMoKSB7XG4gICAgaWYgKHRoaXMuZGlyZWN0aW9uID09PSBSaWdodFRvTGVmdERpcmVjdGlvbkVudW0uTGVmdFRvUmlnaHQpIHtcbiAgICAgIHRoaXMuYXJyb3dMZWZ0SW5uZXJIYW5kbGVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXJyb3dSaWdodElubmVySGFuZGxlcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlR29OZXh0KCkge1xuICAgIGlmICh0aGlzLmRpcmVjdGlvbiA9PT0gUmlnaHRUb0xlZnREaXJlY3Rpb25FbnVtLkxlZnRUb1JpZ2h0KSB7XG4gICAgICB0aGlzLmFycm93UmlnaHRJbm5lckhhbmRsZXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hcnJvd0xlZnRJbm5lckhhbmRsZXIoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93UmlnaHQnLCBbJyRldmVudCddKVxuICBoYW5kbGVLZXlEb3duUmlnaHQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuc3RlcHBlclNlcnZpY2Uuc3RhdGUuaXNWZXJ0aWNhbCkge1xuICAgICAgdGhpcy5oYW5kbGVHb05leHQoKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hcnJvd0xlZnQnLCBbJyRldmVudCddKVxuICBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLnN0ZXBwZXJTZXJ2aWNlLnN0YXRlLmlzVmVydGljYWwpIHtcbiAgICAgIHRoaXMuaGFuZGxlR29QcmV2aW91cygpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93RG93bicsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUtleURvd25VcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICh0aGlzLnN0ZXBwZXJTZXJ2aWNlLnN0YXRlLmlzVmVydGljYWwpIHtcbiAgICAgIHRoaXMuaGFuZGxlR29OZXh0KCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dVcCcsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUtleURvd25Eb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc3RlcHBlclNlcnZpY2Uuc3RhdGUuaXNWZXJ0aWNhbCkge1xuICAgICAgdGhpcy5oYW5kbGVHb1ByZXZpb3VzKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIGdldFN0ZXBzKCk6IEhUTUxCdXR0b25FbGVtZW50W10ge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKGA6c2NvcGUgLiR7REZfU1RFUF9DTEFTU31gKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU2VsZWN0KCkge1xuICAgIGNvbnN0IGxpc3RTdGVwID0gdGhpcy5nZXRTdGVwcygpO1xuICAgIGNvbnN0IGN1cnJlbnRQb3MgPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGxpc3RTdGVwLCBkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgICBpZiAoY3VycmVudFBvcyAhPT0gLTEpIHtcbiAgICAgIGxpc3RTdGVwW2N1cnJlbnRQb3NdLmNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcnJvd1JpZ2h0SW5uZXJIYW5kbGVyKCkge1xuICAgIGNvbnN0IGxpc3RTdGVwID0gdGhpcy5nZXRTdGVwcygpO1xuICAgIGNvbnN0IGN1cnJlbnRQb3MgPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGxpc3RTdGVwLCBkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgICAvLyBUZXN0IGlmIHRoZSBmb2N1cyBpcyBpbiB0aGUgbGlzdCAob3RoZXJ3aXNlIHdlIGRvIG5vdGhpbmcpXG4gICAgaWYgKGN1cnJlbnRQb3MgIT09IC0xKSB7XG4gICAgICAvLyB3ZSBwdXQgdGhlIGZvY3VzIG9uIHRoZSBuZXh0IGVsZW1lbnQuXG4gICAgICBpZiAoY3VycmVudFBvcyA9PT0gbGlzdFN0ZXAubGVuZ3RoIC0gMSkge1xuICAgICAgICBsaXN0U3RlcFswXS5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGlzdFN0ZXBbY3VycmVudFBvcyArIDFdLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcnJvd0xlZnRJbm5lckhhbmRsZXIoKSB7XG4gICAgY29uc3QgbGlzdFN0ZXAgPSB0aGlzLmdldFN0ZXBzKCk7XG4gICAgY29uc3QgY3VycmVudFBvcyA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwobGlzdFN0ZXAsIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO1xuICAgIC8vIFRlc3QgaWYgdGhlIGZvY3VzIGlzIGluIHRoZSBsaXN0IChvdGhlcndpc2Ugd2UgZG8gbm90aGluZylcbiAgICBpZiAoY3VycmVudFBvcyAhPT0gLTEpIHtcbiAgICAgIC8vIHdlIHB1dCB0aGUgZm9jdXMgb24gdGhlIG5leHQgZWxlbWVudC5cbiAgICAgIGlmIChjdXJyZW50UG9zID09PSAwKSB7XG4gICAgICAgIGxpc3RTdGVwW2xpc3RTdGVwLmxlbmd0aCAtIDFdLmZvY3VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsaXN0U3RlcFtjdXJyZW50UG9zIC0gMV0uZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgLy8gUHV0IGJhY2sgdGhlIGZvY3VzIG9uIHRoZSBhY3RpdmUgZWxlbWVudHNcbiAgICBpZiAodGhpcy5zdGVwcGVyU2VydmljZS5zZXRGb2N1cykge1xuICAgICAgY29uc3QgbGlzdFN0ZXA6IEhUTUxCdXR0b25FbGVtZW50W10gPSB0aGlzLmdldFN0ZXBzKCk7XG4gICAgICBsaXN0U3RlcFt0aGlzLnN0ZXBwZXJTZXJ2aWNlLnN0YXRlLmFjdGl2ZV0uZm9jdXMoKTtcbiAgICAgIHRoaXMuc3RlcHBlclNlcnZpY2UucmVzZXRGb2N1cygpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,17 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { DfStepperDirective, DfStepperStepDirective } from './stepper.directive';
3
+ import { DfStepperComponent, DfStepperStepContentDirective } from './stepper.component';
4
+ import * as i0 from "@angular/core";
5
+ export class DfStepperModule {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfStepperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.4", ngImport: i0, type: DfStepperModule, imports: [DfStepperDirective, DfStepperStepDirective, DfStepperComponent, DfStepperStepContentDirective], exports: [DfStepperDirective, DfStepperStepDirective, DfStepperComponent, DfStepperStepContentDirective] }); }
8
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfStepperModule, imports: [DfStepperComponent] }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfStepperModule, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ imports: [DfStepperDirective, DfStepperStepDirective, DfStepperComponent, DfStepperStepContentDirective],
14
+ exports: [DfStepperDirective, DfStepperStepDirective, DfStepperComponent, DfStepperStepContentDirective]
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tZmFjdG9yeS9zcmMvbGliL2FuZ3VsYXIvc3RlcHBlci9zdGVwcGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSw2QkFBNkIsRUFBQyxNQUFNLHFCQUFxQixDQUFDOztBQU12RixNQUFNLE9BQU8sZUFBZTs4R0FBZixlQUFlOytHQUFmLGVBQWUsWUFIaEIsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsNkJBQTZCLGFBQzdGLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUFFLDZCQUE2QjsrR0FFNUYsZUFBZSxZQUg0QixrQkFBa0I7OzJGQUc3RCxlQUFlO2tCQUozQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUFFLDZCQUE2QixDQUFDO29CQUN4RyxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBRSw2QkFBNkIsQ0FBQztpQkFDekciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGZTdGVwcGVyRGlyZWN0aXZlLCBEZlN0ZXBwZXJTdGVwRGlyZWN0aXZlfSBmcm9tICcuL3N0ZXBwZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IERmU3RlcHBlckNvbXBvbmVudCwgRGZTdGVwcGVyU3RlcENvbnRlbnREaXJlY3RpdmV9IGZyb20gJy4vc3RlcHBlci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbRGZTdGVwcGVyRGlyZWN0aXZlLCBEZlN0ZXBwZXJTdGVwRGlyZWN0aXZlLCBEZlN0ZXBwZXJDb21wb25lbnQsIERmU3RlcHBlclN0ZXBDb250ZW50RGlyZWN0aXZlXSxcbiAgZXhwb3J0czogW0RmU3RlcHBlckRpcmVjdGl2ZSwgRGZTdGVwcGVyU3RlcERpcmVjdGl2ZSwgRGZTdGVwcGVyQ29tcG9uZW50LCBEZlN0ZXBwZXJTdGVwQ29udGVudERpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgRGZTdGVwcGVyTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,213 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class DfStepperService {
5
+ constructor() {
6
+ this.setFocus = false;
7
+ this._stepperState$ = new BehaviorSubject({
8
+ steps: [],
9
+ active: 0,
10
+ isLinear: false,
11
+ isInline: false,
12
+ isVertical: false
13
+ });
14
+ this._state = {
15
+ steps: [],
16
+ active: 0,
17
+ isLinear: false,
18
+ isInline: false,
19
+ isVertical: false
20
+ };
21
+ this._completedLabel = 'Completed';
22
+ this._warningLabel = 'Warning';
23
+ this._stepperAriaLabel = 'Stepper';
24
+ }
25
+ get stepperState$() {
26
+ return this._stepperState$.asObservable();
27
+ }
28
+ // initState must be used to push new Steps to the service
29
+ get state() {
30
+ return this._state;
31
+ }
32
+ dispatchStepperState() {
33
+ this._stepperState$.next(this._state);
34
+ }
35
+ updateStepperState() {
36
+ this._state = this.normalizeState(this._state);
37
+ this.dispatchStepperState();
38
+ }
39
+ // API
40
+ /**
41
+ * Use this to init the list of Elements from your stepper
42
+ *
43
+ * Here we are not deep copying the array --> the function will change it
44
+ */
45
+ initStepperState(state) {
46
+ // normalize the steps here
47
+ this._state = this.normalizeState(state);
48
+ this.dispatchStepperState();
49
+ }
50
+ /**
51
+ * Use this to normalize the state of the stepper (completed, warning, current, future)
52
+ * @param state
53
+ * @returns
54
+ */
55
+ normalizeState(state) {
56
+ const stepsList = [];
57
+ for (let i = 0; i < state.steps.length; i++) {
58
+ if (state.steps[i].warning) {
59
+ stepsList.push({ ...state.steps[i], type: 'warning' });
60
+ }
61
+ else if (i === state.active) {
62
+ stepsList.push({ ...state.steps[i], type: 'current' });
63
+ }
64
+ else if (state.steps[i].completed) {
65
+ stepsList.push({ ...state.steps[i], type: 'completed' });
66
+ }
67
+ else {
68
+ stepsList.push({ ...state.steps[i], type: 'future' });
69
+ }
70
+ }
71
+ return { ...state, steps: stepsList };
72
+ }
73
+ /**
74
+ * Internal to get the stepper aria label in the template
75
+ */
76
+ get stepperAriaLabel() {
77
+ return this._stepperAriaLabel;
78
+ }
79
+ /**
80
+ * Use this to set the stepper aria label (i18n)
81
+ */
82
+ set stepperAriaLabel(label) {
83
+ this._stepperAriaLabel = label;
84
+ }
85
+ /**
86
+ * Internal to get the completed label in the template
87
+ */
88
+ get completedLabel() {
89
+ return this._completedLabel;
90
+ }
91
+ /**
92
+ * Internal to get the waring label in the template
93
+ */
94
+ get warningLabel() {
95
+ return this._warningLabel;
96
+ }
97
+ /**
98
+ * Use this to set the completed label (i18n)
99
+ */
100
+ set completedLabel(label) {
101
+ this._completedLabel = label;
102
+ }
103
+ /**
104
+ * Use this to set the warning label (i18n)
105
+ */
106
+ set warningLabel(label) {
107
+ this._warningLabel = label;
108
+ }
109
+ /**
110
+ * TODO make it customizable
111
+ * @param index - index of the step
112
+ * @returns - string of the step number to display
113
+ */
114
+ getStepNumberLabel(index) {
115
+ return `${index + 1}`;
116
+ }
117
+ resetFocus() {
118
+ this.setFocus = false;
119
+ }
120
+ /**
121
+ *
122
+ * @param isLinear - true if the stepper is linear
123
+ */
124
+ setLinear(isLinear) {
125
+ this._state.isLinear = isLinear;
126
+ this.dispatchStepperState();
127
+ }
128
+ /**
129
+ *
130
+ * @param isInline - true if the stepper is inline
131
+ */
132
+ setInline(isInline) {
133
+ this._state.isInline = isInline;
134
+ this.dispatchStepperState();
135
+ }
136
+ /**
137
+ *
138
+ * @param index - index of the step to select start at 0
139
+ */
140
+ selectStep(index) {
141
+ if (index < 0 || index >= this._state.steps.length) {
142
+ return;
143
+ }
144
+ this._state.active = index;
145
+ this.updateStepperState();
146
+ }
147
+ /**
148
+ * Same as selectStep but with focus on the step selected
149
+ * @param index - index of the step to select start at 0
150
+ */
151
+ selectWithFocus(index) {
152
+ if (index < 0 || index >= this._state.steps.length) {
153
+ return;
154
+ }
155
+ this.setFocus = true;
156
+ this.selectStep(index);
157
+ }
158
+ /**
159
+ *
160
+ * @param index - index of the step to complete start at 0
161
+ */
162
+ completeStep(index) {
163
+ if (index < 0 || index >= this._state.steps.length) {
164
+ return;
165
+ }
166
+ this._state.steps[index].completed = true;
167
+ this._state.steps[index].warning = false;
168
+ this.updateStepperState();
169
+ }
170
+ /**
171
+ *
172
+ * @param index - index of the step to complete start at 0
173
+ */
174
+ completeStepAndGoNext(index) {
175
+ this.completeStep(index);
176
+ this.selectStep(index + 1);
177
+ }
178
+ /**
179
+ * Attention if the step was completed it will be uncompleted after.
180
+ * @param index - index of the step to make Warning start at 0
181
+ * @param warningLabel - label to display in the warning by default it will take the warningLabel if it exists or the label
182
+ */
183
+ makeWarning(index, warningLabel) {
184
+ if (index < 0 || index >= this._state.steps.length) {
185
+ return;
186
+ }
187
+ this._state.steps[index].warning = true;
188
+ this._state.steps[index].completed = false;
189
+ this._state.steps[index].warningLabel = warningLabel
190
+ ? warningLabel
191
+ : this._state.steps[index].warningLabel
192
+ ? this._state.steps[index].warningLabel
193
+ : this._state.steps[index].label;
194
+ this.updateStepperState();
195
+ }
196
+ /**
197
+ *
198
+ * @param index - index of the step to remove Warning start at 0
199
+ */
200
+ removeWarning(index) {
201
+ if (index < 0 || index >= this._state.steps.length) {
202
+ return;
203
+ }
204
+ this._state.steps[index].warning = false;
205
+ this.updateStepperState();
206
+ }
207
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfStepperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
208
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfStepperService }); }
209
+ }
210
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfStepperService, decorators: [{
211
+ type: Injectable
212
+ }] });
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWZhY3Rvcnkvc3JjL2xpYi9hbmd1bGFyL3N0ZXBwZXIvc3RlcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7QUFnQ25ELE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFRSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ0EsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBMkI7WUFDOUUsS0FBSyxFQUFFLEVBQUU7WUFDVCxNQUFNLEVBQUUsQ0FBQztZQUNULFFBQVEsRUFBRSxLQUFLO1lBQ2YsUUFBUSxFQUFFLEtBQUs7WUFDZixVQUFVLEVBQUUsS0FBSztTQUNsQixDQUFDLENBQUM7UUFDSyxXQUFNLEdBQTZCO1lBQ3pDLEtBQUssRUFBRSxFQUFFO1lBQ1QsTUFBTSxFQUFFLENBQUM7WUFDVCxRQUFRLEVBQUUsS0FBSztZQUNmLFFBQVEsRUFBRSxLQUFLO1lBQ2YsVUFBVSxFQUFFLEtBQUs7U0FDbEIsQ0FBQztRQUNNLG9CQUFlLEdBQUcsV0FBVyxDQUFDO1FBQzlCLGtCQUFhLEdBQUcsU0FBUyxDQUFDO1FBQzFCLHNCQUFpQixHQUFHLFNBQVMsQ0FBQztLQXlNdkM7SUF2TUMsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFDRCwwREFBMEQ7SUFDMUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hD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LElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDekMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQzs4R0ExTlUsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBEZlN0ZXBwZXJTdGVwIHtcbiAgd2FybmluZzogYm9vbGVhbjtcbiAgY29tcGxldGVkOiBib29sZWFuO1xuICBsYWJlbDogc3RyaW5nO1xuICBhcmlhQ29udHJvbDogc3RyaW5nO1xuICB3YXJuaW5nTGFiZWw/OiBzdHJpbmc7XG4gIG9wdGlvbmFsTGFiZWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIERmU3RlcFR5cGUgPSAnd2FybmluZycgfCAnY3VycmVudCcgfCAnY29tcGxldGVkJyB8ICdmdXR1cmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERmU3RlcHBlck5vcm1hbGl6ZWRTdGVwIGV4dGVuZHMgRGZTdGVwcGVyU3RlcCB7XG4gIHR5cGU6IERmU3RlcFR5cGU7XG59XG5leHBvcnQgaW50ZXJmYWNlIERmU3RlcHBlclN0YXRlIHtcbiAgc3RlcHM6IERmU3RlcHBlclN0ZXBbXTtcbiAgYWN0aXZlOiBudW1iZXI7XG4gIGlzTGluZWFyOiBib29sZWFuO1xuICBpc0lubGluZTogYm9vbGVhbjtcbiAgaXNWZXJ0aWNhbDogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRGZTdGVwcGVyTm9ybWFsaXplZFN0YXRlIHtcbiAgc3RlcHM6IERmU3RlcHBlck5vcm1hbGl6ZWRTdGVwW107XG4gIGFjdGl2ZTogbnVtYmVyO1xuICBpc0xpbmVhcjogYm9vbGVhbjtcbiAgaXNJbmxpbmU6IGJvb2xlYW47XG4gIGlzVmVydGljYWw6IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEZlN0ZXBwZXJTZXJ2aWNlIHtcbiAgc2V0Rm9jdXMgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RlcHBlclN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGZTdGVwcGVyTm9ybWFsaXplZFN0YXRlPih7XG4gICAgc3RlcHM6IFtdLFxuICAgIGFjdGl2ZTogMCxcbiAgICBpc0xpbmVhcjogZmFsc2UsXG4gICAgaXNJbmxpbmU6IGZhbHNlLFxuICAgIGlzVmVydGljYWw6IGZhbHNlXG4gIH0pO1xuICBwcml2YXRlIF9zdGF0ZTogRGZTdGVwcGVyTm9ybWFsaXplZFN0YXRlID0ge1xuICAgIHN0ZXBzOiBbXSxcbiAgICBhY3RpdmU6IDAsXG4gICAgaXNMaW5lYXI6IGZhbHNlLFxuICAgIGlzSW5saW5lOiBmYWxzZSxcbiAgICBpc1ZlcnRpY2FsOiBmYWxzZVxuICB9O1xuICBwcml2YXRlIF9jb21wbGV0ZWRMYWJlbCA9ICdDb21wbGV0ZWQnO1xuICBwcml2YXRlIF93YXJuaW5nTGFiZWwgPSAnV2FybmluZyc7XG4gIHByaXZhdGUgX3N0ZXBwZXJBcmlhTGFiZWwgPSAnU3RlcHBlcic7XG5cbiAgZ2V0IHN0ZXBwZXJTdGF0ZSQoKTogT2JzZXJ2YWJsZTxEZlN0ZXBwZXJOb3JtYWxpemVkU3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5fc3RlcHBlclN0YXRlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuICAvLyBpbml0U3RhdGUgbXVzdCBiZSB1c2VkIHRvIHB1c2ggbmV3IFN0ZXBzIHRvIHRoZSBzZXJ2aWNlXG4gIGdldCBzdGF0ZSgpOiBEZlN0ZXBwZXJOb3JtYWxpemVkU3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGF0Y2hTdGVwcGVyU3RhdGUoKSB7XG4gICAgdGhpcy5fc3RlcHBlclN0YXRlJC5uZXh0KHRoaXMuX3N0YXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RlcHBlclN0YXRlKCkge1xuICAgIHRoaXMuX3N0YXRlID0gdGhpcy5ub3JtYWxpemVTdGF0ZSh0aGlzLl9zdGF0ZSBhcyBEZlN0ZXBwZXJTdGF0ZSk7XG4gICAgdGhpcy5kaXNwYXRjaFN0ZXBwZXJTdGF0ZSgpO1xuICB9XG5cbiAgLy8gQVBJXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBpbml0IHRoZSBsaXN0IG9mIEVsZW1lbnRzIGZyb20geW91ciBzdGVwcGVyXG4gICAqXG4gICAqIEhlcmUgd2UgYXJlIG5vdCBkZWVwIGNvcHlpbmcgdGhlIGFycmF5IC0tPiB0aGUgZnVuY3Rpb24gd2lsbCBjaGFuZ2UgaXRcbiAgICovXG4gIGluaXRTdGVwcGVyU3RhdGUoc3RhdGU6IERmU3RlcHBlclN0YXRlKSB7XG4gICAgLy8gbm9ybWFsaXplIHRoZSBzdGVwcyBoZXJlXG4gICAgdGhpcy5fc3RhdGUgPSB0aGlzLm5vcm1hbGl6ZVN0YXRlKHN0YXRlKTtcbiAgICB0aGlzLmRpc3BhdGNoU3RlcHBlclN0YXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gbm9ybWFsaXplIHRoZSBzdGF0ZSBvZiB0aGUgc3RlcHBlciAoY29tcGxldGVkLCB3YXJuaW5nLCBjdXJyZW50LCBmdXR1cmUpXG4gICAqIEBwYXJhbSBzdGF0ZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgbm9ybWFsaXplU3RhdGUoc3RhdGU6IERmU3RlcHBlclN0YXRlKTogRGZTdGVwcGVyTm9ybWFsaXplZFN0YXRlIHtcbiAgICBjb25zdCBzdGVwc0xpc3Q6IERmU3RlcHBlck5vcm1hbGl6ZWRTdGVwW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXRlLnN0ZXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoc3RhdGUuc3RlcHNbaV0ud2FybmluZykge1xuICAgICAgICBzdGVwc0xpc3QucHVzaCh7IC4uLnN0YXRlLnN0ZXBzW2ldLCB0eXBlOiAnd2FybmluZycgfSk7XG4gICAgICB9IGVsc2UgaWYgKGkgPT09IHN0YXRlLmFjdGl2ZSkge1xuICAgICAgICBzdGVwc0xpc3QucHVzaCh7IC4uLnN0YXRlLnN0ZXBzW2ldLCB0eXBlOiAnY3VycmVudCcgfSk7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlLnN0ZXBzW2ldLmNvbXBsZXRlZCkge1xuICAgICAgICBzdGVwc0xpc3QucHVzaCh7IC4uLnN0YXRlLnN0ZXBzW2ldLCB0eXBlOiAnY29tcGxldGVkJyB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0ZXBzTGlzdC5wdXNoKHsgLi4uc3RhdGUuc3RlcHNbaV0sIHR5cGU6ICdmdXR1cmUnIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyAuLi5zdGF0ZSwgc3RlcHM6IHN0ZXBzTGlzdCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVybmFsIHRvIGdldCB0aGUgc3RlcHBlciBhcmlhIGxhYmVsIGluIHRoZSB0ZW1wbGF0ZVxuICAgKi9cbiAgZ2V0IHN0ZXBwZXJBcmlhTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RlcHBlckFyaWFMYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBzZXQgdGhlIHN0ZXBwZXIgYXJpYSBsYWJlbCAoaTE4bilcbiAgICovXG4gIHNldCBzdGVwcGVyQXJpYUxhYmVsKGxhYmVsOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zdGVwcGVyQXJpYUxhYmVsID0gbGFiZWw7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJuYWwgdG8gZ2V0IHRoZSBjb21wbGV0ZWQgbGFiZWwgaW4gdGhlIHRlbXBsYXRlXG4gICAqL1xuICBnZXQgY29tcGxldGVkTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY29tcGxldGVkTGFiZWw7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJuYWwgdG8gZ2V0IHRoZSB3YXJpbmcgbGFiZWwgaW4gdGhlIHRlbXBsYXRlXG4gICAqL1xuICBnZXQgd2FybmluZ0xhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3dhcm5pbmdMYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBzZXQgdGhlIGNvbXBsZXRlZCBsYWJlbCAoaTE4bilcbiAgICovXG4gIHNldCBjb21wbGV0ZWRMYWJlbChsYWJlbDogc3RyaW5nKSB7XG4gICAgdGhpcy5fY29tcGxldGVkTGFiZWwgPSBsYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBzZXQgdGhlIHdhcm5pbmcgbGFiZWwgKGkxOG4pXG4gICAqL1xuICBzZXQgd2FybmluZ0xhYmVsKGxhYmVsOiBzdHJpbmcpIHtcbiAgICB0aGlzLl93YXJuaW5nTGFiZWwgPSBsYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUT0RPIG1ha2UgaXQgY3VzdG9taXphYmxlXG4gICAqIEBwYXJhbSBpbmRleCAtIGluZGV4IG9mIHRoZSBzdGVwXG4gICAqIEByZXR1cm5zIC0gc3RyaW5nIG9mIHRoZSBzdGVwIG51bWJlciB0byBkaXNwbGF5XG4gICAqL1xuICBnZXRTdGVwTnVtYmVyTGFiZWwoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2luZGV4ICsgMX1gO1xuICB9XG5cbiAgcmVzZXRGb2N1cygpIHtcbiAgICB0aGlzLnNldEZvY3VzID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGlzTGluZWFyIC0gdHJ1ZSBpZiB0aGUgc3RlcHBlciBpcyBsaW5lYXJcbiAgICovXG4gIHNldExpbmVhcihpc0xpbmVhcjogYm9vbGVhbikge1xuICAgIHRoaXMuX3N0YXRlLmlzTGluZWFyID0gaXNMaW5lYXI7XG4gICAgdGhpcy5kaXNwYXRjaFN0ZXBwZXJTdGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpc0lubGluZSAtIHRydWUgaWYgdGhlIHN0ZXBwZXIgaXMgaW5saW5lXG4gICAqL1xuICBzZXRJbmxpbmUoaXNJbmxpbmU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zdGF0ZS5pc0lubGluZSA9IGlzSW5saW5lO1xuICAgIHRoaXMuZGlzcGF0Y2hTdGVwcGVyU3RhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaW5kZXggLSBpbmRleCBvZiB0aGUgc3RlcCB0byBzZWxlY3Qgc3RhcnQgYXQgMFxuICAgKi9cbiAgc2VsZWN0U3RlcChpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLl9zdGF0ZS5zdGVwcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fc3RhdGUuYWN0aXZlID0gaW5kZXg7XG4gICAgdGhpcy51cGRhdGVTdGVwcGVyU3RhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYW1lIGFzIHNlbGVjdFN0ZXAgYnV0IHdpdGggZm9jdXMgb24gdGhlIHN0ZXAgc2VsZWN0ZWRcbiAgICogQHBhcmFtIGluZGV4IC0gaW5kZXggb2YgdGhlIHN0ZXAgdG8gc2VsZWN0IHN0YXJ0IGF0IDBcbiAgICovXG4gIHNlbGVjdFdpdGhGb2N1cyhpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLl9zdGF0ZS5zdGVwcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZXRGb2N1cyA9IHRydWU7XG4gICAgdGhpcy5zZWxlY3RTdGVwKGluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaW5kZXggLSBpbmRleCBvZiB0aGUgc3RlcCB0byBjb21wbGV0ZSBzdGFydCBhdCAwXG4gICAqL1xuICBjb21wbGV0ZVN0ZXAoaW5kZXg6IG51bWJlcikge1xuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5fc3RhdGUuc3RlcHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3N0YXRlLnN0ZXBzW2luZGV4XS5jb21wbGV0ZWQgPSB0cnVlO1xuICAgIHRoaXMuX3N0YXRlLnN0ZXBzW2luZGV4XS53YXJuaW5nID0gZmFsc2U7XG4gICAgdGhpcy51cGRhdGVTdGVwcGVyU3RhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaW5kZXggLSBpbmRleCBvZiB0aGUgc3RlcCB0byBjb21wbGV0ZSBzdGFydCBhdCAwXG4gICAqL1xuICBjb21wbGV0ZVN0ZXBBbmRHb05leHQoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuY29tcGxldGVTdGVwKGluZGV4KTtcbiAgICB0aGlzLnNlbGVjdFN0ZXAoaW5kZXggKyAxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbnRpb24gaWYgdGhlIHN0ZXAgd2FzIGNvbXBsZXRlZCBpdCB3aWxsIGJlIHVuY29tcGxldGVkIGFmdGVyLlxuICAgKiBAcGFyYW0gaW5kZXggLSBpbmRleCBvZiB0aGUgc3RlcCB0byBtYWtlIFdhcm5pbmcgc3RhcnQgYXQgMFxuICAgKiBAcGFyYW0gd2FybmluZ0xhYmVsIC0gbGFiZWwgdG8gZGlzcGxheSBpbiB0aGUgd2FybmluZyBieSBkZWZhdWx0IGl0IHdpbGwgdGFrZSB0aGUgd2FybmluZ0xhYmVsIGlmIGl0IGV4aXN0cyBvciB0aGUgbGFiZWxcbiAgICovXG4gIG1ha2VXYXJuaW5nKGluZGV4OiBudW1iZXIsIHdhcm5pbmdMYWJlbD86IHN0cmluZykge1xuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5fc3RhdGUuc3RlcHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3N0YXRlLnN0ZXBzW2luZGV4XS53YXJuaW5nID0gdHJ1ZTtcbiAgICB0aGlzLl9zdGF0ZS5zdGVwc1tpbmRleF0uY29tcGxldGVkID0gZmFsc2U7XG4gICAgdGhpcy5fc3RhdGUuc3RlcHNbaW5kZXhdLndhcm5pbmdMYWJlbCA9IHdhcm5pbmdMYWJlbFxuICAgICAgPyB3YXJuaW5nTGFiZWxcbiAgICAgIDogdGhpcy5fc3RhdGUuc3RlcHNbaW5kZXhdLndhcm5pbmdMYWJlbFxuICAgICAgPyB0aGlzLl9zdGF0ZS5zdGVwc1tpbmRleF0ud2FybmluZ0xhYmVsXG4gICAgICA6IHRoaXMuX3N0YXRlLnN0ZXBzW2luZGV4XS5sYWJlbDtcbiAgICB0aGlzLnVwZGF0ZVN0ZXBwZXJTdGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpbmRleCAtIGluZGV4IG9mIHRoZSBzdGVwIHRvIHJlbW92ZSBXYXJuaW5nIHN0YXJ0IGF0IDBcbiAgICovXG4gIHJlbW92ZVdhcm5pbmcoaW5kZXg6IG51bWJlcikge1xuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5fc3RhdGUuc3RlcHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3N0YXRlLnN0ZXBzW2luZGV4XS53YXJuaW5nID0gZmFsc2U7XG4gICAgdGhpcy51cGRhdGVTdGVwcGVyU3RhdGUoKTtcbiAgfVxufVxuIl19
@@ -1,5 +1,4 @@
1
1
  import { Directive } from '@angular/core';
2
- import { hasOverflow } from '../../utils/html-element-helper';
3
2
  import * as i0 from "@angular/core";
4
3
  import * as i1 from "@ng-bootstrap/ng-bootstrap";
5
4
  /**
@@ -15,7 +14,10 @@ export class DfTooltipTruncateDirective {
15
14
  this.renderer.addClass(this.elementRef.nativeElement, 'text-truncate');
16
15
  }
17
16
  ngDoCheck() {
18
- this.tooltip.disableTooltip = !hasOverflow(this.elementRef.nativeElement);
17
+ this.tooltip.disableTooltip = !this.hasOverflow(this.elementRef.nativeElement);
18
+ }
19
+ hasOverflow(element) {
20
+ return element?.offsetHeight < element?.scrollHeight || element?.offsetWidth < element?.scrollWidth;
19
21
  }
20
22
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfTooltipTruncateDirective, deps: [{ token: i1.NgbTooltip }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
21
23
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.4", type: DfTooltipTruncateDirective, isStandalone: true, selector: "[dfTooltipTruncate]", exportAs: ["dfTooltipTruncate"], ngImport: i0 }); }
@@ -28,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImpor
28
30
  standalone: true
29
31
  }]
30
32
  }], ctorParameters: function () { return [{ type: i1.NgbTooltip }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; } });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcFRydW5jYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1mYWN0b3J5L3NyYy9saWIvYW5ndWxhci90b29sdGlwL3RydW5jYXRlL3Rvb2x0aXBUcnVuY2F0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBMEMsTUFBTSxlQUFlLENBQUM7QUFFbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFFOUQ7O0dBRUc7QUFNSCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLFlBQ21CLE9BQW1CLEVBQ25CLFVBQW1DLEVBQ25DLFFBQW1CO1FBRm5CLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbkMsYUFBUSxHQUFSLFFBQVEsQ0FBVztJQUNuQyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1RSxDQUFDOzhHQWJVLDBCQUEwQjtrR0FBMUIsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUx0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRG9DaGVjaywgRWxlbWVudFJlZiwgT25Jbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYlRvb2x0aXAgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBoYXNPdmVyZmxvdyB9IGZyb20gJy4uLy4uL3V0aWxzL2h0bWwtZWxlbWVudC1oZWxwZXInO1xuXG4vKipcbiAqIE15IGRmVG9vbHRpcFRydW5jYXRlIGRpcmVjdGl2ZVxuICovXG5ARGlyZWN0aXZlKHtcbiAgZXhwb3J0QXM6ICdkZlRvb2x0aXBUcnVuY2F0ZScsXG4gIHNlbGVjdG9yOiAnW2RmVG9vbHRpcFRydW5jYXRlXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGZUb29sdGlwVHJ1bmNhdGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIERvQ2hlY2sge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvb2x0aXA6IE5nYlRvb2x0aXAsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0ZXh0LXRydW5jYXRlJyk7XG4gIH1cblxuICBuZ0RvQ2hlY2soKSB7XG4gICAgdGhpcy50b29sdGlwLmRpc2FibGVUb29sdGlwID0gIWhhc092ZXJmbG93KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxufVxuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcFRydW5jYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1mYWN0b3J5L3NyYy9saWIvYW5ndWxhci90b29sdGlwL3RydW5jYXRlL3Rvb2x0aXBUcnVuY2F0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBMEMsTUFBTSxlQUFlLENBQUM7OztBQUdsRjs7R0FFRztBQU1ILE1BQU0sT0FBTywwQkFBMEI7SUFDckMsWUFDbUIsT0FBbUIsRUFDbkIsVUFBbUMsRUFDbkMsUUFBbUI7UUFGbkIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUNuQyxhQUFRLEdBQVIsUUFBUSxDQUFXO0lBQ25DLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRU8sV0FBVyxDQUFDLE9BQW9CO1FBQ3RDLE9BQU8sT0FBTyxFQUFFLFlBQVksR0FBRyxPQUFPLEVBQUUsWUFBWSxJQUFJLE9BQU8sRUFBRSxXQUFXLEdBQUcsT0FBTyxFQUFFLFdBQVcsQ0FBQztJQUN0RyxDQUFDOzhHQWpCVSwwQkFBMEI7a0dBQTFCLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFMdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIERvQ2hlY2ssIEVsZW1lbnRSZWYsIE9uSW5pdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ2JUb29sdGlwIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG4vKipcbiAqIE15IGRmVG9vbHRpcFRydW5jYXRlIGRpcmVjdGl2ZVxuICovXG5ARGlyZWN0aXZlKHtcbiAgZXhwb3J0QXM6ICdkZlRvb2x0aXBUcnVuY2F0ZScsXG4gIHNlbGVjdG9yOiAnW2RmVG9vbHRpcFRydW5jYXRlXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGZUb29sdGlwVHJ1bmNhdGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIERvQ2hlY2sge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvb2x0aXA6IE5nYlRvb2x0aXAsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0ZXh0LXRydW5jYXRlJyk7XG4gIH1cblxuICBuZ0RvQ2hlY2soKSB7XG4gICAgdGhpcy50b29sdGlwLmRpc2FibGVUb29sdGlwID0gIXRoaXMuaGFzT3ZlcmZsb3codGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNPdmVyZmxvdyhlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlbGVtZW50Py5vZmZzZXRIZWlnaHQgPCBlbGVtZW50Py5zY3JvbGxIZWlnaHQgfHwgZWxlbWVudD8ub2Zmc2V0V2lkdGggPCBlbGVtZW50Py5zY3JvbGxXaWR0aDtcbiAgfVxufVxuIl19