@harmolody/ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -0
- package/docs/admin-migration.md +56 -0
- package/docs/dynamic-form.md +116 -0
- package/docs/publishing.md +56 -0
- package/docs/styling-and-adapters.md +77 -0
- package/docs/table.md +93 -0
- package/docs/testing.md +22 -0
- package/fesm2022/harmolody-ui.mjs +10477 -0
- package/fesm2022/harmolody-ui.mjs.map +1 -0
- package/package.json +58 -0
- package/styles/theme.css +25 -0
- package/types/harmolody-ui.d.ts +2480 -0
|
@@ -0,0 +1,2480 @@
|
|
|
1
|
+
import { ControlValueAccessor, FormArray, FormControl, FormGroup, ValidationErrors, ValidatorFn } from "@angular/forms";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import { ElementRef, EnvironmentProviders, InjectionToken, OnDestroy, OnInit, TemplateRef, Type } from "@angular/core";
|
|
4
|
+
import { Observable } from "rxjs";
|
|
5
|
+
export type FieldType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'textarea' | 'select' | 'radio' | 'checkbox' | 'switch' | 'autocomplete' | 'search' | 'date' | 'datetime' | 'month' | 'year' | 'file' | 'image-selector' | 'array';
|
|
6
|
+
export type OperatorType = 'eq' | 'neq' | 'in' | 'nin' | 'gt' | 'gte' | 'lt' | 'lte' | 'contains';
|
|
7
|
+
/**
|
|
8
|
+
* Configuration for an action button alongside a form field (select, autocomplete)
|
|
9
|
+
* Useful for "Create New" buttons that open dialogs
|
|
10
|
+
*/
|
|
11
|
+
export interface FieldAction {
|
|
12
|
+
/** Icon name from the icon set */
|
|
13
|
+
icon: string;
|
|
14
|
+
/** Aria label for accessibility */
|
|
15
|
+
ariaLabel: string;
|
|
16
|
+
/** Tooltip text (optional) */
|
|
17
|
+
tooltip?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface FieldConfig {
|
|
20
|
+
key: string;
|
|
21
|
+
label: string;
|
|
22
|
+
type: FieldType;
|
|
23
|
+
placeholder?: string;
|
|
24
|
+
hint?: string;
|
|
25
|
+
helper?: string;
|
|
26
|
+
description?: string;
|
|
27
|
+
note?: string;
|
|
28
|
+
noteVariant?: 'info' | 'warning' | 'success' | 'error' | 'neutral';
|
|
29
|
+
noteClasses?: string;
|
|
30
|
+
defaultValue?: any;
|
|
31
|
+
required?: boolean;
|
|
32
|
+
disabled?: boolean;
|
|
33
|
+
hidden?: boolean;
|
|
34
|
+
validation?: ValidationRule[];
|
|
35
|
+
options?: SelectOption$1[];
|
|
36
|
+
searchable?: boolean;
|
|
37
|
+
minSearchLength?: number;
|
|
38
|
+
/**
|
|
39
|
+
* Enable multiple selection (for select and autocomplete fields)
|
|
40
|
+
* When true:
|
|
41
|
+
* - Shows checkboxes for each option (autocomplete)
|
|
42
|
+
* - Form control value will be an array of selected values
|
|
43
|
+
* - If emitSelectedObject is true, selectedObjects will contain an array of selected option objects
|
|
44
|
+
* @default false
|
|
45
|
+
*/
|
|
46
|
+
multiple?: boolean;
|
|
47
|
+
optionPresentation?: 'dropdown' | 'chips';
|
|
48
|
+
chipLayout?: 'inline' | 'wrap';
|
|
49
|
+
action?: FieldAction;
|
|
50
|
+
optionsFromApi?: ApiOptionsConfig;
|
|
51
|
+
/**
|
|
52
|
+
* Whether to emit the full selected object in fieldChange event
|
|
53
|
+
* Only applies to autocomplete and select fields
|
|
54
|
+
* When true, the selected option object(s) will be included in fieldChange event's selectedObjects
|
|
55
|
+
* - For single select: returns single option object
|
|
56
|
+
* - For multiple select: returns array of option objects
|
|
57
|
+
* @default false
|
|
58
|
+
*/
|
|
59
|
+
emitSelectedObject?: boolean;
|
|
60
|
+
dependsOn?: FieldDependency | FieldDependency[];
|
|
61
|
+
showWhen?: ConditionRule | ConditionRule[];
|
|
62
|
+
hideWhen?: ConditionRule | ConditionRule[];
|
|
63
|
+
rows?: number;
|
|
64
|
+
min?: number;
|
|
65
|
+
max?: number;
|
|
66
|
+
step?: number;
|
|
67
|
+
accept?: string;
|
|
68
|
+
minDate?: string;
|
|
69
|
+
maxDate?: string;
|
|
70
|
+
dateMode?: 'date' | 'datetime-local' | 'month' | 'year';
|
|
71
|
+
mediaType?: string;
|
|
72
|
+
allowUpload?: boolean;
|
|
73
|
+
altText?: string;
|
|
74
|
+
showPreview?: boolean;
|
|
75
|
+
editableInput?: boolean;
|
|
76
|
+
maxSize?: number;
|
|
77
|
+
maxFiles?: number;
|
|
78
|
+
enableDragDrop?: boolean;
|
|
79
|
+
arrayFields?: FieldConfig[];
|
|
80
|
+
minItems?: number;
|
|
81
|
+
maxItems?: number;
|
|
82
|
+
addButtonLabel?: string;
|
|
83
|
+
removeButtonLabel?: string;
|
|
84
|
+
canRemoveAll?: boolean;
|
|
85
|
+
arrayLayout?: 'vertical' | 'grid';
|
|
86
|
+
arrayColumns?: number;
|
|
87
|
+
itemLabel?: string;
|
|
88
|
+
cssClass?: string;
|
|
89
|
+
containerClass?: string;
|
|
90
|
+
order?: number;
|
|
91
|
+
fullWidth?: boolean;
|
|
92
|
+
columnSpan?: number;
|
|
93
|
+
onChange?: string;
|
|
94
|
+
onBlur?: string;
|
|
95
|
+
}
|
|
96
|
+
export interface ApiOptionsConfig {
|
|
97
|
+
url: string;
|
|
98
|
+
method: 'GET' | 'POST';
|
|
99
|
+
baseUrl?: string;
|
|
100
|
+
cache?: boolean;
|
|
101
|
+
searchParam?: string;
|
|
102
|
+
debounceTime?: number;
|
|
103
|
+
loadOnInit?: boolean;
|
|
104
|
+
filters?: ApiFilter[];
|
|
105
|
+
dynamicFilters?: DynamicFilter[];
|
|
106
|
+
map?: {
|
|
107
|
+
label: string | string[];
|
|
108
|
+
value: string;
|
|
109
|
+
data?: string;
|
|
110
|
+
};
|
|
111
|
+
transformRequest?: (query: string, formValues: any) => any;
|
|
112
|
+
transformResponse?: (response: any) => SelectOption$1[];
|
|
113
|
+
}
|
|
114
|
+
export interface ApiFilter {
|
|
115
|
+
field: string;
|
|
116
|
+
operator: OperatorType;
|
|
117
|
+
values?: any[];
|
|
118
|
+
value?: any;
|
|
119
|
+
valueFrom?: string;
|
|
120
|
+
whenNotEmpty?: boolean;
|
|
121
|
+
}
|
|
122
|
+
export interface DynamicFilter extends ApiFilter {
|
|
123
|
+
valueFrom: string;
|
|
124
|
+
whenNotEmpty?: boolean;
|
|
125
|
+
}
|
|
126
|
+
export interface FieldDependency {
|
|
127
|
+
field: string;
|
|
128
|
+
refreshOn?: 'change' | 'blur';
|
|
129
|
+
clearOnChange?: boolean;
|
|
130
|
+
}
|
|
131
|
+
export interface ConditionRule {
|
|
132
|
+
field: string;
|
|
133
|
+
operator: OperatorType;
|
|
134
|
+
value?: any;
|
|
135
|
+
values?: any[];
|
|
136
|
+
}
|
|
137
|
+
export interface ValidationRule {
|
|
138
|
+
type: 'required' | 'email' | 'minLength' | 'maxLength' | 'min' | 'max' | 'pattern' | 'custom';
|
|
139
|
+
value?: any;
|
|
140
|
+
message?: string;
|
|
141
|
+
validator?: string;
|
|
142
|
+
}
|
|
143
|
+
interface SelectOption$1 {
|
|
144
|
+
label: string;
|
|
145
|
+
value: any;
|
|
146
|
+
disabled?: boolean;
|
|
147
|
+
[key: string]: any;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Custom action button configuration
|
|
151
|
+
*/
|
|
152
|
+
export interface FormAction {
|
|
153
|
+
/** Unique identifier for the action (used in actionClick event) */
|
|
154
|
+
key: string;
|
|
155
|
+
/** Button label text */
|
|
156
|
+
label: string;
|
|
157
|
+
/** Button type: 'button' (default), 'submit', or 'reset' */
|
|
158
|
+
type?: 'button' | 'submit' | 'reset';
|
|
159
|
+
/** Button variant for styling */
|
|
160
|
+
variant?: 'primary' | 'secondary' | 'outline' | 'danger' | 'success' | 'link';
|
|
161
|
+
/** Custom CSS classes (overrides variant styling) */
|
|
162
|
+
cssClass?: string;
|
|
163
|
+
/** Icon name to display (optional) */
|
|
164
|
+
icon?: string;
|
|
165
|
+
/** Icon position: 'left' (default) or 'right' */
|
|
166
|
+
iconPosition?: 'left' | 'right';
|
|
167
|
+
/** Whether to disable the button when form is invalid */
|
|
168
|
+
disableOnInvalid?: boolean;
|
|
169
|
+
/** Whether to disable the button when form is submitting */
|
|
170
|
+
disableOnSubmitting?: boolean;
|
|
171
|
+
/** Whether the button is hidden */
|
|
172
|
+
hidden?: boolean;
|
|
173
|
+
/** Order/position of the button (lower numbers appear first) */
|
|
174
|
+
order?: number;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Semantic group of fields rendered inside a fieldset.
|
|
178
|
+
* Field values remain flat; `fields` only controls presentation and ordering.
|
|
179
|
+
*/
|
|
180
|
+
export interface FormFieldsetConfig {
|
|
181
|
+
/** Stable identifier used to track the fieldset */
|
|
182
|
+
key: string;
|
|
183
|
+
/** Accessible fieldset legend */
|
|
184
|
+
legend: string;
|
|
185
|
+
/** Supporting text displayed below the legend */
|
|
186
|
+
description?: string;
|
|
187
|
+
/** Field keys to render in this group, in display order */
|
|
188
|
+
fields: string[];
|
|
189
|
+
/** Optional classes applied to the fieldset */
|
|
190
|
+
cssClass?: string;
|
|
191
|
+
}
|
|
192
|
+
export interface FormConfig {
|
|
193
|
+
fields: FieldConfig[];
|
|
194
|
+
layout?: 'vertical' | 'horizontal' | 'grid';
|
|
195
|
+
columns?: number;
|
|
196
|
+
/**
|
|
197
|
+
* Label/control arrangement for every field. Defaults to `column`.
|
|
198
|
+
* `stacked` is retained as a compatibility alias for `column`.
|
|
199
|
+
*/
|
|
200
|
+
fieldLayout?: 'column' | 'row' | 'stacked';
|
|
201
|
+
/** Optional semantic field groups. Fields not listed here render after the groups. */
|
|
202
|
+
fieldsets?: FormFieldsetConfig[];
|
|
203
|
+
showCancelButton?: {
|
|
204
|
+
label?: string;
|
|
205
|
+
cssClass?: string;
|
|
206
|
+
hidden?: boolean;
|
|
207
|
+
};
|
|
208
|
+
submitButton?: {
|
|
209
|
+
label: string;
|
|
210
|
+
cssClass?: string;
|
|
211
|
+
hidden?: boolean;
|
|
212
|
+
};
|
|
213
|
+
resetButton?: {
|
|
214
|
+
label: string;
|
|
215
|
+
cssClass?: string;
|
|
216
|
+
hidden?: boolean;
|
|
217
|
+
};
|
|
218
|
+
/**
|
|
219
|
+
* Custom action buttons array
|
|
220
|
+
* When provided, the built-in cancel, submit, and reset buttons are ignored
|
|
221
|
+
* Use this for multi-step forms, custom workflows, etc.
|
|
222
|
+
*/
|
|
223
|
+
actions?: FormAction[];
|
|
224
|
+
actionsWrapper?: {
|
|
225
|
+
cssClass?: string;
|
|
226
|
+
};
|
|
227
|
+
apiConfig?: {
|
|
228
|
+
baseUrl?: string;
|
|
229
|
+
headers?: Record<string, string>;
|
|
230
|
+
};
|
|
231
|
+
validationStrategy?: 'touched' | 'submit';
|
|
232
|
+
/**
|
|
233
|
+
* Whether to emit full selected objects in fieldChange event
|
|
234
|
+
* When true, fieldChange event includes selectedObjects with full option data
|
|
235
|
+
* When false, only valueChange event is emitted (default behavior)
|
|
236
|
+
* @default false
|
|
237
|
+
*/
|
|
238
|
+
emitSelectedObjects?: boolean;
|
|
239
|
+
}
|
|
240
|
+
export declare class LocalizationService {
|
|
241
|
+
private readonly config;
|
|
242
|
+
translate(text: string | null | undefined, parameters?: Record<string, string | number>): string;
|
|
243
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LocalizationService, never>;
|
|
244
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
245
|
+
}
|
|
246
|
+
export declare class DynamicFieldComponent {
|
|
247
|
+
field: import("@angular/core").InputSignal<FieldConfig>;
|
|
248
|
+
form: import("@angular/core").InputSignal<FormGroup<any>>;
|
|
249
|
+
fieldLayout: import("@angular/core").InputSignal<"column" | "row" | "stacked">;
|
|
250
|
+
apiConfig: import("@angular/core").InputSignal<{
|
|
251
|
+
baseUrl?: string;
|
|
252
|
+
headers?: Record<string, string>;
|
|
253
|
+
} | undefined>;
|
|
254
|
+
validationStrategy: import("@angular/core").InputSignal<"submit" | "touched">;
|
|
255
|
+
formSubmitted: import("@angular/core").InputSignal<boolean>;
|
|
256
|
+
/** Emits when a field's action button is clicked, with the field key */
|
|
257
|
+
actionClick: import("@angular/core").OutputEmitterRef<{
|
|
258
|
+
fieldKey: string;
|
|
259
|
+
}>;
|
|
260
|
+
private readonly optionsLoader;
|
|
261
|
+
private readonly destroyRef;
|
|
262
|
+
protected readonly localization: LocalizationService;
|
|
263
|
+
protected readonly options: import("@angular/core").WritableSignal<SelectOption$1[]>;
|
|
264
|
+
protected readonly loading: import("@angular/core").WritableSignal<boolean>;
|
|
265
|
+
private readonly controlTouched;
|
|
266
|
+
private readonly controlInvalid;
|
|
267
|
+
protected readonly fieldId: import("@angular/core").Signal<string>;
|
|
268
|
+
protected readonly control: import("@angular/core").Signal<FormControl<any>>;
|
|
269
|
+
protected readonly showError: import("@angular/core").Signal<boolean>;
|
|
270
|
+
private readonly formChangeSignal;
|
|
271
|
+
protected readonly isVisible: import("@angular/core").Signal<boolean>;
|
|
272
|
+
constructor();
|
|
273
|
+
private evaluateCondition;
|
|
274
|
+
protected loadOptions(searchQuery?: string): void;
|
|
275
|
+
protected onSearch(query: string): void;
|
|
276
|
+
protected onAutocompleteSelect(value: any): void;
|
|
277
|
+
/** Emit action click event with the field key */
|
|
278
|
+
protected onFieldActionClick(): void;
|
|
279
|
+
/** Reload options - can be called from parent component after creating new item */
|
|
280
|
+
reloadOptions(): void;
|
|
281
|
+
/** Get the selected option object for autocomplete/select fields */
|
|
282
|
+
getSelectedOption(): SelectOption$1 | SelectOption$1[] | undefined;
|
|
283
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DynamicFieldComponent, never>;
|
|
284
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DynamicFieldComponent, "hui-dynamic-field", never, {
|
|
285
|
+
"field": {
|
|
286
|
+
"alias": "field";
|
|
287
|
+
"required": true;
|
|
288
|
+
"isSignal": true;
|
|
289
|
+
};
|
|
290
|
+
"form": {
|
|
291
|
+
"alias": "form";
|
|
292
|
+
"required": true;
|
|
293
|
+
"isSignal": true;
|
|
294
|
+
};
|
|
295
|
+
"fieldLayout": {
|
|
296
|
+
"alias": "fieldLayout";
|
|
297
|
+
"required": false;
|
|
298
|
+
"isSignal": true;
|
|
299
|
+
};
|
|
300
|
+
"apiConfig": {
|
|
301
|
+
"alias": "apiConfig";
|
|
302
|
+
"required": false;
|
|
303
|
+
"isSignal": true;
|
|
304
|
+
};
|
|
305
|
+
"validationStrategy": {
|
|
306
|
+
"alias": "validationStrategy";
|
|
307
|
+
"required": false;
|
|
308
|
+
"isSignal": true;
|
|
309
|
+
};
|
|
310
|
+
"formSubmitted": {
|
|
311
|
+
"alias": "formSubmitted";
|
|
312
|
+
"required": false;
|
|
313
|
+
"isSignal": true;
|
|
314
|
+
};
|
|
315
|
+
}, {
|
|
316
|
+
"actionClick": "actionClick";
|
|
317
|
+
}, never, never, true, never>;
|
|
318
|
+
}
|
|
319
|
+
export declare class DynamicFormComponent implements OnInit, OnDestroy {
|
|
320
|
+
config: import("@angular/core").InputSignal<FormConfig>;
|
|
321
|
+
initialValues: import("@angular/core").InputSignal<Record<string, any>>;
|
|
322
|
+
formSubmit: import("@angular/core").OutputEmitterRef<any>;
|
|
323
|
+
reset: import("@angular/core").OutputEmitterRef<void>;
|
|
324
|
+
cancel: import("@angular/core").OutputEmitterRef<void>;
|
|
325
|
+
valueChange: import("@angular/core").OutputEmitterRef<any>;
|
|
326
|
+
/** Emits when form values change with full selected objects for autocomplete/select fields */
|
|
327
|
+
fieldChange: import("@angular/core").OutputEmitterRef<{
|
|
328
|
+
values: any;
|
|
329
|
+
selectedObjects: Record<string, any>;
|
|
330
|
+
}>;
|
|
331
|
+
actionClick: import("@angular/core").OutputEmitterRef<{
|
|
332
|
+
action: FormAction;
|
|
333
|
+
formValue: any;
|
|
334
|
+
isValid: boolean;
|
|
335
|
+
}>;
|
|
336
|
+
/** Emits when a field's action button is clicked (e.g., "Create New" button) */
|
|
337
|
+
fieldActionClick: import("@angular/core").OutputEmitterRef<{
|
|
338
|
+
fieldKey: string;
|
|
339
|
+
formValue: any;
|
|
340
|
+
}>;
|
|
341
|
+
private readonly dynamicFields;
|
|
342
|
+
private readonly formBuilder;
|
|
343
|
+
private readonly fieldResolver;
|
|
344
|
+
protected readonly localization: LocalizationService;
|
|
345
|
+
private readonly destroy$;
|
|
346
|
+
private isSubmitting;
|
|
347
|
+
private initialized;
|
|
348
|
+
protected readonly form: import("@angular/core").WritableSignal<FormGroup<any>>;
|
|
349
|
+
protected readonly formValues: import("@angular/core").WritableSignal<Record<string, any>>;
|
|
350
|
+
protected readonly submitting: import("@angular/core").WritableSignal<boolean>;
|
|
351
|
+
protected readonly submitted: import("@angular/core").WritableSignal<boolean>;
|
|
352
|
+
protected readonly busy: import("@angular/core").Signal<boolean>;
|
|
353
|
+
constructor();
|
|
354
|
+
protected readonly visibleFields: import("@angular/core").Signal<FieldConfig[]>;
|
|
355
|
+
protected readonly visibleFieldsets: import("@angular/core").Signal<{
|
|
356
|
+
config: FormFieldsetConfig;
|
|
357
|
+
fields: FieldConfig[];
|
|
358
|
+
}[]>;
|
|
359
|
+
protected readonly ungroupedFields: import("@angular/core").Signal<FieldConfig[]>;
|
|
360
|
+
protected readonly layoutClass: import("@angular/core").Signal<string>;
|
|
361
|
+
/** Whether the form uses custom actions array */
|
|
362
|
+
protected readonly hasCustomActions: import("@angular/core").Signal<boolean | undefined>;
|
|
363
|
+
/** Sorted and filtered actions */
|
|
364
|
+
protected readonly sortedActions: import("@angular/core").Signal<FormAction[]>;
|
|
365
|
+
protected getFieldColumnClass(field: any): string;
|
|
366
|
+
protected getFieldsetClass(fieldset: FormFieldsetConfig): string;
|
|
367
|
+
ngOnInit(): void;
|
|
368
|
+
ngOnDestroy(): void;
|
|
369
|
+
private initializeForm;
|
|
370
|
+
private addMissingControls;
|
|
371
|
+
private patchInitialValues;
|
|
372
|
+
private setupValueChangeListener;
|
|
373
|
+
private updateHiddenFieldValidators;
|
|
374
|
+
private setupDependencies;
|
|
375
|
+
protected onSubmit(): void;
|
|
376
|
+
/**
|
|
377
|
+
* Call this method to reset the submitting state and re-enable the form
|
|
378
|
+
* Should be called from parent component after async operation completes
|
|
379
|
+
*/
|
|
380
|
+
finishSubmit(): void;
|
|
381
|
+
validate(): boolean;
|
|
382
|
+
getRawValue<T>(): T;
|
|
383
|
+
onReset(): void;
|
|
384
|
+
onCancel(): void;
|
|
385
|
+
/** Handle custom action button click */
|
|
386
|
+
protected onActionClick(action: FormAction): void;
|
|
387
|
+
/** Check if an action button should be disabled */
|
|
388
|
+
protected isActionDisabled(action: FormAction): boolean;
|
|
389
|
+
/** Get CSS classes for an action button based on variant */
|
|
390
|
+
protected getActionClass(action: FormAction): string;
|
|
391
|
+
/** Handle field action button click (e.g., "Create New" button on select/autocomplete) */
|
|
392
|
+
protected onFieldActionClick(event: {
|
|
393
|
+
fieldKey: string;
|
|
394
|
+
}): void;
|
|
395
|
+
/**
|
|
396
|
+
* Reload options for a specific field (useful after creating a new item via action button)
|
|
397
|
+
* @param fieldKey The key of the field to reload options for
|
|
398
|
+
*/
|
|
399
|
+
reloadFieldOptions(fieldKey: string): void;
|
|
400
|
+
/**
|
|
401
|
+
* Reload options for a field and set the newly created value
|
|
402
|
+
* @param fieldKey The key of the field to reload and set value for
|
|
403
|
+
* @param newValue The value to set after reloading (e.g., the ID of the newly created item)
|
|
404
|
+
*/
|
|
405
|
+
reloadFieldOptionsAndSetValue(fieldKey: string, newValue: any): void;
|
|
406
|
+
/** Get a dynamic field component by field key */
|
|
407
|
+
getField(fieldKey: string): DynamicFieldComponent | undefined;
|
|
408
|
+
/**
|
|
409
|
+
* Set value for a specific field
|
|
410
|
+
* @param fieldKey The key of the field to set value for
|
|
411
|
+
* @param value The value to set
|
|
412
|
+
*/
|
|
413
|
+
setFieldValue(fieldKey: string, value: any): void;
|
|
414
|
+
/**
|
|
415
|
+
* Get selected objects for all autocomplete/select fields
|
|
416
|
+
* @returns Record of field keys to their selected option objects
|
|
417
|
+
*/
|
|
418
|
+
private getSelectedObjects;
|
|
419
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DynamicFormComponent, never>;
|
|
420
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DynamicFormComponent, "hui-dynamic-form", never, {
|
|
421
|
+
"config": {
|
|
422
|
+
"alias": "config";
|
|
423
|
+
"required": true;
|
|
424
|
+
"isSignal": true;
|
|
425
|
+
};
|
|
426
|
+
"initialValues": {
|
|
427
|
+
"alias": "initialValues";
|
|
428
|
+
"required": false;
|
|
429
|
+
"isSignal": true;
|
|
430
|
+
};
|
|
431
|
+
}, {
|
|
432
|
+
"formSubmit": "formSubmit";
|
|
433
|
+
"reset": "reset";
|
|
434
|
+
"cancel": "cancel";
|
|
435
|
+
"valueChange": "valueChange";
|
|
436
|
+
"fieldChange": "fieldChange";
|
|
437
|
+
"actionClick": "actionClick";
|
|
438
|
+
"fieldActionClick": "fieldActionClick";
|
|
439
|
+
}, never, never, true, never>;
|
|
440
|
+
}
|
|
441
|
+
export declare class FormArrayFieldComponent {
|
|
442
|
+
field: import("@angular/core").InputSignal<FieldConfig>;
|
|
443
|
+
form: import("@angular/core").InputSignal<FormGroup<any>>;
|
|
444
|
+
fieldLayout: import("@angular/core").InputSignal<"column" | "row" | "stacked">;
|
|
445
|
+
apiConfig: import("@angular/core").InputSignal<{
|
|
446
|
+
baseUrl?: string;
|
|
447
|
+
headers?: Record<string, string>;
|
|
448
|
+
} | undefined>;
|
|
449
|
+
validationStrategy: import("@angular/core").InputSignal<"submit" | "touched">;
|
|
450
|
+
formSubmitted: import("@angular/core").InputSignal<boolean>;
|
|
451
|
+
private readonly formBuilder;
|
|
452
|
+
protected readonly localization: LocalizationService;
|
|
453
|
+
protected readonly expandedItems: import("@angular/core").WritableSignal<Set<number>>;
|
|
454
|
+
protected readonly arrayLength: import("@angular/core").WritableSignal<number>;
|
|
455
|
+
protected readonly formArray: import("@angular/core").Signal<FormArray<any>>;
|
|
456
|
+
protected readonly items: import("@angular/core").Signal<number[]>;
|
|
457
|
+
constructor();
|
|
458
|
+
protected readonly canAddMore: import("@angular/core").Signal<boolean>;
|
|
459
|
+
protected readonly canRemove: import("@angular/core").Signal<boolean>;
|
|
460
|
+
protected readonly addButtonLabel: import("@angular/core").Signal<string>;
|
|
461
|
+
protected readonly removeButtonLabel: import("@angular/core").Signal<string>;
|
|
462
|
+
protected readonly itemLabel: import("@angular/core").Signal<(index: number) => string>;
|
|
463
|
+
protected getItemGroup(index: number): FormGroup;
|
|
464
|
+
protected addItem(): void;
|
|
465
|
+
protected removeItem(index: number): void;
|
|
466
|
+
protected toggleItem(index: number): void;
|
|
467
|
+
protected isExpanded(index: number): boolean;
|
|
468
|
+
protected getArrayLayoutClass(): string;
|
|
469
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormArrayFieldComponent, never>;
|
|
470
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FormArrayFieldComponent, "hui-form-array-field", never, {
|
|
471
|
+
"field": {
|
|
472
|
+
"alias": "field";
|
|
473
|
+
"required": true;
|
|
474
|
+
"isSignal": true;
|
|
475
|
+
};
|
|
476
|
+
"form": {
|
|
477
|
+
"alias": "form";
|
|
478
|
+
"required": true;
|
|
479
|
+
"isSignal": true;
|
|
480
|
+
};
|
|
481
|
+
"fieldLayout": {
|
|
482
|
+
"alias": "fieldLayout";
|
|
483
|
+
"required": false;
|
|
484
|
+
"isSignal": true;
|
|
485
|
+
};
|
|
486
|
+
"apiConfig": {
|
|
487
|
+
"alias": "apiConfig";
|
|
488
|
+
"required": false;
|
|
489
|
+
"isSignal": true;
|
|
490
|
+
};
|
|
491
|
+
"validationStrategy": {
|
|
492
|
+
"alias": "validationStrategy";
|
|
493
|
+
"required": false;
|
|
494
|
+
"isSignal": true;
|
|
495
|
+
};
|
|
496
|
+
"formSubmitted": {
|
|
497
|
+
"alias": "formSubmitted";
|
|
498
|
+
"required": false;
|
|
499
|
+
"isSignal": true;
|
|
500
|
+
};
|
|
501
|
+
}, {}, never, never, true, never>;
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* Wrapper component to break circular dependency between FormArrayFieldComponent and DynamicFieldComponent
|
|
505
|
+
*/
|
|
506
|
+
export declare class FormArrayItemComponent {
|
|
507
|
+
fields: import("@angular/core").InputSignal<FieldConfig[]>;
|
|
508
|
+
form: import("@angular/core").InputSignal<FormGroup<any>>;
|
|
509
|
+
fieldLayout: import("@angular/core").InputSignal<"column" | "row" | "stacked">;
|
|
510
|
+
apiConfig: import("@angular/core").InputSignal<{
|
|
511
|
+
baseUrl?: string;
|
|
512
|
+
headers?: Record<string, string>;
|
|
513
|
+
} | undefined>;
|
|
514
|
+
validationStrategy: import("@angular/core").InputSignal<"submit" | "touched">;
|
|
515
|
+
formSubmitted: import("@angular/core").InputSignal<boolean>;
|
|
516
|
+
layoutClass: import("@angular/core").InputSignal<string>;
|
|
517
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormArrayItemComponent, never>;
|
|
518
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FormArrayItemComponent, "hui-form-array-item", never, {
|
|
519
|
+
"fields": {
|
|
520
|
+
"alias": "fields";
|
|
521
|
+
"required": true;
|
|
522
|
+
"isSignal": true;
|
|
523
|
+
};
|
|
524
|
+
"form": {
|
|
525
|
+
"alias": "form";
|
|
526
|
+
"required": true;
|
|
527
|
+
"isSignal": true;
|
|
528
|
+
};
|
|
529
|
+
"fieldLayout": {
|
|
530
|
+
"alias": "fieldLayout";
|
|
531
|
+
"required": false;
|
|
532
|
+
"isSignal": true;
|
|
533
|
+
};
|
|
534
|
+
"apiConfig": {
|
|
535
|
+
"alias": "apiConfig";
|
|
536
|
+
"required": false;
|
|
537
|
+
"isSignal": true;
|
|
538
|
+
};
|
|
539
|
+
"validationStrategy": {
|
|
540
|
+
"alias": "validationStrategy";
|
|
541
|
+
"required": false;
|
|
542
|
+
"isSignal": true;
|
|
543
|
+
};
|
|
544
|
+
"formSubmitted": {
|
|
545
|
+
"alias": "formSubmitted";
|
|
546
|
+
"required": false;
|
|
547
|
+
"isSignal": true;
|
|
548
|
+
};
|
|
549
|
+
"layoutClass": {
|
|
550
|
+
"alias": "layoutClass";
|
|
551
|
+
"required": false;
|
|
552
|
+
"isSignal": true;
|
|
553
|
+
};
|
|
554
|
+
}, {}, never, never, true, never>;
|
|
555
|
+
}
|
|
556
|
+
export declare class FieldResolverService {
|
|
557
|
+
shouldShowField(field: FieldConfig, formValues: Record<string, any>): boolean;
|
|
558
|
+
getDependentFields(fieldKey: string, allFields: FieldConfig[]): FieldConfig[];
|
|
559
|
+
getFieldsWithDependency(allFields: FieldConfig[]): Map<string, FieldConfig[]>;
|
|
560
|
+
private evaluateCondition;
|
|
561
|
+
evaluateConditions(conditions: ConditionRule[], formValues: Record<string, any>, logic?: 'AND' | 'OR'): boolean;
|
|
562
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FieldResolverService, never>;
|
|
563
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
564
|
+
}
|
|
565
|
+
export declare class FormBuilderService {
|
|
566
|
+
private readonly fb;
|
|
567
|
+
private customValidators;
|
|
568
|
+
buildForm(config: FormConfig): FormGroup;
|
|
569
|
+
/**
|
|
570
|
+
* Create a FormGroup from an array of field configurations
|
|
571
|
+
* Used for creating array item groups
|
|
572
|
+
*/
|
|
573
|
+
createFormGroupFromFields(fields: FieldConfig[]): FormGroup;
|
|
574
|
+
registerCustomValidator(name: string, validator: ValidatorFn): void;
|
|
575
|
+
getCustomValidator(name: string): ValidatorFn | undefined;
|
|
576
|
+
buildValidatorsFromConfig(field: FieldConfig): ValidatorFn[];
|
|
577
|
+
private buildValidators;
|
|
578
|
+
private getDefaultValue;
|
|
579
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormBuilderService, never>;
|
|
580
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
581
|
+
}
|
|
582
|
+
export declare class OptionsLoaderService {
|
|
583
|
+
private readonly http;
|
|
584
|
+
private cache;
|
|
585
|
+
loadOptions(config: ApiOptionsConfig, formValues: Record<string, any>, searchQuery?: string, apiConfig?: {
|
|
586
|
+
baseUrl?: string;
|
|
587
|
+
headers?: Record<string, string>;
|
|
588
|
+
}): Observable<SelectOption$1[]>;
|
|
589
|
+
private buildRequest;
|
|
590
|
+
private buildFilters;
|
|
591
|
+
private transformResponse;
|
|
592
|
+
private getNestedValue;
|
|
593
|
+
private makeRequest;
|
|
594
|
+
private getCacheKey;
|
|
595
|
+
clearCache(url?: string): void;
|
|
596
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<OptionsLoaderService, never>;
|
|
597
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
598
|
+
}
|
|
599
|
+
export interface AutocompleteOption {
|
|
600
|
+
label: string;
|
|
601
|
+
value: any;
|
|
602
|
+
disabled?: boolean;
|
|
603
|
+
[key: string]: any;
|
|
604
|
+
}
|
|
605
|
+
/**
|
|
606
|
+
* Configuration for an action button alongside the autocomplete
|
|
607
|
+
*/
|
|
608
|
+
export interface AutocompleteActionButton {
|
|
609
|
+
/** Icon name from the icon set */
|
|
610
|
+
icon: string;
|
|
611
|
+
/** Aria label for accessibility */
|
|
612
|
+
ariaLabel: string;
|
|
613
|
+
/** Tooltip text (optional) */
|
|
614
|
+
tooltip?: string;
|
|
615
|
+
}
|
|
616
|
+
export declare class AutocompleteComponent implements ControlValueAccessor {
|
|
617
|
+
private readonly elementRef;
|
|
618
|
+
protected readonly localization: LocalizationService;
|
|
619
|
+
private searchSubject;
|
|
620
|
+
private readonly scrollParents;
|
|
621
|
+
private readonly onScrollParentChange;
|
|
622
|
+
id: import("@angular/core").InputSignal<string>;
|
|
623
|
+
placeholder: import("@angular/core").InputSignal<string>;
|
|
624
|
+
mode: import("@angular/core").InputSignal<"local" | "server">;
|
|
625
|
+
options: import("@angular/core").InputSignal<AutocompleteOption[]>;
|
|
626
|
+
serverResults: import("@angular/core").InputSignal<AutocompleteOption[]>;
|
|
627
|
+
loading: import("@angular/core").InputSignal<boolean>;
|
|
628
|
+
minChars: import("@angular/core").InputSignal<number>;
|
|
629
|
+
debounce: import("@angular/core").InputSignal<number>;
|
|
630
|
+
displayFn: import("@angular/core").InputSignal<((option: any) => string) | undefined>;
|
|
631
|
+
ariaLabel: import("@angular/core").InputSignal<string>;
|
|
632
|
+
ariaDescribedby: import("@angular/core").InputSignal<string>;
|
|
633
|
+
invalid: import("@angular/core").InputSignal<boolean>;
|
|
634
|
+
/** Enable multiple selection with checkboxes */
|
|
635
|
+
multiple: import("@angular/core").InputSignal<boolean>;
|
|
636
|
+
/** Action button configuration */
|
|
637
|
+
action: import("@angular/core").InputSignal<AutocompleteActionButton | undefined>;
|
|
638
|
+
search: import("@angular/core").OutputEmitterRef<string>;
|
|
639
|
+
select: import("@angular/core").OutputEmitterRef<any>;
|
|
640
|
+
/** Emits when the action button is clicked */
|
|
641
|
+
actionClick: import("@angular/core").OutputEmitterRef<void>;
|
|
642
|
+
protected readonly inputValue: import("@angular/core").WritableSignal<string>;
|
|
643
|
+
protected readonly isOpen: import("@angular/core").WritableSignal<boolean>;
|
|
644
|
+
protected readonly selectedIndex: import("@angular/core").WritableSignal<number>;
|
|
645
|
+
protected readonly value: import("@angular/core").WritableSignal<any>;
|
|
646
|
+
protected readonly selectedValues: import("@angular/core").WritableSignal<any[]>;
|
|
647
|
+
protected readonly isDisabled: import("@angular/core").WritableSignal<boolean>;
|
|
648
|
+
protected readonly dropdownPlacement: import("@angular/core").WritableSignal<"up" | "down">;
|
|
649
|
+
protected readonly dropdownMaxHeight: import("@angular/core").WritableSignal<number>;
|
|
650
|
+
protected readonly isInvalid: import("@angular/core").Signal<boolean>;
|
|
651
|
+
protected readonly hasAction: import("@angular/core").Signal<boolean>;
|
|
652
|
+
protected readonly isMultiple: import("@angular/core").Signal<boolean>;
|
|
653
|
+
/** Display text for multi-select showing count of selected items */
|
|
654
|
+
protected readonly displayText: import("@angular/core").Signal<string>;
|
|
655
|
+
protected readonly inputElement: import("@angular/core").Signal<ElementRef<any> | undefined>;
|
|
656
|
+
protected readonly dropdownElement: import("@angular/core").Signal<ElementRef<any> | undefined>;
|
|
657
|
+
protected readonly filteredOptions: import("@angular/core").Signal<AutocompleteOption[]>;
|
|
658
|
+
protected readonly inputClasses: import("@angular/core").Signal<string>;
|
|
659
|
+
protected readonly dropdownClasses: import("@angular/core").Signal<string>;
|
|
660
|
+
private onChange;
|
|
661
|
+
protected onTouched: () => void;
|
|
662
|
+
constructor();
|
|
663
|
+
ngOnDestroy(): void;
|
|
664
|
+
protected onInput(event: Event): void;
|
|
665
|
+
protected onKeyDown(event: KeyboardEvent): void;
|
|
666
|
+
protected onFocus(): void;
|
|
667
|
+
protected onBlur(): void;
|
|
668
|
+
protected selectOption(option: AutocompleteOption): void;
|
|
669
|
+
protected clearSelection(): void;
|
|
670
|
+
protected onActionClick(): void;
|
|
671
|
+
protected onDocumentClick(event: MouseEvent): void;
|
|
672
|
+
protected onViewportChange(): void;
|
|
673
|
+
private updateDropdownPlacement;
|
|
674
|
+
private findClippingParent;
|
|
675
|
+
private registerScrollParents;
|
|
676
|
+
private unregisterScrollParents;
|
|
677
|
+
private scrollToSelected;
|
|
678
|
+
private getDisplayValue;
|
|
679
|
+
writeValue(value: any): void;
|
|
680
|
+
registerOnChange(fn: (value: any) => void): void;
|
|
681
|
+
registerOnTouched(fn: () => void): void;
|
|
682
|
+
setDisabledState(isDisabled: boolean): void;
|
|
683
|
+
/** Check if an option is selected (for multi-select) */
|
|
684
|
+
protected isOptionSelected(option: AutocompleteOption): boolean;
|
|
685
|
+
/** Find option by value in all available options */
|
|
686
|
+
private findOption;
|
|
687
|
+
/** Get all selected option objects (for multi-select) */
|
|
688
|
+
getSelectedOptions(): AutocompleteOption[];
|
|
689
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AutocompleteComponent, never>;
|
|
690
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AutocompleteComponent, "hui-autocomplete", never, {
|
|
691
|
+
"id": {
|
|
692
|
+
"alias": "id";
|
|
693
|
+
"required": false;
|
|
694
|
+
"isSignal": true;
|
|
695
|
+
};
|
|
696
|
+
"placeholder": {
|
|
697
|
+
"alias": "placeholder";
|
|
698
|
+
"required": false;
|
|
699
|
+
"isSignal": true;
|
|
700
|
+
};
|
|
701
|
+
"mode": {
|
|
702
|
+
"alias": "mode";
|
|
703
|
+
"required": false;
|
|
704
|
+
"isSignal": true;
|
|
705
|
+
};
|
|
706
|
+
"options": {
|
|
707
|
+
"alias": "options";
|
|
708
|
+
"required": false;
|
|
709
|
+
"isSignal": true;
|
|
710
|
+
};
|
|
711
|
+
"serverResults": {
|
|
712
|
+
"alias": "serverResults";
|
|
713
|
+
"required": false;
|
|
714
|
+
"isSignal": true;
|
|
715
|
+
};
|
|
716
|
+
"loading": {
|
|
717
|
+
"alias": "loading";
|
|
718
|
+
"required": false;
|
|
719
|
+
"isSignal": true;
|
|
720
|
+
};
|
|
721
|
+
"minChars": {
|
|
722
|
+
"alias": "minChars";
|
|
723
|
+
"required": false;
|
|
724
|
+
"isSignal": true;
|
|
725
|
+
};
|
|
726
|
+
"debounce": {
|
|
727
|
+
"alias": "debounce";
|
|
728
|
+
"required": false;
|
|
729
|
+
"isSignal": true;
|
|
730
|
+
};
|
|
731
|
+
"displayFn": {
|
|
732
|
+
"alias": "displayFn";
|
|
733
|
+
"required": false;
|
|
734
|
+
"isSignal": true;
|
|
735
|
+
};
|
|
736
|
+
"ariaLabel": {
|
|
737
|
+
"alias": "ariaLabel";
|
|
738
|
+
"required": false;
|
|
739
|
+
"isSignal": true;
|
|
740
|
+
};
|
|
741
|
+
"ariaDescribedby": {
|
|
742
|
+
"alias": "ariaDescribedby";
|
|
743
|
+
"required": false;
|
|
744
|
+
"isSignal": true;
|
|
745
|
+
};
|
|
746
|
+
"invalid": {
|
|
747
|
+
"alias": "invalid";
|
|
748
|
+
"required": false;
|
|
749
|
+
"isSignal": true;
|
|
750
|
+
};
|
|
751
|
+
"multiple": {
|
|
752
|
+
"alias": "multiple";
|
|
753
|
+
"required": false;
|
|
754
|
+
"isSignal": true;
|
|
755
|
+
};
|
|
756
|
+
"action": {
|
|
757
|
+
"alias": "action";
|
|
758
|
+
"required": false;
|
|
759
|
+
"isSignal": true;
|
|
760
|
+
};
|
|
761
|
+
}, {
|
|
762
|
+
"search": "search";
|
|
763
|
+
"select": "select";
|
|
764
|
+
"actionClick": "actionClick";
|
|
765
|
+
}, never, never, true, never>;
|
|
766
|
+
}
|
|
767
|
+
export declare class CheckboxComponent implements ControlValueAccessor {
|
|
768
|
+
id: import("@angular/core").InputSignal<string>;
|
|
769
|
+
label: import("@angular/core").InputSignal<string>;
|
|
770
|
+
ariaLabel: import("@angular/core").InputSignal<string>;
|
|
771
|
+
ariaDescribedby: import("@angular/core").InputSignal<string>;
|
|
772
|
+
class: import("@angular/core").InputSignal<string>;
|
|
773
|
+
fullWidth: import("@angular/core").InputSignal<boolean>;
|
|
774
|
+
protected readonly value: import("@angular/core").WritableSignal<boolean>;
|
|
775
|
+
protected readonly isDisabled: import("@angular/core").WritableSignal<boolean>;
|
|
776
|
+
protected readonly checkboxId: import("@angular/core").Signal<string>;
|
|
777
|
+
protected readonly checkboxClasses: import("@angular/core").Signal<string>;
|
|
778
|
+
protected readonly containerClasses: import("@angular/core").Signal<"flex w-full items-center" | "flex items-center">;
|
|
779
|
+
protected readonly labelClasses: import("@angular/core").Signal<string>;
|
|
780
|
+
private onChangeFn;
|
|
781
|
+
protected onTouched: () => void;
|
|
782
|
+
protected onChange(event: Event): void;
|
|
783
|
+
writeValue(value: boolean): void;
|
|
784
|
+
registerOnChange(fn: (value: boolean) => void): void;
|
|
785
|
+
registerOnTouched(fn: () => void): void;
|
|
786
|
+
setDisabledState(isDisabled: boolean): void;
|
|
787
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CheckboxComponent, never>;
|
|
788
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent, "hui-checkbox", never, {
|
|
789
|
+
"id": {
|
|
790
|
+
"alias": "id";
|
|
791
|
+
"required": false;
|
|
792
|
+
"isSignal": true;
|
|
793
|
+
};
|
|
794
|
+
"label": {
|
|
795
|
+
"alias": "label";
|
|
796
|
+
"required": false;
|
|
797
|
+
"isSignal": true;
|
|
798
|
+
};
|
|
799
|
+
"ariaLabel": {
|
|
800
|
+
"alias": "ariaLabel";
|
|
801
|
+
"required": false;
|
|
802
|
+
"isSignal": true;
|
|
803
|
+
};
|
|
804
|
+
"ariaDescribedby": {
|
|
805
|
+
"alias": "ariaDescribedby";
|
|
806
|
+
"required": false;
|
|
807
|
+
"isSignal": true;
|
|
808
|
+
};
|
|
809
|
+
"class": {
|
|
810
|
+
"alias": "class";
|
|
811
|
+
"required": false;
|
|
812
|
+
"isSignal": true;
|
|
813
|
+
};
|
|
814
|
+
"fullWidth": {
|
|
815
|
+
"alias": "fullWidth";
|
|
816
|
+
"required": false;
|
|
817
|
+
"isSignal": true;
|
|
818
|
+
};
|
|
819
|
+
}, {}, never, never, true, never>;
|
|
820
|
+
}
|
|
821
|
+
export interface CheckboxDropdownOption {
|
|
822
|
+
label: string;
|
|
823
|
+
value: string | boolean;
|
|
824
|
+
checked?: boolean;
|
|
825
|
+
}
|
|
826
|
+
export declare class CheckboxDropdownComponent {
|
|
827
|
+
readonly label: import("@angular/core").InputSignal<string>;
|
|
828
|
+
readonly options: import("@angular/core").InputSignal<CheckboxDropdownOption[]>;
|
|
829
|
+
readonly buttonClass: import("@angular/core").InputSignal<string>;
|
|
830
|
+
readonly icon: import("@angular/core").InputSignal<string>;
|
|
831
|
+
readonly selectionChange: import("@angular/core").OutputEmitterRef<CheckboxDropdownOption[]>;
|
|
832
|
+
protected readonly isOpen: import("@angular/core").WritableSignal<boolean>;
|
|
833
|
+
protected readonly selectedOptions: import("@angular/core").WritableSignal<CheckboxDropdownOption[]>;
|
|
834
|
+
protected readonly selectedCount: import("@angular/core").Signal<number>;
|
|
835
|
+
protected readonly displayLabel: import("@angular/core").Signal<string>;
|
|
836
|
+
constructor();
|
|
837
|
+
protected toggleDropdown(): void;
|
|
838
|
+
protected closeDropdown(): void;
|
|
839
|
+
protected onCheckboxChange(option: CheckboxDropdownOption, checked: boolean): void;
|
|
840
|
+
protected isChecked(option: CheckboxDropdownOption): boolean;
|
|
841
|
+
protected clearAll(): void;
|
|
842
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CheckboxDropdownComponent, never>;
|
|
843
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxDropdownComponent, "hui-checkbox-dropdown", never, {
|
|
844
|
+
"label": {
|
|
845
|
+
"alias": "label";
|
|
846
|
+
"required": false;
|
|
847
|
+
"isSignal": true;
|
|
848
|
+
};
|
|
849
|
+
"options": {
|
|
850
|
+
"alias": "options";
|
|
851
|
+
"required": true;
|
|
852
|
+
"isSignal": true;
|
|
853
|
+
};
|
|
854
|
+
"buttonClass": {
|
|
855
|
+
"alias": "buttonClass";
|
|
856
|
+
"required": false;
|
|
857
|
+
"isSignal": true;
|
|
858
|
+
};
|
|
859
|
+
"icon": {
|
|
860
|
+
"alias": "icon";
|
|
861
|
+
"required": false;
|
|
862
|
+
"isSignal": true;
|
|
863
|
+
};
|
|
864
|
+
}, {
|
|
865
|
+
"selectionChange": "selectionChange";
|
|
866
|
+
}, never, never, true, never>;
|
|
867
|
+
}
|
|
868
|
+
export type ChoiceChipsLayout = 'inline' | 'wrap';
|
|
869
|
+
export type ChoiceChipsValue = unknown | unknown[] | null;
|
|
870
|
+
export interface ChoiceChipsActionButton {
|
|
871
|
+
icon: string;
|
|
872
|
+
ariaLabel: string;
|
|
873
|
+
tooltip?: string;
|
|
874
|
+
}
|
|
875
|
+
export declare class ChoiceChipsComponent implements ControlValueAccessor {
|
|
876
|
+
protected readonly localization: LocalizationService;
|
|
877
|
+
readonly id: import("@angular/core").InputSignal<string>;
|
|
878
|
+
readonly options: import("@angular/core").InputSignal<SelectOption$1[]>;
|
|
879
|
+
readonly multiple: import("@angular/core").InputSignal<boolean>;
|
|
880
|
+
readonly layout: import("@angular/core").InputSignal<ChoiceChipsLayout>;
|
|
881
|
+
readonly ariaLabel: import("@angular/core").InputSignal<string>;
|
|
882
|
+
readonly ariaDescribedby: import("@angular/core").InputSignal<string>;
|
|
883
|
+
readonly invalid: import("@angular/core").InputSignal<boolean>;
|
|
884
|
+
readonly action: import("@angular/core").InputSignal<ChoiceChipsActionButton | undefined>;
|
|
885
|
+
readonly actionClick: import("@angular/core").OutputEmitterRef<void>;
|
|
886
|
+
private readonly generatedId;
|
|
887
|
+
protected readonly value: import("@angular/core").WritableSignal<unknown>;
|
|
888
|
+
protected readonly isDisabled: import("@angular/core").WritableSignal<boolean>;
|
|
889
|
+
protected readonly controlId: import("@angular/core").Signal<string>;
|
|
890
|
+
protected readonly groupClasses: import("@angular/core").Signal<"flex min-w-0 flex-1 flex-nowrap gap-2 overflow-x-auto py-0.5" | "flex flex-1 flex-wrap gap-2 py-0.5">;
|
|
891
|
+
private onChangeFn;
|
|
892
|
+
private onTouchedFn;
|
|
893
|
+
protected optionId(index: number): string;
|
|
894
|
+
protected isSelected(option: SelectOption$1): boolean;
|
|
895
|
+
protected optionClasses(option: SelectOption$1): string;
|
|
896
|
+
protected selectOption(option: SelectOption$1): void;
|
|
897
|
+
protected onBlur(): void;
|
|
898
|
+
protected onActionClick(): void;
|
|
899
|
+
writeValue(value: ChoiceChipsValue | undefined): void;
|
|
900
|
+
registerOnChange(fn: (value: ChoiceChipsValue) => void): void;
|
|
901
|
+
registerOnTouched(fn: () => void): void;
|
|
902
|
+
setDisabledState(isDisabled: boolean): void;
|
|
903
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ChoiceChipsComponent, never>;
|
|
904
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ChoiceChipsComponent, "hui-choice-chips", never, {
|
|
905
|
+
"id": {
|
|
906
|
+
"alias": "id";
|
|
907
|
+
"required": false;
|
|
908
|
+
"isSignal": true;
|
|
909
|
+
};
|
|
910
|
+
"options": {
|
|
911
|
+
"alias": "options";
|
|
912
|
+
"required": false;
|
|
913
|
+
"isSignal": true;
|
|
914
|
+
};
|
|
915
|
+
"multiple": {
|
|
916
|
+
"alias": "multiple";
|
|
917
|
+
"required": false;
|
|
918
|
+
"isSignal": true;
|
|
919
|
+
};
|
|
920
|
+
"layout": {
|
|
921
|
+
"alias": "layout";
|
|
922
|
+
"required": false;
|
|
923
|
+
"isSignal": true;
|
|
924
|
+
};
|
|
925
|
+
"ariaLabel": {
|
|
926
|
+
"alias": "ariaLabel";
|
|
927
|
+
"required": false;
|
|
928
|
+
"isSignal": true;
|
|
929
|
+
};
|
|
930
|
+
"ariaDescribedby": {
|
|
931
|
+
"alias": "ariaDescribedby";
|
|
932
|
+
"required": false;
|
|
933
|
+
"isSignal": true;
|
|
934
|
+
};
|
|
935
|
+
"invalid": {
|
|
936
|
+
"alias": "invalid";
|
|
937
|
+
"required": false;
|
|
938
|
+
"isSignal": true;
|
|
939
|
+
};
|
|
940
|
+
"action": {
|
|
941
|
+
"alias": "action";
|
|
942
|
+
"required": false;
|
|
943
|
+
"isSignal": true;
|
|
944
|
+
};
|
|
945
|
+
}, {
|
|
946
|
+
"actionClick": "actionClick";
|
|
947
|
+
}, never, never, true, never>;
|
|
948
|
+
}
|
|
949
|
+
export type DateInputMode = 'date' | 'datetime-local' | 'month' | 'year';
|
|
950
|
+
export declare class DateInputComponent implements ControlValueAccessor {
|
|
951
|
+
id: import("@angular/core").InputSignal<string>;
|
|
952
|
+
mode: import("@angular/core").InputSignal<DateInputMode>;
|
|
953
|
+
placeholder: import("@angular/core").InputSignal<string>;
|
|
954
|
+
ariaLabel: import("@angular/core").InputSignal<string>;
|
|
955
|
+
ariaDescribedby: import("@angular/core").InputSignal<string>;
|
|
956
|
+
invalid: import("@angular/core").InputSignal<boolean>;
|
|
957
|
+
class: import("@angular/core").InputSignal<string>;
|
|
958
|
+
min: import("@angular/core").InputSignal<string>;
|
|
959
|
+
max: import("@angular/core").InputSignal<string>;
|
|
960
|
+
protected readonly value: import("@angular/core").WritableSignal<string>;
|
|
961
|
+
protected readonly isDisabled: import("@angular/core").WritableSignal<boolean>;
|
|
962
|
+
protected readonly isInvalid: import("@angular/core").Signal<boolean>;
|
|
963
|
+
protected readonly inputType: import("@angular/core").Signal<"number" | "date" | "month" | "datetime-local">;
|
|
964
|
+
protected readonly inputClasses: import("@angular/core").Signal<string>;
|
|
965
|
+
private onChange;
|
|
966
|
+
protected onTouched: () => void;
|
|
967
|
+
protected onInput(event: Event): void;
|
|
968
|
+
writeValue(value: string): void;
|
|
969
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
970
|
+
registerOnTouched(fn: () => void): void;
|
|
971
|
+
setDisabledState(isDisabled: boolean): void;
|
|
972
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DateInputComponent, never>;
|
|
973
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DateInputComponent, "hui-date-input", never, {
|
|
974
|
+
"id": {
|
|
975
|
+
"alias": "id";
|
|
976
|
+
"required": false;
|
|
977
|
+
"isSignal": true;
|
|
978
|
+
};
|
|
979
|
+
"mode": {
|
|
980
|
+
"alias": "mode";
|
|
981
|
+
"required": false;
|
|
982
|
+
"isSignal": true;
|
|
983
|
+
};
|
|
984
|
+
"placeholder": {
|
|
985
|
+
"alias": "placeholder";
|
|
986
|
+
"required": false;
|
|
987
|
+
"isSignal": true;
|
|
988
|
+
};
|
|
989
|
+
"ariaLabel": {
|
|
990
|
+
"alias": "ariaLabel";
|
|
991
|
+
"required": false;
|
|
992
|
+
"isSignal": true;
|
|
993
|
+
};
|
|
994
|
+
"ariaDescribedby": {
|
|
995
|
+
"alias": "ariaDescribedby";
|
|
996
|
+
"required": false;
|
|
997
|
+
"isSignal": true;
|
|
998
|
+
};
|
|
999
|
+
"invalid": {
|
|
1000
|
+
"alias": "invalid";
|
|
1001
|
+
"required": false;
|
|
1002
|
+
"isSignal": true;
|
|
1003
|
+
};
|
|
1004
|
+
"class": {
|
|
1005
|
+
"alias": "class";
|
|
1006
|
+
"required": false;
|
|
1007
|
+
"isSignal": true;
|
|
1008
|
+
};
|
|
1009
|
+
"min": {
|
|
1010
|
+
"alias": "min";
|
|
1011
|
+
"required": false;
|
|
1012
|
+
"isSignal": true;
|
|
1013
|
+
};
|
|
1014
|
+
"max": {
|
|
1015
|
+
"alias": "max";
|
|
1016
|
+
"required": false;
|
|
1017
|
+
"isSignal": true;
|
|
1018
|
+
};
|
|
1019
|
+
}, {}, never, never, true, never>;
|
|
1020
|
+
}
|
|
1021
|
+
export declare class EmailInputComponent implements ControlValueAccessor {
|
|
1022
|
+
id: import("@angular/core").InputSignal<string>;
|
|
1023
|
+
placeholder: import("@angular/core").InputSignal<string>;
|
|
1024
|
+
ariaLabel: import("@angular/core").InputSignal<string>;
|
|
1025
|
+
ariaDescribedby: import("@angular/core").InputSignal<string>;
|
|
1026
|
+
displayInvalid: import("@angular/core").InputSignal<boolean>;
|
|
1027
|
+
protected readonly value: import("@angular/core").WritableSignal<string>;
|
|
1028
|
+
protected readonly isDisabled: import("@angular/core").WritableSignal<boolean>;
|
|
1029
|
+
protected readonly isInvalid: import("@angular/core").Signal<boolean>;
|
|
1030
|
+
protected readonly inputClasses: import("@angular/core").Signal<string>;
|
|
1031
|
+
private onChange;
|
|
1032
|
+
protected onTouched: () => void;
|
|
1033
|
+
protected onInput(event: Event): void;
|
|
1034
|
+
writeValue(value: string): void;
|
|
1035
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
1036
|
+
registerOnTouched(fn: () => void): void;
|
|
1037
|
+
setDisabledState(isDisabled: boolean): void;
|
|
1038
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<EmailInputComponent, never>;
|
|
1039
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<EmailInputComponent, "hui-email-input", never, {
|
|
1040
|
+
"id": {
|
|
1041
|
+
"alias": "id";
|
|
1042
|
+
"required": false;
|
|
1043
|
+
"isSignal": true;
|
|
1044
|
+
};
|
|
1045
|
+
"placeholder": {
|
|
1046
|
+
"alias": "placeholder";
|
|
1047
|
+
"required": false;
|
|
1048
|
+
"isSignal": true;
|
|
1049
|
+
};
|
|
1050
|
+
"ariaLabel": {
|
|
1051
|
+
"alias": "ariaLabel";
|
|
1052
|
+
"required": false;
|
|
1053
|
+
"isSignal": true;
|
|
1054
|
+
};
|
|
1055
|
+
"ariaDescribedby": {
|
|
1056
|
+
"alias": "ariaDescribedby";
|
|
1057
|
+
"required": false;
|
|
1058
|
+
"isSignal": true;
|
|
1059
|
+
};
|
|
1060
|
+
"displayInvalid": {
|
|
1061
|
+
"alias": "displayInvalid";
|
|
1062
|
+
"required": false;
|
|
1063
|
+
"isSignal": true;
|
|
1064
|
+
};
|
|
1065
|
+
}, {}, never, never, true, never>;
|
|
1066
|
+
}
|
|
1067
|
+
export interface FileInfo {
|
|
1068
|
+
file: File;
|
|
1069
|
+
name: string;
|
|
1070
|
+
size: number;
|
|
1071
|
+
type: string;
|
|
1072
|
+
}
|
|
1073
|
+
export declare class FileInputComponent implements ControlValueAccessor {
|
|
1074
|
+
id: import("@angular/core").InputSignal<string>;
|
|
1075
|
+
placeholder: import("@angular/core").InputSignal<string>;
|
|
1076
|
+
ariaLabel: import("@angular/core").InputSignal<string>;
|
|
1077
|
+
ariaDescribedby: import("@angular/core").InputSignal<string>;
|
|
1078
|
+
invalid: import("@angular/core").InputSignal<boolean>;
|
|
1079
|
+
accept: import("@angular/core").InputSignal<string>;
|
|
1080
|
+
multiple: import("@angular/core").InputSignal<boolean>;
|
|
1081
|
+
maxSize: import("@angular/core").InputSignal<number | undefined>;
|
|
1082
|
+
maxFiles: import("@angular/core").InputSignal<number | undefined>;
|
|
1083
|
+
enableDragDrop: import("@angular/core").InputSignal<boolean>;
|
|
1084
|
+
protected readonly files: import("@angular/core").WritableSignal<FileInfo[]>;
|
|
1085
|
+
protected readonly isDisabled: import("@angular/core").WritableSignal<boolean>;
|
|
1086
|
+
protected readonly isDragOver: import("@angular/core").WritableSignal<boolean>;
|
|
1087
|
+
protected readonly validationError: import("@angular/core").WritableSignal<string>;
|
|
1088
|
+
protected readonly isInvalid: import("@angular/core").Signal<boolean>;
|
|
1089
|
+
protected readonly acceptDescription: import("@angular/core").Signal<string>;
|
|
1090
|
+
protected readonly dropZoneClasses: import("@angular/core").Signal<string>;
|
|
1091
|
+
protected readonly buttonClasses: import("@angular/core").Signal<string>;
|
|
1092
|
+
private onChange;
|
|
1093
|
+
protected onTouched: () => void;
|
|
1094
|
+
protected onFileSelect(event: Event): void;
|
|
1095
|
+
protected onDragOver(event: DragEvent): void;
|
|
1096
|
+
protected onDragLeave(event: DragEvent): void;
|
|
1097
|
+
protected onDrop(event: DragEvent): void;
|
|
1098
|
+
protected removeFile(fileInfo: FileInfo): void;
|
|
1099
|
+
protected formatBytes(bytes: number): string;
|
|
1100
|
+
protected getFileIcon(mimeType: string): string;
|
|
1101
|
+
private addFiles;
|
|
1102
|
+
private isFileTypeValid;
|
|
1103
|
+
private emitChange;
|
|
1104
|
+
writeValue(value: File[] | null): void;
|
|
1105
|
+
registerOnChange(fn: (value: File[]) => void): void;
|
|
1106
|
+
registerOnTouched(fn: () => void): void;
|
|
1107
|
+
setDisabledState(isDisabled: boolean): void;
|
|
1108
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FileInputComponent, never>;
|
|
1109
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FileInputComponent, "hui-file-input", never, {
|
|
1110
|
+
"id": {
|
|
1111
|
+
"alias": "id";
|
|
1112
|
+
"required": false;
|
|
1113
|
+
"isSignal": true;
|
|
1114
|
+
};
|
|
1115
|
+
"placeholder": {
|
|
1116
|
+
"alias": "placeholder";
|
|
1117
|
+
"required": false;
|
|
1118
|
+
"isSignal": true;
|
|
1119
|
+
};
|
|
1120
|
+
"ariaLabel": {
|
|
1121
|
+
"alias": "ariaLabel";
|
|
1122
|
+
"required": false;
|
|
1123
|
+
"isSignal": true;
|
|
1124
|
+
};
|
|
1125
|
+
"ariaDescribedby": {
|
|
1126
|
+
"alias": "ariaDescribedby";
|
|
1127
|
+
"required": false;
|
|
1128
|
+
"isSignal": true;
|
|
1129
|
+
};
|
|
1130
|
+
"invalid": {
|
|
1131
|
+
"alias": "invalid";
|
|
1132
|
+
"required": false;
|
|
1133
|
+
"isSignal": true;
|
|
1134
|
+
};
|
|
1135
|
+
"accept": {
|
|
1136
|
+
"alias": "accept";
|
|
1137
|
+
"required": false;
|
|
1138
|
+
"isSignal": true;
|
|
1139
|
+
};
|
|
1140
|
+
"multiple": {
|
|
1141
|
+
"alias": "multiple";
|
|
1142
|
+
"required": false;
|
|
1143
|
+
"isSignal": true;
|
|
1144
|
+
};
|
|
1145
|
+
"maxSize": {
|
|
1146
|
+
"alias": "maxSize";
|
|
1147
|
+
"required": false;
|
|
1148
|
+
"isSignal": true;
|
|
1149
|
+
};
|
|
1150
|
+
"maxFiles": {
|
|
1151
|
+
"alias": "maxFiles";
|
|
1152
|
+
"required": false;
|
|
1153
|
+
"isSignal": true;
|
|
1154
|
+
};
|
|
1155
|
+
"enableDragDrop": {
|
|
1156
|
+
"alias": "enableDragDrop";
|
|
1157
|
+
"required": false;
|
|
1158
|
+
"isSignal": true;
|
|
1159
|
+
};
|
|
1160
|
+
}, {}, never, never, true, never>;
|
|
1161
|
+
}
|
|
1162
|
+
export declare class FormDescriptionComponent {
|
|
1163
|
+
id: import("@angular/core").InputSignal<string>;
|
|
1164
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormDescriptionComponent, never>;
|
|
1165
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FormDescriptionComponent, "hui-form-description", never, {
|
|
1166
|
+
"id": {
|
|
1167
|
+
"alias": "id";
|
|
1168
|
+
"required": false;
|
|
1169
|
+
"isSignal": true;
|
|
1170
|
+
};
|
|
1171
|
+
}, {}, never, ["*"], true, never>;
|
|
1172
|
+
}
|
|
1173
|
+
export declare class FormErrorComponent {
|
|
1174
|
+
show: import("@angular/core").InputSignal<boolean>;
|
|
1175
|
+
id: import("@angular/core").InputSignal<string>;
|
|
1176
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormErrorComponent, never>;
|
|
1177
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FormErrorComponent, "hui-form-error", never, {
|
|
1178
|
+
"show": {
|
|
1179
|
+
"alias": "show";
|
|
1180
|
+
"required": false;
|
|
1181
|
+
"isSignal": true;
|
|
1182
|
+
};
|
|
1183
|
+
"id": {
|
|
1184
|
+
"alias": "id";
|
|
1185
|
+
"required": false;
|
|
1186
|
+
"isSignal": true;
|
|
1187
|
+
};
|
|
1188
|
+
}, {}, never, ["*"], true, never>;
|
|
1189
|
+
}
|
|
1190
|
+
export declare class FormFieldComponent {
|
|
1191
|
+
private readonly destroyRef;
|
|
1192
|
+
protected readonly localization: LocalizationService;
|
|
1193
|
+
label: import("@angular/core").InputSignal<string>;
|
|
1194
|
+
hint: import("@angular/core").InputSignal<string>;
|
|
1195
|
+
helper: import("@angular/core").InputSignal<string>;
|
|
1196
|
+
description: import("@angular/core").InputSignal<string>;
|
|
1197
|
+
layout: import("@angular/core").InputSignal<"column" | "row" | "stacked">;
|
|
1198
|
+
note: import("@angular/core").InputSignal<string>;
|
|
1199
|
+
noteVariant: import("@angular/core").InputSignal<"info" | "warning" | "success" | "error" | "neutral">;
|
|
1200
|
+
noteClasses: import("@angular/core").InputSignal<string>;
|
|
1201
|
+
required: import("@angular/core").InputSignal<boolean>;
|
|
1202
|
+
fieldName: import("@angular/core").InputSignal<string>;
|
|
1203
|
+
validationStrategy: import("@angular/core").InputSignal<"submit" | "touched">;
|
|
1204
|
+
formSubmitted: import("@angular/core").InputSignal<boolean>;
|
|
1205
|
+
inputId: import("@angular/core").InputSignal<string>;
|
|
1206
|
+
type: import("@angular/core").InputSignal<FieldType>;
|
|
1207
|
+
control: import("@angular/core").InputSignal<FormControl<any> | null>;
|
|
1208
|
+
private readonly uniqueId;
|
|
1209
|
+
readonly fieldId: import("@angular/core").Signal<string>;
|
|
1210
|
+
protected readonly controlTouched: import("@angular/core").WritableSignal<boolean>;
|
|
1211
|
+
protected readonly controlInvalid: import("@angular/core").WritableSignal<boolean>;
|
|
1212
|
+
protected readonly controlDisabled: import("@angular/core").WritableSignal<boolean>;
|
|
1213
|
+
protected readonly controlErrors: import("@angular/core").WritableSignal<any>;
|
|
1214
|
+
constructor();
|
|
1215
|
+
protected readonly computedInputId: import("@angular/core").Signal<string>;
|
|
1216
|
+
protected readonly hintId: import("@angular/core").Signal<string>;
|
|
1217
|
+
protected readonly descriptionId: import("@angular/core").Signal<string>;
|
|
1218
|
+
protected readonly errorId: import("@angular/core").Signal<string>;
|
|
1219
|
+
protected readonly isDisabled: import("@angular/core").Signal<boolean>;
|
|
1220
|
+
readonly showError: import("@angular/core").Signal<boolean>;
|
|
1221
|
+
protected readonly errorMessage: import("@angular/core").Signal<string>;
|
|
1222
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormFieldComponent, never>;
|
|
1223
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FormFieldComponent, "hui-form-field", never, {
|
|
1224
|
+
"label": {
|
|
1225
|
+
"alias": "label";
|
|
1226
|
+
"required": false;
|
|
1227
|
+
"isSignal": true;
|
|
1228
|
+
};
|
|
1229
|
+
"hint": {
|
|
1230
|
+
"alias": "hint";
|
|
1231
|
+
"required": false;
|
|
1232
|
+
"isSignal": true;
|
|
1233
|
+
};
|
|
1234
|
+
"helper": {
|
|
1235
|
+
"alias": "helper";
|
|
1236
|
+
"required": false;
|
|
1237
|
+
"isSignal": true;
|
|
1238
|
+
};
|
|
1239
|
+
"description": {
|
|
1240
|
+
"alias": "description";
|
|
1241
|
+
"required": false;
|
|
1242
|
+
"isSignal": true;
|
|
1243
|
+
};
|
|
1244
|
+
"layout": {
|
|
1245
|
+
"alias": "layout";
|
|
1246
|
+
"required": false;
|
|
1247
|
+
"isSignal": true;
|
|
1248
|
+
};
|
|
1249
|
+
"note": {
|
|
1250
|
+
"alias": "note";
|
|
1251
|
+
"required": false;
|
|
1252
|
+
"isSignal": true;
|
|
1253
|
+
};
|
|
1254
|
+
"noteVariant": {
|
|
1255
|
+
"alias": "noteVariant";
|
|
1256
|
+
"required": false;
|
|
1257
|
+
"isSignal": true;
|
|
1258
|
+
};
|
|
1259
|
+
"noteClasses": {
|
|
1260
|
+
"alias": "noteClasses";
|
|
1261
|
+
"required": false;
|
|
1262
|
+
"isSignal": true;
|
|
1263
|
+
};
|
|
1264
|
+
"required": {
|
|
1265
|
+
"alias": "required";
|
|
1266
|
+
"required": false;
|
|
1267
|
+
"isSignal": true;
|
|
1268
|
+
};
|
|
1269
|
+
"fieldName": {
|
|
1270
|
+
"alias": "fieldName";
|
|
1271
|
+
"required": false;
|
|
1272
|
+
"isSignal": true;
|
|
1273
|
+
};
|
|
1274
|
+
"validationStrategy": {
|
|
1275
|
+
"alias": "validationStrategy";
|
|
1276
|
+
"required": false;
|
|
1277
|
+
"isSignal": true;
|
|
1278
|
+
};
|
|
1279
|
+
"formSubmitted": {
|
|
1280
|
+
"alias": "formSubmitted";
|
|
1281
|
+
"required": false;
|
|
1282
|
+
"isSignal": true;
|
|
1283
|
+
};
|
|
1284
|
+
"inputId": {
|
|
1285
|
+
"alias": "inputId";
|
|
1286
|
+
"required": false;
|
|
1287
|
+
"isSignal": true;
|
|
1288
|
+
};
|
|
1289
|
+
"type": {
|
|
1290
|
+
"alias": "type";
|
|
1291
|
+
"required": false;
|
|
1292
|
+
"isSignal": true;
|
|
1293
|
+
};
|
|
1294
|
+
"control": {
|
|
1295
|
+
"alias": "control";
|
|
1296
|
+
"required": false;
|
|
1297
|
+
"isSignal": true;
|
|
1298
|
+
};
|
|
1299
|
+
}, {}, never, ["*"], true, never>;
|
|
1300
|
+
}
|
|
1301
|
+
type PopoverPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
1302
|
+
export declare class FormHelperComponent {
|
|
1303
|
+
id: import("@angular/core").InputSignal<string>;
|
|
1304
|
+
label: import("@angular/core").InputSignal<string>;
|
|
1305
|
+
protected readonly isOpen: import("@angular/core").WritableSignal<boolean>;
|
|
1306
|
+
protected readonly position: import("@angular/core").WritableSignal<PopoverPosition>;
|
|
1307
|
+
private readonly triggerButton;
|
|
1308
|
+
protected togglePopover(): void;
|
|
1309
|
+
protected onBlur(): void;
|
|
1310
|
+
private calculatePosition;
|
|
1311
|
+
protected getPopoverPositionClasses(): string;
|
|
1312
|
+
protected getArrowClasses(): string;
|
|
1313
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormHelperComponent, never>;
|
|
1314
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FormHelperComponent, "hui-form-helper", never, {
|
|
1315
|
+
"id": {
|
|
1316
|
+
"alias": "id";
|
|
1317
|
+
"required": false;
|
|
1318
|
+
"isSignal": true;
|
|
1319
|
+
};
|
|
1320
|
+
"label": {
|
|
1321
|
+
"alias": "label";
|
|
1322
|
+
"required": false;
|
|
1323
|
+
"isSignal": true;
|
|
1324
|
+
};
|
|
1325
|
+
}, {}, never, ["*"], true, never>;
|
|
1326
|
+
}
|
|
1327
|
+
export declare class FormHintComponent {
|
|
1328
|
+
id: import("@angular/core").InputSignal<string>;
|
|
1329
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormHintComponent, never>;
|
|
1330
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FormHintComponent, "hui-form-hint", never, {
|
|
1331
|
+
"id": {
|
|
1332
|
+
"alias": "id";
|
|
1333
|
+
"required": false;
|
|
1334
|
+
"isSignal": true;
|
|
1335
|
+
};
|
|
1336
|
+
}, {}, never, ["*"], true, never>;
|
|
1337
|
+
}
|
|
1338
|
+
export declare class FormLabelComponent {
|
|
1339
|
+
htmlFor: import("@angular/core").InputSignal<string>;
|
|
1340
|
+
required: import("@angular/core").InputSignal<boolean>;
|
|
1341
|
+
class: import("@angular/core").InputSignal<string>;
|
|
1342
|
+
type: import("@angular/core").InputSignal<FieldType>;
|
|
1343
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormLabelComponent, never>;
|
|
1344
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FormLabelComponent, "hui-form-label", never, {
|
|
1345
|
+
"htmlFor": {
|
|
1346
|
+
"alias": "htmlFor";
|
|
1347
|
+
"required": false;
|
|
1348
|
+
"isSignal": true;
|
|
1349
|
+
};
|
|
1350
|
+
"required": {
|
|
1351
|
+
"alias": "required";
|
|
1352
|
+
"required": false;
|
|
1353
|
+
"isSignal": true;
|
|
1354
|
+
};
|
|
1355
|
+
"class": {
|
|
1356
|
+
"alias": "class";
|
|
1357
|
+
"required": false;
|
|
1358
|
+
"isSignal": true;
|
|
1359
|
+
};
|
|
1360
|
+
"type": {
|
|
1361
|
+
"alias": "type";
|
|
1362
|
+
"required": false;
|
|
1363
|
+
"isSignal": true;
|
|
1364
|
+
};
|
|
1365
|
+
}, {}, never, ["*"], true, never>;
|
|
1366
|
+
}
|
|
1367
|
+
export declare class FormNoteComponent {
|
|
1368
|
+
id: import("@angular/core").InputSignal<string>;
|
|
1369
|
+
variant: import("@angular/core").InputSignal<"info" | "warning" | "success" | "error" | "neutral">;
|
|
1370
|
+
customClasses: import("@angular/core").InputSignal<string>;
|
|
1371
|
+
protected readonly noteClasses: import("@angular/core").Signal<string>;
|
|
1372
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormNoteComponent, never>;
|
|
1373
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FormNoteComponent, "hui-form-note", never, {
|
|
1374
|
+
"id": {
|
|
1375
|
+
"alias": "id";
|
|
1376
|
+
"required": false;
|
|
1377
|
+
"isSignal": true;
|
|
1378
|
+
};
|
|
1379
|
+
"variant": {
|
|
1380
|
+
"alias": "variant";
|
|
1381
|
+
"required": false;
|
|
1382
|
+
"isSignal": true;
|
|
1383
|
+
};
|
|
1384
|
+
"customClasses": {
|
|
1385
|
+
"alias": "customClasses";
|
|
1386
|
+
"required": false;
|
|
1387
|
+
"isSignal": true;
|
|
1388
|
+
};
|
|
1389
|
+
}, {}, never, ["*"], true, never>;
|
|
1390
|
+
}
|
|
1391
|
+
export declare class ImageSelectorInputComponent implements ControlValueAccessor {
|
|
1392
|
+
protected readonly mediaSelector: import("@harmolody/ui").MediaSelector | null;
|
|
1393
|
+
id: import("@angular/core").InputSignal<string>;
|
|
1394
|
+
placeholder: import("@angular/core").InputSignal<string>;
|
|
1395
|
+
ariaLabel: import("@angular/core").InputSignal<string>;
|
|
1396
|
+
ariaDescribedby: import("@angular/core").InputSignal<string>;
|
|
1397
|
+
invalid: import("@angular/core").InputSignal<boolean>;
|
|
1398
|
+
altText: import("@angular/core").InputSignal<string>;
|
|
1399
|
+
mediaType: import("@angular/core").InputSignal<string>;
|
|
1400
|
+
allowUpload: import("@angular/core").InputSignal<boolean>;
|
|
1401
|
+
selectionMode: import("@angular/core").InputSignal<"single" | "multiple">;
|
|
1402
|
+
showPreview: import("@angular/core").InputSignal<boolean>;
|
|
1403
|
+
editableInput: import("@angular/core").InputSignal<boolean>;
|
|
1404
|
+
protected readonly value: import("@angular/core").WritableSignal<string | null>;
|
|
1405
|
+
protected readonly isDisabled: import("@angular/core").WritableSignal<boolean>;
|
|
1406
|
+
protected readonly imageError: import("@angular/core").WritableSignal<boolean>;
|
|
1407
|
+
protected readonly isInvalid: import("@angular/core").Signal<boolean>;
|
|
1408
|
+
protected readonly inputClasses: import("@angular/core").Signal<string>;
|
|
1409
|
+
protected readonly browseButtonClasses: import("@angular/core").Signal<string>;
|
|
1410
|
+
protected readonly clearButtonClasses: import("@angular/core").Signal<string>;
|
|
1411
|
+
private onChange;
|
|
1412
|
+
protected onTouched: () => void;
|
|
1413
|
+
protected openMediaSelector(): Promise<void>;
|
|
1414
|
+
protected clearSelection(): void;
|
|
1415
|
+
protected onImageError(): void;
|
|
1416
|
+
protected onInputChange(event: Event): void;
|
|
1417
|
+
private setImage;
|
|
1418
|
+
writeValue(value: string | null): void;
|
|
1419
|
+
registerOnChange(fn: (value: string | null) => void): void;
|
|
1420
|
+
registerOnTouched(fn: () => void): void;
|
|
1421
|
+
setDisabledState(isDisabled: boolean): void;
|
|
1422
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ImageSelectorInputComponent, never>;
|
|
1423
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ImageSelectorInputComponent, "hui-image-selector-input", never, {
|
|
1424
|
+
"id": {
|
|
1425
|
+
"alias": "id";
|
|
1426
|
+
"required": false;
|
|
1427
|
+
"isSignal": true;
|
|
1428
|
+
};
|
|
1429
|
+
"placeholder": {
|
|
1430
|
+
"alias": "placeholder";
|
|
1431
|
+
"required": false;
|
|
1432
|
+
"isSignal": true;
|
|
1433
|
+
};
|
|
1434
|
+
"ariaLabel": {
|
|
1435
|
+
"alias": "ariaLabel";
|
|
1436
|
+
"required": false;
|
|
1437
|
+
"isSignal": true;
|
|
1438
|
+
};
|
|
1439
|
+
"ariaDescribedby": {
|
|
1440
|
+
"alias": "ariaDescribedby";
|
|
1441
|
+
"required": false;
|
|
1442
|
+
"isSignal": true;
|
|
1443
|
+
};
|
|
1444
|
+
"invalid": {
|
|
1445
|
+
"alias": "invalid";
|
|
1446
|
+
"required": false;
|
|
1447
|
+
"isSignal": true;
|
|
1448
|
+
};
|
|
1449
|
+
"altText": {
|
|
1450
|
+
"alias": "altText";
|
|
1451
|
+
"required": false;
|
|
1452
|
+
"isSignal": true;
|
|
1453
|
+
};
|
|
1454
|
+
"mediaType": {
|
|
1455
|
+
"alias": "mediaType";
|
|
1456
|
+
"required": false;
|
|
1457
|
+
"isSignal": true;
|
|
1458
|
+
};
|
|
1459
|
+
"allowUpload": {
|
|
1460
|
+
"alias": "allowUpload";
|
|
1461
|
+
"required": false;
|
|
1462
|
+
"isSignal": true;
|
|
1463
|
+
};
|
|
1464
|
+
"selectionMode": {
|
|
1465
|
+
"alias": "selectionMode";
|
|
1466
|
+
"required": false;
|
|
1467
|
+
"isSignal": true;
|
|
1468
|
+
};
|
|
1469
|
+
"showPreview": {
|
|
1470
|
+
"alias": "showPreview";
|
|
1471
|
+
"required": false;
|
|
1472
|
+
"isSignal": true;
|
|
1473
|
+
};
|
|
1474
|
+
"editableInput": {
|
|
1475
|
+
"alias": "editableInput";
|
|
1476
|
+
"required": false;
|
|
1477
|
+
"isSignal": true;
|
|
1478
|
+
};
|
|
1479
|
+
}, {}, never, never, true, never>;
|
|
1480
|
+
}
|
|
1481
|
+
export declare class InputComponent implements ControlValueAccessor {
|
|
1482
|
+
id: import("@angular/core").InputSignal<string>;
|
|
1483
|
+
type: import("@angular/core").InputSignal<string>;
|
|
1484
|
+
placeholder: import("@angular/core").InputSignal<string>;
|
|
1485
|
+
ariaLabel: import("@angular/core").InputSignal<string>;
|
|
1486
|
+
ariaDescribedby: import("@angular/core").InputSignal<string>;
|
|
1487
|
+
invalid: import("@angular/core").InputSignal<boolean>;
|
|
1488
|
+
class: import("@angular/core").InputSignal<string>;
|
|
1489
|
+
protected readonly value: import("@angular/core").WritableSignal<string>;
|
|
1490
|
+
protected readonly isDisabled: import("@angular/core").WritableSignal<boolean>;
|
|
1491
|
+
protected readonly isInvalid: import("@angular/core").Signal<boolean>;
|
|
1492
|
+
protected readonly inputClasses: import("@angular/core").Signal<string>;
|
|
1493
|
+
private onChange;
|
|
1494
|
+
protected onTouched: () => void;
|
|
1495
|
+
protected onInput(event: Event): void;
|
|
1496
|
+
writeValue(value: string): void;
|
|
1497
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
1498
|
+
registerOnTouched(fn: () => void): void;
|
|
1499
|
+
setDisabledState(isDisabled: boolean): void;
|
|
1500
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<InputComponent, never>;
|
|
1501
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<InputComponent, "hui-input", never, {
|
|
1502
|
+
"id": {
|
|
1503
|
+
"alias": "id";
|
|
1504
|
+
"required": false;
|
|
1505
|
+
"isSignal": true;
|
|
1506
|
+
};
|
|
1507
|
+
"type": {
|
|
1508
|
+
"alias": "type";
|
|
1509
|
+
"required": false;
|
|
1510
|
+
"isSignal": true;
|
|
1511
|
+
};
|
|
1512
|
+
"placeholder": {
|
|
1513
|
+
"alias": "placeholder";
|
|
1514
|
+
"required": false;
|
|
1515
|
+
"isSignal": true;
|
|
1516
|
+
};
|
|
1517
|
+
"ariaLabel": {
|
|
1518
|
+
"alias": "ariaLabel";
|
|
1519
|
+
"required": false;
|
|
1520
|
+
"isSignal": true;
|
|
1521
|
+
};
|
|
1522
|
+
"ariaDescribedby": {
|
|
1523
|
+
"alias": "ariaDescribedby";
|
|
1524
|
+
"required": false;
|
|
1525
|
+
"isSignal": true;
|
|
1526
|
+
};
|
|
1527
|
+
"invalid": {
|
|
1528
|
+
"alias": "invalid";
|
|
1529
|
+
"required": false;
|
|
1530
|
+
"isSignal": true;
|
|
1531
|
+
};
|
|
1532
|
+
"class": {
|
|
1533
|
+
"alias": "class";
|
|
1534
|
+
"required": false;
|
|
1535
|
+
"isSignal": true;
|
|
1536
|
+
};
|
|
1537
|
+
}, {}, never, never, true, never>;
|
|
1538
|
+
}
|
|
1539
|
+
export declare class NumberInputComponent implements ControlValueAccessor {
|
|
1540
|
+
id: import("@angular/core").InputSignal<string>;
|
|
1541
|
+
placeholder: import("@angular/core").InputSignal<string>;
|
|
1542
|
+
min: import("@angular/core").InputSignal<number | undefined>;
|
|
1543
|
+
max: import("@angular/core").InputSignal<number | undefined>;
|
|
1544
|
+
step: import("@angular/core").InputSignal<number>;
|
|
1545
|
+
ariaLabel: import("@angular/core").InputSignal<string>;
|
|
1546
|
+
ariaDescribedby: import("@angular/core").InputSignal<string>;
|
|
1547
|
+
invalid: import("@angular/core").InputSignal<boolean>;
|
|
1548
|
+
protected readonly value: import("@angular/core").WritableSignal<number | null>;
|
|
1549
|
+
protected readonly isDisabled: import("@angular/core").WritableSignal<boolean>;
|
|
1550
|
+
protected readonly isInvalid: import("@angular/core").Signal<boolean>;
|
|
1551
|
+
protected readonly inputClasses: import("@angular/core").Signal<string>;
|
|
1552
|
+
private onChange;
|
|
1553
|
+
protected onTouched: () => void;
|
|
1554
|
+
protected onInput(event: Event): void;
|
|
1555
|
+
writeValue(value: number | null): void;
|
|
1556
|
+
registerOnChange(fn: (value: number | null) => void): void;
|
|
1557
|
+
registerOnTouched(fn: () => void): void;
|
|
1558
|
+
setDisabledState(isDisabled: boolean): void;
|
|
1559
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NumberInputComponent, never>;
|
|
1560
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NumberInputComponent, "hui-number-input", never, {
|
|
1561
|
+
"id": {
|
|
1562
|
+
"alias": "id";
|
|
1563
|
+
"required": false;
|
|
1564
|
+
"isSignal": true;
|
|
1565
|
+
};
|
|
1566
|
+
"placeholder": {
|
|
1567
|
+
"alias": "placeholder";
|
|
1568
|
+
"required": false;
|
|
1569
|
+
"isSignal": true;
|
|
1570
|
+
};
|
|
1571
|
+
"min": {
|
|
1572
|
+
"alias": "min";
|
|
1573
|
+
"required": false;
|
|
1574
|
+
"isSignal": true;
|
|
1575
|
+
};
|
|
1576
|
+
"max": {
|
|
1577
|
+
"alias": "max";
|
|
1578
|
+
"required": false;
|
|
1579
|
+
"isSignal": true;
|
|
1580
|
+
};
|
|
1581
|
+
"step": {
|
|
1582
|
+
"alias": "step";
|
|
1583
|
+
"required": false;
|
|
1584
|
+
"isSignal": true;
|
|
1585
|
+
};
|
|
1586
|
+
"ariaLabel": {
|
|
1587
|
+
"alias": "ariaLabel";
|
|
1588
|
+
"required": false;
|
|
1589
|
+
"isSignal": true;
|
|
1590
|
+
};
|
|
1591
|
+
"ariaDescribedby": {
|
|
1592
|
+
"alias": "ariaDescribedby";
|
|
1593
|
+
"required": false;
|
|
1594
|
+
"isSignal": true;
|
|
1595
|
+
};
|
|
1596
|
+
"invalid": {
|
|
1597
|
+
"alias": "invalid";
|
|
1598
|
+
"required": false;
|
|
1599
|
+
"isSignal": true;
|
|
1600
|
+
};
|
|
1601
|
+
}, {}, never, never, true, never>;
|
|
1602
|
+
}
|
|
1603
|
+
export declare class PasswordInputComponent implements ControlValueAccessor {
|
|
1604
|
+
id: import("@angular/core").InputSignal<string>;
|
|
1605
|
+
placeholder: import("@angular/core").InputSignal<string>;
|
|
1606
|
+
ariaLabel: import("@angular/core").InputSignal<string>;
|
|
1607
|
+
ariaDescribedby: import("@angular/core").InputSignal<string>;
|
|
1608
|
+
displayInvalid: import("@angular/core").InputSignal<boolean>;
|
|
1609
|
+
protected readonly value: import("@angular/core").WritableSignal<string>;
|
|
1610
|
+
protected readonly isDisabled: import("@angular/core").WritableSignal<boolean>;
|
|
1611
|
+
protected readonly showPassword: import("@angular/core").WritableSignal<boolean>;
|
|
1612
|
+
protected readonly isInvalid: import("@angular/core").Signal<boolean>;
|
|
1613
|
+
protected readonly inputClasses: import("@angular/core").Signal<string>;
|
|
1614
|
+
private onChange;
|
|
1615
|
+
protected onTouched: () => void;
|
|
1616
|
+
protected togglePasswordVisibility(): void;
|
|
1617
|
+
protected onInput(event: Event): void;
|
|
1618
|
+
writeValue(value: string): void;
|
|
1619
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
1620
|
+
registerOnTouched(fn: () => void): void;
|
|
1621
|
+
setDisabledState(isDisabled: boolean): void;
|
|
1622
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PasswordInputComponent, never>;
|
|
1623
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PasswordInputComponent, "hui-password-input", never, {
|
|
1624
|
+
"id": {
|
|
1625
|
+
"alias": "id";
|
|
1626
|
+
"required": false;
|
|
1627
|
+
"isSignal": true;
|
|
1628
|
+
};
|
|
1629
|
+
"placeholder": {
|
|
1630
|
+
"alias": "placeholder";
|
|
1631
|
+
"required": false;
|
|
1632
|
+
"isSignal": true;
|
|
1633
|
+
};
|
|
1634
|
+
"ariaLabel": {
|
|
1635
|
+
"alias": "ariaLabel";
|
|
1636
|
+
"required": false;
|
|
1637
|
+
"isSignal": true;
|
|
1638
|
+
};
|
|
1639
|
+
"ariaDescribedby": {
|
|
1640
|
+
"alias": "ariaDescribedby";
|
|
1641
|
+
"required": false;
|
|
1642
|
+
"isSignal": true;
|
|
1643
|
+
};
|
|
1644
|
+
"displayInvalid": {
|
|
1645
|
+
"alias": "displayInvalid";
|
|
1646
|
+
"required": false;
|
|
1647
|
+
"isSignal": true;
|
|
1648
|
+
};
|
|
1649
|
+
}, {}, never, never, true, never>;
|
|
1650
|
+
}
|
|
1651
|
+
export interface RadioOption {
|
|
1652
|
+
label: string;
|
|
1653
|
+
value: string | number;
|
|
1654
|
+
disabled?: boolean;
|
|
1655
|
+
}
|
|
1656
|
+
export declare class RadioGroupComponent implements ControlValueAccessor {
|
|
1657
|
+
id: import("@angular/core").InputSignal<string>;
|
|
1658
|
+
name: import("@angular/core").InputSignal<string>;
|
|
1659
|
+
options: import("@angular/core").InputSignal<RadioOption[]>;
|
|
1660
|
+
inline: import("@angular/core").InputSignal<boolean>;
|
|
1661
|
+
ariaLabel: import("@angular/core").InputSignal<string>;
|
|
1662
|
+
class: import("@angular/core").InputSignal<string>;
|
|
1663
|
+
protected readonly value: import("@angular/core").WritableSignal<string | number | null>;
|
|
1664
|
+
protected readonly isDisabled: import("@angular/core").WritableSignal<boolean>;
|
|
1665
|
+
protected readonly radioClasses: import("@angular/core").Signal<string>;
|
|
1666
|
+
private onChangeFn;
|
|
1667
|
+
protected onTouched: () => void;
|
|
1668
|
+
protected onChange(value: string | number): void;
|
|
1669
|
+
writeValue(value: string | number | null): void;
|
|
1670
|
+
registerOnChange(fn: (value: string | number | null) => void): void;
|
|
1671
|
+
registerOnTouched(fn: () => void): void;
|
|
1672
|
+
setDisabledState(isDisabled: boolean): void;
|
|
1673
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RadioGroupComponent, never>;
|
|
1674
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RadioGroupComponent, "hui-radio-group", never, {
|
|
1675
|
+
"id": {
|
|
1676
|
+
"alias": "id";
|
|
1677
|
+
"required": false;
|
|
1678
|
+
"isSignal": true;
|
|
1679
|
+
};
|
|
1680
|
+
"name": {
|
|
1681
|
+
"alias": "name";
|
|
1682
|
+
"required": false;
|
|
1683
|
+
"isSignal": true;
|
|
1684
|
+
};
|
|
1685
|
+
"options": {
|
|
1686
|
+
"alias": "options";
|
|
1687
|
+
"required": false;
|
|
1688
|
+
"isSignal": true;
|
|
1689
|
+
};
|
|
1690
|
+
"inline": {
|
|
1691
|
+
"alias": "inline";
|
|
1692
|
+
"required": false;
|
|
1693
|
+
"isSignal": true;
|
|
1694
|
+
};
|
|
1695
|
+
"ariaLabel": {
|
|
1696
|
+
"alias": "ariaLabel";
|
|
1697
|
+
"required": false;
|
|
1698
|
+
"isSignal": true;
|
|
1699
|
+
};
|
|
1700
|
+
"class": {
|
|
1701
|
+
"alias": "class";
|
|
1702
|
+
"required": false;
|
|
1703
|
+
"isSignal": true;
|
|
1704
|
+
};
|
|
1705
|
+
}, {}, never, never, true, never>;
|
|
1706
|
+
}
|
|
1707
|
+
export declare class SearchInputComponent implements ControlValueAccessor {
|
|
1708
|
+
protected readonly localization: LocalizationService;
|
|
1709
|
+
readonly id: import("@angular/core").InputSignal<string>;
|
|
1710
|
+
readonly placeholder: import("@angular/core").InputSignal<string>;
|
|
1711
|
+
readonly showClear: import("@angular/core").InputSignal<boolean>;
|
|
1712
|
+
readonly clearLabel: import("@angular/core").InputSignal<string>;
|
|
1713
|
+
readonly ariaLabel: import("@angular/core").InputSignal<string>;
|
|
1714
|
+
readonly ariaDescribedby: import("@angular/core").InputSignal<string>;
|
|
1715
|
+
readonly invalid: import("@angular/core").InputSignal<boolean>;
|
|
1716
|
+
readonly class: import("@angular/core").InputSignal<string>;
|
|
1717
|
+
/** Emitted when Enter is pressed and after the clear action. */
|
|
1718
|
+
readonly search: import("@angular/core").OutputEmitterRef<string>;
|
|
1719
|
+
/** Emitted only when the clear action is used. */
|
|
1720
|
+
readonly cleared: import("@angular/core").OutputEmitterRef<void>;
|
|
1721
|
+
protected readonly inputElement: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
1722
|
+
protected readonly value: import("@angular/core").WritableSignal<string>;
|
|
1723
|
+
protected readonly isDisabled: import("@angular/core").WritableSignal<boolean>;
|
|
1724
|
+
protected readonly hasValue: import("@angular/core").Signal<boolean>;
|
|
1725
|
+
protected readonly accessibleLabel: import("@angular/core").Signal<string>;
|
|
1726
|
+
protected readonly inputClasses: import("@angular/core").Signal<string>;
|
|
1727
|
+
private onChangeFn;
|
|
1728
|
+
private onTouchedFn;
|
|
1729
|
+
protected onInput(event: Event): void;
|
|
1730
|
+
protected submitSearch(): void;
|
|
1731
|
+
protected clear(): void;
|
|
1732
|
+
protected markTouched(): void;
|
|
1733
|
+
writeValue(value: string | null | undefined): void;
|
|
1734
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
1735
|
+
registerOnTouched(fn: () => void): void;
|
|
1736
|
+
setDisabledState(isDisabled: boolean): void;
|
|
1737
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SearchInputComponent, never>;
|
|
1738
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SearchInputComponent, "hui-search-input", never, {
|
|
1739
|
+
"id": {
|
|
1740
|
+
"alias": "id";
|
|
1741
|
+
"required": false;
|
|
1742
|
+
"isSignal": true;
|
|
1743
|
+
};
|
|
1744
|
+
"placeholder": {
|
|
1745
|
+
"alias": "placeholder";
|
|
1746
|
+
"required": false;
|
|
1747
|
+
"isSignal": true;
|
|
1748
|
+
};
|
|
1749
|
+
"showClear": {
|
|
1750
|
+
"alias": "showClear";
|
|
1751
|
+
"required": false;
|
|
1752
|
+
"isSignal": true;
|
|
1753
|
+
};
|
|
1754
|
+
"clearLabel": {
|
|
1755
|
+
"alias": "clearLabel";
|
|
1756
|
+
"required": false;
|
|
1757
|
+
"isSignal": true;
|
|
1758
|
+
};
|
|
1759
|
+
"ariaLabel": {
|
|
1760
|
+
"alias": "ariaLabel";
|
|
1761
|
+
"required": false;
|
|
1762
|
+
"isSignal": true;
|
|
1763
|
+
};
|
|
1764
|
+
"ariaDescribedby": {
|
|
1765
|
+
"alias": "ariaDescribedby";
|
|
1766
|
+
"required": false;
|
|
1767
|
+
"isSignal": true;
|
|
1768
|
+
};
|
|
1769
|
+
"invalid": {
|
|
1770
|
+
"alias": "invalid";
|
|
1771
|
+
"required": false;
|
|
1772
|
+
"isSignal": true;
|
|
1773
|
+
};
|
|
1774
|
+
"class": {
|
|
1775
|
+
"alias": "class";
|
|
1776
|
+
"required": false;
|
|
1777
|
+
"isSignal": true;
|
|
1778
|
+
};
|
|
1779
|
+
}, {
|
|
1780
|
+
"search": "search";
|
|
1781
|
+
"cleared": "cleared";
|
|
1782
|
+
}, never, never, true, never>;
|
|
1783
|
+
}
|
|
1784
|
+
type SelectValue = string | number;
|
|
1785
|
+
type SelectControlValue = SelectValue | SelectValue[] | null;
|
|
1786
|
+
type SelectDropdownAlign = 'left' | 'right';
|
|
1787
|
+
type SelectDropdownPlacement = 'top' | 'bottom';
|
|
1788
|
+
type SelectDropdownWidth = 'trigger' | 'content';
|
|
1789
|
+
interface SelectOption {
|
|
1790
|
+
label: string;
|
|
1791
|
+
value: SelectValue;
|
|
1792
|
+
disabled?: boolean;
|
|
1793
|
+
}
|
|
1794
|
+
/** Configuration for an action button alongside the select. */
|
|
1795
|
+
interface SelectActionButton {
|
|
1796
|
+
/** Icon name from the icon set. */
|
|
1797
|
+
icon: string;
|
|
1798
|
+
/** Aria label for accessibility. */
|
|
1799
|
+
ariaLabel: string;
|
|
1800
|
+
/** Tooltip text. */
|
|
1801
|
+
tooltip?: string;
|
|
1802
|
+
}
|
|
1803
|
+
export declare class SelectComponent implements ControlValueAccessor, OnDestroy {
|
|
1804
|
+
protected readonly localization: LocalizationService;
|
|
1805
|
+
readonly id: import("@angular/core").InputSignal<string>;
|
|
1806
|
+
readonly placeholder: import("@angular/core").InputSignal<string>;
|
|
1807
|
+
readonly options: import("@angular/core").InputSignal<SelectOption[]>;
|
|
1808
|
+
readonly ariaLabel: import("@angular/core").InputSignal<string>;
|
|
1809
|
+
readonly ariaDescribedby: import("@angular/core").InputSignal<string>;
|
|
1810
|
+
readonly invalid: import("@angular/core").InputSignal<boolean>;
|
|
1811
|
+
readonly class: import("@angular/core").InputSignal<string>;
|
|
1812
|
+
/** Allows the control to emit an array and keep the dropdown open while selecting. */
|
|
1813
|
+
readonly multiple: import("@angular/core").InputSignal<boolean>;
|
|
1814
|
+
/** Horizontal edge used to anchor the dropdown panel. */
|
|
1815
|
+
readonly dropdownAlign: import("@angular/core").InputSignal<SelectDropdownAlign>;
|
|
1816
|
+
/** Matches the trigger width by default, or expands to fit option content. */
|
|
1817
|
+
readonly dropdownWidth: import("@angular/core").InputSignal<SelectDropdownWidth>;
|
|
1818
|
+
/** Maximum height for the scrollable options area before viewport constraints are applied. */
|
|
1819
|
+
readonly maxDropdownHeight: import("@angular/core").InputSignal<number>;
|
|
1820
|
+
/** Space retained between the dropdown and the viewport edge. */
|
|
1821
|
+
readonly viewportPadding: import("@angular/core").InputSignal<number>;
|
|
1822
|
+
/** Prevents compact layouts and short values from collapsing the control. */
|
|
1823
|
+
readonly minWidth: import("@angular/core").InputSignal<string>;
|
|
1824
|
+
/** Action button configuration. */
|
|
1825
|
+
readonly action: import("@angular/core").InputSignal<SelectActionButton | undefined>;
|
|
1826
|
+
/** Emits when the action button is clicked. */
|
|
1827
|
+
readonly actionClick: import("@angular/core").OutputEmitterRef<void>;
|
|
1828
|
+
private readonly generatedId;
|
|
1829
|
+
private typeaheadQuery;
|
|
1830
|
+
private typeaheadTimer;
|
|
1831
|
+
private placementTimer;
|
|
1832
|
+
private viewportListenersRegistered;
|
|
1833
|
+
private dropdownResizeObserver;
|
|
1834
|
+
private readonly onViewportChange;
|
|
1835
|
+
protected readonly triggerElement: import("@angular/core").Signal<ElementRef<HTMLButtonElement> | undefined>;
|
|
1836
|
+
protected readonly dropdownElement: import("@angular/core").Signal<ElementRef<HTMLElement> | undefined>;
|
|
1837
|
+
protected readonly dropdownHeaderElement: import("@angular/core").Signal<ElementRef<HTMLElement> | undefined>;
|
|
1838
|
+
protected readonly optionsViewportElement: import("@angular/core").Signal<ElementRef<HTMLElement> | undefined>;
|
|
1839
|
+
protected readonly value: import("@angular/core").WritableSignal<SelectControlValue>;
|
|
1840
|
+
protected readonly isOpen: import("@angular/core").WritableSignal<boolean>;
|
|
1841
|
+
protected readonly activeIndex: import("@angular/core").WritableSignal<number>;
|
|
1842
|
+
protected readonly isDisabled: import("@angular/core").WritableSignal<boolean>;
|
|
1843
|
+
protected readonly dropdownPlacement: import("@angular/core").WritableSignal<SelectDropdownPlacement>;
|
|
1844
|
+
protected readonly availableOptionsHeight: import("@angular/core").WritableSignal<number>;
|
|
1845
|
+
protected readonly isInvalid: import("@angular/core").Signal<boolean>;
|
|
1846
|
+
protected readonly hasAction: import("@angular/core").Signal<boolean>;
|
|
1847
|
+
protected readonly controlId: import("@angular/core").Signal<string>;
|
|
1848
|
+
protected readonly listboxId: import("@angular/core").Signal<string>;
|
|
1849
|
+
protected readonly selectedValues: import("@angular/core").Signal<SelectValue[]>;
|
|
1850
|
+
protected readonly selectedCount: import("@angular/core").Signal<number>;
|
|
1851
|
+
protected readonly hasSelection: import("@angular/core").Signal<boolean>;
|
|
1852
|
+
protected readonly displayLabel: import("@angular/core").Signal<string>;
|
|
1853
|
+
protected readonly panelLabel: import("@angular/core").Signal<string>;
|
|
1854
|
+
protected readonly triggerClasses: import("@angular/core").Signal<string>;
|
|
1855
|
+
protected readonly dropdownClasses: import("@angular/core").Signal<string>;
|
|
1856
|
+
private onChangeFn;
|
|
1857
|
+
private onTouchedFn;
|
|
1858
|
+
protected toggleDropdown(): void;
|
|
1859
|
+
protected closeDropdown(markTouched?: boolean): void;
|
|
1860
|
+
protected selectOption(option: SelectOption): void;
|
|
1861
|
+
protected clearAll(event: MouseEvent): void;
|
|
1862
|
+
protected onTriggerKeydown(event: KeyboardEvent): void;
|
|
1863
|
+
protected isOptionSelected(option: SelectOption): boolean;
|
|
1864
|
+
protected optionId(index: number): string;
|
|
1865
|
+
protected optionClasses(option: SelectOption, index: number): string;
|
|
1866
|
+
protected onActionClick(): void;
|
|
1867
|
+
writeValue(value: SelectControlValue | undefined): void;
|
|
1868
|
+
registerOnChange(fn: (value: SelectControlValue) => void): void;
|
|
1869
|
+
registerOnTouched(fn: () => void): void;
|
|
1870
|
+
setDisabledState(isDisabled: boolean): void;
|
|
1871
|
+
ngOnDestroy(): void;
|
|
1872
|
+
private openDropdown;
|
|
1873
|
+
private startDropdownPositionTracking;
|
|
1874
|
+
private stopDropdownPositionTracking;
|
|
1875
|
+
private scheduleDropdownPlacementUpdate;
|
|
1876
|
+
private updateDropdownPlacement;
|
|
1877
|
+
private getPlacementViewport;
|
|
1878
|
+
private moveActiveOption;
|
|
1879
|
+
private findNextEnabledIndex;
|
|
1880
|
+
private handleTypeahead;
|
|
1881
|
+
private resetTypeahead;
|
|
1882
|
+
private scrollActiveOptionIntoView;
|
|
1883
|
+
private findOption;
|
|
1884
|
+
private includesValue;
|
|
1885
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SelectComponent, never>;
|
|
1886
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SelectComponent, "hui-select", never, {
|
|
1887
|
+
"id": {
|
|
1888
|
+
"alias": "id";
|
|
1889
|
+
"required": false;
|
|
1890
|
+
"isSignal": true;
|
|
1891
|
+
};
|
|
1892
|
+
"placeholder": {
|
|
1893
|
+
"alias": "placeholder";
|
|
1894
|
+
"required": false;
|
|
1895
|
+
"isSignal": true;
|
|
1896
|
+
};
|
|
1897
|
+
"options": {
|
|
1898
|
+
"alias": "options";
|
|
1899
|
+
"required": false;
|
|
1900
|
+
"isSignal": true;
|
|
1901
|
+
};
|
|
1902
|
+
"ariaLabel": {
|
|
1903
|
+
"alias": "ariaLabel";
|
|
1904
|
+
"required": false;
|
|
1905
|
+
"isSignal": true;
|
|
1906
|
+
};
|
|
1907
|
+
"ariaDescribedby": {
|
|
1908
|
+
"alias": "ariaDescribedby";
|
|
1909
|
+
"required": false;
|
|
1910
|
+
"isSignal": true;
|
|
1911
|
+
};
|
|
1912
|
+
"invalid": {
|
|
1913
|
+
"alias": "invalid";
|
|
1914
|
+
"required": false;
|
|
1915
|
+
"isSignal": true;
|
|
1916
|
+
};
|
|
1917
|
+
"class": {
|
|
1918
|
+
"alias": "class";
|
|
1919
|
+
"required": false;
|
|
1920
|
+
"isSignal": true;
|
|
1921
|
+
};
|
|
1922
|
+
"multiple": {
|
|
1923
|
+
"alias": "multiple";
|
|
1924
|
+
"required": false;
|
|
1925
|
+
"isSignal": true;
|
|
1926
|
+
};
|
|
1927
|
+
"dropdownAlign": {
|
|
1928
|
+
"alias": "dropdownAlign";
|
|
1929
|
+
"required": false;
|
|
1930
|
+
"isSignal": true;
|
|
1931
|
+
};
|
|
1932
|
+
"dropdownWidth": {
|
|
1933
|
+
"alias": "dropdownWidth";
|
|
1934
|
+
"required": false;
|
|
1935
|
+
"isSignal": true;
|
|
1936
|
+
};
|
|
1937
|
+
"maxDropdownHeight": {
|
|
1938
|
+
"alias": "maxDropdownHeight";
|
|
1939
|
+
"required": false;
|
|
1940
|
+
"isSignal": true;
|
|
1941
|
+
};
|
|
1942
|
+
"viewportPadding": {
|
|
1943
|
+
"alias": "viewportPadding";
|
|
1944
|
+
"required": false;
|
|
1945
|
+
"isSignal": true;
|
|
1946
|
+
};
|
|
1947
|
+
"minWidth": {
|
|
1948
|
+
"alias": "minWidth";
|
|
1949
|
+
"required": false;
|
|
1950
|
+
"isSignal": true;
|
|
1951
|
+
};
|
|
1952
|
+
"action": {
|
|
1953
|
+
"alias": "action";
|
|
1954
|
+
"required": false;
|
|
1955
|
+
"isSignal": true;
|
|
1956
|
+
};
|
|
1957
|
+
}, {
|
|
1958
|
+
"actionClick": "actionClick";
|
|
1959
|
+
}, never, never, true, never>;
|
|
1960
|
+
}
|
|
1961
|
+
export declare class SwitchComponent implements ControlValueAccessor {
|
|
1962
|
+
id: import("@angular/core").InputSignal<string>;
|
|
1963
|
+
ariaLabel: import("@angular/core").InputSignal<string>;
|
|
1964
|
+
ariaDescribedby: import("@angular/core").InputSignal<string>;
|
|
1965
|
+
protected readonly checked: import("@angular/core").WritableSignal<boolean>;
|
|
1966
|
+
protected readonly disabled: import("@angular/core").WritableSignal<boolean>;
|
|
1967
|
+
private onChange;
|
|
1968
|
+
protected onTouched: () => void;
|
|
1969
|
+
protected toggle(): void;
|
|
1970
|
+
writeValue(value: boolean): void;
|
|
1971
|
+
registerOnChange(fn: (value: boolean) => void): void;
|
|
1972
|
+
registerOnTouched(fn: () => void): void;
|
|
1973
|
+
setDisabledState(disabled: boolean): void;
|
|
1974
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SwitchComponent, never>;
|
|
1975
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SwitchComponent, "hui-switch", never, {
|
|
1976
|
+
"id": {
|
|
1977
|
+
"alias": "id";
|
|
1978
|
+
"required": false;
|
|
1979
|
+
"isSignal": true;
|
|
1980
|
+
};
|
|
1981
|
+
"ariaLabel": {
|
|
1982
|
+
"alias": "ariaLabel";
|
|
1983
|
+
"required": false;
|
|
1984
|
+
"isSignal": true;
|
|
1985
|
+
};
|
|
1986
|
+
"ariaDescribedby": {
|
|
1987
|
+
"alias": "ariaDescribedby";
|
|
1988
|
+
"required": false;
|
|
1989
|
+
"isSignal": true;
|
|
1990
|
+
};
|
|
1991
|
+
}, {}, never, never, true, never>;
|
|
1992
|
+
}
|
|
1993
|
+
export declare class TelInputComponent implements ControlValueAccessor {
|
|
1994
|
+
id: import("@angular/core").InputSignal<string>;
|
|
1995
|
+
placeholder: import("@angular/core").InputSignal<string>;
|
|
1996
|
+
ariaLabel: import("@angular/core").InputSignal<string>;
|
|
1997
|
+
ariaDescribedby: import("@angular/core").InputSignal<string>;
|
|
1998
|
+
invalid: import("@angular/core").InputSignal<boolean>;
|
|
1999
|
+
protected readonly value: import("@angular/core").WritableSignal<string>;
|
|
2000
|
+
protected readonly isDisabled: import("@angular/core").WritableSignal<boolean>;
|
|
2001
|
+
protected readonly isInvalid: import("@angular/core").Signal<boolean>;
|
|
2002
|
+
protected readonly inputClasses: import("@angular/core").Signal<string>;
|
|
2003
|
+
private onChange;
|
|
2004
|
+
protected onTouched: () => void;
|
|
2005
|
+
protected onInput(event: Event): void;
|
|
2006
|
+
writeValue(value: string): void;
|
|
2007
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
2008
|
+
registerOnTouched(fn: () => void): void;
|
|
2009
|
+
setDisabledState(isDisabled: boolean): void;
|
|
2010
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TelInputComponent, never>;
|
|
2011
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TelInputComponent, "hui-tel-input", never, {
|
|
2012
|
+
"id": {
|
|
2013
|
+
"alias": "id";
|
|
2014
|
+
"required": false;
|
|
2015
|
+
"isSignal": true;
|
|
2016
|
+
};
|
|
2017
|
+
"placeholder": {
|
|
2018
|
+
"alias": "placeholder";
|
|
2019
|
+
"required": false;
|
|
2020
|
+
"isSignal": true;
|
|
2021
|
+
};
|
|
2022
|
+
"ariaLabel": {
|
|
2023
|
+
"alias": "ariaLabel";
|
|
2024
|
+
"required": false;
|
|
2025
|
+
"isSignal": true;
|
|
2026
|
+
};
|
|
2027
|
+
"ariaDescribedby": {
|
|
2028
|
+
"alias": "ariaDescribedby";
|
|
2029
|
+
"required": false;
|
|
2030
|
+
"isSignal": true;
|
|
2031
|
+
};
|
|
2032
|
+
"invalid": {
|
|
2033
|
+
"alias": "invalid";
|
|
2034
|
+
"required": false;
|
|
2035
|
+
"isSignal": true;
|
|
2036
|
+
};
|
|
2037
|
+
}, {}, never, never, true, never>;
|
|
2038
|
+
}
|
|
2039
|
+
export declare class TextareaComponent implements ControlValueAccessor {
|
|
2040
|
+
id: import("@angular/core").InputSignal<string>;
|
|
2041
|
+
placeholder: import("@angular/core").InputSignal<string>;
|
|
2042
|
+
rows: import("@angular/core").InputSignal<number>;
|
|
2043
|
+
ariaLabel: import("@angular/core").InputSignal<string>;
|
|
2044
|
+
ariaDescribedby: import("@angular/core").InputSignal<string>;
|
|
2045
|
+
invalid: import("@angular/core").InputSignal<boolean>;
|
|
2046
|
+
class: import("@angular/core").InputSignal<string>;
|
|
2047
|
+
protected readonly value: import("@angular/core").WritableSignal<string>;
|
|
2048
|
+
protected readonly isDisabled: import("@angular/core").WritableSignal<boolean>;
|
|
2049
|
+
protected readonly isInvalid: import("@angular/core").Signal<boolean>;
|
|
2050
|
+
protected readonly inputClasses: import("@angular/core").Signal<string>;
|
|
2051
|
+
private onChange;
|
|
2052
|
+
protected onTouched: () => void;
|
|
2053
|
+
protected onInput(event: Event): void;
|
|
2054
|
+
writeValue(value: string): void;
|
|
2055
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
2056
|
+
registerOnTouched(fn: () => void): void;
|
|
2057
|
+
setDisabledState(isDisabled: boolean): void;
|
|
2058
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TextareaComponent, never>;
|
|
2059
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TextareaComponent, "hui-textarea", never, {
|
|
2060
|
+
"id": {
|
|
2061
|
+
"alias": "id";
|
|
2062
|
+
"required": false;
|
|
2063
|
+
"isSignal": true;
|
|
2064
|
+
};
|
|
2065
|
+
"placeholder": {
|
|
2066
|
+
"alias": "placeholder";
|
|
2067
|
+
"required": false;
|
|
2068
|
+
"isSignal": true;
|
|
2069
|
+
};
|
|
2070
|
+
"rows": {
|
|
2071
|
+
"alias": "rows";
|
|
2072
|
+
"required": false;
|
|
2073
|
+
"isSignal": true;
|
|
2074
|
+
};
|
|
2075
|
+
"ariaLabel": {
|
|
2076
|
+
"alias": "ariaLabel";
|
|
2077
|
+
"required": false;
|
|
2078
|
+
"isSignal": true;
|
|
2079
|
+
};
|
|
2080
|
+
"ariaDescribedby": {
|
|
2081
|
+
"alias": "ariaDescribedby";
|
|
2082
|
+
"required": false;
|
|
2083
|
+
"isSignal": true;
|
|
2084
|
+
};
|
|
2085
|
+
"invalid": {
|
|
2086
|
+
"alias": "invalid";
|
|
2087
|
+
"required": false;
|
|
2088
|
+
"isSignal": true;
|
|
2089
|
+
};
|
|
2090
|
+
"class": {
|
|
2091
|
+
"alias": "class";
|
|
2092
|
+
"required": false;
|
|
2093
|
+
"isSignal": true;
|
|
2094
|
+
};
|
|
2095
|
+
}, {}, never, never, true, never>;
|
|
2096
|
+
}
|
|
2097
|
+
export declare class UrlInputComponent implements ControlValueAccessor {
|
|
2098
|
+
id: import("@angular/core").InputSignal<string>;
|
|
2099
|
+
placeholder: import("@angular/core").InputSignal<string>;
|
|
2100
|
+
ariaLabel: import("@angular/core").InputSignal<string>;
|
|
2101
|
+
ariaDescribedby: import("@angular/core").InputSignal<string>;
|
|
2102
|
+
invalid: import("@angular/core").InputSignal<boolean>;
|
|
2103
|
+
protected readonly value: import("@angular/core").WritableSignal<string>;
|
|
2104
|
+
protected readonly isDisabled: import("@angular/core").WritableSignal<boolean>;
|
|
2105
|
+
protected readonly isInvalid: import("@angular/core").Signal<boolean>;
|
|
2106
|
+
protected readonly inputClasses: import("@angular/core").Signal<string>;
|
|
2107
|
+
private onChange;
|
|
2108
|
+
protected onTouched: () => void;
|
|
2109
|
+
protected onInput(event: Event): void;
|
|
2110
|
+
writeValue(value: string): void;
|
|
2111
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
2112
|
+
registerOnTouched(fn: () => void): void;
|
|
2113
|
+
setDisabledState(isDisabled: boolean): void;
|
|
2114
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UrlInputComponent, never>;
|
|
2115
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UrlInputComponent, "hui-url-input", never, {
|
|
2116
|
+
"id": {
|
|
2117
|
+
"alias": "id";
|
|
2118
|
+
"required": false;
|
|
2119
|
+
"isSignal": true;
|
|
2120
|
+
};
|
|
2121
|
+
"placeholder": {
|
|
2122
|
+
"alias": "placeholder";
|
|
2123
|
+
"required": false;
|
|
2124
|
+
"isSignal": true;
|
|
2125
|
+
};
|
|
2126
|
+
"ariaLabel": {
|
|
2127
|
+
"alias": "ariaLabel";
|
|
2128
|
+
"required": false;
|
|
2129
|
+
"isSignal": true;
|
|
2130
|
+
};
|
|
2131
|
+
"ariaDescribedby": {
|
|
2132
|
+
"alias": "ariaDescribedby";
|
|
2133
|
+
"required": false;
|
|
2134
|
+
"isSignal": true;
|
|
2135
|
+
};
|
|
2136
|
+
"invalid": {
|
|
2137
|
+
"alias": "invalid";
|
|
2138
|
+
"required": false;
|
|
2139
|
+
"isSignal": true;
|
|
2140
|
+
};
|
|
2141
|
+
}, {}, never, never, true, never>;
|
|
2142
|
+
}
|
|
2143
|
+
export declare const FORM_CONTROL_BASE_CLASSES = "w-full pl-3 pr-3 py-2 border rounded-lg shadow placeholder-gray-400 focus:outline-none focus:ring-1 bg-surface placeholder:text-md disabled:opacity-50 disabled:cursor-not-allowed";
|
|
2144
|
+
interface FormControlClassOptions {
|
|
2145
|
+
invalid?: boolean;
|
|
2146
|
+
additionalClasses?: string;
|
|
2147
|
+
customClasses?: string;
|
|
2148
|
+
}
|
|
2149
|
+
export declare function buildFormControlClasses(options?: FormControlClassOptions): string;
|
|
2150
|
+
/**
|
|
2151
|
+
* Maps Angular validation errors to user-friendly error messages
|
|
2152
|
+
*/
|
|
2153
|
+
export declare function getErrorMessage(errors: ValidationErrors | null | undefined, fieldName?: string): string;
|
|
2154
|
+
/**
|
|
2155
|
+
* Gets all error messages for a control
|
|
2156
|
+
*/
|
|
2157
|
+
export declare function getErrorMessages(errors: ValidationErrors | null | undefined, fieldName?: string): string[];
|
|
2158
|
+
export declare class IconComponent {
|
|
2159
|
+
private readonly config;
|
|
2160
|
+
/** Icon name from the icons constant */
|
|
2161
|
+
name: import("@angular/core").InputSignal<string>;
|
|
2162
|
+
/** Size in pixels */
|
|
2163
|
+
size: import("@angular/core").InputSignal<number>;
|
|
2164
|
+
/** Custom CSS classes */
|
|
2165
|
+
customClass: import("@angular/core").InputSignal<string>;
|
|
2166
|
+
/** Accessible label for the icon */
|
|
2167
|
+
ariaLabel: import("@angular/core").InputSignal<string>;
|
|
2168
|
+
/** Get icon data from the icons constant */
|
|
2169
|
+
protected readonly iconData: import("@angular/core").Signal<import("@harmolody/ui").SvgIcon | undefined>;
|
|
2170
|
+
/** Convert path to array for consistent handling */
|
|
2171
|
+
protected readonly paths: import("@angular/core").Signal<string[] | null>;
|
|
2172
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<IconComponent, never>;
|
|
2173
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<IconComponent, "hui-icon", never, {
|
|
2174
|
+
"name": {
|
|
2175
|
+
"alias": "name";
|
|
2176
|
+
"required": true;
|
|
2177
|
+
"isSignal": true;
|
|
2178
|
+
};
|
|
2179
|
+
"size": {
|
|
2180
|
+
"alias": "size";
|
|
2181
|
+
"required": false;
|
|
2182
|
+
"isSignal": true;
|
|
2183
|
+
};
|
|
2184
|
+
"customClass": {
|
|
2185
|
+
"alias": "customClass";
|
|
2186
|
+
"required": false;
|
|
2187
|
+
"isSignal": true;
|
|
2188
|
+
};
|
|
2189
|
+
"ariaLabel": {
|
|
2190
|
+
"alias": "ariaLabel";
|
|
2191
|
+
"required": false;
|
|
2192
|
+
"isSignal": true;
|
|
2193
|
+
};
|
|
2194
|
+
}, {}, never, never, true, never>;
|
|
2195
|
+
}
|
|
2196
|
+
/**
|
|
2197
|
+
* SVG Icon definitions as objects
|
|
2198
|
+
* Each icon contains the SVG path data and optional viewBox
|
|
2199
|
+
*/
|
|
2200
|
+
export interface SvgIcon {
|
|
2201
|
+
path: string | string[];
|
|
2202
|
+
viewBox?: string;
|
|
2203
|
+
strokeWidth?: number;
|
|
2204
|
+
fill?: string;
|
|
2205
|
+
stroke?: string;
|
|
2206
|
+
}
|
|
2207
|
+
export declare const ICONS: Record<string, SvgIcon>;
|
|
2208
|
+
/**
|
|
2209
|
+
* Helper function to get icon data
|
|
2210
|
+
*/
|
|
2211
|
+
export declare function getIcon(name: string): SvgIcon | undefined;
|
|
2212
|
+
/**
|
|
2213
|
+
* Helper function to check if icon exists
|
|
2214
|
+
*/
|
|
2215
|
+
export declare function hasIcon(name: string): boolean;
|
|
2216
|
+
export declare class TableCellDirective<T = unknown> {
|
|
2217
|
+
readonly columnKey: import("@angular/core").InputSignal<string>;
|
|
2218
|
+
readonly templateRef: TemplateRef<any>;
|
|
2219
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TableCellDirective<any>, never>;
|
|
2220
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TableCellDirective<any>, "ng-template[huiTableCell]", never, {
|
|
2221
|
+
"columnKey": {
|
|
2222
|
+
"alias": "huiTableCell";
|
|
2223
|
+
"required": true;
|
|
2224
|
+
"isSignal": true;
|
|
2225
|
+
};
|
|
2226
|
+
}, {}, never, never, true, never>;
|
|
2227
|
+
}
|
|
2228
|
+
export type ColumnAlign = 'left' | 'center' | 'right';
|
|
2229
|
+
export type SortDirection = 'asc' | 'desc' | null;
|
|
2230
|
+
export interface TableCellContext<T = unknown> {
|
|
2231
|
+
$implicit: unknown;
|
|
2232
|
+
row: T;
|
|
2233
|
+
index: number;
|
|
2234
|
+
column: TableColumn<T>;
|
|
2235
|
+
}
|
|
2236
|
+
export interface TableColumn<T = any> {
|
|
2237
|
+
key: string;
|
|
2238
|
+
label: string;
|
|
2239
|
+
sortable?: boolean;
|
|
2240
|
+
align?: ColumnAlign;
|
|
2241
|
+
headerAlign?: ColumnAlign;
|
|
2242
|
+
width?: string;
|
|
2243
|
+
type?: 'text' | 'image' | 'icon' | 'link' | 'component' | 'template';
|
|
2244
|
+
imageClass?: string;
|
|
2245
|
+
imageFallback?: string;
|
|
2246
|
+
icon?: string | ((value: any, row: T, index: number) => string);
|
|
2247
|
+
iconClass?: string | ((value: any, row: T, index: number) => string);
|
|
2248
|
+
iconLabel?: string | ((value: any, row: T, index: number) => string);
|
|
2249
|
+
iconSize?: number;
|
|
2250
|
+
linkGenerator?: (row: T) => string | null;
|
|
2251
|
+
linkTarget?: '_blank' | '_self';
|
|
2252
|
+
onClick?: (row: T) => void;
|
|
2253
|
+
render?: (value: any, row: T, index: number) => string | null;
|
|
2254
|
+
component?: Type<any>;
|
|
2255
|
+
componentInputs?: (row: T, value: any, index: number) => Record<string, any>;
|
|
2256
|
+
template?: TemplateRef<TableCellContext<T>>;
|
|
2257
|
+
cellClass?: string | ((value: any, row: T) => string);
|
|
2258
|
+
hideable?: boolean;
|
|
2259
|
+
hideOnScreens?: ('sm' | 'md' | 'lg' | 'xl')[];
|
|
2260
|
+
}
|
|
2261
|
+
export interface TableAction<T = any> {
|
|
2262
|
+
label: string;
|
|
2263
|
+
icon?: string;
|
|
2264
|
+
onClick?: (row: T, index: number) => void;
|
|
2265
|
+
disabled?: (row: T) => boolean;
|
|
2266
|
+
hidden?: (row: T) => boolean;
|
|
2267
|
+
variant?: 'primary' | 'secondary' | 'danger' | 'success';
|
|
2268
|
+
title?: string;
|
|
2269
|
+
submenu?: TableAction<T>[];
|
|
2270
|
+
divider?: boolean;
|
|
2271
|
+
}
|
|
2272
|
+
export interface TableSort {
|
|
2273
|
+
column: string;
|
|
2274
|
+
direction: SortDirection;
|
|
2275
|
+
}
|
|
2276
|
+
export interface TablePagination {
|
|
2277
|
+
layout?: 'stacked';
|
|
2278
|
+
page: number;
|
|
2279
|
+
pageSize: number;
|
|
2280
|
+
total: number;
|
|
2281
|
+
pageSizeOptions?: number[];
|
|
2282
|
+
}
|
|
2283
|
+
export interface TableSelection<T = any> {
|
|
2284
|
+
mode: 'none' | 'single' | 'multiple';
|
|
2285
|
+
selectedRows: T[];
|
|
2286
|
+
onSelectionChange?: (rows: T[]) => void;
|
|
2287
|
+
}
|
|
2288
|
+
export interface TableRowReorderEvent<T = any> {
|
|
2289
|
+
row: T;
|
|
2290
|
+
previousIndex: number;
|
|
2291
|
+
currentIndex: number;
|
|
2292
|
+
data: T[];
|
|
2293
|
+
}
|
|
2294
|
+
export interface TableRowReorder<T = any> {
|
|
2295
|
+
enabled: boolean;
|
|
2296
|
+
disabled?: (row: T, index: number) => boolean;
|
|
2297
|
+
onDisabledAttempt?: (row: T, index: number) => void;
|
|
2298
|
+
onReorder?: (event: TableRowReorderEvent<T>) => void;
|
|
2299
|
+
}
|
|
2300
|
+
export interface TableConfig<T = any> {
|
|
2301
|
+
columns: TableColumn<T>[];
|
|
2302
|
+
data: T[];
|
|
2303
|
+
rowKey?: keyof T | ((row: T) => string | number);
|
|
2304
|
+
actions?: TableAction<T>[];
|
|
2305
|
+
pagination?: TablePagination;
|
|
2306
|
+
selection?: TableSelection<T>;
|
|
2307
|
+
sort?: TableSort;
|
|
2308
|
+
loading?: boolean;
|
|
2309
|
+
emptyMessage?: string;
|
|
2310
|
+
headerAlign?: ColumnAlign;
|
|
2311
|
+
stickyHeader?: boolean;
|
|
2312
|
+
showHeader?: boolean;
|
|
2313
|
+
showHeaderOnlyOnScroll?: boolean;
|
|
2314
|
+
maxHeight?: string;
|
|
2315
|
+
rowReorder?: TableRowReorder<T>;
|
|
2316
|
+
bordered?: boolean;
|
|
2317
|
+
striped?: boolean;
|
|
2318
|
+
hoverable?: boolean;
|
|
2319
|
+
compact?: boolean;
|
|
2320
|
+
showRowNumbers?: boolean;
|
|
2321
|
+
onSort?: (sort: TableSort) => void;
|
|
2322
|
+
onPageChange?: (page: number) => void;
|
|
2323
|
+
onPageSizeChange?: (pageSize: number) => void;
|
|
2324
|
+
onRowClick?: (row: T, index: number) => void;
|
|
2325
|
+
rowClass?: string | ((row: T, index: number) => string);
|
|
2326
|
+
}
|
|
2327
|
+
export declare class TableColumnSelectorComponent {
|
|
2328
|
+
readonly allColumns: import("@angular/core").InputSignal<TableColumn<any>[]>;
|
|
2329
|
+
readonly visibleColumnKeys: import("@angular/core").InputSignal<string[]>;
|
|
2330
|
+
readonly class: import("@angular/core").InputSignal<string>;
|
|
2331
|
+
readonly visibleColumnsChange: import("@angular/core").OutputEmitterRef<string[]>;
|
|
2332
|
+
protected readonly isOpen: import("@angular/core").WritableSignal<boolean>;
|
|
2333
|
+
protected readonly hideableColumns: import("@angular/core").Signal<TableColumn<any>[]>;
|
|
2334
|
+
protected readonly buttonClasses: import("@angular/core").Signal<string>;
|
|
2335
|
+
protected readonly allSelected: import("@angular/core").Signal<boolean>;
|
|
2336
|
+
protected readonly someSelected: import("@angular/core").Signal<boolean>;
|
|
2337
|
+
protected toggleDropdown(): void;
|
|
2338
|
+
protected closeDropdown(): void;
|
|
2339
|
+
protected isColumnVisible(key: string): boolean;
|
|
2340
|
+
protected toggleColumn(key: string): void;
|
|
2341
|
+
protected onColumnVisibilityChange(key: string, checked: boolean): void;
|
|
2342
|
+
protected selectAll(): void;
|
|
2343
|
+
protected deselectAll(): void;
|
|
2344
|
+
protected resetToDefault(): void;
|
|
2345
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TableColumnSelectorComponent, never>;
|
|
2346
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TableColumnSelectorComponent, "hui-table-column-selector", never, {
|
|
2347
|
+
"allColumns": {
|
|
2348
|
+
"alias": "allColumns";
|
|
2349
|
+
"required": true;
|
|
2350
|
+
"isSignal": true;
|
|
2351
|
+
};
|
|
2352
|
+
"visibleColumnKeys": {
|
|
2353
|
+
"alias": "visibleColumnKeys";
|
|
2354
|
+
"required": true;
|
|
2355
|
+
"isSignal": true;
|
|
2356
|
+
};
|
|
2357
|
+
"class": {
|
|
2358
|
+
"alias": "class";
|
|
2359
|
+
"required": false;
|
|
2360
|
+
"isSignal": true;
|
|
2361
|
+
};
|
|
2362
|
+
}, {
|
|
2363
|
+
"visibleColumnsChange": "visibleColumnsChange";
|
|
2364
|
+
}, never, never, true, never>;
|
|
2365
|
+
}
|
|
2366
|
+
export declare class TableComponent<T = any> {
|
|
2367
|
+
protected readonly localization: LocalizationService;
|
|
2368
|
+
protected readonly instanceId: string;
|
|
2369
|
+
readonly config: import("@angular/core").InputSignal<TableConfig<T>>;
|
|
2370
|
+
readonly sortChange: import("@angular/core").OutputEmitterRef<TableSort>;
|
|
2371
|
+
readonly pageChange: import("@angular/core").OutputEmitterRef<number>;
|
|
2372
|
+
readonly pageSizeChange: import("@angular/core").OutputEmitterRef<number>;
|
|
2373
|
+
readonly selectionChange: import("@angular/core").OutputEmitterRef<T[]>;
|
|
2374
|
+
readonly rowReorder: import("@angular/core").OutputEmitterRef<TableRowReorderEvent<T>>;
|
|
2375
|
+
private readonly customCellTemplates;
|
|
2376
|
+
private inputDataReference;
|
|
2377
|
+
protected readonly Math: Math;
|
|
2378
|
+
constructor();
|
|
2379
|
+
protected readonly selectedRows: import("@angular/core").WritableSignal<Set<string | number>>;
|
|
2380
|
+
protected readonly currentSort: import("@angular/core").WritableSignal<TableSort>;
|
|
2381
|
+
protected readonly openDropdowns: import("@angular/core").WritableSignal<Set<string>>;
|
|
2382
|
+
protected readonly tableRows: import("@angular/core").WritableSignal<T[]>;
|
|
2383
|
+
protected readonly draggedRowIndex: import("@angular/core").WritableSignal<number | null>;
|
|
2384
|
+
protected readonly dragOverRowIndex: import("@angular/core").WritableSignal<number | null>;
|
|
2385
|
+
protected readonly isTableScrolled: import("@angular/core").WritableSignal<boolean>;
|
|
2386
|
+
protected readonly dropdownPosition: import("@angular/core").WritableSignal<{
|
|
2387
|
+
top: number | null;
|
|
2388
|
+
bottom: number | null;
|
|
2389
|
+
left: number;
|
|
2390
|
+
}>;
|
|
2391
|
+
protected readonly hasActions: import("@angular/core").Signal<boolean | undefined>;
|
|
2392
|
+
protected readonly hasSelection: import("@angular/core").Signal<boolean | undefined>;
|
|
2393
|
+
protected readonly isMultiSelect: import("@angular/core").Signal<boolean>;
|
|
2394
|
+
protected readonly showRowNumbers: import("@angular/core").Signal<boolean>;
|
|
2395
|
+
protected readonly hasStickyHeader: import("@angular/core").Signal<boolean>;
|
|
2396
|
+
protected readonly shouldRenderHeader: import("@angular/core").Signal<boolean>;
|
|
2397
|
+
protected readonly isHeaderVisible: import("@angular/core").Signal<boolean>;
|
|
2398
|
+
protected readonly tableMaxHeight: import("@angular/core").Signal<string | null>;
|
|
2399
|
+
protected readonly hasRowReordering: import("@angular/core").Signal<boolean>;
|
|
2400
|
+
protected readonly allRowsSelected: import("@angular/core").Signal<boolean>;
|
|
2401
|
+
protected readonly someRowsSelected: import("@angular/core").Signal<boolean>;
|
|
2402
|
+
protected readonly displayedData: import("@angular/core").Signal<T[]>;
|
|
2403
|
+
protected readonly totalPages: import("@angular/core").Signal<number>;
|
|
2404
|
+
protected readonly pageNumbers: import("@angular/core").Signal<(string | number)[]>;
|
|
2405
|
+
protected getRowKey(row: T, index: number): string | number;
|
|
2406
|
+
protected getCellValue(row: T, column: any, index: number): any;
|
|
2407
|
+
protected getCellTemplate(column: TableColumn<T>): TemplateRef<TableCellContext<T>> | undefined;
|
|
2408
|
+
protected getCellIcon(row: T, column: TableColumn<T>, index: number): string;
|
|
2409
|
+
protected getCellIconClass(row: T, column: TableColumn<T>, index: number): string;
|
|
2410
|
+
protected getCellIconLabel(row: T, column: TableColumn<T>, index: number): string;
|
|
2411
|
+
private resolveColumnValue;
|
|
2412
|
+
protected getCellClass(row: T, column: any): string;
|
|
2413
|
+
protected getRowClass(row: T, index: number): string;
|
|
2414
|
+
protected onSort(columnKey: string): void;
|
|
2415
|
+
protected getSortIcon(columnKey: string): string;
|
|
2416
|
+
protected isSorted(columnKey: string): boolean;
|
|
2417
|
+
protected isRowSelected(row: T): boolean;
|
|
2418
|
+
protected toggleRowSelection(row: T, index: number): void;
|
|
2419
|
+
protected toggleAllRows(): void;
|
|
2420
|
+
private emitSelection;
|
|
2421
|
+
protected isRowReorderDisabled(row: T, index: number): boolean;
|
|
2422
|
+
protected onRowReorderHandleClick(row: T, index: number, event: Event): void;
|
|
2423
|
+
protected onRowDragStart(event: DragEvent, index: number): void;
|
|
2424
|
+
protected onRowDragOver(event: DragEvent, index: number): void;
|
|
2425
|
+
protected onRowDrop(event: DragEvent, currentIndex: number): void;
|
|
2426
|
+
protected clearRowDragState(): void;
|
|
2427
|
+
protected onPageChange(page: number | string): void;
|
|
2428
|
+
protected onPageSizeChange(event: Event): void;
|
|
2429
|
+
protected getVisibleActions(row: T): TableAction<T>[];
|
|
2430
|
+
protected isActionDisabled(action: TableAction<T>, row: T): boolean;
|
|
2431
|
+
protected getActionVariantClass(variant?: string): string;
|
|
2432
|
+
protected getActionSubmenuVariantClass(variant?: string): string;
|
|
2433
|
+
protected getAlignClass(align?: string): string;
|
|
2434
|
+
protected getHeaderAlign(column: TableColumn<T>): ColumnAlign;
|
|
2435
|
+
protected getHeaderContentAlignClass(column: TableColumn<T>): string;
|
|
2436
|
+
protected onTableScroll(event: Event): void;
|
|
2437
|
+
protected getResponsiveHideClass(column: any): string;
|
|
2438
|
+
protected getRowNumber(index: number): number;
|
|
2439
|
+
protected getComponentInputs(row: T, column: any, index: number): Record<string, any>;
|
|
2440
|
+
protected getLinkUrl(row: T, column: TableColumn<T>): string | null;
|
|
2441
|
+
protected onRowClick(row: T, index: number, event: Event): void;
|
|
2442
|
+
protected onLinkClick(row: T, column: any, event: Event): void;
|
|
2443
|
+
protected toggleDropdown(rowIndex: number, actionIndex: number, buttonElement?: HTMLElement): void;
|
|
2444
|
+
protected isDropdownOpen(rowIndex: number, actionIndex: number): boolean;
|
|
2445
|
+
protected closeAllDropdowns(): void;
|
|
2446
|
+
protected hasSubmenu(action: any): boolean;
|
|
2447
|
+
protected handleActionClick(action: any, row: T, index: number, event: Event): void;
|
|
2448
|
+
protected getDropdownId(rowIndex: number, actionIndex: number): string;
|
|
2449
|
+
private calculateDropdownPosition;
|
|
2450
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TableComponent<any>, never>;
|
|
2451
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent<any>, "hui-table", never, {
|
|
2452
|
+
"config": {
|
|
2453
|
+
"alias": "config";
|
|
2454
|
+
"required": true;
|
|
2455
|
+
"isSignal": true;
|
|
2456
|
+
};
|
|
2457
|
+
}, {
|
|
2458
|
+
"sortChange": "sortChange";
|
|
2459
|
+
"pageChange": "pageChange";
|
|
2460
|
+
"pageSizeChange": "pageSizeChange";
|
|
2461
|
+
"selectionChange": "selectionChange";
|
|
2462
|
+
"rowReorder": "rowReorder";
|
|
2463
|
+
}, ["customCellTemplates"], never, true, never>;
|
|
2464
|
+
}
|
|
2465
|
+
export type UiTranslator = (text: string, parameters?: Record<string, string | number>) => string;
|
|
2466
|
+
export interface MediaSelectorRequest {
|
|
2467
|
+
mediaType: string;
|
|
2468
|
+
allowUpload: boolean;
|
|
2469
|
+
selectionMode: 'single' | 'multiple';
|
|
2470
|
+
}
|
|
2471
|
+
export type MediaSelector = (request: MediaSelectorRequest) => Promise<string | null | undefined>;
|
|
2472
|
+
export interface HarmolodyUiConfig {
|
|
2473
|
+
translate?: UiTranslator;
|
|
2474
|
+
icons?: Record<string, SvgIcon>;
|
|
2475
|
+
selectMedia?: MediaSelector;
|
|
2476
|
+
}
|
|
2477
|
+
export declare const HARMOLODY_UI_CONFIG: InjectionToken<HarmolodyUiConfig>;
|
|
2478
|
+
export declare const HARMOLODY_MEDIA_SELECTOR: InjectionToken<MediaSelector | null>;
|
|
2479
|
+
export declare function provideHarmolodyUi(config?: HarmolodyUiConfig): EnvironmentProviders;
|
|
2480
|
+
export { type SelectActionButton, type SelectOption as SelectControlOption, type SelectControlValue, type SelectDropdownAlign, type SelectDropdownPlacement, type SelectDropdownWidth, SelectOption$1 as SelectOption, type SelectValue };
|