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
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
import * as ngwr_form from 'ngwr/form';
|
|
2
|
+
import { WrFormFieldContext } from 'ngwr/form';
|
|
3
|
+
import * as _angular_core from '@angular/core';
|
|
4
|
+
import { Signal } from '@angular/core';
|
|
5
|
+
import { FormValueControl } from '@angular/forms/signals';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @license
|
|
9
|
+
*
|
|
10
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
11
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* What `<wr-editor>` reads from and writes into its `value` model.
|
|
15
|
+
*
|
|
16
|
+
* - `html` — an HTML string, parsed without executing anything and rebuilt from
|
|
17
|
+
* the editor's own schema on the way out, so only what the schema allows comes
|
|
18
|
+
* back. `''` for an empty document.
|
|
19
|
+
* - `markdown` — the dialect `ngwr/markdown` reads and `<wr-markdown>` renders,
|
|
20
|
+
* written back by `serializeMarkdown`. Markdown has no underline, so the
|
|
21
|
+
* underline tool and its shortcut are absent in this format. `''` for an empty
|
|
22
|
+
* document.
|
|
23
|
+
* - `json` — the document as a {@link WrEditorJson} tree. `null` for an empty
|
|
24
|
+
* document.
|
|
25
|
+
*/
|
|
26
|
+
type WrEditorFormat = 'html' | 'markdown' | 'json';
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @license
|
|
30
|
+
*
|
|
31
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
32
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
33
|
+
*/
|
|
34
|
+
/**
|
|
35
|
+
* One mark on a {@link WrEditorJson} node — `strong`, `em`, `underline`,
|
|
36
|
+
* `strike`, `code`, or `link` with `{ href, title }`.
|
|
37
|
+
*/
|
|
38
|
+
interface WrEditorMarkJson {
|
|
39
|
+
readonly type: string;
|
|
40
|
+
readonly attrs?: Readonly<Record<string, unknown>>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The editor's document as plain data — the shape ProseMirror's `toJSON()`
|
|
44
|
+
* writes, declared here so no ProseMirror type reaches the public API.
|
|
45
|
+
*
|
|
46
|
+
* Nodes: `doc`, `paragraph`, `heading` (`level` 1–3), `blockquote`,
|
|
47
|
+
* `code_block` (`language`), `horizontal_rule`, `bullet_list` (`tight`),
|
|
48
|
+
* `ordered_list` (`order`, `tight`), `list_item` (`checked`: `true`, `false`
|
|
49
|
+
* or `null` for an ordinary item), `hard_break`, `image` (`src`, `alt`,
|
|
50
|
+
* `title`), `table`, `table_row`, `table_header` / `table_cell` (`align`) and
|
|
51
|
+
* `text`.
|
|
52
|
+
*
|
|
53
|
+
* A value bound in `json` format is VALIDATED, not trusted: an unknown node or
|
|
54
|
+
* mark, an attribute outside its allowed set, a content rule broken, or a link
|
|
55
|
+
* or image whose URL `safeMarkdownUrl` refuses, and the whole value is refused —
|
|
56
|
+
* the editor keeps what it had and warns in dev mode.
|
|
57
|
+
*/
|
|
58
|
+
interface WrEditorJson {
|
|
59
|
+
readonly type: string;
|
|
60
|
+
readonly attrs?: Readonly<Record<string, unknown>>;
|
|
61
|
+
readonly content?: readonly WrEditorJson[];
|
|
62
|
+
readonly marks?: readonly WrEditorMarkJson[];
|
|
63
|
+
readonly text?: string;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* @license
|
|
68
|
+
*
|
|
69
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
70
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
71
|
+
*/
|
|
72
|
+
/**
|
|
73
|
+
* One entry of `<wr-editor>`'s `toolbar` input.
|
|
74
|
+
*
|
|
75
|
+
* - Marks: `bold`, `italic`, `underline` (absent in `markdown` format, which
|
|
76
|
+
* cannot express it), `strike`, `code`.
|
|
77
|
+
* - Blocks: `paragraph`, `heading1`, `heading2`, `heading3`, `bulletList`,
|
|
78
|
+
* `orderedList`, `blockquote`, `codeBlock`.
|
|
79
|
+
* - Inserts: `link` (opens the link panel), `horizontalRule`.
|
|
80
|
+
* - History: `undo`, `redo`.
|
|
81
|
+
* - `'|'` draws a separator between two groups.
|
|
82
|
+
*/
|
|
83
|
+
type WrEditorTool = 'bold' | 'italic' | 'underline' | 'strike' | 'code' | 'paragraph' | 'heading1' | 'heading2' | 'heading3' | 'bulletList' | 'orderedList' | 'blockquote' | 'codeBlock' | 'link' | 'horizontalRule' | 'undo' | 'redo' | '|';
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* @license
|
|
87
|
+
*
|
|
88
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
89
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
90
|
+
*/
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* The `value` model of `<wr-editor>`: a string in `html` and `markdown` format,
|
|
94
|
+
* a {@link WrEditorJson} tree in `json` format.
|
|
95
|
+
*
|
|
96
|
+
* An empty document is written as `''` in the two string formats and as `null`
|
|
97
|
+
* in `json`, so a Signal Forms `required()` rule reports an empty editor as
|
|
98
|
+
* empty — `'<p></p>'` would be a non-empty string. `null` and `''` are both
|
|
99
|
+
* read as an empty document in every format.
|
|
100
|
+
*/
|
|
101
|
+
type WrEditorValue = string | WrEditorJson | null;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* @license
|
|
105
|
+
*
|
|
106
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
107
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
108
|
+
*/
|
|
109
|
+
|
|
110
|
+
/** Every tool but the separator. */
|
|
111
|
+
type WrEditorCommandTool = Exclude<WrEditorTool, '|'>;
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* The field the link panel's URL input belongs to — provided as `WR_FORM_FIELD`
|
|
115
|
+
* for the editor's whole subtree.
|
|
116
|
+
*
|
|
117
|
+
* It does two jobs at once. It is the SHIELD every composite control needs: the
|
|
118
|
+
* editor is the control a `<wr-form-field>` wraps, and without a nearer provider
|
|
119
|
+
* the `[wrInput]` in its link panel would adopt the outer field's id, take over
|
|
120
|
+
* its label and announce its error as its own. And it is the input's own field:
|
|
121
|
+
* `[wrInput]` binds `id`, `aria-invalid` and `aria-describedby` from whatever
|
|
122
|
+
* field it finds, so answering here is how a refused URL reaches a screen reader
|
|
123
|
+
* without binding attributes the directive already owns.
|
|
124
|
+
*
|
|
125
|
+
* @internal
|
|
126
|
+
*/
|
|
127
|
+
declare class WrEditorLinkField implements WrFormFieldContext {
|
|
128
|
+
private readonly id;
|
|
129
|
+
/** The URL just submitted was refused by the link policy. */
|
|
130
|
+
readonly invalid: _angular_core.WritableSignal<boolean>;
|
|
131
|
+
readonly controlId: _angular_core.Signal<string>;
|
|
132
|
+
readonly errorId: string;
|
|
133
|
+
readonly panelId: string;
|
|
134
|
+
readonly errorKeys: _angular_core.Signal<readonly string[]>;
|
|
135
|
+
readonly describedBy: _angular_core.Signal<string | null>;
|
|
136
|
+
readonly labelId: _angular_core.Signal<string | null>;
|
|
137
|
+
adoptControlId(): void;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/** One toolbar button's state at the current selection. */
|
|
141
|
+
interface WrToolState {
|
|
142
|
+
readonly tool: WrEditorCommandTool;
|
|
143
|
+
readonly active: boolean;
|
|
144
|
+
readonly available: boolean;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Rich-text editor on ProseMirror, with a toolbar, a link panel, keyboard
|
|
148
|
+
* shortcuts and markdown-style block shortcuts (`# `, `> `, `- `, `1. `,
|
|
149
|
+
* ` ``` `).
|
|
150
|
+
*
|
|
151
|
+
* A signal-forms native control: it implements `FormValueControl<WrEditorValue>`,
|
|
152
|
+
* so `[formField]` binds straight to its `value` model — no
|
|
153
|
+
* `ControlValueAccessor` in between. `[(value)]` works standalone.
|
|
154
|
+
*
|
|
155
|
+
* The value is an HTML string, a markdown string or the document as JSON, chosen
|
|
156
|
+
* by `format`. Whatever arrives is treated as untrusted and rebuilt from the
|
|
157
|
+
* editor's schema, so only what the schema allows survives, and links and images
|
|
158
|
+
* go through `safeMarkdownUrl` in all three. A value the editor cannot read is
|
|
159
|
+
* refused — the document it already shows is kept, a warning names the reason in
|
|
160
|
+
* dev mode, and nothing is written back. Until a value it CAN read arrives the
|
|
161
|
+
* editor is read-only and carries `wr-editor--refused`: the model still holds the
|
|
162
|
+
* refused value, and an edit would write the document on screen over it.
|
|
163
|
+
*
|
|
164
|
+
* Headings stop at three levels: an h4–h6 read from HTML or markdown becomes an
|
|
165
|
+
* h3 rather than a paragraph. Underline exists in `html` and `json` only —
|
|
166
|
+
* markdown cannot spell it, so in that format the tool, the shortcut and the mark
|
|
167
|
+
* itself are absent.
|
|
168
|
+
*
|
|
169
|
+
* ProseMirror is an OPTIONAL peer dependency: only an app that imports
|
|
170
|
+
* `ngwr/editor` installs `prosemirror-model`, `-state`, `-view`, `-commands`,
|
|
171
|
+
* `-keymap`, `-history`, `-schema-list` and `-inputrules`.
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* ```html
|
|
175
|
+
* <!-- signal forms -->
|
|
176
|
+
* <wr-editor format="markdown" placeholder="Describe the change" [formField]="form.body" />
|
|
177
|
+
*
|
|
178
|
+
* <!-- standalone two-way binding -->
|
|
179
|
+
* <wr-editor [(value)]="html" />
|
|
180
|
+
* ```
|
|
181
|
+
*
|
|
182
|
+
* @see https://ngwr.dev/reference/components/editor
|
|
183
|
+
*/
|
|
184
|
+
declare class WrEditor implements FormValueControl<WrEditorValue> {
|
|
185
|
+
/**
|
|
186
|
+
* The document. A string in `html` and `markdown` format, a
|
|
187
|
+
* {@link WrEditorJson} tree in `json`; `''` / `null` when nothing is written.
|
|
188
|
+
* Bound by `[formField]`, or two-way via `[(value)]`.
|
|
189
|
+
*/
|
|
190
|
+
readonly value: _angular_core.ModelSignal<WrEditorValue>;
|
|
191
|
+
/** Emitted on blur so a bound field can mark itself touched. */
|
|
192
|
+
readonly touch: _angular_core.OutputEmitterRef<void>;
|
|
193
|
+
/**
|
|
194
|
+
* Disable the editor and its toolbar. Bound automatically from the field's
|
|
195
|
+
* disabled state when used with `[formField]`.
|
|
196
|
+
*
|
|
197
|
+
* @default false
|
|
198
|
+
*/
|
|
199
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, any>;
|
|
200
|
+
/**
|
|
201
|
+
* Refuse edits while the text stays focusable, selectable and announced.
|
|
202
|
+
* Bound automatically from the field's readonly state when used with
|
|
203
|
+
* `[formField]`.
|
|
204
|
+
*
|
|
205
|
+
* The surface keeps its tab stop and reports `aria-readonly`; typing, paste,
|
|
206
|
+
* drop, the shortcuts and every toolbar command are refused. The toolbar goes
|
|
207
|
+
* inert, since none of its tools can apply.
|
|
208
|
+
*
|
|
209
|
+
* @default false
|
|
210
|
+
*/
|
|
211
|
+
readonly readonly: _angular_core.InputSignalWithTransform<boolean, any>;
|
|
212
|
+
/**
|
|
213
|
+
* Hint shown while the document is empty, and exposed as `aria-placeholder`.
|
|
214
|
+
*
|
|
215
|
+
* @default ''
|
|
216
|
+
*/
|
|
217
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
218
|
+
/**
|
|
219
|
+
* Accessible name of the text surface. Falls back to the surrounding
|
|
220
|
+
* `<wr-form-field>`'s label, then to `editor.label`.
|
|
221
|
+
*/
|
|
222
|
+
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
223
|
+
/**
|
|
224
|
+
* What `value` holds — see {@link WrEditorFormat}. Unset, it falls back to
|
|
225
|
+
* `provideWrConfig({ editor: { format } })`. Changing it re-reads `value` in
|
|
226
|
+
* the new format.
|
|
227
|
+
*
|
|
228
|
+
* @default 'html'
|
|
229
|
+
*/
|
|
230
|
+
readonly format: _angular_core.InputSignal<WrEditorFormat | null>;
|
|
231
|
+
protected readonly resolvedFormat: Signal<"html" | "markdown" | "json">;
|
|
232
|
+
/**
|
|
233
|
+
* The toolbar's tools, in order, with `'|'` between groups; `false` hides it.
|
|
234
|
+
* `underline` is left out in `markdown` format, which cannot store it.
|
|
235
|
+
*
|
|
236
|
+
* @default WR_EDITOR_TOOLBAR
|
|
237
|
+
*/
|
|
238
|
+
readonly toolbar: _angular_core.InputSignal<false | readonly WrEditorTool[]>;
|
|
239
|
+
private readonly document;
|
|
240
|
+
private readonly injector;
|
|
241
|
+
private readonly destroyRef;
|
|
242
|
+
private readonly host;
|
|
243
|
+
private readonly platform;
|
|
244
|
+
private readonly isBrowser;
|
|
245
|
+
/**
|
|
246
|
+
* Ambient reading direction, read by the toolbar's arrow keys. Optional so a
|
|
247
|
+
* bare `TestBed` needs no provider; `null` means LTR.
|
|
248
|
+
*/
|
|
249
|
+
private readonly dir;
|
|
250
|
+
/** @internal */
|
|
251
|
+
protected readonly linkField: WrEditorLinkField;
|
|
252
|
+
/** The surrounding `<wr-form-field>`'s error state, read past the editor's own shield. @internal */
|
|
253
|
+
protected readonly fieldAria: ngwr_form.WrFormFieldAria;
|
|
254
|
+
protected readonly resolvedAriaLabel: Signal<string>;
|
|
255
|
+
/**
|
|
256
|
+
* The field's label names the surface, when there is one — a
|
|
257
|
+
* `contenteditable` is not labelable, so the field's `<label for>` cannot
|
|
258
|
+
* reach it. An explicit `ariaLabel` still wins over both.
|
|
259
|
+
*/
|
|
260
|
+
protected readonly labelledBy: Signal<string | null>;
|
|
261
|
+
/** `null` while the field's label carries the name. */
|
|
262
|
+
protected readonly accessibleName: Signal<string | null>;
|
|
263
|
+
protected readonly surfaceId: string;
|
|
264
|
+
/** ProseMirror owns the surface from here on; until then the preview stands in. */
|
|
265
|
+
protected readonly mounted: _angular_core.WritableSignal<boolean>;
|
|
266
|
+
protected readonly focused: _angular_core.WritableSignal<boolean>;
|
|
267
|
+
private readonly editorState;
|
|
268
|
+
/**
|
|
269
|
+
* Whether `value` holds something the editor could not read, so the document
|
|
270
|
+
* on screen is not the one the model holds — empty at mount, or the previous
|
|
271
|
+
* record after a write. Edits are refused until a readable value arrives:
|
|
272
|
+
* the first keystroke would otherwise replace the stored value with whatever
|
|
273
|
+
* is on screen, and the only sign of it was a dev-mode warning.
|
|
274
|
+
*/
|
|
275
|
+
private readonly refused;
|
|
276
|
+
/** Read-only by the input, or because the value was refused. @internal */
|
|
277
|
+
protected readonly locked: Signal<boolean>;
|
|
278
|
+
/** Apple keyboards name the modifier ⌘. Read in the browser only — see `mount()`. */
|
|
279
|
+
private readonly apple;
|
|
280
|
+
private readonly surface;
|
|
281
|
+
private readonly toolButtons;
|
|
282
|
+
private readonly linkPopover;
|
|
283
|
+
private view;
|
|
284
|
+
/** The format the live document was read in, which is the format it is written in. */
|
|
285
|
+
private viewFormat;
|
|
286
|
+
/**
|
|
287
|
+
* The value the live document was last read from or written as. A write from
|
|
288
|
+
* outside that equals it is the document already on screen — an echo of the
|
|
289
|
+
* editor's own emit, or a consumer writing back what it was handed — and must
|
|
290
|
+
* neither re-parse nor reset the selection.
|
|
291
|
+
*/
|
|
292
|
+
private lastSerialized;
|
|
293
|
+
private linkToSurface;
|
|
294
|
+
protected readonly toolbarLabel: Signal<string>;
|
|
295
|
+
protected readonly linkUrlLabel: Signal<string>;
|
|
296
|
+
protected readonly linkApplyLabel: Signal<string>;
|
|
297
|
+
protected readonly linkRemoveLabel: Signal<string>;
|
|
298
|
+
protected readonly linkInvalidLabel: Signal<string>;
|
|
299
|
+
protected readonly taskDoneLabel: Signal<string>;
|
|
300
|
+
protected readonly taskTodoLabel: Signal<string>;
|
|
301
|
+
private readonly keyCtrl;
|
|
302
|
+
private readonly keyShift;
|
|
303
|
+
private readonly keyAlt;
|
|
304
|
+
private readonly headingLabel;
|
|
305
|
+
private readonly shortcutLabel;
|
|
306
|
+
private readonly toolLabels;
|
|
307
|
+
/**
|
|
308
|
+
* The bound tools as drawn: underline dropped where the format cannot store
|
|
309
|
+
* it, and separators only BETWEEN two groups — a leading, trailing or doubled
|
|
310
|
+
* one would be left behind by that filter or by a hand-built list.
|
|
311
|
+
*/
|
|
312
|
+
protected readonly tools: Signal<readonly WrEditorTool[]>;
|
|
313
|
+
/** The tools that are buttons, in order — what the roving tab stop moves over. */
|
|
314
|
+
private readonly buttons;
|
|
315
|
+
/** Each drawn entry's index among the buttons, `-1` for a separator. @internal */
|
|
316
|
+
protected readonly buttonIndex: Signal<number[]>;
|
|
317
|
+
private readonly commands;
|
|
318
|
+
/** Every button's pressed and available state at the current selection. @internal */
|
|
319
|
+
protected readonly toolStates: Signal<ReadonlyMap<WrEditorCommandTool, WrToolState>>;
|
|
320
|
+
private readonly rovingIndex;
|
|
321
|
+
/**
|
|
322
|
+
* The one button in the tab order. It follows the user, and moves off a tool
|
|
323
|
+
* that stopped applying so the toolbar never loses its tab stop — unless NO
|
|
324
|
+
* tool applies (read-only, disabled), where it stays put, because there is
|
|
325
|
+
* nothing to reach.
|
|
326
|
+
*/
|
|
327
|
+
private readonly tabStop;
|
|
328
|
+
/** Whether the live document is empty — pre-mount, whether the value is. */
|
|
329
|
+
private readonly empty;
|
|
330
|
+
/** The task-item words, handed to ProseMirror through its node views. */
|
|
331
|
+
private readonly nodeViews;
|
|
332
|
+
protected readonly ariaPlaceholder: Signal<string | null>;
|
|
333
|
+
protected readonly linkDraft: _angular_core.WritableSignal<string>;
|
|
334
|
+
/** Whether the selection is in a link — what the panel's remove button needs. */
|
|
335
|
+
protected readonly linkActive: Signal<boolean>;
|
|
336
|
+
/**
|
|
337
|
+
* The value rendered by Angular until ProseMirror takes over: on the server,
|
|
338
|
+
* and for the first browser frame. Read from the doc JSON, so it shows exactly
|
|
339
|
+
* what the schema kept — the same sanitised document the editor will mount.
|
|
340
|
+
*/
|
|
341
|
+
protected readonly preview: Signal<WrEditorJson | null>;
|
|
342
|
+
protected readonly classes: Signal<string>;
|
|
343
|
+
constructor();
|
|
344
|
+
/** Focus the text surface — what Signal Forms calls to focus this control. */
|
|
345
|
+
focus(options?: FocusOptions): void;
|
|
346
|
+
protected label(tool: WrEditorCommandTool): string;
|
|
347
|
+
protected icon(tool: WrEditorCommandTool): readonly string[];
|
|
348
|
+
protected isToggle(tool: WrEditorCommandTool): boolean;
|
|
349
|
+
/** The tooltip: the label, with the shortcut when the tool has one. */
|
|
350
|
+
protected tooltip(tool: WrEditorCommandTool): string;
|
|
351
|
+
/** `aria-keyshortcuts` — key names from the ARIA spec, never localised. */
|
|
352
|
+
protected keyShortcuts(tool: WrEditorCommandTool): string | null;
|
|
353
|
+
protected state(tool: WrEditorCommandTool): WrToolState | undefined;
|
|
354
|
+
/**
|
|
355
|
+
* A toolbar button was activated.
|
|
356
|
+
*
|
|
357
|
+
* By pointer, focus never left the text (`mousedown` is cancelled), so the
|
|
358
|
+
* caret is put back where the command left it. By keyboard, focus stays on the
|
|
359
|
+
* button, as the toolbar pattern asks — unless the tool no longer applies,
|
|
360
|
+
* which disables it: a disabled button drops its focus on `<body>`, so the text
|
|
361
|
+
* takes it first.
|
|
362
|
+
*/
|
|
363
|
+
protected onToolClick(tool: WrEditorCommandTool, event: MouseEvent): void;
|
|
364
|
+
protected onToolFocus(index: number): void;
|
|
365
|
+
/** The APG toolbar keys: the arrows rove and wrap, Home and End jump. */
|
|
366
|
+
protected onToolbarKeydown(event: KeyboardEvent): void;
|
|
367
|
+
/** `touch` once focus leaves the whole control — not when it moves between its own parts. */
|
|
368
|
+
protected onFocusOut(event: FocusEvent): void;
|
|
369
|
+
protected onLinkOpened(): void;
|
|
370
|
+
protected onLinkClosed(): void;
|
|
371
|
+
protected onLinkInput(event: Event): void;
|
|
372
|
+
protected applyLink(event: Event): void;
|
|
373
|
+
protected removeLink(): void;
|
|
374
|
+
protected nodesOf(raw: unknown): readonly WrEditorJson[];
|
|
375
|
+
protected nodeOf(raw: unknown): WrEditorJson;
|
|
376
|
+
protected markAt(node: WrEditorJson, depth: number): WrEditorMarkJson | null;
|
|
377
|
+
protected attr(node: WrEditorJson | WrEditorMarkJson, name: string): unknown;
|
|
378
|
+
protected text(node: WrEditorJson | WrEditorMarkJson, name: string): string | null;
|
|
379
|
+
protected textOf(node: WrEditorJson): string;
|
|
380
|
+
/** Whether an edit may happen at all — not while read-only, disabled or refused. */
|
|
381
|
+
private canEdit;
|
|
382
|
+
private mount;
|
|
383
|
+
private createState;
|
|
384
|
+
private dispatch;
|
|
385
|
+
private emit;
|
|
386
|
+
/**
|
|
387
|
+
* Bring an outside write into the view.
|
|
388
|
+
*
|
|
389
|
+
* Compared as DOCUMENTS, never as strings: `<b>` comes back as `<strong>`, so a
|
|
390
|
+
* normalised string differs from what the consumer wrote while the documents
|
|
391
|
+
* are equal — and an equal document is left alone, selection and history
|
|
392
|
+
* included. A different one replaces the state wholesale, history with it,
|
|
393
|
+
* which is right for a form reset or a server load: undo back into content the
|
|
394
|
+
* app replaced would be wrong. The normalised form is never written back —
|
|
395
|
+
* that would mark the field dirty on load. A write that arrives mid-composition
|
|
396
|
+
* (IME) replaces the composition too: the model is the source of truth.
|
|
397
|
+
*/
|
|
398
|
+
private sync;
|
|
399
|
+
/**
|
|
400
|
+
* A new format whose value could not be read: keep the document, moved into
|
|
401
|
+
* the new format's schema — markdown's lacks underline, so that mark is
|
|
402
|
+
* dropped on the way. What is written from here on is in the new format.
|
|
403
|
+
*/
|
|
404
|
+
private switchFormat;
|
|
405
|
+
private replaceState;
|
|
406
|
+
private placeholderDecorations;
|
|
407
|
+
/**
|
|
408
|
+
* Mod-K opens the link panel. Its propagation stops here: `<wr-command-palette>`
|
|
409
|
+
* binds the same chord on the document, and `WrHotkey` deliberately does not
|
|
410
|
+
* skip an event another listener already handled.
|
|
411
|
+
*/
|
|
412
|
+
private onSurfaceKeydown;
|
|
413
|
+
private focusLinkInput;
|
|
414
|
+
/**
|
|
415
|
+
* Focus left the link panel for somewhere outside the control — Tab, Shift+Tab,
|
|
416
|
+
* a click elsewhere. The panel is not a focus trap, and left open it stays
|
|
417
|
+
* anchored to a control the user has left, whose next close would then pull
|
|
418
|
+
* focus back into the text. Closed with focus left where it went.
|
|
419
|
+
*/
|
|
420
|
+
private leaveLinkPanel;
|
|
421
|
+
/** Whether a node is part of this control: the host, or its link panel. */
|
|
422
|
+
private withinControl;
|
|
423
|
+
private inLinkPanel;
|
|
424
|
+
private warnRefused;
|
|
425
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrEditor, never>;
|
|
426
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrEditor, "wr-editor", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "toolbar": { "alias": "toolbar"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
/**
|
|
430
|
+
* @license
|
|
431
|
+
*
|
|
432
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
433
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
434
|
+
*/
|
|
435
|
+
|
|
436
|
+
/**
|
|
437
|
+
* The toolbar `<wr-editor>` draws when `toolbar` is not bound — every tool, in
|
|
438
|
+
* five groups. Exported so a toolbar can be built from it rather than retyped:
|
|
439
|
+
*
|
|
440
|
+
* ```ts
|
|
441
|
+
* readonly tools = WR_EDITOR_TOOLBAR.filter(tool => tool !== 'code');
|
|
442
|
+
* ```
|
|
443
|
+
*
|
|
444
|
+
* `underline` is dropped in `markdown` format whether it is listed or not.
|
|
445
|
+
*/
|
|
446
|
+
declare const WR_EDITOR_TOOLBAR: readonly WrEditorTool[];
|
|
447
|
+
|
|
448
|
+
export { WR_EDITOR_TOOLBAR, WrEditor };
|
|
449
|
+
export type { WrEditorFormat, WrEditorJson, WrEditorMarkJson, WrEditorTool, WrEditorValue };
|
|
@@ -126,6 +126,11 @@ interface DayCell {
|
|
|
126
126
|
interface MonthWeek {
|
|
127
127
|
readonly key: string;
|
|
128
128
|
readonly days: readonly DayCell[];
|
|
129
|
+
/**
|
|
130
|
+
* How many lanes the row's chips fill. The chips are absolutely positioned,
|
|
131
|
+
* so this is the only way the row's height can know about them.
|
|
132
|
+
*/
|
|
133
|
+
readonly lanes: number;
|
|
129
134
|
}
|
|
130
135
|
interface TimeCell {
|
|
131
136
|
readonly key: string;
|
|
@@ -291,6 +296,8 @@ declare class WrEventCalendar {
|
|
|
291
296
|
bands: readonly BandChip[];
|
|
292
297
|
}[]>;
|
|
293
298
|
protected readonly hasAllDay: _angular_core.Signal<boolean>;
|
|
299
|
+
/** Lanes the all-day band fills — it has no `maxLanes` cap, so its row has to grow instead. */
|
|
300
|
+
protected readonly allDayLanes: _angular_core.Signal<number>;
|
|
294
301
|
protected readonly rows: _angular_core.Signal<readonly TimeRow[]>;
|
|
295
302
|
protected step(direction: -1 | 1): void;
|
|
296
303
|
protected goToday(): void;
|
|
@@ -323,6 +330,7 @@ declare class WrEventCalendar {
|
|
|
323
330
|
* the cell can say how much it is hiding.
|
|
324
331
|
*/
|
|
325
332
|
private bandLayout;
|
|
333
|
+
private laneCount;
|
|
326
334
|
/**
|
|
327
335
|
* Column layout inside one day: events that overlap in time share the width.
|
|
328
336
|
* Clusters are built by a running high-water mark — a new cluster starts the
|
package/types/ngwr-form.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { InjectionToken, Signal, EnvironmentProviders } from '@angular/core';
|
|
3
|
-
import
|
|
4
|
-
import { NgControl } from '@angular/forms';
|
|
2
|
+
import { InjectionToken, Signal, AfterContentChecked, EnvironmentProviders } from '@angular/core';
|
|
3
|
+
import { NgControl, ValidationErrors } from '@angular/forms';
|
|
5
4
|
import * as _angular_forms_signals from '@angular/forms/signals';
|
|
6
5
|
|
|
7
6
|
/**
|
|
@@ -153,7 +152,7 @@ declare class WrFormError {
|
|
|
153
152
|
*
|
|
154
153
|
* @see https://ngwr.dev/reference/components/form-field
|
|
155
154
|
*/
|
|
156
|
-
declare class WrFormField implements WrFormFieldContext {
|
|
155
|
+
declare class WrFormField implements WrFormFieldContext, AfterContentChecked {
|
|
157
156
|
/** Label text shown above the control. */
|
|
158
157
|
readonly label: _angular_core.InputSignal<string>;
|
|
159
158
|
/** Hint text shown below the control. Hidden when an error is visible. */
|
|
@@ -205,10 +204,41 @@ declare class WrFormField implements WrFormFieldContext {
|
|
|
205
204
|
* Angular does expose, so the computed depends on this counter instead.
|
|
206
205
|
* Signal Forms needs none of this — its interop getters read live signals —
|
|
207
206
|
* and harmlessly contributes no events.
|
|
207
|
+
*
|
|
208
|
+
* Events are not the whole story, which is what {@link ngAfterContentChecked} is for.
|
|
208
209
|
*/
|
|
209
210
|
private readonly revision;
|
|
211
|
+
/** What the last check saw on a reactive control — see {@link ngAfterContentChecked}. */
|
|
212
|
+
private seen;
|
|
213
|
+
/**
|
|
214
|
+
* Catch the changes a reactive control makes WITHOUT an event.
|
|
215
|
+
*
|
|
216
|
+
* `updateValueAndValidity({ emitEvent: false })`, `markAsTouched({ emitEvent: false })`
|
|
217
|
+
* and their siblings change `errors`, `touched` and `dirty` and emit nothing, so the
|
|
218
|
+
* subscription above never hears them and the message stays whatever it was. That is
|
|
219
|
+
* not only an app's own silent write: Angular reports a custom control's PARSE errors
|
|
220
|
+
* to a `FormControl` exactly that way — a validator re-run with `emitEvent: false` —
|
|
221
|
+
* so a `wr-date-picker` refusing typed text made its control invalid while the field
|
|
222
|
+
* went on showing the message from before, or nothing — and a later pass of change
|
|
223
|
+
* detection did not help, because the message was memoised on a revision only events
|
|
224
|
+
* move.
|
|
225
|
+
*
|
|
226
|
+
* This runs whenever the view holding the field is checked, which is when the page
|
|
227
|
+
* around the control changes — for the date picker, the moment its refusal turns
|
|
228
|
+
* visible. It is `ngAfterContentChecked` and not `ngDoCheck` for an ordering reason
|
|
229
|
+
* read out of Angular's `refreshView`: check hooks run BEFORE the view's effects, and
|
|
230
|
+
* Angular's parse-error validator is re-run from an effect in that same view, so a
|
|
231
|
+
* `DoCheck` saw the errors one pass late and lost the message whenever nothing
|
|
232
|
+
* refreshed the view again. Content-checked hooks run after those effects and before
|
|
233
|
+
* the field's own bindings. Only a change moves the revision.
|
|
234
|
+
*
|
|
235
|
+
* Signal Forms' interop control is skipped: it is reactive already, and its `errors`
|
|
236
|
+
* getter builds a fresh object on every read, which a reference check would call a
|
|
237
|
+
* change on every pass — and re-resolve every message with it.
|
|
238
|
+
*/
|
|
239
|
+
ngAfterContentChecked(): void;
|
|
210
240
|
constructor();
|
|
211
|
-
protected readonly errors: _angular_core.Signal<
|
|
241
|
+
protected readonly errors: _angular_core.Signal<ValidationErrors | null>;
|
|
212
242
|
protected readonly hasError: _angular_core.Signal<boolean>;
|
|
213
243
|
/** @internal Read by the projected `<wr-form-error>` children to decide which of them renders. */
|
|
214
244
|
readonly errorKeys: _angular_core.Signal<readonly string[]>;
|
package/types/ngwr-gauge.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as ngwr_popover from 'ngwr/popover';
|
|
1
2
|
import * as _angular_core from '@angular/core';
|
|
2
3
|
|
|
3
4
|
/**
|
|
@@ -33,6 +34,12 @@ declare class WrGauge {
|
|
|
33
34
|
/** Show the value text in the center. @default true */
|
|
34
35
|
readonly showValue: _angular_core.InputSignalWithTransform<boolean, any>;
|
|
35
36
|
readonly suffix: _angular_core.InputSignal<string>;
|
|
37
|
+
/**
|
|
38
|
+
* Show a tooltip with the reading on hover, named by `ariaLabel` when one is
|
|
39
|
+
* given. Pointer only — the meter announces the same reading. @default true
|
|
40
|
+
*/
|
|
41
|
+
readonly tooltip: _angular_core.InputSignalWithTransform<boolean, any>;
|
|
42
|
+
private readonly surface;
|
|
36
43
|
protected readonly cx = 50;
|
|
37
44
|
protected readonly cy = 50;
|
|
38
45
|
protected readonly radius: _angular_core.Signal<number>;
|
|
@@ -47,8 +54,20 @@ declare class WrGauge {
|
|
|
47
54
|
protected readonly trackPath: _angular_core.Signal<string>;
|
|
48
55
|
protected readonly valuePath: _angular_core.Signal<string>;
|
|
49
56
|
protected readonly viewBox = "0 0 100 56";
|
|
57
|
+
/**
|
|
58
|
+
* The reading as the meter announces it — `aria-valuetext`, the number plus the
|
|
59
|
+
* suffix — so the tooltip, the printed value and a screen reader all say one
|
|
60
|
+
* thing.
|
|
61
|
+
*/
|
|
62
|
+
protected readonly valueText: _angular_core.Signal<string>;
|
|
63
|
+
/**
|
|
64
|
+
* One tooltip, pointing at the top of the dial. The whole gauge is one section.
|
|
65
|
+
* The label is the `ariaLabel` input and not the catalog fallback, which names
|
|
66
|
+
* the kind of widget rather than the reading.
|
|
67
|
+
*/
|
|
68
|
+
protected readonly tip: ngwr_popover.WrChartTooltip;
|
|
50
69
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrGauge, never>;
|
|
51
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrGauge, "wr-gauge", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "trackColor": { "alias": "trackColor"; "required": false; "isSignal": true; }; "valueColor": { "alias": "valueColor"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
70
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrGauge, "wr-gauge", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "trackColor": { "alias": "trackColor"; "required": false; "isSignal": true; }; "valueColor": { "alias": "valueColor"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
52
71
|
}
|
|
53
72
|
|
|
54
73
|
export { WrGauge };
|
|
@@ -124,6 +124,13 @@ declare class WrInputNumber implements FormValueControl<number | null> {
|
|
|
124
124
|
protected readonly interactive: _angular_core.Signal<boolean>;
|
|
125
125
|
protected readonly atMin: _angular_core.Signal<boolean>;
|
|
126
126
|
protected readonly atMax: _angular_core.Signal<boolean>;
|
|
127
|
+
/**
|
|
128
|
+
* The size and pill modifiers mirror what is bound down to the chrome, because
|
|
129
|
+
* the stepper column belongs to neither half of it: the field carries
|
|
130
|
+
* `wr-input--<size>`, the column is its SIBLING, and the group carries no size
|
|
131
|
+
* at all. Without a modifier of its own the column drew one 10x6 chevron at
|
|
132
|
+
* every size and ran its dividers into a pill's rounded end.
|
|
133
|
+
*/
|
|
127
134
|
protected readonly classes: _angular_core.Signal<string>;
|
|
128
135
|
/**
|
|
129
136
|
* Fraction digits the stepper rounds its arithmetic to when `decimals` says
|
|
@@ -44,6 +44,12 @@ declare class WrLineChart {
|
|
|
44
44
|
readonly showLegend: _angular_core.InputSignalWithTransform<boolean, any>;
|
|
45
45
|
/** Show dots at each data point. @default true */
|
|
46
46
|
readonly showDots: _angular_core.InputSignalWithTransform<boolean, any>;
|
|
47
|
+
/**
|
|
48
|
+
* Show the hover readout: the crosshair, the point markers and the tooltip. Off
|
|
49
|
+
* drops all three, since a crosshair with no values beside it points at nothing.
|
|
50
|
+
* @default true
|
|
51
|
+
*/
|
|
52
|
+
readonly tooltip: _angular_core.InputSignalWithTransform<boolean, any>;
|
|
47
53
|
protected readonly vbW = 600;
|
|
48
54
|
protected readonly vbH = 300;
|
|
49
55
|
protected readonly padding: {
|
|
@@ -55,6 +61,8 @@ declare class WrLineChart {
|
|
|
55
61
|
private readonly host;
|
|
56
62
|
/** Hovered point index (across all series) — null when no hover. */
|
|
57
63
|
protected readonly hoveredIndex: _angular_core.WritableSignal<number | null>;
|
|
64
|
+
/** The hovered index while the readout is on, so turning `tooltip` off mid-hover clears it. */
|
|
65
|
+
protected readonly activeIndex: _angular_core.Signal<number | null>;
|
|
58
66
|
/**
|
|
59
67
|
* A dash pattern per series, so the lines are told apart by SHAPE and not
|
|
60
68
|
* only by hue.
|
|
@@ -140,7 +148,7 @@ declare class WrLineChart {
|
|
|
140
148
|
protected readonly viewBox: _angular_core.Signal<string>;
|
|
141
149
|
protected readonly hostEl: HTMLElement;
|
|
142
150
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrLineChart, never>;
|
|
143
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrLineChart, "wr-line-chart", never, { "series": { "alias": "series"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "xLabels": { "alias": "xLabels"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "showDots": { "alias": "showDots"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
151
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrLineChart, "wr-line-chart", never, { "series": { "alias": "series"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "xLabels": { "alias": "xLabels"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "showDots": { "alias": "showDots"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
144
152
|
}
|
|
145
153
|
|
|
146
154
|
export { WrLineChart };
|