@globalpayments/vega 2.96.0 → 2.97.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 (426) hide show
  1. package/dist/cjs/{app-globals-38afea36.js → app-globals-3f57f7b9.js} +10 -10
  2. package/dist/cjs/{code-block-4126dc3b.js → code-block-28a7732e.js} +7 -1
  3. package/dist/cjs/{component-value-history-controller-slimmer.abstract-38ba956e.js → component-value-history-controller-slimmer.abstract-50cdba6e.js} +3 -3
  4. package/dist/cjs/{content-state-50e8a03c.js → content-state-e2ab0f06.js} +2 -2
  5. package/dist/cjs/{date-required-rule-4ab06a82.js → date-required-rule-5250f26d.js} +1 -1
  6. package/dist/cjs/{design-token-d3d12fa0.js → design-token-74674ee7.js} +3 -3
  7. package/dist/cjs/{element-appender-slimmer-7773fdab.js → element-appender-slimmer-ccb2e3c2.js} +2 -2
  8. package/dist/cjs/{form-field-controller-slimmer-d638ba12.js → form-field-controller-slimmer-58621b5e.js} +5 -14
  9. package/dist/cjs/form-field-key-8d5edf75.js +25 -0
  10. package/dist/cjs/{image-annotation-action-89363de8.js → image-annotation-action-b54dc669.js} +2 -2
  11. package/dist/cjs/{image-extension-c881c454.js → image-extension-1e3eeaa3.js} +2 -2
  12. package/dist/cjs/index.cjs.js +17 -17
  13. package/dist/cjs/{inject-keyboard-manager-5a105612.js → inject-keyboard-manager-6a6f5c9f.js} +1 -1
  14. package/dist/cjs/{internal-calendar-period-factory-b76006f7.js → internal-calendar-period-factory-dfcdd3f6.js} +1 -1
  15. package/dist/cjs/{internal-translation-controller-eb02c3b1.js → internal-translation-controller-1dac2df8.js} +7 -0
  16. package/dist/cjs/{keyboard-manager-ca76d4dc.js → keyboard-manager-c56033b1.js} +1 -1
  17. package/dist/cjs/{keyboard-manager-slimmer-a1223714.js → keyboard-manager-slimmer-7043a106.js} +1 -1
  18. package/dist/cjs/{link-extension-b7f99a52.js → link-extension-71c27ff3.js} +3 -3
  19. package/dist/cjs/loader.cjs.js +12 -12
  20. package/dist/cjs/{month-view-generator-876c50d4.js → month-view-generator-7b704a80.js} +1 -1
  21. package/dist/cjs/{public-rules-72894208.js → public-rules-55e34d2e.js} +7 -7
  22. package/dist/cjs/{range-95d41dea.js → range-eebe0e3c.js} +1 -1
  23. package/dist/cjs/{responsive-format-facade-25e9f30d.js → responsive-format-facade-493d1763.js} +1 -1
  24. package/dist/cjs/{rich-text-editor-required-rule-4d6d2493.js → rich-text-editor-required-rule-4fdee376.js} +1 -1
  25. package/dist/cjs/{split-cell-operation-70be116d.js → split-cell-operation-51097409.js} +3 -3
  26. package/dist/cjs/{state-border-formatter-f1ce0f3b.js → state-border-formatter-711c7aaa.js} +1 -1
  27. package/dist/cjs/{string-format-strategy.abstract-b22f7754.js → string-format-strategy.abstract-b61bdcbd.js} +1 -1
  28. package/dist/cjs/{string-input-formatter-slimmer-d2c248f7.js → string-input-formatter-slimmer-18d45942.js} +1 -1
  29. package/dist/cjs/{string-mask-strategy-fc01a500.js → string-mask-strategy-ad3fa0ac.js} +2 -2
  30. package/dist/cjs/{style-formatter-73205450.js → style-formatter-8f711cb0.js} +2 -2
  31. package/dist/cjs/{time-required-rule-12d2f394.js → time-required-rule-87417359.js} +1 -1
  32. package/dist/cjs/{token-extension-eb828948.js → token-extension-608bbf7b.js} +8 -8
  33. package/dist/cjs/{translation-slimmer-9099f56c.js → translation-slimmer-77c7f37d.js} +1 -1
  34. package/dist/cjs/{type-guard-f354af8b.js → type-guard-a57ef3ac.js} +1 -1
  35. package/dist/cjs/{valid-credit-card-number-rule-8d370163.js → valid-credit-card-number-rule-4c0a3040.js} +1 -1
  36. package/dist/cjs/vega-accordion.cjs.entry.js +6 -6
  37. package/dist/cjs/vega-app-header-button.cjs.entry.js +5 -5
  38. package/dist/cjs/vega-backdrop.cjs.entry.js +63 -8
  39. package/dist/cjs/vega-box.cjs.entry.js +6 -6
  40. package/dist/cjs/vega-button-circle.cjs.entry.js +5 -5
  41. package/dist/cjs/vega-button.cjs.entry.js +3 -3
  42. package/dist/cjs/vega-calendar_5.cjs.entry.js +7 -7
  43. package/dist/cjs/vega-card.cjs.entry.js +5 -5
  44. package/dist/cjs/vega-carousel.cjs.entry.js +3 -3
  45. package/dist/cjs/vega-checkbox_2.cjs.entry.js +20 -3
  46. package/dist/cjs/vega-chip.cjs.entry.js +5 -5
  47. package/dist/cjs/vega-code-block.cjs.entry.js +8 -8
  48. package/dist/cjs/vega-color-picker.cjs.entry.js +11 -2
  49. package/dist/cjs/vega-color-swatch-picker.cjs.entry.js +12 -3
  50. package/dist/cjs/vega-color-swatch.cjs.entry.js +2 -2
  51. package/dist/cjs/vega-combo-box.cjs.entry.js +17 -8
  52. package/dist/cjs/vega-date-picker_2.cjs.entry.js +22 -13
  53. package/dist/cjs/vega-dialog_2.cjs.entry.js +3 -3
  54. package/dist/cjs/vega-divider.cjs.entry.js +5 -5
  55. package/dist/cjs/vega-dropdown_5.cjs.entry.js +7 -7
  56. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  57. package/dist/cjs/vega-field-label.cjs.entry.js +2 -2
  58. package/dist/cjs/vega-file-uploader.cjs.entry.js +12 -3
  59. package/dist/cjs/vega-flag-icon.cjs.entry.js +5 -5
  60. package/dist/cjs/vega-flex.cjs.entry.js +6 -6
  61. package/dist/cjs/vega-font.cjs.entry.js +5 -5
  62. package/dist/cjs/vega-form.cjs.entry.js +28 -25
  63. package/dist/cjs/vega-grid.cjs.entry.js +5 -5
  64. package/dist/cjs/vega-icon.cjs.entry.js +5 -5
  65. package/dist/cjs/vega-image-uploader.cjs.entry.js +14 -5
  66. package/dist/cjs/vega-input-credit-card.cjs.entry.js +16 -7
  67. package/dist/cjs/vega-input-numeric.cjs.entry.js +14 -5
  68. package/dist/cjs/vega-input-passcode.cjs.entry.js +14 -5
  69. package/dist/cjs/vega-input-phone-number.cjs.entry.js +13 -4
  70. package/dist/cjs/vega-input-range.cjs.entry.js +12 -3
  71. package/dist/cjs/vega-input-select.cjs.entry.js +14 -5
  72. package/dist/cjs/vega-input.cjs.entry.js +9 -7
  73. package/dist/cjs/vega-left-nav_5.cjs.entry.js +71 -11
  74. package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +3 -3
  75. package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +2 -2
  76. package/dist/cjs/vega-pagination.cjs.entry.js +4 -4
  77. package/dist/cjs/vega-popover_2.cjs.entry.js +8 -8
  78. package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +3 -3
  79. package/dist/cjs/vega-radio_2.cjs.entry.js +17 -5
  80. package/dist/cjs/vega-rich-text-content.cjs.entry.js +32 -9
  81. package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +1581 -428
  82. package/dist/cjs/vega-rich-text-find-replace-panel.cjs.entry.js +1 -1
  83. package/dist/cjs/vega-rich-text-special-characters-panel.cjs.entry.js +5 -5
  84. package/dist/cjs/vega-rich-text-table-properties_3.cjs.entry.js +8 -8
  85. package/dist/cjs/vega-selection-chip_2.cjs.entry.js +13 -4
  86. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +11 -2
  87. package/dist/cjs/vega-sidenav_3.cjs.entry.js +3 -3
  88. package/dist/cjs/vega-signature-capture.cjs.entry.js +16 -7
  89. package/dist/cjs/vega-stepper.cjs.entry.js +12 -3
  90. package/dist/cjs/vega-table_11.cjs.entry.js +4 -4
  91. package/dist/cjs/vega-textarea.cjs.entry.js +12 -3
  92. package/dist/cjs/vega-time-picker_2.cjs.entry.js +18 -9
  93. package/dist/cjs/vega-toggle-switch.cjs.entry.js +12 -3
  94. package/dist/cjs/vega-tooltip_2.cjs.entry.js +6 -6
  95. package/dist/cjs/vega.cjs.js +12 -12
  96. package/dist/collection/components/vega-backdrop/slimmers/controller/vega-backdrop-visible-controller.js +63 -8
  97. package/dist/collection/components/vega-checkbox/vega-checkbox-group/vega-checkbox-group.js +33 -1
  98. package/dist/collection/components/vega-checkbox/vega-checkbox.js +34 -2
  99. package/dist/collection/components/vega-color-picker/vega-color-picker.js +33 -1
  100. package/dist/collection/components/vega-color-swatch/vega-color-swatch-picker/vega-color-swatch-picker.js +33 -1
  101. package/dist/collection/components/vega-combo-box/vega-combo-box.js +33 -1
  102. package/dist/collection/components/vega-date-picker/vega-date-picker.js +33 -1
  103. package/dist/collection/components/vega-file-uploader/vega-file-uploader.js +33 -1
  104. package/dist/collection/components/vega-form/slimmers/controllers/vega-form-field-controller.js +9 -9
  105. package/dist/collection/components/vega-form/slimmers/controllers/vega-form-field-validation-state-controller.js +5 -5
  106. package/dist/collection/components/vega-form/slimmers/renderers/native-form-renderer.js +4 -1
  107. package/dist/collection/components/vega-form/vega-form.js +32 -0
  108. package/dist/collection/components/vega-image-uploader/vega-image-uploader.js +33 -1
  109. package/dist/collection/components/vega-input/vega-input.js +5 -4
  110. package/dist/collection/components/vega-input-credit-card/vega-input-credit-card.js +34 -2
  111. package/dist/collection/components/vega-input-numeric/vega-input-numeric.js +33 -1
  112. package/dist/collection/components/vega-input-passcode/vega-input-passcode.js +33 -1
  113. package/dist/collection/components/vega-input-phone-number/vega-input-phone-number.js +33 -1
  114. package/dist/collection/components/vega-input-range/vega-input-range.js +33 -1
  115. package/dist/collection/components/vega-input-select/vega-input-select.js +33 -1
  116. package/dist/collection/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-backdrop-manager.js +17 -1
  117. package/dist/collection/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-open-state-controller.js +48 -5
  118. package/dist/collection/components/vega-radio/vega-radio-group/vega-radio-group.js +18 -3
  119. package/dist/collection/components/vega-rich-text-editor/constants/constant.js +3 -0
  120. package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/link-wrapper-renderer.js +26 -3
  121. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/base-handler.js +1 -1
  122. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/keyboard-link-handler.js +297 -0
  123. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/user-input-controller.js +13 -0
  124. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/link-toolbar-button-slimmer.js +8 -2
  125. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor.js +33 -1
  126. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/controllers/link-editor-controller.js +398 -0
  127. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/controllers/link-editor-state-manager.js +111 -0
  128. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/controllers/link-type-config-controller.js +173 -0
  129. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/renderers/link-type-handler.js +49 -0
  130. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/renderers/vega-rich-text-link-editor-renderer.js +114 -106
  131. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/utils/link-url-normalizer.js +80 -0
  132. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/vega-rich-text-link-editor.js +44 -1
  133. package/dist/collection/components/vega-selection-chip/vega-selection-chip-group/vega-selection-chip-group.js +33 -1
  134. package/dist/collection/components/vega-selection-tile/vega-selection-tile-group/vega-selection-tile-group.js +33 -1
  135. package/dist/collection/components/vega-signature-capture/vega-signature-capture.js +33 -1
  136. package/dist/collection/components/vega-stepper/vega-stepper.js +34 -2
  137. package/dist/collection/components/vega-textarea/vega-textarea.js +34 -2
  138. package/dist/collection/components/vega-time-picker/vega-time-picker.js +33 -1
  139. package/dist/collection/components/vega-toggle-switch/vega-toggle-switch.js +34 -2
  140. package/dist/collection/helpers/slimmers/{field-error-controller-silmmer.js → form/field-error-controller-silmmer.js} +3 -3
  141. package/dist/collection/helpers/slimmers/{field-error-ui-controller-slimmer.js → form/field-error-ui-controller-slimmer.js} +9 -9
  142. package/dist/collection/helpers/slimmers/{form-field-controller-slimmer.js → form/form-field-controller-slimmer.js} +9 -18
  143. package/dist/collection/helpers/slimmers/{form-field-message-translator.js → form/form-field-message-translator.js} +1 -1
  144. package/dist/collection/helpers/slimmers/{form-field-state-controller-slimmer.js → form/form-field-state-controller-slimmer.js} +1 -1
  145. package/dist/collection/helpers/slimmers/{form-field-valid-invoke-slimmer.js → form/form-field-valid-invoke-slimmer.js} +2 -2
  146. package/dist/collection/helpers/slimmers/form/utils/form-field-key.js +20 -0
  147. package/dist/collection/helpers/translation/locales/en.js +7 -0
  148. package/dist/collection/helpers/validator/form-field-controller.js +5 -4
  149. package/dist/esm/{app-globals-d7b651c1.js → app-globals-d3991e53.js} +10 -10
  150. package/dist/esm/{code-block-0a88b481.js → code-block-8df86434.js} +5 -2
  151. package/dist/esm/{component-value-history-controller-slimmer.abstract-6846edfa.js → component-value-history-controller-slimmer.abstract-e4b95997.js} +3 -3
  152. package/dist/esm/{content-state-79ca99e5.js → content-state-c63fbeda.js} +2 -2
  153. package/dist/esm/{date-required-rule-b88e1650.js → date-required-rule-85334d0c.js} +1 -1
  154. package/dist/esm/{design-token-76bd217c.js → design-token-10ff79b5.js} +3 -3
  155. package/dist/esm/{element-appender-slimmer-73ad10ae.js → element-appender-slimmer-24be8e94.js} +2 -2
  156. package/dist/esm/{form-field-controller-slimmer-395c23e3.js → form-field-controller-slimmer-d8628837.js} +5 -14
  157. package/dist/esm/form-field-key-44ab39d0.js +22 -0
  158. package/dist/esm/{image-annotation-action-bb299ef1.js → image-annotation-action-fcceff95.js} +2 -2
  159. package/dist/esm/{image-extension-48a96f98.js → image-extension-3280bdb0.js} +2 -2
  160. package/dist/esm/index.js +17 -17
  161. package/dist/esm/{inject-keyboard-manager-86126b5b.js → inject-keyboard-manager-ea1aad5b.js} +1 -1
  162. package/dist/esm/{internal-calendar-period-factory-3a07dba0.js → internal-calendar-period-factory-7b294fb6.js} +1 -1
  163. package/dist/esm/{internal-translation-controller-16709132.js → internal-translation-controller-fac22598.js} +7 -0
  164. package/dist/esm/{keyboard-manager-a0c3e1cf.js → keyboard-manager-50da85d7.js} +1 -1
  165. package/dist/esm/{keyboard-manager-slimmer-f3f66c15.js → keyboard-manager-slimmer-1f7c8bfb.js} +1 -1
  166. package/dist/esm/{link-extension-09534514.js → link-extension-f92c06ef.js} +3 -3
  167. package/dist/esm/loader.js +12 -12
  168. package/dist/esm/{month-view-generator-fd0e1856.js → month-view-generator-a1a9a4ec.js} +1 -1
  169. package/dist/esm/{public-rules-5eb03ef0.js → public-rules-3695aaf7.js} +7 -7
  170. package/dist/esm/{range-d4deb7df.js → range-717d552d.js} +1 -1
  171. package/dist/esm/{responsive-format-facade-ced96b0b.js → responsive-format-facade-f19b601c.js} +1 -1
  172. package/dist/esm/{rich-text-editor-required-rule-5bbbce23.js → rich-text-editor-required-rule-2e39264a.js} +1 -1
  173. package/dist/esm/{split-cell-operation-7f3058ad.js → split-cell-operation-6c26af91.js} +3 -3
  174. package/dist/esm/{state-border-formatter-b680e922.js → state-border-formatter-bfda33aa.js} +1 -1
  175. package/dist/esm/{string-format-strategy.abstract-23faab71.js → string-format-strategy.abstract-1f4ff1b3.js} +1 -1
  176. package/dist/esm/{string-input-formatter-slimmer-4b4866a6.js → string-input-formatter-slimmer-68b2af39.js} +1 -1
  177. package/dist/esm/{string-mask-strategy-66586cd8.js → string-mask-strategy-bbbcdbef.js} +2 -2
  178. package/dist/esm/{style-formatter-f4e16af5.js → style-formatter-e9adc8f4.js} +2 -2
  179. package/dist/esm/{time-required-rule-6e80a9ab.js → time-required-rule-1ce2d0a0.js} +1 -1
  180. package/dist/esm/{token-extension-40c32bcc.js → token-extension-5082a4d2.js} +8 -8
  181. package/dist/esm/{translation-slimmer-21748a0e.js → translation-slimmer-ee0f0e76.js} +1 -1
  182. package/dist/esm/{type-guard-ec5e8628.js → type-guard-f2624334.js} +1 -1
  183. package/dist/esm/{valid-credit-card-number-rule-ca5a47d6.js → valid-credit-card-number-rule-60212b1d.js} +1 -1
  184. package/dist/esm/vega-accordion.entry.js +6 -6
  185. package/dist/esm/vega-app-header-button.entry.js +5 -5
  186. package/dist/esm/vega-backdrop.entry.js +63 -8
  187. package/dist/esm/vega-box.entry.js +6 -6
  188. package/dist/esm/vega-button-circle.entry.js +5 -5
  189. package/dist/esm/vega-button.entry.js +3 -3
  190. package/dist/esm/vega-calendar_5.entry.js +7 -7
  191. package/dist/esm/vega-card.entry.js +5 -5
  192. package/dist/esm/vega-carousel.entry.js +3 -3
  193. package/dist/esm/vega-checkbox_2.entry.js +20 -3
  194. package/dist/esm/vega-chip.entry.js +5 -5
  195. package/dist/esm/vega-code-block.entry.js +8 -8
  196. package/dist/esm/vega-color-picker.entry.js +11 -2
  197. package/dist/esm/vega-color-swatch-picker.entry.js +12 -3
  198. package/dist/esm/vega-color-swatch.entry.js +2 -2
  199. package/dist/esm/vega-combo-box.entry.js +17 -8
  200. package/dist/esm/vega-date-picker_2.entry.js +22 -13
  201. package/dist/esm/vega-dialog_2.entry.js +3 -3
  202. package/dist/esm/vega-divider.entry.js +5 -5
  203. package/dist/esm/vega-dropdown_5.entry.js +7 -7
  204. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  205. package/dist/esm/vega-field-label.entry.js +2 -2
  206. package/dist/esm/vega-file-uploader.entry.js +12 -3
  207. package/dist/esm/vega-flag-icon.entry.js +5 -5
  208. package/dist/esm/vega-flex.entry.js +6 -6
  209. package/dist/esm/vega-font.entry.js +5 -5
  210. package/dist/esm/vega-form.entry.js +28 -25
  211. package/dist/esm/vega-grid.entry.js +5 -5
  212. package/dist/esm/vega-icon.entry.js +5 -5
  213. package/dist/esm/vega-image-uploader.entry.js +14 -5
  214. package/dist/esm/vega-input-credit-card.entry.js +16 -7
  215. package/dist/esm/vega-input-numeric.entry.js +14 -5
  216. package/dist/esm/vega-input-passcode.entry.js +14 -5
  217. package/dist/esm/vega-input-phone-number.entry.js +13 -4
  218. package/dist/esm/vega-input-range.entry.js +12 -3
  219. package/dist/esm/vega-input-select.entry.js +14 -5
  220. package/dist/esm/vega-input.entry.js +9 -7
  221. package/dist/esm/vega-left-nav_5.entry.js +71 -11
  222. package/dist/esm/vega-loader-wrapper_2.entry.js +3 -3
  223. package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +2 -2
  224. package/dist/esm/vega-pagination.entry.js +4 -4
  225. package/dist/esm/vega-popover_2.entry.js +8 -8
  226. package/dist/esm/vega-progress-tracker_2.entry.js +3 -3
  227. package/dist/esm/vega-radio_2.entry.js +17 -5
  228. package/dist/esm/vega-rich-text-content.entry.js +32 -9
  229. package/dist/esm/vega-rich-text-editor_4.entry.js +1581 -428
  230. package/dist/esm/vega-rich-text-find-replace-panel.entry.js +1 -1
  231. package/dist/esm/vega-rich-text-special-characters-panel.entry.js +5 -5
  232. package/dist/esm/vega-rich-text-table-properties_3.entry.js +8 -8
  233. package/dist/esm/vega-selection-chip_2.entry.js +13 -4
  234. package/dist/esm/vega-selection-tile_2.entry.js +11 -2
  235. package/dist/esm/vega-sidenav_3.entry.js +3 -3
  236. package/dist/esm/vega-signature-capture.entry.js +16 -7
  237. package/dist/esm/vega-stepper.entry.js +12 -3
  238. package/dist/esm/vega-table_11.entry.js +4 -4
  239. package/dist/esm/vega-textarea.entry.js +12 -3
  240. package/dist/esm/vega-time-picker_2.entry.js +18 -9
  241. package/dist/esm/vega-toggle-switch.entry.js +12 -3
  242. package/dist/esm/vega-tooltip_2.entry.js +6 -6
  243. package/dist/esm/vega.js +12 -12
  244. package/dist/sri/vega-sri-manifest.json +314 -310
  245. package/dist/types/components/vega-backdrop/slimmers/controller/vega-backdrop-visible-controller.d.ts +21 -0
  246. package/dist/types/components/vega-checkbox/vega-checkbox-group/vega-checkbox-group.d.ts +9 -1
  247. package/dist/types/components/vega-checkbox/vega-checkbox.d.ts +9 -1
  248. package/dist/types/components/vega-color-picker/vega-color-picker.d.ts +9 -1
  249. package/dist/types/components/vega-color-swatch/vega-color-swatch-picker/vega-color-swatch-picker.d.ts +9 -1
  250. package/dist/types/components/vega-combo-box/vega-combo-box.d.ts +9 -1
  251. package/dist/types/components/vega-date-picker/vega-date-picker.d.ts +9 -1
  252. package/dist/types/components/vega-file-uploader/vega-file-uploader.d.ts +9 -1
  253. package/dist/types/components/vega-form/slimmers/controllers/vega-form-field-controller.d.ts +3 -2
  254. package/dist/types/components/vega-form/slimmers/renderers/native-form-renderer.d.ts +1 -0
  255. package/dist/types/components/vega-form/vega-form.d.ts +8 -0
  256. package/dist/types/components/vega-image-uploader/vega-image-uploader.d.ts +9 -1
  257. package/dist/types/components/vega-input/vega-input.d.ts +3 -2
  258. package/dist/types/components/vega-input-credit-card/vega-input-credit-card.d.ts +9 -1
  259. package/dist/types/components/vega-input-numeric/vega-input-numeric.d.ts +9 -1
  260. package/dist/types/components/vega-input-passcode/vega-input-passcode.d.ts +9 -1
  261. package/dist/types/components/vega-input-phone-number/vega-input-phone-number.d.ts +9 -1
  262. package/dist/types/components/vega-input-range/vega-input-range.d.ts +9 -1
  263. package/dist/types/components/vega-input-select/vega-input-select.d.ts +9 -1
  264. package/dist/types/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-backdrop-manager.d.ts +7 -0
  265. package/dist/types/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-open-state-controller.d.ts +17 -0
  266. package/dist/types/components/vega-radio/vega-radio-group/vega-radio-group.d.ts +5 -1
  267. package/dist/types/components/vega-rich-text-editor/constants/constant.d.ts +3 -0
  268. package/dist/types/components/vega-rich-text-editor/extensions/link/type.d.ts +34 -0
  269. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/base-handler.d.ts +4 -4
  270. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/keyboard-link-handler.d.ts +111 -0
  271. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/user-input-controller.d.ts +7 -0
  272. package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor.d.ts +9 -1
  273. package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/controllers/link-editor-controller.d.ts +149 -0
  274. package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/controllers/link-editor-state-manager.d.ts +84 -0
  275. package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/controllers/link-type-config-controller.d.ts +82 -0
  276. package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/renderers/link-type-handler.d.ts +33 -0
  277. package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/renderers/vega-rich-text-link-editor-renderer.d.ts +24 -17
  278. package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/utils/link-url-normalizer.d.ts +37 -0
  279. package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/types.d.ts +4 -0
  280. package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/vega-rich-text-link-editor.d.ts +12 -0
  281. package/dist/types/components/vega-selection-chip/vega-selection-chip-group/vega-selection-chip-group.d.ts +9 -1
  282. package/dist/types/components/vega-selection-tile/vega-selection-tile-group/vega-selection-tile-group.d.ts +9 -1
  283. package/dist/types/components/vega-signature-capture/vega-signature-capture.d.ts +9 -1
  284. package/dist/types/components/vega-stepper/vega-stepper.d.ts +9 -1
  285. package/dist/types/components/vega-textarea/vega-textarea.d.ts +9 -1
  286. package/dist/types/components/vega-time-picker/vega-time-picker.d.ts +9 -1
  287. package/dist/types/components/vega-toggle-switch/vega-toggle-switch.d.ts +9 -1
  288. package/dist/types/components.d.ts +287 -4
  289. package/dist/types/helpers/slimmers/{field-error-controller-silmmer.d.ts → form/field-error-controller-silmmer.d.ts} +1 -1
  290. package/dist/types/helpers/slimmers/{field-error-ui-controller-slimmer.d.ts → form/field-error-ui-controller-slimmer.d.ts} +2 -2
  291. package/dist/types/helpers/slimmers/{form-field-controller-slimmer.d.ts → form/form-field-controller-slimmer.d.ts} +6 -14
  292. package/dist/types/helpers/slimmers/{form-field-message-translator.d.ts → form/form-field-message-translator.d.ts} +2 -2
  293. package/dist/types/helpers/slimmers/{form-field-state-controller-slimmer.d.ts → form/form-field-state-controller-slimmer.d.ts} +2 -2
  294. package/dist/types/helpers/slimmers/{form-field-valid-invoke-slimmer.d.ts → form/form-field-valid-invoke-slimmer.d.ts} +3 -3
  295. package/dist/types/helpers/slimmers/form/utils/form-field-key.d.ts +17 -0
  296. package/dist/types/helpers/translation/interface.d.ts +7 -0
  297. package/dist/types/helpers/validator/form-field-controller.d.ts +3 -3
  298. package/dist/vega/index.esm.js +1 -1
  299. package/dist/vega/p-040ea356.entry.js +1 -0
  300. package/dist/vega/p-046203cb.entry.js +1 -0
  301. package/dist/vega/p-0499e65a.entry.js +1 -0
  302. package/dist/vega/p-0809c651.js +1 -0
  303. package/dist/vega/{p-3c23ec90.js → p-09524fec.js} +1 -1
  304. package/dist/vega/{p-74f86ff9.entry.js → p-0cf3b5c1.entry.js} +1 -1
  305. package/dist/vega/p-10d43a80.entry.js +1 -0
  306. package/dist/vega/{p-3d6f761a.entry.js → p-1132a74e.entry.js} +1 -1
  307. package/dist/vega/{p-ba662fe5.js → p-12e8a1b2.js} +1 -1
  308. package/dist/vega/{p-55e0014a.js → p-1d5e05d9.js} +1 -1
  309. package/dist/vega/{p-3dee1e55.js → p-1e0a8fd3.js} +1 -1
  310. package/dist/vega/{p-919cddc3.js → p-1ea9ad9a.js} +1 -1
  311. package/dist/vega/p-21626b93.entry.js +1 -0
  312. package/dist/vega/p-21f608e8.entry.js +1 -0
  313. package/dist/vega/p-2540fd1c.entry.js +1 -0
  314. package/dist/vega/{p-9f201152.entry.js → p-26760c66.entry.js} +1 -1
  315. package/dist/vega/{p-892edf88.entry.js → p-2acf9b42.entry.js} +1 -1
  316. package/dist/vega/p-2bb60f89.js +1 -0
  317. package/dist/vega/{p-b1eb9ff0.js → p-2c2e8615.js} +1 -1
  318. package/dist/vega/p-2d158cbd.js +1 -0
  319. package/dist/vega/p-2d7388c9.entry.js +1 -0
  320. package/dist/vega/{p-b3a2ce06.entry.js → p-2eb8e167.entry.js} +1 -1
  321. package/dist/vega/{p-6a51d720.js → p-2ff4ae1c.js} +1 -1
  322. package/dist/vega/p-3488a3f1.entry.js +1 -0
  323. package/dist/vega/p-363ee8a5.entry.js +1 -0
  324. package/dist/vega/p-36c89520.entry.js +1 -0
  325. package/dist/vega/{p-e1737c8e.entry.js → p-3980dfa8.entry.js} +1 -1
  326. package/dist/vega/{p-14baa886.js → p-39c5054b.js} +1 -1
  327. package/dist/vega/p-3af5e87b.entry.js +1 -0
  328. package/dist/vega/{p-8db904dc.js → p-456f678b.js} +1 -1
  329. package/dist/vega/{p-6c9c2f8c.entry.js → p-461100b8.entry.js} +1 -1
  330. package/dist/vega/p-4c3a08be.entry.js +1 -0
  331. package/dist/vega/p-53fd3c41.entry.js +1 -0
  332. package/dist/vega/{p-6fcec7c7.entry.js → p-56417ec5.entry.js} +1 -1
  333. package/dist/vega/{p-9f11b579.js → p-5e37b041.js} +1 -1
  334. package/dist/vega/p-5f377954.js +1 -1
  335. package/dist/vega/{p-a0a58295.entry.js → p-5f96e741.entry.js} +1 -1
  336. package/dist/vega/p-6b76b572.entry.js +1 -0
  337. package/dist/vega/{p-75e33859.js → p-6c95a6a3.js} +1 -1
  338. package/dist/vega/p-703ac992.entry.js +1 -0
  339. package/dist/vega/p-71909102.js +1 -0
  340. package/dist/vega/{p-e1b57e8f.entry.js → p-72ab5cd5.entry.js} +1 -1
  341. package/dist/vega/{p-8720816e.js → p-781b7a54.js} +1 -1
  342. package/dist/vega/{p-7950f3e2.entry.js → p-81d4dfcb.entry.js} +1 -1
  343. package/dist/vega/p-8611465f.entry.js +1 -0
  344. package/dist/vega/{p-0d18368b.js → p-874e5624.js} +1 -1
  345. package/dist/vega/{p-c4564904.js → p-8e7932bc.js} +1 -1
  346. package/dist/vega/p-8ed3b2b6.entry.js +1 -0
  347. package/dist/vega/{p-1dfbc542.entry.js → p-8ff92914.entry.js} +1 -1
  348. package/dist/vega/{p-9bdc6e11.entry.js → p-92528dc9.entry.js} +1 -1
  349. package/dist/vega/p-9664e914.entry.js +1 -0
  350. package/dist/vega/p-98fc5821.entry.js +1 -0
  351. package/dist/vega/{p-6c7b6d45.js → p-9be02fa5.js} +1 -1
  352. package/dist/vega/p-9c4c474e.entry.js +1 -0
  353. package/dist/vega/{p-8354cff0.entry.js → p-a034dfc0.entry.js} +1 -1
  354. package/dist/vega/{p-e48a870f.entry.js → p-a484e32d.entry.js} +1 -1
  355. package/dist/vega/{p-b9e72de2.entry.js → p-a8174ad8.entry.js} +1 -1
  356. package/dist/vega/{p-49e1cf4d.entry.js → p-a91927eb.entry.js} +1 -1
  357. package/dist/vega/{p-2df5d59b.entry.js → p-abbceebf.entry.js} +1 -1
  358. package/dist/vega/{p-e4266b45.entry.js → p-ac94ba1b.entry.js} +1 -1
  359. package/dist/vega/{p-b775e51f.js → p-ae2abdfa.js} +1 -1
  360. package/dist/vega/{p-bb60e381.entry.js → p-aeb50cad.entry.js} +1 -1
  361. package/dist/vega/{p-a890d60b.entry.js → p-b00ec194.entry.js} +1 -1
  362. package/dist/vega/{p-f78944d7.entry.js → p-b3733762.entry.js} +1 -1
  363. package/dist/vega/p-b594a11c.entry.js +1 -0
  364. package/dist/vega/{p-b4e7c967.js → p-b622c455.js} +1 -1
  365. package/dist/vega/{p-1232b553.entry.js → p-b98ead05.entry.js} +1 -1
  366. package/dist/vega/{p-e5ff77f7.entry.js → p-c2277448.entry.js} +1 -1
  367. package/dist/vega/{p-ec5dee32.js → p-c29934ef.js} +1 -1
  368. package/dist/vega/p-c3646101.entry.js +1 -0
  369. package/dist/vega/p-ca270da3.entry.js +1 -0
  370. package/dist/vega/{p-b4c26035.entry.js → p-ccbe3f1b.entry.js} +1 -1
  371. package/dist/vega/{p-6cde45fc.js → p-cd69aeae.js} +1 -1
  372. package/dist/vega/{p-84b7a775.js → p-d25c1a48.js} +1 -1
  373. package/dist/vega/{p-5924adae.entry.js → p-d2cbcf5e.entry.js} +1 -1
  374. package/dist/vega/{p-96da7d30.entry.js → p-d3413a78.entry.js} +1 -1
  375. package/dist/vega/{p-f1974321.js → p-d609c3fd.js} +1 -1
  376. package/dist/vega/{p-3345d903.js → p-dad7d2ac.js} +1 -1
  377. package/dist/vega/{p-61ce8029.js → p-dbb4b1d1.js} +1 -1
  378. package/dist/vega/p-dcd3e3a7.js +1 -0
  379. package/dist/vega/p-de8f0d98.js +1 -0
  380. package/dist/vega/{p-22cc174e.entry.js → p-deaf037a.entry.js} +1 -1
  381. package/dist/vega/p-e1029acc.js +1 -0
  382. package/dist/vega/p-e18c0656.entry.js +1 -0
  383. package/dist/vega/p-e3fdb65c.entry.js +1 -0
  384. package/dist/vega/p-e7e963ba.entry.js +1 -0
  385. package/dist/vega/{p-312d8205.js → p-e9b005df.js} +1 -1
  386. package/dist/vega/{p-9d3f69cb.js → p-e9d09211.js} +1 -1
  387. package/dist/vega/{p-3c309a38.js → p-f1078e63.js} +1 -1
  388. package/dist/vega/{p-595998d9.entry.js → p-f29ea345.entry.js} +1 -1
  389. package/dist/vega/p-f5095035.entry.js +1 -0
  390. package/dist/vega/{p-f29d9707.entry.js → p-f95d8d10.entry.js} +1 -1
  391. package/dist/vega/vega.esm.js +1 -1
  392. package/package.json +1 -1
  393. package/dist/vega/p-0512308f.entry.js +0 -1
  394. package/dist/vega/p-1d8312d3.entry.js +0 -1
  395. package/dist/vega/p-2d77ae73.entry.js +0 -1
  396. package/dist/vega/p-2d8d4d5b.entry.js +0 -1
  397. package/dist/vega/p-320091b7.js +0 -1
  398. package/dist/vega/p-36949349.js +0 -1
  399. package/dist/vega/p-4151f53a.entry.js +0 -1
  400. package/dist/vega/p-4ff48b84.js +0 -1
  401. package/dist/vega/p-5e4517eb.entry.js +0 -1
  402. package/dist/vega/p-6680ba17.entry.js +0 -1
  403. package/dist/vega/p-80b7945a.entry.js +0 -1
  404. package/dist/vega/p-841b3281.entry.js +0 -1
  405. package/dist/vega/p-87e5cb56.entry.js +0 -1
  406. package/dist/vega/p-91303402.entry.js +0 -1
  407. package/dist/vega/p-97215133.js +0 -1
  408. package/dist/vega/p-9d96d83f.entry.js +0 -1
  409. package/dist/vega/p-a05a2f1e.entry.js +0 -1
  410. package/dist/vega/p-a775825e.entry.js +0 -1
  411. package/dist/vega/p-acaff62d.entry.js +0 -1
  412. package/dist/vega/p-ae146458.entry.js +0 -1
  413. package/dist/vega/p-b63319e9.entry.js +0 -1
  414. package/dist/vega/p-b660f38c.entry.js +0 -1
  415. package/dist/vega/p-b8c13ac9.entry.js +0 -1
  416. package/dist/vega/p-b8ffa42f.entry.js +0 -1
  417. package/dist/vega/p-bbad318e.entry.js +0 -1
  418. package/dist/vega/p-c0e42c03.entry.js +0 -1
  419. package/dist/vega/p-c41f5684.entry.js +0 -1
  420. package/dist/vega/p-c54b5a8f.entry.js +0 -1
  421. package/dist/vega/p-cd1e976c.entry.js +0 -1
  422. package/dist/vega/p-d9158512.js +0 -1
  423. package/dist/vega/p-e62d41ee.js +0 -1
  424. package/dist/vega/p-ebe32b25.entry.js +0 -1
  425. package/dist/vega/p-ec162599.entry.js +0 -1
  426. package/dist/vega/p-fc7e4c8a.entry.js +0 -1
