@wirekyt/angular 0.0.11 → 0.0.12

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.
@@ -0,0 +1,532 @@
1
+ import * as dateInput from '@wirekyt/dom/machines/date-input';
2
+ export { anatomy as dateInputAnatomy } from '@wirekyt/dom/machines/date-input';
3
+ import * as i0 from '@angular/core';
4
+ import { InjectionToken, inject, input, model, booleanAttribute, output, signal, effect, DestroyRef, Renderer2, ElementRef, forwardRef, Directive, computed, TemplateRef, ViewContainerRef } from '@angular/core';
5
+ import { injectLocale, injectEnvironment, createId, useMachine, createCvaController, bindProps } from '@wirekyt/angular';
6
+ import { injectFieldContextOptional } from '@wirekyt/angular/field';
7
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
8
+
9
+ const DATE_INPUT_CONTEXT = new InjectionToken("WIREKYT.DATE_INPUT_CONTEXT");
10
+ function injectDateInputContext() {
11
+ return inject(DATE_INPUT_CONTEXT);
12
+ }
13
+
14
+ function useDateInput(options) {
15
+ const locale = injectLocale();
16
+ const environment = injectEnvironment();
17
+ const field = injectFieldContextOptional();
18
+ const fallbackId = createId();
19
+ return useMachine({
20
+ machine: dateInput.machine,
21
+ context: () => {
22
+ const props = options.context();
23
+ const merged = {
24
+ ...props,
25
+ dir: locale.dir,
26
+ getRootNode: environment.getRootNode,
27
+ id: props.id ?? fallbackId,
28
+ locale: props.locale ?? locale.locale,
29
+ };
30
+ if (field) {
31
+ merged.ids = {
32
+ label: () => field.ids.label,
33
+ hiddenInput: () => field.ids.control,
34
+ ...props.ids,
35
+ };
36
+ merged.disabled = Boolean(props.disabled) || field.disabled() || undefined;
37
+ merged.readOnly = Boolean(props.readOnly) || field.readOnly() || undefined;
38
+ merged.required = Boolean(props.required) || field.required() || undefined;
39
+ merged.invalid = Boolean(props.invalid) || field.invalid() || undefined;
40
+ }
41
+ return merged;
42
+ },
43
+ connect: (service, normalize) => dateInput.connect(service, normalize),
44
+ });
45
+ }
46
+
47
+ class DateInputRoot {
48
+ id = input(undefined, /* @ts-ignore */
49
+ ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
50
+ ids = input(undefined, /* @ts-ignore */
51
+ ...(ngDevMode ? [{ debugName: "ids" }] : /* istanbul ignore next */ []));
52
+ value = model(undefined, /* @ts-ignore */
53
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
54
+ defaultValue = input(undefined, /* @ts-ignore */
55
+ ...(ngDevMode ? [{ debugName: "defaultValue" }] : /* istanbul ignore next */ []));
56
+ placeholderValue = model(undefined, /* @ts-ignore */
57
+ ...(ngDevMode ? [{ debugName: "placeholderValue" }] : /* istanbul ignore next */ []));
58
+ defaultPlaceholderValue = input(undefined, /* @ts-ignore */
59
+ ...(ngDevMode ? [{ debugName: "defaultPlaceholderValue" }] : /* istanbul ignore next */ []));
60
+ min = input(undefined, /* @ts-ignore */
61
+ ...(ngDevMode ? [{ debugName: "min" }] : /* istanbul ignore next */ []));
62
+ max = input(undefined, /* @ts-ignore */
63
+ ...(ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []));
64
+ selectionMode = input(undefined, /* @ts-ignore */
65
+ ...(ngDevMode ? [{ debugName: "selectionMode" }] : /* istanbul ignore next */ []));
66
+ granularity = input(undefined, /* @ts-ignore */
67
+ ...(ngDevMode ? [{ debugName: "granularity" }] : /* istanbul ignore next */ []));
68
+ hourCycle = input(undefined, /* @ts-ignore */
69
+ ...(ngDevMode ? [{ debugName: "hourCycle" }] : /* istanbul ignore next */ []));
70
+ hideTimeZone = input(false, { ...(ngDevMode ? { debugName: "hideTimeZone" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
71
+ locale = input(undefined, /* @ts-ignore */
72
+ ...(ngDevMode ? [{ debugName: "locale" }] : /* istanbul ignore next */ []));
73
+ timeZone = input(undefined, /* @ts-ignore */
74
+ ...(ngDevMode ? [{ debugName: "timeZone" }] : /* istanbul ignore next */ []));
75
+ translations = input(undefined, /* @ts-ignore */
76
+ ...(ngDevMode ? [{ debugName: "translations" }] : /* istanbul ignore next */ []));
77
+ formatter = input(undefined, /* @ts-ignore */
78
+ ...(ngDevMode ? [{ debugName: "formatter" }] : /* istanbul ignore next */ []));
79
+ allSegments = input(undefined, /* @ts-ignore */
80
+ ...(ngDevMode ? [{ debugName: "allSegments" }] : /* istanbul ignore next */ []));
81
+ format = input(undefined, /* @ts-ignore */
82
+ ...(ngDevMode ? [{ debugName: "format" }] : /* istanbul ignore next */ []));
83
+ createCalendar = input(undefined, /* @ts-ignore */
84
+ ...(ngDevMode ? [{ debugName: "createCalendar" }] : /* istanbul ignore next */ []));
85
+ isDateUnavailable = input(undefined, /* @ts-ignore */
86
+ ...(ngDevMode ? [{ debugName: "isDateUnavailable" }] : /* istanbul ignore next */ []));
87
+ shouldForceLeadingZeros = input(false, { ...(ngDevMode ? { debugName: "shouldForceLeadingZeros" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
88
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
89
+ readOnly = input(false, { ...(ngDevMode ? { debugName: "readOnly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
90
+ required = input(false, { ...(ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
91
+ invalid = input(false, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
92
+ name = input(undefined, /* @ts-ignore */
93
+ ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
94
+ form = input(undefined, /* @ts-ignore */
95
+ ...(ngDevMode ? [{ debugName: "form" }] : /* istanbul ignore next */ []));
96
+ focusChange = output();
97
+ placeholderChange = output();
98
+ valueDetailsChange = output();
99
+ disabledFromForm = signal(false, /* @ts-ignore */
100
+ ...(ngDevMode ? [{ debugName: "disabledFromForm" }] : /* istanbul ignore next */ []));
101
+ pendingInternalWrites = 0;
102
+ hasExternalBinding = false;
103
+ hasReceivedFormWrite = false;
104
+ cva = createCvaController({
105
+ value: this.value,
106
+ setDisabled: (disabled) => this.disabledFromForm.set(disabled),
107
+ componentName: "DateInputRoot",
108
+ hasExternalModelBinding: () => this.hasExternalBinding,
109
+ });
110
+ machine = useDateInput({
111
+ context: () => ({
112
+ id: this.id(),
113
+ ids: this.ids(),
114
+ value: this.value(),
115
+ defaultValue: this.defaultValue(),
116
+ placeholderValue: this.placeholderValue(),
117
+ defaultPlaceholderValue: this.defaultPlaceholderValue(),
118
+ min: this.min(),
119
+ max: this.max(),
120
+ selectionMode: this.selectionMode(),
121
+ granularity: this.granularity(),
122
+ hourCycle: this.hourCycle(),
123
+ hideTimeZone: this.hideTimeZone() || undefined,
124
+ locale: this.locale(),
125
+ timeZone: this.timeZone(),
126
+ translations: this.translations(),
127
+ formatter: this.formatter(),
128
+ allSegments: this.allSegments(),
129
+ format: this.format(),
130
+ createCalendar: this.createCalendar(),
131
+ isDateUnavailable: this.isDateUnavailable(),
132
+ shouldForceLeadingZeros: this.shouldForceLeadingZeros() || undefined,
133
+ disabled: this.disabled() || this.disabledFromForm() || undefined,
134
+ readOnly: this.readOnly() || undefined,
135
+ required: this.required() || undefined,
136
+ invalid: this.invalid() || undefined,
137
+ name: this.name(),
138
+ form: this.form(),
139
+ onValueChange: (details) => {
140
+ if (!dateValueArraysEqual(this.value(), details.value)) {
141
+ this.pendingInternalWrites++;
142
+ this.value.set([...details.value]);
143
+ }
144
+ this.cva.notifyValueChange(details.value);
145
+ this.cva.markTouched();
146
+ this.valueDetailsChange.emit(details);
147
+ },
148
+ onPlaceholderChange: (details) => {
149
+ if (!dateValuesEqual(this.placeholderValue(), details.placeholderValue)) {
150
+ this.placeholderValue.set(details.placeholderValue);
151
+ }
152
+ this.placeholderChange.emit(details);
153
+ },
154
+ onFocusChange: (details) => {
155
+ if (!details.focused) {
156
+ this.cva.markTouched();
157
+ }
158
+ this.focusChange.emit(details);
159
+ },
160
+ }),
161
+ });
162
+ state = this.machine.state;
163
+ api = this.machine.api;
164
+ service = this.machine.service;
165
+ send = this.machine.send;
166
+ constructor() {
167
+ let firstRun = true;
168
+ effect(() => {
169
+ void this.value();
170
+ if (firstRun) {
171
+ firstRun = false;
172
+ this.pendingInternalWrites = 0;
173
+ return;
174
+ }
175
+ if (this.pendingInternalWrites > 0) {
176
+ this.pendingInternalWrites--;
177
+ return;
178
+ }
179
+ this.hasExternalBinding = true;
180
+ });
181
+ bindProps({
182
+ elementRef: inject(ElementRef),
183
+ renderer: inject(Renderer2),
184
+ destroyRef: inject(DestroyRef),
185
+ props: () => this.api().getRootProps(),
186
+ });
187
+ }
188
+ writeValue(value) {
189
+ const next = value === null ? undefined : value;
190
+ const current = this.value();
191
+ if (!this.hasReceivedFormWrite && current !== undefined) {
192
+ this.hasExternalBinding = true;
193
+ }
194
+ this.hasReceivedFormWrite = true;
195
+ if (current !== next) {
196
+ this.pendingInternalWrites++;
197
+ }
198
+ this.cva.writeValue(value);
199
+ }
200
+ registerOnChange(fn) {
201
+ this.cva.registerOnChange(fn);
202
+ }
203
+ registerOnTouched(fn) {
204
+ this.cva.registerOnTouched(fn);
205
+ }
206
+ setDisabledState(disabled) {
207
+ this.cva.setDisabledState(disabled);
208
+ }
209
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive });
210
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: DateInputRoot, isStandalone: true, selector: "[dateInputRoot]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, ids: { classPropertyName: "ids", publicName: "ids", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, placeholderValue: { classPropertyName: "placeholderValue", publicName: "placeholderValue", isSignal: true, isRequired: false, transformFunction: null }, defaultPlaceholderValue: { classPropertyName: "defaultPlaceholderValue", publicName: "defaultPlaceholderValue", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, granularity: { classPropertyName: "granularity", publicName: "granularity", isSignal: true, isRequired: false, transformFunction: null }, hourCycle: { classPropertyName: "hourCycle", publicName: "hourCycle", isSignal: true, isRequired: false, transformFunction: null }, hideTimeZone: { classPropertyName: "hideTimeZone", publicName: "hideTimeZone", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, timeZone: { classPropertyName: "timeZone", publicName: "timeZone", isSignal: true, isRequired: false, transformFunction: null }, translations: { classPropertyName: "translations", publicName: "translations", isSignal: true, isRequired: false, transformFunction: null }, formatter: { classPropertyName: "formatter", publicName: "formatter", isSignal: true, isRequired: false, transformFunction: null }, allSegments: { classPropertyName: "allSegments", publicName: "allSegments", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, createCalendar: { classPropertyName: "createCalendar", publicName: "createCalendar", isSignal: true, isRequired: false, transformFunction: null }, isDateUnavailable: { classPropertyName: "isDateUnavailable", publicName: "isDateUnavailable", isSignal: true, isRequired: false, transformFunction: null }, shouldForceLeadingZeros: { classPropertyName: "shouldForceLeadingZeros", publicName: "shouldForceLeadingZeros", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", placeholderValue: "placeholderValueChange", focusChange: "focusChange", placeholderChange: "placeholderChange", valueDetailsChange: "valueDetailsChange" }, providers: [
211
+ { provide: DATE_INPUT_CONTEXT, useExisting: forwardRef(() => DateInputRoot) },
212
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputRoot), multi: true },
213
+ ], exportAs: ["dateInputRoot"], ngImport: i0 });
214
+ }
215
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputRoot, decorators: [{
216
+ type: Directive,
217
+ args: [{
218
+ selector: "[dateInputRoot]",
219
+ standalone: true,
220
+ exportAs: "dateInputRoot",
221
+ providers: [
222
+ { provide: DATE_INPUT_CONTEXT, useExisting: forwardRef(() => DateInputRoot) },
223
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputRoot), multi: true },
224
+ ],
225
+ }]
226
+ }], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], ids: [{ type: i0.Input, args: [{ isSignal: true, alias: "ids", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], placeholderValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholderValue", required: false }] }, { type: i0.Output, args: ["placeholderValueChange"] }], defaultPlaceholderValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultPlaceholderValue", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], granularity: [{ type: i0.Input, args: [{ isSignal: true, alias: "granularity", required: false }] }], hourCycle: [{ type: i0.Input, args: [{ isSignal: true, alias: "hourCycle", required: false }] }], hideTimeZone: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideTimeZone", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], timeZone: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeZone", required: false }] }], translations: [{ type: i0.Input, args: [{ isSignal: true, alias: "translations", required: false }] }], formatter: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatter", required: false }] }], allSegments: [{ type: i0.Input, args: [{ isSignal: true, alias: "allSegments", required: false }] }], format: [{ type: i0.Input, args: [{ isSignal: true, alias: "format", required: false }] }], createCalendar: [{ type: i0.Input, args: [{ isSignal: true, alias: "createCalendar", required: false }] }], isDateUnavailable: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDateUnavailable", required: false }] }], shouldForceLeadingZeros: [{ type: i0.Input, args: [{ isSignal: true, alias: "shouldForceLeadingZeros", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], form: [{ type: i0.Input, args: [{ isSignal: true, alias: "form", required: false }] }], focusChange: [{ type: i0.Output, args: ["focusChange"] }], placeholderChange: [{ type: i0.Output, args: ["placeholderChange"] }], valueDetailsChange: [{ type: i0.Output, args: ["valueDetailsChange"] }] } });
227
+ function dateValueArraysEqual(a, b) {
228
+ if (a === b)
229
+ return true;
230
+ if (!a || !b)
231
+ return false;
232
+ if (a.length !== b.length)
233
+ return false;
234
+ for (let i = 0; i < a.length; i++) {
235
+ if (String(a[i]) !== String(b[i]))
236
+ return false;
237
+ }
238
+ return true;
239
+ }
240
+ function dateValuesEqual(a, b) {
241
+ if (a === b)
242
+ return true;
243
+ if (!a || !b)
244
+ return false;
245
+ return String(a) === String(b);
246
+ }
247
+
248
+ class DateInputRootProvider {
249
+ value = input.required(/* @ts-ignore */
250
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
251
+ state = computed(() => this.value().state(), /* @ts-ignore */
252
+ ...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
253
+ api = computed(() => this.value().api(), /* @ts-ignore */
254
+ ...(ngDevMode ? [{ debugName: "api" }] : /* istanbul ignore next */ []));
255
+ send = (event) => this.value().send(event);
256
+ get service() {
257
+ return this.value().service;
258
+ }
259
+ constructor() {
260
+ bindProps({
261
+ elementRef: inject(ElementRef),
262
+ renderer: inject(Renderer2),
263
+ destroyRef: inject(DestroyRef),
264
+ props: () => this.api().getRootProps(),
265
+ });
266
+ }
267
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputRootProvider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
268
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: DateInputRootProvider, isStandalone: true, selector: "[dateInputRootProvider]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, providers: [
269
+ { provide: DATE_INPUT_CONTEXT, useExisting: forwardRef(() => DateInputRootProvider) },
270
+ ], exportAs: ["dateInputRootProvider"], ngImport: i0 });
271
+ }
272
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputRootProvider, decorators: [{
273
+ type: Directive,
274
+ args: [{
275
+ selector: "[dateInputRootProvider]",
276
+ standalone: true,
277
+ exportAs: "dateInputRootProvider",
278
+ providers: [
279
+ { provide: DATE_INPUT_CONTEXT, useExisting: forwardRef(() => DateInputRootProvider) },
280
+ ],
281
+ }]
282
+ }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }] } });
283
+
284
+ class DateInputLabel {
285
+ index = input(undefined, /* @ts-ignore */
286
+ ...(ngDevMode ? [{ debugName: "index" }] : /* istanbul ignore next */ []));
287
+ constructor() {
288
+ const context = injectDateInputContext();
289
+ bindProps({
290
+ elementRef: inject(ElementRef),
291
+ renderer: inject(Renderer2),
292
+ destroyRef: inject(DestroyRef),
293
+ props: () => context.api().getLabelProps({ index: this.index() }),
294
+ });
295
+ }
296
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
297
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: DateInputLabel, isStandalone: true, selector: "[dateInputLabel]", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["dateInputLabel"], ngImport: i0 });
298
+ }
299
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputLabel, decorators: [{
300
+ type: Directive,
301
+ args: [{
302
+ selector: "[dateInputLabel]",
303
+ standalone: true,
304
+ exportAs: "dateInputLabel",
305
+ }]
306
+ }], ctorParameters: () => [], propDecorators: { index: [{ type: i0.Input, args: [{ isSignal: true, alias: "index", required: false }] }] } });
307
+
308
+ class DateInputControl {
309
+ constructor() {
310
+ const context = injectDateInputContext();
311
+ bindProps({
312
+ elementRef: inject(ElementRef),
313
+ renderer: inject(Renderer2),
314
+ destroyRef: inject(DestroyRef),
315
+ props: () => context.api().getControlProps(),
316
+ });
317
+ }
318
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputControl, deps: [], target: i0.ɵɵFactoryTarget.Directive });
319
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: DateInputControl, isStandalone: true, selector: "[dateInputControl]", exportAs: ["dateInputControl"], ngImport: i0 });
320
+ }
321
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputControl, decorators: [{
322
+ type: Directive,
323
+ args: [{
324
+ selector: "[dateInputControl]",
325
+ standalone: true,
326
+ exportAs: "dateInputControl",
327
+ }]
328
+ }], ctorParameters: () => [] });
329
+
330
+ const DATE_INPUT_SEGMENT_GROUP_CONTEXT = new InjectionToken("WIREKYT.DATE_INPUT_SEGMENT_GROUP_CONTEXT");
331
+ function injectDateInputSegmentGroupContext() {
332
+ return inject(DATE_INPUT_SEGMENT_GROUP_CONTEXT);
333
+ }
334
+ class DateInputSegmentGroup {
335
+ /** The range index for this segment group. */
336
+ index = input(undefined, /* @ts-ignore */
337
+ ...(ngDevMode ? [{ debugName: "index" }] : /* istanbul ignore next */ []));
338
+ constructor() {
339
+ const context = injectDateInputContext();
340
+ bindProps({
341
+ elementRef: inject(ElementRef),
342
+ renderer: inject(Renderer2),
343
+ destroyRef: inject(DestroyRef),
344
+ props: () => context.api().getSegmentGroupProps({ index: this.index() }),
345
+ });
346
+ }
347
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputSegmentGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
348
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: DateInputSegmentGroup, isStandalone: true, selector: "[dateInputSegmentGroup]", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
349
+ {
350
+ provide: DATE_INPUT_SEGMENT_GROUP_CONTEXT,
351
+ useExisting: forwardRef(() => DateInputSegmentGroup),
352
+ },
353
+ ], exportAs: ["dateInputSegmentGroup"], ngImport: i0 });
354
+ }
355
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputSegmentGroup, decorators: [{
356
+ type: Directive,
357
+ args: [{
358
+ selector: "[dateInputSegmentGroup]",
359
+ standalone: true,
360
+ exportAs: "dateInputSegmentGroup",
361
+ providers: [
362
+ {
363
+ provide: DATE_INPUT_SEGMENT_GROUP_CONTEXT,
364
+ useExisting: forwardRef(() => DateInputSegmentGroup),
365
+ },
366
+ ],
367
+ }]
368
+ }], ctorParameters: () => [], propDecorators: { index: [{ type: i0.Input, args: [{ isSignal: true, alias: "index", required: false }] }] } });
369
+
370
+ class DateInputSegment {
371
+ segment = input.required(/* @ts-ignore */
372
+ ...(ngDevMode ? [{ debugName: "segment" }] : /* istanbul ignore next */ []));
373
+ ownsTextContent = signal(false, /* @ts-ignore */
374
+ ...(ngDevMode ? [{ debugName: "ownsTextContent" }] : /* istanbul ignore next */ []));
375
+ elementRef = inject(ElementRef);
376
+ constructor() {
377
+ const context = injectDateInputContext();
378
+ const segmentGroup = injectDateInputSegmentGroupContext();
379
+ const renderer = inject(Renderer2);
380
+ bindProps({
381
+ elementRef: this.elementRef,
382
+ renderer,
383
+ destroyRef: inject(DestroyRef),
384
+ props: () => context.api().getSegmentProps({ segment: this.segment(), index: segmentGroup.index() }),
385
+ });
386
+ effect(() => {
387
+ if (!this.ownsTextContent())
388
+ return;
389
+ renderer.setProperty(this.elementRef.nativeElement, "textContent", this.segment().text);
390
+ });
391
+ }
392
+ ngAfterContentInit() {
393
+ this.ownsTextContent.set(this.elementRef.nativeElement.childNodes.length === 0);
394
+ }
395
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputSegment, deps: [], target: i0.ɵɵFactoryTarget.Directive });
396
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: DateInputSegment, isStandalone: true, selector: "[dateInputSegment]", inputs: { segment: { classPropertyName: "segment", publicName: "segment", isSignal: true, isRequired: true, transformFunction: null } }, exportAs: ["dateInputSegment"], ngImport: i0 });
397
+ }
398
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputSegment, decorators: [{
399
+ type: Directive,
400
+ args: [{
401
+ selector: "[dateInputSegment]",
402
+ standalone: true,
403
+ exportAs: "dateInputSegment",
404
+ }]
405
+ }], ctorParameters: () => [], propDecorators: { segment: [{ type: i0.Input, args: [{ isSignal: true, alias: "segment", required: true }] }] } });
406
+
407
+ class DateInputHiddenInput {
408
+ index = input(undefined, /* @ts-ignore */
409
+ ...(ngDevMode ? [{ debugName: "index" }] : /* istanbul ignore next */ []));
410
+ name = input(undefined, /* @ts-ignore */
411
+ ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
412
+ constructor() {
413
+ const context = injectDateInputContext();
414
+ const field = injectFieldContextOptional();
415
+ bindProps({
416
+ elementRef: inject(ElementRef),
417
+ renderer: inject(Renderer2),
418
+ destroyRef: inject(DestroyRef),
419
+ props: () => ({
420
+ "aria-describedby": field?.ariaDescribedby(),
421
+ ...context.api().getHiddenInputProps({ index: this.index(), name: this.name() }),
422
+ }),
423
+ });
424
+ }
425
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputHiddenInput, deps: [], target: i0.ɵɵFactoryTarget.Directive });
426
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: DateInputHiddenInput, isStandalone: true, selector: "input[dateInputHiddenInput]", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["dateInputHiddenInput"], ngImport: i0 });
427
+ }
428
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputHiddenInput, decorators: [{
429
+ type: Directive,
430
+ args: [{
431
+ selector: "input[dateInputHiddenInput]",
432
+ standalone: true,
433
+ exportAs: "dateInputHiddenInput",
434
+ }]
435
+ }], ctorParameters: () => [], propDecorators: { index: [{ type: i0.Input, args: [{ isSignal: true, alias: "index", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }] } });
436
+
437
+ class DateInputContext {
438
+ static ngTemplateContextGuard(_directive, context) {
439
+ void context;
440
+ return true;
441
+ }
442
+ dateInput = injectDateInputContext();
443
+ templateRef = inject(TemplateRef);
444
+ viewContainer = inject(ViewContainerRef);
445
+ constructor() {
446
+ const view = this.viewContainer.createEmbeddedView(this.templateRef, {
447
+ $implicit: this.dateInput.api,
448
+ api: this.dateInput.api,
449
+ });
450
+ effect(() => {
451
+ this.dateInput.api();
452
+ view.detectChanges();
453
+ });
454
+ inject(DestroyRef).onDestroy(() => view.destroy());
455
+ }
456
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputContext, deps: [], target: i0.ɵɵFactoryTarget.Directive });
457
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: DateInputContext, isStandalone: true, selector: "[dateInputContext]", exportAs: ["dateInputContext"], ngImport: i0 });
458
+ }
459
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputContext, decorators: [{
460
+ type: Directive,
461
+ args: [{
462
+ selector: "[dateInputContext]",
463
+ standalone: true,
464
+ exportAs: "dateInputContext",
465
+ }]
466
+ }], ctorParameters: () => [] });
467
+
468
+ class DateInputSegmentContext {
469
+ static ngTemplateContextGuard(_directive, context) {
470
+ void context;
471
+ return true;
472
+ }
473
+ dateInput = injectDateInputContext();
474
+ segmentGroup = injectDateInputSegmentGroupContext();
475
+ templateRef = inject(TemplateRef);
476
+ viewContainer = inject(ViewContainerRef);
477
+ views = [];
478
+ constructor() {
479
+ effect(() => {
480
+ const segments = this.dateInput.api().getSegments({ index: this.segmentGroup.index() });
481
+ this.syncSegmentViews(segments);
482
+ });
483
+ }
484
+ syncSegmentViews(segments) {
485
+ const nextViews = [];
486
+ segments.forEach((segment, index) => {
487
+ const key = `${index}:${segment.type}`;
488
+ const existingIndex = this.views.findIndex((entry) => entry.key === key);
489
+ const entry = existingIndex >= 0
490
+ ? this.views.splice(existingIndex, 1)[0]
491
+ : {
492
+ key,
493
+ view: this.viewContainer.createEmbeddedView(this.templateRef, {
494
+ $implicit: segment,
495
+ segment,
496
+ index,
497
+ }),
498
+ };
499
+ entry.view.context.$implicit = segment;
500
+ entry.view.context.segment = segment;
501
+ entry.view.context.index = index;
502
+ nextViews.push(entry);
503
+ const currentIndex = this.viewContainer.indexOf(entry.view);
504
+ if (currentIndex !== index) {
505
+ this.viewContainer.move(entry.view, index);
506
+ }
507
+ entry.view.detectChanges();
508
+ });
509
+ for (const entry of this.views) {
510
+ entry.view.destroy();
511
+ }
512
+ this.views.length = 0;
513
+ this.views.push(...nextViews);
514
+ }
515
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputSegmentContext, deps: [], target: i0.ɵɵFactoryTarget.Directive });
516
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: DateInputSegmentContext, isStandalone: true, selector: "[dateInputSegmentContext]", exportAs: ["dateInputSegmentContext"], ngImport: i0 });
517
+ }
518
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputSegmentContext, decorators: [{
519
+ type: Directive,
520
+ args: [{
521
+ selector: "[dateInputSegmentContext]",
522
+ standalone: true,
523
+ exportAs: "dateInputSegmentContext",
524
+ }]
525
+ }], ctorParameters: () => [] });
526
+
527
+ /**
528
+ * Generated bundle index. Do not edit.
529
+ */
530
+
531
+ export { DATE_INPUT_CONTEXT, DATE_INPUT_SEGMENT_GROUP_CONTEXT, DateInputContext, DateInputControl, DateInputHiddenInput, DateInputLabel, DateInputRoot, DateInputRootProvider, DateInputSegment, DateInputSegmentContext, DateInputSegmentGroup, injectDateInputContext, injectDateInputSegmentGroupContext, useDateInput };
532
+ //# sourceMappingURL=wirekyt-angular-date-input.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wirekyt-angular-date-input.mjs","sources":["../../src/components/date-input/use-context.ts","../../src/components/date-input/use.ts","../../src/components/date-input/root.ts","../../src/components/date-input/root-provider.ts","../../src/components/date-input/label.ts","../../src/components/date-input/control.ts","../../src/components/date-input/segment-group.ts","../../src/components/date-input/segment.ts","../../src/components/date-input/hidden-input.ts","../../src/components/date-input/context.ts","../../src/components/date-input/segment-context.ts","../../src/components/date-input/wirekyt-angular-date-input.ts"],"sourcesContent":["import { InjectionToken, inject } from \"@angular/core\";\n\nimport type { UseDateInputReturn } from \"./use\";\n\nexport const DATE_INPUT_CONTEXT = new InjectionToken<UseDateInputReturn>(\n \"WIREKYT.DATE_INPUT_CONTEXT\",\n);\n\nexport function injectDateInputContext(): UseDateInputReturn {\n return inject(DATE_INPUT_CONTEXT);\n}\n","import type { Machine } from \"@wirekyt/dom\";\n\nimport {\n createId,\n injectEnvironment,\n injectLocale,\n useMachine,\n type UseMachineReturn,\n} from \"@wirekyt/angular\";\nimport { injectFieldContextOptional } from \"@wirekyt/angular/field\";\nimport * as dateInput from \"@wirekyt/dom/machines/date-input\";\n\ntype OptionalId<T extends { id?: string | undefined }> = Omit<T, \"id\"> & { id?: string };\n\nexport interface UseDateInputProps extends OptionalId<\n Omit<dateInput.Props, \"dir\" | \"getRootNode\">\n> {}\n\nexport type UseDateInputReturn = UseMachineReturn<\n dateInput.Service[\"state\"],\n dateInput.Api,\n dateInput.Service\n>;\n\nexport interface UseDateInputOptions {\n context: () => UseDateInputProps;\n}\n\ntype DateInputContext = Record<string, unknown>;\ntype DateInputSchema = dateInput.Machine extends Machine<infer TSchema> ? TSchema : never;\n\nexport function useDateInput(options: UseDateInputOptions): UseDateInputReturn {\n const locale = injectLocale();\n const environment = injectEnvironment();\n const field = injectFieldContextOptional();\n const fallbackId = createId();\n\n return useMachine<DateInputSchema, dateInput.Api>({\n machine: dateInput.machine,\n context: () => {\n const props = options.context();\n const merged: dateInput.Props = {\n ...props,\n dir: locale.dir,\n getRootNode: environment.getRootNode as () => ShadowRoot | Document | Node,\n id: props.id ?? fallbackId,\n locale: props.locale ?? locale.locale,\n };\n\n if (field) {\n merged.ids = {\n label: () => field.ids.label,\n hiddenInput: () => field.ids.control,\n ...props.ids,\n };\n merged.disabled = Boolean(props.disabled) || field.disabled() || undefined;\n merged.readOnly = Boolean(props.readOnly) || field.readOnly() || undefined;\n merged.required = Boolean(props.required) || field.required() || undefined;\n merged.invalid = Boolean(props.invalid) || field.invalid() || undefined;\n }\n\n return merged as unknown as DateInputContext;\n },\n connect: (service, normalize) => dateInput.connect(service, normalize),\n });\n}\n","import type * as dateInput from \"@wirekyt/dom/machines/date-input\";\n\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n booleanAttribute,\n effect,\n forwardRef,\n inject,\n input,\n model,\n output,\n signal,\n type InputSignal,\n type InputSignalWithTransform,\n type ModelSignal,\n type OutputEmitterRef,\n type Signal,\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from \"@angular/forms\";\nimport { bindProps, createCvaController } from \"@wirekyt/angular\";\n\nimport type {\n DateInputElementIds,\n DateInputFocusChangeDetails,\n DateInputFormatDateDetails,\n DateInputIntlTranslations,\n DateInputPlaceholderChangeDetails,\n DateInputSelectionMode,\n DateInputSegments,\n DateInputValueChangeDetails,\n DateValue,\n} from \"./types\";\n\nimport { useDateInput, type UseDateInputReturn } from \"./use\";\nimport { DATE_INPUT_CONTEXT } from \"./use-context\";\n\n@Directive({\n selector: \"[dateInputRoot]\",\n standalone: true,\n exportAs: \"dateInputRoot\",\n providers: [\n { provide: DATE_INPUT_CONTEXT, useExisting: forwardRef(() => DateInputRoot) },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputRoot), multi: true },\n ],\n})\nexport class DateInputRoot implements ControlValueAccessor, UseDateInputReturn {\n readonly id: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly ids: InputSignal<Partial<DateInputElementIds> | undefined> = input<\n Partial<DateInputElementIds> | undefined\n >(undefined);\n readonly value: ModelSignal<DateValue[] | undefined> = model<DateValue[] | undefined>(undefined);\n readonly defaultValue: InputSignal<DateValue[] | undefined> = input<DateValue[] | undefined>(\n undefined,\n );\n readonly placeholderValue: ModelSignal<DateValue | undefined> = model<DateValue | undefined>(\n undefined,\n );\n readonly defaultPlaceholderValue: InputSignal<DateValue | undefined> = input<\n DateValue | undefined\n >(undefined);\n readonly min: InputSignal<DateValue | undefined> = input<DateValue | undefined>(undefined);\n readonly max: InputSignal<DateValue | undefined> = input<DateValue | undefined>(undefined);\n readonly selectionMode: InputSignal<DateInputSelectionMode | undefined> = input<\n DateInputSelectionMode | undefined\n >(undefined);\n readonly granularity: InputSignal<dateInput.Props[\"granularity\"] | undefined> = input<\n dateInput.Props[\"granularity\"] | undefined\n >(undefined);\n readonly hourCycle: InputSignal<dateInput.Props[\"hourCycle\"] | undefined> = input<\n dateInput.Props[\"hourCycle\"] | undefined\n >(undefined);\n readonly hideTimeZone: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly locale: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly timeZone: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly translations: InputSignal<DateInputIntlTranslations | undefined> = input<\n DateInputIntlTranslations | undefined\n >(undefined);\n readonly formatter: InputSignal<dateInput.Props[\"formatter\"] | undefined> = input<\n dateInput.Props[\"formatter\"] | undefined\n >(undefined);\n readonly allSegments: InputSignal<DateInputSegments | undefined> = input<\n DateInputSegments | undefined\n >(undefined);\n readonly format: InputSignal<\n ((date: DateValue, details: DateInputFormatDateDetails) => string) | undefined\n > = input<((date: DateValue, details: DateInputFormatDateDetails) => string) | undefined>(\n undefined,\n );\n readonly createCalendar: InputSignal<dateInput.Props[\"createCalendar\"] | undefined> = input<\n dateInput.Props[\"createCalendar\"] | undefined\n >(undefined);\n readonly isDateUnavailable: InputSignal<dateInput.Props[\"isDateUnavailable\"] | undefined> = input<\n dateInput.Props[\"isDateUnavailable\"] | undefined\n >(undefined);\n readonly shouldForceLeadingZeros: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly disabled: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly readOnly: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly required: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly invalid: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly name: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly form: InputSignal<string | undefined> = input<string | undefined>(undefined);\n\n readonly focusChange: OutputEmitterRef<DateInputFocusChangeDetails> =\n output<DateInputFocusChangeDetails>();\n readonly placeholderChange: OutputEmitterRef<DateInputPlaceholderChangeDetails> =\n output<DateInputPlaceholderChangeDetails>();\n readonly valueDetailsChange: OutputEmitterRef<DateInputValueChangeDetails> =\n output<DateInputValueChangeDetails>();\n\n private readonly disabledFromForm = signal(false);\n private pendingInternalWrites = 0;\n private hasExternalBinding = false;\n private hasReceivedFormWrite = false;\n\n private readonly cva = createCvaController<DateValue[]>({\n value: this.value,\n setDisabled: (disabled) => this.disabledFromForm.set(disabled),\n componentName: \"DateInputRoot\",\n hasExternalModelBinding: () => this.hasExternalBinding,\n });\n\n private readonly machine = useDateInput({\n context: () => ({\n id: this.id(),\n ids: this.ids(),\n value: this.value(),\n defaultValue: this.defaultValue(),\n placeholderValue: this.placeholderValue(),\n defaultPlaceholderValue: this.defaultPlaceholderValue(),\n min: this.min(),\n max: this.max(),\n selectionMode: this.selectionMode(),\n granularity: this.granularity(),\n hourCycle: this.hourCycle(),\n hideTimeZone: this.hideTimeZone() || undefined,\n locale: this.locale(),\n timeZone: this.timeZone(),\n translations: this.translations(),\n formatter: this.formatter(),\n allSegments: this.allSegments(),\n format: this.format(),\n createCalendar: this.createCalendar(),\n isDateUnavailable: this.isDateUnavailable(),\n shouldForceLeadingZeros: this.shouldForceLeadingZeros() || undefined,\n disabled: this.disabled() || this.disabledFromForm() || undefined,\n readOnly: this.readOnly() || undefined,\n required: this.required() || undefined,\n invalid: this.invalid() || undefined,\n name: this.name(),\n form: this.form(),\n onValueChange: (details) => {\n if (!dateValueArraysEqual(this.value(), details.value)) {\n this.pendingInternalWrites++;\n this.value.set([...details.value]);\n }\n this.cva.notifyValueChange(details.value);\n this.cva.markTouched();\n this.valueDetailsChange.emit(details);\n },\n onPlaceholderChange: (details) => {\n if (!dateValuesEqual(this.placeholderValue(), details.placeholderValue)) {\n this.placeholderValue.set(details.placeholderValue);\n }\n this.placeholderChange.emit(details);\n },\n onFocusChange: (details) => {\n if (!details.focused) {\n this.cva.markTouched();\n }\n this.focusChange.emit(details);\n },\n }),\n });\n\n readonly state: Signal<dateInput.Service[\"state\"]> = this.machine.state;\n readonly api: Signal<dateInput.Api> = this.machine.api;\n readonly service: dateInput.Service = this.machine.service;\n readonly send: dateInput.Service[\"send\"] = this.machine.send;\n\n constructor() {\n let firstRun = true;\n effect(() => {\n void this.value();\n if (firstRun) {\n firstRun = false;\n this.pendingInternalWrites = 0;\n return;\n }\n if (this.pendingInternalWrites > 0) {\n this.pendingInternalWrites--;\n return;\n }\n this.hasExternalBinding = true;\n });\n\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => this.api().getRootProps(),\n });\n }\n\n writeValue(value: DateValue[] | null): void {\n const next = value === null ? undefined : value;\n const current = this.value();\n if (!this.hasReceivedFormWrite && current !== undefined) {\n this.hasExternalBinding = true;\n }\n this.hasReceivedFormWrite = true;\n if (current !== next) {\n this.pendingInternalWrites++;\n }\n this.cva.writeValue(value);\n }\n\n registerOnChange(fn: (value: DateValue[] | undefined) => void): void {\n this.cva.registerOnChange(fn);\n }\n\n registerOnTouched(fn: () => void): void {\n this.cva.registerOnTouched(fn);\n }\n\n setDisabledState(disabled: boolean): void {\n this.cva.setDisabledState(disabled);\n }\n}\n\nfunction dateValueArraysEqual(a: DateValue[] | undefined, b: DateValue[] | undefined): boolean {\n if (a === b) return true;\n if (!a || !b) return false;\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (String(a[i]) !== String(b[i])) return false;\n }\n return true;\n}\n\nfunction dateValuesEqual(a: DateValue | undefined, b: DateValue | undefined): boolean {\n if (a === b) return true;\n if (!a || !b) return false;\n return String(a) === String(b);\n}\n","import type * as dateInput from \"@wirekyt/dom/machines/date-input\";\n\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n computed,\n forwardRef,\n inject,\n input,\n type InputSignal,\n type Signal,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport type { UseDateInputReturn } from \"./use\";\n\nimport { DATE_INPUT_CONTEXT } from \"./use-context\";\n\n@Directive({\n selector: \"[dateInputRootProvider]\",\n standalone: true,\n exportAs: \"dateInputRootProvider\",\n providers: [\n { provide: DATE_INPUT_CONTEXT, useExisting: forwardRef(() => DateInputRootProvider) },\n ],\n})\nexport class DateInputRootProvider implements UseDateInputReturn {\n readonly value: InputSignal<UseDateInputReturn> = input.required<UseDateInputReturn>();\n readonly state: Signal<dateInput.Service[\"state\"]> = computed(() => this.value().state());\n readonly api: Signal<dateInput.Api> = computed(() => this.value().api());\n readonly send: dateInput.Service[\"send\"] = (event) => this.value().send(event);\n\n get service(): dateInput.Service {\n return this.value().service;\n }\n\n constructor() {\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => this.api().getRootProps(),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n inject,\n input,\n type InputSignal,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectDateInputContext } from \"./use-context\";\n\n@Directive({\n selector: \"[dateInputLabel]\",\n standalone: true,\n exportAs: \"dateInputLabel\",\n})\nexport class DateInputLabel {\n readonly index: InputSignal<number | undefined> = input<number | undefined>(undefined);\n\n constructor() {\n const context = injectDateInputContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getLabelProps({ index: this.index() }),\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectDateInputContext } from \"./use-context\";\n\n@Directive({\n selector: \"[dateInputControl]\",\n standalone: true,\n exportAs: \"dateInputControl\",\n})\nexport class DateInputControl {\n constructor() {\n const context = injectDateInputContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getControlProps(),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n InjectionToken,\n Renderer2,\n forwardRef,\n inject,\n input,\n type InputSignal,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectDateInputContext } from \"./use-context\";\n\nexport interface DateInputSegmentGroupContext {\n index: InputSignal<number | undefined>;\n}\n\nexport const DATE_INPUT_SEGMENT_GROUP_CONTEXT = new InjectionToken<DateInputSegmentGroupContext>(\n \"WIREKYT.DATE_INPUT_SEGMENT_GROUP_CONTEXT\",\n);\n\nexport function injectDateInputSegmentGroupContext(): DateInputSegmentGroupContext {\n return inject(DATE_INPUT_SEGMENT_GROUP_CONTEXT);\n}\n\n@Directive({\n selector: \"[dateInputSegmentGroup]\",\n standalone: true,\n exportAs: \"dateInputSegmentGroup\",\n providers: [\n {\n provide: DATE_INPUT_SEGMENT_GROUP_CONTEXT,\n useExisting: forwardRef(() => DateInputSegmentGroup),\n },\n ],\n})\nexport class DateInputSegmentGroup implements DateInputSegmentGroupContext {\n /** The range index for this segment group. */\n readonly index: InputSignal<number | undefined> = input<number | undefined>(undefined);\n\n constructor() {\n const context = injectDateInputContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getSegmentGroupProps({ index: this.index() }),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n effect,\n inject,\n input,\n signal,\n type AfterContentInit,\n type InputSignal,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport type { DateInputDateSegment } from \"./types\";\n\nimport { injectDateInputSegmentGroupContext } from \"./segment-group\";\nimport { injectDateInputContext } from \"./use-context\";\n\n@Directive({\n selector: \"[dateInputSegment]\",\n standalone: true,\n exportAs: \"dateInputSegment\",\n})\nexport class DateInputSegment implements AfterContentInit {\n readonly segment: InputSignal<DateInputDateSegment> = input.required<DateInputDateSegment>();\n\n private readonly ownsTextContent = signal(false);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n constructor() {\n const context = injectDateInputContext();\n const segmentGroup = injectDateInputSegmentGroupContext();\n const renderer = inject(Renderer2);\n\n bindProps({\n elementRef: this.elementRef,\n renderer,\n destroyRef: inject(DestroyRef),\n props: () =>\n context.api().getSegmentProps({ segment: this.segment(), index: segmentGroup.index() }),\n });\n\n effect(() => {\n if (!this.ownsTextContent()) return;\n renderer.setProperty(this.elementRef.nativeElement, \"textContent\", this.segment().text);\n });\n }\n\n ngAfterContentInit(): void {\n this.ownsTextContent.set(this.elementRef.nativeElement.childNodes.length === 0);\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n inject,\n input,\n type InputSignal,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\nimport { injectFieldContextOptional } from \"@wirekyt/angular/field\";\n\nimport { injectDateInputContext } from \"./use-context\";\n\n@Directive({\n selector: \"input[dateInputHiddenInput]\",\n standalone: true,\n exportAs: \"dateInputHiddenInput\",\n})\nexport class DateInputHiddenInput {\n readonly index: InputSignal<number | undefined> = input<number | undefined>(undefined);\n readonly name: InputSignal<string | undefined> = input<string | undefined>(undefined);\n\n constructor() {\n const context = injectDateInputContext();\n const field = injectFieldContextOptional();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => ({\n \"aria-describedby\": field?.ariaDescribedby(),\n ...context.api().getHiddenInputProps({ index: this.index(), name: this.name() }),\n }),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n TemplateRef,\n ViewContainerRef,\n effect,\n inject,\n} from \"@angular/core\";\n\nimport type { UseDateInputReturn } from \"./use\";\n\nimport { injectDateInputContext } from \"./use-context\";\n\nexport interface DateInputContextTemplate {\n $implicit: UseDateInputReturn[\"api\"];\n api: UseDateInputReturn[\"api\"];\n}\n\n@Directive({\n selector: \"[dateInputContext]\",\n standalone: true,\n exportAs: \"dateInputContext\",\n})\nexport class DateInputContext {\n static ngTemplateContextGuard(\n _directive: DateInputContext,\n context: unknown,\n ): context is DateInputContextTemplate {\n void context;\n return true;\n }\n\n private readonly dateInput = injectDateInputContext();\n private readonly templateRef = inject<TemplateRef<DateInputContextTemplate>>(TemplateRef);\n private readonly viewContainer = inject(ViewContainerRef);\n\n constructor() {\n const view = this.viewContainer.createEmbeddedView(this.templateRef, {\n $implicit: this.dateInput.api,\n api: this.dateInput.api,\n });\n\n effect(() => {\n this.dateInput.api();\n view.detectChanges();\n });\n\n inject(DestroyRef).onDestroy(() => view.destroy());\n }\n}\n","import {\n Directive,\n TemplateRef,\n ViewContainerRef,\n effect,\n inject,\n type EmbeddedViewRef,\n} from \"@angular/core\";\n\nimport type { DateInputDateSegment } from \"./types\";\n\nimport { injectDateInputSegmentGroupContext } from \"./segment-group\";\nimport { injectDateInputContext } from \"./use-context\";\n\nexport interface DateInputSegmentContextTemplate {\n $implicit: DateInputDateSegment;\n segment: DateInputDateSegment;\n index: number;\n}\n\n@Directive({\n selector: \"[dateInputSegmentContext]\",\n standalone: true,\n exportAs: \"dateInputSegmentContext\",\n})\nexport class DateInputSegmentContext {\n static ngTemplateContextGuard(\n _directive: DateInputSegmentContext,\n context: unknown,\n ): context is DateInputSegmentContextTemplate {\n void context;\n return true;\n }\n\n private readonly dateInput = injectDateInputContext();\n private readonly segmentGroup = injectDateInputSegmentGroupContext();\n private readonly templateRef = inject<TemplateRef<DateInputSegmentContextTemplate>>(TemplateRef);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly views: Array<{\n key: string;\n view: EmbeddedViewRef<DateInputSegmentContextTemplate>;\n }> = [];\n\n constructor() {\n effect(() => {\n const segments = this.dateInput.api().getSegments({ index: this.segmentGroup.index() });\n this.syncSegmentViews(segments);\n });\n }\n\n private syncSegmentViews(segments: DateInputDateSegment[]): void {\n const nextViews: typeof this.views = [];\n\n segments.forEach((segment, index) => {\n const key = `${index}:${segment.type}`;\n const existingIndex = this.views.findIndex((entry) => entry.key === key);\n const entry =\n existingIndex >= 0\n ? this.views.splice(existingIndex, 1)[0]\n : {\n key,\n view: this.viewContainer.createEmbeddedView(this.templateRef, {\n $implicit: segment,\n segment,\n index,\n }),\n };\n\n entry.view.context.$implicit = segment;\n entry.view.context.segment = segment;\n entry.view.context.index = index;\n nextViews.push(entry);\n\n const currentIndex = this.viewContainer.indexOf(entry.view);\n if (currentIndex !== index) {\n this.viewContainer.move(entry.view, index);\n }\n entry.view.detectChanges();\n });\n\n for (const entry of this.views) {\n entry.view.destroy();\n }\n this.views.length = 0;\n this.views.push(...nextViews);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wirekyt/angular",
3
- "version": "0.0.11",
3
+ "version": "0.0.12",
4
4
  "description": "Angular adapter for Wirekyt",
