@heartlandone/vega 2.74.0 → 2.75.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/dist/cjs/{app-globals-e9f2edcf.js → app-globals-bf183914.js} +8 -8
  2. package/dist/cjs/{child-nodes-event-prevent-slimmer-536d29fc.js → child-nodes-event-prevent-slimmer-aca87dac.js} +1 -1
  3. package/dist/cjs/click-outside-only-to-dismiss-strategy-407f6d1e.js +32 -0
  4. package/dist/cjs/{code-block-c8ae7e0a.js → code-block-c1d2e6a8.js} +2 -2
  5. package/dist/cjs/{component-value-history-controller-slimmer.abstract-13968181.js → component-value-history-controller-slimmer.abstract-787c67dc.js} +4 -4
  6. package/dist/cjs/{date-required-rule-99cca681.js → date-required-rule-30ee62d0.js} +1 -1
  7. package/dist/cjs/{design-token-4e23c50a.js → design-token-cbc01283.js} +2 -2
  8. package/dist/cjs/{dom-node-subject-observer-factory-1c8f7880.js → dom-node-subject-observer-factory-b5e71bf6.js} +4 -0
  9. package/dist/cjs/{dto-renderer-manager-ca753971.js → dto-renderer-manager-2fc24151.js} +3 -3
  10. package/dist/cjs/{element-appender-slimmer-dc769946.js → element-appender-slimmer-318d29c7.js} +160 -36
  11. package/dist/cjs/{event-emit-slimmer-6a591353.js → event-emit-slimmer-2dacabbd.js} +2 -2
  12. package/dist/cjs/{form-field-controller-slimmer-6e3e14fd.js → form-field-controller-slimmer-aef2fb1e.js} +2 -2
  13. package/dist/cjs/{function-extension-5972c73c.js → function-extension-ca9aa115.js} +5 -5
  14. package/dist/cjs/{image-annotation-action-92df8979.js → image-annotation-action-e4a35325.js} +3 -3
  15. package/dist/cjs/{index-638a0f0d.js → index-95fca64f.js} +1 -1
  16. package/dist/cjs/index.cjs.js +15 -15
  17. package/dist/cjs/{inject-keyboard-manager-a6101379.js → inject-keyboard-manager-d21b4387.js} +1 -1
  18. package/dist/cjs/{internal-vega-event-manager-d587a33c.js → internal-vega-event-manager-6befeb34.js} +13 -2
  19. package/dist/cjs/{keyboard-manager-d8adb0ed.js → keyboard-manager-3dea6b28.js} +1 -1
  20. package/dist/cjs/{keyboard-manager-slimmer-15e65357.js → keyboard-manager-slimmer-0d45f944.js} +1 -1
  21. package/dist/cjs/{language-extension-d78389f9.js → language-extension-38e4905e.js} +2 -2
  22. package/dist/cjs/loader.cjs.js +11 -11
  23. package/dist/cjs/{month-view-generator-706c5477.js → month-view-generator-49cc5fc2.js} +1 -1
  24. package/dist/cjs/{public-rules-23a86d33.js → public-rules-661823fa.js} +7 -7
  25. package/dist/cjs/{range-80f19554.js → range-79b668e7.js} +1 -1
  26. package/dist/cjs/{responsive-format-facade-8d195366.js → responsive-format-facade-f71d399c.js} +4 -4
  27. package/dist/cjs/{rich-text-editor-required-rule-80304585.js → rich-text-editor-required-rule-d5feeffd.js} +1 -1
  28. package/dist/cjs/sanitize-fb222510.js +131 -0
  29. package/dist/cjs/{string-format-strategy.abstract-a8264fca.js → string-format-strategy.abstract-63514c60.js} +1 -1
  30. package/dist/cjs/{string-input-formatter-slimmer-338bbd73.js → string-input-formatter-slimmer-f3e0bbc7.js} +3 -3
  31. package/dist/cjs/{string-mask-strategy-4e7d3780.js → string-mask-strategy-d23ac21a.js} +2 -2
  32. package/dist/cjs/{style-formatter-dbda894b.js → style-formatter-566df206.js} +2 -2
  33. package/dist/cjs/{sub-state-notify-slimmer-1efa69c4.js → sub-state-notify-slimmer-468e19aa.js} +1 -1
  34. package/dist/cjs/{sub-state-observer-slimmer-6afa62f5.js → sub-state-observer-slimmer-5d0b8ac3.js} +1 -1
  35. package/dist/cjs/{time-required-rule-9d39a620.js → time-required-rule-c96ecdc9.js} +1 -1
  36. package/dist/cjs/{type-guard-69d2cf01.js → type-guard-a0f026d8.js} +12 -0
  37. package/dist/cjs/{valid-credit-card-number-rule-9f40d1d9.js → valid-credit-card-number-rule-c854bed9.js} +1 -1
  38. package/dist/cjs/vega-accordion.cjs.entry.js +9 -9
  39. package/dist/cjs/vega-app-header-button.cjs.entry.js +10 -10
  40. package/dist/cjs/vega-banner.cjs.entry.js +3 -3
  41. package/dist/cjs/vega-box.cjs.entry.js +9 -9
  42. package/dist/cjs/vega-breadcrumb.cjs.entry.js +4 -4
  43. package/dist/cjs/vega-button-circle.cjs.entry.js +10 -10
  44. package/dist/cjs/vega-button-group_2.cjs.entry.js +6 -6
  45. package/dist/cjs/vega-button-link.cjs.entry.js +4 -4
  46. package/dist/cjs/vega-button.cjs.entry.js +9 -9
  47. package/dist/cjs/vega-calendar_4.cjs.entry.js +8 -8
  48. package/dist/cjs/vega-card.cjs.entry.js +8 -8
  49. package/dist/cjs/vega-carousel.cjs.entry.js +8 -8
  50. package/dist/cjs/vega-checkbox_2.cjs.entry.js +6 -6
  51. package/dist/cjs/vega-chip.cjs.entry.js +10 -10
  52. package/dist/cjs/vega-code-block.cjs.entry.js +10 -10
  53. package/dist/cjs/vega-color-picker.cjs.entry.js +5 -5
  54. package/dist/cjs/vega-combo-box.cjs.entry.js +11 -10
  55. package/dist/cjs/vega-date-picker_2.cjs.entry.js +389 -342
  56. package/dist/cjs/vega-dialog_2.cjs.entry.js +10 -10
  57. package/dist/cjs/vega-divider.cjs.entry.js +8 -8
  58. package/dist/cjs/vega-dropdown_5.cjs.entry.js +36 -18
  59. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  60. package/dist/cjs/vega-field-label.cjs.entry.js +3 -3
  61. package/dist/cjs/vega-file-uploader.cjs.entry.js +5 -5
  62. package/dist/cjs/vega-flag-icon.cjs.entry.js +8 -8
  63. package/dist/cjs/vega-flex.cjs.entry.js +9 -9
  64. package/dist/cjs/vega-font.cjs.entry.js +8 -8
  65. package/dist/cjs/vega-form.cjs.entry.js +8 -8
  66. package/dist/cjs/vega-grid.cjs.entry.js +8 -8
  67. package/dist/cjs/vega-icon.cjs.entry.js +8 -8
  68. package/dist/cjs/vega-image-uploader.cjs.entry.js +11 -11
  69. package/dist/cjs/vega-input-credit-card.cjs.entry.js +10 -10
  70. package/dist/cjs/vega-input-numeric.cjs.entry.js +10 -10
  71. package/dist/cjs/vega-input-passcode.cjs.entry.js +9 -9
  72. package/dist/cjs/vega-input-phone-number.cjs.entry.js +11 -11
  73. package/dist/cjs/vega-input-range.cjs.entry.js +6 -6
  74. package/dist/cjs/vega-input-select.cjs.entry.js +19 -14
  75. package/dist/cjs/vega-input.cjs.entry.js +339 -98
  76. package/dist/cjs/vega-item-toggle.cjs.entry.js +3 -3
  77. package/dist/cjs/vega-left-nav_5.cjs.entry.js +11 -11
  78. package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +7 -7
  79. package/dist/cjs/vega-page-notification_2.cjs.entry.js +1 -1
  80. package/dist/cjs/vega-pagination-page-selector-mobile.cjs.entry.js +3 -3
  81. package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +1 -1
  82. package/dist/cjs/vega-pagination.cjs.entry.js +9 -9
  83. package/dist/cjs/vega-popover_2.cjs.entry.js +12 -12
  84. package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +10 -10
  85. package/dist/cjs/vega-radio_2.cjs.entry.js +9 -9
  86. package/dist/cjs/vega-rich-text-content.cjs.entry.js +7 -7
  87. package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +17 -17
  88. package/dist/cjs/vega-segment-control.cjs.entry.js +3 -3
  89. package/dist/cjs/vega-selection-chip_2.cjs.entry.js +12 -12
  90. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +7 -7
  91. package/dist/cjs/vega-sidenav_3.cjs.entry.js +10 -10
  92. package/dist/cjs/vega-signature-capture.cjs.entry.js +11 -11
  93. package/dist/cjs/vega-stepper.cjs.entry.js +6 -6
  94. package/dist/cjs/vega-tab-group_2.cjs.entry.js +4 -4
  95. package/dist/cjs/vega-table_11.cjs.entry.js +11 -11
  96. package/dist/cjs/vega-textarea.cjs.entry.js +6 -6
  97. package/dist/cjs/vega-time-picker_2.cjs.entry.js +18 -17
  98. package/dist/cjs/vega-toggle-switch.cjs.entry.js +5 -5
  99. package/dist/cjs/vega-tooltip_2.cjs.entry.js +10 -10
  100. package/dist/cjs/vega.cjs.js +11 -11
  101. package/dist/collection/components/vega-app-header-button/vega-app-header-button.js +1 -1
  102. package/dist/collection/components/vega-button-group/vega-button-group-item/vega-button-group-item.js +1 -1
  103. package/dist/collection/components/vega-calendar/vega-calendar.js +1 -1
  104. package/dist/collection/components/vega-combo-box/slimmers/renderers/vega-combo-box-dropdown-renderer.js +2 -1
  105. package/dist/collection/components/vega-date-picker/assets/icons.js +4 -1
  106. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-calendar-open-state-controller.js +2 -1
  107. package/dist/collection/components/vega-date-picker/slimmers/renderers/vega-date-picker-calendar-renderer.js +2 -2
  108. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-header-render.js +109 -0
  109. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-renderer.js +4 -0
  110. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-year-month-switcher-renderer.js +42 -70
  111. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-month-item-renderer.js +12 -56
  112. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.css +435 -108
  113. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.js +5 -0
  114. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-search-controller.js +5 -1
  115. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-source-controller.js +7 -0
  116. package/dist/collection/components/vega-dropdown/vega-dropdown-item/slimmers/renderers/vega-dropdown-item-renderer.js +3 -2
  117. package/dist/collection/components/vega-dropdown/vega-dropdown.js +19 -4
  118. package/dist/collection/components/vega-field-label/vega-field-label.js +1 -1
  119. package/dist/collection/components/vega-input/slimmers/controllers/vega-input-render-mode-controller.js +51 -0
  120. package/dist/collection/components/vega-input/slimmers/renderers/vega-input-input-renderer.js +6 -0
  121. package/dist/collection/components/vega-input/slimmers/renderers/vega-input-input-suggestions-renderer.js +142 -0
  122. package/dist/collection/components/vega-input/slimmers/renderers/vega-input-renderer.js +12 -1
  123. package/dist/collection/components/vega-input/vega-input.js +200 -3
  124. package/dist/collection/components/vega-input-select/slimmers/renderers/vega-input-select-dropdown-renderer.js +8 -3
  125. package/dist/collection/components/vega-selection-chip/vega-selection-chip.js +1 -1
  126. package/dist/collection/components/vega-time-picker/slimmers/controllers/vega-time-picker-range-dropdown-controller.js +2 -1
  127. package/dist/collection/components/vega-time-picker/slimmers/controllers/vega-time-picker-single-dropdown-controller.js +2 -1
  128. package/dist/collection/constants/ui.js +2 -0
  129. package/dist/collection/helpers/event-manager/event-id/component-event-id-map.js +13 -2
  130. package/dist/collection/helpers/event-manager/event-id/vega-event-id.js +2 -0
  131. package/dist/collection/helpers/event-manager/test/component-event-id-map.test.js +3 -1
  132. package/dist/collection/helpers/event-manager/test/vega-event-manager.test.js +3 -1
  133. package/dist/collection/helpers/slimmers/element-appender/element-appender-slimmer.js +60 -32
  134. package/dist/collection/helpers/slimmers/element-appender/test/element-appender-slimmer.test.js +3 -2
  135. package/dist/collection/helpers/slimmers/element-appender/trigger-strategies/click-outside-only-to-dismiss-strategy.js +28 -0
  136. package/dist/collection/helpers/slimmers/element-appender/trigger-strategies/click-trigger-strategy.js +33 -0
  137. package/dist/collection/helpers/slimmers/element-appender/trigger-strategies/hover-trigger-strategy.js +42 -0
  138. package/dist/collection/helpers/slimmers/element-appender/trigger-strategies/none-trigger-strategy.js +22 -0
  139. package/dist/collection/helpers/slimmers/element-appender/trigger-strategies/trigger-strategy.interface.js +1 -0
  140. package/dist/collection/types/test/type-guard.test.js +8 -1
  141. package/dist/collection/types/type-guard.js +11 -0
  142. package/dist/collection/utils/sanitize.js +126 -0
  143. package/dist/collection/utils/test/sanitize.test.js +65 -0
  144. package/dist/esm/{app-globals-9203a3e5.js → app-globals-f3414aca.js} +8 -8
  145. package/dist/esm/{child-nodes-event-prevent-slimmer-e6f98de5.js → child-nodes-event-prevent-slimmer-e662bee2.js} +1 -1
  146. package/dist/esm/click-outside-only-to-dismiss-strategy-3d286c1b.js +30 -0
  147. package/dist/esm/{code-block-4e0d321d.js → code-block-8ee34ab6.js} +2 -2
  148. package/dist/esm/{component-value-history-controller-slimmer.abstract-0ab0d9f0.js → component-value-history-controller-slimmer.abstract-a61bf821.js} +4 -4
  149. package/dist/esm/{date-required-rule-a9980386.js → date-required-rule-47ecc28f.js} +1 -1
  150. package/dist/esm/{design-token-175c4c0c.js → design-token-9b299589.js} +2 -2
  151. package/dist/esm/{dom-node-subject-observer-factory-1aaa1159.js → dom-node-subject-observer-factory-064ee2b2.js} +3 -1
  152. package/dist/esm/{dto-renderer-manager-402e89d0.js → dto-renderer-manager-f07cf2d9.js} +3 -3
  153. package/dist/esm/{element-appender-slimmer-7e7aa230.js → element-appender-slimmer-7cb08343.js} +160 -36
  154. package/dist/esm/{event-emit-slimmer-2d791d0e.js → event-emit-slimmer-09827cec.js} +2 -2
  155. package/dist/esm/{form-field-controller-slimmer-257928c1.js → form-field-controller-slimmer-5d9dc384.js} +2 -2
  156. package/dist/esm/{function-extension-45e413ff.js → function-extension-63028f20.js} +5 -5
  157. package/dist/esm/{image-annotation-action-2cdbbd57.js → image-annotation-action-53529cd9.js} +3 -3
  158. package/dist/esm/{index-0d487fae.js → index-51a7da7f.js} +1 -1
  159. package/dist/esm/index.js +15 -15
  160. package/dist/esm/{inject-keyboard-manager-9241968c.js → inject-keyboard-manager-83d76ff5.js} +1 -1
  161. package/dist/esm/{internal-vega-event-manager-fdee2a0a.js → internal-vega-event-manager-efb6786e.js} +13 -2
  162. package/dist/esm/{keyboard-manager-89acac79.js → keyboard-manager-c92808d8.js} +1 -1
  163. package/dist/esm/{keyboard-manager-slimmer-e303cb7d.js → keyboard-manager-slimmer-79c78ce8.js} +1 -1
  164. package/dist/esm/{language-extension-4bed2436.js → language-extension-c4ff21dd.js} +2 -2
  165. package/dist/esm/loader.js +11 -11
  166. package/dist/esm/{month-view-generator-4bec99fd.js → month-view-generator-16192182.js} +1 -1
  167. package/dist/esm/{public-rules-05e83e40.js → public-rules-6ebdfcf5.js} +7 -7
  168. package/dist/esm/{range-5086f250.js → range-5257c062.js} +1 -1
  169. package/dist/esm/{responsive-format-facade-f995d6de.js → responsive-format-facade-05e53016.js} +4 -4
  170. package/dist/esm/{rich-text-editor-required-rule-0d1147a8.js → rich-text-editor-required-rule-f63a37d1.js} +1 -1
  171. package/dist/esm/sanitize-fd0cb40d.js +129 -0
  172. package/dist/esm/{string-format-strategy.abstract-75540c16.js → string-format-strategy.abstract-fc60db79.js} +1 -1
  173. package/dist/esm/{string-input-formatter-slimmer-3a42d9b8.js → string-input-formatter-slimmer-ee32b1fd.js} +3 -3
  174. package/dist/esm/{string-mask-strategy-4a18ed1a.js → string-mask-strategy-0b0accaa.js} +2 -2
  175. package/dist/esm/{style-formatter-f4067407.js → style-formatter-5f5bd714.js} +2 -2
  176. package/dist/esm/{sub-state-notify-slimmer-71b9bbd5.js → sub-state-notify-slimmer-4453047a.js} +1 -1
  177. package/dist/esm/{sub-state-observer-slimmer-41a1b380.js → sub-state-observer-slimmer-202ec7dc.js} +1 -1
  178. package/dist/esm/{time-required-rule-8ec1faf5.js → time-required-rule-5fa43804.js} +1 -1
  179. package/dist/esm/{type-guard-b48aec98.js → type-guard-c65a227d.js} +12 -1
  180. package/dist/esm/{valid-credit-card-number-rule-96eaf9b1.js → valid-credit-card-number-rule-666c415d.js} +1 -1
  181. package/dist/esm/vega-accordion.entry.js +9 -9
  182. package/dist/esm/vega-app-header-button.entry.js +10 -10
  183. package/dist/esm/vega-banner.entry.js +3 -3
  184. package/dist/esm/vega-box.entry.js +9 -9
  185. package/dist/esm/vega-breadcrumb.entry.js +4 -4
  186. package/dist/esm/vega-button-circle.entry.js +10 -10
  187. package/dist/esm/vega-button-group_2.entry.js +6 -6
  188. package/dist/esm/vega-button-link.entry.js +4 -4
  189. package/dist/esm/vega-button.entry.js +9 -9
  190. package/dist/esm/vega-calendar_4.entry.js +8 -8
  191. package/dist/esm/vega-card.entry.js +8 -8
  192. package/dist/esm/vega-carousel.entry.js +8 -8
  193. package/dist/esm/vega-checkbox_2.entry.js +6 -6
  194. package/dist/esm/vega-chip.entry.js +10 -10
  195. package/dist/esm/vega-code-block.entry.js +10 -10
  196. package/dist/esm/vega-color-picker.entry.js +5 -5
  197. package/dist/esm/vega-combo-box.entry.js +11 -10
  198. package/dist/esm/vega-date-picker_2.entry.js +389 -342
  199. package/dist/esm/vega-dialog_2.entry.js +10 -10
  200. package/dist/esm/vega-divider.entry.js +8 -8
  201. package/dist/esm/vega-dropdown_5.entry.js +36 -18
  202. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  203. package/dist/esm/vega-field-label.entry.js +3 -3
  204. package/dist/esm/vega-file-uploader.entry.js +5 -5
  205. package/dist/esm/vega-flag-icon.entry.js +8 -8
  206. package/dist/esm/vega-flex.entry.js +9 -9
  207. package/dist/esm/vega-font.entry.js +8 -8
  208. package/dist/esm/vega-form.entry.js +8 -8
  209. package/dist/esm/vega-grid.entry.js +8 -8
  210. package/dist/esm/vega-icon.entry.js +8 -8
  211. package/dist/esm/vega-image-uploader.entry.js +11 -11
  212. package/dist/esm/vega-input-credit-card.entry.js +10 -10
  213. package/dist/esm/vega-input-numeric.entry.js +10 -10
  214. package/dist/esm/vega-input-passcode.entry.js +9 -9
  215. package/dist/esm/vega-input-phone-number.entry.js +11 -11
  216. package/dist/esm/vega-input-range.entry.js +6 -6
  217. package/dist/esm/vega-input-select.entry.js +19 -14
  218. package/dist/esm/vega-input.entry.js +340 -99
  219. package/dist/esm/vega-item-toggle.entry.js +3 -3
  220. package/dist/esm/vega-left-nav_5.entry.js +11 -11
  221. package/dist/esm/vega-loader-wrapper_2.entry.js +7 -7
  222. package/dist/esm/vega-page-notification_2.entry.js +1 -1
  223. package/dist/esm/vega-pagination-page-selector-mobile.entry.js +3 -3
  224. package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +1 -1
  225. package/dist/esm/vega-pagination.entry.js +9 -9
  226. package/dist/esm/vega-popover_2.entry.js +12 -12
  227. package/dist/esm/vega-progress-tracker_2.entry.js +10 -10
  228. package/dist/esm/vega-radio_2.entry.js +9 -9
  229. package/dist/esm/vega-rich-text-content.entry.js +7 -7
  230. package/dist/esm/vega-rich-text-editor_4.entry.js +17 -17
  231. package/dist/esm/vega-segment-control.entry.js +3 -3
  232. package/dist/esm/vega-selection-chip_2.entry.js +12 -12
  233. package/dist/esm/vega-selection-tile_2.entry.js +7 -7
  234. package/dist/esm/vega-sidenav_3.entry.js +10 -10
  235. package/dist/esm/vega-signature-capture.entry.js +11 -11
  236. package/dist/esm/vega-stepper.entry.js +6 -6
  237. package/dist/esm/vega-tab-group_2.entry.js +4 -4
  238. package/dist/esm/vega-table_11.entry.js +11 -11
  239. package/dist/esm/vega-textarea.entry.js +6 -6
  240. package/dist/esm/vega-time-picker_2.entry.js +18 -17
  241. package/dist/esm/vega-toggle-switch.entry.js +5 -5
  242. package/dist/esm/vega-tooltip_2.entry.js +10 -10
  243. package/dist/esm/vega.js +11 -11
  244. package/dist/sri/vega-sri-manifest.json +328 -320
  245. package/dist/types/components/vega-date-picker/assets/icons.d.ts +1 -1
  246. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-header-render.d.ts +20 -0
  247. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-renderer.d.ts +1 -0
  248. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-year-month-switcher-renderer.d.ts +4 -11
  249. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-month-item-renderer.d.ts +4 -9
  250. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.d.ts +2 -0
  251. package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-source-controller.d.ts +2 -0
  252. package/dist/types/components/vega-dropdown/vega-dropdown.d.ts +7 -2
  253. package/dist/types/components/vega-input/slimmers/controllers/vega-input-render-mode-controller.d.ts +27 -0
  254. package/dist/types/components/vega-input/slimmers/renderers/vega-input-input-renderer.d.ts +1 -0
  255. package/dist/types/components/vega-input/slimmers/renderers/vega-input-input-suggestions-renderer.d.ts +40 -0
  256. package/dist/types/components/vega-input/slimmers/renderers/vega-input-renderer.d.ts +3 -0
  257. package/dist/types/components/vega-input/types.d.ts +4 -0
  258. package/dist/types/components/vega-input/vega-input.d.ts +55 -1
  259. package/dist/types/components.d.ts +48 -6
  260. package/dist/types/constants/ui.d.ts +1 -1
  261. package/dist/types/helpers/event-manager/event-id/vega-event-id.d.ts +2 -0
  262. package/dist/types/helpers/slimmers/element-appender/element-appender-slimmer.d.ts +4 -9
  263. package/dist/types/helpers/slimmers/element-appender/trigger-strategies/click-outside-only-to-dismiss-strategy.d.ts +21 -0
  264. package/dist/types/helpers/slimmers/element-appender/trigger-strategies/click-trigger-strategy.d.ts +21 -0
  265. package/dist/types/helpers/slimmers/element-appender/trigger-strategies/hover-trigger-strategy.d.ts +22 -0
  266. package/dist/types/helpers/slimmers/element-appender/trigger-strategies/none-trigger-strategy.d.ts +18 -0
  267. package/dist/types/helpers/slimmers/element-appender/trigger-strategies/trigger-strategy.interface.d.ts +37 -0
  268. package/dist/types/types/components.type.d.ts +2 -0
  269. package/dist/types/types/type-guard.d.ts +8 -0
  270. package/dist/types/types/ui.type.d.ts +9 -0
  271. package/dist/types/utils/sanitize.d.ts +71 -0
  272. package/dist/types/utils/test/sanitize.test.d.ts +1 -0
  273. package/dist/vega/index.esm.js +1 -1
  274. package/dist/vega/{p-44bc9ea9.entry.js → p-011b94b1.entry.js} +1 -1
  275. package/dist/vega/{p-42b7b5df.js → p-06aaced4.js} +1 -1
  276. package/dist/vega/{p-05feab84.entry.js → p-07d3df01.entry.js} +1 -1
  277. package/dist/vega/{p-5a0c92db.entry.js → p-08f18b22.entry.js} +1 -1
  278. package/dist/vega/{p-3226c208.js → p-1298b126.js} +1 -1
  279. package/dist/vega/{p-9b673fd4.entry.js → p-17c55205.entry.js} +1 -1
  280. package/dist/vega/{p-161b9c5b.js → p-1f83cebf.js} +1 -1
  281. package/dist/vega/{p-f0bde406.js → p-20ad42be.js} +1 -1
  282. package/dist/vega/p-22b2841f.entry.js +1 -0
  283. package/dist/vega/{p-674fe99e.js → p-22c5d83b.js} +1 -1
  284. package/dist/vega/{p-f92752d2.entry.js → p-34246870.entry.js} +1 -1
  285. package/dist/vega/p-35bf5789.entry.js +1 -0
  286. package/dist/vega/{p-9b7daab0.entry.js → p-3bbc0c7d.entry.js} +1 -1
  287. package/dist/vega/{p-59fa3f68.js → p-3bf66be2.js} +1 -1
  288. package/dist/vega/{p-6e84e451.entry.js → p-3c5a28e4.entry.js} +1 -1
  289. package/dist/vega/p-3cfd8616.entry.js +1 -0
  290. package/dist/vega/p-3e5f362f.js +1 -0
  291. package/dist/vega/p-43f585f7.entry.js +1 -0
  292. package/dist/vega/p-476a173a.js +1 -0
  293. package/dist/vega/p-4a537391.entry.js +1 -0
  294. package/dist/vega/{p-82dbff54.entry.js → p-509eb52e.entry.js} +1 -1
  295. package/dist/vega/{p-95b11cdd.entry.js → p-50ab977c.entry.js} +1 -1
  296. package/dist/vega/{p-ca9b4af9.entry.js → p-53a694d1.entry.js} +1 -1
  297. package/dist/vega/p-56e97df8.js +1 -0
  298. package/dist/vega/{p-b19d4e26.entry.js → p-5a27084e.entry.js} +1 -1
  299. package/dist/vega/{p-3398f553.entry.js → p-5df9a856.entry.js} +1 -1
  300. package/dist/vega/{p-94cf46ca.entry.js → p-5ea2e43c.entry.js} +1 -1
  301. package/dist/vega/p-5f377954.js +1 -1
  302. package/dist/vega/p-60274fb1.js +1 -0
  303. package/dist/vega/{p-de70aac1.js → p-60851f9d.js} +1 -1
  304. package/dist/vega/{p-5c492358.entry.js → p-60da99c6.entry.js} +1 -1
  305. package/dist/vega/{p-f2c8c363.js → p-66fa700b.js} +1 -1
  306. package/dist/vega/{p-edbecf19.entry.js → p-67f18b9e.entry.js} +1 -1
  307. package/dist/vega/{p-3b32e75d.entry.js → p-67fcf6f2.entry.js} +1 -1
  308. package/dist/vega/{p-676eaf3f.entry.js → p-6a2205a1.entry.js} +1 -1
  309. package/dist/vega/{p-b007d0d5.entry.js → p-6a4277df.entry.js} +1 -1
  310. package/dist/vega/{p-30e7544c.js → p-6e136980.js} +1 -1
  311. package/dist/vega/p-6f239144.entry.js +1 -0
  312. package/dist/vega/{p-e3fa091a.js → p-6f8be8ea.js} +1 -1
  313. package/dist/vega/p-7045e84c.entry.js +1 -0
  314. package/dist/vega/{p-3566ad76.js → p-7288f8c4.js} +1 -1
  315. package/dist/vega/{p-ba223773.entry.js → p-747d6afc.entry.js} +1 -1
  316. package/dist/vega/{p-1a7e97d2.entry.js → p-75651f32.entry.js} +1 -1
  317. package/dist/vega/{p-5be29f14.js → p-77edf50c.js} +1 -1
  318. package/dist/vega/p-7ae55fd5.js +1 -0
  319. package/dist/vega/{p-9fb71d8c.entry.js → p-81134e9e.entry.js} +1 -1
  320. package/dist/vega/p-8187878e.js +1 -0
  321. package/dist/vega/p-87238c4c.entry.js +1 -0
  322. package/dist/vega/{p-3f56d184.entry.js → p-8a887843.entry.js} +1 -1
  323. package/dist/vega/{p-2ae5ad30.entry.js → p-8c0eb12f.entry.js} +1 -1
  324. package/dist/vega/p-8d0ca805.js +1 -0
  325. package/dist/vega/{p-f6cd7a08.entry.js → p-8e42a14c.entry.js} +1 -1
  326. package/dist/vega/{p-748eb5a2.js → p-91ec2e30.js} +1 -1
  327. package/dist/vega/{p-a8dad05d.js → p-920719ad.js} +1 -1
  328. package/dist/vega/{p-a58bdbad.entry.js → p-94394df7.entry.js} +1 -1
  329. package/dist/vega/p-991008a8.entry.js +1 -0
  330. package/dist/vega/p-a20854d6.entry.js +1 -0
  331. package/dist/vega/{p-a4ec6575.js → p-a2aeb646.js} +1 -1
  332. package/dist/vega/{p-2409a475.entry.js → p-a530797f.entry.js} +1 -1
  333. package/dist/vega/{p-0f601e59.entry.js → p-a5bd3c15.entry.js} +1 -1
  334. package/dist/vega/{p-38b8efe5.entry.js → p-a65941d0.entry.js} +1 -1
  335. package/dist/vega/{p-be0b67b8.entry.js → p-a85ad369.entry.js} +1 -1
  336. package/dist/vega/{p-370ee9e3.entry.js → p-a86010f7.entry.js} +1 -1
  337. package/dist/vega/{p-a7f151fe.entry.js → p-aa10eeb3.entry.js} +1 -1
  338. package/dist/vega/{p-99676172.entry.js → p-ab2f35af.entry.js} +1 -1
  339. package/dist/vega/{p-301096ee.js → p-ac4563d7.js} +1 -1
  340. package/dist/vega/{p-ce2ffff7.js → p-aedf7146.js} +1 -1
  341. package/dist/vega/p-b4ea3fad.js +1 -0
  342. package/dist/vega/{p-d991fb11.js → p-badad9ed.js} +1 -1
  343. package/dist/vega/{p-c7194674.entry.js → p-bb4a558d.entry.js} +1 -1
  344. package/dist/vega/{p-4957f07a.entry.js → p-bb8339ed.entry.js} +1 -1
  345. package/dist/vega/{p-6b9d2996.entry.js → p-be930e85.entry.js} +1 -1
  346. package/dist/vega/{p-398220f5.entry.js → p-bf2bd6d0.entry.js} +1 -1
  347. package/dist/vega/{p-ead1da57.entry.js → p-c379a5a5.entry.js} +1 -1
  348. package/dist/vega/{p-a2d1c2f3.js → p-c8f1b9d5.js} +1 -1
  349. package/dist/vega/{p-184d8443.js → p-c9b6b5a9.js} +1 -1
  350. package/dist/vega/{p-9d8e2939.entry.js → p-ca3472c1.entry.js} +1 -1
  351. package/dist/vega/{p-3a279b71.js → p-cc43bffb.js} +1 -1
  352. package/dist/vega/{p-9ea8eb49.js → p-ce1a2982.js} +1 -1
  353. package/dist/vega/{p-d1d0f08a.js → p-d0e31633.js} +1 -1
  354. package/dist/vega/{p-b18c12cb.entry.js → p-d6ed3d76.entry.js} +1 -1
  355. package/dist/vega/{p-6c1ef2ed.js → p-dd11f735.js} +1 -1
  356. package/dist/vega/{p-071f9d00.entry.js → p-e1610196.entry.js} +1 -1
  357. package/dist/vega/{p-3d85411d.js → p-e16b3adf.js} +1 -1
  358. package/dist/vega/{p-950bf9a9.entry.js → p-e87b0b4a.entry.js} +1 -1
  359. package/dist/vega/{p-a5d4d168.entry.js → p-e9c4fd24.entry.js} +1 -1
  360. package/dist/vega/{p-7a8c4cf8.entry.js → p-eb60cfe1.entry.js} +1 -1
  361. package/dist/vega/{p-f844f3f1.entry.js → p-ef001c70.entry.js} +1 -1
  362. package/dist/vega/{p-73383099.js → p-f383c856.js} +1 -1
  363. package/dist/vega/{p-c7f292dd.entry.js → p-f3c3ff26.entry.js} +1 -1
  364. package/dist/vega/{p-7f9acdf7.entry.js → p-f52a0155.entry.js} +1 -1
  365. package/dist/vega/{p-96797fee.entry.js → p-f8f7cf48.entry.js} +1 -1
  366. package/dist/vega/{p-cadd84ec.entry.js → p-fba14ad2.entry.js} +1 -1
  367. package/dist/vega/{p-c796307d.entry.js → p-fbd64f9c.entry.js} +1 -1
  368. package/dist/vega/{p-bb9db84a.entry.js → p-fdc270b8.entry.js} +1 -1
  369. package/dist/vega/p-fe12eff6.js +1 -0
  370. package/dist/vega/{p-3ebc8b5b.entry.js → p-ffbff9b5.entry.js} +1 -1
  371. package/dist/vega/vega.esm.js +1 -1
  372. package/package.json +1 -1
  373. package/dist/vega/p-207cfa6a.js +0 -1
  374. package/dist/vega/p-29618be2.js +0 -1
  375. package/dist/vega/p-310a6294.entry.js +0 -1
  376. package/dist/vega/p-3162a7fd.entry.js +0 -1
  377. package/dist/vega/p-451ddd84.js +0 -1
  378. package/dist/vega/p-697eb0e1.js +0 -1
  379. package/dist/vega/p-779cd090.entry.js +0 -1
  380. package/dist/vega/p-7c238c19.entry.js +0 -1
  381. package/dist/vega/p-8bd496b4.js +0 -1
  382. package/dist/vega/p-9a83a6b0.js +0 -1
  383. package/dist/vega/p-a6dfef41.entry.js +0 -1
  384. package/dist/vega/p-b0ed81e2.js +0 -1
  385. package/dist/vega/p-b4be03bb.entry.js +0 -1
  386. package/dist/vega/p-c34feecd.entry.js +0 -1
  387. package/dist/vega/p-c4700277.entry.js +0 -1
  388. package/dist/vega/p-f38a4be2.entry.js +0 -1
  389. package/dist/vega/p-fbda4a20.entry.js +0 -1
