@adyen/bento-vue3 1.45.0 → 1.47.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 (199) hide show
  1. package/dist/@types/index.d.ts +128 -47
  2. package/dist/accordion.js +1 -1
  3. package/dist/action-bar.js +1 -1
  4. package/dist/alert.js +1 -1
  5. package/dist/assets/accordion-item.css +1 -1
  6. package/dist/assets/action-bar.css +1 -1
  7. package/dist/assets/base-modal.css +1 -1
  8. package/dist/assets/calendar.css +1 -1
  9. package/dist/assets/card.css +1 -1
  10. package/dist/assets/data-grid.css +1 -1
  11. package/dist/assets/date-picker.css +1 -1
  12. package/dist/assets/date-range-picker.css +1 -1
  13. package/dist/assets/dialog-page.css +1 -1
  14. package/dist/assets/divider.css +1 -1
  15. package/dist/assets/dropdown.css +1 -1
  16. package/dist/assets/file-uploader.css +1 -1
  17. package/dist/assets/input-field-password.css +1 -1
  18. package/dist/assets/input-field.css +1 -1
  19. package/dist/assets/inspector.css +1 -1
  20. package/dist/assets/menu.css +1 -1
  21. package/dist/assets/modal-fullscreen.css +1 -1
  22. package/dist/assets/popover.css +1 -1
  23. package/dist/assets/radio-group.css +1 -1
  24. package/dist/assets/radio-input.css +1 -1
  25. package/dist/assets/sidepanel.css +1 -1
  26. package/dist/assets/status.css +1 -1
  27. package/dist/assets/step.css +1 -1
  28. package/dist/button.js +1 -1
  29. package/dist/card.js +1 -1
  30. package/dist/checkbox.js +2 -2
  31. package/dist/chunks/{accordion-item.DfOb4Pyx.js → accordion-item.LeB4jteX.js} +5 -5
  32. package/dist/chunks/{accordion-item.DfOb4Pyx.js.map → accordion-item.LeB4jteX.js.map} +1 -1
  33. package/dist/chunks/{action-bar.CmDQZkM2.js → action-bar.BN-AoRn0.js} +11 -11
  34. package/dist/chunks/{action-bar.CmDQZkM2.js.map → action-bar.BN-AoRn0.js.map} +1 -1
  35. package/dist/chunks/{alert.D1Ax6AnI.js → alert.DTX7XqPC.js} +7 -7
  36. package/dist/chunks/{alert.D1Ax6AnI.js.map → alert.DTX7XqPC.js.map} +1 -1
  37. package/dist/chunks/{base-modal.DbJYaHyG.js → base-modal.BsD3EOCY.js} +5 -5
  38. package/dist/chunks/{base-modal.DbJYaHyG.js.map → base-modal.BsD3EOCY.js.map} +1 -1
  39. package/dist/chunks/{button-actions-with-menu.BUyecZNi.js → button-actions-with-menu.CUL1q1Ca.js} +4 -4
  40. package/dist/chunks/{button-actions-with-menu.BUyecZNi.js.map → button-actions-with-menu.CUL1q1Ca.js.map} +1 -1
  41. package/dist/chunks/{button-actions.CShVMUOC.js → button-actions.DBgK5Qwo.js} +5 -5
  42. package/dist/chunks/{button-actions.CShVMUOC.js.map → button-actions.DBgK5Qwo.js.map} +1 -1
  43. package/dist/chunks/{calendar.1qqtC8ba.js → calendar.CKY08nCx.js} +120 -107
  44. package/dist/chunks/{calendar.1qqtC8ba.js.map → calendar.CKY08nCx.js.map} +1 -1
  45. package/dist/chunks/{card.rkMUtirc.js → card.BUBXMpP5.js} +10 -10
  46. package/dist/chunks/{card.rkMUtirc.js.map → card.BUBXMpP5.js.map} +1 -1
  47. package/dist/chunks/{checkbox-group.PTNxE0kL.js → checkbox-group.DOAFzAX-.js} +4 -4
  48. package/dist/chunks/{checkbox-group.PTNxE0kL.js.map → checkbox-group.DOAFzAX-.js.map} +1 -1
  49. package/dist/chunks/{checkbox.D9FJcICR.js → checkbox.J51-tG4g.js} +22 -22
  50. package/dist/chunks/{checkbox.D9FJcICR.js.map → checkbox.J51-tG4g.js.map} +1 -1
  51. package/dist/chunks/code-snippet.CUzz3c-V.js +422 -0
  52. package/dist/chunks/code-snippet.CUzz3c-V.js.map +1 -0
  53. package/dist/chunks/{codemirror.CXFEqvAi.js → codemirror.0fz2cWJS.js} +4970 -4661
  54. package/dist/chunks/codemirror.0fz2cWJS.js.map +1 -0
  55. package/dist/chunks/{controls-group.BHxcGQ2A.js → controls-group.CjqybvY2.js} +2 -2
  56. package/dist/chunks/{controls-group.BHxcGQ2A.js.map → controls-group.CjqybvY2.js.map} +1 -1
  57. package/dist/chunks/{copy.DAMq-zRP.js → copy.VRsofU-g.js} +5 -5
  58. package/dist/chunks/{copy.DAMq-zRP.js.map → copy.VRsofU-g.js.map} +1 -1
  59. package/dist/chunks/{country.Cv_8NTmw.js → country.D2t_VEYd.js} +2 -2
  60. package/dist/chunks/{country.Cv_8NTmw.js.map → country.D2t_VEYd.js.map} +1 -1
  61. package/dist/chunks/{country.types.pilf5B3F.js → country.types.CLjbulKL.js} +4114 -4114
  62. package/dist/chunks/{country.types.pilf5B3F.js.map → country.types.CLjbulKL.js.map} +1 -1
  63. package/dist/chunks/{dashboard-section.Buh9mb22.js → dashboard-section.BAJgkMXW.js} +3 -3
  64. package/dist/chunks/{dashboard-section.Buh9mb22.js.map → dashboard-section.BAJgkMXW.js.map} +1 -1
  65. package/dist/chunks/{dashed-underline.DYVSwQtH.js → dashed-underline.B_eVv1aB.js} +2 -2
  66. package/dist/chunks/{dashed-underline.DYVSwQtH.js.map → dashed-underline.B_eVv1aB.js.map} +1 -1
  67. package/dist/chunks/{data-grid-template.B6xmEgaM.js → data-grid-template.DrwGj6Yq.js} +2 -2
  68. package/dist/chunks/{data-grid-template.B6xmEgaM.js.map → data-grid-template.DrwGj6Yq.js.map} +1 -1
  69. package/dist/chunks/{data-grid.DVc9qzLU.js → data-grid.V4b5UdXZ.js} +46 -46
  70. package/dist/chunks/{data-grid.DVc9qzLU.js.map → data-grid.V4b5UdXZ.js.map} +1 -1
  71. package/dist/chunks/{date-picker.Bt4fyPQ4.js → date-picker.DjuQyWzZ.js} +45 -36
  72. package/dist/chunks/date-picker.DjuQyWzZ.js.map +1 -0
  73. package/dist/chunks/{date-range-picker.Bna_2pBL.js → date-range-picker.CmxXWnBc.js} +328 -324
  74. package/dist/chunks/date-range-picker.CmxXWnBc.js.map +1 -0
  75. package/dist/chunks/divider.qUOSAbU6.js +33 -0
  76. package/dist/chunks/divider.qUOSAbU6.js.map +1 -0
  77. package/dist/chunks/{dropdown-default-textbox.ipIFhyWZ.js → dropdown-default-textbox.Dl8Jv2bS.js} +4 -4
  78. package/dist/chunks/{dropdown-default-textbox.ipIFhyWZ.js.map → dropdown-default-textbox.Dl8Jv2bS.js.map} +1 -1
  79. package/dist/chunks/{dropdown-tag.DLyxItIS.js → dropdown-tag.D8hXRrMj.js} +4 -4
  80. package/dist/chunks/{dropdown-tag.DLyxItIS.js.map → dropdown-tag.D8hXRrMj.js.map} +1 -1
  81. package/dist/chunks/{dropdown.CZDXXpKe.js → dropdown.BWu3fV-K.js} +263 -256
  82. package/dist/chunks/dropdown.BWu3fV-K.js.map +1 -0
  83. package/dist/chunks/{error-message.BVE3JdTq.js → error-message.qsc0nOWT.js} +8 -8
  84. package/dist/chunks/{error-message.BVE3JdTq.js.map → error-message.qsc0nOWT.js.map} +1 -1
  85. package/dist/chunks/{es6.jIyAPBgt.js → es6.BtaxuP0b.js} +7 -7
  86. package/dist/chunks/es6.BtaxuP0b.js.map +1 -0
  87. package/dist/chunks/file-uploader.BNGBBltW.js +2226 -0
  88. package/dist/chunks/file-uploader.BNGBBltW.js.map +1 -0
  89. package/dist/chunks/{filter-bar.oihCCt5N.js → filter-bar.Db-KfD-S.js} +53 -53
  90. package/dist/chunks/{filter-bar.oihCCt5N.js.map → filter-bar.Db-KfD-S.js.map} +1 -1
  91. package/dist/chunks/{footer-actions.n0JIXO4Q.js → footer-actions.BG8-pOU-.js} +2 -2
  92. package/dist/chunks/{footer-actions.n0JIXO4Q.js.map → footer-actions.BG8-pOU-.js.map} +1 -1
  93. package/dist/chunks/{form-layout-title.srkVLEUW.js → form-layout-title._25l9_Xm.js} +2 -2
  94. package/dist/chunks/{form-layout-title.srkVLEUW.js.map → form-layout-title._25l9_Xm.js.map} +1 -1
  95. package/dist/chunks/{header.CAHXObTT.js → header.vPx_0dwO.js} +4 -4
  96. package/dist/chunks/{header.CAHXObTT.js.map → header.vPx_0dwO.js.map} +1 -1
  97. package/dist/chunks/{info-icon-with-popover.DFv8U4sh.js → info-icon-with-popover.CieLDo3g.js} +5 -5
  98. package/dist/chunks/{info-icon-with-popover.DFv8U4sh.js.map → info-icon-with-popover.CieLDo3g.js.map} +1 -1
  99. package/dist/chunks/{input-field-password.DedPkZxg.js → input-field-password.CS7rxMCK.js} +80 -80
  100. package/dist/chunks/{input-field-password.DedPkZxg.js.map → input-field-password.CS7rxMCK.js.map} +1 -1
  101. package/dist/chunks/{input-field.3PUv6XC3.js → input-field.Cx4fMIb7.js} +126 -117
  102. package/dist/chunks/input-field.Cx4fMIb7.js.map +1 -0
  103. package/dist/chunks/{inspector.types.Dr0D250X.js → inspector.types.DQQN1eqF.js} +5 -5
  104. package/dist/chunks/{inspector.types.Dr0D250X.js.map → inspector.types.DQQN1eqF.js.map} +1 -1
  105. package/dist/chunks/{menu.Dmzh3Uat.js → menu.CihQsfY6.js} +5 -5
  106. package/dist/chunks/{menu.Dmzh3Uat.js.map → menu.CihQsfY6.js.map} +1 -1
  107. package/dist/chunks/{modal-fullscreen.BazQAAU1.js → modal-fullscreen.D39_mhdY.js} +5 -5
  108. package/dist/chunks/{modal-fullscreen.BazQAAU1.js.map → modal-fullscreen.D39_mhdY.js.map} +1 -1
  109. package/dist/chunks/{modal.vue_vue_type_script_setup_true_lang.C8vZDtlE.js → modal.vue_vue_type_script_setup_true_lang.BHd_MGgH.js} +4 -4
  110. package/dist/chunks/{modal.vue_vue_type_script_setup_true_lang.C8vZDtlE.js.map → modal.vue_vue_type_script_setup_true_lang.BHd_MGgH.js.map} +1 -1
  111. package/dist/chunks/{pagination.BCC3GZV5.js → pagination.CbzgV2xT.js} +45 -45
  112. package/dist/chunks/{pagination.BCC3GZV5.js.map → pagination.CbzgV2xT.js.map} +1 -1
  113. package/dist/chunks/{popover.3KG1IoYE.js → popover.Bzb-pzfB.js} +2 -2
  114. package/dist/chunks/{popover.3KG1IoYE.js.map → popover.Bzb-pzfB.js.map} +1 -1
  115. package/dist/chunks/{radio-group.CeiSaH6M.js → radio-group.DkfCMh_u.js} +107 -94
  116. package/dist/chunks/radio-group.DkfCMh_u.js.map +1 -0
  117. package/dist/chunks/{radio-input.0TPahhZT.js → radio-input.DKfQGxtp.js} +27 -23
  118. package/dist/chunks/{radio-input.0TPahhZT.js.map → radio-input.DKfQGxtp.js.map} +1 -1
  119. package/dist/chunks/{search-bar.BZDJJtWB.js → search-bar.BTu1j3Ll.js} +7 -7
  120. package/dist/chunks/{search-bar.BZDJJtWB.js.map → search-bar.BTu1j3Ll.js.map} +1 -1
  121. package/dist/chunks/{secondary-nav.qm-rh-r6.js → secondary-nav.Bqvz5hjH.js} +8 -8
  122. package/dist/chunks/{secondary-nav.qm-rh-r6.js.map → secondary-nav.Bqvz5hjH.js.map} +1 -1
  123. package/dist/chunks/{selection-card-group.DPGh4nwl.js → selection-card-group.BHYvAL-T.js} +12 -12
  124. package/dist/chunks/{selection-card-group.DPGh4nwl.js.map → selection-card-group.BHYvAL-T.js.map} +1 -1
  125. package/dist/chunks/{sidepanel.DxSdFwm1.js → sidepanel.Bk35AAFF.js} +5 -5
  126. package/dist/chunks/{sidepanel.DxSdFwm1.js.map → sidepanel.Bk35AAFF.js.map} +1 -1
  127. package/dist/chunks/status.types.DsYAH3RM.js +45 -0
  128. package/dist/chunks/status.types.DsYAH3RM.js.map +1 -0
  129. package/dist/chunks/{structured-list-item.DpI6jzfM.js → structured-list-item.wpnBS69h.js} +5 -5
  130. package/dist/chunks/{structured-list-item.DpI6jzfM.js.map → structured-list-item.wpnBS69h.js.map} +1 -1
  131. package/dist/chunks/{summary-grid-item-custom.DCNWMasy.js → summary-grid-item-custom.C8AD1NAh.js} +2 -2
  132. package/dist/chunks/{summary-grid-item-custom.DCNWMasy.js.map → summary-grid-item-custom.C8AD1NAh.js.map} +1 -1
  133. package/dist/chunks/{textarea.CCr8inwI.js → textarea.C0k8by9A.js} +2 -2
  134. package/dist/chunks/{textarea.CCr8inwI.js.map → textarea.C0k8by9A.js.map} +1 -1
  135. package/dist/chunks/{timeline-item.DG9YaOiC.js → timeline-item.CYw68jQr.js} +13 -13
  136. package/dist/chunks/{timeline-item.DG9YaOiC.js.map → timeline-item.CYw68jQr.js.map} +1 -1
  137. package/dist/chunks/{tutorial.vue_vue_type_script_setup_true_lang.CQ0vEvB4.js → tutorial.vue_vue_type_script_setup_true_lang.CjlNffBI.js} +10 -10
  138. package/dist/chunks/{tutorial.vue_vue_type_script_setup_true_lang.CQ0vEvB4.js.map → tutorial.vue_vue_type_script_setup_true_lang.CjlNffBI.js.map} +1 -1
  139. package/dist/chunks/{use-cached-selected-values.BBD_AA1m.js → use-cached-selected-values.YAg3m-Af.js} +10 -10
  140. package/dist/chunks/{use-cached-selected-values.BBD_AA1m.js.map → use-cached-selected-values.YAg3m-Af.js.map} +1 -1
  141. package/dist/chunks/{use-country-items.DnPo3yxj.js → use-country-items.DJn6gU4P.js} +2 -2
  142. package/dist/chunks/{use-country-items.DnPo3yxj.js.map → use-country-items.DJn6gU4P.js.map} +1 -1
  143. package/dist/code-snippet.js +1 -1
  144. package/dist/country.js +2 -2
  145. package/dist/dashboard-template.js +1 -1
  146. package/dist/dashed-underline.js +1 -1
  147. package/dist/data-grid-template.js +1 -1
  148. package/dist/data-grid.js +1 -1
  149. package/dist/date-picker.js +2 -2
  150. package/dist/date-range-picker.js +2 -2
  151. package/dist/divider.js +1 -1
  152. package/dist/dropdown.js +4 -4
  153. package/dist/file-uploader.js +1 -1
  154. package/dist/filter-bar.js +1 -1
  155. package/dist/form-layout.js +1 -1
  156. package/dist/header.js +1 -1
  157. package/dist/index.js +47 -47
  158. package/dist/input-field-password.js +1 -1
  159. package/dist/input-field.js +1 -1
  160. package/dist/inspector.js +1 -1
  161. package/dist/internal.js +8 -8
  162. package/dist/menu.js +1 -1
  163. package/dist/modal-fullscreen.js +1 -1
  164. package/dist/modal.js +2 -2
  165. package/dist/pagination.js +1 -1
  166. package/dist/popover.js +1 -1
  167. package/dist/radio-group.js +2 -2
  168. package/dist/search-bar.js +2 -2
  169. package/dist/secondary-nav.js +1 -1
  170. package/dist/selection-card.js +1 -1
  171. package/dist/sidepanel.js +1 -1
  172. package/dist/status.js +1 -1
  173. package/dist/structured-list.js +1 -1
  174. package/dist/styles/bento-dark.css +2 -0
  175. package/dist/styles/bento-light.css +2 -0
  176. package/dist/styles/bento.css +2 -0
  177. package/dist/styles/legacy.css +7 -5
  178. package/dist/styles/styleguide.css +2 -0
  179. package/dist/summary-grid.js +1 -1
  180. package/dist/textarea.js +1 -1
  181. package/dist/timeline.js +1 -1
  182. package/dist/tutorial.js +1 -1
  183. package/dist/web-types.json +1 -1
  184. package/package.json +7 -4
  185. package/dist/chunks/code-snippet.volJxGqR.js +0 -392
  186. package/dist/chunks/code-snippet.volJxGqR.js.map +0 -1
  187. package/dist/chunks/codemirror.CXFEqvAi.js.map +0 -1
  188. package/dist/chunks/date-picker.Bt4fyPQ4.js.map +0 -1
  189. package/dist/chunks/date-range-picker.Bna_2pBL.js.map +0 -1
  190. package/dist/chunks/divider.DwBC4bpr.js +0 -22
  191. package/dist/chunks/divider.DwBC4bpr.js.map +0 -1
  192. package/dist/chunks/dropdown.CZDXXpKe.js.map +0 -1
  193. package/dist/chunks/es6.jIyAPBgt.js.map +0 -1
  194. package/dist/chunks/file-uploader.BXHt0PWz.js +0 -1077
  195. package/dist/chunks/file-uploader.BXHt0PWz.js.map +0 -1
  196. package/dist/chunks/input-field.3PUv6XC3.js.map +0 -1
  197. package/dist/chunks/radio-group.CeiSaH6M.js.map +0 -1
  198. package/dist/chunks/status.types.Dil95sGx.js +0 -44
  199. package/dist/chunks/status.types.Dil95sGx.js.map +0 -1
