@cdevhub/ngx-tw 0.2.0 → 0.3.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 +264 -49
- package/fesm2022/cdevhub-ngx-tw-accordion.mjs +11 -7
- package/fesm2022/cdevhub-ngx-tw-accordion.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-alert.mjs +43 -29
- package/fesm2022/cdevhub-ngx-tw-alert.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-aspect-ratio.mjs +103 -0
- package/fesm2022/cdevhub-ngx-tw-aspect-ratio.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-avatar.mjs +56 -31
- package/fesm2022/cdevhub-ngx-tw-avatar.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-badge.mjs +61 -35
- package/fesm2022/cdevhub-ngx-tw-badge.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs +154 -93
- package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-button.mjs +35 -22
- package/fesm2022/cdevhub-ngx-tw-button.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs +3 -3
- package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-calendar.mjs +416 -216
- package/fesm2022/cdevhub-ngx-tw-calendar.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-card.mjs +33 -24
- package/fesm2022/cdevhub-ngx-tw-card.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-carousel.mjs +152 -81
- package/fesm2022/cdevhub-ngx-tw-carousel.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-checkbox.mjs +99 -47
- package/fesm2022/cdevhub-ngx-tw-checkbox.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-code-block.mjs +42 -29
- package/fesm2022/cdevhub-ngx-tw-code-block.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-collapsible.mjs +46 -29
- package/fesm2022/cdevhub-ngx-tw-collapsible.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-combobox.mjs +205 -110
- package/fesm2022/cdevhub-ngx-tw-combobox.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-command-palette.mjs +141 -74
- package/fesm2022/cdevhub-ngx-tw-command-palette.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-core.mjs +16 -11
- package/fesm2022/cdevhub-ngx-tw-core.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-date-picker.mjs +395 -149
- package/fesm2022/cdevhub-ngx-tw-date-picker.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs +305 -150
- package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-dialog.mjs +56 -43
- package/fesm2022/cdevhub-ngx-tw-dialog.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-empty-state.mjs +51 -33
- package/fesm2022/cdevhub-ngx-tw-empty-state.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-file-upload.mjs +905 -0
- package/fesm2022/cdevhub-ngx-tw-file-upload.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-flip-card.mjs +49 -26
- package/fesm2022/cdevhub-ngx-tw-flip-card.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-form-field.mjs +133 -74
- package/fesm2022/cdevhub-ngx-tw-form-field.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs +2 -2
- package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-icon.mjs +28 -17
- package/fesm2022/cdevhub-ngx-tw-icon.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-input.mjs +37 -21
- package/fesm2022/cdevhub-ngx-tw-input.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-item.mjs +33 -24
- package/fesm2022/cdevhub-ngx-tw-item.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-menu.mjs +63 -48
- package/fesm2022/cdevhub-ngx-tw-menu.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-number-input.mjs +622 -0
- package/fesm2022/cdevhub-ngx-tw-number-input.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-paginator.mjs +142 -72
- package/fesm2022/cdevhub-ngx-tw-paginator.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-popover.mjs +101 -46
- package/fesm2022/cdevhub-ngx-tw-popover.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs +57 -30
- package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-radio.mjs +108 -57
- package/fesm2022/cdevhub-ngx-tw-radio.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs +46 -26
- package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-select.mjs +227 -122
- package/fesm2022/cdevhub-ngx-tw-select.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-separator.mjs +21 -12
- package/fesm2022/cdevhub-ngx-tw-separator.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-sheet.mjs +58 -44
- package/fesm2022/cdevhub-ngx-tw-sheet.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-skeleton.mjs +25 -14
- package/fesm2022/cdevhub-ngx-tw-skeleton.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-slider.mjs +155 -79
- package/fesm2022/cdevhub-ngx-tw-slider.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-sort.mjs +47 -25
- package/fesm2022/cdevhub-ngx-tw-sort.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-spinner.mjs +29 -16
- package/fesm2022/cdevhub-ngx-tw-spinner.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-split.mjs +72 -42
- package/fesm2022/cdevhub-ngx-tw-split.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-stat.mjs +107 -64
- package/fesm2022/cdevhub-ngx-tw-stat.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-stepper.mjs +113 -47
- package/fesm2022/cdevhub-ngx-tw-stepper.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-switch.mjs +61 -32
- package/fesm2022/cdevhub-ngx-tw-switch.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs +88 -42
- package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-table.mjs +266 -118
- package/fesm2022/cdevhub-ngx-tw-table.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-tabs.mjs +102 -52
- package/fesm2022/cdevhub-ngx-tw-tabs.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-tags-input.mjs +798 -0
- package/fesm2022/cdevhub-ngx-tw-tags-input.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-textarea.mjs +16 -8
- package/fesm2022/cdevhub-ngx-tw-textarea.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-theme.mjs +22 -14
- package/fesm2022/cdevhub-ngx-tw-theme.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-time-picker.mjs +243 -95
- package/fesm2022/cdevhub-ngx-tw-time-picker.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-timeline.mjs +149 -82
- package/fesm2022/cdevhub-ngx-tw-timeline.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-toast.mjs +100 -55
- package/fesm2022/cdevhub-ngx-tw-toast.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-tooltip.mjs +50 -28
- package/fesm2022/cdevhub-ngx-tw-tooltip.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-transfer.mjs +1129 -0
- package/fesm2022/cdevhub-ngx-tw-transfer.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-tree.mjs +554 -0
- package/fesm2022/cdevhub-ngx-tw-tree.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw.mjs +7 -0
- package/fesm2022/cdevhub-ngx-tw.mjs.map +1 -1
- package/package.json +45 -17
- package/theme/_dark.css +16 -12
- package/theme/_semantic.css +3 -2
- package/theme/index.css +10 -2
- package/types/cdevhub-ngx-tw-aspect-ratio.d.ts +40 -0
- package/types/cdevhub-ngx-tw-calendar.d.ts +39 -8
- package/types/cdevhub-ngx-tw-code-block.d.ts +8 -7
- package/types/cdevhub-ngx-tw-command-palette.d.ts +7 -0
- package/types/cdevhub-ngx-tw-date-picker.d.ts +36 -10
- package/types/cdevhub-ngx-tw-file-upload.d.ts +250 -0
- package/types/cdevhub-ngx-tw-form-field.d.ts +22 -3
- package/types/cdevhub-ngx-tw-icon-lucide.d.ts +21 -3
- package/types/cdevhub-ngx-tw-number-input.d.ts +130 -0
- package/types/cdevhub-ngx-tw-popover.d.ts +8 -0
- package/types/cdevhub-ngx-tw-select.d.ts +1 -1
- package/types/cdevhub-ngx-tw-stepper.d.ts +30 -2
- package/types/cdevhub-ngx-tw-tab-nav.d.ts +8 -0
- package/types/cdevhub-ngx-tw-table.d.ts +30 -1
- package/types/cdevhub-ngx-tw-tabs.d.ts +8 -0
- package/types/cdevhub-ngx-tw-tags-input.d.ts +217 -0
- package/types/cdevhub-ngx-tw-time-picker.d.ts +31 -6
- package/types/cdevhub-ngx-tw-toast.d.ts +1 -1
- package/types/cdevhub-ngx-tw-transfer.d.ts +330 -0
- package/types/cdevhub-ngx-tw-tree.d.ts +189 -0
- package/types/cdevhub-ngx-tw.d.ts +7 -0
|
@@ -19,6 +19,7 @@ export * from '@cdevhub/ngx-tw/popover';
|
|
|
19
19
|
export * from '@cdevhub/ngx-tw/dialog';
|
|
20
20
|
export * from '@cdevhub/ngx-tw/command-palette';
|
|
21
21
|
export * from '@cdevhub/ngx-tw/toast';
|
|
22
|
+
export * from '@cdevhub/ngx-tw/transfer';
|
|
22
23
|
export * from '@cdevhub/ngx-tw/form-field';
|
|
23
24
|
export * from '@cdevhub/ngx-tw/switch';
|
|
24
25
|
export * from '@cdevhub/ngx-tw/checkbox';
|
|
@@ -26,6 +27,9 @@ export * from '@cdevhub/ngx-tw/radio';
|
|
|
26
27
|
export * from '@cdevhub/ngx-tw/select';
|
|
27
28
|
export * from '@cdevhub/ngx-tw/input';
|
|
28
29
|
export * from '@cdevhub/ngx-tw/textarea';
|
|
30
|
+
export * from '@cdevhub/ngx-tw/file-upload';
|
|
31
|
+
export * from '@cdevhub/ngx-tw/number-input';
|
|
32
|
+
export * from '@cdevhub/ngx-tw/tags-input';
|
|
29
33
|
export * from '@cdevhub/ngx-tw/spinner';
|
|
30
34
|
export * from '@cdevhub/ngx-tw/progress-bar';
|
|
31
35
|
export * from '@cdevhub/ngx-tw/skeleton';
|
|
@@ -47,6 +51,9 @@ export * from '@cdevhub/ngx-tw/stat';
|
|
|
47
51
|
export * from '@cdevhub/ngx-tw/combobox';
|
|
48
52
|
export * from '@cdevhub/ngx-tw/empty-state';
|
|
49
53
|
export * from '@cdevhub/ngx-tw/sheet';
|
|
54
|
+
export * from '@cdevhub/ngx-tw/aspect-ratio';
|
|
55
|
+
export * from '@cdevhub/ngx-tw/tree';
|
|
56
|
+
export * from '@cdevhub/ngx-tw/theme';
|
|
50
57
|
|
|
51
58
|
/*
|
|
52
59
|
* Public API Surface of ngx-tw
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdevhub-ngx-tw.mjs","sources":["../../../projects/ngx-tw/src/public-api.ts","../../../projects/ngx-tw/src/cdevhub-ngx-tw.ts"],"sourcesContent":["/*\n * Public API Surface of ngx-tw\n *\n * Consumers should use direct imports for tree-shaking:\n * import { ButtonDirective } from '@cdevhub/ngx-tw/button';\n */\n\nexport * from '@cdevhub/ngx-tw/core';\nexport * from '@cdevhub/ngx-tw/badge';\nexport * from '@cdevhub/ngx-tw/button';\nexport * from '@cdevhub/ngx-tw/card';\nexport * from '@cdevhub/ngx-tw/flip-card';\nexport * from '@cdevhub/ngx-tw/alert';\nexport * from '@cdevhub/ngx-tw/tabs';\nexport * from '@cdevhub/ngx-tw/tab-nav';\nexport * from '@cdevhub/ngx-tw/separator';\nexport * from '@cdevhub/ngx-tw/tooltip';\nexport * from '@cdevhub/ngx-tw/code-block';\nexport * from '@cdevhub/ngx-tw/segmented-control';\nexport * from '@cdevhub/ngx-tw/avatar';\nexport * from '@cdevhub/ngx-tw/menu';\nexport * from '@cdevhub/ngx-tw/icon';\nexport * from '@cdevhub/ngx-tw/collapsible';\nexport * from '@cdevhub/ngx-tw/accordion';\nexport * from '@cdevhub/ngx-tw/popover';\nexport * from '@cdevhub/ngx-tw/dialog';\nexport * from '@cdevhub/ngx-tw/command-palette';\nexport * from '@cdevhub/ngx-tw/toast';\nexport * from '@cdevhub/ngx-tw/form-field';\nexport * from '@cdevhub/ngx-tw/switch';\nexport * from '@cdevhub/ngx-tw/checkbox';\nexport * from '@cdevhub/ngx-tw/radio';\nexport * from '@cdevhub/ngx-tw/select';\nexport * from '@cdevhub/ngx-tw/input';\nexport * from '@cdevhub/ngx-tw/textarea';\nexport * from '@cdevhub/ngx-tw/spinner';\nexport * from '@cdevhub/ngx-tw/progress-bar';\nexport * from '@cdevhub/ngx-tw/skeleton';\nexport * from '@cdevhub/ngx-tw/calendar';\nexport * from '@cdevhub/ngx-tw/date-picker';\nexport * from '@cdevhub/ngx-tw/date-range-picker';\nexport * from '@cdevhub/ngx-tw/time-picker';\nexport * from '@cdevhub/ngx-tw/slider';\nexport * from '@cdevhub/ngx-tw/stepper';\nexport * from '@cdevhub/ngx-tw/paginator';\nexport * from '@cdevhub/ngx-tw/sort';\nexport * from '@cdevhub/ngx-tw/split';\nexport * from '@cdevhub/ngx-tw/table';\nexport * from '@cdevhub/ngx-tw/item';\nexport * from '@cdevhub/ngx-tw/breadcrumbs';\nexport * from '@cdevhub/ngx-tw/timeline';\nexport * from '@cdevhub/ngx-tw/carousel';\nexport * from '@cdevhub/ngx-tw/stat';\nexport * from '@cdevhub/ngx-tw/combobox';\nexport * from '@cdevhub/ngx-tw/empty-state';\nexport * from '@cdevhub/ngx-tw/sheet';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cdevhub-ngx-tw.mjs","sources":["../../../projects/ngx-tw/src/public-api.ts","../../../projects/ngx-tw/src/cdevhub-ngx-tw.ts"],"sourcesContent":["/*\n * Public API Surface of ngx-tw\n *\n * Consumers should use direct imports for tree-shaking:\n * import { ButtonDirective } from '@cdevhub/ngx-tw/button';\n */\n\nexport * from '@cdevhub/ngx-tw/core';\nexport * from '@cdevhub/ngx-tw/badge';\nexport * from '@cdevhub/ngx-tw/button';\nexport * from '@cdevhub/ngx-tw/card';\nexport * from '@cdevhub/ngx-tw/flip-card';\nexport * from '@cdevhub/ngx-tw/alert';\nexport * from '@cdevhub/ngx-tw/tabs';\nexport * from '@cdevhub/ngx-tw/tab-nav';\nexport * from '@cdevhub/ngx-tw/separator';\nexport * from '@cdevhub/ngx-tw/tooltip';\nexport * from '@cdevhub/ngx-tw/code-block';\nexport * from '@cdevhub/ngx-tw/segmented-control';\nexport * from '@cdevhub/ngx-tw/avatar';\nexport * from '@cdevhub/ngx-tw/menu';\nexport * from '@cdevhub/ngx-tw/icon';\nexport * from '@cdevhub/ngx-tw/collapsible';\nexport * from '@cdevhub/ngx-tw/accordion';\nexport * from '@cdevhub/ngx-tw/popover';\nexport * from '@cdevhub/ngx-tw/dialog';\nexport * from '@cdevhub/ngx-tw/command-palette';\nexport * from '@cdevhub/ngx-tw/toast';\nexport * from '@cdevhub/ngx-tw/transfer';\nexport * from '@cdevhub/ngx-tw/form-field';\nexport * from '@cdevhub/ngx-tw/switch';\nexport * from '@cdevhub/ngx-tw/checkbox';\nexport * from '@cdevhub/ngx-tw/radio';\nexport * from '@cdevhub/ngx-tw/select';\nexport * from '@cdevhub/ngx-tw/input';\nexport * from '@cdevhub/ngx-tw/textarea';\nexport * from '@cdevhub/ngx-tw/file-upload';\nexport * from '@cdevhub/ngx-tw/number-input';\nexport * from '@cdevhub/ngx-tw/tags-input';\nexport * from '@cdevhub/ngx-tw/spinner';\nexport * from '@cdevhub/ngx-tw/progress-bar';\nexport * from '@cdevhub/ngx-tw/skeleton';\nexport * from '@cdevhub/ngx-tw/calendar';\nexport * from '@cdevhub/ngx-tw/date-picker';\nexport * from '@cdevhub/ngx-tw/date-range-picker';\nexport * from '@cdevhub/ngx-tw/time-picker';\nexport * from '@cdevhub/ngx-tw/slider';\nexport * from '@cdevhub/ngx-tw/stepper';\nexport * from '@cdevhub/ngx-tw/paginator';\nexport * from '@cdevhub/ngx-tw/sort';\nexport * from '@cdevhub/ngx-tw/split';\nexport * from '@cdevhub/ngx-tw/table';\nexport * from '@cdevhub/ngx-tw/item';\nexport * from '@cdevhub/ngx-tw/breadcrumbs';\nexport * from '@cdevhub/ngx-tw/timeline';\nexport * from '@cdevhub/ngx-tw/carousel';\nexport * from '@cdevhub/ngx-tw/stat';\nexport * from '@cdevhub/ngx-tw/combobox';\nexport * from '@cdevhub/ngx-tw/empty-state';\nexport * from '@cdevhub/ngx-tw/sheet';\nexport * from '@cdevhub/ngx-tw/aspect-ratio';\nexport * from '@cdevhub/ngx-tw/tree';\nexport * from '@cdevhub/ngx-tw/theme';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AAKG;;ACLH;;AAEG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cdevhub/ngx-tw",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Angular component library for Tailwind CSS v4 — accessible, signal-based, built on Angular CDK.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -24,23 +24,8 @@
|
|
|
24
24
|
"bugs": {
|
|
25
25
|
"url": "https://github.com/avs2001/ngx-tw/issues"
|
|
26
26
|
},
|
|
27
|
-
"peerDependencies": {
|
|
28
|
-
"@angular/common": "^21.2.0",
|
|
29
|
-
"@angular/core": "^21.2.0",
|
|
30
|
-
"@angular/cdk": "^21.0.0",
|
|
31
|
-
"tailwindcss": "^4.0.0",
|
|
32
|
-
"tailwind-variants": "^0.3.0"
|
|
33
|
-
},
|
|
34
|
-
"dependencies": {
|
|
35
|
-
"tslib": "^2.3.0"
|
|
36
|
-
},
|
|
37
|
-
"sideEffects": false,
|
|
38
|
-
"publishConfig": {
|
|
39
|
-
"access": "public"
|
|
40
|
-
},
|
|
41
|
-
"module": "fesm2022/cdevhub-ngx-tw.mjs",
|
|
42
|
-
"typings": "types/cdevhub-ngx-tw.d.ts",
|
|
43
27
|
"exports": {
|
|
28
|
+
"./theme/*.css": "./theme/*.css",
|
|
44
29
|
"./package.json": {
|
|
45
30
|
"default": "./package.json"
|
|
46
31
|
},
|
|
@@ -56,6 +41,10 @@
|
|
|
56
41
|
"types": "./types/cdevhub-ngx-tw-alert.d.ts",
|
|
57
42
|
"default": "./fesm2022/cdevhub-ngx-tw-alert.mjs"
|
|
58
43
|
},
|
|
44
|
+
"./aspect-ratio": {
|
|
45
|
+
"types": "./types/cdevhub-ngx-tw-aspect-ratio.d.ts",
|
|
46
|
+
"default": "./fesm2022/cdevhub-ngx-tw-aspect-ratio.mjs"
|
|
47
|
+
},
|
|
59
48
|
"./avatar": {
|
|
60
49
|
"types": "./types/cdevhub-ngx-tw-avatar.d.ts",
|
|
61
50
|
"default": "./fesm2022/cdevhub-ngx-tw-avatar.mjs"
|
|
@@ -132,6 +121,10 @@
|
|
|
132
121
|
"types": "./types/cdevhub-ngx-tw-empty-state.d.ts",
|
|
133
122
|
"default": "./fesm2022/cdevhub-ngx-tw-empty-state.mjs"
|
|
134
123
|
},
|
|
124
|
+
"./file-upload": {
|
|
125
|
+
"types": "./types/cdevhub-ngx-tw-file-upload.d.ts",
|
|
126
|
+
"default": "./fesm2022/cdevhub-ngx-tw-file-upload.mjs"
|
|
127
|
+
},
|
|
135
128
|
"./flip-card": {
|
|
136
129
|
"types": "./types/cdevhub-ngx-tw-flip-card.d.ts",
|
|
137
130
|
"default": "./fesm2022/cdevhub-ngx-tw-flip-card.mjs"
|
|
@@ -160,6 +153,10 @@
|
|
|
160
153
|
"types": "./types/cdevhub-ngx-tw-menu.d.ts",
|
|
161
154
|
"default": "./fesm2022/cdevhub-ngx-tw-menu.mjs"
|
|
162
155
|
},
|
|
156
|
+
"./number-input": {
|
|
157
|
+
"types": "./types/cdevhub-ngx-tw-number-input.d.ts",
|
|
158
|
+
"default": "./fesm2022/cdevhub-ngx-tw-number-input.mjs"
|
|
159
|
+
},
|
|
163
160
|
"./paginator": {
|
|
164
161
|
"types": "./types/cdevhub-ngx-tw-paginator.d.ts",
|
|
165
162
|
"default": "./fesm2022/cdevhub-ngx-tw-paginator.mjs"
|
|
@@ -236,6 +233,10 @@
|
|
|
236
233
|
"types": "./types/cdevhub-ngx-tw-tabs.d.ts",
|
|
237
234
|
"default": "./fesm2022/cdevhub-ngx-tw-tabs.mjs"
|
|
238
235
|
},
|
|
236
|
+
"./tags-input": {
|
|
237
|
+
"types": "./types/cdevhub-ngx-tw-tags-input.d.ts",
|
|
238
|
+
"default": "./fesm2022/cdevhub-ngx-tw-tags-input.mjs"
|
|
239
|
+
},
|
|
239
240
|
"./textarea": {
|
|
240
241
|
"types": "./types/cdevhub-ngx-tw-textarea.d.ts",
|
|
241
242
|
"default": "./fesm2022/cdevhub-ngx-tw-textarea.mjs"
|
|
@@ -259,7 +260,34 @@
|
|
|
259
260
|
"./tooltip": {
|
|
260
261
|
"types": "./types/cdevhub-ngx-tw-tooltip.d.ts",
|
|
261
262
|
"default": "./fesm2022/cdevhub-ngx-tw-tooltip.mjs"
|
|
263
|
+
},
|
|
264
|
+
"./transfer": {
|
|
265
|
+
"types": "./types/cdevhub-ngx-tw-transfer.d.ts",
|
|
266
|
+
"default": "./fesm2022/cdevhub-ngx-tw-transfer.mjs"
|
|
267
|
+
},
|
|
268
|
+
"./tree": {
|
|
269
|
+
"types": "./types/cdevhub-ngx-tw-tree.d.ts",
|
|
270
|
+
"default": "./fesm2022/cdevhub-ngx-tw-tree.mjs"
|
|
262
271
|
}
|
|
263
272
|
},
|
|
273
|
+
"peerDependencies": {
|
|
274
|
+
"@angular/common": "^22.0.0",
|
|
275
|
+
"@angular/core": "^22.0.0",
|
|
276
|
+
"@angular/cdk": "^22.0.0",
|
|
277
|
+
"tailwindcss": "^4.0.0",
|
|
278
|
+
"tailwind-variants": "^0.3.0"
|
|
279
|
+
},
|
|
280
|
+
"dependencies": {
|
|
281
|
+
"tslib": "^2.3.0"
|
|
282
|
+
},
|
|
283
|
+
"engines": {
|
|
284
|
+
"node": "^22.22.3 || ^24.15.0 || >=26.0.0"
|
|
285
|
+
},
|
|
286
|
+
"sideEffects": false,
|
|
287
|
+
"publishConfig": {
|
|
288
|
+
"access": "public"
|
|
289
|
+
},
|
|
290
|
+
"module": "fesm2022/cdevhub-ngx-tw.mjs",
|
|
291
|
+
"typings": "types/cdevhub-ngx-tw.d.ts",
|
|
264
292
|
"type": "module"
|
|
265
293
|
}
|
package/theme/_dark.css
CHANGED
|
@@ -156,8 +156,10 @@
|
|
|
156
156
|
--color-primary-soft-hover: var(--color-blue-900);
|
|
157
157
|
--color-primary-soft-fg: var(--color-blue-100);
|
|
158
158
|
--color-primary-soft-fg-muted: var(--color-blue-300);
|
|
159
|
-
|
|
160
|
-
|
|
159
|
+
/* `-400` not `-500` — blue-500/#2b7fff on blue-950/#162456 only hits
|
|
160
|
+
3.92:1 (AA fail). blue-400 lifts that to ~7.8:1 with the same fg. */
|
|
161
|
+
--color-primary-solid: var(--color-blue-400);
|
|
162
|
+
--color-primary-solid-hover: var(--color-blue-300);
|
|
161
163
|
--color-primary-solid-fg: var(--color-blue-950);
|
|
162
164
|
--color-primary-border: var(--color-blue-800);
|
|
163
165
|
--color-primary-border-strong: var(--color-blue-500);
|
|
@@ -182,8 +184,9 @@
|
|
|
182
184
|
--color-accent-soft-hover: var(--color-violet-900);
|
|
183
185
|
--color-accent-soft-fg: var(--color-violet-100);
|
|
184
186
|
--color-accent-soft-fg-muted: var(--color-violet-300);
|
|
185
|
-
|
|
186
|
-
--color-accent-solid
|
|
187
|
+
/* violet-500/violet-950 = 3.46:1 (AA fail); -400 lifts to ~5.4:1. */
|
|
188
|
+
--color-accent-solid: var(--color-violet-400);
|
|
189
|
+
--color-accent-solid-hover: var(--color-violet-300);
|
|
187
190
|
--color-accent-solid-fg: var(--color-violet-950);
|
|
188
191
|
--color-accent-border: var(--color-violet-800);
|
|
189
192
|
--color-accent-border-strong: var(--color-violet-500);
|
|
@@ -247,8 +250,9 @@
|
|
|
247
250
|
--color-error-soft-hover: var(--color-red-900);
|
|
248
251
|
--color-error-soft-fg: var(--color-red-100);
|
|
249
252
|
--color-error-soft-fg-muted: var(--color-red-300);
|
|
250
|
-
|
|
251
|
-
--color-error-solid
|
|
253
|
+
/* red-500/red-950 = 4.14:1 (just AA fail). red-400 lifts to ~5.8:1. */
|
|
254
|
+
--color-error-solid: var(--color-red-400);
|
|
255
|
+
--color-error-solid-hover: var(--color-red-300);
|
|
252
256
|
--color-error-solid-fg: var(--color-red-950);
|
|
253
257
|
--color-error-border: var(--color-red-800);
|
|
254
258
|
--color-error-border-strong: var(--color-red-500);
|
|
@@ -398,8 +402,8 @@
|
|
|
398
402
|
--color-primary-soft-hover: var(--color-blue-900);
|
|
399
403
|
--color-primary-soft-fg: var(--color-blue-100);
|
|
400
404
|
--color-primary-soft-fg-muted: var(--color-blue-300);
|
|
401
|
-
--color-primary-solid: var(--color-blue-
|
|
402
|
-
--color-primary-solid-hover: var(--color-blue-
|
|
405
|
+
--color-primary-solid: var(--color-blue-400);
|
|
406
|
+
--color-primary-solid-hover: var(--color-blue-300);
|
|
403
407
|
--color-primary-solid-fg: var(--color-blue-950);
|
|
404
408
|
--color-primary-border: var(--color-blue-800);
|
|
405
409
|
--color-primary-border-strong: var(--color-blue-500);
|
|
@@ -424,8 +428,8 @@
|
|
|
424
428
|
--color-accent-soft-hover: var(--color-violet-900);
|
|
425
429
|
--color-accent-soft-fg: var(--color-violet-100);
|
|
426
430
|
--color-accent-soft-fg-muted: var(--color-violet-300);
|
|
427
|
-
--color-accent-solid: var(--color-violet-
|
|
428
|
-
--color-accent-solid-hover: var(--color-violet-
|
|
431
|
+
--color-accent-solid: var(--color-violet-400);
|
|
432
|
+
--color-accent-solid-hover: var(--color-violet-300);
|
|
429
433
|
--color-accent-solid-fg: var(--color-violet-950);
|
|
430
434
|
--color-accent-border: var(--color-violet-800);
|
|
431
435
|
--color-accent-border-strong: var(--color-violet-500);
|
|
@@ -489,8 +493,8 @@
|
|
|
489
493
|
--color-error-soft-hover: var(--color-red-900);
|
|
490
494
|
--color-error-soft-fg: var(--color-red-100);
|
|
491
495
|
--color-error-soft-fg-muted: var(--color-red-300);
|
|
492
|
-
--color-error-solid: var(--color-red-
|
|
493
|
-
--color-error-solid-hover: var(--color-red-
|
|
496
|
+
--color-error-solid: var(--color-red-400);
|
|
497
|
+
--color-error-solid-hover: var(--color-red-300);
|
|
494
498
|
--color-error-solid-fg: var(--color-red-950);
|
|
495
499
|
--color-error-border: var(--color-red-800);
|
|
496
500
|
--color-error-border-strong: var(--color-red-500);
|
package/theme/_semantic.css
CHANGED
|
@@ -250,8 +250,9 @@
|
|
|
250
250
|
--color-info-soft-hover: var(--color-info-100);
|
|
251
251
|
--color-info-soft-fg: var(--color-info-900);
|
|
252
252
|
--color-info-soft-fg-muted: var(--color-info-800);
|
|
253
|
-
|
|
254
|
-
--color-info-solid
|
|
253
|
+
/* Solid uses -700 not -600: sky-600/white is 3.85:1 (AA fail). -700/white is 5.6:1. */
|
|
254
|
+
--color-info-solid: var(--color-info-700);
|
|
255
|
+
--color-info-solid-hover: var(--color-info-800);
|
|
255
256
|
--color-info-solid-fg: var(--color-white);
|
|
256
257
|
--color-info-border: var(--color-info-300);
|
|
257
258
|
--color-info-border-strong: var(--color-info-500);
|
package/theme/index.css
CHANGED
|
@@ -25,8 +25,16 @@
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
/*
|
|
29
|
-
|
|
28
|
+
/* ===== Library class scanning =====
|
|
29
|
+
Paths here resolve relative to THIS file's location in the *published*
|
|
30
|
+
package (`node_modules/@cdevhub/ngx-tw/theme/`), because that is the only
|
|
31
|
+
copy a consumer ever imports. The published tarball ships compiled bundles
|
|
32
|
+
(`fesm2022/*.mjs`) and no `.ts` source, and Tailwind v4 never auto-scans
|
|
33
|
+
`node_modules` — so without this line a consumer's build emits the semantic
|
|
34
|
+
tokens and base layer but *zero* component utilities, silently. Tailwind
|
|
35
|
+
does not error on a glob that matches nothing, so a wrong path here fails
|
|
36
|
+
invisibly — `npm run verify:package` is what guards it. */
|
|
37
|
+
@source "../fesm2022/**/*.mjs";
|
|
30
38
|
|
|
31
39
|
/* ===== Slot-token utility safelist =====
|
|
32
40
|
Components consume role slot utilities (`bg-info-soft`, `text-info-fg`, …)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Sets the native CSS `aspect-ratio` property on its host element, standardizing
|
|
5
|
+
* the `aspect-[16/9]` pattern consumers otherwise hand-roll across cards,
|
|
6
|
+
* thumbnails, video, and image grids.
|
|
7
|
+
*
|
|
8
|
+
* The directive sets **only** `aspect-ratio` — it does not set `width`,
|
|
9
|
+
* `display`, or any other layout property (matching Tailwind's `aspect-*`
|
|
10
|
+
* utility). Block-level hosts already fill their container width; for replaced
|
|
11
|
+
* elements (`<img>`, `<video>`) pair it with `w-full` / `object-cover` so the
|
|
12
|
+
* box has a definite cross-axis size.
|
|
13
|
+
*
|
|
14
|
+
* Purely presentational: it adds no `role` or `aria-*` and leaves the host
|
|
15
|
+
* media's own accessibility (`alt`, `aria-*`, `title`) untouched.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```html
|
|
19
|
+
* <div twAspectRatio class="w-full bg-surface-muted"></div>
|
|
20
|
+
* <img twAspectRatio="16/9" class="w-full object-cover rounded-lg" [src]="thumb" alt="Preview" />
|
|
21
|
+
* <div [twAspectRatio]="4 / 3" class="w-full"></div>
|
|
22
|
+
* <video twAspectRatio="21:9" class="w-full" [src]="clip"></video>
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
declare class AspectRatioDirective {
|
|
26
|
+
/**
|
|
27
|
+
* Sets the host's aspect ratio. Accepts a unitless number (e.g. `1.7777`) or a
|
|
28
|
+
* ratio string using `/` or `:` (e.g. `'16/9'` or `'16:9'`). The value is
|
|
29
|
+
* normalized to CSS `'<w> / <h>'` form (a bare number `n` becomes `'n / 1'`).
|
|
30
|
+
* Invalid or non-positive values fall back to the default. Defaults to a
|
|
31
|
+
* square (`1 / 1`).
|
|
32
|
+
*/
|
|
33
|
+
readonly twAspectRatio: _angular_core.InputSignal<string | number>;
|
|
34
|
+
/** The coerced, CSS-valid `aspect-ratio` value applied to the host. */
|
|
35
|
+
readonly ratio: _angular_core.Signal<string>;
|
|
36
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AspectRatioDirective, never>;
|
|
37
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AspectRatioDirective, "[twAspectRatio]", ["twAspectRatio"], { "twAspectRatio": { "alias": "twAspectRatio"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export { AspectRatioDirective };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Provider, InjectionToken, Type, OnInit,
|
|
2
|
+
import { Provider, InjectionToken, Type, OnInit, InputSignal, WritableSignal, TemplateRef, OutputEmitterRef, Signal, ModelSignal, EnvironmentProviders } from '@angular/core';
|
|
3
3
|
import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';
|
|
4
4
|
import { RangeBehaviorConfig } from '@cdevhub/ngx-tw/core';
|
|
5
5
|
import { FormValueControl, ValidationError, WithOptionalFieldTree, DisabledReason } from '@angular/forms/signals';
|
|
@@ -523,12 +523,14 @@ declare class CalendarComponent<M extends CalendarMode = 'single', D = Date, TOu
|
|
|
523
523
|
*/
|
|
524
524
|
private readonly localStrategies;
|
|
525
525
|
/** Selection mode (§5). Changing this at runtime clears the value and emits `modeChange`. */
|
|
526
|
-
readonly
|
|
526
|
+
readonly modeInput: InputSignal<CalendarMode>;
|
|
527
|
+
readonly mode: WritableSignal<CalendarMode>;
|
|
527
528
|
/**
|
|
528
529
|
* Consumer-bound value. Shape narrows by `M`: `D | null` for single,
|
|
529
530
|
* `D[]` for multiple, `{ start; end }` for range.
|
|
530
531
|
*/
|
|
531
|
-
readonly
|
|
532
|
+
readonly valueInput: InputSignal<CalendarValue<M, D>>;
|
|
533
|
+
readonly value: WritableSignal<CalendarValue<M, D>>;
|
|
532
534
|
/** Anchor date for the displayed view. Defaults to today on mount. */
|
|
533
535
|
readonly startAt: InputSignal<D | null>;
|
|
534
536
|
/** Minimum selectable date. */
|
|
@@ -826,14 +828,43 @@ declare class CalendarComponent<M extends CalendarMode = 'single', D = Date, TOu
|
|
|
826
828
|
clearSelection(): void;
|
|
827
829
|
/** Resets to initial state — value + view + active date per `resetBehavior`. Phase 3 extends this with form-reset integration. */
|
|
828
830
|
reset(): void;
|
|
829
|
-
/**
|
|
831
|
+
/**
|
|
832
|
+
* Re-runs validation against the current constraints and cell filters.
|
|
833
|
+
*
|
|
834
|
+
* Call this after mutating a constraint imperatively (rather than through an
|
|
835
|
+
* input binding), so the bound control's errors reflect the new rules.
|
|
836
|
+
*/
|
|
830
837
|
revalidate(): void;
|
|
831
|
-
/**
|
|
838
|
+
/**
|
|
839
|
+
* Opens the overlay.
|
|
840
|
+
*
|
|
841
|
+
* @deprecated Not implemented. `tw-calendar` is inline-only today; the overlay
|
|
842
|
+
* is part of the phased v1 cutover. Use `tw-date-picker` or
|
|
843
|
+
* `tw-date-range-picker` for an overlay-mounted calendar. Throws in dev mode.
|
|
844
|
+
*/
|
|
832
845
|
open(): void;
|
|
833
|
-
/**
|
|
846
|
+
/**
|
|
847
|
+
* Closes the overlay.
|
|
848
|
+
*
|
|
849
|
+
* @deprecated Not implemented — see {@link open}. Throws in dev mode.
|
|
850
|
+
*/
|
|
834
851
|
close(): void;
|
|
835
|
-
/**
|
|
852
|
+
/**
|
|
853
|
+
* Toggles the overlay.
|
|
854
|
+
*
|
|
855
|
+
* @deprecated Not implemented — see {@link open}. Throws in dev mode.
|
|
856
|
+
*/
|
|
836
857
|
toggle(): void;
|
|
858
|
+
/**
|
|
859
|
+
* Fails loudly in development for the unimplemented overlay API.
|
|
860
|
+
*
|
|
861
|
+
* These three shipped as silent no-ops with JSDoc that described them as
|
|
862
|
+
* working ("Closes the overlay."), which Compodoc rendered straight into the
|
|
863
|
+
* published API table. A consumer calling `calendar.open()` got no overlay, no
|
|
864
|
+
* error, and no clue. Dev-mode throw turns that into an immediate, explainable
|
|
865
|
+
* failure while leaving production builds untouched.
|
|
866
|
+
*/
|
|
867
|
+
private warnOverlayUnsupported;
|
|
837
868
|
/** Imperatively focuses the currently active cell. */
|
|
838
869
|
focusActiveCell(): void;
|
|
839
870
|
/** @internal */
|
|
@@ -917,7 +948,7 @@ declare class CalendarComponent<M extends CalendarMode = 'single', D = Date, TOu
|
|
|
917
948
|
/** Locale-aware long-form date format used in announcements (e.g. "Wednesday, April 15, 2026"). */
|
|
918
949
|
private formatDate;
|
|
919
950
|
static ɵfac: i0.ɵɵFactoryDeclaration<CalendarComponent<any, any, any>, never>;
|
|
920
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CalendarComponent<any, any, any>, "tw-calendar", never, { "
|
|
951
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CalendarComponent<any, any, any>, "tw-calendar", never, { "modeInput": { "alias": "mode"; "required": false; "isSignal": true; }; "valueInput": { "alias": "value"; "required": false; "isSignal": true; }; "startAt": { "alias": "startAt"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "dateFilter": { "alias": "dateFilter"; "required": false; "isSignal": true; }; "disabledDates": { "alias": "disabledDates"; "required": false; "isSignal": true; }; "disabledDaysOfWeek": { "alias": "disabledDaysOfWeek"; "required": false; "isSignal": true; }; "constraints": { "alias": "constraints"; "required": false; "isSignal": true; }; "minRangeLength": { "alias": "minRangeLength"; "required": false; "isSignal": true; }; "maxRangeLength": { "alias": "maxRangeLength"; "required": false; "isSignal": true; }; "maxSelections": { "alias": "maxSelections"; "required": false; "isSignal": true; }; "maxSelectionBehavior": { "alias": "maxSelectionBehavior"; "required": false; "isSignal": true; }; "errorAriaDescribedBy": { "alias": "errorAriaDescribedBy"; "required": false; "isSignal": true; }; "rangeClickBehavior": { "alias": "rangeClickBehavior"; "required": false; "isSignal": true; }; "rangeBehavior": { "alias": "rangeBehavior"; "required": false; "isSignal": true; }; "dateClass": { "alias": "dateClass"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "startView": { "alias": "startView"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "monthColumns": { "alias": "monthColumns"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "resetBehavior": { "alias": "resetBehavior"; "required": false; "isSignal": true; }; "cellTemplate": { "alias": "cellTemplate"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "intl": { "alias": "intl"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "selectionStart": "selectionStart"; "rangePreview": "rangePreview"; "selectionComplete": "selectionComplete"; "selectionRestart": "selectionRestart"; "selectionCleared": "selectionCleared"; "selectionLimitReached": "selectionLimitReached"; "presetChange": "presetChange"; "viewChange": "viewChange"; "activeDateChange": "activeDateChange"; "monthChange": "monthChange"; "yearChange": "yearChange"; "cellClick": "cellClick"; "cellHover": "cellHover"; "modeChange": "modeChange"; }, never, ["[twCalendarPresets]"], true, never>;
|
|
921
952
|
}
|
|
922
953
|
|
|
923
954
|
/**
|
|
@@ -37,13 +37,14 @@ declare class CodeBlockHeaderDirective {
|
|
|
37
37
|
* projection slot for filename / extra actions.
|
|
38
38
|
*
|
|
39
39
|
* @remarks
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* landmark
|
|
45
|
-
* region
|
|
46
|
-
*
|
|
40
|
+
* **Accessibility.** The inner `<pre tabindex="0" aria-label="...">` is the
|
|
41
|
+
* focusable, keyboard-reachable scroll surface; the host is presentational.
|
|
42
|
+
* The `<pre>` carries `aria-label` for SR users but no landmark role — a
|
|
43
|
+
* documentation page can mount many code blocks at once and ARIA's
|
|
44
|
+
* `landmark-unique` rule (axe best-practice) flags duplicate
|
|
45
|
+
* `region "<lang> code"` names. Consumers who want this block to act as a
|
|
46
|
+
* page landmark can wrap it in `<section aria-label="…">` with a unique
|
|
47
|
+
* name.
|
|
47
48
|
*/
|
|
48
49
|
declare class CodeBlockComponent {
|
|
49
50
|
/** The code string to display and copy to clipboard. */
|
|
@@ -205,6 +205,13 @@ declare class CommandPaletteComponent {
|
|
|
205
205
|
private setupFocusTrap;
|
|
206
206
|
private destroyFocusTrap;
|
|
207
207
|
private disposeOverlay;
|
|
208
|
+
/**
|
|
209
|
+
* Aborts an in-flight close, leaving the palette open.
|
|
210
|
+
*
|
|
211
|
+
* The overlay is still attached (only the detach is deferred), so this
|
|
212
|
+
* restores the focus trap that `closePalette` tore down up front.
|
|
213
|
+
*/
|
|
214
|
+
private cancelPendingClose;
|
|
208
215
|
private clearCloseTimer;
|
|
209
216
|
private clearAnnounceTimer;
|
|
210
217
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CommandPaletteComponent, never>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { OnInit, TemplateRef, Signal } from '@angular/core';
|
|
3
|
-
import { ControlValueAccessor } from '@angular/forms';
|
|
3
|
+
import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
|
|
4
4
|
import { TwSize, TwColor, TimePickerFormat, ErrorStateMatcher } from '@cdevhub/ngx-tw/core';
|
|
5
5
|
export { TimePickerFormat } from '@cdevhub/ngx-tw/core';
|
|
6
6
|
import { FormFieldControl } from '@cdevhub/ngx-tw/form-field';
|
|
@@ -72,14 +72,14 @@ interface DatePickerTimeConfig<D = Date> {
|
|
|
72
72
|
* All date operations go through the injected `DateAdapter<D>`; call
|
|
73
73
|
* `provideNativeDateAdapter()` in your app providers to bootstrap the default.
|
|
74
74
|
*/
|
|
75
|
-
declare class DatePickerComponent<D = Date> extends FormFieldControl<D> implements ControlValueAccessor, OnInit {
|
|
75
|
+
declare class DatePickerComponent<D = Date> extends FormFieldControl<D> implements ControlValueAccessor, Validator, OnInit {
|
|
76
76
|
/** Id on the date-picker's input element. Auto-generated when not provided. Used by the form-field's `<label for>` attribute. */
|
|
77
77
|
readonly idInput: _angular_core.InputSignal<string | undefined>;
|
|
78
|
-
/** Minimum selectable date. Typed input earlier than this
|
|
78
|
+
/** Minimum selectable date. Typed input earlier than this commits the value and marks the bound control invalid with `calendarMinDate`; the calendar disables the cell. Defaults to `null`. */
|
|
79
79
|
readonly minDate: _angular_core.InputSignal<D | null>;
|
|
80
|
-
/** Maximum selectable date. Typed input later than this
|
|
80
|
+
/** Maximum selectable date. Typed input later than this commits the value and marks the bound control invalid with `calendarMaxDate`; the calendar disables the cell. Defaults to `null`. */
|
|
81
81
|
readonly maxDate: _angular_core.InputSignal<D | null>;
|
|
82
|
-
/** Per-date predicate — return `false` to disable. Applied in
|
|
82
|
+
/** Per-date predicate — return `false` to disable. Applied in the calendar, the text-parse path, and the `calendarDisabledDate` validation error. */
|
|
83
83
|
readonly dateFilter: _angular_core.InputSignal<DateFilterFn<D> | null>;
|
|
84
84
|
/** Which calendar view opens first — `'day'`, `'month'`, or `'year'`. Defaults to `'day'`. */
|
|
85
85
|
readonly startView: _angular_core.InputSignal<CalendarViewState>;
|
|
@@ -173,7 +173,7 @@ declare class DatePickerComponent<D = Date> extends FormFieldControl<D> implemen
|
|
|
173
173
|
private readonly injector;
|
|
174
174
|
private readonly destroyRef;
|
|
175
175
|
private readonly formField;
|
|
176
|
-
private
|
|
176
|
+
private ngControl;
|
|
177
177
|
private readonly parentForm;
|
|
178
178
|
private readonly parentFormGroup;
|
|
179
179
|
private readonly defaultMatcher;
|
|
@@ -190,10 +190,31 @@ declare class DatePickerComponent<D = Date> extends FormFieldControl<D> implemen
|
|
|
190
190
|
readonly internalValue: _angular_core.WritableSignal<D | null>;
|
|
191
191
|
/** @internal */
|
|
192
192
|
readonly rawInputText: _angular_core.WritableSignal<string>;
|
|
193
|
-
/**
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
193
|
+
/**
|
|
194
|
+
* @internal The text the user typed that could not be parsed into a date,
|
|
195
|
+
* or `null` when the current entry parsed cleanly.
|
|
196
|
+
*
|
|
197
|
+
* This is the single source of truth for "the typed text is bad". It drives
|
|
198
|
+
* both the visual error state (via `parseError` below) and the form error
|
|
199
|
+
* (via `validate()`, which feeds it to `calendarValidator` as
|
|
200
|
+
* `lastInvalidFormValue`). Keeping one field instead of a boolean flag plus a
|
|
201
|
+
* separate string is what stops the two from disagreeing.
|
|
202
|
+
*/
|
|
203
|
+
private readonly unparseableText;
|
|
204
|
+
/** @internal Whether the current input text failed to parse. */
|
|
205
|
+
readonly parseError: Signal<boolean>;
|
|
206
|
+
/**
|
|
207
|
+
* @internal Whether the committed value violates `minDate` / `maxDate` /
|
|
208
|
+
* `dateFilter`.
|
|
209
|
+
*
|
|
210
|
+
* Derived, not a flag. An out-of-range entry is committed to the form (so the
|
|
211
|
+
* control holds what the user typed and is *invalid*, rather than silently
|
|
212
|
+
* keeping an older value), which means the value-sync effect below runs and
|
|
213
|
+
* would immediately clear any manually-set flag. Deriving it also keeps the
|
|
214
|
+
* error correct when the consumer moves a constraint after the fact, which a
|
|
215
|
+
* flag set once at commit time cannot do.
|
|
216
|
+
*/
|
|
217
|
+
readonly rangeError: Signal<boolean>;
|
|
197
218
|
/** @internal */
|
|
198
219
|
readonly focusedSignal: _angular_core.WritableSignal<boolean>;
|
|
199
220
|
private readonly cvaDisabled;
|
|
@@ -305,6 +326,11 @@ declare class DatePickerComponent<D = Date> extends FormFieldControl<D> implemen
|
|
|
305
326
|
registerOnChange(fn: (value: D | null) => void): void;
|
|
306
327
|
registerOnTouched(fn: () => void): void;
|
|
307
328
|
setDisabledState(isDisabled: boolean): void;
|
|
329
|
+
private validatorOnChange;
|
|
330
|
+
/** @internal */
|
|
331
|
+
validate(control: AbstractControl): ValidationErrors | null;
|
|
332
|
+
/** @internal */
|
|
333
|
+
registerOnValidatorChange(fn: () => void): void;
|
|
308
334
|
/** @internal */
|
|
309
335
|
setDescribedByIds(ids: string[]): void;
|
|
310
336
|
/** @internal */
|