@wirekyt/angular 0.0.25 → 0.0.28
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/dist/fesm2022/wirekyt-angular-date-input.mjs +0 -1
- package/dist/fesm2022/wirekyt-angular-date-input.mjs.map +1 -1
- package/dist/fesm2022/wirekyt-angular-drawer.mjs +0 -2
- package/dist/fesm2022/wirekyt-angular-drawer.mjs.map +1 -1
- package/dist/fesm2022/wirekyt-angular-editable.mjs +499 -0
- package/dist/fesm2022/wirekyt-angular-editable.mjs.map +1 -0
- package/dist/fesm2022/wirekyt-angular-file-upload.mjs +604 -0
- package/dist/fesm2022/wirekyt-angular-file-upload.mjs.map +1 -0
- package/dist/fesm2022/wirekyt-angular-floating-panel.mjs +0 -36
- package/dist/fesm2022/wirekyt-angular-floating-panel.mjs.map +1 -1
- package/dist/fesm2022/wirekyt-angular-hover-card.mjs +430 -0
- package/dist/fesm2022/wirekyt-angular-hover-card.mjs.map +1 -0
- package/dist/package.json +13 -1
- package/dist/types/wirekyt-angular-checkbox.d.ts +1 -1
- package/dist/types/wirekyt-angular-color-picker.d.ts +1 -1
- package/dist/types/wirekyt-angular-combobox.d.ts +1 -1
- package/dist/types/wirekyt-angular-date-input.d.ts +0 -1
- package/dist/types/wirekyt-angular-date-input.d.ts.map +1 -1
- package/dist/types/wirekyt-angular-date-picker.d.ts +1 -1
- package/dist/types/wirekyt-angular-drawer.d.ts +0 -2
- package/dist/types/wirekyt-angular-drawer.d.ts.map +1 -1
- package/dist/types/wirekyt-angular-editable.d.ts +153 -0
- package/dist/types/wirekyt-angular-editable.d.ts.map +1 -0
- package/dist/types/wirekyt-angular-file-upload.d.ts +182 -0
- package/dist/types/wirekyt-angular-file-upload.d.ts.map +1 -0
- package/dist/types/wirekyt-angular-floating-panel.d.ts +0 -36
- package/dist/types/wirekyt-angular-floating-panel.d.ts.map +1 -1
- package/dist/types/wirekyt-angular-hover-card.d.ts +122 -0
- package/dist/types/wirekyt-angular-hover-card.d.ts.map +1 -0
- package/package.json +14 -2
|
@@ -0,0 +1,499 @@
|
|
|
1
|
+
import * as editable from '@wirekyt/dom/machines/editable';
|
|
2
|
+
export { anatomy as editableAnatomy } from '@wirekyt/dom/machines/editable';
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
4
|
+
import { InjectionToken, inject, input, model, booleanAttribute, output, signal, effect, DestroyRef, Renderer2, ElementRef, forwardRef, Directive, 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 EDITABLE_CONTEXT = new InjectionToken("WIREKYT.EDITABLE_CONTEXT");
|
|
10
|
+
function injectEditableContext() {
|
|
11
|
+
return inject(EDITABLE_CONTEXT);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function useEditable(options = { context: () => ({}) }) {
|
|
15
|
+
const locale = injectLocale();
|
|
16
|
+
const environment = injectEnvironment();
|
|
17
|
+
const field = injectFieldContextOptional();
|
|
18
|
+
const fallbackId = createId();
|
|
19
|
+
return useMachine({
|
|
20
|
+
machine: editable.machine,
|
|
21
|
+
context: () => {
|
|
22
|
+
const props = options.context();
|
|
23
|
+
const merged = {
|
|
24
|
+
dir: locale.dir,
|
|
25
|
+
getRootNode: environment.getRootNode,
|
|
26
|
+
...props,
|
|
27
|
+
id: props.id ?? fallbackId,
|
|
28
|
+
};
|
|
29
|
+
if (field) {
|
|
30
|
+
const fieldIds = field.ids;
|
|
31
|
+
merged["ids"] = {
|
|
32
|
+
label: fieldIds.label,
|
|
33
|
+
input: fieldIds.control,
|
|
34
|
+
...props.ids,
|
|
35
|
+
};
|
|
36
|
+
merged["disabled"] = Boolean(props.disabled) || field.disabled() || undefined;
|
|
37
|
+
merged["invalid"] = Boolean(props.invalid) || field.invalid() || undefined;
|
|
38
|
+
merged["readOnly"] = Boolean(props.readOnly) || field.readOnly() || undefined;
|
|
39
|
+
merged["required"] = Boolean(props.required) || field.required() || undefined;
|
|
40
|
+
}
|
|
41
|
+
return merged;
|
|
42
|
+
},
|
|
43
|
+
connect: (service, normalize) => editable.connect(service, normalize),
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
class EditableRoot {
|
|
48
|
+
id = input(undefined, /* @ts-ignore */
|
|
49
|
+
...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
|
|
50
|
+
elementIds = input(undefined, { ...(ngDevMode ? { debugName: "elementIds" } : /* istanbul ignore next */ {}), alias: "ids" });
|
|
51
|
+
value = model(undefined, /* @ts-ignore */
|
|
52
|
+
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
53
|
+
defaultValue = input(undefined, /* @ts-ignore */
|
|
54
|
+
...(ngDevMode ? [{ debugName: "defaultValue" }] : /* istanbul ignore next */ []));
|
|
55
|
+
edit = model(undefined, /* @ts-ignore */
|
|
56
|
+
...(ngDevMode ? [{ debugName: "edit" }] : /* istanbul ignore next */ []));
|
|
57
|
+
defaultEdit = input(false, { ...(ngDevMode ? { debugName: "defaultEdit" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
58
|
+
disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
59
|
+
readOnly = input(false, { ...(ngDevMode ? { debugName: "readOnly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
60
|
+
invalid = input(false, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
61
|
+
required = input(false, { ...(ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
62
|
+
placeholder = input(undefined, /* @ts-ignore */
|
|
63
|
+
...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
64
|
+
name = input(undefined, /* @ts-ignore */
|
|
65
|
+
...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
|
|
66
|
+
form = input(undefined, /* @ts-ignore */
|
|
67
|
+
...(ngDevMode ? [{ debugName: "form" }] : /* istanbul ignore next */ []));
|
|
68
|
+
maxLength = input(undefined, /* @ts-ignore */
|
|
69
|
+
...(ngDevMode ? [{ debugName: "maxLength" }] : /* istanbul ignore next */ []));
|
|
70
|
+
activationMode = input(undefined, /* @ts-ignore */
|
|
71
|
+
...(ngDevMode ? [{ debugName: "activationMode" }] : /* istanbul ignore next */ []));
|
|
72
|
+
submitMode = input(undefined, /* @ts-ignore */
|
|
73
|
+
...(ngDevMode ? [{ debugName: "submitMode" }] : /* istanbul ignore next */ []));
|
|
74
|
+
autoResize = input(false, { ...(ngDevMode ? { debugName: "autoResize" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
75
|
+
selectOnFocus = input(true, { ...(ngDevMode ? { debugName: "selectOnFocus" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
76
|
+
translations = input(undefined, /* @ts-ignore */
|
|
77
|
+
...(ngDevMode ? [{ debugName: "translations" }] : /* istanbul ignore next */ []));
|
|
78
|
+
finalFocusEl = input(undefined, /* @ts-ignore */
|
|
79
|
+
...(ngDevMode ? [{ debugName: "finalFocusEl" }] : /* istanbul ignore next */ []));
|
|
80
|
+
editDetailsChange = output();
|
|
81
|
+
valueDetailsChange = output();
|
|
82
|
+
valueCommit = output();
|
|
83
|
+
valueRevert = output();
|
|
84
|
+
focusOutside = output();
|
|
85
|
+
pointerDownOutside = output();
|
|
86
|
+
interactOutside = output();
|
|
87
|
+
_disabledFromForm = signal(false, /* @ts-ignore */
|
|
88
|
+
...(ngDevMode ? [{ debugName: "_disabledFromForm" }] : /* istanbul ignore next */ []));
|
|
89
|
+
_pendingInternalWrites = 0;
|
|
90
|
+
_hasExternalBinding = false;
|
|
91
|
+
_hasReceivedFormWrite = false;
|
|
92
|
+
cva = createCvaController({
|
|
93
|
+
value: this.value,
|
|
94
|
+
setDisabled: (disabled) => this._disabledFromForm.set(disabled),
|
|
95
|
+
componentName: "EditableRoot",
|
|
96
|
+
hasExternalModelBinding: () => this._hasExternalBinding,
|
|
97
|
+
});
|
|
98
|
+
machine = useEditable({
|
|
99
|
+
context: () => ({
|
|
100
|
+
id: this.id(),
|
|
101
|
+
ids: this.elementIds(),
|
|
102
|
+
value: this.value(),
|
|
103
|
+
defaultValue: this.defaultValue(),
|
|
104
|
+
edit: this.edit(),
|
|
105
|
+
defaultEdit: this.defaultEdit(),
|
|
106
|
+
disabled: this.disabled() || this._disabledFromForm(),
|
|
107
|
+
readOnly: this.readOnly(),
|
|
108
|
+
invalid: this.invalid(),
|
|
109
|
+
required: this.required(),
|
|
110
|
+
placeholder: this.placeholder(),
|
|
111
|
+
name: this.name(),
|
|
112
|
+
form: this.form(),
|
|
113
|
+
maxLength: this.maxLength(),
|
|
114
|
+
activationMode: this.activationMode(),
|
|
115
|
+
submitMode: this.submitMode(),
|
|
116
|
+
autoResize: this.autoResize(),
|
|
117
|
+
selectOnFocus: this.selectOnFocus(),
|
|
118
|
+
translations: this.translations(),
|
|
119
|
+
finalFocusEl: this.finalFocusEl(),
|
|
120
|
+
onValueChange: (details) => {
|
|
121
|
+
if (this.value() !== details.value) {
|
|
122
|
+
this._pendingInternalWrites++;
|
|
123
|
+
this.value.set(details.value);
|
|
124
|
+
}
|
|
125
|
+
this.cva.notifyValueChange(details.value);
|
|
126
|
+
this.valueDetailsChange.emit(details);
|
|
127
|
+
},
|
|
128
|
+
onValueCommit: (details) => {
|
|
129
|
+
this.valueCommit.emit(details);
|
|
130
|
+
this.cva.markTouched();
|
|
131
|
+
},
|
|
132
|
+
onValueRevert: (details) => {
|
|
133
|
+
this.valueRevert.emit(details);
|
|
134
|
+
},
|
|
135
|
+
onEditChange: (details) => {
|
|
136
|
+
this.edit.set(details.edit);
|
|
137
|
+
this.editDetailsChange.emit(details);
|
|
138
|
+
if (!details.edit) {
|
|
139
|
+
this.cva.markTouched();
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
onFocusOutside: (event) => this.focusOutside.emit(event),
|
|
143
|
+
onPointerDownOutside: (event) => this.pointerDownOutside.emit(event),
|
|
144
|
+
onInteractOutside: (event) => this.interactOutside.emit(event),
|
|
145
|
+
}),
|
|
146
|
+
});
|
|
147
|
+
state = this.machine.state;
|
|
148
|
+
api = this.machine.api;
|
|
149
|
+
service = this.machine.service;
|
|
150
|
+
send = this.machine.send;
|
|
151
|
+
constructor() {
|
|
152
|
+
let firstRun = true;
|
|
153
|
+
effect(() => {
|
|
154
|
+
void this.value();
|
|
155
|
+
if (firstRun) {
|
|
156
|
+
firstRun = false;
|
|
157
|
+
this._pendingInternalWrites = 0;
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (this._pendingInternalWrites > 0) {
|
|
161
|
+
this._pendingInternalWrites--;
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
this._hasExternalBinding = true;
|
|
165
|
+
});
|
|
166
|
+
bindProps({
|
|
167
|
+
elementRef: inject(ElementRef),
|
|
168
|
+
renderer: inject(Renderer2),
|
|
169
|
+
destroyRef: inject(DestroyRef),
|
|
170
|
+
props: () => this.api().getRootProps(),
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
writeValue(value) {
|
|
174
|
+
const next = value === null ? undefined : value;
|
|
175
|
+
const current = this.value();
|
|
176
|
+
if (!this._hasReceivedFormWrite && current !== undefined) {
|
|
177
|
+
this._hasExternalBinding = true;
|
|
178
|
+
}
|
|
179
|
+
this._hasReceivedFormWrite = true;
|
|
180
|
+
if (current !== next) {
|
|
181
|
+
this._pendingInternalWrites++;
|
|
182
|
+
}
|
|
183
|
+
this.cva.writeValue(value);
|
|
184
|
+
}
|
|
185
|
+
registerOnChange(fn) {
|
|
186
|
+
this.cva.registerOnChange(fn);
|
|
187
|
+
}
|
|
188
|
+
registerOnTouched(fn) {
|
|
189
|
+
this.cva.registerOnTouched(fn);
|
|
190
|
+
}
|
|
191
|
+
setDisabledState(disabled) {
|
|
192
|
+
this.cva.setDisabledState(disabled);
|
|
193
|
+
}
|
|
194
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
195
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: EditableRoot, isStandalone: true, selector: "[editable-root]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, elementIds: { classPropertyName: "elementIds", 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 }, edit: { classPropertyName: "edit", publicName: "edit", isSignal: true, isRequired: false, transformFunction: null }, defaultEdit: { classPropertyName: "defaultEdit", publicName: "defaultEdit", 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 }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", 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 }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, activationMode: { classPropertyName: "activationMode", publicName: "activationMode", isSignal: true, isRequired: false, transformFunction: null }, submitMode: { classPropertyName: "submitMode", publicName: "submitMode", isSignal: true, isRequired: false, transformFunction: null }, autoResize: { classPropertyName: "autoResize", publicName: "autoResize", isSignal: true, isRequired: false, transformFunction: null }, selectOnFocus: { classPropertyName: "selectOnFocus", publicName: "selectOnFocus", isSignal: true, isRequired: false, transformFunction: null }, translations: { classPropertyName: "translations", publicName: "translations", isSignal: true, isRequired: false, transformFunction: null }, finalFocusEl: { classPropertyName: "finalFocusEl", publicName: "finalFocusEl", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", edit: "editChange", editDetailsChange: "editDetailsChange", valueDetailsChange: "valueDetailsChange", valueCommit: "valueCommit", valueRevert: "valueRevert", focusOutside: "focusOutside", pointerDownOutside: "pointerDownOutside", interactOutside: "interactOutside" }, providers: [
|
|
196
|
+
{ provide: EDITABLE_CONTEXT, useExisting: forwardRef(() => EditableRoot) },
|
|
197
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditableRoot), multi: true },
|
|
198
|
+
], exportAs: ["editableRoot"], ngImport: i0 });
|
|
199
|
+
}
|
|
200
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableRoot, decorators: [{
|
|
201
|
+
type: Directive,
|
|
202
|
+
args: [{
|
|
203
|
+
selector: "[editable-root]",
|
|
204
|
+
standalone: true,
|
|
205
|
+
exportAs: "editableRoot",
|
|
206
|
+
providers: [
|
|
207
|
+
{ provide: EDITABLE_CONTEXT, useExisting: forwardRef(() => EditableRoot) },
|
|
208
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditableRoot), multi: true },
|
|
209
|
+
],
|
|
210
|
+
}]
|
|
211
|
+
}], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], elementIds: [{ 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 }] }], edit: [{ type: i0.Input, args: [{ isSignal: true, alias: "edit", required: false }] }, { type: i0.Output, args: ["editChange"] }], defaultEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultEdit", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], form: [{ type: i0.Input, args: [{ isSignal: true, alias: "form", required: false }] }], maxLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxLength", required: false }] }], activationMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "activationMode", required: false }] }], submitMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "submitMode", required: false }] }], autoResize: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoResize", required: false }] }], selectOnFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectOnFocus", required: false }] }], translations: [{ type: i0.Input, args: [{ isSignal: true, alias: "translations", required: false }] }], finalFocusEl: [{ type: i0.Input, args: [{ isSignal: true, alias: "finalFocusEl", required: false }] }], editDetailsChange: [{ type: i0.Output, args: ["editDetailsChange"] }], valueDetailsChange: [{ type: i0.Output, args: ["valueDetailsChange"] }], valueCommit: [{ type: i0.Output, args: ["valueCommit"] }], valueRevert: [{ type: i0.Output, args: ["valueRevert"] }], focusOutside: [{ type: i0.Output, args: ["focusOutside"] }], pointerDownOutside: [{ type: i0.Output, args: ["pointerDownOutside"] }], interactOutside: [{ type: i0.Output, args: ["interactOutside"] }] } });
|
|
212
|
+
|
|
213
|
+
class EditableRootProvider {
|
|
214
|
+
value = input.required(/* @ts-ignore */
|
|
215
|
+
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
216
|
+
get state() {
|
|
217
|
+
return this.value().state;
|
|
218
|
+
}
|
|
219
|
+
get api() {
|
|
220
|
+
return this.value().api;
|
|
221
|
+
}
|
|
222
|
+
get service() {
|
|
223
|
+
return this.value().service;
|
|
224
|
+
}
|
|
225
|
+
get send() {
|
|
226
|
+
return this.value().send;
|
|
227
|
+
}
|
|
228
|
+
constructor() {
|
|
229
|
+
bindProps({
|
|
230
|
+
elementRef: inject(ElementRef),
|
|
231
|
+
renderer: inject(Renderer2),
|
|
232
|
+
destroyRef: inject(DestroyRef),
|
|
233
|
+
props: () => this.value().api().getRootProps(),
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableRootProvider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
237
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: EditableRootProvider, isStandalone: true, selector: "[editable-root-provider]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, providers: [{ provide: EDITABLE_CONTEXT, useExisting: forwardRef(() => EditableRootProvider) }], exportAs: ["editableRootProvider"], ngImport: i0 });
|
|
238
|
+
}
|
|
239
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableRootProvider, decorators: [{
|
|
240
|
+
type: Directive,
|
|
241
|
+
args: [{
|
|
242
|
+
selector: "[editable-root-provider]",
|
|
243
|
+
standalone: true,
|
|
244
|
+
exportAs: "editableRootProvider",
|
|
245
|
+
providers: [{ provide: EDITABLE_CONTEXT, useExisting: forwardRef(() => EditableRootProvider) }],
|
|
246
|
+
}]
|
|
247
|
+
}], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }] } });
|
|
248
|
+
|
|
249
|
+
class EditableArea {
|
|
250
|
+
constructor() {
|
|
251
|
+
const context = injectEditableContext();
|
|
252
|
+
bindProps({
|
|
253
|
+
elementRef: inject(ElementRef),
|
|
254
|
+
renderer: inject(Renderer2),
|
|
255
|
+
destroyRef: inject(DestroyRef),
|
|
256
|
+
props: () => context.api().getAreaProps(),
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableArea, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
260
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: EditableArea, isStandalone: true, selector: "[editable-area]", exportAs: ["editableArea"], ngImport: i0 });
|
|
261
|
+
}
|
|
262
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableArea, decorators: [{
|
|
263
|
+
type: Directive,
|
|
264
|
+
args: [{
|
|
265
|
+
selector: "[editable-area]",
|
|
266
|
+
standalone: true,
|
|
267
|
+
exportAs: "editableArea",
|
|
268
|
+
}]
|
|
269
|
+
}], ctorParameters: () => [] });
|
|
270
|
+
|
|
271
|
+
class EditableInput {
|
|
272
|
+
constructor() {
|
|
273
|
+
const context = injectEditableContext();
|
|
274
|
+
const field = injectFieldContextOptional();
|
|
275
|
+
const elementRef = inject(ElementRef);
|
|
276
|
+
const renderer = inject(Renderer2);
|
|
277
|
+
const destroyRef = inject(DestroyRef);
|
|
278
|
+
bindProps({
|
|
279
|
+
elementRef,
|
|
280
|
+
renderer,
|
|
281
|
+
destroyRef,
|
|
282
|
+
props: () => {
|
|
283
|
+
const props = context.api().getInputProps();
|
|
284
|
+
const { defaultValue: _defaultValue, ...rest } = props;
|
|
285
|
+
const describedBy = field?.ariaDescribedby();
|
|
286
|
+
if (describedBy) {
|
|
287
|
+
rest["aria-describedby"] = describedBy;
|
|
288
|
+
}
|
|
289
|
+
return rest;
|
|
290
|
+
},
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableInput, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
294
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: EditableInput, isStandalone: true, selector: "[editable-input]", exportAs: ["editableInput"], ngImport: i0 });
|
|
295
|
+
}
|
|
296
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableInput, decorators: [{
|
|
297
|
+
type: Directive,
|
|
298
|
+
args: [{
|
|
299
|
+
selector: "[editable-input]",
|
|
300
|
+
standalone: true,
|
|
301
|
+
exportAs: "editableInput",
|
|
302
|
+
}]
|
|
303
|
+
}], ctorParameters: () => [] });
|
|
304
|
+
|
|
305
|
+
class EditablePreview {
|
|
306
|
+
ownsTextContent = signal(false, /* @ts-ignore */
|
|
307
|
+
...(ngDevMode ? [{ debugName: "ownsTextContent" }] : /* istanbul ignore next */ []));
|
|
308
|
+
elementRef = inject(ElementRef);
|
|
309
|
+
constructor() {
|
|
310
|
+
const context = injectEditableContext();
|
|
311
|
+
const elementRef = this.elementRef;
|
|
312
|
+
const renderer = inject(Renderer2);
|
|
313
|
+
const destroyRef = inject(DestroyRef);
|
|
314
|
+
bindProps({
|
|
315
|
+
elementRef,
|
|
316
|
+
renderer,
|
|
317
|
+
destroyRef,
|
|
318
|
+
props: () => {
|
|
319
|
+
const props = context.api().getPreviewProps();
|
|
320
|
+
const { children: _children, onDoubleClick, ...rest } = props;
|
|
321
|
+
if (typeof onDoubleClick === "function") {
|
|
322
|
+
const remapped = rest;
|
|
323
|
+
remapped.onDblClick = onDoubleClick;
|
|
324
|
+
}
|
|
325
|
+
return rest;
|
|
326
|
+
},
|
|
327
|
+
});
|
|
328
|
+
effect(() => {
|
|
329
|
+
if (!this.ownsTextContent())
|
|
330
|
+
return;
|
|
331
|
+
const el = elementRef.nativeElement;
|
|
332
|
+
if (!el)
|
|
333
|
+
return;
|
|
334
|
+
const text = context.api().valueText;
|
|
335
|
+
renderer.setProperty(el, "textContent", text);
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
ngAfterContentInit() {
|
|
339
|
+
this.ownsTextContent.set(this.elementRef.nativeElement.childNodes.length === 0);
|
|
340
|
+
}
|
|
341
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditablePreview, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
342
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: EditablePreview, isStandalone: true, selector: "[editable-preview]", exportAs: ["editablePreview"], ngImport: i0 });
|
|
343
|
+
}
|
|
344
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditablePreview, decorators: [{
|
|
345
|
+
type: Directive,
|
|
346
|
+
args: [{
|
|
347
|
+
selector: "[editable-preview]",
|
|
348
|
+
standalone: true,
|
|
349
|
+
exportAs: "editablePreview",
|
|
350
|
+
}]
|
|
351
|
+
}], ctorParameters: () => [] });
|
|
352
|
+
|
|
353
|
+
class EditableLabel {
|
|
354
|
+
constructor() {
|
|
355
|
+
const context = injectEditableContext();
|
|
356
|
+
bindProps({
|
|
357
|
+
elementRef: inject(ElementRef),
|
|
358
|
+
renderer: inject(Renderer2),
|
|
359
|
+
destroyRef: inject(DestroyRef),
|
|
360
|
+
props: () => context.api().getLabelProps(),
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
364
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: EditableLabel, isStandalone: true, selector: "[editable-label]", exportAs: ["editableLabel"], ngImport: i0 });
|
|
365
|
+
}
|
|
366
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableLabel, decorators: [{
|
|
367
|
+
type: Directive,
|
|
368
|
+
args: [{
|
|
369
|
+
selector: "[editable-label]",
|
|
370
|
+
standalone: true,
|
|
371
|
+
exportAs: "editableLabel",
|
|
372
|
+
}]
|
|
373
|
+
}], ctorParameters: () => [] });
|
|
374
|
+
|
|
375
|
+
class EditableControl {
|
|
376
|
+
constructor() {
|
|
377
|
+
const context = injectEditableContext();
|
|
378
|
+
bindProps({
|
|
379
|
+
elementRef: inject(ElementRef),
|
|
380
|
+
renderer: inject(Renderer2),
|
|
381
|
+
destroyRef: inject(DestroyRef),
|
|
382
|
+
props: () => context.api().getControlProps(),
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableControl, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
386
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: EditableControl, isStandalone: true, selector: "[editable-control]", exportAs: ["editableControl"], ngImport: i0 });
|
|
387
|
+
}
|
|
388
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableControl, decorators: [{
|
|
389
|
+
type: Directive,
|
|
390
|
+
args: [{
|
|
391
|
+
selector: "[editable-control]",
|
|
392
|
+
standalone: true,
|
|
393
|
+
exportAs: "editableControl",
|
|
394
|
+
}]
|
|
395
|
+
}], ctorParameters: () => [] });
|
|
396
|
+
|
|
397
|
+
class EditableEditTrigger {
|
|
398
|
+
constructor() {
|
|
399
|
+
const context = injectEditableContext();
|
|
400
|
+
bindProps({
|
|
401
|
+
elementRef: inject(ElementRef),
|
|
402
|
+
renderer: inject(Renderer2),
|
|
403
|
+
destroyRef: inject(DestroyRef),
|
|
404
|
+
props: () => context.api().getEditTriggerProps(),
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableEditTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
408
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: EditableEditTrigger, isStandalone: true, selector: "[editable-edit-trigger]", exportAs: ["editableEditTrigger"], ngImport: i0 });
|
|
409
|
+
}
|
|
410
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableEditTrigger, decorators: [{
|
|
411
|
+
type: Directive,
|
|
412
|
+
args: [{
|
|
413
|
+
selector: "[editable-edit-trigger]",
|
|
414
|
+
standalone: true,
|
|
415
|
+
exportAs: "editableEditTrigger",
|
|
416
|
+
}]
|
|
417
|
+
}], ctorParameters: () => [] });
|
|
418
|
+
|
|
419
|
+
class EditableSubmitTrigger {
|
|
420
|
+
constructor() {
|
|
421
|
+
const context = injectEditableContext();
|
|
422
|
+
bindProps({
|
|
423
|
+
elementRef: inject(ElementRef),
|
|
424
|
+
renderer: inject(Renderer2),
|
|
425
|
+
destroyRef: inject(DestroyRef),
|
|
426
|
+
props: () => context.api().getSubmitTriggerProps(),
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableSubmitTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
430
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: EditableSubmitTrigger, isStandalone: true, selector: "[editable-submit-trigger]", exportAs: ["editableSubmitTrigger"], ngImport: i0 });
|
|
431
|
+
}
|
|
432
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableSubmitTrigger, decorators: [{
|
|
433
|
+
type: Directive,
|
|
434
|
+
args: [{
|
|
435
|
+
selector: "[editable-submit-trigger]",
|
|
436
|
+
standalone: true,
|
|
437
|
+
exportAs: "editableSubmitTrigger",
|
|
438
|
+
}]
|
|
439
|
+
}], ctorParameters: () => [] });
|
|
440
|
+
|
|
441
|
+
class EditableCancelTrigger {
|
|
442
|
+
constructor() {
|
|
443
|
+
const context = injectEditableContext();
|
|
444
|
+
bindProps({
|
|
445
|
+
elementRef: inject(ElementRef),
|
|
446
|
+
renderer: inject(Renderer2),
|
|
447
|
+
destroyRef: inject(DestroyRef),
|
|
448
|
+
props: () => context.api().getCancelTriggerProps(),
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableCancelTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
452
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: EditableCancelTrigger, isStandalone: true, selector: "[editable-cancel-trigger]", exportAs: ["editableCancelTrigger"], ngImport: i0 });
|
|
453
|
+
}
|
|
454
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableCancelTrigger, decorators: [{
|
|
455
|
+
type: Directive,
|
|
456
|
+
args: [{
|
|
457
|
+
selector: "[editable-cancel-trigger]",
|
|
458
|
+
standalone: true,
|
|
459
|
+
exportAs: "editableCancelTrigger",
|
|
460
|
+
}]
|
|
461
|
+
}], ctorParameters: () => [] });
|
|
462
|
+
|
|
463
|
+
class EditableContext {
|
|
464
|
+
static ngTemplateContextGuard(_directive, context) {
|
|
465
|
+
void context;
|
|
466
|
+
return true;
|
|
467
|
+
}
|
|
468
|
+
editable = injectEditableContext();
|
|
469
|
+
templateRef = inject(TemplateRef);
|
|
470
|
+
viewContainer = inject(ViewContainerRef);
|
|
471
|
+
constructor() {
|
|
472
|
+
const view = this.viewContainer.createEmbeddedView(this.templateRef, {
|
|
473
|
+
$implicit: this.editable.api,
|
|
474
|
+
api: this.editable.api,
|
|
475
|
+
});
|
|
476
|
+
effect(() => {
|
|
477
|
+
this.editable.api();
|
|
478
|
+
view.detectChanges();
|
|
479
|
+
});
|
|
480
|
+
inject(DestroyRef).onDestroy(() => view.destroy());
|
|
481
|
+
}
|
|
482
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableContext, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
483
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: EditableContext, isStandalone: true, selector: "[editable-context]", exportAs: ["editableContext"], ngImport: i0 });
|
|
484
|
+
}
|
|
485
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableContext, decorators: [{
|
|
486
|
+
type: Directive,
|
|
487
|
+
args: [{
|
|
488
|
+
selector: "[editable-context]",
|
|
489
|
+
standalone: true,
|
|
490
|
+
exportAs: "editableContext",
|
|
491
|
+
}]
|
|
492
|
+
}], ctorParameters: () => [] });
|
|
493
|
+
|
|
494
|
+
/**
|
|
495
|
+
* Generated bundle index. Do not edit.
|
|
496
|
+
*/
|
|
497
|
+
|
|
498
|
+
export { EDITABLE_CONTEXT, EditableArea, EditableCancelTrigger, EditableContext, EditableControl, EditableEditTrigger, EditableInput, EditableLabel, EditablePreview, EditableRoot, EditableRootProvider, EditableSubmitTrigger, injectEditableContext, useEditable };
|
|
499
|
+
//# sourceMappingURL=wirekyt-angular-editable.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wirekyt-angular-editable.mjs","sources":["../../src/components/editable/use-context.ts","../../src/components/editable/use.ts","../../src/components/editable/root.ts","../../src/components/editable/root-provider.ts","../../src/components/editable/area.ts","../../src/components/editable/input.ts","../../src/components/editable/preview.ts","../../src/components/editable/label.ts","../../src/components/editable/control.ts","../../src/components/editable/edit-trigger.ts","../../src/components/editable/submit-trigger.ts","../../src/components/editable/cancel-trigger.ts","../../src/components/editable/context.ts","../../src/components/editable/wirekyt-angular-editable.ts"],"sourcesContent":["import { InjectionToken, inject } from \"@angular/core\";\n\nimport type { UseEditableReturn } from \"./use\";\n\nexport const EDITABLE_CONTEXT = new InjectionToken<UseEditableReturn>(\"WIREKYT.EDITABLE_CONTEXT\");\n\nexport function injectEditableContext(): UseEditableReturn {\n return inject(EDITABLE_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 editable from \"@wirekyt/dom/machines/editable\";\n\nimport type { EditableMachineProps } from \"./types\";\n\ntype OptionalId<T extends { id: string }> = Omit<T, \"id\"> & { id?: string };\n\nexport interface UseEditableProps extends OptionalId<\n Omit<EditableMachineProps, \"dir\" | \"getRootNode\">\n> {}\n\nexport type UseEditableReturn = UseMachineReturn<\n editable.Service[\"state\"],\n editable.Api,\n editable.Service\n>;\n\nexport interface UseEditableOptions {\n context: () => UseEditableProps;\n}\n\ntype EditableContext = Record<string, unknown>;\ntype EditableSchema = editable.Machine extends Machine<infer TSchema> ? TSchema : never;\n\nexport function useEditable(\n options: UseEditableOptions = { context: () => ({}) },\n): UseEditableReturn {\n const locale = injectLocale();\n const environment = injectEnvironment();\n const field = injectFieldContextOptional();\n const fallbackId = createId();\n\n return useMachine<EditableSchema, editable.Api>({\n machine: editable.machine,\n context: () => {\n const props = options.context();\n const merged: Record<string, unknown> = {\n dir: locale.dir,\n getRootNode: environment.getRootNode,\n ...props,\n id: props.id ?? fallbackId,\n };\n if (field) {\n const fieldIds = field.ids;\n merged[\"ids\"] = {\n label: fieldIds.label,\n input: fieldIds.control,\n ...props.ids,\n };\n merged[\"disabled\"] = Boolean(props.disabled) || field.disabled() || undefined;\n merged[\"invalid\"] = Boolean(props.invalid) || field.invalid() || undefined;\n merged[\"readOnly\"] = Boolean(props.readOnly) || field.readOnly() || undefined;\n merged[\"required\"] = Boolean(props.required) || field.required() || undefined;\n }\n return merged as EditableContext;\n },\n connect: (service, normalize) => editable.connect(service, normalize),\n });\n}\n","import type * as editable from \"@wirekyt/dom/machines/editable\";\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 EditableEditChangeDetails,\n EditableElementIds,\n EditableFocusOutsideEvent,\n EditableInteractOutsideEvent,\n EditablePointerDownOutsideEvent,\n EditableValueChangeDetails,\n} from \"./types\";\n\nimport { useEditable, type UseEditableReturn } from \"./use\";\nimport { EDITABLE_CONTEXT } from \"./use-context\";\n\n@Directive({\n selector: \"[editable-root]\",\n standalone: true,\n exportAs: \"editableRoot\",\n providers: [\n { provide: EDITABLE_CONTEXT, useExisting: forwardRef(() => EditableRoot) },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditableRoot), multi: true },\n ],\n})\nexport class EditableRoot implements ControlValueAccessor, UseEditableReturn {\n readonly id: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly elementIds: InputSignal<EditableElementIds | undefined> = input<\n EditableElementIds | undefined\n >(undefined, {\n alias: \"ids\",\n });\n readonly value: ModelSignal<string | undefined> = model<string | undefined>(undefined);\n readonly defaultValue: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly edit: ModelSignal<boolean | undefined> = model<boolean | undefined>(undefined);\n readonly defaultEdit: 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 invalid: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly required: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly placeholder: InputSignal<string | { edit: string; preview: string } | undefined> = input<\n string | { edit: string; preview: string } | undefined\n >(undefined);\n readonly name: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly form: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly maxLength: InputSignal<number | undefined> = input<number | undefined>(undefined);\n readonly activationMode: InputSignal<editable.ActivationMode | undefined> = input<\n editable.ActivationMode | undefined\n >(undefined);\n readonly submitMode: InputSignal<editable.SubmitMode | undefined> = input<\n editable.SubmitMode | undefined\n >(undefined);\n readonly autoResize: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly selectOnFocus: InputSignalWithTransform<boolean, unknown> = input(true, {\n transform: booleanAttribute,\n });\n readonly translations: InputSignal<editable.IntlTranslations | undefined> = input<\n editable.IntlTranslations | undefined\n >(undefined);\n readonly finalFocusEl: InputSignal<(() => HTMLElement | null) | undefined> = input<\n (() => HTMLElement | null) | undefined\n >(undefined);\n\n readonly editDetailsChange: OutputEmitterRef<EditableEditChangeDetails> =\n output<EditableEditChangeDetails>();\n readonly valueDetailsChange: OutputEmitterRef<EditableValueChangeDetails> =\n output<EditableValueChangeDetails>();\n readonly valueCommit: OutputEmitterRef<EditableValueChangeDetails> =\n output<EditableValueChangeDetails>();\n readonly valueRevert: OutputEmitterRef<EditableValueChangeDetails> =\n output<EditableValueChangeDetails>();\n readonly focusOutside: OutputEmitterRef<EditableFocusOutsideEvent> =\n output<EditableFocusOutsideEvent>();\n readonly pointerDownOutside: OutputEmitterRef<EditablePointerDownOutsideEvent> =\n output<EditablePointerDownOutsideEvent>();\n readonly interactOutside: OutputEmitterRef<EditableInteractOutsideEvent> =\n output<EditableInteractOutsideEvent>();\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<string>({\n value: this.value,\n setDisabled: (disabled) => this._disabledFromForm.set(disabled),\n componentName: \"EditableRoot\",\n hasExternalModelBinding: () => this._hasExternalBinding,\n });\n\n private readonly machine = useEditable({\n context: () => ({\n id: this.id(),\n ids: this.elementIds(),\n value: this.value(),\n defaultValue: this.defaultValue(),\n edit: this.edit(),\n defaultEdit: this.defaultEdit(),\n disabled: this.disabled() || this._disabledFromForm(),\n readOnly: this.readOnly(),\n invalid: this.invalid(),\n required: this.required(),\n placeholder: this.placeholder(),\n name: this.name(),\n form: this.form(),\n maxLength: this.maxLength(),\n activationMode: this.activationMode(),\n submitMode: this.submitMode(),\n autoResize: this.autoResize(),\n selectOnFocus: this.selectOnFocus(),\n translations: this.translations(),\n finalFocusEl: this.finalFocusEl(),\n onValueChange: (details) => {\n if (this.value() !== details.value) {\n this._pendingInternalWrites++;\n this.value.set(details.value);\n }\n this.cva.notifyValueChange(details.value);\n this.valueDetailsChange.emit(details);\n },\n onValueCommit: (details) => {\n this.valueCommit.emit(details);\n this.cva.markTouched();\n },\n onValueRevert: (details) => {\n this.valueRevert.emit(details);\n },\n onEditChange: (details) => {\n this.edit.set(details.edit);\n this.editDetailsChange.emit(details);\n if (!details.edit) {\n this.cva.markTouched();\n }\n },\n onFocusOutside: (event) => this.focusOutside.emit(event),\n onPointerDownOutside: (event) => this.pointerDownOutside.emit(event),\n onInteractOutside: (event) => this.interactOutside.emit(event),\n }),\n });\n\n readonly state: Signal<editable.Service[\"state\"]> = this.machine.state;\n readonly api: Signal<editable.Api> = this.machine.api;\n readonly service: editable.Service = this.machine.service;\n readonly send: editable.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: string | 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: string | 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","import type * as editable from \"@wirekyt/dom/machines/editable\";\n\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n forwardRef,\n inject,\n input,\n type InputSignal,\n type Signal,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport type { UseEditableReturn } from \"./use\";\n\nimport { EDITABLE_CONTEXT } from \"./use-context\";\n\n@Directive({\n selector: \"[editable-root-provider]\",\n standalone: true,\n exportAs: \"editableRootProvider\",\n providers: [{ provide: EDITABLE_CONTEXT, useExisting: forwardRef(() => EditableRootProvider) }],\n})\nexport class EditableRootProvider implements UseEditableReturn {\n readonly value: InputSignal<UseEditableReturn> = input.required<UseEditableReturn>();\n\n get state(): Signal<editable.Service[\"state\"]> {\n return this.value().state;\n }\n get api(): Signal<editable.Api> {\n return this.value().api;\n }\n get service(): editable.Service {\n return this.value().service;\n }\n get send(): editable.Service[\"send\"] {\n return this.value().send;\n }\n\n constructor() {\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => this.value().api().getRootProps(),\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectEditableContext } from \"./use-context\";\n\n@Directive({\n selector: \"[editable-area]\",\n standalone: true,\n exportAs: \"editableArea\",\n})\nexport class EditableArea {\n constructor() {\n const context = injectEditableContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getAreaProps(),\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\nimport { injectFieldContextOptional } from \"@wirekyt/angular/field\";\n\nimport { injectEditableContext } from \"./use-context\";\n\n@Directive({\n selector: \"[editable-input]\",\n standalone: true,\n exportAs: \"editableInput\",\n})\nexport class EditableInput {\n constructor() {\n const context = injectEditableContext();\n const field = injectFieldContextOptional();\n const elementRef = inject(ElementRef);\n const renderer = inject(Renderer2);\n const destroyRef = inject(DestroyRef);\n\n bindProps({\n elementRef,\n renderer,\n destroyRef,\n props: () => {\n const props = context.api().getInputProps() as Record<string, unknown>;\n const { defaultValue: _defaultValue, ...rest } = props;\n const describedBy = field?.ariaDescribedby();\n if (describedBy) {\n rest[\"aria-describedby\"] = describedBy;\n }\n return rest;\n },\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n effect,\n inject,\n signal,\n type AfterContentInit,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectEditableContext } from \"./use-context\";\n\n@Directive({\n selector: \"[editable-preview]\",\n standalone: true,\n exportAs: \"editablePreview\",\n})\nexport class EditablePreview implements AfterContentInit {\n private readonly ownsTextContent = signal(false);\n private readonly elementRef = inject(ElementRef);\n\n constructor() {\n const context = injectEditableContext();\n const elementRef = this.elementRef;\n const renderer = inject(Renderer2);\n const destroyRef = inject(DestroyRef);\n\n bindProps({\n elementRef,\n renderer,\n destroyRef,\n props: () => {\n const props = context.api().getPreviewProps() as Record<string, unknown>;\n const { children: _children, onDoubleClick, ...rest } = props;\n if (typeof onDoubleClick === \"function\") {\n const remapped = rest as { onDblClick?: unknown };\n remapped.onDblClick = onDoubleClick;\n }\n return rest;\n },\n });\n\n effect(() => {\n if (!this.ownsTextContent()) return;\n const el = elementRef.nativeElement as HTMLElement;\n if (!el) return;\n const text = context.api().valueText;\n renderer.setProperty(el, \"textContent\", text);\n });\n }\n\n ngAfterContentInit(): void {\n this.ownsTextContent.set(this.elementRef.nativeElement.childNodes.length === 0);\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectEditableContext } from \"./use-context\";\n\n@Directive({\n selector: \"[editable-label]\",\n standalone: true,\n exportAs: \"editableLabel\",\n})\nexport class EditableLabel {\n constructor() {\n const context = injectEditableContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getLabelProps(),\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectEditableContext } from \"./use-context\";\n\n@Directive({\n selector: \"[editable-control]\",\n standalone: true,\n exportAs: \"editableControl\",\n})\nexport class EditableControl {\n constructor() {\n const context = injectEditableContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getControlProps(),\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectEditableContext } from \"./use-context\";\n\n@Directive({\n selector: \"[editable-edit-trigger]\",\n standalone: true,\n exportAs: \"editableEditTrigger\",\n})\nexport class EditableEditTrigger {\n constructor() {\n const context = injectEditableContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getEditTriggerProps(),\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectEditableContext } from \"./use-context\";\n\n@Directive({\n selector: \"[editable-submit-trigger]\",\n standalone: true,\n exportAs: \"editableSubmitTrigger\",\n})\nexport class EditableSubmitTrigger {\n constructor() {\n const context = injectEditableContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getSubmitTriggerProps(),\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectEditableContext } from \"./use-context\";\n\n@Directive({\n selector: \"[editable-cancel-trigger]\",\n standalone: true,\n exportAs: \"editableCancelTrigger\",\n})\nexport class EditableCancelTrigger {\n constructor() {\n const context = injectEditableContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getCancelTriggerProps(),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n TemplateRef,\n ViewContainerRef,\n effect,\n inject,\n} from \"@angular/core\";\n\nimport type { UseEditableReturn } from \"./use\";\n\nimport { injectEditableContext } from \"./use-context\";\n\nexport interface EditableContextTemplate {\n $implicit: UseEditableReturn[\"api\"];\n api: UseEditableReturn[\"api\"];\n}\n\n@Directive({\n selector: \"[editable-context]\",\n standalone: true,\n exportAs: \"editableContext\",\n})\nexport class EditableContext {\n static ngTemplateContextGuard(\n _directive: EditableContext,\n context: unknown,\n ): context is EditableContextTemplate {\n void context;\n return true;\n }\n\n private readonly editable = injectEditableContext();\n private readonly templateRef = inject<TemplateRef<EditableContextTemplate>>(TemplateRef);\n private readonly viewContainer = inject(ViewContainerRef);\n\n constructor() {\n const view = this.viewContainer.createEmbeddedView(this.templateRef, {\n $implicit: this.editable.api,\n api: this.editable.api,\n });\n\n effect(() => {\n this.editable.api();\n view.detectChanges();\n });\n\n inject(DestroyRef).onDestroy(() => view.destroy());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|