shirkasoft-ui-components 1.1.2 → 1.2.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 +216 -0
- package/fesm2022/shirkasoft-ui-components.mjs +2399 -503
- package/fesm2022/shirkasoft-ui-components.mjs.map +1 -1
- package/package.json +2 -2
- package/src/theme.css +264 -63
- package/types/shirkasoft-ui-components.d.ts +1287 -83
|
@@ -1,204 +1,466 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { ElementRef, OnDestroy, Type, ViewContainerRef, ComponentRef, AfterViewInit, TemplateRef } from '@angular/core';
|
|
2
|
+
import { ElementRef, OnDestroy, Type, ViewContainerRef, ComponentRef, AfterViewInit, TemplateRef, OnInit } from '@angular/core';
|
|
3
3
|
import { ControlValueAccessor, FormGroup, FormControl } from '@angular/forms';
|
|
4
|
+
import { Observable } from 'rxjs';
|
|
4
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Shirkasoft UI Components.
|
|
8
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
9
|
+
* Belongs to Shirkasoft.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Text input (or textarea) that implements ControlValueAccessor with built-in
|
|
13
|
+
* validation messages, card/number formatting, password reveal and search mode.
|
|
14
|
+
*/
|
|
5
15
|
declare class TextFieldComponent implements ControlValueAccessor {
|
|
6
16
|
private cdr;
|
|
17
|
+
/** id attribute applied to the native input. */
|
|
7
18
|
id: _angular_core.InputSignal<string>;
|
|
19
|
+
/** Formats the value as a credit card number (XXXX-XXXX-XXXX-XXXX). */
|
|
8
20
|
formatCard: _angular_core.InputSignal<boolean>;
|
|
21
|
+
/** Blocks the minus sign from being typed. */
|
|
9
22
|
preventNegative: _angular_core.InputSignal<boolean>;
|
|
23
|
+
/** Label rendered above the field. */
|
|
10
24
|
label: _angular_core.InputSignal<string>;
|
|
25
|
+
/** Native input type ('text', 'password', 'number', etc.). */
|
|
11
26
|
type: _angular_core.InputSignal<string>;
|
|
27
|
+
/** Allows digits only, stripping any other character. */
|
|
12
28
|
numbersOnly: _angular_core.InputSignal<boolean>;
|
|
29
|
+
/** When true, allows decimals and normalizes ',' to '.'. */
|
|
13
30
|
allowDecimals: _angular_core.InputSignal<boolean>;
|
|
31
|
+
/** Maximum number of characters the user can type. */
|
|
14
32
|
maxLength: _angular_core.InputSignal<number | undefined>;
|
|
33
|
+
/** Placeholder text of the native input. */
|
|
15
34
|
placeholder: _angular_core.InputSignal<string>;
|
|
35
|
+
/** Custom messages keyed by validation error name. */
|
|
16
36
|
errorMessages: _angular_core.InputSignal<{
|
|
17
37
|
[key: string]: string;
|
|
18
38
|
}>;
|
|
39
|
+
/** Parent reactive form used to resolve the control by label. */
|
|
19
40
|
formGroup: _angular_core.InputSignal<FormGroup<any> | undefined>;
|
|
41
|
+
/** Reactive control bound directly to this field. */
|
|
20
42
|
control: _angular_core.InputSignal<FormControl<any> | undefined>;
|
|
43
|
+
/** Disables the field. */
|
|
21
44
|
disabled: _angular_core.InputSignal<boolean>;
|
|
45
|
+
/** Custom error message shown regardless of validation errors. */
|
|
22
46
|
errorMessage: _angular_core.InputSignal<string>;
|
|
47
|
+
/** Renders a textarea instead of an input. */
|
|
23
48
|
isTextArea: _angular_core.InputSignal<boolean>;
|
|
49
|
+
/** Height classes applied when `isTextArea` is true. */
|
|
24
50
|
textAreaHeight: _angular_core.InputSignal<string>;
|
|
51
|
+
/** Renders the field as a read-only search trigger. */
|
|
25
52
|
searchMode: _angular_core.InputSignal<boolean>;
|
|
53
|
+
/** Value shown when `searchMode` is enabled. */
|
|
26
54
|
displayValue: _angular_core.InputSignal<string>;
|
|
55
|
+
/** Native autocomplete attribute. */
|
|
27
56
|
autocomplete: _angular_core.InputSignal<string>;
|
|
57
|
+
/** Emitted when the search button is clicked (search mode). */
|
|
28
58
|
searchButtonClick: _angular_core.OutputEmitterRef<void>;
|
|
29
|
-
protected readonly getIcon: (name:
|
|
59
|
+
protected readonly getIcon: (name: any) => any;
|
|
60
|
+
/** Reference to the native input element. */
|
|
30
61
|
inputElement: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
62
|
+
/** Reference to the native textarea element. */
|
|
31
63
|
textareaElement: _angular_core.Signal<ElementRef<HTMLTextAreaElement> | undefined>;
|
|
64
|
+
/** Internal raw value of the field. */
|
|
32
65
|
private _value;
|
|
66
|
+
/** Reactive disabled state from the form control. */
|
|
33
67
|
private _disabledState;
|
|
68
|
+
/** Whether the password is currently revealed. */
|
|
34
69
|
showPassword: _angular_core.WritableSignal<boolean>;
|
|
70
|
+
/** Tracks whether the control was in error at some point (for "was fixed" UX). */
|
|
35
71
|
hadError: _angular_core.WritableSignal<boolean>;
|
|
72
|
+
/** Counter bumped to trigger recomputation of derived error signals. */
|
|
36
73
|
private errorTracker;
|
|
74
|
+
/** Text displayed in search mode when `displayValue` is set. */
|
|
37
75
|
displayLabel: _angular_core.Signal<string>;
|
|
76
|
+
/** Prevents re-subscribing to the same form control. */
|
|
38
77
|
private subscribed;
|
|
78
|
+
/** Effective disabled state combining the input and the form binding. */
|
|
39
79
|
isDisabled: _angular_core.Signal<boolean>;
|
|
80
|
+
/** Current field value. */
|
|
40
81
|
value: _angular_core.Signal<any>;
|
|
82
|
+
/** Resolves the reactive control: explicit `control` or `formGroup.get(label)`. */
|
|
41
83
|
actualControl: _angular_core.Signal<FormControl<any> | undefined>;
|
|
84
|
+
/** True when the resolved control is invalid and dirty or touched. */
|
|
42
85
|
shouldShowError: _angular_core.Signal<boolean | undefined>;
|
|
86
|
+
/** True when the control had an error before and is now valid (success state). */
|
|
43
87
|
wasFixedError: _angular_core.Signal<boolean | undefined>;
|
|
88
|
+
/** Resolved list of error messages for the current control state. */
|
|
44
89
|
getErrorMessages: _angular_core.Signal<string[]>;
|
|
90
|
+
/** Effective input type (handles textarea and password reveal). */
|
|
45
91
|
effectiveType: _angular_core.Signal<string>;
|
|
46
92
|
private transloco;
|
|
93
|
+
/** Callback notified with the new value (ControlValueAccessor). */
|
|
47
94
|
private onChange;
|
|
95
|
+
/** Callback notified when the field is touched (ControlValueAccessor). */
|
|
48
96
|
private onTouched;
|
|
49
97
|
private destroyRef;
|
|
50
98
|
constructor();
|
|
99
|
+
/** Prevents disallowed characters based on the `numbersOnly`/`allowDecimals` config. */
|
|
51
100
|
numberValidation(event: KeyboardEvent): void;
|
|
101
|
+
/** Marks the field as touched and refreshes the error state. */
|
|
52
102
|
onBlur(): void;
|
|
103
|
+
/** Formats the raw input as a credit card number and notifies the control. */
|
|
53
104
|
onCardInput(event: Event): void;
|
|
105
|
+
/** Handles raw input: applies number/card/max-length formatting and notifies the control. */
|
|
54
106
|
onInput(event: Event): void;
|
|
107
|
+
/** Toggles the visibility of a password field. */
|
|
55
108
|
togglePasswordVisibility(): void;
|
|
109
|
+
/** Sets the value from the form control applying the same formatting rules. */
|
|
56
110
|
writeValue(value: any): void;
|
|
111
|
+
/** Registers the callback invoked on value changes (ControlValueAccessor). */
|
|
57
112
|
registerOnChange(fn: any): void;
|
|
113
|
+
/** Registers the callback invoked when the field is touched. */
|
|
58
114
|
registerOnTouched(fn: any): void;
|
|
115
|
+
/** Reflects the disabled state of the form control. */
|
|
59
116
|
setDisabledState(isDisabled: boolean): void;
|
|
60
117
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextFieldComponent, never>;
|
|
61
118
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextFieldComponent, "shk-text-field", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "formatCard": { "alias": "formatCard"; "required": false; "isSignal": true; }; "preventNegative": { "alias": "preventNegative"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "numbersOnly": { "alias": "numbersOnly"; "required": false; "isSignal": true; }; "allowDecimals": { "alias": "allowDecimals"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "errorMessages": { "alias": "errorMessages"; "required": false; "isSignal": true; }; "formGroup": { "alias": "formGroup"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "isTextArea": { "alias": "isTextArea"; "required": false; "isSignal": true; }; "textAreaHeight": { "alias": "textAreaHeight"; "required": false; "isSignal": true; }; "searchMode": { "alias": "searchMode"; "required": false; "isSignal": true; }; "displayValue": { "alias": "displayValue"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; }, { "searchButtonClick": "searchButtonClick"; }, never, never, true, never>;
|
|
62
119
|
}
|
|
63
120
|
|
|
121
|
+
/**
|
|
122
|
+
* Shirkasoft UI Components.
|
|
123
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
124
|
+
* Belongs to Shirkasoft.
|
|
125
|
+
*/
|
|
126
|
+
/** Toast-style notification entry. */
|
|
64
127
|
interface Notification {
|
|
65
128
|
id: string;
|
|
66
129
|
message: string;
|
|
67
130
|
type: 'success' | 'error' | 'warning' | 'info';
|
|
131
|
+
/** Current progress 0-100 when `showProgress` is true. */
|
|
68
132
|
progress?: number;
|
|
133
|
+
/** Whether the notification renders a progress indicator. */
|
|
69
134
|
showProgress?: boolean;
|
|
70
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* Central notification store. Components push/update/remove notifications
|
|
138
|
+
* reactively through signals for the notification component to render.
|
|
139
|
+
*/
|
|
71
140
|
declare class NotificationService {
|
|
141
|
+
/** Reactive list of visible notifications. */
|
|
72
142
|
private notificationsSignal;
|
|
143
|
+
/** Monotonic id counter for new notifications. */
|
|
73
144
|
private currentId;
|
|
145
|
+
/** Readonly reactive list of visible notifications. */
|
|
74
146
|
notifications: _angular_core.Signal<Notification[]>;
|
|
147
|
+
/**
|
|
148
|
+
* Adds a notification and returns its id. When `showProgress` is false and
|
|
149
|
+
* `duration` is positive, it auto-removes after that many ms.
|
|
150
|
+
*/
|
|
75
151
|
addNotification(message: string, type?: Notification['type'], showProgress?: boolean, duration?: number): string;
|
|
152
|
+
/** Updates a progress notification; auto-removes when progress hits 100. */
|
|
76
153
|
updateProgress(notificationId: string, progress: number): void;
|
|
154
|
+
/** Removes the given notification. */
|
|
77
155
|
removeNotification(notification: Notification): void;
|
|
156
|
+
/** Removes the notification with the given id. */
|
|
78
157
|
removeNotificationById(notificationId: string): void;
|
|
158
|
+
/** Removes every visible notification. */
|
|
79
159
|
clearAll(): void;
|
|
80
160
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationService, never>;
|
|
81
161
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<NotificationService>;
|
|
82
162
|
}
|
|
83
163
|
|
|
84
164
|
type NotificationPosition = 'center-top' | 'right-top' | 'left-top';
|
|
165
|
+
/**
|
|
166
|
+
* Shirkasoft UI Components.
|
|
167
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
168
|
+
* Belongs to Shirkasoft.
|
|
169
|
+
*/
|
|
170
|
+
/**
|
|
171
|
+
* Toast notification host that renders the notifications pushed through the
|
|
172
|
+
* NotificationService in the configured position.
|
|
173
|
+
*/
|
|
85
174
|
declare class NotificationComponent {
|
|
175
|
+
/** Position of the notification stack: center, right or left top. */
|
|
86
176
|
position: _angular_core.InputSignal<NotificationPosition>;
|
|
87
177
|
private notificationService;
|
|
88
|
-
protected getIcon: (name:
|
|
178
|
+
protected getIcon: (name: any) => any;
|
|
179
|
+
/** Maps each notification type to its internal icon name. */
|
|
89
180
|
private readonly iconMap;
|
|
181
|
+
/** Resolves the icon name for a notification type. */
|
|
90
182
|
getNotificationIcon(type: string): string;
|
|
183
|
+
/** Live list of active notifications. */
|
|
91
184
|
notifications: _angular_core.Signal<Notification[]>;
|
|
185
|
+
/** Notifications sorted with the newest first. */
|
|
92
186
|
sortedNotifications: _angular_core.Signal<Notification[]>;
|
|
187
|
+
/** Removes a notification through the service. */
|
|
93
188
|
removeNotification(notification: Notification): void;
|
|
189
|
+
/** Rounds the progress value of a notification. */
|
|
94
190
|
roundProgress(progress: number | undefined): number;
|
|
191
|
+
/** Whether there are notifications to show. */
|
|
95
192
|
hasNotifications: _angular_core.Signal<boolean>;
|
|
193
|
+
/** CSS classes positioning the stack according to `position`. */
|
|
96
194
|
positionClass: _angular_core.Signal<"fixed top-4 z-[9999] space-y-4 sm:space-y-6 sm:top-6 lg:top-8 right-4" | "fixed top-4 z-[9999] space-y-4 sm:space-y-6 sm:top-6 lg:top-8 left-4" | "fixed top-4 z-[9999] space-y-4 sm:space-y-6 sm:top-6 lg:top-8 left-1/2 -translate-x-1/2">;
|
|
97
195
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationComponent, never>;
|
|
98
196
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NotificationComponent, "shk-notification", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
99
197
|
}
|
|
100
198
|
|
|
199
|
+
/**
|
|
200
|
+
* Shirkasoft UI Components.
|
|
201
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
202
|
+
* Belongs to Shirkasoft.
|
|
203
|
+
*/
|
|
204
|
+
/**
|
|
205
|
+
* Switch / checkbox component that implements ControlValueAccessor so it can
|
|
206
|
+
* be used with reactive and template-driven forms.
|
|
207
|
+
*/
|
|
101
208
|
declare class ToggleComponent implements ControlValueAccessor {
|
|
209
|
+
/** Text displayed next to the control. */
|
|
102
210
|
label: _angular_core.InputSignal<string>;
|
|
211
|
+
/** Visual style: 'toggle' (switch) or 'checkbox'. Defaults to 'toggle'. */
|
|
103
212
|
mode: _angular_core.InputSignal<"toggle" | "checkbox">;
|
|
213
|
+
/** Manually controlled checked state (supports one-way binding). */
|
|
104
214
|
checked: _angular_core.InputSignal<boolean | undefined>;
|
|
215
|
+
/** Emitted with the new value when the user toggles the control. */
|
|
105
216
|
checkedChange: _angular_core.OutputEmitterRef<boolean>;
|
|
217
|
+
/** Internal controlled/reactive value. */
|
|
106
218
|
_value: _angular_core.WritableSignal<boolean>;
|
|
219
|
+
/** Reactive disabled state. */
|
|
107
220
|
_disabled: _angular_core.WritableSignal<boolean>;
|
|
221
|
+
/** Callback notified with the new value on change (ControlValueAccessor). */
|
|
108
222
|
private onChange;
|
|
223
|
+
/** Callback notified when the control loses focus or is touched. */
|
|
109
224
|
private onTouched;
|
|
110
225
|
constructor();
|
|
226
|
+
/** Sets the value from the form control. */
|
|
111
227
|
writeValue(value: any): void;
|
|
228
|
+
/** Registers the callback invoked on value changes (ControlValueAccessor). */
|
|
112
229
|
registerOnChange(fn: any): void;
|
|
230
|
+
/** Registers the callback invoked when the control is touched. */
|
|
113
231
|
registerOnTouched(fn: any): void;
|
|
232
|
+
/** Reflects the disabled state of the form control. */
|
|
114
233
|
setDisabledState(isDisabled: boolean): void;
|
|
234
|
+
/**
|
|
235
|
+
* Inverts the current value (unless disabled), notifies the form control,
|
|
236
|
+
* marks the control as touched and emits `checkedChange`.
|
|
237
|
+
*/
|
|
115
238
|
toggle(): void;
|
|
116
239
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToggleComponent, never>;
|
|
117
240
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToggleComponent, "shk-toggle", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "checkedChange": "checkedChange"; }, never, never, true, never>;
|
|
118
241
|
}
|
|
119
242
|
|
|
243
|
+
/**
|
|
244
|
+
* Shirkasoft UI Components.
|
|
245
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
246
|
+
* Belongs to Shirkasoft.
|
|
247
|
+
*/
|
|
248
|
+
/**
|
|
249
|
+
* Numeric input tailored for currency values with a optional percentage mode.
|
|
250
|
+
* Uses two-way bindable models: `value` and `isPercentage`.
|
|
251
|
+
*/
|
|
120
252
|
declare class PriceInputComponent {
|
|
253
|
+
/** Numeric value, bindable with [(value)]. */
|
|
121
254
|
value: _angular_core.ModelSignal<number>;
|
|
255
|
+
/** Whether the input works as a percentage, bindable with [(isPercentage)]. */
|
|
122
256
|
isPercentage: _angular_core.ModelSignal<boolean>;
|
|
257
|
+
/** Label displayed above the field. */
|
|
123
258
|
label: _angular_core.InputSignal<string>;
|
|
259
|
+
/** id attribute applied to the native input. */
|
|
124
260
|
inputId: _angular_core.InputSignal<string>;
|
|
261
|
+
/** Marks the field as required. */
|
|
125
262
|
required: _angular_core.InputSignal<boolean>;
|
|
263
|
+
/** Disables the input. */
|
|
126
264
|
disabled: _angular_core.InputSignal<boolean>;
|
|
265
|
+
/** Minimum allowed value. */
|
|
127
266
|
min: _angular_core.InputSignal<number>;
|
|
267
|
+
/** Maximum allowed value. */
|
|
128
268
|
max: _angular_core.InputSignal<number>;
|
|
269
|
+
/** Shows the error styling on the field. */
|
|
129
270
|
showError: _angular_core.InputSignal<boolean>;
|
|
271
|
+
/** Message rendered when the field is in error state. */
|
|
130
272
|
errorMessage: _angular_core.InputSignal<string>;
|
|
273
|
+
/** Toggles between amount and percentage modes (unless disabled). */
|
|
131
274
|
toggleMode(): void;
|
|
275
|
+
/** Parses the user input and updates the bound `value`. */
|
|
132
276
|
onInput(event: Event): void;
|
|
133
277
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PriceInputComponent, never>;
|
|
134
278
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PriceInputComponent, "shk-price-input", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "isPercentage": { "alias": "isPercentage"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "showError": { "alias": "showError"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "isPercentage": "isPercentageChange"; }, never, never, true, never>;
|
|
135
279
|
}
|
|
136
280
|
|
|
281
|
+
/** Which granularity the picker edits: a day, a month or a year. */
|
|
137
282
|
type DatePickerView = 'date' | 'month' | 'year';
|
|
283
|
+
/**
|
|
284
|
+
* Shirkasoft UI Components.
|
|
285
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
286
|
+
* Belongs to Shirkasoft.
|
|
287
|
+
*/
|
|
288
|
+
/**
|
|
289
|
+
* Date/time picker implemented as a ControlValueAccessor. Supports choosing a
|
|
290
|
+
* day, month or year, optional time selection (with seconds/12-hour format),
|
|
291
|
+
* min/max constraints and locale-aware labels.
|
|
292
|
+
*/
|
|
138
293
|
declare class DatePickerComponent implements ControlValueAccessor {
|
|
139
294
|
private elementRef;
|
|
140
295
|
private cdr;
|
|
141
296
|
private destroyRef;
|
|
142
297
|
private transloco;
|
|
298
|
+
/** HTML id for the input (for label/for pairing). */
|
|
143
299
|
id: _angular_core.InputSignal<string>;
|
|
300
|
+
/** Granularity of the picker ('date' | 'month' | 'year'). */
|
|
144
301
|
view: _angular_core.InputSignal<DatePickerView>;
|
|
302
|
+
/** Label shown above the input. */
|
|
145
303
|
label: _angular_core.InputSignal<string>;
|
|
304
|
+
/** Placeholder of the input. */
|
|
146
305
|
placeholder: _angular_core.InputSignal<string>;
|
|
306
|
+
/** FormGroup used to resolve the control from `label`. */
|
|
147
307
|
formGroup: _angular_core.InputSignal<FormGroup<any> | undefined>;
|
|
308
|
+
/** Directly bound FormControl. */
|
|
148
309
|
control: _angular_core.InputSignal<FormControl<any> | undefined>;
|
|
310
|
+
/** Disables the picker. */
|
|
149
311
|
disabled: _angular_core.InputSignal<boolean>;
|
|
312
|
+
/** Custom error message displayed (overrides translated ones). */
|
|
150
313
|
errorMessage: _angular_core.InputSignal<string>;
|
|
314
|
+
/** Per-validation-key custom error messages. */
|
|
151
315
|
errorMessages: _angular_core.InputSignal<{
|
|
152
316
|
[key: string]: string;
|
|
153
317
|
}>;
|
|
318
|
+
/** Minimum allowed date (YYYY-MM-DD) or year/month string. */
|
|
154
319
|
minValue: _angular_core.InputSignal<string>;
|
|
320
|
+
/** Maximum allowed date (YYYY-MM-DD) or year/month string. */
|
|
155
321
|
maxValue: _angular_core.InputSignal<string>;
|
|
322
|
+
/** Locale used for month/day names and formatted labels. */
|
|
156
323
|
locale: _angular_core.InputSignal<string>;
|
|
324
|
+
/** Edits only the time portion of the value. */
|
|
325
|
+
timeOnly: _angular_core.InputSignal<boolean>;
|
|
326
|
+
/** Shows the time selectors alongside the date. */
|
|
327
|
+
showTime: _angular_core.InputSignal<boolean>;
|
|
328
|
+
/** Hour format: '12' or '24'. */
|
|
329
|
+
hourFormat: _angular_core.InputSignal<"12" | "24">;
|
|
330
|
+
/** Whether the seconds selector is shown. */
|
|
331
|
+
showSeconds: _angular_core.InputSignal<boolean>;
|
|
332
|
+
/** Step (in minutes) for the minute selector. */
|
|
333
|
+
minuteStep: _angular_core.InputSignal<number>;
|
|
334
|
+
/** Whether the dropdown calendar is open. */
|
|
157
335
|
isOpen: _angular_core.WritableSignal<boolean>;
|
|
336
|
+
/** Year currently displayed in the calendar. */
|
|
158
337
|
viewYear: _angular_core.WritableSignal<number>;
|
|
338
|
+
/** Month currently displayed in the calendar (0-based). */
|
|
159
339
|
viewMonth: _angular_core.WritableSignal<number>;
|
|
340
|
+
/** Starting year of the decade shown in year view. */
|
|
160
341
|
viewDecade: _angular_core.WritableSignal<number>;
|
|
342
|
+
/** Hour selected in the time selectors. */
|
|
343
|
+
viewHour: _angular_core.WritableSignal<number>;
|
|
344
|
+
/** Minute selected in the time selectors. */
|
|
345
|
+
viewMinute: _angular_core.WritableSignal<number>;
|
|
346
|
+
/** Second selected in the time selectors. */
|
|
347
|
+
viewSecond: _angular_core.WritableSignal<number>;
|
|
348
|
+
/** Meridiem selected in 12-hour format. */
|
|
349
|
+
viewMeridiem: _angular_core.WritableSignal<"AM" | "PM">;
|
|
350
|
+
/** Date part selected but not yet committed until the time is confirmed. */
|
|
351
|
+
private pendingDate;
|
|
352
|
+
/** Underlying value (mirrors the reactive control). */
|
|
161
353
|
private _value;
|
|
354
|
+
/** Disabled state coming from the reactive form infrastructure. */
|
|
162
355
|
private _disabledState;
|
|
356
|
+
/** Whether status subscriptions have been attached to the control. */
|
|
163
357
|
private subscribed;
|
|
164
358
|
private valueSubscribed;
|
|
359
|
+
/** Counter used to recompute the error helpers reactively. */
|
|
165
360
|
private errorTracker;
|
|
361
|
+
/** Whether an error was displayed at some point. */
|
|
166
362
|
hadError: _angular_core.WritableSignal<boolean>;
|
|
363
|
+
/** ControlValueAccessor callbacks. */
|
|
167
364
|
private onChange;
|
|
168
365
|
private onTouched;
|
|
366
|
+
/** Current value of the picker. */
|
|
169
367
|
value: _angular_core.Signal<string | null>;
|
|
368
|
+
/** Whether the picker is disabled (input or reactive form). */
|
|
170
369
|
isDisabled: _angular_core.Signal<boolean>;
|
|
370
|
+
/** Resolves the control from `control` input or `formGroup`+`label`. */
|
|
171
371
|
actualControl: _angular_core.Signal<FormControl<any> | undefined>;
|
|
372
|
+
/** Whether the bound control should show its error message. */
|
|
172
373
|
shouldShowError: _angular_core.Signal<boolean | undefined>;
|
|
374
|
+
/** Whether an error was fixed (invalid before, now valid and touched). */
|
|
173
375
|
wasFixedError: _angular_core.Signal<boolean | undefined>;
|
|
376
|
+
/** Validation error messages to display, custom or translated. */
|
|
174
377
|
getErrorMessages: _angular_core.Signal<string[]>;
|
|
378
|
+
/** Date part displayed in the calendar (pending date or committed value). */
|
|
379
|
+
displayedDate: _angular_core.Signal<string | null>;
|
|
380
|
+
/** Human-readable label for the selected value in the input. */
|
|
175
381
|
displayLabel: _angular_core.Signal<string>;
|
|
382
|
+
/** Localized short month names for the year view. */
|
|
176
383
|
monthNames: _angular_core.Signal<string[]>;
|
|
384
|
+
/** Localized short weekday names for the calendar header. */
|
|
177
385
|
dayNames: _angular_core.Signal<string[]>;
|
|
386
|
+
/** Number of days in the currently viewed month. */
|
|
178
387
|
daysInMonth: _angular_core.Signal<number>;
|
|
388
|
+
/** Weekday index (0=Sunday) of the first day of the viewed month. */
|
|
179
389
|
firstDayOfMonth: _angular_core.Signal<number>;
|
|
390
|
+
/** Calendar grid: nulls for leading blanks then the days of the month. */
|
|
180
391
|
calendarDays: _angular_core.Signal<(number | null)[]>;
|
|
392
|
+
/** Whether the prev navigation button is allowed by `minValue`. */
|
|
181
393
|
canGoPrev: _angular_core.Signal<boolean>;
|
|
394
|
+
/** Whether the next navigation button is allowed by `maxValue`. */
|
|
182
395
|
canGoNext: _angular_core.Signal<boolean>;
|
|
396
|
+
/** Year of the displayed date, if any. */
|
|
183
397
|
selectedYear: _angular_core.Signal<number | null>;
|
|
398
|
+
/** Month index (0-based) of the displayed date, if any. */
|
|
184
399
|
selectedMonth: _angular_core.Signal<number | null>;
|
|
400
|
+
/** Day of the displayed date, if any (date view only). */
|
|
185
401
|
selectedDay: _angular_core.Signal<number | null>;
|
|
402
|
+
/** 12 years of the viewed decade for the year view. */
|
|
186
403
|
decadeYears: _angular_core.Signal<number[]>;
|
|
404
|
+
/** (Unused legacy placeholder) plain year list. */
|
|
187
405
|
years: number[];
|
|
188
406
|
constructor();
|
|
407
|
+
/** Closes the dropdown when clicking outside the component. */
|
|
189
408
|
onDocumentClick(event: MouseEvent): void;
|
|
409
|
+
/** Closes the dropdown on Escape. */
|
|
190
410
|
onEscape(): void;
|
|
411
|
+
/** Opens/closes the dropdown, syncing the calendar to the current value. */
|
|
191
412
|
toggle(): void;
|
|
413
|
+
/** Aligns the calendar view signals with the current value (or today). */
|
|
192
414
|
private syncViewToValue;
|
|
415
|
+
/** Closes the dropdown, marks the control as touched and refreshes errors. */
|
|
193
416
|
close(): void;
|
|
417
|
+
/** Navigates the calendar to the previous year/month/decade. */
|
|
194
418
|
prev(): void;
|
|
419
|
+
/** Navigates the calendar to the next year/month/decade. */
|
|
195
420
|
next(): void;
|
|
421
|
+
/** Selects a day of the month (pending if time is shown). */
|
|
196
422
|
selectDay(day: number): void;
|
|
423
|
+
/** Selects a month of the year (pending if time is shown). */
|
|
197
424
|
selectMonth(monthIndex: number): void;
|
|
425
|
+
/** Selects a year (pending if time is shown). */
|
|
198
426
|
selectYear(year: number): void;
|
|
427
|
+
/** Commits a value, updates the component, the control and the outputs. */
|
|
199
428
|
private setValue;
|
|
429
|
+
/** Confirms the selected time and commits the combined date+time value. */
|
|
430
|
+
confirmTime(): void;
|
|
431
|
+
/** Reads the hour selected in the time selector. */
|
|
432
|
+
onHourChange(event: Event): void;
|
|
433
|
+
/** Reads the minute selected in the time selector. */
|
|
434
|
+
onMinuteChange(event: Event): void;
|
|
435
|
+
/** Reads the second selected in the time selector. */
|
|
436
|
+
onSecondChange(event: Event): void;
|
|
437
|
+
/** Current meridiem ("AM"/"PM") for the 12-hour format. */
|
|
438
|
+
meridiem(): 'AM' | 'PM';
|
|
439
|
+
/** Reads the meridiem selected in the time selector. */
|
|
440
|
+
onMeridiemChange(event: Event): void;
|
|
441
|
+
/** Splits the date part from a full ISO "date" or "dateTtime" value. */
|
|
442
|
+
private datePartOf;
|
|
443
|
+
/** Formats a raw time string ("HH:mm[:ss]") using the configured format. */
|
|
444
|
+
private formatTimeFromValue;
|
|
445
|
+
/** Formats hour/minute/second according to hour format and seconds option. */
|
|
446
|
+
private formatTime;
|
|
447
|
+
/** Formats a Date as a YYYY-MM-DD ISO string. */
|
|
448
|
+
private toISODate;
|
|
449
|
+
/** Whether the given day matches the currently selected date. */
|
|
200
450
|
isSelectedDay(day: number): boolean;
|
|
451
|
+
/** Hours available in the time selector ('12' maps to 0..11 or 12..23). */
|
|
452
|
+
hoursRange(): number[];
|
|
453
|
+
/** Minutes available in the time selector, stepped by `minuteStep`. */
|
|
454
|
+
minutesRange(): number[];
|
|
455
|
+
/** Seconds available in the time selector (0..59). */
|
|
456
|
+
secondsRange(): number[];
|
|
457
|
+
/** Formats an hour for display in the selector (12-hour aware). */
|
|
458
|
+
hourDisplay(hour: number): string;
|
|
459
|
+
/** Pads a minute value with a leading zero. */
|
|
460
|
+
minutesLabel(value: number): string;
|
|
461
|
+
/** Whether the given day is today's date. */
|
|
201
462
|
isToday(day: number): boolean;
|
|
463
|
+
/** Whether the given month matches the selected month and year. */
|
|
202
464
|
isSelectedMonth(monthIndex: number): boolean;
|
|
203
465
|
isCurrentMonth(monthIndex: number): boolean;
|
|
204
466
|
isSelectedYear(year: number): boolean;
|
|
@@ -208,30 +470,60 @@ declare class DatePickerComponent implements ControlValueAccessor {
|
|
|
208
470
|
registerOnTouched(fn: any): void;
|
|
209
471
|
setDisabledState(isDisabled: boolean): void;
|
|
210
472
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatePickerComponent, never>;
|
|
211
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatePickerComponent, "shk-date-picker", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "view": { "alias": "view"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "formGroup": { "alias": "formGroup"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "errorMessages": { "alias": "errorMessages"; "required": false; "isSignal": true; }; "minValue": { "alias": "minValue"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
473
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatePickerComponent, "shk-date-picker", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "view": { "alias": "view"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "formGroup": { "alias": "formGroup"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "errorMessages": { "alias": "errorMessages"; "required": false; "isSignal": true; }; "minValue": { "alias": "minValue"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "timeOnly": { "alias": "timeOnly"; "required": false; "isSignal": true; }; "showTime": { "alias": "showTime"; "required": false; "isSignal": true; }; "hourFormat": { "alias": "hourFormat"; "required": false; "isSignal": true; }; "showSeconds": { "alias": "showSeconds"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
212
474
|
}
|
|
213
475
|
|
|
476
|
+
/**
|
|
477
|
+
* Shirkasoft UI Components.
|
|
478
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
479
|
+
* Belongs to Shirkasoft.
|
|
480
|
+
*/
|
|
481
|
+
/**
|
|
482
|
+
* Confirmation dialog opened via `show()` which resolves a Promise<boolean>
|
|
483
|
+
* with the user's choice.
|
|
484
|
+
*/
|
|
214
485
|
declare class ConfirmDialogComponent implements OnDestroy {
|
|
215
|
-
protected getIcon: (name:
|
|
486
|
+
protected getIcon: (name: any) => any;
|
|
487
|
+
/** Title shown in the dialog header. */
|
|
216
488
|
title: _angular_core.InputSignal<string>;
|
|
489
|
+
/** Message body of the dialog. */
|
|
217
490
|
message: _angular_core.InputSignal<string>;
|
|
491
|
+
/** Label of the confirm button. */
|
|
218
492
|
confirmLabel: _angular_core.InputSignal<string>;
|
|
493
|
+
/** Label of the cancel button. */
|
|
219
494
|
cancelLabel: _angular_core.InputSignal<string>;
|
|
495
|
+
/** Text shown on the confirm button while `loading` is true. */
|
|
220
496
|
loadingText: _angular_core.InputSignal<string>;
|
|
221
|
-
|
|
497
|
+
/** Visual style: 'danger', 'info' or 'warning'. */
|
|
498
|
+
type: _angular_core.InputSignal<"info" | "warning" | "danger">;
|
|
499
|
+
/** Shows a spinner and disables the confirm button. */
|
|
222
500
|
loading: _angular_core.InputSignal<boolean>;
|
|
501
|
+
/** Whether the cancel button is shown. */
|
|
223
502
|
showCancel: _angular_core.InputSignal<boolean>;
|
|
503
|
+
/** Controls dialog visibility. */
|
|
224
504
|
visible: _angular_core.WritableSignal<boolean>;
|
|
505
|
+
/** Resolver of the currently pending confirmation promise. */
|
|
225
506
|
private resolveRef;
|
|
507
|
+
/** Emitted whenever the dialog is closed (confirm or cancel). */
|
|
226
508
|
closed: _angular_core.OutputEmitterRef<void>;
|
|
509
|
+
/** Opens the dialog and returns a promise resolving with the user choice. */
|
|
227
510
|
show(): Promise<boolean>;
|
|
511
|
+
/** Resolves with `true` when the user confirms. */
|
|
228
512
|
onConfirm(): void;
|
|
513
|
+
/** Resolves with `false` when the user cancels. */
|
|
229
514
|
onCancel(): void;
|
|
515
|
+
/** Clears the pending resolver on destroy. */
|
|
230
516
|
ngOnDestroy(): void;
|
|
231
517
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConfirmDialogComponent, never>;
|
|
232
518
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConfirmDialogComponent, "shk-confirm-dialog", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "confirmLabel": { "alias": "confirmLabel"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; "loadingText": { "alias": "loadingText"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "showCancel": { "alias": "showCancel"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, never, true, never>;
|
|
233
519
|
}
|
|
234
520
|
|
|
521
|
+
/**
|
|
522
|
+
* Shirkasoft UI Components.
|
|
523
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
524
|
+
* Belongs to Shirkasoft.
|
|
525
|
+
*/
|
|
526
|
+
/** Options for opening a confirmation dialog. */
|
|
235
527
|
interface ConfirmConfig {
|
|
236
528
|
title?: string;
|
|
237
529
|
message: string;
|
|
@@ -242,172 +534,333 @@ interface ConfirmConfig {
|
|
|
242
534
|
showCancel?: boolean;
|
|
243
535
|
loading?: boolean;
|
|
244
536
|
}
|
|
537
|
+
/**
|
|
538
|
+
* Programmatically opens the confirmation dialog and resolves a Promise
|
|
539
|
+
* with the user's decision (true = confirm, false = cancel).
|
|
540
|
+
*/
|
|
245
541
|
declare class ConfirmDialogService {
|
|
542
|
+
/** Reference to the currently open dialog, if any. */
|
|
246
543
|
private dialogRef;
|
|
247
544
|
private destroyRef;
|
|
248
545
|
private appRef;
|
|
249
546
|
private injector;
|
|
250
547
|
constructor();
|
|
548
|
+
/**
|
|
549
|
+
* Opens a confirmation dialog with the given configuration and returns a
|
|
550
|
+
* promise resolving with the user's choice.
|
|
551
|
+
*/
|
|
251
552
|
confirm(config: ConfirmConfig): Promise<boolean>;
|
|
553
|
+
/** Detaches and destroys the mounted dialog if present. */
|
|
252
554
|
private cleanupDialog;
|
|
253
555
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConfirmDialogService, never>;
|
|
254
556
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ConfirmDialogService>;
|
|
255
557
|
}
|
|
256
558
|
|
|
559
|
+
/**
|
|
560
|
+
* Shirkasoft UI Components.
|
|
561
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
562
|
+
* Belongs to Shirkasoft.
|
|
563
|
+
*/
|
|
564
|
+
/** Options for opening a modal through the service. */
|
|
257
565
|
interface ModalConfig {
|
|
566
|
+
/** Title shown in the modal header. */
|
|
258
567
|
title: string;
|
|
568
|
+
/** Component rendered inside the modal body. */
|
|
259
569
|
component: Type<any>;
|
|
570
|
+
/** Data passed to the modal component via inputs. */
|
|
260
571
|
data?: Record<string, any>;
|
|
572
|
+
/** Modal width (CSS value). */
|
|
261
573
|
width?: string;
|
|
574
|
+
/** Whether the accept/cancel buttons are shown. */
|
|
262
575
|
showButtons?: boolean;
|
|
576
|
+
/** Whether the expand (fullscreen) button is shown. */
|
|
263
577
|
showExpandButton?: boolean;
|
|
578
|
+
/** Label of the accept button. */
|
|
264
579
|
acceptLabel?: string;
|
|
580
|
+
/** Label of the cancel button. */
|
|
265
581
|
cancelLabel?: string;
|
|
582
|
+
/** Optional callback invoked when the modal closes. */
|
|
266
583
|
onClose?: () => void;
|
|
267
584
|
}
|
|
585
|
+
/**
|
|
586
|
+
* Global modal manager. Opens modals on a stack, exposing reactive access to
|
|
587
|
+
* the current modal and the top-most opened config.
|
|
588
|
+
*/
|
|
268
589
|
declare class ModalService {
|
|
590
|
+
/** Stack of open modals (top-most renders on top). */
|
|
269
591
|
private stackSignal;
|
|
592
|
+
/** Counter emitted on each close, used to trigger close animations. */
|
|
270
593
|
private closeRequestSignal;
|
|
271
594
|
private router;
|
|
272
595
|
private destroyRef;
|
|
273
596
|
constructor();
|
|
597
|
+
/** Reactive list of open modals. */
|
|
274
598
|
modalStack: _angular_core.Signal<ModalConfig[]>;
|
|
599
|
+
/** Top-most modal on the stack, or null. */
|
|
275
600
|
currentModal: _angular_core.Signal<ModalConfig | null>;
|
|
601
|
+
/** Reactive close-request counter. */
|
|
276
602
|
closeRequest: _angular_core.Signal<number>;
|
|
603
|
+
/** Opens a new modal on top of the stack. */
|
|
277
604
|
open(config: ModalConfig): void;
|
|
605
|
+
/** Alias of `close()` used by the accept button. */
|
|
278
606
|
accept(): void;
|
|
607
|
+
/** Closes the top-most modal, invoking its onClose callback. */
|
|
279
608
|
close(): void;
|
|
609
|
+
/** Closes all open modals at once. */
|
|
280
610
|
clear(): void;
|
|
281
611
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalService, never>;
|
|
282
612
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ModalService>;
|
|
283
613
|
}
|
|
284
614
|
|
|
615
|
+
/**
|
|
616
|
+
* Shirkasoft UI Components.
|
|
617
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
618
|
+
* Belongs to Shirkasoft.
|
|
619
|
+
*/
|
|
620
|
+
/**
|
|
621
|
+
* Modal dialog that renders a dynamically loaded component, tracks its
|
|
622
|
+
* form validity and submit outputs, and delegates accept/cancel to the
|
|
623
|
+
* shared ModalService.
|
|
624
|
+
*/
|
|
285
625
|
declare class ModalComponent {
|
|
286
|
-
protected getIcon: (name:
|
|
626
|
+
protected getIcon: (name: any) => any;
|
|
287
627
|
private notificationSrv;
|
|
288
628
|
private destroyRef;
|
|
289
629
|
private modalSrv;
|
|
290
630
|
private transloco;
|
|
291
631
|
private cdr;
|
|
632
|
+
/** Reference where the dynamic content is rendered. */
|
|
292
633
|
container: _angular_core.Signal<ViewContainerRef | undefined>;
|
|
634
|
+
/** Configuration of the modal currently open (from the service). */
|
|
293
635
|
currentConfig: _angular_core.WritableSignal<ModalConfig | null>;
|
|
636
|
+
/** Modal title. */
|
|
294
637
|
title: _angular_core.WritableSignal<string>;
|
|
638
|
+
/** Whether the modal is visible. */
|
|
295
639
|
visible: _angular_core.WritableSignal<boolean>;
|
|
640
|
+
/** Generic loading flag for the footer actions. */
|
|
296
641
|
loading: _angular_core.WritableSignal<boolean>;
|
|
642
|
+
/** Whether the accept action is being processed. */
|
|
297
643
|
isProcessing: _angular_core.WritableSignal<boolean>;
|
|
644
|
+
/** Whether the modal is currently expanded to fullscreen. */
|
|
298
645
|
isExpanded: _angular_core.WritableSignal<boolean>;
|
|
646
|
+
/** True when the dynamic component reports a valid form. */
|
|
299
647
|
isFormValid: _angular_core.WritableSignal<boolean>;
|
|
648
|
+
/** Reference to the dynamically created component. */
|
|
300
649
|
componentRef: ComponentRef<any> | null;
|
|
650
|
+
/** Subscriptions to the dynamic component outputs. */
|
|
301
651
|
private subscriptions;
|
|
652
|
+
/** Width of the modal (fullscreen when expanded). */
|
|
302
653
|
computedModalWidth: _angular_core.Signal<string>;
|
|
654
|
+
/** Whether the footer buttons should be rendered. */
|
|
303
655
|
modalButtonsVisible: _angular_core.Signal<boolean>;
|
|
656
|
+
/** Whether the expand/fullscreen button is shown. */
|
|
304
657
|
showExpandButton: _angular_core.Signal<boolean>;
|
|
658
|
+
/** Resolved cancel button label. */
|
|
305
659
|
cancelLabel: _angular_core.Signal<string>;
|
|
660
|
+
/** Resolved accept button label. */
|
|
306
661
|
acceptLabel: _angular_core.Signal<string>;
|
|
307
662
|
constructor();
|
|
663
|
+
/** Updates visibility when the backdrop/close controls change. */
|
|
308
664
|
onVisibleChange(show: boolean): void;
|
|
665
|
+
/** Creates the dynamic component and wires its form/submit outputs. */
|
|
309
666
|
private loadComponent;
|
|
667
|
+
/** Subscribes to a dynamic component output if it exists. */
|
|
310
668
|
private subscribeToOutput;
|
|
669
|
+
/** Finalizes the submit flow, accepting the modal on success. */
|
|
311
670
|
private handleSubmit;
|
|
671
|
+
/** Closes the modal, calling the dynamic component's `handleCancel` if any. */
|
|
312
672
|
closeModal(): void;
|
|
673
|
+
/** Performs the actual close sequence and cleanup. */
|
|
313
674
|
doClose(): void;
|
|
675
|
+
/** Toggles between normal width and fullscreen. */
|
|
314
676
|
toggleExpand(): void;
|
|
677
|
+
/** Validates the dynamic component form and triggers its `onSubmit`. */
|
|
315
678
|
onAccept(): void;
|
|
679
|
+
/** Resolves the dynamic component's form (property or getter function). */
|
|
316
680
|
private getForm;
|
|
681
|
+
/** Recursively checks for real validation errors (ignoring 'warning'). */
|
|
317
682
|
private hasRealErrors;
|
|
683
|
+
/** Marks a form (and all its descendants) as touched. */
|
|
318
684
|
private markAllAsTouched;
|
|
685
|
+
/** True when the component exposes both `onSubmit` and a `form`. */
|
|
319
686
|
private isDynamicComponent;
|
|
687
|
+
/** Unsubscribes outputs and destroys the dynamic component. */
|
|
320
688
|
private cleanup;
|
|
321
689
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalComponent, never>;
|
|
322
690
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalComponent, "shk-modal", never, {}, {}, never, never, true, never>;
|
|
323
691
|
}
|
|
324
692
|
|
|
693
|
+
/** Option rendered by the select, optionally prefixed with a "new entry" badge. */
|
|
325
694
|
interface SelectOption {
|
|
326
695
|
label: string;
|
|
327
696
|
value: any;
|
|
328
697
|
custom?: boolean;
|
|
329
698
|
}
|
|
699
|
+
/**
|
|
700
|
+
* Shirkasoft UI Components.
|
|
701
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
702
|
+
* Belongs to Shirkasoft.
|
|
703
|
+
*/
|
|
704
|
+
/**
|
|
705
|
+
* Custom select that works as a ControlValueAccessor: single/multiple
|
|
706
|
+
* selection, searchable, keyboard navigation, pagination, custom entries and
|
|
707
|
+
* reactive-form integration.
|
|
708
|
+
*/
|
|
330
709
|
declare class SelectComponent implements ControlValueAccessor {
|
|
331
710
|
private elementRef;
|
|
332
|
-
|
|
711
|
+
/** Resolves icon names to lucide components, falling back to a chevron. */
|
|
712
|
+
protected getIcon: (name: any) => any;
|
|
713
|
+
/** Available options. */
|
|
333
714
|
options: _angular_core.InputSignal<SelectOption[]>;
|
|
715
|
+
/** Enables multi-select mode. */
|
|
334
716
|
multiple: _angular_core.InputSignal<boolean>;
|
|
717
|
+
/** Restricts multi-selection to the given value combinations. */
|
|
335
718
|
validCombinations: _angular_core.InputSignal<string[][] | undefined>;
|
|
719
|
+
/** Placeholder shown when there is no selection. */
|
|
336
720
|
placeholder: _angular_core.InputSignal<string>;
|
|
721
|
+
/** Label used to bind the control inside a `formGroup`. */
|
|
337
722
|
label: _angular_core.InputSignal<string | undefined>;
|
|
723
|
+
/** Shows a loading state while options are being fetched. */
|
|
338
724
|
isLoading: _angular_core.InputSignal<boolean>;
|
|
725
|
+
/** Marks that all options have been loaded (used with pagination + search). */
|
|
339
726
|
isAllDataLoaded: _angular_core.InputSignal<boolean>;
|
|
727
|
+
/** Allows creating new entries from the typed search term. */
|
|
340
728
|
allowCustomEntries: _angular_core.InputSignal<boolean>;
|
|
729
|
+
/** Parent form group to resolve the control from `label`. */
|
|
341
730
|
formGroup: _angular_core.InputSignal<FormGroup<any> | undefined>;
|
|
731
|
+
/** Enables the search input inside the dropdown. */
|
|
342
732
|
isSearchable: _angular_core.InputSignal<boolean>;
|
|
733
|
+
/** Number of options loaded per page when pagination is enabled. */
|
|
343
734
|
itemsPerPage: _angular_core.InputSignal<number>;
|
|
735
|
+
/** FormControl bound externally (used instead of `formGroup`/`label`). */
|
|
344
736
|
control: _angular_core.InputSignal<FormControl<any> | undefined>;
|
|
737
|
+
/** Paginates the option list instead of rendering it all at once. */
|
|
345
738
|
usePagination: _angular_core.InputSignal<boolean>;
|
|
739
|
+
/** Disables the whole select. */
|
|
346
740
|
disabled: _angular_core.InputSignal<boolean>;
|
|
741
|
+
/** Custom per-validation-error messages shown under the select. */
|
|
347
742
|
errorMessages: _angular_core.InputSignal<{
|
|
348
743
|
[key: string]: string;
|
|
349
744
|
}>;
|
|
745
|
+
/** Keeps the search term when options reload. */
|
|
350
746
|
preserveSearchOnLoad: _angular_core.InputSignal<boolean>;
|
|
747
|
+
/** Translation key of the "no records" empty message. */
|
|
351
748
|
emptyMessageKey: _angular_core.InputSignal<string>;
|
|
749
|
+
/** Opens the dropdown above the trigger instead of below. */
|
|
352
750
|
dropdownUpward: _angular_core.InputSignal<boolean>;
|
|
751
|
+
/** Shows the "no selection" option in single-select mode. */
|
|
353
752
|
showEmptyOption: _angular_core.InputSignal<boolean>;
|
|
753
|
+
/** Emits when the selection changes (new value or array in multiple mode). */
|
|
354
754
|
selectionChange: _angular_core.OutputEmitterRef<any>;
|
|
755
|
+
/** Emits the debounced search term while typing. */
|
|
355
756
|
search: _angular_core.OutputEmitterRef<string>;
|
|
757
|
+
/** Reference to the filter input inside the dropdown (when searchable). */
|
|
356
758
|
filterInput: _angular_core.Signal<ElementRef<any> | undefined>;
|
|
759
|
+
/** Reference to the select container element. */
|
|
357
760
|
private selectContainer;
|
|
761
|
+
/** Reference to the trigger button. */
|
|
358
762
|
private selectTrigger;
|
|
763
|
+
/** Reference to the dropdown list container. */
|
|
359
764
|
private dropdownContainer;
|
|
765
|
+
/** Underlying selection value (mirrors the reactive control). */
|
|
360
766
|
private _value;
|
|
767
|
+
/** Whether the dropdown is open. */
|
|
361
768
|
isOpen: _angular_core.WritableSignal<boolean>;
|
|
769
|
+
/** Index of the currently focused option for keyboard navigation. */
|
|
362
770
|
focusedIndex: _angular_core.WritableSignal<number>;
|
|
771
|
+
/** Current search term (searchable mode). */
|
|
363
772
|
searchTerm: _angular_core.WritableSignal<string>;
|
|
773
|
+
/** Current page of the paginated dropdown. */
|
|
364
774
|
currentPage: _angular_core.WritableSignal<number>;
|
|
775
|
+
/** Tracks whether the user typed in the search input. */
|
|
365
776
|
private searchTermChanged;
|
|
777
|
+
/** Internal disabled state from the reactive form (setDisabledState). */
|
|
366
778
|
private _isDisabled;
|
|
779
|
+
/** Debounce timer handle for the search output. */
|
|
367
780
|
private debounceTimer;
|
|
781
|
+
/** Error-state counter used to recompute error helpers reactively. */
|
|
368
782
|
private errorTracker;
|
|
783
|
+
/** Whether an error has been shown at some point (for "fixed" messaging). */
|
|
369
784
|
hadError: _angular_core.WritableSignal<boolean>;
|
|
785
|
+
/** Whether control status/value subscriptions have been attached. */
|
|
370
786
|
private subscribed;
|
|
371
787
|
private valueSubscribed;
|
|
788
|
+
/** Current selection value. */
|
|
372
789
|
value: _angular_core.Signal<any>;
|
|
790
|
+
/** True when the select is disabled via input or by the reactive form. */
|
|
373
791
|
isDisabled: _angular_core.Signal<boolean>;
|
|
792
|
+
/** Resolves the form control from `control` or from `formGroup`+`label`. */
|
|
374
793
|
actualControl: _angular_core.Signal<FormControl<any> | undefined>;
|
|
794
|
+
/** Whether the bound control should display its error (invalid + touched/dirty). */
|
|
375
795
|
shouldShowError: _angular_core.Signal<boolean | undefined>;
|
|
796
|
+
/** Whether an error was shown before and the control is now valid + touched. */
|
|
376
797
|
wasFixedError: _angular_core.Signal<boolean | undefined>;
|
|
798
|
+
/** Text shown in the trigger: the selected label(s) or the placeholder. */
|
|
377
799
|
displayValue: _angular_core.Signal<any>;
|
|
800
|
+
/** List of validation error messages for the bound control. */
|
|
378
801
|
getErrorMessages: _angular_core.Signal<string[]>;
|
|
802
|
+
/** Options filtered by the search term (matches first, then contains). */
|
|
379
803
|
filteredOptions: _angular_core.Signal<SelectOption[]>;
|
|
804
|
+
/** Options for the current page, with a synthetic custom entry when allowed. */
|
|
380
805
|
paginatedOptions: _angular_core.Signal<SelectOption[]>;
|
|
806
|
+
/** Non-custom options, including the empty option in single-select mode. */
|
|
381
807
|
regularOptions: _angular_core.Signal<SelectOption[]>;
|
|
808
|
+
/** Total pages of the filtered option list (1 when pagination is off). */
|
|
382
809
|
totalPages: _angular_core.Signal<number>;
|
|
810
|
+
/** Whether there is at least one selected value. */
|
|
383
811
|
hasSelectedValues: _angular_core.Signal<any>;
|
|
812
|
+
/** Whether the custom optional entry should be offered for the current term. */
|
|
384
813
|
showCustomOption: _angular_core.Signal<boolean>;
|
|
385
814
|
private transloco;
|
|
815
|
+
/** ControlValueAccessor onChange callback. */
|
|
386
816
|
private onChange;
|
|
817
|
+
/** ControlValueAccessor onTouched callback. */
|
|
387
818
|
private onTouched;
|
|
388
819
|
private destroyRef;
|
|
389
820
|
constructor(elementRef: ElementRef);
|
|
821
|
+
/** Sets the disabled state coming from the reactive form infrastructure. */
|
|
390
822
|
setDisabledState(isDisabled: boolean): void;
|
|
823
|
+
/** Marks the control as touched and updates validity and error state. */
|
|
391
824
|
private markAsTouchedAndUpdate;
|
|
825
|
+
/** Strips accents and lowercases text for accent-insensitive matching. */
|
|
392
826
|
normalizeText(text: string): string;
|
|
827
|
+
/** Keyboard handler for the trigger element (open/close/navigate/select). */
|
|
393
828
|
onKeydown(event: KeyboardEvent): void;
|
|
829
|
+
/** Keyboard handler for the search input inside a searchable dropdown. */
|
|
394
830
|
handleKeyDown(event: KeyboardEvent): void;
|
|
831
|
+
/** Moves the focused option index by `direction`, skipping disabled ones. */
|
|
395
832
|
private moveFocus;
|
|
833
|
+
/** Index of the currently selected option, or -1. */
|
|
396
834
|
private getSelectedIndex;
|
|
835
|
+
/** Whether an option is disabled based on the valid combinations rule. */
|
|
397
836
|
isOptionDisabled(option: SelectOption): boolean;
|
|
837
|
+
/** Whether an option is currently selected. */
|
|
398
838
|
isSelected(option: SelectOption): boolean;
|
|
839
|
+
/** Goes to the next options page when possible. */
|
|
399
840
|
nextPage(): void;
|
|
841
|
+
/** Goes to the previous options page when possible. */
|
|
400
842
|
previousPage(): void;
|
|
843
|
+
/** Closes the dropdown when a click happens outside the component. */
|
|
401
844
|
onClickOutside(event: MouseEvent): void;
|
|
845
|
+
/** Selects a typed free-text value as a new custom entry. */
|
|
402
846
|
onCustomOptionClick(): void;
|
|
847
|
+
/** Handles typing in the search input (updates term and emits search). */
|
|
403
848
|
onInputChange(event: Event): void;
|
|
849
|
+
/** Selects or toggles the clicked option (custom entries included). */
|
|
404
850
|
onOptionClick(option: SelectOption): void;
|
|
851
|
+
/** Selects a single option and updates the control/outputs. */
|
|
405
852
|
selectOption(option: SelectOption): void;
|
|
853
|
+
/** Toggles an option in multiple mode, honoring the valid combinations. */
|
|
406
854
|
toggleOption(option: SelectOption): void;
|
|
855
|
+
/** Opens/closes the dropdown and manages focus/selection state. */
|
|
407
856
|
toggleDropdown(): void;
|
|
857
|
+
/** trackBy for rendered options so Angular reuses DOM nodes by value. */
|
|
408
858
|
trackByFn(index: number, option: SelectOption): any;
|
|
859
|
+
/** Writes an external value into the internal signal (ControlValueAccessor). */
|
|
409
860
|
writeValue(value: any): void;
|
|
861
|
+
/** Stores the onChange callback (ControlValueAccessor). */
|
|
410
862
|
registerOnChange(fn: any): void;
|
|
863
|
+
/** Stores the onTouched callback (ControlValueAccessor). */
|
|
411
864
|
registerOnTouched(fn: any): void;
|
|
412
865
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectComponent, never>;
|
|
413
866
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectComponent, "shk-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "validCombinations": { "alias": "validCombinations"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "isAllDataLoaded": { "alias": "isAllDataLoaded"; "required": false; "isSignal": true; }; "allowCustomEntries": { "alias": "allowCustomEntries"; "required": false; "isSignal": true; }; "formGroup": { "alias": "formGroup"; "required": false; "isSignal": true; }; "isSearchable": { "alias": "isSearchable"; "required": false; "isSignal": true; }; "itemsPerPage": { "alias": "itemsPerPage"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "usePagination": { "alias": "usePagination"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errorMessages": { "alias": "errorMessages"; "required": false; "isSignal": true; }; "preserveSearchOnLoad": { "alias": "preserveSearchOnLoad"; "required": false; "isSignal": true; }; "emptyMessageKey": { "alias": "emptyMessageKey"; "required": false; "isSignal": true; }; "dropdownUpward": { "alias": "dropdownUpward"; "required": false; "isSignal": true; }; "showEmptyOption": { "alias": "showEmptyOption"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "search": "search"; }, never, never, true, never>;
|
|
@@ -418,45 +871,116 @@ interface FileUploadError {
|
|
|
418
871
|
message: string;
|
|
419
872
|
file: File;
|
|
420
873
|
}
|
|
874
|
+
/**
|
|
875
|
+
* Shirkasoft UI Components.
|
|
876
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
877
|
+
* Belongs to Shirkasoft.
|
|
878
|
+
*/
|
|
879
|
+
/**
|
|
880
|
+
* Drag & drop file uploader with file type/size validation, image previews,
|
|
881
|
+
* multiple files support and localized error messages.
|
|
882
|
+
*/
|
|
421
883
|
declare class FileUploadComponent {
|
|
422
|
-
protected getIcon: (name:
|
|
884
|
+
protected getIcon: (name: any) => any;
|
|
423
885
|
private transloco;
|
|
886
|
+
/** Main label of the uploader. */
|
|
424
887
|
label: _angular_core.InputSignal<string>;
|
|
888
|
+
/** Accepted MIME types/extensions (e.g. 'image/*', '.pdf'). */
|
|
425
889
|
accept: _angular_core.InputSignal<string>;
|
|
890
|
+
/** Maximum allowed size per file (bytes). */
|
|
426
891
|
maxFileSize: _angular_core.InputSignal<number>;
|
|
892
|
+
/** Maximum number of files (0 = unlimited). */
|
|
427
893
|
maxFiles: _angular_core.InputSignal<number>;
|
|
894
|
+
/** Text of the file picker button. */
|
|
428
895
|
fileUploadText: _angular_core.InputSignal<string>;
|
|
896
|
+
/** Helper text shown next to the label. */
|
|
429
897
|
fileRecommendation: _angular_core.InputSignal<string>;
|
|
898
|
+
/** Text shown when files are already loaded. */
|
|
430
899
|
changeFilesText: _angular_core.InputSignal<string>;
|
|
900
|
+
/** Enables selecting more than one file at once. */
|
|
431
901
|
multiple: _angular_core.InputSignal<boolean>;
|
|
902
|
+
/** Emitted with the currently selected files. */
|
|
432
903
|
fileSelected: _angular_core.OutputEmitterRef<File[]>;
|
|
904
|
+
/** Emitted when the last selected file is removed. */
|
|
433
905
|
fileRemoved: _angular_core.OutputEmitterRef<void>;
|
|
906
|
+
/** Emitted when a file fails validation (type/size). */
|
|
434
907
|
fileError: _angular_core.OutputEmitterRef<FileUploadError>;
|
|
908
|
+
/** Emitted when a file is near the size limit. */
|
|
435
909
|
fileWarning: _angular_core.OutputEmitterRef<FileUploadError>;
|
|
910
|
+
/** Currently selected files. */
|
|
436
911
|
selectedFiles: _angular_core.WritableSignal<File[]>;
|
|
912
|
+
/** Localized error message displayed to the user. */
|
|
437
913
|
errorMessage: _angular_core.WritableSignal<string>;
|
|
914
|
+
/** Whether the user is dragging files over the zone. */
|
|
438
915
|
isDragOver: _angular_core.WritableSignal<boolean>;
|
|
916
|
+
/** Object URLs used for image previews. */
|
|
439
917
|
private previewUrls;
|
|
918
|
+
/** Whether another selection is allowed. */
|
|
440
919
|
canAddMore: _angular_core.Signal<boolean>;
|
|
920
|
+
/** True when the maximum number of files has been reached. */
|
|
441
921
|
maxReached: _angular_core.Signal<boolean>;
|
|
922
|
+
/** Whether the file is an image (used for previews). */
|
|
442
923
|
isImageFile(file: File): boolean;
|
|
924
|
+
/** Returns (creating on demand) the object URL for a file preview. */
|
|
443
925
|
previewUrl(file: File): string;
|
|
926
|
+
/** Marks the drop zone as active while dragging over it. */
|
|
444
927
|
onDragOver(event: DragEvent): void;
|
|
928
|
+
/** Clears the drag-over state when the drag leaves the zone. */
|
|
445
929
|
onDragLeave(event: DragEvent): void;
|
|
930
|
+
/** Processes the files dropped on the zone. */
|
|
446
931
|
onDrop(event: DragEvent): void;
|
|
932
|
+
/** Processes the files picked from the native file input. */
|
|
447
933
|
onFileChange(event: Event): void;
|
|
934
|
+
/** Validates and appends the received files, emitting errors/warnings. */
|
|
448
935
|
private processFiles;
|
|
936
|
+
/** Validates a file against `accept` and `maxFileSize`. */
|
|
449
937
|
private validateFile;
|
|
938
|
+
/** Emits a warning when the file is close to the size limit (>90%). */
|
|
450
939
|
private checkSizeWarning;
|
|
940
|
+
/** Removes a file, revoking its preview URL. */
|
|
451
941
|
removeFile(file: File): void;
|
|
942
|
+
/** Clears all selected files and previews. */
|
|
452
943
|
changeFiles(): void;
|
|
944
|
+
/** Revokes every stored preview object URL. */
|
|
453
945
|
private clearPreviews;
|
|
946
|
+
/** Human readable size (B/KB/MB). */
|
|
454
947
|
private formatFileSize;
|
|
455
948
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FileUploadComponent, never>;
|
|
456
949
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FileUploadComponent, "shk-file-upload", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "fileUploadText": { "alias": "fileUploadText"; "required": false; "isSignal": true; }; "fileRecommendation": { "alias": "fileRecommendation"; "required": false; "isSignal": true; }; "changeFilesText": { "alias": "changeFilesText"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; }, { "fileSelected": "fileSelected"; "fileRemoved": "fileRemoved"; "fileError": "fileError"; "fileWarning": "fileWarning"; }, never, never, true, never>;
|
|
457
950
|
}
|
|
458
951
|
|
|
459
|
-
|
|
952
|
+
/**
|
|
953
|
+
* Resolves the icon passed to a component into a lucide component.
|
|
954
|
+
* Accepts a registered string name, an existing lucide component or a LucideIconData object.
|
|
955
|
+
*/
|
|
956
|
+
declare function getIcon(icon?: any, fallback?: any): any;
|
|
957
|
+
|
|
958
|
+
/**
|
|
959
|
+
* Shirkasoft UI Components.
|
|
960
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
961
|
+
* Belongs to Shirkasoft.
|
|
962
|
+
*/
|
|
963
|
+
type TagSeverity = 'secondary' | 'success' | 'info' | 'warning' | 'danger' | 'contrast';
|
|
964
|
+
/** Small label used to highlight a value, status or category. */
|
|
965
|
+
declare class TagComponent {
|
|
966
|
+
/** Text shown inside the tag. */
|
|
967
|
+
value: _angular_core.InputSignal<string | number>;
|
|
968
|
+
/** Color variant. Defaults to 'secondary'. */
|
|
969
|
+
severity: _angular_core.InputSignal<TagSeverity>;
|
|
970
|
+
/** Renders the tag with fully rounded corners (pill). */
|
|
971
|
+
rounded: _angular_core.InputSignal<boolean>;
|
|
972
|
+
/** Optional leading lucide icon name or component. */
|
|
973
|
+
icon: _angular_core.InputSignal<any>;
|
|
974
|
+
/** Inline styles applied to the tag. */
|
|
975
|
+
style: _angular_core.InputSignal<Record<string, string | number>>;
|
|
976
|
+
/** Extra CSS classes. */
|
|
977
|
+
styleClass: _angular_core.InputSignal<string>;
|
|
978
|
+
protected getIcon: typeof getIcon;
|
|
979
|
+
protected tagClass: _angular_core.Signal<string>;
|
|
980
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TagComponent, never>;
|
|
981
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagComponent, "shk-tag", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "severity": { "alias": "severity"; "required": false; "isSignal": true; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "style": { "alias": "style"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
982
|
+
}
|
|
983
|
+
|
|
460
984
|
interface Column {
|
|
461
985
|
field: string;
|
|
462
986
|
header: string;
|
|
@@ -473,14 +997,14 @@ interface Column {
|
|
|
473
997
|
template?: 'text' | 'tag';
|
|
474
998
|
format?: (row: any) => string;
|
|
475
999
|
tagValue?: (row: any) => string;
|
|
476
|
-
tagSeverity?: (row: any) =>
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
1000
|
+
tagSeverity?: (row: any) => TagSeverity | undefined;
|
|
1001
|
+
tagRounded?: boolean | ((row: any) => boolean);
|
|
1002
|
+
tagIcon?: string | ((row: any) => string);
|
|
1003
|
+
tagStyle?: (row: any) => Record<string, string | number> | undefined;
|
|
480
1004
|
}
|
|
481
1005
|
interface TableAction {
|
|
482
1006
|
label: string;
|
|
483
|
-
icon: string;
|
|
1007
|
+
icon: string | any;
|
|
484
1008
|
onClick: () => void;
|
|
485
1009
|
class?: string;
|
|
486
1010
|
isVisible?: () => boolean;
|
|
@@ -488,7 +1012,7 @@ interface TableAction {
|
|
|
488
1012
|
}
|
|
489
1013
|
interface RowAction {
|
|
490
1014
|
label: string | ((data: any) => string);
|
|
491
|
-
icon: string | ((data: any) =>
|
|
1015
|
+
icon: string | ((data: any) => any) | any;
|
|
492
1016
|
onClick: (rowData: any) => void;
|
|
493
1017
|
class?: string | ((data: any) => string);
|
|
494
1018
|
isVisible?: (rowData: any) => boolean;
|
|
@@ -505,164 +1029,292 @@ interface FilterChangeEvent {
|
|
|
505
1029
|
[key: string]: any;
|
|
506
1030
|
};
|
|
507
1031
|
}
|
|
1032
|
+
/**
|
|
1033
|
+
* Shirkasoft UI Components.
|
|
1034
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
1035
|
+
* Belongs to Shirkasoft.
|
|
1036
|
+
*/
|
|
1037
|
+
/**
|
|
1038
|
+
* Data table with sorting, column filters, global search, pagination,
|
|
1039
|
+
* row/header actions, tag cells and optional server-side mode.
|
|
1040
|
+
*/
|
|
508
1041
|
declare class TableComponent {
|
|
509
1042
|
private fb;
|
|
510
1043
|
private cdr;
|
|
511
1044
|
private transloco;
|
|
512
1045
|
private destroyRef;
|
|
513
|
-
|
|
1046
|
+
/** Maps icon names to lucide components, falling back to a plus icon. */
|
|
1047
|
+
protected getIcon: (name: any) => any;
|
|
514
1048
|
/**
|
|
515
|
-
*
|
|
516
|
-
*
|
|
517
|
-
*
|
|
518
|
-
*
|
|
519
|
-
* igual que antes. Ajustable por columna vía `col.width` si alguna
|
|
520
|
-
* necesita más o menos espacio en mobile.
|
|
1049
|
+
* Minimum width applied to each column (except `actions`, which keeps its
|
|
1050
|
+
* own computed width) only on narrow screens. On wide screens columns
|
|
1051
|
+
* stretch normally to fill the container width. Can be overridden per
|
|
1052
|
+
* column via `col.width`.
|
|
521
1053
|
*/
|
|
522
1054
|
protected readonly DEFAULT_COLUMN_WIDTH = "140px";
|
|
1055
|
+
/** Returns the effective CSS width for a column ('actions' included). */
|
|
523
1056
|
getColumnWidth(col: Column): string;
|
|
1057
|
+
/** Signal with the translated "Actions" header label. */
|
|
524
1058
|
private actionsHeaderLabel;
|
|
1059
|
+
/** Signal reacting to language changes so imperative translations are recomputed. */
|
|
525
1060
|
private currentLang;
|
|
1061
|
+
/** Reactive signal of loaded translations so pageReport is not stuck with raw keys. */
|
|
1062
|
+
private translations;
|
|
1063
|
+
/** Full dataset. In server-side mode only the current page rows. */
|
|
526
1064
|
data: _angular_core.InputSignal<any[]>;
|
|
1065
|
+
/** Column definitions (field, header, filterable, tag cell options, etc.). */
|
|
527
1066
|
columns: _angular_core.InputSignal<Column[]>;
|
|
1067
|
+
/** Number of rows displayed per page. */
|
|
528
1068
|
rowsPerPage: _angular_core.InputSignal<number>;
|
|
1069
|
+
/** Options shown in the rows-per-page selector. */
|
|
529
1070
|
rowsPerPageOptions: _angular_core.InputSignal<number[]>;
|
|
1071
|
+
/** Whether the table is in loading state (shows the overlay/skeleton). */
|
|
530
1072
|
loading: _angular_core.InputSignal<boolean>;
|
|
1073
|
+
/** Whether to render the row actions column. */
|
|
531
1074
|
showActionRow: _angular_core.InputSignal<boolean>;
|
|
1075
|
+
/** Custom cell/header templates keyed by column field. */
|
|
532
1076
|
customTemplates: _angular_core.InputSignal<{
|
|
533
1077
|
[key: string]: any;
|
|
534
1078
|
}>;
|
|
1079
|
+
/** Actions rendered in the table header. */
|
|
535
1080
|
headerActions: _angular_core.InputSignal<TableAction[]>;
|
|
1081
|
+
/** Actions rendered per row (icon, label, class, visibility/disabled). */
|
|
536
1082
|
rowActions: _angular_core.InputSignal<RowAction[]>;
|
|
1083
|
+
/** Whether the table container renders a drop shadow. */
|
|
537
1084
|
hasShadow: _angular_core.InputSignal<boolean>;
|
|
1085
|
+
/** Field used as the default initial sort. */
|
|
538
1086
|
defaultSortField: _angular_core.InputSignal<string>;
|
|
1087
|
+
/** Order used by the default initial sort (1 asc, -1 desc). */
|
|
539
1088
|
defaultSortOrder: _angular_core.InputSignal<number>;
|
|
1089
|
+
/** Whether the global search input is shown. */
|
|
540
1090
|
showSearch: _angular_core.InputSignal<boolean>;
|
|
1091
|
+
/** Placeholder for the global search input. */
|
|
541
1092
|
searchPlaceholder: _angular_core.InputSignal<string>;
|
|
1093
|
+
/** Message shown when there are no rows. */
|
|
542
1094
|
emptyMessage: _angular_core.InputSignal<string>;
|
|
1095
|
+
/** Enables server-side pagination/filtering/sorting mode. */
|
|
543
1096
|
serverSide: _angular_core.InputSignal<boolean>;
|
|
1097
|
+
/** Total number of records in server-side mode (for pagination math). */
|
|
544
1098
|
totalRecords: _angular_core.InputSignal<number>;
|
|
1099
|
+
/** Optional prebuilt filter chips (label + value) shown above the table. */
|
|
545
1100
|
filters: _angular_core.InputSignal<{
|
|
546
1101
|
label: string;
|
|
547
1102
|
value: string;
|
|
548
1103
|
}[]>;
|
|
1104
|
+
/** Currently active filter chip value. */
|
|
549
1105
|
activeFilter: _angular_core.InputSignal<string>;
|
|
1106
|
+
/** Emits when the user clicks the refresh button. */
|
|
550
1107
|
refresh: _angular_core.OutputEmitterRef<void>;
|
|
1108
|
+
/** Emits page changes (server-side mode) with first/rows/page info. */
|
|
551
1109
|
pageChange: _angular_core.OutputEmitterRef<PageChangeEvent>;
|
|
1110
|
+
/** Emits the active column filters. */
|
|
552
1111
|
filterChange: _angular_core.OutputEmitterRef<FilterChangeEvent>;
|
|
1112
|
+
/** Emits the debounced global search term. */
|
|
553
1113
|
searchChange: _angular_core.OutputEmitterRef<string>;
|
|
1114
|
+
/** Emits when a filter chip is clicked. */
|
|
554
1115
|
filterClick: _angular_core.OutputEmitterRef<string>;
|
|
1116
|
+
/** Internal copy of the input data used as the base for search/filter. */
|
|
555
1117
|
private originalData;
|
|
1118
|
+
/** Rows after the global search is applied. */
|
|
556
1119
|
searchedData: _angular_core.WritableSignal<any[]>;
|
|
1120
|
+
/** Rows after column filters are applied. */
|
|
557
1121
|
filteredData: _angular_core.WritableSignal<any[]>;
|
|
1122
|
+
/** Rows belonging to the current page (after slicing). */
|
|
558
1123
|
displayedData: _angular_core.WritableSignal<any[]>;
|
|
1124
|
+
/** Local total records after filtering (client mode). */
|
|
559
1125
|
localTotalRecords: _angular_core.WritableSignal<number>;
|
|
1126
|
+
/** Index of the first row of the current page. */
|
|
560
1127
|
first: _angular_core.WritableSignal<number>;
|
|
1128
|
+
/** Visibility map for each column filter input. */
|
|
561
1129
|
showFilterInput: _angular_core.WritableSignal<{
|
|
562
1130
|
[key: string]: boolean;
|
|
563
1131
|
}>;
|
|
1132
|
+
/** Current global search term. */
|
|
564
1133
|
searchQuery: _angular_core.WritableSignal<string>;
|
|
1134
|
+
/** Currently sorted field. */
|
|
565
1135
|
sortField: _angular_core.WritableSignal<string>;
|
|
1136
|
+
/** Current sort direction (1 asc, -1 desc). */
|
|
566
1137
|
sortOrder: _angular_core.WritableSignal<number>;
|
|
1138
|
+
/** Local rows per page, kept in sync with the `rowsPerPage` input. */
|
|
567
1139
|
rowsPerPageLocal: _angular_core.WritableSignal<number>;
|
|
1140
|
+
/** Total number of pages based on the effective record count. */
|
|
568
1141
|
totalPages: _angular_core.Signal<number>;
|
|
1142
|
+
/** Current page number (1-based). */
|
|
569
1143
|
currentPage: _angular_core.Signal<number>;
|
|
1144
|
+
/** Reactive form holding the value of each column filter. */
|
|
570
1145
|
columnFiltersForm: FormGroup;
|
|
1146
|
+
/** Subjects used to debounce column filters (server mode) and search. */
|
|
571
1147
|
private filterSubject;
|
|
572
1148
|
private searchSubject;
|
|
1149
|
+
/**
|
|
1150
|
+
* Signature of the last built set of filterable fields (+filter type) to
|
|
1151
|
+
* avoid rebuilding the form (and losing user input) on reference changes.
|
|
1152
|
+
*/
|
|
573
1153
|
private lastFilterFieldsSignature;
|
|
574
1154
|
private columnFilterSubscriptions;
|
|
1155
|
+
/** Columns array with the leading `actions` column when row actions exist. */
|
|
575
1156
|
columnsWithActions: _angular_core.Signal<Column[]>;
|
|
1157
|
+
/** Total records: server-provided in server mode, locally computed otherwise. */
|
|
576
1158
|
effectiveTotalRecords: _angular_core.Signal<number>;
|
|
1159
|
+
/**
|
|
1160
|
+
* Rows rendered by the template: the input data in server-side mode or the
|
|
1161
|
+
* locally sliced/page current rows otherwise.
|
|
1162
|
+
*/
|
|
577
1163
|
effectiveDisplayedData: _angular_core.Signal<any[]>;
|
|
1164
|
+
/**
|
|
1165
|
+
* Reactive "X to Y of Z" report. Depends on loaded translations and the
|
|
1166
|
+
* active language so it always reflects the translated template.
|
|
1167
|
+
*/
|
|
578
1168
|
pageReport: _angular_core.Signal<string>;
|
|
579
1169
|
constructor();
|
|
580
1170
|
/**
|
|
581
|
-
*
|
|
582
|
-
*
|
|
583
|
-
*
|
|
584
|
-
*
|
|
585
|
-
* "firma" del set de campos+tipo de filtro y solo reconstruimos si
|
|
586
|
-
* realmente cambió. Además, las suscripciones previas se limpian antes de
|
|
587
|
-
* crear las nuevas para no acumular fugas de memoria.
|
|
1171
|
+
* Builds (or keeps) the reactive form with one control per filterable
|
|
1172
|
+
* column. The form is only rebuilt when the set of filterable
|
|
1173
|
+
* fields/filter types changes, preserving the values already typed by the
|
|
1174
|
+
* user otherwise. Previous subscriptions are unsubscribed to avoid leaks.
|
|
588
1175
|
*/
|
|
589
1176
|
private setupColumnFilters;
|
|
1177
|
+
/** Collects the non-empty column filter values and emits them. */
|
|
590
1178
|
private emitFilterChange;
|
|
1179
|
+
/** Applies the global search over the original data (client mode). */
|
|
591
1180
|
private applySearch;
|
|
1181
|
+
/** Entry point that applies search (which cascades into column filters). */
|
|
592
1182
|
private applyFilters;
|
|
1183
|
+
/**
|
|
1184
|
+
* Applies every column filter on top of the searched data using each
|
|
1185
|
+
* column's `filterType` ('select', 'exact' or text contains).
|
|
1186
|
+
*/
|
|
593
1187
|
private applyColumnFilters;
|
|
1188
|
+
/** Slices the filtered rows for the current page. */
|
|
594
1189
|
private updateDisplayedData;
|
|
1190
|
+
/** Emits the filter chip clicked in the template. */
|
|
595
1191
|
onFilterClick(value: string): void;
|
|
1192
|
+
/** Toggles the sort direction of a column (first click sorts ascending). */
|
|
596
1193
|
toggleSort(field: string): void;
|
|
597
1194
|
/**
|
|
598
|
-
*
|
|
599
|
-
*
|
|
600
|
-
* orden (comportamiento común e intencional en tablas de datos). Si en tu
|
|
601
|
-
* caso de uso prefieres que "sigan" la dirección del sort, multiplica
|
|
602
|
-
* ambos returns por `order`.
|
|
1195
|
+
* Sorts the filtered rows by the current field. Rows with null/undefined
|
|
1196
|
+
* values are always kept at the end regardless of sort direction.
|
|
603
1197
|
*/
|
|
604
1198
|
private applySort;
|
|
1199
|
+
/** Handles the global search input (updates query, resets page, debounces server mode). */
|
|
605
1200
|
onSearchInput(value: string): void;
|
|
1201
|
+
/** Clears a column filter value and hides its input. */
|
|
606
1202
|
clearFilter(field: string): void;
|
|
1203
|
+
/** Toggles the visibility of a column filter input. */
|
|
607
1204
|
toggleFilter(field: string): void;
|
|
608
1205
|
/**
|
|
609
|
-
*
|
|
610
|
-
*
|
|
611
|
-
* (número), ya que `0` es falsy en JS. Este helper compara explícitamente
|
|
612
|
-
* contra null/undefined/''.
|
|
1206
|
+
* Whether a column filter is non-empty. Avoids treating the number 0 as
|
|
1207
|
+
* "no value".
|
|
613
1208
|
*/
|
|
614
1209
|
hasFilterValue(field: string): boolean;
|
|
1210
|
+
/** Returns the reactive page report string (template helper). */
|
|
615
1211
|
getPageReport(): string;
|
|
1212
|
+
/** Goes to the first page (emits pageChange in server-side mode). */
|
|
616
1213
|
goToFirst(): void;
|
|
1214
|
+
/** Goes to the last page (emits pageChange in server-side mode). */
|
|
617
1215
|
goToLast(): void;
|
|
1216
|
+
/** Updates rows-per-page and resets to the first page. */
|
|
618
1217
|
onRowsPerPageChange(rows: number): void;
|
|
1218
|
+
/** Emits the refresh output. */
|
|
619
1219
|
refreshData(): void;
|
|
1220
|
+
/** Whether the current page is the first one. */
|
|
620
1221
|
isFirstPage(): boolean;
|
|
1222
|
+
/** Whether the current page is the last one. */
|
|
621
1223
|
isLastPage(): boolean;
|
|
1224
|
+
/** Moves to the next page (emits pageChange in server-side mode). */
|
|
622
1225
|
next(): void;
|
|
1226
|
+
/** Moves to the previous page (emits pageChange in server mode). */
|
|
623
1227
|
prev(): void;
|
|
1228
|
+
/** Resets the table to the first page. */
|
|
624
1229
|
reset(): void;
|
|
1230
|
+
/** Resolves the row action label, static or per-row function. */
|
|
625
1231
|
getRowActionLabel(action: RowAction, rowData: any): string;
|
|
626
|
-
|
|
1232
|
+
/**
|
|
1233
|
+
* Resolves the row action icon: a lucide component, a function returning
|
|
1234
|
+
* the icon name, or a raw string resolved by the central icon map.
|
|
1235
|
+
*/
|
|
1236
|
+
getRowActionIconName(action: RowAction, rowData: any): any;
|
|
1237
|
+
/** Resolves the CSS class of a row action, static or per-row function. */
|
|
627
1238
|
getRowActionClass(action: RowAction, rowData: any): string;
|
|
1239
|
+
/** Whether a header action is disabled. */
|
|
628
1240
|
isHeaderActionDisabled(action: TableAction): boolean;
|
|
1241
|
+
/** Whether a header action is visible. */
|
|
629
1242
|
isHeaderActionVisible(action: TableAction): boolean;
|
|
1243
|
+
/** Whether a row action is disabled for the given row. */
|
|
630
1244
|
isRowActionDisabled(action: RowAction, rowData: any): boolean;
|
|
1245
|
+
/** Whether a row action is visible for the given row. */
|
|
631
1246
|
isRowActionVisible(action: RowAction, rowData: any): boolean;
|
|
1247
|
+
/** Truncates a value with an ellipsis past the given character limit. */
|
|
632
1248
|
truncate(value: any, limit?: number): string;
|
|
633
|
-
|
|
1249
|
+
/** Resolves the value displayed inside a tag cell, static or per-row function. */
|
|
1250
|
+
getTagValue(col: Column, rowData: any): string;
|
|
1251
|
+
/** Resolves and validates the tag severity, falling back to 'secondary'. */
|
|
1252
|
+
getTagSeverity(col: Column, rowData: any): TagSeverity;
|
|
1253
|
+
/** Resolves whether the tag in a cell is rounded, static or per-row function. */
|
|
1254
|
+
getTagRounded(col: Column, rowData: any): boolean;
|
|
1255
|
+
/** Resolves the icon shown inside a tag cell, static or per-row function. */
|
|
1256
|
+
getTagIcon(col: Column, rowData: any): string;
|
|
1257
|
+
/** Resolves the CSS styles of a tag cell, static or per-row function. */
|
|
1258
|
+
getTagStyle(col: Column, rowData: any): Record<string, string | number>;
|
|
634
1259
|
/**
|
|
635
|
-
*
|
|
636
|
-
* Si tu dato no tiene `id`/`_id`, cae de vuelta al índice (comportamiento
|
|
637
|
-
* anterior), pero se recomienda pasar filas con un identificador único.
|
|
1260
|
+
* trackBy for row identity: prefers `id`/`_id` and falls back to the index.
|
|
638
1261
|
*/
|
|
639
1262
|
trackByRow(row: any, index: number): any;
|
|
640
|
-
/**
|
|
1263
|
+
/** Keyboard support (Enter/Space) for sorting a column header. */
|
|
641
1264
|
onHeaderKeydown(event: KeyboardEvent, col: Column): void;
|
|
642
|
-
/**
|
|
1265
|
+
/** Accessible aria-sort value for a given column header. */
|
|
643
1266
|
getAriaSort(col: Column): 'ascending' | 'descending' | 'none';
|
|
644
1267
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableComponent, never>;
|
|
645
1268
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableComponent, "shk-table", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "rowsPerPage": { "alias": "rowsPerPage"; "required": false; "isSignal": true; }; "rowsPerPageOptions": { "alias": "rowsPerPageOptions"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "showActionRow": { "alias": "showActionRow"; "required": false; "isSignal": true; }; "customTemplates": { "alias": "customTemplates"; "required": false; "isSignal": true; }; "headerActions": { "alias": "headerActions"; "required": false; "isSignal": true; }; "rowActions": { "alias": "rowActions"; "required": false; "isSignal": true; }; "hasShadow": { "alias": "hasShadow"; "required": false; "isSignal": true; }; "defaultSortField": { "alias": "defaultSortField"; "required": false; "isSignal": true; }; "defaultSortOrder": { "alias": "defaultSortOrder"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "serverSide": { "alias": "serverSide"; "required": false; "isSignal": true; }; "totalRecords": { "alias": "totalRecords"; "required": false; "isSignal": true; }; "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "activeFilter": { "alias": "activeFilter"; "required": false; "isSignal": true; }; }, { "refresh": "refresh"; "pageChange": "pageChange"; "filterChange": "filterChange"; "searchChange": "searchChange"; "filterClick": "filterClick"; }, never, never, true, never>;
|
|
646
1269
|
}
|
|
647
1270
|
|
|
648
|
-
|
|
1271
|
+
/**
|
|
1272
|
+
* Shirkasoft UI Components.
|
|
1273
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
1274
|
+
* Belongs to Shirkasoft.
|
|
1275
|
+
*/
|
|
1276
|
+
/**
|
|
1277
|
+
* Tooltip rendered in `document.body` with `position: fixed`, so it always
|
|
1278
|
+
* floats above any container (tables with `overflow: hidden`, modals, scroll
|
|
1279
|
+
* wrappers, etc.) and never gets clipped or hidden behind its anchor element.
|
|
1280
|
+
*/
|
|
1281
|
+
declare class TooltipComponent implements OnDestroy {
|
|
1282
|
+
/** Content of the tooltip. */
|
|
649
1283
|
readonly text: _angular_core.InputSignal<string>;
|
|
1284
|
+
/** Preferred placement relative to the trigger. */
|
|
650
1285
|
readonly position: _angular_core.InputSignal<"top" | "bottom" | "right">;
|
|
1286
|
+
/** 'hover' shows on mouse enter; 'fixed' stays pinned to the content. */
|
|
651
1287
|
readonly mode: _angular_core.InputSignal<"fixed" | "hover">;
|
|
1288
|
+
/** Distance (px) between the tooltip and the trigger. */
|
|
652
1289
|
readonly offset: _angular_core.InputSignal<number>;
|
|
653
|
-
private
|
|
654
|
-
|
|
655
|
-
|
|
1290
|
+
private readonly host;
|
|
1291
|
+
private readonly document;
|
|
1292
|
+
/** The dynamically created tooltip element. */
|
|
1293
|
+
private tooltipEl;
|
|
1294
|
+
/** Unsubscribe callbacks for the scroll/resize listeners. */
|
|
1295
|
+
private cleanup;
|
|
1296
|
+
/** Shows the tooltip over the host trigger on mouseenter. */
|
|
656
1297
|
onMouseEnter(): void;
|
|
1298
|
+
/** Hides the tooltip on mouseleave. */
|
|
1299
|
+
onMouseLeave(): void;
|
|
1300
|
+
/** Creates and positions the tooltip element on `document.body`. */
|
|
1301
|
+
private show;
|
|
1302
|
+
/** Computes the tooltip position, clamped to the viewport. */
|
|
1303
|
+
private computePosition;
|
|
1304
|
+
/** Fades the tooltip out and removes it from the DOM. */
|
|
1305
|
+
private hide;
|
|
1306
|
+
/** Removes the tooltip and its listeners. */
|
|
1307
|
+
private removeTooltip;
|
|
1308
|
+
/** Cleans up the tooltip on component destroy. */
|
|
1309
|
+
ngOnDestroy(): void;
|
|
657
1310
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipComponent, never>;
|
|
658
1311
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TooltipComponent, "shk-tooltip", never, { "text": { "alias": "text"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "offset": { "alias": "offset"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
659
1312
|
}
|
|
660
1313
|
|
|
661
|
-
declare function getIcon$4(name?: string): any;
|
|
662
1314
|
interface SidebarItem {
|
|
663
1315
|
id: string;
|
|
664
1316
|
label: string;
|
|
665
|
-
icon?: string;
|
|
1317
|
+
icon?: string | any;
|
|
666
1318
|
route?: string;
|
|
667
1319
|
children?: SidebarItem[];
|
|
668
1320
|
roles?: string[];
|
|
@@ -675,54 +1327,96 @@ interface SidebarGroup {
|
|
|
675
1327
|
label?: string;
|
|
676
1328
|
items: SidebarItem[];
|
|
677
1329
|
}
|
|
1330
|
+
/**
|
|
1331
|
+
* Shirkasoft UI Components.
|
|
1332
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
1333
|
+
* Belongs to Shirkasoft.
|
|
1334
|
+
*/
|
|
1335
|
+
/**
|
|
1336
|
+
* Collapsible vertical navigation sidebar with groups, icons, badges,
|
|
1337
|
+
* role-based filtering, responsive mobile drawer and tooltips.
|
|
1338
|
+
*/
|
|
678
1339
|
declare class SidebarComponent {
|
|
679
1340
|
private platformId;
|
|
1341
|
+
/** Flat list of navigation items (used when no groups are provided). */
|
|
680
1342
|
items: _angular_core.InputSignal<SidebarItem[]>;
|
|
1343
|
+
/** Grouped navigation items; takes precedence over `items`. */
|
|
681
1344
|
groups: _angular_core.InputSignal<SidebarGroup[]>;
|
|
1345
|
+
/** Brand title shown at the top of the sidebar. */
|
|
682
1346
|
title: _angular_core.InputSignal<string>;
|
|
1347
|
+
/** Subtitle under the title. */
|
|
683
1348
|
subtitle: _angular_core.InputSignal<string>;
|
|
1349
|
+
/** Brand logo image/url shown at the top. */
|
|
684
1350
|
logo: _angular_core.InputSignal<string>;
|
|
1351
|
+
/** id of the item currently highlighted as active. */
|
|
685
1352
|
activeItemId: _angular_core.InputSignal<string>;
|
|
1353
|
+
/** Role used to filter items that declare `roles`. */
|
|
686
1354
|
userRole: _angular_core.InputSignal<string>;
|
|
1355
|
+
/** Whether the sidebar can collapse into a rail. */
|
|
687
1356
|
collapsible: _angular_core.InputSignal<boolean>;
|
|
1357
|
+
/** Shows the expand/collapse toggle button. */
|
|
688
1358
|
showToggle: _angular_core.InputSignal<boolean>;
|
|
1359
|
+
/** Enables the mobile drawer behaviour below lg breakpoint. */
|
|
689
1360
|
responsive: _angular_core.InputSignal<boolean>;
|
|
1361
|
+
/** Keeps the sidebar fixed while the page scrolls. */
|
|
690
1362
|
fixed: _angular_core.InputSignal<boolean>;
|
|
1363
|
+
/** Adds a drop shadow to the sidebar. */
|
|
691
1364
|
hasShadow: _angular_core.InputSignal<boolean>;
|
|
1365
|
+
/** Width in expanded state. */
|
|
692
1366
|
expandedWidth: _angular_core.InputSignal<string>;
|
|
1367
|
+
/** Width when collapsed. */
|
|
693
1368
|
collapsedWidth: _angular_core.InputSignal<string>;
|
|
1369
|
+
/** Group ids opened by default on load. */
|
|
694
1370
|
defaultExpanded: _angular_core.InputSignal<string[]>;
|
|
1371
|
+
/** Optional transform applied to item labels (e.g. i18n). */
|
|
695
1372
|
labelPipe: _angular_core.InputSignal<(label: string) => string>;
|
|
1373
|
+
/** Tooltip for the expand action. */
|
|
696
1374
|
expandTooltip: _angular_core.InputSignal<string>;
|
|
1375
|
+
/** Tooltip for the collapse action. */
|
|
697
1376
|
collapseTooltip: _angular_core.InputSignal<string>;
|
|
1377
|
+
/** Collapsed state, bindable with [(collapsed)]. */
|
|
698
1378
|
collapsed: _angular_core.ModelSignal<boolean>;
|
|
1379
|
+
/** Mobile drawer open state, bindable with [(mobileOpen)]. */
|
|
699
1380
|
mobileOpen: _angular_core.ModelSignal<boolean>;
|
|
1381
|
+
/** Emitted when a navigation item is clicked. */
|
|
700
1382
|
itemClick: _angular_core.OutputEmitterRef<SidebarItem>;
|
|
1383
|
+
/** Emitted with the new collapsed state after toggling. */
|
|
701
1384
|
toggle: _angular_core.OutputEmitterRef<boolean>;
|
|
702
|
-
protected getIcon:
|
|
1385
|
+
protected getIcon: (name: any) => any;
|
|
1386
|
+
/** Currently selected item id. */
|
|
703
1387
|
protected selectedId: _angular_core.WritableSignal<string>;
|
|
1388
|
+
/** Set of group ids currently expanded. */
|
|
704
1389
|
protected expandedGroups: _angular_core.WritableSignal<Set<string>>;
|
|
705
1390
|
private isBrowser;
|
|
706
|
-
constructor(
|
|
1391
|
+
constructor();
|
|
1392
|
+
/** Current sidebar width depending on the collapsed state. */
|
|
707
1393
|
protected width: _angular_core.Signal<string>;
|
|
1394
|
+
/** Navigation items after group flattening and role filtering. */
|
|
708
1395
|
protected navItems: _angular_core.Signal<SidebarItem[]>;
|
|
1396
|
+
/** Closes the mobile drawer when the window grows below lg. */
|
|
709
1397
|
onResize(_event: Event): void;
|
|
1398
|
+
/** Applies the `labelPipe` transform to an item label. */
|
|
710
1399
|
protected label(item: SidebarItem): string;
|
|
1400
|
+
/** Whether the item matches the selected id. */
|
|
711
1401
|
protected isItemActive(item: SidebarItem): boolean;
|
|
1402
|
+
/** Whether one of the item's children is currently active. */
|
|
712
1403
|
protected isGroupActive(item: SidebarItem): boolean;
|
|
1404
|
+
/** Whether a group is expanded. */
|
|
713
1405
|
protected isGroupExpanded(item: SidebarItem): boolean;
|
|
1406
|
+
/** Toggles the expanded state of a group. */
|
|
714
1407
|
protected toggleGroup(item: SidebarItem): void;
|
|
1408
|
+
/** Selects an item, emits `itemClick` and closes the mobile drawer when needed. */
|
|
715
1409
|
protected onItemClick(item: SidebarItem): void;
|
|
1410
|
+
/** Toggles collapse (desktop) or the mobile drawer (below lg). */
|
|
716
1411
|
protected onToggle(): void;
|
|
717
1412
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SidebarComponent, never>;
|
|
718
1413
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SidebarComponent, "shk-sidebar", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "groups": { "alias": "groups"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "logo": { "alias": "logo"; "required": false; "isSignal": true; }; "activeItemId": { "alias": "activeItemId"; "required": false; "isSignal": true; }; "userRole": { "alias": "userRole"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "showToggle": { "alias": "showToggle"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "fixed": { "alias": "fixed"; "required": false; "isSignal": true; }; "hasShadow": { "alias": "hasShadow"; "required": false; "isSignal": true; }; "expandedWidth": { "alias": "expandedWidth"; "required": false; "isSignal": true; }; "collapsedWidth": { "alias": "collapsedWidth"; "required": false; "isSignal": true; }; "defaultExpanded": { "alias": "defaultExpanded"; "required": false; "isSignal": true; }; "labelPipe": { "alias": "labelPipe"; "required": false; "isSignal": true; }; "expandTooltip": { "alias": "expandTooltip"; "required": false; "isSignal": true; }; "collapseTooltip": { "alias": "collapseTooltip"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "mobileOpen": { "alias": "mobileOpen"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; "mobileOpen": "mobileOpenChange"; "itemClick": "itemClick"; "toggle": "toggle"; }, never, ["[sidebarHeader]", "[sidebarContent]", "[sidebarFooter]"], true, never>;
|
|
719
1414
|
}
|
|
720
1415
|
|
|
721
|
-
declare function getIcon$3(name?: string): any;
|
|
722
1416
|
interface RailSidebarItem {
|
|
723
1417
|
id: string;
|
|
724
1418
|
label: string;
|
|
725
|
-
icon?: string;
|
|
1419
|
+
icon?: string | any;
|
|
726
1420
|
routerLink?: string;
|
|
727
1421
|
children?: RailSidebarItem[];
|
|
728
1422
|
roles?: string[];
|
|
@@ -733,7 +1427,7 @@ interface RailSidebarItem {
|
|
|
733
1427
|
interface RailSidebarSection {
|
|
734
1428
|
key: string;
|
|
735
1429
|
label: string;
|
|
736
|
-
icon?: string;
|
|
1430
|
+
icon?: string | any;
|
|
737
1431
|
routerLink?: string;
|
|
738
1432
|
matchPrefixes?: string[];
|
|
739
1433
|
items?: RailSidebarItem[];
|
|
@@ -742,85 +1436,169 @@ interface RailSidebarSectionEvent {
|
|
|
742
1436
|
key: string;
|
|
743
1437
|
routerLink?: string;
|
|
744
1438
|
}
|
|
1439
|
+
/**
|
|
1440
|
+
* Shirkasoft UI Components.
|
|
1441
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
1442
|
+
* Belongs to Shirkasoft.
|
|
1443
|
+
*/
|
|
1444
|
+
/**
|
|
1445
|
+
* Narrow "rail" sidebar that expands into sections. Supports sections, roles,
|
|
1446
|
+
* language switching, collapse/expand and responsive tooltips.
|
|
1447
|
+
*/
|
|
745
1448
|
declare class RailSidebarComponent {
|
|
1449
|
+
/** Sections presented as expandable areas of the rail. */
|
|
746
1450
|
sections: _angular_core.InputSignal<RailSidebarSection[]>;
|
|
1451
|
+
/** Current location url used to detect the active section/item. */
|
|
747
1452
|
activeUrl: _angular_core.InputSignal<string>;
|
|
1453
|
+
/** Key of the active section, bindable with [(activeSectionKey)]. */
|
|
748
1454
|
activeSectionKey: _angular_core.ModelSignal<string>;
|
|
1455
|
+
/** Collapsed (rail only) state, bindable with [(collapsed)]. */
|
|
749
1456
|
collapsed: _angular_core.ModelSignal<boolean>;
|
|
1457
|
+
/** Active language code. */
|
|
750
1458
|
activeLang: _angular_core.InputSignal<string>;
|
|
1459
|
+
/** Languages available in the language switcher. */
|
|
751
1460
|
langs: _angular_core.InputSignal<string[]>;
|
|
1461
|
+
/** Brand logo image/url. */
|
|
752
1462
|
logo: _angular_core.InputSignal<string>;
|
|
1463
|
+
/** Application name shown when expanded. */
|
|
753
1464
|
appName: _angular_core.InputSignal<string>;
|
|
1465
|
+
/** Role used to filter items that declare `roles`. */
|
|
754
1466
|
userRole: _angular_core.InputSignal<string>;
|
|
1467
|
+
/** Optional transform applied to item labels (e.g. i18n). */
|
|
755
1468
|
labelPipe: _angular_core.InputSignal<(label: string) => string>;
|
|
1469
|
+
/** Width of the collapsed rail. */
|
|
756
1470
|
railWidth: _angular_core.InputSignal<string>;
|
|
1471
|
+
/** Width when a section is expanded. */
|
|
757
1472
|
expandedWidth: _angular_core.InputSignal<string>;
|
|
1473
|
+
/** Tooltip for the workspace/home action. */
|
|
758
1474
|
workspaceTooltip: _angular_core.InputSignal<string>;
|
|
1475
|
+
/** Tooltip for the logout action. */
|
|
759
1476
|
logoutTooltip: _angular_core.InputSignal<string>;
|
|
1477
|
+
/** Tooltip for collapsing the sidebar. */
|
|
760
1478
|
collapseTooltip: _angular_core.InputSignal<string>;
|
|
1479
|
+
/** Tooltip for expanding the sidebar. */
|
|
761
1480
|
expandTooltip: _angular_core.InputSignal<string>;
|
|
1481
|
+
/** Emitted when a section is selected, with its key and optional route. */
|
|
762
1482
|
sectionSelected: _angular_core.OutputEmitterRef<RailSidebarSectionEvent>;
|
|
1483
|
+
/** Emitted when a navigation item is clicked. */
|
|
763
1484
|
itemClick: _angular_core.OutputEmitterRef<RailSidebarItem>;
|
|
1485
|
+
/** Emitted with the next language code when the user switches language. */
|
|
764
1486
|
setLang: _angular_core.OutputEmitterRef<string>;
|
|
1487
|
+
/** Emitted when the user requests to log out. */
|
|
765
1488
|
logoutRequested: _angular_core.OutputEmitterRef<void>;
|
|
1489
|
+
/** Emitted with the new collapsed state after toggling. */
|
|
766
1490
|
toggleSidebar: _angular_core.OutputEmitterRef<boolean>;
|
|
1491
|
+
/** Emitted when the workspace/home entry is clicked. */
|
|
767
1492
|
workspaceClick: _angular_core.OutputEmitterRef<void>;
|
|
768
|
-
protected getIcon:
|
|
1493
|
+
protected getIcon: (name: any) => any;
|
|
1494
|
+
/** Set of group ids currently expanded. */
|
|
769
1495
|
protected expandedGroups: _angular_core.WritableSignal<Set<string>>;
|
|
770
1496
|
constructor();
|
|
1497
|
+
/** Current sidebar width depending on the collapsed state. */
|
|
771
1498
|
protected width: _angular_core.Signal<string>;
|
|
1499
|
+
/** The section currently selected. */
|
|
772
1500
|
protected activeSection: _angular_core.Signal<RailSidebarSection | null>;
|
|
1501
|
+
/** Items of the active section, filtered by role. */
|
|
773
1502
|
protected navItems: _angular_core.Signal<RailSidebarItem[]>;
|
|
1503
|
+
/** Applies the `labelPipe` transform to a label. */
|
|
774
1504
|
protected label(label: string): string;
|
|
1505
|
+
/** Whether the section matches the active key. */
|
|
775
1506
|
protected isSectionActive(section: RailSidebarSection): boolean;
|
|
1507
|
+
/** Whether the item is the best route match for the active url. */
|
|
776
1508
|
protected isItemActive(item: RailSidebarItem): boolean;
|
|
1509
|
+
/** Whether one of the item's children matches the active url. */
|
|
777
1510
|
protected isGroupActive(item: RailSidebarItem): boolean;
|
|
1511
|
+
/** Exact or prefix match between a router link and the active url. */
|
|
778
1512
|
private matchesUrl;
|
|
1513
|
+
/** Longest (most specific) item whose route matches the active url. */
|
|
779
1514
|
private bestMatchItem;
|
|
1515
|
+
/** Whether a group is expanded. */
|
|
780
1516
|
protected isGroupExpanded(item: RailSidebarItem): boolean;
|
|
1517
|
+
/** Toggles the expanded state of a group. */
|
|
781
1518
|
protected toggleGroup(item: RailSidebarItem): void;
|
|
1519
|
+
/** Selects a section, emits `sectionSelected` and expands the rail when collapsed. */
|
|
782
1520
|
protected onSectionClick(section: RailSidebarSection): void;
|
|
1521
|
+
/** Emits `itemClick` for a navigation item (skipping disabled items). */
|
|
783
1522
|
protected onItemClick(item: RailSidebarItem): void;
|
|
1523
|
+
/** Emits `workspaceClick` and expands the sidebar if it was collapsed. */
|
|
784
1524
|
protected onWorkspace(): void;
|
|
1525
|
+
/** Cycles to the next language and emits `setLang`. */
|
|
785
1526
|
protected onToggleLang(): void;
|
|
1527
|
+
/** Toggles collapse and emits `toggleSidebar`. */
|
|
786
1528
|
protected onToggleSidebar(): void;
|
|
787
1529
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RailSidebarComponent, never>;
|
|
788
1530
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RailSidebarComponent, "shk-rail-sidebar", never, { "sections": { "alias": "sections"; "required": false; "isSignal": true; }; "activeUrl": { "alias": "activeUrl"; "required": false; "isSignal": true; }; "activeSectionKey": { "alias": "activeSectionKey"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "activeLang": { "alias": "activeLang"; "required": false; "isSignal": true; }; "langs": { "alias": "langs"; "required": false; "isSignal": true; }; "logo": { "alias": "logo"; "required": false; "isSignal": true; }; "appName": { "alias": "appName"; "required": false; "isSignal": true; }; "userRole": { "alias": "userRole"; "required": false; "isSignal": true; }; "labelPipe": { "alias": "labelPipe"; "required": false; "isSignal": true; }; "railWidth": { "alias": "railWidth"; "required": false; "isSignal": true; }; "expandedWidth": { "alias": "expandedWidth"; "required": false; "isSignal": true; }; "workspaceTooltip": { "alias": "workspaceTooltip"; "required": false; "isSignal": true; }; "logoutTooltip": { "alias": "logoutTooltip"; "required": false; "isSignal": true; }; "collapseTooltip": { "alias": "collapseTooltip"; "required": false; "isSignal": true; }; "expandTooltip": { "alias": "expandTooltip"; "required": false; "isSignal": true; }; }, { "activeSectionKey": "activeSectionKeyChange"; "collapsed": "collapsedChange"; "sectionSelected": "sectionSelected"; "itemClick": "itemClick"; "setLang": "setLang"; "logoutRequested": "logoutRequested"; "toggleSidebar": "toggleSidebar"; "workspaceClick": "workspaceClick"; }, never, never, true, never>;
|
|
789
1531
|
}
|
|
790
1532
|
|
|
1533
|
+
/**
|
|
1534
|
+
* Shirkasoft UI Components.
|
|
1535
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
1536
|
+
* Belongs to Shirkasoft.
|
|
1537
|
+
*/
|
|
1538
|
+
/**
|
|
1539
|
+
* Chart.js wrapper that renders line, bar, pie, doughnut or polarArea charts
|
|
1540
|
+
* and updates them reactively as the inputs change.
|
|
1541
|
+
*/
|
|
791
1542
|
declare class ChartComponent implements AfterViewInit, OnDestroy {
|
|
1543
|
+
/** Guarantees Chart.js plugins are only registered once. */
|
|
792
1544
|
private static registered;
|
|
1545
|
+
/** Type of chart to render. */
|
|
793
1546
|
type: _angular_core.InputSignal<"line" | "bar" | "pie" | "doughnut" | "polarArea">;
|
|
1547
|
+
/** Chart.js datasets payload. */
|
|
794
1548
|
data: _angular_core.InputSignal<any>;
|
|
1549
|
+
/** Chart.js options object. */
|
|
795
1550
|
options: _angular_core.InputSignal<any>;
|
|
1551
|
+
/** Reference to the inner canvas element. */
|
|
796
1552
|
private canvasRef;
|
|
1553
|
+
/** Live Chart.js instance. */
|
|
797
1554
|
private chartInstance;
|
|
1555
|
+
/** Whether the view has been initialized yet. */
|
|
798
1556
|
private initialized;
|
|
799
1557
|
constructor();
|
|
1558
|
+
/** Creates the initial chart once the canvas is available. */
|
|
800
1559
|
ngAfterViewInit(): void;
|
|
1560
|
+
/** Destroys the Chart.js instance. */
|
|
801
1561
|
ngOnDestroy(): void;
|
|
1562
|
+
/** Clears the canvas by reassigning its width. */
|
|
802
1563
|
private resetCanvas;
|
|
1564
|
+
/** Creates a new Chart.js instance on the canvas. */
|
|
803
1565
|
private initChart;
|
|
1566
|
+
/** Deep clones a value to detach it from Angular's reactive objects. */
|
|
804
1567
|
private deepClone;
|
|
1568
|
+
/** Applies the new data/options, rebuilding the chart when the type changes. */
|
|
805
1569
|
private updateChart;
|
|
806
1570
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartComponent, never>;
|
|
807
1571
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChartComponent, "shk-chart", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
808
1572
|
}
|
|
809
1573
|
|
|
1574
|
+
/**
|
|
1575
|
+
* Shirkasoft UI Components.
|
|
1576
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
1577
|
+
* Belongs to Shirkasoft.
|
|
1578
|
+
*/
|
|
1579
|
+
/** Default dataset colors used by the ChartComponent when no palette is provided. */
|
|
810
1580
|
declare const COLOR_PALETTE: {
|
|
811
1581
|
bg: string;
|
|
812
1582
|
border: string;
|
|
813
1583
|
}[];
|
|
1584
|
+
/**
|
|
1585
|
+
* Reads the current `--shk-*` CSS variables from the document and returns
|
|
1586
|
+
* the text, muted and border colors used by charts to follow the active theme.
|
|
1587
|
+
*/
|
|
814
1588
|
declare function readThemeColors(): {
|
|
815
1589
|
text: string;
|
|
816
1590
|
muted: string;
|
|
817
1591
|
border: string;
|
|
818
1592
|
};
|
|
819
1593
|
|
|
820
|
-
|
|
1594
|
+
/**
|
|
1595
|
+
* Shirkasoft UI Components.
|
|
1596
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
1597
|
+
* Belongs to Shirkasoft.
|
|
1598
|
+
*/
|
|
821
1599
|
/** A chip shown under a sub item (time, pricing model, quantity, etc). */
|
|
822
1600
|
interface TimelineMeta {
|
|
823
|
-
icon: string;
|
|
1601
|
+
icon: string | any;
|
|
824
1602
|
label?: string;
|
|
825
1603
|
value: string;
|
|
826
1604
|
}
|
|
@@ -831,8 +1609,8 @@ interface TimelineSubItem {
|
|
|
831
1609
|
subtitle?: string;
|
|
832
1610
|
/** Used to look up icon / color in `iconMap` and `iconColors`. */
|
|
833
1611
|
type?: string;
|
|
834
|
-
/** Overrides the resolved icon name. */
|
|
835
|
-
icon?: string;
|
|
1612
|
+
/** Overrides the resolved icon (name or component). */
|
|
1613
|
+
icon?: string | any;
|
|
836
1614
|
/** Hex background for the icon box (fallback). */
|
|
837
1615
|
color?: string;
|
|
838
1616
|
/** Hex text color for the icon (fallback). */
|
|
@@ -854,7 +1632,7 @@ interface TimelineItem {
|
|
|
854
1632
|
description?: string;
|
|
855
1633
|
/** Small pill shown above the title (e.g. "Día 1"). */
|
|
856
1634
|
badge?: string | number;
|
|
857
|
-
badgeIcon?: string;
|
|
1635
|
+
badgeIcon?: string | any;
|
|
858
1636
|
/** CSS classes for the marker (falls back to the cycled gradient palette). */
|
|
859
1637
|
color?: string;
|
|
860
1638
|
subItems?: TimelineSubItem[];
|
|
@@ -862,7 +1640,7 @@ interface TimelineItem {
|
|
|
862
1640
|
/** A button rendered in the header. */
|
|
863
1641
|
interface TimelineAction {
|
|
864
1642
|
label: string;
|
|
865
|
-
icon: string;
|
|
1643
|
+
icon: string | any;
|
|
866
1644
|
onClick: () => void;
|
|
867
1645
|
class?: string;
|
|
868
1646
|
isVisible?: () => boolean;
|
|
@@ -871,7 +1649,7 @@ interface TimelineAction {
|
|
|
871
1649
|
/** An action rendered in the item card footer. */
|
|
872
1650
|
interface TimelineItemAction {
|
|
873
1651
|
label: string | ((item: TimelineItem) => string);
|
|
874
|
-
icon: string | ((item: TimelineItem) => string);
|
|
1652
|
+
icon: string | any | ((item: TimelineItem) => string | any);
|
|
875
1653
|
onClick: (item: TimelineItem) => void;
|
|
876
1654
|
class?: string | ((item: TimelineItem) => string);
|
|
877
1655
|
isVisible?: (item: TimelineItem) => boolean;
|
|
@@ -880,7 +1658,7 @@ interface TimelineItemAction {
|
|
|
880
1658
|
/** An action rendered on hover over a sub item. */
|
|
881
1659
|
interface TimelineSubItemAction {
|
|
882
1660
|
label: string | ((item: TimelineItem, subItem: TimelineSubItem) => string);
|
|
883
|
-
icon: string | ((item: TimelineItem, subItem: TimelineSubItem) => string);
|
|
1661
|
+
icon: string | any | ((item: TimelineItem, subItem: TimelineSubItem) => string | any);
|
|
884
1662
|
onClick: (item: TimelineItem, subItem: TimelineSubItem) => void;
|
|
885
1663
|
isVisible?: (item: TimelineItem, subItem: TimelineSubItem) => boolean;
|
|
886
1664
|
isDisabled?: (item: TimelineItem, subItem: TimelineSubItem) => boolean;
|
|
@@ -893,10 +1671,10 @@ declare const DEFAULT_SUPPLIER_ICON_COLORS: Record<string, {
|
|
|
893
1671
|
bg: string;
|
|
894
1672
|
text: string;
|
|
895
1673
|
}>;
|
|
896
|
-
/** Maps a sub-item `type` to a lucide icon
|
|
897
|
-
declare const DEFAULT_SUPPLIER_TYPE_ICONS: Record<string,
|
|
1674
|
+
/** Maps a sub-item `type` to a lucide icon component. */
|
|
1675
|
+
declare const DEFAULT_SUPPLIER_TYPE_ICONS: Record<string, any>;
|
|
898
1676
|
declare class TimelineComponent {
|
|
899
|
-
protected getIcon:
|
|
1677
|
+
protected getIcon: (name: any) => any;
|
|
900
1678
|
/** Timeline data. */
|
|
901
1679
|
items: _angular_core.InputSignal<TimelineItem[]>;
|
|
902
1680
|
/** 'left' = line and markers on the left; 'alternate' = cards alternate around a centered line on lg+. */
|
|
@@ -932,9 +1710,9 @@ declare class TimelineComponent {
|
|
|
932
1710
|
addSubItemTooltip: _angular_core.InputSignal<string>;
|
|
933
1711
|
itemActions: _angular_core.InputSignal<TimelineItemAction[]>;
|
|
934
1712
|
subItemActions: _angular_core.InputSignal<TimelineSubItemAction[]>;
|
|
935
|
-
/** Maps a sub-item `type` to a lucide icon name. */
|
|
1713
|
+
/** Maps a sub-item `type` to a lucide icon (name or component). */
|
|
936
1714
|
iconMap: _angular_core.InputSignal<{
|
|
937
|
-
[type: string]:
|
|
1715
|
+
[type: string]: any;
|
|
938
1716
|
}>;
|
|
939
1717
|
/** Maps a sub-item `type` to its icon-box colors. */
|
|
940
1718
|
iconColors: _angular_core.InputSignal<{
|
|
@@ -944,10 +1722,10 @@ declare class TimelineComponent {
|
|
|
944
1722
|
};
|
|
945
1723
|
}>;
|
|
946
1724
|
/** Icon used when nothing matches. */
|
|
947
|
-
fallbackIcon: _angular_core.InputSignal<
|
|
1725
|
+
fallbackIcon: _angular_core.InputSignal<any>;
|
|
948
1726
|
showEmptyState: _angular_core.InputSignal<boolean>;
|
|
949
1727
|
emptyMessage: _angular_core.InputSignal<string>;
|
|
950
|
-
emptyIcon: _angular_core.InputSignal<
|
|
1728
|
+
emptyIcon: _angular_core.InputSignal<any>;
|
|
951
1729
|
editTooltip: _angular_core.InputSignal<string>;
|
|
952
1730
|
deleteTooltip: _angular_core.InputSignal<string>;
|
|
953
1731
|
optionalLabel: _angular_core.InputSignal<string>;
|
|
@@ -975,30 +1753,38 @@ declare class TimelineComponent {
|
|
|
975
1753
|
isHeaderActionVisible(action: TimelineAction): boolean;
|
|
976
1754
|
isHeaderActionDisabled(action: TimelineAction): boolean;
|
|
977
1755
|
getItemActionLabel(action: TimelineItemAction, item: TimelineItem): string;
|
|
978
|
-
getItemActionIconName(action: TimelineItemAction, item: TimelineItem):
|
|
1756
|
+
getItemActionIconName(action: TimelineItemAction, item: TimelineItem): any;
|
|
979
1757
|
getItemActionClass(action: TimelineItemAction, item: TimelineItem): string;
|
|
980
1758
|
isItemActionVisible(action: TimelineItemAction, item: TimelineItem): boolean;
|
|
981
1759
|
isItemActionDisabled(action: TimelineItemAction, item: TimelineItem): boolean;
|
|
982
1760
|
getSubItemActionLabel(action: TimelineSubItemAction, item: TimelineItem, sub: TimelineSubItem): string;
|
|
983
|
-
getSubItemActionIconName(action: TimelineSubItemAction, item: TimelineItem, sub: TimelineSubItem):
|
|
1761
|
+
getSubItemActionIconName(action: TimelineSubItemAction, item: TimelineItem, sub: TimelineSubItem): any;
|
|
984
1762
|
isSubItemActionVisible(action: TimelineSubItemAction, item: TimelineItem, sub: TimelineSubItem): boolean;
|
|
985
1763
|
isSubItemActionDisabled(action: TimelineSubItemAction, item: TimelineItem, sub: TimelineSubItem): boolean;
|
|
986
1764
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TimelineComponent, never>;
|
|
987
1765
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TimelineComponent, "shk-timeline", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "alignment": { "alias": "alignment"; "required": false; "isSignal": true; }; "showLine": { "alias": "showLine"; "required": false; "isSignal": true; }; "markerSize": { "alias": "markerSize"; "required": false; "isSignal": true; }; "markerGradients": { "alias": "markerGradients"; "required": false; "isSignal": true; }; "showOpposite": { "alias": "showOpposite"; "required": false; "isSignal": true; }; "showDescription": { "alias": "showDescription"; "required": false; "isSignal": true; }; "showSubItemMeta": { "alias": "showSubItemMeta"; "required": false; "isSignal": true; }; "showSubItemPrice": { "alias": "showSubItemPrice"; "required": false; "isSignal": true; }; "showSubItemCount": { "alias": "showSubItemCount"; "required": false; "isSignal": true; }; "subItemCountLabel": { "alias": "subItemCountLabel"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "headerTitle": { "alias": "headerTitle"; "required": false; "isSignal": true; }; "showAddItem": { "alias": "showAddItem"; "required": false; "isSignal": true; }; "addItemLabel": { "alias": "addItemLabel"; "required": false; "isSignal": true; }; "addItemIcon": { "alias": "addItemIcon"; "required": false; "isSignal": true; }; "addItemTooltip": { "alias": "addItemTooltip"; "required": false; "isSignal": true; }; "headerActions": { "alias": "headerActions"; "required": false; "isSignal": true; }; "showAddSubItem": { "alias": "showAddSubItem"; "required": false; "isSignal": true; }; "addSubItemLabel": { "alias": "addSubItemLabel"; "required": false; "isSignal": true; }; "addSubItemTooltip": { "alias": "addSubItemTooltip"; "required": false; "isSignal": true; }; "itemActions": { "alias": "itemActions"; "required": false; "isSignal": true; }; "subItemActions": { "alias": "subItemActions"; "required": false; "isSignal": true; }; "iconMap": { "alias": "iconMap"; "required": false; "isSignal": true; }; "iconColors": { "alias": "iconColors"; "required": false; "isSignal": true; }; "fallbackIcon": { "alias": "fallbackIcon"; "required": false; "isSignal": true; }; "showEmptyState": { "alias": "showEmptyState"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "emptyIcon": { "alias": "emptyIcon"; "required": false; "isSignal": true; }; "editTooltip": { "alias": "editTooltip"; "required": false; "isSignal": true; }; "deleteTooltip": { "alias": "deleteTooltip"; "required": false; "isSignal": true; }; "optionalLabel": { "alias": "optionalLabel"; "required": false; "isSignal": true; }; "noSubItemsMessage": { "alias": "noSubItemsMessage"; "required": false; "isSignal": true; }; "customTemplates": { "alias": "customTemplates"; "required": false; "isSignal": true; }; }, { "addItem": "addItem"; "addSubItem": "addSubItem"; "itemClick": "itemClick"; "subItemClick": "subItemClick"; }, never, never, true, never>;
|
|
988
1766
|
}
|
|
989
1767
|
|
|
990
|
-
declare function getIcon$1(name: string): any;
|
|
991
1768
|
/** An action button rendered on the right side of the fieldset header. */
|
|
992
1769
|
interface FieldsetHeaderAction {
|
|
993
1770
|
label: string;
|
|
994
|
-
icon: string;
|
|
1771
|
+
icon: string | any;
|
|
995
1772
|
onClick: () => void;
|
|
996
1773
|
class?: string;
|
|
997
1774
|
isVisible?: () => boolean;
|
|
998
1775
|
isDisabled?: () => boolean;
|
|
999
1776
|
}
|
|
1777
|
+
/**
|
|
1778
|
+
* Shirkasoft UI Components.
|
|
1779
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
1780
|
+
* Belongs to Shirkasoft.
|
|
1781
|
+
*/
|
|
1782
|
+
/**
|
|
1783
|
+
* Collapsible content group with a legend header, optional leading icon,
|
|
1784
|
+
* badge and action buttons on the right side.
|
|
1785
|
+
*/
|
|
1000
1786
|
declare class FieldsetComponent {
|
|
1001
|
-
protected getIcon:
|
|
1787
|
+
protected getIcon: (name: any) => any;
|
|
1002
1788
|
/** Title shown in the header. */
|
|
1003
1789
|
legend: _angular_core.InputSignal<string>;
|
|
1004
1790
|
/** Collapsed state (default: collapsed). Two-way bindable with [(collapsed)]. */
|
|
@@ -1008,7 +1794,7 @@ declare class FieldsetComponent {
|
|
|
1008
1794
|
/** Shows the expand/collapse icon button. */
|
|
1009
1795
|
showToggleIcon: _angular_core.InputSignal<boolean>;
|
|
1010
1796
|
/** Optional leading icon shown next to the legend. */
|
|
1011
|
-
icon: _angular_core.InputSignal<
|
|
1797
|
+
icon: _angular_core.InputSignal<any>;
|
|
1012
1798
|
/** Optional badge/count shown after the legend. */
|
|
1013
1799
|
badge: _angular_core.InputSignal<string | number>;
|
|
1014
1800
|
/** CSS classes for the badge (override). */
|
|
@@ -1023,22 +1809,30 @@ declare class FieldsetComponent {
|
|
|
1023
1809
|
customTemplates: _angular_core.InputSignal<{
|
|
1024
1810
|
[key: string]: any;
|
|
1025
1811
|
}>;
|
|
1812
|
+
/** CSS classes for the extra shadow styling of the panel. */
|
|
1026
1813
|
hasShadow: _angular_core.InputSignal<boolean>;
|
|
1814
|
+
/** Accessible label for the expand action. */
|
|
1027
1815
|
expandLabel: _angular_core.InputSignal<string>;
|
|
1816
|
+
/** Accessible label for the collapse action. */
|
|
1028
1817
|
collapseLabel: _angular_core.InputSignal<string>;
|
|
1029
1818
|
/** Emits the new expanded state when toggled. */
|
|
1030
1819
|
toggle: _angular_core.OutputEmitterRef<boolean>;
|
|
1820
|
+
/** Emitted when the fieldset is expanded. */
|
|
1031
1821
|
expand: _angular_core.OutputEmitterRef<void>;
|
|
1822
|
+
/** Emitted when the fieldset is collapsed. */
|
|
1032
1823
|
collapse: _angular_core.OutputEmitterRef<void>;
|
|
1824
|
+
/** Stable id linking the header button and the content region. */
|
|
1033
1825
|
contentId: string;
|
|
1826
|
+
/** Toggles the collapsed state and emits the new state (unless not toggleable). */
|
|
1034
1827
|
onToggle(): void;
|
|
1828
|
+
/** Whether a header action can be rendered. */
|
|
1035
1829
|
isHeaderActionVisible(action: FieldsetHeaderAction): boolean;
|
|
1830
|
+
/** Whether a header action should be disabled. */
|
|
1036
1831
|
isHeaderActionDisabled(action: FieldsetHeaderAction): boolean;
|
|
1037
1832
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FieldsetComponent, never>;
|
|
1038
1833
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FieldsetComponent, "shk-fieldset", never, { "legend": { "alias": "legend"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "toggleable": { "alias": "toggleable"; "required": false; "isSignal": true; }; "showToggleIcon": { "alias": "showToggleIcon"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "badgeClass": { "alias": "badgeClass"; "required": false; "isSignal": true; }; "collapsedIcon": { "alias": "collapsedIcon"; "required": false; "isSignal": true; }; "expandedIcon": { "alias": "expandedIcon"; "required": false; "isSignal": true; }; "headerActions": { "alias": "headerActions"; "required": false; "isSignal": true; }; "customTemplates": { "alias": "customTemplates"; "required": false; "isSignal": true; }; "hasShadow": { "alias": "hasShadow"; "required": false; "isSignal": true; }; "expandLabel": { "alias": "expandLabel"; "required": false; "isSignal": true; }; "collapseLabel": { "alias": "collapseLabel"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; "toggle": "toggle"; "expand": "expand"; "collapse": "collapse"; }, never, ["*"], true, never>;
|
|
1039
1834
|
}
|
|
1040
1835
|
|
|
1041
|
-
declare function getIcon(name: string): any;
|
|
1042
1836
|
/** A step of the wizard shown in the stepper. */
|
|
1043
1837
|
interface WizardStep {
|
|
1044
1838
|
id: string | number;
|
|
@@ -1058,8 +1852,17 @@ declare class ShkWizardStepContent {
|
|
|
1058
1852
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShkWizardStepContent, never>;
|
|
1059
1853
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ShkWizardStepContent, "ng-template[shkWizardStepContent]", never, { "stepId": { "alias": "shkWizardStepContent"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1060
1854
|
}
|
|
1855
|
+
/**
|
|
1856
|
+
* Shirkasoft UI Components.
|
|
1857
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
1858
|
+
* Belongs to Shirkasoft.
|
|
1859
|
+
*/
|
|
1860
|
+
/**
|
|
1861
|
+
* Multi-step wizard with a progress stepper, header, footer actions and
|
|
1862
|
+
* content templates declared with `shkWizardStepContent`.
|
|
1863
|
+
*/
|
|
1061
1864
|
declare class WizardComponent {
|
|
1062
|
-
protected getIcon:
|
|
1865
|
+
protected getIcon: (name: any) => any;
|
|
1063
1866
|
/** Steps definition shown in the stepper and used to resolve step content. */
|
|
1064
1867
|
steps: _angular_core.InputSignal<WizardStep[]>;
|
|
1065
1868
|
/** Active step id. Two-way bindable with [(currentStep)]. Null resolves to the first step. */
|
|
@@ -1126,5 +1929,406 @@ declare class WizardComponent {
|
|
|
1126
1929
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WizardComponent, "shk-wizard", never, { "steps": { "alias": "steps"; "required": false; "isSignal": true; }; "currentStep": { "alias": "currentStep"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "headerTitle": { "alias": "headerTitle"; "required": false; "isSignal": true; }; "headerSubtitle": { "alias": "headerSubtitle"; "required": false; "isSignal": true; }; "showBackButton": { "alias": "showBackButton"; "required": false; "isSignal": true; }; "backTooltip": { "alias": "backTooltip"; "required": false; "isSignal": true; }; "headerIcon": { "alias": "headerIcon"; "required": false; "isSignal": true; }; "showStepper": { "alias": "showStepper"; "required": false; "isSignal": true; }; "stepperClickable": { "alias": "stepperClickable"; "required": false; "isSignal": true; }; "showFooter": { "alias": "showFooter"; "required": false; "isSignal": true; }; "showStepCounter": { "alias": "showStepCounter"; "required": false; "isSignal": true; }; "stepCounterPrefix": { "alias": "stepCounterPrefix"; "required": false; "isSignal": true; }; "showCancel": { "alias": "showCancel"; "required": false; "isSignal": true; }; "advanceOnNext": { "alias": "advanceOnNext"; "required": false; "isSignal": true; }; "prevLabel": { "alias": "prevLabel"; "required": false; "isSignal": true; }; "prevIcon": { "alias": "prevIcon"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; "cancelIcon": { "alias": "cancelIcon"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "nextIcon": { "alias": "nextIcon"; "required": false; "isSignal": true; }; "finishLabel": { "alias": "finishLabel"; "required": false; "isSignal": true; }; "finishIcon": { "alias": "finishIcon"; "required": false; "isSignal": true; }; "primaryLabel": { "alias": "primaryLabel"; "required": false; "isSignal": true; }; "primaryIcon": { "alias": "primaryIcon"; "required": false; "isSignal": true; }; "primaryLoading": { "alias": "primaryLoading"; "required": false; "isSignal": true; }; "primaryDisabled": { "alias": "primaryDisabled"; "required": false; "isSignal": true; }; }, { "currentStep": "currentStepChange"; "back": "back"; "cancel": "cancel"; "prev": "prev"; "next": "next"; "finish": "finish"; "stepChange": "stepChange"; }, ["stepContents"], ["[shkWizardHeaderActions]"], true, never>;
|
|
1127
1930
|
}
|
|
1128
1931
|
|
|
1129
|
-
|
|
1130
|
-
|
|
1932
|
+
type SkeletonShape = 'rectangle' | 'circle';
|
|
1933
|
+
type SkeletonAnimation = 'wave' | 'pulse' | 'none';
|
|
1934
|
+
/**
|
|
1935
|
+
* Shirkasoft UI Components.
|
|
1936
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
1937
|
+
* Belongs to Shirkasoft.
|
|
1938
|
+
*/
|
|
1939
|
+
/** Placeholder block shown while content is loading. */
|
|
1940
|
+
declare class SkeletonComponent {
|
|
1941
|
+
/** Shape of the skeleton: rectangle (default) or circle. */
|
|
1942
|
+
shape: _angular_core.InputSignal<SkeletonShape>;
|
|
1943
|
+
/** When shape is circle, sets both width and height. */
|
|
1944
|
+
size: _angular_core.InputSignal<string>;
|
|
1945
|
+
/** Width of the rectangle skeleton. */
|
|
1946
|
+
width: _angular_core.InputSignal<string>;
|
|
1947
|
+
/** Height of the rectangle skeleton. */
|
|
1948
|
+
height: _angular_core.InputSignal<string>;
|
|
1949
|
+
/** Custom border radius (rectangle only). */
|
|
1950
|
+
borderRadius: _angular_core.InputSignal<string>;
|
|
1951
|
+
/** Animation effect: 'wave' (default), 'pulse' or 'none'. */
|
|
1952
|
+
animation: _angular_core.InputSignal<SkeletonAnimation>;
|
|
1953
|
+
/** Inline styles applied to the skeleton block. */
|
|
1954
|
+
style: _angular_core.InputSignal<Record<string, string | number>>;
|
|
1955
|
+
/** Extra CSS classes. */
|
|
1956
|
+
styleClass: _angular_core.InputSignal<string>;
|
|
1957
|
+
protected rootStyle: _angular_core.Signal<{
|
|
1958
|
+
[x: string]: string | number;
|
|
1959
|
+
}>;
|
|
1960
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkeletonComponent, never>;
|
|
1961
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkeletonComponent, "shk-skeleton", never, { "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "borderRadius": { "alias": "borderRadius"; "required": false; "isSignal": true; }; "animation": { "alias": "animation"; "required": false; "isSignal": true; }; "style": { "alias": "style"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1962
|
+
}
|
|
1963
|
+
|
|
1964
|
+
type ButtonSeverity = 'primary' | 'secondary' | 'success' | 'info' | 'warning' | 'danger' | 'help' | 'contrast';
|
|
1965
|
+
type ButtonSize = 'small' | 'large';
|
|
1966
|
+
type ButtonIconPosition = 'left' | 'right' | 'top' | 'bottom';
|
|
1967
|
+
/**
|
|
1968
|
+
* Shirkasoft UI Components.
|
|
1969
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
1970
|
+
* Belongs to Shirkasoft.
|
|
1971
|
+
*/
|
|
1972
|
+
/** Generic button with icon, severity variants, loading state and sizes. */
|
|
1973
|
+
declare class ButtonComponent {
|
|
1974
|
+
/** Text shown inside the button. */
|
|
1975
|
+
label: _angular_core.InputSignal<string>;
|
|
1976
|
+
/** Optional leading lucide icon name or component. */
|
|
1977
|
+
icon: _angular_core.InputSignal<any>;
|
|
1978
|
+
/** Position of the icon relative to the label. */
|
|
1979
|
+
iconPos: _angular_core.InputSignal<ButtonIconPosition>;
|
|
1980
|
+
/** Color variant. Defaults to 'primary'. */
|
|
1981
|
+
severity: _angular_core.InputSignal<ButtonSeverity>;
|
|
1982
|
+
/** Transparent background with a colored border. */
|
|
1983
|
+
outlined: _angular_core.InputSignal<boolean>;
|
|
1984
|
+
/** Borderless button with a colored label. */
|
|
1985
|
+
text: _angular_core.InputSignal<boolean>;
|
|
1986
|
+
/** Adds a soft shadow. */
|
|
1987
|
+
raised: _angular_core.InputSignal<boolean>;
|
|
1988
|
+
/** Fully rounded corners (pill). */
|
|
1989
|
+
rounded: _angular_core.InputSignal<boolean>;
|
|
1990
|
+
/** Size variant. */
|
|
1991
|
+
size: _angular_core.InputSignal<ButtonSize | undefined>;
|
|
1992
|
+
/** Disables the button. */
|
|
1993
|
+
disabled: _angular_core.InputSignal<boolean>;
|
|
1994
|
+
/** Shows a spinner and disables the button. */
|
|
1995
|
+
loading: _angular_core.InputSignal<boolean>;
|
|
1996
|
+
/** Icon shown while loading. Defaults to 'refresh'. */
|
|
1997
|
+
loadingIcon: _angular_core.InputSignal<string>;
|
|
1998
|
+
/** Optional text shown instead of the label while loading. */
|
|
1999
|
+
loadingText: _angular_core.InputSignal<string>;
|
|
2000
|
+
/** Native button type. */
|
|
2001
|
+
type: _angular_core.InputSignal<"submit" | "button" | "reset">;
|
|
2002
|
+
/** Accessible label when the button is icon-only. */
|
|
2003
|
+
ariaLabel: _angular_core.InputSignal<string>;
|
|
2004
|
+
/** Native title tooltip. */
|
|
2005
|
+
title: _angular_core.InputSignal<string>;
|
|
2006
|
+
/** Inline styles applied to the button. */
|
|
2007
|
+
style: _angular_core.InputSignal<Record<string, string | number>>;
|
|
2008
|
+
/** Extra CSS classes. */
|
|
2009
|
+
styleClass: _angular_core.InputSignal<string>;
|
|
2010
|
+
/** Emitted on click with the original MouseEvent. */
|
|
2011
|
+
onClick: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
2012
|
+
protected getIcon: typeof getIcon;
|
|
2013
|
+
protected iconOnly: _angular_core.Signal<boolean>;
|
|
2014
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ButtonComponent, never>;
|
|
2015
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ButtonComponent, "shk-button", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconPos": { "alias": "iconPos"; "required": false; "isSignal": true; }; "severity": { "alias": "severity"; "required": false; "isSignal": true; }; "outlined": { "alias": "outlined"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "raised": { "alias": "raised"; "required": false; "isSignal": true; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingIcon": { "alias": "loadingIcon"; "required": false; "isSignal": true; }; "loadingText": { "alias": "loadingText"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "style": { "alias": "style"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; }, { "onClick": "onClick"; }, never, ["*"], true, never>;
|
|
2016
|
+
}
|
|
2017
|
+
|
|
2018
|
+
/**
|
|
2019
|
+
* Shirkasoft UI Components.
|
|
2020
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
2021
|
+
* Belongs to Shirkasoft.
|
|
2022
|
+
*/
|
|
2023
|
+
/** SVG radial knob with drag and keyboard support. Implements ControlValueAccessor. */
|
|
2024
|
+
declare class KnobComponent implements ControlValueAccessor {
|
|
2025
|
+
/** Current value. Two-way bindable with [(value)]. */
|
|
2026
|
+
value: _angular_core.ModelSignal<number>;
|
|
2027
|
+
/** Minimum value. */
|
|
2028
|
+
min: _angular_core.InputSignal<number>;
|
|
2029
|
+
/** Maximum value. */
|
|
2030
|
+
max: _angular_core.InputSignal<number>;
|
|
2031
|
+
/** Increment used by arrows and pointer drag rounding. */
|
|
2032
|
+
step: _angular_core.InputSignal<number>;
|
|
2033
|
+
/** Diameter of the knob in px. */
|
|
2034
|
+
size: _angular_core.InputSignal<number>;
|
|
2035
|
+
/** Thickness of the arc stroke. */
|
|
2036
|
+
strokeWidth: _angular_core.InputSignal<number>;
|
|
2037
|
+
/** Color of the filled arc. */
|
|
2038
|
+
valueColor: _angular_core.InputSignal<string>;
|
|
2039
|
+
/** Color of the track arc. */
|
|
2040
|
+
rangeColor: _angular_core.InputSignal<string>;
|
|
2041
|
+
/** Whether the current value is shown in the center. */
|
|
2042
|
+
showValue: _angular_core.InputSignal<boolean>;
|
|
2043
|
+
/** Disables user interaction. */
|
|
2044
|
+
disabled: _angular_core.InputSignal<boolean>;
|
|
2045
|
+
/** Blocks editing but keeps the control styled as enabled. */
|
|
2046
|
+
readonly: _angular_core.InputSignal<boolean>;
|
|
2047
|
+
/** Accessible label. */
|
|
2048
|
+
ariaLabel: _angular_core.InputSignal<string>;
|
|
2049
|
+
/** Emitted when the knob value changes. */
|
|
2050
|
+
change: _angular_core.OutputEmitterRef<number>;
|
|
2051
|
+
/** Emitted when the user releases the pointer. */
|
|
2052
|
+
end: _angular_core.OutputEmitterRef<number>;
|
|
2053
|
+
protected knobSvg: _angular_core.Signal<ElementRef<SVGElement> | undefined>;
|
|
2054
|
+
private onChange;
|
|
2055
|
+
private onTouched;
|
|
2056
|
+
private dragging;
|
|
2057
|
+
private formDisabled;
|
|
2058
|
+
/** Effective disabled state combining the `disabled` input and the form binding. */
|
|
2059
|
+
protected effectiveDisabled: _angular_core.Signal<boolean>;
|
|
2060
|
+
protected r: _angular_core.Signal<number>;
|
|
2061
|
+
protected center: _angular_core.Signal<number>;
|
|
2062
|
+
protected fraction: _angular_core.Signal<number>;
|
|
2063
|
+
protected rangeArc: _angular_core.Signal<string>;
|
|
2064
|
+
protected valueArc: _angular_core.Signal<string>;
|
|
2065
|
+
writeValue(value: any): void;
|
|
2066
|
+
registerOnChange(fn: any): void;
|
|
2067
|
+
registerOnTouched(fn: any): void;
|
|
2068
|
+
setDisabledState(isDisabled: boolean): void;
|
|
2069
|
+
onPointerDown(event: PointerEvent): void;
|
|
2070
|
+
onPointerMove(event: PointerEvent): void;
|
|
2071
|
+
onPointerUp(event: PointerEvent): void;
|
|
2072
|
+
updateByKey(step: number): void;
|
|
2073
|
+
private applyEvent;
|
|
2074
|
+
private setValue;
|
|
2075
|
+
private clamp;
|
|
2076
|
+
private getArcPath;
|
|
2077
|
+
private anglePoint;
|
|
2078
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KnobComponent, never>;
|
|
2079
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KnobComponent, "shk-knob", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "valueColor": { "alias": "valueColor"; "required": false; "isSignal": true; }; "rangeColor": { "alias": "rangeColor"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "change": "change"; "end": "end"; }, never, never, true, never>;
|
|
2080
|
+
}
|
|
2081
|
+
|
|
2082
|
+
/**
|
|
2083
|
+
* Shirkasoft UI Components.
|
|
2084
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
2085
|
+
* Belongs to Shirkasoft.
|
|
2086
|
+
*/
|
|
2087
|
+
/** Circular indeterminate spinner. */
|
|
2088
|
+
declare class LoadingSpinnerComponent {
|
|
2089
|
+
/** Diameter of the spinner. */
|
|
2090
|
+
size: _angular_core.InputSignal<string>;
|
|
2091
|
+
/** Border thickness in px. */
|
|
2092
|
+
thickness: _angular_core.InputSignal<number>;
|
|
2093
|
+
/** Color of the moving arc. Defaults to the primary token. */
|
|
2094
|
+
color: _angular_core.InputSignal<string>;
|
|
2095
|
+
/** Optional text shown under the spinner. */
|
|
2096
|
+
label: _angular_core.InputSignal<string>;
|
|
2097
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoadingSpinnerComponent, never>;
|
|
2098
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoadingSpinnerComponent, "shk-loading-spinner", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "thickness": { "alias": "thickness"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
2099
|
+
}
|
|
2100
|
+
|
|
2101
|
+
/**
|
|
2102
|
+
* Shirkasoft UI Components.
|
|
2103
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
2104
|
+
* Belongs to Shirkasoft.
|
|
2105
|
+
*/
|
|
2106
|
+
/** Progress bar with an indeterminate sweep or a determinate percentage. */
|
|
2107
|
+
declare class LoadingBarComponent {
|
|
2108
|
+
/** Height of the bar. */
|
|
2109
|
+
height: _angular_core.InputSignal<string>;
|
|
2110
|
+
/** When true the bar animates without a known percentage. */
|
|
2111
|
+
indeterminate: _angular_core.InputSignal<boolean>;
|
|
2112
|
+
/** Current progress 0-100 when `indeterminate` is false. */
|
|
2113
|
+
progress: _angular_core.InputSignal<number>;
|
|
2114
|
+
/** Fill color. Defaults to the primary token. */
|
|
2115
|
+
color: _angular_core.InputSignal<string>;
|
|
2116
|
+
/** Renders fully rounded ends. */
|
|
2117
|
+
rounded: _angular_core.InputSignal<boolean>;
|
|
2118
|
+
/** Fill width/style for the determinate mode, empty for indeterminate. */
|
|
2119
|
+
protected fillStyle: _angular_core.Signal<{
|
|
2120
|
+
width?: undefined;
|
|
2121
|
+
} | {
|
|
2122
|
+
width: string;
|
|
2123
|
+
}>;
|
|
2124
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoadingBarComponent, never>;
|
|
2125
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoadingBarComponent, "shk-loading-bar", never, { "height": { "alias": "height"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "progress": { "alias": "progress"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
2126
|
+
}
|
|
2127
|
+
|
|
2128
|
+
/** Backdrop style behind the overlay: none, light or dark. */
|
|
2129
|
+
type LoadingOverlayBackdrop = 'transparent' | 'light' | 'dark';
|
|
2130
|
+
/**
|
|
2131
|
+
* Shirkasoft UI Components.
|
|
2132
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
2133
|
+
* Belongs to Shirkasoft.
|
|
2134
|
+
*/
|
|
2135
|
+
/** Wraps content and shows a centered spinner over it while `visible` is true. */
|
|
2136
|
+
declare class LoadingOverlayComponent {
|
|
2137
|
+
/** Controls whether the spinner layer is shown. */
|
|
2138
|
+
visible: _angular_core.InputSignal<boolean>;
|
|
2139
|
+
/** Optional text under the spinner. */
|
|
2140
|
+
message: _angular_core.InputSignal<string>;
|
|
2141
|
+
/** Diameter of the spinner. */
|
|
2142
|
+
spinnerSize: _angular_core.InputSignal<string>;
|
|
2143
|
+
/** Spinner color. Defaults to the primary token. */
|
|
2144
|
+
color: _angular_core.InputSignal<string>;
|
|
2145
|
+
/** Backdrop behind the spinner. */
|
|
2146
|
+
backdrop: _angular_core.InputSignal<LoadingOverlayBackdrop>;
|
|
2147
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoadingOverlayComponent, never>;
|
|
2148
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoadingOverlayComponent, "shk-loading-overlay", never, { "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "spinnerSize": { "alias": "spinnerSize"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "backdrop": { "alias": "backdrop"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
2149
|
+
}
|
|
2150
|
+
|
|
2151
|
+
/**
|
|
2152
|
+
* Shirkasoft UI Components.
|
|
2153
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
2154
|
+
* Belongs to Shirkasoft.
|
|
2155
|
+
*/
|
|
2156
|
+
/** Bouncing dots loading indicator. */
|
|
2157
|
+
declare class LoadingDotsComponent {
|
|
2158
|
+
/** Diameter of each dot. */
|
|
2159
|
+
size: _angular_core.InputSignal<string>;
|
|
2160
|
+
/** Dot color. Defaults to the primary token. */
|
|
2161
|
+
color: _angular_core.InputSignal<string>;
|
|
2162
|
+
/** Number of dots. */
|
|
2163
|
+
count: _angular_core.InputSignal<number>;
|
|
2164
|
+
/** Optional text shown next to the dots. */
|
|
2165
|
+
label: _angular_core.InputSignal<string>;
|
|
2166
|
+
/** Array of dot indices to render based on the `count` input. */
|
|
2167
|
+
protected dots: _angular_core.Signal<unknown[]>;
|
|
2168
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoadingDotsComponent, never>;
|
|
2169
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoadingDotsComponent, "shk-loading-dots", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "count": { "alias": "count"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
2170
|
+
}
|
|
2171
|
+
|
|
2172
|
+
/**
|
|
2173
|
+
* Shirkasoft UI Components.
|
|
2174
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
2175
|
+
* Belongs to Shirkasoft.
|
|
2176
|
+
*/
|
|
2177
|
+
/** Shared state between shk-abs and its tab/tabpanel children. */
|
|
2178
|
+
declare class TabsService {
|
|
2179
|
+
/** Currently active tab value. */
|
|
2180
|
+
readonly active: _angular_core.WritableSignal<any>;
|
|
2181
|
+
/** Sets the active tab to the given value. */
|
|
2182
|
+
select(value: any): void;
|
|
2183
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabsService, never>;
|
|
2184
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<TabsService>;
|
|
2185
|
+
}
|
|
2186
|
+
|
|
2187
|
+
/**
|
|
2188
|
+
* Shirkasoft UI Components.
|
|
2189
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
2190
|
+
* Belongs to Shirkasoft.
|
|
2191
|
+
*/
|
|
2192
|
+
/** Container for tab panels. Renders its projected shk-tablist/shh-tab content. */
|
|
2193
|
+
declare class TabsComponent {
|
|
2194
|
+
/** Currently active tab value. Two-way bindable with [(value)]. */
|
|
2195
|
+
value: _angular_core.ModelSignal<any>;
|
|
2196
|
+
/** Allows the tab header to scroll horizontally when it overflows. */
|
|
2197
|
+
scrollable: _angular_core.InputSignal<boolean>;
|
|
2198
|
+
/** Shared service used to sync the active tab with the children. */
|
|
2199
|
+
protected tabsSvc: TabsService;
|
|
2200
|
+
constructor();
|
|
2201
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabsComponent, never>;
|
|
2202
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabsComponent, "shk-tabs", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "scrollable": { "alias": "scrollable"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, ["*"], true, never>;
|
|
2203
|
+
}
|
|
2204
|
+
|
|
2205
|
+
/**
|
|
2206
|
+
* Shirkasoft UI Components.
|
|
2207
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
2208
|
+
* Belongs to Shirkasoft.
|
|
2209
|
+
*/
|
|
2210
|
+
/** Horizontal bar that contains the shk-tab headers. */
|
|
2211
|
+
declare class TablistComponent {
|
|
2212
|
+
/** Allows the header to scroll horizontally when it overflows. */
|
|
2213
|
+
scrollable: _angular_core.InputSignal<boolean>;
|
|
2214
|
+
/** Extra CSS classes. */
|
|
2215
|
+
styleClass: _angular_core.InputSignal<string>;
|
|
2216
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TablistComponent, never>;
|
|
2217
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TablistComponent, "shk-tablist", never, { "scrollable": { "alias": "scrollable"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
2218
|
+
}
|
|
2219
|
+
|
|
2220
|
+
/**
|
|
2221
|
+
* Shirkasoft UI Components.
|
|
2222
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
2223
|
+
* Belongs to Shirkasoft.
|
|
2224
|
+
*/
|
|
2225
|
+
/** A single tab header. Clicking it activates the matching panel. */
|
|
2226
|
+
declare class TabComponent {
|
|
2227
|
+
/** Value that links this tab to its panel. */
|
|
2228
|
+
value: _angular_core.InputSignal<any>;
|
|
2229
|
+
/** Disables the tab. */
|
|
2230
|
+
disabled: _angular_core.InputSignal<boolean>;
|
|
2231
|
+
/** Extra CSS classes. */
|
|
2232
|
+
styleClass: _angular_core.InputSignal<string>;
|
|
2233
|
+
/** Shared service used to read the active tab value. */
|
|
2234
|
+
protected tabsSvc: TabsService;
|
|
2235
|
+
/** Whether this tab is the active one. */
|
|
2236
|
+
protected active: _angular_core.Signal<boolean>;
|
|
2237
|
+
/** Activates this tab through the shared service. */
|
|
2238
|
+
select(): void;
|
|
2239
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabComponent, never>;
|
|
2240
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabComponent, "shk-tab", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
2241
|
+
}
|
|
2242
|
+
|
|
2243
|
+
/**
|
|
2244
|
+
* Shirkasoft UI Components.
|
|
2245
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
2246
|
+
* Belongs to Shirkasoft.
|
|
2247
|
+
*/
|
|
2248
|
+
/** Container that groups the shk-tabpanel content sections. */
|
|
2249
|
+
declare class TabpanelsComponent {
|
|
2250
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabpanelsComponent, never>;
|
|
2251
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabpanelsComponent, "shk-tabpanels", never, {}, {}, never, ["*"], true, never>;
|
|
2252
|
+
}
|
|
2253
|
+
|
|
2254
|
+
/**
|
|
2255
|
+
* Shirkasoft UI Components.
|
|
2256
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
2257
|
+
* Belongs to Shirkasoft.
|
|
2258
|
+
*/
|
|
2259
|
+
/** Content section shown only while its value is the active tab. */
|
|
2260
|
+
declare class TabPanelComponent {
|
|
2261
|
+
/** Value that links this panel to its tab. */
|
|
2262
|
+
value: _angular_core.InputSignal<any>;
|
|
2263
|
+
/** Shared service used to read the active tab value. */
|
|
2264
|
+
protected tabsSvc: TabsService;
|
|
2265
|
+
/** Whether this panel is the active one. */
|
|
2266
|
+
protected active: _angular_core.Signal<boolean>;
|
|
2267
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabPanelComponent, never>;
|
|
2268
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabPanelComponent, "shk-tabpanel", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
2269
|
+
}
|
|
2270
|
+
|
|
2271
|
+
/**
|
|
2272
|
+
* Shirkasoft UI Components.
|
|
2273
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
2274
|
+
* Belongs to Shirkasoft.
|
|
2275
|
+
*/
|
|
2276
|
+
/** A single breadcrumb entry with an optional navigation route. */
|
|
2277
|
+
interface BreadcrumbItem {
|
|
2278
|
+
label: string;
|
|
2279
|
+
route?: string;
|
|
2280
|
+
}
|
|
2281
|
+
/**
|
|
2282
|
+
* Global breadcrumb state. Components and pages write the current trail via
|
|
2283
|
+
* `set()` and observatories read it through `breadcrumbs$`.
|
|
2284
|
+
*/
|
|
2285
|
+
declare class BreadcrumbService {
|
|
2286
|
+
/** Internal buffer holding the current breadcrumb trail. */
|
|
2287
|
+
private breadcrumbsSubject;
|
|
2288
|
+
/** Observable emitted with the latest breadcrumb trail. */
|
|
2289
|
+
breadcrumbs$: Observable<BreadcrumbItem[]>;
|
|
2290
|
+
/** Replaces the whole breadcrumb trail. */
|
|
2291
|
+
set(items: BreadcrumbItem[]): void;
|
|
2292
|
+
/** Empties the breadcrumb trail. */
|
|
2293
|
+
clear(): void;
|
|
2294
|
+
/** Returns the breadcrumb trail currently held (snapshot). */
|
|
2295
|
+
getCurrent(): BreadcrumbItem[];
|
|
2296
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BreadcrumbService, never>;
|
|
2297
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<BreadcrumbService>;
|
|
2298
|
+
}
|
|
2299
|
+
|
|
2300
|
+
type BreadcrumbSeparator = 'chevron' | 'slash' | 'arrow';
|
|
2301
|
+
/**
|
|
2302
|
+
* Shirkasoft UI Components.
|
|
2303
|
+
* Authors: Roberto Valladares Martin (Ansem13), Julio César García García (Sanjuli14).
|
|
2304
|
+
* Belongs to Shirkasoft.
|
|
2305
|
+
*/
|
|
2306
|
+
/**
|
|
2307
|
+
* Navigation breadcrumb showing the current page hierarchy. Can be fed with
|
|
2308
|
+
* static items or driven by the shared BreadcrumbService.
|
|
2309
|
+
*/
|
|
2310
|
+
declare class BreadcrumbComponent implements OnInit, OnDestroy {
|
|
2311
|
+
private readonly breadcrumbService;
|
|
2312
|
+
/** Static list of breadcrumb items. Takes precedence over the service items. */
|
|
2313
|
+
items: _angular_core.InputSignal<BreadcrumbItem[]>;
|
|
2314
|
+
/** Visual separator between items: 'chevron', 'slash' or 'arrow'. */
|
|
2315
|
+
separator: _angular_core.InputSignal<BreadcrumbSeparator>;
|
|
2316
|
+
/** When true, subscribes to the BreadcrumbService to resolve items. */
|
|
2317
|
+
useService: _angular_core.InputSignal<boolean>;
|
|
2318
|
+
/** Items received from the BreadcrumbService. */
|
|
2319
|
+
protected serviceItems: _angular_core.WritableSignal<BreadcrumbItem[]>;
|
|
2320
|
+
/** Final items: static `items` if provided, otherwise the service items. */
|
|
2321
|
+
protected resolvedItems: _angular_core.Signal<BreadcrumbItem[]>;
|
|
2322
|
+
/** Active subscription to the breadcrumb stream. */
|
|
2323
|
+
private serviceSub;
|
|
2324
|
+
constructor();
|
|
2325
|
+
/** Subscribes to the BreadcrumbService when `useService` is enabled. */
|
|
2326
|
+
ngOnInit(): void;
|
|
2327
|
+
/** Unsubscribes from the breadcrumb stream to avoid leaks. */
|
|
2328
|
+
ngOnDestroy(): void;
|
|
2329
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BreadcrumbComponent, never>;
|
|
2330
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<BreadcrumbComponent, "shk-breadcrumb", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "separator": { "alias": "separator"; "required": false; "isSignal": true; }; "useService": { "alias": "useService"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
2331
|
+
}
|
|
2332
|
+
|
|
2333
|
+
export { BreadcrumbComponent, BreadcrumbService, ButtonComponent, COLOR_PALETTE, ChartComponent, ConfirmDialogComponent, ConfirmDialogService, DEFAULT_MARKER_GRADIENTS, DEFAULT_SUPPLIER_ICON_COLORS, DEFAULT_SUPPLIER_TYPE_ICONS, DatePickerComponent, FieldsetComponent, FileUploadComponent, KnobComponent, LoadingBarComponent, LoadingDotsComponent, LoadingOverlayComponent, LoadingSpinnerComponent, ModalComponent, ModalService, NotificationComponent, NotificationService, PriceInputComponent, RailSidebarComponent, SelectComponent, ShkWizardStepContent, SidebarComponent, SkeletonComponent, TabComponent, TabPanelComponent, TableComponent, TablistComponent, TabpanelsComponent, TabsComponent, TagComponent, TextFieldComponent, TimelineComponent, ToggleComponent, TooltipComponent, WizardComponent, readThemeColors };
|
|
2334
|
+
export type { BreadcrumbItem, BreadcrumbSeparator, ButtonIconPosition, ButtonSeverity, ButtonSize, Column, ConfirmConfig, DatePickerView, FieldsetHeaderAction, FileUploadError, FilterChangeEvent, LoadingOverlayBackdrop, ModalConfig, Notification, NotificationPosition, PageChangeEvent, RailSidebarItem, RailSidebarSection, RailSidebarSectionEvent, RowAction, SelectOption, SidebarGroup, SidebarItem, SkeletonAnimation, SkeletonShape, TableAction, TagSeverity, TimelineAction, TimelineAlignment, TimelineItem, TimelineItemAction, TimelineMarkerSize, TimelineMeta, TimelineSubItem, TimelineSubItemAction, WizardStep };
|