@leanix/components 0.4.531 → 0.4.533

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 (157) hide show
  1. package/fesm2022/leanix-components.mjs +365 -365
  2. package/fesm2022/leanix-components.mjs.map +1 -1
  3. package/lib/core-ui/tooltip/tooltip.directive.d.ts +1 -1
  4. package/lib/forms-ui/components/keyboard-select.directive.d.ts +1 -1
  5. package/lib/forms-ui/models/base-select.directive.d.ts +1 -1
  6. package/lib/tab-ui/components/tab-group/tab-group.component.d.ts +1 -1
  7. package/package.json +10 -14
  8. package/esm2022/index.mjs +0 -145
  9. package/esm2022/leanix-components.mjs +0 -5
  10. package/esm2022/lib/core-ui/components/avatar/avatar.component.mjs +0 -40
  11. package/esm2022/lib/core-ui/components/avatar/avatar.helpers.mjs +0 -49
  12. package/esm2022/lib/core-ui/components/avatar/avatar.model.mjs +0 -33
  13. package/esm2022/lib/core-ui/components/avatar-group/avatar-group.component.mjs +0 -75
  14. package/esm2022/lib/core-ui/components/badge/badge.component.mjs +0 -58
  15. package/esm2022/lib/core-ui/components/banner/banner.component.mjs +0 -68
  16. package/esm2022/lib/core-ui/components/banner/banner.models.mjs +0 -12
  17. package/esm2022/lib/core-ui/components/button/button.component.mjs +0 -179
  18. package/esm2022/lib/core-ui/components/button-group/button-group.component.mjs +0 -28
  19. package/esm2022/lib/core-ui/components/card/card.component.mjs +0 -26
  20. package/esm2022/lib/core-ui/components/collapsible/collapsible.component.mjs +0 -52
  21. package/esm2022/lib/core-ui/components/counter/counter.component.mjs +0 -30
  22. package/esm2022/lib/core-ui/components/ellipsis/ellipsis.component.mjs +0 -143
  23. package/esm2022/lib/core-ui/components/empty-state/empty-state.component.mjs +0 -41
  24. package/esm2022/lib/core-ui/components/icon-scale/icon-scale.component.mjs +0 -36
  25. package/esm2022/lib/core-ui/components/skeleton/skeleton.component.mjs +0 -44
  26. package/esm2022/lib/core-ui/components/spinner/spinner.component.mjs +0 -26
  27. package/esm2022/lib/core-ui/components/stepper/stepper.component.mjs +0 -70
  28. package/esm2022/lib/core-ui/components/table/table-header/table-header.component.mjs +0 -128
  29. package/esm2022/lib/core-ui/components/table/table.component.mjs +0 -77
  30. package/esm2022/lib/core-ui/components/tiny-spinner/tiny-spinner.component.mjs +0 -14
  31. package/esm2022/lib/core-ui/components/tokenizer/token/token.component.mjs +0 -20
  32. package/esm2022/lib/core-ui/components/tokenizer/tokenizer-overflow-popover/tokenizer-overflow-popover.component.mjs +0 -44
  33. package/esm2022/lib/core-ui/components/tokenizer/tokenizer.component.mjs +0 -149
  34. package/esm2022/lib/core-ui/core-ui.constants.mjs +0 -240
  35. package/esm2022/lib/core-ui/core-ui.module.mjs +0 -206
  36. package/esm2022/lib/core-ui/directives/after-view-init.directive.mjs +0 -33
  37. package/esm2022/lib/core-ui/directives/autoclose-group.service.mjs +0 -39
  38. package/esm2022/lib/core-ui/directives/autoclose.directive.mjs +0 -43
  39. package/esm2022/lib/core-ui/directives/autofocus.directive.mjs +0 -36
  40. package/esm2022/lib/core-ui/functions/core-css.helpers.mjs +0 -52
  41. package/esm2022/lib/core-ui/functions/highlight-text.function.mjs +0 -80
  42. package/esm2022/lib/core-ui/linkify/linkify.pipe.mjs +0 -146
  43. package/esm2022/lib/core-ui/linkify/unlinkify.pipe.mjs +0 -51
  44. package/esm2022/lib/core-ui/pipes/br.pipe.mjs +0 -24
  45. package/esm2022/lib/core-ui/pipes/contrast-color.pipe.mjs +0 -21
  46. package/esm2022/lib/core-ui/pipes/custom-date.pipe.mjs +0 -28
  47. package/esm2022/lib/core-ui/pipes/display-avatars.pipe.mjs +0 -37
  48. package/esm2022/lib/core-ui/pipes/highlight-range.pipe.mjs +0 -29
  49. package/esm2022/lib/core-ui/pipes/highlight-term.pipe.mjs +0 -57
  50. package/esm2022/lib/core-ui/pipes/lx-is-uuid.pipe.mjs +0 -22
  51. package/esm2022/lib/core-ui/pipes/lx-time-ago.pipe.mjs +0 -29
  52. package/esm2022/lib/core-ui/pipes/lx-translate.pipe.mjs +0 -50
  53. package/esm2022/lib/core-ui/pipes/markdown.pipe.mjs +0 -32
  54. package/esm2022/lib/core-ui/pipes/nbsp.pipe.mjs +0 -17
  55. package/esm2022/lib/core-ui/pipes/sort.pipe.mjs +0 -55
  56. package/esm2022/lib/core-ui/pipes/translation-after.pipe.mjs +0 -29
  57. package/esm2022/lib/core-ui/pipes/translation-before.pipe.mjs +0 -54
  58. package/esm2022/lib/core-ui/pipes/translation-between.pipe.mjs +0 -68
  59. package/esm2022/lib/core-ui/pipes/unescape-curly-braces.pipe.mjs +0 -17
  60. package/esm2022/lib/core-ui/services/resize-observer.service.mjs +0 -112
  61. package/esm2022/lib/core-ui/tooltip/to-cdk-position.function.mjs +0 -74
  62. package/esm2022/lib/core-ui/tooltip/tooltip-position.interface.mjs +0 -7
  63. package/esm2022/lib/core-ui/tooltip/tooltip.component.mjs +0 -26
  64. package/esm2022/lib/core-ui/tooltip/tooltip.directive.mjs +0 -117
  65. package/esm2022/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.mjs +0 -139
  66. package/esm2022/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.mjs +0 -38
  67. package/esm2022/lib/forms-ui/components/breadcrumb/breadcrumb.component.mjs +0 -55
  68. package/esm2022/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.mjs +0 -215
  69. package/esm2022/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.mjs +0 -135
  70. package/esm2022/lib/forms-ui/components/currency/currency-input.component.mjs +0 -159
  71. package/esm2022/lib/forms-ui/components/currency/currency-symbol-map.constant.mjs +0 -105
  72. package/esm2022/lib/forms-ui/components/currency/currency-symbol.component.mjs +0 -24
  73. package/esm2022/lib/forms-ui/components/date-input/date-input.component.mjs +0 -347
  74. package/esm2022/lib/forms-ui/components/date-picker-ui/date-formatter.mjs +0 -8
  75. package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker-inner.component.mjs +0 -312
  76. package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker-ui.module.mjs +0 -20
  77. package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker.component.mjs +0 -206
  78. package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker.config.mjs +0 -29
  79. package/esm2022/lib/forms-ui/components/date-picker-ui/daypicker.component.mjs +0 -319
  80. package/esm2022/lib/forms-ui/components/date-picker-ui/isBs3.mjs +0 -2
  81. package/esm2022/lib/forms-ui/components/date-picker-ui/monthpicker.component.mjs +0 -149
  82. package/esm2022/lib/forms-ui/components/date-picker-ui/yearpicker.component.mjs +0 -151
  83. package/esm2022/lib/forms-ui/components/drag-and-drop-list/constants.mjs +0 -5
  84. package/esm2022/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.mjs +0 -49
  85. package/esm2022/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.mjs +0 -120
  86. package/esm2022/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.module.mjs +0 -39
  87. package/esm2022/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-item/keyboard-sortable-item.directive.mjs +0 -137
  88. package/esm2022/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-list/keyboard-sortable-list.directive.mjs +0 -38
  89. package/esm2022/lib/forms-ui/components/error-message/error-message.component.mjs +0 -16
  90. package/esm2022/lib/forms-ui/components/expanded-dropdown/expanded-dropdown.component.mjs +0 -26
  91. package/esm2022/lib/forms-ui/components/form-error/form-error.component.mjs +0 -44
  92. package/esm2022/lib/forms-ui/components/icon/icon.component.mjs +0 -45
  93. package/esm2022/lib/forms-ui/components/input/input.component.mjs +0 -48
  94. package/esm2022/lib/forms-ui/components/keyboard-select.directive.mjs +0 -126
  95. package/esm2022/lib/forms-ui/components/multi-select/multi-select-selection/multi-select-selection.component.mjs +0 -28
  96. package/esm2022/lib/forms-ui/components/multi-select/multi-select.component.mjs +0 -318
  97. package/esm2022/lib/forms-ui/components/option/option.component.mjs +0 -99
  98. package/esm2022/lib/forms-ui/components/option-group/option-group.component.mjs +0 -29
  99. package/esm2022/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.mjs +0 -123
  100. package/esm2022/lib/forms-ui/components/options-dropdown/options-dropdown.component.mjs +0 -297
  101. package/esm2022/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.mjs +0 -94
  102. package/esm2022/lib/forms-ui/components/picker/picker-trigger.directive.mjs +0 -47
  103. package/esm2022/lib/forms-ui/components/picker/picker.component.mjs +0 -218
  104. package/esm2022/lib/forms-ui/components/picker-option/picker-option.component.mjs +0 -118
  105. package/esm2022/lib/forms-ui/components/pill-item/pill-item.component.mjs +0 -33
  106. package/esm2022/lib/forms-ui/components/pill-list/pill-list.component.mjs +0 -58
  107. package/esm2022/lib/forms-ui/components/responsive-input/responsive-input.component.mjs +0 -101
  108. package/esm2022/lib/forms-ui/components/select-list/select-list.component.mjs +0 -178
  109. package/esm2022/lib/forms-ui/components/single-select/single-select.component.mjs +0 -290
  110. package/esm2022/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.mjs +0 -71
  111. package/esm2022/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.mjs +0 -21
  112. package/esm2022/lib/forms-ui/components/switch/switch.component.mjs +0 -51
  113. package/esm2022/lib/forms-ui/directives/contenteditable.directive.mjs +0 -130
  114. package/esm2022/lib/forms-ui/directives/form-error.directive.mjs +0 -121
  115. package/esm2022/lib/forms-ui/directives/form-submit.directive.mjs +0 -29
  116. package/esm2022/lib/forms-ui/directives/keyboard-action-source.directive.mjs +0 -63
  117. package/esm2022/lib/forms-ui/directives/mark-invalid.directive.mjs +0 -39
  118. package/esm2022/lib/forms-ui/directives/max-length-counter.directive.mjs +0 -131
  119. package/esm2022/lib/forms-ui/directives/select-dropdown.directive.mjs +0 -32
  120. package/esm2022/lib/forms-ui/directives/selectable-item.directive.mjs +0 -34
  121. package/esm2022/lib/forms-ui/directives/selected-option.directive.mjs +0 -27
  122. package/esm2022/lib/forms-ui/forms-ui.module.mjs +0 -270
  123. package/esm2022/lib/forms-ui/helpers/key-codes.constants.mjs +0 -13
  124. package/esm2022/lib/forms-ui/helpers/keyboard-navigation.helpers.mjs +0 -38
  125. package/esm2022/lib/forms-ui/models/base-select.directive.mjs +0 -183
  126. package/esm2022/lib/forms-ui/models/dropdown-item.interface.mjs +0 -2
  127. package/esm2022/lib/forms-ui/models/single-select-padding.interface.mjs +0 -2
  128. package/esm2022/lib/forms-ui/models/sorting.interface.mjs +0 -7
  129. package/esm2022/lib/forms-ui/pipes/filter-selection.pipe.mjs +0 -33
  130. package/esm2022/lib/forms-ui/pipes/filter-term.pipe.mjs +0 -29
  131. package/esm2022/lib/forms-ui/pipes/format-number.pipe.mjs +0 -66
  132. package/esm2022/lib/forms-ui/validators/date-in-foreseeable-future.validator.mjs +0 -26
  133. package/esm2022/lib/forms-ui/validators/string-not-in-array.validator.mjs +0 -30
  134. package/esm2022/lib/modal-ui/components/modal/modal.component.mjs +0 -264
  135. package/esm2022/lib/modal-ui/components/modal-footer/modal-footer.component.mjs +0 -16
  136. package/esm2022/lib/modal-ui/components/modal-header/modal-header.component.mjs +0 -19
  137. package/esm2022/lib/modal-ui/directives/modal-content.directive.mjs +0 -14
  138. package/esm2022/lib/modal-ui/modal.constants.mjs +0 -18
  139. package/esm2022/lib/modal-ui/modal.module.mjs +0 -47
  140. package/esm2022/lib/popover-ui/components/popover/popover.component.mjs +0 -228
  141. package/esm2022/lib/popover-ui/directives/popover-click.directive.mjs +0 -52
  142. package/esm2022/lib/popover-ui/directives/popover-content.directive.mjs +0 -17
  143. package/esm2022/lib/popover-ui/directives/popover-hover.directive.mjs +0 -88
  144. package/esm2022/lib/popover-ui/popover-ui.module.mjs +0 -21
  145. package/esm2022/lib/shared/date-helpers.mjs +0 -35
  146. package/esm2022/lib/shared/html-helpers.function.mjs +0 -34
  147. package/esm2022/lib/shared/misc-helpers.mjs +0 -24
  148. package/esm2022/lib/shared/observe.mjs +0 -40
  149. package/esm2022/lib/tab-ui/components/tab/tab.component.mjs +0 -118
  150. package/esm2022/lib/tab-ui/components/tab-group/tab-group-key-codes.enum.mjs +0 -12
  151. package/esm2022/lib/tab-ui/components/tab-group/tab-group.component.mjs +0 -150
  152. package/esm2022/lib/tab-ui/tab-ui.module.mjs +0 -20
  153. package/esm2022/ui5/icons/lx-icons.json +0 -177
  154. package/esm2022/ui5/icons/register-icons.mjs +0 -14
  155. package/esm2022/ui5/index.mjs +0 -8
  156. package/esm2022/ui5/leanix-components-ui5.mjs +0 -5
  157. package/esm2022/ui5/ui5.provider.mjs +0 -29