@@ -1,17 +1,17 @@
1
- import { defineComponent as ie, useAttrs as le, ref as s, computed as r, watch as Z, createElementBlock as C, openBlock as l, createVNode as L, createBlock as d, createCommentVNode as c, unref as e, mergeProps as se, createSlots as oe, withCtx as u, createTextVNode as T, toDisplayString as h, createElementVNode as R, normalizeClass as W, Fragment as ne, renderList as re } from "vue";
1
+ import { defineComponent as ie, useAttrs as le, ref as o, computed as r, watch as Z, createElementBlock as C, openBlock as l, createVNode as L, createBlock as d, createCommentVNode as c, unref as a, mergeProps as oe, createSlots as se, withCtx as u, createTextVNode as T, toDisplayString as h, createElementVNode as R, normalizeClass as W, Fragment as ne, renderList as re } from "vue";
2
2
  import { B as de } from "./button.Cneb6rPP.js";
3
3
  import { _ as ue } from "./image.vue_vue_type_script_setup_true_lang.DQT2oNEF.js";
4
- import { B as ce } from "./input-field.3PUv6XC3.js";
5
- import { B as pe } from "./popover.3KG1IoYE.js";
6
- import { B as M } from "./typography.DN5eC5ch.js";
4
+ import { B as ce } from "./input-field.Cx4fMIb7.js";
5
+ import { B as pe } from "./popover.Bzb-pzfB.js";
6
+ import { B as A } from "./typography.DN5eC5ch.js";
7
7
  import { C as ve } from "./checkmark-circle-fill.g_tcBhFJ.js";
