ngwr 6.1.1 → 7.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -3
- package/README.md +179 -32
- package/affix/styles/_index.scss +12 -0
- package/alert/styles/_index.scss +75 -32
- package/anchor/styles/_index.scss +59 -0
- package/aurora/aurora.scss +1 -0
- package/aurora/styles/_index.scss +30 -0
- package/avatar/styles/_index.scss +30 -14
- package/back-top/styles/_index.scss +42 -0
- package/badge/styles/_index.scss +80 -0
- package/badge/styles/_tag.scss +81 -0
- package/bar-chart/styles/_index.scss +56 -0
- package/blur-text/blur-text.scss +1 -0
- package/blur-text/styles/_index.scss +14 -0
- package/border-glow/border-glow.scss +4 -0
- package/border-glow/styles/_index.scss +228 -0
- package/breadcrumbs/breadcrumbs.scss +1 -0
- package/breadcrumbs/styles/_index.scss +76 -0
- package/burger/styles/_index.scss +101 -0
- package/button/styles/_index.scss +148 -125
- package/calendar/styles/_index.scss +252 -0
- package/calendar-heatmap/styles/_index.scss +69 -0
- package/card/card.scss +1 -0
- package/card/styles/_index.scss +96 -0
- package/carousel/styles/_index.scss +102 -0
- package/cascader/cascader.scss +1 -0
- package/cascader/styles/_index.scss +174 -0
- package/checkbox/styles/_index.scss +76 -60
- package/circular-text/circular-text.scss +1 -0
- package/circular-text/styles/_index.scss +45 -0
- package/click-spark/click-spark.scss +1 -0
- package/click-spark/styles/_index.scss +16 -0
- package/collapse/styles/_index.scss +92 -0
- package/color-picker/styles/_index.scss +247 -0
- package/command-palette/styles/_index.scss +188 -0
- package/compare/styles/_index.scss +100 -0
- package/context-menu/styles/_index.scss +112 -0
- package/counter/styles/_index.scss +44 -0
- package/date-picker/styles/_index.scss +204 -0
- package/decrypt-text/decrypt-text.scss +1 -0
- package/decrypt-text/styles/_index.scss +26 -0
- package/density/styles/_index.scss +37 -0
- package/descriptions/styles/_index.scss +104 -0
- package/dialog/styles/_index.scss +101 -27
- package/divider/styles/_index.scss +43 -24
- package/donut-chart/styles/_index.scss +76 -0
- package/drag-drop/sortable-list.scss +1 -0
- package/drag-drop/styles/_index.scss +99 -0
- package/drawer/styles/_index.scss +164 -0
- package/dropdown/styles/_index.scss +76 -56
- package/empty/styles/_index.scss +49 -0
- package/falling-text/falling-text.scss +1 -0
- package/falling-text/styles/_index.scss +30 -0
- package/fesm2022/ngwr-affix.mjs +102 -0
- package/fesm2022/ngwr-affix.mjs.map +1 -0
- package/fesm2022/ngwr-alert.mjs +70 -52
- package/fesm2022/ngwr-alert.mjs.map +1 -1
- package/fesm2022/ngwr-anchor.mjs +103 -0
- package/fesm2022/ngwr-anchor.mjs.map +1 -0
- package/fesm2022/ngwr-aurora.mjs +309 -0
- package/fesm2022/ngwr-aurora.mjs.map +1 -0
- package/fesm2022/ngwr-avatar.mjs +81 -71
- package/fesm2022/ngwr-avatar.mjs.map +1 -1
- package/fesm2022/ngwr-back-top.mjs +81 -0
- package/fesm2022/ngwr-back-top.mjs.map +1 -0
- package/fesm2022/ngwr-badge.mjs +192 -0
- package/fesm2022/ngwr-badge.mjs.map +1 -0
- package/fesm2022/ngwr-bar-chart.mjs +69 -0
- package/fesm2022/ngwr-bar-chart.mjs.map +1 -0
- package/fesm2022/ngwr-blur-text.mjs +181 -0
- package/fesm2022/ngwr-blur-text.mjs.map +1 -0
- package/fesm2022/ngwr-border-glow.mjs +278 -0
- package/fesm2022/ngwr-border-glow.mjs.map +1 -0
- package/fesm2022/ngwr-breadcrumbs.mjs +101 -0
- package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -0
- package/fesm2022/ngwr-burger.mjs +60 -0
- package/fesm2022/ngwr-burger.mjs.map +1 -0
- package/fesm2022/ngwr-button.mjs +179 -104
- package/fesm2022/ngwr-button.mjs.map +1 -1
- package/fesm2022/ngwr-calendar-heatmap.mjs +145 -0
- package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -0
- package/fesm2022/ngwr-calendar.mjs +402 -0
- package/fesm2022/ngwr-calendar.mjs.map +1 -0
- package/fesm2022/ngwr-card.mjs +100 -0
- package/fesm2022/ngwr-card.mjs.map +1 -0
- package/fesm2022/ngwr-carousel.mjs +128 -0
- package/fesm2022/ngwr-carousel.mjs.map +1 -0
- package/fesm2022/ngwr-cascader.mjs +280 -0
- package/fesm2022/ngwr-cascader.mjs.map +1 -0
- package/fesm2022/ngwr-checkbox.mjs +214 -54
- package/fesm2022/ngwr-checkbox.mjs.map +1 -1
- package/fesm2022/ngwr-circular-text.mjs +168 -0
- package/fesm2022/ngwr-circular-text.mjs.map +1 -0
- package/fesm2022/ngwr-click-spark.mjs +163 -0
- package/fesm2022/ngwr-click-spark.mjs.map +1 -0
- package/fesm2022/ngwr-clipboard.mjs +130 -0
- package/fesm2022/ngwr-clipboard.mjs.map +1 -0
- package/fesm2022/ngwr-collapse.mjs +232 -0
- package/fesm2022/ngwr-collapse.mjs.map +1 -0
- package/fesm2022/ngwr-color-picker.mjs +646 -0
- package/fesm2022/ngwr-color-picker.mjs.map +1 -0
- package/fesm2022/ngwr-command-palette.mjs +259 -0
- package/fesm2022/ngwr-command-palette.mjs.map +1 -0
- package/fesm2022/ngwr-compare.mjs +137 -0
- package/fesm2022/ngwr-compare.mjs.map +1 -0
- package/fesm2022/ngwr-confetti.mjs +160 -0
- package/fesm2022/ngwr-confetti.mjs.map +1 -0
- package/fesm2022/ngwr-context-menu.mjs +653 -0
- package/fesm2022/ngwr-context-menu.mjs.map +1 -0
- package/fesm2022/ngwr-cookie.mjs +127 -0
- package/fesm2022/ngwr-cookie.mjs.map +1 -0
- package/fesm2022/ngwr-counter.mjs +415 -0
- package/fesm2022/ngwr-counter.mjs.map +1 -0
- package/fesm2022/ngwr-date-adapter-fns.mjs +180 -0
- package/fesm2022/ngwr-date-adapter-fns.mjs.map +1 -0
- package/fesm2022/ngwr-date-adapter-luxon.mjs +201 -0
- package/fesm2022/ngwr-date-adapter-luxon.mjs.map +1 -0
- package/fesm2022/ngwr-date-adapter.mjs +419 -0
- package/fesm2022/ngwr-date-adapter.mjs.map +1 -0
- package/fesm2022/ngwr-date-picker.mjs +624 -0
- package/fesm2022/ngwr-date-picker.mjs.map +1 -0
- package/fesm2022/ngwr-decrypt-text.mjs +396 -0
- package/fesm2022/ngwr-decrypt-text.mjs.map +1 -0
- package/fesm2022/ngwr-density.mjs +157 -0
- package/fesm2022/ngwr-density.mjs.map +1 -0
- package/fesm2022/ngwr-descriptions.mjs +83 -0
- package/fesm2022/ngwr-descriptions.mjs.map +1 -0
- package/fesm2022/ngwr-dialog.mjs +249 -377
- package/fesm2022/ngwr-dialog.mjs.map +1 -1
- package/fesm2022/ngwr-directives.mjs +315 -0
- package/fesm2022/ngwr-directives.mjs.map +1 -0
- package/fesm2022/ngwr-divider.mjs +74 -59
- package/fesm2022/ngwr-divider.mjs.map +1 -1
- package/fesm2022/ngwr-donut-chart.mjs +131 -0
- package/fesm2022/ngwr-donut-chart.mjs.map +1 -0
- package/fesm2022/ngwr-drag-drop.mjs +117 -0
- package/fesm2022/ngwr-drag-drop.mjs.map +1 -0
- package/fesm2022/ngwr-drawer.mjs +315 -0
- package/fesm2022/ngwr-drawer.mjs.map +1 -0
- package/fesm2022/ngwr-dropdown.mjs +276 -229
- package/fesm2022/ngwr-dropdown.mjs.map +1 -1
- package/fesm2022/ngwr-empty.mjs +57 -0
- package/fesm2022/ngwr-empty.mjs.map +1 -0
- package/fesm2022/ngwr-falling-text.mjs +316 -0
- package/fesm2022/ngwr-falling-text.mjs.map +1 -0
- package/fesm2022/ngwr-file-upload.mjs +260 -0
- package/fesm2022/ngwr-file-upload.mjs.map +1 -0
- package/fesm2022/ngwr-form.mjs +133 -48
- package/fesm2022/ngwr-form.mjs.map +1 -1
- package/fesm2022/ngwr-fuzzy-text.mjs +373 -0
- package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -0
- package/fesm2022/ngwr-gauge.mjs +83 -0
- package/fesm2022/ngwr-gauge.mjs.map +1 -0
- package/fesm2022/ngwr-glitch-text.mjs +67 -0
- package/fesm2022/ngwr-glitch-text.mjs.map +1 -0
- package/fesm2022/ngwr-gradient-text.mjs +109 -0
- package/fesm2022/ngwr-gradient-text.mjs.map +1 -0
- package/fesm2022/ngwr-hotkey.mjs +263 -0
- package/fesm2022/ngwr-hotkey.mjs.map +1 -0
- package/fesm2022/ngwr-i18n-en.mjs +168 -0
- package/fesm2022/ngwr-i18n-en.mjs.map +1 -0
- package/fesm2022/ngwr-i18n-ru.mjs +156 -0
- package/fesm2022/ngwr-i18n-ru.mjs.map +1 -0
- package/fesm2022/ngwr-i18n.mjs +478 -0
- package/fesm2022/ngwr-i18n.mjs.map +1 -0
- package/fesm2022/ngwr-icon-adapters-feather.mjs +74 -0
- package/fesm2022/ngwr-icon-adapters-feather.mjs.map +1 -0
- package/fesm2022/ngwr-icon-adapters-lucide.mjs +88 -0
- package/fesm2022/ngwr-icon-adapters-lucide.mjs.map +1 -0
- package/fesm2022/ngwr-icon.mjs +189 -649
- package/fesm2022/ngwr-icon.mjs.map +1 -1
- package/fesm2022/ngwr-image-cropper.mjs +299 -0
- package/fesm2022/ngwr-image-cropper.mjs.map +1 -0
- package/fesm2022/ngwr-input-number.mjs +239 -0
- package/fesm2022/ngwr-input-number.mjs.map +1 -0
- package/fesm2022/ngwr-input-otp.mjs +216 -0
- package/fesm2022/ngwr-input-otp.mjs.map +1 -0
- package/fesm2022/ngwr-input.mjs +183 -104
- package/fesm2022/ngwr-input.mjs.map +1 -1
- package/fesm2022/ngwr-keyboard.mjs +47 -0
- package/fesm2022/ngwr-keyboard.mjs.map +1 -0
- package/fesm2022/ngwr-knob.mjs +227 -0
- package/fesm2022/ngwr-knob.mjs.map +1 -0
- package/fesm2022/ngwr-layout.mjs +197 -0
- package/fesm2022/ngwr-layout.mjs.map +1 -0
- package/fesm2022/ngwr-lightbox.mjs +131 -0
- package/fesm2022/ngwr-lightbox.mjs.map +1 -0
- package/fesm2022/ngwr-line-chart.mjs +176 -0
- package/fesm2022/ngwr-line-chart.mjs.map +1 -0
- package/fesm2022/ngwr-list.mjs +132 -0
- package/fesm2022/ngwr-list.mjs.map +1 -0
- package/fesm2022/ngwr-loading-bar.mjs +160 -0
- package/fesm2022/ngwr-loading-bar.mjs.map +1 -0
- package/fesm2022/ngwr-marquee.mjs +224 -0
- package/fesm2022/ngwr-marquee.mjs.map +1 -0
- package/fesm2022/ngwr-media.mjs +132 -0
- package/fesm2022/ngwr-media.mjs.map +1 -0
- package/fesm2022/ngwr-mention.mjs +374 -0
- package/fesm2022/ngwr-mention.mjs.map +1 -0
- package/fesm2022/ngwr-meta.mjs +323 -0
- package/fesm2022/ngwr-meta.mjs.map +1 -0
- package/fesm2022/ngwr-meter-group.mjs +73 -0
- package/fesm2022/ngwr-meter-group.mjs.map +1 -0
- package/fesm2022/ngwr-overlay.mjs +145 -0
- package/fesm2022/ngwr-overlay.mjs.map +1 -0
- package/fesm2022/ngwr-page-header.mjs +53 -0
- package/fesm2022/ngwr-page-header.mjs.map +1 -0
- package/fesm2022/ngwr-pagination.mjs +152 -96
- package/fesm2022/ngwr-pagination.mjs.map +1 -1
- package/fesm2022/ngwr-pipes.mjs +290 -11
- package/fesm2022/ngwr-pipes.mjs.map +1 -1
- package/fesm2022/ngwr-platform.mjs +63 -0
- package/fesm2022/ngwr-platform.mjs.map +1 -0
- package/fesm2022/ngwr-popconfirm.mjs +188 -0
- package/fesm2022/ngwr-popconfirm.mjs.map +1 -0
- package/fesm2022/ngwr-popover.mjs +365 -0
- package/fesm2022/ngwr-popover.mjs.map +1 -0
- package/fesm2022/ngwr-progress.mjs +47 -39
- package/fesm2022/ngwr-progress.mjs.map +1 -1
- package/fesm2022/ngwr-qr.mjs +160 -179
- package/fesm2022/ngwr-qr.mjs.map +1 -1
- package/fesm2022/ngwr-radio.mjs +204 -0
- package/fesm2022/ngwr-radio.mjs.map +1 -0
- package/fesm2022/ngwr-rating.mjs +180 -0
- package/fesm2022/ngwr-rating.mjs.map +1 -0
- package/fesm2022/ngwr-result.mjs +119 -0
- package/fesm2022/ngwr-result.mjs.map +1 -0
- package/fesm2022/ngwr-rotating-text.mjs +256 -0
- package/fesm2022/ngwr-rotating-text.mjs.map +1 -0
- package/fesm2022/ngwr-scramble-text.mjs +165 -0
- package/fesm2022/ngwr-scramble-text.mjs.map +1 -0
- package/fesm2022/ngwr-scroll.mjs +107 -0
- package/fesm2022/ngwr-scroll.mjs.map +1 -0
- package/fesm2022/ngwr-segmented.mjs +96 -0
- package/fesm2022/ngwr-segmented.mjs.map +1 -0
- package/fesm2022/ngwr-select.mjs +844 -309
- package/fesm2022/ngwr-select.mjs.map +1 -1
- package/fesm2022/ngwr-shiny-text.mjs +127 -0
- package/fesm2022/ngwr-shiny-text.mjs.map +1 -0
- package/fesm2022/ngwr-sidebar.mjs +134 -0
- package/fesm2022/ngwr-sidebar.mjs.map +1 -0
- package/fesm2022/ngwr-skeleton.mjs +59 -34
- package/fesm2022/ngwr-skeleton.mjs.map +1 -1
- package/fesm2022/ngwr-slider.mjs +234 -0
- package/fesm2022/ngwr-slider.mjs.map +1 -0
- package/fesm2022/ngwr-sparkline.mjs +104 -0
- package/fesm2022/ngwr-sparkline.mjs.map +1 -0
- package/fesm2022/ngwr-speed-dial.mjs +79 -0
- package/fesm2022/ngwr-speed-dial.mjs.map +1 -0
- package/fesm2022/ngwr-spinner.mjs +34 -28
- package/fesm2022/ngwr-spinner.mjs.map +1 -1
- package/fesm2022/ngwr-splash-cursor.mjs +970 -0
- package/fesm2022/ngwr-splash-cursor.mjs.map +1 -0
- package/fesm2022/ngwr-split-text.mjs +200 -0
- package/fesm2022/ngwr-split-text.mjs.map +1 -0
- package/fesm2022/ngwr-splitter.mjs +125 -0
- package/fesm2022/ngwr-splitter.mjs.map +1 -0
- package/fesm2022/ngwr-spotlight-card.mjs +138 -0
- package/fesm2022/ngwr-spotlight-card.mjs.map +1 -0
- package/fesm2022/ngwr-squircle.mjs +320 -0
- package/fesm2022/ngwr-squircle.mjs.map +1 -0
- package/fesm2022/ngwr-star-border.mjs +72 -0
- package/fesm2022/ngwr-star-border.mjs.map +1 -0
- package/fesm2022/ngwr-statistic.mjs +220 -0
- package/fesm2022/ngwr-statistic.mjs.map +1 -0
- package/fesm2022/ngwr-stepper.mjs +186 -0
- package/fesm2022/ngwr-stepper.mjs.map +1 -0
- package/fesm2022/ngwr-storage.mjs +317 -0
- package/fesm2022/ngwr-storage.mjs.map +1 -0
- package/fesm2022/ngwr-switch.mjs +99 -0
- package/fesm2022/ngwr-switch.mjs.map +1 -0
- package/fesm2022/ngwr-table.mjs +217 -206
- package/fesm2022/ngwr-table.mjs.map +1 -1
- package/fesm2022/ngwr-tabs.mjs +217 -0
- package/fesm2022/ngwr-tabs.mjs.map +1 -0
- package/fesm2022/ngwr-textarea.mjs +106 -120
- package/fesm2022/ngwr-textarea.mjs.map +1 -1
- package/fesm2022/ngwr-theme.mjs +152 -0
- package/fesm2022/ngwr-theme.mjs.map +1 -0
- package/fesm2022/ngwr-tilt-card.mjs +137 -0
- package/fesm2022/ngwr-tilt-card.mjs.map +1 -0
- package/fesm2022/ngwr-timeline.mjs +73 -0
- package/fesm2022/ngwr-timeline.mjs.map +1 -0
- package/fesm2022/ngwr-toast.mjs +446 -0
- package/fesm2022/ngwr-toast.mjs.map +1 -0
- package/fesm2022/ngwr-toolbar.mjs +46 -0
- package/fesm2022/ngwr-toolbar.mjs.map +1 -0
- package/fesm2022/ngwr-tree.mjs +483 -0
- package/fesm2022/ngwr-tree.mjs.map +1 -0
- package/fesm2022/ngwr-typewriter.mjs +229 -0
- package/fesm2022/ngwr-typewriter.mjs.map +1 -0
- package/fesm2022/ngwr-typography.mjs +79 -0
- package/fesm2022/ngwr-typography.mjs.map +1 -0
- package/fesm2022/ngwr-utils.mjs +535 -0
- package/fesm2022/ngwr-utils.mjs.map +1 -0
- package/fesm2022/ngwr-validators.mjs +214 -0
- package/fesm2022/ngwr-validators.mjs.map +1 -0
- package/fesm2022/ngwr-version.mjs +51 -0
- package/fesm2022/ngwr-version.mjs.map +1 -0
- package/fesm2022/ngwr-virtual-scroll.mjs +99 -0
- package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -0
- package/fesm2022/ngwr-waves.mjs +356 -0
- package/fesm2022/ngwr-waves.mjs.map +1 -0
- package/fesm2022/ngwr-window.mjs +1141 -0
- package/fesm2022/ngwr-window.mjs.map +1 -0
- package/fesm2022/ngwr.mjs +0 -3
- package/fesm2022/ngwr.mjs.map +1 -1
- package/file-upload/styles/_index.scss +152 -0
- package/form/styles/_index.scss +85 -42
- package/gauge/styles/_index.scss +37 -0
- package/glitch-text/glitch-text.scss +1 -0
- package/glitch-text/styles/_index.scss +144 -0
- package/gradient-text/gradient-text.scss +1 -0
- package/gradient-text/styles/_index.scss +113 -0
- package/icon/styles/_index.scss +21 -15
- package/image-cropper/styles/_index.scss +114 -0
- package/input/styles/_index.scss +133 -93
- package/input-number/styles/_index.scss +75 -0
- package/input-otp/styles/_index.scss +53 -0
- package/keyboard/styles/_index.scss +55 -0
- package/knob/styles/_index.scss +54 -0
- package/layout/styles/_index.scss +65 -0
- package/lightbox/lightbox.scss +1 -0
- package/lightbox/styles/_index.scss +144 -0
- package/line-chart/styles/_index.scss +93 -0
- package/list/list.scss +1 -0
- package/list/styles/_index.scss +101 -0
- package/loading-bar/loading-bar.scss +1 -0
- package/loading-bar/styles/_index.scss +29 -0
- package/marquee/marquee.scss +1 -0
- package/marquee/styles/_index.scss +138 -0
- package/mention/styles/_index.scss +47 -0
- package/meter-group/styles/_index.scss +61 -0
- package/package.json +586 -104
- package/page-header/styles/_index.scss +78 -0
- package/pagination/styles/_index.scss +89 -34
- package/popconfirm/styles/_index.scss +32 -0
- package/popover/styles/_index.scss +99 -0
- package/progress/styles/_index.scss +29 -14
- package/qr/styles/_index.scss +6 -3
- package/radio/styles/_index.scss +111 -0
- package/rating/styles/_index.scss +63 -0
- package/result/styles/_index.scss +69 -0
- package/rotating-text/rotating-text.scss +1 -0
- package/rotating-text/styles/_index.scss +39 -0
- package/schematics/collection.json +37 -0
- package/schematics/component-style/index.js +49 -0
- package/{cdk/utils/index.d.ts → schematics/component-style/schema.js} +2 -8
- package/schematics/component-style/schema.json +20 -0
- package/schematics/icon-set/index.js +96 -0
- package/schematics/icon-set/schema.js +8 -0
- package/schematics/icon-set/schema.json +39 -0
- package/schematics/migrations/v7/index.js +187 -0
- package/schematics/migrations.json +10 -0
- package/schematics/ng-add/index.js +180 -0
- package/schematics/ng-add/schema.js +8 -0
- package/schematics/ng-add/schema.json +80 -0
- package/schematics/page/index.js +63 -0
- package/schematics/page/schema.js +8 -0
- package/schematics/page/schema.json +39 -0
- package/schematics/page/templates.js +198 -0
- package/schematics/provider/index.js +126 -0
- package/schematics/provider/schema.js +8 -0
- package/schematics/provider/schema.json +52 -0
- package/schematics/use/index.js +143 -0
- package/schematics/use/schema.js +8 -0
- package/schematics/use/schema.json +25 -0
- package/schematics/use/symbol-map.json +357 -0
- package/scramble-text/scramble-text.scss +1 -0
- package/scramble-text/styles/_index.scss +8 -0
- package/segmented/styles/_index.scss +92 -0
- package/select/styles/_index.scss +245 -159
- package/shiny-text/shiny-text.scss +1 -0
- package/shiny-text/styles/_index.scss +101 -0
- package/sidebar/styles/_index.scss +208 -0
- package/skeleton/styles/_index.scss +33 -33
- package/slider/styles/_index.scss +77 -0
- package/sparkline/styles/_index.scss +9 -0
- package/speed-dial/styles/_index.scss +158 -0
- package/spinner/styles/_index.scss +38 -22
- package/splash-cursor/splash-cursor.scss +1 -0
- package/splash-cursor/styles/_index.scss +27 -0
- package/split-text/split-text.scss +1 -0
- package/split-text/styles/_index.scss +22 -0
- package/splitter/styles/_index.scss +85 -0
- package/spotlight-card/spotlight-card.scss +1 -0
- package/spotlight-card/styles/_index.scss +43 -0
- package/squircle/styles/_index.scss +34 -0
- package/star-border/star-border.scss +1 -0
- package/star-border/styles/_index.scss +118 -0
- package/statistic/styles/_index.scss +54 -0
- package/stepper/styles/_index.scss +162 -0
- package/styles/_animations.scss +198 -0
- package/styles/_breakpoints.scss +75 -0
- package/styles/_grid.scss +71 -0
- package/styles/_reset.scss +123 -0
- package/styles/_typography.scss +122 -0
- package/styles.scss +103 -13
- package/switch/styles/_index.scss +82 -0
- package/table/styles/_index.scss +255 -4
- package/tabs/styles/_index.scss +71 -0
- package/textarea/styles/_index.scss +47 -56
- package/theme/styles/_colors.scss +83 -0
- package/theme/styles/_dark.scss +85 -0
- package/theme/styles/_focus.scss +93 -0
- package/theme/styles/_index.scss +5 -0
- package/theme/styles/_mixins.scss +57 -0
- package/theme/styles/_variables.scss +118 -0
- package/tilt-card/styles/_index.scss +40 -0
- package/tilt-card/tilt-card.scss +1 -0
- package/timeline/styles/_index.scss +127 -0
- package/toast/styles/_index.scss +263 -0
- package/toolbar/styles/_index.scss +65 -0
- package/tree/styles/_index.scss +271 -0
- package/types/ngwr-affix.d.ts +43 -0
- package/types/ngwr-alert.d.ts +68 -0
- package/types/ngwr-anchor.d.ts +53 -0
- package/types/ngwr-aurora.d.ts +52 -0
- package/types/ngwr-avatar.d.ts +90 -0
- package/types/ngwr-back-top.d.ts +37 -0
- package/types/ngwr-badge.d.ts +158 -0
- package/types/ngwr-bar-chart.d.ts +47 -0
- package/types/ngwr-blur-text.d.ts +62 -0
- package/types/ngwr-border-glow.d.ts +66 -0
- package/types/ngwr-breadcrumbs.d.ts +61 -0
- package/types/ngwr-burger.d.ts +36 -0
- package/types/ngwr-button.d.ts +176 -0
- package/types/ngwr-calendar-heatmap.d.ts +58 -0
- package/types/ngwr-calendar.d.ts +116 -0
- package/types/ngwr-card.d.ts +50 -0
- package/types/ngwr-carousel.d.ts +57 -0
- package/types/ngwr-cascader.d.ts +107 -0
- package/types/ngwr-checkbox.d.ts +139 -0
- package/types/ngwr-circular-text.d.ts +49 -0
- package/types/ngwr-click-spark.d.ts +52 -0
- package/types/ngwr-clipboard.d.ts +53 -0
- package/types/ngwr-collapse.d.ts +139 -0
- package/types/ngwr-color-picker.d.ts +302 -0
- package/types/ngwr-command-palette.d.ts +113 -0
- package/types/ngwr-compare.d.ts +55 -0
- package/types/ngwr-confetti.d.ts +70 -0
- package/types/ngwr-context-menu.d.ts +207 -0
- package/types/ngwr-cookie.d.ts +60 -0
- package/types/ngwr-counter.d.ts +182 -0
- package/types/ngwr-date-adapter-fns.d.ts +73 -0
- package/types/ngwr-date-adapter-luxon.d.ts +73 -0
- package/types/ngwr-date-adapter.d.ts +198 -0
- package/types/ngwr-date-picker.d.ts +117 -0
- package/types/ngwr-decrypt-text.d.ts +85 -0
- package/types/ngwr-density.d.ts +97 -0
- package/types/ngwr-descriptions.d.ts +41 -0
- package/types/ngwr-dialog.d.ts +210 -0
- package/types/ngwr-directives.d.ts +125 -0
- package/types/ngwr-divider.d.ts +73 -0
- package/types/ngwr-donut-chart.d.ts +53 -0
- package/types/ngwr-drag-drop.d.ts +83 -0
- package/types/ngwr-drawer.d.ts +155 -0
- package/types/ngwr-dropdown.d.ts +124 -0
- package/types/ngwr-empty.d.ts +38 -0
- package/types/ngwr-falling-text.d.ts +63 -0
- package/types/ngwr-file-upload.d.ts +94 -0
- package/types/ngwr-form.d.ts +95 -0
- package/types/ngwr-fuzzy-text.d.ts +74 -0
- package/types/ngwr-gauge.d.ts +39 -0
- package/types/ngwr-glitch-text.d.ts +31 -0
- package/types/ngwr-gradient-text.d.ts +46 -0
- package/types/ngwr-hotkey.d.ts +142 -0
- package/types/ngwr-i18n-en.d.ts +18 -0
- package/types/ngwr-i18n-ru.d.ts +6 -0
- package/types/ngwr-i18n.d.ts +336 -0
- package/types/ngwr-icon-adapters-feather.d.ts +44 -0
- package/types/ngwr-icon-adapters-lucide.d.ts +54 -0
- package/types/ngwr-icon.d.ts +180 -0
- package/types/ngwr-image-cropper.d.ts +110 -0
- package/types/ngwr-input-number.d.ts +77 -0
- package/types/ngwr-input-otp.d.ts +78 -0
- package/types/ngwr-input.d.ts +131 -0
- package/types/ngwr-keyboard.d.ts +34 -0
- package/types/ngwr-knob.d.ts +77 -0
- package/types/ngwr-layout.d.ts +89 -0
- package/types/ngwr-lightbox.d.ts +50 -0
- package/types/ngwr-line-chart.d.ts +90 -0
- package/types/ngwr-list.d.ts +71 -0
- package/types/ngwr-loading-bar.d.ts +79 -0
- package/types/ngwr-marquee.d.ts +95 -0
- package/types/ngwr-media.d.ts +74 -0
- package/types/ngwr-mention.d.ts +110 -0
- package/types/ngwr-meta.d.ts +188 -0
- package/types/ngwr-meter-group.d.ts +57 -0
- package/types/ngwr-overlay.d.ts +110 -0
- package/types/ngwr-page-header.d.ts +35 -0
- package/types/ngwr-pagination.d.ts +119 -0
- package/types/ngwr-pipes.d.ts +177 -0
- package/types/ngwr-platform.d.ts +38 -0
- package/types/ngwr-popconfirm.d.ts +79 -0
- package/types/ngwr-popover.d.ts +90 -0
- package/types/ngwr-progress.d.ts +33 -0
- package/types/ngwr-qr.d.ts +56 -0
- package/types/ngwr-radio.d.ts +120 -0
- package/types/ngwr-rating.d.ts +62 -0
- package/types/ngwr-result.d.ts +64 -0
- package/types/ngwr-rotating-text.d.ts +72 -0
- package/types/ngwr-scramble-text.d.ts +49 -0
- package/types/ngwr-scroll.d.ts +65 -0
- package/types/ngwr-segmented.d.ts +65 -0
- package/types/ngwr-select.d.ts +413 -0
- package/types/ngwr-shiny-text.d.ts +70 -0
- package/types/ngwr-sidebar.d.ts +83 -0
- package/types/ngwr-skeleton.d.ts +41 -0
- package/types/ngwr-slider.d.ts +86 -0
- package/types/ngwr-sparkline.d.ts +48 -0
- package/types/ngwr-speed-dial.d.ts +51 -0
- package/types/ngwr-spinner.d.ts +41 -0
- package/types/ngwr-splash-cursor.d.ts +94 -0
- package/types/ngwr-split-text.d.ts +83 -0
- package/types/ngwr-splitter.d.ts +52 -0
- package/types/ngwr-spotlight-card.d.ts +71 -0
- package/types/ngwr-squircle.d.ts +132 -0
- package/types/ngwr-star-border.d.ts +40 -0
- package/types/ngwr-statistic.d.ts +88 -0
- package/types/ngwr-stepper.d.ts +99 -0
- package/types/ngwr-storage.d.ts +178 -0
- package/types/ngwr-switch.d.ts +39 -0
- package/types/ngwr-table.d.ts +237 -0
- package/types/ngwr-tabs.d.ts +125 -0
- package/types/ngwr-textarea.d.ts +60 -0
- package/types/ngwr-theme.d.ts +124 -0
- package/types/ngwr-tilt-card.d.ts +63 -0
- package/types/ngwr-timeline.d.ts +40 -0
- package/types/ngwr-toast.d.ts +230 -0
- package/types/ngwr-toolbar.d.ts +30 -0
- package/types/ngwr-tree.d.ts +150 -0
- package/types/ngwr-typewriter.d.ts +84 -0
- package/types/ngwr-typography.d.ts +56 -0
- package/types/ngwr-utils.d.ts +447 -0
- package/types/ngwr-validators.d.ts +70 -0
- package/types/ngwr-version.d.ts +44 -0
- package/types/ngwr-virtual-scroll.d.ts +64 -0
- package/types/ngwr-waves.d.ts +71 -0
- package/types/ngwr-window.d.ts +437 -0
- package/typewriter/styles/_index.scss +33 -0
- package/typewriter/typewriter.scss +1 -0
- package/typography/styles/_index.scss +211 -0
- package/virtual-scroll/styles/_index.scss +27 -0
- package/virtual-scroll/virtual-scroll.scss +1 -0
- package/waves/styles/_index.scss +24 -0
- package/waves/waves.scss +1 -0
- package/window/styles/_index.scss +430 -0
- package/alert/index.d.ts +0 -32
- package/alert/styles/theming.scss +0 -26
- package/alert/styles/vars.scss +0 -11
- package/avatar/index.d.ts +0 -30
- package/button/index.d.ts +0 -45
- package/button/styles/vars.scss +0 -13
- package/cdk/index.d.ts +0 -24
- package/cdk/rxjs/index.d.ts +0 -40
- package/cdk/types/index.d.ts +0 -27
- package/checkbox/index.d.ts +0 -31
- package/checkbox/styles/vars.scss +0 -16
- package/dialog/index.d.ts +0 -193
- package/dialog/styles/vars.scss +0 -7
- package/divider/index.d.ts +0 -16
- package/dropdown/index.d.ts +0 -68
- package/dropdown/styles/vars.scss +0 -18
- package/fesm2022/ngwr-cdk-rxjs.mjs +0 -53
- package/fesm2022/ngwr-cdk-rxjs.mjs.map +0 -1
- package/fesm2022/ngwr-cdk-types.mjs +0 -44
- package/fesm2022/ngwr-cdk-types.mjs.map +0 -1
- package/fesm2022/ngwr-cdk-utils.mjs +0 -30
- package/fesm2022/ngwr-cdk-utils.mjs.map +0 -1
- package/fesm2022/ngwr-cdk.mjs +0 -46
- package/fesm2022/ngwr-cdk.mjs.map +0 -1
- package/fesm2022/ngwr-tag.mjs +0 -87
- package/fesm2022/ngwr-tag.mjs.map +0 -1
- package/form/index.d.ts +0 -28
- package/icon/index.d.ts +0 -830
- package/icon/styles/vars.scss +0 -3
- package/input/index.d.ts +0 -43
- package/input/styles/vars.scss +0 -17
- package/pagination/index.d.ts +0 -34
- package/pagination/styles/vars.scss +0 -14
- package/pipes/index.d.ts +0 -17
- package/progress/index.d.ts +0 -13
- package/progress/styles/theming.scss +0 -8
- package/progress/styles/vars.scss +0 -6
- package/qr/index.d.ts +0 -127
- package/select/index.d.ts +0 -121
- package/select/styles/vars.scss +0 -32
- package/skeleton/index.d.ts +0 -13
- package/spinner/index.d.ts +0 -23
- package/styles/animations.scss +0 -92
- package/styles/cdk.scss +0 -5
- package/styles/colors.scss +0 -72
- package/styles/grid.scss +0 -99
- package/styles/maps.scss +0 -31
- package/styles/reset.scss +0 -112
- package/styles/variables.scss +0 -72
- package/table/index.d.ts +0 -101
- package/table/styles/table-filter.scss +0 -202
- package/table/styles/table-sort.scss +0 -47
- package/table/styles/table.scss +0 -232
- package/table/styles/vars.scss +0 -21
- package/tag/index.d.ts +0 -24
- package/tag/styles/_index.scss +0 -32
- package/tag/styles/theming.scss +0 -21
- package/tag/styles/vars.scss +0 -12
- package/textarea/index.d.ts +0 -47
- package/textarea/styles/vars.scss +0 -17
- /package/{index.d.ts → types/ngwr.d.ts} +0 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/** Base Russian catalog for ngwr built-in component strings. */
|
|
2
|
+
const wrRu = {
|
|
3
|
+
common: {
|
|
4
|
+
ok: 'OK',
|
|
5
|
+
cancel: 'Отмена',
|
|
6
|
+
close: 'Закрыть',
|
|
7
|
+
confirm: 'Подтвердить',
|
|
8
|
+
delete: 'Удалить',
|
|
9
|
+
save: 'Сохранить',
|
|
10
|
+
edit: 'Изменить',
|
|
11
|
+
add: 'Добавить',
|
|
12
|
+
remove: 'Удалить',
|
|
13
|
+
clear: 'Очистить',
|
|
14
|
+
search: 'Поиск',
|
|
15
|
+
loading: 'Загрузка…',
|
|
16
|
+
select: 'Выбрать',
|
|
17
|
+
next: 'Далее',
|
|
18
|
+
previous: 'Назад',
|
|
19
|
+
back: 'Назад',
|
|
20
|
+
today: 'Сегодня',
|
|
21
|
+
yesterday: 'Вчера',
|
|
22
|
+
tomorrow: 'Завтра',
|
|
23
|
+
of: 'из',
|
|
24
|
+
},
|
|
25
|
+
pagination: {
|
|
26
|
+
prev: 'Предыдущая страница',
|
|
27
|
+
next: 'Следующая страница',
|
|
28
|
+
itemsPerPage: 'Записей на страницу',
|
|
29
|
+
pageOf: 'Страница {{current}} из {{total}}',
|
|
30
|
+
of: 'из',
|
|
31
|
+
},
|
|
32
|
+
table: {
|
|
33
|
+
empty: 'Нет данных',
|
|
34
|
+
loading: 'Загрузка…',
|
|
35
|
+
sort: 'Сортировать столбец',
|
|
36
|
+
filter: 'Фильтр столбца',
|
|
37
|
+
},
|
|
38
|
+
select: {
|
|
39
|
+
placeholder: 'Выберите…',
|
|
40
|
+
empty: 'Нет вариантов',
|
|
41
|
+
clearSelection: 'Очистить выбор',
|
|
42
|
+
removeItem: 'Удалить {{label}}',
|
|
43
|
+
noResults: 'Ничего не найдено',
|
|
44
|
+
loading: 'Загрузка…',
|
|
45
|
+
},
|
|
46
|
+
// `tree` covers both inline display and combobox-mode pickers
|
|
47
|
+
// (replaces the dropped `treeSelect` namespace).
|
|
48
|
+
tree: {
|
|
49
|
+
expand: 'Развернуть',
|
|
50
|
+
collapse: 'Свернуть',
|
|
51
|
+
placeholder: 'Выберите…',
|
|
52
|
+
clearSelection: 'Очистить выбор',
|
|
53
|
+
removeItem: 'Удалить {{label}}',
|
|
54
|
+
},
|
|
55
|
+
commandPalette: {
|
|
56
|
+
placeholder: 'Введите команду или поиск…',
|
|
57
|
+
noResults: 'Ничего не найдено',
|
|
58
|
+
},
|
|
59
|
+
empty: {
|
|
60
|
+
noData: 'Нет данных',
|
|
61
|
+
},
|
|
62
|
+
fileUpload: {
|
|
63
|
+
browse: 'Нажмите, чтобы выбрать',
|
|
64
|
+
dropZone: 'или перетащите файлы сюда',
|
|
65
|
+
dropZoneLabel: 'Зона загрузки файлов — нажмите или перетащите',
|
|
66
|
+
removeFile: 'Удалить файл',
|
|
67
|
+
invalid: 'Неподдерживаемый тип файла',
|
|
68
|
+
tooBig: 'Файл слишком большой',
|
|
69
|
+
},
|
|
70
|
+
upload: {
|
|
71
|
+
drop: 'Перетащите файлы или нажмите для выбора',
|
|
72
|
+
invalid: 'Неподдерживаемый тип файла',
|
|
73
|
+
tooBig: 'Файл слишком большой',
|
|
74
|
+
},
|
|
75
|
+
popconfirm: {
|
|
76
|
+
confirm: 'Подтвердить',
|
|
77
|
+
cancel: 'Отмена',
|
|
78
|
+
},
|
|
79
|
+
toast: {
|
|
80
|
+
close: 'Закрыть',
|
|
81
|
+
copy: 'Копировать',
|
|
82
|
+
copied: 'Скопировано',
|
|
83
|
+
closeAll: 'Закрыть все',
|
|
84
|
+
},
|
|
85
|
+
input: {
|
|
86
|
+
showPassword: 'Показать пароль',
|
|
87
|
+
hidePassword: 'Скрыть пароль',
|
|
88
|
+
},
|
|
89
|
+
inputNumber: {
|
|
90
|
+
increment: 'Увеличить',
|
|
91
|
+
decrement: 'Уменьшить',
|
|
92
|
+
},
|
|
93
|
+
backTop: {
|
|
94
|
+
label: 'Наверх',
|
|
95
|
+
},
|
|
96
|
+
calendar: {
|
|
97
|
+
prevMonth: 'Предыдущий месяц',
|
|
98
|
+
nextMonth: 'Следующий месяц',
|
|
99
|
+
prevYear: 'Предыдущий год',
|
|
100
|
+
nextYear: 'Следующий год',
|
|
101
|
+
},
|
|
102
|
+
carousel: {
|
|
103
|
+
prev: 'Предыдущий слайд',
|
|
104
|
+
next: 'Следующий слайд',
|
|
105
|
+
pagination: 'Пагинация карусели',
|
|
106
|
+
},
|
|
107
|
+
alert: {
|
|
108
|
+
close: 'Закрыть оповещение',
|
|
109
|
+
},
|
|
110
|
+
image: {
|
|
111
|
+
open: 'Открыть превью',
|
|
112
|
+
close: 'Закрыть превью',
|
|
113
|
+
},
|
|
114
|
+
window: {
|
|
115
|
+
close: 'Закрыть',
|
|
116
|
+
},
|
|
117
|
+
datePicker: {
|
|
118
|
+
open: 'Открыть календарь',
|
|
119
|
+
openTime: 'Открыть выбор времени',
|
|
120
|
+
openDateTime: 'Открыть выбор даты и времени',
|
|
121
|
+
},
|
|
122
|
+
spinner: {
|
|
123
|
+
label: 'Загрузка',
|
|
124
|
+
},
|
|
125
|
+
rating: {
|
|
126
|
+
label: 'Рейтинг',
|
|
127
|
+
},
|
|
128
|
+
result: {
|
|
129
|
+
notFound: 'Извините, страница не найдена.',
|
|
130
|
+
forbidden: 'Извините, доступ к этой странице ограничен.',
|
|
131
|
+
serverError: 'Извините, что-то пошло не так.',
|
|
132
|
+
},
|
|
133
|
+
date: {
|
|
134
|
+
months: {
|
|
135
|
+
jan: 'Январь',
|
|
136
|
+
feb: 'Февраль',
|
|
137
|
+
mar: 'Март',
|
|
138
|
+
apr: 'Апрель',
|
|
139
|
+
may: 'Май',
|
|
140
|
+
jun: 'Июнь',
|
|
141
|
+
jul: 'Июль',
|
|
142
|
+
aug: 'Август',
|
|
143
|
+
sep: 'Сентябрь',
|
|
144
|
+
oct: 'Октябрь',
|
|
145
|
+
nov: 'Ноябрь',
|
|
146
|
+
dec: 'Декабрь',
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Generated bundle index. Do not edit.
|
|
153
|
+
*/
|
|
154
|
+
|
|
155
|
+
export { wrRu };
|
|
156
|
+
//# sourceMappingURL=ngwr-i18n-ru.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngwr-i18n-ru.mjs","sources":["../../../projects/lib/i18n/ru/public-api.ts","../../../projects/lib/i18n/ru/ngwr-i18n-ru.ts"],"sourcesContent":["import { type WrI18nCatalog } from 'ngwr/i18n';\n\n/** Base Russian catalog for ngwr built-in component strings. */\nexport const wrRu: WrI18nCatalog = {\n common: {\n ok: 'OK',\n cancel: 'Отмена',\n close: 'Закрыть',\n confirm: 'Подтвердить',\n delete: 'Удалить',\n save: 'Сохранить',\n edit: 'Изменить',\n add: 'Добавить',\n remove: 'Удалить',\n clear: 'Очистить',\n search: 'Поиск',\n loading: 'Загрузка…',\n select: 'Выбрать',\n next: 'Далее',\n previous: 'Назад',\n back: 'Назад',\n today: 'Сегодня',\n yesterday: 'Вчера',\n tomorrow: 'Завтра',\n of: 'из',\n },\n pagination: {\n prev: 'Предыдущая страница',\n next: 'Следующая страница',\n itemsPerPage: 'Записей на страницу',\n pageOf: 'Страница {{current}} из {{total}}',\n of: 'из',\n },\n table: {\n empty: 'Нет данных',\n loading: 'Загрузка…',\n sort: 'Сортировать столбец',\n filter: 'Фильтр столбца',\n },\n select: {\n placeholder: 'Выберите…',\n empty: 'Нет вариантов',\n clearSelection: 'Очистить выбор',\n removeItem: 'Удалить {{label}}',\n noResults: 'Ничего не найдено',\n loading: 'Загрузка…',\n },\n // `tree` covers both inline display and combobox-mode pickers\n // (replaces the dropped `treeSelect` namespace).\n tree: {\n expand: 'Развернуть',\n collapse: 'Свернуть',\n placeholder: 'Выберите…',\n clearSelection: 'Очистить выбор',\n removeItem: 'Удалить {{label}}',\n },\n commandPalette: {\n placeholder: 'Введите команду или поиск…',\n noResults: 'Ничего не найдено',\n },\n empty: {\n noData: 'Нет данных',\n },\n fileUpload: {\n browse: 'Нажмите, чтобы выбрать',\n dropZone: 'или перетащите файлы сюда',\n dropZoneLabel: 'Зона загрузки файлов — нажмите или перетащите',\n removeFile: 'Удалить файл',\n invalid: 'Неподдерживаемый тип файла',\n tooBig: 'Файл слишком большой',\n },\n upload: {\n drop: 'Перетащите файлы или нажмите для выбора',\n invalid: 'Неподдерживаемый тип файла',\n tooBig: 'Файл слишком большой',\n },\n popconfirm: {\n confirm: 'Подтвердить',\n cancel: 'Отмена',\n },\n toast: {\n close: 'Закрыть',\n copy: 'Копировать',\n copied: 'Скопировано',\n closeAll: 'Закрыть все',\n },\n input: {\n showPassword: 'Показать пароль',\n hidePassword: 'Скрыть пароль',\n },\n inputNumber: {\n increment: 'Увеличить',\n decrement: 'Уменьшить',\n },\n backTop: {\n label: 'Наверх',\n },\n calendar: {\n prevMonth: 'Предыдущий месяц',\n nextMonth: 'Следующий месяц',\n prevYear: 'Предыдущий год',\n nextYear: 'Следующий год',\n },\n carousel: {\n prev: 'Предыдущий слайд',\n next: 'Следующий слайд',\n pagination: 'Пагинация карусели',\n },\n alert: {\n close: 'Закрыть оповещение',\n },\n image: {\n open: 'Открыть превью',\n close: 'Закрыть превью',\n },\n window: {\n close: 'Закрыть',\n },\n datePicker: {\n open: 'Открыть календарь',\n openTime: 'Открыть выбор времени',\n openDateTime: 'Открыть выбор даты и времени',\n },\n spinner: {\n label: 'Загрузка',\n },\n rating: {\n label: 'Рейтинг',\n },\n result: {\n notFound: 'Извините, страница не найдена.',\n forbidden: 'Извините, доступ к этой странице ограничен.',\n serverError: 'Извините, что-то пошло не так.',\n },\n date: {\n months: {\n jan: 'Январь',\n feb: 'Февраль',\n mar: 'Март',\n apr: 'Апрель',\n may: 'Май',\n jun: 'Июнь',\n jul: 'Июль',\n aug: 'Август',\n sep: 'Сентябрь',\n oct: 'Октябрь',\n nov: 'Ноябрь',\n dec: 'Декабрь',\n },\n },\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,478 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, signal, effect, computed, Service, Pipe, input, ElementRef, Directive, makeEnvironmentProviders } from '@angular/core';
|
|
3
|
+
import { firstValueFrom, of, catchError } from 'rxjs';
|
|
4
|
+
import { WrStorage } from 'ngwr/storage';
|
|
5
|
+
import { HttpClient } from '@angular/common/http';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @license
|
|
9
|
+
*
|
|
10
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
11
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
12
|
+
*/
|
|
13
|
+
const DEFAULT_WR_I18N_CONFIG = {
|
|
14
|
+
defaultLocale: 'en',
|
|
15
|
+
availableLocales: ['en'],
|
|
16
|
+
storageKey: 'wr:i18n:locale',
|
|
17
|
+
missingHandler: key => key,
|
|
18
|
+
};
|
|
19
|
+
const WR_I18N_CONFIG = new InjectionToken('WR_I18N_CONFIG', {
|
|
20
|
+
factory: () => DEFAULT_WR_I18N_CONFIG,
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @license
|
|
25
|
+
*
|
|
26
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
27
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
28
|
+
*/
|
|
29
|
+
const WR_I18N_LOADER = new InjectionToken('WR_I18N_LOADER');
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @license
|
|
33
|
+
*
|
|
34
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
35
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
36
|
+
*/
|
|
37
|
+
/** Cache key shape: `<locale>::<scope|''>`. @internal */
|
|
38
|
+
function cacheKey(locale, scope) {
|
|
39
|
+
return `${locale}::${scope ?? ''}`;
|
|
40
|
+
}
|
|
41
|
+
/** Walk a dotted path through a catalog tree. Returns string | null. @internal */
|
|
42
|
+
function walk(cat, key) {
|
|
43
|
+
if (!cat)
|
|
44
|
+
return null;
|
|
45
|
+
let node = cat;
|
|
46
|
+
for (const part of key.split('.')) {
|
|
47
|
+
if (node === undefined || typeof node === 'string')
|
|
48
|
+
return null;
|
|
49
|
+
node = node[part];
|
|
50
|
+
}
|
|
51
|
+
return typeof node === 'string' ? node : null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* `{{name}}` interpolation. Missing params resolve to `''`. Exported so
|
|
55
|
+
* helpers in `util.ts` can interpolate the fallback template when no
|
|
56
|
+
* `WrI18n` provider is wired up.
|
|
57
|
+
*
|
|
58
|
+
* @internal
|
|
59
|
+
*/
|
|
60
|
+
function wrInterpolate(template, params) {
|
|
61
|
+
if (!params)
|
|
62
|
+
return template;
|
|
63
|
+
return template.replace(/\{\{\s*([\w.-]+)\s*\}\}/g, (_match, name) => {
|
|
64
|
+
const v = params[name];
|
|
65
|
+
if (v === undefined || v === null)
|
|
66
|
+
return '';
|
|
67
|
+
if (typeof v === 'string')
|
|
68
|
+
return v;
|
|
69
|
+
if (typeof v === 'number' || typeof v === 'boolean')
|
|
70
|
+
return String(v);
|
|
71
|
+
try {
|
|
72
|
+
return JSON.stringify(v);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return '';
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Reactive i18n service. Holds:
|
|
81
|
+
*
|
|
82
|
+
* - the active locale as a `Signal<string>`
|
|
83
|
+
* - per-`(locale, scope)` catalogs in a `Map` (loaded once, then cached)
|
|
84
|
+
* - a per-locale signal counter so every `translate()` reading the signal
|
|
85
|
+
* re-evaluates the moment a new catalog finishes loading
|
|
86
|
+
*
|
|
87
|
+
* Translations are looked up scope-first, then root. `t('forms.save', { ... })`
|
|
88
|
+
* with `scope: 'forms'` will try the scoped catalog before falling back to
|
|
89
|
+
* `forms.save` in the root catalog — useful for per-feature overrides.
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```ts
|
|
93
|
+
* const i18n = inject(WrI18n);
|
|
94
|
+
* i18n.use('ru'); // switch locale
|
|
95
|
+
* i18n.t('cart.checkout'); // → 'Оформить заказ'
|
|
96
|
+
* i18n.t('greeting', { name: 'Ada' }); // → 'Hello, Ada!'
|
|
97
|
+
*
|
|
98
|
+
* effect(() => console.log(i18n.translate('hi')())); // re-runs on locale change
|
|
99
|
+
* ```
|
|
100
|
+
*
|
|
101
|
+
* @see https://ngwr.dev/services/i18n
|
|
102
|
+
*/
|
|
103
|
+
class WrI18n {
|
|
104
|
+
config = inject(WR_I18N_CONFIG);
|
|
105
|
+
loader = inject(WR_I18N_LOADER);
|
|
106
|
+
storage = inject(WrStorage);
|
|
107
|
+
/** Per-(locale,scope) catalogs, populated by `loadCatalog`. @internal */
|
|
108
|
+
catalogs = new Map();
|
|
109
|
+
/** Bumped after each catalog write so reactive translates recompute. @internal */
|
|
110
|
+
revision = signal(0, /* @ts-ignore */
|
|
111
|
+
...(ngDevMode ? [{ debugName: "revision" }] : /* istanbul ignore next */ []));
|
|
112
|
+
/** In-flight load promises — dedupes parallel `t()` callers. @internal */
|
|
113
|
+
inflight = new Map();
|
|
114
|
+
/** Registered scopes — auto-loaded whenever the locale changes. @internal */
|
|
115
|
+
scopes = new Set();
|
|
116
|
+
/** Active locale. Writes go through `use()` so storage stays in sync. */
|
|
117
|
+
_locale = signal(this.initialLocale(), /* @ts-ignore */
|
|
118
|
+
...(ngDevMode ? [{ debugName: "_locale" }] : /* istanbul ignore next */ []));
|
|
119
|
+
locale = this._locale.asReadonly();
|
|
120
|
+
constructor() {
|
|
121
|
+
// Eagerly load the root catalog + every registered scope for the
|
|
122
|
+
// current locale. Subsequent locale changes refire the same effect.
|
|
123
|
+
effect(() => {
|
|
124
|
+
const lc = this._locale();
|
|
125
|
+
void this.loadCatalog(lc, null);
|
|
126
|
+
for (const sc of this.scopes)
|
|
127
|
+
void this.loadCatalog(lc, sc);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
// Locale
|
|
131
|
+
/** Switch active locale. Ignored when not whitelisted. */
|
|
132
|
+
use(locale) {
|
|
133
|
+
if (!this.config.availableLocales.includes(locale))
|
|
134
|
+
return;
|
|
135
|
+
this._locale.set(locale);
|
|
136
|
+
if (this.config.storageKey)
|
|
137
|
+
this.storage.set(this.config.storageKey, locale);
|
|
138
|
+
}
|
|
139
|
+
/** Available locales — pass-through from config. */
|
|
140
|
+
available() {
|
|
141
|
+
return this.config.availableLocales;
|
|
142
|
+
}
|
|
143
|
+
// Scopes
|
|
144
|
+
/**
|
|
145
|
+
* Register a scope so its catalog loads alongside the root one. Idempotent.
|
|
146
|
+
* Returns a promise resolving once the current locale's scope catalog is in
|
|
147
|
+
* the cache — handy for feature `canActivate` guards.
|
|
148
|
+
*/
|
|
149
|
+
registerScope(scope) {
|
|
150
|
+
this.scopes.add(scope);
|
|
151
|
+
return this.loadCatalog(this._locale(), scope);
|
|
152
|
+
}
|
|
153
|
+
// Translate
|
|
154
|
+
/**
|
|
155
|
+
* Eager translate — returns the current value or the missing-handler
|
|
156
|
+
* fallback. Does NOT auto-load missing catalogs; combine with the
|
|
157
|
+
* reactive `translate(...)` if you want load-on-demand.
|
|
158
|
+
*/
|
|
159
|
+
t(key, params, scope) {
|
|
160
|
+
// Read revision so callers inside computed/effect re-run on updates.
|
|
161
|
+
this.revision();
|
|
162
|
+
const lc = this._locale();
|
|
163
|
+
let hit = scope ? walk(this.catalogs.get(cacheKey(lc, scope)) ?? null, key) : null;
|
|
164
|
+
hit ??= walk(this.catalogs.get(cacheKey(lc, null)) ?? null, key);
|
|
165
|
+
if (hit === null) {
|
|
166
|
+
// Fire a background load so a future read can resolve it.
|
|
167
|
+
void this.loadCatalog(lc, scope ?? null);
|
|
168
|
+
return this.config.missingHandler(key, lc);
|
|
169
|
+
}
|
|
170
|
+
return wrInterpolate(hit, params);
|
|
171
|
+
}
|
|
172
|
+
/** Reactive translate — re-evaluates on locale or catalog updates. */
|
|
173
|
+
translate(key, params, scope) {
|
|
174
|
+
return computed(() => this.t(key, params, scope));
|
|
175
|
+
}
|
|
176
|
+
// Internals
|
|
177
|
+
initialLocale() {
|
|
178
|
+
if (this.config.storageKey) {
|
|
179
|
+
const saved = this.storage.get(this.config.storageKey);
|
|
180
|
+
if (saved && this.config.availableLocales.includes(saved))
|
|
181
|
+
return saved;
|
|
182
|
+
}
|
|
183
|
+
return this.config.defaultLocale;
|
|
184
|
+
}
|
|
185
|
+
loadCatalog(locale, scope) {
|
|
186
|
+
const ck = cacheKey(locale, scope);
|
|
187
|
+
const cached = this.catalogs.get(ck);
|
|
188
|
+
if (cached)
|
|
189
|
+
return Promise.resolve(cached);
|
|
190
|
+
const pending = this.inflight.get(ck);
|
|
191
|
+
if (pending)
|
|
192
|
+
return pending;
|
|
193
|
+
const stream = this.loader.load(locale, scope);
|
|
194
|
+
const promise = firstValueFrom(stream)
|
|
195
|
+
.then(catalog => {
|
|
196
|
+
this.catalogs.set(ck, catalog);
|
|
197
|
+
this.revision.update(v => v + 1);
|
|
198
|
+
return catalog;
|
|
199
|
+
})
|
|
200
|
+
.catch((err) => {
|
|
201
|
+
// eslint-disable-next-line no-console -- intentional diagnostic for missing catalog
|
|
202
|
+
console.warn(`[ngwr/i18n] failed to load (${locale}, ${scope ?? 'root'})`, err);
|
|
203
|
+
const empty = {};
|
|
204
|
+
this.catalogs.set(ck, empty);
|
|
205
|
+
return empty;
|
|
206
|
+
})
|
|
207
|
+
.finally(() => {
|
|
208
|
+
this.inflight.delete(ck);
|
|
209
|
+
});
|
|
210
|
+
this.inflight.set(ck, promise);
|
|
211
|
+
return promise;
|
|
212
|
+
}
|
|
213
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrI18n, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
214
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.0.2", ngImport: i0, type: WrI18n });
|
|
215
|
+
}
|
|
216
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrI18n, decorators: [{
|
|
217
|
+
type: Service
|
|
218
|
+
}], ctorParameters: () => [] });
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* @license
|
|
222
|
+
*
|
|
223
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
224
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
225
|
+
*/
|
|
226
|
+
/**
|
|
227
|
+
* Translate a key. Impure — re-evaluates on every CD so locale switches
|
|
228
|
+
* and catalog loads propagate without a manual refresh.
|
|
229
|
+
*
|
|
230
|
+
* @example
|
|
231
|
+
* ```html
|
|
232
|
+
* <h1>{{ 'home.title' | wrT }}</h1>
|
|
233
|
+
* <p>{{ 'greeting' | wrT: { name: user().name } }}</p>
|
|
234
|
+
* <button>{{ 'forms.save' | wrT: null : 'checkout' }}</button>
|
|
235
|
+
* ```
|
|
236
|
+
*/
|
|
237
|
+
// eslint-disable-next-line @angular-eslint/no-pipe-impure -- intentional: locale + catalog updates must propagate even when args are stable
|
|
238
|
+
class WrTPipe {
|
|
239
|
+
i18n = inject(WrI18n);
|
|
240
|
+
transform(key, params, scope) {
|
|
241
|
+
return this.i18n.t(key, params ?? undefined, scope);
|
|
242
|
+
}
|
|
243
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrTPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
244
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.2", ngImport: i0, type: WrTPipe, isStandalone: true, name: "wrT", pure: false });
|
|
245
|
+
}
|
|
246
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrTPipe, decorators: [{
|
|
247
|
+
type: Pipe,
|
|
248
|
+
args: [{ name: 'wrT', pure: false }]
|
|
249
|
+
}] });
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* @license
|
|
253
|
+
*
|
|
254
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
255
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
256
|
+
*/
|
|
257
|
+
/**
|
|
258
|
+
* Attribute directive that sets `textContent` of its host to the translation
|
|
259
|
+
* of the bound key. Reactive — re-renders on locale + catalog changes.
|
|
260
|
+
*
|
|
261
|
+
* @example
|
|
262
|
+
* ```html
|
|
263
|
+
* <span [wrT]="'home.title'"></span>
|
|
264
|
+
* <span [wrT]="'greeting'" [wrTParams]="{ name: user().name }"></span>
|
|
265
|
+
* <span [wrT]="'forms.save'" wrTScope="checkout"></span>
|
|
266
|
+
* ```
|
|
267
|
+
*/
|
|
268
|
+
class WrTDirective {
|
|
269
|
+
/** Translation key. Required. */
|
|
270
|
+
wrT = input.required(/* @ts-ignore */
|
|
271
|
+
...(ngDevMode ? [{ debugName: "wrT" }] : /* istanbul ignore next */ []));
|
|
272
|
+
/** Interpolation params for `{{name}}` tokens. */
|
|
273
|
+
wrTParams = input(null, /* @ts-ignore */
|
|
274
|
+
...(ngDevMode ? [{ debugName: "wrTParams" }] : /* istanbul ignore next */ []));
|
|
275
|
+
/** Optional scope — scoped lookup first, then root fallback. */
|
|
276
|
+
wrTScope = input(null, /* @ts-ignore */
|
|
277
|
+
...(ngDevMode ? [{ debugName: "wrTScope" }] : /* istanbul ignore next */ []));
|
|
278
|
+
host = inject(ElementRef);
|
|
279
|
+
i18n = inject(WrI18n);
|
|
280
|
+
text = computed(() => this.i18n.t(this.wrT(), this.wrTParams() ?? undefined, this.wrTScope() ?? undefined), /* @ts-ignore */
|
|
281
|
+
...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
|
|
282
|
+
constructor() {
|
|
283
|
+
effect(() => {
|
|
284
|
+
this.host.nativeElement.textContent = this.text();
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrTDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
288
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: WrTDirective, isStandalone: true, selector: "[wrT]", inputs: { wrT: { classPropertyName: "wrT", publicName: "wrT", isSignal: true, isRequired: true, transformFunction: null }, wrTParams: { classPropertyName: "wrTParams", publicName: "wrTParams", isSignal: true, isRequired: false, transformFunction: null }, wrTScope: { classPropertyName: "wrTScope", publicName: "wrTScope", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
289
|
+
}
|
|
290
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrTDirective, decorators: [{
|
|
291
|
+
type: Directive,
|
|
292
|
+
args: [{
|
|
293
|
+
selector: '[wrT]',
|
|
294
|
+
}]
|
|
295
|
+
}], ctorParameters: () => [], propDecorators: { wrT: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrT", required: true }] }], wrTParams: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrTParams", required: false }] }], wrTScope: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrTScope", required: false }] }] } });
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* @license
|
|
299
|
+
*
|
|
300
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
301
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
302
|
+
*/
|
|
303
|
+
/**
|
|
304
|
+
* Loader for catalogs already in memory (imported from JSON or generated).
|
|
305
|
+
*
|
|
306
|
+
* - Pass `catalogs` for the root catalog of every locale.
|
|
307
|
+
* - Pass `scopes` if you ship per-feature catalogs the loader should serve
|
|
308
|
+
* to `WrI18n.registerScope(name)` calls.
|
|
309
|
+
*
|
|
310
|
+
* Missing locale or scope resolves to `{}` — the missing-key handler then
|
|
311
|
+
* decides what to render.
|
|
312
|
+
*/
|
|
313
|
+
class WrI18nStaticLoader {
|
|
314
|
+
catalogs;
|
|
315
|
+
scopes;
|
|
316
|
+
constructor(catalogs, scopes = {}) {
|
|
317
|
+
this.catalogs = catalogs;
|
|
318
|
+
this.scopes = scopes;
|
|
319
|
+
}
|
|
320
|
+
load(locale, scope) {
|
|
321
|
+
if (scope === null)
|
|
322
|
+
return of(this.catalogs[locale] ?? {});
|
|
323
|
+
return of(this.scopes[scope]?.[locale] ?? {});
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* @license
|
|
329
|
+
*
|
|
330
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
331
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
332
|
+
*/
|
|
333
|
+
/**
|
|
334
|
+
* Loader that fetches catalogs via `HttpClient`. Failures resolve to `{}`
|
|
335
|
+
* (logged once at the service layer) so a missing file never throws into
|
|
336
|
+
* user code.
|
|
337
|
+
*/
|
|
338
|
+
class WrI18nHttpLoader {
|
|
339
|
+
config;
|
|
340
|
+
http = inject(HttpClient);
|
|
341
|
+
constructor(config) {
|
|
342
|
+
this.config = config;
|
|
343
|
+
}
|
|
344
|
+
load(locale, scope) {
|
|
345
|
+
const template = scope === null ? (this.config.rootPath ?? this.config.path) : this.config.path;
|
|
346
|
+
const url = template.replace('{locale}', locale).replace('{scope}', scope ?? '');
|
|
347
|
+
return this.http.get(url).pipe(catchError(() => of({})));
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* @license
|
|
353
|
+
*
|
|
354
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
355
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
356
|
+
*/
|
|
357
|
+
function provideWrI18n(options = {}) {
|
|
358
|
+
const { loader, ...config } = options;
|
|
359
|
+
const merged = { ...DEFAULT_WR_I18N_CONFIG, ...config };
|
|
360
|
+
const providers = [{ provide: WR_I18N_CONFIG, useValue: merged }];
|
|
361
|
+
if (loader)
|
|
362
|
+
providers.push({ provide: WR_I18N_LOADER, useValue: loader });
|
|
363
|
+
return makeEnvironmentProviders(providers);
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Provide a static loader — catalogs already in memory.
|
|
367
|
+
*
|
|
368
|
+
* @param catalogs Root catalogs keyed by locale.
|
|
369
|
+
* @param scopes Optional per-scope catalogs served to `registerScope(name)`.
|
|
370
|
+
*/
|
|
371
|
+
function provideWrI18nStaticLoader(catalogs, scopes) {
|
|
372
|
+
return { provide: WR_I18N_LOADER, useValue: new WrI18nStaticLoader(catalogs, scopes) };
|
|
373
|
+
}
|
|
374
|
+
/** Provide an HTTP loader — catalogs fetched from URLs. Requires `provideHttpClient`. */
|
|
375
|
+
function provideWrI18nHttpLoader(config) {
|
|
376
|
+
return { provide: WR_I18N_LOADER, useFactory: () => new WrI18nHttpLoader(config) };
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
/**
|
|
380
|
+
* @license
|
|
381
|
+
*
|
|
382
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
383
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
384
|
+
*/
|
|
385
|
+
/**
|
|
386
|
+
* Helper for component default text. Returns a reactive string that:
|
|
387
|
+
*
|
|
388
|
+
* 1. Prefers the consumer's override (an `input<string | null>()` value).
|
|
389
|
+
* 2. Falls back to the i18n catalog under `key` — re-renders on locale
|
|
390
|
+
* change so a switcher updates the DOM live.
|
|
391
|
+
* 3. Falls back to `fallback` when no `WrI18n` is provided OR the catalog
|
|
392
|
+
* is missing the key.
|
|
393
|
+
*
|
|
394
|
+
* Components don't need a hard dependency on `provideWrI18n` — without it,
|
|
395
|
+
* the fallback is returned and everything still works.
|
|
396
|
+
*
|
|
397
|
+
* @example
|
|
398
|
+
* ```ts
|
|
399
|
+
* readonly emptyText = input<string | null>(null);
|
|
400
|
+
* protected readonly empty = useI18nText(this.emptyText, 'table.empty', 'No data');
|
|
401
|
+
*
|
|
402
|
+
* // In template: <div>{{ empty() }}</div>
|
|
403
|
+
* ```
|
|
404
|
+
*/
|
|
405
|
+
function useI18nText(binding, key, fallback) {
|
|
406
|
+
const i18n = inject(WrI18n, { optional: true });
|
|
407
|
+
if (!i18n) {
|
|
408
|
+
return computed(() => {
|
|
409
|
+
const v = binding();
|
|
410
|
+
return v ?? fallback;
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
return computed(() => {
|
|
414
|
+
const v = binding();
|
|
415
|
+
if (v !== null && v !== undefined && v !== '')
|
|
416
|
+
return v;
|
|
417
|
+
const translated = i18n.t(key);
|
|
418
|
+
// Default missing handler returns the key itself — treat that as "missing"
|
|
419
|
+
// and use our explicit fallback.
|
|
420
|
+
return translated === key ? fallback : translated;
|
|
421
|
+
});
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Like {@link useI18nText} but takes a literal value (not a Signal) — for
|
|
425
|
+
* computed `aria-label`s that already mix a static piece with a dynamic
|
|
426
|
+
* value. Returns the resolved string once, at injection time.
|
|
427
|
+
*/
|
|
428
|
+
function readI18nText(key, fallback) {
|
|
429
|
+
const i18n = inject(WrI18n, { optional: true });
|
|
430
|
+
if (!i18n)
|
|
431
|
+
return fallback;
|
|
432
|
+
const v = i18n.t(key);
|
|
433
|
+
return v === key ? fallback : v;
|
|
434
|
+
}
|
|
435
|
+
/** Tiny shim — useful when the caller doesn't have an `input` to forward. */
|
|
436
|
+
function nullSignal() {
|
|
437
|
+
return signal(null).asReadonly();
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Build a per-call formatter for parametrized labels (e.g. ARIA labels
|
|
441
|
+
* that interpolate a per-row value: `"Remove {{label}}"`). Returns a
|
|
442
|
+
* function the template calls with the params for the current item.
|
|
443
|
+
*
|
|
444
|
+
* The returned function:
|
|
445
|
+
* - Re-resolves the i18n catalog on every call (live locale switches just
|
|
446
|
+
* work — re-rendered templates pick up new strings).
|
|
447
|
+
* - Falls back to the literal `fallback` template with the same
|
|
448
|
+
* `{{name}}` syntax when no `WrI18n` provider is present, or when the
|
|
449
|
+
* key is missing.
|
|
450
|
+
*
|
|
451
|
+
* Use this for labels that vary per row. For static labels, prefer
|
|
452
|
+
* {@link useI18nText} or {@link readI18nText}.
|
|
453
|
+
*
|
|
454
|
+
* @example
|
|
455
|
+
* ```ts
|
|
456
|
+
* protected readonly removeChipLabel = useI18nFormatter('select.removeItem', 'Remove {{label}}');
|
|
457
|
+
*
|
|
458
|
+
* // In template:
|
|
459
|
+
* // [attr.aria-label]="removeChipLabel({ label: chip.label })"
|
|
460
|
+
* ```
|
|
461
|
+
*/
|
|
462
|
+
function useI18nFormatter(key, fallback) {
|
|
463
|
+
const i18n = inject(WrI18n, { optional: true });
|
|
464
|
+
if (!i18n) {
|
|
465
|
+
return (params) => wrInterpolate(fallback, params);
|
|
466
|
+
}
|
|
467
|
+
return (params) => {
|
|
468
|
+
const v = i18n.t(key, params);
|
|
469
|
+
return v === key ? wrInterpolate(fallback, params) : v;
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
/**
|
|
474
|
+
* Generated bundle index. Do not edit.
|
|
475
|
+
*/
|
|
476
|
+
|
|
477
|
+
export { DEFAULT_WR_I18N_CONFIG, WR_I18N_CONFIG, WR_I18N_LOADER, WrI18n, WrI18nHttpLoader, WrI18nStaticLoader, WrTDirective, WrTPipe, provideWrI18n, provideWrI18nHttpLoader, provideWrI18nStaticLoader, readI18nText, useI18nFormatter, useI18nText };
|
|
478
|
+
//# sourceMappingURL=ngwr-i18n.mjs.map
|