@riverty/web-components 5.7.0 → 6.0.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 (273) hide show
  1. package/CHANGELOG.md +128 -0
  2. package/custom-elements.json +152 -372
  3. package/dist/cjs/index-DJ4H_bFj.js +6 -10
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/r-accordion-panel.cjs.entry.js +1 -1
  6. package/dist/cjs/r-accordion-section.cjs.entry.js +1 -1
  7. package/dist/cjs/r-accordion-trigger.cjs.entry.js +5 -35
  8. package/dist/cjs/r-accordion.cjs.entry.js +3 -7
  9. package/dist/cjs/r-alert.cjs.entry.js +45 -14
  10. package/dist/cjs/r-badge.cjs.entry.js +1 -1
  11. package/dist/cjs/r-button.cjs.entry.js +2 -2
  12. package/dist/cjs/r-checkbox-group.cjs.entry.js +28 -24
  13. package/dist/cjs/r-checkbox.cjs.entry.js +97 -81
  14. package/dist/cjs/r-dialog.cjs.entry.js +3 -11
  15. package/dist/cjs/r-hint_2.cjs.entry.js +50 -0
  16. package/dist/cjs/{r-hint_3.cjs.entry.js → r-icon-button_2.cjs.entry.js} +64 -51
  17. package/dist/cjs/r-icon.cjs.entry.js +1 -1
  18. package/dist/cjs/r-input-code.cjs.entry.js +133 -25
  19. package/dist/cjs/r-input-date.cjs.entry.js +87 -23
  20. package/dist/cjs/r-input-password.cjs.entry.js +34 -13
  21. package/dist/cjs/r-input-phone-number.cjs.entry.js +30 -22
  22. package/dist/cjs/r-input.cjs.entry.js +108 -49
  23. package/dist/cjs/r-list-item.cjs.entry.js +5 -5
  24. package/dist/cjs/r-pagination.cjs.entry.js +1 -1
  25. package/dist/cjs/r-panel.cjs.entry.js +2 -2
  26. package/dist/cjs/r-popover-action.cjs.entry.js +2 -2
  27. package/dist/cjs/r-popover-content.cjs.entry.js +1 -1
  28. package/dist/cjs/r-popover-headline.cjs.entry.js +1 -1
  29. package/dist/cjs/r-popover-trigger.cjs.entry.js +1 -1
  30. package/dist/cjs/r-popover.cjs.entry.js +3 -3
  31. package/dist/cjs/r-progress-bar.cjs.entry.js +1 -1
  32. package/dist/cjs/r-radio-button-description.cjs.entry.js +1 -1
  33. package/dist/cjs/r-radio-button-leading.cjs.entry.js +1 -1
  34. package/dist/cjs/r-radio-button-title.cjs.entry.js +1 -1
  35. package/dist/cjs/r-radio-button-trailing.cjs.entry.js +1 -1
  36. package/dist/cjs/r-radio-button.cjs.entry.js +29 -12
  37. package/dist/cjs/r-radio-group.cjs.entry.js +32 -32
  38. package/dist/cjs/r-select-option.cjs.entry.js +1 -1
  39. package/dist/cjs/r-select.cjs.entry.js +116 -40
  40. package/dist/cjs/r-skip-link.cjs.entry.js +1 -1
  41. package/dist/cjs/r-stepper-item.cjs.entry.js +2 -2
  42. package/dist/cjs/r-stepper.cjs.entry.js +1 -1
  43. package/dist/cjs/r-tab-panel.cjs.entry.js +1 -1
  44. package/dist/cjs/r-tab.cjs.entry.js +1 -1
  45. package/dist/cjs/r-tabs-list.cjs.entry.js +1 -1
  46. package/dist/cjs/r-tabs.cjs.entry.js +1 -1
  47. package/dist/cjs/r-textarea.cjs.entry.js +24 -23
  48. package/dist/cjs/r-toast-group.cjs.entry.js +1 -1
  49. package/dist/cjs/r-toast.cjs.entry.js +51 -20
  50. package/dist/cjs/web-components.cjs.js +1 -1
  51. package/dist/collection/collection-manifest.json +0 -1
  52. package/dist/collection/components/accordion/accordion.css +0 -2
  53. package/dist/collection/components/accordion/accordion.js +4 -8
  54. package/dist/collection/components/accordion/exports.js +1 -1
  55. package/dist/collection/components/accordion-panel/accordion-panel.js +1 -1
  56. package/dist/collection/components/accordion-section/accordion-section.js +1 -1
  57. package/dist/collection/components/accordion-trigger/accordion-trigger.css +0 -4
  58. package/dist/collection/components/accordion-trigger/accordion-trigger.js +4 -215
  59. package/dist/collection/components/alert/alert.css +58 -12
  60. package/dist/collection/components/alert/alert.js +92 -17
  61. package/dist/collection/components/alert/exports.js +1 -1
  62. package/dist/collection/components/badge/badge.js +1 -1
  63. package/dist/collection/components/button/button.css +6 -7
  64. package/dist/collection/components/button/button.js +1 -1
  65. package/dist/collection/components/checkbox/checkbox.js +121 -104
  66. package/dist/collection/components/checkbox-group/checkbox-group.js +48 -63
  67. package/dist/collection/components/dialog/dialog.css +1 -3
  68. package/dist/collection/components/dialog/dialog.js +2 -10
  69. package/dist/collection/components/hint/hint.js +2 -2
  70. package/dist/collection/components/icon/bundled-icons/riverty-kit.json +1 -1
  71. package/dist/collection/components/icon/riverty-kit.js +1 -1
  72. package/dist/collection/components/icon-button/icon-button.css +0 -7
  73. package/dist/collection/components/icon-button/icon-button.js +3 -3
  74. package/dist/collection/components/input/input.css +3 -0
  75. package/dist/collection/components/input/input.js +221 -378
  76. package/dist/collection/components/input-code/exports.js +2 -0
  77. package/dist/collection/components/input-code/input-code.js +335 -34
  78. package/dist/collection/components/input-date/input-date.js +237 -87
  79. package/dist/collection/components/input-password/exports.js +1 -0
  80. package/dist/collection/components/input-password/input-password.css +1 -0
  81. package/dist/collection/components/input-password/input-password.js +233 -75
  82. package/dist/collection/components/input-phone-number/input-phone-number.js +50 -85
  83. package/dist/collection/components/label/label.js +3 -113
  84. package/dist/collection/components/list-item/list-item/list-item.css +7 -7
  85. package/dist/collection/components/list-item/list-item/list-item.js +4 -26
  86. package/dist/collection/components/pagination/pagination.css +23 -23
  87. package/dist/collection/components/panel/panel.js +2 -2
  88. package/dist/collection/components/popover/exports.js +0 -1
  89. package/dist/collection/components/popover/popover.css +13 -13
  90. package/dist/collection/components/popover/popover.js +2 -55
  91. package/dist/collection/components/popover-action/popover-action.css +3 -5
  92. package/dist/collection/components/popover-action/popover-action.js +1 -1
  93. package/dist/collection/components/popover-content/popover-content.js +1 -1
  94. package/dist/collection/components/popover-headline/popover-headline.js +1 -1
  95. package/dist/collection/components/popover-trigger/popover-trigger.js +1 -1
  96. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  97. package/dist/collection/components/radio-button/radio-button.js +49 -12
  98. package/dist/collection/components/radio-button-description/radio-button-description.js +1 -1
  99. package/dist/collection/components/radio-button-leading/radio-button-leading.js +1 -1
  100. package/dist/collection/components/radio-button-title/radio-button-title.js +1 -1
  101. package/dist/collection/components/radio-button-trailing/radio-button-trailing.js +1 -1
  102. package/dist/collection/components/radio-group/radio-group.js +53 -135
  103. package/dist/collection/components/select/select.js +197 -349
  104. package/dist/collection/components/select-option/select-option.js +1 -1
  105. package/dist/collection/components/skip-link/skip-link.js +1 -1
  106. package/dist/collection/components/stepper/stepper.js +1 -1
  107. package/dist/collection/components/stepper-item/stepper-item.js +2 -2
  108. package/dist/collection/components/tab/tab.js +1 -1
  109. package/dist/collection/components/tab-panel/tab-panel.js +1 -1
  110. package/dist/collection/components/tabs/tabs.js +1 -1
  111. package/dist/collection/components/tabs-list/tabs-list.js +1 -1
  112. package/dist/collection/components/textarea/textarea.js +44 -163
  113. package/dist/collection/components/toast/toast.css +22 -14
  114. package/dist/collection/components/toast/toast.js +95 -43
  115. package/dist/collection/components/toast-group/toast-group.js +1 -1
  116. package/dist/collection/components/tooltip/tooltip.js +1 -1
  117. package/dist/esm/index-Da7qOBFr.js +6 -10
  118. package/dist/esm/loader.js +1 -1
  119. package/dist/esm/r-accordion-panel.entry.js +1 -1
  120. package/dist/esm/r-accordion-section.entry.js +1 -1
  121. package/dist/esm/r-accordion-trigger.entry.js +5 -35
  122. package/dist/esm/r-accordion.entry.js +3 -7
  123. package/dist/esm/r-alert.entry.js +45 -14
  124. package/dist/esm/r-badge.entry.js +1 -1
  125. package/dist/esm/r-button.entry.js +2 -2
  126. package/dist/esm/r-checkbox-group.entry.js +28 -24
  127. package/dist/esm/r-checkbox.entry.js +97 -81
  128. package/dist/esm/r-dialog.entry.js +3 -11
  129. package/dist/esm/r-hint_2.entry.js +47 -0
  130. package/dist/esm/{r-hint_3.entry.js → r-icon-button_2.entry.js} +65 -51
  131. package/dist/esm/r-icon.entry.js +1 -1
  132. package/dist/esm/r-input-code.entry.js +133 -25
  133. package/dist/esm/r-input-date.entry.js +87 -23
  134. package/dist/esm/r-input-password.entry.js +34 -13
  135. package/dist/esm/r-input-phone-number.entry.js +30 -22
  136. package/dist/esm/r-input.entry.js +108 -49
  137. package/dist/esm/r-list-item.entry.js +5 -5
  138. package/dist/esm/r-pagination.entry.js +1 -1
  139. package/dist/esm/r-panel.entry.js +2 -2
  140. package/dist/esm/r-popover-action.entry.js +2 -2
  141. package/dist/esm/r-popover-content.entry.js +1 -1
  142. package/dist/esm/r-popover-headline.entry.js +1 -1
  143. package/dist/esm/r-popover-trigger.entry.js +1 -1
  144. package/dist/esm/r-popover.entry.js +3 -3
  145. package/dist/esm/r-progress-bar.entry.js +1 -1
  146. package/dist/esm/r-radio-button-description.entry.js +1 -1
  147. package/dist/esm/r-radio-button-leading.entry.js +1 -1
  148. package/dist/esm/r-radio-button-title.entry.js +1 -1
  149. package/dist/esm/r-radio-button-trailing.entry.js +1 -1
  150. package/dist/esm/r-radio-button.entry.js +29 -12
  151. package/dist/esm/r-radio-group.entry.js +32 -32
  152. package/dist/esm/r-select-option.entry.js +1 -1
  153. package/dist/esm/r-select.entry.js +116 -40
  154. package/dist/esm/r-skip-link.entry.js +1 -1
  155. package/dist/esm/r-stepper-item.entry.js +2 -2
  156. package/dist/esm/r-stepper.entry.js +1 -1
  157. package/dist/esm/r-tab-panel.entry.js +1 -1
  158. package/dist/esm/r-tab.entry.js +1 -1
  159. package/dist/esm/r-tabs-list.entry.js +1 -1
  160. package/dist/esm/r-tabs.entry.js +1 -1
  161. package/dist/esm/r-textarea.entry.js +24 -23
  162. package/dist/esm/r-toast-group.entry.js +1 -1
  163. package/dist/esm/r-toast.entry.js +51 -20
  164. package/dist/esm/web-components.js +1 -1
  165. package/dist/types/components/accordion/accordion.d.ts +1 -5
  166. package/dist/types/components/accordion/exports.d.ts +1 -1
  167. package/dist/types/components/accordion-trigger/accordion-trigger.d.ts +0 -36
  168. package/dist/types/components/alert/alert.d.ts +9 -1
  169. package/dist/types/components/alert/exports.d.ts +1 -1
  170. package/dist/types/components/checkbox/checkbox.d.ts +29 -34
  171. package/dist/types/components/checkbox-group/checkbox-group.d.ts +6 -11
  172. package/dist/types/components/dialog/dialog.d.ts +0 -2
  173. package/dist/types/components/input/input.d.ts +35 -72
  174. package/dist/types/components/input-code/exports.d.ts +4 -0
  175. package/dist/types/components/input-code/input-code.d.ts +54 -7
  176. package/dist/types/components/input-date/input-date.d.ts +30 -16
  177. package/dist/types/components/input-password/exports.d.ts +1 -0
  178. package/dist/types/components/input-password/input-password.d.ts +53 -16
  179. package/dist/types/components/input-phone-number/input-phone-number.d.ts +5 -16
  180. package/dist/types/components/label/label.d.ts +0 -18
  181. package/dist/types/components/list-item/list-item/list-item.d.ts +0 -6
  182. package/dist/types/components/popover/exports.d.ts +0 -2
  183. package/dist/types/components/popover/popover.d.ts +1 -14
  184. package/dist/types/components/radio-button/radio-button.d.ts +5 -0
  185. package/dist/types/components/radio-group/radio-group.d.ts +6 -28
  186. package/dist/types/components/select/select.d.ts +34 -52
  187. package/dist/types/components/textarea/textarea.d.ts +5 -32
  188. package/dist/types/components/toast/toast.d.ts +10 -7
  189. package/dist/types/components.d.ts +347 -647
  190. package/dist/web-components/bundled-icons/riverty-kit.json +1 -1
  191. package/dist/web-components/p-0347feff.entry.js +1 -0
  192. package/dist/web-components/p-05738503.entry.js +1 -0
  193. package/dist/web-components/p-0e4c8bf1.entry.js +1 -0
  194. package/dist/web-components/p-1da75540.entry.js +1 -0
  195. package/dist/web-components/p-26ef77d6.entry.js +1 -0
  196. package/dist/web-components/p-3884c6e7.entry.js +1 -0
  197. package/dist/web-components/p-3a5a67e7.entry.js +1 -0
  198. package/dist/web-components/p-3f60c6c0.entry.js +1 -0
  199. package/dist/web-components/p-4254a383.entry.js +1 -0
  200. package/dist/web-components/{p-87f39749.entry.js → p-4595fa8e.entry.js} +1 -1
  201. package/dist/web-components/{p-4e3df002.entry.js → p-4cc58c6a.entry.js} +1 -1
  202. package/dist/web-components/p-5441b746.entry.js +1 -0
  203. package/dist/web-components/{p-72fa1fd1.entry.js → p-550e2237.entry.js} +1 -1
  204. package/dist/web-components/p-589baaf9.entry.js +1 -0
  205. package/dist/web-components/p-60341de2.entry.js +1 -0
  206. package/dist/web-components/{p-4bd3e077.entry.js → p-60ca994e.entry.js} +1 -1
  207. package/dist/web-components/{p-44ae9f33.entry.js → p-62b788bf.entry.js} +1 -1
  208. package/dist/web-components/{p-2b2f581a.entry.js → p-6303b9fe.entry.js} +1 -1
  209. package/dist/web-components/p-63fd817d.entry.js +1 -0
  210. package/dist/web-components/{p-e0e2f2b2.entry.js → p-673dbfd0.entry.js} +1 -1
  211. package/dist/web-components/p-67fa3f84.entry.js +1 -0
  212. package/dist/web-components/p-6a4f3836.entry.js +1 -0
  213. package/dist/web-components/p-6cc2ea2c.entry.js +1 -0
  214. package/dist/web-components/p-70784685.entry.js +1 -0
  215. package/dist/web-components/{p-429213ea.entry.js → p-7fed6f4d.entry.js} +1 -1
  216. package/dist/web-components/p-8a66d20c.entry.js +1 -0
  217. package/dist/web-components/{p-0bb04d79.entry.js → p-8b4d2448.entry.js} +1 -1
  218. package/dist/web-components/{p-c7f8e59b.entry.js → p-8c31cbd5.entry.js} +1 -1
  219. package/dist/web-components/p-8dac326b.entry.js +1 -0
  220. package/dist/web-components/{p-1c2497de.entry.js → p-9ef1bbee.entry.js} +1 -1
  221. package/dist/web-components/p-a0dbde7c.entry.js +1 -0
  222. package/dist/web-components/{p-755cc697.entry.js → p-a71485d8.entry.js} +1 -1
  223. package/dist/web-components/p-a7d22c76.entry.js +1 -0
  224. package/dist/web-components/{p-85a9af42.entry.js → p-ae251d2f.entry.js} +1 -1
  225. package/dist/web-components/{p-77155630.entry.js → p-b98ab649.entry.js} +1 -1
  226. package/dist/web-components/p-b9e3b3d6.entry.js +1 -0
  227. package/dist/web-components/p-c1e748f2.entry.js +1 -0
  228. package/dist/web-components/p-c478712b.entry.js +1 -0
  229. package/dist/web-components/{p-72c0c0d8.entry.js → p-d054eb4d.entry.js} +1 -1
  230. package/dist/web-components/p-d433a828.entry.js +1 -0
  231. package/dist/web-components/p-d7726e46.entry.js +1 -0
  232. package/dist/web-components/p-d819c8e5.entry.js +1 -0
  233. package/dist/web-components/p-e2188953.entry.js +1 -0
  234. package/dist/web-components/{p-3b4e3faf.entry.js → p-e5945c01.entry.js} +1 -1
  235. package/dist/web-components/{p-d1379ac6.entry.js → p-f9d5004c.entry.js} +1 -1
  236. package/dist/web-components/web-components.esm.js +1 -1
  237. package/package.json +1 -1
  238. package/dist/cjs/r-accordion-item.cjs.entry.js +0 -78
  239. package/dist/cjs/r-icon-button.cjs.entry.js +0 -81
  240. package/dist/collection/components/accordion-item/accordion-item.css +0 -121
  241. package/dist/collection/components/accordion-item/accordion-item.js +0 -138
  242. package/dist/esm/r-accordion-item.entry.js +0 -76
  243. package/dist/esm/r-icon-button.entry.js +0 -79
  244. package/dist/types/components/accordion-item/accordion-item.d.ts +0 -26
  245. package/dist/web-components/p-00ca474f.entry.js +0 -1
  246. package/dist/web-components/p-289eb4b0.entry.js +0 -1
  247. package/dist/web-components/p-2b8e12ae.entry.js +0 -1
  248. package/dist/web-components/p-2e2c8a5b.entry.js +0 -1
  249. package/dist/web-components/p-3a39932b.entry.js +0 -1
  250. package/dist/web-components/p-3bc93d65.entry.js +0 -1
  251. package/dist/web-components/p-44be9992.entry.js +0 -1
  252. package/dist/web-components/p-4652635a.entry.js +0 -1
  253. package/dist/web-components/p-51a5804b.entry.js +0 -1
  254. package/dist/web-components/p-63474b32.entry.js +0 -1
  255. package/dist/web-components/p-74d2a563.entry.js +0 -1
  256. package/dist/web-components/p-7ad8e78b.entry.js +0 -1
  257. package/dist/web-components/p-8028c2a9.entry.js +0 -1
  258. package/dist/web-components/p-96ddeb7f.entry.js +0 -1
  259. package/dist/web-components/p-9d898089.entry.js +0 -1
  260. package/dist/web-components/p-9e50120b.entry.js +0 -1
  261. package/dist/web-components/p-9eb1f262.entry.js +0 -1
  262. package/dist/web-components/p-a022f356.entry.js +0 -1
  263. package/dist/web-components/p-a7e7f8fa.entry.js +0 -1
  264. package/dist/web-components/p-b2f03016.entry.js +0 -1
  265. package/dist/web-components/p-c300c22f.entry.js +0 -1
  266. package/dist/web-components/p-c937bd92.entry.js +0 -1
  267. package/dist/web-components/p-cbcd7699.entry.js +0 -1
  268. package/dist/web-components/p-d93c240d.entry.js +0 -1
  269. package/dist/web-components/p-e4b66277.entry.js +0 -1
  270. package/dist/web-components/p-e6a31881.entry.js +0 -1
  271. package/dist/web-components/p-f6a92287.entry.js +0 -1
  272. package/dist/web-components/p-f770e22b.entry.js +0 -1
  273. package/dist/web-components/p-f952161b.entry.js +0 -1