8
8
  import { D as fe } from "./dot.cpdFEk6G.js";
9
9
  import { S as me, H as ge } from "./show.J9zXGWlK.js";
10
10
  import { c as he, w as _e } from "./index.BMkVmbZj.js";
11
11
  import { u as we } from "./i18n.WMYWtwxB.js";
12
12
  import { g as z } from "./generate-uid.NJ8tVoha.js";
13
- import { T as ke } from "./tooltip.2MOlGHD9.js";
14
- import { _ as be } from "./_plugin-vue_export-helper.CHgC5LLL.js";
13
+ import { T as be } from "./tooltip.2MOlGHD9.js";
14
+ import { _ as ke } from "./_plugin-vue_export-helper.CHgC5LLL.js";
15
15
  import "../assets/input-field-password.css";
16
16
  var _ = /* @__PURE__ */ ((t) => (t.TEXT = "text", t.PASSWORD = "password", t))(_ || {});
17
17
  const ye = "data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='capslock'%3e%3cg%20id='Union'%3e%3cpath%20d='M13.75%205.63952L8%201.03952L2.25%205.63952V7.74999H4.75V11.75H11.25V7.74999H13.75V5.63952ZM6.25%206.24999H3.88809L8%202.96046L12.1119%206.24999H9.75V10.25H6.25V6.24999Z'%20fill='%2300112C'/%3e%3cpath%20d='M11.25%2014.75V13.25H4.75V14.75H11.25Z'%20fill='%2300112C'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
@@ -49,18 +49,6 @@ const X = {
49
49
  validationUnchecked: "Unchecked",
50
50
  validationValid: "Input is valid"
51
51
  },
