@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
@@ -27,19 +27,24 @@ export class BasePositionCalculationStrategy extends VegaSlimmer {
27
27
  * returns an ElementPositionBox.
28
28
  */
29
29
  getPositionBox(placement, alignment) {
30
- const placements = placement || this.getPlacements();
31
- const alignments = alignment || this.getAlignments();
30
+ const placements = placement && placement.length > 0 ? placement : this.getPlacements();
31
+ const alignments = alignment && alignment.length > 0 ? alignment : this.getAlignments();
32
32
  const targetBox = this.getTargetBoundBox();
33
33
  const elementBox = this.getElementBoundBox();
34
34
  const containerBox = this.getElementScrollDimension();
35
35
  const suitablePlacement = this.getSuitablePlacement(containerBox, elementBox, targetBox, placements);
36
- const suitableAlignment = this.getSuitableAlignment(containerBox, elementBox, targetBox, suitablePlacement, alignments);
37
- const positionBox = this.calculatePosition(elementBox, targetBox, suitablePlacement, suitableAlignment);
38
- const translocationBox = this.getTranslocationBox(suitablePlacement);
36
+ const activePlacement = suitablePlacement || placements[0];
37
+ const suitableAlignment = this.getSuitableAlignment(containerBox, elementBox, targetBox, activePlacement, alignments);
38
+ const activeAlignment = suitableAlignment || alignments[0];
39
+ const positionBox = this.calculatePosition(elementBox, targetBox, activePlacement, activeAlignment);
40
+ const translocationBox = this.getTranslocationBox(activePlacement);
39
41
  positionBox.placement = suitablePlacement;
40
42
  positionBox.alignment = suitableAlignment;
41
43
  positionBox.left += translocationBox.X;
42
44
  positionBox.top += translocationBox.Y;
45
+ if (!this.showConfig.positionRelativeTo) {
46
+ this.adjustPositionForViewport(positionBox, elementBox, targetBox, activePlacement);
47
+ }
43
48
  return positionBox;
44
49
  }
45
50
  /**
@@ -178,7 +183,7 @@ export class BasePositionCalculationStrategy extends VegaSlimmer {
178
183
  * @param {ElementBoundBox} elementBox - The box of the element to be placed.
179
184
  * @param {ElementBoundBox} targetBox - The box of the target element.
180
185
  * @param {PlacementType[]} placements - The placements that we want to try.
181
- * @returns {PlacementType} A function that takes in a containerBox, elementBox, targetBox, placements, and element.
186
+ * @returns {Nullable<PlacementType>} A function that takes in a containerBox, elementBox, targetBox, placements, and element.
182
187
  */
183
188
  getSuitablePlacement(containerBox, elementBox, targetBox, placements) {
184
189
  const defaultPlacement = placements[0];
@@ -191,7 +196,7 @@ export class BasePositionCalculationStrategy extends VegaSlimmer {
191
196
  No enough space found for placing element and we will keep using the defined placement:
192
197
  ${defaultPlacement}
193
198
  `);
194
- return defaultPlacement;
199
+ return null;
195
200
  }
196
201
  }
197
202
  /**
@@ -257,6 +262,115 @@ export class BasePositionCalculationStrategy extends VegaSlimmer {
257
262
  left: this.calculateLeft(elementBox, targetBox, placement, alignment),
258
263
  };
259
264
  }
265
+ /**
266
+ * Keeps the vertical position within the visible viewport
267
+ *
268
+ * @param {number} top - The calculated top position.
269
+ * @param {number} elementHeight - The height of the element.
270
+ * @returns {number} The top position constrained to the viewport.
271
+ */
272
+ keepVerticallyInView(top, elementHeight) {
273
+ return Math.max(0, Math.min(top, window.innerHeight - elementHeight));
274
+ }
275
+ /**
276
+ * Keeps the horizontal position within the visible viewport
277
+ *
278
+ * @param {number} left - The calculated left position.
279
+ * @param {number} elementWidth - The width of the element.
280
+ * @returns {number} The left position constrained to the viewport.
281
+ */
282
+ keepHorizontallyInView(left, elementWidth) {
283
+ return Math.max(0, Math.min(left, window.innerWidth - elementWidth));
284
+ }
285
+ /**
286
+ * Checks if the target element is visible in the viewport
287
+ *
288
+ * @param {ElementBoundBox} targetBox - The bounding box of the target element.
289
+ * @returns {boolean} True if target is visible in viewport.
290
+ */
291
+ isTargetInView(targetBox) {
292
+ const innerHeight = window.innerHeight;
293
+ const innerWidth = window.innerWidth;
294
+ const targetBottom = targetBox.top + targetBox.height;
295
+ const targetRight = targetBox.left + targetBox.width;
296
+ return (targetBox.top <= innerHeight &&
297
+ targetBottom >= 0 &&
298
+ targetBox.left <= innerWidth &&
299
+ targetRight >= 0);
300
+ }
301
+ /**
302
+ * Corrects `positionBox` so the element stays within the viewport after translocation.
303
+ * Only runs when the target is visible; skips correction entirely if the target has
304
+ * scrolled out of view so the element simply follows it.
305
+ *
306
+ * @param {ElementPositionBox} positionBox - The final position box to adjust (mutated in place).
307
+ * @param {ElementBoundBox} elementBox - Dimensions of the positioned element.
308
+ * @param {ElementBoundBox} targetBox - Bounding box of the target element.
309
+ * @param {PlacementType} placement - Active placement used to select the correction axis.
310
+ */
311
+ adjustPositionForViewport(positionBox, elementBox, targetBox, placement) {
312
+ if (!this.isTargetInView(targetBox)) {
313
+ return;
314
+ }
315
+ if (placement === 'top' || placement === 'bottom') {
316
+ positionBox.top = this.adjustForVerticalOverflow(positionBox.top, elementBox.height, targetBox.height);
317
+ }
318
+ else if (placement === 'left' || placement === 'right') {
319
+ positionBox.left = this.adjustForHorizontalOverflow(positionBox.left, elementBox.width, targetBox.width);
320
+ }
321
+ positionBox.top = this.keepVerticallyInView(positionBox.top, elementBox.height);
322
+ positionBox.left = this.keepHorizontallyInView(positionBox.left, elementBox.width);
323
+ }
324
+ /**
325
+ * Nudges `top` so the element stays within the viewport vertically.
326
+ * Only corrects when the overflow is less than `targetHeight` to keep the element
327
+ * visually anchored to its target; larger overflows are handled by `keepVerticallyInView`.
328
+ *
329
+ * @param {number} top - The calculated top position.
330
+ * @param {number} elementHeight - Height of the positioned element.
331
+ * @param {number} targetHeight - Height of the target, used as the max correctable overflow.
332
+ * @returns {number} The adjusted top position.
333
+ */
334
+ adjustForVerticalOverflow(top, elementHeight, targetHeight) {
335
+ // Pixels the element bleeds past the bottom of the viewport (positive = overflow).
336
+ const overflowBottom = top + elementHeight - window.innerHeight;
337
+ // Pixels the element bleeds past the top of the viewport (positive = overflow).
338
+ const overflowTop = -top;
339
+ // Only nudge when overflow is smaller than targetHeight; larger overflows are left to
340
+ // keepVerticallyInView to hard-clamp, since nudging that far would detach from the target.
341
+ if (overflowBottom > 0 && overflowBottom < targetHeight) {
342
+ return top - overflowBottom; // shift up until bottom edge is flush with viewport bottom
343
+ }
344
+ if (overflowTop > 0 && overflowTop < targetHeight) {
345
+ return top + overflowTop; // shift down until top edge is flush with viewport top
346
+ }
347
+ return top;
348
+ }
349
+ /**
350
+ * Nudges `left` so the element stays within the viewport horizontally.
351
+ * Only corrects when the overflow is less than `targetWidth` to keep the element
352
+ * visually anchored to its target; larger overflows are handled by `keepHorizontallyInView`.
353
+ *
354
+ * @param {number} left - The calculated left position.
355
+ * @param {number} elementWidth - Width of the positioned element.
356
+ * @param {number} targetWidth - Width of the target, used as the max correctable overflow.
357
+ * @returns {number} The adjusted left position.
358
+ */
359
+ adjustForHorizontalOverflow(left, elementWidth, targetWidth) {
360
+ // Pixels the element bleeds past the right edge of the viewport (positive = overflow).
361
+ const overflowRight = left + elementWidth - window.innerWidth;
362
+ // Pixels the element bleeds past the left edge of the viewport (positive = overflow).
363
+ const overflowLeft = -left;
364
+ // Only nudge when overflow is smaller than targetWidth; larger overflows are left to
365
+ // keepHorizontallyInView to hard-clamp, since nudging that far would detach from the target.
366
+ if (overflowRight > 0 && overflowRight < targetWidth) {
367
+ return left - overflowRight; // shift left until right edge is flush with viewport right
368
+ }
369
+ if (overflowLeft > 0 && overflowLeft < targetWidth) {
370
+ return left + overflowLeft; // shift right until left edge is flush with viewport left
371
+ }
372
+ return left;
373
+ }
260
374
  /**
261
375
  * It returns the translocation of the element relative to the target element
262
376
  *
@@ -301,7 +415,7 @@ export class BasePositionCalculationStrategy extends VegaSlimmer {
301
415
  * @param {ElementBoundBox} targetBox - The box of the element that the element to be positioned is aligned to.
302
416
  * @param {PlacementType} placement - The placement of the element relative to the target.
303
417
  * @param {PositionAlignmentType[]} alignments - An array of alignments to try.
304
- * @returns {PositionAlignmentType} the alignment that is suitable for the element.
418
+ * @returns {Nullable<PositionAlignmentType>} the alignment that is suitable for the element.
305
419
  */
306
420
  getSuitableAlignment(containerBox, elementBox, targetBox, placement, alignments) {
307
421
  const defaultAlignment = alignments[0];
@@ -314,7 +428,7 @@ export class BasePositionCalculationStrategy extends VegaSlimmer {
314
428
  No enough space found for placing element and we will keep using the defined alignment:
315
429
  ${defaultAlignment}
316
430
  `);
317
- return defaultAlignment;
431
+ return null;
318
432
  }
319
433
  }