@@ -1,130 +0,0 @@
1
- import { Directive, EventEmitter, HostListener, Input, Output, SecurityContext } from '@angular/core';
2
- import { intersection, isNil } from 'lodash-es';
3
- import { NbspPipe } from '../../core-ui/pipes/nbsp.pipe';
4
- import { trimHtml } from '../../shared/html-helpers.function';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/platform-browser";
7
- // First version based on https://stackoverflow.com/a/41253897/6813271
8
- export class ContenteditableDirective {
9
- constructor(elRef, sanitizer) {
10
- this.elRef = elRef;
11
- this.sanitizer = sanitizer;
12
- this.lxContenteditableModelChange = new EventEmitter();
13
- /** Allow (sanitized) html */
14
- this.lxContenteditableHtml = false;
15
- this.lxContenteditableHtmlPaste = true;
16
- this.emittedValue = null;
17
- }
18
- ngOnChanges(changes) {
19
- if (changes['lxContenteditableModel']) {
20
- // On init: if lxContenteditableModel is empty, read from DOM in case the element has content
21
- if (changes['lxContenteditableModel'].isFirstChange() && !this.lxContenteditableModel) {
22
- // Prevent Exp.HasChanged: Don't read and emit value from DOM during change detection
23
- setTimeout(() => {
24
- this.onInput(true);
25
- });
26
- }
27
- this.refreshView();
28
- }
29
- }
30
- onInput(initialInlineData = false) {
31
- let value = this.elRef.nativeElement[this.getProperty()];
32
- value = this.cleanContent(value, initialInlineData);
33
- this.emittedValue = value;
34
- this.lxContenteditableModelChange.emit(value);
35
- }
36
- /**
37
- * @param event {ClipboardEvent}
38
- */
39
- onPaste(event) {
40
- const clipboardEvent = event;
41
- this.onInput();
42
- // For text-only contenteditable, remove pasted HTML.
43
- if (!this.lxContenteditableHtml || !this.lxContenteditableHtmlPaste) {
44
- let isHtml = true;
45
- // TODO: Use beforepaste event. See https://www.lucidchart.com/techblog/2014/12/02/definitive-guide-copying-pasting-javascript/.
46
- if (clipboardEvent.clipboardData && clipboardEvent.clipboardData.types) {
47
- const types = [].slice.apply(clipboardEvent.clipboardData.types);
48
- isHtml = intersection(types, ['text/html', 'com.apple.webarchive']).length > 0;
49
- }
50
- if (isHtml) {
51
- // 1 tick wait is required for DOM update
52
- setTimeout(() => {
53
- // Cursor will be lost
54
- // The lint disabling here should be clearified. See if and how this directive is needed.
55
- this.elRef.nativeElement.innerHTML = this.sanitizer.sanitize(SecurityContext.HTML, this.elRef.nativeElement.innerText.replace(/\n/g, '<br />'));
56
- });
57
- }
58
- }
59
- }
60
- onDrop(event) {
61
- this.onInput();
62
- // For text-only contenteditable, don't allow drop content.
63
- if (!this.lxContenteditableHtml || !this.lxContenteditableHtmlPaste) {
64
- event.preventDefault();
65
- event.stopPropagation();
66
- return false;
67
- }
68
- return false;
69
- }
70
- cleanContent(value, initialInlineData = false) {
71
- if (this.lxContenteditableHtml === 'trim' || (this.lxContenteditableHtml && initialInlineData)) {
72
- value = trimHtml(value);
73
- }
74
- else if (initialInlineData && !this.lxContenteditableHtml && value) {
75
- value = value.replace(/^[\n\s]+/, '');
76
- value = value.replace(/[\n\s]+$/, '');
77
- }
78
- // Some browsers like Chrome insert nbsp; when using contentEditable attribute
79
- return new NbspPipe().transform(value);
80
- }
81
- refreshView() {
82
- if (!isNil(this.lxContenteditableModel)) {
83
- const newContent = this.cleanContent(this.lxContenteditableModel);
84
- // Only refresh if content changed to avoid cursor loss
85
- // (as ngOnChanges can be triggered an additional time by onInput())
86
- if (this.emittedValue === null || this.emittedValue !== newContent) {
87
- this.elRef.nativeElement[this.getProperty()] = this.sanitize(newContent);
88
- }
89
- }
90
- }
91
- getProperty() {
92
- return this.lxContenteditableHtml ? 'innerHTML' : 'innerText';
93
- }
94
- sanitize(content) {
95
- return this.lxContenteditableHtml ? this.sanitizer.sanitize(SecurityContext.HTML, content) : content;
96
- }
97
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ContenteditableDirective, deps: [{ token: i0.ElementRef }, { token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Directive }); }
98
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: ContenteditableDirective, isStandalone: true, selector: "[lxContenteditableModel]", inputs: { lxContenteditableModel: "lxContenteditableModel", lxContenteditableHtml: "lxContenteditableHtml", lxContenteditableHtmlPaste: "lxContenteditableHtmlPaste" }, outputs: { lxContenteditableModelChange: "lxContenteditableModelChange" }, host: { listeners: { "input": "onInput()", "blur": "onInput()", "keyup": "onInput()", "paste": "onPaste($event)", "drop": "onDrop($event)" } }, usesOnChanges: true, ngImport: i0 }); }
99
- }
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ContenteditableDirective, decorators: [{
101
- type: Directive,
102
- args: [{
103
- selector: '[lxContenteditableModel]',
104
- standalone: true
105
- }]
106
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.DomSanitizer }], propDecorators: { lxContenteditableModel: [{
107
- type: Input
108
- }], lxContenteditableModelChange: [{
109
- type: Output
110
- }], lxContenteditableHtml: [{
111
- type: Input
112
- }], lxContenteditableHtmlPaste: [{
113
- type: Input
114
- }], onInput: [{
115
- type: HostListener,
116
- args: ['input']
117
- }, {
118
- type: HostListener,
119
- args: ['blur']
120
- }, {
121
- type: HostListener,
122
- args: ['keyup']
123
- }], onPaste: [{
124
- type: HostListener,
125
- args: ['paste', ['$event']]
126
- }], onDrop: [{
127
- type: HostListener,
128
- args: ['drop', ['$event']]
129
- }] } });
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudGVkaXRhYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2Zvcm1zLXVpL2RpcmVjdGl2ZXMvY29udGVudGVkaXRhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxlQUFlLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRTVJLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7OztBQUU5RCxzRUFBc0U7QUFLdEUsTUFBTSxPQUFPLHdCQUF3QjtJQVVuQyxZQUNVLEtBQThCLEVBQzlCLFNBQXVCO1FBRHZCLFVBQUssR0FBTCxLQUFLLENBQXlCO1FBQzlCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFUdkIsaUNBQTRCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNwRSw2QkFBNkI7UUFDcEIsMEJBQXFCLEdBQXFCLEtBQUssQ0FBQztRQUNoRCwrQkFBMEIsR0FBWSxJQUFJLENBQUM7UUFFNUMsaUJBQVksR0FBa0IsSUFBSSxDQUFDO0lBS3hDLENBQUM7SUFFSixXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDO1lBQ3RDLDZGQUE2RjtZQUM3RixJQUFJLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0JBQ3RGLHFGQUFxRjtnQkFDckYsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFD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TUFBTTtnQkFFRSxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csMEJBQTBCO3NCQUFsQyxLQUFLO2dCQXlCTixPQUFPO3NCQUhOLFlBQVk7dUJBQUMsT0FBTzs7c0JBQ3BCLFlBQVk7dUJBQUMsTUFBTTs7c0JBQ25CLFlBQVk7dUJBQUMsT0FBTztnQkFXYyxPQUFPO3NCQUF6QyxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkF5QkMsTUFBTTtzQkFBdkMsWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNlY3VyaXR5Q29udGV4dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBpbnRlcnNlY3Rpb24sIGlzTmlsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE5ic3BQaXBlIH0gZnJvbSAnLi4vLi4vY29yZS11aS9waXBlcy9uYnNwLnBpcGUnO1xuaW1wb3J0IHsgdHJpbUh0bWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvaHRtbC1oZWxwZXJzLmZ1bmN0aW9uJztcblxuLy8gRmlyc3QgdmVyc2lvbiBiYXNlZCBvbiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDEyNTM4OTcvNjgxMzI3MVxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2x4Q29udGVudGVkaXRhYmxlTW9kZWxdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50ZWRpdGFibGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvKiogTW9kZWwgKi9cbiAgQElucHV0KCkgbHhDb250ZW50ZWRpdGFibGVNb2RlbCE6IHN0cmluZztcbiAgQE91dHB1dCgpIGx4Q29udGVudGVkaXRhYmxlTW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgLyoqIEFsbG93IChzYW5pdGl6ZWQpIGh0bWwgKi9cbiAgQElucHV0KCkgbHhDb250ZW50ZWRpdGFibGVIdG1sOiBib29sZWFuIHwgJ3RyaW0nID0gZmFsc2U7XG4gIEBJbnB1dCgpIGx4Q29udGVudGVkaXRhYmxlSHRtbFBhc3RlOiBib29sZWFuID0gdHJ1ZTtcblxuICBwcml2YXRlIGVtaXR0ZWRWYWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxuICApIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydseENvbnRlbnRlZGl0YWJsZU1vZGVsJ10pIHtcbiAgICAgIC8vIE9uIGluaXQ6IGlmIGx4Q29udGVudGVkaXRhYmxlTW9kZWwgaXMgZW1wdHksIHJlYWQgZnJvbSBET00gaW4gY2FzZSB0aGUgZWxlbWVudCBoYXMgY29udGVudFxuICAgICAgaWYgKGNoYW5nZXNbJ2x4Q29udGVudGVkaXRhYmxlTW9kZWwnXS5pc0ZpcnN0Q2hhbmdlKCkgJiYgIXRoaXMubHhDb250ZW50ZWRpdGFibGVNb2RlbCkge1xuICAgICAgICAvLyBQcmV2ZW50IEV4cC5IYXNDaGFuZ2VkOiBEb24ndCByZWFkIGFuZCBlbWl0IHZhbHVlIGZyb20gRE9NIGR1cmluZyBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMub25JbnB1dCh0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnJlZnJlc2hWaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnKVxuICBASG9zdExpc3RlbmVyKCdibHVyJylcbiAgQEhvc3RMaXN0ZW5lcigna2V5dXAnKVxuICBvbklucHV0KGluaXRpYWxJbmxpbmVEYXRhID0gZmFsc2UpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnRbdGhpcy5nZXRQcm9wZXJ0eSgpXSBhcyBzdHJpbmc7XG4gICAgdmFsdWUgPSB0aGlzLmNsZWFuQ29udGVudCh2YWx1ZSwgaW5pdGlhbElubGluZURhdGEpO1xuICAgIHRoaXMuZW1pdHRlZFZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5seENvbnRlbnRlZGl0YWJsZU1vZGVsQ2hhbmdlLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBldmVudCB7Q2xpcGJvYXJkRXZlbnR9XG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdwYXN0ZScsIFsnJGV2ZW50J10pIG9uUGFzdGUoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGNsaXBib2FyZEV2ZW50ID0gZXZlbnQgYXMgQ2xpcGJvYXJkRXZlbnQ7XG4gICAgdGhpcy5vbklucHV0KCk7XG4gICAgLy8gRm9yIHRleHQtb25seSBjb250ZW50ZWRpdGFibGUsIHJlbW92ZSBwYXN0ZWQgSFRNTC5cbiAgICBpZiAoIXRoaXMubHhDb250ZW50ZWRpdGFibGVIdG1sIHx8ICF0aGlzLmx4Q29udGVudGVkaXRhYmxlSHRtbFBhc3RlKSB7XG4gICAgICBsZXQgaXNIdG1sOiBib29sZWFuID0gdHJ1ZTtcbiAgICAgIC8vIFRPRE86IFVzZSBiZWZvcmVwYXN0ZSBldmVudC4gU2VlIGh0dHBzOi8vd3d3Lmx1Y2lkY2hhcnQuY29tL3RlY2hibG9nLzIwMTQvMTIvMDIvZGVmaW5pdGl2ZS1ndWlkZS1jb3B5aW5nLXBhc3RpbmctamF2YXNjcmlwdC8uXG4gICAgICBpZiAoY2xpcGJvYXJkRXZlbnQuY2xpcGJvYXJkRGF0YSAmJiBjbGlwYm9hcmRFdmVudC5jbGlwYm9hcmREYXRhLnR5cGVzKSB7XG4gICAgICAgIGNvbnN0IHR5cGVzID0gW10uc2xpY2UuYXBwbHkoY2xpcGJvYXJkRXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcyk7XG4gICAgICAgIGlzSHRtbCA9IGludGVyc2VjdGlvbih0eXBlcywgWyd0ZXh0L2h0bWwnLCAnY29tLmFwcGxlLndlYmFyY2hpdmUnXSkubGVuZ3RoID4gMDtcbiAgICAgIH1cbiAgICAgIGlmIChpc0h0bWwpIHtcbiAgICAgICAgLy8gMSB0aWNrIHdhaXQgaXMgcmVxdWlyZWQgZm9yIERPTSB1cGRhdGVcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgLy8gQ3Vyc29yIHdpbGwgYmUgbG9zdFxuICAgICAgICAgIC8vIFRoZSBsaW50IGRpc2FibGluZyBoZXJlIHNob3VsZCBiZSBjbGVhcmlmaWVkLiBTZWUgaWYgYW5kIGhvdyB0aGlzIGRpcmVjdGl2ZSBpcyBuZWVkZWQuXG4gICAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IHRoaXMuc2FuaXRpemVyLnNhbml0aXplKFxuICAgICAgICAgICAgU2VjdXJpdHlDb250ZXh0LkhUTUwsXG4gICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0LnJlcGxhY2UoL1xcbi9nLCAnPGJyIC8+JylcbiAgICAgICAgICApITtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJvcCcsIFsnJGV2ZW50J10pIG9uRHJvcChldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMub25JbnB1dCgpO1xuICAgIC8vIEZvciB0ZXh0LW9ubHkgY29udGVudGVkaXRhYmxlLCBkb24ndCBhbGxvdyBkcm9wIGNvbnRlbnQuXG4gICAgaWYgKCF0aGlzLmx4Q29udGVudGVkaXRhYmxlSHRtbCB8fCAhdGhpcy5seENvbnRlbnRlZGl0YWJsZUh0bWxQYXN0ZSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW5Db250ZW50KHZhbHVlOiBzdHJpbmcsIGluaXRpYWxJbmxpbmVEYXRhID0gZmFsc2UpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmx4Q29udGVudGVkaXRhYmxlSHRtbCA9PT0gJ3RyaW0nIHx8ICh0aGlzLmx4Q29udGVudGVkaXRhYmxlSHRtbCAmJiBpbml0aWFsSW5saW5lRGF0YSkpIHtcbiAgICAgIHZhbHVlID0gdHJpbUh0bWwodmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoaW5pdGlhbElubGluZURhdGEgJiYgIXRoaXMubHhDb250ZW50ZWRpdGFibGVIdG1sICYmIHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL15bXFxuXFxzXSsvLCAnJyk7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1tcXG5cXHNdKyQvLCAnJyk7XG4gICAgfVxuICAgIC8vIFNvbWUgYnJvd3NlcnMgbGlrZSBDaHJvbWUgaW5zZXJ0IG5ic3A7IHdoZW4gdXNpbmcgY29udGVudEVkaXRhYmxlIGF0dHJpYnV0ZVxuICAgIHJldHVybiBuZXcgTmJzcFBpcGUoKS50cmFuc2Zvcm0odmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWZyZXNoVmlldygpIHtcbiAgICBpZiAoIWlzTmlsKHRoaXMubHhDb250ZW50ZWRpdGFibGVNb2RlbCkpIHtcbiAgICAgIGNvbnN0IG5ld0NvbnRlbnQgPSB0aGlzLmNsZWFuQ29udGVudCh0aGlzLmx4Q29udGVudGVkaXRhYmxlTW9kZWwpO1xuICAgICAgLy8gT25seSByZWZyZXNoIGlmIGNvbnRlbnQgY2hhbmdlZCB0byBhdm9pZCBjdXJzb3IgbG9zc1xuICAgICAgLy8gKGFzIG5nT25DaGFuZ2VzIGNhbiBiZSB0cmlnZ2VyZWQgYW4gYWRkaXRpb25hbCB0aW1lIGJ5IG9uSW5wdXQoKSlcbiAgICAgIGlmICh0aGlzLmVtaXR0ZWRWYWx1ZSA9PT0gbnVsbCB8fCB0aGlzLmVtaXR0ZWRWYWx1ZSAhPT0gbmV3Q29udGVudCkge1xuICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnRbdGhpcy5nZXRQcm9wZXJ0eSgpXSA9IHRoaXMuc2FuaXRpemUobmV3Q29udGVudCkhO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UHJvcGVydHkoKTogJ2lubmVySFRNTCcgfCAnaW5uZXJUZXh0JyB7XG4gICAgcmV0dXJuIHRoaXMubHhDb250ZW50ZWRpdGFibGVIdG1sID8gJ2lubmVySFRNTCcgOiAnaW5uZXJUZXh0JztcbiAgfVxuXG4gIHByaXZhdGUgc2FuaXRpemUoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMubHhDb250ZW50ZWRpdGFibGVIdG1sID8gdGhpcy5zYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LkhUTUwsIGNvbnRlbnQpIDogY29udGVudDtcbiAgfVxufVxuIl19
@@ -1,121 +0,0 @@
1
- import { Directive, Host, Inject, InjectionToken, Input, Optional, Self } from '@angular/core';
2
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
- import { curry } from 'lodash-es';
4
- import { combineLatest, of } from 'rxjs';
5
- import { map, startWith } from 'rxjs/operators';
6
- import { ErrorMessageComponent } from '../components/error-message/error-message.component';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@ngx-translate/core";
9
- import * as i2 from "@angular/forms";
10
- import * as i3 from "./form-submit.directive";
11
- export const FORM_CONTROL_ERROR_NAMESPACE = new InjectionToken('FORM_CONTROL_ERROR_NAMESPACE');
12
- export const FORM_CONTROL_ERROR_DISPLAY_STRATEGY = new InjectionToken('FORM_CONTROL_ERROR_DISPLAY_STRATEGY');
13
- export const provideFormControlErrorNamespace = (namespace) => ({
14
- provide: FORM_CONTROL_ERROR_NAMESPACE,
15
- useValue: namespace
16
- });
17
- export const provideFormControlErrorDisplayStrategy = (fn) => ({
18
- provide: FORM_CONTROL_ERROR_DISPLAY_STRATEGY,
19
- useValue: fn
20
- });
21
- export class FormErrorDirective {
22
- get control() {
23
- return this.ngControl?.control || this.ctrl || null;
24
- }
25
- get name() {
26
- return this.ngControl?.name || this.controlName;
27
- }
28
- get formSubmitted() {
29
- return this.formSubmitDirective ? this.formSubmitDirective.submitted$ : of(undefined);
30
- }
31
- constructor(viewContainer, componentFactoryResolver, translateService, destroyRef, ngControl, formSubmitDirective, namespace, strategy) {
32
- this.viewContainer = viewContainer;
33
- this.componentFactoryResolver = componentFactoryResolver;
34
- this.translateService = translateService;
35
- this.destroyRef = destroyRef;
36
- this.ngControl = ngControl;
37
- this.formSubmitDirective = formSubmitDirective;
38
- this.namespace = namespace;
39
- this.strategy = strategy;
40
- }
41
- ngOnInit() {
42
- const control = this.control;
43
- if (isAbstractControl(control)) {
44
- combineLatest([control.valueChanges.pipe(startWith(control.value)), this.formSubmitted])
45
- .pipe(map(([, submitted]) => submitted), map(resolveStrategy(this.strategy, control)), takeUntilDestroyed(this.destroyRef))
46
- .subscribe((display) => {
47
- const { errors } = control;
48
- if (errors && display) {
49
- const firstErrorKey = Object.keys(errors)[0];
50
- const translationKey = this.buildTranslationKey(firstErrorKey);
51
- this.setError(translationKey);
52
- }
53
- else if (this.ref) {
54
- this.setError();
55
- }
56
- });
57
- }
58
- }
59
- buildTranslationKey(errorKey) {
60
- if (this.control) {
61
- return `${this.namespace || 'form'}.errors.${this.name ? `${this.name}.` : ''}${errorKey}`;
62
- }
63
- else {
64
- return '';
65
- }
66
- }
67
- setError(key) {
68
- if (!this.ref) {
69
- const factory = this.componentFactoryResolver.resolveComponentFactory(ErrorMessageComponent);
70
- this.ref = this.viewContainer.createComponent(factory);
71
- }
72
- if (key) {
73
- this.translateService
74
- .get(key)
75
- .pipe(takeUntilDestroyed(this.destroyRef))
76
- .subscribe((message) => {
77
- if (this.ref) {
78
- this.ref.instance.dynamicErrorMessage.set(message);
79
- }
80
- });
81
- }
82
- else {
83
- this.ref.instance.dynamicErrorMessage.set('');
84
- }
85
- }
86
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: FormErrorDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }, { token: i1.TranslateService }, { token: i0.DestroyRef }, { token: i2.NgControl, optional: true, self: true }, { token: i3.FormSubmitDirective, host: true, optional: true }, { token: FORM_CONTROL_ERROR_NAMESPACE, optional: true }, { token: FORM_CONTROL_ERROR_DISPLAY_STRATEGY, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
87
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: FormErrorDirective, isStandalone: true, selector: "[lxFormError]", inputs: { ctrl: ["lxFormError", "ctrl"], controlName: "controlName" }, ngImport: i0 }); }
88
- }
89
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: FormErrorDirective, decorators: [{
90
- type: Directive,
91
- args: [{
92
- selector: '[lxFormError]',
93
- standalone: true
94
- }]
95
- }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }, { type: i1.TranslateService }, { type: i0.DestroyRef }, { type: i2.NgControl, decorators: [{
96
- type: Optional
97
- }, {
98
- type: Self
99
- }] }, { type: i3.FormSubmitDirective, decorators: [{
100
- type: Optional
101
- }, {
102
- type: Host
103
- }] }, { type: undefined, decorators: [{
104
- type: Optional
105
- }, {
106
- type: Inject,
107
- args: [FORM_CONTROL_ERROR_NAMESPACE]
108
- }] }, { type: undefined, decorators: [{
109
- type: Optional
110
- }, {
111
- type: Inject,
112
- args: [FORM_CONTROL_ERROR_DISPLAY_STRATEGY]
113
- }] }], propDecorators: { ctrl: [{
114
- type: Input,
115
- args: ['lxFormError']
116
- }], controlName: [{
117
- type: Input
118
- }] } });
119
- const isAbstractControl = (ctrl) => !!ctrl;
120
- const resolveStrategy = curry((strategy, control, submitted) => strategy ? strategy({ control, submitted }) : true);
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9kaXJlY3RpdmVzL2Zvcm0tZXJyb3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxTQUFTLEVBQ1QsSUFBSSxFQUNKLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUVMLFFBQVEsRUFDUixJQUFJLEVBRUwsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHaEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQWMsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDOzs7OztBQUs1RixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FBUyw4QkFBOEIsQ0FBQyxDQUFDO0FBQ3ZHLE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUFHLElBQUksY0FBYyxDQUNuRSxxQ0FBcUMsQ0FDdEMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RSxPQUFPLEVBQUUsNEJBQTRCO0lBQ3JDLFFBQVEsRUFBRSxTQUFTO0NBQ3BCLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUFHLENBQUMsRUFBbUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM5RixPQUFPLEVBQUUsbUNBQW1DO0lBQzVDLFFBQVEsRUFBRSxFQUFFO0NBQ2IsQ0FBQyxD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O3NCQUFuQixLQUFLOztBQTRFUixNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBd0MsRUFBMkIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDeEcsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUMzQixDQUFDLFFBQXFELEVBQUUsT0FBd0IsRUFBRSxTQUE4QixFQUFFLEVBQUUsQ0FDbEgsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIERlc3Ryb3lSZWYsXG4gIERpcmVjdGl2ZSxcbiAgSG9zdCxcbiAgSW5qZWN0LFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNlbGYsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGN1cnJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVycm9yTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZXJyb3ItbWVzc2FnZS9lcnJvci1tZXNzYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtU3VibWl0RGlyZWN0aXZlIH0gZnJvbSAnLi9mb3JtLXN1Ym1pdC5kaXJlY3RpdmUnO1xuXG5leHBvcnQgdHlwZSBGb3JtQ29udHJvbEVycm9yRGlzcGxheVN0cmF0ZWd5ID0gKG9iajogeyBjb250cm9sOiBBYnN0cmFjdENvbnRyb2w7IHN1Ym1pdHRlZD86IGJvb2xlYW4gfSkgPT4gYm9vbGVhbjtcblxuZXhwb3J0IGNvbnN0IEZPUk1fQ09OVFJPTF9FUlJPUl9OQU1FU1BBQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignRk9STV9DT05UUk9MX0VSUk9SX05BTUVTUEFDRScpO1xuZXhwb3J0IGNvbnN0IEZPUk1fQ09OVFJPTF9FUlJPUl9ESVNQTEFZX1NUUkFURUdZID0gbmV3IEluamVjdGlvblRva2VuPEZvcm1Db250cm9sRXJyb3JEaXNwbGF5U3RyYXRlZ3k+KFxuICAnRk9STV9DT05UUk9MX0VSUk9SX0RJU1BMQVlfU1RSQVRFR1knXG4pO1xuXG5leHBvcnQgY29uc3QgcHJvdmlkZUZvcm1Db250cm9sRXJyb3JOYW1lc3BhY2UgPSAobmFtZXNwYWNlOiBzdHJpbmcpID0+ICh7XG4gIHByb3ZpZGU6IEZPUk1fQ09OVFJPTF9FUlJPUl9OQU1FU1BBQ0UsXG4gIHVzZVZhbHVlOiBuYW1lc3BhY2Vcbn0pO1xuXG5leHBvcnQgY29uc3QgcHJvdmlkZUZvcm1Db250cm9sRXJyb3JEaXNwbGF5U3RyYXRlZ3kgPSAoZm46IEZvcm1Db250cm9sRXJyb3JEaXNwbGF5U3RyYXRlZ3kpID0+ICh7XG4gIHByb3ZpZGU6IEZPUk1fQ09OVFJPTF9FUlJPUl9ESVNQTEFZX1NUUkFURUdZLFxuICB1c2VWYWx1ZTogZm5cbn0pO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbHhGb3JtRXJyb3JdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRXJyb3JEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoJ2x4Rm9ybUVycm9yJykgY3RybD86IEFic3RyYWN0Q29udHJvbCB8ICcnO1xuICBASW5wdXQoKSBjb250cm9sTmFtZT86IHN0cmluZztcbiAgcHJpdmF0ZSByZWY/OiBDb21wb25lbnRSZWY8RXJyb3JNZXNzYWdlQ29tcG9uZW50PjtcblxuICBwcml2YXRlIGdldCBjb250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm5nQ29udHJvbD8uY29udHJvbCB8fCB0aGlzLmN0cmwgfHwgbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IG5hbWUoKTogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubmdDb250cm9sPy5uYW1lIHx8IHRoaXMuY29udHJvbE5hbWU7XG4gIH1cblxuICBwcml2YXRlIGdldCBmb3JtU3VibWl0dGVkKCk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1TdWJtaXREaXJlY3RpdmUgPyB0aGlzLmZvcm1TdWJtaXREaXJlY3RpdmUuc3VibWl0dGVkJCA6IG9mKHVuZGVmaW5lZCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmLFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHJpdmF0ZSBuZ0NvbnRyb2w/OiBOZ0NvbnRyb2wsXG4gICAgQE9wdGlvbmFsKCkgQEhvc3QoKSBwcml2YXRlIGZvcm1TdWJtaXREaXJlY3RpdmU/OiBGb3JtU3VibWl0RGlyZWN0aXZlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRk9STV9DT05UUk9MX0VSUk9SX05BTUVTUEFDRSkgcHJpdmF0ZSBuYW1lc3BhY2U/OiBzdHJpbmcsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChGT1JNX0NPTlRST0xfRVJST1JfRElTUExBWV9TVFJBVEVHWSkgcHJpdmF0ZSBzdHJhdGVneT86IEZvcm1Db250cm9sRXJyb3JEaXNwbGF5U3RyYXRlZ3lcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNvbnRyb2w7XG4gICAgaWYgKGlzQWJzdHJhY3RDb250cm9sKGNvbnRyb2wpKSB7XG4gICAgICBjb21iaW5lTGF0ZXN0KFtjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSksIHRoaXMuZm9ybVN1Ym1pdHRlZF0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoWywgc3VibWl0dGVkXSkgPT4gc3VibWl0dGVkKSxcbiAgICAgICAgICBtYXAocmVzb2x2ZVN0cmF0ZWd5KHRoaXMuc3RyYXRlZ3ksIGNvbnRyb2wpKSxcbiAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGRpc3BsYXkpID0+IHtcbiAgICAgICAgICBjb25zdCB7IGVycm9ycyB9ID0gY29udHJvbDtcbiAgICAgICAgICBpZiAoZXJyb3JzICYmIGRpc3BsYXkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0RXJyb3JLZXkgPSBPYmplY3Qua2V5cyhlcnJvcnMpWzBdO1xuICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRpb25LZXkgPSB0aGlzLmJ1aWxkVHJhbnNsYXRpb25LZXkoZmlyc3RFcnJvcktleSEpO1xuICAgICAgICAgICAgdGhpcy5zZXRFcnJvcih0cmFuc2xhdGlvbktleSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlZikge1xuICAgICAgICAgICAgdGhpcy5zZXRFcnJvcigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFRyYW5zbGF0aW9uS2V5KGVycm9yS2V5OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5uYW1lc3BhY2UgfHwgJ2Zvcm0nfS5lcnJvcnMuJHt0aGlzLm5hbWUgPyBgJHt0aGlzLm5hbWV9LmAgOiAnJ30ke2Vycm9yS2V5fWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEVycm9yKGtleT86IHN0cmluZykge1xuICAgIGlmICghdGhpcy5yZWYpIHtcbiAgICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShFcnJvck1lc3NhZ2VDb21wb25lbnQpO1xuICAgICAgdGhpcy5yZWYgPSB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGZhY3RvcnkpO1xuICAgIH1cbiAgICBpZiAoa2V5KSB7XG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcbiAgICAgICAgLmdldChrZXkpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAuc3Vic2NyaWJlKChtZXNzYWdlKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMucmVmKSB7XG4gICAgICAgICAgICB0aGlzLnJlZi5pbnN0YW5jZS5keW5hbWljRXJyb3JNZXNzYWdlLnNldChtZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlZi5pbnN0YW5jZS5keW5hbWljRXJyb3JNZXNzYWdlLnNldCgnJyk7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IGlzQWJzdHJhY3RDb250cm9sID0gKGN0cmw6IEFic3RyYWN0Q29udHJvbCB8IG51bGwgfCB1bmRlZmluZWQpOiBjdHJsIGlzIEFic3RyYWN0Q29udHJvbCA9PiAhIWN0cmw7XG5jb25zdCByZXNvbHZlU3RyYXRlZ3kgPSBjdXJyeShcbiAgKHN0cmF0ZWd5OiBGb3JtQ29udHJvbEVycm9yRGlzcGxheVN0cmF0ZWd5IHwgdW5kZWZpbmVkLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHN1Ym1pdHRlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCkgPT5cbiAgICBzdHJhdGVneSA/IHN0cmF0ZWd5KHsgY29udHJvbCwgc3VibWl0dGVkIH0pIDogdHJ1ZVxuKTtcbiJdfQ==
@@ -1,29 +0,0 @@
1
- import { Directive } from '@angular/core';
2
- import { BehaviorSubject, fromEvent } from 'rxjs';
3
- import { take } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- export class FormSubmitDirective {
6
- constructor(elementRef) {
7
- this.elementRef = elementRef;
8
- this.submitted$ = new BehaviorSubject(false);
9
- this.subscription = fromEvent(this.elementRef.nativeElement, 'submit')
10
- .pipe(take(1))
11
- .subscribe(() => this.submitted$.next(true));
12
- }
13
- ngOnDestroy() {
14
- if (this.subscription) {
15
- this.subscription.unsubscribe();
16
- }
17
- }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: FormSubmitDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
19
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: FormSubmitDirective, isStandalone: true, selector: "form", ngImport: i0 }); }
20
- }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: FormSubmitDirective, decorators: [{
22
- type: Directive,
23
- args: [{
24
- // eslint-disable-next-line @angular-eslint/directive-selector
25
- selector: 'form',
26
- standalone: true
27
- }]
28
- }], ctorParameters: () => [{ type: i0.ElementRef }] });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zdWJtaXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvZm9ybXMtdWkvZGlyZWN0aXZlcy9mb3JtLXN1Ym1pdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFPdEMsTUFBTSxPQUFPLG1CQUFtQjtJQUk5QixZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBSDFDLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUl0QyxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUM7YUFDbkUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNiLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQzs4R0FkVSxtQkFBbUI7a0dBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFML0IsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxNQUFNO29CQUNoQixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnZm9ybScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRm9ybVN1Ym1pdERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHN1Ym1pdHRlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IGZyb21FdmVudCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3N1Ym1pdCcpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnN1Ym1pdHRlZCQubmV4dCh0cnVlKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,63 +0,0 @@
1
- import { Directive } from '@angular/core';
2
- import { Subject, fromEvent } from 'rxjs';
3
- import { filter, map, takeUntil } from 'rxjs/operators';
4
- import { KeyboardSelectAction } from '../components/keyboard-select.directive';
5
- import { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, END, ENTER, ESCAPE, HOME, TAB } from '../helpers/key-codes.constants';
6
- import * as i0 from "@angular/core";
7
- export class KeyboardActionSourceDirective {
8
- constructor(element) {
9
- this.element = element;
10
- this.dontEmit = false;
11
- this.destroyed$ = new Subject();
12
- this.keyboardActions$ = fromEvent(this.element.nativeElement, 'keydown').pipe(filter((_event) => !this.dontEmit), map((event) => {
13
- switch (event.keyCode) {
14
- case ARROW_UP:
15
- event.preventDefault();
16
- return KeyboardSelectAction.PREV;
17
- case ARROW_DOWN:
18
- event.preventDefault();
19
- return KeyboardSelectAction.NEXT;
20
- case ARROW_LEFT:
21
- event.preventDefault();
22
- return KeyboardSelectAction.LEFT;
23
- case ARROW_RIGHT:
24
- event.preventDefault();
25
- return KeyboardSelectAction.RIGHT;
26
- case HOME:
27
- event.preventDefault();
28
- return KeyboardSelectAction.FIRST;
29
- case END:
30
- event.preventDefault();
31
- return KeyboardSelectAction.LAST;
32
- case ENTER:
33
- event.preventDefault();
34
- return KeyboardSelectAction.EXECUTE;
35
- case ESCAPE:
36
- case TAB:
37
- return KeyboardSelectAction.CLOSE;
38
- default:
39
- return null;
40
- }
41
- }), takeUntil(this.destroyed$));
42
- }
43
- blur() {
44
- this.element.nativeElement.blur();
45
- }
46
- ngOnDestroy() {
47
- this.destroyed$.next();
48
- }
49
- nativeElement() {
50
- return this.element?.nativeElement;
51
- }
52
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: KeyboardActionSourceDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
53
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: KeyboardActionSourceDirective, isStandalone: true, selector: "[lxKeyboardActionSource]", exportAs: ["keyboardActionSource"], ngImport: i0 }); }
54
- }
55
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: KeyboardActionSourceDirective, decorators: [{
56
- type: Directive,
57
- args: [{
58
- exportAs: 'keyboardActionSource',
59
- selector: '[lxKeyboardActionSource]',
60
- standalone: true
61
- }]
62
- }], ctorParameters: () => [{ type: i0.ElementRef }] });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQtYWN0aW9uLXNvdXJjZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9kaXJlY3RpdmVzL2tleWJvYXJkLWFjdGlvbi1zb3VyY2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQU85SCxNQUFNLE9BQU8sNkJBQTZCO0lBd0N4QyxZQUFvQixPQUFnQztRQUFoQyxZQUFPLEdBQVAsT0FBTyxDQUF5QjtRQXZDN0MsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVmLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRW5DLHFCQUFnQixHQUFHLFNBQVMsQ0FBZ0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUM1RixNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUNsQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNaLFFBQVEsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN0QixLQUFLLFFBQVE7b0JBQ1gsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUN2QixPQUFPLG9CQUFvQixDQUFDLElBQUksQ0FBQztnQkFDbkMsS0FBSyxVQUFVO29CQUNiLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDdkIsT0FBTyxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7Z0JBQ25DLEtBQUssVUFBVTtvQkFDYixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3ZCLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDO2dCQUNuQyxLQUFLLFdBQVc7b0JBQ2QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUN2QixPQUFPLG9CQUFvQixDQUFDLEtBQUssQ0FBQztnQkFDcEMsS0FBSyxJQUFJO29CQUNQLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDdkIsT0FBTyxvQkFBb0IsQ0FBQyxLQUFLLENBQUM7Z0JBQ3BDLEtBQUssR0FBRztvQkFDTixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3ZCLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDO2dCQUNuQyxLQUFLLEtBQUs7b0JBQ1IsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUN2QixPQUFPLG9CQUFvQixDQUFDLE9BQU8sQ0FBQztnQkFDdEMsS0FBSyxNQUFNLENBQUM7Z0JBQ1osS0FBSyxHQUFHO29CQUNOLE9BQU8sb0JBQW9CLENBQUMsS0FBSyxDQUFDO2dCQUNwQztvQkFDRSxPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FDM0IsQ0FBQztJQUVxRCxDQUFDO0lBRXhELElBQUk7UUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDO0lBQ3JDLENBQUM7OEdBcERVLDZCQUE2QjtrR0FBN0IsNkJBQTZCOzsyRkFBN0IsNkJBQTZCO2tCQUx6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBLZXlib2FyZFNlbGVjdEFjdGlvbiB9IGZyb20gJy4uL2NvbXBvbmVudHMva2V5Ym9hcmQtc2VsZWN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBUlJPV19ET1dOLCBBUlJPV19MRUZULCBBUlJPV19SSUdIVCwgQVJST1dfVVAsIEVORCwgRU5URVIsIEVTQ0FQRSwgSE9NRSwgVEFCIH0gZnJvbSAnLi4vaGVscGVycy9rZXktY29kZXMuY29uc3RhbnRzJztcblxuQERpcmVjdGl2ZSh7XG4gIGV4cG9ydEFzOiAna2V5Ym9hcmRBY3Rpb25Tb3VyY2UnLFxuICBzZWxlY3RvcjogJ1tseEtleWJvYXJkQWN0aW9uU291cmNlXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgS2V5Ym9hcmRBY3Rpb25Tb3VyY2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwdWJsaWMgZG9udEVtaXQgPSBmYWxzZTtcblxuICByZWFkb25seSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwdWJsaWMga2V5Ym9hcmRBY3Rpb25zJCA9IGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pih0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nKS5waXBlKFxuICAgIGZpbHRlcigoX2V2ZW50KSA9PiAhdGhpcy5kb250RW1pdCksXG4gICAgbWFwKChldmVudCkgPT4ge1xuICAgICAgc3dpdGNoIChldmVudC5rZXlDb2RlKSB7XG4gICAgICAgIGNhc2UgQVJST1dfVVA6XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICByZXR1cm4gS2V5Ym9hcmRTZWxlY3RBY3Rpb24uUFJFVjtcbiAgICAgICAgY2FzZSBBUlJPV19ET1dOOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgcmV0dXJuIEtleWJvYXJkU2VsZWN0QWN0aW9uLk5FWFQ7XG4gICAgICAgIGNhc2UgQVJST1dfTEVGVDpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHJldHVybiBLZXlib2FyZFNlbGVjdEFjdGlvbi5MRUZUO1xuICAgICAgICBjYXNlIEFSUk9XX1JJR0hUOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgcmV0dXJuIEtleWJvYXJkU2VsZWN0QWN0aW9uLlJJR0hUO1xuICAgICAgICBjYXNlIEhPTUU6XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICByZXR1cm4gS2V5Ym9hcmRTZWxlY3RBY3Rpb24uRklSU1Q7XG4gICAgICAgIGNhc2UgRU5EOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgcmV0dXJuIEtleWJvYXJkU2VsZWN0QWN0aW9uLkxBU1Q7XG4gICAgICAgIGNhc2UgRU5URVI6XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICByZXR1cm4gS2V5Ym9hcmRTZWxlY3RBY3Rpb24uRVhFQ1VURTtcbiAgICAgICAgY2FzZSBFU0NBUEU6XG4gICAgICAgIGNhc2UgVEFCOlxuICAgICAgICAgIHJldHVybiBLZXlib2FyZFNlbGVjdEFjdGlvbi5DTE9TRTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9KSxcbiAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHt9XG5cbiAgYmx1cigpIHtcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICB9XG5cbiAgbmF0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudD8ubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuIl19
@@ -1,39 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { Directive, Input } from '@angular/core';
3
- import { Subject } from 'rxjs';
4
- import { takeUntil } from 'rxjs/operators';
5
- import { getCssVariable } from '../../shared/misc-helpers';
6
- import { Observe } from '../../shared/observe';
7
- import * as i0 from "@angular/core";
8
- export class MarkInvalidDirective {
9
- constructor(element, renderer) {
10
- this.element = element;
11
- this.renderer = renderer;
12
- this.lxMarkInvalid = false;
13
- this.destroyed$ = new Subject();
14
- }
15
- ngOnInit() {
16
- this.lxMarkInvalid$.pipe(takeUntil(this.destroyed$)).subscribe((invalid) => {
17
- const border = invalid ? `1px solid ${getCssVariable('--lx-color-danger')}` : '';
18
- this.renderer.setStyle(this.element.nativeElement, 'border', border);
19
- });
20
- }
21
- ngOnDestroy() {
22
- this.destroyed$.next();
23
- }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MarkInvalidDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
25
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: MarkInvalidDirective, isStandalone: true, selector: "[lxMarkInvalid]", inputs: { lxMarkInvalid: "lxMarkInvalid" }, ngImport: i0 }); }
26
- }
27
- __decorate([
28
- Observe('lxMarkInvalid')
29
- ], MarkInvalidDirective.prototype, "lxMarkInvalid$", void 0);
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MarkInvalidDirective, decorators: [{
31
- type: Directive,
32
- args: [{
33
- selector: '[lxMarkInvalid]',
34
- standalone: true
35
- }]
36
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { lxMarkInvalid: [{
37
- type: Input
38
- }], lxMarkInvalid$: [] } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyay1pbnZhbGlkLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2Zvcm1zLXVpL2RpcmVjdGl2ZXMvbWFyay1pbnZhbGlkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQWdDLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBTS9DLE1BQU0sT0FBTyxvQkFBb0I7SUFNL0IsWUFDVSxPQUFnQyxFQUNoQyxRQUFtQjtRQURuQixZQUFPLEdBQVAsT0FBTyxDQUF5QjtRQUNoQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBUHBCLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBRy9CLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBS3ZDLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3pFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxjQUFjLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDakYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7OEdBcEJVLG9CQUFvQjtrR0FBcEIsb0JBQW9COztBQUVMO0lBQXpCLE9BQU8sQ0FBQyxlQUFlLENBQUM7NERBQXNDOzJGQUZwRCxvQkFBb0I7a0JBSmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7aUJBQ2pCO3VHQUVVLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ29CLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnZXRDc3NWYXJpYWJsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9taXNjLWhlbHBlcnMnO1xuaW1wb3J0IHsgT2JzZXJ2ZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9vYnNlcnZlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2x4TWFya0ludmFsaWRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNYXJrSW52YWxpZERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgbHhNYXJrSW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuICBAT2JzZXJ2ZSgnbHhNYXJrSW52YWxpZCcpIGx4TWFya0ludmFsaWQkITogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICByZWFkb25seSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5seE1hcmtJbnZhbGlkJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKGludmFsaWQpID0+IHtcbiAgICAgIGNvbnN0IGJvcmRlciA9IGludmFsaWQgPyBgMXB4IHNvbGlkICR7Z2V0Q3NzVmFyaWFibGUoJy0tbHgtY29sb3ItZGFuZ2VyJyl9YCA6ICcnO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2JvcmRlcicsIGJvcmRlcik7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICB9XG59XG4iXX0=
@@ -1,131 +0,0 @@
1
- import { Directive, Input, Self } from '@angular/core';
2
- import { FormControl, Validators } from '@angular/forms';
3
- import { Subject } from 'rxjs';
4
- import { takeUntil } from 'rxjs/operators';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/forms";
7
- export class MaxLengthCounterDirective {
8
- constructor(el, renderer, ngControl) {
9
- this.el = el;
10
- this.renderer = renderer;
11
- this.ngControl = ngControl;
12
- this.lxMaxLengthCounter = null;
13
- this.counterElement = null;
14
- this.destroy$ = new Subject();
15
- }
16
- ngOnInit() {
17
- this.setupMaxLengthValidation();
18
- this.connectCounter();
19
- this.updateCounter();
20
- this.subscribeToValueChanges();
21
- this.setupInputRestriction();
22
- this.checkForInitialOversize();
23
- }
24
- ngOnDestroy() {
25
- this.destroy$.next();
26
- this.destroy$.complete();
27
- }
28
- setupMaxLengthValidation() {
29
- const maxLength = this.getMaxLength();
30
- const control = this.ngControl.control;
31
- if (maxLength !== null && control) {
32
- const validators = control.validator ? [control.validator, Validators.maxLength(maxLength)] : Validators.maxLength(maxLength);
33
- control.setValidators(validators);
34
- control.updateValueAndValidity();
35
- }
36
- }
37
- getMaxLength() {
38
- if (this.lxMaxLengthCounter) {
39
- return this.lxMaxLengthCounter;
40
- }
41
- const control = this.ngControl.control;
42
- const validatorFn = control?.validator;
43
- const errors = validatorFn?.(new FormControl({ length: Infinity }));
44
- const requiredLength = errors?.['maxlength']['requiredLength'];
45
- this.lxMaxLengthCounter = requiredLength ? requiredLength.toString() : null;
46
- if (this.lxMaxLengthCounter === null) {
47
- console.warn('lxMaxLength directive is used without a value or a control with a maxLength validator');
48
- }
49
- return requiredLength;
50
- }
51
- connectCounter() {
52
- this.el.nativeElement.classList.add('lx-max-length-counter-input');
53
- if (this.lxMaxLengthCounterRef) {
54
- this.counterElement = this.lxMaxLengthCounterRef;
55
- }
56
- else {
57
- this.createCounter();
58
- }
59
- }
60
- createCounter() {
61
- this.counterElement = this.renderer.createElement('span');
62
- this.renderer.addClass(this.counterElement, 'lx-max-length-counter');
63
- const nextSibling = this.el.nativeElement.nextSibling;
64
- if (nextSibling) {
65
- this.renderer.insertBefore(this.el.nativeElement.parentNode, this.counterElement, nextSibling);
66
- }
67
- else {
68
- this.renderer.appendChild(this.el.nativeElement.parentNode, this.counterElement);
69
- }
70
- this.destroy$.subscribe(() => {
71
- this.renderer.removeChild(this.el.nativeElement.parentNode, this.counterElement);
72
- });
73
- }
74
- updateCounter() {
75
- if (this.counterElement) {
76
- const currentLength = this.ngControl.value ? this.ngControl.value.length : 0;
77
- const maxLength = this.getMaxLength();
78
- this.renderer.setProperty(this.counterElement, 'textContent', `${currentLength} / ${maxLength}`);
79
- }
80
- }
81
- subscribeToValueChanges() {
82
- const control = this.ngControl.control;
83
- if (control) {
84
- control.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {
85
- this.updateCounter();
86
- });
87
- }
88
- }
89
- setupInputRestriction() {
90
- const maxLength = this.getMaxLength();
91
- if (maxLength !== null) {
92
- this.renderer.listen(this.el.nativeElement, 'beforeinput', (event) => {
93
- const input = event.target;
94
- const selectionStart = input.selectionStart || 0;
95
- const selectionEnd = input.selectionEnd || 0;
96
- const newValue = input.value.slice(0, selectionStart) + (event.data || '') + input.value.slice(selectionEnd);
97
- // Prevent input if the new value exceeds the max length and grows
98
- if (newValue.length > maxLength && newValue.length > input.value.length) {
99
- event.preventDefault();
100
- }
101
- });
102
- this.renderer.listen(this.el.nativeElement, 'input', () => {
103
- this.updateCounter();
104
- });
105
- }
106
- }
107
- checkForInitialOversize() {
108
- const maxLength = this.getMaxLength();
109
- const value = this.ngControl.value;
110
- if (maxLength !== null && value && value.length > maxLength) {
111
- this.ngControl.control?.markAsDirty({ onlySelf: true });
112
- this.ngControl.control?.updateValueAndValidity({ onlySelf: true });
113
- }
114
- }
115
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MaxLengthCounterDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.NgControl, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
116
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: MaxLengthCounterDirective, isStandalone: true, selector: "[lxMaxLengthCounter]", inputs: { lxMaxLengthCounter: "lxMaxLengthCounter", lxMaxLengthCounterRef: "lxMaxLengthCounterRef" }, ngImport: i0 }); }
117
- }
118
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MaxLengthCounterDirective, decorators: [{
119
- type: Directive,
120
- args: [{
121
- selector: '[lxMaxLengthCounter]',
122
- standalone: true
123
- }]
124
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.NgControl, decorators: [{
125
- type: Self
126
- }] }], propDecorators: { lxMaxLengthCounter: [{
127
- type: Input
128
- }], lxMaxLengthCounterRef: [{
129
- type: Input
130
- }] } });
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4LWxlbmd0aC1jb3VudGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2Zvcm1zLXVpL2RpcmVjdGl2ZXMvbWF4LWxlbmd0aC1jb3VudGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBZ0MsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU0zQyxNQUFNLE9BQU8seUJBQXlCO0lBT3BDLFlBQ1UsRUFBYyxFQUNkLFFBQW1CLEVBQ1gsU0FBb0I7UUFGNUIsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDWCxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBVDdCLHVCQUFrQixHQUFrQixJQUFJLENBQUM7UUFFMUMsbUJBQWMsR0FBdUIsSUFBSSxDQUFDO1FBRTFDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBTXBDLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxF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QUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsc0JBQXNCLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyRSxDQUFDO0lBQ0gsQ0FBQzs4R0F4SFUseUJBQXlCO2tHQUF6Qix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBSnJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzswQkFXSSxJQUFJO3lDQVRFLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgUmVuZGVyZXIyLCBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgTmdDb250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbHhNYXhMZW5ndGhDb3VudGVyXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWF4TGVuZ3RoQ291bnRlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgbHhNYXhMZW5ndGhDb3VudGVyOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgbHhNYXhMZW5ndGhDb3VudGVyUmVmPzogSFRNTFNwYW5FbGVtZW50O1xuICBwcml2YXRlIGNvdW50ZXJFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIEBTZWxmKCkgcHJpdmF0ZSBuZ0NvbnRyb2w6IE5nQ29udHJvbFxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXR1cE1heExlbmd0aFZhbGlkYXRpb24oKTtcbiAgICB0aGlzLmNvbm5lY3RDb3VudGVyKCk7XG4gICAgdGhpcy51cGRhdGVDb3VudGVyKCk7XG4gICAgdGhpcy5zdWJzY3JpYmVUb1ZhbHVlQ2hhbmdlcygpO1xuICAgIHRoaXMuc2V0dXBJbnB1dFJlc3RyaWN0aW9uKCk7XG4gICAgdGhpcy5jaGVja0ZvckluaXRpYWxPdmVyc2l6ZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cE1heExlbmd0aFZhbGlkYXRpb24oKSB7XG4gICAgY29uc3QgbWF4TGVuZ3RoID0gdGhpcy5nZXRNYXhMZW5ndGgoKTtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5uZ0NvbnRyb2wuY29udHJvbDtcblxuICAgIGlmIChtYXhMZW5ndGggIT09IG51bGwgJiYgY29udHJvbCkge1xuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IGNvbnRyb2wudmFsaWRhdG9yID8gW2NvbnRyb2wudmFsaWRhdG9yLCBWYWxpZGF0b3JzLm1heExlbmd0aChtYXhMZW5ndGgpXSA6IFZhbGlkYXRvcnMubWF4TGVuZ3RoKG1heExlbmd0aCk7XG4gICAgICBjb250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG4gICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldE1heExlbmd0aCgpOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAodGhpcy5seE1heExlbmd0aENvdW50ZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmx4TWF4TGVuZ3RoQ291bnRlcjtcbiAgICB9XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMubmdDb250cm9sLmNvbnRyb2w7XG4gICAgY29uc3QgdmFsaWRhdG9yRm4gPSBjb250cm9sPy52YWxpZGF0b3I7XG4gICAgY29uc3QgZXJyb3JzID0gdmFsaWRhdG9yRm4/LihuZXcgRm9ybUNvbnRyb2woeyBsZW5ndGg6IEluZmluaXR5IH0pKTtcbiAgICBjb25zdCByZXF1aXJlZExlbmd0aCA9IGVycm9ycz8uWydtYXhsZW5ndGgnXVsncmVxdWlyZWRMZW5ndGgnXTtcbiAgICB0aGlzLmx4TWF4TGVuZ3RoQ291bnRlciA9IHJlcXVpcmVkTGVuZ3RoID8gcmVxdWlyZWRMZW5ndGgudG9TdHJpbmcoKSA6IG51bGw7XG4gICAgaWYgKHRoaXMubHhNYXhMZW5ndGhDb3VudGVyID09PSBudWxsKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ2x4TWF4TGVuZ3RoIGRpcmVjdGl2ZSBpcyB1c2VkIHdpdGhvdXQgYSB2YWx1ZSBvciBhIGNvbnRyb2wgd2l0aCBhIG1heExlbmd0aCB2YWxpZGF0b3InKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcXVpcmVkTGVuZ3RoO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25uZWN0Q291bnRlcigpIHtcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnbHgtbWF4LWxlbmd0aC1jb3VudGVyLWlucHV0Jyk7XG4gICAgaWYgKHRoaXMubHhNYXhMZW5ndGhDb3VudGVyUmVmKSB7XG4gICAgICB0aGlzLmNvdW50ZXJFbGVtZW50ID0gdGhpcy5seE1heExlbmd0aENvdW50ZXJSZWY7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3JlYXRlQ291bnRlcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ291bnRlcigpIHtcbiAgICB0aGlzLmNvdW50ZXJFbGVtZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmNvdW50ZXJFbGVtZW50LCAnbHgtbWF4LWxlbmd0aC1jb3VudGVyJyk7XG4gICAgY29uc3QgbmV4dFNpYmxpbmcgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQubmV4dFNpYmxpbmc7XG4gICAgaWYgKG5leHRTaWJsaW5nKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmluc2VydEJlZm9yZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZSwgdGhpcy5jb3VudGVyRWxlbWVudCwgbmV4dFNpYmxpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLCB0aGlzLmNvdW50ZXJFbGVtZW50KTtcbiAgICB9XG4gICAgdGhpcy5kZXN0cm95JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZSwgdGhpcy5jb3VudGVyRWxlbWVudCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvdW50ZXIoKSB7XG4gICAgaWYgKHRoaXMuY291bnRlckVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRMZW5ndGggPSB0aGlzLm5nQ29udHJvbC52YWx1ZSA/IHRoaXMubmdDb250cm9sLnZhbHVlLmxlbmd0aCA6IDA7XG4gICAgICBjb25zdCBtYXhMZW5ndGggPSB0aGlzLmdldE1heExlbmd0aCgpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmNvdW50ZXJFbGVtZW50LCAndGV4dENvbnRlbnQnLCBgJHtjdXJyZW50TGVuZ3RofSAvICR7bWF4TGVuZ3RofWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9WYWx1ZUNoYW5nZXMoKSB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMubmdDb250cm9sLmNvbnRyb2w7XG4gICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgIGNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUNvdW50ZXIoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBJbnB1dFJlc3RyaWN0aW9uKCkge1xuICAgIGNvbnN0IG1heExlbmd0aCA9IHRoaXMuZ2V0TWF4TGVuZ3RoKCk7XG4gICAgaWYgKG1heExlbmd0aCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnYmVmb3JlaW5wdXQnLCAoZXZlbnQ6IElucHV0RXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uU3RhcnQgPSBpbnB1dC5zZWxlY3Rpb25TdGFydCB8fCAwO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb25FbmQgPSBpbnB1dC5zZWxlY3Rpb25FbmQgfHwgMDtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBpbnB1dC52YWx1ZS5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCkgKyAoZXZlbnQuZGF0YSB8fCAnJykgKyBpbnB1dC52YWx1ZS5zbGljZShzZWxlY3Rpb25FbmQpO1xuXG4gICAgICAgIC8vIFByZXZlbnQgaW5wdXQgaWYgdGhlIG5ldyB2YWx1ZSBleGNlZWRzIHRoZSBtYXggbGVuZ3RoIGFuZCBncm93c1xuICAgICAgICBpZiAobmV3VmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoICYmIG5ld1ZhbHVlLmxlbmd0aCA+IGlucHV0LnZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdpbnB1dCcsICgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVDb3VudGVyKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBjaGVja0ZvckluaXRpYWxPdmVyc2l6ZSgpIHtcbiAgICBjb25zdCBtYXhMZW5ndGggPSB0aGlzLmdldE1heExlbmd0aCgpO1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5uZ0NvbnRyb2wudmFsdWU7XG4gICAgaWYgKG1heExlbmd0aCAhPT0gbnVsbCAmJiB2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2w/Lm1hcmtBc0RpcnR5KHsgb25seVNlbGY6IHRydWUgfSk7XG4gICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgb25seVNlbGY6IHRydWUgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=