@@ -51,16 +51,19 @@ export class InputPassword {
51
51
  this.rChange.emit({ element: host, value });
52
52
  };
53
53
  this.getValidityStateData = (element) => {
54
+ let validityState = '';
55
+ let validityMessage = '';
54
56
  for (const state in element.validity) {
55
57
  if (element.validity[state]) {
56
- this.validityState = state;
58
+ validityState = state;
57
59
  if (this[state + 'Message']) {
58
- this.validityMessage = this[state + 'Message'];
59
- return;
60
+ validityMessage = this[state + 'Message'];
61
+ return { validityState, validityMessage };
60
62
  }
61
- this.validityMessage = element.validationMessage;
63
+ validityMessage = element.validationMessage;
62
64
  }
63
65
  }
66
+ return { validityState, validityMessage };
64
67
  };
65
68
  this.validateFormElement = (element) => {
66
69
  if (element === null)
@@ -69,7 +72,9 @@ export class InputPassword {
69
72
  return;
70
73
  if (this.error)
71
74
  return;
72
- this.getValidityStateData(element.shadowRoot.querySelector('input'));
75
+ const { validityState, validityMessage } = this.getValidityStateData(element.shadowRoot.querySelector('input'));
76
+ this.validityState = validityState;
77
+ this.validityMessage = validityMessage;
73
78
  const isValid = this.validityState === 'valid';
74
79
  this.valid = isValid;
75
80
  this.invalid = !isValid;
@@ -137,6 +142,7 @@ export class InputPassword {
137
142
  async showPassword() {
138
143
  this.showed = true;
139
144
  this.alertOnPasswordVisibilityChange();
145
+ this.rVisibilityChange.emit({ element: this.host, visible: true });
140
146
  }
141
147
  /**
142
148
  * Hide password text.
@@ -144,6 +150,7 @@ export class InputPassword {
144
150
  async hidePassword() {
145
151
  this.showed = false;
146
152
  this.alertOnPasswordVisibilityChange();
153
+ this.rVisibilityChange.emit({ element: this.host, visible: false });
147
154
  }
148
155
  /** Get the input value */
149
156
  async getValue() {
@@ -156,6 +163,14 @@ export class InputPassword {
156
163
  this.value = value;
157
164
  this.validateFormElement(this.nativeElement);
158
165
  }
166
+ /**
167
+ * Validates the input password without triggering UI and returns a boolean indicating its validity.
168
+ * @returns A boolean indicating whether the input password is valid.
169
+ */
170
+ async checkValidity() {
171
+ const { validityState } = this.getValidityStateData(this.nativeElement.shadowRoot.querySelector('input'));
172
+ return validityState === 'valid';
173
+ }
159
174
  /** Identify wrapping form element */
160
175
  get parentFormEl() {
161
176
  return this.host.closest('form') || document.querySelector(`#${this.form}`) || null;
@@ -204,11 +219,14 @@ export class InputPassword {
204
219
  this.disconnectFormEventListeners();
205
220
  }
206
221
  render() {
207
- const { name, placeholder, required, fieldIndicator, value, disabled, form, invalid, valid, hint, label, tooltip, tooltipIcon, tooltipIconColor, fullWidth, showPasswordAriaLabel, hidePasswordAriaLabel, showed, readonly } = this;
222
+ const { name, placeholder, required, minlength, maxlength, pattern, fieldIndicator, value, disabled, form, invalid, valid, hint, label, fullWidth, showPasswordAriaLabel, hidePasswordAriaLabel, showed, readonly, passwordrules, autocomplete, tooLongMessage, tooShortMessage, patternMismatchMessage } = this;
208
223
  const inputAttrs = {
209
224
  name,
210
225
  placeholder,
211
226
  required,
227
+ minlength,
228
+ maxlength,
229
+ pattern,
212
230
  fieldIndicator,
213
231
  value,
214
232
  disabled,
@@ -217,15 +235,17 @@ export class InputPassword {
217
235
  valid,
218
236
  hint,
219
237
  label,
220
- tooltip,
221
- tooltipIcon,
222
- tooltipIconColor,
223
238
  fullWidth,
224
239
  novalidate: true,
225
- readonly
240
+ readonly,
241
+ passwordrules,
242
+ autocomplete,
243
+ tooLongMessage,
244
+ tooShortMessage,
245
+ patternMismatchMessage
226
246
  };
227
- return (h(Host, { key: '27a9dec1e7b44ca89bf6fa3a2519e449250503e0' }, h("r-input", Object.assign({ key: '5ca5a59b7dcbcc5f5bbeefd8741b679bc1d11004' }, inputAttrs, { ref: (el) => this.nativeElement = el, type: showed ? 'text' : 'password', onRInput: this.onInput, onRChange: this.onChange, onKeyUp: this.handleKeyup, onRBlur: this.handleBlur }), h("r-icon", { key: '62a04c271572db925e1992bd1ac540a5a09234dc', name: "padlock-closed", size: "s", slot: "leading" }), h("slot", { key: 'cbee36e927550e21e76dcf61de99980f92564177', name: "popover", slot: "popover" }), h("r-icon-button", { key: 'd4939f4be247d76df7e96eee97ea9ed1079a8f5d', slot: "trailing", name: showed ? 'eye-crossed-out' : 'eye', size: "s", disabled: disabled, label: showed ? hidePasswordAriaLabel : showPasswordAriaLabel, onClick: this.onShowClick }), this.hasMessage &&
228
- h("r-hint", { key: '5c5ba0c83013b4e6a283a86beb5abe1676b97093', slot: "message", variant: "error" }, this.hasError && this.error, this.hasValidationError && (this.customErrorMessage || this.validityMessage))), h("div", { key: '0763d06fbaf887574e44b0fedbb9d08b1725b99f', class: "visually-hidden", ref: el => this.passwordVisibilityChangeAlertContainer = el, "aria-live": "polite" })));
247
+ return (h(Host, { key: '15d9cac9269a816de47d1ae4d3818a99f6229979' }, h("r-input", Object.assign({ key: 'eea64612b319eae93c0fc6591c22020bf2e3d4fb' }, inputAttrs, { ref: (el) => this.nativeElement = el, type: showed ? 'text' : 'password', onRInput: this.onInput, onRChange: this.onChange, onKeyUp: this.handleKeyup, onRBlur: this.handleBlur }), h("r-icon", { key: 'd7a425d45f7897d7f6f11b7bf37595e25da3295b', name: "padlock-closed", size: "s", slot: "leading" }), h("slot", { key: '6ae8e4dc4633e692ae4280d9cd1420bf7e02d0c0', name: "popover", slot: "popover" }), h("r-icon-button", { key: 'e51d43f5966477dc1c35bf6a8114d5b206a58187', slot: "trailing", name: showed ? 'eye-crossed-out' : 'eye', size: "s", disabled: disabled, label: showed ? hidePasswordAriaLabel : showPasswordAriaLabel, onClick: this.onShowClick }), this.hasMessage &&
248
+ h("r-hint", { key: 'bcee0a5b7f75a4ddd2e2fa6a2dd44cd0392170dc', slot: "message", variant: "error" }, this.hasError && this.error, this.hasValidationError && (this.customErrorMessage || this.validityMessage))), h("div", { key: '995e229dfab56b03e0a177c6952c2135777f7899', class: "visually-hidden", ref: el => this.passwordVisibilityChangeAlertContainer = el, "aria-live": "polite" })));
229
249
  }
230
250
  static get is() { return "r-input-password"; }
231
251
  static get encapsulation() { return "shadow"; }
@@ -375,69 +395,6 @@ export class InputPassword {
375
395
  "setter": false,
376
396
  "reflect": false
377
397
  },
378
- "tooltip": {
379
- "type": "string",
380
- "attribute": "tooltip",
381
- "mutable": false,
382
- "complexType": {
383
- "original": "string",
384
- "resolved": "string",
385
- "references": {}
386
- },
387
- "required": false,
388
- "optional": true,
389
- "docs": {
390
- "tags": [],
391
- "text": "_DEPRECATED_ (Use popover slot instead. This property will be removed in November 2025 release.)\nLabel tooltip text"
392
- },
393
- "getter": false,
394
- "setter": false,
395
- "reflect": false
396
- },
397
- "tooltipIcon": {
398
- "type": "string",
399
- "attribute": "tooltip-icon",
400
- "mutable": false,
401
- "complexType": {
402
- "original": "IconName",
403
- "resolved": "string",
404
- "references": {
405
- "IconName": {
406
- "location": "import",
407
- "path": "../icon/exports",
408
- "id": "src/components/icon/exports.ts::IconName"
409
- }
410
- }
411
- },
412
- "required": false,
413
- "optional": true,
414
- "docs": {
415
- "tags": [],
416
- "text": "_DEPRECATED_ (Use popover slot instead. This property will be removed in November 2025 release.)\nTooltip trigger icon by name from [Riverty icons set](https://storybook.riverty.design/?path=/story/components-icon--riverty-kit)"
417
- },
418
- "getter": false,
419
- "setter": false,
420
- "reflect": false
421
- },
422
- "tooltipIconColor": {
423
- "type": "string",
424
- "attribute": "tooltip-icon-color",
425
- "mutable": false,
426
- "complexType": {
427
- "original": "string",
428
- "resolved": "string",
429
- "references": {}
430
- },
431
- "required": false,
432
- "optional": true,
433
- "docs": {
434
- "tags": [],
435
- "text": "_DEPRECATED_ (Use popover slot instead. This property will be removed in November 2025 release.)\nChange color of an icon that triggers tooltip to one of the Riverty color tokens"
436
- },
437
- "getter": false,
438
- "setter": false,
439
- "reflect": false
440
- },
441
398
  "hint": {
442
399
  "type": "string",
443
400
  "attribute": "hint",
@@ -590,6 +547,63 @@ export class InputPassword {
590
547
  "setter": false,
591
548
  "reflect": true
592
549
  },
550
+ "maxlength": {
551
+ "type": "number",
552
+ "attribute": "maxlength",
553
+ "mutable": false,
554
+ "complexType": {
555
+ "original": "number",
556
+ "resolved": "number",
557
+ "references": {}
558
+ },
559
+ "required": false,
560
+ "optional": true,
561
+ "docs": {
562
+ "tags": [],
563
+ "text": "Maximum character length (enforced by native input)."
564
+ },
565
+ "getter": false,
566
+ "setter": false,
567
+ "reflect": false
568
+ },
569
+ "minlength": {
570
+ "type": "number",
571
+ "attribute": "minlength",
572
+ "mutable": false,
573
+ "complexType": {
574
+ "original": "number",
575
+ "resolved": "number",
576
+ "references": {}
577
+ },
578
+ "required": false,
579
+ "optional": true,
580
+ "docs": {
581
+ "tags": [],
582
+ "text": "Minimum character length (validation only)."
583
+ },
584
+ "getter": false,
585
+ "setter": false,
586
+ "reflect": false
587
+ },
588
+ "pattern": {
589
+ "type": "string",
590
+ "attribute": "pattern",
591
+ "mutable": false,
592
+ "complexType": {
593
+ "original": "string",
594
+ "resolved": "string",
595
+ "references": {}
596
+ },
597
+ "required": false,
598
+ "optional": true,
599
+ "docs": {
600
+ "tags": [],
601
+ "text": "Regex pattern the value must match (string form)."
602
+ },
603
+ "getter": false,
604
+ "setter": false,
605
+ "reflect": false
606
+ },
593
607
  "valueMissingMessage": {
594
608
  "type": "string",
595
609
  "attribute": "value-missing-message",
@@ -609,6 +623,63 @@ export class InputPassword {
609
623
  "setter": false,
610
624
  "reflect": false
611
625
  },
626
+ "tooLongMessage": {
627
+ "type": "string",
628
+ "attribute": "too-long-message",
629
+ "mutable": false,
630
+ "complexType": {
631
+ "original": "string",
632
+ "resolved": "string",
633
+ "references": {}
634
+ },
635
+ "required": false,
636
+ "optional": true,
637
+ "docs": {
638
+ "tags": [],
639
+ "text": "Custom message for `tooLong`."
640
+ },
641
+ "getter": false,
642
+ "setter": false,
643
+ "reflect": false
644
+ },
645
+ "tooShortMessage": {
646
+ "type": "string",
647
+ "attribute": "too-short-message",
648
+ "mutable": false,
649
+ "complexType": {
650
+ "original": "string",
651
+ "resolved": "string",
652
+ "references": {}
653
+ },
654
+ "required": false,
655
+ "optional": true,
656
+ "docs": {
657
+ "tags": [],
658
+ "text": "Custom message for `tooShort`."
659
+ },
660
+ "getter": false,
661
+ "setter": false,
662
+ "reflect": false
663
+ },
664
+ "patternMismatchMessage": {
665
+ "type": "string",
666
+ "attribute": "pattern-mismatch-message",
667
+ "mutable": false,
668
+ "complexType": {
669
+ "original": "string",
670
+ "resolved": "string",
671
+ "references": {}
672
+ },
673
+ "required": false,
674
+ "optional": true,
675
+ "docs": {
676
+ "tags": [],
677
+ "text": "Custom message for `patternMismatch`."
678
+ },
679
+ "getter": false,
680
+ "setter": false,
681
+ "reflect": false
682
+ },
612
683
  "customErrorMessage": {
613
684
  "type": "string",
614
685
  "attribute": "custom-error-message",
@@ -707,6 +778,53 @@ export class InputPassword {
707
778
  "setter": false,
708
779
  "reflect": false,
709
780
  "defaultValue": "\"Your password is hidden.\""
781
+ },
782
+ "passwordrules": {
783
+ "type": "string",
784
+ "attribute": "passwordrules",
785
+ "mutable": false,
786
+ "complexType": {
787
+ "original": "string",
788
+ "resolved": "string",
789
+ "references": {}
790
+ },
791
+ "required": false,
792
+ "optional": true,
793
+ "docs": {
794
+ "tags": [],
795
+ "text": "Safari-specific password rules for strong password generation.\nFormat: \"minlength: X; required: lower; required: upper; required: digit; required: special;\"\nExample: \"minlength: 8; required: lower; required: upper; required: digit; required: special;\"\nNote: This attribute is Safari-specific and will be ignored by other browsers.\nSee: https://developer.apple.com/documentation/security/password_autofill/customizing_password_autofill_rules"
796
+ },
797
+ "getter": false,
798
+ "setter": false,
799
+ "reflect": false
800
+ },
801
+ "autocomplete": {
802
+ "type": "string",
803
+ "attribute": "autocomplete",
804
+ "mutable": false,
805
+ "complexType": {
806
+ "original": "PasswordAutocomplete",
807
+ "resolved": "\"current-password\" | \"new-password\" | \"off\"",
808
+ "references": {
809
+ "PasswordAutocomplete": {
810
+ "location": "import",
811
+ "path": "./exports",
812
+ "id": "src/components/input-password/exports.ts::PasswordAutocomplete"
813
+ }
814
+ }
815
+ },
816
+ "required": false,
817
+ "optional": true,
818
+ "docs": {
819
+ "tags": [{
820
+ "name": "example",
821
+ "text": "**Usage Guidelines:**\n- `'current-password'`: Use in login forms where users enter their existing password\n- `'new-password'`: Use in registration forms or password change forms for the new password field\n- `'off'`: Disable autofill in sensitive contexts where password managers should not suggest values\n\n**Common Patterns:**\n```tsx\n// Login form\n<r-input-password autocomplete=\"current-password\" />\n\n// Registration form\n<r-input-password autocomplete=\"new-password\" />\n\n// Sensitive form (e.g., admin panel)\n<r-input-password autocomplete=\"off\" />\n```"
822
+ }],
823
+ "text": "Password-specific autocomplete behavior for browser password managers."
824
+ },
825
+ "getter": false,
826
+ "setter": false,
827
+ "reflect": false
710
828
  }
711
829
  };
712
830
  }
@@ -794,6 +912,26 @@ export class InputPassword {
794
912
  }
795
913
  }
796
914
  }
915
+ }, {
916
+ "method": "rVisibilityChange",
917
+ "name": "rVisibilityChange",
918
+ "bubbles": true,
919
+ "cancelable": true,
920
+ "composed": true,
921
+ "docs": {
922
+ "tags": [],
923
+ "text": "Emits 'rVisibilityChange' event when password visibility is toggled"
924
+ },
925
+ "complexType": {
926
+ "original": "{\n element: HTMLRInputPasswordElement,\n visible: boolean\n }",
927
+ "resolved": "{ element: HTMLRInputPasswordElement; visible: boolean; }",
928
+ "references": {
929
+ "HTMLRInputPasswordElement": {
930
+ "location": "global",
931
+ "id": "global::HTMLRInputPasswordElement"
932
+ }
933
+ }
934
+ }
797
935
  }];
798
936
  }
799
937
  static get methods() {
@@ -886,6 +1024,26 @@ export class InputPassword {
886
1024
  "text": "Set the input value",
887
1025
  "tags": []
888
1026
  }
1027
+ },
1028
+ "checkValidity": {
1029
+ "complexType": {
1030
+ "signature": "() => Promise<boolean>",
1031
+ "parameters": [],
1032
+ "references": {
1033
+ "Promise": {
1034
+ "location": "global",
1035
+ "id": "global::Promise"
1036
+ }
1037
+ },
1038
+ "return": "Promise<boolean>"
1039
+ },
1040
+ "docs": {
1041
+ "text": "Validates the input password without triggering UI and returns a boolean indicating its validity.",
1042
+ "tags": [{
1043
+ "name": "returns",
1044
+ "text": "A boolean indicating whether the input password is valid."
1045
+ }]
1046
+ }
889
1047
  }
890
1048
  };
891
1049
  }
