@heartlandone/vega 2.76.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.
Files changed (508) hide show
  1. package/dist/cjs/{app-globals-12b7d808.js → app-globals-1021e33e.js} +7 -7
  2. package/dist/cjs/aria-attributes-value-mapper-9a41b9cf.js +143 -0
  3. package/dist/cjs/{child-nodes-event-prevent-slimmer-84435957.js → child-nodes-event-prevent-slimmer-cc6d2919.js} +1 -1
  4. package/dist/cjs/{code-block-f1480ec3.js → code-block-f9b86a25.js} +1 -1
  5. package/dist/cjs/{component-value-history-controller-slimmer.abstract-a9264cc8.js → component-value-history-controller-slimmer.abstract-6bcff70b.js} +3 -3
  6. package/dist/cjs/{date-required-rule-912469e0.js → date-required-rule-d3c2d088.js} +1 -1
  7. package/dist/cjs/{design-token-41baf118.js → design-token-b21879b6.js} +2 -2
  8. package/dist/cjs/{dto-renderer-manager-809c947b.js → dto-renderer-manager-e2823eb8.js} +2 -2
  9. package/dist/cjs/{element-appender-slimmer-34e4eb56.js → element-appender-slimmer-40d39bba.js} +179 -20
  10. package/dist/cjs/{form-field-controller-slimmer-102f37c7.js → form-field-controller-slimmer-1b3a1388.js} +1 -1
  11. package/dist/cjs/{image-annotation-action-8d9fa20c.js → image-annotation-action-b83283d4.js} +2 -2
  12. package/dist/cjs/index.cjs.js +13 -13
  13. package/dist/cjs/{inject-keyboard-manager-0f5bd568.js → inject-keyboard-manager-ea5c598e.js} +1 -1
  14. package/dist/cjs/{internal-translation-controller-053eb0f1.js → internal-translation-controller-1f84ab0a.js} +15 -0
  15. package/dist/cjs/{keyboard-manager-055e9f67.js → keyboard-manager-16494c34.js} +1 -1
  16. package/dist/cjs/{keyboard-manager-slimmer-0cc0c1c7.js → keyboard-manager-slimmer-5b8fa209.js} +1 -1
  17. package/dist/cjs/legend-input-processor-1e53e5bc.js +2126 -0
  18. package/dist/cjs/loader.cjs.js +9 -9
  19. package/dist/cjs/{month-view-generator-6a6dd527.js → month-view-generator-1a57578d.js} +1 -1
  20. package/dist/cjs/{public-rules-922849f3.js → public-rules-5bd1624d.js} +7 -7
  21. package/dist/cjs/{range-8aa49b08.js → range-7a038973.js} +1 -1
  22. package/dist/cjs/{responsive-format-facade-ea59bdcd.js → responsive-format-facade-0b65ce4a.js} +2 -2
  23. package/dist/cjs/{rich-text-editor-required-rule-22225840.js → rich-text-editor-required-rule-d984c0b6.js} +1 -1
  24. package/dist/cjs/{string-format-strategy.abstract-f2575647.js → string-format-strategy.abstract-714bfad2.js} +1 -1
  25. package/dist/cjs/{string-input-formatter-slimmer-0a334fc6.js → string-input-formatter-slimmer-9ef2ec7a.js} +1 -1
  26. package/dist/cjs/{string-mask-strategy-dda58395.js → string-mask-strategy-bd2c18df.js} +2 -2
  27. package/dist/cjs/{style-formatter-0c3ced39.js → style-formatter-7a4e9811.js} +2 -2
  28. package/dist/cjs/{time-required-rule-d6fa7aa8.js → time-required-rule-50784b9f.js} +1 -1
  29. package/dist/cjs/{token-extension-07cac85d.js → token-extension-5a1c473e.js} +102 -81
  30. package/dist/cjs/{translation-slimmer-4533bd67.js → translation-slimmer-2c207e34.js} +1 -1
  31. package/dist/cjs/{type-guard-407ba0b8.js → type-guard-cd0376d4.js} +36 -1
  32. package/dist/cjs/{valid-credit-card-number-rule-41a8b51b.js → valid-credit-card-number-rule-3f8dc897.js} +1 -1
  33. package/dist/cjs/vega-accordion.cjs.entry.js +7 -7
  34. package/dist/cjs/vega-app-header-button.cjs.entry.js +39 -146
  35. package/dist/cjs/vega-banner.cjs.entry.js +1 -1
  36. package/dist/cjs/vega-bar-chart.cjs.entry.js +2 -2
  37. package/dist/cjs/vega-box.cjs.entry.js +6 -6
  38. package/dist/cjs/vega-breadcrumb.cjs.entry.js +2 -2
  39. package/dist/cjs/vega-button-circle.cjs.entry.js +23 -8
  40. package/dist/cjs/vega-button-group_2.cjs.entry.js +2 -2
  41. package/dist/cjs/vega-button-link.cjs.entry.js +18 -2
  42. package/dist/cjs/vega-button.cjs.entry.js +5 -5
  43. package/dist/cjs/vega-calendar_4.cjs.entry.js +7 -7
  44. package/dist/cjs/vega-card.cjs.entry.js +5 -5
  45. package/dist/cjs/vega-carousel.cjs.entry.js +4 -4
  46. package/dist/cjs/vega-checkbox_2.cjs.entry.js +4 -4
  47. package/dist/cjs/vega-chip.cjs.entry.js +6 -6
  48. package/dist/cjs/vega-code-block.cjs.entry.js +10 -10
  49. package/dist/cjs/vega-color-picker.cjs.entry.js +2 -2
  50. package/dist/cjs/vega-combo-box.cjs.entry.js +7 -7
  51. package/dist/cjs/vega-date-picker_2.cjs.entry.js +128 -25
  52. package/dist/cjs/vega-dialog_2.cjs.entry.js +6 -6
  53. package/dist/cjs/vega-divider.cjs.entry.js +5 -5
  54. package/dist/cjs/vega-dropdown_5.cjs.entry.js +33 -9
  55. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  56. package/dist/cjs/vega-file-uploader.cjs.entry.js +3 -3
  57. package/dist/cjs/vega-flag-icon.cjs.entry.js +5 -5
  58. package/dist/cjs/vega-flex.cjs.entry.js +6 -6
  59. package/dist/cjs/vega-font.cjs.entry.js +5 -5
  60. package/dist/cjs/vega-form.cjs.entry.js +5 -5
  61. package/dist/cjs/vega-grid.cjs.entry.js +5 -5
  62. package/dist/cjs/vega-icon.cjs.entry.js +5 -5
  63. package/dist/cjs/vega-image-uploader.cjs.entry.js +7 -7
  64. package/dist/cjs/vega-input-credit-card.cjs.entry.js +8 -8
  65. package/dist/cjs/vega-input-numeric.cjs.entry.js +7 -7
  66. package/dist/cjs/vega-input-passcode.cjs.entry.js +39 -9
  67. package/dist/cjs/vega-input-phone-number.cjs.entry.js +4757 -5589
  68. package/dist/cjs/vega-input-range.cjs.entry.js +5 -5
  69. package/dist/cjs/vega-input-select.cjs.entry.js +7 -7
  70. package/dist/cjs/vega-input.cjs.entry.js +220 -125
  71. package/dist/cjs/vega-left-nav_5.cjs.entry.js +7 -8
  72. package/dist/cjs/vega-line-chart.cjs.entry.js +325 -23
  73. package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +4 -4
  74. package/dist/cjs/vega-pagination-page-selector-mobile.cjs.entry.js +2 -2
  75. package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +2 -2
  76. package/dist/cjs/vega-pagination.cjs.entry.js +6 -6
  77. package/dist/cjs/vega-pie-chart.cjs.entry.js +5 -88
  78. package/dist/cjs/vega-popover_2.cjs.entry.js +9 -9
  79. package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +4 -4
  80. package/dist/cjs/vega-radio_2.cjs.entry.js +7 -7
  81. package/dist/cjs/vega-rich-text-content.cjs.entry.js +26 -6
  82. package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +129 -31
  83. package/dist/cjs/vega-selection-chip_2.cjs.entry.js +6 -6
  84. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +4 -4
  85. package/dist/cjs/vega-sidenav_3.cjs.entry.js +4 -4
  86. package/dist/cjs/vega-signature-capture.cjs.entry.js +7 -7
  87. package/dist/cjs/vega-stepper.cjs.entry.js +4 -4
  88. package/dist/cjs/vega-tab-group_2.cjs.entry.js +2 -2
  89. package/dist/cjs/vega-table_11.cjs.entry.js +6 -6
  90. package/dist/cjs/vega-textarea.cjs.entry.js +4 -4
  91. package/dist/cjs/vega-time-picker_2.cjs.entry.js +11 -11
  92. package/dist/cjs/vega-toggle-switch.cjs.entry.js +2 -2
  93. package/dist/cjs/vega-tooltip_2.cjs.entry.js +8 -8
  94. package/dist/cjs/vega.cjs.js +9 -9
  95. package/dist/cjs/y-axis-input-processor-54a26515.js +832 -0
  96. package/dist/collection/components/vega-accordion/slimmers/vega-accordion-renderer.js +1 -1
  97. package/dist/collection/components/vega-accordion/vega-accordion.css +5 -0
  98. package/dist/collection/components/vega-app-header-button/vega-app-header-button.js +44 -2
  99. package/dist/collection/components/vega-button-circle/vega-button-circle.js +17 -3
  100. package/dist/collection/components/vega-button-link/vega-button-link.js +16 -1
  101. package/dist/collection/components/vega-calendar/slimmers/common/renderers/vega-calendar-event-preview-popover-renderer.js +1 -1
  102. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-calendar-open-state-controller.js +64 -0
  103. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-selection-controller.js +3 -0
  104. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-header-render.js +3 -3
  105. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-renderer.js +19 -1
  106. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-year-month-switcher-renderer.js +3 -2
  107. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-month-item-renderer.js +18 -3
  108. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.css +196 -207
  109. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.js +32 -0
  110. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.js +25 -0
  111. package/dist/collection/components/vega-input/slimmers/controllers/vega-input-render-mode-controller.js +1 -3
  112. package/dist/collection/components/vega-input/slimmers/renderers/vega-input-input-container-renderer.js +1 -5
  113. package/dist/collection/components/vega-input/slimmers/renderers/vega-input-input-renderer.js +1 -4
  114. package/dist/collection/components/vega-input/slimmers/renderers/vega-input-input-suggestions-renderer.js +5 -2
  115. package/dist/collection/components/vega-input/vega-input.js +24 -1
  116. package/dist/collection/components/vega-input-passcode/slimmers/controllers/vega-input-passcode-keyboard-controller.js +2 -0
  117. package/dist/collection/components/vega-input-passcode/slimmers/renderers/vega-input-passcode-renderer.js +30 -2
  118. package/dist/collection/components/vega-input-phone-number/slimmers/controllers/country-select-controller.js +1 -1
  119. package/dist/collection/components/vega-input-phone-number/slimmers/controllers/vega-input-phone-number-value-controller.js +1 -1
  120. package/dist/collection/components/vega-input-phone-number/slimmers/renderers/country-select-renderer.js +1 -1
  121. package/dist/collection/components/vega-input-phone-number/slimmers/renderers/phone-number-input-renderer.js +1 -1
  122. package/dist/collection/components/vega-input-phone-number/vega-input-phone-number.js +4 -4
  123. package/dist/collection/components/vega-nav/vega-left-nav-link/slimmers/renderers/vega-left-nav-link-renderer.js +2 -3
  124. package/dist/collection/components/vega-popover/vega-popover-content-box/vega-popover-content-box.css +5 -0
  125. package/dist/collection/components/vega-rich-text-content/slimmers/renderers/vega-rich-text-content-renderer.js +15 -0
  126. package/dist/collection/components/vega-rich-text-editor/dto/renderers/nodes/image-node-renderer.js +7 -1
  127. package/dist/collection/components/vega-rich-text-editor/extensions/base-extension-renderer.js +11 -0
  128. package/dist/collection/components/vega-rich-text-editor/extensions/base-toolbar-button-renderer.js +15 -1
  129. package/dist/collection/components/vega-rich-text-editor/extensions/extension.abstract.js +2 -0
  130. package/dist/collection/components/vega-rich-text-editor/extensions/functions/function-extension.js +0 -11
  131. package/dist/collection/components/vega-rich-text-editor/extensions/functions/renderers/function-toolbar-button-renderer.js +23 -23
  132. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-extension.js +0 -10
  133. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-node-renderer.js +7 -17
  134. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-toolbar-button-renderer.js +12 -16
  135. package/dist/collection/components/vega-rich-text-editor/helpers/extension-context-manager.js +31 -0
  136. package/dist/collection/components/vega-rich-text-editor/helpers/extension-context-manager.test.js +19 -0
  137. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/insert-image-controller.js +7 -4
  138. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.js +113 -12
  139. package/dist/collection/components/vega-rich-text-editor/test/extensions/extension-test-utils.js +41 -0
  140. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-image-editor/slimmers/renderers/vega-rich-text-image-editor-renderer.js +1 -1
  141. package/dist/collection/components/vega-tooltip/vega-tooltip-content-box/vega-tooltip-content-box.css +5 -0
  142. package/dist/collection/helpers/calendar/test/utils.test.js +54 -1
  143. package/dist/collection/helpers/calendar/utils.js +35 -0
  144. package/dist/collection/helpers/chart/input-processors/format-time-positions-input-processor.js +2 -2
  145. package/dist/collection/helpers/chart/input-processors/pie-chart-arc-path-input-processor.js +1 -1
  146. package/dist/collection/helpers/chart/input-processors/x-axis-input-processor.js +5 -3
  147. package/dist/collection/helpers/chart/input-processors/x-axis-label-formatter-input-processor.js +2 -1
  148. package/dist/collection/helpers/chart/input-processors/y-axis-input-processor.js +7 -5
  149. package/dist/collection/helpers/chart/interacting-entry-generator/arc-path-hover-generator.js +1 -1
  150. package/dist/collection/helpers/chart/interacting-entry-generator/pie-legend-hover-generator.js +1 -1
  151. package/dist/collection/helpers/chart/renderers/canvas-renderer.js +1 -1
  152. package/dist/collection/helpers/chart/renderers/svg-renderer.js +1 -1
  153. package/dist/collection/helpers/chart/test/drawers/arc-path-drawer.test.js +1 -1
  154. package/dist/collection/helpers/chart/test/input-processors/format-time-positions-input-processor.test.js +1 -1
  155. package/dist/collection/helpers/chart/test/input-processors/sort-positions-input-processor.test.js +1 -1
  156. package/dist/collection/helpers/chart/test/input-processors/x-axis-input-processor.test.js +39 -0
  157. package/dist/collection/helpers/chart/test/input-processors/x-axis-label-formatter-input-processor.test.js +61 -14
  158. package/dist/collection/helpers/chart/test/input-processors/y-axis-input-processor.coverage.test.js +39 -0
  159. package/dist/collection/helpers/chart/test/input-processors/y-axis-input-processor.test.js +14 -0
  160. package/dist/collection/helpers/chart/test/renderers/svg-renderer.test.js +1 -1
  161. package/dist/collection/helpers/common/test/wait-for-component-did-render.test.js +67 -0
  162. package/dist/collection/helpers/slimmers/element-appender/element-appender-slimmer.js +27 -0
  163. package/dist/collection/helpers/slimmers/element-appender/test/element-appender-slimmer.test.js +50 -0
  164. package/dist/collection/helpers/slimmers/mutation-observer/aria-attributes-value-mapper.js +14 -3
  165. package/dist/collection/helpers/slimmers/mutation-observer/data-tab-index-value-mapper.js +80 -0
  166. package/dist/collection/helpers/slimmers/mutation-observer/test/aria-attributes-value-mapper.test.js +55 -3
  167. package/dist/collection/helpers/slimmers/mutation-observer/test/data-tab-index-value-mapper.test.js +120 -0
  168. package/dist/collection/helpers/slimmers/position-calculation/base-position-calculation-strategy.js +123 -9
  169. package/dist/collection/helpers/slimmers/position-calculation/position-calculation-controller.js +14 -4
  170. package/dist/collection/helpers/slimmers/position-calculation/screen-position-calculation-strategy.js +13 -4
  171. package/dist/collection/helpers/slimmers/position-calculation/test/body-position-calculation-strategy.test.js +7 -6
  172. package/dist/collection/helpers/slimmers/position-calculation/test/screen-position-calculation-strategy.test.js +162 -7
  173. package/dist/collection/helpers/translation/locales/en.js +15 -0
  174. package/dist/collection/helpers/translation/tests/internal-translation-controller.test.js +15 -0
  175. package/dist/collection/helpers/ui/test/element-appender.test.js +7 -5
  176. package/dist/collection/helpers/validator/rules/valid-phone-number-rule.js +1 -1
  177. package/dist/collection/helpers/validator/test/rules/valid-phone-number-rule.test.js +10 -0
  178. package/dist/collection/polyfill/d3/d3-array-polyfill.js +89 -0
  179. package/dist/collection/polyfill/d3/d3-axis-polyfill.js +195 -0
  180. package/dist/collection/polyfill/d3/d3-scale-polyfill.js +582 -0
  181. package/dist/collection/polyfill/d3/d3-selection-polyfill.js +274 -0
  182. package/dist/collection/polyfill/d3/d3-shape-polyfill.js +252 -0
  183. package/dist/collection/polyfill/d3/d3-time-format-polyfill.js +207 -0
  184. package/dist/collection/polyfill/d3/d3-time-polyfill.js +99 -0
  185. package/dist/collection/polyfill/d3/index.js +31 -0
  186. package/dist/collection/polyfill/d3/test/d3-array-polyfill.test.js +72 -0
  187. package/dist/collection/polyfill/d3/test/d3-axis-polyfill.test.js +171 -0
  188. package/dist/collection/polyfill/d3/test/d3-integration.test.js +137 -0
  189. package/dist/collection/polyfill/d3/test/d3-scale-polyfill.test.js +382 -0
  190. package/dist/collection/polyfill/d3/test/d3-selection-polyfill.test.js +239 -0
  191. package/dist/collection/polyfill/d3/test/d3-shape-polyfill.test.js +225 -0
  192. package/dist/collection/polyfill/d3/test/d3-time-format-polyfill.test.js +162 -0
  193. package/dist/collection/polyfill/d3/test/d3-time-polyfill.test.js +76 -0
  194. package/dist/collection/polyfill/d3/test/index.test.js +78 -0
  195. package/dist/collection/polyfill/libphonenumber/as-you-type.js +405 -0
  196. package/dist/collection/polyfill/libphonenumber/format-helpers.js +186 -0
  197. package/dist/collection/polyfill/libphonenumber/index.js +22 -0
  198. package/dist/collection/polyfill/libphonenumber/metadata.js +150 -0
  199. package/dist/collection/polyfill/libphonenumber/metadata.json.js +3900 -0
  200. package/dist/collection/polyfill/libphonenumber/parse-phone-number.js +127 -0
  201. package/dist/collection/polyfill/libphonenumber/phone-number.js +38 -0
  202. package/dist/collection/polyfill/libphonenumber/test/as-you-type.test.js +309 -0
  203. package/dist/collection/polyfill/libphonenumber/test/format-helpers.test.js +192 -0
  204. package/dist/collection/polyfill/libphonenumber/test/index.test.js +16 -0
  205. package/dist/collection/polyfill/libphonenumber/test/metadata.test.js +196 -0
  206. package/dist/collection/polyfill/libphonenumber/test/parse-phone-number.test.js +218 -0
  207. package/dist/collection/polyfill/libphonenumber/test/phone-number.test.js +56 -0
  208. package/dist/collection/polyfill/libphonenumber/types.js +23 -0
  209. package/dist/collection/utils/e2e-utils.js +6 -0
  210. package/dist/esm/{app-globals-c0676920.js → app-globals-0b3b7111.js} +7 -7
  211. package/dist/esm/aria-attributes-value-mapper-2c632641.js +141 -0
  212. package/dist/esm/{child-nodes-event-prevent-slimmer-649b9d30.js → child-nodes-event-prevent-slimmer-331312b8.js} +1 -1
  213. package/dist/esm/{code-block-b6247a45.js → code-block-2408a812.js} +1 -1
  214. package/dist/esm/{component-value-history-controller-slimmer.abstract-2bb8533d.js → component-value-history-controller-slimmer.abstract-ac40820f.js} +3 -3
  215. package/dist/esm/{date-required-rule-e771e7d9.js → date-required-rule-09d5aa16.js} +1 -1
  216. package/dist/esm/{design-token-4aee1c56.js → design-token-7dec1eab.js} +2 -2
  217. package/dist/esm/{dto-renderer-manager-6fd22ab7.js → dto-renderer-manager-d413de1e.js} +2 -2
  218. package/dist/esm/{element-appender-slimmer-e4713a72.js → element-appender-slimmer-5d573612.js} +179 -20
  219. package/dist/esm/{form-field-controller-slimmer-5817d14d.js → form-field-controller-slimmer-e1a5a884.js} +1 -1
  220. package/dist/esm/{image-annotation-action-6701b4c9.js → image-annotation-action-54936eaa.js} +2 -2
  221. package/dist/esm/index.js +13 -13
  222. package/dist/esm/{inject-keyboard-manager-78730062.js → inject-keyboard-manager-9339bba8.js} +1 -1
  223. package/dist/esm/{internal-translation-controller-911515f9.js → internal-translation-controller-113a6288.js} +15 -0
  224. package/dist/esm/{keyboard-manager-38934f94.js → keyboard-manager-f9bfa678.js} +1 -1
  225. package/dist/esm/{keyboard-manager-slimmer-9984d922.js → keyboard-manager-slimmer-c8898843.js} +1 -1
  226. package/dist/esm/legend-input-processor-122008c5.js +2116 -0
  227. package/dist/esm/loader.js +9 -9
  228. package/dist/esm/{month-view-generator-eaf9029c.js → month-view-generator-160a9feb.js} +1 -1
  229. package/dist/esm/{public-rules-25cc3a39.js → public-rules-41561e6e.js} +7 -7
  230. package/dist/esm/{range-663f44dc.js → range-a5d78e69.js} +1 -1
  231. package/dist/esm/{responsive-format-facade-7a071174.js → responsive-format-facade-2a36c54a.js} +2 -2
  232. package/dist/esm/{rich-text-editor-required-rule-a238b862.js → rich-text-editor-required-rule-b09039da.js} +1 -1
  233. package/dist/esm/{string-format-strategy.abstract-713fba36.js → string-format-strategy.abstract-944f759b.js} +1 -1
  234. package/dist/esm/{string-input-formatter-slimmer-5b413ff9.js → string-input-formatter-slimmer-2508d88b.js} +1 -1
  235. package/dist/esm/{string-mask-strategy-6beaf664.js → string-mask-strategy-f9e252a2.js} +2 -2
  236. package/dist/esm/{style-formatter-3d06b72d.js → style-formatter-6db1e890.js} +2 -2
  237. package/dist/esm/{time-required-rule-e4138a76.js → time-required-rule-c7cfb257.js} +1 -1
  238. package/dist/esm/{token-extension-e33fd151.js → token-extension-25df8dbb.js} +102 -81
  239. package/dist/esm/{translation-slimmer-2394b173.js → translation-slimmer-9f0339aa.js} +1 -1
  240. package/dist/esm/{type-guard-f50e34d6.js → type-guard-af324dcd.js} +36 -2
  241. package/dist/esm/{valid-credit-card-number-rule-22ce81db.js → valid-credit-card-number-rule-099dba7d.js} +1 -1
  242. package/dist/esm/vega-accordion.entry.js +7 -7
  243. package/dist/esm/vega-app-header-button.entry.js +38 -145
  244. package/dist/esm/vega-banner.entry.js +1 -1
  245. package/dist/esm/vega-bar-chart.entry.js +2 -2
  246. package/dist/esm/vega-box.entry.js +6 -6
  247. package/dist/esm/vega-breadcrumb.entry.js +2 -2
  248. package/dist/esm/vega-button-circle.entry.js +23 -8
  249. package/dist/esm/vega-button-group_2.entry.js +2 -2
  250. package/dist/esm/vega-button-link.entry.js +18 -2
  251. package/dist/esm/vega-button.entry.js +5 -5
  252. package/dist/esm/vega-calendar_4.entry.js +7 -7
  253. package/dist/esm/vega-card.entry.js +5 -5
  254. package/dist/esm/vega-carousel.entry.js +4 -4
  255. package/dist/esm/vega-checkbox_2.entry.js +4 -4
  256. package/dist/esm/vega-chip.entry.js +6 -6
  257. package/dist/esm/vega-code-block.entry.js +10 -10
  258. package/dist/esm/vega-color-picker.entry.js +2 -2
  259. package/dist/esm/vega-combo-box.entry.js +7 -7
  260. package/dist/esm/vega-date-picker_2.entry.js +129 -26
  261. package/dist/esm/vega-dialog_2.entry.js +6 -6
  262. package/dist/esm/vega-divider.entry.js +5 -5
  263. package/dist/esm/vega-dropdown_5.entry.js +34 -10
  264. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  265. package/dist/esm/vega-file-uploader.entry.js +3 -3
  266. package/dist/esm/vega-flag-icon.entry.js +5 -5
  267. package/dist/esm/vega-flex.entry.js +6 -6
  268. package/dist/esm/vega-font.entry.js +5 -5
  269. package/dist/esm/vega-form.entry.js +5 -5
  270. package/dist/esm/vega-grid.entry.js +5 -5
  271. package/dist/esm/vega-icon.entry.js +5 -5
  272. package/dist/esm/vega-image-uploader.entry.js +7 -7
  273. package/dist/esm/vega-input-credit-card.entry.js +8 -8
  274. package/dist/esm/vega-input-numeric.entry.js +7 -7
  275. package/dist/esm/vega-input-passcode.entry.js +39 -9
  276. package/dist/esm/vega-input-phone-number.entry.js +4757 -5589
  277. package/dist/esm/vega-input-range.entry.js +5 -5
  278. package/dist/esm/vega-input-select.entry.js +7 -7
  279. package/dist/esm/vega-input.entry.js +220 -125
  280. package/dist/esm/vega-left-nav_5.entry.js +7 -8
  281. package/dist/esm/vega-line-chart.entry.js +311 -9
  282. package/dist/esm/vega-loader-wrapper_2.entry.js +4 -4
  283. package/dist/esm/vega-pagination-page-selector-mobile.entry.js +2 -2
  284. package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +2 -2
  285. package/dist/esm/vega-pagination.entry.js +6 -6
  286. package/dist/esm/vega-pie-chart.entry.js +5 -88
  287. package/dist/esm/vega-popover_2.entry.js +9 -9
  288. package/dist/esm/vega-progress-tracker_2.entry.js +4 -4
  289. package/dist/esm/vega-radio_2.entry.js +7 -7
  290. package/dist/esm/vega-rich-text-content.entry.js +26 -6
  291. package/dist/esm/vega-rich-text-editor_4.entry.js +130 -32
  292. package/dist/esm/vega-selection-chip_2.entry.js +6 -6
  293. package/dist/esm/vega-selection-tile_2.entry.js +4 -4
  294. package/dist/esm/vega-sidenav_3.entry.js +4 -4
  295. package/dist/esm/vega-signature-capture.entry.js +7 -7
  296. package/dist/esm/vega-stepper.entry.js +4 -4
  297. package/dist/esm/vega-tab-group_2.entry.js +2 -2
  298. package/dist/esm/vega-table_11.entry.js +6 -6
  299. package/dist/esm/vega-textarea.entry.js +4 -4
  300. package/dist/esm/vega-time-picker_2.entry.js +11 -11
  301. package/dist/esm/vega-toggle-switch.entry.js +2 -2
  302. package/dist/esm/vega-tooltip_2.entry.js +8 -8
  303. package/dist/esm/vega.js +9 -9
  304. package/dist/esm/y-axis-input-processor-c7e05353.js +826 -0
  305. package/dist/sri/vega-sri-manifest.json +317 -313
  306. package/dist/types/components/vega-app-header-button/types.d.ts +18 -0
  307. package/dist/types/components/vega-app-header-button/vega-app-header-button.d.ts +8 -1
  308. package/dist/types/components/vega-button-circle/vega-button-circle.d.ts +2 -0
  309. package/dist/types/components/vega-button-link/vega-button-link.d.ts +2 -0
  310. package/dist/types/components/vega-date-picker/slimmers/controllers/vega-date-picker-calendar-open-state-controller.d.ts +21 -0
  311. package/dist/types/components/vega-date-picker/types.d.ts +14 -0
  312. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/controllers/vega-date-picker-calendar-selection-controller.d.ts +1 -0
  313. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-renderer.d.ts +7 -0
  314. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-month-item-renderer.d.ts +3 -0
  315. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.d.ts +9 -1
  316. package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.d.ts +11 -0
  317. package/dist/types/components/vega-input/slimmers/controllers/vega-input-render-mode-controller.d.ts +0 -1
  318. package/dist/types/components/vega-input/slimmers/renderers/vega-input-input-renderer.d.ts +0 -1
  319. package/dist/types/components/vega-input/vega-input.d.ts +4 -0
  320. package/dist/types/components/vega-input-passcode/slimmers/renderers/vega-input-passcode-renderer.d.ts +14 -0
  321. package/dist/types/components/vega-rich-text-content/slimmers/renderers/vega-rich-text-content-renderer.d.ts +6 -0
  322. package/dist/types/components/vega-rich-text-editor/extensions/base-extension-renderer.d.ts +9 -1
  323. package/dist/types/components/vega-rich-text-editor/extensions/base-toolbar-button-renderer.d.ts +9 -1
  324. package/dist/types/components/vega-rich-text-editor/extensions/functions/function-extension.d.ts +0 -7
  325. package/dist/types/components/vega-rich-text-editor/extensions/functions/renderers/function-toolbar-button-renderer.d.ts +5 -10
  326. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-extension.d.ts +1 -5
  327. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-node-renderer.d.ts +3 -8
  328. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-toolbar-button-renderer.d.ts +5 -9
  329. package/dist/types/components/vega-rich-text-editor/helpers/extension-context-manager.d.ts +26 -0
  330. package/dist/types/components/vega-rich-text-editor/helpers/extension-context-manager.test.d.ts +1 -0
  331. package/dist/types/components/vega-rich-text-editor/interface.d.ts +4 -0
  332. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/insert-image-controller.d.ts +7 -1
  333. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.d.ts +30 -2
  334. package/dist/types/components/vega-rich-text-editor/test/extensions/extension-test-utils.d.ts +21 -0
  335. package/dist/types/components.d.ts +22 -2
  336. package/dist/types/helpers/calendar/utils.d.ts +17 -0
  337. package/dist/types/helpers/chart/test/input-processors/y-axis-input-processor.coverage.test.d.ts +1 -0
  338. package/dist/types/helpers/common/test/wait-for-component-did-render.test.d.ts +1 -0
  339. package/dist/types/helpers/slimmers/element-appender/element-appender-slimmer.d.ts +12 -0
  340. package/dist/types/helpers/slimmers/mutation-observer/aria-attributes-value-mapper.d.ts +2 -1
  341. package/dist/types/helpers/slimmers/mutation-observer/data-tab-index-value-mapper.d.ts +35 -0
  342. package/dist/types/helpers/slimmers/mutation-observer/test/data-tab-index-value-mapper.test.d.ts +1 -0
  343. package/dist/types/helpers/slimmers/position-calculation/base-position-calculation-strategy.d.ts +60 -3
  344. package/dist/types/helpers/slimmers/position-calculation/screen-position-calculation-strategy.d.ts +3 -2
  345. package/dist/types/helpers/slimmers/position-calculation/test/body-position-calculation-strategy.test.d.ts +1 -1
  346. package/dist/types/helpers/translation/interface.d.ts +15 -0
  347. package/dist/types/polyfill/d3/d3-array-polyfill.d.ts +48 -0
  348. package/dist/types/polyfill/d3/d3-axis-polyfill.d.ts +53 -0
  349. package/dist/types/polyfill/d3/d3-scale-polyfill.d.ts +42 -0
  350. package/dist/types/polyfill/d3/d3-selection-polyfill.d.ts +173 -0
  351. package/dist/types/polyfill/d3/d3-shape-polyfill.d.ts +129 -0
  352. package/dist/types/polyfill/d3/d3-time-format-polyfill.d.ts +28 -0
  353. package/dist/types/polyfill/d3/d3-time-polyfill.d.ts +68 -0
  354. package/dist/types/polyfill/d3/index.d.ts +27 -0
  355. package/dist/types/polyfill/d3/test/d3-array-polyfill.test.d.ts +1 -0
  356. package/dist/types/polyfill/d3/test/d3-axis-polyfill.test.d.ts +1 -0
  357. package/dist/types/polyfill/d3/test/d3-integration.test.d.ts +1 -0
  358. package/dist/types/polyfill/d3/test/d3-scale-polyfill.test.d.ts +1 -0
  359. package/dist/types/polyfill/d3/test/d3-selection-polyfill.test.d.ts +1 -0
  360. package/dist/types/polyfill/d3/test/d3-shape-polyfill.test.d.ts +1 -0
  361. package/dist/types/polyfill/d3/test/d3-time-format-polyfill.test.d.ts +1 -0
  362. package/dist/types/polyfill/d3/test/d3-time-polyfill.test.d.ts +1 -0
  363. package/dist/types/polyfill/d3/test/index.test.d.ts +1 -0
  364. package/dist/types/polyfill/libphonenumber/as-you-type.d.ts +154 -0
  365. package/dist/types/polyfill/libphonenumber/format-helpers.d.ts +64 -0
  366. package/dist/types/polyfill/libphonenumber/index.d.ts +22 -0
  367. package/dist/types/polyfill/libphonenumber/metadata.d.ts +45 -0
  368. package/dist/types/polyfill/libphonenumber/metadata.json.d.ts +470 -0
  369. package/dist/types/polyfill/libphonenumber/parse-phone-number.d.ts +26 -0
  370. package/dist/types/polyfill/libphonenumber/phone-number.d.ts +24 -0
  371. package/dist/types/polyfill/libphonenumber/test/as-you-type.test.d.ts +1 -0
  372. package/dist/types/polyfill/libphonenumber/test/format-helpers.test.d.ts +1 -0
  373. package/dist/types/polyfill/libphonenumber/test/index.test.d.ts +1 -0
  374. package/dist/types/polyfill/libphonenumber/test/metadata.test.d.ts +1 -0
  375. package/dist/types/polyfill/libphonenumber/test/parse-phone-number.test.d.ts +1 -0
  376. package/dist/types/polyfill/libphonenumber/test/phone-number.test.d.ts +1 -0
  377. package/dist/types/polyfill/libphonenumber/types.d.ts +77 -0
  378. package/dist/types/types/components.type.d.ts +2 -0
  379. package/dist/types/types/flag.type.d.ts +255 -4
  380. package/dist/types/types/ui.type.d.ts +3 -2
  381. package/dist/types/types/vega-chart.d.ts +10 -11
  382. package/dist/types/utils/e2e-utils.d.ts +2 -0
  383. package/dist/vega/index.esm.js +1 -1
  384. package/dist/vega/{p-d8fadcdc.entry.js → p-0037068c.entry.js} +1 -1
  385. package/dist/vega/{p-4bffdb28.js → p-051bbce6.js} +1 -1
  386. package/dist/vega/{p-02a7d60c.entry.js → p-0a3a285b.entry.js} +1 -1
  387. package/dist/vega/{p-1a3236e7.entry.js → p-0ac9a732.entry.js} +1 -1
  388. package/dist/vega/{p-2b49686d.entry.js → p-1033e4c4.entry.js} +1 -1
  389. package/dist/vega/{p-0e679d8c.js → p-10e51081.js} +1 -1
  390. package/dist/vega/p-15335b69.entry.js +1 -0
  391. package/dist/vega/{p-b366deff.entry.js → p-19270396.entry.js} +1 -1
  392. package/dist/vega/{p-10734a00.js → p-1a51bf6f.js} +1 -1
  393. package/dist/vega/{p-2d69632d.js → p-1a9b361b.js} +1 -1
  394. package/dist/vega/p-1ccba615.entry.js +1 -0
  395. package/dist/vega/{p-6dcdb580.entry.js → p-1deedff2.entry.js} +1 -1
  396. package/dist/vega/{p-6d60b66a.entry.js → p-22f3d35c.entry.js} +1 -1
  397. package/dist/vega/{p-3d8122ab.entry.js → p-23427f6a.entry.js} +1 -1
  398. package/dist/vega/p-2466316a.js +1 -0
  399. package/dist/vega/p-27b0af38.entry.js +1 -0
  400. package/dist/vega/{p-bb5e0192.entry.js → p-2c2193f2.entry.js} +1 -1
  401. package/dist/vega/{p-dd3a94f4.entry.js → p-3237be8b.entry.js} +1 -1
  402. package/dist/vega/{p-94a77fbe.entry.js → p-36a09524.entry.js} +1 -1
  403. package/dist/vega/{p-7181861a.js → p-38e850c3.js} +1 -1
  404. package/dist/vega/{p-e2af0e24.entry.js → p-3b9fc697.entry.js} +1 -1
  405. package/dist/vega/{p-3244c605.entry.js → p-41d14339.entry.js} +1 -1
  406. package/dist/vega/{p-a0b66c25.js → p-4c060ba9.js} +1 -1
  407. package/dist/vega/p-4d4bf82a.entry.js +1 -0
  408. package/dist/vega/{p-415ffa35.js → p-4d7d5583.js} +1 -1
  409. package/dist/vega/{p-2a10e2e5.js → p-4f146dae.js} +1 -1
  410. package/dist/vega/p-5f377954.js +1 -1
  411. package/dist/vega/{p-b256b7a4.js → p-600f7d6c.js} +1 -1
  412. package/dist/vega/{p-4ea30592.js → p-6188e783.js} +1 -1
  413. package/dist/vega/p-638d30a5.entry.js +1 -0
  414. package/dist/vega/{p-a7a8a4eb.entry.js → p-67b0ccdc.entry.js} +1 -1
  415. package/dist/vega/p-68846f0d.js +1 -0
  416. package/dist/vega/{p-d7a78c5e.entry.js → p-70444f6f.entry.js} +1 -1
  417. package/dist/vega/{p-e632475e.js → p-7127f966.js} +1 -1
  418. package/dist/vega/{p-49845a91.js → p-718c74ba.js} +1 -1
  419. package/dist/vega/p-77167587.entry.js +1 -0
  420. package/dist/vega/p-78ecfea0.entry.js +1 -0
  421. package/dist/vega/{p-b201f379.js → p-7cde8489.js} +1 -1
  422. package/dist/vega/p-8e34b266.js +1 -0
  423. package/dist/vega/p-9466619f.entry.js +1 -0
  424. package/dist/vega/p-9863e7a1.entry.js +1 -0
  425. package/dist/vega/p-999950d1.js +1 -0
  426. package/dist/vega/{p-9339c6c4.js → p-9a3a5b9e.js} +1 -1
  427. package/dist/vega/{p-b136ebba.entry.js → p-9adfcd47.entry.js} +1 -1
  428. package/dist/vega/{p-d555f677.entry.js → p-9e36f7ff.entry.js} +1 -1
  429. package/dist/vega/{p-8dbdd609.entry.js → p-9f9d9a53.entry.js} +1 -1
  430. package/dist/vega/{p-7958614a.entry.js → p-9feaac4b.entry.js} +1 -1
  431. package/dist/vega/{p-ca5898dc.entry.js → p-a0e69236.entry.js} +1 -1
  432. package/dist/vega/{p-95528b47.js → p-a17312a6.js} +1 -1
  433. package/dist/vega/p-a46e977b.entry.js +1 -0
  434. package/dist/vega/p-a79fdf2f.js +1 -0
  435. package/dist/vega/p-a800bf6d.js +1 -0
  436. package/dist/vega/{p-c29068fb.entry.js → p-aaf9b39f.entry.js} +1 -1
  437. package/dist/vega/{p-2e91295d.entry.js → p-acbb96b3.entry.js} +1 -1
  438. package/dist/vega/p-af2110fc.entry.js +1 -0
  439. package/dist/vega/{p-f14a5eae.entry.js → p-b35bb4a2.entry.js} +1 -1
  440. package/dist/vega/p-b8c10187.js +1 -0
  441. package/dist/vega/p-bdb5180c.js +1 -0
  442. package/dist/vega/{p-01d58eb8.entry.js → p-c086529c.entry.js} +1 -1
  443. package/dist/vega/{p-154f9cf7.entry.js → p-c61bcd92.entry.js} +1 -1
  444. package/dist/vega/{p-bebfbe95.entry.js → p-c7a9960f.entry.js} +1 -1
  445. package/dist/vega/{p-81b044b9.js → p-c7b9b7c2.js} +1 -1
  446. package/dist/vega/{p-f2b0b58a.js → p-c857e6e2.js} +1 -1
  447. package/dist/vega/{p-89f2e16d.entry.js → p-c871619c.entry.js} +1 -1
  448. package/dist/vega/{p-1f3cd061.entry.js → p-cbeb47be.entry.js} +1 -1
  449. package/dist/vega/{p-a786259a.js → p-cf6bfac7.js} +1 -1
  450. package/dist/vega/{p-57927b10.entry.js → p-d07f5d5a.entry.js} +1 -1
  451. package/dist/vega/{p-033c31d8.entry.js → p-d0975995.entry.js} +1 -1
  452. package/dist/vega/{p-d6dbbe61.entry.js → p-d2ee5711.entry.js} +1 -1
  453. package/dist/vega/{p-8950987b.entry.js → p-d2fc470e.entry.js} +1 -1
  454. package/dist/vega/{p-a560d8c5.entry.js → p-d70e1b75.entry.js} +1 -1
  455. package/dist/vega/p-d8180e42.entry.js +1 -0
  456. package/dist/vega/{p-3afc025e.entry.js → p-da0fd3dc.entry.js} +1 -1
  457. package/dist/vega/{p-087ea379.entry.js → p-da552ddf.entry.js} +1 -1
  458. package/dist/vega/{p-eda988d5.entry.js → p-ddce3e0e.entry.js} +1 -1
  459. package/dist/vega/{p-aa1174dc.js → p-dfb12762.js} +1 -1
  460. package/dist/vega/{p-8b153acd.entry.js → p-e0fb1f60.entry.js} +1 -1
  461. package/dist/vega/{p-249df6d2.entry.js → p-e1c017d1.entry.js} +1 -1
  462. package/dist/vega/p-e4917e76.js +1 -0
  463. package/dist/vega/{p-fd7ddd64.entry.js → p-e4c99b72.entry.js} +1 -1
  464. package/dist/vega/{p-9a137bab.entry.js → p-e841c1fe.entry.js} +1 -1
  465. package/dist/vega/{p-f05b8f76.entry.js → p-ea96b0f9.entry.js} +1 -1
  466. package/dist/vega/{p-76181a70.entry.js → p-eab9d999.entry.js} +1 -1
  467. package/dist/vega/{p-2cc9d126.entry.js → p-ed9ad4fd.entry.js} +1 -1
  468. package/dist/vega/{p-2ba78982.entry.js → p-ef603656.entry.js} +1 -1
  469. package/dist/vega/p-f5fcd13e.entry.js +1 -0
  470. package/dist/vega/{p-6d219c44.entry.js → p-f65cb0b6.entry.js} +1 -1
  471. package/dist/vega/p-faa9a3bd.js +1 -0
  472. package/dist/vega/{p-a8792e3d.js → p-fc049028.js} +1 -1
  473. package/dist/vega/p-ff287001.entry.js +1 -0
  474. package/dist/vega/{p-32183637.entry.js → p-ffb3e479.entry.js} +1 -1
  475. package/dist/vega/p-ffd080db.js +1 -0
  476. package/dist/vega/vega.esm.js +1 -1
  477. package/package.json +2 -6
  478. package/dist/cjs/legend-input-processor-27c65353.js +0 -4759
  479. package/dist/cjs/y-axis-input-processor-9fbfd5e7.js +0 -2302
  480. package/dist/esm/legend-input-processor-5ecae3a7.js +0 -4742
  481. package/dist/esm/y-axis-input-processor-bc54314a.js +0 -2290
  482. package/dist/vega/p-179aad4f.entry.js +0 -1
  483. package/dist/vega/p-1f5e35dc.entry.js +0 -1
  484. package/dist/vega/p-28ad1864.entry.js +0 -1
  485. package/dist/vega/p-32033e7a.js +0 -1
  486. package/dist/vega/p-32faa460.entry.js +0 -1
  487. package/dist/vega/p-464559e3.js +0 -1
  488. package/dist/vega/p-46b077d9.js +0 -1
  489. package/dist/vega/p-4e017458.entry.js +0 -1
  490. package/dist/vega/p-4e4a0228.entry.js +0 -1
  491. package/dist/vega/p-5831d6d3.entry.js +0 -1
  492. package/dist/vega/p-644f701a.js +0 -1
  493. package/dist/vega/p-6a62e476.entry.js +0 -1
  494. package/dist/vega/p-6b6f0fb4.js +0 -1
  495. package/dist/vega/p-a13a73fa.entry.js +0 -1
  496. package/dist/vega/p-b597393b.entry.js +0 -1
  497. package/dist/vega/p-be23bef2.js +0 -1
  498. package/dist/vega/p-c1d13eec.entry.js +0 -1
  499. package/dist/vega/p-c3d2f316.js +0 -1
  500. package/dist/vega/p-dad3ba5f.js +0 -1
  501. package/dist/vega/p-e1431c14.entry.js +0 -1
  502. package/dist/vega/p-e89e3ede.entry.js +0 -1
  503. package/dist/vega/p-f3d0f2dc.js +0 -1
  504. package/dist/vega/p-f5bafc45.entry.js +0 -1
  505. package/dist/vega/p-fc1fa345.js +0 -1
  506. /package/dist/cjs/{feature-flag-controller-04cb1e69.js → feature-flag-controller-9129ef52.js} +0 -0
  507. /package/dist/esm/{feature-flag-controller-09ea7e87.js → feature-flag-controller-30f7b625.js} +0 -0
  508. /package/dist/vega/{p-07cb0243.js → p-18e8d9b7.js} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { XAxisLabelFormatterInputProcessor } from '../../input-processors/x-axis-label-formatter-input-processor';