320
434
  /**
@@ -63,10 +63,20 @@ export class PositionCalculationController extends VegaSlimmer {
63
63
  }
64
64
  appendableElement.style.left = `${positionBox.left}px`;
65
65
  appendableElement.style.top = `${positionBox.top}px`;
66
- appendableElement.classList.remove('vega-placement-left', 'vega-placement-right', 'vega-placement-top', 'vega-placement-bottom');
67
- appendableElement.classList.remove('vega-alignment-start', 'vega-alignment-center', 'vega-alignment-end');
68
- appendableElement.classList.add(`vega-placement-${positionBox.placement}`);
69
- appendableElement.classList.add(`vega-alignment-${positionBox.alignment}`);
66
+ appendableElement.classList.remove('vega-placement-left', 'vega-placement-right', 'vega-placement-top', 'vega-placement-bottom', 'vega-no-suitable-placement');
67
+ appendableElement.classList.remove('vega-alignment-start', 'vega-alignment-center', 'vega-alignment-end', 'vega-no-suitable-alignment');
68
+ if (positionBox.placement) {
69
+ appendableElement.classList.add(`vega-placement-${positionBox.placement}`);
70
+ }
71
+ else {
72
+ appendableElement.classList.add(`vega-no-suitable-placement`);
73
+ }
74
+ if (positionBox.alignment) {
75
+ appendableElement.classList.add(`vega-alignment-${positionBox.alignment}`);
76
+ }
77
+ else {
78
+ appendableElement.classList.add(`vega-no-suitable-alignment`);
79
+ }
70
80
  }
71
81
  /**
72
82
  * It sets the width of the appendable element to the width of the target element if the
@@ -9,6 +9,7 @@ import { BasePositionCalculationStrategy } from './base-position-calculation-str
9
9
  import { ScreenScrollPositionUpdate } from './screen-scroll-position-update';
10
10
  import { tryGetDocument } from '../../../utils/try-get-document';
11
11
  import { FeatureFlag } from '../../feature-control/feature-flag-controller';
12
+ import { isNonNullable } from '../../../types/type-guard';
12
13
  /**
13
14
  * calculate position by screen container
14
15
  */