5
5
  "files": [
6
6
  "dist"
@@ -54,6 +54,14 @@
54
54
  "types": "./types/wirekyt-angular-collection.d.ts",
55
55
  "default": "./fesm2022/wirekyt-angular-collection.mjs"
56
56
  },
57
+ "./combobox": {
58
+ "types": "./types/wirekyt-angular-combobox.d.ts",
59
+ "default": "./fesm2022/wirekyt-angular-combobox.mjs"
60
+ },
61
+ "./date-input": {
62
+ "types": "./types/wirekyt-angular-date-input.d.ts",
63
+ "default": "./fesm2022/wirekyt-angular-date-input.mjs"
64
+ },
57
65
  "./field": {
58
66
  "types": "./types/wirekyt-angular-field.d.ts",
59
67
  "default": "./fesm2022/wirekyt-angular-field.mjs"
@@ -64,10 +72,6 @@
64
72
  },
65
73
  "./package.json": {
66
74
  "default": "./package.json"
67
- },
68
- "./combobox": {
69
- "types": "./types/wirekyt-angular-combobox.d.ts",
70
- "default": "./fesm2022/wirekyt-angular-combobox.mjs"
71
75
  }
72
76
  },
73
77
  "publishConfig": {
@@ -7,7 +7,7 @@ import * as i0 from '@angular/core';
7
7
  import { Signal, InputSignal, ModelSignal, InputSignalWithTransform, OutputEmitterRef, InjectionToken } from '@angular/core';
8
8
  import { ControlValueAccessor } from '@angular/forms';
9
9
 
10
- declare const checkboxAnatomy: _wirekyt_dom_anatomy.AnatomyInstance<"root" | "label" | "control" | "indicator" | "group">;
10
+ declare const checkboxAnatomy: _wirekyt_dom_anatomy.AnatomyInstance<"root" | "indicator" | "label" | "control" | "group">;
11
11
 
12
12
  type OptionalId<T extends {
13
13
  id: string;
@@ -7,7 +7,7 @@ import { UseMachineReturn, ContextCarrier } from '@wirekyt/angular';
7
7
  import { ControlValueAccessor } from '@angular/forms';
8
8
  import { ColorStringFormat } from '@wirekyt/dom/color-utils';
9
9
 
10
- declare const colorPickerAnatomy: _wirekyt_dom_anatomy.Anatomy<"root" | "label" | "control" | "valueText" | "trigger" | "content" | "area" | "positioner" | "areaThumb" | "areaBackground" | "channelSlider" | "channelSliderLabel" | "channelSliderTrack" | "channelSliderThumb" | "channelSliderValueText" | "channelInput" | "transparencyGrid" | "swatchGroup" | "swatchTrigger" | "swatchIndicator" | "swatch" | "eyeDropperTrigger" | "formatTrigger" | "formatSelect">;
10
+ declare const colorPickerAnatomy: _wirekyt_dom_anatomy.Anatomy<"root" | "trigger" | "content" | "label" | "area" | "control" | "valueText" | "positioner" | "formatSelect" | "areaThumb" | "channelInput" | "channelSliderTrack" | "channelSliderThumb" | "areaBackground" | "channelSlider" | "channelSliderLabel" | "channelSliderValueText" | "transparencyGrid" | "swatchGroup" | "swatchTrigger" | "swatchIndicator" | "swatch" | "eyeDropperTrigger" | "formatTrigger">;
11
11
 
12
12
  declare class ColorPickerArea {
13
13
  readonly xChannel: InputSignal<colorPicker.ColorChannel | undefined>;
@@ -12,7 +12,7 @@ import * as _wirekyt_dom_machines_presence from '@wirekyt/dom/machines/presence'
12
12
  import { ControlValueAccessor } from '@angular/forms';
13
13
  import * as _wirekyt_angular_combobox from '@wirekyt/angular/combobox';
14
14
 
15
- declare const comboboxAnatomy: _wirekyt_dom_anatomy.AnatomyInstance<"root" | "input" | "label" | "control" | "item" | "list" | "trigger" | "content" | "itemIndicator" | "itemGroup" | "positioner" | "clearTrigger" | "itemText" | "itemGroupLabel" | "empty">;
15
+ declare const comboboxAnatomy: _wirekyt_dom_anatomy.AnatomyInstance<"root" | "list" | "item" | "trigger" | "content" | "itemGroup" | "label" | "clearTrigger" | "input" | "control" | "itemIndicator" | "positioner" | "itemText" | "itemGroupLabel" | "empty">;
16
16
 
17
17
  type ComboboxSchema<T extends CollectionItem = CollectionItem> = Machine<T> extends Machine$1<infer S> ? S : never;
18
18
 
@@ -0,0 +1,164 @@
1
+ import * as dateInput from '@wirekyt/dom/machines/date-input';
2
+ import { ElementIds, DateValue, SelectionMode, IntlTranslations, Segments, FormatDateDetails, FocusChangeDetails, PlaceholderChangeDetails, ValueChangeDetails, DateSegment } from '@wirekyt/dom/machines/date-input';
3
+ export { Calendar, CalendarDate, CalendarDateTime, CalendarIdentifier, DateFormatter, Api as DateInputApi, DateSegment as DateInputDateSegment, EditableSegmentType as DateInputEditableSegmentType, ElementIds as DateInputElementIds, FocusChangeDetails as DateInputFocusChangeDetails, FormatDateDetails as DateInputFormatDateDetails, HiddenInputProps as DateInputHiddenInputMachineProps, HourCycle as DateInputHourCycle, IntlTranslations as DateInputIntlTranslations, LabelProps as DateInputLabelMachineProps, Machine as DateInputMachine, Props as DateInputMachineProps, PlaceholderChangeDetails as DateInputPlaceholderChangeDetails, SegmentGroupProps as DateInputSegmentGroupMachineProps, SegmentProps as DateInputSegmentMachineProps, SegmentState as DateInputSegmentState, SegmentType as DateInputSegmentType, Segments as DateInputSegments, SegmentsProps as DateInputSegmentsMachineProps, SelectionMode as DateInputSelectionMode, Service as DateInputService, ValueChangeDetails as DateInputValueChangeDetails, DateValue, ZonedDateTime, anatomy as dateInputAnatomy } from '@wirekyt/dom/machines/date-input';
4
+ import * as i0 from '@angular/core';
5
+ import { InjectionToken, InputSignal, ModelSignal, InputSignalWithTransform, OutputEmitterRef, Signal, AfterContentInit } from '@angular/core';
6
+ import { UseMachineReturn } from '@wirekyt/angular';
7
+ import { ControlValueAccessor } from '@angular/forms';
8
+
9
+ type OptionalId<T extends {
10
+ id?: string | undefined;
11
+ }> = Omit<T, "id"> & {
12
+ id?: string;
13
+ };
14
+ interface UseDateInputProps extends OptionalId<Omit<dateInput.Props, "dir" | "getRootNode">> {
15
+ }
16
+ type UseDateInputReturn = UseMachineReturn<dateInput.Service["state"], dateInput.Api, dateInput.Service>;
17
+ interface UseDateInputOptions {
18
+ context: () => UseDateInputProps;
19
+ }
20
+ declare function useDateInput(options: UseDateInputOptions): UseDateInputReturn;
21
+
22
+ declare const DATE_INPUT_CONTEXT: InjectionToken<UseDateInputReturn>;
23
+ declare function injectDateInputContext(): UseDateInputReturn;
24
+
25
+ declare class DateInputRoot implements ControlValueAccessor, UseDateInputReturn {
26
+ readonly id: InputSignal<string | undefined>;
27
+ readonly ids: InputSignal<Partial<ElementIds> | undefined>;
28
+ readonly value: ModelSignal<DateValue[] | undefined>;
29
+ readonly defaultValue: InputSignal<DateValue[] | undefined>;
30
+ readonly placeholderValue: ModelSignal<DateValue | undefined>;
31
+ readonly defaultPlaceholderValue: InputSignal<DateValue | undefined>;
32
+ readonly min: InputSignal<DateValue | undefined>;
33
+ readonly max: InputSignal<DateValue | undefined>;
34
+ readonly selectionMode: InputSignal<SelectionMode | undefined>;
35
+ readonly granularity: InputSignal<dateInput.Props["granularity"] | undefined>;
36
+ readonly hourCycle: InputSignal<dateInput.Props["hourCycle"] | undefined>;
37
+ readonly hideTimeZone: InputSignalWithTransform<boolean, unknown>;
38
+ readonly locale: InputSignal<string | undefined>;
39
+ readonly timeZone: InputSignal<string | undefined>;
40
+ readonly translations: InputSignal<IntlTranslations | undefined>;
41
+ readonly formatter: InputSignal<dateInput.Props["formatter"] | undefined>;
42
+ readonly allSegments: InputSignal<Segments | undefined>;
43
+ readonly format: InputSignal<((date: DateValue, details: FormatDateDetails) => string) | undefined>;
44
+ readonly createCalendar: InputSignal<dateInput.Props["createCalendar"] | undefined>;
45
+ readonly isDateUnavailable: InputSignal<dateInput.Props["isDateUnavailable"] | undefined>;
46
+ readonly shouldForceLeadingZeros: InputSignalWithTransform<boolean, unknown>;
47
+ readonly disabled: InputSignalWithTransform<boolean, unknown>;
48
+ readonly readOnly: InputSignalWithTransform<boolean, unknown>;
49
+ readonly required: InputSignalWithTransform<boolean, unknown>;
50
+ readonly invalid: InputSignalWithTransform<boolean, unknown>;
51
+ readonly name: InputSignal<string | undefined>;
52
+ readonly form: InputSignal<string | undefined>;
53
+ readonly focusChange: OutputEmitterRef<FocusChangeDetails>;
54
+ readonly placeholderChange: OutputEmitterRef<PlaceholderChangeDetails>;
55
+ readonly valueDetailsChange: OutputEmitterRef<ValueChangeDetails>;
56
+ private readonly disabledFromForm;
57
+ private pendingInternalWrites;
58
+ private hasExternalBinding;
59
+ private hasReceivedFormWrite;
60
+ private readonly cva;
61
+ private readonly machine;
62
+ readonly state: Signal<dateInput.Service["state"]>;
63
+ readonly api: Signal<dateInput.Api>;
64
+ readonly service: dateInput.Service;
65
+ readonly send: dateInput.Service["send"];
66
+ constructor();
67
+ writeValue(value: DateValue[] | null): void;
68
+ registerOnChange(fn: (value: DateValue[] | undefined) => void): void;
69
+ registerOnTouched(fn: () => void): void;
70
+ setDisabledState(disabled: boolean): void;
71
+ static ɵfac: i0.ɵɵFactoryDeclaration<DateInputRoot, never>;
72
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DateInputRoot, "[dateInputRoot]", ["dateInputRoot"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "ids": { "alias": "ids"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "placeholderValue": { "alias": "placeholderValue"; "required": false; "isSignal": true; }; "defaultPlaceholderValue": { "alias": "defaultPlaceholderValue"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "granularity": { "alias": "granularity"; "required": false; "isSignal": true; }; "hourCycle": { "alias": "hourCycle"; "required": false; "isSignal": true; }; "hideTimeZone": { "alias": "hideTimeZone"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "timeZone": { "alias": "timeZone"; "required": false; "isSignal": true; }; "translations": { "alias": "translations"; "required": false; "isSignal": true; }; "formatter": { "alias": "formatter"; "required": false; "isSignal": true; }; "allSegments": { "alias": "allSegments"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "createCalendar": { "alias": "createCalendar"; "required": false; "isSignal": true; }; "isDateUnavailable": { "alias": "isDateUnavailable"; "required": false; "isSignal": true; }; "shouldForceLeadingZeros": { "alias": "shouldForceLeadingZeros"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "placeholderValue": "placeholderValueChange"; "focusChange": "focusChange"; "placeholderChange": "placeholderChange"; "valueDetailsChange": "valueDetailsChange"; }, never, never, true, never>;
73
+ }
74
+
75
+ declare class DateInputRootProvider implements UseDateInputReturn {
76
+ readonly value: InputSignal<UseDateInputReturn>;
77
+ readonly state: Signal<dateInput.Service["state"]>;
78
+ readonly api: Signal<dateInput.Api>;
79
+ readonly send: dateInput.Service["send"];
80
+ get service(): dateInput.Service;
81
+ constructor();
82
+ static ɵfac: i0.ɵɵFactoryDeclaration<DateInputRootProvider, never>;
83
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DateInputRootProvider, "[dateInputRootProvider]", ["dateInputRootProvider"], { "value": { "alias": "value"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
84
+ }
85
+
86
+ declare class DateInputLabel {
87
+ readonly index: InputSignal<number | undefined>;
88
+ constructor();
89
+ static ɵfac: i0.ɵɵFactoryDeclaration<DateInputLabel, never>;
90
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DateInputLabel, "[dateInputLabel]", ["dateInputLabel"], { "index": { "alias": "index"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
91
+ }
92
+
93
+ declare class DateInputControl {
94
+ constructor();
95
+ static ɵfac: i0.ɵɵFactoryDeclaration<DateInputControl, never>;
96
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DateInputControl, "[dateInputControl]", ["dateInputControl"], {}, {}, never, never, true, never>;
97
+ }
98
+
99
+ interface DateInputSegmentGroupContext {
100
+ index: InputSignal<number | undefined>;
101
+ }
102
+ declare const DATE_INPUT_SEGMENT_GROUP_CONTEXT: InjectionToken<DateInputSegmentGroupContext>;
103
+ declare function injectDateInputSegmentGroupContext(): DateInputSegmentGroupContext;
104
+ declare class DateInputSegmentGroup implements DateInputSegmentGroupContext {
105
+ /** The range index for this segment group. */
106
+ readonly index: InputSignal<number | undefined>;
107
+ constructor();
108
+ static ɵfac: i0.ɵɵFactoryDeclaration<DateInputSegmentGroup, never>;
109
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DateInputSegmentGroup, "[dateInputSegmentGroup]", ["dateInputSegmentGroup"], { "index": { "alias": "index"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
110
+ }
111
+
112
+ declare class DateInputSegment implements AfterContentInit {
113
+ readonly segment: InputSignal<DateSegment>;
114
+ private readonly ownsTextContent;
115
+ private readonly elementRef;
116
+ constructor();
117
+ ngAfterContentInit(): void;
118
+ static ɵfac: i0.ɵɵFactoryDeclaration<DateInputSegment, never>;
119
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DateInputSegment, "[dateInputSegment]", ["dateInputSegment"], { "segment": { "alias": "segment"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
120
+ }
121
+
122
+ declare class DateInputHiddenInput {
123
+ readonly index: InputSignal<number | undefined>;
124
+ readonly name: InputSignal<string | undefined>;
125
+ constructor();
126
+ static ɵfac: i0.ɵɵFactoryDeclaration<DateInputHiddenInput, never>;
127
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DateInputHiddenInput, "input[dateInputHiddenInput]", ["dateInputHiddenInput"], { "index": { "alias": "index"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
128
+ }
129
+
130
+ interface DateInputContextTemplate {
131
+ $implicit: UseDateInputReturn["api"];
132
+ api: UseDateInputReturn["api"];
133
+ }
134
+ declare class DateInputContext {
135
+ static ngTemplateContextGuard(_directive: DateInputContext, context: unknown): context is DateInputContextTemplate;
136
+ private readonly dateInput;
137
+ private readonly templateRef;
138
+ private readonly viewContainer;
139
+ constructor();
140
+ static ɵfac: i0.ɵɵFactoryDeclaration<DateInputContext, never>;
141
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DateInputContext, "[dateInputContext]", ["dateInputContext"], {}, {}, never, never, true, never>;
142
+ }
143
+
144
+ interface DateInputSegmentContextTemplate {
145
+ $implicit: DateSegment;
146
+ segment: DateSegment;
147
+ index: number;
148
+ }
149
+ declare class DateInputSegmentContext {
150
+ static ngTemplateContextGuard(_directive: DateInputSegmentContext, context: unknown): context is DateInputSegmentContextTemplate;
151
+ private readonly dateInput;
152
+ private readonly segmentGroup;
153
+ private readonly templateRef;
154
+ private readonly viewContainer;
155
+ private readonly views;
156
+ constructor();
157
+ private syncSegmentViews;
158
+ static ɵfac: i0.ɵɵFactoryDeclaration<DateInputSegmentContext, never>;
159
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DateInputSegmentContext, "[dateInputSegmentContext]", ["dateInputSegmentContext"], {}, {}, never, never, true, never>;
160
+ }
161
+
162
+ export { DATE_INPUT_CONTEXT, DATE_INPUT_SEGMENT_GROUP_CONTEXT, DateInputContext, DateInputControl, DateInputHiddenInput, DateInputLabel, DateInputRoot, DateInputRootProvider, DateInputSegment, DateInputSegmentContext, DateInputSegmentGroup, injectDateInputContext, injectDateInputSegmentGroupContext, useDateInput };
163
+ export type { DateInputContextTemplate, DateInputSegmentContextTemplate, DateInputSegmentGroupContext, UseDateInputOptions, UseDateInputProps, UseDateInputReturn };
164
+ //# sourceMappingURL=wirekyt-angular-date-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wirekyt-angular-date-input.d.ts","sources":["../../src/components/date-input/use.ts","../../src/components/date-input/use-context.ts","../../src/components/date-input/root.ts","../../src/components/date-input/root-provider.ts","../../src/components/date-input/label.ts","../../src/components/date-input/control.ts","../../src/components/date-input/segment-group.ts","../../src/components/date-input/segment.ts","../../src/components/date-input/hidden-input.ts","../../src/components/date-input/context.ts","../../src/components/date-input/segment-context.ts"],"mappings":"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","names":["DateInputElementIds","DateInputSelectionMode","DateInputIntlTranslations","DateInputSegments","DateInputFormatDateDetails","DateInputFocusChangeDetails","DateInputPlaceholderChangeDetails","DateInputValueChangeDetails","DateInputDateSegment"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wirekyt/angular",
3
- "version": "0.0.11",
3
+ "version": "0.0.12",
4
4
  "description": "Angular adapter for Wirekyt",
5
5
  "files": [
6
6
  "dist"
@@ -54,6 +54,14 @@
54
54
  "types": "./dist/types/wirekyt-angular-collection.d.ts",
55
55
  "default": "./dist/fesm2022/wirekyt-angular-collection.mjs"
56
56
  },
57
+ "./combobox": {
58
+ "types": "./dist/types/wirekyt-angular-combobox.d.ts",
59
+ "default": "./dist/fesm2022/wirekyt-angular-combobox.mjs"
60
+ },
61
+ "./date-input": {
62
+ "types": "./dist/types/wirekyt-angular-date-input.d.ts",
63
+ "default": "./dist/fesm2022/wirekyt-angular-date-input.mjs"
64
+ },
57
65
  "./field": {
58
66
  "types": "./dist/types/wirekyt-angular-field.d.ts",
59
67
  "default": "./dist/fesm2022/wirekyt-angular-field.mjs"
@@ -62,11 +70,7 @@
62
70
  "types": "./dist/types/wirekyt-angular-fieldset.d.ts",
63
71
  "default": "./dist/fesm2022/wirekyt-angular-fieldset.mjs"
64
72
  },
65
- "./package.json": "./package.json",
66
- "./combobox": {
67
- "types": "./dist/types/wirekyt-angular-combobox.d.ts",
68
- "default": "./dist/fesm2022/wirekyt-angular-combobox.mjs"
69
- }
73
+ "./package.json": "./package.json"
70
74
  },
71
75
  "publishConfig": {
72
76
  "access": "public",
@@ -75,7 +79,7 @@
75
79
  "dependencies": {
76
80
  "@internationalized/date": "^3.12.3",
77
81
  "@internationalized/number": "^3.6.7",
78
- "@wirekyt/dom": "0.0.11",
82
+ "@wirekyt/dom": "0.0.12",
79
83
  "tslib": "^2.8.1"
80
84
  },
81
85
  "peerDependencies": {