@@ -6,6 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { MapToComponentField, MapToComponentMethod } from 'vega-slimmer/core';
8
8
  import { ElementAppenderSlimmer } from '../../../../helpers/slimmers/element-appender/element-appender-slimmer';
9
+ import { ClickOutsideOnlyToDismissStrategy } from '../../../../helpers/slimmers/element-appender/trigger-strategies/click-outside-only-to-dismiss-strategy';
9
10
  /** The `VegaTimePickerRangeDropdownController` class is responsible for managing the dropdown menu for selecting a range of time in the VegaTimePicker component. */
10
11
  export class VegaTimePickerRangeDropdownController extends ElementAppenderSlimmer {
11
12
  /**
@@ -29,7 +30,7 @@ export class VegaTimePickerRangeDropdownController extends ElementAppenderSlimme
29
30
  placement: ['bottom', 'top'],
30
31
  matchTargetWidth: true,
31
32
  };
32
- }, () => 'custom', 'isRangeDropdownShow');
33
+ }, () => new ClickOutsideOnlyToDismissStrategy(), 'isRangeDropdownShow');
33
34
  this.isRangeDropdownShow = false;
34
35
  this.rangeDropdownType = 'start';
35
36
  /*
@@ -8,6 +8,7 @@ import { MapToComponentField, MapToComponentMethod } from 'vega-slimmer/core';
8
8
  import { ElementAppenderSlimmer } from '../../../../helpers/slimmers/element-appender/element-appender-slimmer';
9
9
  import { LogUtility } from '../../../../utils/log';
10
10
  import { pad } from '../../../../utils/date';
11
+ import { ClickOutsideOnlyToDismissStrategy } from '../../../../helpers/slimmers/element-appender/trigger-strategies/click-outside-only-to-dismiss-strategy';
11
12
  /** The `VegaTimePickerDropdownController` class is responsible for managing the dropdown functionality of the VegaTimePicker component in a TypeScript application. */
12
13
  export class VegaTimePickerSingleDropdownController extends ElementAppenderSlimmer {
13
14
  /**
@@ -23,7 +24,7 @@ export class VegaTimePickerSingleDropdownController extends ElementAppenderSlimm
23
24
  positionRelativeTo: this.positionRelativeTo,
24
25
  translocation: { X: 0, Y: 8 },
25
26
  placement: ['bottom', 'top'],
26
- }), () => 'custom');
27
+ }), () => new ClickOutsideOnlyToDismissStrategy());
27
28
  }
28
29
  /**
29
30
  * The function initializes a value controller and dropdown source.
@@ -91,6 +91,8 @@ export const VegaNativeEventName = [
91
91
  'clear',
92
92
  'periodChange',
93
93
  'selectionChange',
94
+ 'suggestionItemClick',
95
+ 'nativeInputChange',
94
96
  ];
95
97
  // eslint-disable-next-line @typescript-eslint/typedef
96
98
  export const CssStates = ['default', 'hover', 'active', 'focus-visible'];
@@ -1,4 +1,4 @@
1
- import { VegaExpand, VegaClick, VegaDropdownClick, VegaReset, VegaClose, VegaActionButtonClick, VegaChange, VegaEventClick, VegaDateDblClick, VegaMoreActionClick, VegaDateClick, VegaPageUpdate, VegaRemove, VegaCreate, VegaSearch, VegaMonthYearChange, VegaClear, VegaSelectionChange, VegaDropdownShow, VegaDropdownHide, VegaDropdownSearch, VegaSearchTrigger, VegaLabelButtonClick, VegaSelectFileChange, VegaRetry, VegaPreview, VegaFormSubmit, VegaFormReset, VegaValidate, VegaCancel, VegaFocus, VegaBlur, VegaPaste, VegaComplete, VegaCountryChange, VegaShow, VegaHide, VegaToggleStatus, VegaOpen, VegaStateUpdate, VegaGroupClick, VegaMenuClick, VegaActionClick, VegaPageSizeChange, VegaPopoverShow, VegaPopoverHide, VegaCurrentStepUpdate, VegaImageInserted, VegaSelectChange, VegaSelectAllChange, VegaRowClick, VegaRowExpand, VegaRowSelect, VegaRowSelectAll, } from './vega-event-id';
1
+ import { VegaExpand, VegaClick, VegaDropdownClick, VegaReset, VegaClose, VegaActionButtonClick, VegaChange, VegaEventClick, VegaDateDblClick, VegaMoreActionClick, VegaDateClick, VegaPageUpdate, VegaRemove, VegaCreate, VegaSearch, VegaMonthYearChange, VegaClear, VegaSelectionChange, VegaDropdownShow, VegaDropdownHide, VegaDropdownSearch, VegaSearchTrigger, VegaLabelButtonClick, VegaSelectFileChange, VegaRetry, VegaPreview, VegaFormSubmit, VegaFormReset, VegaValidate, VegaCancel, VegaNativeInputChange, VegaFocus, VegaBlur, VegaSuggestionItemClick, VegaPaste, VegaComplete, VegaCountryChange, VegaShow, VegaHide, VegaToggleStatus, VegaOpen, VegaStateUpdate, VegaGroupClick, VegaMenuClick, VegaActionClick, VegaPageSizeChange, VegaPopoverShow, VegaPopoverHide, VegaCurrentStepUpdate, VegaImageInserted, VegaSelectChange, VegaSelectAllChange, VegaRowClick, VegaRowExpand, VegaRowSelect, VegaRowSelectAll, } from './vega-event-id';
2
2
  const entries = [
3
3
  ['vega-accordion', [VegaExpand]],
4
4
  ['vega-app-header-button', [VegaClick, VegaDropdownClick, VegaReset]],
@@ -35,7 +35,18 @@ const entries = [
35
35
  ['vega-file-uploader', [VegaChange, VegaSelectFileChange, VegaRemove, VegaRetry, VegaPreview]],
36
36
  ['vega-form', [VegaFormSubmit, VegaFormReset, VegaValidate]],
37
37
  ['vega-image-uploader', [VegaChange, VegaRemove, VegaCancel]],
38
- ['vega-input', [VegaChange, VegaFocus, VegaBlur, VegaLabelButtonClick, VegaPaste]],
38
+ [
39
+ 'vega-input',
40
+ [
41
+ VegaChange,
42
+ VegaNativeInputChange,
43
+ VegaFocus,
44
+ VegaBlur,
45
+ VegaLabelButtonClick,
46
+ VegaSuggestionItemClick,
47
+ VegaPaste,
48
+ ],
49
+ ],
39
50
  ['vega-input-credit-card', [VegaChange, VegaBlur, VegaFocus]],
40
51
  ['vega-input-numeric', [VegaChange]],
41
52
  ['vega-input-passcode', [VegaChange, VegaComplete]],
@@ -107,3 +107,5 @@ export const VegaPaste = new VegaEventID('vegaPaste', 'paste');
107
107
  export const HTMLNativeEventIds = [VegaChange, VegaClick, VegaFocus, VegaBlur, VegaPaste];
108
108
  export const VegaMonthYearChange = new VegaEventID('vegaMonthYearChange', 'monthYearChange');
109
109
  export const VegaSelectionChange = new VegaEventID('vegaSelectionChange', 'selectionChange');
110
+ export const VegaSuggestionItemClick = new VegaEventID('vegaSuggestionItemClick', 'suggestionItemClick');
111
+ export const VegaNativeInputChange = new VegaEventID('vegaNativeInputChange', 'nativeInputChange');
@@ -1,14 +1,16 @@
1
1
  import { VEGA_COMPONENT_EVENT_MAP } from '../event-id/component-event-id-map';
2
- import { VegaBlur, VegaChange, VegaFocus, VegaLabelButtonClick, VegaPaste } from '../event-id/vega-event-id';
2
+ import { VegaBlur, VegaChange, VegaFocus, VegaLabelButtonClick, VegaNativeInputChange, VegaPaste, VegaSuggestionItemClick, } from '../event-id/vega-event-id';
3
3
  test('VEGA_COMPONENT_EVENT_MAP size', () => {
4
4
  expect(VEGA_COMPONENT_EVENT_MAP.size).not.toEqual(0);
5
5
  });
6
6
  test('VEGA_COMPONENT_EVENT_MAP vega-input', () => {
7
7
  expect(VEGA_COMPONENT_EVENT_MAP.get('vega-input')).toEqual([
8
8
  VegaChange,
9
+ VegaNativeInputChange,
9
10
  VegaFocus,
10
11
  VegaBlur,
11
12
  VegaLabelButtonClick,
13
+ VegaSuggestionItemClick,
12
14
  VegaPaste,
13
15
  ]);
14
16
  });
@@ -1,5 +1,5 @@
1
1
  import { VegaEventManager } from '../../public-api';
2
- import { VegaBlur, VegaChange, VegaCreate, VegaDropdownClick, VegaDropdownHide, VegaDropdownSearch, VegaDropdownShow, VegaFocus, VegaLabelButtonClick, VegaPaste, VegaReset, VegaSearchTrigger, } from '../event-id/vega-event-id';
2
+ import { VegaBlur, VegaChange, VegaCreate, VegaDropdownClick, VegaDropdownHide, VegaDropdownSearch, VegaDropdownShow, VegaFocus, VegaLabelButtonClick, VegaNativeInputChange, VegaPaste, VegaReset, VegaSearchTrigger, VegaSuggestionItemClick, } from '../event-id/vega-event-id';
3
3
  import VegaTelemetryRuntimeMetricsManager from '@heartlandone/vega-telemetry-runtime-metrics/index';
4
4
  import { sleep } from '../../../utils/test-utils';
5
5
  describe('VegaEventManager', () => {
@@ -20,9 +20,11 @@ describe('VegaEventManager', () => {
20
20
  it('should work proper while call getNativeEventName', () => {
21
21
  expect(VegaEventManager.getEnabledEventIdsByComponent('vega-input')).toEqual([
22
22
  VegaChange,
23
+ VegaNativeInputChange,
23
24
  VegaFocus,
24
25
  VegaBlur,
25
26
  VegaLabelButtonClick,
27
+ VegaSuggestionItemClick,
26
28
  VegaPaste,
27
29
  ]);
28
30
  expect(VegaEventManager.getEnabledEventIdsByComponent('vega-dropdown')).toEqual([
@@ -11,6 +11,10 @@ import ChangeManager from '../../change-manager/change-manager';
11
11
  import { SHADOW_ROOT_ELEMENT_SCROLLING } from '../../change-manager/subject/static-subject/static-subject-title';
12
12
  import { Observer } from '../../change-manager/observer/observer';
13
13
  import { ElementAppenderHierarchyTreeManager } from './element-appender-hierarchy-tree-manager';
14
+ import { ClickTriggerStrategy } from './trigger-strategies/click-trigger-strategy';
15
+ import { HoverTriggerStrategy } from './trigger-strategies/hover-trigger-strategy';
16
+ import { NoneTriggerStrategy } from './trigger-strategies/none-trigger-strategy';
17
+ import { isEATriggerStrategy } from '../../../types/type-guard';
14
18
  export class ElementAppenderSlimmer extends VegaSlimmer {
15
19
  constructor(showConfigFactory, getTrigger, isDropdownShowName = 'isDropdownShow', disableInteractiveGetter = () => false) {
16
20
  super();
@@ -36,25 +40,28 @@ export class ElementAppenderSlimmer extends VegaSlimmer {
36
40
  };
37
41
  /* It's a function that listens to the click event on the dropdown. It checks if the trigger
38
42
  property is equal to 'click'. If it is, then it toggles the dropdown. */
39
- this.targetClickHandler = () => {
40
- if (this.shouldListenerWork('click')) {
41
- this.isShowing() ? this.hide() : this.show();
43
+ this.targetClickHandler = (event) => {
44
+ const triggerStrategy = this.getTriggerStrategy();
45
+ if (triggerStrategy.canEvaluate('target-click')) {
46
+ this.executeTriggerStrategy(triggerStrategy, event, 'target-click');
42
47
  }
43
48
  };
44
49
  /* It's a function that listens to the mouseenter event on the dropdown. It checks if the trigger
45
50
  property is equal to 'hover'. If it is, then it clears the timer. */
46
- this.targetMouseEnterHandler = () => {
47
- if (this.shouldListenerWork('hover')) {
48
- this.isShowing() === false && this.show();
51
+ this.targetMouseEnterHandler = (event) => {
52
+ const triggerStrategy = this.getTriggerStrategy();
53
+ if (triggerStrategy.canEvaluate('target-mouseenter')) {
54
+ this.executeTriggerStrategy(triggerStrategy, event, 'target-mouseenter');
49
55
  this.clearDelayHideTimer();
50
56
  }
51
57
  };
52
58
  /* It's a function that listens to the mouseleave event on the dropdown. It checks if the trigger
53
59
  property is equal to 'hover'. If it is, then it creates a timer that will hide the dropdown after a
54
60
  certain amount of time. */
55
- this.targetMouseLeaveHandler = () => {
56
- if (this.shouldListenerWork('hover')) {
57
- this.createDelayHideTimer();
61
+ this.targetMouseLeaveHandler = (event) => {
62
+ const triggerStrategy = this.getTriggerStrategy();
63
+ if (triggerStrategy.canEvaluate('target-mouseleave')) {
64
+ this.createDelayHideTimer(event, 'target-mouseleave');
58
65
  }
59
66
  };
60
67
  /* istanbul ignore next */
@@ -62,7 +69,7 @@ export class ElementAppenderSlimmer extends VegaSlimmer {
62
69
  this.targetFocusoutHandler = (e) => {
63
70
  var _a;
64
71
  if (!isParent(e.relatedTarget, (_a = this.showConfig) === null || _a === void 0 ? void 0 : _a.appendableElement)) {
65
- this.targetMouseLeaveHandler();
72
+ this.targetMouseLeaveHandler(e);
66
73
  }
67
74
  };
68
75
  /* It's a function that listens to the mouseenter event on the dropdown. It checks if the trigger
@@ -70,18 +77,20 @@ export class ElementAppenderSlimmer extends VegaSlimmer {
70
77
  this.elementMouseEnterHandler = () => {
71
78
  var _a;
72
79
  (_a = this.hierarchyTreeManager.getParent()) === null || _a === void 0 ? void 0 : _a.elementMouseEnterHandler();
73
- if (this.shouldListenerWork('hover') && !this.disableInteractiveGetter()) {
80
+ const triggerStrategy = this.getTriggerStrategy();
81
+ if (triggerStrategy.canEvaluate('element-mouseenter') && !this.disableInteractiveGetter()) {
74
82
  this.clearDelayHideTimer();
75
83
  }
76
84
  };
77
85
  /* It's a function that listens to the mouseleave event on the dropdown. It checks if the trigger
78
86
  property is equal to 'hover'. If it is, then it creates a timer that will hide the dropdown after a
79
87
  certain amount of time. */
80
- this.elementMouseLeaveHandler = () => {
88
+ this.elementMouseLeaveHandler = (event) => {
81
89
  var _a;
82
- (_a = this.hierarchyTreeManager.getParent()) === null || _a === void 0 ? void 0 : _a.elementMouseLeaveHandler();
83
- if (this.shouldListenerWork('hover') && !this.disableInteractiveGetter()) {
84
- this.createDelayHideTimer();
90
+ (_a = this.hierarchyTreeManager.getParent()) === null || _a === void 0 ? void 0 : _a.elementMouseLeaveHandler(event);
91
+ const triggerStrategy = this.getTriggerStrategy();
92
+ if (triggerStrategy.canEvaluate('element-mouseleave') && !this.disableInteractiveGetter()) {
93
+ this.createDelayHideTimer(event, 'element-mouseleave');
85
94
  }
86
95
  };
87
96
  /* It's a function that listens to the global mousedown event. It checks if the dropdown is showing,
@@ -92,15 +101,15 @@ export class ElementAppenderSlimmer extends VegaSlimmer {
92
101
  const hasChildShowing = this.hierarchyTreeManager
93
102
  .getChildren()
94
103
  .some((child) => child.isShowing());
104
+ const triggerStrategy = this.getTriggerStrategy();
95
105
  if (!hasChildShowing &&
96
- this.shouldListenerWork('custom') &&
97
- this.isShowing() &&
106
+ triggerStrategy.canEvaluate('click-outside') &&
98
107
  this.showConfig &&
99
108
  !isParent(currentTarget, this.showConfig.appendableElement) &&
100
109
  !isParent(currentTarget, this.showConfig.target) &&
101
110
  (this.showConfig.isScreenPosition ||
102
111
  findParent(currentTarget, 'vega-modal') === findParent(this.showConfig.target, 'vega-modal'))) {
103
- this.hide();
112
+ this.executeTriggerStrategy(triggerStrategy, e, 'click-outside');
104
113
  }
105
114
  };
106
115
  /* istanbul ignore next */
@@ -112,9 +121,10 @@ export class ElementAppenderSlimmer extends VegaSlimmer {
112
121
  }
113
122
  };
114
123
  /* A timer that will hide the dropdown after a certain amount of time. */
115
- this.createDelayHideTimer = () => {
124
+ this.createDelayHideTimer = (event, eventType) => {
125
+ const triggerStrategy = this.getTriggerStrategy();
116
126
  this.delayHideTimer = setTimeout(() => {
117
- this.hide();
127
+ this.executeTriggerStrategy(triggerStrategy, event, eventType);
118
128
  clearTimeout(this.delayHideTimer);
119
129
  }, ElementAppenderSlimmer.DELAY_HIDE_TIME);
120
130
  };
@@ -122,19 +132,22 @@ export class ElementAppenderSlimmer extends VegaSlimmer {
122
132
  this.clearDelayHideTimer = () => {
123
133
  this.delayHideTimer && clearTimeout(this.delayHideTimer);
124
134
  };
125
- /* It's a function that checks if the listener should work or not. */
126
- this.shouldListenerWork = (trigger) => {
127
- const currentTrigger = this.getTrigger();
128
- switch (trigger) {
129
- case 'custom':
130
- return currentTrigger !== 'none';
131
- case 'click':
132
- return currentTrigger === 'click';
133
- case 'hover':
134
- return currentTrigger === 'hover';
135
+ this.executeTriggerStrategy = (triggerStrategy, event, eventType) => {
136
+ if (this.showConfig) {
137
+ const result = triggerStrategy.evaluate({
138
+ target: this.showConfig.target,
139
+ appendableElement: this.showConfig.appendableElement,
140
+ htmlEvent: event,
141
+ eventType: eventType,
142
+ currentState: {
143
+ isVisible: this.isShowing(),
144
+ },
145
+ });
146
+ if (result) {
147
+ result.nextAction === 'hide' && this.hide();
148
+ result.nextAction === 'show' && this.show();
149
+ }
135
150
  }
136
- /* istanbul ignore next */
137
- throw new Error(`Unexpected trigger: ${trigger}. Expected values are custom, click, or hover.`);
138
151
  };
139
152
  this.showConfigFactory = showConfigFactory;
140
153
  this.getTrigger = getTrigger;
@@ -236,6 +249,21 @@ export class ElementAppenderSlimmer extends VegaSlimmer {
236
249
  removeShadowRootElementScrolling() {
237
250
  ChangeManager.unregister(SHADOW_ROOT_ELEMENT_SCROLLING, this.shadowRootElementScrollingObserver);
238
251
  }
252
+ getTriggerStrategy() {
253
+ const trigger = this.getTrigger();
254
+ if (trigger === 'click') {
255
+ return new ClickTriggerStrategy();
256
+ }
257
+ else if (trigger === 'hover') {
258
+ return new HoverTriggerStrategy();
259
+ }
260
+ else if (isEATriggerStrategy(trigger)) {
261
+ return trigger;
262
+ }
263
+ else {
264
+ return new NoneTriggerStrategy();
265
+ }
266
+ }
239
267
  }
240
268
  ElementAppenderSlimmer.DELAY_HIDE_TIME = 100;
241
269
  __decorate([
@@ -12,6 +12,7 @@ import { ElementAppenderSlimmer } from '../element-appender-slimmer';
12
12
  import { LogUtility } from '../../../../utils/log';
13
13
  import ChangeManager from '../../../change-manager/change-manager';
14
14
  import { SHADOW_ROOT_ELEMENT_SCROLLING } from '../../../change-manager/subject/static-subject/static-subject-title';
15
+ import { ClickOutsideOnlyToDismissStrategy } from '../trigger-strategies/click-outside-only-to-dismiss-strategy';
15
16
  describe('ElementAppender slimmer test suite', () => {
16
17
  const mockedComponentDidLoadMethod = jest.fn();
17
18
  const mockedComponentDisconnectedCallbackMethod = jest.fn();
@@ -184,14 +185,14 @@ describe('ElementAppender slimmer test suite', () => {
184
185
  expect((appendableElement.style.display = 'block'));
185
186
  jest.useRealTimers();
186
187
  });
187
- test('should listen event proper while trigger is custom', () => {
188
+ test('should listen event proper while trigger is custom trigger', () => {
188
189
  const mockedComponent = new MockedComponent();
189
190
  const target = new MockHTMLElement('body', 'div');
190
191
  const appendableElement = new MockHTMLElement('body', 'div');
191
192
  appendableElement.classList.add('vega-force-hidden');
192
193
  mockedComponent.target = target;
193
194
  mockedComponent.appendableElement = appendableElement;
194
- mockedComponent.trigger = 'custom';
195
+ mockedComponent.trigger = new ClickOutsideOnlyToDismissStrategy();
195
196
  mockedComponent.componentDidLoad();
196
197
  mockedComponent.show();
197
198
  expect(mockedComponent.appendableElement).not.toHaveClass('vega-force-hidden');
@@ -0,0 +1,28 @@
1
+ /**
2
+ * A trigger strategy that hides the appendable element when a global mouse down event occurs outside the element.
3
+ */
4
+ export class ClickOutsideOnlyToDismissStrategy {
5
+ /**
6
+ * Determines if the strategy can evaluate the given event type.
7
+ *
8
+ * @param {VegaEAEventType} type - The type of the event.
9
+ * @returns {boolean} True if the event type is 'globalMouseDown', otherwise false.
10
+ */
11
+ canEvaluate(type) {
12
+ return type === 'click-outside';
13
+ }
14
+ /**
15
+ * Evaluates the trigger context and determines whether to hide the appendable element.
16
+ *
17
+ * @param {VegaEATriggerContext} context - The context of the trigger event.
18
+ * @returns {VegaEATriggerResult} An object indicating whether to hide the appendable element.
19
+ */
20
+ evaluate(context) {
21
+ if (context.eventType === 'click-outside' && context.currentState.isVisible) {
22
+ return {
23
+ nextAction: 'hide',
24
+ };
25
+ }
26
+ return {};
27
+ }
28
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * ClickTriggerStrategy handles 'targetClick' and 'globalMouseDown' events to toggle or hide the appendable element.
3
+ */
4
+ export class ClickTriggerStrategy {
5
+ /**
6
+ * Determines if the strategy can evaluate the given event type.
7
+ *
8
+ * @param {VegaEAEventType} type - The type of the event.
9
+ * @returns {boolean} True if the event type is 'targetClick' or 'globalMouseDown', otherwise false.
10
+ */
11
+ canEvaluate(type) {
12
+ return type === 'target-click' || type === 'click-outside';
13
+ }
14
+ /**
15
+ * Evaluates the trigger context and determines whether to show, hide, or toggle the appendable element.
16
+ *
17
+ * @param {VegaEATriggerContext} context - The context of the trigger event.
18
+ * @returns {VegaEATriggerResult} An object indicating whether to show, hide, or toggle the appendable element.
19
+ */
20
+ evaluate(context) {
21
+ if (context.eventType === 'target-click') {
22
+ return {
23
+ nextAction: context.currentState.isVisible ? 'hide' : 'show',
24
+ };
25
+ }
26
+ if (context.eventType === 'click-outside' && context.currentState.isVisible) {
27
+ return {
28
+ nextAction: 'hide',
29
+ };
30
+ }
31
+ return {};
32
+ }
33
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * HoverTriggerStrategy handles mouse enter and leave events on the target and appendable elements,
3
+ * as well as global mouse down events to show or hide the appendable element.
4
+ */
5
+ export class HoverTriggerStrategy {
6
+ /**
7
+ * Determines if the strategy can evaluate the given event type.
8
+ *
9
+ * @param {VegaEAEventType} type - The type of the event.
10
+ * @returns {boolean} True if the event type is related to hover actions or global mouse down, otherwise false.
11
+ */
12
+ canEvaluate(type) {
13
+ return [
14
+ 'target-mouseenter',
15
+ 'target-mouseleave',
16
+ 'element-mouseenter',
17
+ 'element-mouseleave',
18
+ ].includes(type);
19
+ }
20
+ /**
21
+ * Evaluates the trigger context and determines whether to show, hide, or toggle the appendable element.
22
+ *
23
+ * @param {VegaEATriggerContext} context - The context of the trigger event.
24
+ * @returns {VegaEATriggerResult} An object indicating whether to show, hide, or toggle the appendable element.
25
+ */
26
+ evaluate(context) {
27
+ if (['target-mouseenter', 'element-mouseenter'].includes(context.eventType)) {
28
+ return !context.currentState.isVisible
29
+ ? {
30
+ nextAction: 'show',
31
+ }
32
+ : {};
33
+ }
34
+ if (['target-mouseleave', 'element-mouseleave'].includes(context.eventType)) {
35
+ return {
36
+ nextAction: 'hide',
37
+ };
38
+ }
39
+ /* istanbul ignore next */
40
+ return {};
41
+ }
42
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * NoneTriggerStrategy does not respond to any events and always indicates no action.
3
+ */
4
+ export class NoneTriggerStrategy {
5
+ /**
6
+ * Determines if the strategy can evaluate the given event type.
7
+ *
8
+ * @returns {boolean} Always false as this strategy does not respond to any events.
9
+ */
10
+ canEvaluate() {
11
+ return false;
12
+ }
13
+ /* istanbul ignore next */
14
+ /**
15
+ * Evaluates the trigger context and always indicates no action.
16
+ *
17
+ * @returns {VegaEATriggerResult} An object indicating no action (no show, hide, or toggle).
18
+ */
19
+ evaluate() {
20
+ return {};
21
+ }
22
+ }
@@ -1,4 +1,5 @@
1
- import { isFlexWrapType, isResponsiveType, isSpacingDirection, isStateVariantTokenType } from '../type-guard';
1
+ import { ClickOutsideOnlyToDismissStrategy } from '../../helpers/slimmers/element-appender/trigger-strategies/click-outside-only-to-dismiss-strategy';
2
+ import { isEATriggerStrategy, isFlexWrapType, isResponsiveType, isSpacingDirection, isStateVariantTokenType, } from '../type-guard';
2
3
  test('should get expect result when call function isResponsiveType', async () => {
3
4
  const sizeWithDefault = {
4
5
  default: 'default',
@@ -37,3 +38,9 @@ test('should get expect result when call function isFlexWrapType', async () => {
37
38
  expect(isFlexWrapType('wrap')).toBeTruthy();
38
39
  expect(isFlexWrapType('wrap1')).toBeFalsy();
39
40
  });
41
+ test('should get expect result when call function isEATriggerStrategy', async () => {
42
+ expect(isEATriggerStrategy(undefined)).toBeFalsy();
43
+ expect(isEATriggerStrategy(null)).toBeFalsy();
44
+ expect(isEATriggerStrategy('wrap')).toBeFalsy();
45
+ expect(isEATriggerStrategy(new ClickOutsideOnlyToDismissStrategy())).toBeTruthy();
46
+ });
@@ -395,3 +395,14 @@ export const isVegaTableColumnGroupingModelType = (input) => {
395
395
  export const isCalendarDateType = (input) => {
396
396
  return input instanceof CalendarDate;
397
397
  };
398
+ /**
399
+ * Type guard to check if the provided instance implements the VegaEATriggerStrategy interface
400
+ *
401
+ * @param {unknown} instance - The instance to check.
402
+ * @returns {instance is VegaEATriggerStrategy} True if the instance implements VegaEATriggerStrategy.
403
+ */
404
+ export const isEATriggerStrategy = (instance) => {
405
+ return (!!instance &&
406
+ typeof instance.evaluate === 'function' &&
407
+ typeof instance.canEvaluate === 'function');
408
+ };
@@ -0,0 +1,126 @@
1
+ import { tryGetDocument } from './try-get-document';
2
+ /**
3
+ * Helper utilities for sanitizing string from harmful tags
4
+ * This utility is intentionally restrictive of allowed tags depending on expected output.
5
+ *
6
+ * - Uses DOM-based parsing (no regex)
7
+ * - All attributes are stripped
8
+ * - Disallowed elements are unwrapped (children preserved)
9
+ */
10
+ export class SanitizeUtility {
11
+ /**
12
+ * It cleans up string for labels and allow minor formatting like bold, italic, strong
13
+ *
14
+ * @param {string} input - the passed label input string for sanitization
15
+ * @returns {string} returns sanitized string
16
+ */
17
+ static sanitizeHtmlLabel(input) {
18
+ return this.sanitize(input, this.LABEL_ALLOWED_TAGS);
19
+ }
20
+ /**
21
+ * Sanitizes the provided HTML string by parsing it into a DOM tree and
22
+ * removing all disallowed elements and attributes.
23
+ *
24
+ * @param {string} input - raw HTML string to sanitize
25
+ * @param {ReadonlySet<string>} allowedTags - set of allowed HTML tag names
26
+ * @returns {string} sanitized HTML string
27
+ */
28
+ static sanitize(input, allowedTags) {
29
+ if (input.trim() === '')
30
+ return '';
31
+ const doc = tryGetDocument();
32
+ if (!doc)
33
+ return '';
34
+ const parser = new DOMParser();
35
+ const parsedDocument = parser.parseFromString(input, 'text/html');
36
+ const outputFragment = doc.createDocumentFragment();
37
+ parsedDocument.body.childNodes.forEach((node) => {
38
+ const cleanNode = this.sanitizeNode(node, allowedTags, doc);
39
+ if (cleanNode) {
40
+ outputFragment.appendChild(cleanNode);
41
+ }
42
+ });
43
+ return this.serializeFragment(outputFragment, doc);
44
+ }
45
+ /**
46
+ * Sanitizes a DOM node recursively.
47
+ * - Text nodes are preserved
48
+ * - Element nodes are sanitized based on allowed tags
49
+ * - Other node types are discarded
50
+ *
51
+ * @param {Node} node - DOM node to sanitize
52
+ * @param {ReadonlySet<string>} allowedTags - set of allowed HTML tag names
53
+ * @param {Document} doc - document reference
54
+ * @returns {Nullable<Node>} sanitized node or null if not allowed
55
+ */
56
+ static sanitizeNode(node, allowedTags, doc) {
57
+ switch (node.nodeType) {
58
+ case Node.TEXT_NODE:
59
+ return node.cloneNode(true);
60
+ case Node.ELEMENT_NODE:
61
+ return this.sanitizeElement(node, allowedTags, doc);
62
+ default:
63
+ return null;
64
+ }
65
+ }
66
+ /**
67
+ * Sanitizes an HTML element.
68
+ * - If the element tag is not allowed, it is removed but its children are preserved
69
+ * - If allowed, a clean element is created with no attributes
70
+ *
71
+ * @param {HTMLElement} element - element to sanitize
72
+ * @param {ReadonlySet<string>} allowedTags - set of allowed HTML tag names
73
+ * @param {Document} doc - document reference
74
+ * @returns {Node} sanitized node or fragment
75
+ */
76
+ static sanitizeElement(element, allowedTags, doc) {
77
+ if (!allowedTags.has(element.tagName)) {
78
+ const fragment = doc.createDocumentFragment();
79
+ element.childNodes.forEach((child) => {
80
+ const cleanChild = this.sanitizeNode(child, allowedTags, doc);
81
+ if (cleanChild) {
82
+ fragment.appendChild(cleanChild);
83
+ }
84
+ });
85
+ return fragment;
86
+ }
87
+ const cleanElement = doc.createElement(element.tagName.toLowerCase());
88
+ element.childNodes.forEach((child) => {
89
+ const cleanChild = this.sanitizeNode(child, allowedTags, doc);
90
+ if (cleanChild) {
91
+ cleanElement.appendChild(cleanChild);
92
+ }
93
+ });
94
+ return cleanElement;
95
+ }
96
+ /**
97
+ * Serializes a DocumentFragment back into an HTML string.
98
+ *
99
+ * @param {DocumentFragment} fragment - fragment to serialize
100
+ * @param {Document} doc - document reference
101
+ * @returns {string} serialized HTML string
102
+ */
103
+ static serializeFragment(fragment, doc) {
104
+ var _a;
105
+ const container = doc.createElement('div');
106
+ container.appendChild(fragment);
107
+ // If no HTML elements exist, return textContent
108
+ return container.children.length === 0 ? (_a = container.textContent) !== null && _a !== void 0 ? _a : '' : container.innerHTML;
109
+ }
110
+ }
111
+ /**
112
+ * Set of allowed HTML tags for label rendering.
113
+ * Tags must be uppercase to match DOMParser element.tagName output.
114
+ */
115
+ SanitizeUtility.LABEL_ALLOWED_TAGS = new Set(['B', 'I', 'STRONG', 'EM']);
116
+ /**
117
+ * Standalone helper (keeps parity with existing utility exports pattern)
118
+ *
119
+ * It cleans up string for labels and allow minor formatting like bold, italic, strong
120
+ *
121
+ * @param {string} input - the passed label input string for sanitization
122
+ * @returns {string} returns sanitized string
123
+ */
124
+ export function sanitizeHtmlLabel(input) {
125
+ return SanitizeUtility.sanitizeHtmlLabel(input);
126
+ }