@latitude-ui/widgets 0.0.23 → 0.0.25

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 (82) hide show
  1. package/README.md +7 -7
  2. package/button/README.md +3 -3
  3. package/checkbox/README.md +3 -3
  4. package/core/README.md +3 -0
  5. package/fesm2022/latitude-ui-widgets-button.mjs +86 -0
  6. package/fesm2022/latitude-ui-widgets-button.mjs.map +1 -0
  7. package/fesm2022/latitude-ui-widgets-checkbox.mjs +40 -0
  8. package/fesm2022/latitude-ui-widgets-checkbox.mjs.map +1 -0
  9. package/fesm2022/latitude-ui-widgets-core.mjs +22 -0
  10. package/fesm2022/latitude-ui-widgets-core.mjs.map +1 -0
  11. package/fesm2022/latitude-ui-widgets-icons.mjs +40 -0
  12. package/fesm2022/latitude-ui-widgets-icons.mjs.map +1 -0
  13. package/fesm2022/latitude-ui-widgets-input.mjs +217 -0
  14. package/fesm2022/latitude-ui-widgets-input.mjs.map +1 -0
  15. package/fesm2022/latitude-ui-widgets-listbox.mjs +43 -0
  16. package/fesm2022/latitude-ui-widgets-listbox.mjs.map +1 -0
  17. package/fesm2022/latitude-ui-widgets-scrollable.mjs +102 -0
  18. package/fesm2022/latitude-ui-widgets-scrollable.mjs.map +1 -0
  19. package/fesm2022/{latitude-widgets-select.mjs → latitude-ui-widgets-select.mjs} +56 -61
  20. package/fesm2022/latitude-ui-widgets-select.mjs.map +1 -0
  21. package/fesm2022/latitude-ui-widgets-switch.mjs +37 -0
  22. package/fesm2022/latitude-ui-widgets-switch.mjs.map +1 -0
  23. package/fesm2022/latitude-ui-widgets-tabs.mjs +83 -0
  24. package/fesm2022/latitude-ui-widgets-tabs.mjs.map +1 -0
  25. package/fesm2022/latitude-ui-widgets-textbox.mjs +348 -0
  26. package/fesm2022/latitude-ui-widgets-textbox.mjs.map +1 -0
  27. package/fesm2022/latitude-ui-widgets-toolbar.mjs +66 -0
  28. package/fesm2022/latitude-ui-widgets-toolbar.mjs.map +1 -0
  29. package/fesm2022/{latitude-widgets.mjs → latitude-ui-widgets.mjs} +1 -1
  30. package/fesm2022/latitude-ui-widgets.mjs.map +1 -0
  31. package/icons/README.md +3 -0
  32. package/input/README.md +3 -3
  33. package/listbox/README.md +3 -3
  34. package/package.json +42 -33
  35. package/scrollable/README.md +3 -0
  36. package/select/README.md +3 -3
  37. package/switch/README.md +3 -3
  38. package/tabs/README.md +3 -0
  39. package/textbox/README.md +3 -3
  40. package/toolbar/README.md +3 -0
  41. package/types/latitude-ui-widgets-button.d.ts +30 -0
  42. package/types/{latitude-widgets-checkbox.d.ts → latitude-ui-widgets-checkbox.d.ts} +2 -2
  43. package/types/latitude-ui-widgets-core.d.ts +12 -0
  44. package/types/latitude-ui-widgets-icons.d.ts +15 -0
  45. package/types/{latitude-widgets-input.d.ts → latitude-ui-widgets-input.d.ts} +44 -20
  46. package/types/latitude-ui-widgets-listbox.d.ts +20 -0
  47. package/types/latitude-ui-widgets-scrollable.d.ts +24 -0
  48. package/types/{latitude-widgets-select.d.ts → latitude-ui-widgets-select.d.ts} +2 -2
  49. package/types/{latitude-widgets-switch.d.ts → latitude-ui-widgets-switch.d.ts} +2 -2
  50. package/types/latitude-ui-widgets-tabs.d.ts +46 -0
  51. package/types/latitude-ui-widgets-textbox.d.ts +107 -0
  52. package/types/latitude-ui-widgets-toolbar.d.ts +24 -0
  53. package/fesm2022/latitude-widgets-button.mjs +0 -96
  54. package/fesm2022/latitude-widgets-button.mjs.map +0 -1
  55. package/fesm2022/latitude-widgets-checkbox.mjs +0 -40
  56. package/fesm2022/latitude-widgets-checkbox.mjs.map +0 -1
  57. package/fesm2022/latitude-widgets-icon.mjs +0 -114
  58. package/fesm2022/latitude-widgets-icon.mjs.map +0 -1
  59. package/fesm2022/latitude-widgets-input.mjs +0 -179
  60. package/fesm2022/latitude-widgets-input.mjs.map +0 -1
  61. package/fesm2022/latitude-widgets-listbox.mjs +0 -46
  62. package/fesm2022/latitude-widgets-listbox.mjs.map +0 -1
  63. package/fesm2022/latitude-widgets-select.mjs.map +0 -1
  64. package/fesm2022/latitude-widgets-switch.mjs +0 -37
  65. package/fesm2022/latitude-widgets-switch.mjs.map +0 -1
  66. package/fesm2022/latitude-widgets-textbox-date.mjs +0 -30
  67. package/fesm2022/latitude-widgets-textbox-date.mjs.map +0 -1
  68. package/fesm2022/latitude-widgets-textbox-number.mjs +0 -160
  69. package/fesm2022/latitude-widgets-textbox-number.mjs.map +0 -1
  70. package/fesm2022/latitude-widgets-textbox.mjs +0 -62
  71. package/fesm2022/latitude-widgets-textbox.mjs.map +0 -1
  72. package/fesm2022/latitude-widgets.mjs.map +0 -1
  73. package/icon/README.md +0 -3
  74. package/textbox-date/README.md +0 -3
  75. package/textbox-number/README.md +0 -3
  76. package/types/latitude-widgets-button.d.ts +0 -29
  77. package/types/latitude-widgets-icon.d.ts +0 -44
  78. package/types/latitude-widgets-listbox.d.ts +0 -21
  79. package/types/latitude-widgets-textbox-date.d.ts +0 -9
  80. package/types/latitude-widgets-textbox-number.d.ts +0 -47
  81. package/types/latitude-widgets-textbox.d.ts +0 -26
  82. /package/types/{latitude-widgets.d.ts → latitude-ui-widgets.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latitude-ui-widgets-switch.mjs","sources":["../../../../packages/widgets/switch/lib/switch.component.ts","../../../../packages/widgets/switch/lib/switch.component.html","../../../../packages/widgets/switch/latitude-ui-widgets-switch.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, forwardRef, ViewEncapsulation } from '@angular/core';\n\nimport { HTMLInputDirective } from '@latitude-ui/widgets/input';\n\n\n@Component({\n exportAs: 'latSwitch',\n selector: 'lat-switch',\n templateUrl: './switch.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: HTMLInputDirective,\n useExisting: forwardRef(() => SwitchComponent),\n },\n ],\n host: {\n '(click)': 'toggle()',\n },\n})\nexport class SwitchComponent extends HTMLInputDirective<boolean> {\n toggle() {\n if (!this.disabled()) {\n const value = this.value() ?? false;\n\n this.writeValue(!value);\n }\n }\n}\n","<button\n type=\"button\"\n role=\"switch\"\n [attr.id]=\"inputId()\"\n [attr.value]=\"value() ? 'on' : 'off'\"\n [attr.tabindex]=\"disabled() ? -1 : tabindex()\"\n [attr.disabled]=\"disabled() || undefined\"\n [attr.aria-checked]=\"value() || false\"\n>\n <div\n role=\"presentation\"\n class=\"lat-switch-thumb\"\n ></div>\n</button>\n<ng-content/>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAqBM,MAAO,eAAgB,SAAQ,kBAA2B,CAAA;IAC9D,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK;AAEnC,YAAA,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;QACzB;IACF;uGAPW,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,UAAA,EAAA,EAAA,EAAA,SAAA,EAVf;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC/C,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBH,iXAeA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FDMa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAhB3B,SAAS;+BACE,WAAW,EAAA,QAAA,EACX,YAAY,EAAA,aAAA,EAEP,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,kBAAkB;AAC3B,4BAAA,WAAW,EAAE,UAAU,CAAC,qBAAqB,CAAC;AAC/C,yBAAA;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,SAAS,EAAE,UAAU;AACtB,qBAAA,EAAA,QAAA,EAAA,iXAAA,EAAA;;;AEnBH;;AAEG;;;;"}
@@ -0,0 +1,83 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Directive, input, booleanAttribute, numberAttribute, computed, contentChild, TemplateRef, ChangeDetectionStrategy, ViewEncapsulation, Component, InjectionToken, inject, contentChildren, linkedSignal } from '@angular/core';
3
+ import { uid } from '@latitude-ui/widgets/core';
4
+ import { NgTemplateOutlet } from '@angular/common';
5
+ import { ButtonComponent } from '@latitude-ui/widgets/button';
6
+ import { ToolBarComponent } from '@latitude-ui/widgets/toolbar';
7
+
8
+ class TabLabelDirective {
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TabLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
10
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: TabLabelDirective, isStandalone: true, selector: "[latTabLabel]", exportAs: ["latTabLabel"], ngImport: i0 });
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TabLabelDirective, decorators: [{
13
+ type: Directive,
14
+ args: [{
15
+ exportAs: 'latTabLabel',
16
+ selector: '[latTabLabel]'
17
+ }]
18
+ }] });
19
+
20
+ class TabContentDirective {
21
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TabContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
22
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: TabContentDirective, isStandalone: true, selector: "[latTabContent]", exportAs: ["latTabContent"], ngImport: i0 });
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TabContentDirective, decorators: [{
25
+ type: Directive,
26
+ args: [{
27
+ exportAs: 'latTabContent',
28
+ selector: '[latTabContent]'
29
+ }]
30
+ }] });
31
+
32
+ class TabComponent {
33
+ id = input(uid(), ...(ngDevMode ? [{ debugName: "id" }] : []));
34
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
35
+ tabindex = input(undefined, { ...(ngDevMode ? { debugName: "tabindex" } : {}), transform: numberAttribute });
36
+ tabId = computed(() => `lat-tab-${this.id()}`, ...(ngDevMode ? [{ debugName: "tabId" }] : []));
37
+ tabpanelId = computed(() => `lat-tabpanel-${this.id()}`, ...(ngDevMode ? [{ debugName: "tabpanelId" }] : []));
38
+ label = contentChild(TabLabelDirective, { ...(ngDevMode ? { debugName: "label" } : {}), read: TemplateRef });
39
+ content = contentChild.required(TabContentDirective, { read: TemplateRef });
40
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
41
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.3", type: TabComponent, isStandalone: true, selector: "lat-tab", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "label", first: true, predicate: TabLabelDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "content", first: true, predicate: TabContentDirective, descendants: true, read: TemplateRef, isSignal: true }], exportAs: ["latTab"], ngImport: i0, template: "", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
42
+ }
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TabComponent, decorators: [{
44
+ type: Component,
45
+ args: [{ exportAs: 'latTab', selector: 'lat-tab', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "" }]
46
+ }], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], tabindex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabindex", required: false }] }], label: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TabLabelDirective), { ...{ read: TemplateRef }, isSignal: true }] }], content: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TabContentDirective), { ...{ read: TemplateRef }, isSignal: true }] }] } });
47
+
48
+ const TABS_OPTIONS = new InjectionToken(ngDevMode ? 'TABS_OPTIONS' : '', {
49
+ factory: () => {
50
+ return {
51
+ size: 'md',
52
+ variant: 'default',
53
+ };
54
+ }
55
+ });
56
+
57
+ class TabsComponent {
58
+ options = inject(TABS_OPTIONS);
59
+ size = input(this.options.size, ...(ngDevMode ? [{ debugName: "size" }] : []));
60
+ variant = input(this.options.variant, ...(ngDevMode ? [{ debugName: "variant" }] : []));
61
+ tabs = contentChildren(TabComponent, ...(ngDevMode ? [{ debugName: "tabs" }] : []));
62
+ selected = linkedSignal(() => this.tabs().at(0), ...(ngDevMode ? [{ debugName: "selected" }] : []));
63
+ onTabChanged(tab) {
64
+ this.selected.set(tab);
65
+ }
66
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
67
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: TabsComponent, isStandalone: true, selector: "lat-tabs", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "tabs", predicate: TabComponent, isSignal: true }], exportAs: ["latTabs"], ngImport: i0, template: "<lat-toolbar role=\"tablist\" variant=\"inherit\">\r\n @for (tab of tabs(); track $index) {\r\n <lat-button\r\n role=\"tab\"\r\n variant=\"inherit\"\r\n [id]=\"tab.tabId()\"\r\n [tabindex]=\"tab.tabindex()\"\r\n [disabled]=\"tab.disabled()\"\r\n (click)=\"onTabChanged(tab)\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"tab.label()\" />\r\n </lat-button>\r\n }\r\n</lat-toolbar>\r\n\r\n@if (selected(); as tab) {\r\n <div\r\n role=\"tabpanel\"\r\n [attr.id]=\"tab.tabpanelId()\"\r\n [attr.aria-labelledby]=\"tab.tabId()\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"tab.content()\" />\r\n </div>\r\n} @else {\r\n <div role=\"presentation\">\r\n <!-- TODO: empty state placeholder -->\r\n </div>\r\n}\r\n\r\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ToolBarComponent, selector: "lat-toolbar", inputs: ["role", "size", "dock", "variant"], exportAs: ["latToolBar"] }, { kind: "component", type: ButtonComponent, selector: "lat-button, a[latButton],button[latButton]", inputs: ["role", "size", "variant", "disabled", "tabindex"], exportAs: ["latButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
68
+ }
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TabsComponent, decorators: [{
70
+ type: Component,
71
+ args: [{ imports: [
72
+ NgTemplateOutlet,
73
+ ToolBarComponent,
74
+ ButtonComponent
75
+ ], exportAs: 'latTabs', selector: 'lat-tabs', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<lat-toolbar role=\"tablist\" variant=\"inherit\">\r\n @for (tab of tabs(); track $index) {\r\n <lat-button\r\n role=\"tab\"\r\n variant=\"inherit\"\r\n [id]=\"tab.tabId()\"\r\n [tabindex]=\"tab.tabindex()\"\r\n [disabled]=\"tab.disabled()\"\r\n (click)=\"onTabChanged(tab)\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"tab.label()\" />\r\n </lat-button>\r\n }\r\n</lat-toolbar>\r\n\r\n@if (selected(); as tab) {\r\n <div\r\n role=\"tabpanel\"\r\n [attr.id]=\"tab.tabpanelId()\"\r\n [attr.aria-labelledby]=\"tab.tabId()\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"tab.content()\" />\r\n </div>\r\n} @else {\r\n <div role=\"presentation\">\r\n <!-- TODO: empty state placeholder -->\r\n </div>\r\n}\r\n\r\n" }]
76
+ }], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], tabs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => TabComponent), { isSignal: true }] }] } });
77
+
78
+ /**
79
+ * Generated bundle index. Do not edit.
80
+ */
81
+
82
+ export { TABS_OPTIONS, TabComponent, TabContentDirective, TabLabelDirective, TabsComponent };
83
+ //# sourceMappingURL=latitude-ui-widgets-tabs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latitude-ui-widgets-tabs.mjs","sources":["../../../../packages/widgets/tabs/lib/tab-label.directive.ts","../../../../packages/widgets/tabs/lib/tab-content.directive.ts","../../../../packages/widgets/tabs/lib/tab.component.ts","../../../../packages/widgets/tabs/lib/tab.component.html","../../../../packages/widgets/tabs/lib/tabs.options.ts","../../../../packages/widgets/tabs/lib/tabs.component.ts","../../../../packages/widgets/tabs/lib/tabs.component.html","../../../../packages/widgets/tabs/latitude-ui-widgets-tabs.ts"],"sourcesContent":["import { Directive } from '@angular/core';\r\n\r\n\r\n@Directive({\r\n exportAs: 'latTabLabel',\r\n selector: '[latTabLabel]'\r\n})\r\nexport class TabLabelDirective {\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n\r\n@Directive({\r\n exportAs: 'latTabContent',\r\n selector: '[latTabContent]'\r\n})\r\nexport class TabContentDirective {\r\n}\r\n","import {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component, computed,\r\n contentChild,\r\n input, numberAttribute,\r\n TemplateRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\n\r\nimport { uid } from '@latitude-ui/widgets/core';\r\n\r\nimport { TabLabelDirective } from './tab-label.directive';\r\nimport { TabContentDirective } from './tab-content.directive';\r\n\r\n\r\n@Component({\r\n exportAs: 'latTab',\r\n selector: 'lat-tab',\r\n templateUrl: './tab.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TabComponent {\r\n readonly id = input<string>(uid());\r\n readonly disabled = input<boolean, unknown>(false, { transform: booleanAttribute });\r\n readonly tabindex = input<number, unknown>(undefined, { transform: numberAttribute });\r\n\r\n readonly tabId = computed(() => `lat-tab-${this.id()}`);\r\n readonly tabpanelId = computed(() => `lat-tabpanel-${this.id()}`);\r\n\r\n readonly label = contentChild(TabLabelDirective, { read: TemplateRef });\r\n readonly content = contentChild.required(TabContentDirective, { read: TemplateRef })\r\n}\r\n","","import { InjectionToken } from '@angular/core';\r\n\r\nimport { BoxSize } from '@latitude-ui/widgets/core';\r\n\r\n\r\nexport type TabsOptions = {\r\n size: BoxSize;\r\n variant: 'default' | 'inherit' | ({} & string);\r\n}\r\n\r\nexport const TABS_OPTIONS = new InjectionToken<TabsOptions>(\r\n ngDevMode ? 'TABS_OPTIONS' : '',\r\n {\r\n factory: () => {\r\n return {\r\n size: 'md',\r\n variant: 'default',\r\n }\r\n }\r\n }\r\n);\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n contentChildren,\r\n inject, input,\r\n linkedSignal,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\nimport { ButtonComponent } from '@latitude-ui/widgets/button';\r\nimport { ToolBarComponent } from '@latitude-ui/widgets/toolbar';\r\n\r\nimport { TabComponent } from './tab.component';\r\nimport { TABS_OPTIONS, TabsOptions } from './tabs.options';\r\n\r\n\r\n@Component({\r\n imports: [\r\n NgTemplateOutlet,\r\n ToolBarComponent,\r\n ButtonComponent\r\n ],\r\n exportAs: 'latTabs',\r\n selector: 'lat-tabs',\r\n templateUrl: './tabs.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TabsComponent {\r\n readonly options = inject(TABS_OPTIONS);\r\n\r\n readonly size = input<TabsOptions['size']>(this.options.size);\r\n readonly variant = input<TabsOptions['variant']>(this.options.variant);\r\n\r\n readonly tabs = contentChildren(TabComponent);\r\n\r\n readonly selected = linkedSignal<TabComponent | undefined>(() => this.tabs().at(0));\r\n\r\n onTabChanged(tab: TabComponent | undefined) {\r\n this.selected.set(tab);\r\n }\r\n}\r\n","<lat-toolbar role=\"tablist\" variant=\"inherit\">\r\n @for (tab of tabs(); track $index) {\r\n <lat-button\r\n role=\"tab\"\r\n variant=\"inherit\"\r\n [id]=\"tab.tabId()\"\r\n [tabindex]=\"tab.tabindex()\"\r\n [disabled]=\"tab.disabled()\"\r\n (click)=\"onTabChanged(tab)\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"tab.label()\" />\r\n </lat-button>\r\n }\r\n</lat-toolbar>\r\n\r\n@if (selected(); as tab) {\r\n <div\r\n role=\"tabpanel\"\r\n [attr.id]=\"tab.tabpanelId()\"\r\n [attr.aria-labelledby]=\"tab.tabId()\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"tab.content()\" />\r\n </div>\r\n} @else {\r\n <div role=\"presentation\">\r\n <!-- TODO: empty state placeholder -->\r\n </div>\r\n}\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;MAOa,iBAAiB,CAAA;uGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;MCCY,mBAAmB,CAAA;uGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;MCiBY,YAAY,CAAA;AACd,IAAA,EAAE,GAAG,KAAK,CAAS,GAAG,EAAE,8CAAC;IACzB,QAAQ,GAAG,KAAK,CAAmB,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAC1E,QAAQ,GAAG,KAAK,CAAkB,SAAS,qDAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAE5E,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAA,QAAA,EAAW,IAAI,CAAC,EAAE,EAAE,CAAA,CAAE,iDAAC;AAC9C,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAA,aAAA,EAAgB,IAAI,CAAC,EAAE,EAAE,CAAA,CAAE,sDAAC;IAExD,KAAK,GAAG,YAAY,CAAC,iBAAiB,kDAAI,IAAI,EAAE,WAAW,EAAA,CAAG;AAC9D,IAAA,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;uGATzE,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAQO,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,WAAW,uEAC3B,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChCnF,EAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FDuBa,YAAY,EAAA,UAAA,EAAA,CAAA;kBAPxB,SAAS;+BACE,QAAQ,EAAA,QAAA,EACR,SAAS,EAAA,aAAA,EAEJ,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,EAAA,EAAA;AAUjB,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,EAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,iBAAiB,CAAA,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAC7B,mBAAmB,CAAA,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEtB9E,MAAM,YAAY,GAAG,IAAI,cAAc,CAC5C,SAAS,GAAG,cAAc,GAAG,EAAE,EAC/B;IACE,OAAO,EAAE,MAAK;QACZ,OAAO;AACL,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,OAAO,EAAE,SAAS;SACnB;IACH;AACD,CAAA;;MCUU,aAAa,CAAA;AACf,IAAA,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC;IAE9B,IAAI,GAAG,KAAK,CAAsB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IACpD,OAAO,GAAG,KAAK,CAAyB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE7D,IAAA,IAAI,GAAG,eAAe,CAAC,YAAY,gDAAC;AAEpC,IAAA,QAAQ,GAAG,YAAY,CAA2B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,oDAAC;AAEnF,IAAA,YAAY,CAAC,GAA6B,EAAA;AACxC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;IACxB;uGAZW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EAMQ,YAAY,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnC9C,wwBA6BA,4CDVI,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,gBAAgB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,eAAe,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAQN,aAAa,EAAA,UAAA,EAAA,CAAA;kBAZzB,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA;wBACP,gBAAgB;wBAChB,gBAAgB;wBAChB;qBACD,EAAA,QAAA,EACS,SAAS,EAAA,QAAA,EACT,UAAU,EAAA,aAAA,EAEL,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wwBAAA,EAAA;kRAQf,YAAY,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEnC9C;;AAEG;;;;"}
@@ -0,0 +1,348 @@
1
+ import * as i0 from '@angular/core';
2
+ import { viewChild, ElementRef, Directive, input, numberAttribute, computed, forwardRef, ChangeDetectionStrategy, ViewEncapsulation, Component, effect } from '@angular/core';
3
+ import { HTMLInputDirective } from '@latitude-ui/widgets/input';
4
+ import { maskitoDateOptionsGenerator, maskitoStringifyDate, maskitoParseDate, maskitoNumberOptionsGenerator, maskitoStringifyNumber, maskitoParseNumber } from '@maskito/kit';
5
+ import { Maskito, maskitoInitialCalibrationPlugin } from '@maskito/core';
6
+ import { ButtonComponent } from '@latitude-ui/widgets/button';
7
+ import { IconComponent } from '@latitude-ui/widgets/icons';
8
+
9
+ class HTMLTextBoxDirective extends HTMLInputDirective {
10
+ el = viewChild.required('htmlInputElement', { read: (ElementRef) });
11
+ blur() {
12
+ this.el().nativeElement.blur();
13
+ }
14
+ focus() {
15
+ this.el().nativeElement.focus();
16
+ }
17
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: HTMLTextBoxDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
18
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.1.3", type: HTMLTextBoxDirective, isStandalone: true, viewQueries: [{ propertyName: "el", first: true, predicate: ["htmlInputElement"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0 });
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: HTMLTextBoxDirective, decorators: [{
21
+ type: Directive
22
+ }], propDecorators: { el: [{ type: i0.ViewChild, args: ['htmlInputElement', { ...{ read: (ElementRef) }, isSignal: true }] }] } });
23
+
24
+ class TextBoxComponent extends HTMLTextBoxDirective {
25
+ rows = input(undefined, { ...(ngDevMode ? { debugName: "rows" } : {}), transform: numberAttribute });
26
+ maxlength = input(undefined, { ...(ngDevMode ? { debugName: "maxlength" } : {}), transform: numberAttribute });
27
+ minlength = input(undefined, { ...(ngDevMode ? { debugName: "minlength" } : {}), transform: numberAttribute });
28
+ textarea = computed(() => {
29
+ const rows = this.rows();
30
+ return rows ? rows >= 2 : false;
31
+ }, ...(ngDevMode ? [{ debugName: "textarea" }] : []));
32
+ /** @internal */
33
+ onBlurEvent() {
34
+ this.markAsTouched();
35
+ }
36
+ /** @internal */
37
+ onValueChanged() {
38
+ const { nativeElement } = this.el();
39
+ this.writeValue(nativeElement.value);
40
+ }
41
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TextBoxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
42
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: TextBoxComponent, isStandalone: true, selector: "lat-textbox:not([type]), lat-textbox[type=\"text\"]", 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 } }, providers: [
43
+ {
44
+ provide: HTMLInputDirective,
45
+ useExisting: forwardRef(() => TextBoxComponent),
46
+ },
47
+ ], exportAs: ["latTextBox"], usesInheritance: true, ngImport: i0, template: "@if(textarea()) {\r\n <textarea\r\n #htmlInputElement\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.autofocus]=\"autofocus()\"\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 [style.height]=\"'auto'\"\r\n (blur)=\"onBlurEvent()\"\r\n (input)=\"onValueChanged()\"\r\n ></textarea>\r\n} @else {\r\n <input\r\n #htmlInputElement\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.autofocus]=\"autofocus()\"\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)=\"onBlurEvent()\"\r\n (input)=\"onValueChanged()\"\r\n />\r\n}\r\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
48
+ }
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TextBoxComponent, decorators: [{
50
+ type: Component,
51
+ args: [{ exportAs: 'latTextBox', selector: 'lat-textbox:not([type]), lat-textbox[type="text"]', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
52
+ {
53
+ provide: HTMLInputDirective,
54
+ useExisting: forwardRef(() => TextBoxComponent),
55
+ },
56
+ ], host: {
57
+ // '[style.height]': 'textarea() ? "auto" : undefined'
58
+ }, template: "@if(textarea()) {\r\n <textarea\r\n #htmlInputElement\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.autofocus]=\"autofocus()\"\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 [style.height]=\"'auto'\"\r\n (blur)=\"onBlurEvent()\"\r\n (input)=\"onValueChanged()\"\r\n ></textarea>\r\n} @else {\r\n <input\r\n #htmlInputElement\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.autofocus]=\"autofocus()\"\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)=\"onBlurEvent()\"\r\n (input)=\"onValueChanged()\"\r\n />\r\n}\r\n" }]
59
+ }], propDecorators: { rows: [{ type: i0.Input, args: [{ isSignal: true, alias: "rows", required: false }] }], maxlength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxlength", required: false }] }], minlength: [{ type: i0.Input, args: [{ isSignal: true, alias: "minlength", required: false }] }] } });
60
+
61
+ class TextBoxDateComponent extends HTMLTextBoxDirective {
62
+ max = input(...(ngDevMode ? [undefined, { debugName: "max" }] : []));
63
+ min = input(...(ngDevMode ? [undefined, { debugName: "min" }] : []));
64
+ pattern = input('dd/mm/yyyy', ...(ngDevMode ? [{ debugName: "pattern" }] : []));
65
+ separator = input('.', ...(ngDevMode ? [{ debugName: "separator" }] : []));
66
+ maxvalue = computed(() => this.max() ?? new Date('9999-12-31'), ...(ngDevMode ? [{ debugName: "maxvalue" }] : []));
67
+ minvalue = computed(() => this.min() ?? new Date('0001-01-01'), ...(ngDevMode ? [{ debugName: "minvalue" }] : []));
68
+ patternRegExp = computed(() => {
69
+ const pattern = this.pattern();
70
+ const separator = this.separator();
71
+ const dd = '(?:0[1-9]|[12][0-9]|3[01])';
72
+ const mm = '(?:0[1-9]|1[0-2])';
73
+ const yy = '\\d{2}';
74
+ const yyyy = '\\d{4}';
75
+ const keyvalue = {
76
+ 'dd/mm': `${dd}${separator}${mm}`,
77
+ 'dd/mm/yyyy': `${dd}${separator}${mm}${separator}${yyyy}`,
78
+ 'mm/dd': `${mm}${separator}${dd}`,
79
+ 'mm/dd/yyyy': `${mm}${separator}${dd}${separator}${yyyy}`,
80
+ 'mm/yy': `${mm}${separator}${yy}`,
81
+ 'mm/yyyy': `${mm}${separator}${yyyy}`,
82
+ "yyyy": `${yyyy}`,
83
+ 'yyyy/mm': `${yyyy}${separator}${mm}`,
84
+ 'yyyy/mm/dd': `${yyyy}${separator}${mm}${separator}${dd}`,
85
+ };
86
+ return new RegExp(`^${keyvalue[pattern]}$`);
87
+ }, ...(ngDevMode ? [{ debugName: "patternRegExp" }] : []));
88
+ picker = viewChild.required('htmlInputPicker', { read: (ElementRef) });
89
+ maskitoDateParams = computed(() => {
90
+ return {
91
+ max: this.maxvalue(),
92
+ min: this.minvalue(),
93
+ mode: this.pattern(),
94
+ separator: this.separator(),
95
+ };
96
+ }, ...(ngDevMode ? [{ debugName: "maskitoDateParams" }] : []));
97
+ constructor() {
98
+ super();
99
+ effect((onCleanup) => {
100
+ const el = this.el();
101
+ const params = this.maskitoDateParams();
102
+ const options = maskitoDateOptionsGenerator(params);
103
+ const instance = new Maskito(el.nativeElement, options);
104
+ onCleanup(() => instance.destroy());
105
+ });
106
+ }
107
+ /** @internal */
108
+ valueStringify(value) {
109
+ const params = this.maskitoDateParams();
110
+ if (typeof value === 'string') {
111
+ value = this.parseDate(value);
112
+ }
113
+ if (value === null) {
114
+ return '';
115
+ }
116
+ if (value instanceof Date) {
117
+ return maskitoStringifyDate(value, params);
118
+ }
119
+ return value;
120
+ }
121
+ /** @internal */
122
+ parseDate(value) {
123
+ const params = this.maskitoDateParams();
124
+ const pattern = this.patternRegExp();
125
+ const valueAsDate = pattern.test(value) ? maskitoParseDate(value, params) : new Date(value);
126
+ if (valueAsDate === null || Number.isNaN(valueAsDate.getTime())) {
127
+ return null;
128
+ }
129
+ return valueAsDate;
130
+ }
131
+ /** @internal */
132
+ valueUnsettled(value) {
133
+ return !this.patternRegExp().test(value);
134
+ }
135
+ /** @internal */
136
+ onValueChanged() {
137
+ const input = this.el();
138
+ const valueAsString = input.nativeElement.value;
139
+ if (this.valueUnsettled(valueAsString)) {
140
+ return this.valueAsString.update(() => input.nativeElement.value);
141
+ }
142
+ const value = maskitoParseDate(valueAsString, this.maskitoDateParams());
143
+ if (value === null) {
144
+ return this.writeValue(value);
145
+ }
146
+ this.writeValue(value);
147
+ }
148
+ /** @internal */
149
+ onFocusEvent() {
150
+ const value = maskitoParseDate(this.valueAsString(), this.maskitoDateParams());
151
+ if (Number.isNaN(value) && !this.readonly()) {
152
+ this.valueAsString.set('');
153
+ }
154
+ }
155
+ /** @internal */
156
+ onBlurEvent() {
157
+ this.markAsTouched();
158
+ const valueAsString = this.valueAsString();
159
+ if (this.valueUnsettled(valueAsString)) {
160
+ this.valueAsString.update(() => this.valueStringify(this.value()));
161
+ }
162
+ }
163
+ /** @internal */
164
+ onPickerShow(event) {
165
+ const { nativeElement } = this.picker();
166
+ event.preventDefault();
167
+ event.stopPropagation();
168
+ const value = this.value();
169
+ if (value instanceof Date || value === null) {
170
+ nativeElement.valueAsDate = value;
171
+ }
172
+ else {
173
+ nativeElement.valueAsDate = this.parseDate(this.valueAsString());
174
+ }
175
+ nativeElement.showPicker();
176
+ }
177
+ /** @internal */
178
+ onPickerChange() {
179
+ const { nativeElement } = this.picker();
180
+ const value = new Date(nativeElement.value);
181
+ this.writeValue(value);
182
+ }
183
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TextBoxDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
184
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: TextBoxDateComponent, isStandalone: true, selector: "lat-textbox[type=\"date\"]", inputs: { max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, pattern: { classPropertyName: "pattern", publicName: "pattern", isSignal: true, isRequired: false, transformFunction: null }, separator: { classPropertyName: "separator", publicName: "separator", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
185
+ {
186
+ provide: HTMLInputDirective,
187
+ useExisting: forwardRef(() => TextBoxDateComponent),
188
+ },
189
+ ], viewQueries: [{ propertyName: "picker", first: true, predicate: ["htmlInputPicker"], descendants: true, read: ElementRef, isSignal: true }], exportAs: ["latTextBox"], usesInheritance: true, ngImport: i0, template: "<input #htmlInputPicker type=\"date\" aria-hidden=\"true\" (change)=\"onPickerChange()\"/>\r\n\r\n<input\r\n #htmlInputElement\r\n type=\"text\"\r\n role=\"textbox\"\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.autofocus]=\"autofocus()\"\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)=\"onBlurEvent()\"\r\n (focus)=\"onFocusEvent()\"\r\n (input)=\"onValueChanged()\"\r\n/>\r\n\r\n@if (!readonly()) {\r\n <div>\r\n <lat-button\r\n size=\"inherit\"\r\n variant=\"inherit\"\r\n tabindex=\"-1\"\r\n [disabled]=\"disabled() || undefined\"\r\n (click)=\"onPickerShow($event)\"\r\n >\r\n <lat-icon name=\"calendar-week\" />\r\n </lat-button>\r\n </div>\r\n}\r\n\r\n\r\n", dependencies: [{ kind: "component", type: ButtonComponent, selector: "lat-button, a[latButton],button[latButton]", inputs: ["role", "size", "variant", "disabled", "tabindex"], exportAs: ["latButton"] }, { kind: "component", type: IconComponent, selector: "lat-icon", inputs: ["url", "name"], exportAs: ["latIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
190
+ }
191
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TextBoxDateComponent, decorators: [{
192
+ type: Component,
193
+ args: [{ imports: [ButtonComponent, IconComponent], exportAs: 'latTextBox', selector: 'lat-textbox[type="date"]', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
194
+ {
195
+ provide: HTMLInputDirective,
196
+ useExisting: forwardRef(() => TextBoxDateComponent),
197
+ },
198
+ ], template: "<input #htmlInputPicker type=\"date\" aria-hidden=\"true\" (change)=\"onPickerChange()\"/>\r\n\r\n<input\r\n #htmlInputElement\r\n type=\"text\"\r\n role=\"textbox\"\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.autofocus]=\"autofocus()\"\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)=\"onBlurEvent()\"\r\n (focus)=\"onFocusEvent()\"\r\n (input)=\"onValueChanged()\"\r\n/>\r\n\r\n@if (!readonly()) {\r\n <div>\r\n <lat-button\r\n size=\"inherit\"\r\n variant=\"inherit\"\r\n tabindex=\"-1\"\r\n [disabled]=\"disabled() || undefined\"\r\n (click)=\"onPickerShow($event)\"\r\n >\r\n <lat-icon name=\"calendar-week\" />\r\n </lat-button>\r\n </div>\r\n}\r\n\r\n\r\n" }]
199
+ }], ctorParameters: () => [], propDecorators: { max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], pattern: [{ type: i0.Input, args: [{ isSignal: true, alias: "pattern", required: false }] }], separator: [{ type: i0.Input, args: [{ isSignal: true, alias: "separator", required: false }] }], picker: [{ type: i0.ViewChild, args: ['htmlInputPicker', { ...{ read: (ElementRef) }, isSignal: true }] }] } });
200
+
201
+ class TextBoxNumberComponent extends HTMLTextBoxDirective {
202
+ max = input(undefined, { ...(ngDevMode ? { debugName: "max" } : {}), transform: numberAttribute });
203
+ min = input(undefined, { ...(ngDevMode ? { debugName: "min" } : {}), transform: numberAttribute });
204
+ step = input(undefined, { ...(ngDevMode ? { debugName: "step" } : {}), transform: numberAttribute });
205
+ decimals = input(2, ...(ngDevMode ? [{ debugName: "decimals" }] : []));
206
+ decimalSeparator = input(',', ...(ngDevMode ? [{ debugName: "decimalSeparator" }] : []));
207
+ decimalZeroPadding = input(false, ...(ngDevMode ? [{ debugName: "decimalZeroPadding" }] : []));
208
+ thousandSeparator = input('', ...(ngDevMode ? [{ debugName: "thousandSeparator" }] : []));
209
+ maxvalue = computed(() => this.parseNumber(this.max(), Number.MAX_SAFE_INTEGER), ...(ngDevMode ? [{ debugName: "maxvalue" }] : []));
210
+ minvalue = computed(() => this.parseNumber(this.min(), Number.MIN_SAFE_INTEGER), ...(ngDevMode ? [{ debugName: "minvalue" }] : []));
211
+ nowvalue = computed(() => this.value() || 0, ...(ngDevMode ? [{ debugName: "nowvalue" }] : []));
212
+ maxlength = computed(() => {
213
+ const { decimalSeparator, thousandSeparator } = this.maskitoNumberParams();
214
+ const decimals = this.decimals();
215
+ const mantissa = decimals && this.valueAsString().includes(decimalSeparator);
216
+ const precision = mantissa ? Math.min(decimals + 1, 20) : 0;
217
+ const thousand = thousandSeparator.repeat(5).length;
218
+ return 18 + precision + thousand;
219
+ }, ...(ngDevMode ? [{ debugName: "maxlength" }] : []));
220
+ maskitoNumberParams = computed(() => {
221
+ return {
222
+ max: this.maxvalue(),
223
+ min: this.minvalue(),
224
+ minusSign: '-',
225
+ maximumFractionDigits: this.decimals(),
226
+ minimumFractionDigits: this.decimalZeroPadding() ? this.decimals() : 0,
227
+ decimalSeparator: this.decimalSeparator(),
228
+ thousandSeparator: this.thousandSeparator(),
229
+ };
230
+ }, ...(ngDevMode ? [{ debugName: "maskitoNumberParams" }] : []));
231
+ constructor() {
232
+ super();
233
+ effect((onCleanup) => {
234
+ const el = this.el();
235
+ const params = this.maskitoNumberParams();
236
+ const { plugins, ...options } = maskitoNumberOptionsGenerator(params);
237
+ const instance = new Maskito(el.nativeElement, {
238
+ ...options,
239
+ plugins: [
240
+ ...plugins,
241
+ maskitoInitialCalibrationPlugin(maskitoNumberOptionsGenerator({
242
+ ...params,
243
+ min: Number.MIN_SAFE_INTEGER,
244
+ max: Number.MAX_SAFE_INTEGER,
245
+ })),
246
+ ],
247
+ });
248
+ onCleanup(() => instance.destroy());
249
+ });
250
+ }
251
+ /** @internal */
252
+ valueStringify(valueAsString) {
253
+ const value = this.parseNumber(valueAsString);
254
+ if (value === null) {
255
+ return '';
256
+ }
257
+ return maskitoStringifyNumber(value, this.maskitoNumberParams());
258
+ }
259
+ /** @internal */
260
+ valueSimplify(value) {
261
+ const decimalSeparator = new RegExp(this.decimalSeparator(), 'gi');
262
+ const thousandSeparator = new RegExp(this.thousandSeparator(), 'gi');
263
+ return value.replace(thousandSeparator, '').replace(decimalSeparator, '.');
264
+ }
265
+ /** @internal */
266
+ valueUnsettled(value) {
267
+ return !!(value === '-' || value.match(/^\s*([-+])?\d+\.$/) || value.match(/^\s*([-+])?\d+\.[0-9]*0$/) || value.match(/^\s*([-+])0+$/));
268
+ }
269
+ parseNumber(value, fallback = null) {
270
+ let valueAsNumber = null;
271
+ if (value === null || value === undefined) {
272
+ return fallback;
273
+ }
274
+ if (typeof value === 'number') {
275
+ valueAsNumber = value;
276
+ }
277
+ else if (typeof value === 'string') {
278
+ valueAsNumber = Number.parseFloat(value);
279
+ }
280
+ if (Number.isNaN(value)) {
281
+ return fallback;
282
+ }
283
+ return valueAsNumber;
284
+ }
285
+ /** @internal */
286
+ onValueChanged() {
287
+ const input = this.el();
288
+ const valueAsString = this.valueSimplify(input.nativeElement.value);
289
+ if (this.valueUnsettled(valueAsString)) {
290
+ return this.valueAsString.update(() => input.nativeElement.value);
291
+ }
292
+ const value = this.parseNumber(valueAsString);
293
+ if (value === null) {
294
+ return this.writeValue(value);
295
+ }
296
+ if (value < this.minvalue() || value > this.maxvalue()) {
297
+ return void 0;
298
+ }
299
+ this.writeValue(value);
300
+ }
301
+ /** @internal */
302
+ onValueSpined(mul) {
303
+ const value = (this.value() ?? 0) + (this.step() ?? 0) * mul;
304
+ if (value < this.minvalue() || value > this.maxvalue()) {
305
+ return void 0;
306
+ }
307
+ const factor = Math.pow(10, this.decimals());
308
+ this.writeValue(Math.round(value * factor) / factor);
309
+ }
310
+ /** @internal */
311
+ onFocusEvent() {
312
+ const value = maskitoParseNumber(this.valueAsString(), this.maskitoNumberParams());
313
+ if (Number.isNaN(value) && !this.readonly()) {
314
+ this.valueAsString.set('');
315
+ }
316
+ }
317
+ /** @internal */
318
+ onBlurEvent() {
319
+ this.markAsTouched();
320
+ const valueAsString = this.valueSimplify(this.valueAsString());
321
+ if (this.valueUnsettled(valueAsString)) {
322
+ this.valueAsString.update(() => this.valueStringify(this.value()));
323
+ }
324
+ }
325
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TextBoxNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
326
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", 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 }, decimalSeparator: { classPropertyName: "decimalSeparator", publicName: "decimalSeparator", isSignal: true, isRequired: false, transformFunction: null }, decimalZeroPadding: { classPropertyName: "decimalZeroPadding", publicName: "decimalZeroPadding", isSignal: true, isRequired: false, transformFunction: null }, thousandSeparator: { classPropertyName: "thousandSeparator", publicName: "thousandSeparator", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
327
+ {
328
+ provide: HTMLInputDirective,
329
+ useExisting: forwardRef(() => TextBoxNumberComponent),
330
+ },
331
+ ], exportAs: ["latTextBox"], usesInheritance: true, ngImport: i0, template: "<input\r\n #htmlInputElement\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.autofocus]=\"autofocus()\"\r\n [attr.maxlength]=\"maxlength()\"\r\n [attr.placeholder]=\"placeholder()\"\r\n [attr.aria-invalid]=\"invalid() || undefined\"\r\n [attr.aria-valuemax]=\"maxvalue()\"\r\n [attr.aria-valuemin]=\"minvalue()\"\r\n [attr.aria-valuenow]=\"nowvalue()\"\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)=\"onBlurEvent()\"\r\n (focus)=\"onFocusEvent()\"\r\n (input)=\"onValueChanged()\"\r\n/>\r\n\r\n@if (step() && !readonly()) {\r\n <div>\r\n <lat-button\r\n size=\"inherit\"\r\n variant=\"inherit\"\r\n tabindex=\"-1\"\r\n [disabled]=\"disabled() || undefined\"\r\n (click)=\"onValueSpined(1)\"\r\n >\r\n <lat-icon name=\"chevron-up\" />\r\n </lat-button>\r\n <lat-button\r\n size=\"inherit\"\r\n variant=\"inherit\"\r\n tabindex=\"-1\"\r\n [disabled]=\"disabled() || undefined\"\r\n (click)=\"onValueSpined(-1)\"\r\n >\r\n <lat-icon name=\"chevron-down\" />\r\n </lat-button>\r\n </div>\r\n}\r\n", dependencies: [{ kind: "component", type: ButtonComponent, selector: "lat-button, a[latButton],button[latButton]", inputs: ["role", "size", "variant", "disabled", "tabindex"], exportAs: ["latButton"] }, { kind: "component", type: IconComponent, selector: "lat-icon", inputs: ["url", "name"], exportAs: ["latIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
332
+ }
333
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TextBoxNumberComponent, decorators: [{
334
+ type: Component,
335
+ args: [{ imports: [ButtonComponent, IconComponent], exportAs: 'latTextBox', selector: 'lat-textbox[type="number"]', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
336
+ {
337
+ provide: HTMLInputDirective,
338
+ useExisting: forwardRef(() => TextBoxNumberComponent),
339
+ },
340
+ ], template: "<input\r\n #htmlInputElement\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.autofocus]=\"autofocus()\"\r\n [attr.maxlength]=\"maxlength()\"\r\n [attr.placeholder]=\"placeholder()\"\r\n [attr.aria-invalid]=\"invalid() || undefined\"\r\n [attr.aria-valuemax]=\"maxvalue()\"\r\n [attr.aria-valuemin]=\"minvalue()\"\r\n [attr.aria-valuenow]=\"nowvalue()\"\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)=\"onBlurEvent()\"\r\n (focus)=\"onFocusEvent()\"\r\n (input)=\"onValueChanged()\"\r\n/>\r\n\r\n@if (step() && !readonly()) {\r\n <div>\r\n <lat-button\r\n size=\"inherit\"\r\n variant=\"inherit\"\r\n tabindex=\"-1\"\r\n [disabled]=\"disabled() || undefined\"\r\n (click)=\"onValueSpined(1)\"\r\n >\r\n <lat-icon name=\"chevron-up\" />\r\n </lat-button>\r\n <lat-button\r\n size=\"inherit\"\r\n variant=\"inherit\"\r\n tabindex=\"-1\"\r\n [disabled]=\"disabled() || undefined\"\r\n (click)=\"onValueSpined(-1)\"\r\n >\r\n <lat-icon name=\"chevron-down\" />\r\n </lat-button>\r\n </div>\r\n}\r\n" }]
341
+ }], ctorParameters: () => [], propDecorators: { max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], decimals: [{ type: i0.Input, args: [{ isSignal: true, alias: "decimals", required: false }] }], decimalSeparator: [{ type: i0.Input, args: [{ isSignal: true, alias: "decimalSeparator", required: false }] }], decimalZeroPadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "decimalZeroPadding", required: false }] }], thousandSeparator: [{ type: i0.Input, args: [{ isSignal: true, alias: "thousandSeparator", required: false }] }] } });
342
+
343
+ /**
344
+ * Generated bundle index. Do not edit.
345
+ */
346
+
347
+ export { HTMLTextBoxDirective, TextBoxComponent, TextBoxDateComponent, TextBoxNumberComponent };
348
+ //# sourceMappingURL=latitude-ui-widgets-textbox.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latitude-ui-widgets-textbox.mjs","sources":["../../../../packages/widgets/textbox/lib/textbox.directive.ts","../../../../packages/widgets/textbox/lib/textbox.component.ts","../../../../packages/widgets/textbox/lib/textbox.component.html","../../../../packages/widgets/textbox/lib/textbox-date.component.ts","../../../../packages/widgets/textbox/lib/textbox-date.component.html","../../../../packages/widgets/textbox/lib/textbox-number.component.ts","../../../../packages/widgets/textbox/lib/textbox-number.component.html","../../../../packages/widgets/textbox/latitude-ui-widgets-textbox.ts"],"sourcesContent":["import { Directive, ElementRef, viewChild } from '@angular/core';\r\nimport { HTMLInputDirective } from '@latitude-ui/widgets/input';\r\n\r\n@Directive()\r\nexport class HTMLTextBoxDirective<T> extends HTMLInputDirective<T> {\r\n readonly el = viewChild.required('htmlInputElement', { read: ElementRef<HTMLInputElement> });\r\n\r\n blur() {\r\n this.el().nativeElement.blur();\r\n }\r\n\r\n focus() {\r\n this.el().nativeElement.focus();\r\n }\r\n\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n forwardRef,\r\n input,\r\n numberAttribute,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\n\r\nimport { HTMLInputDirective } from '@latitude-ui/widgets/input';\r\n\r\nimport { HTMLTextBoxDirective } from './textbox.directive';\r\n\r\n\r\n@Component({\r\n exportAs: 'latTextBox',\r\n selector: 'lat-textbox:not([type]), lat-textbox[type=\"text\"]',\r\n templateUrl: './textbox.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: HTMLInputDirective,\r\n useExisting: forwardRef(() => TextBoxComponent),\r\n },\r\n ],\r\n host: {\r\n // '[style.height]': 'textarea() ? \"auto\" : undefined'\r\n }\r\n})\r\nexport class TextBoxComponent extends HTMLTextBoxDirective<string> {\r\n readonly rows = input<number, unknown>(undefined, { transform: numberAttribute });\r\n readonly maxlength = input<number, unknown>(undefined, { transform: numberAttribute });\r\n readonly minlength = input<number, unknown>(undefined, { transform: numberAttribute });\r\n\r\n readonly textarea = computed(() => {\r\n const rows = this.rows();\r\n\r\n return rows ? rows >= 2 : false;\r\n });\r\n\r\n /** @internal */\r\n onBlurEvent(): void {\r\n this.markAsTouched();\r\n }\r\n\r\n /** @internal */\r\n onValueChanged(): void {\r\n const { nativeElement } = this.el();\r\n\r\n this.writeValue(nativeElement.value);\r\n }\r\n}\r\n","@if(textarea()) {\r\n <textarea\r\n #htmlInputElement\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.autofocus]=\"autofocus()\"\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 [style.height]=\"'auto'\"\r\n (blur)=\"onBlurEvent()\"\r\n (input)=\"onValueChanged()\"\r\n ></textarea>\r\n} @else {\r\n <input\r\n #htmlInputElement\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.autofocus]=\"autofocus()\"\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)=\"onBlurEvent()\"\r\n (input)=\"onValueChanged()\"\r\n />\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n ElementRef,\r\n forwardRef,\r\n input,\r\n viewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\n\r\nimport { maskitoDateOptionsGenerator, maskitoParseDate, maskitoStringifyDate } from '@maskito/kit';\r\nimport { Maskito } from '@maskito/core';\r\n\r\nimport { HTMLInputDirective } from '@latitude-ui/widgets/input';\r\nimport { ButtonComponent } from '@latitude-ui/widgets/button';\r\nimport { IconComponent } from '@latitude-ui/widgets/icons';\r\n\r\nimport { HTMLTextBoxDirective } from './textbox.directive';\r\n\r\nexport type DatePattern =\r\n | 'dd/mm'\r\n | 'dd/mm/yyyy'\r\n | 'mm/dd'\r\n | 'mm/dd/yyyy'\r\n | 'mm/yy'\r\n | 'mm/yyyy'\r\n | 'yyyy'\r\n | 'yyyy/mm'\r\n | 'yyyy/mm/dd';\r\n\r\n@Component({\r\n imports: [ButtonComponent, IconComponent],\r\n exportAs: 'latTextBox',\r\n selector: 'lat-textbox[type=\"date\"]',\r\n templateUrl: './textbox-date.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: HTMLInputDirective,\r\n useExisting: forwardRef(() => TextBoxDateComponent),\r\n },\r\n ],\r\n})\r\nexport class TextBoxDateComponent extends HTMLTextBoxDirective<Date> {\r\n readonly max = input<Date>();\r\n readonly min = input<Date>();\r\n readonly pattern = input<DatePattern>('dd/mm/yyyy');\r\n readonly separator = input<string>('.');\r\n\r\n readonly maxvalue = computed(() => this.max() ?? new Date('9999-12-31'));\r\n readonly minvalue = computed(() => this.min() ?? new Date('0001-01-01'));\r\n\r\n readonly patternRegExp = computed(() => {\r\n const pattern = this.pattern();\r\n const separator = this.separator();\r\n\r\n const dd = '(?:0[1-9]|[12][0-9]|3[01])';\r\n const mm = '(?:0[1-9]|1[0-2])';\r\n const yy = '\\\\d{2}';\r\n const yyyy = '\\\\d{4}';\r\n\r\n const keyvalue = {\r\n 'dd/mm': `${dd}${separator}${mm}`,\r\n 'dd/mm/yyyy': `${dd}${separator}${mm}${separator}${yyyy}`,\r\n 'mm/dd': `${mm}${separator}${dd}`,\r\n 'mm/dd/yyyy': `${mm}${separator}${dd}${separator}${yyyy}`,\r\n 'mm/yy': `${mm}${separator}${yy}`,\r\n 'mm/yyyy': `${mm}${separator}${yyyy}`,\r\n \"yyyy\": `${yyyy}`,\r\n 'yyyy/mm': `${yyyy}${separator}${mm}`,\r\n 'yyyy/mm/dd': `${yyyy}${separator}${mm}${separator}${dd}`,\r\n } as const;\r\n\r\n return new RegExp(`^${keyvalue[pattern]}$`);\r\n });\r\n\r\n readonly picker = viewChild.required('htmlInputPicker', { read: ElementRef<HTMLInputElement> });\r\n\r\n readonly maskitoDateParams = computed(() => {\r\n return {\r\n max: this.maxvalue(),\r\n min: this.minvalue(),\r\n mode: this.pattern(),\r\n separator: this.separator(),\r\n };\r\n });\r\n\r\n constructor() {\r\n super();\r\n\r\n effect((onCleanup) => {\r\n const el = this.el();\r\n const params = this.maskitoDateParams();\r\n\r\n const options = maskitoDateOptionsGenerator(params);\r\n\r\n const instance = new Maskito(el.nativeElement, options);\r\n\r\n onCleanup(() => instance.destroy());\r\n });\r\n }\r\n\r\n /** @internal */\r\n override valueStringify(value: unknown): string {\r\n const params = this.maskitoDateParams();\r\n\r\n if (typeof value === 'string') {\r\n value = this.parseDate(value);\r\n }\r\n\r\n if (value === null) {\r\n return '';\r\n }\r\n\r\n if (value instanceof Date) {\r\n return maskitoStringifyDate(value, params);\r\n }\r\n\r\n return value as string;\r\n }\r\n\r\n /** @internal */\r\n parseDate(value: string): Date | null {\r\n const params = this.maskitoDateParams();\r\n const pattern = this.patternRegExp();\r\n\r\n const valueAsDate = pattern.test(value) ? maskitoParseDate(value, params) : new Date(value);\r\n\r\n if (valueAsDate === null || Number.isNaN(valueAsDate.getTime())) {\r\n return null;\r\n }\r\n\r\n return valueAsDate;\r\n }\r\n\r\n /** @internal */\r\n valueUnsettled(value: string): boolean {\r\n return !this.patternRegExp().test(value);\r\n }\r\n\r\n /** @internal */\r\n onValueChanged(): void {\r\n const input = this.el();\r\n\r\n const valueAsString = input.nativeElement.value;\r\n\r\n if (this.valueUnsettled(valueAsString)) {\r\n return this.valueAsString.update(() => input.nativeElement.value);\r\n }\r\n\r\n const value = maskitoParseDate(valueAsString, this.maskitoDateParams());\r\n\r\n if (value === null) {\r\n return this.writeValue(value);\r\n }\r\n\r\n this.writeValue(value);\r\n }\r\n\r\n /** @internal */\r\n onFocusEvent(): void {\r\n const value = maskitoParseDate(this.valueAsString(), this.maskitoDateParams());\r\n\r\n if (Number.isNaN(value) && !this.readonly()) {\r\n this.valueAsString.set('');\r\n }\r\n }\r\n\r\n /** @internal */\r\n onBlurEvent(): void {\r\n this.markAsTouched();\r\n\r\n const valueAsString = this.valueAsString();\r\n if (this.valueUnsettled(valueAsString)) {\r\n this.valueAsString.update(() => this.valueStringify(this.value()));\r\n }\r\n }\r\n\r\n /** @internal */\r\n onPickerShow(event: PointerEvent) {\r\n const { nativeElement } = this.picker();\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n\r\n const value = this.value();\r\n if (value instanceof Date || value === null) {\r\n nativeElement.valueAsDate = value;\r\n } else {\r\n nativeElement.valueAsDate = this.parseDate(this.valueAsString());\r\n }\r\n\r\n nativeElement.showPicker();\r\n }\r\n\r\n /** @internal */\r\n onPickerChange() {\r\n const { nativeElement } = this.picker();\r\n\r\n const value = new Date(nativeElement.value);\r\n\r\n this.writeValue(value);\r\n }\r\n}\r\n","<input #htmlInputPicker type=\"date\" aria-hidden=\"true\" (change)=\"onPickerChange()\"/>\r\n\r\n<input\r\n #htmlInputElement\r\n type=\"text\"\r\n role=\"textbox\"\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.autofocus]=\"autofocus()\"\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)=\"onBlurEvent()\"\r\n (focus)=\"onFocusEvent()\"\r\n (input)=\"onValueChanged()\"\r\n/>\r\n\r\n@if (!readonly()) {\r\n <div>\r\n <lat-button\r\n size=\"inherit\"\r\n variant=\"inherit\"\r\n tabindex=\"-1\"\r\n [disabled]=\"disabled() || undefined\"\r\n (click)=\"onPickerShow($event)\"\r\n >\r\n <lat-icon name=\"calendar-week\" />\r\n </lat-button>\r\n </div>\r\n}\r\n\r\n\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n forwardRef,\r\n input,\r\n numberAttribute,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\n\r\nimport { Maskito, maskitoInitialCalibrationPlugin } from '@maskito/core';\r\nimport { maskitoNumberOptionsGenerator, maskitoParseNumber, maskitoStringifyNumber } from '@maskito/kit';\r\n\r\nimport { ButtonComponent } from '@latitude-ui/widgets/button';\r\nimport { IconComponent } from '@latitude-ui/widgets/icons';\r\nimport { HTMLInputDirective } from '@latitude-ui/widgets/input';\r\n\r\nimport { HTMLTextBoxDirective } from './textbox.directive';\r\n\r\n@Component({\r\n imports: [ButtonComponent, IconComponent],\r\n exportAs: 'latTextBox',\r\n selector: 'lat-textbox[type=\"number\"]',\r\n templateUrl: './textbox-number.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: HTMLInputDirective,\r\n useExisting: forwardRef(() => TextBoxNumberComponent),\r\n },\r\n ],\r\n})\r\nexport class TextBoxNumberComponent extends HTMLTextBoxDirective<number> {\r\n readonly max = input<number, unknown>(undefined, { transform: numberAttribute });\r\n readonly min = input<number, unknown>(undefined, { transform: numberAttribute });\r\n readonly step = input<number, unknown>(undefined, { transform: numberAttribute });\r\n readonly decimals = input<number>(2);\r\n readonly decimalSeparator = input<',' | '.'>(',');\r\n readonly decimalZeroPadding = input<boolean>(false);\r\n readonly thousandSeparator = input<string>('');\r\n\r\n readonly maxvalue = computed(() => this.parseNumber(this.max(), Number.MAX_SAFE_INTEGER));\r\n readonly minvalue = computed(() => this.parseNumber(this.min(), Number.MIN_SAFE_INTEGER));\r\n readonly nowvalue = computed(() => this.value() || 0);\r\n\r\n readonly maxlength = computed(() => {\r\n const { decimalSeparator, thousandSeparator } = this.maskitoNumberParams();\r\n\r\n const decimals = this.decimals();\r\n\r\n const mantissa = decimals && this.valueAsString().includes(decimalSeparator);\r\n const precision = mantissa ? Math.min(decimals + 1, 20) : 0;\r\n const thousand = thousandSeparator.repeat(5).length;\r\n\r\n return 18 + precision + thousand;\r\n });\r\n\r\n readonly maskitoNumberParams = computed(() => {\r\n return {\r\n max: this.maxvalue(),\r\n min: this.minvalue(),\r\n minusSign: '-',\r\n maximumFractionDigits: this.decimals(),\r\n minimumFractionDigits: this.decimalZeroPadding() ? this.decimals() : 0,\r\n decimalSeparator: this.decimalSeparator(),\r\n thousandSeparator: this.thousandSeparator(),\r\n };\r\n });\r\n\r\n constructor() {\r\n super();\r\n\r\n effect((onCleanup) => {\r\n const el = this.el();\r\n const params = this.maskitoNumberParams();\r\n\r\n const { plugins, ...options } = maskitoNumberOptionsGenerator(params);\r\n\r\n const instance = new Maskito(el.nativeElement, {\r\n ...options,\r\n plugins: [\r\n ...plugins,\r\n maskitoInitialCalibrationPlugin(\r\n maskitoNumberOptionsGenerator({\r\n ...params,\r\n min: Number.MIN_SAFE_INTEGER,\r\n max: Number.MAX_SAFE_INTEGER,\r\n })\r\n ),\r\n ],\r\n });\r\n\r\n onCleanup(() => instance.destroy());\r\n });\r\n }\r\n\r\n /** @internal */\r\n override valueStringify(valueAsString: unknown): string {\r\n const value = this.parseNumber(valueAsString);\r\n if (value === null) {\r\n return '';\r\n }\r\n\r\n return maskitoStringifyNumber(value, this.maskitoNumberParams());\r\n }\r\n\r\n /** @internal */\r\n valueSimplify(value: string): string {\r\n const decimalSeparator = new RegExp(this.decimalSeparator(), 'gi');\r\n const thousandSeparator = new RegExp(this.thousandSeparator(), 'gi');\r\n\r\n return value.replace(thousandSeparator, '').replace(decimalSeparator, '.');\r\n }\r\n\r\n /** @internal */\r\n valueUnsettled(value: string): boolean {\r\n return !!(value === '-' || value.match(/^\\s*([-+])?\\d+\\.$/) || value.match(/^\\s*([-+])?\\d+\\.[0-9]*0$/) || value.match(/^\\s*([-+])0+$/));\r\n }\r\n\r\n /** @internal */\r\n parseNumber(value: unknown): number | null;\r\n parseNumber<const T extends number | null>(value: unknown, fallback: T): number | T;\r\n parseNumber<const T extends number | null>(value: unknown, fallback: T | null = null): number | null | T {\r\n let valueAsNumber: number | null = null;\r\n\r\n if(value === null || value === undefined) {\r\n return fallback as T;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n valueAsNumber = value;\r\n } else if (typeof value === 'string') {\r\n valueAsNumber = Number.parseFloat(value);\r\n }\r\n\r\n if (Number.isNaN(value)) {\r\n return fallback as T;\r\n }\r\n\r\n return valueAsNumber;\r\n }\r\n\r\n /** @internal */\r\n onValueChanged(): void {\r\n const input = this.el();\r\n\r\n const valueAsString = this.valueSimplify(input.nativeElement.value);\r\n\r\n\r\n if (this.valueUnsettled(valueAsString)) {\r\n return this.valueAsString.update(() => input.nativeElement.value);\r\n }\r\n\r\n const value = this.parseNumber(valueAsString);\r\n\r\n if (value === null) {\r\n return this.writeValue(value);\r\n }\r\n\r\n if (value < this.minvalue() || value > this.maxvalue()) {\r\n return void 0;\r\n }\r\n\r\n this.writeValue(value);\r\n }\r\n\r\n /** @internal */\r\n onValueSpined(mul: 1 | -1): void {\r\n const value = (this.value() ?? 0) + (this.step() ?? 0) * mul;\r\n\r\n if (value < this.minvalue() || value > this.maxvalue()) {\r\n return void 0;\r\n }\r\n\r\n const factor = Math.pow(10, this.decimals());\r\n\r\n this.writeValue(Math.round(value * factor) / factor);\r\n }\r\n\r\n /** @internal */\r\n onFocusEvent(): void {\r\n const value = maskitoParseNumber(this.valueAsString(), this.maskitoNumberParams());\r\n\r\n if (Number.isNaN(value) && !this.readonly()) {\r\n this.valueAsString.set('');\r\n }\r\n }\r\n\r\n /** @internal */\r\n onBlurEvent(): void {\r\n this.markAsTouched();\r\n\r\n const valueAsString = this.valueSimplify(this.valueAsString());\r\n\r\n if (this.valueUnsettled(valueAsString)) {\r\n this.valueAsString.update(() => this.valueStringify(this.value()));\r\n }\r\n }\r\n}\r\n","<input\r\n #htmlInputElement\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.autofocus]=\"autofocus()\"\r\n [attr.maxlength]=\"maxlength()\"\r\n [attr.placeholder]=\"placeholder()\"\r\n [attr.aria-invalid]=\"invalid() || undefined\"\r\n [attr.aria-valuemax]=\"maxvalue()\"\r\n [attr.aria-valuemin]=\"minvalue()\"\r\n [attr.aria-valuenow]=\"nowvalue()\"\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)=\"onBlurEvent()\"\r\n (focus)=\"onFocusEvent()\"\r\n (input)=\"onValueChanged()\"\r\n/>\r\n\r\n@if (step() && !readonly()) {\r\n <div>\r\n <lat-button\r\n size=\"inherit\"\r\n variant=\"inherit\"\r\n tabindex=\"-1\"\r\n [disabled]=\"disabled() || undefined\"\r\n (click)=\"onValueSpined(1)\"\r\n >\r\n <lat-icon name=\"chevron-up\" />\r\n </lat-button>\r\n <lat-button\r\n size=\"inherit\"\r\n variant=\"inherit\"\r\n tabindex=\"-1\"\r\n [disabled]=\"disabled() || undefined\"\r\n (click)=\"onValueSpined(-1)\"\r\n >\r\n <lat-icon name=\"chevron-down\" />\r\n </lat-button>\r\n </div>\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}