@latitude-ui/widgets 0.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 (120) hide show
  1. package/README.md +7 -0
  2. package/button/README.md +3 -0
  3. package/button/latitude-ui-widgets-button.d.ts +5 -0
  4. package/button/public-api.d.ts +2 -0
  5. package/button/src/button.component.d.ts +14 -0
  6. package/button/src/button.types.d.ts +2 -0
  7. package/checkbox/latitude-ui-widgets-checkbox.d.ts +5 -0
  8. package/checkbox/public-api.d.ts +1 -0
  9. package/checkbox/src/checkbox.component.d.ts +7 -0
  10. package/combobox/latitude-ui-widgets-combobox.d.ts +5 -0
  11. package/combobox/public-api.d.ts +2 -0
  12. package/core/README.md +3 -0
  13. package/core/latitude-ui-widgets-core.d.ts +5 -0
  14. package/core/public-api.d.ts +4 -0
  15. package/core/src/illegal.d.ts +2 -0
  16. package/core/src/listeners.d.ts +8 -0
  17. package/core/src/noop.d.ts +1 -0
  18. package/core/src/uid.d.ts +1 -0
  19. package/esm2022/button/latitude-ui-widgets-button.js +5 -0
  20. package/esm2022/button/public-api.js +3 -0
  21. package/esm2022/button/src/button.component.js +44 -0
  22. package/esm2022/button/src/button.types.js +1 -0
  23. package/esm2022/checkbox/latitude-ui-widgets-checkbox.js +5 -0
  24. package/esm2022/checkbox/public-api.js +2 -0
  25. package/esm2022/checkbox/src/checkbox.component.js +33 -0
  26. package/esm2022/combobox/latitude-ui-widgets-combobox.js +5 -0
  27. package/esm2022/combobox/public-api.js +2 -0
  28. package/esm2022/core/latitude-ui-widgets-core.js +5 -0
  29. package/esm2022/core/public-api.js +5 -0
  30. package/esm2022/core/src/illegal.js +5 -0
  31. package/esm2022/core/src/listeners.js +32 -0
  32. package/esm2022/core/src/noop.js +3 -0
  33. package/esm2022/core/src/uid.js +4 -0
  34. package/esm2022/icons/latitude-ui-widgets-icons.js +5 -0
  35. package/esm2022/icons/public-api.js +3 -0
  36. package/esm2022/icons/src/icon.component.js +27 -0
  37. package/esm2022/icons/src/icon.tokens.js +13 -0
  38. package/esm2022/input/latitude-ui-widgets-input.js +5 -0
  39. package/esm2022/input/public-api.js +5 -0
  40. package/esm2022/input/src/input-error/i18n/en.js +9 -0
  41. package/esm2022/input/src/input-error/i18n/ru.js +9 -0
  42. package/esm2022/input/src/input-error/input-error.component.js +22 -0
  43. package/esm2022/input/src/input-error/input-error.i18n.js +65 -0
  44. package/esm2022/input/src/input-label/input-label.component.js +20 -0
  45. package/esm2022/input/src/input.component.js +44 -0
  46. package/esm2022/input/src/input.directive.js +115 -0
  47. package/esm2022/input/src/input.types.js +1 -0
  48. package/esm2022/latitude-ui-widgets.js +5 -0
  49. package/esm2022/listbox/latitude-ui-widgets-listbox.js +5 -0
  50. package/esm2022/listbox/public-api.js +3 -0
  51. package/esm2022/listbox/src/listbox-option.component.js +49 -0
  52. package/esm2022/listbox/src/listbox.component.js +14 -0
  53. package/esm2022/public-api.js +2 -0
  54. package/esm2022/select/latitude-ui-widgets-select.js +5 -0
  55. package/esm2022/select/public-api.js +6 -0
  56. package/esm2022/select/src/select-multiple.component.js +53 -0
  57. package/esm2022/select/src/select-option.component.js +14 -0
  58. package/esm2022/select/src/select-single.component.js +59 -0
  59. package/esm2022/select/src/select-trigger.component.js +28 -0
  60. package/esm2022/select/src/select-value.component.js +13 -0
  61. package/esm2022/select/src/select.component.js +44 -0
  62. package/esm2022/select/src/select.directive.js +93 -0
  63. package/esm2022/switch/latitude-ui-widgets-switch.js +5 -0
  64. package/esm2022/switch/public-api.js +2 -0
  65. package/esm2022/switch/src/switch.component.js +30 -0
  66. package/esm2022/textarea/latitude-ui-widgets-textarea.js +5 -0
  67. package/esm2022/textarea/public-api.js +2 -0
  68. package/esm2022/textarea/src/textarea.component.js +37 -0
  69. package/esm2022/textbox/latitude-ui-widgets-textbox.js +5 -0
  70. package/esm2022/textbox/public-api.js +2 -0
  71. package/esm2022/textbox/src/textbox.component.js +33 -0
  72. package/esm2022/textbox-number/latitude-ui-widgets-textbox-number.js +5 -0
  73. package/esm2022/textbox-number/public-api.js +2 -0
  74. package/esm2022/textbox-number/src/spinners.component.js +22 -0
  75. package/esm2022/textbox-number/src/textbox-number.component.js +136 -0
  76. package/icons/latitude-ui-widgets-icons.d.ts +5 -0
  77. package/icons/public-api.d.ts +2 -0
  78. package/icons/src/icon.component.d.ts +9 -0
  79. package/icons/src/icon.tokens.d.ts +3 -0
  80. package/input/README.md +3 -0
  81. package/input/latitude-ui-widgets-input.d.ts +5 -0
  82. package/input/public-api.d.ts +4 -0
  83. package/input/src/input-error/i18n/en.d.ts +9 -0
  84. package/input/src/input-error/i18n/ru.d.ts +9 -0
  85. package/input/src/input-error/input-error.component.d.ts +9 -0
  86. package/input/src/input-error/input-error.i18n.d.ts +28 -0
  87. package/input/src/input-label/input-label.component.d.ts +11 -0
  88. package/input/src/input.component.d.ts +28 -0
  89. package/input/src/input.directive.d.ts +61 -0
  90. package/input/src/input.types.d.ts +1 -0
  91. package/latitude-ui-widgets.d.ts +5 -0
  92. package/listbox/latitude-ui-widgets-listbox.d.ts +5 -0
  93. package/listbox/public-api.d.ts +2 -0
  94. package/listbox/src/listbox-option.component.d.ts +17 -0
  95. package/listbox/src/listbox.component.d.ts +5 -0
  96. package/package.json +89 -0
  97. package/public-api.d.ts +2 -0
  98. package/select/latitude-ui-widgets-select.d.ts +5 -0
  99. package/select/public-api.d.ts +5 -0
  100. package/select/src/select-multiple.component.d.ts +10 -0
  101. package/select/src/select-option.component.d.ts +18 -0
  102. package/select/src/select-single.component.d.ts +10 -0
  103. package/select/src/select-trigger.component.d.ts +9 -0
  104. package/select/src/select-value.component.d.ts +7 -0
  105. package/select/src/select.component.d.ts +13 -0
  106. package/select/src/select.directive.d.ts +19 -0
  107. package/styles/_index.scss +11 -0
  108. package/switch/latitude-ui-widgets-switch.d.ts +5 -0
  109. package/switch/public-api.d.ts +1 -0
  110. package/switch/src/switch.component.d.ts +7 -0
  111. package/textarea/latitude-ui-widgets-textarea.d.ts +5 -0
  112. package/textarea/public-api.d.ts +1 -0
  113. package/textarea/src/textarea.component.d.ts +15 -0
  114. package/textbox/latitude-ui-widgets-textbox.d.ts +5 -0
  115. package/textbox/public-api.d.ts +1 -0
  116. package/textbox/src/textbox.component.d.ts +13 -0
  117. package/textbox-number/latitude-ui-widgets-textbox-number.d.ts +5 -0
  118. package/textbox-number/public-api.d.ts +1 -0
  119. package/textbox-number/src/spinners.component.d.ts +8 -0
  120. package/textbox-number/src/textbox-number.component.d.ts +37 -0