@@ -50,7 +50,9 @@ export class InputPhoneNumber {
50
50
  return;
51
51
  if (this.error)
52
52
  return;
53
- this.getValidityStateData();
53
+ const { validityState, validityMessage } = this.getValidityStateData();
54
+ this.validityState = validityState;
55
+ this.validityMessage = validityMessage;
54
56
  const isValid = this.validityState === 'valid';
55
57
  this.valid = isValid;
56
58
  this.invalid = !isValid;
@@ -61,22 +63,25 @@ export class InputPhoneNumber {
61
63
  };
62
64
  this.getValidityStateData = () => {
63
65
  var _a, _b;
66
+ let validityState = '';
67
+ let validityMessage = '';
64
68
  if (!this.required && !((_a = this.phoneNumber) === null || _a === void 0 ? void 0 : _a.length)) {
65
- this.validityState = 'valid';
66
- return;
69
+ validityState = 'valid';
70
+ return { validityState, validityMessage };
67
71
  }
68
72
  if (!((_b = this.phoneNumber) === null || _b === void 0 ? void 0 : _b.length)) {
69
- this.validityState = 'valueMissing';
70
- this.validityMessage = this.valueMissingMessage;
71
- return;
73
+ validityState = 'valueMissing';
74
+ validityMessage = this.valueMissingMessage;
75
+ return { validityState, validityMessage };
72
76
  }
73
77
  const isPhoneNumberValid = this.countryCode ? this.getPhoneValidationResult(this.phoneNumber, this.countryCode).isValid : false;
74
78
  if (!isPhoneNumberValid) {
75
- this.validityState = 'invalid';
76
- this.validityMessage = this.customErrorMessage;
77
- return;
79
+ validityState = 'invalid';
80
+ validityMessage = this.customErrorMessage;
81
+ return { validityState, validityMessage };
78
82
  }
79
- this.validityState = 'valid';
83
+ validityState = 'valid';
84
+ return { validityState, validityMessage };
80
85
  };
81
86
  this.onSubmitForm = (event) => {
82
87
  if (this.isNoValidate)
@@ -118,6 +123,14 @@ export class InputPhoneNumber {
118
123
  this.customErrorMessage = message;
119
124
  this.validateFormElement(this.nativeElement);
120
125
  }
126
+ /**
127
+ * Validates the input phone number without triggering UI and returns a boolean indicating its validity.
128
+ * @returns A boolean indicating whether the input phone number is valid.
129
+ */
130
+ async checkValidity() {
131
+ const { validityState } = this.getValidityStateData();
132
+ return validityState === 'valid';
133
+ }
121
134
  /** Check validity and reveal validation state. */
122
135
  async reportValidity() {
123
136
  this.validateFormElement(this.nativeElement);
@@ -258,14 +271,10 @@ export class InputPhoneNumber {
258
271
  this.disconnectEventListeners();
259
272
  }
260
273
  render() {
261
- const { label, fieldIndicator, hint, name, form, inputLabel, tooltip, tooltipIcon, tooltipIconColor, disabled, uniqueId, required, valid, invalid, novalidate, phoneNumber, fullPhoneNumber, fullWidth } = this;
262
- // DEPRECATED: will be removed in November 2025 release.
263
- const tooltipAttrs = tooltip ? {
264
- tooltip,
265
- 'tooltip-icon': tooltipIcon,
266
- 'tooltip-icon-color': tooltipIconColor,
267
- } : {};
268
- const labelAttr = Object.assign({ fieldIndicator }, tooltipAttrs);
274
+ const { label, fieldIndicator, hint, name, form, inputLabel, disabled, uniqueId, required, valid, invalid, novalidate, phoneNumber, fullPhoneNumber, fullWidth } = this;
275
+ const labelAttr = {
276
+ fieldIndicator
277
+ };
269
278
  const inputAttrs = {
270
279
  id: uniqueId,
271
280
  form,
@@ -275,10 +284,9 @@ export class InputPhoneNumber {
275
284
  disabled,
276
285
  'aria-describedby': this.ariaDescribedBy
277
286
  };
278
- return (h(Host, { key: '87f5720347e3627524f95f7110088b8eddef7f8f' }, h("div", { key: '091e2048f011ff4167b35434567149de061954bd', class: "r-input-phone-number--label-container" }, h("label", { key: '80994d1cfd1b6f2228fb231f64894e660bdb1a1c', id: `${uniqueId}-label` }, label &&
279
- h("r-label", Object.assign({ key: '36fa07371ee2c9d37645060a29f2d6f4ffe66342' }, labelAttr), label)), h("slot", { key: '76034d24a4208a46ee92185221256b9b5e87f971', name: "popover" })), hint &&
280
- h("r-hint", { key: '574a0ec6541310640594eed29e0c301f5f9a01f7', id: `${uniqueId}-hint`, role: "note" }, hint), h("div", { key: '63f37ce77a8e247091e0e6bf55632a834e19992d', class: "r-input-phone-number", role: "group", "aria-labelledby": `${uniqueId}-label`, "aria-describedby": this.ariaDescribedBy }, h("slot", { key: '36f3e834567d3ce77b6d89ae3e835eee630675b7' }), h("r-input", { key: '2f8dc7a95823b3107d8e24f90ae53791554c19af', label: inputLabel, value: phoneNumber, internal: true, valid: valid, invalid: invalid, required: required, readonly: this.readonly, novalidate: true, fullWidth: fullWidth, type: "tel", error: this.errorMessage || '', onRInput: this.handleOnInput, onRChange: this.handleInputOnChange, disabled: disabled }, valid && phoneNumber &&
281
- h("r-icon", { key: '4559b1d4c55e35b2ef9560554a62d4742bca875e', slot: "trailing", name: "circled-check", size: "s", color: "var(--r-status-success-regular)" }))), h("input", Object.assign({ key: 'c68a9255419c41e8b9fc02127d5f3b68cd14f40b', type: "hidden" }, inputAttrs, { readonly: this.readonly, value: fullPhoneNumber, ref: el => this.nativeElement = el })), h("r-hint", { key: '43712e3a6b916945b1a00d3c6d8ace5f7bdcc1d7', "aria-live": "polite", "aria-atomic": "true", id: `${uniqueId}-message`, class: !this.hasMessage && 'visually-hidden', variant: "error" }, this.hasMessage ? (this.hasError ? this.error : this.validityMessage) : '')));
287
+ return (h(Host, { key: '97edc0f9bbc4a3823e628bb08be3b3abbbcfe6ec' }, h("div", { key: '8a5236c58655d47368bfaa9bcea6bde3c39c6a22', class: "r-input-phone-number--label-container" }, h("label", { key: 'ae6e6e72381864d67d98f4429856cf5b1943943c', id: `${uniqueId}-label` }, label &&
288
+ h("r-label", Object.assign({ key: 'd760960dbf5806084b0a10d14fef218ca5e4cd79' }, labelAttr), label)), h("slot", { key: '4f9bcaba34f2f49592a3167958bd091eeac9f6be', name: "popover" })), hint &&
289
+ h("r-hint", { key: '0c3f402b7f9369dcea2c84478e12ed0ea241fd0a', id: `${uniqueId}-hint`, role: "note" }, hint), h("div", { key: '43e5dbd9ca897cfc2ca05e6ab020c321871f3961', class: "r-input-phone-number", role: "group", "aria-labelledby": `${uniqueId}-label`, "aria-describedby": this.ariaDescribedBy }, h("slot", { key: '4e3f891eb21f15927d6a33e7ba6728c09d20e981' }), h("r-input", { key: '6bd6e929e396bf515511fdd978d00df9de54cc37', label: inputLabel, value: phoneNumber, internal: true, valid: valid, invalid: invalid, required: required, readonly: this.readonly, novalidate: true, fullWidth: fullWidth, type: "tel", error: this.errorMessage || '', onRInput: this.handleOnInput, onRChange: this.handleInputOnChange, disabled: disabled })), h("input", Object.assign({ key: 'f113123ef2fa2096b686d132ce11ca11970ab1be', type: "hidden" }, inputAttrs, { readonly: this.readonly, value: fullPhoneNumber, ref: el => this.nativeElement = el })), h("r-hint", { key: 'd00477c3a27f999c4a3079710c34266ed47e0e57', "aria-live": "polite", "aria-atomic": "true", id: `${uniqueId}-message`, class: !this.hasMessage && 'visually-hidden', variant: "error" }, this.hasMessage ? (this.hasError ? this.error : this.validityMessage) : '')));
282
290
  }
283
291
  static get is() { return "r-input-phone-number"; }
284
292
  static get encapsulation() { return "shadow"; }
@@ -408,69 +416,6 @@ export class InputPhoneNumber {
408
416
  "setter": false,
409
417
  "reflect": false
410
418
  },
411
- "tooltip": {
412
- "type": "string",
413
- "attribute": "tooltip",
414
- "mutable": false,
415
- "complexType": {
416
- "original": "string",
417
- "resolved": "string",
418
- "references": {}
419
- },
420
- "required": false,
421
- "optional": true,
422
- "docs": {
423
- "tags": [],
424
- "text": "_DEPRECATED_ (Use popover slot instead. This property will be removed in November 2025 release.)\nLabel tooltip text"
425
- },
426
- "getter": false,
427
- "setter": false,
428
- "reflect": true
429
- },
430
- "tooltipIcon": {
431
- "type": "string",
432
- "attribute": "tooltip-icon",
433
- "mutable": false,
434
- "complexType": {
435
- "original": "IconName",
436
- "resolved": "string",
437
- "references": {
438
- "IconName": {
439
- "location": "import",
440
- "path": "../icon/exports",
441
- "id": "src/components/icon/exports.ts::IconName"
442
- }
443
- }
444
- },
445
- "required": false,
446
- "optional": true,
447
- "docs": {
448
- "tags": [],
449
- "text": "_DEPRECATED_ (Use popover slot instead. This property will be removed in November 2025 release.)\nLabel tooltip trigger icon"
450
- },
451
- "getter": false,
452
- "setter": false,
453
- "reflect": false
454
- },
455
- "tooltipIconColor": {
456
- "type": "string",
457
- "attribute": "tooltip-icon-color",
458
- "mutable": false,
459
- "complexType": {
460
- "original": "string",
461
- "resolved": "string",
462
- "references": {}
463
- },
464
- "required": false,
465
- "optional": true,
466
- "docs": {
467
- "tags": [],
468
- "text": "_DEPRECATED_ (Use popover slot instead. This property will be removed in November 2025 release.)\nChange color of an icon that triggers tooltip to one of the Riverty color tokens"
469
- },
470
- "getter": false,
471
- "setter": false,
472
- "reflect": false
473
- },
474
419
  "name": {
475
420
  "type": "string",
476
421
  "attribute": "name",
@@ -851,6 +796,26 @@ export class InputPhoneNumber {
851
796
  "tags": []
852
797
  }
853
798
  },
799
+ "checkValidity": {
800
+ "complexType": {
801
+ "signature": "() => Promise<boolean>",
802
+ "parameters": [],
803
+ "references": {
804
+ "Promise": {
805
+ "location": "global",
806
+ "id": "global::Promise"
807
+ }
808
+ },
809
+ "return": "Promise<boolean>"
810
+ },
811
+ "docs": {
812
+ "text": "Validates the input phone number without triggering UI and returns a boolean indicating its validity.",
813
+ "tags": [{
814
+ "name": "returns",
815
+ "text": "A boolean indicating whether the input phone number is valid."
816
+ }]
817
+ }
818
+ },
854
819
  "reportValidity": {
855
820
  "complexType": {
856
821
  "signature": "() => Promise<boolean>",