ngwr 6.1.1 → 7.0.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/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-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 +266 -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 +361 -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 +576 -99
- 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 +83 -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 +356 -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 +102 -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-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 +164 -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
package/fesm2022/ngwr-pipes.mjs
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Pipe } from '@angular/core';
|
|
2
|
+
import { Pipe, inject, LOCALE_ID } from '@angular/core';
|
|
3
|
+
import { WrDateAdapter } from 'ngwr/date-adapter';
|
|
4
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
3
5
|
|
|
4
6
|
/**
|
|
5
7
|
* @license
|
|
@@ -7,18 +9,240 @@ import { Pipe } from '@angular/core';
|
|
|
7
9
|
* Use of this source code is governed by an MIT-style license that can be
|
|
8
10
|
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
9
11
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
const UNITS = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];
|
|
13
|
+
/**
|
|
14
|
+
* Humanise a byte count using binary (1024-based) units.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```html
|
|
18
|
+
* {{ 1234 | wrBytes }} <!-- "1.2 KB" -->
|
|
19
|
+
* {{ 1234567 | wrBytes: 0 }} <!-- "1 MB" -->
|
|
20
|
+
* {{ 0 | wrBytes }} <!-- "0 B" -->
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
class WrBytes {
|
|
24
|
+
transform(value, decimals = 1) {
|
|
25
|
+
if (value === null || value === undefined || value === '')
|
|
26
|
+
return '';
|
|
27
|
+
const n = Number(value);
|
|
28
|
+
if (!Number.isFinite(n) || n <= 0)
|
|
29
|
+
return '0 B';
|
|
30
|
+
const i = Math.min(Math.floor(Math.log(n) / Math.log(1024)), UNITS.length - 1);
|
|
31
|
+
const v = n / 1024 ** i;
|
|
32
|
+
// Whole bytes never show a fractional part.
|
|
33
|
+
const fractionDigits = i === 0 ? 0 : Math.max(0, decimals);
|
|
34
|
+
return `${v.toFixed(fractionDigits)} ${UNITS[i]}`;
|
|
35
|
+
}
|
|
36
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrBytes, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
37
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: WrBytes, isStandalone: true, name: "wrBytes" });
|
|
38
|
+
}
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrBytes, decorators: [{
|
|
40
|
+
type: Pipe,
|
|
41
|
+
args: [{ name: 'wrBytes' }]
|
|
42
|
+
}] });
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* @license
|
|
46
|
+
*
|
|
47
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
48
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
49
|
+
*/
|
|
50
|
+
/**
|
|
51
|
+
* Locale-aware date formatting. Delegates to `WrDateAdapter` when
|
|
52
|
+
* `provideWrDateAdapter()` is in the provider tree (giving access to named
|
|
53
|
+
* format keys like `'shortDate'` and `'longDate'`), otherwise falls back to
|
|
54
|
+
* a minimal `Intl.DateTimeFormat`-based formatter so the pipe still works
|
|
55
|
+
* without the date-adapter package wired up.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```html
|
|
59
|
+
* {{ now | wrDate }} <!-- shortDate -->
|
|
60
|
+
* {{ now | wrDate: 'mediumDateTime' }} <!-- named key -->
|
|
61
|
+
* {{ now | wrDate: 'dd.MM.yyyy' }} <!-- raw token string -->
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
class WrDate {
|
|
65
|
+
adapter = inject(WrDateAdapter, { optional: true });
|
|
66
|
+
locale = inject(LOCALE_ID);
|
|
67
|
+
transform(value, format = 'shortDate') {
|
|
68
|
+
if (value === null || value === undefined || value === '')
|
|
69
|
+
return '';
|
|
70
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
71
|
+
if (Number.isNaN(date.getTime()))
|
|
72
|
+
return '';
|
|
73
|
+
if (this.adapter)
|
|
74
|
+
return this.adapter.format(date, format);
|
|
75
|
+
return this.fallback(date, format);
|
|
76
|
+
}
|
|
77
|
+
/** Tiny fallback for the named keys when no adapter is provided. */
|
|
78
|
+
fallback(date, format) {
|
|
79
|
+
const named = {
|
|
80
|
+
shortDate: { dateStyle: 'short' },
|
|
81
|
+
mediumDate: { dateStyle: 'medium' },
|
|
82
|
+
longDate: { dateStyle: 'long' },
|
|
83
|
+
time: { timeStyle: 'short' },
|
|
84
|
+
shortDateTime: { dateStyle: 'short', timeStyle: 'short' },
|
|
85
|
+
mediumDateTime: { dateStyle: 'medium', timeStyle: 'short' },
|
|
86
|
+
};
|
|
87
|
+
const opts = named[format] ?? { dateStyle: 'short' };
|
|
88
|
+
return new Intl.DateTimeFormat(this.locale, opts).format(date);
|
|
89
|
+
}
|
|
90
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrDate, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
91
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: WrDate, isStandalone: true, name: "wrDate" });
|
|
92
|
+
}
|
|
93
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrDate, decorators: [{
|
|
94
|
+
type: Pipe,
|
|
95
|
+
args: [{ name: 'wrDate' }]
|
|
96
|
+
}] });
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* @license
|
|
100
|
+
*
|
|
101
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
102
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
103
|
+
*/
|
|
104
|
+
/** Escapes RegExp metacharacters so user input is safe to inline. @internal */
|
|
105
|
+
const RE_META = /[\\^$.*+?()[\]{}|]/g;
|
|
106
|
+
/** HTML-entities for the four chars that matter inside our `<mark>` wrap. @internal */
|
|
107
|
+
function escapeHtml(s) {
|
|
108
|
+
return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Wrap every occurrence of `query` in `<mark>` tags. Useful for highlighting
|
|
112
|
+
* search-term matches in autocomplete results, lists, and table cells.
|
|
113
|
+
*
|
|
114
|
+
* The output is `SafeHtml` — bind with `[innerHTML]`. Input is escaped first
|
|
115
|
+
* so user-supplied values can't inject markup.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```html
|
|
119
|
+
* <span [innerHTML]="row.name | wrMark: query()"></span>
|
|
120
|
+
*
|
|
121
|
+
* <!-- Case-sensitive: -->
|
|
122
|
+
* <span [innerHTML]="row.name | wrMark: query() : true"></span>
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
class WrMark {
|
|
126
|
+
sanitizer = inject(DomSanitizer);
|
|
127
|
+
/**
|
|
128
|
+
* @param value Source text.
|
|
129
|
+
* @param query Search term to highlight. Empty/null skips the wrap.
|
|
130
|
+
* @param caseSensitive Match exactly. @default false
|
|
131
|
+
*/
|
|
132
|
+
transform(value, query, caseSensitive = false) {
|
|
133
|
+
if (value === null || value === undefined)
|
|
134
|
+
return '';
|
|
135
|
+
const text = String(value);
|
|
136
|
+
if (!query)
|
|
137
|
+
return text;
|
|
138
|
+
const safe = escapeHtml(text);
|
|
139
|
+
const pattern = new RegExp(query.replace(RE_META, '\\$&'), caseSensitive ? 'g' : 'gi');
|
|
140
|
+
const html = safe.replace(pattern, m => `<mark>${escapeHtml(m)}</mark>`);
|
|
141
|
+
return this.sanitizer.bypassSecurityTrustHtml(html);
|
|
142
|
+
}
|
|
143
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrMark, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
144
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: WrMark, isStandalone: true, name: "wrMark" });
|
|
145
|
+
}
|
|
146
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrMark, decorators: [{
|
|
147
|
+
type: Pipe,
|
|
148
|
+
args: [{ name: 'wrMark' }]
|
|
149
|
+
}] });
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* @license
|
|
153
|
+
*
|
|
154
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
155
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
156
|
+
*/
|
|
157
|
+
/**
|
|
158
|
+
* Locale-aware number formatting via `Intl.NumberFormat`. Uses Angular's
|
|
159
|
+
* `LOCALE_ID` as the default locale.
|
|
160
|
+
*
|
|
161
|
+
* Accepts either a style shortcut (with optional currency code) or a full
|
|
162
|
+
* `Intl.NumberFormatOptions` object for fine-grained control.
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* ```html
|
|
166
|
+
* {{ 1234.5 | wrNumber }} <!-- "1,234.5" -->
|
|
167
|
+
* {{ 0.875 | wrNumber: 'percent' }} <!-- "88%" -->
|
|
168
|
+
* {{ 19.99 | wrNumber: 'currency': 'USD' }} <!-- "$19.99" -->
|
|
169
|
+
* {{ 19.99 | wrNumber: { minimumFractionDigits: 2 } }}
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
class WrNumber {
|
|
173
|
+
locale = inject(LOCALE_ID);
|
|
174
|
+
transform(value, styleOrOptions = 'decimal', currency = 'USD') {
|
|
175
|
+
if (value === null || value === undefined || value === '')
|
|
176
|
+
return '';
|
|
177
|
+
const n = Number(value);
|
|
178
|
+
if (!Number.isFinite(n))
|
|
179
|
+
return '';
|
|
180
|
+
const options = typeof styleOrOptions === 'string' ? this.toOptions(styleOrOptions, currency) : styleOrOptions;
|
|
181
|
+
return new Intl.NumberFormat(this.locale, options).format(n);
|
|
182
|
+
}
|
|
183
|
+
toOptions(style, currency) {
|
|
184
|
+
switch (style) {
|
|
185
|
+
case 'percent':
|
|
186
|
+
return { style: 'percent', maximumFractionDigits: 2 };
|
|
187
|
+
case 'currency':
|
|
188
|
+
return { style: 'currency', currency };
|
|
189
|
+
case 'decimal':
|
|
190
|
+
default:
|
|
191
|
+
return { style: 'decimal' };
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrNumber, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
195
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: WrNumber, isStandalone: true, name: "wrNumber" });
|
|
196
|
+
}
|
|
197
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrNumber, decorators: [{
|
|
198
|
+
type: Pipe,
|
|
199
|
+
args: [{ name: 'wrNumber' }]
|
|
200
|
+
}] });
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* @license
|
|
204
|
+
*
|
|
205
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
206
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
207
|
+
*/
|
|
208
|
+
/**
|
|
209
|
+
* Locale-aware pluralization via `Intl.PluralRules`. Picks the right word
|
|
210
|
+
* form for the count — including languages with more than two forms
|
|
211
|
+
* (Russian, Polish, Arabic, …) — without hand-rolled `n % 10` rules.
|
|
212
|
+
*
|
|
213
|
+
* Categories follow CLDR: `zero` / `one` / `two` / `few` / `many` /
|
|
214
|
+
* `other`. Missing categories fall back to `other`.
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* ```html
|
|
218
|
+
* {{ 1 | wrPlural: { one: 'comment', other: 'comments' } }}
|
|
219
|
+
* <!-- "1 comment" -->
|
|
220
|
+
*
|
|
221
|
+
* {{ 5 | wrPlural: { one: 'файл', few: 'файла', other: 'файлов' } }}
|
|
222
|
+
* <!-- "5 файлов" (with LOCALE_ID = ru) -->
|
|
223
|
+
*
|
|
224
|
+
* {{ count() | wrPlural: forms : { includeValue: false } }}
|
|
225
|
+
* <!-- word only -->
|
|
226
|
+
* ```
|
|
227
|
+
*/
|
|
228
|
+
class WrPlural {
|
|
229
|
+
locale = inject(LOCALE_ID);
|
|
230
|
+
transform(value, forms, options = {}) {
|
|
231
|
+
if (value === null || value === undefined || !Number.isFinite(value))
|
|
232
|
+
return '';
|
|
233
|
+
const locale = options.locale ?? this.locale;
|
|
234
|
+
const category = new Intl.PluralRules(locale).select(value);
|
|
235
|
+
const word = forms[category] ?? forms.other;
|
|
236
|
+
if (options.includeValue === false)
|
|
237
|
+
return word;
|
|
238
|
+
return `${new Intl.NumberFormat(locale).format(value)} ${word}`;
|
|
13
239
|
}
|
|
14
|
-
static
|
|
15
|
-
static
|
|
240
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrPlural, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
241
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: WrPlural, isStandalone: true, name: "wrPlural" });
|
|
16
242
|
}
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
243
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrPlural, decorators: [{
|
|
18
244
|
type: Pipe,
|
|
19
|
-
args: [{
|
|
20
|
-
name: 'newArray',
|
|
21
|
-
}]
|
|
245
|
+
args: [{ name: 'wrPlural' }]
|
|
22
246
|
}] });
|
|
23
247
|
|
|
24
248
|
/**
|
|
@@ -27,10 +251,65 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImpo
|
|
|
27
251
|
* Use of this source code is governed by an MIT-style license that can be
|
|
28
252
|
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
29
253
|
*/
|
|
254
|
+
/**
|
|
255
|
+
* Creates an array of sequential indices `[0, 1, 2, ..., n-1]`.
|
|
256
|
+
*
|
|
257
|
+
* Useful for repeating template blocks a fixed number of times.
|
|
258
|
+
*
|
|
259
|
+
* @example
|
|
260
|
+
* ```html
|
|
261
|
+
* @for (i of (5 | wrRange); track i) {
|
|
262
|
+
* <div>Item {{ i }}</div>
|
|
263
|
+
* }
|
|
264
|
+
* ```
|
|
265
|
+
*/
|
|
266
|
+
class WrRange {
|
|
267
|
+
transform(length) {
|
|
268
|
+
return Array.from({ length }, (_, i) => i);
|
|
269
|
+
}
|
|
270
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrRange, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
271
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: WrRange, isStandalone: true, name: "wrRange" });
|
|
272
|
+
}
|
|
273
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrRange, decorators: [{
|
|
274
|
+
type: Pipe,
|
|
275
|
+
args: [{ name: 'wrRange' }]
|
|
276
|
+
}] });
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* @license
|
|
280
|
+
*
|
|
281
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
282
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
283
|
+
*/
|
|
284
|
+
/**
|
|
285
|
+
* Clamp a string to `length` characters, appending `ellipsis` when truncated.
|
|
286
|
+
*
|
|
287
|
+
* @example
|
|
288
|
+
* ```html
|
|
289
|
+
* {{ 'Hello, world' | wrTruncate: 5 }} <!-- "Hello…" -->
|
|
290
|
+
* {{ 'Hello, world' | wrTruncate: 8: '...' }} <!-- "Hello, w..." -->
|
|
291
|
+
* ```
|
|
292
|
+
*/
|
|
293
|
+
class WrTruncate {
|
|
294
|
+
transform(value, length = 80, ellipsis = '…') {
|
|
295
|
+
if (value === null || value === undefined)
|
|
296
|
+
return '';
|
|
297
|
+
const s = String(value);
|
|
298
|
+
if (s.length <= length)
|
|
299
|
+
return s;
|
|
300
|
+
return s.slice(0, Math.max(0, length)) + ellipsis;
|
|
301
|
+
}
|
|
302
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrTruncate, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
303
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: WrTruncate, isStandalone: true, name: "wrTruncate" });
|
|
304
|
+
}
|
|
305
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrTruncate, decorators: [{
|
|
306
|
+
type: Pipe,
|
|
307
|
+
args: [{ name: 'wrTruncate' }]
|
|
308
|
+
}] });
|
|
30
309
|
|
|
31
310
|
/**
|
|
32
311
|
* Generated bundle index. Do not edit.
|
|
33
312
|
*/
|
|
34
313
|
|
|
35
|
-
export {
|
|
314
|
+
export { WrBytes, WrDate, WrMark, WrNumber, WrPlural, WrRange, WrTruncate };
|
|
36
315
|
//# sourceMappingURL=ngwr-pipes.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngwr-pipes.mjs","sources":["../../../projects/lib/pipes/new-array.pipe.ts","../../../projects/lib/pipes/public-api.ts","../../../projects/lib/pipes/ngwr-pipes.ts"],"sourcesContent":["/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'newArray',\n})\nexport class NewArrayPipe implements PipeTransform {\n transform(arrayLength: number): number[] {\n return new Array(arrayLength);\n }\n}\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nexport * from './new-array.pipe';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAAA;;;;;AAKG;MAOU,YAAY,CAAA;AACvB,IAAA,SAAS,CAAC,WAAmB,EAAA;AAC3B,QAAA,OAAO,IAAI,KAAK,CAAC,WAAW,CAAC;;+GAFpB,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,UAAU;AACjB,iBAAA;;;ACXD;;;;;AAKG;;ACLH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ngwr-pipes.mjs","sources":["../../../projects/lib/pipes/bytes.ts","../../../projects/lib/pipes/date.ts","../../../projects/lib/pipes/mark.ts","../../../projects/lib/pipes/number.ts","../../../projects/lib/pipes/plural.ts","../../../projects/lib/pipes/range.ts","../../../projects/lib/pipes/truncate.ts","../../../projects/lib/pipes/ngwr-pipes.ts"],"sourcesContent":["/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { Pipe } from '@angular/core';\nimport type { PipeTransform } from '@angular/core';\n\nconst UNITS = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'] as const;\n\n/**\n * Humanise a byte count using binary (1024-based) units.\n *\n * @example\n * ```html\n * {{ 1234 | wrBytes }} <!-- \"1.2 KB\" -->\n * {{ 1234567 | wrBytes: 0 }} <!-- \"1 MB\" -->\n * {{ 0 | wrBytes }} <!-- \"0 B\" -->\n * ```\n */\n@Pipe({ name: 'wrBytes' })\nexport class WrBytes implements PipeTransform {\n transform(value: number | string | null | undefined, decimals = 1): string {\n if (value === null || value === undefined || value === '') return '';\n const n = Number(value);\n if (!Number.isFinite(n) || n <= 0) return '0 B';\n\n const i = Math.min(Math.floor(Math.log(n) / Math.log(1024)), UNITS.length - 1);\n const v = n / 1024 ** i;\n // Whole bytes never show a fractional part.\n const fractionDigits = i === 0 ? 0 : Math.max(0, decimals);\n return `${v.toFixed(fractionDigits)} ${UNITS[i]}`;\n }\n}\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { LOCALE_ID, Pipe, inject } from '@angular/core';\nimport type { PipeTransform } from '@angular/core';\n\nimport { type WrDateFormat, WrDateAdapter } from 'ngwr/date-adapter';\n\n/**\n * Locale-aware date formatting. Delegates to `WrDateAdapter` when\n * `provideWrDateAdapter()` is in the provider tree (giving access to named\n * format keys like `'shortDate'` and `'longDate'`), otherwise falls back to\n * a minimal `Intl.DateTimeFormat`-based formatter so the pipe still works\n * without the date-adapter package wired up.\n *\n * @example\n * ```html\n * {{ now | wrDate }} <!-- shortDate -->\n * {{ now | wrDate: 'mediumDateTime' }} <!-- named key -->\n * {{ now | wrDate: 'dd.MM.yyyy' }} <!-- raw token string -->\n * ```\n */\n@Pipe({ name: 'wrDate' })\nexport class WrDate implements PipeTransform {\n private readonly adapter = inject<WrDateAdapter<Date> | null>(WrDateAdapter, { optional: true });\n private readonly locale = inject(LOCALE_ID);\n\n transform(\n value: Date | string | number | null | undefined,\n format: WrDateFormat | (string & {}) = 'shortDate'\n ): string {\n if (value === null || value === undefined || value === '') return '';\n const date = value instanceof Date ? value : new Date(value);\n if (Number.isNaN(date.getTime())) return '';\n\n if (this.adapter) return this.adapter.format(date, format);\n return this.fallback(date, format);\n }\n\n /** Tiny fallback for the named keys when no adapter is provided. */\n private fallback(date: Date, format: WrDateFormat | (string & {})): string {\n const named: Record<string, Intl.DateTimeFormatOptions> = {\n shortDate: { dateStyle: 'short' },\n mediumDate: { dateStyle: 'medium' },\n longDate: { dateStyle: 'long' },\n time: { timeStyle: 'short' },\n shortDateTime: { dateStyle: 'short', timeStyle: 'short' },\n mediumDateTime: { dateStyle: 'medium', timeStyle: 'short' },\n };\n const opts = named[format] ?? { dateStyle: 'short' };\n return new Intl.DateTimeFormat(this.locale, opts).format(date);\n }\n}\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { Pipe, type PipeTransform, inject } from '@angular/core';\nimport { DomSanitizer, type SafeHtml } from '@angular/platform-browser';\n\n/** Escapes RegExp metacharacters so user input is safe to inline. @internal */\nconst RE_META = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** HTML-entities for the four chars that matter inside our `<mark>` wrap. @internal */\nfunction escapeHtml(s: string): string {\n return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\"/g, '"');\n}\n\n/**\n * Wrap every occurrence of `query` in `<mark>` tags. Useful for highlighting\n * search-term matches in autocomplete results, lists, and table cells.\n *\n * The output is `SafeHtml` — bind with `[innerHTML]`. Input is escaped first\n * so user-supplied values can't inject markup.\n *\n * @example\n * ```html\n * <span [innerHTML]=\"row.name | wrMark: query()\"></span>\n *\n * <!-- Case-sensitive: -->\n * <span [innerHTML]=\"row.name | wrMark: query() : true\"></span>\n * ```\n */\n@Pipe({ name: 'wrMark' })\nexport class WrMark implements PipeTransform {\n private readonly sanitizer = inject(DomSanitizer);\n\n /**\n * @param value Source text.\n * @param query Search term to highlight. Empty/null skips the wrap.\n * @param caseSensitive Match exactly. @default false\n */\n transform(value: string | null | undefined, query: string | null | undefined, caseSensitive = false): SafeHtml {\n if (value === null || value === undefined) return '';\n const text = String(value);\n if (!query) return text;\n\n const safe = escapeHtml(text);\n const pattern = new RegExp(query.replace(RE_META, '\\\\$&'), caseSensitive ? 'g' : 'gi');\n const html = safe.replace(pattern, m => `<mark>${escapeHtml(m)}</mark>`);\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n}\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { LOCALE_ID, Pipe, inject } from '@angular/core';\nimport type { PipeTransform } from '@angular/core';\n\nimport type { WrNumberStyle } from './interfaces';\n\n/**\n * Locale-aware number formatting via `Intl.NumberFormat`. Uses Angular's\n * `LOCALE_ID` as the default locale.\n *\n * Accepts either a style shortcut (with optional currency code) or a full\n * `Intl.NumberFormatOptions` object for fine-grained control.\n *\n * @example\n * ```html\n * {{ 1234.5 | wrNumber }} <!-- \"1,234.5\" -->\n * {{ 0.875 | wrNumber: 'percent' }} <!-- \"88%\" -->\n * {{ 19.99 | wrNumber: 'currency': 'USD' }} <!-- \"$19.99\" -->\n * {{ 19.99 | wrNumber: { minimumFractionDigits: 2 } }}\n * ```\n */\n@Pipe({ name: 'wrNumber' })\nexport class WrNumber implements PipeTransform {\n private readonly locale = inject(LOCALE_ID);\n\n transform(\n value: number | string | null | undefined,\n styleOrOptions: WrNumberStyle | Intl.NumberFormatOptions = 'decimal',\n currency = 'USD'\n ): string {\n if (value === null || value === undefined || value === '') return '';\n const n = Number(value);\n if (!Number.isFinite(n)) return '';\n\n const options: Intl.NumberFormatOptions =\n typeof styleOrOptions === 'string' ? this.toOptions(styleOrOptions, currency) : styleOrOptions;\n\n return new Intl.NumberFormat(this.locale, options).format(n);\n }\n\n private toOptions(style: WrNumberStyle, currency: string): Intl.NumberFormatOptions {\n switch (style) {\n case 'percent':\n return { style: 'percent', maximumFractionDigits: 2 };\n case 'currency':\n return { style: 'currency', currency };\n case 'decimal':\n default:\n return { style: 'decimal' };\n }\n }\n}\n\nexport type { WrNumberStyle } from './interfaces';\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { LOCALE_ID, Pipe, inject } from '@angular/core';\nimport type { PipeTransform } from '@angular/core';\n\nimport type { WrPluralForms, WrPluralOptions } from './interfaces';\n\n/**\n * Locale-aware pluralization via `Intl.PluralRules`. Picks the right word\n * form for the count — including languages with more than two forms\n * (Russian, Polish, Arabic, …) — without hand-rolled `n % 10` rules.\n *\n * Categories follow CLDR: `zero` / `one` / `two` / `few` / `many` /\n * `other`. Missing categories fall back to `other`.\n *\n * @example\n * ```html\n * {{ 1 | wrPlural: { one: 'comment', other: 'comments' } }}\n * <!-- \"1 comment\" -->\n *\n * {{ 5 | wrPlural: { one: 'файл', few: 'файла', other: 'файлов' } }}\n * <!-- \"5 файлов\" (with LOCALE_ID = ru) -->\n *\n * {{ count() | wrPlural: forms : { includeValue: false } }}\n * <!-- word only -->\n * ```\n */\n@Pipe({ name: 'wrPlural' })\nexport class WrPlural implements PipeTransform {\n private readonly locale = inject(LOCALE_ID);\n\n transform(value: number | null | undefined, forms: WrPluralForms, options: WrPluralOptions = {}): string {\n if (value === null || value === undefined || !Number.isFinite(value)) return '';\n const locale = options.locale ?? this.locale;\n const category = new Intl.PluralRules(locale).select(value);\n const word = forms[category] ?? forms.other;\n if (options.includeValue === false) return word;\n return `${new Intl.NumberFormat(locale).format(value)} ${word}`;\n }\n}\n\nexport type { WrPluralForms, WrPluralOptions } from './interfaces';\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { Pipe } from '@angular/core';\nimport type { PipeTransform } from '@angular/core';\n\n/**\n * Creates an array of sequential indices `[0, 1, 2, ..., n-1]`.\n *\n * Useful for repeating template blocks a fixed number of times.\n *\n * @example\n * ```html\n * @for (i of (5 | wrRange); track i) {\n * <div>Item {{ i }}</div>\n * }\n * ```\n */\n@Pipe({ name: 'wrRange' })\nexport class WrRange implements PipeTransform {\n transform(length: number): number[] {\n return Array.from({ length }, (_, i) => i);\n }\n}\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { Pipe } from '@angular/core';\nimport type { PipeTransform } from '@angular/core';\n\n/**\n * Clamp a string to `length` characters, appending `ellipsis` when truncated.\n *\n * @example\n * ```html\n * {{ 'Hello, world' | wrTruncate: 5 }} <!-- \"Hello…\" -->\n * {{ 'Hello, world' | wrTruncate: 8: '...' }} <!-- \"Hello, w...\" -->\n * ```\n */\n@Pipe({ name: 'wrTruncate' })\nexport class WrTruncate implements PipeTransform {\n transform(value: string | null | undefined, length = 80, ellipsis = '…'): string {\n if (value === null || value === undefined) return '';\n const s = String(value);\n if (s.length <= length) return s;\n return s.slice(0, Math.max(0, length)) + ellipsis;\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,63 @@
|
|
|
1
|
+
import { DOCUMENT, isPlatformBrowser } from '@angular/common';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { inject, DestroyRef, PLATFORM_ID, signal, Service } from '@angular/core';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @license
|
|
7
|
+
*
|
|
8
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
9
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* SSR-safe environment probes. Use to gate browser-only code paths and
|
|
13
|
+
* react to user preferences without scattering `matchMedia` calls around.
|
|
14
|
+
*
|
|
15
|
+
* - `isBrowser` / `isServer` — synchronous platform check.
|
|
16
|
+
* - `userAgent` — `navigator.userAgent` or `null` on the server.
|
|
17
|
+
* - `prefersDark` — signal mirroring `(prefers-color-scheme: dark)`.
|
|
18
|
+
* - `prefersReducedMotion` — signal mirroring `(prefers-reduced-motion: reduce)`.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* private readonly platform = inject(WrPlatform);
|
|
23
|
+
* if (this.platform.isBrowser) {
|
|
24
|
+
* localStorage.setItem('theme', 'dark');
|
|
25
|
+
* }
|
|
26
|
+
*
|
|
27
|
+
* protected readonly dark = this.platform.prefersDark;
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @see https://ngwr.dev/services/platform
|
|
31
|
+
*/
|
|
32
|
+
class WrPlatform {
|
|
33
|
+
destroyRef = inject(DestroyRef);
|
|
34
|
+
doc = inject(DOCUMENT);
|
|
35
|
+
isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
|
|
36
|
+
isServer = !this.isBrowser;
|
|
37
|
+
userAgent = this.isBrowser ? (this.doc.defaultView?.navigator?.userAgent ?? null) : null;
|
|
38
|
+
prefersDark = this.mediaSignal('(prefers-color-scheme: dark)');
|
|
39
|
+
prefersReducedMotion = this.mediaSignal('(prefers-reduced-motion: reduce)');
|
|
40
|
+
mediaSignal(query) {
|
|
41
|
+
if (!this.isBrowser || !this.doc.defaultView?.matchMedia)
|
|
42
|
+
return signal(false).asReadonly();
|
|
43
|
+
const mql = this.doc.defaultView.matchMedia(query);
|
|
44
|
+
const sig = signal(mql.matches, /* @ts-ignore */
|
|
45
|
+
...(ngDevMode ? [{ debugName: "sig" }] : /* istanbul ignore next */ []));
|
|
46
|
+
const handler = (event) => sig.set(event.matches);
|
|
47
|
+
mql.addEventListener('change', handler);
|
|
48
|
+
this.destroyRef.onDestroy(() => mql.removeEventListener('change', handler));
|
|
49
|
+
return sig.asReadonly();
|
|
50
|
+
}
|
|
51
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrPlatform, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
52
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.0.1", ngImport: i0, type: WrPlatform });
|
|
53
|
+
}
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrPlatform, decorators: [{
|
|
55
|
+
type: Service
|
|
56
|
+
}] });
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Generated bundle index. Do not edit.
|
|
60
|
+
*/
|
|
61
|
+
|
|
62
|
+
export { WrPlatform };
|
|
63
|
+
//# sourceMappingURL=ngwr-platform.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngwr-platform.mjs","sources":["../../../projects/lib/platform/wr-platform.ts","../../../projects/lib/platform/ngwr-platform.ts"],"sourcesContent":["/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { DestroyRef, Service, PLATFORM_ID, type Signal, inject, signal } from '@angular/core';\n\n/**\n * SSR-safe environment probes. Use to gate browser-only code paths and\n * react to user preferences without scattering `matchMedia` calls around.\n *\n * - `isBrowser` / `isServer` — synchronous platform check.\n * - `userAgent` — `navigator.userAgent` or `null` on the server.\n * - `prefersDark` — signal mirroring `(prefers-color-scheme: dark)`.\n * - `prefersReducedMotion` — signal mirroring `(prefers-reduced-motion: reduce)`.\n *\n * @example\n * ```ts\n * private readonly platform = inject(WrPlatform);\n * if (this.platform.isBrowser) {\n * localStorage.setItem('theme', 'dark');\n * }\n *\n * protected readonly dark = this.platform.prefersDark;\n * ```\n *\n * @see https://ngwr.dev/services/platform\n */\n@Service()\nexport class WrPlatform {\n private readonly destroyRef = inject(DestroyRef);\n private readonly doc = inject(DOCUMENT);\n\n readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n readonly isServer = !this.isBrowser;\n readonly userAgent: string | null = this.isBrowser ? (this.doc.defaultView?.navigator?.userAgent ?? null) : null;\n\n readonly prefersDark: Signal<boolean> = this.mediaSignal('(prefers-color-scheme: dark)');\n readonly prefersReducedMotion: Signal<boolean> = this.mediaSignal('(prefers-reduced-motion: reduce)');\n\n private mediaSignal(query: string): Signal<boolean> {\n if (!this.isBrowser || !this.doc.defaultView?.matchMedia) return signal(false).asReadonly();\n const mql = this.doc.defaultView.matchMedia(query);\n const sig = signal(mql.matches);\n const handler = (event: MediaQueryListEvent): void => sig.set(event.matches);\n mql.addEventListener('change', handler);\n this.destroyRef.onDestroy(() => mql.removeEventListener('change', handler));\n return sig.asReadonly();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAAA;;;;;AAKG;AAKH;;;;;;;;;;;;;;;;;;;;AAoBG;MAEU,UAAU,CAAA;AACJ,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;IAE9B,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAClD,IAAA,QAAQ,GAAG,CAAC,IAAI,CAAC,SAAS;IAC1B,SAAS,GAAkB,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,IAAI,IAAI,IAAI,IAAI;AAEvG,IAAA,WAAW,GAAoB,IAAI,CAAC,WAAW,CAAC,8BAA8B,CAAC;AAC/E,IAAA,oBAAoB,GAAoB,IAAI,CAAC,WAAW,CAAC,kCAAkC,CAAC;AAE7F,IAAA,WAAW,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU;AAAE,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE;AAC3F,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC;AAClD,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO;gFAAC;AAC/B,QAAA,MAAM,OAAO,GAAG,CAAC,KAA0B,KAAW,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AAC5E,QAAA,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvC,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC3E,QAAA,OAAO,GAAG,CAAC,UAAU,EAAE;IACzB;uGAnBW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,OAAA,EAAA,CAAA;wGAAV,UAAU,EAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB;;;AC/BD;;AAEG;;;;"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { ScrollStrategyOptions } from '@angular/cdk/overlay';
|
|
2
|
+
import { ComponentPortal } from '@angular/cdk/portal';
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
4
|
+
import { input, output, ViewEncapsulation, Component, inject, ElementRef, ViewContainerRef, DestroyRef, Directive } from '@angular/core';
|
|
5
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
|
+
import { WR_OVERLAY } from 'ngwr/overlay';
|
|
7
|
+
import { WrButton } from 'ngwr/button';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @license
|
|
11
|
+
*
|
|
12
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
13
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
14
|
+
*/
|
|
15
|
+
/** @internal */
|
|
16
|
+
const WR_POPCONFIRM_POSITIONS = {
|
|
17
|
+
top: [{ originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -8 }],
|
|
18
|
+
bottom: [{ originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: 8 }],
|
|
19
|
+
left: [{ originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -8 }],
|
|
20
|
+
right: [{ originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: 8 }],
|
|
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
|
+
/**
|
|
30
|
+
* Confirmation panel rendered inside the popconfirm overlay. Not part
|
|
31
|
+
* of the public template API — use `[wrPopconfirm]` instead.
|
|
32
|
+
*
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
class WrPopconfirmPanel {
|
|
36
|
+
message = input.required(/* @ts-ignore */
|
|
37
|
+
...(ngDevMode ? [{ debugName: "message" }] : /* istanbul ignore next */ []));
|
|
38
|
+
confirmText = input('Confirm', /* @ts-ignore */
|
|
39
|
+
...(ngDevMode ? [{ debugName: "confirmText" }] : /* istanbul ignore next */ []));
|
|
40
|
+
cancelText = input('Cancel', /* @ts-ignore */
|
|
41
|
+
...(ngDevMode ? [{ debugName: "cancelText" }] : /* istanbul ignore next */ []));
|
|
42
|
+
confirmColor = input('primary', /* @ts-ignore */
|
|
43
|
+
...(ngDevMode ? [{ debugName: "confirmColor" }] : /* istanbul ignore next */ []));
|
|
44
|
+
confirmed = output();
|
|
45
|
+
cancelled = output();
|
|
46
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrPopconfirmPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
47
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.1", type: WrPopconfirmPanel, isStandalone: true, selector: "wr-popconfirm", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null }, confirmText: { classPropertyName: "confirmText", publicName: "confirmText", isSignal: true, isRequired: false, transformFunction: null }, cancelText: { classPropertyName: "cancelText", publicName: "cancelText", isSignal: true, isRequired: false, transformFunction: null }, confirmColor: { classPropertyName: "confirmColor", publicName: "confirmColor", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { confirmed: "confirmed", cancelled: "cancelled" }, host: { classAttribute: "wr-popconfirm" }, ngImport: i0, template: "<p class=\"wr-popconfirm__message\">{{ message() }}</p>\n\n<div class=\"wr-popconfirm__actions\">\n <wr-btn size=\"sm\" (click)=\"cancelled.emit()\">{{ cancelText() }}</wr-btn>\n <wr-btn size=\"sm\" [color]=\"confirmColor()\" (click)=\"confirmed.emit()\">{{ confirmText() }}</wr-btn>\n</div>\n", dependencies: [{ kind: "component", type: WrButton, selector: "wr-btn, button[wr-btn], a[wr-btn]", inputs: ["color", "size", "shape", "icon", "iconPosition", "disabled", "outlined", "block", "loading", "isDisabledWhenLoading"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
48
|
+
}
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrPopconfirmPanel, decorators: [{
|
|
50
|
+
type: Component,
|
|
51
|
+
args: [{ selector: 'wr-popconfirm', encapsulation: ViewEncapsulation.None, host: { class: 'wr-popconfirm' }, imports: [WrButton], template: "<p class=\"wr-popconfirm__message\">{{ message() }}</p>\n\n<div class=\"wr-popconfirm__actions\">\n <wr-btn size=\"sm\" (click)=\"cancelled.emit()\">{{ cancelText() }}</wr-btn>\n <wr-btn size=\"sm\" [color]=\"confirmColor()\" (click)=\"confirmed.emit()\">{{ confirmText() }}</wr-btn>\n</div>\n" }]
|
|
52
|
+
}], propDecorators: { message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: true }] }], confirmText: [{ type: i0.Input, args: [{ isSignal: true, alias: "confirmText", required: false }] }], cancelText: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelText", required: false }] }], confirmColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "confirmColor", required: false }] }], confirmed: [{ type: i0.Output, args: ["confirmed"] }], cancelled: [{ type: i0.Output, args: ["cancelled"] }] } });
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* @license
|
|
56
|
+
*
|
|
57
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
58
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
59
|
+
*/
|
|
60
|
+
/**
|
|
61
|
+
* Small "Are you sure?" panel anchored to its trigger. Fires `confirmed`
|
|
62
|
+
* or `cancelled` and closes automatically. Built on CDK Overlay.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```html
|
|
66
|
+
* <wr-btn
|
|
67
|
+
* color="danger"
|
|
68
|
+
* [wrPopconfirm]="'Delete this item?'"
|
|
69
|
+
* confirmColor="danger"
|
|
70
|
+
* confirmText="Delete"
|
|
71
|
+
* (confirmed)="remove()"
|
|
72
|
+
* >Delete</wr-btn>
|
|
73
|
+
* ```
|
|
74
|
+
*
|
|
75
|
+
* @see https://ngwr.dev/components/popconfirm
|
|
76
|
+
*/
|
|
77
|
+
class WrPopconfirm {
|
|
78
|
+
/** Confirmation message. */
|
|
79
|
+
message = input.required({ ...(ngDevMode ? { debugName: "message" } : /* istanbul ignore next */ {}), alias: 'wrPopconfirm' });
|
|
80
|
+
/** Anchor side. @default 'top' */
|
|
81
|
+
position = input('top', /* @ts-ignore */
|
|
82
|
+
...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
|
|
83
|
+
/** Label for the confirm button. @default 'Confirm' */
|
|
84
|
+
confirmText = input('Confirm', /* @ts-ignore */
|
|
85
|
+
...(ngDevMode ? [{ debugName: "confirmText" }] : /* istanbul ignore next */ []));
|
|
86
|
+
/** Label for the cancel button. @default 'Cancel' */
|
|
87
|
+
cancelText = input('Cancel', /* @ts-ignore */
|
|
88
|
+
...(ngDevMode ? [{ debugName: "cancelText" }] : /* istanbul ignore next */ []));
|
|
89
|
+
/** Color of the confirm button. @default 'primary' */
|
|
90
|
+
confirmColor = input('primary', /* @ts-ignore */
|
|
91
|
+
...(ngDevMode ? [{ debugName: "confirmColor" }] : /* istanbul ignore next */ []));
|
|
92
|
+
/** Fires when the user clicks confirm. */
|
|
93
|
+
confirmed = output();
|
|
94
|
+
/** Fires when the user clicks cancel or dismisses the overlay. */
|
|
95
|
+
cancelled = output();
|
|
96
|
+
host = inject(ElementRef);
|
|
97
|
+
overlay = inject(WR_OVERLAY);
|
|
98
|
+
vcr = inject(ViewContainerRef);
|
|
99
|
+
scrollStrategies = inject(ScrollStrategyOptions);
|
|
100
|
+
destroyRef = inject(DestroyRef);
|
|
101
|
+
overlayRef = null;
|
|
102
|
+
constructor() {
|
|
103
|
+
this.destroyRef.onDestroy(() => this.dispose());
|
|
104
|
+
}
|
|
105
|
+
/** @internal */
|
|
106
|
+
toggle(event) {
|
|
107
|
+
event.stopPropagation();
|
|
108
|
+
if (this.overlayRef) {
|
|
109
|
+
this.close();
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
this.open();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
open() {
|
|
116
|
+
if (this.overlayRef)
|
|
117
|
+
return;
|
|
118
|
+
const positionStrategy = this.overlay
|
|
119
|
+
.position()
|
|
120
|
+
.flexibleConnectedTo(this.host)
|
|
121
|
+
.withPositions(WR_POPCONFIRM_POSITIONS[this.position()])
|
|
122
|
+
.withPush(true);
|
|
123
|
+
this.overlayRef = this.overlay.create({
|
|
124
|
+
positionStrategy,
|
|
125
|
+
scrollStrategy: this.scrollStrategies.reposition(),
|
|
126
|
+
panelClass: ['wr-popconfirm-overlay', `wr-popconfirm-overlay--${this.position()}`],
|
|
127
|
+
});
|
|
128
|
+
const portal = new ComponentPortal(WrPopconfirmPanel, this.vcr);
|
|
129
|
+
const ref = this.overlayRef.attach(portal);
|
|
130
|
+
ref.setInput('message', this.message());
|
|
131
|
+
ref.setInput('confirmText', this.confirmText());
|
|
132
|
+
ref.setInput('cancelText', this.cancelText());
|
|
133
|
+
ref.setInput('confirmColor', this.confirmColor());
|
|
134
|
+
ref.instance.confirmed.subscribe(() => {
|
|
135
|
+
this.confirmed.emit();
|
|
136
|
+
this.close();
|
|
137
|
+
});
|
|
138
|
+
ref.instance.cancelled.subscribe(() => this.dismiss());
|
|
139
|
+
this.overlayRef
|
|
140
|
+
.outsidePointerEvents()
|
|
141
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
142
|
+
.subscribe(event => {
|
|
143
|
+
if (this.host.nativeElement.contains(event.target))
|
|
144
|
+
return;
|
|
145
|
+
this.dismiss();
|
|
146
|
+
});
|
|
147
|
+
this.overlayRef
|
|
148
|
+
.keydownEvents()
|
|
149
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
150
|
+
.subscribe(event => {
|
|
151
|
+
if (event.key === 'Escape') {
|
|
152
|
+
event.preventDefault();
|
|
153
|
+
this.dismiss();
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
close() {
|
|
158
|
+
this.dispose();
|
|
159
|
+
}
|
|
160
|
+
dismiss() {
|
|
161
|
+
if (!this.overlayRef)
|
|
162
|
+
return;
|
|
163
|
+
this.cancelled.emit();
|
|
164
|
+
this.dispose();
|
|
165
|
+
}
|
|
166
|
+
dispose() {
|
|
167
|
+
if (this.overlayRef) {
|
|
168
|
+
this.overlayRef.dispose();
|
|
169
|
+
this.overlayRef = null;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrPopconfirm, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
173
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.1", type: WrPopconfirm, isStandalone: true, selector: "[wrPopconfirm]", inputs: { message: { classPropertyName: "message", publicName: "wrPopconfirm", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, confirmText: { classPropertyName: "confirmText", publicName: "confirmText", isSignal: true, isRequired: false, transformFunction: null }, cancelText: { classPropertyName: "cancelText", publicName: "cancelText", isSignal: true, isRequired: false, transformFunction: null }, confirmColor: { classPropertyName: "confirmColor", publicName: "confirmColor", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { confirmed: "confirmed", cancelled: "cancelled" }, host: { listeners: { "click": "toggle($event)" } }, ngImport: i0 });
|
|
174
|
+
}
|
|
175
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrPopconfirm, decorators: [{
|
|
176
|
+
type: Directive,
|
|
177
|
+
args: [{
|
|
178
|
+
selector: '[wrPopconfirm]',
|
|
179
|
+
host: { '(click)': 'toggle($event)' },
|
|
180
|
+
}]
|
|
181
|
+
}], ctorParameters: () => [], propDecorators: { message: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrPopconfirm", required: true }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], confirmText: [{ type: i0.Input, args: [{ isSignal: true, alias: "confirmText", required: false }] }], cancelText: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelText", required: false }] }], confirmColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "confirmColor", required: false }] }], confirmed: [{ type: i0.Output, args: ["confirmed"] }], cancelled: [{ type: i0.Output, args: ["cancelled"] }] } });
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Generated bundle index. Do not edit.
|
|
185
|
+
*/
|
|
186
|
+
|
|
187
|
+
export { WrPopconfirm, WrPopconfirmPanel };
|
|
188
|
+
//# sourceMappingURL=ngwr-popconfirm.mjs.map
|