52
- "pt-BR": {
53
- capsLockEnabled: "Caps lock ativado",
54
- hidePassword: "Ocultar",
55
- showPassword: "Exibir",
56
- validationMinLength: "8 caracteres",
57
- validationRequireLowercase: "1 minúscula (a-z)",
58
- validationRequireNumeric: "1 numérico (0-9)",
59
- validationRequireSpecialCharacter: "1 caractere especial",
60
- validationRequireUppercase: "1 maiúscula (A-Z)",
61
- validationSuggestion: "Evite símbolos de moeda ou letras acentuadas.",
62
- validationTitle: "A senha deve conter pelo menos:"
63
- },
64
52
  "ja-JP": {
65
53
  capsLockEnabled: "Caps lockオン",
66
54
  hidePassword: "非表示",
@@ -72,16 +60,28 @@ const X = {
72
60
  validationRequireUppercase: "大文字1字 (A-Z)",
73
61
  validationSuggestion: "通貨記号やアクセント付き文字は避けてください。",
74
62
  validationTitle: "パスワードには少なくとも次のものを含める必要があります :"
63
+ },
64
+ "pt-BR": {
65
+ capsLockEnabled: "Caps lock ativado",
66
+ hidePassword: "Ocultar",
67
+ showPassword: "Exibir",
68
+ validationMinLength: "8 caracteres",
69
+ validationRequireLowercase: "1 minúscula (a-z)",
70
+ validationRequireNumeric: "1 numérico (0-9)",
71
+ validationRequireSpecialCharacter: "1 caractere especial",
72
+ validationRequireUppercase: "1 maiúscula (A-Z)",
73
+ validationSuggestion: "Evite símbolos de moeda ou letras acentuadas.",
74
+ validationTitle: "A senha deve conter pelo menos:"
75
75
  }
76
76
  }, Pe = ["id"], Ee = {
77
77
  key: 1,
78
78
  class: "b-input-field-password__validation-status--valid",
79
79
  role: "alert"
80
- }, Se = ["id"], Ve = { class: "b-input-field-password__validation-list-icon" }, qe = {
80
+ }, Se = ["id"], Me = { class: "b-input-field-password__validation-list-icon" }, Ve = {
81
81
  i18n: { messages: X },
82
82
  name: "bento-input-field-password"
83
- }, Ae = /* @__PURE__ */ ie({
84
- ...qe,
83
+ }, qe = /* @__PURE__ */ ie({
84
+ ...Ve,
85
85
  props: {
86
86
  condensed: { default: !1 },
87
87
  disabled: { default: !1 },
@@ -95,26 +95,26 @@ const X = {
95
95
  },
96
96
  emits: ["input:valid", "input"],
97
97
  setup(t, { emit: I }) {
98
- const { t: i } = we({ messages: X }), o = t, B = I, K = le(), k = s(_.PASSWORD), g = s(o.value), U = s(!1), O = s(!1), b = s([]), p = s(null), v = s(!1), D = s(null), P = s(null), E = s(null), S = s(!1), { focused: j } = he(D), H = z("validationListId"), N = z("validationPopoverId"), V = r(() => k.value === _.TEXT), J = r(() => O.value && q.value ? o.errorMessage : ""), $ = r(
99
- () => b.value.map(
100
- (a) => a ? "b-input-field-password__validation-list--valid" : "b-input-field-password__validation-list--invalid"
98
+ const { t: i } = we({ messages: X }), s = t, B = I, K = le(), b = o(_.PASSWORD), g = o(s.value), U = o(!1), O = o(!1), k = o([]), p = o(null), v = o(!1), D = o(null), P = o(null), E = o(null), S = o(!1), { focused: j } = he(D), H = z("validationListId"), N = z("validationPopoverId"), M = r(() => b.value === _.TEXT), J = r(() => O.value && V.value ? s.errorMessage : ""), $ = r(
99
+ () => k.value.map(
100
+ (e) => e ? "b-input-field-password__validation-list--valid" : "b-input-field-password__validation-list--invalid"
101
101
  )
102
102
  ), G = r(
103
103
  () => p.value ? "b-input-field-password__input-tooltip--timed" : ""
104
104
  ), Q = r(() => ({
105
105
  ariaHidden: !1,
106
- condensed: o.condensed,
107
- disabled: o.disabled,
106
+ condensed: s.condensed,
107
+ disabled: s.disabled,
108
108
  errorMessage: J.value,
109
- placeholder: o.placeholder,
110
- readonly: o.readonly,
111
- type: k.value,
109
+ placeholder: s.placeholder,
110
+ readonly: s.readonly,
111
+ type: b.value,
112
112
  value: g.value,
113
- "aria-haspopup": A.value ? "dialog" : !1,
114
- "aria-describedby": A.value ? N : "",
113
+ "aria-haspopup": q.value ? "dialog" : !1,
114
+ "aria-describedby": q.value ? N : "",
115
115
  ...K
116
116
  })), n = r(
117
- () => o.validation === void 0 ? {
117
+ () => s.validation === void 0 ? {
118
118
  title: i("validationTitle"),
119
119
  suggestion: i("validationSuggestion"),
120
120
  list: [
@@ -124,46 +124,46 @@ const X = {
124
124
  { label: i("validationRequireNumeric"), validate: Re },
125
125
  { label: i("validationRequireSpecialCharacter"), validate: Ie }
126
126
  ]
127
- } : o.validation
128
- ), q = r(() => b.value.some((a) => !a)), A = r(
127
+ } : s.validation
128
+ ), V = r(() => k.value.some((e) => !e)), q = r(
129
129
  () => {
130
- var a, f;
131
- return P.value && ((f = (a = n.value) == null ? void 0 : a.list) == null ? void 0 : f.length) > 0;
130
+ var e, f;
131
+ return P.value && ((f = (e = n.value) == null ? void 0 : e.list) == null ? void 0 : f.length) > 0;
132
132
  }
133
- ), F = (a) => {
134
- S.value = a.getModifierState("CapsLock");
133
+ ), F = (e) => {
134
+ typeof e.getModifierState == "function" && (S.value = e.getModifierState("CapsLock"));
135
135
  }, Y = () => {
136
- V.value ? k.value = _.PASSWORD : k.value = _.TEXT;
137
- }, ee = (a) => {
138
- o.disabled || (g.value = a, B("input", g.value));
139
- }, x = (a) => {
136
+ M.value ? b.value = _.PASSWORD : b.value = _.TEXT;
137
+ }, ee = (e) => {
138
+ s.disabled || (g.value = e, B("input", g.value));
139
+ }, x = (e) => {
140
140
  var f, y;
141
- b.value = ((y = (f = n.value) == null ? void 0 : f.list) == null ? void 0 : y.map(
142
- (m) => m.validate(a, m.additionalArgs)
141
+ k.value = ((y = (f = n.value) == null ? void 0 : f.list) == null ? void 0 : y.map(
142
+ (m) => m.validate(e, m.additionalArgs)
143
143
  )) ?? [];
144
144
  }, ae = () => {
145
145
  v.value = !1, p.value = null;
146
146
  }, te = () => {
147
147
  v.value = !0;
148
148
  };
149
- return Z(j, (a) => {
150
- o.withHint && (U.value = a, a ? x(g.value) : O.value = !0);
151
- }), Z(S, (a) => {
152
- a ? (v.value = !0, p.value = setTimeout(() => {
149
+ return Z(j, (e) => {
150
+ s.withHint && (U.value = e, e ? x(g.value) : O.value = !0);
151
+ }), Z(S, (e) => {
152
+ e ? (v.value = !0, p.value = setTimeout(() => {
153
153
  p.value = null, v.value = !1;
154
154
  }, 2e3)) : (clearTimeout(p.value), p.value = null, v.value = !1);
155
155
  }), _e(
156
156
  g,
157
- (a) => {
158
- x(a), q.value || B("input:valid");
157
+ (e) => {
158
+ x(e), V.value || B("input:valid");
159
159
  },
160
160
  // wait for 0.5s before checking validity OR 2s of continuous typing
161
161
  { debounce: 500, maxWait: 2e3 }
162
- ), (a, f) => (l(), C("div", {
162
+ ), (e, f) => (l(), C("div", {
163
163
  ref_key: "inputFieldPasswordRef",
164
164
  ref: D
165
165
  }, [
166
- L(e(ce), se({
166
+ L(a(ce), oe({
167
167
  ref_key: "inputFieldPasswordInputRef",
168
168
  ref: P
169
169
  }, Q.value, {
@@ -172,9 +172,9 @@ const X = {
172
172
  onInput: ee,
173
173
  onKeydown: F,
174
174
  onKeyup: F
175
- }), oe({
175
+ }), se({
176
176
  default: u(() => [
177
- T(h(a.label), 1)
177
+ T(h(e.label), 1)
178
178
  ]),
179
179
  _: 2
180
180
  }, [
@@ -186,17 +186,17 @@ const X = {
186
186
  onMouseenter: te,
187
187
  onMouseleave: ae
188
188
  }, [
189
- L(e(ue), {
189
+ L(a(ue), {
190
190
  ref_key: "inputFieldPasswordCapsLockIconRef",
191
191
  ref: E,
192
- src: e(ye),
193
- alt: e(i)("capsLockEnabled")
192
+ src: a(ye),
193
+ alt: a(i)("capsLockEnabled")
194
194
  }, null, 8, ["src", "alt"])
195
195
  ], 32),
196
- E.value ? (l(), d(e(ke), {
196
+ E.value ? (l(), d(a(be), {
197
197
  key: 0,
198
198
  class: W(G.value),
199
- content: e(i)("capsLockEnabled"),
199
+ content: a(i)("capsLockEnabled"),
200
200
  "disabled-focus-trap": !0,
201
201
  "fallback-position": ["top", "bottom"],
202
202
  "is-shown": v.value,
@@ -205,21 +205,21 @@ const X = {
205
205
  ]),
206
206
  key: "0"
207
207
  } : void 0,
208
- a.disabled ? void 0 : {
208
+ e.disabled ? void 0 : {
209
209
  name: "iconAfter",
210
210
  fn: u(() => [
211
- L(e(de), {
211
+ L(a(de), {
212
212
  variant: "tertiary",
213
213
  onClick: Y
214
214
  }, {
215
215
  iconLeft: u(() => [
216
- V.value ? c("", !0) : (l(), d(e(me), {
216
+ M.value ? c("", !0) : (l(), d(a(me), {
217
217
  key: 0,
218
- "svg-title": e(i)("showPassword")
218
+ "svg-title": a(i)("showPassword")
219
219
  }, null, 8, ["svg-title"])),
220
- V.value ? (l(), d(e(ge), {
220
+ M.value ? (l(), d(a(ge), {
221
221
  key: 1,
222
- "svg-title": e(i)("hidePassword")
222
+ "svg-title": a(i)("hidePassword")
223
223
  }, null, 8, ["svg-title"])) : c("", !0)
224
224
  ]),
225
225
  _: 1
@@ -228,18 +228,18 @@ const X = {
228
228
  key: "1"
229
229
  }
230
230
  ]), 1040),
231
- A.value ? (l(), d(e(pe), {
231
+ q.value ? (l(), d(a(pe), {
232
232
  key: 0,
233
233
  open: U.value,
234
234
  "target-element": P.value,
235
235
  "disable-focus-trap": !0,
236
236
  "aria-label": n.value.title,
237
- "aria-describedby": e(H),
237
+ "aria-describedby": a(H),
238
238
  position: "right-start"
239
239
  }, {
240
240
  default: u(() => [
241
- R("div", { id: e(N) }, [
242
- n.value.title ? (l(), d(e(M), {
241
+ R("div", { id: a(N) }, [
242
+ n.value.title ? (l(), d(a(A), {
243
243
  key: 0,
244
244
  class: "b-input-field-password__validation-title"
245
245
  }, {
@@ -248,9 +248,9 @@ const X = {
248
248
  ]),
249
249
  _: 1
250
250
  })) : c("", !0),
251
- q.value ? c("", !0) : (l(), C("p", Ee, h(e(i)("validationValid")), 1)),
251
+ V.value ? c("", !0) : (l(), C("p", Ee, h(a(i)("validationValid")), 1)),
252
252
  R("ul", {
253
- id: e(H),
253
+ id: a(H),
254
254
  class: "b-input-field-password__validation-list"
255
255
  }, [
256
256
  (l(!0), C(ne, null, re(n.value.list, (y, m) => (l(), C("li", {
@@ -259,16 +259,16 @@ const X = {
259
259
  "aria-live": "polite",
260
260
  "aria-atomic": "true"
261
261
  }, [
262
- R("span", Ve, [
263
- b.value[m] ? (l(), d(e(ve), {
262
+ R("span", Me, [
263
+ k.value[m] ? (l(), d(a(ve), {
264
264
  key: 0,
265
- "svg-title": e(i)("validationChecked")
266
- }, null, 8, ["svg-title"])) : (l(), d(e(fe), {
265
+ "svg-title": a(i)("validationChecked")
266
+ }, null, 8, ["svg-title"])) : (l(), d(a(fe), {
267
267
  key: 1,
268
- "svg-title": e(i)("validationUnchecked")
268
+ "svg-title": a(i)("validationUnchecked")
269
269
  }, null, 8, ["svg-title"]))
270
270
  ]),
271
- L(e(M), {
271
+ L(a(A), {
272
272
  class: "b-input-field-password__validation-list-text",
273
273
  el: "span"
274
274
  }, {
@@ -279,7 +279,7 @@ const X = {
279
279
  }, 1024)
280
280
  ], 2))), 128))
281
281
  ], 8, Se),
282
- n.value.suggestion ? (l(), d(e(M), {
282
+ n.value.suggestion ? (l(), d(a(A), {
283
283
  key: 2,
284
284
  class: "b-input-field-password__validation-suggestion"
285
285
  }, {
@@ -294,7 +294,7 @@ const X = {
294
294
  }, 8, ["open", "target-element", "aria-label", "aria-describedby"])) : c("", !0)
295
295
  ], 512));
296
296
  }
297
- }), Ge = /* @__PURE__ */ be(Ae, [["__scopeId", "data-v-6e63ec96"]]);
297
+ }), Ge = /* @__PURE__ */ ke(qe, [["__scopeId", "data-v-0429b264"]]);
298
298
  export {
299
299
  Te as a,
300
300
  Re as b,
@@ -303,4 +303,4 @@ export {
303
303
  Ce as m,
304
304
  Le as r
305
305
  };
306
- //# sourceMappingURL=input-field-password.DedPkZxg.js.map
306
+ //# sourceMappingURL=input-field-password.CS7rxMCK.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-field-password.DedPkZxg.js","sources":["../../../vue2/src/components/input-field-password/input-field-password.types.ts","../../../vue2/src/components/input-field-password/assets/capslock.svg","../../../vue2/src/components/input-field-password/utilities/input-field-password.validation.ts","../../../vue2/src/components/input-field-password/input-field-password.vue"],"sourcesContent":["import { BentoInputField, BentoInputFieldValue } from '@/components/input-field';\n\n/**\n * Public\n */\n\nexport interface BentoInputFieldPasswordValidationListItem {\n label: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n validate: (value: BentoInputFieldValue, ...args: any[]) => boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n additionalArgs?: any[];\n}\n\nexport interface BentoInputFieldPasswordValidation {\n title?: string;\n suggestion?: string;\n list: BentoInputFieldPasswordValidationListItem[];\n}\n\nexport interface BentoInputFieldPasswordProps {\n /**\n * Reduces height of the input\n */\n condensed?: BentoInputFieldProps['condensed'];\n\n /**\n * Disables the possibility of changing value in the input-field\n */\n disabled?: BentoInputFieldProps['disabled'];\n\n /**\n * Renders input-field with an error state and the error message beneath the input box\n */\n errorMessage?: BentoInputFieldProps['errorMessage'];\n\n /**\n * Text displayed as the placeholder of the input-field\n */\n placeholder?: BentoInputFieldProps['placeholder'];\n\n /**\n * Setting this property to true will set the input field to read only state.\n */\n readonly?: BentoInputFieldProps['readonly'];\n\n /**\n * Text displayed as the value of the input-field\n */\n value?: BentoInputFieldProps['value'];\n\n /**\n * Label to be shown with the input field\n */\n label?: string;\n\n /**\n * Configuration object for password field validation.\n *\n * This object defines the validation criteria and associated messages for a password field.\n * It includes the following properties:\n *\n * - `title`: The title displayed at the top of the validation hint.\n * - `suggestion`: The message displayed at the bottom of the validation hint, providing additional guidance.\n * - `list`: An array of callback functions to be executed on the value after each user input, validating the password against the specified rules.\n *\n * By default, the validation checks that:\n *\n * - The value has a minimum length of 8 characters.\n * - The value contains at least one lowercase letter.\n * - The value contains at least one uppercase letter.\n * - The value contains at least one numeric digit.\n * - The value contains at least one special character.\n *\n *\n */\n validation?: BentoInputFieldPasswordValidation;\n\n /**\n * Whether the password validation hint is displayed when the input field is activated via focus or input\n */\n withHint?: boolean;\n}\n\n/**\n * Private\n */\n\nexport enum BentoInputFieldPasswordType {\n TEXT = 'text',\n PASSWORD = 'password',\n}\n\nexport type BentoInputFieldProps = InstanceType<typeof BentoInputField>['$props'];\n","export default \"data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='capslock'%3e%3cg%20id='Union'%3e%3cpath%20d='M13.75%205.63952L8%201.03952L2.25%205.63952V7.74999H4.75V11.75H11.25V7.74999H13.75V5.63952ZM6.25%206.24999H3.88809L8%202.96046L12.1119%206.24999H9.75V10.25H6.25V6.24999Z'%20fill='%2300112C'/%3e%3cpath%20d='M11.25%2014.75V13.25H4.75V14.75H11.25Z'%20fill='%2300112C'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e\"","import { BentoInputFieldValue } from '@/components/input-field';\n\nfunction stringifyValue(value: BentoInputFieldValue): string {\n return value?.toString() ?? '';\n}\n\n/**\n * Validates if the length of the provided value is greater than or equal to the specified length.\n *\n * @param value - The input value to check.\n * @param length - The minimum required length of the value. Defaults to 8.\n * @returns `true` if the length of the value is greater than or equal to the specified length, `false` otherwise.\n */\nexport function minLength(value: BentoInputFieldValue, length = 8): boolean {\n return stringifyValue(value).length >= length;\n}\n\n/**\n * Validates if the provided value contains at least one lowercase letter.\n *\n * @param value - The input value to check.\n * @returns `true` if the value contains at least one lowercase letter, `false` otherwise.\n */\nexport function requireLowercase(value: BentoInputFieldValue): boolean {\n return /[a-z]/.test(stringifyValue(value));\n}\n\n/**\n * Validates if the provided value contains at least one uppercase letter.\n *\n * @param value - The input value to check.\n * @returns `true` if the value contains at least one uppercase letter, `false` otherwise.\n */\nexport function requireUppercase(value: BentoInputFieldValue): boolean {\n return /[A-Z]/.test(stringifyValue(value));\n}\n\n/**\n * Validates if the provided value contains at least one numerical digit.\n *\n * @param value - The input value to check.\n * @returns `true` if the value contains at least one numerical digit, `false` otherwise.\n */\nexport function requireNumeric(value: BentoInputFieldValue): boolean {\n return /\\d/.test(stringifyValue(value));\n}\n\n/**\n * Validates if the provided value contains at least one special character (non-alphanumeric).\n *\n * @param value - The input value to check.\n * @returns `true` if the value contains at least one special character, `false` otherwise.\n */\nexport function requireSpecialCharacter(value: BentoInputFieldValue): boolean {\n return /[^a-zA-Z0-9]/.test(stringifyValue(value));\n}\n","<template>\n <div ref=\"inputFieldPasswordRef\">\n <bento-input-field\n ref=\"inputFieldPasswordInputRef\"\n v-bind=\"inputFieldArgs\"\n class=\"b-input-field-password__input\"\n spellcheck=\"false\"\n @input=\"onInput\"\n @keydown=\"checkCapsLock\"\n @keyup=\"checkCapsLock\"\n >\n <template #default>{{ label }}</template>\n\n <template v-if=\"isCapsLockOn\" #iconBefore>\n <div\n class=\"b-input-field-password__caps-lock-indicator\"\n @mouseenter=\"handleCapsLockMouseEnter\"\n @mouseleave=\"handleCapsLockMouseLeave\"\n >\n <bento-image\n ref=\"inputFieldPasswordCapsLockIconRef\"\n :src=\"CapsLockIcon\"\n :alt=\"t('capsLockEnabled')\"\n ></bento-image>\n </div>\n\n <tooltip\n v-if=\"inputFieldPasswordCapsLockIconRef\"\n :class=\"tooltipConditionalClass\"\n :content=\"t('capsLockEnabled')\"\n :disabled-focus-trap=\"true\"\n :fallback-position=\"['top', 'bottom']\"\n :is-shown=\"isTooltipDisplayed\"\n :target-element=\"inputFieldPasswordCapsLockIconRef\"\n ></tooltip>\n </template>\n\n <template v-if=\"!disabled\" #iconAfter>\n <bento-button variant=\"tertiary\" @click=\"toggleInputType\">\n <template #iconLeft>\n <show-icon v-if=\"!isPasswordReadable\" :svg-title=\"t('showPassword')\" />\n\n <hide-icon v-if=\"isPasswordReadable\" :svg-title=\"t('hidePassword')\" />\n </template>\n </bento-button>\n </template>\n </bento-input-field>\n\n <bento-popover\n v-if=\"hasValidations\"\n :open=\"isHintDisplayed\"\n :target-element=\"inputFieldPasswordInputRef\"\n :disable-focus-trap=\"true\"\n :aria-label=\"computedValidations.title\"\n :aria-describedby=\"validationListId\"\n position=\"right-start\"\n >\n <div :id=\"validationPopoverId\">\n <bento-typography v-if=\"computedValidations.title\" class=\"b-input-field-password__validation-title\">\n {{ computedValidations.title }}\n </bento-typography>\n\n <p v-if=\"!hasErrors\" class=\"b-input-field-password__validation-status--valid\" role=\"alert\">\n {{ t('validationValid') }}\n </p>\n\n <ul :id=\"validationListId\" class=\"b-input-field-password__validation-list\">\n <li\n v-for=\"(validation, index) in computedValidations.list\"\n :key=\"index\"\n :class=\"passwordValidityConditionalClass[index]\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n <span class=\"b-input-field-password__validation-list-icon\">\n <checkmark-circle-fill-icon\n v-if=\"passwordValidity[index]\"\n :svg-title=\"t('validationChecked')\"\n />\n\n <dot-icon v-else :svg-title=\"t('validationUnchecked')\" />\n </span>\n\n <bento-typography class=\"b-input-field-password__validation-list-text\" el=\"span\">\n {{ validation.label }}\n </bento-typography>\n </li>\n </ul>\n\n <bento-typography\n v-if=\"computedValidations.suggestion\"\n class=\"b-input-field-password__validation-suggestion\"\n >\n {{ computedValidations.suggestion }}\n </bento-typography>\n </div>\n </bento-popover>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { BentoButton } from '@/components/button';\n import { BentoImage } from '@/components/image';\n import { BentoInputField } from '@/components/input-field';\n import { BentoPopover } from '@/components/popover';\n import { BentoTypography } from '@/components/typography';\n import { Tooltip } from '@/internal';\n import {\n BentoInputFieldPasswordProps,\n BentoInputFieldPasswordType,\n BentoInputFieldProps,\n } from './input-field-password.types';\n\n import CheckmarkCircleFillIcon from '@adyen/ui-assets-icons-16/vue/checkmark-circle-fill';\n import DotIcon from '@adyen/ui-assets-icons-16/vue/dot';\n import HideIcon from '@adyen/ui-assets-icons-16/vue/hide';\n import ShowIcon from '@adyen/ui-assets-icons-16/vue/show';\n import CapsLockIcon from './assets/capslock.svg';\n\n import { useFocusWithin, watchDebounced } from '@vueuse/core';\n import { computed, ref, SetupContext, useAttrs, watch } from 'vue';\n\n import { useI18n } from '@/utils/ts/i18n';\n\n import {\n minLength,\n requireLowercase,\n requireNumeric,\n requireSpecialCharacter,\n requireUppercase,\n } from '@/components/input-field-password/utilities/input-field-password.validation';\n import { generateUid } from '@/core/utils/ts';\n import messages from './messages.json';\n\n type MessageSchema = (typeof messages)['en-US'];\n\n const DEBOUNCE_DURATION = 500;\n const DEBOUNCE_MAX_WAIT = 2000;\n const TOOLTIP_TIMEOUT = 2000;\n\n const { t } = useI18n<{ message: MessageSchema }>({ messages });\n\n const props = withDefaults(defineProps<BentoInputFieldPasswordProps>(), {\n condensed: false,\n disabled: false,\n label: null,\n errorMessage: null,\n placeholder: '',\n readonly: false,\n validation: undefined,\n value: undefined,\n withHint: true,\n });\n\n const emit = defineEmits<{\n /**\n * Emits an `input:valid` event when the value is validated against the provided validations.\n * This emission has a debounce and is emitted after an `input` event.\n */\n (e: 'input:valid'): void;\n\n /**\n * Emits an `input` event whenever the value in the input is changed.\n */\n (e: 'input', value: BentoInputFieldPasswordProps['value']): void;\n }>();\n\n const attrs = useAttrs();\n\n const inputType = ref(BentoInputFieldPasswordType.PASSWORD);\n const inputValue = ref(props.value);\n const isHintDisplayed = ref(false);\n const isTouched = ref(false);\n const passwordValidity = ref<boolean[]>([]);\n const capsLockTooltipTimeoutID = ref<ReturnType<typeof setTimeout>>(null);\n const isTooltipDisplayed = ref(false);\n const inputFieldPasswordRef = ref(null);\n const inputFieldPasswordInputRef = ref(null);\n const inputFieldPasswordCapsLockIconRef = ref(null);\n const isCapsLockOn = ref(false);\n\n const { focused } = useFocusWithin(inputFieldPasswordRef);\n\n const validationListId = generateUid('validationListId');\n const validationPopoverId = generateUid('validationPopoverId');\n\n const isPasswordReadable = computed(() => inputType.value === BentoInputFieldPasswordType.TEXT);\n const computedErrorMessage = computed(() => (isTouched.value && hasErrors.value ? props.errorMessage : ''));\n\n const passwordValidityConditionalClass = computed(() =>\n passwordValidity.value.map(validity =>\n validity\n ? 'b-input-field-password__validation-list--valid'\n : 'b-input-field-password__validation-list--invalid'\n )\n );\n\n const tooltipConditionalClass = computed(() =>\n capsLockTooltipTimeoutID.value ? 'b-input-field-password__input-tooltip--timed' : ''\n );\n\n const inputFieldArgs = computed<BentoInputFieldProps & SetupContext['attrs']>(() => ({\n ariaHidden: false,\n condensed: props.condensed,\n disabled: props.disabled,\n errorMessage: computedErrorMessage.value,\n placeholder: props.placeholder,\n readonly: props.readonly,\n type: inputType.value,\n value: inputValue.value,\n\n 'aria-haspopup': hasValidations.value ? 'dialog' : false,\n 'aria-describedby': hasValidations.value ? validationPopoverId : '',\n\n ...attrs,\n }));\n\n const computedValidations = computed(() =>\n props.validation === undefined\n ? {\n title: t('validationTitle'),\n suggestion: t('validationSuggestion'),\n list: [\n { label: t('validationMinLength'), validate: minLength },\n { label: t('validationRequireLowercase'), validate: requireLowercase },\n { label: t('validationRequireUppercase'), validate: requireUppercase },\n { label: t('validationRequireNumeric'), validate: requireNumeric },\n { label: t('validationRequireSpecialCharacter'), validate: requireSpecialCharacter },\n ],\n }\n : props.validation\n );\n\n const hasErrors = computed(() => passwordValidity.value.some(validation => !validation));\n const hasValidations = computed(\n () => inputFieldPasswordInputRef.value && computedValidations.value?.list?.length > 0\n );\n\n const checkCapsLock = (e: KeyboardEvent) => {\n isCapsLockOn.value = e.getModifierState('CapsLock');\n };\n\n const toggleInputType = () => {\n if (isPasswordReadable.value) {\n inputType.value = BentoInputFieldPasswordType.PASSWORD;\n } else {\n inputType.value = BentoInputFieldPasswordType.TEXT;\n }\n };\n\n const onInput = (value: string) => {\n if (props.disabled) {\n return;\n }\n\n inputValue.value = value;\n\n emit('input', inputValue.value);\n };\n\n const checkValidity = (value: BentoInputFieldPasswordProps['value']) => {\n passwordValidity.value =\n computedValidations.value?.list?.map(validationItem =>\n validationItem.validate(value, validationItem.additionalArgs)\n ) ?? [];\n };\n\n const handleCapsLockMouseLeave = () => {\n isTooltipDisplayed.value = false;\n capsLockTooltipTimeoutID.value = null;\n };\n\n const handleCapsLockMouseEnter = () => {\n isTooltipDisplayed.value = true;\n };\n\n watch(focused, focused => {\n if (!props.withHint) {\n return;\n }\n\n isHintDisplayed.value = focused;\n\n if (!focused) {\n isTouched.value = true;\n } else {\n checkValidity(inputValue.value);\n }\n });\n\n watch(isCapsLockOn, isCapsLockOn => {\n if (!isCapsLockOn) {\n clearTimeout(capsLockTooltipTimeoutID.value);\n\n capsLockTooltipTimeoutID.value = null;\n isTooltipDisplayed.value = false;\n } else {\n isTooltipDisplayed.value = true;\n\n capsLockTooltipTimeoutID.value = setTimeout(() => {\n capsLockTooltipTimeoutID.value = null;\n isTooltipDisplayed.value = false;\n }, TOOLTIP_TIMEOUT);\n }\n });\n\n watchDebounced(\n inputValue,\n inputValue => {\n checkValidity(inputValue);\n\n if (!hasErrors.value) {\n emit('input:valid');\n }\n },\n // wait for 0.5s before checking validity OR 2s of continuous typing\n { debounce: DEBOUNCE_DURATION, maxWait: DEBOUNCE_MAX_WAIT }\n );\n</script>\n\n<script lang=\"ts\">\n /**\n * The input field password is a component designed to support users' preference for entering values securely.\n * This is an extension of the `bento-input-field` component.\n *\n * @example\n * import { BentoInputFieldPassword } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoInputFieldPassword },\n * template: `\n * <bento-input-field-password\n * label=\"Label\"\n * error-message=\"Error\"\n * :validation=\"{\n * title: 'Password must contain at least:',\n * suggestion: 'Avoid using currency symbols or accented letters.',\n * list: [\n * { label: '8 characters', validate: minLength, additionalArgs: [8] },\n * { label: '1 lowercase (a-z)', validate: requireLowercase },\n * { label: '1 uppercase (A-Z)', validate: requireUppercase },\n * { label: '1 numerical (0-9)', validate: requireNumeric },\n * { label: '1 special character', validate: requireSpecialCharacter },\n * {\n * label: 'Always true',\n * validate: () => {\n * const example = 'Example';\n *\n * return () => example.length > 1;\n * },\n * },\n * ],\n * }\"\n * />\n * `\n * }\n */\n export default {\n i18n: { messages },\n name: 'bento-input-field-password',\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./input-field-password.scss\" />\n"],"names":["BentoInputFieldPasswordType","BentoInputFieldPasswordType2","CapsLockIcon","stringifyValue","value","minLength","length","requireLowercase","requireUppercase","requireNumeric","requireSpecialCharacter","__default__","messages","t","useI18n","props","__props","emit","__emit","attrs","useAttrs","inputType","ref","inputValue","isHintDisplayed","isTouched","passwordValidity","capsLockTooltipTimeoutID","isTooltipDisplayed","inputFieldPasswordRef","inputFieldPasswordInputRef","inputFieldPasswordCapsLockIconRef","isCapsLockOn","focused","useFocusWithin","validationListId","generateUid","validationPopoverId","isPasswordReadable","computed","computedErrorMessage","hasErrors","passwordValidityConditionalClass","validity","tooltipConditionalClass","inputFieldArgs","hasValidations","computedValidations","validation","_b","_a","checkCapsLock","e","toggleInputType","onInput","checkValidity","validationItem","handleCapsLockMouseLeave","handleCapsLockMouseEnter","watch","focused2","isCapsLockOn2","watchDebounced","inputValue2"],"mappings":"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"}
1
+ {"version":3,"file":"input-field-password.CS7rxMCK.js","sources":["../../../vue2/src/components/input-field-password/input-field-password.types.ts","../../../vue2/src/components/input-field-password/assets/capslock.svg","../../../vue2/src/components/input-field-password/utilities/input-field-password.validation.ts","../../../vue2/src/components/input-field-password/input-field-password.vue"],"sourcesContent":["import { BentoInputField, BentoInputFieldValue } from '@/components/input-field';\n\n/**\n * Public\n */\n\nexport interface BentoInputFieldPasswordValidationListItem {\n label: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n validate: (value: BentoInputFieldValue, ...args: any[]) => boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n additionalArgs?: any[];\n}\n\nexport interface BentoInputFieldPasswordValidation {\n title?: string;\n suggestion?: string;\n list: BentoInputFieldPasswordValidationListItem[];\n}\n\nexport interface BentoInputFieldPasswordProps {\n /**\n * Reduces height of the input\n */\n condensed?: BentoInputFieldProps['condensed'];\n\n /**\n * Disables the possibility of changing value in the input-field\n */\n disabled?: BentoInputFieldProps['disabled'];\n\n /**\n * Renders input-field with an error state and the error message beneath the input box\n */\n errorMessage?: BentoInputFieldProps['errorMessage'];\n\n /**\n * Text displayed as the placeholder of the input-field\n */\n placeholder?: BentoInputFieldProps['placeholder'];\n\n /**\n * Setting this property to true will set the input field to read only state.\n */\n readonly?: BentoInputFieldProps['readonly'];\n\n /**\n * Text displayed as the value of the input-field\n */\n value?: BentoInputFieldProps['value'];\n\n /**\n * Label to be shown with the input field\n */\n label?: string;\n\n /**\n * Configuration object for password field validation.\n *\n * This object defines the validation criteria and associated messages for a password field.\n * It includes the following properties:\n *\n * - `title`: The title displayed at the top of the validation hint.\n * - `suggestion`: The message displayed at the bottom of the validation hint, providing additional guidance.\n * - `list`: An array of callback functions to be executed on the value after each user input, validating the password against the specified rules.\n *\n * By default, the validation checks that:\n *\n * - The value has a minimum length of 8 characters.\n * - The value contains at least one lowercase letter.\n * - The value contains at least one uppercase letter.\n * - The value contains at least one numeric digit.\n * - The value contains at least one special character.\n *\n *\n */\n validation?: BentoInputFieldPasswordValidation;\n\n /**\n * Whether the password validation hint is displayed when the input field is activated via focus or input\n */\n withHint?: boolean;\n}\n\n/**\n * Private\n */\n\nexport enum BentoInputFieldPasswordType {\n TEXT = 'text',\n PASSWORD = 'password',\n}\n\nexport type BentoInputFieldProps = InstanceType<typeof BentoInputField>['$props'];\n","export default \"data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='capslock'%3e%3cg%20id='Union'%3e%3cpath%20d='M13.75%205.63952L8%201.03952L2.25%205.63952V7.74999H4.75V11.75H11.25V7.74999H13.75V5.63952ZM6.25%206.24999H3.88809L8%202.96046L12.1119%206.24999H9.75V10.25H6.25V6.24999Z'%20fill='%2300112C'/%3e%3cpath%20d='M11.25%2014.75V13.25H4.75V14.75H11.25Z'%20fill='%2300112C'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e\"","import { BentoInputFieldValue } from '@/components/input-field';\n\nfunction stringifyValue(value: BentoInputFieldValue): string {\n return value?.toString() ?? '';\n}\n\n/**\n * Validates if the length of the provided value is greater than or equal to the specified length.\n *\n * @param value - The input value to check.\n * @param length - The minimum required length of the value. Defaults to 8.\n * @returns `true` if the length of the value is greater than or equal to the specified length, `false` otherwise.\n */\nexport function minLength(value: BentoInputFieldValue, length = 8): boolean {\n return stringifyValue(value).length >= length;\n}\n\n/**\n * Validates if the provided value contains at least one lowercase letter.\n *\n * @param value - The input value to check.\n * @returns `true` if the value contains at least one lowercase letter, `false` otherwise.\n */\nexport function requireLowercase(value: BentoInputFieldValue): boolean {\n return /[a-z]/.test(stringifyValue(value));\n}\n\n/**\n * Validates if the provided value contains at least one uppercase letter.\n *\n * @param value - The input value to check.\n * @returns `true` if the value contains at least one uppercase letter, `false` otherwise.\n */\nexport function requireUppercase(value: BentoInputFieldValue): boolean {\n return /[A-Z]/.test(stringifyValue(value));\n}\n\n/**\n * Validates if the provided value contains at least one numerical digit.\n *\n * @param value - The input value to check.\n * @returns `true` if the value contains at least one numerical digit, `false` otherwise.\n */\nexport function requireNumeric(value: BentoInputFieldValue): boolean {\n return /\\d/.test(stringifyValue(value));\n}\n\n/**\n * Validates if the provided value contains at least one special character (non-alphanumeric).\n *\n * @param value - The input value to check.\n * @returns `true` if the value contains at least one special character, `false` otherwise.\n */\nexport function requireSpecialCharacter(value: BentoInputFieldValue): boolean {\n return /[^a-zA-Z0-9]/.test(stringifyValue(value));\n}\n","<template>\n <div ref=\"inputFieldPasswordRef\">\n <bento-input-field\n ref=\"inputFieldPasswordInputRef\"\n v-bind=\"inputFieldArgs\"\n class=\"b-input-field-password__input\"\n spellcheck=\"false\"\n @input=\"onInput\"\n @keydown=\"checkCapsLock\"\n @keyup=\"checkCapsLock\"\n >\n <template #default>{{ label }}</template>\n\n <template v-if=\"isCapsLockOn\" #iconBefore>\n <div\n class=\"b-input-field-password__caps-lock-indicator\"\n @mouseenter=\"handleCapsLockMouseEnter\"\n @mouseleave=\"handleCapsLockMouseLeave\"\n >\n <bento-image\n ref=\"inputFieldPasswordCapsLockIconRef\"\n :src=\"CapsLockIcon\"\n :alt=\"t('capsLockEnabled')\"\n ></bento-image>\n </div>\n\n <tooltip\n v-if=\"inputFieldPasswordCapsLockIconRef\"\n :class=\"tooltipConditionalClass\"\n :content=\"t('capsLockEnabled')\"\n :disabled-focus-trap=\"true\"\n :fallback-position=\"['top', 'bottom']\"\n :is-shown=\"isTooltipDisplayed\"\n :target-element=\"inputFieldPasswordCapsLockIconRef\"\n ></tooltip>\n </template>\n\n <template v-if=\"!disabled\" #iconAfter>\n <bento-button variant=\"tertiary\" @click=\"toggleInputType\">\n <template #iconLeft>\n <show-icon v-if=\"!isPasswordReadable\" :svg-title=\"t('showPassword')\" />\n\n <hide-icon v-if=\"isPasswordReadable\" :svg-title=\"t('hidePassword')\" />\n </template>\n </bento-button>\n </template>\n </bento-input-field>\n\n <bento-popover\n v-if=\"hasValidations\"\n :open=\"isHintDisplayed\"\n :target-element=\"inputFieldPasswordInputRef\"\n :disable-focus-trap=\"true\"\n :aria-label=\"computedValidations.title\"\n :aria-describedby=\"validationListId\"\n position=\"right-start\"\n >\n <div :id=\"validationPopoverId\">\n <bento-typography v-if=\"computedValidations.title\" class=\"b-input-field-password__validation-title\">\n {{ computedValidations.title }}\n </bento-typography>\n\n <p v-if=\"!hasErrors\" class=\"b-input-field-password__validation-status--valid\" role=\"alert\">\n {{ t('validationValid') }}\n </p>\n\n <ul :id=\"validationListId\" class=\"b-input-field-password__validation-list\">\n <li\n v-for=\"(validation, index) in computedValidations.list\"\n :key=\"index\"\n :class=\"passwordValidityConditionalClass[index]\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n <span class=\"b-input-field-password__validation-list-icon\">\n <checkmark-circle-fill-icon\n v-if=\"passwordValidity[index]\"\n :svg-title=\"t('validationChecked')\"\n />\n\n <dot-icon v-else :svg-title=\"t('validationUnchecked')\" />\n </span>\n\n <bento-typography class=\"b-input-field-password__validation-list-text\" el=\"span\">\n {{ validation.label }}\n </bento-typography>\n </li>\n </ul>\n\n <bento-typography\n v-if=\"computedValidations.suggestion\"\n class=\"b-input-field-password__validation-suggestion\"\n >\n {{ computedValidations.suggestion }}\n </bento-typography>\n </div>\n </bento-popover>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { BentoButton } from '@/components/button';\n import { BentoImage } from '@/components/image';\n import { BentoInputField } from '@/components/input-field';\n import { BentoPopover } from '@/components/popover';\n import { BentoTypography } from '@/components/typography';\n import { Tooltip } from '@/internal';\n import {\n BentoInputFieldPasswordProps,\n BentoInputFieldPasswordType,\n BentoInputFieldProps,\n } from './input-field-password.types';\n\n import CheckmarkCircleFillIcon from '@adyen/ui-assets-icons-16/vue/checkmark-circle-fill';\n import DotIcon from '@adyen/ui-assets-icons-16/vue/dot';\n import HideIcon from '@adyen/ui-assets-icons-16/vue/hide';\n import ShowIcon from '@adyen/ui-assets-icons-16/vue/show';\n import CapsLockIcon from './assets/capslock.svg';\n\n import { useFocusWithin, watchDebounced } from '@vueuse/core';\n import { computed, ref, SetupContext, useAttrs, watch } from 'vue';\n\n import { useI18n } from '@/utils/ts/i18n';\n\n import {\n minLength,\n requireLowercase,\n requireNumeric,\n requireSpecialCharacter,\n requireUppercase,\n } from '@/components/input-field-password/utilities/input-field-password.validation';\n import { generateUid } from '@/core/utils/ts';\n import messages from './messages.json';\n\n type MessageSchema = (typeof messages)['en-US'];\n\n const DEBOUNCE_DURATION = 500;\n const DEBOUNCE_MAX_WAIT = 2000;\n const TOOLTIP_TIMEOUT = 2000;\n\n const { t } = useI18n<{ message: MessageSchema }>({ messages });\n\n const props = withDefaults(defineProps<BentoInputFieldPasswordProps>(), {\n condensed: false,\n disabled: false,\n label: null,\n errorMessage: null,\n placeholder: '',\n readonly: false,\n validation: undefined,\n value: undefined,\n withHint: true,\n });\n\n const emit = defineEmits<{\n /**\n * Emits an `input:valid` event when the value is validated against the provided validations.\n * This emission has a debounce and is emitted after an `input` event.\n */\n (e: 'input:valid'): void;\n\n /**\n * Emits an `input` event whenever the value in the input is changed.\n */\n (e: 'input', value: BentoInputFieldPasswordProps['value']): void;\n }>();\n\n const attrs = useAttrs();\n\n const inputType = ref(BentoInputFieldPasswordType.PASSWORD);\n const inputValue = ref(props.value);\n const isHintDisplayed = ref(false);\n const isTouched = ref(false);\n const passwordValidity = ref<boolean[]>([]);\n const capsLockTooltipTimeoutID = ref<ReturnType<typeof setTimeout>>(null);\n const isTooltipDisplayed = ref(false);\n const inputFieldPasswordRef = ref(null);\n const inputFieldPasswordInputRef = ref(null);\n const inputFieldPasswordCapsLockIconRef = ref(null);\n const isCapsLockOn = ref(false);\n\n const { focused } = useFocusWithin(inputFieldPasswordRef);\n\n const validationListId = generateUid('validationListId');\n const validationPopoverId = generateUid('validationPopoverId');\n\n const isPasswordReadable = computed(() => inputType.value === BentoInputFieldPasswordType.TEXT);\n const computedErrorMessage = computed(() => (isTouched.value && hasErrors.value ? props.errorMessage : ''));\n\n const passwordValidityConditionalClass = computed(() =>\n passwordValidity.value.map(validity =>\n validity\n ? 'b-input-field-password__validation-list--valid'\n : 'b-input-field-password__validation-list--invalid'\n )\n );\n\n const tooltipConditionalClass = computed(() =>\n capsLockTooltipTimeoutID.value ? 'b-input-field-password__input-tooltip--timed' : ''\n );\n\n const inputFieldArgs = computed<BentoInputFieldProps & SetupContext['attrs']>(() => ({\n ariaHidden: false,\n condensed: props.condensed,\n disabled: props.disabled,\n errorMessage: computedErrorMessage.value,\n placeholder: props.placeholder,\n readonly: props.readonly,\n type: inputType.value,\n value: inputValue.value,\n\n 'aria-haspopup': hasValidations.value ? 'dialog' : false,\n 'aria-describedby': hasValidations.value ? validationPopoverId : '',\n\n ...attrs,\n }));\n\n const computedValidations = computed(() =>\n props.validation === undefined\n ? {\n title: t('validationTitle'),\n suggestion: t('validationSuggestion'),\n list: [\n { label: t('validationMinLength'), validate: minLength },\n { label: t('validationRequireLowercase'), validate: requireLowercase },\n { label: t('validationRequireUppercase'), validate: requireUppercase },\n { label: t('validationRequireNumeric'), validate: requireNumeric },\n { label: t('validationRequireSpecialCharacter'), validate: requireSpecialCharacter },\n ],\n }\n : props.validation\n );\n\n const hasErrors = computed(() => passwordValidity.value.some(validation => !validation));\n const hasValidations = computed(\n () => inputFieldPasswordInputRef.value && computedValidations.value?.list?.length > 0\n );\n\n const checkCapsLock = (e: KeyboardEvent) => {\n // Check if getModifierState exists and is a function in case the user's browser is autofilling\n if (typeof e.getModifierState === 'function') {\n isCapsLockOn.value = e.getModifierState('CapsLock');\n }\n };\n\n const toggleInputType = () => {\n if (isPasswordReadable.value) {\n inputType.value = BentoInputFieldPasswordType.PASSWORD;\n } else {\n inputType.value = BentoInputFieldPasswordType.TEXT;\n }\n };\n\n const onInput = (value: string) => {\n if (props.disabled) {\n return;\n }\n\n inputValue.value = value;\n\n emit('input', inputValue.value);\n };\n\n const checkValidity = (value: BentoInputFieldPasswordProps['value']) => {\n passwordValidity.value =\n computedValidations.value?.list?.map(validationItem =>\n validationItem.validate(value, validationItem.additionalArgs)\n ) ?? [];\n };\n\n const handleCapsLockMouseLeave = () => {\n isTooltipDisplayed.value = false;\n capsLockTooltipTimeoutID.value = null;\n };\n\n const handleCapsLockMouseEnter = () => {\n isTooltipDisplayed.value = true;\n };\n\n watch(focused, focused => {\n if (!props.withHint) {\n return;\n }\n\n isHintDisplayed.value = focused;\n\n if (!focused) {\n isTouched.value = true;\n } else {\n checkValidity(inputValue.value);\n }\n });\n\n watch(isCapsLockOn, isCapsLockOn => {\n if (!isCapsLockOn) {\n clearTimeout(capsLockTooltipTimeoutID.value);\n\n capsLockTooltipTimeoutID.value = null;\n isTooltipDisplayed.value = false;\n } else {\n isTooltipDisplayed.value = true;\n\n capsLockTooltipTimeoutID.value = setTimeout(() => {\n capsLockTooltipTimeoutID.value = null;\n isTooltipDisplayed.value = false;\n }, TOOLTIP_TIMEOUT);\n }\n });\n\n watchDebounced(\n inputValue,\n inputValue => {\n checkValidity(inputValue);\n\n if (!hasErrors.value) {\n emit('input:valid');\n }\n },\n // wait for 0.5s before checking validity OR 2s of continuous typing\n { debounce: DEBOUNCE_DURATION, maxWait: DEBOUNCE_MAX_WAIT }\n );\n</script>\n\n<script lang=\"ts\">\n /**\n * The input field password is a component designed to support users' preference for entering values securely.\n * This is an extension of the `bento-input-field` component.\n *\n * @example\n * import { BentoInputFieldPassword } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoInputFieldPassword },\n * template: `\n * <bento-input-field-password\n * label=\"Label\"\n * error-message=\"Error\"\n * :validation=\"{\n * title: 'Password must contain at least:',\n * suggestion: 'Avoid using currency symbols or accented letters.',\n * list: [\n * { label: '8 characters', validate: minLength, additionalArgs: [8] },\n * { label: '1 lowercase (a-z)', validate: requireLowercase },\n * { label: '1 uppercase (A-Z)', validate: requireUppercase },\n * { label: '1 numerical (0-9)', validate: requireNumeric },\n * { label: '1 special character', validate: requireSpecialCharacter },\n * {\n * label: 'Always true',\n * validate: () => {\n * const example = 'Example';\n *\n * return () => example.length > 1;\n * },\n * },\n * ],\n * }\"\n * />\n * `\n * }\n */\n export default {\n i18n: { messages },\n name: 'bento-input-field-password',\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./input-field-password.scss\" />\n"],"names":["BentoInputFieldPasswordType","BentoInputFieldPasswordType2","CapsLockIcon","stringifyValue","value","minLength","length","requireLowercase","requireUppercase","requireNumeric","requireSpecialCharacter","__default__","messages","t","useI18n","props","__props","emit","__emit","attrs","useAttrs","inputType","ref","inputValue","isHintDisplayed","isTouched","passwordValidity","capsLockTooltipTimeoutID","isTooltipDisplayed","inputFieldPasswordRef","inputFieldPasswordInputRef","inputFieldPasswordCapsLockIconRef","isCapsLockOn","focused","useFocusWithin","validationListId","generateUid","validationPopoverId","isPasswordReadable","computed","computedErrorMessage","hasErrors","passwordValidityConditionalClass","validity","tooltipConditionalClass","inputFieldArgs","hasValidations","computedValidations","validation","_b","_a","checkCapsLock","toggleInputType","onInput","checkValidity","validationItem","handleCapsLockMouseLeave","handleCapsLockMouseEnter","watch","focused2","isCapsLockOn2","watchDebounced","inputValue2"],"mappings":"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"}