cats-ui-lib 2.0.15 → 2.0.16
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 +179 -223
- package/fesm2022/cats-ui-lib.mjs +24 -4
- package/fesm2022/cats-ui-lib.mjs.map +1 -1
- package/index.d.ts +39 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -25,13 +25,14 @@ Add the following inside the `build > options` section of your `angular.json`:
|
|
|
25
25
|
"assets": [
|
|
26
26
|
{
|
|
27
27
|
"glob": "**/*",
|
|
28
|
-
"input": "node_modules/cats-ui/assets"
|
|
28
|
+
"input": "node_modules/cats-ui-lib/assets"
|
|
29
29
|
}
|
|
30
30
|
],
|
|
31
31
|
"styles": [
|
|
32
32
|
"node_modules/cats-ui-lib/styles/_index.scss"
|
|
33
33
|
]
|
|
34
34
|
```
|
|
35
|
+
|
|
35
36
|
---
|
|
36
37
|
|
|
37
38
|
## 🧩 Components
|
|
@@ -43,53 +44,44 @@ Add the following inside the `build > options` section of your `angular.json`:
|
|
|
43
44
|
Supports types: `text` · `number` · `email` · `password`
|
|
44
45
|
|
|
45
46
|
**Template:**
|
|
47
|
+
|
|
46
48
|
```html
|
|
47
|
-
<cats-ui-input
|
|
48
|
-
[inputConfig]="inputConfig"
|
|
49
|
-
[(ngModel)]="name"
|
|
50
|
-
required>
|
|
51
|
-
</cats-ui-input>
|
|
49
|
+
<cats-ui-input [inputConfig]="inputConfig" [(ngModel)]="name" required> </cats-ui-input>
|
|
52
50
|
|
|
53
51
|
<!-- Disabled state -->
|
|
54
|
-
<cats-ui-input
|
|
55
|
-
[disabled]="true"
|
|
56
|
-
[inputConfig]="inputConfig"
|
|
57
|
-
[(ngModel)]="name">
|
|
58
|
-
</cats-ui-input>
|
|
52
|
+
<cats-ui-input [disabled]="true" [inputConfig]="inputConfig" [(ngModel)]="name"> </cats-ui-input>
|
|
59
53
|
```
|
|
60
54
|
|
|
61
55
|
**TypeScript:**
|
|
56
|
+
|
|
62
57
|
```typescript
|
|
63
|
-
import { InputConfig } from
|
|
58
|
+
import { InputConfig } from "cats-ui-lib";
|
|
64
59
|
|
|
65
60
|
inputConfig: InputConfig = {
|
|
66
|
-
type:
|
|
67
|
-
placeholder:
|
|
61
|
+
type: "text",
|
|
62
|
+
placeholder: "Enter value",
|
|
68
63
|
};
|
|
69
64
|
```
|
|
70
65
|
|
|
71
66
|
**`InputConfig` options:**
|
|
72
67
|
|
|
73
|
-
| Property | Type | Description
|
|
74
|
-
|
|
75
|
-
| `type` | `string` | Input type: `text`, `email`, `password`, `number
|
|
76
|
-
| `placeholder` | `string` | Placeholder text
|
|
68
|
+
| Property | Type | Description |
|
|
69
|
+
| ------------- | -------- | ------------------------------------------------- |
|
|
70
|
+
| `type` | `string` | Input type: `text`, `email`, `password`, `number` |
|
|
71
|
+
| `placeholder` | `string` | Placeholder text |
|
|
77
72
|
|
|
78
73
|
---
|
|
79
74
|
|
|
80
75
|
### `SingleSelectComponent` — `<cats-ui-single-select>`
|
|
81
76
|
|
|
82
77
|
**Template:**
|
|
78
|
+
|
|
83
79
|
```html
|
|
84
|
-
<cats-ui-single-select
|
|
85
|
-
[optionList]="options"
|
|
86
|
-
[singleSelectConfig]="singleConfig"
|
|
87
|
-
[parentNativeElement]="'parent'"
|
|
88
|
-
(onSelection)="onSelection($event)">
|
|
89
|
-
</cats-ui-single-select>
|
|
80
|
+
<cats-ui-single-select [optionList]="options" [singleSelectConfig]="singleConfig" [parentNativeElement]="'parent'" (onSelection)="onSelection($event)"> </cats-ui-single-select>
|
|
90
81
|
```
|
|
91
82
|
|
|
92
83
|
**TypeScript:**
|
|
84
|
+
|
|
93
85
|
```typescript
|
|
94
86
|
import { SingleSelectConfig } from 'cats-ui-lib';
|
|
95
87
|
|
|
@@ -112,36 +104,34 @@ onSelection(dt: any) {
|
|
|
112
104
|
|
|
113
105
|
**`SingleSelectConfig` options:**
|
|
114
106
|
|
|
115
|
-
| Property | Type | Description
|
|
116
|
-
|
|
117
|
-
| `idField` | `string` | Key for option ID
|
|
118
|
-
| `textField` | `string` | Key for display label
|
|
119
|
-
| `disabledField` | `string` | Key to mark option as disabled
|
|
120
|
-
| `placeholder` | `string` | Placeholder text
|
|
107
|
+
| Property | Type | Description |
|
|
108
|
+
| --------------- | -------- | ------------------------------ |
|
|
109
|
+
| `idField` | `string` | Key for option ID |
|
|
110
|
+
| `textField` | `string` | Key for display label |
|
|
111
|
+
| `disabledField` | `string` | Key to mark option as disabled |
|
|
112
|
+
| `placeholder` | `string` | Placeholder text |
|
|
121
113
|
|
|
122
114
|
---
|
|
123
115
|
|
|
124
116
|
### `MultiSelectComponent` — `<cats-ui-multi-select>`
|
|
125
117
|
|
|
126
118
|
**Template:**
|
|
119
|
+
|
|
127
120
|
```html
|
|
128
|
-
<cats-ui-multi-select
|
|
129
|
-
[optionList]="options"
|
|
130
|
-
[multiSelectConfig]="multiSelectConfig"
|
|
131
|
-
(onSelection)="onSelection($event)">
|
|
132
|
-
</cats-ui-multi-select>
|
|
121
|
+
<cats-ui-multi-select [optionList]="options" [multiSelectConfig]="multiSelectConfig" (onSelection)="onSelection($event)"> </cats-ui-multi-select>
|
|
133
122
|
```
|
|
134
123
|
|
|
135
124
|
**TypeScript:**
|
|
125
|
+
|
|
136
126
|
```typescript
|
|
137
|
-
import { MultiSelectConfig } from
|
|
127
|
+
import { MultiSelectConfig } from "cats-ui-lib";
|
|
138
128
|
|
|
139
129
|
multiSelectConfig: MultiSelectConfig = {
|
|
140
|
-
idField:
|
|
141
|
-
textField:
|
|
142
|
-
disabledField:
|
|
143
|
-
placeholder:
|
|
144
|
-
prefixLabel:
|
|
130
|
+
idField: "id",
|
|
131
|
+
textField: "name",
|
|
132
|
+
disabledField: "disable",
|
|
133
|
+
placeholder: "Select Option",
|
|
134
|
+
prefixLabel: "",
|
|
145
135
|
enableSearch: true,
|
|
146
136
|
chipLimit: 2,
|
|
147
137
|
selectAll: true,
|
|
@@ -151,40 +141,38 @@ multiSelectConfig: MultiSelectConfig = {
|
|
|
151
141
|
|
|
152
142
|
**`MultiSelectConfig` options:**
|
|
153
143
|
|
|
154
|
-
| Property | Type | Description
|
|
155
|
-
|
|
156
|
-
| `idField` | `string` | Key for option ID
|
|
157
|
-
| `textField` | `string` | Key for display label
|
|
158
|
-
| `disabledField` | `string` | Key to mark option as disabled
|
|
159
|
-
| `placeholder` | `string` | Placeholder text
|
|
160
|
-
| `prefixLabel` | `string` | Label prefix shown before selected chips
|
|
161
|
-
| `enableSearch` | `boolean` | Show search input inside dropdown
|
|
162
|
-
| `chipLimit` | `number` | Max chips to display before `+N more`
|
|
163
|
-
| `selectAll` | `boolean` | Show "Select All" option
|
|
164
|
-
| `required` | `boolean` | Mark field as required
|
|
144
|
+
| Property | Type | Description |
|
|
145
|
+
| --------------- | --------- | ---------------------------------------- |
|
|
146
|
+
| `idField` | `string` | Key for option ID |
|
|
147
|
+
| `textField` | `string` | Key for display label |
|
|
148
|
+
| `disabledField` | `string` | Key to mark option as disabled |
|
|
149
|
+
| `placeholder` | `string` | Placeholder text |
|
|
150
|
+
| `prefixLabel` | `string` | Label prefix shown before selected chips |
|
|
151
|
+
| `enableSearch` | `boolean` | Show search input inside dropdown |
|
|
152
|
+
| `chipLimit` | `number` | Max chips to display before `+N more` |
|
|
153
|
+
| `selectAll` | `boolean` | Show "Select All" option |
|
|
154
|
+
| `required` | `boolean` | Mark field as required |
|
|
165
155
|
|
|
166
156
|
---
|
|
167
157
|
|
|
168
158
|
### `AutoComplete SingleSelect` — `<cats-ui-input-single-select>`
|
|
169
159
|
|
|
170
160
|
**Template:**
|
|
161
|
+
|
|
171
162
|
```html
|
|
172
|
-
<cats-ui-input-single-select
|
|
173
|
-
[optionsList]="options"
|
|
174
|
-
[autoSingleSelectConfig]="autoSingleSelectConfig"
|
|
175
|
-
(onItemSelection)="onSelection($event)">
|
|
176
|
-
</cats-ui-input-single-select>
|
|
163
|
+
<cats-ui-input-single-select [optionsList]="options" [autoSingleSelectConfig]="autoSingleSelectConfig" (onItemSelection)="onSelection($event)"> </cats-ui-input-single-select>
|
|
177
164
|
```
|
|
178
165
|
|
|
179
166
|
**TypeScript:**
|
|
167
|
+
|
|
180
168
|
```typescript
|
|
181
|
-
import { AutoCompleteSingleSelectConfig } from
|
|
169
|
+
import { AutoCompleteSingleSelectConfig } from "cats-ui-lib";
|
|
182
170
|
|
|
183
171
|
autoSingleSelectConfig: AutoCompleteSingleSelectConfig = {
|
|
184
|
-
idField:
|
|
185
|
-
textField:
|
|
186
|
-
disabledField:
|
|
187
|
-
placeholder:
|
|
172
|
+
idField: "id",
|
|
173
|
+
textField: "name",
|
|
174
|
+
disabledField: "",
|
|
175
|
+
placeholder: "Enter or select",
|
|
188
176
|
required: false,
|
|
189
177
|
customInput: true,
|
|
190
178
|
};
|
|
@@ -193,7 +181,7 @@ autoSingleSelectConfig: AutoCompleteSingleSelectConfig = {
|
|
|
193
181
|
**`AutoCompleteSingleSelectConfig` options:**
|
|
194
182
|
|
|
195
183
|
| Property | Type | Description |
|
|
196
|
-
|
|
184
|
+
| --------------- | --------- | ---------------------------------------- |
|
|
197
185
|
| `idField` | `string` | Key for option ID |
|
|
198
186
|
| `textField` | `string` | Key for display label |
|
|
199
187
|
| `disabledField` | `string` | Key to mark option as disabled |
|
|
@@ -206,27 +194,25 @@ autoSingleSelectConfig: AutoCompleteSingleSelectConfig = {
|
|
|
206
194
|
### `AutoComplete MultiSelect` — `<cats-ui-input-multi-select>`
|
|
207
195
|
|
|
208
196
|
**Template:**
|
|
197
|
+
|
|
209
198
|
```html
|
|
210
|
-
<cats-ui-input-multi-select
|
|
211
|
-
[optionsList]="options"
|
|
212
|
-
[autoCompleteMultiSelectConfig]="autoMultiSelectConfig"
|
|
213
|
-
(onItemSelection)="onSelection($event)">
|
|
214
|
-
</cats-ui-input-multi-select>
|
|
199
|
+
<cats-ui-input-multi-select [optionsList]="options" [autoCompleteMultiSelectConfig]="autoMultiSelectConfig" (onItemSelection)="onSelection($event)"> </cats-ui-input-multi-select>
|
|
215
200
|
```
|
|
216
201
|
|
|
217
202
|
**TypeScript:**
|
|
203
|
+
|
|
218
204
|
```typescript
|
|
219
|
-
import { AutoCompleteMultiSelectConfig } from
|
|
205
|
+
import { AutoCompleteMultiSelectConfig } from "cats-ui-lib";
|
|
220
206
|
|
|
221
207
|
autoMultiSelectConfig: AutoCompleteMultiSelectConfig = {
|
|
222
|
-
idField:
|
|
223
|
-
textField:
|
|
224
|
-
disabledField:
|
|
225
|
-
placeholder:
|
|
208
|
+
idField: "id",
|
|
209
|
+
textField: "name",
|
|
210
|
+
disabledField: "disable",
|
|
211
|
+
placeholder: "Type to Search",
|
|
226
212
|
selectAll: false,
|
|
227
213
|
chipLimit: 2,
|
|
228
214
|
customInput: false,
|
|
229
|
-
infoText:
|
|
215
|
+
infoText: "Select any 8 KPIs",
|
|
230
216
|
selectionLimit: 5,
|
|
231
217
|
};
|
|
232
218
|
```
|
|
@@ -234,7 +220,7 @@ autoMultiSelectConfig: AutoCompleteMultiSelectConfig = {
|
|
|
234
220
|
**`AutoCompleteMultiSelectConfig` options:**
|
|
235
221
|
|
|
236
222
|
| Property | Type | Description |
|
|
237
|
-
|
|
223
|
+
| ---------------- | --------- | ---------------------------------------- |
|
|
238
224
|
| `idField` | `string` | Key for option ID |
|
|
239
225
|
| `textField` | `string` | Key for display label |
|
|
240
226
|
| `disabledField` | `string` | Key to mark option as disabled |
|
|
@@ -250,14 +236,13 @@ autoMultiSelectConfig: AutoCompleteMultiSelectConfig = {
|
|
|
250
236
|
### `SearchBoxComponent` — `<cats-ui-search-box>`
|
|
251
237
|
|
|
252
238
|
**Template:**
|
|
239
|
+
|
|
253
240
|
```html
|
|
254
|
-
<cats-ui-search-box
|
|
255
|
-
[searchConfig]="searchConfig"
|
|
256
|
-
(searchParamValue)="searchParamValue($event)">
|
|
257
|
-
</cats-ui-search-box>
|
|
241
|
+
<cats-ui-search-box [searchConfig]="searchConfig" (searchParamValue)="searchParamValue($event)"> </cats-ui-search-box>
|
|
258
242
|
```
|
|
259
243
|
|
|
260
244
|
**TypeScript:**
|
|
245
|
+
|
|
261
246
|
```typescript
|
|
262
247
|
import { SearchConfig } from 'cats-ui-lib';
|
|
263
248
|
|
|
@@ -276,6 +261,7 @@ searchParamValue(data: any) {
|
|
|
276
261
|
### `AccordionComponent` — `<cats-ui-accordion>`
|
|
277
262
|
|
|
278
263
|
**Template:**
|
|
264
|
+
|
|
279
265
|
```html
|
|
280
266
|
<cats-ui-accordion>
|
|
281
267
|
<cats-ui-accordion-item title="Panel 1" [index]="0">
|
|
@@ -297,15 +283,13 @@ searchParamValue(data: any) {
|
|
|
297
283
|
### `RadioButtonComponent` — `<cats-ui-radio-button>`
|
|
298
284
|
|
|
299
285
|
**Template:**
|
|
286
|
+
|
|
300
287
|
```html
|
|
301
|
-
<cats-ui-radio-button
|
|
302
|
-
[config]="radioConfig"
|
|
303
|
-
[optionList]="options"
|
|
304
|
-
(selectionChange)="onRadio($event)">
|
|
305
|
-
</cats-ui-radio-button>
|
|
288
|
+
<cats-ui-radio-button [config]="radioConfig" [optionList]="options" (selectionChange)="onRadio($event)"> </cats-ui-radio-button>
|
|
306
289
|
```
|
|
307
290
|
|
|
308
291
|
**TypeScript:**
|
|
292
|
+
|
|
309
293
|
```typescript
|
|
310
294
|
import { RadioButtonConfig } from 'cats-ui-lib';
|
|
311
295
|
|
|
@@ -328,27 +312,25 @@ onRadio(data: any) {
|
|
|
328
312
|
|
|
329
313
|
**`RadioButtonConfig` options:**
|
|
330
314
|
|
|
331
|
-
| Property
|
|
332
|
-
|
|
333
|
-
| `valueField`
|
|
334
|
-
| `textField`
|
|
335
|
-
| `name`
|
|
336
|
-
| `disabled`
|
|
315
|
+
| Property | Type | Description |
|
|
316
|
+
| ------------ | -------- | --------------------------------- |
|
|
317
|
+
| `valueField` | `string` | Key for option value |
|
|
318
|
+
| `textField` | `string` | Key for display label |
|
|
319
|
+
| `name` | `string` | HTML radio group name |
|
|
320
|
+
| `disabled` | `string` | Key to mark an option as disabled |
|
|
337
321
|
|
|
338
322
|
---
|
|
339
323
|
|
|
340
324
|
### `CheckboxComponent` — `<cats-ui-checkbox-button>`
|
|
341
325
|
|
|
342
326
|
**Template:**
|
|
327
|
+
|
|
343
328
|
```html
|
|
344
|
-
<cats-ui-checkbox-button
|
|
345
|
-
[checkBoxConfig]="checkBoxConfig"
|
|
346
|
-
[optionList]="taskOptions"
|
|
347
|
-
(onCheckBoxSelection)="checkBox($event)">
|
|
348
|
-
</cats-ui-checkbox-button>
|
|
329
|
+
<cats-ui-checkbox-button [checkBoxConfig]="checkBoxConfig" [optionList]="taskOptions" (onCheckBoxSelection)="checkBox($event)"> </cats-ui-checkbox-button>
|
|
349
330
|
```
|
|
350
331
|
|
|
351
332
|
**TypeScript:**
|
|
333
|
+
|
|
352
334
|
```typescript
|
|
353
335
|
import { CheckBoxConfig } from 'cats-ui-lib';
|
|
354
336
|
|
|
@@ -372,7 +354,7 @@ checkBox(data: any) {
|
|
|
372
354
|
**`CheckBoxConfig` options:**
|
|
373
355
|
|
|
374
356
|
| Property | Type | Description |
|
|
375
|
-
|
|
357
|
+
| --------------- | -------- | --------------------------------- |
|
|
376
358
|
| `idField` | `string` | Key for option ID |
|
|
377
359
|
| `textField` | `string` | Key for display label |
|
|
378
360
|
| `name` | `string` | HTML checkbox group name |
|
|
@@ -383,14 +365,13 @@ checkBox(data: any) {
|
|
|
383
365
|
### `ToggleComponent` — `<cats-ui-toogle-button>`
|
|
384
366
|
|
|
385
367
|
**Template:**
|
|
368
|
+
|
|
386
369
|
```html
|
|
387
|
-
<cats-ui-toogle-button
|
|
388
|
-
[toggleConfig]="toggleConfig"
|
|
389
|
-
(onToggled)="onToggled($event)">
|
|
390
|
-
</cats-ui-toogle-button>
|
|
370
|
+
<cats-ui-toogle-button [toggleConfig]="toggleConfig" (onToggled)="onToggled($event)"> </cats-ui-toogle-button>
|
|
391
371
|
```
|
|
392
372
|
|
|
393
373
|
**TypeScript:**
|
|
374
|
+
|
|
394
375
|
```typescript
|
|
395
376
|
import { ToggleConfig } from 'cats-ui-lib';
|
|
396
377
|
|
|
@@ -406,10 +387,10 @@ onToggled(data: any) {
|
|
|
406
387
|
|
|
407
388
|
**`ToggleConfig` options:**
|
|
408
389
|
|
|
409
|
-
| Property | Type | Description
|
|
410
|
-
|
|
411
|
-
| `disabled` | `boolean` | Disable the toggle
|
|
412
|
-
| `checked` | `boolean` | Initial checked state
|
|
390
|
+
| Property | Type | Description |
|
|
391
|
+
| ---------- | --------- | --------------------- |
|
|
392
|
+
| `disabled` | `boolean` | Disable the toggle |
|
|
393
|
+
| `checked` | `boolean` | Initial checked state |
|
|
413
394
|
|
|
414
395
|
---
|
|
415
396
|
|
|
@@ -418,24 +399,18 @@ onToggled(data: any) {
|
|
|
418
399
|
An advanced tabset with add/close tab support, icons, badge counts, and a home tab.
|
|
419
400
|
|
|
420
401
|
**Template:**
|
|
421
|
-
```html
|
|
422
|
-
<cats-ui-tabset
|
|
423
|
-
[tabs]="tab1"
|
|
424
|
-
[activeTab]="activeTab"
|
|
425
|
-
[tabConfig]="tabConfig"
|
|
426
|
-
(tabAdded)="onTabAdded($event)"
|
|
427
|
-
(tabClosed)="onTabClosed($event)"
|
|
428
|
-
(activeTabChange)="activeTabChange($event)">
|
|
429
402
|
|
|
403
|
+
```html
|
|
404
|
+
<cats-ui-tabset [tabs]="tab1" [activeTab]="activeTab" [tabConfig]="tabConfig" (tabAdded)="onTabAdded($event)" (tabClosed)="onTabClosed($event)" (activeTabChange)="activeTabChange($event)">
|
|
430
405
|
<!-- Tab ID 0 is the Home tab (requires homeTab: true in tabConfig) -->
|
|
431
406
|
<cats-ui-tab-content [tabId]="0">Home Content</cats-ui-tab-content>
|
|
432
407
|
<cats-ui-tab-content [tabId]="1">Tab 1 Content</cats-ui-tab-content>
|
|
433
408
|
<cats-ui-tab-content [tabId]="2">Tab 2 Content</cats-ui-tab-content>
|
|
434
|
-
|
|
435
409
|
</cats-ui-tabset>
|
|
436
410
|
```
|
|
437
411
|
|
|
438
412
|
**TypeScript:**
|
|
413
|
+
|
|
439
414
|
```typescript
|
|
440
415
|
tabConfig = {
|
|
441
416
|
addTab: true, // Show "+" add tab button
|
|
@@ -478,13 +453,13 @@ activeTabChange(dt: any) {
|
|
|
478
453
|
|
|
479
454
|
**Tab item options:**
|
|
480
455
|
|
|
481
|
-
| Property | Type | Description
|
|
482
|
-
|
|
483
|
-
| `id` | `number` | Unique tab ID
|
|
484
|
-
| `title` | `string` | Tab label
|
|
485
|
-
| `leadingIcon` | `string` | Icon path shown before the title
|
|
486
|
-
| `tralingIocn` | `string` | Icon path shown after the title
|
|
487
|
-
| `count` | `number` | Badge count shown on the tab
|
|
456
|
+
| Property | Type | Description |
|
|
457
|
+
| ------------- | -------- | -------------------------------- |
|
|
458
|
+
| `id` | `number` | Unique tab ID |
|
|
459
|
+
| `title` | `string` | Tab label |
|
|
460
|
+
| `leadingIcon` | `string` | Icon path shown before the title |
|
|
461
|
+
| `tralingIocn` | `string` | Icon path shown after the title |
|
|
462
|
+
| `count` | `number` | Badge count shown on the tab |
|
|
488
463
|
|
|
489
464
|
---
|
|
490
465
|
|
|
@@ -493,55 +468,50 @@ activeTabChange(dt: any) {
|
|
|
493
468
|
A multi-step wizard modal with optional progress bar, step badge, and expandable layout. Steps are defined via `ng-template` using the `wizardStep` directive, and wizard state is managed through an injected `WizardService`.
|
|
494
469
|
|
|
495
470
|
**Template:**
|
|
471
|
+
|
|
496
472
|
```html
|
|
497
473
|
<!-- Trigger button -->
|
|
498
474
|
<button (click)="openUserWizard()">Open User Wizard</button>
|
|
499
475
|
|
|
500
476
|
@if (wizard.isOpen('classification')()) {
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
</ng-template>
|
|
519
|
-
|
|
520
|
-
<ng-template wizardStep>
|
|
521
|
-
<app-step-four></app-step-four>
|
|
522
|
-
</ng-template>
|
|
523
|
-
|
|
524
|
-
</cats-ui-wizard>
|
|
477
|
+
<cats-ui-wizard wizardId="classification" title="Data Classification" [showProgressBar]="true" [showStepBadge]="true" (closed)="closeModal()">
|
|
478
|
+
<ng-template wizardStep>
|
|
479
|
+
<app-step-one></app-step-one>
|
|
480
|
+
</ng-template>
|
|
481
|
+
|
|
482
|
+
<ng-template wizardStep>
|
|
483
|
+
<app-step-two></app-step-two>
|
|
484
|
+
</ng-template>
|
|
485
|
+
|
|
486
|
+
<ng-template wizardStep>
|
|
487
|
+
<app-step-three></app-step-three>
|
|
488
|
+
</ng-template>
|
|
489
|
+
|
|
490
|
+
<ng-template wizardStep>
|
|
491
|
+
<app-step-four></app-step-four>
|
|
492
|
+
</ng-template>
|
|
493
|
+
</cats-ui-wizard>
|
|
525
494
|
}
|
|
526
495
|
```
|
|
527
496
|
|
|
528
497
|
**TypeScript:**
|
|
498
|
+
|
|
529
499
|
```typescript
|
|
530
|
-
import { WizardService } from
|
|
500
|
+
import { WizardService } from "cats-ui-lib";
|
|
531
501
|
|
|
532
502
|
export class ParentComponent {
|
|
533
503
|
constructor(public wizard: WizardService) {}
|
|
534
504
|
|
|
535
505
|
openUserWizard() {
|
|
536
|
-
const wizardId =
|
|
506
|
+
const wizardId = "classification";
|
|
537
507
|
|
|
538
508
|
// Define the step titles and initial states
|
|
539
509
|
this.wizard.stepConfig.update((config: any) => {
|
|
540
510
|
config[wizardId] = [
|
|
541
|
-
{ title:
|
|
542
|
-
{ title:
|
|
543
|
-
{ title:
|
|
544
|
-
{ title:
|
|
511
|
+
{ title: "User Info", state: "active" },
|
|
512
|
+
{ title: "Details", state: "normal" },
|
|
513
|
+
{ title: "Review", state: "normal" },
|
|
514
|
+
{ title: "Confirm", state: "normal" },
|
|
545
515
|
];
|
|
546
516
|
return config;
|
|
547
517
|
});
|
|
@@ -550,7 +520,7 @@ export class ParentComponent {
|
|
|
550
520
|
}
|
|
551
521
|
|
|
552
522
|
closeModal() {
|
|
553
|
-
this.wizard.close(
|
|
523
|
+
this.wizard.close("classification");
|
|
554
524
|
}
|
|
555
525
|
}
|
|
556
526
|
```
|
|
@@ -558,7 +528,7 @@ export class ParentComponent {
|
|
|
558
528
|
**Component inputs:**
|
|
559
529
|
|
|
560
530
|
| Input | Type | Description |
|
|
561
|
-
|
|
531
|
+
| ----------------- | --------- | ----------------------------------------------------- |
|
|
562
532
|
| `wizardId` | `string` | Unique identifier matching the ID used in the service |
|
|
563
533
|
| `title` | `string` | Title displayed in the wizard header |
|
|
564
534
|
| `showProgressBar` | `boolean` | Show a progress bar across the top of the wizard |
|
|
@@ -567,27 +537,28 @@ export class ParentComponent {
|
|
|
567
537
|
|
|
568
538
|
**Component outputs:**
|
|
569
539
|
|
|
570
|
-
| Output | Type
|
|
571
|
-
|
|
572
|
-
| `closed` | `EventEmitter<void>`
|
|
540
|
+
| Output | Type | Description |
|
|
541
|
+
| -------- | -------------------- | --------------------------------- |
|
|
542
|
+
| `closed` | `EventEmitter<void>` | Emitted when the wizard is closed |
|
|
573
543
|
|
|
574
544
|
**`WizardService` API:**
|
|
575
545
|
|
|
576
|
-
| Method / Property
|
|
577
|
-
|
|
578
|
-
| `open()`
|
|
579
|
-
| `close()`
|
|
580
|
-
| `isOpen()`
|
|
581
|
-
| `stepConfig`
|
|
546
|
+
| Method / Property | Signature | Description |
|
|
547
|
+
| ----------------- | ------------------------------------------------ | ------------------------------------------------- |
|
|
548
|
+
| `open()` | `open(id: string, options: { steps: [] }): void` | Opens the wizard with the given ID |
|
|
549
|
+
| `close()` | `close(id: string): void` | Closes the wizard with the given ID |
|
|
550
|
+
| `isOpen()` | `isOpen(id: string): Signal<boolean>` | Returns a signal indicating if the wizard is open |
|
|
551
|
+
| `stepConfig` | `WritableSignal<Record<string, StepConfig[]>>` | Signal holding step definitions per wizard ID |
|
|
582
552
|
|
|
583
553
|
**Step config object fields:**
|
|
584
554
|
|
|
585
|
-
| Field | Type | Description
|
|
586
|
-
|
|
587
|
-
| `title` | `string` | Display label for the step in the progress bar
|
|
588
|
-
| `state` | `string` | Initial state: `'active'` (current) or `'normal'`
|
|
555
|
+
| Field | Type | Description |
|
|
556
|
+
| ------- | -------- | ------------------------------------------------- |
|
|
557
|
+
| `title` | `string` | Display label for the step in the progress bar |
|
|
558
|
+
| `state` | `string` | Initial state: `'active'` (current) or `'normal'` |
|
|
589
559
|
|
|
590
560
|
**Notes:**
|
|
561
|
+
|
|
591
562
|
- Each `<ng-template wizardStep>` maps to a step in the order it appears.
|
|
592
563
|
- The number of `<ng-template wizardStep>` blocks should match the number of entries in `stepConfig`.
|
|
593
564
|
- The wizard uses Angular Signals internally; use `wizard.isOpen('id')()` (note the call `()`) to read the signal value in templates.
|
|
@@ -598,61 +569,47 @@ export class ParentComponent {
|
|
|
598
569
|
|
|
599
570
|
Supports `single`, `range`, and `dual` modes with optional time selection.
|
|
600
571
|
|
|
601
|
-
| Mode | Description
|
|
602
|
-
|
|
603
|
-
| `single` | Single date picker (± time)
|
|
604
|
-
| `range` | Start and end date picker (± time)
|
|
605
|
-
| `dual` | Two-calendar view (± time)
|
|
572
|
+
| Mode | Description |
|
|
573
|
+
| -------- | ---------------------------------- |
|
|
574
|
+
| `single` | Single date picker (± time) |
|
|
575
|
+
| `range` | Start and end date picker (± time) |
|
|
576
|
+
| `dual` | Two-calendar view (± time) |
|
|
606
577
|
|
|
607
578
|
**Template:**
|
|
579
|
+
|
|
608
580
|
```html
|
|
609
581
|
<!-- Single date + time -->
|
|
610
|
-
<cats-ui-custom-date-picker
|
|
611
|
-
[config]="{ mode: 'single', time: true, parentDateFormat: 'MM/dd/yyyy' }"
|
|
612
|
-
(applied)="displayData($event)">
|
|
613
|
-
</cats-ui-custom-date-picker>
|
|
582
|
+
<cats-ui-custom-date-picker [config]="{ mode: 'single', time: true, parentDateFormat: 'MM/dd/yyyy' }" (applied)="displayData($event)"> </cats-ui-custom-date-picker>
|
|
614
583
|
|
|
615
584
|
<!-- Date range -->
|
|
616
|
-
<cats-ui-custom-date-picker
|
|
617
|
-
[config]="{ mode: 'range', time: false, parentDateFormat: 'MM/dd/yyyy' }"
|
|
618
|
-
(applied)="displayData($event)">
|
|
619
|
-
</cats-ui-custom-date-picker>
|
|
585
|
+
<cats-ui-custom-date-picker [config]="{ mode: 'range', time: false, parentDateFormat: 'MM/dd/yyyy' }" (applied)="displayData($event)"> </cats-ui-custom-date-picker>
|
|
620
586
|
|
|
621
587
|
<!-- Date range + time -->
|
|
622
|
-
<cats-ui-custom-date-picker
|
|
623
|
-
[config]="{ mode: 'range', time: true, parentDateFormat: 'MM/dd/yyyy' }"
|
|
624
|
-
(applied)="displayData($event)">
|
|
625
|
-
</cats-ui-custom-date-picker>
|
|
588
|
+
<cats-ui-custom-date-picker [config]="{ mode: 'range', time: true, parentDateFormat: 'MM/dd/yyyy' }" (applied)="displayData($event)"> </cats-ui-custom-date-picker>
|
|
626
589
|
|
|
627
590
|
<!-- Dual calendar -->
|
|
628
|
-
<cats-ui-custom-date-picker
|
|
629
|
-
[config]="{ mode: 'dual', time: false, parentDateFormat: 'MM/dd/yyyy' }"
|
|
630
|
-
(applied)="displayData($event)">
|
|
631
|
-
</cats-ui-custom-date-picker>
|
|
591
|
+
<cats-ui-custom-date-picker [config]="{ mode: 'dual', time: false, parentDateFormat: 'MM/dd/yyyy' }" (applied)="displayData($event)"> </cats-ui-custom-date-picker>
|
|
632
592
|
|
|
633
593
|
<!-- Dual calendar + time -->
|
|
634
|
-
<cats-ui-custom-date-picker
|
|
635
|
-
[config]="{ mode: 'dual', time: true, parentDateFormat: 'MM/dd/yyyy' }"
|
|
636
|
-
(applied)="displayData($event)">
|
|
637
|
-
</cats-ui-custom-date-picker>
|
|
594
|
+
<cats-ui-custom-date-picker [config]="{ mode: 'dual', time: true, parentDateFormat: 'MM/dd/yyyy' }" (applied)="displayData($event)"> </cats-ui-custom-date-picker>
|
|
638
595
|
```
|
|
639
596
|
|
|
640
597
|
**Config options:**
|
|
641
598
|
|
|
642
|
-
| Property | Type | Description
|
|
643
|
-
|
|
644
|
-
| `mode` | `string` | `'single'` \| `'range'` \| `'dual'`
|
|
645
|
-
| `time` | `boolean` | Show time picker alongside the date
|
|
646
|
-
| `parentDateFormat` | `string` | Output date format, e.g. `'MM/dd/yyyy'`
|
|
647
|
-
| `minDate` | `Date` | Minimum selectable date
|
|
648
|
-
| `maxDate` | `Date` | Maximum selectable date
|
|
649
|
-
| `placeholder` | `string` | Placeholder for single-date mode
|
|
650
|
-
| `fromPlaceholder` | `string` | Placeholder for start date in range/dual mode
|
|
651
|
-
| `toPlaceholder` | `string` | Placeholder for end date in range/dual mode
|
|
652
|
-
| `disabledDates` | `Date[]` | Array of dates to disable
|
|
653
|
-
| `disablePastDays` | `number` | Number of past days to disable
|
|
654
|
-
| `showDateLabel` | `boolean` | Show label above date input
|
|
655
|
-
| `showTimeLabel` | `boolean` | Show label above time input
|
|
599
|
+
| Property | Type | Description |
|
|
600
|
+
| ------------------ | --------- | --------------------------------------------- |
|
|
601
|
+
| `mode` | `string` | `'single'` \| `'range'` \| `'dual'` |
|
|
602
|
+
| `time` | `boolean` | Show time picker alongside the date |
|
|
603
|
+
| `parentDateFormat` | `string` | Output date format, e.g. `'MM/dd/yyyy'` |
|
|
604
|
+
| `minDate` | `Date` | Minimum selectable date |
|
|
605
|
+
| `maxDate` | `Date` | Maximum selectable date |
|
|
606
|
+
| `placeholder` | `string` | Placeholder for single-date mode |
|
|
607
|
+
| `fromPlaceholder` | `string` | Placeholder for start date in range/dual mode |
|
|
608
|
+
| `toPlaceholder` | `string` | Placeholder for end date in range/dual mode |
|
|
609
|
+
| `disabledDates` | `Date[]` | Array of dates to disable |
|
|
610
|
+
| `disablePastDays` | `number` | Number of past days to disable |
|
|
611
|
+
| `showDateLabel` | `boolean` | Show label above date input |
|
|
612
|
+
| `showTimeLabel` | `boolean` | Show label above time input |
|
|
656
613
|
|
|
657
614
|
---
|
|
658
615
|
|
|
@@ -661,14 +618,13 @@ Supports `single`, `range`, and `dual` modes with optional time selection.
|
|
|
661
618
|
A pre-built filter component with quick date presets, custom input, and date picker submenus.
|
|
662
619
|
|
|
663
620
|
**Template:**
|
|
621
|
+
|
|
664
622
|
```html
|
|
665
|
-
<cats-ui-timestamp-filter
|
|
666
|
-
[config]="timeFilterConfig"
|
|
667
|
-
(selectionChange)="onFilterChange($event)">
|
|
668
|
-
</cats-ui-timestamp-filter>
|
|
623
|
+
<cats-ui-timestamp-filter [config]="timeFilterConfig" (selectionChange)="onFilterChange($event)"> </cats-ui-timestamp-filter>
|
|
669
624
|
```
|
|
670
625
|
|
|
671
626
|
**TypeScript:**
|
|
627
|
+
|
|
672
628
|
```typescript
|
|
673
629
|
timeFilterConfig = {
|
|
674
630
|
title: 'Timestamp Filter',
|
|
@@ -725,23 +681,23 @@ onFilterChange(dt: any) {
|
|
|
725
681
|
|
|
726
682
|
**Config options:**
|
|
727
683
|
|
|
728
|
-
| Property | Type | Description
|
|
729
|
-
|
|
730
|
-
| `title` | `string` | Label shown above the filter
|
|
731
|
-
| `showReset` | `boolean` | Show a reset button
|
|
732
|
-
| `options` | `array` | Array of filter option objects
|
|
684
|
+
| Property | Type | Description |
|
|
685
|
+
| ----------- | --------- | ------------------------------ |
|
|
686
|
+
| `title` | `string` | Label shown above the filter |
|
|
687
|
+
| `showReset` | `boolean` | Show a reset button |
|
|
688
|
+
| `options` | `array` | Array of filter option objects |
|
|
733
689
|
|
|
734
690
|
**Option object fields:**
|
|
735
691
|
|
|
736
|
-
| Field | Type | Description
|
|
737
|
-
|
|
738
|
-
| `label` | `string` | Display label for the option
|
|
739
|
-
| `value` | `string` | Emitted value on selection
|
|
740
|
-
| `default` | `boolean` | Pre-select this option on load
|
|
741
|
-
| `type` | `string` | `'input'` for numeric entry, `'submenu'` for date picker popup
|
|
742
|
-
| `custom` | `boolean` | Marks as a custom/user-defined option
|
|
692
|
+
| Field | Type | Description |
|
|
693
|
+
| ------------------ | --------- | -------------------------------------------------------------- |
|
|
694
|
+
| `label` | `string` | Display label for the option |
|
|
695
|
+
| `value` | `string` | Emitted value on selection |
|
|
696
|
+
| `default` | `boolean` | Pre-select this option on load |
|
|
697
|
+
| `type` | `string` | `'input'` for numeric entry, `'submenu'` for date picker popup |
|
|
698
|
+
| `custom` | `boolean` | Marks as a custom/user-defined option |
|
|
743
699
|
| `pickerMode` | `string` | Date picker mode: `'single'` \| `'range'` |
|
|
744
|
-
| `parentDateFormat` | `string` | Output date format for picker submenus
|
|
700
|
+
| `parentDateFormat` | `string` | Output date format for picker submenus |
|
|
745
701
|
|
|
746
702
|
---
|
|
747
703
|
|
|
@@ -813,7 +769,7 @@ npm publish
|
|
|
813
769
|
## 📋 Requirements
|
|
814
770
|
|
|
815
771
|
| Dependency | Version |
|
|
816
|
-
|
|
772
|
+
| ---------- | ------- |
|
|
817
773
|
| Angular | >= 19.x |
|
|
818
774
|
| Node.js | >= 18.x |
|
|
819
775
|
|
|
@@ -821,4 +777,4 @@ npm publish
|
|
|
821
777
|
|
|
822
778
|
## 📄 License
|
|
823
779
|
|
|
824
|
-
MIT © cats-ui-lib
|
|
780
|
+
MIT © cats-ui-lib
|