2
- import { scaleTime } from 'd3';
2
+ import { scaleTime } from '../../../../polyfill/d3';
3
3
  describe('xAxisLabelFormatterInputProcessor', () => {
4
4
  const xAxisLabelFormatterInputProcessor = new XAxisLabelFormatterInputProcessor();
5
5
  it('should not override the default scale formatter function when the type is not time or labelFormatter is not empty', () => {
@@ -41,22 +41,69 @@ describe('xAxisLabelFormatterInputProcessor', () => {
41
41
  });
42
42
  it('should call the expect function when call the time formatter function', () => {
43
43
  const mockXAxisLabelFormatterInputProcessor = new XAxisLabelFormatterInputProcessor();
44
- const mockSecond = jest.fn();
45
- const mockMinute = jest.fn();
46
- const mockHour = jest.fn();
47
- const mockDay = jest.fn();
48
- mockXAxisLabelFormatterInputProcessor['formatMillisecond'] = mockSecond;
49
- mockXAxisLabelFormatterInputProcessor['formatSecond'] = mockMinute;
50
- mockXAxisLabelFormatterInputProcessor['formatMinute'] = mockHour;
51
- mockXAxisLabelFormatterInputProcessor['formatHour'] = mockDay;
52
- const testDate = new Date('2023-03-02');
53
- mockXAxisLabelFormatterInputProcessor['timeFormatter'](new Date(testDate.valueOf() - 100));
44
+ const mockMillisecond = jest.fn((_date) => {
45
+ void _date;
46
+ return '';
47
+ });
48
+ const mockSecond = jest.fn((_date) => {
49
+ void _date;
50
+ return '';
51
+ });
52
+ const mockMinute = jest.fn((_date) => {
53
+ void _date;
54
+ return '';
55
+ });
56
+ const mockHour = jest.fn((_date) => {
57
+ void _date;
58
+ return '';
59
+ });
60
+ const mockDay = jest.fn((_date) => {
61
+ void _date;
62
+ return '';
63
+ });
64
+ const mockWeek = jest.fn((_date) => {
65
+ void _date;
66
+ return '';
67
+ });
68
+ const mockMonth = jest.fn((_date) => {
69
+ void _date;
70
+ return '';
71
+ });
72
+ const mockYear = jest.fn((_date) => {
73
+ void _date;
74
+ return '';
75
+ });
76
+ mockXAxisLabelFormatterInputProcessor['formatMillisecond'] = mockMillisecond;
77
+ mockXAxisLabelFormatterInputProcessor['formatSecond'] = mockSecond;
78
+ mockXAxisLabelFormatterInputProcessor['formatMinute'] = mockMinute;
79
+ mockXAxisLabelFormatterInputProcessor['formatHour'] = mockHour;
80
+ mockXAxisLabelFormatterInputProcessor['formatDay'] = mockDay;
81
+ mockXAxisLabelFormatterInputProcessor['formatWeek'] = mockWeek;
82
+ mockXAxisLabelFormatterInputProcessor['formatMonth'] = mockMonth;
83
+ mockXAxisLabelFormatterInputProcessor['formatYear'] = mockYear;
84
+ // millisecond: has ms
85
+ mockXAxisLabelFormatterInputProcessor['timeFormatter'](new Date('2023-03-02T00:00:00.100Z'));
86
+ expect(mockMillisecond).toBeCalledTimes(1);
87
+ // second: at second boundary but within a minute
88
+ mockXAxisLabelFormatterInputProcessor['timeFormatter'](new Date('2023-03-02T00:00:01.000Z'));
54
89
  expect(mockSecond).toBeCalledTimes(1);
55
- mockXAxisLabelFormatterInputProcessor['timeFormatter'](new Date(testDate.valueOf() + 59 * 1000));
90
+ // minute: at minute boundary but within an hour
91
+ mockXAxisLabelFormatterInputProcessor['timeFormatter'](new Date('2023-03-02T00:01:00.000Z'));
56
92
  expect(mockMinute).toBeCalledTimes(1);
57
- mockXAxisLabelFormatterInputProcessor['timeFormatter'](new Date(testDate.valueOf() + 2 * 60 * 1000));
93
+ // hour: at hour boundary but within a day
94
+ mockXAxisLabelFormatterInputProcessor['timeFormatter'](new Date('2023-03-02T01:00:00.000Z'));
58
95
  expect(mockHour).toBeCalledTimes(1);
59
- mockXAxisLabelFormatterInputProcessor['timeFormatter'](new Date(testDate.valueOf() + 60 * 60 * 1000));
96
+ // day: at day boundary but not week boundary (Thu)
97
+ mockXAxisLabelFormatterInputProcessor['timeFormatter'](new Date('2023-03-02T00:00:00.000Z'));
60
98
  expect(mockDay).toBeCalledTimes(1);
99
+ // week: at week boundary (Sun) but not month boundary
100
+ mockXAxisLabelFormatterInputProcessor['timeFormatter'](new Date('2023-03-05T00:00:00.000Z'));
101
+ expect(mockWeek).toBeCalledTimes(1);
102
+ // month: at month boundary but not year boundary
103
+ mockXAxisLabelFormatterInputProcessor['timeFormatter'](new Date('2023-02-01T00:00:00.000Z'));
104
+ expect(mockMonth).toBeCalledTimes(1);
105
+ // year: at year boundary
106
+ mockXAxisLabelFormatterInputProcessor['timeFormatter'](new Date('2023-01-01T00:00:00.000Z'));
107
+ expect(mockYear).toBeCalledTimes(1);
61
108
  });
62
109
  });
@@ -0,0 +1,39 @@
1
+ describe('YAxisInputProcessor - coverage-only branches', () => {
2
+ it('should fall back when polyfill returns undefined/empty', () => {
3
+ jest.isolateModules(() => {
4
+ const createdScales = [];
5
+ jest.doMock('../../../../polyfill/d3', () => {
6
+ const scaleLinear = jest.fn(() => {
7
+ const scale = {
8
+ domain: jest.fn(function () {
9
+ return this;
10
+ }),
11
+ range: jest.fn(function () {
12
+ return this;
13
+ }),
14
+ // intentionally no ticks()
15
+ };
16
+ createdScales.push(scale);
17
+ return scale;
18
+ });
19
+ return {
20
+ scaleLinear,
21
+ max: jest.fn(() => undefined),
22
+ min: jest.fn(() => undefined),
23
+ extent: jest.fn(() => [undefined, undefined]),
24
+ };
25
+ });
26
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
27
+ const requiredModule = require('../../input-processors/y-axis-input-processor');
28
+ const processor = new requiredModule.YAxisInputProcessor();
29
+ const data = [{ x: 1, y: 0 }];
30
+ const result = processor['getScale'](data, [200, 0], 4);
31
+ expect(result.ticks).toBe(4);
32
+ expect(createdScales.length).toBe(2);
33
+ expect(createdScales[0].domain).toHaveBeenCalledWith([0, 0]);
34
+ expect(createdScales[1].domain).toHaveBeenCalledWith([0, 0]);
35
+ expect(createdScales[1].range).toHaveBeenCalledWith([200, 0]);
36
+ });
37
+ });
38
+ });
39
+ export {};
@@ -14,6 +14,20 @@ describe('scaleGenerator', () => {
14
14
  ]);
15
15
  expect(yAxisInputProcessor['getScale'](numberData, [height, 0], 4).scale.domain()[0]).toEqual(0);
16
16
  });