@@ -0,0 +1,297 @@
1
+ import { BaseHandler } from './base-handler';
2
+ import { findParent } from '../../../../../../utils/ui';
3
+ import stateEntityRenderingRegistry from '../../../controllers/state-entity-rendering-registry';
4
+ import { RTETextNode } from '../../../../dto/nodes/text-node';
5
+ import { RTEBlock } from '../../../../dto/blocks/block.abstract';
6
+ /**
7
+ * Handles keyboard-based rich text link interactions (Escape close, Tab into the link popover, and
8
+ * the Command/Control+K open shortcut). Follows the input-event handler workflow so the keyboard
9
+ * link logic stays consistent with the other RTE handlers.
10
+ */
11
+ export class KeyboardLinkHandler extends BaseHandler {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.activeLinkEditor = null;
15
+ this.activeLinkWrapper = null;
16
+ this.linkPopoverHideHandler = null;
17
+ this.linkPopoverHideOwner = null;
18
+ }
19
+ /**
20
+ * Handles keyboard shortcuts for link popover open, close, and focus behavior.
21
+ *
22
+ * @param {KeyboardEvent} [event] - The keydown event fired from the editor.
23
+ */
24
+ handleEvent(event) {
25
+ if (!event) {
26
+ return;
27
+ }
28
+ if (event.key === 'Escape') {
29
+ if (this.activeLinkEditor) {
30
+ event.preventDefault();
31
+ event.stopPropagation();
32
+ void this.activeLinkEditor.hide();
33
+ return;
34
+ }
35
+ const linkWrapper = this.getFocusedLinkWrapper(event.target);
36
+ const linkEditor = this.getLinkEditorFromWrapper(linkWrapper);
37
+ if (linkEditor) {
38
+ event.preventDefault();
39
+ event.stopPropagation();
40
+ void linkEditor.hide();
41
+ return;
42
+ }
43
+ }
44
+ const linkWrapper = this.getFocusedLinkWrapper(event.target);
45
+ if (event.key === 'Tab' && !event.shiftKey && this.focusVisibleLinkPopoverAction(linkWrapper)) {
46
+ event.preventDefault();
47
+ event.stopPropagation();
48
+ const linkEditor = this.getLinkEditorFromWrapper(linkWrapper) || this.activeLinkEditor;
49
+ if (linkWrapper && linkEditor) {
50
+ this.registerLinkPopoverHideHandler(linkEditor, () => {
51
+ this.handleLinkPopoverHide(linkEditor, linkWrapper);
52
+ });
53
+ }
54
+ return;
55
+ }
56
+ const isOpenLinkShortcut = (event.metaKey || event.ctrlKey) && event.key.toLowerCase() === 'k';
57
+ if (!isOpenLinkShortcut || !linkWrapper) {
58
+ return;
59
+ }
60
+ event.preventDefault();
61
+ event.stopPropagation();
62
+ const linkEditor = linkWrapper.querySelector('vega-rich-text-link-editor');
63
+ if (!linkEditor) {
64
+ return;
65
+ }
66
+ this.activeLinkEditor = linkEditor;
67
+ this.activeLinkWrapper = linkWrapper;
68
+ this.registerLinkPopoverHideHandler(linkEditor, () => {
69
+ this.handleLinkPopoverHide(linkEditor, linkWrapper);
70
+ });
71
+ void linkEditor.show();
72
+ }
73
+ /**
74
+ * Releases any registered popover-hide listener when the owning controller is torn down.
75
+ */
76
+ dispose() {
77
+ this.unregisterLinkPopoverHideHandler();
78
+ }
79
+ /**
80
+ * Registers a one-time hide listener on the currently open link editor popover.
81
+ *
82
+ * @param {Nullable<HTMLElement>} linkEditor - Link editor that owns the popover.
83
+ * @param {EventListener} handler - Callback invoked when the popover hides.
84
+ */
85
+ registerLinkPopoverHideHandler(linkEditor, handler) {
86
+ const linkPopoverHideOwner = this.getLinkEditorPopover(linkEditor);
87
+ if (!linkPopoverHideOwner) {
88
+ return;
89
+ }
90
+ this.unregisterLinkPopoverHideHandler();
91
+ this.linkPopoverHideHandler = this.onLinkPopoverHide.bind(this, handler);
92
+ this.linkPopoverHideOwner = linkPopoverHideOwner;
93
+ linkPopoverHideOwner.addEventListener('vegaPopoverHide', this.linkPopoverHideHandler, {
94
+ once: true,
95
+ });
96
+ }
97
+ /**
98
+ * Executes the registered popover-hide callback and clears hide-listener state.
99
+ *
100
+ * @param {EventListener} handler - Registered callback for popover hide.
101
+ * @param {Event} event - Hide event payload.
102
+ */
103
+ onLinkPopoverHide(handler, event) {
104
+ handler(event);
105
+ this.linkPopoverHideHandler = null;
106
+ this.linkPopoverHideOwner = null;
107
+ }
108
+ /**
109
+ * Removes the currently registered popover hide listener if present.
110
+ */
111
+ unregisterLinkPopoverHideHandler() {
112
+ if (this.linkPopoverHideOwner && this.linkPopoverHideHandler) {
113
+ this.linkPopoverHideOwner.removeEventListener('vegaPopoverHide', this.linkPopoverHideHandler);
114
+ }
115
+ this.linkPopoverHideHandler = null;
116
+ this.linkPopoverHideOwner = null;
117
+ }
118
+ /**
119
+ * Resolves the closest focused link wrapper from event target or current selection.
120
+ *
121
+ * @param {EventTarget | null} target - Event target from the keydown event.
122
+ * @returns {Nullable<HTMLElement>} Link wrapper element if found.
123
+ */
124
+ getFocusedLinkWrapper(target) {
125
+ var _a;
126
+ const targetElement = target && target.nodeType === Node.ELEMENT_NODE ? target : null;
127
+ if (targetElement) {
128
+ const directWrapper = targetElement.classList.contains('link-editor-wrapper')
129
+ ? targetElement
130
+ : findParent(targetElement, '.link-editor-wrapper');
131
+ if (directWrapper) {
132
+ return directWrapper;
133
+ }
134
+ }
135
+ const anchorNode = ((_a = this.selectionController.getSelection()) === null || _a === void 0 ? void 0 : _a.anchorNode) || null;
136
+ const anchorElement = (anchorNode === null || anchorNode === void 0 ? void 0 : anchorNode.nodeType) === Node.ELEMENT_NODE
137
+ ? anchorNode
138
+ : (anchorNode === null || anchorNode === void 0 ? void 0 : anchorNode.parentElement) || null;
139
+ if (!anchorElement) {
140
+ return null;
141
+ }
142
+ return anchorElement.classList.contains('link-editor-wrapper')
143
+ ? anchorElement
144
+ : findParent(anchorElement, '.link-editor-wrapper');
145
+ }
146
+ /**
147
+ * Finds the link editor element inside a link wrapper.
148
+ *
149
+ * @typedef HTMLVegaRichTextLinkEditorElement - The type of the link editor element.
150
+ * @param {Nullable<HTMLElement>} linkWrapper - Wrapper that may contain the link editor component.
151
+ * @returns {Nullable<HTMLVegaRichTextLinkEditorElement>} Link editor if present.
152
+ */
153
+ getLinkEditorFromWrapper(linkWrapper) {
154
+ return ((linkWrapper === null || linkWrapper === void 0 ? void 0 : linkWrapper.querySelector('vega-rich-text-link-editor')) ||
155
+ null);
156
+ }
157
+ /**
158
+ * Gets the popover element rendered by a link editor.
159
+ *
160
+ * @param {Nullable<HTMLElement>} linkEditor - Link editor owning the popover.
161
+ * @returns {Nullable<LinkEditorPopoverElement>} Popover element when available.
162
+ */
163
+ getLinkEditorPopover(linkEditor) {
164
+ var _a;
165
+ return ((_a = linkEditor === null || linkEditor === void 0 ? void 0 : linkEditor.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('vega-popover')) || null;
166
+ }
167
+ /**
168
+ * Returns the popover content box associated with a link editor.
169
+ *
170
+ * @param {Nullable<HTMLElement>} linkEditor - Link editor owning the popover.
171
+ * @returns {Nullable<HTMLElement>} Popover content box element.
172
+ */
173
+ getLinkEditorPopoverContentBox(linkEditor) {
174
+ var _a, _b;
175
+ const popover = this.getLinkEditorPopover(linkEditor);
176
+ return ((_b = (_a = popover === null || popover === void 0 ? void 0 : popover.appenderRenderer) === null || _a === void 0 ? void 0 : _a.getPopoverContentBox) === null || _b === void 0 ? void 0 : _b.call(_a)) || null;
177
+ }
178
+ /**
179
+ * Clears active link editor state and restores focus to the provided wrapper.
180
+ *
181
+ * @param {Nullable<HTMLElement>} linkEditor - Link editor that has just hidden.
182
+ * @param {Nullable<HTMLElement>} [focusTarget] - Optional element to receive focus.
183
+ */
184
+ handleLinkPopoverHide(linkEditor, focusTarget) {
185
+ const resolvedFocusTarget = focusTarget || this.activeLinkWrapper;
186
+ if (!linkEditor || this.activeLinkEditor === linkEditor) {
187
+ this.activeLinkEditor = null;
188
+ this.activeLinkWrapper = null;
189
+ }
190
+ if (resolvedFocusTarget) {
191
+ this.placeLinkCaretAtEnd(resolvedFocusTarget);
192
+ }
193
+ }
194
+ /**
195
+ * Focuses the first visible link action in the current link popover.
196
+ *
197
+ * @param {Nullable<HTMLElement>} [linkWrapper] - Optional focused link wrapper context.
198
+ * @returns {boolean} True when focus moved to an action button.
199
+ */
200
+ focusVisibleLinkPopoverAction(linkWrapper) {
201
+ var _a;
202
+ const ownerDocument = ((_a = this.richTextEditorRef) === null || _a === void 0 ? void 0 : _a.ownerDocument) || null;
203
+ if (!ownerDocument) {
204
+ return false;
205
+ }
206
+ const linkEditor = this.getLinkEditorFromWrapper(linkWrapper || null) || this.activeLinkEditor;
207
+ const popoverContentBox = this.getPreferredLinkActionPopover(ownerDocument, linkEditor);
208
+ if (!popoverContentBox) {
209
+ return false;
210
+ }
211
+ const focusableActionButton = this.getFirstFocusableLinkActionButton(popoverContentBox);
212
+ if (!focusableActionButton) {
213
+ return false;
214
+ }
215
+ focusableActionButton.focus();
216
+ return true;
217
+ }
218
+ /**
219
+ * Prefers a scoped link-action popover and falls back to globally visible ones.
220
+ *
221
+ * @param {Document} ownerDocument - Document owning editor popovers.
222
+ * @param {Nullable<HTMLElement>} [linkEditor] - Optional scoped link editor.
223
+ * @returns {Nullable<HTMLElement>} Best popover content box to target.
224
+ */
225
+ getPreferredLinkActionPopover(ownerDocument, linkEditor) {
226
+ const scopedPopoverContentBox = this.getLinkEditorPopoverContentBox(linkEditor || null);
227
+ if (scopedPopoverContentBox &&
228
+ !scopedPopoverContentBox.classList.contains('vega-force-hidden') &&
229
+ this.isLinkActionPopover(scopedPopoverContentBox)) {
230
+ return scopedPopoverContentBox;
231
+ }
232
+ const popoverContentBoxes = Array.from(ownerDocument.querySelectorAll('vega-popover-content-box'));
233
+ const linkActionPopovers = popoverContentBoxes.filter((box) => this.isLinkActionPopover(box));
234
+ const visibleLinkActionPopovers = linkActionPopovers.filter((box) => !box.classList.contains('vega-force-hidden'));
235
+ return visibleLinkActionPopovers[visibleLinkActionPopovers.length - 1] || null;
236
+ }
237
+ /**
238
+ * Checks whether a popover represents the link action menu.
239
+ *
240
+ * @param {HTMLElement} popoverContentBox - Popover content box to inspect.
241
+ * @returns {boolean} True when both edit and unlink actions exist.
242
+ */
243
+ isLinkActionPopover(popoverContentBox) {
244
+ const items = Array.from(popoverContentBox.querySelectorAll('vega-button-group-item'));
245
+ const hasEditAction = items.some((item) => item.itemKey === 'edit');
246
+ const hasUnlinkAction = items.some((item) => item.itemKey === 'unlink');
247
+ return hasEditAction && hasUnlinkAction;
248
+ }
249
+ /**
250
+ * Gets the preferred focusable element from the first link action item.
251
+ *
252
+ * @param {HTMLElement} popoverContentBox - Link action popover content box.
253
+ * @returns {Nullable<HTMLElement>} Focusable anchor or button element.
254
+ */
255
+ getFirstFocusableLinkActionButton(popoverContentBox) {
256
+ var _a, _b, _c, _d;
257
+ const allItems = Array.from(popoverContentBox.querySelectorAll('vega-button-group-item'));
258
+ const firstActionItem = allItems.find((item) => item.itemKey === 'edit') ||
259
+ allItems[0] ||
260
+ null;
261
+ if (!firstActionItem) {
262
+ return null;
263
+ }
264
+ const firstActionLinkWrapper = ((_a = firstActionItem.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('vega-button-link')) || null;
265
+ const firstActionButtonWrapper = ((_b = firstActionItem.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('vega-button')) || null;
266
+ return (((_c = firstActionLinkWrapper === null || firstActionLinkWrapper === void 0 ? void 0 : firstActionLinkWrapper.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('a')) ||
267
+ ((_d = firstActionButtonWrapper === null || firstActionButtonWrapper === void 0 ? void 0 : firstActionButtonWrapper.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('button')) ||
268
+ null);
269
+ }
270
+ /**
271
+ * Places the editor caret at the end of the link when the popover closes.
272
+ *
273
+ * @param {Nullable<HTMLElement>} linkWrapper - The link wrapper element containing link text nodes.
274
+ */
275
+ placeLinkCaretAtEnd(linkWrapper) {
276
+ var _a;
277
+ if (!linkWrapper) {
278
+ return;
279
+ }
280
+ const allTextSpans = Array.from(linkWrapper.querySelectorAll('span'));
281
+ if (allTextSpans.length === 0) {
282
+ return;
283
+ }
284
+ const lastTextSpan = allTextSpans[allTextSpans.length - 1];
285
+ const lastNodeEntity = stateEntityRenderingRegistry.getEntityByDOM(lastTextSpan);
286
+ if (!lastNodeEntity || lastNodeEntity instanceof RTEBlock) {
287
+ return;
288
+ }
289
+ if (!(lastNodeEntity instanceof RTETextNode)) {
290
+ return;
291
+ }
292
+ const lastNode = lastNodeEntity;
293
+ const endOffset = ((_a = lastNode.text) === null || _a === void 0 ? void 0 : _a.length) || 0;
294
+ // Place caret at the end of the link when popover closes
295
+ this.selectionController.enqueueSelectionRangeFutureState(lastNode, endOffset, lastNode, endOffset, true);
296
+ }
297
+ }
@@ -12,6 +12,7 @@ import { ForwardDeleteContentHandler } from './helper/input-event-handler/forwar
12
12
  import { BackwardDeleteContentHandler } from './helper/input-event-handler/backward-delete-content-handler';
13
13
  import { VegaRTEContent } from '../../dto/content-state';
14
14
  import { InsertPasteHandler } from './helper/input-event-handler/insert-paste-handler';
15
+ import { KeyboardLinkHandler } from './helper/input-event-handler/keyboard-link-handler';
15
16
  import { generateUUID } from '../../../../utils/misc';
16
17
  import { RTECodeBlock } from '../../dto/blocks/code-block';
17
18
  /** Used to monitoring the user input actions by event listener */
@@ -24,6 +25,15 @@ export class UserInputController extends VegaSlimmer {
24
25
  this.forwardDeleteContentHandler = new ForwardDeleteContentHandler();
25
26
  this.backwardDeleteContentHandler = new BackwardDeleteContentHandler();
26
27
  this.insertPasteHandler = new InsertPasteHandler();
28
+ this.keyboardLinkHandler = new KeyboardLinkHandler();
29
+ /**
30
+ * Dispatches editor keydown events to the keyboard link handler using the shared handler workflow.
31
+ *
32
+ * @param {KeyboardEvent} event - The keydown event fired from the editor.
33
+ */
34
+ this.handleKeyboardAction = (event) => {
35
+ this.keyboardLinkHandler.execute(this.value, this.selectionController, this.host, event);
36
+ };
27
37
  /**
28
38
  * When a user performs an input action within the editable element, this function is triggered.
29
39
  *
@@ -78,6 +88,7 @@ export class UserInputController extends VegaSlimmer {
78
88
  const editableElement = this.getEditableElementRef();
79
89
  if (editableElement) {
80
90
  editableElement.addEventListener('beforeinput', this.handleUserInputAction);
91
+ editableElement.addEventListener('keydown', this.handleKeyboardAction);
81
92
  editableElement.addEventListener('drop', this.preventDropEvent);
82
93
  }
83
94
  }
@@ -88,8 +99,10 @@ export class UserInputController extends VegaSlimmer {
88
99
  const editableElement = this.getEditableElementRef();
89
100
  if (editableElement) {
90
101
  editableElement.removeEventListener('beforeinput', this.handleUserInputAction);
102
+ editableElement.removeEventListener('keydown', this.handleKeyboardAction);
91
103
  editableElement.removeEventListener('drop', this.preventDropEvent);
92
104
  }
105
+ this.keyboardLinkHandler.dispose();
93
106
  }
94
107
  /**
95
108
  * The function `getEditableElementRef` returns a reference to the editable HTMLDivElement within a rich text editor.
@@ -27,12 +27,18 @@ export class LinkToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
27
27
  this.handleLinkEditorChange = ({ detail, }) => {
28
28
  switch (detail.action) {
29
29
  case 'link': {
30
- const { url, text } = detail.payload;
30
+ const { url, text, linkType } = detail.payload;
31
31
  const textChanged = text !== this.currentSelectedText;
32
32
  const groupKey = generateUUID();
33
33
  this.currentSelectedNodes.forEach((node) => {
34
34
  node.apply(new SelectionChangeAction(this.currentRange)).apply(new LinkAnnotationAction({
35
- link: { href: url, groupKey: groupKey },
35
+ link: Object.assign({ href: url, groupKey: groupKey }, (linkType
36
+ ? {
37
+ customAttribute: {
38
+ 'data-link-type': linkType,
39
+ },
40
+ }
41
+ : {})),
36
42
  newText: textChanged ? text : undefined,
37
43
  needMergeNode: textChanged && this.currentSelectedNodes.length > 1,
38
44
  type: 'link',
@@ -21,7 +21,7 @@ import { LinkToolbarButtonSlimmer } from './slimmers/renderers/tools/link-toolba
21
21
  import { MoreIndentToolbarButtonSlimmer } from './slimmers/renderers/tools/more-indent-toolbar-button-slimmer';
22
22
  import { LessIndentToolbarButtonSlimmer } from './slimmers/renderers/tools/less-indent-toolbar-button-slimmer';
23
23
  import { ImageToolbarButtonSlimmer } from './slimmers/renderers/tools/image-toolbar-button-slimmer';
24
- import { FormFieldControllerSlimmer } from '../../helpers/slimmers/form-field-controller-slimmer';
24
+ import { FormFieldControllerSlimmer } from '../../helpers/slimmers/form/form-field-controller-slimmer';
25
25
  import { createEventEmitSlimmer, } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
26
26
  import { VegaChange, VegaImageInserted, VegaSourceCodeChange, } from '../../helpers/event-manager/event-id/vega-event-id';
27
27
  import { TextColorToolbarButtonSlimmer } from './slimmers/renderers/tools/text-color-toolbar-button-slimmer';
@@ -153,6 +153,14 @@ export class VegaRichTextEditor {
153
153
  * @vegaVersion 2.88.0
154
154
  */
155
155
  this.optional = false;
156
+ /**
157
+ * Specifies the name attribute used to identify the form field during data submission.
158
+ * It functions identically to the `data-vega-form` attribute but operates at a lower priority.
159
+ *
160
+ * @default ''
161
+ * @vegaVersion 2.97.0
162
+ */
163
+ this.name = '';
156
164
  /**
157
165
  * Specifies a placeholder string that displays as a
158
166
  * temporary hint or example within the rich text editor.
@@ -365,6 +373,30 @@ export class VegaRichTextEditor {
365
373
  "reflect": true,
366
374
  "defaultValue": "false"
367
375
  },
376
+ "name": {
377
+ "type": "string",
378
+ "mutable": false,
379
+ "complexType": {
380
+ "original": "string",
381
+ "resolved": "string",
382
+ "references": {}
383
+ },
384
+ "required": false,
385
+ "optional": false,
386
+ "docs": {
387
+ "tags": [{
388
+ "name": "default",
389
+ "text": "''"
390
+ }, {
391
+ "name": "vegaVersion",
392
+ "text": "2.97.0"
393
+ }],
394
+ "text": "Specifies the name attribute used to identify the form field during data submission.\n It functions identically to the `data-vega-form` attribute but operates at a lower priority."
395
+ },
396
+ "attribute": "name",
397
+ "reflect": true,
398
+ "defaultValue": "''"
399
+ },
368
400
  "placeholder": {
369
401
  "type": "string",
370
402
  "mutable": false,