@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.
- package/README.md +7 -7
- package/button/README.md +3 -3
- package/checkbox/README.md +3 -3
- package/core/README.md +3 -0
- package/fesm2022/latitude-ui-widgets-button.mjs +86 -0
- package/fesm2022/latitude-ui-widgets-button.mjs.map +1 -0
- package/fesm2022/latitude-ui-widgets-checkbox.mjs +40 -0
- package/fesm2022/latitude-ui-widgets-checkbox.mjs.map +1 -0
- package/fesm2022/latitude-ui-widgets-core.mjs +22 -0
- package/fesm2022/latitude-ui-widgets-core.mjs.map +1 -0
- package/fesm2022/latitude-ui-widgets-icons.mjs +40 -0
- package/fesm2022/latitude-ui-widgets-icons.mjs.map +1 -0
- package/fesm2022/latitude-ui-widgets-input.mjs +217 -0
- package/fesm2022/latitude-ui-widgets-input.mjs.map +1 -0
- package/fesm2022/latitude-ui-widgets-listbox.mjs +43 -0
- package/fesm2022/latitude-ui-widgets-listbox.mjs.map +1 -0
- package/fesm2022/latitude-ui-widgets-scrollable.mjs +102 -0
- package/fesm2022/latitude-ui-widgets-scrollable.mjs.map +1 -0
- package/fesm2022/{latitude-widgets-select.mjs → latitude-ui-widgets-select.mjs} +56 -61
- package/fesm2022/latitude-ui-widgets-select.mjs.map +1 -0
- package/fesm2022/latitude-ui-widgets-switch.mjs +37 -0
- package/fesm2022/latitude-ui-widgets-switch.mjs.map +1 -0
- package/fesm2022/latitude-ui-widgets-tabs.mjs +83 -0
- package/fesm2022/latitude-ui-widgets-tabs.mjs.map +1 -0
- package/fesm2022/latitude-ui-widgets-textbox.mjs +348 -0
- package/fesm2022/latitude-ui-widgets-textbox.mjs.map +1 -0
- package/fesm2022/latitude-ui-widgets-toolbar.mjs +66 -0
- package/fesm2022/latitude-ui-widgets-toolbar.mjs.map +1 -0
- package/fesm2022/{latitude-widgets.mjs → latitude-ui-widgets.mjs} +1 -1
- package/fesm2022/latitude-ui-widgets.mjs.map +1 -0
- package/icons/README.md +3 -0
- package/input/README.md +3 -3
- package/listbox/README.md +3 -3
- package/package.json +42 -33
- package/scrollable/README.md +3 -0
- package/select/README.md +3 -3
- package/switch/README.md +3 -3
- package/tabs/README.md +3 -0
- package/textbox/README.md +3 -3
- package/toolbar/README.md +3 -0
- package/types/latitude-ui-widgets-button.d.ts +30 -0
- package/types/{latitude-widgets-checkbox.d.ts → latitude-ui-widgets-checkbox.d.ts} +2 -2
- package/types/latitude-ui-widgets-core.d.ts +12 -0
- package/types/latitude-ui-widgets-icons.d.ts +15 -0
- package/types/{latitude-widgets-input.d.ts → latitude-ui-widgets-input.d.ts} +44 -20
- package/types/latitude-ui-widgets-listbox.d.ts +20 -0
- package/types/latitude-ui-widgets-scrollable.d.ts +24 -0
- package/types/{latitude-widgets-select.d.ts → latitude-ui-widgets-select.d.ts} +2 -2
- package/types/{latitude-widgets-switch.d.ts → latitude-ui-widgets-switch.d.ts} +2 -2
- package/types/latitude-ui-widgets-tabs.d.ts +46 -0
- package/types/latitude-ui-widgets-textbox.d.ts +107 -0
- package/types/latitude-ui-widgets-toolbar.d.ts +24 -0
- package/fesm2022/latitude-widgets-button.mjs +0 -96
- package/fesm2022/latitude-widgets-button.mjs.map +0 -1
- package/fesm2022/latitude-widgets-checkbox.mjs +0 -40
- package/fesm2022/latitude-widgets-checkbox.mjs.map +0 -1
- package/fesm2022/latitude-widgets-icon.mjs +0 -114
- package/fesm2022/latitude-widgets-icon.mjs.map +0 -1
- package/fesm2022/latitude-widgets-input.mjs +0 -179
- package/fesm2022/latitude-widgets-input.mjs.map +0 -1
- package/fesm2022/latitude-widgets-listbox.mjs +0 -46
- package/fesm2022/latitude-widgets-listbox.mjs.map +0 -1
- package/fesm2022/latitude-widgets-select.mjs.map +0 -1
- package/fesm2022/latitude-widgets-switch.mjs +0 -37
- package/fesm2022/latitude-widgets-switch.mjs.map +0 -1
- package/fesm2022/latitude-widgets-textbox-date.mjs +0 -30
- package/fesm2022/latitude-widgets-textbox-date.mjs.map +0 -1
- package/fesm2022/latitude-widgets-textbox-number.mjs +0 -160
- package/fesm2022/latitude-widgets-textbox-number.mjs.map +0 -1
- package/fesm2022/latitude-widgets-textbox.mjs +0 -62
- package/fesm2022/latitude-widgets-textbox.mjs.map +0 -1
- package/fesm2022/latitude-widgets.mjs.map +0 -1
- package/icon/README.md +0 -3
- package/textbox-date/README.md +0 -3
- package/textbox-number/README.md +0 -3
- package/types/latitude-widgets-button.d.ts +0 -29
- package/types/latitude-widgets-icon.d.ts +0 -44
- package/types/latitude-widgets-listbox.d.ts +0 -21
- package/types/latitude-widgets-textbox-date.d.ts +0 -9
- package/types/latitude-widgets-textbox-number.d.ts +0 -47
- package/types/latitude-widgets-textbox.d.ts +0 -26
- /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":"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"}
|
|
@@ -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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"}
|