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,378 @@
|
|
|
1
|
+
import { BaseHarnessFilters, ComponentHarness, HarnessPredicate, TestKey, ModifierKeys } from '@angular/cdk/testing';
|
|
2
|
+
import { WrButtonHarness } from 'ngwr/button/testing';
|
|
3
|
+
import { WrPopoverHarness } from 'ngwr/popover/testing';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @license
|
|
7
|
+
*
|
|
8
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
9
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/** Narrows which `<wr-editor>` a harness query matches. */
|
|
13
|
+
interface WrEditorHarnessFilters extends BaseHarnessFilters {
|
|
14
|
+
/**
|
|
15
|
+
* Match the text surface's accessible name — its `ariaLabel`, the surrounding
|
|
16
|
+
* `<wr-form-field>`'s label, or the catalog default, in that order. A string is an
|
|
17
|
+
* exact match, a RegExp is tested.
|
|
18
|
+
*/
|
|
19
|
+
readonly label?: string | RegExp;
|
|
20
|
+
/**
|
|
21
|
+
* Match the text the surface DRAWS — see `WrEditorHarness.getText`, which is where
|
|
22
|
+
* the blocks are joined and the task-item words left out. A string is an exact
|
|
23
|
+
* match, a RegExp is tested.
|
|
24
|
+
*/
|
|
25
|
+
readonly text?: string | RegExp;
|
|
26
|
+
/** Match only enabled (`false`) or only disabled (`true`) editors. */
|
|
27
|
+
readonly disabled?: boolean;
|
|
28
|
+
/** Match only writable (`false`) or only read-only (`true`) editors. */
|
|
29
|
+
readonly readonly?: boolean;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @license
|
|
34
|
+
*
|
|
35
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
36
|
+
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Test harness for `<wr-editor>` — a ProseMirror text surface, the formatting
|
|
41
|
+
* toolbar above it, and the link panel one of its buttons opens.
|
|
42
|
+
*
|
|
43
|
+
* **The value is not read here, and that is the first thing to know.** The model
|
|
44
|
+
* holds an HTML string, a markdown string or a JSON tree depending on `format`, and
|
|
45
|
+
* all three are written by the editor's codec, never by the DOM. What the surface
|
|
46
|
+
* draws is ProseMirror's rendering of the document — a trailing `<br>` in an empty
|
|
47
|
+
* paragraph, a presentational box beside a task item — so a string derived from it
|
|
48
|
+
* would be a fourth format agreeing with none of the three. A spec reads the value
|
|
49
|
+
* from what it bound (`form.body().value()`, the `[(value)]` signal); this harness
|
|
50
|
+
* answers the other question, what is DRAWN ({@link getText}), and a spec on an
|
|
51
|
+
* editor should usually ask both.
|
|
52
|
+
*
|
|
53
|
+
* Four more things are refused, each because jsdom cannot answer it and a method
|
|
54
|
+
* would answer it anyway:
|
|
55
|
+
*
|
|
56
|
+
* - **Typing, character by character.** `sendKeys` dispatches key events and nothing
|
|
57
|
+
* else. In a browser the BROWSER inserts the character into the contenteditable and
|
|
58
|
+
* ProseMirror reads the mutation; jsdom inserts nothing, so a typed string would
|
|
59
|
+
* vanish while the call resolved. {@link setText} writes the surface the way the
|
|
60
|
+
* CDK defines writing a contenteditable, which ProseMirror reads as a real DOM
|
|
61
|
+
* change; {@link paste} inserts at the selection; {@link pressKey} refuses a
|
|
62
|
+
* printable character without a modifier rather than dropping it.
|
|
63
|
+
* - **A caret or a selected range.** Placing either needs a DOM selection inside a
|
|
64
|
+
* text node, which no `TestElement` call can create. {@link selectAll} is the one
|
|
65
|
+
* selection a keyboard makes without a coordinate, and it is the one offered.
|
|
66
|
+
* - **Anything measured** — the height between `--wr-editor-min-height` and
|
|
67
|
+
* `-max-height`, a scroll, how the toolbar wraps, where a tooltip lands. Every box
|
|
68
|
+
* is 0×0 without layout.
|
|
69
|
+
* - **Whether the placeholder is visible.** It is CSS `content` drawn from a data
|
|
70
|
+
* attribute, which no DOM query sees; {@link getPlaceholder} reads what is
|
|
71
|
+
* ANNOUNCED, and that is only there while the document is empty.
|
|
72
|
+
*
|
|
73
|
+
* Toolbar buttons are addressed by the name a screen reader reads — `Bold`,
|
|
74
|
+
* `Heading 2`, `Insert link` in English, the catalog's words otherwise — because the
|
|
75
|
+
* DOM carries nothing else to tell them apart, and that name is the contract anyway.
|
|
76
|
+
* {@link getTool} hands back a `WrButtonHarness`; what that harness does not read
|
|
77
|
+
* (`aria-pressed`, `aria-keyshortcuts`, the roving tab stop) is answered here.
|
|
78
|
+
*
|
|
79
|
+
* Every method reads the MOUNTED surface. ProseMirror takes it over in
|
|
80
|
+
* `afterNextRender`, which the harness's own stabilising lets run; under a server
|
|
81
|
+
* `PLATFORM_ID` it never does, and the static preview the server renders is not
|
|
82
|
+
* something this harness pretends to be the editor.
|
|
83
|
+
*
|
|
84
|
+
* **A spec under jsdom installs one stub first.** After an edit made while the
|
|
85
|
+
* surface has focus, ProseMirror scrolls the selection into view, which measures a
|
|
86
|
+
* `Range` — and jsdom's `Range` has no `getClientRects()`. The throw comes AFTER the
|
|
87
|
+
* document changed but before the model hears of it, from inside a DOM listener, so
|
|
88
|
+
* the model keeps the old value and the error surfaces only as an unhandled one. Empty
|
|
89
|
+
* boxes are the whole stub; nothing here measures anything, so nothing is lost:
|
|
90
|
+
*
|
|
91
|
+
* ```ts
|
|
92
|
+
* beforeEach(() => {
|
|
93
|
+
* Range.prototype.getClientRects = () => [] as unknown as DOMRectList;
|
|
94
|
+
* Range.prototype.getBoundingClientRect = () => new DOMRect();
|
|
95
|
+
* document.elementFromPoint = () => null;
|
|
96
|
+
* });
|
|
97
|
+
* // …and delete all three again in afterEach, so no other file inherits them.
|
|
98
|
+
* ```
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```ts
|
|
102
|
+
* const loader = TestbedHarnessEnvironment.loader(fixture);
|
|
103
|
+
* const body = await loader.getHarness(WrEditorHarness.with({ label: 'Body' }));
|
|
104
|
+
*
|
|
105
|
+
* await body.setText('Release notes');
|
|
106
|
+
* await body.selectAll();
|
|
107
|
+
* await (await body.getTool('Bold')).click();
|
|
108
|
+
*
|
|
109
|
+
* expect(await body.isToolPressed('Bold')).toBe(true);
|
|
110
|
+
* expect(host.value()).toBe('<p><strong>Release notes</strong></p>');
|
|
111
|
+
* ```
|
|
112
|
+
*
|
|
113
|
+
* @see https://ngwr.dev/guides/testing
|
|
114
|
+
*/
|
|
115
|
+
declare class WrEditorHarness extends ComponentHarness {
|
|
116
|
+
static hostSelector: string;
|
|
117
|
+
/** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */
|
|
118
|
+
static with(options?: WrEditorHarnessFilters): HarnessPredicate<WrEditorHarness>;
|
|
119
|
+
private readonly surface;
|
|
120
|
+
/**
|
|
121
|
+
* Whether ProseMirror owns the surface yet — read from the `contenteditable` it
|
|
122
|
+
* writes there, which nothing else does.
|
|
123
|
+
*
|
|
124
|
+
* `true` in any browser-platform spec by the time a harness method runs. `false`
|
|
125
|
+
* under a server `PLATFORM_ID`, where the editor is the static preview for good —
|
|
126
|
+
* and every other method here throws, rather than answer about a preview as if it
|
|
127
|
+
* were the editor.
|
|
128
|
+
*/
|
|
129
|
+
isMounted(): Promise<boolean>;
|
|
130
|
+
/**
|
|
131
|
+
* The text the surface DRAWS: every textblock (paragraph, heading, code block) in
|
|
132
|
+
* document order, each trimmed, joined with a newline.
|
|
133
|
+
*
|
|
134
|
+
* Joined per textblock rather than read in one go, because a single text read of the
|
|
135
|
+
* surface glues two paragraphs into one word — `Hello` and `world` would come back
|
|
136
|
+
* as `Helloworld`. A list item, a quote and a table cell draw their text in
|
|
137
|
+
* paragraphs too, so a two-item list reads `One\nTwo`. Left out, deliberately: a task
|
|
138
|
+
* item's `Done:` / `To do:` — screen-reader text beside the paragraph, not in it —
|
|
139
|
+
* and a hard break, which is a `<br>` and has no text. An empty document is `''`.
|
|
140
|
+
*
|
|
141
|
+
* This is the drawn half of the two questions an editor answers; the class docs say
|
|
142
|
+
* why the other half, the value, is read from the model instead.
|
|
143
|
+
*/
|
|
144
|
+
getText(): Promise<string>;
|
|
145
|
+
/**
|
|
146
|
+
* The surface's accessible name — `ariaLabel` when one is bound, else the
|
|
147
|
+
* surrounding `<wr-form-field>`'s label, else the catalog's `editor.label`.
|
|
148
|
+
*
|
|
149
|
+
* A field's label reaches the surface through `aria-labelledby`, never `<label for>`:
|
|
150
|
+
* a contenteditable is not labelable. So the reference is resolved the way assistive
|
|
151
|
+
* technology resolves it — each id's element, its text — and a reference to an
|
|
152
|
+
* element that is not on the page contributes nothing, which is the failure worth
|
|
153
|
+
* catching.
|
|
154
|
+
*/
|
|
155
|
+
getLabel(): Promise<string | null>;
|
|
156
|
+
/**
|
|
157
|
+
* The placeholder as announced — `aria-placeholder` — or `null` when there is none
|
|
158
|
+
* to announce.
|
|
159
|
+
*
|
|
160
|
+
* That is `null` whenever the document holds anything, not only when no
|
|
161
|
+
* `placeholder` is bound: the component publishes it only while the document is
|
|
162
|
+
* empty, the moment it is also drawn. A document holding an empty heading still
|
|
163
|
+
* counts as empty.
|
|
164
|
+
*/
|
|
165
|
+
getPlaceholder(): Promise<string | null>;
|
|
166
|
+
/**
|
|
167
|
+
* Whether the editor is disabled — the surface's `aria-disabled`.
|
|
168
|
+
*
|
|
169
|
+
* Read from the surface rather than the `wr-editor--disabled` host class, because a
|
|
170
|
+
* contenteditable has no `disabled` property: the attribute is what a screen reader
|
|
171
|
+
* is told, and ProseMirror's own `contenteditable="false"` is what turns the
|
|
172
|
+
* keyboard away. The component sets both.
|
|
173
|
+
*/
|
|
174
|
+
isDisabled(): Promise<boolean>;
|
|
175
|
+
/**
|
|
176
|
+
* Whether the editor shows its document and refuses edits — the surface's
|
|
177
|
+
* `aria-readonly`, which `role="textbox"` allows. Read-only keeps the tab stop, so
|
|
178
|
+
* {@link focus} still lands; disabled does not.
|
|
179
|
+
*/
|
|
180
|
+
isReadonly(): Promise<boolean>;
|
|
181
|
+
/**
|
|
182
|
+
* Whether the surface is announced invalid — the `aria-invalid` the surrounding
|
|
183
|
+
* `<wr-form-field>` hands it when a bound field fails validation and has been
|
|
184
|
+
* touched. An editor outside a field is never invalid.
|
|
185
|
+
*/
|
|
186
|
+
isInvalid(): Promise<boolean>;
|
|
187
|
+
/**
|
|
188
|
+
* Replace the whole document with `text`, as one paragraph of plain text.
|
|
189
|
+
*
|
|
190
|
+
* Written through `TestElement.setContenteditableValue` — the CDK's own definition of
|
|
191
|
+
* writing a contenteditable — which ProseMirror observes as a DOM change and parses
|
|
192
|
+
* back through the schema, exactly as it does the mutation a browser makes for a
|
|
193
|
+
* keystroke. So the write reaches the model through the editor's own path, filters
|
|
194
|
+
* and all. A line break in `text` becomes a hard break inside that one paragraph,
|
|
195
|
+
* the way Shift+Enter makes one; more paragraphs, lists and headings come from the
|
|
196
|
+
* toolbar, {@link pressKey} or {@link pasteHtml}.
|
|
197
|
+
*
|
|
198
|
+
* An empty `text` empties the document, which writes `''` (`null` in `json` format).
|
|
199
|
+
*
|
|
200
|
+
* Throws on a disabled or read-only editor, where no user could change a word — the
|
|
201
|
+
* surface is not contenteditable then, and a write the DOM accepted anyway would be
|
|
202
|
+
* a green spec for something that cannot happen.
|
|
203
|
+
*/
|
|
204
|
+
setText(text: string): Promise<void>;
|
|
205
|
+
/**
|
|
206
|
+
* Paste `text` as plain text at the selection, replacing whatever is selected — a
|
|
207
|
+
* `paste` event carrying `text/plain`, handled by ProseMirror's own paste path.
|
|
208
|
+
*
|
|
209
|
+
* On a READ-ONLY editor the event is still delivered, because a browser delivers it:
|
|
210
|
+
* the refusal is the editor's to make, and asserting the value did not change is how
|
|
211
|
+
* a spec proves it did. Throws on a disabled one, whose surface cannot hold focus for
|
|
212
|
+
* a paste to arrive at.
|
|
213
|
+
*/
|
|
214
|
+
paste(text: string): Promise<void>;
|
|
215
|
+
/**
|
|
216
|
+
* Paste `html` at the selection, the way content copied from a web page arrives —
|
|
217
|
+
* `text/html` with `text` as its `text/plain` twin.
|
|
218
|
+
*
|
|
219
|
+
* This is the path to exercise what the editor strips from untrusted markup: the
|
|
220
|
+
* pasted HTML is parsed without executing anything and rebuilt from the schema,
|
|
221
|
+
* exactly as a bound HTML value is, so `onclick`, a `javascript:` link or an
|
|
222
|
+
* `<iframe>` never reaches the document. Read-only and disabled behave as in
|
|
223
|
+
* {@link paste}.
|
|
224
|
+
*/
|
|
225
|
+
pasteHtml(html: string, text?: string): Promise<void>;
|
|
226
|
+
/**
|
|
227
|
+
* Select the whole document with the platform's select-all chord, as ProseMirror's
|
|
228
|
+
* keymap reads it.
|
|
229
|
+
*
|
|
230
|
+
* Throws on a read-only or disabled editor: ProseMirror hands the keyboard back to
|
|
231
|
+
* the browser once the surface is not editable, and the browser's native select-all
|
|
232
|
+
* is exactly what jsdom does not have, so the chord would select nothing and say so
|
|
233
|
+
* to no one.
|
|
234
|
+
*/
|
|
235
|
+
selectAll(): Promise<void>;
|
|
236
|
+
/**
|
|
237
|
+
* Press one key on the surface, with modifiers — Enter, Backspace, an arrow, or a
|
|
238
|
+
* shortcut such as `pressKey('b', { control: true })`.
|
|
239
|
+
*
|
|
240
|
+
* The keys reach ProseMirror's keymap, which is where the shortcuts, the list
|
|
241
|
+
* behaviour of Enter and history live. Under jsdom, ProseMirror reads `Mod` as
|
|
242
|
+
* Control; {@link getToolShortcuts} names the chord each tool answers to.
|
|
243
|
+
*
|
|
244
|
+
* A printable character WITHOUT a Control, Meta or Alt modifier throws: inserting it
|
|
245
|
+
* is the browser's job, not the key event's (see the class docs), so it would be
|
|
246
|
+
* dropped while the call resolved — use {@link setText} or {@link paste}. Throws on a
|
|
247
|
+
* disabled editor, whose surface is out of the tab order. A read-only one takes the
|
|
248
|
+
* key and refuses whatever it would have changed, as it does in a browser.
|
|
249
|
+
*/
|
|
250
|
+
pressKey(key: TestKey | string, modifiers?: ModifierKeys): Promise<void>;
|
|
251
|
+
/**
|
|
252
|
+
* Move focus to the text surface. A read-only editor keeps its tab stop and takes
|
|
253
|
+
* it.
|
|
254
|
+
*
|
|
255
|
+
* Throws on a disabled one rather than focusing it. In a browser its surface cannot
|
|
256
|
+
* take focus — no `tabindex`, and `contenteditable="false"` — but jsdom counts ANY
|
|
257
|
+
* `contenteditable` attribute as focusable, `false` included, so the focus would
|
|
258
|
+
* land in the spec and never in the app.
|
|
259
|
+
*/
|
|
260
|
+
focus(): Promise<void>;
|
|
261
|
+
/**
|
|
262
|
+
* Take focus away from the surface — the whole control losing focus, which is what
|
|
263
|
+
* emits `touch` and lets a bound field show its error. Focus moving to the editor's
|
|
264
|
+
* own toolbar or link panel is not a blur of the control, and does not emit it.
|
|
265
|
+
*/
|
|
266
|
+
blur(): Promise<void>;
|
|
267
|
+
/** Whether the text surface holds focus. A toolbar button holding it is not the surface. */
|
|
268
|
+
isFocused(): Promise<boolean>;
|
|
269
|
+
/** Whether a toolbar is drawn — gone with `toolbar="false"`, and with a list holding no tool. */
|
|
270
|
+
hasToolbar(): Promise<boolean>;
|
|
271
|
+
/** The toolbar's accessible name — the catalog's `editor.toolbar`. Throws when there is no toolbar. */
|
|
272
|
+
getToolbarLabel(): Promise<string | null>;
|
|
273
|
+
/**
|
|
274
|
+
* The names of the drawn tools, in order, separators left out.
|
|
275
|
+
*
|
|
276
|
+
* What is DRAWN, which is not always what was bound: `underline` is dropped in
|
|
277
|
+
* `markdown` format, which cannot store it, and a duplicate or a stray separator is
|
|
278
|
+
* dropped too.
|
|
279
|
+
*/
|
|
280
|
+
getToolLabels(): Promise<string[]>;
|
|
281
|
+
/**
|
|
282
|
+
* The toolbar button named `label`, as a `WrButtonHarness` — click it, focus it, ask
|
|
283
|
+
* whether it is disabled.
|
|
284
|
+
*
|
|
285
|
+
* A tool the current selection cannot use is NATIVELY disabled, so its click never
|
|
286
|
+
* fires; that is the answer to "can bold apply here", read with `isDisabled()`. Its
|
|
287
|
+
* tooltip — the name plus the shortcut — is a `[wrPopover]` in tooltip mode, which
|
|
288
|
+
* `WrPopoverHarness` reads when a spec cares about the wording.
|
|
289
|
+
*/
|
|
290
|
+
getTool(label: string | RegExp): Promise<WrButtonHarness>;
|
|
291
|
+
/**
|
|
292
|
+
* Whether a toggle tool is pressed — its `aria-pressed` — at the current selection.
|
|
293
|
+
*
|
|
294
|
+
* The marks answer for the selection (or, at a caret, for what typing would carry);
|
|
295
|
+
* the block types answer for every textblock the selection touches, so a select-all
|
|
296
|
+
* over a heading and a paragraph presses neither.
|
|
297
|
+
*
|
|
298
|
+
* Throws for a tool that is not a toggle: the link button opens a panel, and undo,
|
|
299
|
+
* redo and the horizontal rule are actions, so none carries `aria-pressed` and a
|
|
300
|
+
* `false` would claim a state they do not have. Whether the selection sits in a link
|
|
301
|
+
* is what the link panel's remove button answers — see {@link removeLink}.
|
|
302
|
+
*/
|
|
303
|
+
isToolPressed(label: string | RegExp): Promise<boolean>;
|
|
304
|
+
/**
|
|
305
|
+
* The chords a tool answers to, as its `aria-keyshortcuts` states them
|
|
306
|
+
* (`Control+B`, `Control+Shift+Z Control+Y`), or `null` for a tool with none — the
|
|
307
|
+
* horizontal rule.
|
|
308
|
+
*
|
|
309
|
+
* ARIA key names, never localised; `Meta` replaces `Control` where the user agent is
|
|
310
|
+
* Apple's.
|
|
311
|
+
*/
|
|
312
|
+
getToolShortcuts(label: string | RegExp): Promise<string | null>;
|
|
313
|
+
/**
|
|
314
|
+
* The name of the one tool in the tab order, or `null` when there is none.
|
|
315
|
+
*
|
|
316
|
+
* The toolbar is a single tab stop that the arrow keys rove. The stop follows the
|
|
317
|
+
* user, and moves off a tool that stopped applying — so after a click that disables
|
|
318
|
+
* undo, it lands on the first tool that still applies. `null` only when nothing does
|
|
319
|
+
* (read-only, disabled), where there is nothing for the keyboard to reach.
|
|
320
|
+
*/
|
|
321
|
+
getToolbarTabStop(): Promise<string | null>;
|
|
322
|
+
/** Whether the link panel is open, from the link tool's `aria-expanded`. `false` when there is no link tool. */
|
|
323
|
+
isLinkPanelOpen(): Promise<boolean>;
|
|
324
|
+
/**
|
|
325
|
+
* Open the link panel from its toolbar button and hand back the popover — a
|
|
326
|
+
* content container, so `panel.getHarness(WrInputHarness)` reaches the address
|
|
327
|
+
* field without the spec touching the overlay. An open panel is returned as it is.
|
|
328
|
+
*
|
|
329
|
+
* The panel is a portal in the overlay container, reached through the id the
|
|
330
|
+
* button publishes as `aria-controls`, never by its class: two editors can each have
|
|
331
|
+
* one. Mod-K on the surface opens the same panel — `pressKey('k', { control: true })`.
|
|
332
|
+
*
|
|
333
|
+
* Throws when the toolbar draws no link tool, or when the tool is unavailable (a
|
|
334
|
+
* read-only or disabled editor).
|
|
335
|
+
*/
|
|
336
|
+
openLinkPanel(): Promise<WrPopoverHarness>;
|
|
337
|
+
/**
|
|
338
|
+
* Link the selection to `url` through the panel: open it, write the address, apply.
|
|
339
|
+
*
|
|
340
|
+
* With text selected, the selection becomes the link; with the caret inside a link,
|
|
341
|
+
* that link's address changes; with nothing selected at all, the address is inserted
|
|
342
|
+
* as its own linked text. An emptied address on an existing link removes it.
|
|
343
|
+
*
|
|
344
|
+
* Resolves whether or not the address was accepted. One the URL policy refuses — a
|
|
345
|
+
* `javascript:` or `data:` scheme — leaves the panel OPEN with its error showing and
|
|
346
|
+
* the document untouched, which is the behaviour a spec most wants to pin; read it
|
|
347
|
+
* with {@link getLinkError} and {@link isLinkPanelOpen}.
|
|
348
|
+
*/
|
|
349
|
+
setLink(url: string): Promise<void>;
|
|
350
|
+
/**
|
|
351
|
+
* Remove the link the selection sits in or covers, through the panel's remove button.
|
|
352
|
+
*
|
|
353
|
+
* Throws when the selection is in no link: the panel draws the button only then, so
|
|
354
|
+
* its absence IS the answer to "is there a link here".
|
|
355
|
+
*/
|
|
356
|
+
removeLink(): Promise<void>;
|
|
357
|
+
/**
|
|
358
|
+
* The message the open panel shows for a refused address, or `null` when it shows
|
|
359
|
+
* none. It is a `role="alert"`, and the address field names it with
|
|
360
|
+
* `aria-describedby` — so the text a screen reader hears is the text read here.
|
|
361
|
+
*
|
|
362
|
+
* Throws while the panel is closed: the message only exists inside it, and a `null`
|
|
363
|
+
* would read as "the address was accepted".
|
|
364
|
+
*/
|
|
365
|
+
getLinkError(): Promise<string | null>;
|
|
366
|
+
/** The surface, or a sentence saying the editor is still the server's static preview. */
|
|
367
|
+
private mountedSurface;
|
|
368
|
+
/** The surface, when a user could still reach it with the keyboard. */
|
|
369
|
+
private focusableSurface;
|
|
370
|
+
/** The surface, when a user could change its text. */
|
|
371
|
+
private writableSurface;
|
|
372
|
+
private dispatchPaste;
|
|
373
|
+
private toolbar;
|
|
374
|
+
private linkPopover;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
export { WrEditorHarness };
|
|
378
|
+
export type { WrEditorHarnessFilters };
|