@@ -93,9 +94,17 @@ export class ScreenPositionCalculationStrategy extends BasePositionCalculationSt
93
94
  */
94
95
  getPosition(usePreviousPlacement) {
95
96
  const stayPlacement = usePreviousPlacement ? this.usePreviousPlacement : false;
96
- const positionBox = stayPlacement
97
- ? this.getPositionBox([this.previousPositionBox.placement], [this.previousPositionBox.alignment])
98
- : this.getPositionBox();
97
+ let positionBox;
98
+ if (stayPlacement) {
99
+ positionBox = this.getPositionBox([this.previousPositionBox.placement].filter(isNonNullable), [this.previousPositionBox.alignment].filter(isNonNullable));
100
+ if (!FeatureFlag.isEnabled('VEGA_ELEMENT_APPENDER.AUTO_PLACEMENT')) {
101
+ positionBox.placement = this.previousPositionBox.placement;
102
+ positionBox.alignment = this.previousPositionBox.alignment;
103
+ }
104
+ }
105
+ else {
106
+ positionBox = this.getPositionBox();
107
+ }
99
108
  this.previousPositionBox = positionBox;
100
109
  return positionBox;
101
110
  }
@@ -154,7 +163,7 @@ export class ScreenPositionCalculationStrategy extends BasePositionCalculationSt
154
163
  * @param {ElementBoundBox} elementBox - The box of the element to place.
