@heartlandone/vega 2.77.0 → 2.77.1
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/dist/cjs/{app-globals-04e7024b.js → app-globals-1021e33e.js} +6 -6
- package/dist/cjs/{aria-attributes-value-mapper-f58c73f8.js → aria-attributes-value-mapper-9a41b9cf.js} +10 -3
- package/dist/cjs/{code-block-f1480ec3.js → code-block-f9b86a25.js} +1 -1
- package/dist/cjs/{component-value-history-controller-slimmer.abstract-a9264cc8.js → component-value-history-controller-slimmer.abstract-6bcff70b.js} +3 -3
- package/dist/cjs/{date-required-rule-912469e0.js → date-required-rule-d3c2d088.js} +1 -1
- package/dist/cjs/{design-token-c49717c8.js → design-token-b21879b6.js} +2 -2
- package/dist/cjs/{dto-renderer-manager-809c947b.js → dto-renderer-manager-e2823eb8.js} +2 -2
- package/dist/cjs/{element-appender-slimmer-38583ca9.js → element-appender-slimmer-40d39bba.js} +178 -19
- package/dist/cjs/{form-field-controller-slimmer-102f37c7.js → form-field-controller-slimmer-1b3a1388.js} +1 -1
- package/dist/cjs/{image-annotation-action-8d9fa20c.js → image-annotation-action-b83283d4.js} +2 -2
- package/dist/cjs/index.cjs.js +12 -12
- package/dist/cjs/{inject-keyboard-manager-0f5bd568.js → inject-keyboard-manager-ea5c598e.js} +1 -1
- package/dist/cjs/{internal-translation-controller-053eb0f1.js → internal-translation-controller-1f84ab0a.js} +15 -0
- package/dist/cjs/{keyboard-manager-055e9f67.js → keyboard-manager-16494c34.js} +1 -1
- package/dist/cjs/{keyboard-manager-slimmer-0cc0c1c7.js → keyboard-manager-slimmer-5b8fa209.js} +1 -1
- package/dist/cjs/loader.cjs.js +8 -8
- package/dist/cjs/{month-view-generator-6a6dd527.js → month-view-generator-1a57578d.js} +1 -1
- package/dist/cjs/{public-rules-922849f3.js → public-rules-5bd1624d.js} +7 -7
- package/dist/cjs/{range-8aa49b08.js → range-7a038973.js} +1 -1
- package/dist/cjs/{responsive-format-facade-acc39a40.js → responsive-format-facade-0b65ce4a.js} +1 -1
- package/dist/cjs/{rich-text-editor-required-rule-22225840.js → rich-text-editor-required-rule-d984c0b6.js} +1 -1
- package/dist/cjs/{string-format-strategy.abstract-f2575647.js → string-format-strategy.abstract-714bfad2.js} +1 -1
- package/dist/cjs/{string-input-formatter-slimmer-0a334fc6.js → string-input-formatter-slimmer-9ef2ec7a.js} +1 -1
- package/dist/cjs/{string-mask-strategy-dda58395.js → string-mask-strategy-bd2c18df.js} +2 -2
- package/dist/cjs/{style-formatter-028af284.js → style-formatter-7a4e9811.js} +2 -2
- package/dist/cjs/{time-required-rule-d6fa7aa8.js → time-required-rule-50784b9f.js} +1 -1
- package/dist/cjs/{token-extension-ffcaeae0.js → token-extension-5a1c473e.js} +4 -4
- package/dist/cjs/{translation-slimmer-4533bd67.js → translation-slimmer-2c207e34.js} +1 -1
- package/dist/cjs/{type-guard-407ba0b8.js → type-guard-cd0376d4.js} +36 -1
- package/dist/cjs/{valid-credit-card-number-rule-41a8b51b.js → valid-credit-card-number-rule-3f8dc897.js} +1 -1
- package/dist/cjs/vega-accordion.cjs.entry.js +4 -4
- package/dist/cjs/vega-app-header-button.cjs.entry.js +24 -6
- package/dist/cjs/vega-box.cjs.entry.js +5 -5
- package/dist/cjs/vega-button-circle.cjs.entry.js +5 -5
- package/dist/cjs/vega-button-link.cjs.entry.js +16 -0
- package/dist/cjs/vega-button.cjs.entry.js +3 -3
- package/dist/cjs/vega-calendar_4.cjs.entry.js +5 -5
- package/dist/cjs/vega-card.cjs.entry.js +4 -4
- package/dist/cjs/vega-carousel.cjs.entry.js +3 -3
- package/dist/cjs/vega-checkbox_2.cjs.entry.js +2 -2
- package/dist/cjs/vega-chip.cjs.entry.js +4 -4
- package/dist/cjs/vega-code-block.cjs.entry.js +8 -8
- package/dist/cjs/vega-color-picker.cjs.entry.js +2 -2
- package/dist/cjs/vega-combo-box.cjs.entry.js +5 -5
- package/dist/cjs/vega-date-picker_2.cjs.entry.js +103 -22
- package/dist/cjs/vega-dialog_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-divider.cjs.entry.js +4 -4
- package/dist/cjs/vega-dropdown_5.cjs.entry.js +31 -7
- package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
- package/dist/cjs/vega-file-uploader.cjs.entry.js +3 -3
- package/dist/cjs/vega-flag-icon.cjs.entry.js +4 -4
- package/dist/cjs/vega-flex.cjs.entry.js +5 -5
- package/dist/cjs/vega-font.cjs.entry.js +4 -4
- package/dist/cjs/vega-form.cjs.entry.js +3 -3
- package/dist/cjs/vega-grid.cjs.entry.js +4 -4
- package/dist/cjs/vega-icon.cjs.entry.js +4 -4
- package/dist/cjs/vega-image-uploader.cjs.entry.js +5 -5
- package/dist/cjs/vega-input-credit-card.cjs.entry.js +6 -6
- package/dist/cjs/vega-input-numeric.cjs.entry.js +5 -5
- package/dist/cjs/vega-input-passcode.cjs.entry.js +37 -7
- package/dist/cjs/vega-input-phone-number.cjs.entry.js +4 -4
- package/dist/cjs/vega-input-range.cjs.entry.js +3 -3
- package/dist/cjs/vega-input-select.cjs.entry.js +5 -5
- package/dist/cjs/vega-input.cjs.entry.js +220 -125
- package/dist/cjs/vega-left-nav_5.cjs.entry.js +6 -7
- package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +2 -2
- package/dist/cjs/vega-pagination.cjs.entry.js +4 -4
- package/dist/cjs/vega-popover_2.cjs.entry.js +8 -8
- package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-radio_2.cjs.entry.js +5 -5
- package/dist/cjs/vega-rich-text-content.cjs.entry.js +12 -6
- package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +127 -29
- package/dist/cjs/vega-selection-chip_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-selection-tile_2.cjs.entry.js +2 -2
- package/dist/cjs/vega-sidenav_3.cjs.entry.js +3 -3
- package/dist/cjs/vega-signature-capture.cjs.entry.js +6 -6
- package/dist/cjs/vega-stepper.cjs.entry.js +2 -2
- package/dist/cjs/vega-table_11.cjs.entry.js +4 -4
- package/dist/cjs/vega-textarea.cjs.entry.js +2 -2
- package/dist/cjs/vega-time-picker_2.cjs.entry.js +9 -9
- package/dist/cjs/vega-toggle-switch.cjs.entry.js +2 -2
- package/dist/cjs/vega-tooltip_2.cjs.entry.js +7 -7
- package/dist/cjs/vega.cjs.js +8 -8
- package/dist/collection/components/vega-app-header-button/vega-app-header-button.js +44 -2
- package/dist/collection/components/vega-button-link/vega-button-link.js +16 -1
- package/dist/collection/components/vega-calendar/slimmers/common/renderers/vega-calendar-event-preview-popover-renderer.js +1 -1
- package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-calendar-open-state-controller.js +64 -0
- package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-selection-controller.js +3 -0
- package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-header-render.js +3 -3
- package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-renderer.js +19 -1
- package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-year-month-switcher-renderer.js +3 -2
- package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-month-item-renderer.js +3 -2
- package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.css +12 -0
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.js +25 -0
- package/dist/collection/components/vega-input/slimmers/controllers/vega-input-render-mode-controller.js +1 -3
- package/dist/collection/components/vega-input/slimmers/renderers/vega-input-input-container-renderer.js +1 -5
- package/dist/collection/components/vega-input/slimmers/renderers/vega-input-input-renderer.js +1 -4
- package/dist/collection/components/vega-input/slimmers/renderers/vega-input-input-suggestions-renderer.js +5 -2
- package/dist/collection/components/vega-input/vega-input.js +24 -1
- package/dist/collection/components/vega-input-passcode/slimmers/controllers/vega-input-passcode-keyboard-controller.js +2 -0
- package/dist/collection/components/vega-input-passcode/slimmers/renderers/vega-input-passcode-renderer.js +30 -2
- package/dist/collection/components/vega-nav/vega-left-nav-link/slimmers/renderers/vega-left-nav-link-renderer.js +2 -3
- package/dist/collection/components/vega-popover/vega-popover-content-box/vega-popover-content-box.css +5 -0
- package/dist/collection/components/vega-rich-text-editor/dto/renderers/nodes/image-node-renderer.js +7 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/insert-image-controller.js +7 -4
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.js +113 -12
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-image-editor/slimmers/renderers/vega-rich-text-image-editor-renderer.js +1 -1
- package/dist/collection/components/vega-tooltip/vega-tooltip-content-box/vega-tooltip-content-box.css +5 -0
- package/dist/collection/helpers/calendar/test/utils.test.js +54 -1
- package/dist/collection/helpers/calendar/utils.js +35 -0
- package/dist/collection/helpers/slimmers/element-appender/element-appender-slimmer.js +27 -0
- package/dist/collection/helpers/slimmers/element-appender/test/element-appender-slimmer.test.js +50 -0
- package/dist/collection/helpers/slimmers/mutation-observer/aria-attributes-value-mapper.js +10 -3
- package/dist/collection/helpers/slimmers/mutation-observer/data-tab-index-value-mapper.js +80 -0
- package/dist/collection/helpers/slimmers/mutation-observer/test/aria-attributes-value-mapper.test.js +55 -3
- package/dist/collection/helpers/slimmers/mutation-observer/test/data-tab-index-value-mapper.test.js +120 -0
- package/dist/collection/helpers/slimmers/position-calculation/base-position-calculation-strategy.js +123 -9
- package/dist/collection/helpers/slimmers/position-calculation/position-calculation-controller.js +14 -4
- package/dist/collection/helpers/slimmers/position-calculation/screen-position-calculation-strategy.js +13 -4
- package/dist/collection/helpers/slimmers/position-calculation/test/body-position-calculation-strategy.test.js +7 -6
- package/dist/collection/helpers/slimmers/position-calculation/test/screen-position-calculation-strategy.test.js +162 -7
- package/dist/collection/helpers/translation/locales/en.js +15 -0
- package/dist/collection/helpers/translation/tests/internal-translation-controller.test.js +15 -0
- package/dist/collection/helpers/ui/test/element-appender.test.js +7 -5
- package/dist/collection/utils/e2e-utils.js +6 -0
- package/dist/esm/{app-globals-32055795.js → app-globals-0b3b7111.js} +6 -6
- package/dist/esm/{aria-attributes-value-mapper-d4fef46a.js → aria-attributes-value-mapper-2c632641.js} +10 -3
- package/dist/esm/{code-block-b6247a45.js → code-block-2408a812.js} +1 -1
- package/dist/esm/{component-value-history-controller-slimmer.abstract-2bb8533d.js → component-value-history-controller-slimmer.abstract-ac40820f.js} +3 -3
- package/dist/esm/{date-required-rule-e771e7d9.js → date-required-rule-09d5aa16.js} +1 -1
- package/dist/esm/{design-token-5bc034e1.js → design-token-7dec1eab.js} +2 -2
- package/dist/esm/{dto-renderer-manager-6fd22ab7.js → dto-renderer-manager-d413de1e.js} +2 -2
- package/dist/esm/{element-appender-slimmer-9ea377d0.js → element-appender-slimmer-5d573612.js} +178 -19
- package/dist/esm/{form-field-controller-slimmer-5817d14d.js → form-field-controller-slimmer-e1a5a884.js} +1 -1
- package/dist/esm/{image-annotation-action-6701b4c9.js → image-annotation-action-54936eaa.js} +2 -2
- package/dist/esm/index.js +12 -12
- package/dist/esm/{inject-keyboard-manager-78730062.js → inject-keyboard-manager-9339bba8.js} +1 -1
- package/dist/esm/{internal-translation-controller-911515f9.js → internal-translation-controller-113a6288.js} +15 -0
- package/dist/esm/{keyboard-manager-38934f94.js → keyboard-manager-f9bfa678.js} +1 -1
- package/dist/esm/{keyboard-manager-slimmer-9984d922.js → keyboard-manager-slimmer-c8898843.js} +1 -1
- package/dist/esm/loader.js +8 -8
- package/dist/esm/{month-view-generator-eaf9029c.js → month-view-generator-160a9feb.js} +1 -1
- package/dist/esm/{public-rules-25cc3a39.js → public-rules-41561e6e.js} +7 -7
- package/dist/esm/{range-663f44dc.js → range-a5d78e69.js} +1 -1
- package/dist/esm/{responsive-format-facade-aa705823.js → responsive-format-facade-2a36c54a.js} +1 -1
- package/dist/esm/{rich-text-editor-required-rule-a238b862.js → rich-text-editor-required-rule-b09039da.js} +1 -1
- package/dist/esm/{string-format-strategy.abstract-713fba36.js → string-format-strategy.abstract-944f759b.js} +1 -1
- package/dist/esm/{string-input-formatter-slimmer-5b413ff9.js → string-input-formatter-slimmer-2508d88b.js} +1 -1
- package/dist/esm/{string-mask-strategy-6beaf664.js → string-mask-strategy-f9e252a2.js} +2 -2
- package/dist/esm/{style-formatter-28138f5c.js → style-formatter-6db1e890.js} +2 -2
- package/dist/esm/{time-required-rule-e4138a76.js → time-required-rule-c7cfb257.js} +1 -1
- package/dist/esm/{token-extension-73e4460a.js → token-extension-25df8dbb.js} +4 -4
- package/dist/esm/{translation-slimmer-2394b173.js → translation-slimmer-9f0339aa.js} +1 -1
- package/dist/esm/{type-guard-f50e34d6.js → type-guard-af324dcd.js} +36 -2
- package/dist/esm/{valid-credit-card-number-rule-22ce81db.js → valid-credit-card-number-rule-099dba7d.js} +1 -1
- package/dist/esm/vega-accordion.entry.js +4 -4
- package/dist/esm/vega-app-header-button.entry.js +24 -6
- package/dist/esm/vega-box.entry.js +5 -5
- package/dist/esm/vega-button-circle.entry.js +5 -5
- package/dist/esm/vega-button-link.entry.js +16 -0
- package/dist/esm/vega-button.entry.js +3 -3
- package/dist/esm/vega-calendar_4.entry.js +5 -5
- package/dist/esm/vega-card.entry.js +4 -4
- package/dist/esm/vega-carousel.entry.js +3 -3
- package/dist/esm/vega-checkbox_2.entry.js +2 -2
- package/dist/esm/vega-chip.entry.js +4 -4
- package/dist/esm/vega-code-block.entry.js +8 -8
- package/dist/esm/vega-color-picker.entry.js +2 -2
- package/dist/esm/vega-combo-box.entry.js +5 -5
- package/dist/esm/vega-date-picker_2.entry.js +104 -23
- package/dist/esm/vega-dialog_2.entry.js +4 -4
- package/dist/esm/vega-divider.entry.js +4 -4
- package/dist/esm/vega-dropdown_5.entry.js +32 -8
- package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
- package/dist/esm/vega-file-uploader.entry.js +3 -3
- package/dist/esm/vega-flag-icon.entry.js +4 -4
- package/dist/esm/vega-flex.entry.js +5 -5
- package/dist/esm/vega-font.entry.js +4 -4
- package/dist/esm/vega-form.entry.js +3 -3
- package/dist/esm/vega-grid.entry.js +4 -4
- package/dist/esm/vega-icon.entry.js +4 -4
- package/dist/esm/vega-image-uploader.entry.js +5 -5
- package/dist/esm/vega-input-credit-card.entry.js +6 -6
- package/dist/esm/vega-input-numeric.entry.js +5 -5
- package/dist/esm/vega-input-passcode.entry.js +37 -7
- package/dist/esm/vega-input-phone-number.entry.js +4 -4
- package/dist/esm/vega-input-range.entry.js +3 -3
- package/dist/esm/vega-input-select.entry.js +5 -5
- package/dist/esm/vega-input.entry.js +220 -125
- package/dist/esm/vega-left-nav_5.entry.js +6 -7
- package/dist/esm/vega-loader-wrapper_2.entry.js +3 -3
- package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +2 -2
- package/dist/esm/vega-pagination.entry.js +4 -4
- package/dist/esm/vega-popover_2.entry.js +8 -8
- package/dist/esm/vega-progress-tracker_2.entry.js +3 -3
- package/dist/esm/vega-radio_2.entry.js +5 -5
- package/dist/esm/vega-rich-text-content.entry.js +12 -6
- package/dist/esm/vega-rich-text-editor_4.entry.js +128 -30
- package/dist/esm/vega-selection-chip_2.entry.js +4 -4
- package/dist/esm/vega-selection-tile_2.entry.js +2 -2
- package/dist/esm/vega-sidenav_3.entry.js +3 -3
- package/dist/esm/vega-signature-capture.entry.js +6 -6
- package/dist/esm/vega-stepper.entry.js +2 -2
- package/dist/esm/vega-table_11.entry.js +4 -4
- package/dist/esm/vega-textarea.entry.js +2 -2
- package/dist/esm/vega-time-picker_2.entry.js +9 -9
- package/dist/esm/vega-toggle-switch.entry.js +2 -2
- package/dist/esm/vega-tooltip_2.entry.js +7 -7
- package/dist/esm/vega.js +8 -8
- package/dist/sri/vega-sri-manifest.json +281 -281
- package/dist/types/components/vega-app-header-button/types.d.ts +18 -0
- package/dist/types/components/vega-app-header-button/vega-app-header-button.d.ts +8 -1
- package/dist/types/components/vega-button-link/vega-button-link.d.ts +2 -0
- package/dist/types/components/vega-date-picker/slimmers/controllers/vega-date-picker-calendar-open-state-controller.d.ts +21 -0
- package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-selection-controller.d.ts +1 -0
- package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-renderer.d.ts +7 -0
- package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.d.ts +11 -0
- package/dist/types/components/vega-input/slimmers/controllers/vega-input-render-mode-controller.d.ts +0 -1
- package/dist/types/components/vega-input/slimmers/renderers/vega-input-input-renderer.d.ts +0 -1
- package/dist/types/components/vega-input/vega-input.d.ts +4 -0
- package/dist/types/components/vega-input-passcode/slimmers/renderers/vega-input-passcode-renderer.d.ts +14 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/insert-image-controller.d.ts +7 -1
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.d.ts +30 -2
- package/dist/types/components.d.ts +11 -1
- package/dist/types/helpers/calendar/utils.d.ts +17 -0
- package/dist/types/helpers/slimmers/element-appender/element-appender-slimmer.d.ts +12 -0
- package/dist/types/helpers/slimmers/mutation-observer/aria-attributes-value-mapper.d.ts +2 -1
- package/dist/types/helpers/slimmers/mutation-observer/data-tab-index-value-mapper.d.ts +35 -0
- package/dist/types/helpers/slimmers/mutation-observer/test/data-tab-index-value-mapper.test.d.ts +1 -0
- package/dist/types/helpers/slimmers/position-calculation/base-position-calculation-strategy.d.ts +60 -3
- package/dist/types/helpers/slimmers/position-calculation/screen-position-calculation-strategy.d.ts +3 -2
- package/dist/types/helpers/slimmers/position-calculation/test/body-position-calculation-strategy.test.d.ts +1 -1
- package/dist/types/helpers/translation/interface.d.ts +15 -0
- package/dist/types/types/components.type.d.ts +1 -0
- package/dist/types/types/ui.type.d.ts +3 -2
- package/dist/types/utils/e2e-utils.d.ts +2 -0
- package/dist/vega/index.esm.js +1 -1
- package/dist/vega/{p-4bffdb28.js → p-051bbce6.js} +1 -1
- package/dist/vega/{p-1a3236e7.entry.js → p-0ac9a732.entry.js} +1 -1
- package/dist/vega/{p-9fb877c1.entry.js → p-1033e4c4.entry.js} +1 -1
- package/dist/vega/{p-0e679d8c.js → p-10e51081.js} +1 -1
- package/dist/vega/p-15335b69.entry.js +1 -0
- package/dist/vega/{p-592296d7.entry.js → p-19270396.entry.js} +1 -1
- package/dist/vega/{p-2d69632d.js → p-1a9b361b.js} +1 -1
- package/dist/vega/p-1ccba615.entry.js +1 -0
- package/dist/vega/{p-b54dc37c.entry.js → p-22f3d35c.entry.js} +1 -1
- package/dist/vega/{p-010ff53d.entry.js → p-23427f6a.entry.js} +1 -1
- package/dist/vega/p-2466316a.js +1 -0
- package/dist/vega/{p-b1773281.entry.js → p-27b0af38.entry.js} +1 -1
- package/dist/vega/{p-03004a05.entry.js → p-2c2193f2.entry.js} +1 -1
- package/dist/vega/{p-22056609.entry.js → p-3237be8b.entry.js} +1 -1
- package/dist/vega/{p-bff57aa4.js → p-38e850c3.js} +1 -1
- package/dist/vega/{p-ffd48e37.entry.js → p-3b9fc697.entry.js} +1 -1
- package/dist/vega/{p-1fa0c7da.entry.js → p-41d14339.entry.js} +1 -1
- package/dist/vega/{p-a0b66c25.js → p-4c060ba9.js} +1 -1
- package/dist/vega/{p-0d4cb1c7.entry.js → p-4d4bf82a.entry.js} +1 -1
- package/dist/vega/{p-415ffa35.js → p-4d7d5583.js} +1 -1
- package/dist/vega/{p-2a10e2e5.js → p-4f146dae.js} +1 -1
- package/dist/vega/p-5f377954.js +1 -1
- package/dist/vega/{p-d78f6ede.js → p-600f7d6c.js} +1 -1
- package/dist/vega/{p-4ea30592.js → p-6188e783.js} +1 -1
- package/dist/vega/p-638d30a5.entry.js +1 -0
- package/dist/vega/{p-100b44c3.entry.js → p-67b0ccdc.entry.js} +1 -1
- package/dist/vega/p-68846f0d.js +1 -0
- package/dist/vega/{p-c165232c.entry.js → p-70444f6f.entry.js} +1 -1
- package/dist/vega/{p-e632475e.js → p-7127f966.js} +1 -1
- package/dist/vega/{p-49845a91.js → p-718c74ba.js} +1 -1
- package/dist/vega/p-77167587.entry.js +1 -0
- package/dist/vega/p-78ecfea0.entry.js +1 -0
- package/dist/vega/{p-b201f379.js → p-7cde8489.js} +1 -1
- package/dist/vega/p-9466619f.entry.js +1 -0
- package/dist/vega/p-9863e7a1.entry.js +1 -0
- package/dist/vega/p-999950d1.js +1 -0
- package/dist/vega/{p-9339c6c4.js → p-9a3a5b9e.js} +1 -1
- package/dist/vega/{p-1a011d47.entry.js → p-9adfcd47.entry.js} +1 -1
- package/dist/vega/{p-4aa94940.entry.js → p-9e36f7ff.entry.js} +1 -1
- package/dist/vega/{p-168bb296.entry.js → p-9f9d9a53.entry.js} +1 -1
- package/dist/vega/{p-cfecc1cb.entry.js → p-9feaac4b.entry.js} +1 -1
- package/dist/vega/{p-4742feef.entry.js → p-a0e69236.entry.js} +1 -1
- package/dist/vega/{p-95528b47.js → p-a17312a6.js} +1 -1
- package/dist/vega/{p-f3e6483c.js → p-a79fdf2f.js} +1 -1
- package/dist/vega/{p-c2d2faa0.js → p-a800bf6d.js} +1 -1
- package/dist/vega/{p-2b142818.entry.js → p-aaf9b39f.entry.js} +1 -1
- package/dist/vega/p-acbb96b3.entry.js +1 -0
- package/dist/vega/{p-cccd7648.entry.js → p-af2110fc.entry.js} +1 -1
- package/dist/vega/{p-560d2f48.entry.js → p-b35bb4a2.entry.js} +1 -1
- package/dist/vega/p-b8c10187.js +1 -0
- package/dist/vega/p-bdb5180c.js +1 -0
- package/dist/vega/{p-50d074ed.entry.js → p-c086529c.entry.js} +1 -1
- package/dist/vega/{p-3c05abd9.entry.js → p-c61bcd92.entry.js} +1 -1
- package/dist/vega/{p-5833f33b.entry.js → p-c7a9960f.entry.js} +1 -1
- package/dist/vega/{p-81b044b9.js → p-c7b9b7c2.js} +1 -1
- package/dist/vega/{p-f2b0b58a.js → p-c857e6e2.js} +1 -1
- package/dist/vega/{p-857069a5.entry.js → p-c871619c.entry.js} +1 -1
- package/dist/vega/{p-1f3cd061.entry.js → p-cbeb47be.entry.js} +1 -1
- package/dist/vega/{p-a786259a.js → p-cf6bfac7.js} +1 -1
- package/dist/vega/{p-5485c387.entry.js → p-d0975995.entry.js} +1 -1
- package/dist/vega/{p-c292ade4.entry.js → p-d2fc470e.entry.js} +1 -1
- package/dist/vega/{p-f428086c.entry.js → p-d70e1b75.entry.js} +1 -1
- package/dist/vega/{p-3afc025e.entry.js → p-da0fd3dc.entry.js} +1 -1
- package/dist/vega/{p-70df91fb.entry.js → p-da552ddf.entry.js} +1 -1
- package/dist/vega/{p-4aa52ed2.entry.js → p-ddce3e0e.entry.js} +1 -1
- package/dist/vega/{p-aa1174dc.js → p-dfb12762.js} +1 -1
- package/dist/vega/{p-daa60a59.entry.js → p-e0fb1f60.entry.js} +1 -1
- package/dist/vega/{p-db5fa164.entry.js → p-e1c017d1.entry.js} +1 -1
- package/dist/vega/{p-3ce2b05c.entry.js → p-e4c99b72.entry.js} +1 -1
- package/dist/vega/{p-d1cfe972.entry.js → p-e841c1fe.entry.js} +1 -1
- package/dist/vega/{p-0572c393.entry.js → p-ea96b0f9.entry.js} +1 -1
- package/dist/vega/{p-7425cedc.entry.js → p-eab9d999.entry.js} +1 -1
- package/dist/vega/{p-e6cf2ace.entry.js → p-ed9ad4fd.entry.js} +1 -1
- package/dist/vega/{p-34bcf4ed.entry.js → p-ef603656.entry.js} +1 -1
- package/dist/vega/p-f5fcd13e.entry.js +1 -0
- package/dist/vega/{p-6d219c44.entry.js → p-f65cb0b6.entry.js} +1 -1
- package/dist/vega/p-faa9a3bd.js +1 -0
- package/dist/vega/{p-a8792e3d.js → p-fc049028.js} +1 -1
- package/dist/vega/p-ff287001.entry.js +1 -0
- package/dist/vega/{p-67745549.entry.js → p-ffb3e479.entry.js} +1 -1
- package/dist/vega/p-ffd080db.js +1 -0
- package/dist/vega/vega.esm.js +1 -1
- package/package.json +1 -1
- package/dist/vega/p-43ff48c0.entry.js +0 -1
- package/dist/vega/p-464559e3.js +0 -1
- package/dist/vega/p-4bee4202.entry.js +0 -1
- package/dist/vega/p-5cfce62d.entry.js +0 -1
- package/dist/vega/p-60f77f5f.entry.js +0 -1
- package/dist/vega/p-641cdb5c.entry.js +0 -1
- package/dist/vega/p-6b6f0fb4.js +0 -1
- package/dist/vega/p-9441f2ba.entry.js +0 -1
- package/dist/vega/p-ac82b9f9.entry.js +0 -1
- package/dist/vega/p-b597393b.entry.js +0 -1
- package/dist/vega/p-b5f18f4b.entry.js +0 -1
- package/dist/vega/p-c3d2f316.js +0 -1
- package/dist/vega/p-cc5eaa1b.js +0 -1
- package/dist/vega/p-dad3ba5f.js +0 -1
- package/dist/vega/p-de64f6e6.js +0 -1
- package/dist/vega/p-e7fbef97.js +0 -1
- package/dist/vega/p-fc9ac6e9.entry.js +0 -1
|
@@ -1135,6 +1135,18 @@
|
|
|
1135
1135
|
place-items: center;
|
|
1136
1136
|
}
|
|
1137
1137
|
|
|
1138
|
+
.calendar .aria-announcement {
|
|
1139
|
+
position: absolute;
|
|
1140
|
+
width: 1px;
|
|
1141
|
+
height: 1px;
|
|
1142
|
+
padding: 0;
|
|
1143
|
+
margin: -1px;
|
|
1144
|
+
overflow: hidden;
|
|
1145
|
+
clip: rect(0, 0, 0, 0);
|
|
1146
|
+
white-space: nowrap;
|
|
1147
|
+
border: 0;
|
|
1148
|
+
}
|
|
1149
|
+
|
|
1138
1150
|
.calendar .container__days {
|
|
1139
1151
|
text-align: center;
|
|
1140
1152
|
place-items: center;
|
|
@@ -6,6 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { MapToComponentField, MapToComponentMethod, methodPlaceholder } from 'vega-slimmer/core';
|
|
8
8
|
import { ElementAppenderSlimmer } from '../../../../helpers/slimmers/element-appender/element-appender-slimmer';
|
|
9
|
+
import { getDeepActiveElementInShadow } from '../../../../utils/ui';
|
|
9
10
|
/**
|
|
10
11
|
* The `VegaDropdownAppenderController` class is responsible for managing the visibility and
|
|
11
12
|
* behavior of a dropdown component.
|
|
@@ -17,6 +18,7 @@ export class VegaDropdownAppenderController extends ElementAppenderSlimmer {
|
|
|
17
18
|
*/
|
|
18
19
|
constructor() {
|
|
19
20
|
super(() => this.generateShowConfigFactory(), () => this.trigger);
|
|
21
|
+
this.lastFocusedElement = null;
|
|
20
22
|
}
|
|
21
23
|
/**
|
|
22
24
|
* Component lifecycle - [componentDidLoad]{@link VegaPopover.connectedCallback}
|
|
@@ -37,10 +39,12 @@ export class VegaDropdownAppenderController extends ElementAppenderSlimmer {
|
|
|
37
39
|
async watchIsDropdownShow() {
|
|
38
40
|
if (this.isDropdownShow) {
|
|
39
41
|
this.showEventEmitter.emit();
|
|
42
|
+
this.updateLastFocusedElement();
|
|
40
43
|
}
|
|
41
44
|
else {
|
|
42
45
|
this.searchRenderer.clear();
|
|
43
46
|
this.hideEventEmitter.emit();
|
|
47
|
+
this.focusTriggerForAria();
|
|
44
48
|
}
|
|
45
49
|
}
|
|
46
50
|
/**
|
|
@@ -60,6 +64,27 @@ export class VegaDropdownAppenderController extends ElementAppenderSlimmer {
|
|
|
60
64
|
this.hide();
|
|
61
65
|
}
|
|
62
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Restores focus to the dropdown trigger element.
|
|
69
|
+
* Should be called after programmatic hide actions (item selection, Escape, reset)
|
|
70
|
+
* to maintain proper screen reader context per WAI-ARIA menu button pattern.
|
|
71
|
+
*/
|
|
72
|
+
focusTriggerForAria() {
|
|
73
|
+
const activeEl = getDeepActiveElementInShadow();
|
|
74
|
+
if ((activeEl === null || activeEl === void 0 ? void 0 : activeEl.matches) && activeEl.matches(':focus-visible')) {
|
|
75
|
+
const triggerEl = this.lastFocusedElement;
|
|
76
|
+
if (triggerEl && typeof triggerEl.focus === 'function') {
|
|
77
|
+
triggerEl.focus();
|
|
78
|
+
this.lastFocusedElement = null;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Updates the last focused element by getting the currently active element in the shadow DOM.
|
|
84
|
+
*/
|
|
85
|
+
updateLastFocusedElement() {
|
|
86
|
+
this.lastFocusedElement = getDeepActiveElementInShadow();
|
|
87
|
+
}
|
|
63
88
|
/**
|
|
64
89
|
* Generate the show configuration for the dropdown.
|
|
65
90
|
*
|
|
@@ -10,7 +10,6 @@ export class VegaInputRenderModeController extends VegaSlimmer {
|
|
|
10
10
|
constructor() {
|
|
11
11
|
super(...arguments);
|
|
12
12
|
this.hasItemsSlot = false;
|
|
13
|
-
this.hasDropdownSource = false;
|
|
14
13
|
}
|
|
15
14
|
/** Sets the render mode based on the presence of the items slot. */
|
|
16
15
|
connectedCallback() {
|
|
@@ -22,7 +21,7 @@ export class VegaInputRenderModeController extends VegaSlimmer {
|
|
|
22
21
|
* @returns {boolean} True if in source render mode, false otherwise.
|
|
23
22
|
*/
|
|
24
23
|
isSource() {
|
|
25
|
-
return this.
|
|
24
|
+
return Array.isArray(this.suggestionsDropdownSource);
|
|
26
25
|
}
|
|
27
26
|
/**
|
|
28
27
|
* Checks if the render mode is template mode.
|
|
@@ -37,7 +36,6 @@ export class VegaInputRenderModeController extends VegaSlimmer {
|
|
|
37
36
|
*/
|
|
38
37
|
setRenderMode() {
|
|
39
38
|
this.hasItemsSlot = !!this.host.querySelector('[slot=items]');
|
|
40
|
-
this.hasDropdownSource = Array.isArray(this.suggestionsDropdownSource);
|
|
41
39
|
}
|
|
42
40
|
}
|
|
43
41
|
__decorate([
|
|
@@ -49,11 +49,7 @@ export class VegaInputInputContainerRenderer extends VegaSlimmer {
|
|
|
49
49
|
[`vega-input-size-${this.size}`]: true,
|
|
50
50
|
'vega-input-disabled': this.disabled,
|
|
51
51
|
'compact-input-width': this.isCompactInputWidth,
|
|
52
|
-
}, onClick: this.onContainerClick, "aria-disabled": `${this.disabled}`,
|
|
53
|
-
// tabIndex={-1} allows programmatic focus (e.g. after clearing input) without adding the container to the tab order.
|
|
54
|
-
// The linter flags this because it's a non-interactive element, but programmatic focus is intentional here.
|
|
55
|
-
/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */
|
|
56
|
-
tabIndex: !this.disabled ? -1 : null, onKeyDown: createEnterKeyHandlerToTriggerClick() },
|
|
52
|
+
}, onClick: this.onContainerClick, "aria-disabled": `${this.disabled}`, onKeyDown: createEnterKeyHandlerToTriggerClick() },
|
|
57
53
|
this.prefixSlotRenderer.render(),
|
|
58
54
|
this.renderPrefixText(),
|
|
59
55
|
this.inputRenderer.render(),
|
package/dist/collection/components/vega-input/slimmers/renderers/vega-input-input-renderer.js
CHANGED
|
@@ -72,7 +72,7 @@ export class VegaInputInputRenderer extends VegaSlimmer {
|
|
|
72
72
|
}
|
|
73
73
|
render() {
|
|
74
74
|
return (h("div", { class: "vega-input-input" },
|
|
75
|
-
h("input", Object.assign({ part: "input", name: this.name, type: this.getInputType(), autoComplete: this.autocomplete, inputmode: this.inputmode, value: this.value, ref: this.setInputRef, placeholder: this.placeholder, disabled: this.disabled,
|
|
75
|
+
h("input", Object.assign({ part: "input", name: this.name, type: this.getInputType(), autoComplete: this.autocomplete, inputmode: this.inputmode, value: this.value, ref: this.setInputRef, placeholder: this.placeholder, disabled: this.disabled, minLength: this.minLength, maxLength: this.maxLength,
|
|
76
76
|
/* eslint-disable-next-line react/jsx-no-bind */
|
|
77
77
|
onBlur: (e) => this.handleInputBlur(e),
|
|
78
78
|
/* eslint-disable-next-line react/jsx-no-bind */
|
|
@@ -128,9 +128,6 @@ __decorate([
|
|
|
128
128
|
__decorate([
|
|
129
129
|
MapToComponentField()
|
|
130
130
|
], VegaInputInputRenderer.prototype, "type", void 0);
|
|
131
|
-
__decorate([
|
|
132
|
-
MapToComponentField()
|
|
133
|
-
], VegaInputInputRenderer.prototype, "label", void 0);
|
|
134
131
|
__decorate([
|
|
135
132
|
MapToComponentField()
|
|
136
133
|
], VegaInputInputRenderer.prototype, "name", void 0);
|
|
@@ -97,12 +97,15 @@ export class VegaInputInputSuggestionsRenderer extends VegaSlimmer {
|
|
|
97
97
|
return null;
|
|
98
98
|
}
|
|
99
99
|
async showSuggestions() {
|
|
100
|
-
if (this.
|
|
100
|
+
if (this.dropdownRef &&
|
|
101
|
+
(this.renderModeController.isSource() || this.renderModeController.isTemplate())) {
|
|
101
102
|
await this.dropdownRef.show();
|
|
102
103
|
}
|
|
103
104
|
}
|
|
104
105
|
async searchSuggestions() {
|
|
105
|
-
if (this.
|
|
106
|
+
if (this.dropdownRef &&
|
|
107
|
+
this.renderModeController.isSource() &&
|
|
108
|
+
this.suggestionsDropdownSource.length > 0) {
|
|
106
109
|
await this.dropdownRef.search(this.value);
|
|
107
110
|
}
|
|
108
111
|
}
|
|
@@ -32,12 +32,29 @@ import { VegaInputRenderer } from './slimmers/renderers/vega-input-renderer';
|
|
|
32
32
|
import { VegaInputValueController } from './slimmers/controllers/vega-input-value-controller';
|
|
33
33
|
import { VegaInputInputSuggestionsRenderer } from './slimmers/renderers/vega-input-input-suggestions-renderer';
|
|
34
34
|
import { VegaInputRenderModeController } from './slimmers/controllers/vega-input-render-mode-controller';
|
|
35
|
+
import { AriaAttributesValueMapper } from '../../helpers/slimmers/mutation-observer/aria-attributes-value-mapper';
|
|
36
|
+
import { DataTabIndexValueMapper } from '../../helpers/slimmers/mutation-observer/data-tab-index-value-mapper';
|
|
35
37
|
/**
|
|
36
38
|
* @vegaVersion 1.0.5
|
|
37
39
|
*/
|
|
38
40
|
export class VegaInput {
|
|
39
41
|
constructor() {
|
|
40
42
|
this.globalSlimmers = {};
|
|
43
|
+
this.ariaAttributesValueMapper = new AriaAttributesValueMapper(() => {
|
|
44
|
+
return this.host.shadowRoot.querySelector('input');
|
|
45
|
+
}, {
|
|
46
|
+
'aria-label': {
|
|
47
|
+
dependency: ['data-aria-label', 'label'],
|
|
48
|
+
defaultValue: 'No label defined',
|
|
49
|
+
},
|
|
50
|
+
'aria-hidden': {
|
|
51
|
+
dependency: ['data-aria-hidden'],
|
|
52
|
+
defaultValue: null,
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
this.dataTabIndexValueMapper = new DataTabIndexValueMapper(() => {
|
|
56
|
+
return this.host.shadowRoot.querySelector('input');
|
|
57
|
+
});
|
|
41
58
|
this.formFieldController = new FormFieldControllerSlimmer({
|
|
42
59
|
propertyRules: [
|
|
43
60
|
{
|
|
@@ -376,7 +393,7 @@ export class VegaInput {
|
|
|
376
393
|
"text": "Specifies the label or title for the input field.\n\nIt provides descriptive text that helps identify the\n purpose or content expected in the input field."
|
|
377
394
|
},
|
|
378
395
|
"attribute": "label",
|
|
379
|
-
"reflect":
|
|
396
|
+
"reflect": true,
|
|
380
397
|
"defaultValue": "''"
|
|
381
398
|
},
|
|
382
399
|
"labelSuffixButtonProps": {
|
|
@@ -1375,6 +1392,12 @@ export class VegaInput {
|
|
|
1375
1392
|
__decorate([
|
|
1376
1393
|
InjectVegaGlobalSlimmer()
|
|
1377
1394
|
], VegaInput.prototype, "globalSlimmers", void 0);
|
|
1395
|
+
__decorate([
|
|
1396
|
+
InjectVegaSlimmer()
|
|
1397
|
+
], VegaInput.prototype, "ariaAttributesValueMapper", void 0);
|
|
1398
|
+
__decorate([
|
|
1399
|
+
InjectVegaSlimmer()
|
|
1400
|
+
], VegaInput.prototype, "dataTabIndexValueMapper", void 0);
|
|
1378
1401
|
__decorate([
|
|
1379
1402
|
InjectVegaSlimmer()
|
|
1380
1403
|
], VegaInput.prototype, "formFieldController", void 0);
|
|
@@ -26,6 +26,7 @@ export class VegaInputPasscodeKeyboardController extends KeyboardManagerSlimmer
|
|
|
26
26
|
{
|
|
27
27
|
keyCode: ['ArrowLeft', 'ArrowRight'],
|
|
28
28
|
activeElementInScope: [this.inputPasscodeRenderer.getInputPasscodeContainerRef()],
|
|
29
|
+
eventName: 'keydown',
|
|
29
30
|
callback:
|
|
30
31
|
/* istanbul ignore next */
|
|
31
32
|
/* eslint-disable jsdoc/require-jsdoc */
|
|
@@ -72,6 +73,7 @@ export class VegaInputPasscodeKeyboardController extends KeyboardManagerSlimmer
|
|
|
72
73
|
* @param {KeyboardEvent} event - the keyboard event of ArrowLeft and ArrowRight
|
|
73
74
|
*/
|
|
74
75
|
controlDirectionByKeyboard(event) {
|
|
76
|
+
event.preventDefault();
|
|
75
77
|
const currentIndex = this.inputPasscodeRenderer.getCurrentIndex();
|
|
76
78
|
const vegaInputRefs = this.inputPasscodeRenderer.getVegaInputRefs();
|
|
77
79
|
if (event.key === 'ArrowLeft' && currentIndex > 0) {
|
|
@@ -94,7 +94,7 @@ export class VegaInputPasscodeRenderer extends VegaSlimmer {
|
|
|
94
94
|
return this.inputPasscodeContainerRef;
|
|
95
95
|
}
|
|
96
96
|
render() {
|
|
97
|
-
const vegaInputBoxes = Array.from({ length: this.length }).map((_, index) => (h("vega-input", { class: this.size === 'small' ? 'small' : 'medium', key: index,
|
|
97
|
+
const vegaInputBoxes = Array.from({ length: this.length }).map((_, index) => (h("vega-input", { class: this.size === 'small' ? 'small' : 'medium', key: index, "data-tabindex": index !== 0 ? -1 : 0, showClearIcon: false, disabled: this.disabled, "data-aria-hidden": String(!this.isInputAccessibleForScreenReader(index)), "data-aria-label": `Passcode input ${index + 1} of ${this.length}`, value: this.vegaInputValues.get(index) || '', autocomplete: index === 0 ? 'one-time-code' : 'off', inputmode: this.inputType === 'text' ? 'text' : 'numeric', ref: (ref) => {
|
|
98
98
|
this.vegaInputRefs[index] = ref;
|
|
99
99
|
DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, VegaFocus, this.handleVegaFocus(index));
|
|
100
100
|
DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, VegaBlur, this.handleVegaBlur(index));
|
|
@@ -106,12 +106,40 @@ export class VegaInputPasscodeRenderer extends VegaSlimmer {
|
|
|
106
106
|
} })));
|
|
107
107
|
return (h(Host, null,
|
|
108
108
|
this.label && this.renderLabel(),
|
|
109
|
-
h("vega-flex", { class: "vega-input-passcode-container", direction: "row", gap: "size-8", ref: (dom) => (this.inputPasscodeContainerRef = dom) }, vegaInputBoxes),
|
|
109
|
+
h("vega-flex", { class: "vega-input-passcode-container", direction: "row", gap: "size-8", role: "group", "aria-label": this.label || 'One-time password input', ref: (dom) => (this.inputPasscodeContainerRef = dom) }, vegaInputBoxes),
|
|
110
110
|
this.hint && h("vega-hint", null, this.hint)));
|
|
111
111
|
}
|
|
112
112
|
renderLabel() {
|
|
113
113
|
return (h("vega-field-label", { onClick: this.focusInputPasscode, isFieldRequired: this.required, disabled: this.disabled, label: this.label }));
|
|
114
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Find the index of the first empty input box for rendering purposes. If all boxes are filled, return -1.
|
|
117
|
+
*
|
|
118
|
+
* @param {number} inputLength - the input length of the passcode, which is also the number of input boxes to render
|
|
119
|
+
* @returns {number} - the index of the first empty input box, or -1 if all boxes are filled
|
|
120
|
+
*/
|
|
121
|
+
getFirstEmptyIndexForRender(inputLength) {
|
|
122
|
+
for (let index = 0; index < inputLength; index++) {
|
|
123
|
+
const currentValue = this.vegaInputValues.get(index);
|
|
124
|
+
if (!currentValue) {
|
|
125
|
+
return index;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return -1;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Determine whether the input box at the given index should be accessible to screen readers. Only the boxes up to and including the first empty box should be accessible, as screen readers will read out all accessible boxes and we don't want them to read out empty boxes that come before filled boxes.
|
|
132
|
+
*
|
|
133
|
+
* @param {number} index - the index of the input box to check
|
|
134
|
+
* @returns {boolean} - true if the input box should be accessible to screen readers, false otherwise
|
|
135
|
+
*/
|
|
136
|
+
isInputAccessibleForScreenReader(index) {
|
|
137
|
+
const firstEmptyIndexForRender = this.getFirstEmptyIndexForRender(this.length);
|
|
138
|
+
if (firstEmptyIndexForRender === -1) {
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
return index <= firstEmptyIndexForRender;
|
|
142
|
+
}
|
|
115
143
|
/*
|
|
116
144
|
* The below method is e2e-test covered in
|
|
117
145
|
* @see{module:vega-input-passcode-on-input-value-input}
|
|
@@ -28,7 +28,6 @@ export class VegaLeftNavLinkRenderer extends VegaSlimmer {
|
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
30
|
render() {
|
|
31
|
-
var _a;
|
|
32
31
|
const url = this.url || 'javascript:void(0);';
|
|
33
32
|
const classList = this.selected === true ? 'selected' : '';
|
|
34
33
|
return (h(Host, { class: classList, "data-key": this.itemKey },
|
|
@@ -38,8 +37,8 @@ export class VegaLeftNavLinkRenderer extends VegaSlimmer {
|
|
|
38
37
|
h("vega-icon", { icon: this.icon, size: "size-16" })))),
|
|
39
38
|
h("span", { class: "vega-links-name" },
|
|
40
39
|
h("slot", null)),
|
|
41
|
-
h("div", { class: "vega-counter-badge" },
|
|
42
|
-
h("vega-counter-badge", { count: this.deprecatedPropertySlimmer.getValue(), color:
|
|
40
|
+
!!this.deprecatedPropertySlimmer.getValue() && (h("div", { class: "vega-counter-badge" },
|
|
41
|
+
h("vega-counter-badge", { count: this.deprecatedPropertySlimmer.getValue(), color: this.counterBadge.color }))))));
|
|
43
42
|
}
|
|
44
43
|
notifyVegaLeftNav() {
|
|
45
44
|
const vegaLeftNav = findParent(this.host, 'vega-left-nav');
|
|
@@ -2559,6 +2559,11 @@
|
|
|
2559
2559
|
border-bottom-color: transparent;
|
|
2560
2560
|
}
|
|
2561
2561
|
|
|
2562
|
+
:host(.vega-no-suitable-placement) .vega-arrow,
|
|
2563
|
+
:host(.vega-no-suitable-alignment) .vega-arrow {
|
|
2564
|
+
display: none;
|
|
2565
|
+
}
|
|
2566
|
+
|
|
2562
2567
|
:host(.vega-placement-left) .vega-arrow {
|
|
2563
2568
|
transform: rotate(144deg);
|
|
2564
2569
|
right: -9px;
|
package/dist/collection/components/vega-rich-text-editor/dto/renderers/nodes/image-node-renderer.js
CHANGED
|
@@ -57,7 +57,13 @@ class RTEImageNodeRenderer extends RTENodeRenderer {
|
|
|
57
57
|
renderImage(imageAnnotation, node, renderContext) {
|
|
58
58
|
var _a;
|
|
59
59
|
return (h("img", Object.assign({}, (_a = node.getCustomAttributesAnnotation()) === null || _a === void 0 ? void 0 : _a.render({ filterAttributes: ['width', 'height'] }), { class: this.getClassesForImageNode(node, renderContext.editable), style: renderContext.editable
|
|
60
|
-
? Object.assign(Object.assign({}, node.getStyles()), { width: '100%' }) : Object.assign(Object.assign({}, node.getStyles()), imageAnnotation.renderStyle({ standalone: true })), alt: imageAnnotation.alt, "data-size": imageAnnotation.size, src: node.url, ref: (ref) => super.registerRef(ref, node)
|
|
60
|
+
? Object.assign(Object.assign({}, node.getStyles()), { width: '100%' }) : Object.assign(Object.assign({}, node.getStyles()), imageAnnotation.renderStyle({ standalone: true })), alt: imageAnnotation.alt, "data-size": imageAnnotation.size, src: node.url, ref: (ref) => super.registerRef(ref, node),
|
|
61
|
+
// eslint-disable-next-line react/jsx-no-bind
|
|
62
|
+
onError: (e) => {
|
|
63
|
+
const img = e.target;
|
|
64
|
+
img.style.width = '16px';
|
|
65
|
+
img.style.height = '16px';
|
|
66
|
+
} })));
|
|
61
67
|
}
|
|
62
68
|
/**
|
|
63
69
|
* Get the custom class string of the current RTEImageNode.
|
|
@@ -20,10 +20,13 @@ export class InsertImageController extends VegaSlimmer {
|
|
|
20
20
|
* Insert a image to current state
|
|
21
21
|
*
|
|
22
22
|
* @param {string} imageUrl The image url
|
|
23
|
+
* @param {RTEBlock[]} selectedBlocks The current selected blocks, if not provided, will get from selectionController
|
|
24
|
+
* @param {RTENode[]} selectedNodes The current selected nodes, if not provided, will get from selectionController
|
|
25
|
+
* @param {RTERange} currentRange The current selected range, if not provided, will get from selectionController
|
|
23
26
|
* @returns {RTEImageNode} RTEImageNode
|
|
24
27
|
*/
|
|
25
|
-
insertImageToCaretPosition(imageUrl) {
|
|
26
|
-
|
|
28
|
+
insertImageToCaretPosition(imageUrl, selectedBlocks, selectedNodes, currentRange) {
|
|
29
|
+
selectedBlocks || (selectedBlocks = this.selectionController.getSelectedBlocks());
|
|
27
30
|
const imageBlock = new RTEImageBlock(generateUUID());
|
|
28
31
|
const newImageNode = new RTEImageNode(generateUUID(), imageUrl, imageBlock);
|
|
29
32
|
newImageNode.apply(new ImageAnnotationAction('md', ''));
|
|
@@ -33,8 +36,8 @@ export class InsertImageController extends VegaSlimmer {
|
|
|
33
36
|
void this.valueController.flushChanges(this.value);
|
|
34
37
|
}
|
|
35
38
|
else {
|
|
36
|
-
const { startOffset } = this.selectionController.getCurrentRange();
|
|
37
|
-
|
|
39
|
+
const { startOffset } = currentRange || this.selectionController.getCurrentRange();
|
|
40
|
+
selectedNodes || (selectedNodes = this.selectionController.getSelectedNodes());
|
|
38
41
|
selectedBlocks[0].apply(new InsertImageToBlockAction(selectedNodes[0], startOffset, imageBlock));
|
|
39
42
|
}
|
|
40
43
|
this.updateCaretPosition(newImageNode);
|
|
@@ -6,20 +6,46 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { VegaInternalIconManager } from '../../../../../helpers/icon/internal-icon-manager';
|
|
8
8
|
import image from '../../../assets/image';
|
|
9
|
-
import { h } from '@stencil/core';
|
|
9
|
+
import { Fragment, h } from '@stencil/core';
|
|
10
10
|
import { MapToComponentField } from 'vega-slimmer/core';
|
|
11
11
|
import { NodeAnnotationTypeEnum } from '../../../dto/annotations/node-annotation.abstract';
|
|
12
12
|
import { ImageUpdateUrlAction } from '../../../dto/actions/image-update-url-action';
|
|
13
13
|
import { VisualModeToolbarButtonSlimmer } from './visual-mode-toolbar-button-slimmer.abstract';
|
|
14
14
|
import { ModifyContentActionType } from '../../../dto/actions/modify-content-action.abstract';
|
|
15
|
+
import { DomNodeSubjectObserverFactory } from '../../../../../helpers/change-manager/subject/dom-node-subject/dom-node-subject-observer-factory';
|
|
16
|
+
import { VegaClick, VegaDropdownClick } from '../../../../../helpers/event-manager/event-id/vega-event-id';
|
|
17
|
+
import { tryGetDocument } from '../../../../../utils/try-get-document';
|
|
15
18
|
export class ImageToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
|
|
16
19
|
constructor() {
|
|
17
20
|
super({
|
|
18
21
|
icon: 'image',
|
|
19
22
|
tooltip: { text: 'Image' },
|
|
20
23
|
});
|
|
21
|
-
this.
|
|
22
|
-
this.
|
|
24
|
+
this.insertURLImage = async () => {
|
|
25
|
+
const url = this.normalizeSafeImageUrl(this.insertURLInputRef.value);
|
|
26
|
+
this.applyImageNode(url, 'url');
|
|
27
|
+
await this.insertURLModalRef.modal('hide');
|
|
28
|
+
};
|
|
29
|
+
this.handleDropdownItemClick = async (payload) => {
|
|
30
|
+
const safeDocument = tryGetDocument();
|
|
31
|
+
switch (payload.detail) {
|
|
32
|
+
case 'upload':
|
|
33
|
+
this.uploadInputRef.click();
|
|
34
|
+
break;
|
|
35
|
+
case 'url':
|
|
36
|
+
this.currentRange = this.selectionController.getCurrentRange();
|
|
37
|
+
this.currentSelectedNodes = this.selectionController.getSelectedNodes();
|
|
38
|
+
this.currentSelectedBlocks = this.selectionController.getSelectedBlocks();
|
|
39
|
+
safeDocument && safeDocument.body.append(this.insertURLModalRef);
|
|
40
|
+
this.insertURLInputRef.value = '';
|
|
41
|
+
await this.insertURLModalRef.modal('show');
|
|
42
|
+
await this.insertURLInputRef.doFocus();
|
|
43
|
+
break;
|
|
44
|
+
/* istanbul ignore next */
|
|
45
|
+
default:
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
await this.dropdownRef.hide();
|
|
23
49
|
};
|
|
24
50
|
/**
|
|
25
51
|
* The below method is e2e-test covered in
|
|
@@ -32,13 +58,7 @@ export class ImageToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
|
|
|
32
58
|
if (!input.files.length) {
|
|
33
59
|
return;
|
|
34
60
|
}
|
|
35
|
-
const node = this.
|
|
36
|
-
if (!this.updateNodeURLMap) {
|
|
37
|
-
this.updateNodeURLMap = new Map();
|
|
38
|
-
}
|
|
39
|
-
this.updateNodeURLMap.set(node, (url) => {
|
|
40
|
-
node.apply(new ImageUpdateUrlAction(url));
|
|
41
|
-
});
|
|
61
|
+
const node = this.applyImageNode(URL.createObjectURL(input.files[0]), 'upload');
|
|
42
62
|
const payload = {
|
|
43
63
|
file: input.files[0],
|
|
44
64
|
sendBackUploadedURLCallback: this.updateNodeURLMap.get(node),
|
|
@@ -49,8 +69,14 @@ export class ImageToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
|
|
|
49
69
|
}
|
|
50
70
|
renderBtnWrapper(renderBtn) {
|
|
51
71
|
return (h("vega-box", null,
|
|
52
|
-
|
|
53
|
-
|
|
72
|
+
h("vega-dropdown", { selectType: "none", trigger: "click", alignment: "center", ref: (ref) => {
|
|
73
|
+
this.dropdownRef = ref;
|
|
74
|
+
this.addDropdownObserver(ref);
|
|
75
|
+
} },
|
|
76
|
+
renderBtn({ showArrowIcon: true }),
|
|
77
|
+
h("div", Object.assign({ slot: "items" }, super.preventLostFocus()), this.renderDropdownContent())),
|
|
78
|
+
this.renderUploadInput(),
|
|
79
|
+
this.renderInsertURLModal()));
|
|
54
80
|
}
|
|
55
81
|
isSelected() {
|
|
56
82
|
return false;
|
|
@@ -62,10 +88,85 @@ export class ImageToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
|
|
|
62
88
|
selectedNodes.some((node) => node.getAnnotationByType(NodeAnnotationTypeEnum.LINK)) ||
|
|
63
89
|
this.shouldDisabledToolbar(selectedBlock, ModifyContentActionType.INSERT_IMAGE_TO_BLOCK));
|
|
64
90
|
}
|
|
91
|
+
renderDropdownContent() {
|
|
92
|
+
return (h(Fragment, null, ImageToolbarButtonSlimmer.items.map((item) => {
|
|
93
|
+
return (h("vega-dropdown-item", { key: item.key, itemKey: item.key }, this.translationSlimmer.t(item.label)));
|
|
94
|
+
})));
|
|
95
|
+
}
|
|
96
|
+
renderUploadInput() {
|
|
97
|
+
return (h("input", { type: "file", style: { display: 'none' }, ref: (node) => (this.uploadInputRef = node), accept: "image/*", onChange: this.fileInputChange }));
|
|
98
|
+
}
|
|
99
|
+
renderInsertURLModal() {
|
|
100
|
+
return (h("vega-modal", { size: 500, backdropColor: "semi", ref: (node) => (this.insertURLModalRef = node) },
|
|
101
|
+
h("div", { slot: "modal-title" }, this.translationSlimmer.t('Image via URL')),
|
|
102
|
+
h("div", { slot: "modal-content" },
|
|
103
|
+
h("vega-input", { placeholder: this.translationSlimmer.t('URL'), ref: (ref) => (this.insertURLInputRef = ref),
|
|
104
|
+
/* istanbul ignore next */
|
|
105
|
+
// eslint-disable-next-line react/jsx-no-bind
|
|
106
|
+
onKeyDown: async (event) => {
|
|
107
|
+
event.key === 'Enter' && (await this.insertURLImage());
|
|
108
|
+
} })),
|
|
109
|
+
h("vega-flex", { slot: "modal-footer", gap: "size-8", alignItems: "center", justifyContent: "end" },
|
|
110
|
+
h("vega-button", { label: this.translationSlimmer.t('Cancel'), variant: "secondary", ref: (ref) => {
|
|
111
|
+
this.addModalCancelObserver(ref);
|
|
112
|
+
} }),
|
|
113
|
+
h("vega-button", { label: this.translationSlimmer.t('Insert'), ref: (ref) => {
|
|
114
|
+
this.addModalInsertObserver(ref);
|
|
115
|
+
} }))));
|
|
116
|
+
}
|
|
117
|
+
addDropdownObserver(dropdownRef) {
|
|
118
|
+
DomNodeSubjectObserverFactory.addUniqueObserverToNode(dropdownRef, VegaDropdownClick, this.handleDropdownItemClick);
|
|
119
|
+
}
|
|
120
|
+
addModalCancelObserver(buttonRef) {
|
|
121
|
+
DomNodeSubjectObserverFactory.addUniqueObserverToNode(buttonRef, VegaClick, async () => {
|
|
122
|
+
await this.insertURLModalRef.modal('hide');
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
addModalInsertObserver(buttonRef) {
|
|
126
|
+
DomNodeSubjectObserverFactory.addUniqueObserverToNode(buttonRef, VegaClick, this.insertURLImage);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* The below method is e2e-test covered in
|
|
130
|
+
* @see{module:should-update-url-properly-when-upload-images}
|
|
131
|
+
*/
|
|
132
|
+
/* istanbul ignore next */
|
|
133
|
+
applyImageNode(url, type) {
|
|
134
|
+
const node = type === 'url'
|
|
135
|
+
? this.insertImageController.insertImageToCaretPosition(url, this.currentSelectedBlocks, this.currentSelectedNodes, this.currentRange)
|
|
136
|
+
: this.insertImageController.insertImageToCaretPosition(url);
|
|
137
|
+
if (!this.updateNodeURLMap) {
|
|
138
|
+
this.updateNodeURLMap = new Map();
|
|
139
|
+
}
|
|
140
|
+
this.updateNodeURLMap.set(node, (url) => {
|
|
141
|
+
node.apply(new ImageUpdateUrlAction(url));
|
|
142
|
+
});
|
|
143
|
+
return node;
|
|
144
|
+
}
|
|
145
|
+
normalizeSafeImageUrl(url) {
|
|
146
|
+
try {
|
|
147
|
+
const parsedUrl = new URL(url);
|
|
148
|
+
if (parsedUrl.protocol === 'javascript:') {
|
|
149
|
+
return '';
|
|
150
|
+
}
|
|
151
|
+
// eslint-disable-next-line no-empty
|
|
152
|
+
}
|
|
153
|
+
catch (_error) { }
|
|
154
|
+
return url;
|
|
155
|
+
}
|
|
65
156
|
}
|
|
66
157
|
(() => {
|
|
67
158
|
VegaInternalIconManager.register({ image: image });
|
|
68
159
|
})();
|
|
160
|
+
ImageToolbarButtonSlimmer.items = [
|
|
161
|
+
{
|
|
162
|
+
key: 'upload',
|
|
163
|
+
label: 'Upload from computer',
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
key: 'url',
|
|
167
|
+
label: 'Insert via URL',
|
|
168
|
+
},
|
|
169
|
+
];
|
|
69
170
|
__decorate([
|
|
70
171
|
MapToComponentField()
|
|
71
172
|
], ImageToolbarButtonSlimmer.prototype, "insertImageController", void 0);
|
|
@@ -27,7 +27,7 @@ export class VegaRichTextImageEditorRenderer extends VegaSlimmer {
|
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
29
|
render() {
|
|
30
|
-
return (h("vega-popover", { style: { width: '100%' }, trigger: "click", alignment: "start", placement: "bottom", showArrow: false, ref: (ref) => {
|
|
30
|
+
return (h("vega-popover", { style: { width: '100%' }, trigger: "click", alignment: "start", placement: "bottom", showArrow: false, isScreenPosition: true, ref: (ref) => {
|
|
31
31
|
this.popoverRef = ref;
|
|
32
32
|
DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, VegaPopoverShow, () => {
|
|
33
33
|
this.selected = true;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { getWeekdays } from '../utils';
|
|
1
|
+
import { getWeekdays, buildDatePickerAnnouncement, getSystemTimezone } from '../utils';
|
|
2
|
+
import { CalendarDate } from '../calendar-date';
|
|
2
3
|
describe('utils', () => {
|
|
3
4
|
it('should return weekdays as expected by default', () => {
|
|
4
5
|
expect(getWeekdays()).toEqual([0, 1, 2, 3, 4, 5, 6]);
|
|
@@ -6,4 +7,56 @@ describe('utils', () => {
|
|
|
6
7
|
it('should return weekdays as expected when change the firstWeekDay', () => {
|
|
7
8
|
expect(getWeekdays(1)).toEqual([1, 2, 3, 4, 5, 6, 0]);
|
|
8
9
|
});
|
|
10
|
+
it('should return a non-empty string for getSystemTimezone', () => {
|
|
11
|
+
expect(typeof getSystemTimezone()).toBe('string');
|
|
12
|
+
expect(getSystemTimezone().length).toBeGreaterThan(0);
|
|
13
|
+
});
|
|
14
|
+
describe('buildDatePickerAnnouncement', () => {
|
|
15
|
+
it('should return empty string when both startDate and endDate are null', () => {
|
|
16
|
+
expect(buildDatePickerAnnouncement({ mode: 'single', startDate: null })).toBe('');
|
|
17
|
+
expect(buildDatePickerAnnouncement({ mode: 'range', startDate: null, endDate: null })).toBe('');
|
|
18
|
+
});
|
|
19
|
+
it('should return single mode announcement with startDate', () => {
|
|
20
|
+
const startDate = new CalendarDate(2025, 3, 15);
|
|
21
|
+
const result = buildDatePickerAnnouncement({ mode: 'single', startDate });
|
|
22
|
+
expect(result).toContain('Selected result');
|
|
23
|
+
expect(result).toContain('March');
|
|
24
|
+
expect(result).toContain('15');
|
|
25
|
+
expect(result).toContain('2025');
|
|
26
|
+
});
|
|
27
|
+
it('should return empty string for single mode without startDate', () => {
|
|
28
|
+
expect(buildDatePickerAnnouncement({ mode: 'single', startDate: null })).toBe('');
|
|
29
|
+
});
|
|
30
|
+
it('should return range mode announcement with both startDate and endDate', () => {
|
|
31
|
+
const startDate = new CalendarDate(2025, 3, 10);
|
|
32
|
+
const endDate = new CalendarDate(2025, 3, 20);
|
|
33
|
+
const result = buildDatePickerAnnouncement({ mode: 'range', startDate, endDate });
|
|
34
|
+
expect(result).toContain('Selected result');
|
|
35
|
+
expect(result).toContain('Start Date');
|
|
36
|
+
expect(result).toContain('End Date');
|
|
37
|
+
expect(result).toContain('March');
|
|
38
|
+
expect(result).toContain('10');
|
|
39
|
+
expect(result).toContain('20');
|
|
40
|
+
});
|
|
41
|
+
it('should return range mode announcement with only startDate', () => {
|
|
42
|
+
const startDate = new CalendarDate(2025, 6, 1);
|
|
43
|
+
const result = buildDatePickerAnnouncement({ mode: 'range', startDate, endDate: null });
|
|
44
|
+
expect(result).toContain('Selected result');
|
|
45
|
+
expect(result).toContain('Start Date');
|
|
46
|
+
expect(result).toContain('June');
|
|
47
|
+
expect(result).toContain('1');
|
|
48
|
+
expect(result).not.toContain('End Date');
|
|
49
|
+
});
|
|
50
|
+
it('should return empty string for range mode without any dates', () => {
|
|
51
|
+
expect(buildDatePickerAnnouncement({ mode: 'range', startDate: null, endDate: null })).toBe('');
|
|
52
|
+
});
|
|
53
|
+
it('should return empty string for range mode with only endDate', () => {
|
|
54
|
+
const endDate = new CalendarDate(2025, 3, 20);
|
|
55
|
+
expect(buildDatePickerAnnouncement({ mode: 'range', startDate: null, endDate })).toBe('');
|
|
56
|
+
});
|
|
57
|
+
it('should return empty string for single mode with only endDate', () => {
|
|
58
|
+
const endDate = new CalendarDate(2025, 3, 20);
|
|
59
|
+
expect(buildDatePickerAnnouncement({ mode: 'single', startDate: null, endDate })).toBe('');
|
|
60
|
+
});
|
|
61
|
+
});
|
|
9
62
|
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { VegaInternalTranslation } from '../translation/internal-translation-controller';
|
|
1
2
|
/**
|
|
2
3
|
* Get a week days array
|
|
3
4
|
*
|
|
@@ -26,3 +27,37 @@ export var WeekdayLongNames;
|
|
|
26
27
|
export const getSystemTimezone = () => {
|
|
27
28
|
return Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
28
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* Build an aria announcement string for date picker selection.
|
|
32
|
+
* TODO: consider to implement i18n for aria announcement .
|
|
33
|
+
*
|
|
34
|
+
* @param {object} options - The options for building the announcement.
|
|
35
|
+
* @param {'single' | 'range'} options.mode - The date picker selection mode.
|
|
36
|
+
* @param {Nullable<CalendarDate>} options.startDate - The start date.
|
|
37
|
+
* @param {Nullable<CalendarDate>} [options.endDate] - The end date (used in range mode).
|
|
38
|
+
* @returns {string} - The aria announcement string.
|
|
39
|
+
*/
|
|
40
|
+
export const buildDatePickerAnnouncement = (options) => {
|
|
41
|
+
const mode = options.mode;
|
|
42
|
+
const startDate = options.startDate;
|
|
43
|
+
const endDate = options.endDate;
|
|
44
|
+
if (!startDate && !endDate) {
|
|
45
|
+
return '';
|
|
46
|
+
}
|
|
47
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
48
|
+
const formatDate = (d) => `${d.getMonthName()} ${d.date} ${d.year}`;
|
|
49
|
+
if (mode === 'single' && startDate) {
|
|
50
|
+
return `${VegaInternalTranslation.t('Selected result')}: ${formatDate(startDate)}`;
|
|
51
|
+
}
|
|
52
|
+
if (mode === 'range') {
|
|
53
|
+
const startDateLabel = VegaInternalTranslation.t('Start Date');
|
|
54
|
+
const endDateLabel = VegaInternalTranslation.t('End Date');
|
|
55
|
+
if (startDate && endDate) {
|
|
56
|
+
return `${VegaInternalTranslation.t('Selected result')} ${startDateLabel}: ${formatDate(startDate)}. ${endDateLabel}: ${formatDate(endDate)}.`;
|
|
57
|
+
}
|
|
58
|
+
if (startDate) {
|
|
59
|
+
return `${VegaInternalTranslation.t('Selected result')} ${startDateLabel}: ${formatDate(startDate)}.`;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return '';
|
|
63
|
+
};
|