ngwr 14.7.0 → 14.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -332
- package/alert/styles/_index.scss +10 -0
- package/avatar/styles/_index.scss +18 -7
- package/badge/styles/_index.scss +7 -0
- package/badge/styles/_tag.scss +7 -1
- package/bar-chart/styles/_index.scss +1 -0
- package/button/styles/_index.scss +6 -0
- package/calendar-heatmap/styles/_index.scss +1 -0
- package/cascader/styles/_rules.scss +87 -15
- package/checkbox/styles/_index.scss +4 -0
- package/command-palette/styles/_index.scss +1 -1
- package/date-picker/styles/_index.scss +30 -0
- package/density/styles/_index.scss +4 -2
- package/divider/styles/_index.scss +2 -0
- package/donut-chart/styles/_index.scss +10 -0
- package/dropdown/styles/_index.scss +67 -5
- package/editor/styles/_index.scss +441 -0
- package/event-calendar/styles/_index.scss +209 -35
- package/fesm2022/ngwr-action-sheet-testing.mjs.map +1 -1
- package/fesm2022/ngwr-action-sheet.mjs +3 -3
- package/fesm2022/ngwr-action-sheet.mjs.map +1 -1
- package/fesm2022/ngwr-affix.mjs +3 -3
- package/fesm2022/ngwr-affix.mjs.map +1 -1
- package/fesm2022/ngwr-alert.mjs +3 -3
- package/fesm2022/ngwr-alert.mjs.map +1 -1
- package/fesm2022/ngwr-anchor.mjs +3 -3
- package/fesm2022/ngwr-anchor.mjs.map +1 -1
- package/fesm2022/ngwr-aurora.mjs +3 -3
- package/fesm2022/ngwr-aurora.mjs.map +1 -1
- package/fesm2022/ngwr-avatar.mjs +3 -3
- package/fesm2022/ngwr-avatar.mjs.map +1 -1
- package/fesm2022/ngwr-back-top.mjs +3 -3
- package/fesm2022/ngwr-back-top.mjs.map +1 -1
- package/fesm2022/ngwr-badge.mjs +28 -13
- package/fesm2022/ngwr-badge.mjs.map +1 -1
- package/fesm2022/ngwr-bar-chart-testing.mjs.map +1 -1
- package/fesm2022/ngwr-bar-chart.mjs +31 -6
- package/fesm2022/ngwr-bar-chart.mjs.map +1 -1
- package/fesm2022/ngwr-blur-text-testing.mjs.map +1 -1
- package/fesm2022/ngwr-blur-text.mjs +3 -3
- package/fesm2022/ngwr-blur-text.mjs.map +1 -1
- package/fesm2022/ngwr-border-glow-testing.mjs.map +1 -1
- package/fesm2022/ngwr-border-glow.mjs +3 -3
- package/fesm2022/ngwr-border-glow.mjs.map +1 -1
- package/fesm2022/ngwr-breadcrumbs.mjs +6 -6
- package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
- package/fesm2022/ngwr-burger.mjs +3 -3
- package/fesm2022/ngwr-burger.mjs.map +1 -1
- package/fesm2022/ngwr-button-testing.mjs.map +1 -1
- package/fesm2022/ngwr-button.mjs +6 -6
- package/fesm2022/ngwr-button.mjs.map +1 -1
- package/fesm2022/ngwr-calendar-heatmap-testing.mjs.map +1 -1
- package/fesm2022/ngwr-calendar-heatmap.mjs +61 -6
- package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
- package/fesm2022/ngwr-calendar-testing.mjs.map +1 -1
- package/fesm2022/ngwr-calendar.mjs +3 -3
- package/fesm2022/ngwr-calendar.mjs.map +1 -1
- package/fesm2022/ngwr-card.mjs +9 -9
- package/fesm2022/ngwr-card.mjs.map +1 -1
- package/fesm2022/ngwr-carousel-testing.mjs.map +1 -1
- package/fesm2022/ngwr-carousel.mjs +6 -6
- package/fesm2022/ngwr-carousel.mjs.map +1 -1
- package/fesm2022/ngwr-cascader-testing.mjs.map +1 -1
- package/fesm2022/ngwr-cascader.mjs +4 -4
- package/fesm2022/ngwr-cascader.mjs.map +1 -1
- package/fesm2022/ngwr-checkbox-testing.mjs.map +1 -1
- package/fesm2022/ngwr-checkbox.mjs +18 -8
- package/fesm2022/ngwr-checkbox.mjs.map +1 -1
- package/fesm2022/ngwr-circular-text-testing.mjs.map +1 -1
- package/fesm2022/ngwr-circular-text.mjs +3 -3
- package/fesm2022/ngwr-circular-text.mjs.map +1 -1
- package/fesm2022/ngwr-click-spark.mjs +3 -3
- package/fesm2022/ngwr-click-spark.mjs.map +1 -1
- package/fesm2022/ngwr-clipboard.mjs +3 -3
- package/fesm2022/ngwr-clipboard.mjs.map +1 -1
- package/fesm2022/ngwr-collapse-testing.mjs.map +1 -1
- package/fesm2022/ngwr-collapse.mjs +9 -9
- package/fesm2022/ngwr-collapse.mjs.map +1 -1
- package/fesm2022/ngwr-color-picker-testing.mjs.map +1 -1
- package/fesm2022/ngwr-color-picker.mjs +6 -6
- package/fesm2022/ngwr-color-picker.mjs.map +1 -1
- package/fesm2022/ngwr-command-palette-testing.mjs.map +1 -1
- package/fesm2022/ngwr-command-palette.mjs +3 -3
- package/fesm2022/ngwr-command-palette.mjs.map +1 -1
- package/fesm2022/ngwr-compare.mjs +3 -3
- package/fesm2022/ngwr-compare.mjs.map +1 -1
- package/fesm2022/ngwr-confetti.mjs +3 -3
- package/fesm2022/ngwr-confetti.mjs.map +1 -1
- package/fesm2022/ngwr-config.mjs.map +1 -1
- package/fesm2022/ngwr-context-menu-testing.mjs.map +1 -1
- package/fesm2022/ngwr-context-menu.mjs +12 -12
- package/fesm2022/ngwr-context-menu.mjs.map +1 -1
- package/fesm2022/ngwr-cookie.mjs +3 -3
- package/fesm2022/ngwr-cookie.mjs.map +1 -1
- package/fesm2022/ngwr-counter.mjs +6 -6
- package/fesm2022/ngwr-counter.mjs.map +1 -1
- package/fesm2022/ngwr-date-adapters-fns.mjs +3 -3
- package/fesm2022/ngwr-date-adapters-fns.mjs.map +1 -1
- package/fesm2022/ngwr-date-adapters-luxon.mjs +3 -3
- package/fesm2022/ngwr-date-adapters-luxon.mjs.map +1 -1
- package/fesm2022/ngwr-date-picker-testing.mjs.map +1 -1
- package/fesm2022/ngwr-date-picker.mjs +721 -62
- package/fesm2022/ngwr-date-picker.mjs.map +1 -1
- package/fesm2022/ngwr-date.mjs +3 -3
- package/fesm2022/ngwr-date.mjs.map +1 -1
- package/fesm2022/ngwr-decrypt-text-testing.mjs.map +1 -1
- package/fesm2022/ngwr-decrypt-text.mjs +3 -3
- package/fesm2022/ngwr-decrypt-text.mjs.map +1 -1
- package/fesm2022/ngwr-density.mjs +6 -6
- package/fesm2022/ngwr-density.mjs.map +1 -1
- package/fesm2022/ngwr-descriptions.mjs +6 -6
- package/fesm2022/ngwr-descriptions.mjs.map +1 -1
- package/fesm2022/ngwr-dialog-testing.mjs.map +1 -1
- package/fesm2022/ngwr-dialog.mjs +15 -15
- package/fesm2022/ngwr-dialog.mjs.map +1 -1
- package/fesm2022/ngwr-directives.mjs +12 -12
- package/fesm2022/ngwr-directives.mjs.map +1 -1
- package/fesm2022/ngwr-divider.mjs +3 -3
- package/fesm2022/ngwr-divider.mjs.map +1 -1
- package/fesm2022/ngwr-donut-chart-testing.mjs.map +1 -1
- package/fesm2022/ngwr-donut-chart.mjs +48 -6
- package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
- package/fesm2022/ngwr-drag-drop.mjs +6 -6
- package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
- package/fesm2022/ngwr-drawer-testing.mjs.map +1 -1
- package/fesm2022/ngwr-drawer.mjs +18 -18
- package/fesm2022/ngwr-drawer.mjs.map +1 -1
- package/fesm2022/ngwr-dropdown-testing.mjs.map +1 -1
- package/fesm2022/ngwr-dropdown.mjs +174 -25
- package/fesm2022/ngwr-dropdown.mjs.map +1 -1
- package/fesm2022/ngwr-editor-testing.mjs +568 -0
- package/fesm2022/ngwr-editor-testing.mjs.map +1 -0
- package/fesm2022/ngwr-editor.mjs +2601 -0
- package/fesm2022/ngwr-editor.mjs.map +1 -0
- package/fesm2022/ngwr-empty.mjs +3 -3
- package/fesm2022/ngwr-empty.mjs.map +1 -1
- package/fesm2022/ngwr-event-calendar-testing.mjs.map +1 -1
- package/fesm2022/ngwr-event-calendar.mjs +14 -7
- package/fesm2022/ngwr-event-calendar.mjs.map +1 -1
- package/fesm2022/ngwr-falling-text-testing.mjs.map +1 -1
- package/fesm2022/ngwr-falling-text.mjs +3 -3
- package/fesm2022/ngwr-falling-text.mjs.map +1 -1
- package/fesm2022/ngwr-file-upload-testing.mjs.map +1 -1
- package/fesm2022/ngwr-file-upload.mjs +3 -3
- package/fesm2022/ngwr-file-upload.mjs.map +1 -1
- package/fesm2022/ngwr-form-testing.mjs.map +1 -1
- package/fesm2022/ngwr-form.mjs +61 -10
- package/fesm2022/ngwr-form.mjs.map +1 -1
- package/fesm2022/ngwr-fuzzy-text-testing.mjs.map +1 -1
- package/fesm2022/ngwr-fuzzy-text.mjs +3 -3
- package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
- package/fesm2022/ngwr-gauge-testing.mjs.map +1 -1
- package/fesm2022/ngwr-gauge.mjs +35 -6
- package/fesm2022/ngwr-gauge.mjs.map +1 -1
- package/fesm2022/ngwr-glitch-text-testing.mjs.map +1 -1
- package/fesm2022/ngwr-glitch-text.mjs +3 -3
- package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
- package/fesm2022/ngwr-gradient-text-testing.mjs.map +1 -1
- package/fesm2022/ngwr-gradient-text.mjs +3 -3
- package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
- package/fesm2022/ngwr-graph-testing.mjs.map +1 -1
- package/fesm2022/ngwr-graph.mjs +6 -6
- package/fesm2022/ngwr-graph.mjs.map +1 -1
- package/fesm2022/ngwr-hotkey.mjs +6 -6
- package/fesm2022/ngwr-hotkey.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-ar.mjs +31 -0
- package/fesm2022/ngwr-i18n-ar.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-cs.mjs +31 -0
- package/fesm2022/ngwr-i18n-cs.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-de.mjs +31 -0
- package/fesm2022/ngwr-i18n-de.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-en.mjs +39 -0
- package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-es.mjs +31 -0
- package/fesm2022/ngwr-i18n-es.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-fr.mjs +31 -0
- package/fesm2022/ngwr-i18n-fr.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-he.mjs +31 -0
- package/fesm2022/ngwr-i18n-he.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-hi.mjs +31 -0
- package/fesm2022/ngwr-i18n-hi.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-id.mjs +31 -0
- package/fesm2022/ngwr-i18n-id.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-it.mjs +31 -0
- package/fesm2022/ngwr-i18n-it.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-ja.mjs +31 -0
- package/fesm2022/ngwr-i18n-ja.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-ko.mjs +31 -0
- package/fesm2022/ngwr-i18n-ko.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-nl.mjs +31 -0
- package/fesm2022/ngwr-i18n-nl.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-pl.mjs +31 -0
- package/fesm2022/ngwr-i18n-pl.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-pt.mjs +31 -0
- package/fesm2022/ngwr-i18n-pt.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-ru.mjs +31 -0
- package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-sv.mjs +31 -0
- package/fesm2022/ngwr-i18n-sv.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-tr.mjs +31 -0
- package/fesm2022/ngwr-i18n-tr.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-uk.mjs +31 -0
- package/fesm2022/ngwr-i18n-uk.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-vi.mjs +31 -0
- package/fesm2022/ngwr-i18n-vi.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-zh-TW.mjs +31 -0
- package/fesm2022/ngwr-i18n-zh-TW.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-zh.mjs +31 -0
- package/fesm2022/ngwr-i18n-zh.mjs.map +1 -1
- package/fesm2022/ngwr-i18n.mjs +9 -9
- package/fesm2022/ngwr-i18n.mjs.map +1 -1
- package/fesm2022/ngwr-icon-adapters-feather.mjs.map +1 -1
- package/fesm2022/ngwr-icon-adapters-lucide.mjs.map +1 -1
- package/fesm2022/ngwr-icon.mjs +6 -6
- package/fesm2022/ngwr-icon.mjs.map +1 -1
- package/fesm2022/ngwr-image-cropper-testing.mjs.map +1 -1
- package/fesm2022/ngwr-image-cropper.mjs +3 -3
- package/fesm2022/ngwr-image-cropper.mjs.map +1 -1
- package/fesm2022/ngwr-input-number-testing.mjs.map +1 -1
- package/fesm2022/ngwr-input-number.mjs +15 -3
- package/fesm2022/ngwr-input-number.mjs.map +1 -1
- package/fesm2022/ngwr-input-otp-testing.mjs.map +1 -1
- package/fesm2022/ngwr-input-otp.mjs +3 -3
- package/fesm2022/ngwr-input-otp.mjs.map +1 -1
- package/fesm2022/ngwr-input-testing.mjs.map +1 -1
- package/fesm2022/ngwr-input.mjs +15 -15
- package/fesm2022/ngwr-input.mjs.map +1 -1
- package/fesm2022/ngwr-keyboard.mjs +3 -3
- package/fesm2022/ngwr-keyboard.mjs.map +1 -1
- package/fesm2022/ngwr-knob-testing.mjs.map +1 -1
- package/fesm2022/ngwr-knob.mjs +3 -3
- package/fesm2022/ngwr-knob.mjs.map +1 -1
- package/fesm2022/ngwr-layout.mjs +15 -15
- package/fesm2022/ngwr-layout.mjs.map +1 -1
- package/fesm2022/ngwr-lightbox-testing.mjs.map +1 -1
- package/fesm2022/ngwr-lightbox.mjs +3 -3
- package/fesm2022/ngwr-lightbox.mjs.map +1 -1
- package/fesm2022/ngwr-line-chart-testing.mjs.map +1 -1
- package/fesm2022/ngwr-line-chart.mjs +18 -7
- package/fesm2022/ngwr-line-chart.mjs.map +1 -1
- package/fesm2022/ngwr-list.mjs +6 -6
- package/fesm2022/ngwr-list.mjs.map +1 -1
- package/fesm2022/ngwr-loading-bar-router.mjs.map +1 -1
- package/fesm2022/ngwr-loading-bar.mjs +6 -6
- package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
- package/fesm2022/ngwr-markdown-testing.mjs.map +1 -1
- package/fesm2022/ngwr-markdown.mjs +798 -17
- package/fesm2022/ngwr-markdown.mjs.map +1 -1
- package/fesm2022/ngwr-marquee-testing.mjs.map +1 -1
- package/fesm2022/ngwr-marquee.mjs +3 -3
- package/fesm2022/ngwr-marquee.mjs.map +1 -1
- package/fesm2022/ngwr-media.mjs +3 -3
- package/fesm2022/ngwr-media.mjs.map +1 -1
- package/fesm2022/ngwr-mention-testing.mjs.map +1 -1
- package/fesm2022/ngwr-mention.mjs +6 -6
- package/fesm2022/ngwr-mention.mjs.map +1 -1
- package/fesm2022/ngwr-meta.mjs +6 -6
- package/fesm2022/ngwr-meta.mjs.map +1 -1
- package/fesm2022/ngwr-meter-group-testing.mjs +7 -3
- package/fesm2022/ngwr-meter-group-testing.mjs.map +1 -1
- package/fesm2022/ngwr-meter-group.mjs +26 -6
- package/fesm2022/ngwr-meter-group.mjs.map +1 -1
- package/fesm2022/ngwr-overlay.mjs +6 -6
- package/fesm2022/ngwr-overlay.mjs.map +1 -1
- package/fesm2022/ngwr-page-header.mjs +13 -5
- package/fesm2022/ngwr-page-header.mjs.map +1 -1
- package/fesm2022/ngwr-pagination-testing.mjs.map +1 -1
- package/fesm2022/ngwr-pagination.mjs +3 -3
- package/fesm2022/ngwr-pagination.mjs.map +1 -1
- package/fesm2022/ngwr-pipes.mjs +21 -21
- package/fesm2022/ngwr-pipes.mjs.map +1 -1
- package/fesm2022/ngwr-platform.mjs +9 -9
- package/fesm2022/ngwr-platform.mjs.map +1 -1
- package/fesm2022/ngwr-popconfirm-testing.mjs.map +1 -1
- package/fesm2022/ngwr-popconfirm.mjs +6 -6
- package/fesm2022/ngwr-popconfirm.mjs.map +1 -1
- package/fesm2022/ngwr-popover-testing.mjs.map +1 -1
- package/fesm2022/ngwr-popover.mjs +578 -16
- package/fesm2022/ngwr-popover.mjs.map +1 -1
- package/fesm2022/ngwr-progress.mjs +3 -3
- package/fesm2022/ngwr-progress.mjs.map +1 -1
- package/fesm2022/ngwr-pull-to-refresh.mjs +3 -3
- package/fesm2022/ngwr-pull-to-refresh.mjs.map +1 -1
- package/fesm2022/ngwr-qr.mjs +3 -3
- package/fesm2022/ngwr-qr.mjs.map +1 -1
- package/fesm2022/ngwr-radio-testing.mjs.map +1 -1
- package/fesm2022/ngwr-radio.mjs +6 -6
- package/fesm2022/ngwr-radio.mjs.map +1 -1
- package/fesm2022/ngwr-rating-testing.mjs.map +1 -1
- package/fesm2022/ngwr-rating.mjs +3 -3
- package/fesm2022/ngwr-rating.mjs.map +1 -1
- package/fesm2022/ngwr-result.mjs +12 -12
- package/fesm2022/ngwr-result.mjs.map +1 -1
- package/fesm2022/ngwr-rotating-text-testing.mjs.map +1 -1
- package/fesm2022/ngwr-rotating-text.mjs +3 -3
- package/fesm2022/ngwr-rotating-text.mjs.map +1 -1
- package/fesm2022/ngwr-schema-form.mjs +3 -3
- package/fesm2022/ngwr-schema-form.mjs.map +1 -1
- package/fesm2022/ngwr-scroll.mjs +3 -3
- package/fesm2022/ngwr-scroll.mjs.map +1 -1
- package/fesm2022/ngwr-segmented-testing.mjs.map +1 -1
- package/fesm2022/ngwr-segmented.mjs +3 -3
- package/fesm2022/ngwr-segmented.mjs.map +1 -1
- package/fesm2022/ngwr-select-testing.mjs.map +1 -1
- package/fesm2022/ngwr-select.mjs +12 -12
- package/fesm2022/ngwr-select.mjs.map +1 -1
- package/fesm2022/ngwr-shiny-text-testing.mjs.map +1 -1
- package/fesm2022/ngwr-shiny-text.mjs +6 -6
- package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
- package/fesm2022/ngwr-sidebar.mjs +10 -3
- package/fesm2022/ngwr-sidebar.mjs.map +1 -1
- package/fesm2022/ngwr-skeleton.mjs +3 -3
- package/fesm2022/ngwr-skeleton.mjs.map +1 -1
- package/fesm2022/ngwr-slider-testing.mjs.map +1 -1
- package/fesm2022/ngwr-slider.mjs +3 -3
- package/fesm2022/ngwr-slider.mjs.map +1 -1
- package/fesm2022/ngwr-sparkline-testing.mjs.map +1 -1
- package/fesm2022/ngwr-sparkline.mjs +84 -10
- package/fesm2022/ngwr-sparkline.mjs.map +1 -1
- package/fesm2022/ngwr-speed-dial-testing.mjs.map +1 -1
- package/fesm2022/ngwr-speed-dial.mjs +3 -3
- package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
- package/fesm2022/ngwr-spinner.mjs +3 -3
- package/fesm2022/ngwr-spinner.mjs.map +1 -1
- package/fesm2022/ngwr-splash-cursor-testing.mjs.map +1 -1
- package/fesm2022/ngwr-splash-cursor.mjs +3 -3
- package/fesm2022/ngwr-splash-cursor.mjs.map +1 -1
- package/fesm2022/ngwr-split-text-testing.mjs.map +1 -1
- package/fesm2022/ngwr-split-text.mjs +3 -3
- package/fesm2022/ngwr-split-text.mjs.map +1 -1
- package/fesm2022/ngwr-splitter-testing.mjs.map +1 -1
- package/fesm2022/ngwr-splitter.mjs +3 -3
- package/fesm2022/ngwr-splitter.mjs.map +1 -1
- package/fesm2022/ngwr-spotlight-card-testing.mjs.map +1 -1
- package/fesm2022/ngwr-spotlight-card.mjs +6 -6
- package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
- package/fesm2022/ngwr-squircle.mjs +6 -6
- package/fesm2022/ngwr-squircle.mjs.map +1 -1
- package/fesm2022/ngwr-star-border-testing.mjs.map +1 -1
- package/fesm2022/ngwr-star-border.mjs +3 -3
- package/fesm2022/ngwr-star-border.mjs.map +1 -1
- package/fesm2022/ngwr-statistic.mjs +9 -9
- package/fesm2022/ngwr-statistic.mjs.map +1 -1
- package/fesm2022/ngwr-stepper-testing.mjs.map +1 -1
- package/fesm2022/ngwr-stepper.mjs +6 -6
- package/fesm2022/ngwr-stepper.mjs.map +1 -1
- package/fesm2022/ngwr-storage.mjs +3 -3
- package/fesm2022/ngwr-storage.mjs.map +1 -1
- package/fesm2022/ngwr-switch-testing.mjs.map +1 -1
- package/fesm2022/ngwr-switch.mjs +3 -3
- package/fesm2022/ngwr-switch.mjs.map +1 -1
- package/fesm2022/ngwr-table-testing.mjs.map +1 -1
- package/fesm2022/ngwr-table.mjs +18 -18
- package/fesm2022/ngwr-table.mjs.map +1 -1
- package/fesm2022/ngwr-tabs-router.mjs +3 -3
- package/fesm2022/ngwr-tabs-router.mjs.map +1 -1
- package/fesm2022/ngwr-tabs-testing.mjs.map +1 -1
- package/fesm2022/ngwr-tabs.mjs +6 -6
- package/fesm2022/ngwr-tabs.mjs.map +1 -1
- package/fesm2022/ngwr-textarea-testing.mjs.map +1 -1
- package/fesm2022/ngwr-textarea.mjs +3 -3
- package/fesm2022/ngwr-textarea.mjs.map +1 -1
- package/fesm2022/ngwr-theme.mjs +3 -3
- package/fesm2022/ngwr-theme.mjs.map +1 -1
- package/fesm2022/ngwr-tilt-card-testing.mjs.map +1 -1
- package/fesm2022/ngwr-tilt-card.mjs +6 -6
- package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
- package/fesm2022/ngwr-timeline.mjs +6 -6
- package/fesm2022/ngwr-timeline.mjs.map +1 -1
- package/fesm2022/ngwr-toast-testing.mjs.map +1 -1
- package/fesm2022/ngwr-toast.mjs +9 -9
- package/fesm2022/ngwr-toast.mjs.map +1 -1
- package/fesm2022/ngwr-toolbar.mjs +10 -3
- package/fesm2022/ngwr-toolbar.mjs.map +1 -1
- package/fesm2022/ngwr-tour-testing.mjs.map +1 -1
- package/fesm2022/ngwr-tour.mjs +6 -6
- package/fesm2022/ngwr-tour.mjs.map +1 -1
- package/fesm2022/ngwr-transfer-testing.mjs.map +1 -1
- package/fesm2022/ngwr-transfer.mjs +3 -3
- package/fesm2022/ngwr-transfer.mjs.map +1 -1
- package/fesm2022/ngwr-tree-testing.mjs.map +1 -1
- package/fesm2022/ngwr-tree.mjs +3 -3
- package/fesm2022/ngwr-tree.mjs.map +1 -1
- package/fesm2022/ngwr-typewriter-testing.mjs.map +1 -1
- package/fesm2022/ngwr-typewriter.mjs +3 -3
- package/fesm2022/ngwr-typewriter.mjs.map +1 -1
- package/fesm2022/ngwr-typography.mjs +7 -3
- package/fesm2022/ngwr-typography.mjs.map +1 -1
- package/fesm2022/ngwr-utils.mjs.map +1 -1
- package/fesm2022/ngwr-validators.mjs.map +1 -1
- package/fesm2022/ngwr-version.mjs +1 -1
- package/fesm2022/ngwr-version.mjs.map +1 -1
- package/fesm2022/ngwr-virtual-scroll.mjs +3 -3
- package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
- package/fesm2022/ngwr-waves-testing.mjs.map +1 -1
- package/fesm2022/ngwr-waves.mjs +3 -3
- package/fesm2022/ngwr-waves.mjs.map +1 -1
- package/fesm2022/ngwr-window-testing.mjs.map +1 -1
- package/fesm2022/ngwr-window.mjs +12 -12
- package/fesm2022/ngwr-window.mjs.map +1 -1
- package/form/styles/_index.scss +16 -1
- package/gauge/styles/_index.scss +1 -0
- package/i18n/ar.json +32 -1
- package/i18n/cs.json +32 -1
- package/i18n/de.json +32 -1
- package/i18n/en.json +32 -1
- package/i18n/es.json +32 -1
- package/i18n/fr.json +32 -1
- package/i18n/he.json +32 -1
- package/i18n/hi.json +32 -1
- package/i18n/id.json +32 -1
- package/i18n/it.json +32 -1
- package/i18n/ja.json +32 -1
- package/i18n/ko.json +32 -1
- package/i18n/nl.json +32 -1
- package/i18n/pl.json +32 -1
- package/i18n/pt.json +32 -1
- package/i18n/ru.json +32 -1
- package/i18n/sv.json +32 -1
- package/i18n/tr.json +32 -1
- package/i18n/uk.json +32 -1
- package/i18n/vi.json +32 -1
- package/i18n/zh-TW.json +32 -1
- package/i18n/zh.json +32 -1
- package/input/styles/_index.scss +24 -1
- package/input-number/styles/_index.scss +69 -0
- package/input-otp/styles/_index.scss +5 -5
- package/line-chart/styles/_index.scss +30 -2
- package/llms-full.txt +14 -4
- package/llms.txt +188 -132
- package/mcp/providers.js +2 -2
- package/mcp/server.js +1 -1
- package/meter-group/styles/_index.scss +1 -0
- package/overlay/styles/_arrow.scss +30 -2
- package/package.json +43 -2
- package/page-header/styles/_index.scss +37 -1
- package/pagination/styles/_index.scss +9 -5
- package/popover/styles/_index.scss +73 -5
- package/progress/styles/_index.scss +4 -0
- package/radio/styles/_index.scss +4 -1
- package/schematics/use/symbol-map.json +1 -0
- package/select/styles/_index.scss +51 -12
- package/sidebar/styles/_index.scss +44 -2
- package/skeleton/styles/_index.scss +3 -0
- package/skills/ngwr/SKILL.md +5 -5
- package/skills/ngwr/references/catalog.md +2 -0
- package/skills/ngwr/references/setup.md +3 -3
- package/sparkline/styles/_index.scss +19 -0
- package/styles.scss +1 -0
- package/table/styles/_index.scss +7 -0
- package/textarea/styles/_index.scss +12 -3
- package/theme/styles/_colors.scss +39 -13
- package/theme/styles/_contrast.scss +9 -7
- package/toast/styles/_index.scss +4 -0
- package/toolbar/styles/_index.scss +35 -1
- package/tree/styles/_index.scss +46 -7
- package/types/ngwr-badge.d.ts +22 -7
- package/types/ngwr-bar-chart.d.ts +19 -1
- package/types/ngwr-calendar-heatmap.d.ts +29 -1
- package/types/ngwr-checkbox.d.ts +2 -0
- package/types/ngwr-config.d.ts +12 -0
- package/types/ngwr-date-picker.d.ts +308 -43
- package/types/ngwr-donut-chart.d.ts +24 -1
- package/types/ngwr-dropdown.d.ts +22 -2
- package/types/ngwr-editor-testing.d.ts +378 -0
- package/types/ngwr-editor.d.ts +449 -0
- package/types/ngwr-event-calendar.d.ts +8 -0
- package/types/ngwr-form.d.ts +35 -5
- package/types/ngwr-gauge.d.ts +20 -1
- package/types/ngwr-input-number.d.ts +7 -0
- package/types/ngwr-line-chart.d.ts +9 -1
- package/types/ngwr-markdown.d.ts +61 -2
- package/types/ngwr-meter-group-testing.d.ts +3 -2
- package/types/ngwr-meter-group.d.ts +14 -1
- package/types/ngwr-page-header.d.ts +10 -2
- package/types/ngwr-popover.d.ts +154 -3
- package/types/ngwr-sidebar.d.ts +7 -0
- package/types/ngwr-sparkline.d.ts +43 -1
- package/types/ngwr-toolbar.d.ts +7 -0
- package/types/ngwr-typography.d.ts +4 -0
- package/types/ngwr-version.d.ts +1 -1
- package/typography/styles/_index.scss +16 -0
|
@@ -1,15 +1,577 @@
|
|
|
1
|
-
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
2
1
|
import { Directionality } from '@angular/cdk/bidi';
|
|
3
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
4
|
-
import { ScrollStrategyOptions } from '@angular/cdk/overlay';
|
|
5
2
|
import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
|
|
3
|
+
import { ViewportRuler } from '@angular/cdk/scrolling';
|
|
4
|
+
import { DOCUMENT, isPlatformBrowser } from '@angular/common';
|
|
6
5
|
import * as i0 from '@angular/core';
|
|
7
|
-
import {
|
|
6
|
+
import { input, ViewEncapsulation, Component, inject, ElementRef, Injector, signal, computed, untracked, afterRenderEffect, DestroyRef, PLATFORM_ID, Service, output, ViewContainerRef, effect, afterNextRender, Directive } from '@angular/core';
|
|
7
|
+
import { WR_OVERLAY, wrFollowDirection, WrOutsideClick, WR_RESPONSIVE_OVERLAYS, wrPresentAsSheet, wrMirrorOffsets } from 'ngwr/overlay';
|
|
8
|
+
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
9
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
10
|
+
import { ScrollStrategyOptions } from '@angular/cdk/overlay';
|
|
8
11
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
9
12
|
import { useI18nText } from 'ngwr/i18n';
|
|
10
|
-
import { WR_OVERLAY, WrOutsideClick, WR_RESPONSIVE_OVERLAYS, wrPresentAsSheet, wrMirrorOffsets, wrFollowDirection } from 'ngwr/overlay';
|
|
11
13
|
import { KEYS, numAttr } from 'ngwr/utils';
|
|
12
|
-
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @license
|
|
17
|
+
*
|
|
18
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
19
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* The chip a chart's hover tooltip renders into. Not part of the template API —
|
|
23
|
+
* `useChartTooltip()` attaches it.
|
|
24
|
+
*
|
|
25
|
+
* It wears `.wr-tooltip` as well as its own class, so it IS the library's
|
|
26
|
+
* tooltip: the same surface, border, radius, type and arrow as
|
|
27
|
+
* `[wrPopover] mode="tooltip"`, and an app that retints `--wr-tooltip-bg`
|
|
28
|
+
* retints this one with the rest. Only the inside is its own — a swatch, a
|
|
29
|
+
* label and a value, laid out rather than joined into one string, so no
|
|
30
|
+
* separator has to be translated.
|
|
31
|
+
*
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
class WrChartTooltipPanel {
|
|
35
|
+
datum = input.required(/* @ts-ignore */
|
|
36
|
+
...(ngDevMode ? [{ debugName: "datum" }] : /* istanbul ignore next */ []));
|
|
37
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: WrChartTooltipPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
38
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: WrChartTooltipPanel, isStandalone: true, selector: "wr-chart-tooltip", inputs: { datum: { classPropertyName: "datum", publicName: "datum", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "wr-tooltip wr-chart-tooltip" }, ngImport: i0, template: "@let d = datum();\n@if (d.color) {\n <span class=\"wr-chart-tooltip__swatch\" [style.background]=\"d.color\"></span>\n}\n@if (d.label) {\n <span class=\"wr-chart-tooltip__label\">{{ d.label }}</span>\n}\n<span class=\"wr-chart-tooltip__value\">{{ d.value }}</span>\n", encapsulation: i0.ViewEncapsulation.None });
|
|
39
|
+
}
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: WrChartTooltipPanel, decorators: [{
|
|
41
|
+
type: Component,
|
|
42
|
+
args: [{ selector: 'wr-chart-tooltip', encapsulation: ViewEncapsulation.None, host: { class: 'wr-tooltip wr-chart-tooltip' }, template: "@let d = datum();\n@if (d.color) {\n <span class=\"wr-chart-tooltip__swatch\" [style.background]=\"d.color\"></span>\n}\n@if (d.label) {\n <span class=\"wr-chart-tooltip__label\">{{ d.label }}</span>\n}\n<span class=\"wr-chart-tooltip__value\">{{ d.value }}</span>\n" }]
|
|
43
|
+
}], propDecorators: { datum: [{ type: i0.Input, args: [{ isSignal: true, alias: "datum", required: true }] }] } });
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @license
|
|
47
|
+
*
|
|
48
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
49
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
50
|
+
*/
|
|
51
|
+
/**
|
|
52
|
+
* How long the tooltip outlives the pointer leaving a section, or reporting another
|
|
53
|
+
* one on its way to the chip, in ms.
|
|
54
|
+
*
|
|
55
|
+
* Long enough to cross the 8px gap onto the chip, which is what keeps it hoverable,
|
|
56
|
+
* and to pass through the gutter between two bars or two heatmap days without a
|
|
57
|
+
* flash. The same order as `[wrPopover]`'s `hideDelay`.
|
|
58
|
+
*/
|
|
59
|
+
const GRACE = 100;
|
|
60
|
+
/**
|
|
61
|
+
* How close the arrow's middle may come to the end of the chip's edge, in px from the
|
|
62
|
+
* padding box: the chip's inner corner radius (5px) plus half the rotated square's
|
|
63
|
+
* diagonal (4.24px), rounded up. An anchor further out than that — a chip pushed flush
|
|
64
|
+
* against the viewport by a section on its very edge — keeps the arrow on the straight
|
|
65
|
+
* part of the chip rather than off its corner.
|
|
66
|
+
*/
|
|
67
|
+
const ARROW_INSET = 10;
|
|
68
|
+
/**
|
|
69
|
+
* How far back past its anchor a chip that runs AWAY from the anchor starts: far enough
|
|
70
|
+
* for the arrow to sit on the anchor without meeting `ARROW_INSET`.
|
|
71
|
+
*/
|
|
72
|
+
const REACH_BACK = ARROW_INSET + 4;
|
|
73
|
+
const ABOVE = {
|
|
74
|
+
originX: 'center',
|
|
75
|
+
originY: 'top',
|
|
76
|
+
overlayX: 'center',
|
|
77
|
+
overlayY: 'bottom',
|
|
78
|
+
offsetY: -8,
|
|
79
|
+
arrow: 'bottom',
|
|
80
|
+
};
|
|
81
|
+
const BELOW = {
|
|
82
|
+
originX: 'center',
|
|
83
|
+
originY: 'bottom',
|
|
84
|
+
overlayX: 'center',
|
|
85
|
+
overlayY: 'top',
|
|
86
|
+
offsetY: 8,
|
|
87
|
+
arrow: 'top',
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Every placement a side may take, best first.
|
|
91
|
+
*
|
|
92
|
+
* `top` and `bottom` flip to each other, the way every tooltip does. A side placement
|
|
93
|
+
* never flips to the far side: its anchor is a point on a donut's outer arc, and the far
|
|
94
|
+
* side of that point is the donut. Where there is no room beside the anchor — a 200px
|
|
95
|
+
* ring on a phone leaves about 85px either side — the chip goes above it, then below,
|
|
96
|
+
* running AWAY from the ring with the anchor just inside its near end. Measured in
|
|
97
|
+
* Chromium at 375px, a chip centred on the nine o'clock point lay 40px deep over the
|
|
98
|
+
* ring, and one running away from it 13px. Centred above and below come last, and when
|
|
99
|
+
* nothing fits `withPush` slides the best of them into view.
|
|
100
|
+
*/
|
|
101
|
+
const FALLBACKS = {
|
|
102
|
+
top: [ABOVE, BELOW],
|
|
103
|
+
bottom: [BELOW, ABOVE],
|
|
104
|
+
right: [
|
|
105
|
+
{ originX: 'right', originY: 'center', overlayX: 'left', overlayY: 'center', offsetX: 8, arrow: 'left' },
|
|
106
|
+
{ ...ABOVE, overlayX: 'left', offsetX: -REACH_BACK },
|
|
107
|
+
{ ...BELOW, overlayX: 'left', offsetX: -REACH_BACK },
|
|
108
|
+
ABOVE,
|
|
109
|
+
BELOW,
|
|
110
|
+
],
|
|
111
|
+
left: [
|
|
112
|
+
{ originX: 'left', originY: 'center', overlayX: 'right', overlayY: 'center', offsetX: -8, arrow: 'right' },
|
|
113
|
+
{ ...ABOVE, overlayX: 'right', offsetX: REACH_BACK },
|
|
114
|
+
{ ...BELOW, overlayX: 'right', offsetX: REACH_BACK },
|
|
115
|
+
ABOVE,
|
|
116
|
+
BELOW,
|
|
117
|
+
],
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* The position list for a side, in the logical vocabulary the CDK and the arrow
|
|
121
|
+
* stylesheet speak.
|
|
122
|
+
*
|
|
123
|
+
* A chart's geometry does not mirror — an SVG arc at three o'clock is on the right in
|
|
124
|
+
* both directions — so the list is written physically and translated here. The CDK
|
|
125
|
+
* resolves `start` / `end` against the overlay's direction, and applies `offsetX` as a
|
|
126
|
+
* physical translate, so under RTL the edges swap and the offsets stay as they are. The
|
|
127
|
+
* pane class names the edge the arrow hangs off in the stylesheet's terms: its side
|
|
128
|
+
* placements hang the arrow off an INLINE edge, so the chip's physical left edge is
|
|
129
|
+
* `--right` in LTR and `--left` in RTL. Along that edge the arrow is placed by
|
|
130
|
+
* measurement, so a chip that runs away from its anchor needs no class of its own.
|
|
131
|
+
*/
|
|
132
|
+
function chartTooltipPositions(side, rtl) {
|
|
133
|
+
const x = (edge) => edge === 'center' ? 'center' : (edge === 'left') !== rtl ? 'start' : 'end';
|
|
134
|
+
const arrowClass = {
|
|
135
|
+
top: 'bottom',
|
|
136
|
+
bottom: 'top',
|
|
137
|
+
left: rtl ? 'left' : 'right',
|
|
138
|
+
right: rtl ? 'right' : 'left',
|
|
139
|
+
};
|
|
140
|
+
return FALLBACKS[side].map(place => ({
|
|
141
|
+
originX: x(place.originX),
|
|
142
|
+
originY: place.originY,
|
|
143
|
+
overlayX: x(place.overlayX),
|
|
144
|
+
overlayY: place.overlayY,
|
|
145
|
+
offsetX: place.offsetX,
|
|
146
|
+
offsetY: place.offsetY,
|
|
147
|
+
panelClass: `wr-tooltip-overlay--${arrowClass[place.arrow]}`,
|
|
148
|
+
}));
|
|
149
|
+
}
|
|
150
|
+
/** Where an anchor is right now, in viewport pixels. */
|
|
151
|
+
function boxOf(anchor) {
|
|
152
|
+
if (anchor instanceof Element)
|
|
153
|
+
return anchor.getBoundingClientRect();
|
|
154
|
+
const width = anchor.width ?? 0;
|
|
155
|
+
const height = anchor.height ?? 0;
|
|
156
|
+
return { left: anchor.x, top: anchor.y, right: anchor.x + width, bottom: anchor.y + height };
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* A hover tooltip for a chart's sections, with ONE overlay per chart.
|
|
160
|
+
*
|
|
161
|
+
* **Why not `[wrPopover] mode="tooltip"` on every section.** It fits the look
|
|
162
|
+
* and not the shape. A year of `wr-calendar-heatmap` is 371 days, and a directive
|
|
163
|
+
* per day is 371 focus monitors and 371 overlays-in-waiting for a tooltip only
|
|
164
|
+
* one of them can show; and most sections are not an element a directive could
|
|
165
|
+
* point at — a donut's slice is a `<path>` whose box is most of the ring, a
|
|
166
|
+
* sparkline's point is a coordinate. So the chart says which section is under
|
|
167
|
+
* the pointer and where to point, and this owns the single overlay, the timers
|
|
168
|
+
* and the teardown. What IS shared with the directive is everything a reader
|
|
169
|
+
* sees: the `.wr-tooltip` chip, its arrow, the placements with their flip, and
|
|
170
|
+
* Escape.
|
|
171
|
+
*
|
|
172
|
+
* **The chip points AT the section it describes**, with its arrow on the anchor:
|
|
173
|
+
* above a heatmap's day, above a bar's top edge, off the outside of a donut's arc.
|
|
174
|
+
* The arrow is placed from a measurement rather than centred, because the chip is
|
|
175
|
+
* not always centred on its anchor — `withPush` slides it along the viewport edge
|
|
176
|
+
* for the first and last week of a year — and an arrow at the chip's middle would
|
|
177
|
+
* then point at a neighbour. The measurement is written to
|
|
178
|
+
* `--wr-chart-tooltip-arrow` on the chip, and the stylesheet puts the arrow there.
|
|
179
|
+
*
|
|
180
|
+
* **A chip at its section sits over the sections beside it**, and it is hoverable
|
|
181
|
+
* (below), so the way onto it can cross another section: straight up from a heatmap
|
|
182
|
+
* day runs through the day above. Switching the moment that day reported itself
|
|
183
|
+
* would move the chip away from a pointer on its way to it — WCAG 1.4.13 with extra
|
|
184
|
+
* steps. So the strip between the anchor and the chip is a bridge: another section
|
|
185
|
+
* reported from inside it waits out the same grace a leave does, a pointer still
|
|
186
|
+
* closing in on the chip starts that grace again however slowly it moves, and
|
|
187
|
+
* landing on the chip cancels the switch. Anywhere else a new section switches at
|
|
188
|
+
* once, so scanning a row of days does not lag. The cost is in the other direction: a
|
|
189
|
+
* pointer that keeps on going up a heatmap's column is moving onto the chip, so it
|
|
190
|
+
* passes over it and the days under it read out only once it comes out the far side.
|
|
191
|
+
*
|
|
192
|
+
* **Why an overlay and not a positioned child, the way `wr-line-chart` draws its
|
|
193
|
+
* own.** A child is clipped by every `overflow` between it and the page, and a
|
|
194
|
+
* chart sits inside those constantly: `wr-calendar-heatmap` IS a scroll
|
|
195
|
+
* container, and a sparkline in a `wr-table` cell sits under two more.
|
|
196
|
+
*
|
|
197
|
+
* **Pointer only, deliberately.** No section of any chart is a tab stop, and
|
|
198
|
+
* this does not make one — a year of days in the tab order would be the defect.
|
|
199
|
+
* The pane is `aria-hidden`: every value it shows is already the section's
|
|
200
|
+
* accessible name or the chart's own, and an orphan tooltip nothing describes
|
|
201
|
+
* reads as a stray line at the end of the document. It is never the only way to
|
|
202
|
+
* a value.
|
|
203
|
+
*
|
|
204
|
+
* SSR-safe: nothing here touches the DOM until a pointer event has moved a
|
|
205
|
+
* section, and the render effect that opens the overlay never runs on a server.
|
|
206
|
+
*
|
|
207
|
+
* Call from an injection context — a chart's field initialiser.
|
|
208
|
+
*
|
|
209
|
+
* @param enabled The chart's `tooltip` input. Turning it off closes an open tooltip.
|
|
210
|
+
* @param resolve What to show for section `index`, and where. It runs after
|
|
211
|
+
* render, so it may read the DOM the section just drew; the signals it reads
|
|
212
|
+
* are tracked, so a data change under an open tooltip re-reads it, and a
|
|
213
|
+
* section that no longer exists (`null`) closes it. It runs again whenever the
|
|
214
|
+
* chart may have moved under an open chip — a scroll anywhere, a viewport
|
|
215
|
+
* resize, the chart or its anchor element changing size.
|
|
216
|
+
* @param sectionAt For a chart whose sections are chosen by POSITION rather than by
|
|
217
|
+
* element — a sparkline picks the point nearest the pointer's x, anywhere over the
|
|
218
|
+
* drawing — the section at a viewport point, or `null` off the drawing. The chip
|
|
219
|
+
* points at the point from inside the drawing, so without this a pointer scrubbing
|
|
220
|
+
* above the line lands on the chip and the chart stops hearing it: measured in
|
|
221
|
+
* Chromium, a scrub along the top of a sparkline showed 9 of its 12 values. Asked on
|
|
222
|
+
* every pointer event while a chip is up, wherever the pointer is over the chart or its
|
|
223
|
+
* own chip; straight up from a point onto its chip stays on that point, so the chip is
|
|
224
|
+
* still hoverable. Anywhere else the chip closes after the usual grace.
|
|
225
|
+
*
|
|
226
|
+
* @internal
|
|
227
|
+
*/
|
|
228
|
+
function useChartTooltip(enabled, resolve, sectionAt) {
|
|
229
|
+
const overlay = inject(WR_OVERLAY);
|
|
230
|
+
const doc = inject(DOCUMENT);
|
|
231
|
+
const dir = inject(Directionality, { optional: true });
|
|
232
|
+
const viewport = inject(ViewportRuler);
|
|
233
|
+
const host = inject(ElementRef).nativeElement;
|
|
234
|
+
const injector = inject(Injector);
|
|
235
|
+
const hovered = signal(null, /* @ts-ignore */
|
|
236
|
+
...(ngDevMode ? [{ debugName: "hovered" }] : /* istanbul ignore next */ []));
|
|
237
|
+
const active = computed(() => (enabled() ? hovered() : null), /* @ts-ignore */
|
|
238
|
+
...(ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []));
|
|
239
|
+
/**
|
|
240
|
+
* The section Escape dismissed. It stays shut for as long as the pointer stays
|
|
241
|
+
* on that section — WCAG 1.4.13 asks for dismissal WITHOUT moving the pointer,
|
|
242
|
+
* and a sparkline re-reports its section on every `mousemove`, so a plain
|
|
243
|
+
* close would reopen on the next pixel.
|
|
244
|
+
*/
|
|
245
|
+
let dismissed = null;
|
|
246
|
+
let overlayRef = null;
|
|
247
|
+
let strategy = null;
|
|
248
|
+
let panel = null;
|
|
249
|
+
let side = 'top';
|
|
250
|
+
let anchor = null;
|
|
251
|
+
let resized = null;
|
|
252
|
+
let observer = null;
|
|
253
|
+
let observed = null;
|
|
254
|
+
/** Where the pointer last was, while a chip is up. `null` until it moves. */
|
|
255
|
+
let pointer = null;
|
|
256
|
+
/**
|
|
257
|
+
* What the grace period settles on when it runs out: another section, `null` for
|
|
258
|
+
* none, or `undefined` for nothing pending — the chip stays as it is.
|
|
259
|
+
*/
|
|
260
|
+
let pending;
|
|
261
|
+
let graceTimer = null;
|
|
262
|
+
/** The pointer's distance from the chip when the grace last (re)started. */
|
|
263
|
+
let approach = Number.POSITIVE_INFINITY;
|
|
264
|
+
const chipBox = () => {
|
|
265
|
+
const box = overlayRef?.overlayElement.getBoundingClientRect();
|
|
266
|
+
// Nothing laid out (a unit test, a pane not attached yet) is no chip to reach.
|
|
267
|
+
return box && box.width > 0 && box.height > 0 ? box : null;
|
|
268
|
+
};
|
|
269
|
+
/**
|
|
270
|
+
* Whether the pointer is in the strip between the anchor and the chip — as wide
|
|
271
|
+
* as the chip along the edge it hangs off, so a diagonal approach counts too.
|
|
272
|
+
*/
|
|
273
|
+
const inBridge = () => {
|
|
274
|
+
const chip = chipBox();
|
|
275
|
+
if (!pointer || !chip || !anchor)
|
|
276
|
+
return false;
|
|
277
|
+
const at = boxOf(anchor);
|
|
278
|
+
const { x, y } = pointer;
|
|
279
|
+
const across = x >= chip.left && x <= chip.right;
|
|
280
|
+
const along = y >= chip.top && y <= chip.bottom;
|
|
281
|
+
if (chip.bottom <= at.top)
|
|
282
|
+
return across && y >= chip.bottom && y <= at.top;
|
|
283
|
+
if (chip.top >= at.bottom)
|
|
284
|
+
return across && y >= at.bottom && y <= chip.top;
|
|
285
|
+
if (chip.right <= at.left)
|
|
286
|
+
return along && x >= chip.right && x <= at.left;
|
|
287
|
+
if (chip.left >= at.right)
|
|
288
|
+
return along && x >= at.right && x <= chip.left;
|
|
289
|
+
return false;
|
|
290
|
+
};
|
|
291
|
+
const distanceToChip = () => {
|
|
292
|
+
const chip = chipBox();
|
|
293
|
+
if (!pointer || !chip)
|
|
294
|
+
return Number.POSITIVE_INFINITY;
|
|
295
|
+
const dx = Math.max(chip.left - pointer.x, 0, pointer.x - chip.right);
|
|
296
|
+
const dy = Math.max(chip.top - pointer.y, 0, pointer.y - chip.bottom);
|
|
297
|
+
return Math.hypot(dx, dy);
|
|
298
|
+
};
|
|
299
|
+
const cancelGrace = () => {
|
|
300
|
+
pending = undefined;
|
|
301
|
+
if (graceTimer === null)
|
|
302
|
+
return;
|
|
303
|
+
clearTimeout(graceTimer);
|
|
304
|
+
graceTimer = null;
|
|
305
|
+
};
|
|
306
|
+
const settle = () => {
|
|
307
|
+
const next = pending;
|
|
308
|
+
cancelGrace();
|
|
309
|
+
if (next !== undefined)
|
|
310
|
+
hovered.set(next);
|
|
311
|
+
};
|
|
312
|
+
const restartGrace = () => {
|
|
313
|
+
if (graceTimer !== null)
|
|
314
|
+
clearTimeout(graceTimer);
|
|
315
|
+
graceTimer = setTimeout(settle, GRACE);
|
|
316
|
+
};
|
|
317
|
+
// An armed grace is left to run rather than restarted: a grid reports the gap
|
|
318
|
+
// between two squares on every `mousemove`, and restarting would keep a tooltip
|
|
319
|
+
// up for as long as the pointer kept moving through it. Only closing in on the
|
|
320
|
+
// chip restarts it — see `track`.
|
|
321
|
+
const defer = (next) => {
|
|
322
|
+
pending = next;
|
|
323
|
+
if (graceTimer !== null)
|
|
324
|
+
return;
|
|
325
|
+
approach = distanceToChip();
|
|
326
|
+
restartGrace();
|
|
327
|
+
};
|
|
328
|
+
const enter = (index) => {
|
|
329
|
+
if (!enabled())
|
|
330
|
+
return;
|
|
331
|
+
if (index === dismissed) {
|
|
332
|
+
cancelGrace();
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
dismissed = null;
|
|
336
|
+
const showing = hovered();
|
|
337
|
+
if (index === showing) {
|
|
338
|
+
cancelGrace();
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
341
|
+
if (showing !== null && inBridge()) {
|
|
342
|
+
defer(index);
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
cancelGrace();
|
|
346
|
+
hovered.set(index);
|
|
347
|
+
};
|
|
348
|
+
/**
|
|
349
|
+
* Put the arrow on the anchor, wherever the chip landed along it. Measured off the
|
|
350
|
+
* PANE, which is exactly the chip's box: the chip itself scales in from 96% and
|
|
351
|
+
* would read short for the length of its entry animation.
|
|
352
|
+
*/
|
|
353
|
+
const aim = () => {
|
|
354
|
+
if (!overlayRef || !panel || !anchor)
|
|
355
|
+
return;
|
|
356
|
+
const pane = overlayRef.overlayElement;
|
|
357
|
+
const chip = panel.location.nativeElement;
|
|
358
|
+
const at = boxOf(anchor);
|
|
359
|
+
const box = pane.getBoundingClientRect();
|
|
360
|
+
const across = pane.classList.contains('wr-tooltip-overlay--top') || pane.classList.contains('wr-tooltip-overlay--bottom');
|
|
361
|
+
// The arrow is positioned inside the chip's padding box, so its border comes off.
|
|
362
|
+
const border = across ? chip.clientLeft : chip.clientTop;
|
|
363
|
+
const inner = (across ? box.width : box.height) - 2 * border;
|
|
364
|
+
if (inner <= 2 * ARROW_INSET)
|
|
365
|
+
return;
|
|
366
|
+
const target = across ? (at.left + at.right) / 2 - box.left : (at.top + at.bottom) / 2 - box.top;
|
|
367
|
+
const offset = Math.min(inner - ARROW_INSET, Math.max(ARROW_INSET, target - border));
|
|
368
|
+
chip.style.setProperty('--wr-chart-tooltip-arrow', `${Math.round(offset * 100) / 100}px`);
|
|
369
|
+
};
|
|
370
|
+
const place = () => {
|
|
371
|
+
if (!overlayRef || !strategy || !anchor)
|
|
372
|
+
return;
|
|
373
|
+
strategy.setOrigin(anchor);
|
|
374
|
+
overlayRef.updatePosition();
|
|
375
|
+
aim();
|
|
376
|
+
};
|
|
377
|
+
/** Watch whatever can move the anchor without a scroll or a viewport resize. */
|
|
378
|
+
const observe = () => {
|
|
379
|
+
const next = anchor instanceof Element ? anchor : null;
|
|
380
|
+
if (!observer || next === observed)
|
|
381
|
+
return;
|
|
382
|
+
if (observed)
|
|
383
|
+
observer.unobserve(observed);
|
|
384
|
+
observed = next;
|
|
385
|
+
if (next)
|
|
386
|
+
observer.observe(next);
|
|
387
|
+
};
|
|
388
|
+
/**
|
|
389
|
+
* Point the open chip at wherever its section is NOW. A box anchor is a set of
|
|
390
|
+
* viewport numbers, so it goes stale the moment anything scrolls, and the CDK's
|
|
391
|
+
* own reposition listens to the window and to registered `cdkScrollable`s only —
|
|
392
|
+
* not to `wr-calendar-heatmap`, which is a scroll container of its own, nor to a
|
|
393
|
+
* `wr-table` a sparkline sits in. One capture listener on the document hears
|
|
394
|
+
* every one of them; a viewport resize and a `ResizeObserver` on the chart cover
|
|
395
|
+
* the rest.
|
|
396
|
+
*/
|
|
397
|
+
const reanchor = () => {
|
|
398
|
+
const index = untracked(active);
|
|
399
|
+
if (!overlayRef || index === null)
|
|
400
|
+
return;
|
|
401
|
+
const target = untracked(() => resolve(index));
|
|
402
|
+
if (!target?.anchor)
|
|
403
|
+
return;
|
|
404
|
+
anchor = target.anchor;
|
|
405
|
+
observe();
|
|
406
|
+
place();
|
|
407
|
+
};
|
|
408
|
+
/**
|
|
409
|
+
* The pointer, wherever it goes while a chip is up. Captured on the document, so it
|
|
410
|
+
* is current before any section's own `mouseenter` / `mousemove` handler runs.
|
|
411
|
+
*/
|
|
412
|
+
const track = (event) => {
|
|
413
|
+
const { clientX: x, clientY: y } = event;
|
|
414
|
+
pointer = { x, y };
|
|
415
|
+
// A chart scrubbed by position hears the pointer wherever it is over the drawing,
|
|
416
|
+
// chip or not — see `sectionAt` — but only where what is under the pointer is the
|
|
417
|
+
// chart or its own chip. A box says nothing about what covers it: a chip from the
|
|
418
|
+
// chart beside it can lie over this drawing, and the drawing's edge is a fraction of
|
|
419
|
+
// a pixel wider than what hit-tests as it. A `mouseout` goes to the element left, so
|
|
420
|
+
// the one under the pointer is its `relatedTarget`.
|
|
421
|
+
const under = event.type === 'mouseout' ? event.relatedTarget : event.target;
|
|
422
|
+
const ours = under instanceof Node && (host.contains(under) || !!overlayRef?.overlayElement.contains(under));
|
|
423
|
+
const scrubbed = sectionAt && ours ? sectionAt(x, y) : null;
|
|
424
|
+
if (scrubbed !== null) {
|
|
425
|
+
enter(scrubbed);
|
|
426
|
+
return;
|
|
427
|
+
}
|
|
428
|
+
// On the chip: its own `mouseenter` cancels whatever is pending. Asked of the
|
|
429
|
+
// geometry rather than of the event, because the first event of that move is the
|
|
430
|
+
// section's `mouseout`, whose target is the section being left.
|
|
431
|
+
const chip = chipBox();
|
|
432
|
+
const onChip = chip !== null && x >= chip.left && x <= chip.right && y >= chip.top && y <= chip.bottom;
|
|
433
|
+
// Off the drawing of a chart scrubbed by position, nothing is hovered, whatever the
|
|
434
|
+
// drawing's own `mouseleave` did — it only fires once, and a chip can move over or
|
|
435
|
+
// off a resting pointer without any. Measured in Chromium before this: a pointer
|
|
436
|
+
// leaving a sparkline across its right edge re-entered the last point in the capture
|
|
437
|
+
// phase of the same move, cancelled the grace the leave was about to arm, and left
|
|
438
|
+
// the chip up for good beside the next chart's own.
|
|
439
|
+
if (sectionAt && !onChip && graceTimer === null)
|
|
440
|
+
defer(null);
|
|
441
|
+
if (graceTimer === null || onChip)
|
|
442
|
+
return;
|
|
443
|
+
if (inBridge()) {
|
|
444
|
+
const distance = distanceToChip();
|
|
445
|
+
if (distance < approach) {
|
|
446
|
+
approach = distance;
|
|
447
|
+
restartGrace();
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
else if (pending !== undefined && pending !== null) {
|
|
451
|
+
// Out of the bridge while a section waits: nothing is on its way to the chip.
|
|
452
|
+
settle();
|
|
453
|
+
}
|
|
454
|
+
};
|
|
455
|
+
const close = () => {
|
|
456
|
+
if (!overlayRef)
|
|
457
|
+
return;
|
|
458
|
+
doc.removeEventListener('scroll', reanchor, true);
|
|
459
|
+
for (const type of ['mousemove', 'mouseover', 'mouseout']) {
|
|
460
|
+
doc.removeEventListener(type, track, true);
|
|
461
|
+
}
|
|
462
|
+
resized?.unsubscribe();
|
|
463
|
+
observer?.disconnect();
|
|
464
|
+
// Disposing detaches the pane with its listeners and completes
|
|
465
|
+
// `keydownEvents()`, so nothing registered in `open()` outlives it.
|
|
466
|
+
overlayRef.dispose();
|
|
467
|
+
overlayRef = null;
|
|
468
|
+
strategy = null;
|
|
469
|
+
panel = null;
|
|
470
|
+
anchor = null;
|
|
471
|
+
resized = null;
|
|
472
|
+
observer = null;
|
|
473
|
+
observed = null;
|
|
474
|
+
pointer = null;
|
|
475
|
+
};
|
|
476
|
+
const open = (target) => {
|
|
477
|
+
const wanted = target.side ?? 'top';
|
|
478
|
+
anchor = target.anchor;
|
|
479
|
+
if (!overlayRef) {
|
|
480
|
+
side = wanted;
|
|
481
|
+
const direction = dir?.value ?? 'ltr';
|
|
482
|
+
// `withGrowAfterOpen`: past its first pass the CDK never gives the pane a box
|
|
483
|
+
// larger than the last one, and this pane is passed from section to section. A
|
|
484
|
+
// chip once pushed against the viewport edge — a donut's nine o'clock on a phone —
|
|
485
|
+
// left every later chip that box, so the next one overflowed its pane and the arrow,
|
|
486
|
+
// measured off the pane, pointed 9–13px wide of its slice. `wr-dropdown` hit the same.
|
|
487
|
+
strategy = overlay
|
|
488
|
+
.position()
|
|
489
|
+
.flexibleConnectedTo(anchor)
|
|
490
|
+
.withPositions(chartTooltipPositions(side, direction === 'rtl'))
|
|
491
|
+
.withPush(true)
|
|
492
|
+
.withGrowAfterOpen(true);
|
|
493
|
+
overlayRef = overlay.create({
|
|
494
|
+
positionStrategy: strategy,
|
|
495
|
+
// No scroll strategy: `reanchor` repositions, for every scroll container.
|
|
496
|
+
panelClass: 'wr-tooltip-overlay',
|
|
497
|
+
// The direction the list above was translated for — the CDK would otherwise
|
|
498
|
+
// take the document's, and a chart under a `[dir]` would open on the wrong side.
|
|
499
|
+
direction,
|
|
500
|
+
});
|
|
501
|
+
doc.addEventListener('scroll', reanchor, { capture: true, passive: true });
|
|
502
|
+
for (const type of ['mousemove', 'mouseover', 'mouseout']) {
|
|
503
|
+
doc.addEventListener(type, track, { capture: true, passive: true });
|
|
504
|
+
}
|
|
505
|
+
// After the CDK's own subscription, which re-applies against the stale anchor.
|
|
506
|
+
resized = viewport.change().subscribe(reanchor);
|
|
507
|
+
if (typeof ResizeObserver !== 'undefined') {
|
|
508
|
+
observer = new ResizeObserver(reanchor);
|
|
509
|
+
observer.observe(host);
|
|
510
|
+
}
|
|
511
|
+
// The chip lands on the same PHYSICAL side in both directions, so the list is
|
|
512
|
+
// translated again rather than the side changed, and the arrow's measurement holds.
|
|
513
|
+
wrFollowDirection(overlayRef, dir, injector, direction => strategy?.withPositions(chartTooltipPositions(side, direction === 'rtl')));
|
|
514
|
+
const pane = overlayRef.overlayElement;
|
|
515
|
+
pane.setAttribute('aria-hidden', 'true');
|
|
516
|
+
// Hoverable: the pointer may move onto the chip without losing it, and a switch
|
|
517
|
+
// or a hide it was racing is off. Leaving it starts the same grace a section
|
|
518
|
+
// does; landing back on a section decides through `enter()`.
|
|
519
|
+
pane.addEventListener('mouseenter', cancelGrace);
|
|
520
|
+
pane.addEventListener('mouseleave', () => defer(null));
|
|
521
|
+
// Escape reaches the topmost overlay wherever focus is — the CDK's keyboard
|
|
522
|
+
// dispatcher routes it — which is what makes a tooltip nothing can focus
|
|
523
|
+
// dismissible at all.
|
|
524
|
+
overlayRef.keydownEvents().subscribe(event => {
|
|
525
|
+
if (event.key !== 'Escape')
|
|
526
|
+
return;
|
|
527
|
+
dismissed = hovered();
|
|
528
|
+
cancelGrace();
|
|
529
|
+
hovered.set(null);
|
|
530
|
+
});
|
|
531
|
+
panel = overlayRef.attach(new ComponentPortal(WrChartTooltipPanel, null, injector));
|
|
532
|
+
}
|
|
533
|
+
else if (wanted !== side) {
|
|
534
|
+
side = wanted;
|
|
535
|
+
strategy?.withPositions(chartTooltipPositions(side, overlayRef.getDirection() === 'rtl'));
|
|
536
|
+
}
|
|
537
|
+
observe();
|
|
538
|
+
panel?.setInput('datum', target.datum);
|
|
539
|
+
// Rendered NOW rather than on the next pass: the position is centred on the
|
|
540
|
+
// anchor, so it has to be measured against the text it is about to show, not
|
|
541
|
+
// the previous section's.
|
|
542
|
+
panel?.changeDetectorRef.detectChanges();
|
|
543
|
+
place();
|
|
544
|
+
};
|
|
545
|
+
afterRenderEffect(() => {
|
|
546
|
+
const index = active();
|
|
547
|
+
const target = index === null ? null : resolve(index);
|
|
548
|
+
// Untracked: the overlay's own construction reads signals (the direction
|
|
549
|
+
// follower creates an effect), and none of them should re-run this.
|
|
550
|
+
untracked(() => {
|
|
551
|
+
if (target?.anchor)
|
|
552
|
+
open({ ...target, anchor: target.anchor });
|
|
553
|
+
else
|
|
554
|
+
close();
|
|
555
|
+
});
|
|
556
|
+
});
|
|
557
|
+
inject(DestroyRef).onDestroy(() => {
|
|
558
|
+
cancelGrace();
|
|
559
|
+
close();
|
|
560
|
+
});
|
|
561
|
+
return {
|
|
562
|
+
active,
|
|
563
|
+
enter,
|
|
564
|
+
leave(event) {
|
|
565
|
+
dismissed = null;
|
|
566
|
+
// Straight onto the chip: its own `mouseenter` would cancel the grace a
|
|
567
|
+
// moment later anyway, and not arming it is what removes the race.
|
|
568
|
+
const to = event?.relatedTarget;
|
|
569
|
+
if (to instanceof Node && overlayRef?.overlayElement.contains(to))
|
|
570
|
+
return;
|
|
571
|
+
defer(null);
|
|
572
|
+
},
|
|
573
|
+
};
|
|
574
|
+
}
|
|
13
575
|
|
|
14
576
|
/**
|
|
15
577
|
* @license
|
|
@@ -170,10 +732,10 @@ class WrCurrentKeystroke {
|
|
|
170
732
|
this.doc.removeEventListener('keydown', record, { capture: true });
|
|
171
733
|
});
|
|
172
734
|
}
|
|
173
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
174
|
-
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.
|
|
735
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: WrCurrentKeystroke, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
736
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.7", ngImport: i0, type: WrCurrentKeystroke });
|
|
175
737
|
}
|
|
176
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
738
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: WrCurrentKeystroke, decorators: [{
|
|
177
739
|
type: Service
|
|
178
740
|
}], ctorParameters: () => [] });
|
|
179
741
|
|
|
@@ -193,10 +755,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
|
|
|
193
755
|
class WrPopoverTextPanel {
|
|
194
756
|
text = input.required(/* @ts-ignore */
|
|
195
757
|
...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
|
|
196
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
197
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.
|
|
758
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: WrPopoverTextPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
759
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: WrPopoverTextPanel, isStandalone: true, selector: "wr-popover-text", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "wr-tooltip" }, ngImport: i0, template: '{{ text() }}', isInline: true, encapsulation: i0.ViewEncapsulation.None });
|
|
198
760
|
}
|
|
199
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
761
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: WrPopoverTextPanel, decorators: [{
|
|
200
762
|
type: Component,
|
|
201
763
|
args: [{
|
|
202
764
|
selector: 'wr-popover-text',
|
|
@@ -741,10 +1303,10 @@ class WrPopover {
|
|
|
741
1303
|
isRtl() {
|
|
742
1304
|
return this.dir?.value === 'rtl';
|
|
743
1305
|
}
|
|
744
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
745
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.
|
|
1306
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: WrPopover, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1307
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: WrPopover, isStandalone: true, selector: "[wrPopover]", inputs: { content: { classPropertyName: "content", publicName: "wrPopover", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, trigger: { classPropertyName: "trigger", publicName: "trigger", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, showDelay: { classPropertyName: "showDelay", publicName: "showDelay", isSignal: true, isRequired: false, transformFunction: null }, hideDelay: { classPropertyName: "hideDelay", publicName: "hideDelay", isSignal: true, isRequired: false, transformFunction: null }, responsive: { classPropertyName: "responsive", publicName: "responsive", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { opened: "opened", closed: "closed" }, host: { listeners: { "click": "onClick($event)", "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave($event)", "keydown.escape": "onEscape()" }, properties: { "attr.aria-haspopup": "isTooltip() ? null : \"dialog\"", "attr.aria-expanded": "isTooltip() ? null : isOpen()", "attr.aria-controls": "!isTooltip() && isOpen() ? panelId : null", "attr.aria-describedby": "isTooltip() && isOpen() ? panelId : null" }, classAttribute: "wr-popover-trigger" }, exportAs: ["wrPopover"], ngImport: i0 });
|
|
746
1308
|
}
|
|
747
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
1309
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: WrPopover, decorators: [{
|
|
748
1310
|
type: Directive,
|
|
749
1311
|
args: [{
|
|
750
1312
|
selector: '[wrPopover]',
|
|
@@ -775,5 +1337,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
|
|
|
775
1337
|
* Generated bundle index. Do not edit.
|
|
776
1338
|
*/
|
|
777
1339
|
|
|
778
|
-
export { WrPopover };
|
|
1340
|
+
export { WrPopover, useChartTooltip };
|
|
779
1341
|
//# sourceMappingURL=ngwr-popover.mjs.map
|