ngwr 13.0.1 → 14.0.1
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 +69 -13
- package/aurora/aurora.scss +1 -1
- package/aurora/styles/_dark.scss +21 -0
- package/aurora/styles/_index.scss +11 -30
- package/aurora/styles/_rules.scss +25 -0
- package/border-glow/styles/_dark.scss +46 -0
- package/border-glow/styles/_index.scss +5 -0
- package/border-glow/styles/_rules.scss +0 -31
- package/button/styles/_index.scss +16 -0
- package/color-picker/styles/_index.scss +43 -5
- package/event-calendar/styles/_index.scss +15 -0
- package/fesm2022/ngwr-action-sheet.mjs +3 -3
- package/fesm2022/ngwr-affix.mjs +3 -3
- package/fesm2022/ngwr-alert.mjs +7 -7
- package/fesm2022/ngwr-alert.mjs.map +1 -1
- package/fesm2022/ngwr-anchor.mjs +3 -3
- package/fesm2022/ngwr-aurora.mjs +4 -4
- package/fesm2022/ngwr-aurora.mjs.map +1 -1
- package/fesm2022/ngwr-avatar.mjs +3 -3
- package/fesm2022/ngwr-back-top.mjs +14 -4
- package/fesm2022/ngwr-back-top.mjs.map +1 -1
- package/fesm2022/ngwr-badge.mjs +6 -6
- package/fesm2022/ngwr-bar-chart.mjs +3 -3
- package/fesm2022/ngwr-blur-text.mjs +16 -5
- package/fesm2022/ngwr-blur-text.mjs.map +1 -1
- package/fesm2022/ngwr-border-glow.mjs +4 -4
- package/fesm2022/ngwr-border-glow.mjs.map +1 -1
- package/fesm2022/ngwr-breadcrumbs.mjs +7 -7
- package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
- package/fesm2022/ngwr-burger.mjs +3 -3
- package/fesm2022/ngwr-button.mjs +88 -10
- package/fesm2022/ngwr-button.mjs.map +1 -1
- package/fesm2022/ngwr-calendar-heatmap.mjs +3 -3
- package/fesm2022/ngwr-calendar-testing.mjs +15 -0
- package/fesm2022/ngwr-calendar-testing.mjs.map +1 -1
- package/fesm2022/ngwr-calendar.mjs +53 -7
- package/fesm2022/ngwr-calendar.mjs.map +1 -1
- package/fesm2022/ngwr-card.mjs +9 -9
- package/fesm2022/ngwr-carousel.mjs +6 -6
- package/fesm2022/ngwr-cascader.mjs +4 -4
- package/fesm2022/ngwr-cascader.mjs.map +1 -1
- package/fesm2022/ngwr-checkbox.mjs +6 -6
- package/fesm2022/ngwr-circular-text.mjs +23 -4
- package/fesm2022/ngwr-circular-text.mjs.map +1 -1
- package/fesm2022/ngwr-click-spark.mjs +3 -3
- package/fesm2022/ngwr-clipboard.mjs +3 -3
- package/fesm2022/ngwr-collapse.mjs +9 -9
- package/fesm2022/ngwr-collapse.mjs.map +1 -1
- package/fesm2022/ngwr-color-picker-testing.mjs +23 -7
- package/fesm2022/ngwr-color-picker-testing.mjs.map +1 -1
- package/fesm2022/ngwr-color-picker.mjs +93 -14
- package/fesm2022/ngwr-color-picker.mjs.map +1 -1
- package/fesm2022/ngwr-command-palette.mjs +29 -5
- package/fesm2022/ngwr-command-palette.mjs.map +1 -1
- package/fesm2022/ngwr-compare.mjs +3 -3
- package/fesm2022/ngwr-confetti.mjs +3 -3
- package/fesm2022/ngwr-context-menu.mjs +18 -12
- package/fesm2022/ngwr-context-menu.mjs.map +1 -1
- package/fesm2022/ngwr-cookie.mjs +3 -3
- package/fesm2022/ngwr-counter.mjs +6 -6
- package/fesm2022/ngwr-date-adapters-fns.mjs +104 -36
- package/fesm2022/ngwr-date-adapters-fns.mjs.map +1 -1
- package/fesm2022/ngwr-date-adapters-luxon.mjs +3 -3
- package/fesm2022/ngwr-date-picker-testing.mjs +10 -2
- package/fesm2022/ngwr-date-picker-testing.mjs.map +1 -1
- package/fesm2022/ngwr-date-picker.mjs +118 -28
- package/fesm2022/ngwr-date-picker.mjs.map +1 -1
- package/fesm2022/ngwr-date.mjs +483 -82
- package/fesm2022/ngwr-date.mjs.map +1 -1
- package/fesm2022/ngwr-decrypt-text.mjs +3 -3
- package/fesm2022/ngwr-density.mjs +6 -6
- package/fesm2022/ngwr-descriptions.mjs +6 -6
- package/fesm2022/ngwr-dialog.mjs +15 -15
- package/fesm2022/ngwr-directives.mjs +12 -12
- package/fesm2022/ngwr-divider.mjs +3 -3
- package/fesm2022/ngwr-donut-chart.mjs +3 -3
- package/fesm2022/ngwr-drag-drop.mjs +37 -9
- package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
- package/fesm2022/ngwr-drawer.mjs +18 -18
- package/fesm2022/ngwr-dropdown.mjs +29 -12
- package/fesm2022/ngwr-dropdown.mjs.map +1 -1
- package/fesm2022/ngwr-empty.mjs +3 -3
- package/fesm2022/ngwr-event-calendar-testing.mjs.map +1 -1
- package/fesm2022/ngwr-event-calendar.mjs +6 -6
- package/fesm2022/ngwr-event-calendar.mjs.map +1 -1
- package/fesm2022/ngwr-falling-text.mjs +3 -3
- package/fesm2022/ngwr-file-upload.mjs +55 -15
- package/fesm2022/ngwr-file-upload.mjs.map +1 -1
- package/fesm2022/ngwr-form-testing.mjs +13 -7
- package/fesm2022/ngwr-form-testing.mjs.map +1 -1
- package/fesm2022/ngwr-form.mjs +44 -25
- package/fesm2022/ngwr-form.mjs.map +1 -1
- package/fesm2022/ngwr-fuzzy-text.mjs +3 -3
- package/fesm2022/ngwr-gauge.mjs +3 -3
- package/fesm2022/ngwr-glitch-text.mjs +3 -3
- package/fesm2022/ngwr-gradient-text.mjs +3 -3
- package/fesm2022/ngwr-hotkey.mjs +6 -6
- package/fesm2022/ngwr-i18n-en.mjs +63 -1
- package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-ru.mjs +28 -1
- package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
- package/fesm2022/ngwr-i18n.mjs +159 -31
- package/fesm2022/ngwr-i18n.mjs.map +1 -1
- package/fesm2022/ngwr-icon.mjs +6 -6
- package/fesm2022/ngwr-image-cropper.mjs +3 -3
- package/fesm2022/ngwr-input-number.mjs +5 -5
- package/fesm2022/ngwr-input-number.mjs.map +1 -1
- package/fesm2022/ngwr-input-otp.mjs +23 -5
- package/fesm2022/ngwr-input-otp.mjs.map +1 -1
- package/fesm2022/ngwr-input.mjs +37 -26
- package/fesm2022/ngwr-input.mjs.map +1 -1
- package/fesm2022/ngwr-keyboard.mjs +3 -3
- package/fesm2022/ngwr-knob-testing.mjs.map +1 -1
- package/fesm2022/ngwr-knob.mjs +22 -4
- package/fesm2022/ngwr-knob.mjs.map +1 -1
- package/fesm2022/ngwr-layout.mjs +15 -15
- package/fesm2022/ngwr-lightbox.mjs +4 -4
- package/fesm2022/ngwr-lightbox.mjs.map +1 -1
- package/fesm2022/ngwr-line-chart.mjs +3 -3
- package/fesm2022/ngwr-list.mjs +7 -7
- package/fesm2022/ngwr-list.mjs.map +1 -1
- package/fesm2022/ngwr-loading-bar-router.mjs +73 -0
- package/fesm2022/ngwr-loading-bar-router.mjs.map +1 -0
- package/fesm2022/ngwr-loading-bar.mjs +27 -38
- package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
- package/fesm2022/ngwr-markdown.mjs +6 -6
- package/fesm2022/ngwr-marquee.mjs +3 -3
- package/fesm2022/ngwr-media.mjs +3 -3
- package/fesm2022/ngwr-mention.mjs +109 -19
- package/fesm2022/ngwr-mention.mjs.map +1 -1
- package/fesm2022/ngwr-meta.mjs +6 -6
- package/fesm2022/ngwr-meter-group.mjs +3 -3
- package/fesm2022/ngwr-overlay.mjs +6 -6
- package/fesm2022/ngwr-page-header.mjs +3 -3
- package/fesm2022/ngwr-pagination-testing.mjs +11 -10
- package/fesm2022/ngwr-pagination-testing.mjs.map +1 -1
- package/fesm2022/ngwr-pagination.mjs +67 -32
- package/fesm2022/ngwr-pagination.mjs.map +1 -1
- package/fesm2022/ngwr-pipes.mjs +21 -21
- package/fesm2022/ngwr-platform.mjs +9 -9
- package/fesm2022/ngwr-popconfirm.mjs +7 -6
- package/fesm2022/ngwr-popconfirm.mjs.map +1 -1
- package/fesm2022/ngwr-popover.mjs +7 -6
- package/fesm2022/ngwr-popover.mjs.map +1 -1
- package/fesm2022/ngwr-progress.mjs +3 -3
- package/fesm2022/ngwr-pull-to-refresh.mjs +3 -3
- package/fesm2022/ngwr-qr.mjs +3 -3
- package/fesm2022/ngwr-radio.mjs +6 -6
- package/fesm2022/ngwr-rating.mjs +48 -22
- package/fesm2022/ngwr-rating.mjs.map +1 -1
- package/fesm2022/ngwr-result.mjs +12 -12
- package/fesm2022/ngwr-rotating-text.mjs +3 -3
- package/fesm2022/ngwr-scroll.mjs +3 -3
- package/fesm2022/ngwr-segmented.mjs +12 -8
- package/fesm2022/ngwr-segmented.mjs.map +1 -1
- package/fesm2022/ngwr-select.mjs +217 -59
- package/fesm2022/ngwr-select.mjs.map +1 -1
- package/fesm2022/ngwr-shiny-text.mjs +7 -7
- package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
- package/fesm2022/ngwr-sidebar.mjs +3 -3
- package/fesm2022/ngwr-skeleton.mjs +3 -3
- package/fesm2022/ngwr-slider.mjs +12 -8
- package/fesm2022/ngwr-slider.mjs.map +1 -1
- package/fesm2022/ngwr-sparkline.mjs +3 -3
- package/fesm2022/ngwr-speed-dial.mjs +3 -3
- package/fesm2022/ngwr-spinner.mjs +3 -3
- package/fesm2022/ngwr-splash-cursor.mjs +3 -3
- package/fesm2022/ngwr-split-text.mjs +3 -3
- package/fesm2022/ngwr-splitter-testing.mjs.map +1 -1
- package/fesm2022/ngwr-splitter.mjs +3 -3
- package/fesm2022/ngwr-spotlight-card.mjs +7 -7
- package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
- package/fesm2022/ngwr-squircle.mjs +7 -6
- package/fesm2022/ngwr-squircle.mjs.map +1 -1
- package/fesm2022/ngwr-star-border.mjs +4 -4
- package/fesm2022/ngwr-star-border.mjs.map +1 -1
- package/fesm2022/ngwr-statistic.mjs +44 -13
- package/fesm2022/ngwr-statistic.mjs.map +1 -1
- package/fesm2022/ngwr-stepper.mjs +6 -6
- package/fesm2022/ngwr-storage.mjs +11 -3
- package/fesm2022/ngwr-storage.mjs.map +1 -1
- package/fesm2022/ngwr-switch.mjs +3 -3
- package/fesm2022/ngwr-table.mjs +51 -28
- package/fesm2022/ngwr-table.mjs.map +1 -1
- package/fesm2022/ngwr-tabs-router.mjs +158 -0
- package/fesm2022/ngwr-tabs-router.mjs.map +1 -0
- package/fesm2022/ngwr-tabs-testing.mjs +13 -11
- package/fesm2022/ngwr-tabs-testing.mjs.map +1 -1
- package/fesm2022/ngwr-tabs.mjs +104 -16
- package/fesm2022/ngwr-tabs.mjs.map +1 -1
- package/fesm2022/ngwr-textarea.mjs +46 -6
- package/fesm2022/ngwr-textarea.mjs.map +1 -1
- package/fesm2022/ngwr-theme.mjs +90 -4
- package/fesm2022/ngwr-theme.mjs.map +1 -1
- package/fesm2022/ngwr-tilt-card.mjs +7 -7
- package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
- package/fesm2022/ngwr-timeline.mjs +6 -6
- package/fesm2022/ngwr-toast.mjs +116 -11
- package/fesm2022/ngwr-toast.mjs.map +1 -1
- package/fesm2022/ngwr-toolbar.mjs +3 -3
- package/fesm2022/ngwr-tour.mjs +6 -6
- package/fesm2022/ngwr-tour.mjs.map +1 -1
- package/fesm2022/ngwr-transfer.mjs +4 -4
- package/fesm2022/ngwr-transfer.mjs.map +1 -1
- package/fesm2022/ngwr-tree.mjs +35 -12
- package/fesm2022/ngwr-tree.mjs.map +1 -1
- package/fesm2022/ngwr-typewriter.mjs +3 -3
- package/fesm2022/ngwr-typography.mjs +3 -3
- package/fesm2022/ngwr-utils.mjs +37 -1
- package/fesm2022/ngwr-utils.mjs.map +1 -1
- package/fesm2022/ngwr-version.mjs +1 -1
- package/fesm2022/ngwr-version.mjs.map +1 -1
- package/fesm2022/ngwr-virtual-scroll.mjs +3 -3
- package/fesm2022/ngwr-waves.mjs +4 -4
- package/fesm2022/ngwr-waves.mjs.map +1 -1
- package/fesm2022/ngwr-window-testing.mjs +10 -2
- package/fesm2022/ngwr-window-testing.mjs.map +1 -1
- package/fesm2022/ngwr-window.mjs +15 -15
- package/fesm2022/ngwr-window.mjs.map +1 -1
- package/i18n/en.json +33 -6
- package/i18n/ru.json +33 -6
- package/llms-full.txt +29 -20
- package/llms.txt +127 -25
- package/mcp/catalog.js +3 -3
- package/mcp/providers.js +11 -0
- package/package.json +9 -1
- package/schematics/migrations/v13/index.js +101 -0
- package/schematics/migrations/v14/index.js +422 -0
- package/schematics/migrations.json +10 -0
- package/schematics/page/templates.js +1 -1
- package/schematics/use/symbol-map.json +1 -0
- package/shiny-text/styles/_dark.scss +20 -0
- package/shiny-text/styles/_index.scss +5 -0
- package/shiny-text/styles/_rules.scss +0 -4
- package/skills/ngwr/SKILL.md +4 -1
- package/skills/ngwr/references/catalog.md +2 -0
- package/skills/ngwr/references/setup.md +4 -0
- package/spotlight-card/styles/_dark.scss +21 -0
- package/spotlight-card/styles/_index.scss +5 -0
- package/spotlight-card/styles/_rules.scss +0 -6
- package/star-border/styles/_dark.scss +21 -0
- package/star-border/styles/_index.scss +5 -0
- package/star-border/styles/_rules.scss +0 -5
- package/stepper/styles/_index.scss +19 -1
- package/textarea/styles/_index.scss +14 -6
- package/theme/styles/_colors.scss +102 -0
- package/theme/styles/_focus.scss +31 -1
- package/tilt-card/styles/_dark.scss +21 -0
- package/tilt-card/styles/_index.scss +5 -0
- package/tilt-card/styles/_rules.scss +0 -5
- package/toast/styles/_index.scss +12 -4
- package/types/ngwr-alert.d.ts +3 -3
- package/types/ngwr-blur-text.d.ts +8 -0
- package/types/ngwr-button.d.ts +45 -2
- package/types/ngwr-calendar-testing.d.ts +21 -4
- package/types/ngwr-calendar.d.ts +37 -0
- package/types/ngwr-circular-text.d.ts +9 -0
- package/types/ngwr-collapse.d.ts +19 -15
- package/types/ngwr-color-picker-testing.d.ts +10 -4
- package/types/ngwr-color-picker.d.ts +70 -2
- package/types/ngwr-command-palette.d.ts +14 -0
- package/types/ngwr-context-menu.d.ts +1 -1
- package/types/ngwr-date-adapters-fns.d.ts +71 -29
- package/types/ngwr-date-picker-testing.d.ts +206 -185
- package/types/ngwr-date-picker.d.ts +7 -0
- package/types/ngwr-date.d.ts +143 -13
- package/types/ngwr-drag-drop.d.ts +19 -0
- package/types/ngwr-dropdown.d.ts +18 -2
- package/types/ngwr-event-calendar-testing.d.ts +12 -9
- package/types/ngwr-file-upload.d.ts +31 -3
- package/types/ngwr-form-testing.d.ts +13 -7
- package/types/ngwr-form.d.ts +47 -12
- package/types/ngwr-i18n.d.ts +89 -7
- package/types/ngwr-input-number.d.ts +1 -1
- package/types/ngwr-input-otp.d.ts +3 -0
- package/types/ngwr-input.d.ts +13 -5
- package/types/ngwr-knob-testing.d.ts +8 -4
- package/types/ngwr-knob.d.ts +18 -0
- package/types/ngwr-loading-bar-router.d.ts +35 -0
- package/types/ngwr-loading-bar.d.ts +19 -9
- package/types/ngwr-mention.d.ts +13 -0
- package/types/ngwr-pagination-testing.d.ts +11 -10
- package/types/ngwr-pagination.d.ts +39 -10
- package/types/ngwr-popconfirm.d.ts +1 -1
- package/types/ngwr-popover.d.ts +1 -1
- package/types/ngwr-rating.d.ts +25 -4
- package/types/ngwr-segmented.d.ts +1 -0
- package/types/ngwr-select.d.ts +110 -19
- package/types/ngwr-slider.d.ts +1 -0
- package/types/ngwr-splitter-testing.d.ts +9 -4
- package/types/ngwr-squircle.d.ts +1 -1
- package/types/ngwr-statistic.d.ts +22 -2
- package/types/ngwr-storage.d.ts +39 -1
- package/types/ngwr-table.d.ts +24 -5
- package/types/ngwr-tabs-router.d.ts +67 -0
- package/types/ngwr-tabs-testing.d.ts +12 -10
- package/types/ngwr-tabs.d.ts +103 -6
- package/types/ngwr-textarea.d.ts +29 -0
- package/types/ngwr-theme.d.ts +92 -2
- package/types/ngwr-toast.d.ts +53 -0
- package/types/ngwr-tree.d.ts +10 -2
- package/types/ngwr-utils.d.ts +33 -1
- package/types/ngwr-version.d.ts +1 -1
- package/types/ngwr-window-testing.d.ts +11 -3
- package/types/ngwr-window.d.ts +11 -4
- package/waves/styles/_dark.scss +19 -0
- package/waves/styles/_index.scss +5 -0
- package/waves/styles/_rules.scss +0 -3
- package/window/styles/_index.scss +1 -1
package/i18n/en.json
CHANGED
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
"goToPage": "Go to page {{page}}",
|
|
30
30
|
"label": "Pagination",
|
|
31
31
|
"pageOf": "Page {{current}} of {{total}}",
|
|
32
|
-
"
|
|
32
|
+
"range": "{{from}}–{{to}} of {{total}}",
|
|
33
|
+
"compact": "{{current}} / {{total}}"
|
|
33
34
|
},
|
|
34
35
|
"table": {
|
|
35
36
|
"empty": "No data",
|
|
@@ -120,12 +121,14 @@
|
|
|
120
121
|
"collapse": "Collapse",
|
|
121
122
|
"placeholder": "Select…",
|
|
122
123
|
"clearSelection": "Clear selection",
|
|
123
|
-
"removeItem": "Remove {{label}}"
|
|
124
|
+
"removeItem": "Remove {{label}}",
|
|
125
|
+
"more": "+{{count}} more"
|
|
124
126
|
},
|
|
125
127
|
"commandPalette": {
|
|
126
128
|
"label": "Command palette",
|
|
127
129
|
"placeholder": "Type a command or search…",
|
|
128
|
-
"noResults": "No results"
|
|
130
|
+
"noResults": "No results",
|
|
131
|
+
"escHint": "esc"
|
|
129
132
|
},
|
|
130
133
|
"empty": {
|
|
131
134
|
"noData": "No data"
|
|
@@ -136,7 +139,13 @@
|
|
|
136
139
|
"dropZoneLabel": "File upload drop zone — click or drop files",
|
|
137
140
|
"removeFile": "Remove file",
|
|
138
141
|
"invalid": "Unsupported file type",
|
|
139
|
-
"tooBig": "File too large"
|
|
142
|
+
"tooBig": "File too large",
|
|
143
|
+
"size": "{{value}} {{unit}}",
|
|
144
|
+
"unitByte": "B",
|
|
145
|
+
"unitKb": "KB",
|
|
146
|
+
"unitMb": "MB",
|
|
147
|
+
"unitGb": "GB",
|
|
148
|
+
"unitTb": "TB"
|
|
140
149
|
},
|
|
141
150
|
"popconfirm": {
|
|
142
151
|
"label": "Confirm action",
|
|
@@ -184,7 +193,10 @@
|
|
|
184
193
|
"prevYear": "Previous year",
|
|
185
194
|
"nextYear": "Next year",
|
|
186
195
|
"prevYears": "Previous 12 years",
|
|
187
|
-
"nextYears": "Next 12 years"
|
|
196
|
+
"nextYears": "Next 12 years",
|
|
197
|
+
"header": "{{month}} {{year}}",
|
|
198
|
+
"yearRange": "{{from}} – {{to}}",
|
|
199
|
+
"dayLabel": "{{weekday}}, {{date}}"
|
|
188
200
|
},
|
|
189
201
|
"imageCropper": {
|
|
190
202
|
"empty": "No image",
|
|
@@ -201,7 +213,18 @@
|
|
|
201
213
|
"colorPicker": {
|
|
202
214
|
"area": "Saturation and brightness, {{saturation}}% and {{brightness}}%",
|
|
203
215
|
"hue": "Hue",
|
|
204
|
-
"alpha": "Opacity"
|
|
216
|
+
"alpha": "Opacity",
|
|
217
|
+
"formatHex": "HEX",
|
|
218
|
+
"formatRgb": "RGB",
|
|
219
|
+
"formatHsl": "HSL",
|
|
220
|
+
"channelHex": "HEX",
|
|
221
|
+
"channelRed": "R",
|
|
222
|
+
"channelGreen": "G",
|
|
223
|
+
"channelBlue": "B",
|
|
224
|
+
"channelHue": "H",
|
|
225
|
+
"channelSaturation": "S%",
|
|
226
|
+
"channelLightness": "L%",
|
|
227
|
+
"channelAlpha": "A%"
|
|
205
228
|
},
|
|
206
229
|
"calendarHeatmap": {
|
|
207
230
|
"label": "Calendar heatmap"
|
|
@@ -329,6 +352,10 @@
|
|
|
329
352
|
"speedDial": {
|
|
330
353
|
"label": "Actions"
|
|
331
354
|
},
|
|
355
|
+
"statistic": {
|
|
356
|
+
"delta": "{{value}}{{suffix}}",
|
|
357
|
+
"deltaSuffix": "%"
|
|
358
|
+
},
|
|
332
359
|
"result": {
|
|
333
360
|
"notFound": "Sorry, the page you visited does not exist.",
|
|
334
361
|
"forbidden": "Sorry, you are not authorized to access this page.",
|
package/i18n/ru.json
CHANGED
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
"goToPage": "Перейти на страницу {{page}}",
|
|
30
30
|
"label": "Пагинация",
|
|
31
31
|
"pageOf": "Страница {{current}} из {{total}}",
|
|
32
|
-
"
|
|
32
|
+
"range": "{{from}}–{{to}} из {{total}}",
|
|
33
|
+
"compact": "{{current}} / {{total}}"
|
|
33
34
|
},
|
|
34
35
|
"table": {
|
|
35
36
|
"empty": "Нет данных",
|
|
@@ -120,12 +121,14 @@
|
|
|
120
121
|
"collapse": "Свернуть",
|
|
121
122
|
"placeholder": "Выберите…",
|
|
122
123
|
"clearSelection": "Очистить выбор",
|
|
123
|
-
"removeItem": "Удалить {{label}}"
|
|
124
|
+
"removeItem": "Удалить {{label}}",
|
|
125
|
+
"more": "ещё {{count}}"
|
|
124
126
|
},
|
|
125
127
|
"commandPalette": {
|
|
126
128
|
"label": "Палитра команд",
|
|
127
129
|
"placeholder": "Введите команду или поиск…",
|
|
128
|
-
"noResults": "Ничего не найдено"
|
|
130
|
+
"noResults": "Ничего не найдено",
|
|
131
|
+
"escHint": "esc"
|
|
129
132
|
},
|
|
130
133
|
"empty": {
|
|
131
134
|
"noData": "Нет данных"
|
|
@@ -136,7 +139,13 @@
|
|
|
136
139
|
"dropZoneLabel": "Зона загрузки файлов — нажмите или перетащите",
|
|
137
140
|
"removeFile": "Удалить файл",
|
|
138
141
|
"invalid": "Неподдерживаемый тип файла",
|
|
139
|
-
"tooBig": "Файл слишком большой"
|
|
142
|
+
"tooBig": "Файл слишком большой",
|
|
143
|
+
"size": "{{value}} {{unit}}",
|
|
144
|
+
"unitByte": "Б",
|
|
145
|
+
"unitKb": "КБ",
|
|
146
|
+
"unitMb": "МБ",
|
|
147
|
+
"unitGb": "ГБ",
|
|
148
|
+
"unitTb": "ТБ"
|
|
140
149
|
},
|
|
141
150
|
"popconfirm": {
|
|
142
151
|
"label": "Подтверждение действия",
|
|
@@ -184,7 +193,10 @@
|
|
|
184
193
|
"prevYear": "Предыдущий год",
|
|
185
194
|
"nextYear": "Следующий год",
|
|
186
195
|
"prevYears": "Предыдущие 12 лет",
|
|
187
|
-
"nextYears": "Следующие 12 лет"
|
|
196
|
+
"nextYears": "Следующие 12 лет",
|
|
197
|
+
"header": "{{month}} {{year}}",
|
|
198
|
+
"yearRange": "{{from}} – {{to}}",
|
|
199
|
+
"dayLabel": "{{weekday}}, {{date}}"
|
|
188
200
|
},
|
|
189
201
|
"imageCropper": {
|
|
190
202
|
"empty": "Нет изображения",
|
|
@@ -201,7 +213,18 @@
|
|
|
201
213
|
"colorPicker": {
|
|
202
214
|
"area": "Насыщенность и яркость, {{saturation}}% и {{brightness}}%",
|
|
203
215
|
"hue": "Оттенок",
|
|
204
|
-
"alpha": "Непрозрачность"
|
|
216
|
+
"alpha": "Непрозрачность",
|
|
217
|
+
"formatHex": "HEX",
|
|
218
|
+
"formatRgb": "RGB",
|
|
219
|
+
"formatHsl": "HSL",
|
|
220
|
+
"channelHex": "HEX",
|
|
221
|
+
"channelRed": "R",
|
|
222
|
+
"channelGreen": "G",
|
|
223
|
+
"channelBlue": "B",
|
|
224
|
+
"channelHue": "H",
|
|
225
|
+
"channelSaturation": "S%",
|
|
226
|
+
"channelLightness": "L%",
|
|
227
|
+
"channelAlpha": "A%"
|
|
205
228
|
},
|
|
206
229
|
"calendarHeatmap": {
|
|
207
230
|
"label": "Календарная тепловая карта"
|
|
@@ -329,6 +352,10 @@
|
|
|
329
352
|
"speedDial": {
|
|
330
353
|
"label": "Действия"
|
|
331
354
|
},
|
|
355
|
+
"statistic": {
|
|
356
|
+
"delta": "{{value}}{{suffix}}",
|
|
357
|
+
"deltaSuffix": "%"
|
|
358
|
+
},
|
|
332
359
|
"result": {
|
|
333
360
|
"notFound": "Извините, страница не найдена.",
|
|
334
361
|
"forbidden": "Извините, доступ к этой странице ограничен.",
|
package/llms-full.txt
CHANGED
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
|
|
130
130
|
## ngwr/calendar/testing
|
|
131
131
|
- import: `import { WrCalendarDayHarness } from 'ngwr/calendar/testing'`
|
|
132
|
-
- exports: WrCalendarDayHarness, WrCalendarHarness, WrCalendarChip, WrCalendarDayHarnessFilters, WrCalendarHarnessFilters, WrCalendarView
|
|
132
|
+
- exports: WrCalendarDayHarness, WrCalendarHarness, WrCalendarArrowKey, WrCalendarChip, WrCalendarDayHarnessFilters, WrCalendarHarnessFilters, WrCalendarView
|
|
133
133
|
|
|
134
134
|
## ngwr/card
|
|
135
135
|
- import: `import { WrCard } from 'ngwr/card'`
|
|
@@ -191,7 +191,7 @@
|
|
|
191
191
|
## ngwr/collapse
|
|
192
192
|
- import: `import { WrCollapse } from 'ngwr/collapse'`
|
|
193
193
|
- selector: `wr-accordion`, `wr-collapse-group`, `wr-collapse`
|
|
194
|
-
- exports: WrCollapse, WrCollapseGroup, WrAccordion, WR_COLLAPSE_GROUP, WrCollapseGroupContext
|
|
194
|
+
- exports: WrCollapse, WrCollapseGroup, WrAccordion, WR_COLLAPSE_GROUP, WrCollapseGroupContext, WrCollapseGroupMember
|
|
195
195
|
- Expandable panel with a clickable header. Two-way binds `open`. Wrap in `<wr-collapse-group accordion>` for single-open behavior.
|
|
196
196
|
|
|
197
197
|
## ngwr/collapse/testing
|
|
@@ -262,15 +262,15 @@
|
|
|
262
262
|
- import: `import { WrDatePicker } from 'ngwr/date-picker'`
|
|
263
263
|
- selector: `wr-date-picker`, `wr-date-range-picker`
|
|
264
264
|
- exports: WrDatePicker, WrDateRangePicker, WrDateRange
|
|
265
|
-
- Unified date / time / date-time picker. `<input>` + popover for every mode — overlay content swaps based on `[mode]`. Parses on every keystroke (silently — only emits when valid), reformats canonical on blur. Format driven by `WrDateAdapter`. A signal-forms native control — it implements `FormValueControl`, so `[formField]` binds straight to its `value` model. `[(value)]` works standalone, and `[(ngModel)]` / reactive forms keep working through Angular's bridge.
|
|
265
|
+
- Unified date / time / date-time picker. `<input>` + popover for every mode — overlay content swaps based on `[mode]`. Parses on every keystroke (silently — only emits when valid), reformats canonical on blur. Format driven by `WrDateAdapter`. A signal-forms native control — it implements `FormValueControl`, so `[formField]` binds straight to its `value` model. `[(value)]` works standalone, and `[(ngModel)]` / reactive forms keep working through [Angular 22's forms bridge](/guides/forms).
|
|
266
266
|
|
|
267
267
|
## ngwr/date-picker/testing
|
|
268
268
|
- import: `import { WrDatePickerDayHarness } from 'ngwr/date-picker/testing'`
|
|
269
|
-
- exports: WrDatePickerDayHarness, WrDatePickerHarness, WrDateRangePickerHarness, WrDatePickerDayHarnessFilters, WrDatePickerHarnessFilters, WrDatePickerTimeFields, WrDateRangePickerHarnessFilters
|
|
269
|
+
- exports: WrDatePickerDayHarness, WrDatePickerHarness, WrDateRangePickerHarness, WrAnyDatePickerHarness, WrDatePickerDayHarnessFilters, WrDatePickerHarnessFilters, WrDatePickerTimeFields, WrDateRangePickerEnd, WrDateRangePickerHarnessFilters
|
|
270
270
|
|
|
271
271
|
## ngwr/date/adapters/fns
|
|
272
272
|
- import: `import { WrDateFnsAdapter } from 'ngwr/date/adapters/fns'`
|
|
273
|
-
- exports: WrDateFnsAdapter, provideWrDateFnsAdapter
|
|
273
|
+
- exports: WrDateFnsAdapter, provideWrDateFnsAdapter, WR_DATE_FNS_LOCALE
|
|
274
274
|
|
|
275
275
|
## ngwr/date/adapters/luxon
|
|
276
276
|
- import: `import { WrLuxonAdapter } from 'ngwr/date/adapters/luxon'`
|
|
@@ -369,7 +369,7 @@
|
|
|
369
369
|
|
|
370
370
|
## ngwr/event-calendar/testing
|
|
371
371
|
- import: `import { WrEventCalendarChipHarness } from 'ngwr/event-calendar/testing'`
|
|
372
|
-
- exports: WrEventCalendarChipHarness, WrEventCalendarHarness, WrEventCalendarChipHarnessFilters, WrEventCalendarHarnessFilters
|
|
372
|
+
- exports: WrEventCalendarChipHarness, WrEventCalendarHarness, WrEventCalendarArrowKey, WrEventCalendarChipHarnessFilters, WrEventCalendarHarnessFilters
|
|
373
373
|
|
|
374
374
|
## ngwr/falling-text
|
|
375
375
|
- import: `import { WrFallingText } from 'ngwr/falling-text'`
|
|
@@ -529,7 +529,7 @@
|
|
|
529
529
|
|
|
530
530
|
## ngwr/knob/testing
|
|
531
531
|
- import: `import { WrKnobHarness } from 'ngwr/knob/testing'`
|
|
532
|
-
- exports: WrKnobHarness, WrKnobHarnessFilters
|
|
532
|
+
- exports: WrKnobHarness, WrKnobArrowKey, WrKnobHarnessFilters
|
|
533
533
|
|
|
534
534
|
## ngwr/layout
|
|
535
535
|
- import: `import { WrLayout } from 'ngwr/layout'`
|
|
@@ -567,7 +567,11 @@
|
|
|
567
567
|
- import: `import { WrLoadingBar } from 'ngwr/loading-bar'`
|
|
568
568
|
- selector: `wr-loading-bar`
|
|
569
569
|
- exports: WrLoadingBar, WrLoadingState, WrLoadingBarComponent
|
|
570
|
-
- Top-of-page progress bar
|
|
570
|
+
- Top-of-page progress bar with a `start()` / `complete()` slot API for HTTP interceptors or any long-running task. Add `provideWrLoadingBarRouter()` and router navigations drive it as well — an opt-in, because that subscription is what would otherwise pull `@angular/router` into an app that never routes.
|
|
571
|
+
|
|
572
|
+
## ngwr/loading-bar/router
|
|
573
|
+
- import: `import { provideWrLoadingBarRouter } from 'ngwr/loading-bar/router'`
|
|
574
|
+
- exports: provideWrLoadingBarRouter
|
|
571
575
|
|
|
572
576
|
## ngwr/markdown
|
|
573
577
|
- import: `import { WrMarkdown } from 'ngwr/markdown'`
|
|
@@ -634,7 +638,7 @@
|
|
|
634
638
|
- import: `import { WrPagination } from 'ngwr/pagination'`
|
|
635
639
|
- selector: `wr-pagination`
|
|
636
640
|
- exports: WrPagination, WrPaginationAlign, WrPaginationSize, WrPaginationShape
|
|
637
|
-
- Numbered page navigator. Two-way binds
|
|
641
|
+
- Numbered page navigator. Two-way binds page and pageSize via signal models.
|
|
638
642
|
|
|
639
643
|
## ngwr/pagination/testing
|
|
640
644
|
- import: `import { WrPaginationHarness } from 'ngwr/pagination/testing'`
|
|
@@ -691,7 +695,7 @@
|
|
|
691
695
|
- import: `import { WrRadio } from 'ngwr/radio'`
|
|
692
696
|
- selector: `wr-radio-group`, `wr-radio`
|
|
693
697
|
- exports: WrRadio, WrRadioSize, WrRadioGroup, WR_RADIO_GROUP, WrRadioGroupContext
|
|
694
|
-
- Single-choice option. Always used inside <wr-radio-group>, which is the form control: it implements `FormValueControl`, so `[formField]` binds straight to its `value` model. `[(value)]` works standalone, and `[(ngModel)]` / reactive forms keep working through Angular's bridge.
|
|
698
|
+
- Single-choice option. Always used inside <wr-radio-group>, which is the form control: it implements `FormValueControl`, so `[formField]` binds straight to its `value` model. `[(value)]` works standalone, and `[(ngModel)]` / reactive forms keep working through [Angular 22's forms bridge](/guides/forms).
|
|
695
699
|
|
|
696
700
|
## ngwr/radio/testing
|
|
697
701
|
- import: `import { WrRadioGroupHarness } from 'ngwr/radio/testing'`
|
|
@@ -701,7 +705,7 @@
|
|
|
701
705
|
- import: `import { WrRating } from 'ngwr/rating'`
|
|
702
706
|
- selector: `wr-rating`
|
|
703
707
|
- exports: WrRating, WrRatingSize
|
|
704
|
-
- Star rating input with whole or half-step granularity. Value type is `number | null
|
|
708
|
+
- Star rating input with whole or half-step granularity. Value type is `number | null`; `[0, count]` bounds what the control's own edits produce. Keyboard: arrows step by `step`, Home / End jump to 0 / max, Delete / Backspace clears.
|
|
705
709
|
|
|
706
710
|
## ngwr/rating/testing
|
|
707
711
|
- import: `import { WrRatingHarness } from 'ngwr/rating/testing'`
|
|
@@ -742,7 +746,7 @@
|
|
|
742
746
|
- import: `import { WrSelect } from 'ngwr/select'`
|
|
743
747
|
- selector: `wr-option-group`, `wr-option`, `wr-select`
|
|
744
748
|
- exports: WrSelect, WrOption, WrOptionGroup, WR_SELECT, WrSelectContext, WrSelectMode, WrSelectSearchLoader, WrSelectTagValidator, WrSelectSize
|
|
745
|
-
- Native-like select built on CDK Overlay. A signal-forms native control — it implements `FormValueControl`, so `[formField]` binds straight to its `value` model. `[(value)]` works standalone, and `[(ngModel)]` / reactive forms keep working through Angular's bridge.
|
|
749
|
+
- Native-like select built on CDK Overlay. A signal-forms native control — it implements `FormValueControl`, so `[formField]` binds straight to its `value` model. `[(value)]` works standalone, and `[(ngModel)]` / reactive forms keep working through [Angular 22's forms bridge](/guides/forms).
|
|
746
750
|
|
|
747
751
|
## ngwr/select/testing
|
|
748
752
|
- import: `import { WrOptionHarness } from 'ngwr/select/testing'`
|
|
@@ -774,7 +778,7 @@
|
|
|
774
778
|
- import: `import { WrSlider } from 'ngwr/slider'`
|
|
775
779
|
- selector: `wr-slider`
|
|
776
780
|
- exports: WrSlider, WrSliderValue
|
|
777
|
-
- Drag-to-pick numeric input. Single-thumb by default, optional dual-thumb range mode. A signal-forms native control — it implements `FormValueControl`, so `[formField]` binds straight to its `value` model. `[(value)]` works standalone, and template-driven `[(ngModel)]` / reactive forms keep working through Angular's bridge.
|
|
781
|
+
- Drag-to-pick numeric input. Single-thumb by default, optional dual-thumb range mode. A signal-forms native control — it implements `FormValueControl`, so `[formField]` binds straight to its `value` model. `[(value)]` works standalone, and template-driven `[(ngModel)]` / reactive forms keep working through [Angular 22's forms bridge](/guides/forms).
|
|
778
782
|
|
|
779
783
|
## ngwr/slider/testing
|
|
780
784
|
- import: `import { WrSliderHarness } from 'ngwr/slider/testing'`
|
|
@@ -834,7 +838,7 @@
|
|
|
834
838
|
|
|
835
839
|
## ngwr/splitter/testing
|
|
836
840
|
- import: `import { WrSplitterHarness } from 'ngwr/splitter/testing'`
|
|
837
|
-
- exports: WrSplitterHarness, WrSplitterHarnessFilters, WrSplitterPaneSizes
|
|
841
|
+
- exports: WrSplitterHarness, WrSplitterArrowKey, WrSplitterHarnessFilters, WrSplitterPaneSizes
|
|
838
842
|
|
|
839
843
|
## ngwr/spotlight-card
|
|
840
844
|
- import: `import { WrSpotlightCard } from 'ngwr/spotlight-card'`
|
|
@@ -880,14 +884,14 @@
|
|
|
880
884
|
|
|
881
885
|
## ngwr/storage
|
|
882
886
|
- import: `import { WrStorage } from 'ngwr/storage'`
|
|
883
|
-
- exports: WrStorage, provideWrStorage, ProvideWrStorageOptions, WR_STORAGE_CONFIG, DEFAULT_WR_STORAGE_CONFIG, WrStorageConfig, WrStorageConfigResolved, WR_STORAGE_ENGINE, createMemoryStorage, WrStorageEngine
|
|
887
|
+
- exports: WrStorage, provideWrStorage, ProvideWrStorageOptions, WR_STORAGE_CONFIG, DEFAULT_WR_STORAGE_CONFIG, WrStorageConfig, WrStorageConfigResolved, WR_STORAGE_ENGINE, createMemoryStorage, WrStorageEngine, WrStorageEnvelope
|
|
884
888
|
- Reactive key/value storage on top of any `Storage`-compatible engine. Swap the engine through DI (defaults to `localStorage` with an in-memory SSR / private-mode fallback). Built-in prefixing, TTL, and signal-based `watch()` for local + cross-tab updates.
|
|
885
889
|
|
|
886
890
|
## ngwr/switch
|
|
887
891
|
- import: `import { WrSwitch } from 'ngwr/switch'`
|
|
888
892
|
- selector: `wr-switch`
|
|
889
893
|
- exports: WrSwitch, WrSwitchSize
|
|
890
|
-
- Boolean toggle with an iOS-style slider. A signal-forms native control — it implements `FormCheckboxControl`, so `[formField]` binds straight to its `checked` model. `[(checked)]` works standalone, and `[(ngModel)]` / reactive forms keep working through Angular's bridge.
|
|
894
|
+
- Boolean toggle with an iOS-style slider. A signal-forms native control — it implements `FormCheckboxControl`, so `[formField]` binds straight to its `checked` model. `[(checked)]` works standalone, and `[(ngModel)]` / reactive forms keep working through [Angular 22's forms bridge](/guides/forms).
|
|
891
895
|
|
|
892
896
|
## ngwr/switch/testing
|
|
893
897
|
- import: `import { WrSwitchHarness } from 'ngwr/switch/testing'`
|
|
@@ -906,9 +910,14 @@
|
|
|
906
910
|
## ngwr/tabs
|
|
907
911
|
- import: `import { WrTabs } from 'ngwr/tabs'`
|
|
908
912
|
- selector: `wr-tab`, `wr-tabs`
|
|
909
|
-
- exports: WrTabs, WrTab, WR_TABS, WrTabsContext
|
|
913
|
+
- exports: WrTabs, WrTab, WR_TABS, WrTabsContext, WR_TABS_ROUTING, WrTabsRoutingAdapter
|
|
910
914
|
- Tabbed container. Use projected content for simple tabs, or set routerLink on children to switch into router mode.
|
|
911
915
|
|
|
916
|
+
## ngwr/tabs/router
|
|
917
|
+
- import: `import { WrTabsRouting } from 'ngwr/tabs/router'`
|
|
918
|
+
- selector: `[wrTabsRouting]`
|
|
919
|
+
- exports: WrTabsRouting
|
|
920
|
+
|
|
912
921
|
## ngwr/tabs/testing
|
|
913
922
|
- import: `import { WrTabHarness } from 'ngwr/tabs/testing'`
|
|
914
923
|
- exports: WrTabHarness, WrTabsHarness, WrTabHarnessFilters, WrTabsHarnessFilters, WrTabsHarnessSize
|
|
@@ -917,7 +926,7 @@
|
|
|
917
926
|
- import: `import { WrTextarea } from 'ngwr/textarea'`
|
|
918
927
|
- selector: `wr-textarea`
|
|
919
928
|
- exports: WrTextarea, WrTextareaSize, WrTextareaResize
|
|
920
|
-
- Multi-line text input with optional autosize. A signal-forms native control — it implements `FormValueControl`, so `[formField]` binds straight to its `value` model. `[(value)]` works standalone, and `[(ngModel)]` / reactive forms keep working through Angular's bridge.
|
|
929
|
+
- Multi-line text input with optional autosize. A signal-forms native control — it implements `FormValueControl`, so `[formField]` binds straight to its `value` model. `[(value)]` works standalone, and `[(ngModel)]` / reactive forms keep working through [Angular 22's forms bridge](/guides/forms).
|
|
921
930
|
|
|
922
931
|
## ngwr/textarea/testing
|
|
923
932
|
- import: `import { WrTextareaHarness } from 'ngwr/textarea/testing'`
|
|
@@ -925,7 +934,7 @@
|
|
|
925
934
|
|
|
926
935
|
## ngwr/theme
|
|
927
936
|
- import: `import { WrTheme } from 'ngwr/theme'`
|
|
928
|
-
- exports: WR_COLORS, wrContrastFor, wrIntentTokens, wrThemeTokens, WrColor, WrTheme, provideWrTheme, WR_THEME_CONFIG, DEFAULT_WR_THEME_CONFIG, WrResolvedTheme, WrThemeMode, WrThemeConfig
|
|
937
|
+
- exports: WR_COLORS, wrContrastFor, wrIntentTokens, wrThemeTokens, WrColor, WrTheme, provideWrTheme, wrThemePrePaintScript, WrThemePrePaintOptions, WR_THEME_CONFIG, DEFAULT_WR_THEME_CONFIG, WrResolvedTheme, WrThemeMode, WrThemeConfig
|
|
929
938
|
- Light / dark theme manager. Writes `[data-theme]` on `<html>`, persists the chosen mode to localStorage. `auto` mode follows `WrPlatform.prefersDark`.
|
|
930
939
|
|
|
931
940
|
## ngwr/tilt-card
|
|
@@ -1007,7 +1016,7 @@
|
|
|
1007
1016
|
|
|
1008
1017
|
## ngwr/utils
|
|
1009
1018
|
- import: `import { isDefined } from 'ngwr/utils'`
|
|
1010
|
-
- exports: Maybe, SafeAny, isDefined, isNonEmptyArray, isObservable, clamp, round, numAttr, isSafeCssValue, resolveCssSize, ResolveCssSizeOptions, ResolvedCssSize, getRootFontSize, getFocusableElements, trapFocus, randomId, noop, debounce, throttle, WrDebouncedFn, WrThrottledFn, KEYS, hasModifier, isPrintableKey, WrKey, badgeLog
|
|
1019
|
+
- exports: Maybe, SafeAny, isDefined, isNonEmptyArray, isObservable, clamp, round, numAttr, isSafeCssValue, resolveCssSize, ResolveCssSizeOptions, ResolvedCssSize, getRootFontSize, getFocusableElements, trapFocus, randomId, noop, debounce, throttle, WrDebouncedFn, WrThrottledFn, KEYS, hasModifier, isComposing, isPrintableKey, WrKey, badgeLog
|
|
1011
1020
|
|
|
1012
1021
|
## ngwr/validators
|
|
1013
1022
|
- import: `import { WrValidators } from 'ngwr/validators'`
|
package/llms.txt
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# ngwr
|
|
2
2
|
|
|
3
3
|
> Angular UI library — standalone, signals-first, zoneless, fully tree-shakable.
|
|
4
|
-
>
|
|
4
|
+
> 204 secondary entry points, 174 component and directive classes, built on
|
|
5
5
|
> `@angular/cdk` primitives. The only runtime dependency is `tslib`. Docs and
|
|
6
6
|
> live demos: https://ngwr.dev — source: https://github.com/thekhegay/ngwr
|
|
7
7
|
|
|
@@ -28,11 +28,36 @@ pnpm add ngwr @angular/cdk
|
|
|
28
28
|
|
|
29
29
|
Requires Angular / CDK `>= 22.0.0` (peers: `@angular/cdk`, `@angular/common`,
|
|
30
30
|
`@angular/core`, `@angular/platform-browser`, `rxjs ^7`; optional `date-fns` /
|
|
31
|
-
`luxon` / `lucide`).
|
|
31
|
+
`luxon` / `lucide`). On Angular 21 or older the INSTALL succeeds — every package
|
|
32
|
+
manager treats an unmet peer as a warning — and the `ng build` fails instead, in
|
|
33
|
+
the linker, with `Unsupported enum value for [object Object]`. The floor is real
|
|
34
|
+
and the ceiling is absent — an Angular newer than the release has not been built
|
|
35
|
+
or tested against, and nothing warns. There is no `engines` field and no
|
|
36
|
+
TypeScript peer either: both come from your Angular. What that range does and
|
|
37
|
+
does not promise: https://ngwr.dev/start/versioning
|
|
32
38
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
39
|
+
**There is no root barrel: `import { X } from 'ngwr'` is always wrong.** The root
|
|
40
|
+
entry point exports nothing, so an IDE auto-import from it gives `TS2305` and no
|
|
41
|
+
hint. Every symbol comes from its entry point — `import { WrButton } from
|
|
42
|
+
'ngwr/button'` — and the entry point is the last segment of the component's docs
|
|
43
|
+
URL. Mind the ones that do not match the selector: `<wr-btn>` is `ngwr/button`,
|
|
44
|
+
`<wr-tag>` is `ngwr/badge`, `<wr-option>` is `ngwr/select`, `<wr-accordion>` is
|
|
45
|
+
`ngwr/collapse`, `<wr-form-field>` is `ngwr/form`, `<wr-sortable-list>` is
|
|
46
|
+
`ngwr/drag-drop`, `<wr-kbd>` is `ngwr/keyboard`.
|
|
47
|
+
|
|
48
|
+
Styles: `@use 'ngwr'` (everything — about 290 kB minified, 42 kB gzipped) or
|
|
49
|
+
`@use 'ngwr/<name>'` per component in your global SCSS. **Per component, the
|
|
50
|
+
theme tokens come with each entry but the other components it renders do not**,
|
|
51
|
+
and nothing warns — the control just paints wrong. Always add `ngwr/icon` (the
|
|
52
|
+
inline chevrons, carets and sort arrows are bare SVGs sized by `.wr-icon__svg`),
|
|
53
|
+
`ngwr/density` (nothing else declares the `--wr-density-*` multipliers, so
|
|
54
|
+
`provideWrDensity()` silently does nothing without it) and `ngwr/overlay` (the
|
|
55
|
+
responsive bottom sheet). Then follow what a component renders:
|
|
56
|
+
`ngwr/table` needs checkbox / dropdown / pagination / spinner, `ngwr/pagination`
|
|
57
|
+
needs button / select, `ngwr/date-picker` needs calendar / input, and a service
|
|
58
|
+
mounts a component no template names — `WrDialog.open()` needs `ngwr/dialog`,
|
|
59
|
+
`WrToast.show()` needs `ngwr/toast`. Full table:
|
|
60
|
+
https://ngwr.dev/start/installation
|
|
36
61
|
|
|
37
62
|
## Providers (main.ts)
|
|
38
63
|
|
|
@@ -44,7 +69,11 @@ Add from their entry points as needed:
|
|
|
44
69
|
tracker mobile sheets need to clear the on-screen keyboard. Without it overlays
|
|
45
70
|
still work, falling back to CDK's shared root container — but
|
|
46
71
|
`--wr-keyboard-inset` stays 0 and sheets won't lift above the keyboard. Add
|
|
47
|
-
`provideWrResponsiveOverlays()` for mobile sheets
|
|
72
|
+
`provideWrResponsiveOverlays()` for mobile sheets — both from `ngwr/overlay`,
|
|
73
|
+
not from the component's own entry point. Optional does not mean free: what it
|
|
74
|
+
references is CDK's overlay module, the heaviest dependency in the catalog, so
|
|
75
|
+
it is near-zero in an app with any overlay on screen and the whole of it in an
|
|
76
|
+
app with none.
|
|
48
77
|
- `provideWrIcons(lucideIcons({ check: Check }))` — icon registry (`ngwr/icon`,
|
|
49
78
|
adapters under `ngwr/icon/adapters/*`).
|
|
50
79
|
- `provideWrTheme()` — `--wr-*` design tokens. `provideWrDensity()` — sizing.
|
|
@@ -75,20 +104,48 @@ one element at a time; a step whose target is missing is skipped, not floated.
|
|
|
75
104
|
- `ng g ngwr:page <form|table|dashboard>` — starter page wired with ngwr.
|
|
76
105
|
- `ng update ngwr` — runs upgrade migrations.
|
|
77
106
|
|
|
78
|
-
## Upgrading to
|
|
107
|
+
## Upgrading to v14
|
|
108
|
+
|
|
109
|
+
Run `ng update ngwr@14`. It rewrites the renames and REPORTS the rest — read its
|
|
110
|
+
output, because the reported half is where the silent failures are.
|
|
111
|
+
|
|
112
|
+
Rewritten for you (six renames, one word per concept):
|
|
79
113
|
|
|
80
|
-
|
|
114
|
+
- `<wr-alert>` from `closeable` to `closable`.
|
|
115
|
+
- `[wrInput]` from `wrSize` to `size`, like every other control. v13's release
|
|
116
|
+
note announced this rename and did NOT make it; it lands in v14. On v13 a
|
|
117
|
+
`size` written on an ngwr input compiled — it is a legal native attribute —
|
|
118
|
+
and the control quietly fell back to `md`.
|
|
119
|
+
- `<wr-table>` from `[totalItems]` to `[total]`.
|
|
120
|
+
- `<wr-pagination>` from `[(currentPage)]` to `[(page)]`, and from
|
|
121
|
+
`(currentPageChange)` to `(pageChange)`.
|
|
122
|
+
- `isDisabledWhenLoading` to `disabledWhenLoading` (the library's last
|
|
123
|
+
`is`-prefixed boolean).
|
|
124
|
+
- The window `chromeSize` scale from `'compact' | 'normal'` to `'sm' | 'md'`,
|
|
125
|
+
including the `.wr-window--chrome-compact` class.
|
|
81
126
|
|
|
82
|
-
|
|
83
|
-
`ngwr/date`, `ngwr/date-adapter-fns` → `ngwr/date/adapters/fns`,
|
|
84
|
-
`ngwr/date-adapter-luxon` → `ngwr/date/adapters/luxon`. Import paths only —
|
|
85
|
-
every symbol keeps its name. `ng update ngwr@12` rewrites them.
|
|
86
|
-
- **`readI18nText()` returns `Signal<string>`.** Add `()` at every read. No
|
|
87
|
-
codemod: adding the call means knowing which identifiers hold the result, and
|
|
88
|
-
the type error already names every site. `useI18nText`, the `wrT` pipe and the
|
|
89
|
-
`[wrT]` directive are unchanged.
|
|
127
|
+
Reported, not rewritten — each needs a decision a codemod cannot make:
|
|
90
128
|
|
|
91
|
-
|
|
129
|
+
- **Router integration is opt-in.** `<wr-loading-bar>` no longer follows the
|
|
130
|
+
router on its own: add `provideWrLoadingBarRouter()` from
|
|
131
|
+
`ngwr/loading-bar/router`. A `<wr-tab routerLink>` needs `wrTabsRouting` on the
|
|
132
|
+
strip and `WrTabsRouting` (from `ngwr/tabs/router`) in `imports`. The tab strip
|
|
133
|
+
throws without it; **the loading bar does not — it just never moves.**
|
|
134
|
+
- **Locale comes from Angular's `LOCALE_ID`.** `WR_DATE_LOCALE` and `WrI18n`'s
|
|
135
|
+
`defaultLocale` / `availableLocales` used to read `navigator.language` or a
|
|
136
|
+
literal `'en'`. An app that really wants the browser's tag now writes
|
|
137
|
+
`provideWrDateAdapter({ locale: navigator.language })`.
|
|
138
|
+
- **A named date format refuses input it cannot read.** `shortDate` / `time` and
|
|
139
|
+
friends parse through the same `Intl` formatter that printed the string, so
|
|
140
|
+
they round-trip; unreadable input returns null and leaves the committed value
|
|
141
|
+
alone instead of guessing. Pass an explicit token `[format]` if you relied on
|
|
142
|
+
`new Date()`'s leniency.
|
|
143
|
+
- **`<wr-pagination ofLabel>` is gone**, and the `pagination.of` catalog key with
|
|
144
|
+
it. The range is one `pagination.range` template with `{{from}}` / `{{to}}` /
|
|
145
|
+
`{{total}}` placeholders — a catalog still carrying the old key reverts that
|
|
146
|
+
line to English silently.
|
|
147
|
+
|
|
148
|
+
Earlier steps, with diffs, back to v6: https://ngwr.dev/start/migration
|
|
92
149
|
|
|
93
150
|
## Use ngwr — don't hand-roll
|
|
94
151
|
|
|
@@ -138,9 +195,22 @@ before writing your own. Full catalog: https://ngwr.dev/reference/components.
|
|
|
138
195
|
its own `value` model, and implements neither.
|
|
139
196
|
Bind `[formField]="form.x"`, use the two-way model standalone (`[(value)]`, or
|
|
140
197
|
`[(checked)]` on checkbox/switch), or classic `[(ngModel)]` / reactive forms
|
|
141
|
-
via Angular's bridge.
|
|
198
|
+
via Angular's bridge. **That bridge is not an accessor and does not behave like
|
|
199
|
+
one**, and the differences are silent: `updateOn: 'blur'` / `'submit'` do not
|
|
200
|
+
apply to an ngwr control while a native `<input>` in the same group still
|
|
201
|
+
honours them; a `{ emitEvent: false }` write moves the model and leaves the
|
|
202
|
+
control showing the old value; `<wr-select>` compares object values by `===`
|
|
203
|
+
with no `compareWith`. What the bridge carries, what it drops, and what a form
|
|
204
|
+
does about each: https://ngwr.dev/guides/forms
|
|
142
205
|
- **Icons** — register via `provideWrIcons`, render `<wr-icon name="check" />`.
|
|
143
|
-
- **
|
|
206
|
+
- **Router** — nothing injects `@angular/router` unless you opt in. A
|
|
207
|
+
`<wr-tab routerLink>` needs `wrTabsRouting` on the strip plus `WrTabsRouting`
|
|
208
|
+
(`ngwr/tabs/router`) in `imports`, and it throws if you forget.
|
|
209
|
+
`<wr-loading-bar>` follows navigation only with
|
|
210
|
+
`provideWrLoadingBarRouter()` (`ngwr/loading-bar/router`), and it does NOT
|
|
211
|
+
throw — without the provider the bar simply never moves.
|
|
212
|
+
- **i18n** — `{{ 'key' | wrT }}` (pipe from `ngwr/i18n`). The locale defaults to
|
|
213
|
+
Angular's `LOCALE_ID`, not the browser, for both copy and dates.
|
|
144
214
|
- **Theme** — CSS custom properties `--wr-color-*`, `--wr-border-radius-*`, … set
|
|
145
215
|
by `provideWrTheme()`. Two contrast tokens per intent, easy to confuse:
|
|
146
216
|
`--wr-color-<intent>-contrast` is the label ON a filled intent;
|
|
@@ -150,6 +220,17 @@ before writing your own. Full catalog: https://ngwr.dev/reference/components.
|
|
|
150
220
|
tint — which is exactly where outlined / ghost / tinted variants paint it, so use
|
|
151
221
|
`-ink` there. For muted prose use `--wr-color-on-surface-muted`, not the `medium`
|
|
152
222
|
intent.
|
|
223
|
+
- **SSR** — everything renders on the server; the library contains no
|
|
224
|
+
`ngSkipHydration`, so `provideClientHydration()` and `withEventReplay()` need
|
|
225
|
+
nothing from it. Two calls are NOT no-ops there and ship an overlay into a
|
|
226
|
+
cached page: `WrToast.show()` and `WrDialog.open()` (`WrTour.start()` is the
|
|
227
|
+
one that returns early) — guard them with `afterNextRender` or `WrPlatform`'s
|
|
228
|
+
`isBrowser`. `WrMedia` has no viewport to measure, so `matches()` is `false`
|
|
229
|
+
and `current()` is `'xs'` until hydration: reflow with the `responsive`
|
|
230
|
+
container-query modifiers rather than a template branch. And a server has no
|
|
231
|
+
`localStorage`, so a dark-mode visitor sees a light page until the bundle
|
|
232
|
+
boots — `wrThemePrePaintScript()` (`ngwr/theme`) is the blocking `<head>`
|
|
233
|
+
reader that closes it: https://ngwr.dev/guides/ssr
|
|
153
234
|
- **Mobile** — overlays collapse to sheets (`provideWrResponsiveOverlays()`), a
|
|
154
235
|
`responsive` input reflows layout components, a `touch` density preset enlarges
|
|
155
236
|
controls, and `WrHaptics` (ngwr/platform) fires vibration feedback.
|
|
@@ -157,7 +238,9 @@ before writing your own. Full catalog: https://ngwr.dev/reference/components.
|
|
|
157
238
|
`wr-tree` and `wr-select` (search mode), alongside the standalone
|
|
158
239
|
`wr-virtual-scroll` wrapper.
|
|
159
240
|
- **Testing** — CDK component harnesses ship beside the components they drive, at
|
|
160
|
-
`ngwr/<name>/testing`. 70 entry points so far, 104 harness
|
|
241
|
+
`ngwr/<name>/testing`. 70 entry points so far, 104 exported harness names over
|
|
242
|
+
103 distinct classes — `WrCalendarDayHarness` ships under two, since a date
|
|
243
|
+
picker's popup IS a calendar — covering the
|
|
161
244
|
form controls, the overlays, both data views, the navigation / disclosure set
|
|
162
245
|
(`tabs`, `stepper`, `carousel`, `pagination`, `segmented`, `collapse`,
|
|
163
246
|
`transfer`) and `markdown`: the form controls
|
|
@@ -195,23 +278,40 @@ before writing your own. Full catalog: https://ngwr.dev/reference/components.
|
|
|
195
278
|
|
|
196
279
|
## Deciding whether to use it
|
|
197
280
|
|
|
198
|
-
|
|
281
|
+
Four pages exist for the question before installation, and everything on them
|
|
199
282
|
is meant to be checkable rather than taken on trust:
|
|
200
283
|
|
|
201
284
|
- **Why ngwr, and when not to** — the wedge (nineteen value controls are Signal
|
|
202
285
|
Forms controls; no `ControlValueAccessor` in the library), a comparison against
|
|
203
286
|
Material / PrimeNG / NG-ZORRO / Taiga / Spartan, and a per-competitor "choose
|
|
204
287
|
something else if" section: https://ngwr.dev/start/comparison
|
|
205
|
-
- **What gates a change** —
|
|
288
|
+
- **What gates a change** — nine gates on every PR, three separate
|
|
206
289
|
accessibility sweeps and what each one cannot see, the two nightly baselines
|
|
207
290
|
and what is accepted in them, plus what the test suite does NOT cover:
|
|
208
291
|
https://ngwr.dev/start/quality
|
|
209
292
|
- **A live Signal Forms demo** you can read before installing anything:
|
|
210
293
|
https://ngwr.dev/start/playground
|
|
294
|
+
- **What a version number promises** — what a major is allowed to break, and the
|
|
295
|
+
one semver rule made mechanical: `release:prepare` refuses a minor or patch
|
|
296
|
+
bump when any commit since the last tag is marked breaking, so `^14.0.0` is a
|
|
297
|
+
safe range (12.2.0 was a minor carrying a breaking change, which is why the
|
|
298
|
+
guard exists). Also the support window — current major in full, previous major
|
|
299
|
+
mechanical security fixes only, ending when the next major ships — and the
|
|
300
|
+
actual cadence: https://ngwr.dev/start/versioning
|
|
211
301
|
|
|
212
302
|
The honest shape of the project, since these pages say it too: one maintainer,
|
|
213
|
-
MIT,
|
|
214
|
-
|
|
303
|
+
MIT, eight majors shipped since 2026-06-12, a codemod for every break a codemod
|
|
304
|
+
can repair and a reported diagnosis for the rest, no commercial support.
|
|
305
|
+
|
|
306
|
+
Public API is three surfaces and all three move only in a major: the exported
|
|
307
|
+
TypeScript, the `.wr-*` BEM class names (every component ships
|
|
308
|
+
`ViewEncapsulation.None`), and the `--wr-*` custom properties. `@internal` in a
|
|
309
|
+
TSDoc means not API and survives into the published types, so
|
|
310
|
+
`grep -rn "@internal" node_modules/ngwr/types` answers it. A few helpers are
|
|
311
|
+
exported, unmarked and undocumented — `wrAppendOverlayClose`, `wrMirrorOffsets`,
|
|
312
|
+
`wrPresentAsSheet`, `WrOutsideClick`, `useConfigValue`, `useFormFieldAria`,
|
|
313
|
+
`squirclePath`, `wrContrastFor`, `isSafeCssValue` — and carry no stability
|
|
314
|
+
statement; do not build on them.
|
|
215
315
|
|
|
216
316
|
## Resources (machine-readable)
|
|
217
317
|
|
|
@@ -252,4 +352,6 @@ break a codemod can repair, no commercial support.
|
|
|
252
352
|
- All site URLs (for crawlers): https://ngwr.dev/sitemap.xml
|
|
253
353
|
- Source, README, per-component `.d.ts` types: https://github.com/thekhegay/ngwr
|
|
254
354
|
(installed at `node_modules/ngwr/types/ngwr-<name>.d.ts`; the package also
|
|
255
|
-
ships `README.md`, `llms.txt`, `llms-full.txt` and `skills/ngwr/`
|
|
355
|
+
ships `README.md`, `llms.txt`, `llms-full.txt` and `skills/ngwr/` — and no
|
|
356
|
+
other markdown: there is no `CHANGELOG.md` in the tarball, and the docs'
|
|
357
|
+
markdown twins are served from ngwr.dev rather than copied into it)
|
package/mcp/catalog.js
CHANGED
|
@@ -11,8 +11,8 @@ import { fileURLToPath } from 'node:url';
|
|
|
11
11
|
* The catalog, read from the files the package already ships.
|
|
12
12
|
*
|
|
13
13
|
* **No second copy of anything, and that is the design constraint this whole
|
|
14
|
-
* server was built under.** `llms-full.txt` (~57 KB,
|
|
15
|
-
* `schematics/use/symbol-map.json` (
|
|
14
|
+
* server was built under.** `llms-full.txt` (~57 KB, 204 entry points) and
|
|
15
|
+
* `schematics/use/symbol-map.json` (216 symbols) are already in the tarball for
|
|
16
16
|
* other reasons, and the `.d.ts` bundle carries every signature. A server that
|
|
17
17
|
* embedded its own index would be a fourth copy to keep in step with the library,
|
|
18
18
|
* and the first one to go stale.
|
|
@@ -51,7 +51,7 @@ class Catalog {
|
|
|
51
51
|
/**
|
|
52
52
|
* Does this entry point ship a stylesheet?
|
|
53
53
|
*
|
|
54
|
-
* Read from the package's own `exports` map rather than assumed:
|
|
54
|
+
* Read from the package's own `exports` map rather than assumed: 96 of the 204
|
|
55
55
|
* entry points ship no `styles/_index.scss` — the testing harnesses, the
|
|
56
56
|
* services, the adapters — and telling a consumer to `@use` one of those breaks
|
|
57
57
|
* their Sass build.
|
package/mcp/providers.js
CHANGED
|
@@ -25,6 +25,17 @@ const REQUIRED_PROVIDERS = [
|
|
|
25
25
|
provider: "provideWrDateFnsAdapter() // from 'ngwr/date/adapters/fns'",
|
|
26
26
|
why: 'every date mode goes through an adapter; there is no built-in default',
|
|
27
27
|
},
|
|
28
|
+
{
|
|
29
|
+
// The bar itself needs no provider — `start()` / `complete()` work bare — so
|
|
30
|
+
// the rule names the ROUTER half, which is exactly the table's criterion: the
|
|
31
|
+
// component compiles, renders, and sits at 0% forever with nothing naming the
|
|
32
|
+
// cause. The subscription is opt-in because it is what pulls
|
|
33
|
+
// `@angular/router` into a bundle, and this project's own site shipped a dead
|
|
34
|
+
// bar for the length of one release by missing it.
|
|
35
|
+
test: /^WrLoadingBar/,
|
|
36
|
+
provider: "provideWrLoadingBarRouter() // from 'ngwr/loading-bar/router'",
|
|
37
|
+
why: 'without it the bar never responds to navigation; it only moves for manual start() / complete()',
|
|
38
|
+
},
|
|
28
39
|
{
|
|
29
40
|
// Spelled out rather than `^WrT(Pipe|Directive)$`: `describeTest` in the
|
|
30
41
|
// skill generator only names alternatives that are bare symbols, so a group
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ngwr",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "14.0.1",
|
|
4
4
|
"bin": {
|
|
5
5
|
"ngwr-mcp": "mcp/server.js"
|
|
6
6
|
},
|
|
@@ -845,6 +845,10 @@
|
|
|
845
845
|
"types": "./types/ngwr-line-chart-testing.d.ts",
|
|
846
846
|
"default": "./fesm2022/ngwr-line-chart-testing.mjs"
|
|
847
847
|
},
|
|
848
|
+
"./loading-bar/router": {
|
|
849
|
+
"types": "./types/ngwr-loading-bar-router.d.ts",
|
|
850
|
+
"default": "./fesm2022/ngwr-loading-bar-router.mjs"
|
|
851
|
+
},
|
|
848
852
|
"./markdown/testing": {
|
|
849
853
|
"types": "./types/ngwr-markdown-testing.d.ts",
|
|
850
854
|
"default": "./fesm2022/ngwr-markdown-testing.mjs"
|
|
@@ -965,6 +969,10 @@
|
|
|
965
969
|
"types": "./types/ngwr-table-testing.d.ts",
|
|
966
970
|
"default": "./fesm2022/ngwr-table-testing.mjs"
|
|
967
971
|
},
|
|
972
|
+
"./tabs/router": {
|
|
973
|
+
"types": "./types/ngwr-tabs-router.d.ts",
|
|
974
|
+
"default": "./fesm2022/ngwr-tabs-router.mjs"
|
|
975
|
+
},
|
|
968
976
|
"./tabs/testing": {
|
|
969
977
|
"types": "./types/ngwr-tabs-testing.d.ts",
|
|
970
978
|
"default": "./fesm2022/ngwr-tabs-testing.mjs"
|