@@ -0,0 +1,44 @@
1
+ import { ChangeDetectionStrategy, Component, contentChildren, effect, inject, input, linkedSignal, signal, untracked, ViewEncapsulation, } from '@angular/core';
2
+ import { SelectOptionComponent } from './select-option.component';
3
+ import { SelectDirective } from './select.directive';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./select.directive";
6
+ export class SelectComponent {
7
+ dir = inject((SelectDirective), { self: true });
8
+ placeholder = input();
9
+ options = contentChildren((SelectOptionComponent));
10
+ constructor() {
11
+ effect(() => {
12
+ const options = this.options();
13
+ untracked(() => {
14
+ this.dir.options.update(() => {
15
+ return options.map((option, index) => {
16
+ return {
17
+ value: linkedSignal(() => option.value()),
18
+ label: linkedSignal(() => option.label()),
19
+ disabled: linkedSignal(() => option.disabled()),
20
+ hidden: signal(false),
21
+ setsize: signal(options.length),
22
+ posinset: signal(index),
23
+ selected: signal(false),
24
+ };
25
+ });
26
+ });
27
+ });
28
+ });
29
+ }
30
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.0.4", type: SelectComponent, isStandalone: true, selector: "lat-select", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "options", predicate: (SelectOptionComponent), isSignal: true }], exportAs: ["latSelect"], hostDirectives: [{ directive: i1.SelectDirective }], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
32
+ }
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: SelectComponent, decorators: [{
34
+ type: Component,
35
+ args: [{
36
+ exportAs: 'latSelect',
37
+ selector: 'lat-select',
38
+ template: '',
39
+ encapsulation: ViewEncapsulation.None,
40
+ changeDetection: ChangeDetectionStrategy.OnPush,
41
+ hostDirectives: [SelectDirective],
42
+ }]
43
+ }], ctorParameters: () => [] });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3dpZGdldHMvc2VsZWN0L3NyYy9zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULGVBQWUsRUFDZixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxZQUFZLEVBQ1osTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBVXJELE1BQU0sT0FBZ0IsZUFBZTtJQUNuQixHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUEsZUFBdUIsQ0FBQSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFdEQsV0FBVyxHQUFHLEtBQUssRUFBVSxDQUFDO0lBRTlCLE9BQU8sR0FBRyxlQUFlLENBQUMsQ0FBQSxxQkFBaUMsQ0FBQSxDQUFDLENBQUM7SUFFN0U7UUFDRSxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRS9CLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtvQkFDM0IsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO3dCQUNuQyxPQUFPOzRCQUNMLEtBQUssRUFBRSxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDOzRCQUN6QyxLQUFLLEVBQUUsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQzs0QkFDekMsUUFBUSxFQUFFLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7NEJBQy9DLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDOzRCQUNyQixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7NEJBQy9CLFFBQVEsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDOzRCQUN2QixRQUFRLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQzt5QkFDTCxDQUFDO29CQUN2QixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3VHQTNCbUIsZUFBZTsyRkFBZixlQUFlLG9QQUtPLENBQUEscUJBQWlDLENBQUEsMkhBVmpFLEVBQUU7OzJGQUtRLGVBQWU7a0JBUnBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRSxZQUFZO29CQUN0QixRQUFRLEVBQUUsRUFBRTtvQkFDWixhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGNBQWMsRUFBRSxDQUFDLGVBQWUsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb250ZW50Q2hpbGRyZW4sXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbGlua2VkU2lnbmFsLFxuICBzaWduYWwsXG4gIHVudHJhY2tlZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTZWxlY3RPcHRpb24sIFNlbGVjdE9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vc2VsZWN0LW9wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZWN0RGlyZWN0aXZlIH0gZnJvbSAnLi9zZWxlY3QuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gIGV4cG9ydEFzOiAnbGF0U2VsZWN0JyxcbiAgc2VsZWN0b3I6ICdsYXQtc2VsZWN0JyxcbiAgdGVtcGxhdGU6ICcnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdERpcmVjdGl2ZXM6IFtTZWxlY3REaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTZWxlY3RDb21wb25lbnQ8VCwgVFZhbHVlPiB7XG4gIHB1YmxpYyByZWFkb25seSBkaXIgPSBpbmplY3QoU2VsZWN0RGlyZWN0aXZlPFRWYWx1ZT4sIHsgc2VsZjogdHJ1ZSB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9wdGlvbnMgPSBjb250ZW50Q2hpbGRyZW4oU2VsZWN0T3B0aW9uQ29tcG9uZW50PFRba2V5b2YgVF0+KTtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMoKTtcblxuICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgdGhpcy5kaXIub3B0aW9ucy51cGRhdGUoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdmFsdWU6IGxpbmtlZFNpZ25hbCgoKSA9PiBvcHRpb24udmFsdWUoKSksXG4gICAgICAgICAgICAgIGxhYmVsOiBsaW5rZWRTaWduYWwoKCkgPT4gb3B0aW9uLmxhYmVsKCkpLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogbGlua2VkU2lnbmFsKCgpID0+IG9wdGlvbi5kaXNhYmxlZCgpKSxcbiAgICAgICAgICAgICAgaGlkZGVuOiBzaWduYWwoZmFsc2UpLFxuICAgICAgICAgICAgICBzZXRzaXplOiBzaWduYWwob3B0aW9ucy5sZW5ndGgpLFxuICAgICAgICAgICAgICBwb3NpbnNldDogc2lnbmFsKGluZGV4KSxcbiAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHNpZ25hbChmYWxzZSksXG4gICAgICAgICAgICB9IGFzIFNlbGVjdE9wdGlvbjxUPjtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBoYW5kbGVTZWxlY3RPcHRpb24ob3B0aW9uOiBTZWxlY3RPcHRpb248VD4pOiB2b2lkO1xufVxuXG5cblxuXG4iXX0=
@@ -0,0 +1,93 @@
1
+ import { delay, of, switchMap } from 'rxjs';
2
+ import { computed, Directive, forwardRef, signal } from '@angular/core';
3
+ import { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';
4
+ import { BuildInInputValueAccessor } from '@latitude-ui/widgets/input';
5
+ import * as i0 from "@angular/core";
6
+ export class SelectDirective extends BuildInInputValueAccessor {
7
+ options = signal([]);
8
+ indexes = computed(() => {
9
+ const options = this.options();
10
+ return new Map(options.map((option) => [option.value(), option]));
11
+ });
12
+ overlayWidth = signal(0);
13
+ overlayState = signal(false);
14
+ overlayPositions = signal([
15
+ {
16
+ originX: 'start',
17
+ originY: 'bottom',
18
+ overlayX: 'start',
19
+ overlayY: 'top',
20
+ },
21
+ {
22
+ originX: 'end',
23
+ originY: 'bottom',
24
+ overlayX: 'end',
25
+ overlayY: 'top',
26
+ },
27
+ {
28
+ originX: 'start',
29
+ originY: 'top',
30
+ overlayX: 'start',
31
+ overlayY: 'bottom',
32
+ },
33
+ {
34
+ originX: 'end',
35
+ originY: 'top',
36
+ overlayX: 'end',
37
+ overlayY: 'bottom',
38
+ },
39
+ ]);
40
+ overlayPositionSide = signal('bottom');
41
+ overlayExpanded = toSignal(toObservable(this.overlayState).pipe(switchMap((state) => {
42
+ return state ? of(state) : of(state).pipe(delay(100));
43
+ }), takeUntilDestroyed()), { initialValue: false });
44
+ hide() {
45
+ if (!this.overlayState()) {
46
+ return void 0;
47
+ }
48
+ this.overlayState.set(false);
49
+ this.markAsTouched();
50
+ }
51
+ open() {
52
+ if (this.overlayState() || this.disabled() || this.options().length === 0) {
53
+ return void 0;
54
+ }
55
+ this.overlayState.set(true);
56
+ }
57
+ toggle() {
58
+ if (this.overlayState()) {
59
+ this.hide();
60
+ }
61
+ else {
62
+ this.open();
63
+ }
64
+ }
65
+ updateOverlayPositionSide({ connectionPair }) {
66
+ this.overlayPositionSide.update(() => {
67
+ return connectionPair.originY === 'center'
68
+ ? connectionPair.originX === 'start'
69
+ ? 'left'
70
+ : 'right'
71
+ : connectionPair.originY;
72
+ });
73
+ }
74
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: SelectDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
75
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.4", type: SelectDirective, isStandalone: true, providers: [
76
+ {
77
+ provide: BuildInInputValueAccessor,
78
+ useExisting: forwardRef(() => SelectDirective),
79
+ },
80
+ ], usesInheritance: true, ngImport: i0 });
81
+ }
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: SelectDirective, decorators: [{
83
+ type: Directive,
84
+ args: [{
85
+ providers: [
86
+ {
87
+ provide: BuildInInputValueAccessor,
88
+ useExisting: forwardRef(() => SelectDirective),
89
+ },
90
+ ],
91
+ }]
92
+ }] });
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3dpZGdldHMvc2VsZWN0L3NyYy9zZWxlY3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJeEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBWXZFLE1BQU0sT0FBTyxlQUFtQixTQUFRLHlCQUE0QjtJQUNsRCxPQUFPLEdBQUcsTUFBTSxDQUFvQixFQUFFLENBQUMsQ0FBQztJQUN4QyxPQUFPLEdBQUcsUUFBUSxDQUEwQixHQUFHLEVBQUU7UUFDL0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRS9CLE9BQU8sSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUMsQ0FBQyxDQUFDO0lBRWEsWUFBWSxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUNqQyxZQUFZLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLGdCQUFnQixHQUFHLE1BQU0sQ0FBc0I7UUFDN0Q7WUFDRSxPQUFPLEVBQUUsT0FBTztZQUNoQixPQUFPLEVBQUUsUUFBUTtZQUNqQixRQUFRLEVBQUUsT0FBTztZQUNqQixRQUFRLEVB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cm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IGNvbXB1dGVkLCBEaXJlY3RpdmUsIGZvcndhcmRSZWYsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcblxyXG5pbXBvcnQgeyBDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25DaGFuZ2UsIENvbm5lY3RlZFBvc2l0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5cclxuaW1wb3J0IHsgQnVpbGRJbklucHV0VmFsdWVBY2Nlc3NvciB9IGZyb20gJ0BsYXRpdHVkZS11aS93aWRnZXRzL2lucHV0JztcclxuXHJcbmltcG9ydCB7IFNlbGVjdE9wdGlvbiB9IGZyb20gJy4vc2VsZWN0LW9wdGlvbi5jb21wb25lbnQnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IEJ1aWxkSW5JbnB1dFZhbHVlQWNjZXNzb3IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlbGVjdERpcmVjdGl2ZSksXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWxlY3REaXJlY3RpdmU8VD4gZXh0ZW5kcyBCdWlsZEluSW5wdXRWYWx1ZUFjY2Vzc29yPFQ+IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgb3B0aW9ucyA9IHNpZ25hbDxTZWxlY3RPcHRpb248VD5bXT4oW10pO1xyXG4gIHB1YmxpYyByZWFkb25seSBpbmRleGVzID0gY29tcHV0ZWQ8TWFwPFQsIFNlbGVjdE9wdGlvbjxUPj4+KCgpID0+IHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMoKTtcclxuXHJcbiAgICByZXR1cm4gbmV3IE1hcChvcHRpb25zLm1hcCgob3B0aW9uKSA9PiBbb3B0aW9uLnZhbHVlKCksIG9wdGlvbl0pKTtcclxuICB9KTtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IG92ZXJsYXlXaWR0aCA9IHNpZ25hbDxudW1iZXI+KDApO1xyXG4gIHB1YmxpYyByZWFkb25seSBvdmVybGF5U3RhdGUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHB1YmxpYyByZWFkb25seSBvdmVybGF5UG9zaXRpb25zID0gc2lnbmFsPENvbm5lY3RlZFBvc2l0aW9uW10+KFtcclxuICAgIHtcclxuICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcclxuICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXHJcbiAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxyXG4gICAgICBvdmVybGF5WTogJ3RvcCcsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBvcmlnaW5YOiAnZW5kJyxcclxuICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXHJcbiAgICAgIG92ZXJsYXlYOiAnZW5kJyxcclxuICAgICAgb3ZlcmxheVk6ICd0b3AnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcclxuICAgICAgb3JpZ2luWTogJ3RvcCcsXHJcbiAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxyXG4gICAgICBvdmVybGF5WTogJ2JvdHRvbScsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBvcmlnaW5YOiAnZW5kJyxcclxuICAgICAgb3JpZ2luWTogJ3RvcCcsXHJcbiAgICAgIG92ZXJsYXlYOiAnZW5kJyxcclxuICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxyXG4gICAgfSxcclxuICBdKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgb3ZlcmxheVBvc2l0aW9uU2lkZSA9IHNpZ25hbDwndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0Jz4oJ2JvdHRvbScpO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgb3ZlcmxheUV4cGFuZGVkID0gdG9TaWduYWwoXHJcbiAgICB0b09ic2VydmFibGUodGhpcy5vdmVybGF5U3RhdGUpLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgoc3RhdGUpID0+IHtcclxuICAgICAgICByZXR1cm4gc3RhdGUgPyBvZihzdGF0ZSkgOiBvZihzdGF0ZSkucGlwZShkZWxheSgxMDApKTtcclxuICAgICAgfSksXHJcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpXHJcbiAgICApLFxyXG4gICAgeyBpbml0aWFsVmFsdWU6IGZhbHNlIH1cclxuICApO1xyXG5cclxuICBwdWJsaWMgaGlkZSgpIHtcclxuICAgIGlmICghdGhpcy5vdmVybGF5U3RhdGUoKSkge1xyXG4gICAgICByZXR1cm4gdm9pZCAwO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub3ZlcmxheVN0YXRlLnNldChmYWxzZSk7XHJcblxyXG4gICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlbigpIHtcclxuICAgIGlmICh0aGlzLm92ZXJsYXlTdGF0ZSgpIHx8IHRoaXMuZGlzYWJsZWQoKSB8fCB0aGlzLm9wdGlvbnMoKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHZvaWQgMDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm92ZXJsYXlTdGF0ZS5zZXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9nZ2xlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3ZlcmxheVN0YXRlKCkpIHtcclxuICAgICAgdGhpcy5oaWRlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9wZW4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVPdmVybGF5UG9zaXRpb25TaWRlKHsgY29ubmVjdGlvblBhaXIgfTogQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uQ2hhbmdlKSB7XHJcbiAgICB0aGlzLm92ZXJsYXlQb3NpdGlvblNpZGUudXBkYXRlKCgpID0+IHtcclxuICAgICAgcmV0dXJuIGNvbm5lY3Rpb25QYWlyLm9yaWdpblkgPT09ICdjZW50ZXInXHJcbiAgICAgICAgPyBjb25uZWN0aW9uUGFpci5vcmlnaW5YID09PSAnc3RhcnQnXHJcbiAgICAgICAgICA/ICdsZWZ0J1xyXG4gICAgICAgICAgOiAncmlnaHQnXHJcbiAgICAgICAgOiBjb25uZWN0aW9uUGFpci5vcmlnaW5ZO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF0aXR1ZGUtdWktd2lkZ2V0cy1zd2l0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy93aWRnZXRzL3N3aXRjaC9sYXRpdHVkZS11aS13aWRnZXRzLXN3aXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from './src/switch.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3dpZGdldHMvc3dpdGNoL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjL3N3aXRjaC5jb21wb25lbnQnO1xyXG4iXX0=
@@ -0,0 +1,30 @@
1
+ import { ChangeDetectionStrategy, Component, forwardRef, ViewEncapsulation } from '@angular/core';
2
+ import { BuildInInputValueAccessor } from '@latitude-ui/widgets/input';
3
+ import * as i0 from "@angular/core";
4
+ export class SwitchComponent extends BuildInInputValueAccessor {
5
+ handleValueChange() {
6
+ if (!this.disabled()) {
7
+ const value = this.value() ?? false;
8
+ this.writeValue(!value);
9
+ }
10
+ }
11
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: SwitchComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
12
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.4", type: SwitchComponent, isStandalone: true, selector: "lat-switch", host: { listeners: { "click": "handleValueChange()" } }, providers: [
13
+ {
14
+ provide: BuildInInputValueAccessor,
15
+ useExisting: forwardRef(() => SwitchComponent),
16
+ },
17
+ ], exportAs: ["latSwitch"], usesInheritance: true, ngImport: i0, template: "<button\r\n type=\"button\"\r\n role=\"switch\"\r\n [attr.id]=\"inputId()\"\r\n [attr.value]=\"value() ? 'on' : 'off'\"\r\n [attr.tabindex]=\"disabled() ? -1 : tabindex()\"\r\n [attr.disabled]=\"disabled() || undefined\"\r\n [attr.aria-checked]=\"value() || false\"\r\n>\r\n <div\r\n role=\"presentation\"\r\n class=\"lat-switch-thumb\"\r\n ></div>\r\n</button>\r\n<ng-content/>\r\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: SwitchComponent, decorators: [{
20
+ type: Component,
21
+ args: [{ exportAs: 'latSwitch', selector: 'lat-switch', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
22
+ {
23
+ provide: BuildInInputValueAccessor,
24
+ useExisting: forwardRef(() => SwitchComponent),
25
+ },
26
+ ], host: {
27
+ '(click)': 'handleValueChange()',
28
+ }, template: "<button\r\n type=\"button\"\r\n role=\"switch\"\r\n [attr.id]=\"inputId()\"\r\n [attr.value]=\"value() ? 'on' : 'off'\"\r\n [attr.tabindex]=\"disabled() ? -1 : tabindex()\"\r\n [attr.disabled]=\"disabled() || undefined\"\r\n [attr.aria-checked]=\"value() || false\"\r\n>\r\n <div\r\n role=\"presentation\"\r\n class=\"lat-switch-thumb\"\r\n ></div>\r\n</button>\r\n<ng-content/>\r\n" }]
29
+ }] });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3dpZGdldHMvc3dpdGNoL3NyYy9zd2l0Y2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvd2lkZ2V0cy9zd2l0Y2gvc3JjL3N3aXRjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFrQnZFLE1BQU0sT0FBTyxlQUFnQixTQUFRLHlCQUFrQztJQUMzRCxpQkFBaUI7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUM7WUFFcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO3VHQVBVLGVBQWU7MkZBQWYsZUFBZSxrSEFWZjtZQUNUO2dCQUNFLE9BQU8sRUFBRSx5QkFBeUI7Z0JBQ2xDLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDO2FBQy9DO1NBQ0YsMEVDZEgsK1lBZUE7OzJGRElhLGVBQWU7a0JBaEIzQixTQUFTOytCQUNFLFdBQVcsWUFDWCxZQUFZLGlCQUVQLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLHlCQUF5Qjs0QkFDbEMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7eUJBQy9DO3FCQUNGLFFBQ0s7d0JBQ0osU0FBUyxFQUFFLHFCQUFxQjtxQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCdWlsZEluSW5wdXRWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGxhdGl0dWRlLXVpL3dpZGdldHMvaW5wdXQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgZXhwb3J0QXM6ICdsYXRTd2l0Y2gnLFxyXG4gIHNlbGVjdG9yOiAnbGF0LXN3aXRjaCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N3aXRjaC5jb21wb25lbnQuaHRtbCcsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogQnVpbGRJbklucHV0VmFsdWVBY2Nlc3NvcixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU3dpdGNoQ29tcG9uZW50KSxcclxuICAgIH0sXHJcbiAgXSxcclxuICBob3N0OiB7XHJcbiAgICAnKGNsaWNrKSc6ICdoYW5kbGVWYWx1ZUNoYW5nZSgpJyxcclxuICB9LFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3dpdGNoQ29tcG9uZW50IGV4dGVuZHMgQnVpbGRJbklucHV0VmFsdWVBY2Nlc3Nvcjxib29sZWFuPiB7XHJcbiAgcHJvdGVjdGVkIGhhbmRsZVZhbHVlQ2hhbmdlKCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKCkpIHtcclxuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlKCkgPz8gZmFsc2U7XHJcblxyXG4gICAgICB0aGlzLndyaXRlVmFsdWUoIXZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGJ1dHRvblxyXG4gIHR5cGU9XCJidXR0b25cIlxyXG4gIHJvbGU9XCJzd2l0Y2hcIlxyXG4gIFthdHRyLmlkXT1cImlucHV0SWQoKVwiXHJcbiAgW2F0dHIudmFsdWVdPVwidmFsdWUoKSA/ICdvbicgOiAnb2ZmJ1wiXHJcbiAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQoKSA/IC0xIDogdGFiaW5kZXgoKVwiXHJcbiAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQoKSB8fCB1bmRlZmluZWRcIlxyXG4gIFthdHRyLmFyaWEtY2hlY2tlZF09XCJ2YWx1ZSgpIHx8IGZhbHNlXCJcclxuPlxyXG4gIDxkaXZcclxuICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxyXG4gICAgY2xhc3M9XCJsYXQtc3dpdGNoLXRodW1iXCJcclxuICA+PC9kaXY+XHJcbjwvYnV0dG9uPlxyXG48bmctY29udGVudC8+XHJcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF0aXR1ZGUtdWktd2lkZ2V0cy10ZXh0YXJlYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3dpZGdldHMvdGV4dGFyZWEvbGF0aXR1ZGUtdWktd2lkZ2V0cy10ZXh0YXJlYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from './src/textarea.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3dpZGdldHMvdGV4dGFyZWEvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvdGV4dGFyZWEuY29tcG9uZW50JztcclxuIl19
@@ -0,0 +1,37 @@
1
+ import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, input, numberAttribute, viewChild, ViewEncapsulation, } from '@angular/core';
2
+ import { BuildInInputValueAccessor } from '@latitude-ui/widgets/input';
3
+ import * as i0 from "@angular/core";
4
+ export class TextAreaComponent extends BuildInInputValueAccessor {
5
+ rows = input(4, { transform: numberAttribute });
6
+ maxlength = input(undefined, { transform: numberAttribute });
7
+ minlength = input(undefined, { transform: numberAttribute });
8
+ placeholder = input();
9
+ inputElementRef = viewChild.required('inputElementRef', { read: (ElementRef) });
10
+ constructor() {
11
+ super();
12
+ }
13
+ handleBlurEvent() {
14
+ this.markAsTouched();
15
+ }
16
+ handleInputEvent() {
17
+ const input = this.inputElementRef();
18
+ this.writeValue(input.nativeElement.value);
19
+ }
20
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: TextAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.0.4", type: TextAreaComponent, isStandalone: true, selector: "lat-textarea", inputs: { rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, maxlength: { classPropertyName: "maxlength", publicName: "maxlength", isSignal: true, isRequired: false, transformFunction: null }, minlength: { classPropertyName: "minlength", publicName: "minlength", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
22
+ {
23
+ provide: BuildInInputValueAccessor,
24
+ useExisting: forwardRef(() => TextAreaComponent),
25
+ },
26
+ ], viewQueries: [{ propertyName: "inputElementRef", first: true, predicate: ["inputElementRef"], descendants: true, read: ElementRef, isSignal: true }], exportAs: ["latTextArea"], usesInheritance: true, ngImport: i0, template: "<textarea\r\n #inputElementRef\r\n type=\"text\"\r\n role=\"textbox\"\r\n [value]='valueAsString()'\r\n [attr.id]=\"inputId()\"\r\n [attr.rows]=\"rows()\"\r\n [attr.tabindex]=\"disabled() ? -1 : tabindex()\"\r\n [attr.disabled]=\"disabled() || undefined\"\r\n [attr.readonly]=\"readonly() || undefined\"\r\n [attr.required]=\"required() || undefined\"\r\n [attr.maxlength]=\"maxlength()\"\r\n [attr.minlength]=\"minlength()\"\r\n [attr.placeholder]=\"placeholder()\"\r\n [attr.aria-invalid]=\"invalid() || undefined\"\r\n [attr.aria-disabled]=\"disabled() || undefined\"\r\n [attr.aria-readonly]=\"readonly() || undefined\"\r\n [attr.aria-required]=\"required() || undefined\"\r\n [attr.aria-labelledby]=\"labelId()\"\r\n [style.resize]=\"'none'\"\r\n (blur)=\"handleBlurEvent()\"\r\n (input)=\"handleInputEvent()\"\r\n></textarea>\r\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: TextAreaComponent, decorators: [{
29
+ type: Component,
30
+ args: [{ exportAs: 'latTextArea', selector: 'lat-textarea', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
31
+ {
32
+ provide: BuildInInputValueAccessor,
33
+ useExisting: forwardRef(() => TextAreaComponent),
34
+ },
35
+ ], template: "<textarea\r\n #inputElementRef\r\n type=\"text\"\r\n role=\"textbox\"\r\n [value]='valueAsString()'\r\n [attr.id]=\"inputId()\"\r\n [attr.rows]=\"rows()\"\r\n [attr.tabindex]=\"disabled() ? -1 : tabindex()\"\r\n [attr.disabled]=\"disabled() || undefined\"\r\n [attr.readonly]=\"readonly() || undefined\"\r\n [attr.required]=\"required() || undefined\"\r\n [attr.maxlength]=\"maxlength()\"\r\n [attr.minlength]=\"minlength()\"\r\n [attr.placeholder]=\"placeholder()\"\r\n [attr.aria-invalid]=\"invalid() || undefined\"\r\n [attr.aria-disabled]=\"disabled() || undefined\"\r\n [attr.aria-readonly]=\"readonly() || undefined\"\r\n [attr.aria-required]=\"required() || undefined\"\r\n [attr.aria-labelledby]=\"labelId()\"\r\n [style.resize]=\"'none'\"\r\n (blur)=\"handleBlurEvent()\"\r\n (input)=\"handleInputEvent()\"\r\n></textarea>\r\n" }]
36
+ }], ctorParameters: () => [] });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvd2lkZ2V0cy90ZXh0YXJlYS9zcmMvdGV4dGFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvd2lkZ2V0cy90ZXh0YXJlYS9zcmMvdGV4dGFyZWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixLQUFLLEVBQ0wsZUFBZSxFQUNmLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBZXZFLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSx5QkFBaUM7SUFDdEQsSUFBSSxHQUFHLEtBQUssQ0FBa0IsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDakUsU0FBUyxHQUFHLEtBQUssQ0FBa0IsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDOUUsU0FBUyxHQUFHLEtBQUssQ0FBa0IsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDOUUsV0FBVyxHQUFHLEtBQUssRUFBVSxDQUFDO0lBRTlCLGVBQWUsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUEsVUFBNEIsQ0FBQSxFQUFFLENBQUMsQ0FBQztJQUVoSDtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztJQUVTLGVBQWU7UUFDdkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFUyxnQkFBZ0I7UUFDeEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXJDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxDQUFDO3VHQXBCVSxpQkFBaUI7MkZBQWpCLGlCQUFpQiw4a0JBUGpCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLHlCQUF5QjtnQkFDbEMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQzthQUNqRDtTQUNGLHlIQVErRSxVQUFVLCtGQ2hDNUYsMDFCQXVCQTs7MkZER2EsaUJBQWlCO2tCQWI3QixTQUFTOytCQUNFLGFBQWEsWUFDYixjQUFjLGlCQUVULGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLHlCQUF5Qjs0QkFDbEMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUM7eUJBQ2pEO3FCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBmb3J3YXJkUmVmLFxyXG4gIGlucHV0LFxyXG4gIG51bWJlckF0dHJpYnV0ZSxcclxuICB2aWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCdWlsZEluSW5wdXRWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGxhdGl0dWRlLXVpL3dpZGdldHMvaW5wdXQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgZXhwb3J0QXM6ICdsYXRUZXh0QXJlYScsXHJcbiAgc2VsZWN0b3I6ICdsYXQtdGV4dGFyZWEnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0YXJlYS5jb21wb25lbnQuaHRtbCcsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogQnVpbGRJbklucHV0VmFsdWVBY2Nlc3NvcixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGV4dEFyZWFDb21wb25lbnQpLFxyXG4gICAgfSxcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXh0QXJlYUNvbXBvbmVudCBleHRlbmRzIEJ1aWxkSW5JbnB1dFZhbHVlQWNjZXNzb3I8c3RyaW5nPiB7XHJcbiAgcHVibGljIHJlYWRvbmx5IHJvd3MgPSBpbnB1dDxudW1iZXIsIHVua25vd24+KDQsIHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IG1heGxlbmd0aCA9IGlucHV0PG51bWJlciwgdW5rbm93bj4odW5kZWZpbmVkLCB7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pO1xyXG4gIHB1YmxpYyByZWFkb25seSBtaW5sZW5ndGggPSBpbnB1dDxudW1iZXIsIHVua25vd24+KHVuZGVmaW5lZCwgeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KTtcclxuICBwdWJsaWMgcmVhZG9ubHkgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCk7XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBpbnB1dEVsZW1lbnRSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQoJ2lucHV0RWxlbWVudFJlZicsIHsgcmVhZDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PiB9KTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGhhbmRsZUJsdXJFdmVudCgpOiB2b2lkIHtcclxuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGhhbmRsZUlucHV0RXZlbnQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuaW5wdXRFbGVtZW50UmVmKCk7XHJcblxyXG4gICAgdGhpcy53cml0ZVZhbHVlKGlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xyXG4gIH1cclxufVxyXG4iLCI8dGV4dGFyZWFcclxuICAjaW5wdXRFbGVtZW50UmVmXHJcbiAgdHlwZT1cInRleHRcIlxyXG4gIHJvbGU9XCJ0ZXh0Ym94XCJcclxuICBbdmFsdWVdPSd2YWx1ZUFzU3RyaW5nKCknXHJcbiAgW2F0dHIuaWRdPVwiaW5wdXRJZCgpXCJcclxuICBbYXR0ci5yb3dzXT1cInJvd3MoKVwiXHJcbiAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQoKSA/IC0xIDogdGFiaW5kZXgoKVwiXHJcbiAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQoKSB8fCB1bmRlZmluZWRcIlxyXG4gIFthdHRyLnJlYWRvbmx5XT1cInJlYWRvbmx5KCkgfHwgdW5kZWZpbmVkXCJcclxuICBbYXR0ci5yZXF1aXJlZF09XCJyZXF1aXJlZCgpIHx8IHVuZGVmaW5lZFwiXHJcbiAgW2F0dHIubWF4bGVuZ3RoXT1cIm1heGxlbmd0aCgpXCJcclxuICBbYXR0ci5taW5sZW5ndGhdPVwibWlubGVuZ3RoKClcIlxyXG4gIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxyXG4gIFthdHRyLmFyaWEtaW52YWxpZF09XCJpbnZhbGlkKCkgfHwgdW5kZWZpbmVkXCJcclxuICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkKCkgfHwgdW5kZWZpbmVkXCJcclxuICBbYXR0ci5hcmlhLXJlYWRvbmx5XT1cInJlYWRvbmx5KCkgfHwgdW5kZWZpbmVkXCJcclxuICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkKCkgfHwgdW5kZWZpbmVkXCJcclxuICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwibGFiZWxJZCgpXCJcclxuICBbc3R5bGUucmVzaXplXT1cIidub25lJ1wiXHJcbiAgKGJsdXIpPVwiaGFuZGxlQmx1ckV2ZW50KClcIlxyXG4gIChpbnB1dCk9XCJoYW5kbGVJbnB1dEV2ZW50KClcIlxyXG4+PC90ZXh0YXJlYT5cclxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF0aXR1ZGUtdWktd2lkZ2V0cy10ZXh0Ym94LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvd2lkZ2V0cy90ZXh0Ym94L2xhdGl0dWRlLXVpLXdpZGdldHMtdGV4dGJveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from './src/textbox.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3dpZGdldHMvdGV4dGJveC9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy90ZXh0Ym94LmNvbXBvbmVudCc7XHJcbiJdfQ==
@@ -0,0 +1,33 @@
1
+ import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, input, numberAttribute, viewChild, ViewEncapsulation, } from '@angular/core';
2
+ import { BuildInInputValueAccessor } from '@latitude-ui/widgets/input';
3
+ import * as i0 from "@angular/core";
4
+ export class TextBoxComponent extends BuildInInputValueAccessor {
5
+ maxlength = input(undefined, { transform: numberAttribute });
6
+ minlength = input(undefined, { transform: numberAttribute });
7
+ placeholder = input();
8
+ inputElementRef = viewChild.required('inputElementRef', { read: (ElementRef) });
9
+ handleBlurEvent() {
10
+ this.markAsTouched();
11
+ }
12
+ handleInputEvent() {
13
+ const input = this.inputElementRef();
14
+ this.writeValue(input.nativeElement.value);
15
+ }
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: TextBoxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
17
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.0.4", type: TextBoxComponent, isStandalone: true, selector: "lat-textbox:not([type]), lat-textbox[type=\"text\"]", inputs: { maxlength: { classPropertyName: "maxlength", publicName: "maxlength", isSignal: true, isRequired: false, transformFunction: null }, minlength: { classPropertyName: "minlength", publicName: "minlength", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
18
+ {
19
+ provide: BuildInInputValueAccessor,
20
+ useExisting: forwardRef(() => TextBoxComponent),
21
+ },
22
+ ], viewQueries: [{ propertyName: "inputElementRef", first: true, predicate: ["inputElementRef"], descendants: true, read: ElementRef, isSignal: true }], exportAs: ["latTextBox"], usesInheritance: true, ngImport: i0, template: "<input\r\n #inputElementRef\r\n type=\"text\"\r\n role=\"textbox\"\r\n [value]='valueAsString()'\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"disabled() ? -1 : tabindex()\"\r\n [attr.disabled]=\"disabled() || undefined\"\r\n [attr.readonly]=\"readonly() || undefined\"\r\n [attr.required]=\"required() || undefined\"\r\n [attr.maxlength]=\"maxlength()\"\r\n [attr.minlength]=\"minlength()\"\r\n [attr.placeholder]=\"placeholder()\"\r\n [attr.aria-invalid]=\"invalid() || undefined\"\r\n [attr.aria-disabled]=\"disabled() || undefined\"\r\n [attr.aria-readonly]=\"readonly() || undefined\"\r\n [attr.aria-required]=\"required() || undefined\"\r\n [attr.aria-labelledby]=\"labelId()\"\r\n (blur)=\"handleBlurEvent()\"\r\n (input)=\"handleInputEvent()\"\r\n/>\r\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: TextBoxComponent, decorators: [{
25
+ type: Component,
26
+ args: [{ exportAs: 'latTextBox', selector: 'lat-textbox:not([type]), lat-textbox[type="text"]', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
27
+ {
28
+ provide: BuildInInputValueAccessor,
29
+ useExisting: forwardRef(() => TextBoxComponent),
30
+ },
31
+ ], template: "<input\r\n #inputElementRef\r\n type=\"text\"\r\n role=\"textbox\"\r\n [value]='valueAsString()'\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"disabled() ? -1 : tabindex()\"\r\n [attr.disabled]=\"disabled() || undefined\"\r\n [attr.readonly]=\"readonly() || undefined\"\r\n [attr.required]=\"required() || undefined\"\r\n [attr.maxlength]=\"maxlength()\"\r\n [attr.minlength]=\"minlength()\"\r\n [attr.placeholder]=\"placeholder()\"\r\n [attr.aria-invalid]=\"invalid() || undefined\"\r\n [attr.aria-disabled]=\"disabled() || undefined\"\r\n [attr.aria-readonly]=\"readonly() || undefined\"\r\n [attr.aria-required]=\"required() || undefined\"\r\n [attr.aria-labelledby]=\"labelId()\"\r\n (blur)=\"handleBlurEvent()\"\r\n (input)=\"handleInputEvent()\"\r\n/>\r\n" }]
32
+ }] });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy93aWRnZXRzL3RleHRib3gvc3JjL3RleHRib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvd2lkZ2V0cy90ZXh0Ym94L3NyYy90ZXh0Ym94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsS0FBSyxFQUNMLGVBQWUsRUFDZixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQWV2RSxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEseUJBQWlDO0lBQ3JELFNBQVMsR0FBRyxLQUFLLENBQWtCLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLFNBQVMsR0FBRyxLQUFLLENBQWtCLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLFdBQVcsR0FBRyxLQUFLLEVBQVUsQ0FBQztJQUU5QixlQUFlLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFBLFVBQTRCLENBQUEsRUFBRSxDQUFDLENBQUM7SUFFdEcsZUFBZTtRQUN2QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVTLGdCQUFnQjtRQUN4QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFckMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7dUdBZlUsZ0JBQWdCOzJGQUFoQixnQkFBZ0IsZ2dCQVBoQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSx5QkFBeUI7Z0JBQ2xDLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7YUFDaEQ7U0FDRix5SEFPK0UsVUFBVSw4RkM5QjVGLGt4QkFxQkE7OzJGRElhLGdCQUFnQjtrQkFiNUIsU0FBUzsrQkFDRSxZQUFZLFlBQ1osbURBQW1ELGlCQUU5QyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSx5QkFBeUI7NEJBQ2xDLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDO3lCQUNoRDtxQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgZm9yd2FyZFJlZixcclxuICBpbnB1dCxcclxuICBudW1iZXJBdHRyaWJ1dGUsXHJcbiAgdmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCdWlsZEluSW5wdXRWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGxhdGl0dWRlLXVpL3dpZGdldHMvaW5wdXQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgZXhwb3J0QXM6ICdsYXRUZXh0Qm94JyxcclxuICBzZWxlY3RvcjogJ2xhdC10ZXh0Ym94Om5vdChbdHlwZV0pLCBsYXQtdGV4dGJveFt0eXBlPVwidGV4dFwiXScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHRib3guY29tcG9uZW50Lmh0bWwnLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IEJ1aWxkSW5JbnB1dFZhbHVlQWNjZXNzb3IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRleHRCb3hDb21wb25lbnQpLFxyXG4gICAgfSxcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXh0Qm94Q29tcG9uZW50IGV4dGVuZHMgQnVpbGRJbklucHV0VmFsdWVBY2Nlc3NvcjxzdHJpbmc+IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgbWF4bGVuZ3RoID0gaW5wdXQ8bnVtYmVyLCB1bmtub3duPih1bmRlZmluZWQsIHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IG1pbmxlbmd0aCA9IGlucHV0PG51bWJlciwgdW5rbm93bj4odW5kZWZpbmVkLCB7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pO1xyXG4gIHB1YmxpYyByZWFkb25seSBwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4oKTtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IGlucHV0RWxlbWVudFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZCgnaW5wdXRFbGVtZW50UmVmJywgeyByZWFkOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+IH0pO1xyXG5cclxuICBwcm90ZWN0ZWQgaGFuZGxlQmx1ckV2ZW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgaGFuZGxlSW5wdXRFdmVudCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dEVsZW1lbnRSZWYoKTtcclxuXHJcbiAgICB0aGlzLndyaXRlVmFsdWUoaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxpbnB1dFxyXG4gICNpbnB1dEVsZW1lbnRSZWZcclxuICB0eXBlPVwidGV4dFwiXHJcbiAgcm9sZT1cInRleHRib3hcIlxyXG4gIFt2YWx1ZV09J3ZhbHVlQXNTdHJpbmcoKSdcclxuICBbYXR0ci5pZF09XCJpbnB1dElkKClcIlxyXG4gIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkKCkgPyAtMSA6IHRhYmluZGV4KClcIlxyXG4gIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkKCkgfHwgdW5kZWZpbmVkXCJcclxuICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSgpIHx8IHVuZGVmaW5lZFwiXHJcbiAgW2F0dHIucmVxdWlyZWRdPVwicmVxdWlyZWQoKSB8fCB1bmRlZmluZWRcIlxyXG4gIFthdHRyLm1heGxlbmd0aF09XCJtYXhsZW5ndGgoKVwiXHJcbiAgW2F0dHIubWlubGVuZ3RoXT1cIm1pbmxlbmd0aCgpXCJcclxuICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcclxuICBbYXR0ci5hcmlhLWludmFsaWRdPVwiaW52YWxpZCgpIHx8IHVuZGVmaW5lZFwiXHJcbiAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZCgpIHx8IHVuZGVmaW5lZFwiXHJcbiAgW2F0dHIuYXJpYS1yZWFkb25seV09XCJyZWFkb25seSgpIHx8IHVuZGVmaW5lZFwiXHJcbiAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZCgpIHx8IHVuZGVmaW5lZFwiXHJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImxhYmVsSWQoKVwiXHJcbiAgKGJsdXIpPVwiaGFuZGxlQmx1ckV2ZW50KClcIlxyXG4gIChpbnB1dCk9XCJoYW5kbGVJbnB1dEV2ZW50KClcIlxyXG4vPlxyXG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF0aXR1ZGUtdWktd2lkZ2V0cy10ZXh0Ym94LW51bWJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3dpZGdldHMvdGV4dGJveC1udW1iZXIvbGF0aXR1ZGUtdWktd2lkZ2V0cy10ZXh0Ym94LW51bWJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from './src/textbox-number.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3dpZGdldHMvdGV4dGJveC1udW1iZXIvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvdGV4dGJveC1udW1iZXIuY29tcG9uZW50JztcbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';
2
+ import { ButtonComponent } from '@latitude-ui/widgets/button';
3
+ import { IconComponent } from '@latitude-ui/widgets/icons';
4
+ import { TextBoxNumberComponent } from './textbox-number.component';
5
+ import * as i0 from "@angular/core";
6
+ export class SpinnersComponent {
7
+ textbox = inject(TextBoxNumberComponent);
8
+ handleValueChanged(dir) {
9
+ const value = (this.textbox.value() ?? 0) + (this.textbox.step() ?? 0) * (dir ? 1 : -1);
10
+ if (value < this.textbox.ariaValueMin() || value > this.textbox.ariaValueMax()) {
11
+ return void 0;
12
+ }
13
+ this.textbox.writeValue(value);
14
+ }
15
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: SpinnersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.4", type: SpinnersComponent, isStandalone: true, selector: "lat-spinners", exportAs: ["latSpinners"], ngImport: i0, template: "<lat-button tabindex=\"-1\" variant=\"subtle\" [size]=\"textbox.size()\" [disabled]=\"textbox.disabled()\" (click)=\"handleValueChanged(true)\">\r\n <lat-icon name=\"chevron-up\" />\r\n</lat-button>\r\n<lat-button tabindex=\"-1\" variant=\"subtle\" [size]=\"textbox.size()\" [disabled]=\"textbox.disabled()\" (click)=\"handleValueChanged(false)\">\r\n <lat-icon name=\"chevron-down\" />\r\n</lat-button>\r\n", dependencies: [{ kind: "component", type: ButtonComponent, selector: "lat-button", inputs: ["size", "variant", "tabindex", "disabled"], exportAs: ["latButton"] }, { kind: "component", type: IconComponent, selector: "lat-icon", inputs: ["url", "name"], exportAs: ["latIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: SpinnersComponent, decorators: [{
19
+ type: Component,
20
+ args: [{ exportAs: 'latSpinners', selector: 'lat-spinners', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [ButtonComponent, IconComponent], template: "<lat-button tabindex=\"-1\" variant=\"subtle\" [size]=\"textbox.size()\" [disabled]=\"textbox.disabled()\" (click)=\"handleValueChanged(true)\">\r\n <lat-icon name=\"chevron-up\" />\r\n</lat-button>\r\n<lat-button tabindex=\"-1\" variant=\"subtle\" [size]=\"textbox.size()\" [disabled]=\"textbox.disabled()\" (click)=\"handleValueChanged(false)\">\r\n <lat-icon name=\"chevron-down\" />\r\n</lat-button>\r\n" }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvd2lkZ2V0cy90ZXh0Ym94LW51bWJlci9zcmMvc3Bpbm5lcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvd2lkZ2V0cy90ZXh0Ym94LW51bWJlci9zcmMvc3Bpbm5lcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFVcEUsTUFBTSxPQUFPLGlCQUFpQjtJQUNaLE9BQU8sR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUUvQyxrQkFBa0IsQ0FBQyxHQUFZO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV4RixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7WUFDL0UsT0FBTyxLQUFLLENBQUMsQ0FBQztRQUNoQixDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQzt1R0FYVSxpQkFBaUI7MkZBQWpCLGlCQUFpQixtR0NmOUIsMlpBTUEsNENET1ksZUFBZSxxSUFBRSxhQUFhOzsyRkFFN0IsaUJBQWlCO2tCQVI3QixTQUFTOytCQUNFLGFBQWEsWUFDYixjQUFjLGlCQUVULGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGxhdGl0dWRlLXVpL3dpZGdldHMvYnV0dG9uJztcclxuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BsYXRpdHVkZS11aS93aWRnZXRzL2ljb25zJztcclxuXHJcbmltcG9ydCB7IFRleHRCb3hOdW1iZXJDb21wb25lbnQgfSBmcm9tICcuL3RleHRib3gtbnVtYmVyLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBleHBvcnRBczogJ2xhdFNwaW5uZXJzJyxcclxuICBzZWxlY3RvcjogJ2xhdC1zcGlubmVycycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NwaW5uZXJzLmNvbXBvbmVudC5odG1sJyxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGltcG9ydHM6IFtCdXR0b25Db21wb25lbnQsIEljb25Db21wb25lbnRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3Bpbm5lcnNDb21wb25lbnQge1xyXG4gIHB1YmxpYyByZWFkb25seSB0ZXh0Ym94ID0gaW5qZWN0KFRleHRCb3hOdW1iZXJDb21wb25lbnQpO1xyXG5cclxuICBwcm90ZWN0ZWQgaGFuZGxlVmFsdWVDaGFuZ2VkKGRpcjogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgY29uc3QgdmFsdWUgPSAodGhpcy50ZXh0Ym94LnZhbHVlKCkgPz8gMCkgKyAodGhpcy50ZXh0Ym94LnN0ZXAoKSA/PyAwKSAqIChkaXIgPyAxIDogLTEpO1xyXG5cclxuICAgIGlmICh2YWx1ZSA8IHRoaXMudGV4dGJveC5hcmlhVmFsdWVNaW4oKSB8fCB2YWx1ZSA+IHRoaXMudGV4dGJveC5hcmlhVmFsdWVNYXgoKSkge1xyXG4gICAgICByZXR1cm4gdm9pZCAwO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudGV4dGJveC53cml0ZVZhbHVlKHZhbHVlKTtcclxuICB9XHJcbn1cclxuIiwiPGxhdC1idXR0b24gdGFiaW5kZXg9XCItMVwiIHZhcmlhbnQ9XCJzdWJ0bGVcIiBbc2l6ZV09XCJ0ZXh0Ym94LnNpemUoKVwiIFtkaXNhYmxlZF09XCJ0ZXh0Ym94LmRpc2FibGVkKClcIiAoY2xpY2spPVwiaGFuZGxlVmFsdWVDaGFuZ2VkKHRydWUpXCI+XHJcbiAgPGxhdC1pY29uIG5hbWU9XCJjaGV2cm9uLXVwXCIgLz5cclxuPC9sYXQtYnV0dG9uPlxyXG48bGF0LWJ1dHRvbiB0YWJpbmRleD1cIi0xXCIgdmFyaWFudD1cInN1YnRsZVwiIFtzaXplXT1cInRleHRib3guc2l6ZSgpXCIgW2Rpc2FibGVkXT1cInRleHRib3guZGlzYWJsZWQoKVwiIChjbGljayk9XCJoYW5kbGVWYWx1ZUNoYW5nZWQoZmFsc2UpXCI+XHJcbiAgPGxhdC1pY29uIG5hbWU9XCJjaGV2cm9uLWRvd25cIiAvPlxyXG48L2xhdC1idXR0b24+XHJcbiJdfQ==
@@ -0,0 +1,136 @@
1
+ import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, forwardRef, input, numberAttribute, viewChild, ViewEncapsulation, } from '@angular/core';
2
+ import { Maskito, maskitoInitialCalibrationPlugin } from '@maskito/core';
3
+ import { maskitoNumberOptionsGenerator, maskitoParseNumber, maskitoStringifyNumber } from '@maskito/kit';
4
+ import { BuildInInputValueAccessor } from '@latitude-ui/widgets/input';
5
+ import { SpinnersComponent } from './spinners.component';
6
+ import * as i0 from "@angular/core";
7
+ export class TextBoxNumberComponent extends BuildInInputValueAccessor {
8
+ max = input(undefined, { transform: numberAttribute });
9
+ min = input(undefined, { transform: numberAttribute });
10
+ step = input(undefined, { transform: numberAttribute });
11
+ decimals = input(2);
12
+ decimalMode = input('not-zero');
13
+ decimalSeparator = input(',');
14
+ thousandSeparator = input(' ');
15
+ placeholder = input();
16
+ inputElementRef = viewChild.required('inputElementRef', { read: (ElementRef) });
17
+ ariaValueMax = computed(() => this.max() ?? Number.MAX_SAFE_INTEGER);
18
+ ariaValueMin = computed(() => this.min() ?? Number.MIN_SAFE_INTEGER);
19
+ ariaValueNow = computed(() => this.value() || 0);
20
+ maxlength = computed(() => {
21
+ const { decimalSeparator, thousandSeparator } = this.maskitoNumberParams();
22
+ const decimals = this.decimals();
23
+ const mantissa = decimals && this.valueAsString().includes(decimalSeparator);
24
+ const precision = mantissa ? Math.min(decimals + 1, 20) : 0;
25
+ const thousand = thousandSeparator.repeat(5).length;
26
+ return 18 + precision + thousand;
27
+ });
28
+ maskitoNumberParams = computed(() => {
29
+ const decimalMode = this.decimalMode();
30
+ return {
31
+ max: this.ariaValueMax(),
32
+ min: this.ariaValueMin(),
33
+ minusSign: '-',
34
+ precision: this.decimals(),
35
+ decimalZeroPadding: decimalMode === 'always',
36
+ decimalSeparator: this.decimalSeparator(),
37
+ thousandSeparator: this.thousandSeparator(),
38
+ };
39
+ });
40
+ constructor() {
41
+ super();
42
+ effect((onCleanup) => {
43
+ const input = this.inputElementRef();
44
+ const formatter = this.maskitoNumberParams();
45
+ const { plugins, ...options } = maskitoNumberOptionsGenerator(formatter);
46
+ const instance = new Maskito(input.nativeElement, {
47
+ ...options,
48
+ plugins: [
49
+ ...plugins,
50
+ maskitoInitialCalibrationPlugin(maskitoNumberOptionsGenerator({
51
+ ...formatter,
52
+ min: Number.MIN_SAFE_INTEGER,
53
+ max: Number.MAX_SAFE_INTEGER,
54
+ })),
55
+ ],
56
+ });
57
+ onCleanup(() => instance.destroy());
58
+ });
59
+ }
60
+ valueStringify(valueAsString) {
61
+ const value = this.parseNumber(valueAsString);
62
+ if (value === null) {
63
+ return '';
64
+ }
65
+ return maskitoStringifyNumber(value, this.maskitoNumberParams());
66
+ }
67
+ valueSimplify(value) {
68
+ const decimalSeparator = new RegExp(this.decimalSeparator(), 'gi');
69
+ const thousandSeparator = new RegExp(this.thousandSeparator(), 'gi');
70
+ return value.replace(thousandSeparator, '').replace(decimalSeparator, '.');
71
+ }
72
+ valueUnsettled(value) {
73
+ return !!(value === '-' ||
74
+ value.match(/^\s*([-+])?\d+\.$/) ||
75
+ value.match(/^\s*([-+])?\d+\.[0-9]*0$/) ||
76
+ value.match(/^\s*([-+])0+$/));
77
+ }
78
+ parseNumber(value) {
79
+ let valueAsNumber = null;
80
+ if (typeof value === 'number') {
81
+ valueAsNumber = value;
82
+ }
83
+ else if (typeof value === 'string') {
84
+ valueAsNumber = Number.parseFloat(value);
85
+ }
86
+ if (Number.isNaN(value)) {
87
+ return null;
88
+ }
89
+ return valueAsNumber;
90
+ }
91
+ handleBlurEvent() {
92
+ this.markAsTouched();
93
+ const valueAsString = this.valueSimplify(this.valueAsString());
94
+ if (this.valueUnsettled(valueAsString)) {
95
+ this.valueAsString.update(() => this.valueStringify(this.value()));
96
+ }
97
+ }
98
+ handleFocusEvent() {
99
+ const value = maskitoParseNumber(this.valueAsString(), this.decimalSeparator());
100
+ if (Number.isNaN(value) && !this.readonly()) {
101
+ this.valueAsString.set('');
102
+ }
103
+ }
104
+ handleInputEvent() {
105
+ const input = this.inputElementRef();
106
+ const valueAsString = this.valueSimplify(input.nativeElement.value);
107
+ if (this.valueUnsettled(valueAsString)) {
108
+ return this.valueAsString.update(() => input.nativeElement.value);
109
+ }
110
+ const value = this.parseNumber(valueAsString);
111
+ if (value === null) {
112
+ return this.writeValue(value);
113
+ }
114
+ if (value < this.ariaValueMin() || value > this.ariaValueMax()) {
115
+ return void 0;
116
+ }
117
+ this.writeValue(value);
118
+ }
119
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: TextBoxNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
120
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: TextBoxNumberComponent, isStandalone: true, selector: "lat-textbox[type=\"number\"]", inputs: { max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, decimals: { classPropertyName: "decimals", publicName: "decimals", isSignal: true, isRequired: false, transformFunction: null }, decimalMode: { classPropertyName: "decimalMode", publicName: "decimalMode", isSignal: true, isRequired: false, transformFunction: null }, decimalSeparator: { classPropertyName: "decimalSeparator", publicName: "decimalSeparator", isSignal: true, isRequired: false, transformFunction: null }, thousandSeparator: { classPropertyName: "thousandSeparator", publicName: "thousandSeparator", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
121
+ {
122
+ provide: BuildInInputValueAccessor,
123
+ useExisting: forwardRef(() => TextBoxNumberComponent),
124
+ },
125
+ ], viewQueries: [{ propertyName: "inputElementRef", first: true, predicate: ["inputElementRef"], descendants: true, read: ElementRef, isSignal: true }], exportAs: ["latTextBox"], usesInheritance: true, ngImport: i0, template: "<input\r\n #inputElementRef\r\n type=\"text\"\r\n role=\"spinbutton\"\r\n autocomplete=\"off\"\r\n autocapitalize=\"off\"\r\n [value]='valueAsString()'\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"disabled() ? -1 : tabindex()\"\r\n [attr.disabled]=\"disabled() || undefined\"\r\n [attr.readonly]=\"readonly() || undefined\"\r\n [attr.required]=\"required() || undefined\"\r\n [attr.maxlength]=\"maxlength()\"\r\n [attr.placeholder]=\"placeholder()\"\r\n [attr.aria-invalid]=\"invalid() || undefined\"\r\n [attr.aria-valuemax]=\"ariaValueMax()\"\r\n [attr.aria-valuemin]=\"ariaValueMin()\"\r\n [attr.aria-valuenow]=\"ariaValueNow()\"\r\n [attr.aria-disabled]=\"disabled() || undefined\"\r\n [attr.aria-readonly]=\"readonly() || undefined\"\r\n [attr.aria-required]=\"required() || undefined\"\r\n [attr.aria-labelledby]=\"labelId()\"\r\n (blur)=\"handleBlurEvent()\"\r\n (focus)=\"handleFocusEvent()\"\r\n (input)=\"handleInputEvent()\"\r\n/>\r\n\r\n@if (step() && !readonly()) {\r\n <lat-spinners />\r\n}\r\n", dependencies: [{ kind: "component", type: SpinnersComponent, selector: "lat-spinners", exportAs: ["latSpinners"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
126
+ }
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: TextBoxNumberComponent, decorators: [{
128
+ type: Component,
129
+ args: [{ imports: [SpinnersComponent], exportAs: 'latTextBox', selector: 'lat-textbox[type="number"]', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
130
+ {
131
+ provide: BuildInInputValueAccessor,
132
+ useExisting: forwardRef(() => TextBoxNumberComponent),
133
+ },
134
+ ], template: "<input\r\n #inputElementRef\r\n type=\"text\"\r\n role=\"spinbutton\"\r\n autocomplete=\"off\"\r\n autocapitalize=\"off\"\r\n [value]='valueAsString()'\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"disabled() ? -1 : tabindex()\"\r\n [attr.disabled]=\"disabled() || undefined\"\r\n [attr.readonly]=\"readonly() || undefined\"\r\n [attr.required]=\"required() || undefined\"\r\n [attr.maxlength]=\"maxlength()\"\r\n [attr.placeholder]=\"placeholder()\"\r\n [attr.aria-invalid]=\"invalid() || undefined\"\r\n [attr.aria-valuemax]=\"ariaValueMax()\"\r\n [attr.aria-valuemin]=\"ariaValueMin()\"\r\n [attr.aria-valuenow]=\"ariaValueNow()\"\r\n [attr.aria-disabled]=\"disabled() || undefined\"\r\n [attr.aria-readonly]=\"readonly() || undefined\"\r\n [attr.aria-required]=\"required() || undefined\"\r\n [attr.aria-labelledby]=\"labelId()\"\r\n (blur)=\"handleBlurEvent()\"\r\n (focus)=\"handleFocusEvent()\"\r\n (input)=\"handleInputEvent()\"\r\n/>\r\n\r\n@if (step() && !readonly()) {\r\n <lat-spinners />\r\n}\r\n" }]
135
+ }], ctorParameters: () => [] });
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGJveC1udW1iZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvd2lkZ2V0cy90ZXh0Ym94LW51bWJlci9zcmMvdGV4dGJveC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvd2lkZ2V0cy90ZXh0Ym94LW51bWJlci9zcmMvdGV4dGJveC1udW1iZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixVQUFVLEVBQ1YsVUFBVSxFQUNWLEtBQUssRUFDTCxlQUFlLEVBQ2YsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6RyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFnQnpELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSx5QkFBaUM7SUFDM0QsR0FBRyxHQUFHLEtBQUssQ0FBa0IsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDeEUsR0FBRyxHQUFHLEtBQUssQ0FBa0IsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDeEUsSUFBSSxHQUFHLEtBQUssQ0FBa0IsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDekUsUUFBUSxHQUFHLEtBQUssQ0FBUyxDQUFD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QUMsR0FBRyxFQUFFLHVCQUF1QixDQUFDO3lCQUN0RDtxQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIGNvbXB1dGVkLFxyXG4gIGVmZmVjdCxcclxuICBFbGVtZW50UmVmLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgaW5wdXQsXHJcbiAgbnVtYmVyQXR0cmlidXRlLFxyXG4gIHZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE1hc2tpdG8sIG1hc2tpdG9Jbml0aWFsQ2FsaWJyYXRpb25QbHVnaW4gfSBmcm9tICdAbWFza2l0by9jb3JlJztcclxuaW1wb3J0IHsgbWFza2l0b051bWJlck9wdGlvbnNHZW5lcmF0b3IsIG1hc2tpdG9QYXJzZU51bWJlciwgbWFza2l0b1N0cmluZ2lmeU51bWJlciB9IGZyb20gJ0BtYXNraXRvL2tpdCc7XHJcblxyXG5pbXBvcnQgeyBCdWlsZEluSW5wdXRWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGxhdGl0dWRlLXVpL3dpZGdldHMvaW5wdXQnO1xyXG5cclxuaW1wb3J0IHsgU3Bpbm5lcnNDb21wb25lbnQgfSBmcm9tICcuL3NwaW5uZXJzLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBpbXBvcnRzOiBbU3Bpbm5lcnNDb21wb25lbnRdLFxyXG4gIGV4cG9ydEFzOiAnbGF0VGV4dEJveCcsXHJcbiAgc2VsZWN0b3I6ICdsYXQtdGV4dGJveFt0eXBlPVwibnVtYmVyXCJdJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dGJveC1udW1iZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IEJ1aWxkSW5JbnB1dFZhbHVlQWNjZXNzb3IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRleHRCb3hOdW1iZXJDb21wb25lbnQpLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGV4dEJveE51bWJlckNvbXBvbmVudCBleHRlbmRzIEJ1aWxkSW5JbnB1dFZhbHVlQWNjZXNzb3I8bnVtYmVyPiB7XHJcbiAgcHVibGljIHJlYWRvbmx5IG1heCA9IGlucHV0PG51bWJlciwgdW5rbm93bj4odW5kZWZpbmVkLCB7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pO1xyXG4gIHB1YmxpYyByZWFkb25seSBtaW4gPSBpbnB1dDxudW1iZXIsIHVua25vd24+KHVuZGVmaW5lZCwgeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KTtcclxuICBwdWJsaWMgcmVhZG9ubHkgc3RlcCA9IGlucHV0PG51bWJlciwgdW5rbm93bj4odW5kZWZpbmVkLCB7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pO1xyXG4gIHB1YmxpYyByZWFkb25seSBkZWNpbWFscyA9IGlucHV0PG51bWJlcj4oMik7XHJcbiAgcHVibGljIHJlYWRvbmx5IGRlY2ltYWxNb2RlID0gaW5wdXQ8J2Fsd2F5cycgfCAnbm90LXplcm8nIHwgJ3BhZCc+KCdub3QtemVybycpO1xyXG4gIHB1YmxpYyByZWFkb25seSBkZWNpbWFsU2VwYXJhdG9yID0gaW5wdXQ8JywnIHwgJy4nPignLCcpO1xyXG4gIHB1YmxpYyByZWFkb25seSB0aG91c2FuZFNlcGFyYXRvciA9IGlucHV0PHN0cmluZz4oJyAnKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCk7XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBpbnB1dEVsZW1lbnRSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQoJ2lucHV0RWxlbWVudFJlZicsIHsgcmVhZDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PiB9KTtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IGFyaWFWYWx1ZU1heCA9IGNvbXB1dGVkKCgpID0+IHRoaXMubWF4KCkgPz8gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpO1xyXG4gIHB1YmxpYyByZWFkb25seSBhcmlhVmFsdWVNaW4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1pbigpID8/IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgYXJpYVZhbHVlTm93ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52YWx1ZSgpIHx8IDApO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgbWF4bGVuZ3RoID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgeyBkZWNpbWFsU2VwYXJhdG9yLCB0aG91c2FuZFNlcGFyYXRvciB9ID0gdGhpcy5tYXNraXRvTnVtYmVyUGFyYW1zKCk7XHJcblxyXG4gICAgY29uc3QgZGVjaW1hbHMgPSB0aGlzLmRlY2ltYWxzKCk7XHJcblxyXG4gICAgY29uc3QgbWFudGlzc2EgPSBkZWNpbWFscyAmJiB0aGlzLnZhbHVlQXNTdHJpbmcoKS5pbmNsdWRlcyhkZWNpbWFsU2VwYXJhdG9yKTtcclxuICAgIGNvbnN0IHByZWNpc2lvbiA9IG1hbnRpc3NhID8gTWF0aC5taW4oZGVjaW1hbHMgKyAxLCAyMCkgOiAwO1xyXG4gICAgY29uc3QgdGhvdXNhbmQgPSB0aG91c2FuZFNlcGFyYXRvci5yZXBlYXQoNSkubGVuZ3RoO1xyXG5cclxuICAgIHJldHVybiAxOCArIHByZWNpc2lvbiArIHRob3VzYW5kO1xyXG4gIH0pO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgbWFza2l0b051bWJlclBhcmFtcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IGRlY2ltYWxNb2RlID0gdGhpcy5kZWNpbWFsTW9kZSgpO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIG1heDogdGhpcy5hcmlhVmFsdWVNYXgoKSxcclxuICAgICAgbWluOiB0aGlzLmFyaWFWYWx1ZU1pbigpLFxyXG4gICAgICBtaW51c1NpZ246ICctJyxcclxuICAgICAgcHJlY2lzaW9uOiB0aGlzLmRlY2ltYWxzKCksXHJcbiAgICAgIGRlY2ltYWxaZXJvUGFkZGluZzogZGVjaW1hbE1vZGUgPT09ICdhbHdheXMnLFxyXG4gICAgICBkZWNpbWFsU2VwYXJhdG9yOiB0aGlzLmRlY2ltYWxTZXBhcmF0b3IoKSxcclxuICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRoaXMudGhvdXNhbmRTZXBhcmF0b3IoKSxcclxuICAgIH07XHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICBlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xyXG4gICAgICBjb25zdCBpbnB1dCA9IHRoaXMuaW5wdXRFbGVtZW50UmVmKCk7XHJcbiAgICAgIGNvbnN0IGZvcm1hdHRlciA9IHRoaXMubWFza2l0b051bWJlclBhcmFtcygpO1xyXG5cclxuICAgICAgY29uc3QgeyBwbHVnaW5zLCAuLi5vcHRpb25zIH0gPSBtYXNraXRvTnVtYmVyT3B0aW9uc0dlbmVyYXRvcihmb3JtYXR0ZXIpO1xyXG5cclxuICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgTWFza2l0byhpbnB1dC5uYXRpdmVFbGVtZW50LCB7XHJcbiAgICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgICBwbHVnaW5zOiBbXHJcbiAgICAgICAgICAuLi5wbHVnaW5zLFxyXG4gICAgICAgICAgbWFza2l0b0luaXRpYWxDYWxpYnJhdGlvblBsdWdpbihcclxuICAgICAgICAgICAgbWFza2l0b051bWJlck9wdGlvbnNHZW5lcmF0b3Ioe1xyXG4gICAgICAgICAgICAgIC4uLmZvcm1hdHRlcixcclxuICAgICAgICAgICAgICBtaW46IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSLFxyXG4gICAgICAgICAgICAgIG1heDogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgIF0sXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgb25DbGVhbnVwKCgpID0+IGluc3RhbmNlLmRlc3Ryb3koKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvdmVycmlkZSB2YWx1ZVN0cmluZ2lmeSh2YWx1ZUFzU3RyaW5nOiB1bmtub3duKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wYXJzZU51bWJlcih2YWx1ZUFzU3RyaW5nKTtcclxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG1hc2tpdG9TdHJpbmdpZnlOdW1iZXIodmFsdWUsIHRoaXMubWFza2l0b051bWJlclBhcmFtcygpKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB2YWx1ZVNpbXBsaWZ5KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZGVjaW1hbFNlcGFyYXRvciA9IG5ldyBSZWdFeHAodGhpcy5kZWNpbWFsU2VwYXJhdG9yKCksICdnaScpO1xyXG4gICAgY29uc3QgdGhvdXNhbmRTZXBhcmF0b3IgPSBuZXcgUmVnRXhwKHRoaXMudGhvdXNhbmRTZXBhcmF0b3IoKSwgJ2dpJyk7XHJcblxyXG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UodGhvdXNhbmRTZXBhcmF0b3IsICcnKS5yZXBsYWNlKGRlY2ltYWxTZXBhcmF0b3IsICcuJyk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdmFsdWVVbnNldHRsZWQodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhKFxyXG4gICAgICB2YWx1ZSA9PT0gJy0nIHx8XHJcbiAgICAgIHZhbHVlLm1hdGNoKC9eXFxzKihbLStdKT9cXGQrXFwuJC8pIHx8XHJcbiAgICAgIHZhbHVlLm1hdGNoKC9eXFxzKihbLStdKT9cXGQrXFwuWzAtOV0qMCQvKSB8fFxyXG4gICAgICB2YWx1ZS5tYXRjaCgvXlxccyooWy0rXSkwKyQvKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBwYXJzZU51bWJlcih2YWx1ZTogdW5rbm93bik6IG51bWJlciB8IG51bGwge1xyXG4gICAgbGV0IHZhbHVlQXNOdW1iZXI6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIHZhbHVlQXNOdW1iZXIgPSB2YWx1ZTtcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICB2YWx1ZUFzTnVtYmVyID0gTnVtYmVyLnBhcnNlRmxvYXQodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChOdW1iZXIuaXNOYU4odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB2YWx1ZUFzTnVtYmVyO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGhhbmRsZUJsdXJFdmVudCgpOiB2b2lkIHtcclxuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xyXG5cclxuICAgIGNvbnN0IHZhbHVlQXNTdHJpbmcgPSB0aGlzLnZhbHVlU2ltcGxpZnkodGhpcy52YWx1ZUFzU3RyaW5nKCkpO1xyXG5cclxuICAgIGlmICh0aGlzLnZhbHVlVW5zZXR0bGVkKHZhbHVlQXNTdHJpbmcpKSB7XHJcbiAgICAgIHRoaXMudmFsdWVBc1N0cmluZy51cGRhdGUoKCkgPT4gdGhpcy52YWx1ZVN0cmluZ2lmeSh0aGlzLnZhbHVlKCkpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBoYW5kbGVGb2N1c0V2ZW50KCk6IHZvaWQge1xyXG4gICAgY29uc3QgdmFsdWUgPSBtYXNraXRvUGFyc2VOdW1iZXIodGhpcy52YWx1ZUFzU3RyaW5nKCksIHRoaXMuZGVjaW1hbFNlcGFyYXRvcigpKTtcclxuXHJcbiAgICBpZiAoTnVtYmVyLmlzTmFOKHZhbHVlKSAmJiAhdGhpcy5yZWFkb25seSgpKSB7XHJcbiAgICAgIHRoaXMudmFsdWVBc1N0cmluZy5zZXQoJycpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGhhbmRsZUlucHV0RXZlbnQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuaW5wdXRFbGVtZW50UmVmKCk7XHJcblxyXG4gICAgY29uc3QgdmFsdWVBc1N0cmluZyA9IHRoaXMudmFsdWVTaW1wbGlmeShpbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlKTtcclxuXHJcbiAgICBpZiAodGhpcy52YWx1ZVVuc2V0dGxlZCh2YWx1ZUFzU3RyaW5nKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy52YWx1ZUFzU3RyaW5nLnVwZGF0ZSgoKSA9PiBpbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMucGFyc2VOdW1iZXIodmFsdWVBc1N0cmluZyk7XHJcblxyXG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLndyaXRlVmFsdWUodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh2YWx1ZSA8IHRoaXMuYXJpYVZhbHVlTWluKCkgfHwgdmFsdWUgPiB0aGlzLmFyaWFWYWx1ZU1heCgpKSB7XHJcbiAgICAgIHJldHVybiB2b2lkIDA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy53cml0ZVZhbHVlKHZhbHVlKTtcclxuICB9XHJcbn1cclxuIiwiPGlucHV0XHJcbiAgI2lucHV0RWxlbWVudFJlZlxyXG4gIHR5cGU9XCJ0ZXh0XCJcclxuICByb2xlPVwic3BpbmJ1dHRvblwiXHJcbiAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXHJcbiAgW3ZhbHVlXT0ndmFsdWVBc1N0cmluZygpJ1xyXG4gIFthdHRyLmlkXT1cImlucHV0SWQoKVwiXHJcbiAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQoKSA/IC0xIDogdGFiaW5kZXgoKVwiXHJcbiAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQoKSB8fCB1bmRlZmluZWRcIlxyXG4gIFthdHRyLnJlYWRvbmx5XT1cInJlYWRvbmx5KCkgfHwgdW5kZWZpbmVkXCJcclxuICBbYXR0ci5yZXF1aXJlZF09XCJyZXF1aXJlZCgpIHx8IHVuZGVmaW5lZFwiXHJcbiAgW2F0dHIubWF4bGVuZ3RoXT1cIm1heGxlbmd0aCgpXCJcclxuICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcclxuICBbYXR0ci5hcmlhLWludmFsaWRdPVwiaW52YWxpZCgpIHx8IHVuZGVmaW5lZFwiXHJcbiAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCJhcmlhVmFsdWVNYXgoKVwiXHJcbiAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJhcmlhVmFsdWVNaW4oKVwiXHJcbiAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJhcmlhVmFsdWVOb3coKVwiXHJcbiAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZCgpIHx8IHVuZGVmaW5lZFwiXHJcbiAgW2F0dHIuYXJpYS1yZWFkb25seV09XCJyZWFkb25seSgpIHx8IHVuZGVmaW5lZFwiXHJcbiAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZCgpIHx8IHVuZGVmaW5lZFwiXHJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImxhYmVsSWQoKVwiXHJcbiAgKGJsdXIpPVwiaGFuZGxlQmx1ckV2ZW50KClcIlxyXG4gIChmb2N1cyk9XCJoYW5kbGVGb2N1c0V2ZW50KClcIlxyXG4gIChpbnB1dCk9XCJoYW5kbGVJbnB1dEV2ZW50KClcIlxyXG4vPlxyXG5cclxuQGlmIChzdGVwKCkgJiYgIXJlYWRvbmx5KCkpIHtcclxuICA8bGF0LXNwaW5uZXJzIC8+XHJcbn1cclxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@latitude-ui/widgets/icons" />
5
+ export * from './public-api';
@@ -0,0 +1,2 @@
1
+ export * from './src/icon.component';
2
+ export * from './src/icon.tokens';
@@ -0,0 +1,9 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class IconComponent {
3
+ readonly resolve: (name: string) => string;
4
+ readonly url: import("@angular/core").InputSignal<string | undefined>;
5
+ readonly name: import("@angular/core").InputSignal<string | undefined>;
6
+ readonly icon: import("@angular/core").Signal<string>;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<IconComponent, never>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<IconComponent, "lat-icon", ["latIcon"], { "url": { "alias": "url"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
9
+ }
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export declare const ICONS_ASSETS: InjectionToken<string>;
3
+ export declare const ICONS_RESOLVER: InjectionToken<(name: string) => string>;
@@ -0,0 +1,3 @@
1
+ # @latitude-ui/widgets/button
2
+
3
+ Secondary entry point of `@latitude-ui/widgets`. It can be used by importing from `@latitude-ui/widgets/button`.
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@latitude-ui/widgets/input" />
5
+ export * from './public-api';
@@ -0,0 +1,4 @@
1
+ export * from './src/input-label/input-label.component';
2
+ export * from './src/input-error/input-error.component';
3
+ export * from './src/input.component';
4
+ export * from './src/input.directive';