17
+ it('should expand domain/ticks when tick rounding excludes min/max', () => {
18
+ // Use values where the generated tick start/stop (based on a rounded step)
19
+ // does not include the data min/max, forcing both min and max adjustments.
20
+ const numberData = [
21
+ { x: 1, y: -125 },
22
+ { x: 2, y: 210 },
23
+ ];
24
+ const height = 200;
25
+ const result = yAxisInputProcessor['getScale'](numberData, [height, 0], 4);
26
+ const domain = result.scale.domain();
27
+ expect(domain[0]).toBeLessThanOrEqual(-125);
28
+ expect(domain[1]).toBeGreaterThanOrEqual(210);
29
+ expect(result.ticks).toBeGreaterThan(4);
30
+ });
17
31
  // VD-992
18
32
  it('should return the correct min data when call the getScale function', () => {
19
33
  const numberData = [
@@ -1,5 +1,5 @@
1
1
  import { SVGRenderer } from '../../renderers/svg-renderer';
2
- import { scaleLinear } from 'd3';
2
+ import { scaleLinear } from '../../../../polyfill/d3';
3
3
  describe('svg renderer', () => {
4
4
  it('should set context layout when run the set layout function', () => {
5
5
  const context = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
@@ -0,0 +1,67 @@
1
+ import { waitForComponentDidRender } from '../index';
2
+ import ChangeManager from '../../change-manager/change-manager';
3
+ import domNodeSubjectFactory from '../../change-manager/subject/dom-node-subject/dom-node-subject-factory';
4
+ import { VegaInternalComponentDidRender } from '../../event-manager/event-id/vega-internal-event-id';
5
+ /**
6
+ * Creates a minimal HTMLStencilElement-compatible HTMLElement for testing.
7
+ */
8
+ function createComponentRef() {
9
+ return document.createElement('div');
10
+ }
11
+ describe('waitForComponentDidRender', () => {
12
+ it('resolves the promise when ChangeManager notifies the subject', async () => {
13
+ const componentRef = createComponentRef();
14
+ // Start waiting — do NOT await yet; we need to trigger the notify first.
15
+ const waitPromise = waitForComponentDidRender(componentRef);
16
+ // Grab the subject that the function just registered an observer on.
17
+ const subject = domNodeSubjectFactory.getSubject(componentRef, VegaInternalComponentDidRender);
18
+ // Simulate the component firing its "componentDidRender" internal event.
19
+ ChangeManager.notify(subject, null);
20
+ // The promise should now be resolved.
21
+ await expect(waitPromise).resolves.toBeNull();
22
+ });
23
+ it('un registers the observer from ChangeManager after the promise resolves', async () => {
24
+ var _a, _b;
25
+ const componentRef = createComponentRef();
26
+ const waitPromise = waitForComponentDidRender(componentRef);
27
+ const subject = domNodeSubjectFactory.getSubject(componentRef, VegaInternalComponentDidRender);
28
+ // Capture the observer count before notification.
29
+ const observersBefore = ((_a = ChangeManager['pubSubMap'].get(subject)) !== null && _a !== void 0 ? _a : []).length;
30
+ // Notify once — this should resolve the promise AND unregister the observer.
31
+ ChangeManager.notify(subject, null);
32
+ await waitPromise;
33
+ // After resolving, the observer must have been removed.
34
+ const observersAfter = ((_b = ChangeManager['pubSubMap'].get(subject)) !== null && _b !== void 0 ? _b : []).length;
35
+ expect(observersAfter).toBe(observersBefore - 1);
36
+ });
37
+ it('resolves with null', async () => {
38
+ const componentRef = createComponentRef();
39
+ const waitPromise = waitForComponentDidRender(componentRef);
40
+ const subject = domNodeSubjectFactory.getSubject(componentRef, VegaInternalComponentDidRender);
41
+ ChangeManager.notify(subject, null);
42
+ const result = await waitPromise;
43
+ expect(result).toBeNull();
44
+ });
45
+ it('registers an observer with ChangeManager before the event fires', async () => {
46
+ const componentRef = createComponentRef();
47
+ // Spy on register BEFORE calling the function under test.
48
+ const registerSpy = jest.spyOn(ChangeManager, 'register');
49
+ const waitPromise = waitForComponentDidRender(componentRef);
50
+ expect(registerSpy).toHaveBeenCalledTimes(1);
51
+ // Clean up — trigger resolve so the promise does not leak.
52
+ const subject = domNodeSubjectFactory.getSubject(componentRef, VegaInternalComponentDidRender);
53
+ ChangeManager.notify(subject, null);
54
+ await waitPromise;
55
+ registerSpy.mockRestore();
56
+ });
57
+ it('calls ChangeManager.unregister when the observer is notified', async () => {
58
+ const componentRef = createComponentRef();
59
+ const unregisterSpy = jest.spyOn(ChangeManager, 'unregister');
60
+ const waitPromise = waitForComponentDidRender(componentRef);
61
+ const subject = domNodeSubjectFactory.getSubject(componentRef, VegaInternalComponentDidRender);
62
+ ChangeManager.notify(subject, null);
63
+ await waitPromise;
64
+ expect(unregisterSpy).toHaveBeenCalledTimes(1);
65
+ unregisterSpy.mockRestore();
66
+ });
67
+ });
@@ -173,6 +173,7 @@ export class ElementAppenderSlimmer extends VegaSlimmer {
173
173
  show() {
174
174
  this.elementAppender && this.elementAppender.show();
175
175
  this[this.isDropdownShowName] = true;
176
+ this.setAriaOwns();
176
177
  }
177
178
  hide() {
178
179
  this.elementAppender && this.elementAppender.hide();
@@ -182,6 +183,7 @@ export class ElementAppenderSlimmer extends VegaSlimmer {
182
183
  });
183
184
  }
184
185
  destroy() {
186
+ this.removeAriaOwns();
185
187
  this.destroyElementAppender();
186
188
  this[this.isDropdownShowName] = false;
187
189
  }
@@ -264,6 +266,31 @@ export class ElementAppenderSlimmer extends VegaSlimmer {
264
266
  return new NoneTriggerStrategy();
265
267
  }
266
268
  }
269
+ /**
270
+ * Sets `ariaOwnsElements` on the target element to reference the appendable element directly.
271
+ * Uses the Element Reflection API which works across shadow DOM boundaries by using
272
+ * direct element references instead of IDREF strings.
273
+ * This ensures screen readers (e.g. VoiceOver) can navigate to the portal-appended
274
+ * content immediately after the trigger, rather than at the end of the document.
275
+ */
276
+ setAriaOwns() {
277
+ if (this.showConfig) {
278
+ const target = this.showConfig.target;
279
+ const appendableElement = this.showConfig.appendableElement;
280
+ if (target && appendableElement) {
281
+ target.ariaOwnsElements = [appendableElement];
282
+ }
283
+ }
284
+ }
285
+ /**
286
+ * Removes `ariaOwnsElements` from the target element when the popup is hidden or destroyed.
287
+ */
288
+ removeAriaOwns() {
289
+ var _a;
290
+ if ((_a = this.showConfig) === null || _a === void 0 ? void 0 : _a.target) {
291
+ this.showConfig.target.ariaOwnsElements = [];
292
+ }
293
+ }
267
294
  }
268
295
  ElementAppenderSlimmer.DELAY_HIDE_TIME = 100;
269
296
  __decorate([
@@ -568,4 +568,54 @@ describe('ElementAppender slimmer test suite', () => {
568
568
  expect(child2.appendableElement).toHaveClass('vega-force-hidden');
569
569
  });
570
570
  });
571
+ describe('AriaOwns management', () => {
572
+ test('should set ariaOwnsElements on target when show is called', () => {
573
+ const mockedComponent = new MockedComponent();
574
+ const target = new MockHTMLElement('body', 'div');
575
+ const appendableElement = new MockHTMLElement('body', 'div');
576
+ appendableElement.classList.add('vega-force-hidden');
577
+ mockedComponent.target = target;
578
+ mockedComponent.appendableElement = appendableElement;
579
+ mockedComponent.componentDidLoad();
580
+ mockedComponent.show();
581
+ expect(target.ariaOwnsElements).toEqual([
582
+ appendableElement,
583
+ ]);
584
+ });
585
+ test('should remove ariaOwnsElements from target when destroy is called', () => {
586
+ const mockedComponent = new MockedComponent();
587
+ const target = new MockHTMLElement('body', 'div');
588
+ const appendableElement = new MockHTMLElement('body', 'div');
589
+ appendableElement.classList.add('vega-force-hidden');
590
+ mockedComponent.target = target;
591
+ mockedComponent.appendableElement = appendableElement;
592
+ mockedComponent.componentDidLoad();
593
+ mockedComponent.show();
594
+ expect(target.ariaOwnsElements).toEqual([
595
+ appendableElement,
596
+ ]);
597
+ mockedComponent.destroy();
598
+ expect(target.ariaOwnsElements).toEqual([]);
599
+ });
600
+ test('should not throw when show is called without showConfig', () => {
601
+ const mockedComponent = new MockedComponent();
602
+ mockedComponent.target = null;
603
+ mockedComponent.appendableElement = null;
604
+ spyOn(LogUtility, 'error');
605
+ mockedComponent.componentDidLoad();
606
+ expect(() => mockedComponent.show()).not.toThrow();
607
+ });
608
+ test('should not throw when destroy is called without target', () => {
609
+ const mockedComponent = new MockedComponent();
610
+ mockedComponent.target = null;
611
+ mockedComponent.appendableElement = null;
612
+ spyOn(LogUtility, 'error');
613
+ mockedComponent.componentDidLoad();
614
+ expect(() => mockedComponent.destroy()).not.toThrow();
615
+ });
616
+ test('should not throw when destroy is called before componentDidLoad', () => {
617
+ const mockedComponent = new MockedComponent();
618
+ expect(() => mockedComponent.destroy()).not.toThrow();
619
+ });
620
+ });
571
621
  });
@@ -102,12 +102,23 @@ export class AriaAttributesValueMapper extends MutationObserverSlimmer {
102
102
  }
103
103
  }
104
104
  if (finalValue === null || finalValue === undefined || String(finalValue).trim() === '') {
105
- finalValue = defaultValue !== null && defaultValue !== void 0 ? defaultValue : '';
105
+ finalValue = defaultValue;
106
106
  }
107
107
  try {
108
+ if (String(finalValue).trim() === '') {
109
+ target.removeAttribute(ariaAttr);
110
+ return;
111
+ }
108
112
  const existing = target.getAttribute(ariaAttr);
109
- if (existing !== finalValue) {
110
- target.setAttribute(ariaAttr, finalValue);
113
+ if (finalValue === null || finalValue === undefined) {
114
+ if (existing !== null) {
115
+ target.removeAttribute(ariaAttr);
116
+ }
117
+ return;
118
+ }
119
+ const stringValue = String(finalValue);
120
+ if (existing !== stringValue) {
121
+ target.setAttribute(ariaAttr, stringValue);
111
122
  }
112
123
  }
113
124
  catch (e) {
@@ -0,0 +1,80 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { MapToComponentMethod } from 'vega-slimmer/core';
8
+ import { MutationObserverSlimmer } from './mutation-observer-slimmer';
9
+ /**
10
+ * Maps host data-tabindex to inner native input tabindex.
11
+ */
12
+ export class DataTabIndexValueMapper extends MutationObserverSlimmer {
13
+ /**
14
+ * Constructor for DataTabIndexValueMapper
15
+ *
16
+ * @param {() => HTMLElement} targetGetter - Function to get the target HTMLElement
17
+ */
18
+ constructor(targetGetter) {
19
+ super({
20
+ options: { attributes: true, attributeFilter: [DataTabIndexValueMapper.OBSERVED_ATTRIBUTE] },
21
+ // eslint-disable-next-line jsdoc/require-jsdoc
22
+ callback: () => {
23
+ this.performMapping();
24
+ },
25
+ });
26
+ this.targetGetter = targetGetter;
27
+ }
28
+ /**
29
+ * Component lifecycle - [componentDidLoad]
30
+ */
31
+ componentDidLoad() {
32
+ this.performMapping();
33
+ super.componentDidLoad && super.componentDidLoad();
34
+ }
35
+ /**
36
+ * Component lifecycle - [componentDidRender]
37
+ */
38
+ componentDidRender() {
39
+ this.performMapping();
40
+ }
41
+ /**
42
+ * Performs the mapping of host data-tabindex to target element's tabindex.
43
+ * If the host attribute value is null, undefined, or empty string, it removes the tabindex attribute from the target.
44
+ * Otherwise, it sets the target's tabindex to the host attribute value.
45
+ */
46
+ performMapping() {
47
+ const target = this.targetGetter ? this.targetGetter() : null;
48
+ if (!target)
49
+ return;
50
+ const hostValue = this.host.getAttribute(DataTabIndexValueMapper.OBSERVED_ATTRIBUTE);
51
+ if (this.shouldRemoveTabIndex(hostValue)) {
52
+ target.removeAttribute('tabindex');
53
+ return;
54
+ }
55
+ const tabIndexValue = String(hostValue);
56
+ if (target.getAttribute('tabindex') !== tabIndexValue) {
57
+ target.setAttribute('tabindex', tabIndexValue);
58
+ }
59
+ }
60
+ /**
61
+ * Determines whether the tabindex attribute should be removed from the target element.
62
+ *
63
+ * @param {string | null} hostValue - The value of the host element's data-tabindex attribute
64
+ * @returns {boolean} True if the tabindex should be removed, false otherwise
65
+ */
66
+ shouldRemoveTabIndex(hostValue) {
67
+ if (hostValue === null || hostValue === undefined) {
68
+ return true;
69
+ }
70
+ const normalizedValue = String(hostValue).trim().toLowerCase();
71
+ return normalizedValue === '' || normalizedValue === 'null' || normalizedValue === 'undefined';
72
+ }
73
+ }
74
+ DataTabIndexValueMapper.OBSERVED_ATTRIBUTE = 'data-tabindex';
75
+ __decorate([
76
+ MapToComponentMethod('componentDidLoad')
77
+ ], DataTabIndexValueMapper.prototype, "componentDidLoad", null);
78
+ __decorate([
79
+ MapToComponentMethod('componentDidRender')
80
+ ], DataTabIndexValueMapper.prototype, "componentDidRender", null);
@@ -168,7 +168,7 @@ describe('AriaAttributesValueMapper', () => {
168
168
  comp.componentDidLoad();
169
169
  }).not.toThrow();
170
170
  });
171
- it('should set empty string when no defaultValue provided', () => {
171
+ it('should omit aria attribute when no defaultValue provided', () => {
172
172
  const comp = new MockedComponent();
173
173
  const button = document.createElement('button');
174
174
  // no dependencies present on host and no defaultValue in map
@@ -177,8 +177,47 @@ describe('AriaAttributesValueMapper', () => {
177
177
  }));
178
178
  comp.connectedCallback();
179
179
  comp.componentDidLoad();
180
- // should set attribute to empty string when no defaultValue provided
181
- expect(button.getAttribute('aria-label')).toBe('');
180
+ expect(button.hasAttribute('aria-label')).toBeFalsy();
181
+ });
182
+ it('should omit aria attribute when defaultValue is null', () => {
183
+ const comp = new MockedComponent();
184
+ const button = document.createElement('button');
185
+ comp.setMapper(new AriaAttributesValueMapper(() => button, {
186
+ 'aria-label': {
187
+ dependency: ['data-aria-label', 'label'],
188
+ defaultValue: null,
189
+ },
190
+ }));
191
+ comp.connectedCallback();
192
+ comp.componentDidLoad();
193
+ expect(button.hasAttribute('aria-label')).toBeFalsy();
194
+ });
195
+ it('should omit aria attribute when defaultValue is undefined', () => {
196
+ const comp = new MockedComponent();
197
+ const button = document.createElement('button');
198
+ comp.setMapper(new AriaAttributesValueMapper(() => button, {
199
+ 'aria-label': {
200
+ dependency: ['data-aria-label', 'label'],
201
+ defaultValue: undefined,
202
+ },
203
+ }));
204
+ comp.connectedCallback();
205
+ comp.componentDidLoad();
206
+ expect(button.hasAttribute('aria-label')).toBeFalsy();
207
+ });
208
+ it('should remove existing aria attribute when resolved value is undefined', () => {
209
+ const comp = new MockedComponent();
210
+ const button = document.createElement('button');
211
+ button.setAttribute('aria-label', 'legacy-value');
212
+ comp.setMapper(new AriaAttributesValueMapper(() => button, {
213
+ 'aria-label': {
214
+ dependency: ['data-aria-label', 'label'],
215
+ defaultValue: undefined,
216
+ },
217
+ }));
218
+ comp.connectedCallback();
219
+ comp.componentDidLoad();
220
+ expect(button.hasAttribute('aria-label')).toBeFalsy();
182
221
  });
183
222
  it('should handle empty mutations array (pass undefined to performMapping)', () => {
184
223
  const comp = new MockedComponent();
@@ -193,4 +232,17 @@ describe('AriaAttributesValueMapper', () => {
193
232
  MockedMutationObserver.mock.instances[0].trigger([]);
194
233
  expect(button.getAttribute('aria-label')).toBe('test');
195
234
  });
235
+ it('should be null for aria attribute when defaultValue is empty string', () => {
236
+ const comp = new MockedComponent();
237
+ const button = document.createElement('button');
238
+ comp.setMapper(new AriaAttributesValueMapper(() => button, {
239
+ 'aria-label': {
240
+ dependency: ['data-aria-label', 'label'],
241
+ defaultValue: '',
242
+ },
243
+ }));
244
+ comp.connectedCallback();
245
+ comp.componentDidLoad();
246
+ expect(button.getAttribute('aria-label')).toBe(null);
247
+ });
196
248
  });
@@ -0,0 +1,120 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { MockHTMLElement } from '@stencil/core/mock-doc';
8
+ import { InjectVegaSlimmer } from 'vega-slimmer/core';
9
+ import { MockedMutationObserver } from '../../../../utils/spec-utils';
10
+ import { DataTabIndexValueMapper } from '../data-tab-index-value-mapper';
11
+ describe('DataTabIndexValueMapper', () => {
12
+ beforeEach(() => {
13
+ global.MutationObserver = MockedMutationObserver;
14
+ MockedMutationObserver.mockClear();
15
+ });
16
+ class MockedComponent {
17
+ constructor() {
18
+ this.host = new MockHTMLElement('body', 'mocked-component');
19
+ }
20
+ connectedCallback() {
21
+ return;
22
+ }
23
+ componentDidLoad() {
24
+ return;
25
+ }
26
+ setMapper(mapper) {
27
+ this.dataTabIndexValueMapper = mapper;
28
+ }
29
+ }
30
+ __decorate([
31
+ InjectVegaSlimmer()
32
+ ], MockedComponent.prototype, "dataTabIndexValueMapper", void 0);
33
+ it('should map host data-tabindex to native input tabindex on load', () => {
34
+ const comp = new MockedComponent();
35
+ const input = document.createElement('input');
36
+ comp.host.setAttribute('data-tabindex', '-1');
37
+ comp.setMapper(new DataTabIndexValueMapper(() => input));
38
+ comp.connectedCallback();
39
+ comp.componentDidLoad();
40
+ expect(input.getAttribute('tabindex')).toBe('-1');
41
+ expect(MockedMutationObserver.mock.instances[0].observe).toHaveBeenCalledWith(comp.host, {
42
+ attributes: true,
43
+ attributeFilter: ['data-tabindex'],
44
+ });
45
+ });
46
+ it('should update native input tabindex when host data-tabindex changes', () => {
47
+ const comp = new MockedComponent();
48
+ const input = document.createElement('input');
49
+ comp.host.setAttribute('data-tabindex', '0');
50
+ comp.setMapper(new DataTabIndexValueMapper(() => input));
51
+ comp.connectedCallback();
52
+ comp.componentDidLoad();
53
+ expect(input.getAttribute('tabindex')).toBe('0');
54
+ comp.host.setAttribute('data-tabindex', '-1');
55
+ MockedMutationObserver.mock.instances[0].trigger([{ attributeName: 'data-tabindex', oldValue: '0' }]);
56
+ expect(input.getAttribute('tabindex')).toBe('-1');
57
+ });
58
+ it('should remove native input tabindex when host data-tabindex is empty or missing', () => {
59
+ const comp = new MockedComponent();
60
+ const input = document.createElement('input');
61
+ comp.host.setAttribute('data-tabindex', '0');
62
+ comp.setMapper(new DataTabIndexValueMapper(() => input));
63
+ comp.connectedCallback();
64
+ comp.componentDidLoad();
65
+ expect(input.getAttribute('tabindex')).toBe('0');
66
+ comp.host.setAttribute('data-tabindex', '');
67
+ MockedMutationObserver.mock.instances[0].trigger([{ attributeName: 'data-tabindex', oldValue: '0' }]);
68
+ expect(input.hasAttribute('tabindex')).toBeFalsy();
69
+ comp.host.removeAttribute('data-tabindex');
70
+ MockedMutationObserver.mock.instances[0].trigger([{ attributeName: 'data-tabindex', oldValue: '' }]);
71
+ expect(input.hasAttribute('tabindex')).toBeFalsy();
72
+ });
73
+ it('should remove native input tabindex when host data-tabindex is "null" or "undefined" string', () => {
74
+ const comp = new MockedComponent();
75
+ const input = document.createElement('input');
76
+ comp.host.setAttribute('data-tabindex', '0');
77
+ comp.setMapper(new DataTabIndexValueMapper(() => input));
78
+ comp.connectedCallback();
79
+ comp.componentDidLoad();
80
+ expect(input.getAttribute('tabindex')).toBe('0');
81
+ comp.host.setAttribute('data-tabindex', 'null');
82
+ MockedMutationObserver.mock.instances[0].trigger([{ attributeName: 'data-tabindex', oldValue: '0' }]);
83
+ expect(input.hasAttribute('tabindex')).toBeFalsy();
84
+ comp.host.setAttribute('data-tabindex', 'undefined');
85
+ MockedMutationObserver.mock.instances[0].trigger([
86
+ { attributeName: 'data-tabindex', oldValue: 'null' },
87
+ ]);
88
+ expect(input.hasAttribute('tabindex')).toBeFalsy();
89
+ });
90
+ it('should return early when targetGetter returns null', () => {
91
+ const comp = new MockedComponent();
92
+ comp.host.setAttribute('data-tabindex', '0');
93
+ comp.setMapper(new DataTabIndexValueMapper(() => null));
94
+ expect(() => {
95
+ comp.connectedCallback();
96
+ comp.componentDidLoad();
97
+ MockedMutationObserver.mock.instances[0].trigger([
98
+ { attributeName: 'data-tabindex', oldValue: null },
99
+ ]);
100
+ }).not.toThrow();
101
+ });
102
+ it('should return early when targetGetter field is null', () => {
103
+ const comp = new MockedComponent();
104
+ const input = document.createElement('input');
105
+ comp.host.setAttribute('data-tabindex', '1');
106
+ const mapper = new DataTabIndexValueMapper(() => input);
107
+ // force the private readonly field to null so ternary fallback branch is executed
108
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
109
+ mapper.targetGetter = null;
110
+ comp.setMapper(mapper);
111
+ expect(() => {
112
+ comp.connectedCallback();
113
+ comp.componentDidLoad();
114
+ MockedMutationObserver.mock.instances[0].trigger([
115
+ { attributeName: 'data-tabindex', oldValue: null },
116
+ ]);
117
+ }).not.toThrow();
118
+ expect(input.hasAttribute('tabindex')).toBeFalsy();
119
+ });
120
+ });