155
164
  * @param {ElementBoundBox} targetBox - The box of the target element.
156
165
  * @param {PlacementType[]} placements - Ordered list of placements to try.
157
- * @returns {PlacementType} The chosen placement.
166
+ * @returns {Nullable<PlacementType>} The chosen placement.
158
167
  */
159
168
  getSuitablePlacement(containerBox, elementBox, targetBox, placements) {
160
169
  const alignments = this.getAlignments();
@@ -18,7 +18,7 @@ export class PositionCalculationMockedComponent {
18
18
  setIsScreenPosition(isScreenPosition) {
19
19
  this.isScreenPosition = isScreenPosition;
20
20
  }
21
- getPositionBox(container, element, target, placement, alignment, translocation = { X: 0, Y: 0 }) {
21
+ getPositionBox(container, element, target, placement, alignment, translocation = { X: 0, Y: 0 }, positionRelativeTo) {
22
22
  this.container = container;
23
23
  this.showConfig = {
24
24
  target: target,
@@ -27,11 +27,12 @@ export class PositionCalculationMockedComponent {
27
27
  alignment: alignment,
28
28
  translocation: translocation,
29
29
  isScreenPosition: this.isScreenPosition,
30
+ positionRelativeTo: positionRelativeTo,
30
31
  };
31
32
  this.positionCalculationController.setCalculationStrategy();
32
33
  this.positionCalculationController.adjustPosition();
33
- let placementResult;
34
- let alignmentResult;
34
+ let placementResult = null;
35
+ let alignmentResult = null;
35
36
  element.className.split(' ').forEach((item) => {
36
37
  if (item.includes('vega-placement')) {
37
38
  placementResult = item.replace('vega-placement-', '');
@@ -291,7 +292,7 @@ describe('component.getPositionBox', () => {
291
292
  X: 100,
292
293
  Y: 100,
293
294
  });
294
- expect(positionBox).toEqual({ top: -60, left: 200, placement: 'top', alignment: 'start' });
295
+ expect(positionBox).toEqual({ top: 0, left: 200, placement: 'top', alignment: 'start' });
295
296
  const positionBox1 = component.getPositionBox(container, element, target, 'right', undefined, {
296
297
  X: 100,
297
298
  Y: 100,
@@ -301,7 +302,7 @@ describe('component.getPositionBox', () => {
301
302
  X: 100,
302
303
  Y: 100,
303
304
  });
304
- expect(positionBox2).toEqual({ top: 200, left: -60, placement: 'left', alignment: 'start' });
305
+ expect(positionBox2).toEqual({ top: 200, left: 0, placement: 'left', alignment: 'start' });
305
306
  });
306
307
  test('return result as expected when container scrolled', () => {
307
308
  container.scrollTop = 20;
@@ -310,7 +311,7 @@ describe('component.getPositionBox', () => {
310
311
  X: 100,
311
312
  Y: 100,
312
313
  });
313
- expect(positionBox).toEqual({ top: -40, left: 220, placement: 'top', alignment: 'start' });
314
+ expect(positionBox).toEqual({ top: 0, left: 220, placement: 'top', alignment: 'start' });
314
315
  const positionBox1 = component.getPositionBox(container, element, target, 'right', undefined, {
315
316
  X: 100,
316
317
  Y: 100,
@@ -11,28 +11,30 @@ describe('BodyPositionCalculationStrategy.getPositionBox', () => {
11
11
  const element = document.querySelector('.element');
12
12
  const target = document.querySelector('.target');
13
13
  const container = document.querySelector('.container');
14
- function mockElementReturn(element, method, value) {
15
- spyOn(element, method).and.returnValue(value);
16
- }
17
14
  beforeAll(() => {
18
15
  Object.assign(window, { innerWidth: 500 });
19
16
  Object.assign(window, { innerHeight: 500 });
20
17
  });
21
18
  describe('directions', () => {
22
19
  let component;
20
+ let elementRectSpy;
21
+ let targetRectSpy;
23
22
  beforeEach(() => {
24
23
  component = new PositionCalculationMockedComponent();
25
24
  component.setIsScreenPosition(true);
26
- });
27
- beforeAll(() => {
28
- mockElementReturn(element, 'getBoundingClientRect', { width: 50, height: 50 });
29
- mockElementReturn(target, 'getBoundingClientRect', {
25
+ elementRectSpy = jest
26
+ .spyOn(element, 'getBoundingClientRect')
27
+ .mockReturnValue({ width: 50, height: 50 });
28
+ targetRectSpy = jest.spyOn(target, 'getBoundingClientRect').mockReturnValue({
30
29
  width: 100,
31
30
  height: 100,
32
31
  top: 100,
33
32
  left: 100,
34
33
  });
35
34
  });
35
+ afterEach(() => {
36
+ jest.restoreAllMocks();
37
+ });
36
38
  test('return result as expected in top-start', () => {
37
39
  expect(component.getPositionBox(container, element, target, ['top'], ['start'])).toEqual({
38
40
  top: 50,
@@ -129,6 +131,159 @@ describe('BodyPositionCalculationStrategy.getPositionBox', () => {
129
131
  alignment: 'end',
130
132
  });
131
133
  });
134
+ test('nudges element up when bottom placement slightly overflows viewport bottom edge', () => {
135
+ // no space for bottom → suitablePlacement=null, uses default bottom
136
+ // top=420+50=470, overflowBottom=470+50-500=20 < targetH(50) → top=450
137
+ Object.assign(window, { innerHeight: 500, innerWidth: 500 });
138
+ elementRectSpy.mockReturnValue({ width: 50, height: 50 });
139
+ targetRectSpy.mockReturnValue({
140
+ width: 100,
141
+ height: 50,
142
+ top: 420,
143
+ left: 100,
144
+ });
145
+ expect(component.getPositionBox(container, element, target, ['bottom'], ['start'])).toEqual({
146
+ top: 450,
147
+ left: 100,
148
+ placement: null,
149
+ alignment: null,
150
+ });
151
+ });
152
+ test('nudges element down when top placement slightly overflows viewport top edge', () => {
153
+ // no space for top → suitablePlacement=null, uses default top
154
+ // top=30-50=-20, overflowTop=20 < targetH(50) → top=0
155
+ Object.assign(window, { innerHeight: 500, innerWidth: 500 });
156
+ elementRectSpy.mockReturnValue({ width: 50, height: 50 });
157
+ targetRectSpy.mockReturnValue({
158
+ width: 100,
159
+ height: 50,
160
+ top: 30,
161
+ left: 100,
162
+ });
163
+ expect(component.getPositionBox(container, element, target, ['top'], ['start'])).toEqual({
164
+ top: 0,
165
+ left: 100,
166
+ placement: null,
167
+ alignment: null,
168
+ });
169
+ });
170
+ test('nudges element left when right placement slightly overflows viewport right edge', () => {
171
+ // no space for right → suitablePlacement=null, uses default right
172
+ // left=380+100=480, overflowRight=480+50-500=30 < targetW(100) → left=450
173
+ Object.assign(window, { innerHeight: 500, innerWidth: 500 });
174
+ elementRectSpy.mockReturnValue({ width: 50, height: 50 });
175
+ targetRectSpy.mockReturnValue({
176
+ width: 100,
177
+ height: 50,
178
+ top: 100,
179
+ left: 380,
180
+ });
181
+ expect(component.getPositionBox(container, element, target, ['right'], ['start'])).toEqual({
182
+ top: 100,
183
+ left: 450,
184
+ placement: null,
185
+ alignment: null,
186
+ });
187
+ });
188
+ test('nudges element right when left placement slightly overflows viewport left edge', () => {
189
+ // no space for left → suitablePlacement=null, uses default left
190
+ // left=30-50=-20, overflowLeft=20 < targetW(100) → left=0
191
+ Object.assign(window, { innerHeight: 500, innerWidth: 500 });
192
+ elementRectSpy.mockReturnValue({ width: 50, height: 50 });
193
+ targetRectSpy.mockReturnValue({
194
+ width: 100,
195
+ height: 50,
196
+ top: 100,
197
+ left: 30,
198
+ });
199
+ expect(component.getPositionBox(container, element, target, ['left'], ['start'])).toEqual({
200
+ top: 100,
201
+ left: 0,
202
+ placement: null,
203
+ alignment: null,
204
+ });
205
+ });
206
+ test('positions element correctly for bottom+start when fully within viewport', () => {
207
+ // top=200+50=250, left=50, both within viewport → no adjustment
208
+ Object.assign(window, { innerHeight: 500, innerWidth: 500 });
209
+ elementRectSpy.mockReturnValue({ width: 100, height: 100 });
210
+ targetRectSpy.mockReturnValue({
211
+ width: 100,
212
+ height: 50,
213
+ top: 200,
214
+ left: 50,
215
+ });
216
+ expect(component.getPositionBox(container, element, target, ['bottom'], ['start'])).toEqual({
217
+ top: 250,
218
+ left: 50,
219
+ placement: 'bottom',
220
+ alignment: 'start',
221
+ });
222
+ });
223
+ test('positions element correctly for right+center when fully within viewport', () => {
224
+ // top=200-(100-100)/2=200, left=200+100=300, both within viewport → no adjustment
225
+ Object.assign(window, { innerHeight: 500, innerWidth: 500 });
226
+ elementRectSpy.mockReturnValue({ width: 100, height: 100 });
227
+ targetRectSpy.mockReturnValue({
228
+ width: 100,
229
+ height: 100,
230
+ top: 200,
231
+ left: 200,
232
+ });
233
+ expect(component.getPositionBox(container, element, target, ['right'], ['center'])).toEqual({
234
+ top: 200,
235
+ left: 300,
236
+ placement: 'right',
237
+ alignment: 'center',
238
+ });
239
+ });
240
+ describe('positionRelativeTo — viewport adjustment is skipped', () => {
241
+ beforeEach(() => {
242
+ Object.assign(window, { innerHeight: 500, innerWidth: 500 });
243
+ });
244
+ test('does not clamp top when positionRelativeTo is set and element overflows window bottom', () => {
245
+ // Without positionRelativeTo: keepVerticallyInView would clamp top from 821 → 393
246
+ // (Math.min(821, 911-518)=393). With positionRelativeTo the raw calculated top is kept.
247
+ elementRectSpy.mockReturnValue({ width: 300, height: 518 });
248
+ targetRectSpy.mockReturnValue({
249
+ width: 137,
250
+ height: 40,
251
+ top: 781,
252
+ left: 11,
253
+ });
254
+ const result = component.getPositionBox(container, element, target, ['bottom'], ['start'], { X: 0, Y: 0 }, '#test2');
255
+ // top = 781 + 40 = 821, not clamped to 393
256
+ expect(result.top).toBe(821);
257
+ expect(result.left).toBe(11);
258
+ });
259
+ test('applies viewport adjustment normally when positionRelativeTo is not set', () => {
260
+ // Same geometry — without positionRelativeTo, keepVerticallyInView clamps top to 393
261
+ Object.assign(window, { innerHeight: 911, innerWidth: 500 });
262
+ elementRectSpy.mockReturnValue({ width: 300, height: 518 });
263
+ targetRectSpy.mockReturnValue({
264
+ width: 137,
265
+ height: 40,
266
+ top: 781,
267
+ left: 11,
268
+ });
269
+ const result = component.getPositionBox(container, element, target, ['bottom'], ['start']);
270
+ // keepVerticallyInView: Math.min(821, 911-518) = 393
271
+ expect(result.top).toBe(393);
272
+ expect(result.left).toBe(11);
273
+ });
274
+ test('does not clamp left when positionRelativeTo is set and element overflows window right', () => {
275
+ elementRectSpy.mockReturnValue({ width: 200, height: 50 });
276
+ targetRectSpy.mockReturnValue({
277
+ width: 60,
278
+ height: 40,
279
+ top: 100,
280
+ left: 380,
281
+ });
282
+ const result = component.getPositionBox(container, element, target, ['bottom'], ['start'], { X: 0, Y: 0 }, '#test2');
283
+ // left = 380, not clamped to Math.min(380, 500-200)=300
284
+ expect(result.left).toBe(380);
285
+ });
286
+ });
132
287
  });
133
288
  });
134
289
  describe('ScreenScrollPositionUpdate.shouldUpdatePosition', () => {
@@ -31,6 +31,8 @@ export const staticTranslations = {
31
31
  'Upload': 'Upload',
32
32
  'Clear': 'Clear',
33
33
  'Today': 'Today',
34
+ 'Previous month': 'Previous month',
35
+ 'Next month': 'Next month',
34
36
  'Day': 'Day',
35
37
  'Week': 'Week',
36
38
  'Month': 'Month',
@@ -48,6 +50,13 @@ export const staticTranslations = {
48
50
  'Thu-short': 'T',
49
51
  'Fri-short': 'F',
50
52
  'Sat-short': 'S',
53
+ 'Sun-full': 'Sunday',
54
+ 'Mon-full': 'Monday',
55
+ 'Tue-full': 'Tuesday',
56
+ 'Wed-full': 'Wednesday',
57
+ 'Thu-full': 'Thursday',
58
+ 'Fri-full': 'Friday',
59
+ 'Sat-full': 'Saturday',
51
60
  'January': 'January',
52
61
  'February': 'February',
53
62
  'March': 'March',
@@ -103,6 +112,10 @@ export const staticTranslations = {
103
112
  'Less Indent': 'Less Indent',
104
113
  'Link': 'Link',
105
114
  'Image': 'Image',
115
+ 'Upload from computer': 'Upload from computer',
116
+ 'Insert via URL': 'Insert via URL',
117
+ 'Image via URL': 'Image via URL',
118
+ 'Insert': 'Insert',
106
119
  'Clear Style': 'Clear Style',
107
120
  'URL': 'URL',
108
121
  'Text': 'Text',
@@ -145,5 +158,7 @@ export const staticTranslations = {
145
158
  'Saturday': 'Saturday',
146
159
  'am': 'am',
147
160
  'pm': 'pm',
161
+ 'date picker': 'Date Picker',
162
+ 'Selected result': 'Selected result',
148
163
  };
149
164
  export default staticTranslations;
@@ -119,6 +119,8 @@ describe('VegaTranslationController', () => {
119
119
  'Upload': 'Upload',
120
120
  'Clear': 'Clear',
121
121
  'Today': 'Today',
122
+ 'Previous month': 'Previous month',
123
+ 'Next month': 'Next month',
122
124
  'Day': 'Day',
123
125
  'Week': 'Week',
124
126
  'Month': 'Month',
@@ -136,6 +138,13 @@ describe('VegaTranslationController', () => {
136
138
  'Thu-short': 'T',
137
139
  'Fri-short': 'F',
138
140
  'Sat-short': 'S',
141
+ 'Sun-full': 'Sunday',
142
+ 'Mon-full': 'Monday',
143
+ 'Tue-full': 'Tuesday',
144
+ 'Wed-full': 'Wednesday',
145
+ 'Thu-full': 'Thursday',
146
+ 'Fri-full': 'Friday',
147
+ 'Sat-full': 'Saturday',
139
148
  'January': 'January',
140
149
  'February': 'February',
141
150
  'March': 'March',
@@ -191,6 +200,10 @@ describe('VegaTranslationController', () => {
191
200
  'Less Indent': 'Less Indent',
192
201
  'Link': 'Link',
193
202
  'Image': 'Image',
203
+ 'Image via URL': 'Image via URL',
204
+ 'Insert': 'Insert',
205
+ 'Insert via URL': 'Insert via URL',
206
+ 'Upload from computer': 'Upload from computer',
194
207
  'Clear Style': 'Clear Style',
195
208
  'URL': 'URL',
196
209
  'Text': 'Text',
@@ -214,6 +227,8 @@ describe('VegaTranslationController', () => {
214
227
  'Select Language': 'Select Language',
215
228
  'Code Block': 'Code Block',
216
229
  'Copied': 'Copied',
230
+ 'date picker': 'Date Picker',
231
+ 'Selected result': 'Selected result',
217
232
  'Repeat every {0} days': 'Repeat every {0} days',
218
233
  'Repeat daily': 'Repeat daily',
219
234
  'Repeat every {0} weeks on {1}': 'Repeat every {0} weeks on {1}',
@@ -192,7 +192,7 @@ test('content should append to modal while in modal', () => {
192
192
  <div class="modal-dialog"></div>
193
193
  </mock:shadow-root>
194
194
  <vega-input-select slot="content"></vega-input-select>
195
- <div class="dropdown vega-element-appender-appendable vega-alignment-start vega-placement-top" slot="content" style="box-sizing: border-box; left: NaNpx; top: NaNpx; z-index: 10001;"></div>
195
+ <div class="dropdown vega-element-appender-appendable vega-no-suitable-alignment vega-no-suitable-placement" slot="content" style="box-sizing: border-box; left: NaNpx; top: NaNpx; z-index: 10001;"></div>
196
196
  </vega-modal>`);
197
197
  drop.hide();
198
198
  });
@@ -213,7 +213,7 @@ test('content append proper while positionRelativeTo set', () => {
213
213
  expect(document.body).toEqualHtml(`
214
214
  <div id="container">
215
215
  <vega-input-select></vega-input-select>
216
- <div class="dropdown vega-element-appender-appendable vega-placement-top vega-alignment-start" style="box-sizing: border-box; left: NaNpx; top: NaNpx; z-index: 10001;"></div>
216
+ <div class="dropdown vega-element-appender-appendable vega-no-suitable-alignment vega-no-suitable-placement" style="box-sizing: border-box; left: NaNpx; top: NaNpx; z-index: 10001;"></div>
217
217
  </div>
218
218
  `);
219
219
  drop.hide();
@@ -244,7 +244,7 @@ test('content should append to modal content while in scroll modal content', ()
244
244
  </div>
245
245
  </mock:shadow-root>
246
246
  <vega-input-select></vega-input-select>
247
- <div class="dropdown vega-element-appender-appendable vega-alignment-start vega-placement-top" style="box-sizing: border-box; left: NaNpx; top: NaNpx; z-index: 10001;"></div>
247
+ <div class="dropdown vega-element-appender-appendable vega-no-suitable-alignment vega-no-suitable-placement" style="box-sizing: border-box; left: NaNpx; top: NaNpx; z-index: 10001;"></div>
248
248
  </vega-modal>`);
249
249
  drop.hide();
250
250
  });
@@ -267,7 +267,7 @@ test('content should append to popover content while in scroll modal content', (
267
267
  <vega-modal>
268
268
  <vega-popover class="vega-popover">
269
269
  <vega-input-select></vega-input-select>
270
- <div class="dropdown vega-element-appender-appendable vega-placement-top vega-alignment-start" style="box-sizing: border-box; left: NaNpx; top: NaNpx; z-index: 10001;"></div>
270
+ <div class="dropdown vega-element-appender-appendable vega-no-suitable-alignment vega-no-suitable-placement" style="box-sizing: border-box; left: NaNpx; top: NaNpx; z-index: 10001;"></div>
271
271
  </vega-popover>
272
272
  </vega-modal>
273
273
  `);
@@ -515,6 +515,7 @@ describe('screen position', () => {
515
515
  drop1.show();
516
516
  expect(element).toHaveClass('vega-placement-top');
517
517
  expect(element.style.top).toEqual('50px');
518
+ expect(element.style.left).toEqual('100px');
518
519
  targetRectSpyOn.and.returnValue({
519
520
  width: 100,
520
521
  height: 100,
@@ -523,6 +524,7 @@ describe('screen position', () => {
523
524
  });
524
525
  drop1.onScroll();
525
526
  expect(element).toHaveClass('vega-placement-top');
526
- expect(element.style.top).toEqual('-10px');
527
+ expect(element.style.top).toEqual('0px');
528
+ expect(element.style.left).toEqual('100px');
527
529
  });
528
530
  });
@@ -1,4 +1,4 @@
1
- import { getCountryCallingCode, parsePhoneNumber } from 'libphonenumber-js';
1
+ import { getCountryCallingCode, parsePhoneNumber } from '../../../polyfill/libphonenumber';
2
2
  import { InternalFormFieldValidationRule } from './internal-form-field-validation-rule.abstract';
3
3
  /**
4
4
  * A rule that checks if it's a valid phone number
@@ -74,6 +74,16 @@ describe('ValidPhoneNumberRule', () => {
74
74
  visible: true,
75
75
  })).toEqual(false);
76
76
  });
77
+ test('should return invalid result when parsePhoneNumber throws an exception', () => {
78
+ const rule = new ValidPhoneNumberRule(() => 'US');
79
+ // Input containing letters causes parsePhoneNumber to throw NOT_A_NUMBER
80
+ // when extract: false, exercising the catch block in isValidPhoneNumberForCountry
81
+ // eslint-disable-next-line spellcheck/spell-checker
82
+ expect(rule.evaluate('abc123')).toEqual({
83
+ isValid: false,
84
+ message: `Phone number is not valid`,
85
+ });
86
+ });
77
87
  test('should return false when the input is empty', () => {
78
88
  const rule = new ValidPhoneNumberRule(() => 'US', true);
79
89
  expect(rule.canEvaluate('')).toBeFalsy();