@riverty/web-components 5.8.0 → 6.1.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 (281) hide show
  1. package/CHANGELOG.md +107 -0
  2. package/custom-elements.json +215 -362
  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 +26 -11
  10. package/dist/cjs/r-badge.cjs.entry.js +1 -1
  11. package/dist/cjs/r-button.cjs.entry.js +1 -1
  12. package/dist/cjs/r-checkbox-group.cjs.entry.js +1 -11
  13. package/dist/cjs/r-checkbox.cjs.entry.js +76 -75
  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 +112 -17
  19. package/dist/cjs/r-input-date.cjs.entry.js +8 -14
  20. package/dist/cjs/r-input-password.cjs.entry.js +16 -8
  21. package/dist/cjs/r-input-phone-number.cjs.entry.js +7 -12
  22. package/dist/cjs/r-input.cjs.entry.js +90 -42
  23. package/dist/cjs/r-list-item.cjs.entry.js +20 -19
  24. package/dist/cjs/r-panel.cjs.entry.js +5 -5
  25. package/dist/cjs/r-popover-action.cjs.entry.js +1 -1
  26. package/dist/cjs/r-popover-content.cjs.entry.js +1 -1
  27. package/dist/cjs/r-popover-headline.cjs.entry.js +1 -1
  28. package/dist/cjs/r-popover-trigger.cjs.entry.js +1 -1
  29. package/dist/cjs/r-popover.cjs.entry.js +3 -3
  30. package/dist/cjs/r-progress-bar.cjs.entry.js +1 -1
  31. package/dist/cjs/r-radio-button-description.cjs.entry.js +1 -1
  32. package/dist/cjs/r-radio-button-leading.cjs.entry.js +1 -1
  33. package/dist/cjs/r-radio-button-title.cjs.entry.js +1 -1
  34. package/dist/cjs/r-radio-button-trailing.cjs.entry.js +1 -1
  35. package/dist/cjs/r-radio-button.cjs.entry.js +29 -12
  36. package/dist/cjs/r-radio-group.cjs.entry.js +18 -22
  37. package/dist/cjs/r-select-option.cjs.entry.js +1 -1
  38. package/dist/cjs/r-select.cjs.entry.js +6 -24
  39. package/dist/cjs/r-skip-link.cjs.entry.js +1 -1
  40. package/dist/cjs/r-stepper-item.cjs.entry.js +3 -3
  41. package/dist/cjs/r-stepper.cjs.entry.js +2 -2
  42. package/dist/cjs/r-tab-panel.cjs.entry.js +1 -1
  43. package/dist/cjs/r-tab.cjs.entry.js +6 -2
  44. package/dist/cjs/r-tabs-list.cjs.entry.js +160 -2
  45. package/dist/cjs/r-tabs.cjs.entry.js +34 -6
  46. package/dist/cjs/r-textarea.cjs.entry.js +7 -19
  47. package/dist/cjs/r-toast-group.cjs.entry.js +2 -2
  48. package/dist/cjs/r-toast.cjs.entry.js +31 -11
  49. package/dist/cjs/web-components.cjs.js +1 -1
  50. package/dist/collection/collection-manifest.json +0 -1
  51. package/dist/collection/components/accordion/accordion.css +0 -2
  52. package/dist/collection/components/accordion/accordion.js +4 -8
  53. package/dist/collection/components/accordion/exports.js +1 -1
  54. package/dist/collection/components/accordion-panel/accordion-panel.js +1 -1
  55. package/dist/collection/components/accordion-section/accordion-section.js +1 -1
  56. package/dist/collection/components/accordion-trigger/accordion-trigger.css +0 -4
  57. package/dist/collection/components/accordion-trigger/accordion-trigger.js +4 -215
  58. package/dist/collection/components/alert/alert.css +8 -3
  59. package/dist/collection/components/alert/alert.js +48 -10
  60. package/dist/collection/components/badge/badge.js +1 -1
  61. package/dist/collection/components/button/button.js +1 -1
  62. package/dist/collection/components/checkbox/checkbox.js +80 -98
  63. package/dist/collection/components/checkbox-group/checkbox-group.js +1 -50
  64. package/dist/collection/components/dialog/dialog.css +1 -3
  65. package/dist/collection/components/dialog/dialog.js +2 -10
  66. package/dist/collection/components/hint/hint.js +2 -2
  67. package/dist/collection/components/icon/bundled-icons/riverty-kit.json +1 -1
  68. package/dist/collection/components/icon/riverty-kit.js +1 -1
  69. package/dist/collection/components/icon-button/icon-button.js +22 -3
  70. package/dist/collection/components/input/exports.js +2 -0
  71. package/dist/collection/components/input/input.css +3 -0
  72. package/dist/collection/components/input/input.js +233 -371
  73. package/dist/collection/components/input-code/exports.js +2 -0
  74. package/dist/collection/components/input-code/input-code.js +294 -26
  75. package/dist/collection/components/input-date/input-date.js +8 -77
  76. package/dist/collection/components/input-password/exports.js +1 -0
  77. package/dist/collection/components/input-password/input-password.css +1 -0
  78. package/dist/collection/components/input-password/input-password.js +195 -70
  79. package/dist/collection/components/input-phone-number/input-phone-number.js +7 -75
  80. package/dist/collection/components/label/label.js +3 -113
  81. package/dist/collection/components/list-item/list-item/list-item.css +53 -19
  82. package/dist/collection/components/list-item/list-item/list-item.js +38 -40
  83. package/dist/collection/components/panel/panel.css +40 -17
  84. package/dist/collection/components/panel/panel.js +6 -6
  85. package/dist/collection/components/popover/exports.js +0 -1
  86. package/dist/collection/components/popover/popover.css +2 -10
  87. package/dist/collection/components/popover/popover.js +2 -55
  88. package/dist/collection/components/popover-action/popover-action.js +1 -1
  89. package/dist/collection/components/popover-content/popover-content.js +1 -1
  90. package/dist/collection/components/popover-headline/popover-headline.js +1 -1
  91. package/dist/collection/components/popover-trigger/popover-trigger.js +1 -1
  92. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  93. package/dist/collection/components/radio-button/radio-button.js +49 -12
  94. package/dist/collection/components/radio-button-description/radio-button-description.js +1 -1
  95. package/dist/collection/components/radio-button-leading/radio-button-leading.js +1 -1
  96. package/dist/collection/components/radio-button-title/radio-button-title.js +1 -1
  97. package/dist/collection/components/radio-button-trailing/radio-button-trailing.js +1 -1
  98. package/dist/collection/components/radio-group/radio-group.js +38 -124
  99. package/dist/collection/components/select/select.js +6 -330
  100. package/dist/collection/components/select-option/select-option.js +1 -1
  101. package/dist/collection/components/skip-link/skip-link.js +1 -1
  102. package/dist/collection/components/stepper/stepper.css +1 -1
  103. package/dist/collection/components/stepper/stepper.js +1 -1
  104. package/dist/collection/components/stepper-item/stepper-item.css +3 -3
  105. package/dist/collection/components/stepper-item/stepper-item.js +2 -2
  106. package/dist/collection/components/tab/tab.css +29 -29
  107. package/dist/collection/components/tab/tab.js +5 -1
  108. package/dist/collection/components/tab-panel/tab-panel.js +1 -1
  109. package/dist/collection/components/tabs/tabs.js +34 -6
  110. package/dist/collection/components/tabs-list/exports.js +2 -0
  111. package/dist/collection/components/tabs-list/tabs-list.css +43 -2
  112. package/dist/collection/components/tabs-list/tabs-list.js +277 -1
  113. package/dist/collection/components/textarea/textarea.css +1 -1
  114. package/dist/collection/components/textarea/textarea.js +6 -158
  115. package/dist/collection/components/toast/toast.css +35 -9
  116. package/dist/collection/components/toast/toast.js +44 -32
  117. package/dist/collection/components/toast-group/toast-group.css +1 -1
  118. package/dist/collection/components/toast-group/toast-group.js +1 -1
  119. package/dist/collection/components/tooltip/tooltip.js +2 -2
  120. package/dist/esm/index-Da7qOBFr.js +6 -10
  121. package/dist/esm/loader.js +1 -1
  122. package/dist/esm/r-accordion-panel.entry.js +1 -1
  123. package/dist/esm/r-accordion-section.entry.js +1 -1
  124. package/dist/esm/r-accordion-trigger.entry.js +5 -35
  125. package/dist/esm/r-accordion.entry.js +3 -7
  126. package/dist/esm/r-alert.entry.js +26 -11
  127. package/dist/esm/r-badge.entry.js +1 -1
  128. package/dist/esm/r-button.entry.js +1 -1
  129. package/dist/esm/r-checkbox-group.entry.js +1 -11
  130. package/dist/esm/r-checkbox.entry.js +76 -75
  131. package/dist/esm/r-dialog.entry.js +3 -11
  132. package/dist/esm/r-hint_2.entry.js +47 -0
  133. package/dist/esm/{r-hint_3.entry.js → r-icon-button_2.entry.js} +65 -51
  134. package/dist/esm/r-icon.entry.js +1 -1
  135. package/dist/esm/r-input-code.entry.js +112 -17
  136. package/dist/esm/r-input-date.entry.js +8 -14
  137. package/dist/esm/r-input-password.entry.js +16 -8
  138. package/dist/esm/r-input-phone-number.entry.js +7 -12
  139. package/dist/esm/r-input.entry.js +90 -42
  140. package/dist/esm/r-list-item.entry.js +20 -19
  141. package/dist/esm/r-panel.entry.js +5 -5
  142. package/dist/esm/r-popover-action.entry.js +1 -1
  143. package/dist/esm/r-popover-content.entry.js +1 -1
  144. package/dist/esm/r-popover-headline.entry.js +1 -1
  145. package/dist/esm/r-popover-trigger.entry.js +1 -1
  146. package/dist/esm/r-popover.entry.js +3 -3
  147. package/dist/esm/r-progress-bar.entry.js +1 -1
  148. package/dist/esm/r-radio-button-description.entry.js +1 -1
  149. package/dist/esm/r-radio-button-leading.entry.js +1 -1
  150. package/dist/esm/r-radio-button-title.entry.js +1 -1
  151. package/dist/esm/r-radio-button-trailing.entry.js +1 -1
  152. package/dist/esm/r-radio-button.entry.js +29 -12
  153. package/dist/esm/r-radio-group.entry.js +18 -22
  154. package/dist/esm/r-select-option.entry.js +1 -1
  155. package/dist/esm/r-select.entry.js +6 -24
  156. package/dist/esm/r-skip-link.entry.js +1 -1
  157. package/dist/esm/r-stepper-item.entry.js +3 -3
  158. package/dist/esm/r-stepper.entry.js +2 -2
  159. package/dist/esm/r-tab-panel.entry.js +1 -1
  160. package/dist/esm/r-tab.entry.js +6 -2
  161. package/dist/esm/r-tabs-list.entry.js +161 -3
  162. package/dist/esm/r-tabs.entry.js +34 -6
  163. package/dist/esm/r-textarea.entry.js +7 -19
  164. package/dist/esm/r-toast-group.entry.js +2 -2
  165. package/dist/esm/r-toast.entry.js +31 -11
  166. package/dist/esm/web-components.js +1 -1
  167. package/dist/types/components/accordion/accordion.d.ts +1 -5
  168. package/dist/types/components/accordion/exports.d.ts +1 -1
  169. package/dist/types/components/accordion-trigger/accordion-trigger.d.ts +0 -36
  170. package/dist/types/components/alert/alert.d.ts +6 -1
  171. package/dist/types/components/checkbox/checkbox.d.ts +24 -34
  172. package/dist/types/components/checkbox-group/checkbox-group.d.ts +0 -11
  173. package/dist/types/components/dialog/dialog.d.ts +0 -2
  174. package/dist/types/components/icon/exports.d.ts +1 -0
  175. package/dist/types/components/icon/icon-data.d.ts +1 -0
  176. package/dist/types/components/icon/riverty-kit.d.ts +1 -0
  177. package/dist/types/components/icon-button/icon-button.d.ts +4 -0
  178. package/dist/types/components/input/exports.d.ts +4 -0
  179. package/dist/types/components/input/input.d.ts +47 -73
  180. package/dist/types/components/input-code/exports.d.ts +4 -0
  181. package/dist/types/components/input-code/input-code.d.ts +49 -7
  182. package/dist/types/components/input-date/input-date.d.ts +0 -16
  183. package/dist/types/components/input-password/exports.d.ts +1 -0
  184. package/dist/types/components/input-password/input-password.d.ts +48 -16
  185. package/dist/types/components/input-phone-number/input-phone-number.d.ts +0 -16
  186. package/dist/types/components/label/label.d.ts +0 -18
  187. package/dist/types/components/list-item/list-item/list-item.d.ts +5 -9
  188. package/dist/types/components/popover/exports.d.ts +0 -2
  189. package/dist/types/components/popover/popover.d.ts +1 -14
  190. package/dist/types/components/radio-button/radio-button.d.ts +5 -0
  191. package/dist/types/components/radio-group/radio-group.d.ts +5 -26
  192. package/dist/types/components/select/select.d.ts +0 -50
  193. package/dist/types/components/tabs/tabs.d.ts +1 -0
  194. package/dist/types/components/tabs-list/exports.d.ts +4 -0
  195. package/dist/types/components/tabs-list/tabs-list.d.ts +38 -0
  196. package/dist/types/components/textarea/textarea.d.ts +0 -32
  197. package/dist/types/components/toast/toast.d.ts +11 -5
  198. package/dist/types/components.d.ts +280 -638
  199. package/dist/web-components/bundled-icons/riverty-kit.json +1 -1
  200. package/dist/web-components/p-0347feff.entry.js +1 -0
  201. package/dist/web-components/p-159822fe.entry.js +1 -0
  202. package/dist/web-components/p-19407a14.entry.js +1 -0
  203. package/dist/web-components/{p-5744d75c.entry.js → p-1da75540.entry.js} +1 -1
  204. package/dist/web-components/p-26ef77d6.entry.js +1 -0
  205. package/dist/web-components/p-3884c6e7.entry.js +1 -0
  206. package/dist/web-components/p-3f60c6c0.entry.js +1 -0
  207. package/dist/web-components/{p-87f39749.entry.js → p-4595fa8e.entry.js} +1 -1
  208. package/dist/web-components/{p-4e3df002.entry.js → p-4cc58c6a.entry.js} +1 -1
  209. package/dist/web-components/p-4f261b63.entry.js +1 -0
  210. package/dist/web-components/{p-e0e2f2b2.entry.js → p-50893211.entry.js} +1 -1
  211. package/dist/web-components/{p-72fa1fd1.entry.js → p-550e2237.entry.js} +1 -1
  212. package/dist/web-components/p-589baaf9.entry.js +1 -0
  213. package/dist/web-components/{p-3b4e3faf.entry.js → p-5eeb7002.entry.js} +1 -1
  214. package/dist/web-components/p-60341de2.entry.js +1 -0
  215. package/dist/web-components/{p-44ae9f33.entry.js → p-62b788bf.entry.js} +1 -1
  216. package/dist/web-components/p-63fd817d.entry.js +1 -0
  217. package/dist/web-components/p-67fa3f84.entry.js +1 -0
  218. package/dist/web-components/p-6bb44ec6.entry.js +1 -0
  219. package/dist/web-components/p-6cc2ea2c.entry.js +1 -0
  220. package/dist/web-components/p-70784685.entry.js +1 -0
  221. package/dist/web-components/p-7ce57332.entry.js +1 -0
  222. package/dist/web-components/{p-429213ea.entry.js → p-7fed6f4d.entry.js} +1 -1
  223. package/dist/web-components/p-8a66d20c.entry.js +1 -0
  224. package/dist/web-components/{p-c7f8e59b.entry.js → p-8c31cbd5.entry.js} +1 -1
  225. package/dist/web-components/p-8dac326b.entry.js +1 -0
  226. package/dist/web-components/p-92c7cf33.entry.js +1 -0
  227. package/dist/web-components/{p-1c2497de.entry.js → p-9ef1bbee.entry.js} +1 -1
  228. package/dist/web-components/p-a7d22c76.entry.js +1 -0
  229. package/dist/web-components/p-b96d59ca.entry.js +1 -0
  230. package/dist/web-components/p-ba801820.entry.js +1 -0
  231. package/dist/web-components/{p-a022f356.entry.js → p-bfc8c077.entry.js} +1 -1
  232. package/dist/web-components/p-c05b05da.entry.js +1 -0
  233. package/dist/web-components/p-c1e748f2.entry.js +1 -0
  234. package/dist/web-components/{p-5bbd6e3c.entry.js → p-c478712b.entry.js} +1 -1
  235. package/dist/web-components/p-c95b6470.entry.js +1 -0
  236. package/dist/web-components/p-cd5daad2.entry.js +1 -0
  237. package/dist/web-components/p-cdd88c5a.entry.js +1 -0
  238. package/dist/web-components/{p-3078b2b8.entry.js → p-d054eb4d.entry.js} +1 -1
  239. package/dist/web-components/{p-8563a1ab.entry.js → p-d433a828.entry.js} +1 -1
  240. package/dist/web-components/p-d7726e46.entry.js +1 -0
  241. package/dist/web-components/p-d819c8e5.entry.js +1 -0
  242. package/dist/web-components/{p-755cc697.entry.js → p-e4dc60f0.entry.js} +1 -1
  243. package/dist/web-components/{p-d1379ac6.entry.js → p-f9d5004c.entry.js} +1 -1
  244. package/dist/web-components/web-components.esm.js +1 -1
  245. package/package.json +1 -1
  246. package/dist/cjs/r-accordion-item.cjs.entry.js +0 -78
  247. package/dist/cjs/r-icon-button.cjs.entry.js +0 -81
  248. package/dist/collection/components/accordion-item/accordion-item.css +0 -121
  249. package/dist/collection/components/accordion-item/accordion-item.js +0 -138
  250. package/dist/esm/r-accordion-item.entry.js +0 -76
  251. package/dist/esm/r-icon-button.entry.js +0 -79
  252. package/dist/types/components/accordion-item/accordion-item.d.ts +0 -26
  253. package/dist/web-components/p-00ca474f.entry.js +0 -1
  254. package/dist/web-components/p-0bb04d79.entry.js +0 -1
  255. package/dist/web-components/p-15ac0fdd.entry.js +0 -1
  256. package/dist/web-components/p-1c956370.entry.js +0 -1
  257. package/dist/web-components/p-2a512983.entry.js +0 -1
  258. package/dist/web-components/p-2b2f581a.entry.js +0 -1
  259. package/dist/web-components/p-2e18e762.entry.js +0 -1
  260. package/dist/web-components/p-3bc93d65.entry.js +0 -1
  261. package/dist/web-components/p-4bd3e077.entry.js +0 -1
  262. package/dist/web-components/p-51a5804b.entry.js +0 -1
  263. package/dist/web-components/p-56da04d8.entry.js +0 -1
  264. package/dist/web-components/p-5e6aabd8.entry.js +0 -1
  265. package/dist/web-components/p-656229de.entry.js +0 -1
  266. package/dist/web-components/p-6a4f3836.entry.js +0 -1
  267. package/dist/web-components/p-7775228c.entry.js +0 -1
  268. package/dist/web-components/p-7ad8e78b.entry.js +0 -1
  269. package/dist/web-components/p-85a9af42.entry.js +0 -1
  270. package/dist/web-components/p-9e50120b.entry.js +0 -1
  271. package/dist/web-components/p-a7e7f8fa.entry.js +0 -1
  272. package/dist/web-components/p-ad9b2a48.entry.js +0 -1
  273. package/dist/web-components/p-b2f03016.entry.js +0 -1
  274. package/dist/web-components/p-b87ad83b.entry.js +0 -1
  275. package/dist/web-components/p-c937bd92.entry.js +0 -1
  276. package/dist/web-components/p-cbcd7699.entry.js +0 -1
  277. package/dist/web-components/p-dbe579e8.entry.js +0 -1
  278. package/dist/web-components/p-e4b66277.entry.js +0 -1
  279. package/dist/web-components/p-e6a31881.entry.js +0 -1
  280. package/dist/web-components/p-f2577a3c.entry.js +0 -1
  281. package/dist/web-components/p-f6a92287.entry.js +0 -1
@@ -12,24 +12,19 @@ export class RInput {
12
12
  */
13
13
  this.value = '';
14
14
  /**
15
- * @deprecated Will be removed November 2025.
16
- * Position of legacy icon: `start` | `end`.
17
- */
18
- this.iconPosition = 'start';
19
- /**
20
- * @deprecated Will be removed November 2025.
21
- * Legacy boolean to show a validation marker icon.
22
- */
23
- this.validMarker = false;
24
- /**
25
- * @deprecated Will be removed November 2025.
26
- * Icon name used when `validMarker` is active and state is valid.
27
- */
28
- this.validMarkerIcon = 'circled-check';
15
+ * When `true` field renders valid/invalid marker within.
16
+ */
17
+ this.validityMarker = true;
29
18
  /** Validity state passed from validateFormElement function after validation */
30
19
  this.validityState = '';
31
20
  /** Validity message passed from validateFormElement function after validation */
32
21
  this.validityMessage = '';
22
+ /** Defines if the component has been touched by user */
23
+ this.touched = false;
24
+ /** Defines if the value has been changed by user interaction */
25
+ this.dirty = false;
26
+ /** Private flag to prevent validation during reset */
27
+ this.isResetting = false;
33
28
  this.nativeElement = null;
34
29
  this.uniqueId = `r-input-${Date.now().toString(32)}${Math.random().toString(32)}`.replace(/\./g, '');
35
30
  /**
@@ -48,14 +43,18 @@ export class RInput {
48
43
  for (const state in element.validity) {
49
44
  if (element.validity[state]) {
50
45
  validityState = state;
51
- if (this[state + 'Message']) {
52
- validityMessage = this[state + 'Message'];
46
+ const customMessage = this[state + 'Message'];
47
+ if (customMessage) {
48
+ validityMessage = customMessage;
53
49
  return { validityState, validityMessage };
54
50
  }
55
51
  validityMessage = element.validationMessage;
52
+ // Found an error, use it even if no custom message
53
+ return { validityState, validityMessage };
56
54
  }
57
55
  }
58
- return { validityState, validityMessage };
56
+ // No errors found, field is valid
57
+ return { validityState: 'valid', validityMessage: '' };
59
58
  };
60
59
  this.validateFormElement = (element) => {
61
60
  if (element === null)
@@ -64,6 +63,10 @@ export class RInput {
64
63
  return;
65
64
  if (this.error)
66
65
  return;
66
+ // Trigger browser validation to populate validity states
67
+ if (element.checkValidity) {
68
+ element.checkValidity();
69
+ }
67
70
  const { validityState, validityMessage } = this.getValidityStateData(element);
68
71
  this.validityState = validityState;
69
72
  this.validityMessage = validityMessage;
@@ -79,6 +82,8 @@ export class RInput {
79
82
  if (this.readonly)
80
83
  return;
81
84
  this.value = event.target.value;
85
+ this.touched = true;
86
+ this.dirty = true;
82
87
  const { host, value } = this;
83
88
  this.rInput.emit({ element: host, value });
84
89
  };
@@ -86,11 +91,14 @@ export class RInput {
86
91
  if (this.readonly)
87
92
  return;
88
93
  this.value = event.target.value;
94
+ this.touched = true;
95
+ this.dirty = true;
89
96
  const { host, value } = this;
90
97
  this.rChange.emit({ element: host, value });
91
98
  };
92
99
  this.onBlur = () => {
93
100
  this.host.classList.remove('focused');
101
+ this.touched = true;
94
102
  this.validateFormElement(this.nativeElement);
95
103
  this.rBlur.emit();
96
104
  };
@@ -104,17 +112,25 @@ export class RInput {
104
112
  this.onResetForm = () => {
105
113
  if (this.readonly)
106
114
  return;
115
+ this.isResetting = true;
116
+ this.markAsPristine();
107
117
  this.validityState = null;
108
118
  this.validityMessage = null;
109
- this.setValue(this.initial['value']);
119
+ // Restore initial value without triggering validation
120
+ if (this.nativeElement) {
121
+ this.nativeElement.value = this.initial['value'] || '';
122
+ }
123
+ this.value = this.initial['value'];
110
124
  this.invalid = this.initial['invalid'];
111
125
  this.valid = !this.invalid;
126
+ this.isResetting = false;
112
127
  const { host, value } = this;
113
128
  this.rReset.emit({ element: host, value });
114
129
  };
115
130
  this.onSubmitForm = (event) => {
116
131
  if (this.isNoValidate)
117
132
  return;
133
+ this.touched = true;
118
134
  this.validateFormElement(this.nativeElement);
119
135
  if (this.invalid) {
120
136
  event.preventDefault();
@@ -198,7 +214,10 @@ export class RInput {
198
214
  * Set the current value programmatically (does not fire native input/change automatically).
199
215
  */
200
216
  async setValue(value) {
201
- this.nativeElement.value = value;
217
+ if (this.nativeElement) {
218
+ this.nativeElement.value = value;
219
+ }
220
+ this.value = value;
202
221
  this.validateFormElement(this.nativeElement);
203
222
  }
204
223
  /**
@@ -209,6 +228,25 @@ export class RInput {
209
228
  const { validityState } = this.getValidityStateData(this.nativeElement);
210
229
  return validityState === 'valid';
211
230
  }
231
+ /**
232
+ * Gets the touched state (whether user has interacted with the input)
233
+ */
234
+ async isTouched() {
235
+ return this.touched;
236
+ }
237
+ /**
238
+ * Gets the dirty state (whether value has been changed by user)
239
+ */
240
+ async isDirty() {
241
+ return this.dirty;
242
+ }
243
+ /**
244
+ * Resets touched and dirty states to pristine (untouched/clean)
245
+ */
246
+ async markAsPristine() {
247
+ this.touched = false;
248
+ this.dirty = false;
249
+ }
212
250
  /** Identify wrapping form element */
213
251
  get parentFormEl() {
214
252
  return this.host.closest('form') || document.querySelector(`#${this.form}`) || null;
@@ -224,11 +262,8 @@ export class RInput {
224
262
  get hasValidationError() {
225
263
  return (this.validityState !== 'valid' || this.invalid) && !!(this.validityMessage || this.customErrorMessage);
226
264
  }
227
- get hasValidationSuccess() {
228
- return (this.validityState === 'valid' || this.valid) && !!this.validMessage && this.showValid;
229
- }
230
265
  get hasMessage() {
231
- return this.hasError || this.hasValidationError || this.hasValidationSuccess;
266
+ return this.hasError || this.hasValidationError;
232
267
  }
233
268
  /**
234
269
  * Determine whether this element should be ignored
@@ -272,10 +307,15 @@ export class RInput {
272
307
  this.disconnectFormEventListeners();
273
308
  }
274
309
  handleValueChange() {
275
- this.validateFormElement(this.nativeElement);
310
+ if (!this.isResetting) {
311
+ this.validateFormElement(this.nativeElement);
312
+ }
313
+ }
314
+ handleTypeChange() {
315
+ this.setValue(this.nativeElement.value);
276
316
  }
277
317
  render() {
278
- const { name, placeholder, required, fieldIndicator, maxlength, minlength, min, max, value, disabled, form, pattern, invalid, valid, validMarker, hint, label, internal, tooltip, tooltipIcon, tooltipIconColor, uniqueId, autocomplete, readonly, autofocus } = this;
318
+ const { name, placeholder, required, fieldIndicator, maxlength, minlength, min, max, value, disabled, form, pattern, invalid, valid, hint, label, internal, uniqueId, autocomplete, readonly, autofocus, passwordrules, enterkeyhint, validityMarker } = this;
279
319
  const inputAttrs = {
280
320
  disabled,
281
321
  readonly,
@@ -291,6 +331,9 @@ export class RInput {
291
331
  pattern,
292
332
  autocomplete,
293
333
  autofocus: autofocus || null,
334
+ passwordrules,
335
+ enterkeyhint,
336
+ inputmode: this.inputmode || null,
294
337
  id: uniqueId,
295
338
  'data-value': value,
296
339
  'aria-placeholder': placeholder,
@@ -298,21 +341,26 @@ export class RInput {
298
341
  'aria-required': `${required || false}`,
299
342
  'aria-describedby': this.ariaDescribedBy
300
343
  };
301
- // DEPRECATED: will be removed in November 2025 release.
302
- const tooltipAttrs = tooltip && !disabled ? {
303
- tooltip,
304
- 'tooltip-icon': tooltipIcon,
305
- 'tooltip-icon-color': tooltipIconColor,
344
+ const labelAttr = label ? {
345
+ id: `${uniqueId}-label`,
346
+ fieldIndicator
306
347
  } : {};
307
- const labelAttr = label ? Object.assign({ id: `${uniqueId}-label`, fieldIndicator }, tooltipAttrs) : {};
308
348
  const renderValidationMarker = () => {
309
- if (!validMarker)
310
- return null;
311
- if (!valid && !invalid)
349
+ const icons = {
350
+ valid: 'circled-check',
351
+ invalid: 'circled-exclamation-mark'
352
+ };
353
+ const colors = {
354
+ valid: '--r-status-success-regular',
355
+ invalid: '--r-status-error-regular'
356
+ };
357
+ const shouldShowValidMarker = !!validityMarker && !!valid && !!value;
358
+ const shouldShowInvalidMarker = !!validityMarker && !!invalid;
359
+ if (!shouldShowValidMarker && !shouldShowInvalidMarker)
312
360
  return null;
313
- const iconName = invalid ? 'circled-exclamation-mark' : 'circled-check';
314
- const iconColor = invalid ? '--r-status-error-regular' : '--r-status-success-regular';
315
- return h("r-icon", { class: "r-input--validation-icon", "aria-hidden": true, size: "s", name: iconName, color: iconColor });
361
+ const iconName = shouldShowInvalidMarker ? icons.invalid : icons.valid;
362
+ const iconColor = shouldShowInvalidMarker ? colors.invalid : colors.valid;
363
+ return h("r-icon", { class: "r-input--validation-icon", "aria-hidden": "true", size: "s", name: iconName, color: iconColor });
316
364
  };
317
365
  // Filter out event listener properties based on naming convention.
318
366
  // Pass them to native element.
@@ -322,13 +370,13 @@ export class RInput {
322
370
  }
323
371
  return acc;
324
372
  }, {});
325
- return (h(Host, { onClick: this.handleClick, onKeyup: this.handleKeyup }, h("div", { class: internal ? 'visually-hidden' : 'r-input--label-container' }, h("label", { htmlFor: uniqueId }, label ?
373
+ return (h(Host, { onClick: this.handleClick, onKeyup: this.handleKeyup, "data-touched": `${this.touched}`, "data-dirty": `${this.dirty}` }, h("div", { class: internal ? 'visually-hidden' : 'r-input--label-container' }, h("label", { htmlFor: uniqueId }, label ?
326
374
  h("r-label", Object.assign({ class: "r-input--label" }, labelAttr), label)
327
375
  :
328
376
  h("slot", { name: "label" })), h("slot", { name: "popover" })), hint &&
329
377
  h("r-hint", { id: `${uniqueId}-hint`, role: "note" }, hint), h("div", { class: "r-input--container" }, h("slot", { name: "leading" }), h("input", Object.assign({ class: "r-input--input", type: this.type }, inputAttrs, eventListeners, { ref: el => this.nativeElement = el, value: this.value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus })), h("div", { class: "r-input--trailing" }, this.readonly &&
330
378
  h("r-icon", { class: "r-input--readonly-icon", name: "pen-disabled", size: "s" }), renderValidationMarker(), this.hasTrailingSlot &&
331
- h("slot", { name: "trailing" }))), h("div", { id: `${uniqueId}-message`, "aria-live": !internal ? 'polite' : null, class: !internal ? 'r-input--message' : 'visually-hidden' }, h("slot", { name: "message" }, this.hasMessage && h("r-hint", { variant: valid ? 'success' : 'error' }, this.hasError && this.error, this.hasValidationError && (this.customErrorMessage || this.validityMessage), this.hasValidationSuccess && this.validMessage)))));
379
+ h("slot", { name: "trailing" }))), h("div", { id: `${uniqueId}-message`, "aria-live": !internal ? 'polite' : null, class: !internal ? 'r-input--message' : 'visually-hidden' }, h("slot", { name: "message" }, this.hasMessage && h("r-hint", { variant: valid ? 'success' : 'error' }, this.hasError && this.error, this.hasValidationError && (this.customErrorMessage || this.validityMessage))))));
332
380
  }
333
381
  static get is() { return "r-input"; }
334
382
  static get encapsulation() { return "shadow"; }
@@ -523,122 +571,6 @@ export class RInput {
523
571
  "setter": false,
524
572
  "reflect": true
525
573
  },
526
- "optional": {
527
- "type": "boolean",
528
- "attribute": "optional",
529
- "mutable": false,
530
- "complexType": {
531
- "original": "boolean",
532
- "resolved": "boolean",
533
- "references": {}
534
- },
535
- "required": false,
536
- "optional": true,
537
- "docs": {
538
- "tags": [{
539
- "name": "deprecated",
540
- "text": "Use `fieldIndicator` instead. Will be removed November 2025.\nBoolean flag to render an \u201Coptional\u201D marker."
541
- }],
542
- "text": ""
543
- },
544
- "getter": false,
545
- "setter": false,
546
- "reflect": false
547
- },
548
- "optionalText": {
549
- "type": "string",
550
- "attribute": "optional-text",
551
- "mutable": false,
552
- "complexType": {
553
- "original": "string",
554
- "resolved": "string",
555
- "references": {}
556
- },
557
- "required": false,
558
- "optional": true,
559
- "docs": {
560
- "tags": [{
561
- "name": "deprecated",
562
- "text": "Use `fieldIndicator` instead. Will be removed November 2025.\nCustom text for optional marker."
563
- }],
564
- "text": ""
565
- },
566
- "getter": false,
567
- "setter": false,
568
- "reflect": false
569
- },
570
- "tooltip": {
571
- "type": "string",
572
- "attribute": "tooltip",
573
- "mutable": false,
574
- "complexType": {
575
- "original": "string",
576
- "resolved": "string",
577
- "references": {}
578
- },
579
- "required": false,
580
- "optional": true,
581
- "docs": {
582
- "tags": [{
583
- "name": "deprecated",
584
- "text": "Use the `popover` slot instead. Will be removed November 2025.\nLabel tooltip text content."
585
- }],
586
- "text": ""
587
- },
588
- "getter": false,
589
- "setter": false,
590
- "reflect": false
591
- },
592
- "tooltipIcon": {
593
- "type": "string",
594
- "attribute": "tooltip-icon",
595
- "mutable": false,
596
- "complexType": {
597
- "original": "IconName",
598
- "resolved": "string",
599
- "references": {
600
- "IconName": {
601
- "location": "import",
602
- "path": "../icon/exports",
603
- "id": "src/components/icon/exports.ts::IconName"
604
- }
605
- }
606
- },
607
- "required": false,
608
- "optional": true,
609
- "docs": {
610
- "tags": [{
611
- "name": "deprecated",
612
- "text": "Use the `popover` slot instead. Will be removed November 2025.\nIcon name used as tooltip trigger."
613
- }],
614
- "text": ""
615
- },
616
- "getter": false,
617
- "setter": false,
618
- "reflect": false
619
- },
620
- "tooltipIconColor": {
621
- "type": "string",
622
- "attribute": "tooltip-icon-color",
623
- "mutable": false,
624
- "complexType": {
625
- "original": "string",
626
- "resolved": "string",
627
- "references": {}
628
- },
629
- "required": false,
630
- "optional": true,
631
- "docs": {
632
- "tags": [{
633
- "name": "deprecated",
634
- "text": "Use the `popover` slot instead. Will be removed November 2025.\nColor token for tooltip trigger icon."
635
- }],
636
- "text": ""
637
- },
638
- "getter": false,
639
- "setter": false,
640
- "reflect": false
641
- },
642
574
  "hint": {
643
575
  "type": "string",
644
576
  "attribute": "hint",
@@ -658,107 +590,6 @@ export class RInput {
658
590
  "setter": false,
659
591
  "reflect": false
660
592
  },
661
- "icon": {
662
- "type": "string",
663
- "attribute": "icon",
664
- "mutable": false,
665
- "complexType": {
666
- "original": "IconName",
667
- "resolved": "string",
668
- "references": {
669
- "IconName": {
670
- "location": "import",
671
- "path": "../icon/exports",
672
- "id": "src/components/icon/exports.ts::IconName"
673
- }
674
- }
675
- },
676
- "required": false,
677
- "optional": true,
678
- "docs": {
679
- "tags": [{
680
- "name": "deprecated",
681
- "text": "Will be removed November 2025.\nLegacy single icon (prefer `leading` / `trailing` slots)."
682
- }],
683
- "text": ""
684
- },
685
- "getter": false,
686
- "setter": false,
687
- "reflect": true
688
- },
689
- "iconColor": {
690
- "type": "string",
691
- "attribute": "icon-color",
692
- "mutable": false,
693
- "complexType": {
694
- "original": "string",
695
- "resolved": "string",
696
- "references": {}
697
- },
698
- "required": false,
699
- "optional": true,
700
- "docs": {
701
- "tags": [{
702
- "name": "deprecated",
703
- "text": "Will be removed November 2025.\nColor for legacy icon."
704
- }],
705
- "text": ""
706
- },
707
- "getter": false,
708
- "setter": false,
709
- "reflect": false
710
- },
711
- "iconPosition": {
712
- "type": "string",
713
- "attribute": "icon-position",
714
- "mutable": false,
715
- "complexType": {
716
- "original": "IconPosition",
717
- "resolved": "\"end\" | \"start\"",
718
- "references": {
719
- "IconPosition": {
720
- "location": "import",
721
- "path": "../icon/exports",
722
- "id": "src/components/icon/exports.ts::IconPosition"
723
- }
724
- }
725
- },
726
- "required": false,
727
- "optional": false,
728
- "docs": {
729
- "tags": [{
730
- "name": "deprecated",
731
- "text": "Will be removed November 2025.\nPosition of legacy icon: `start` | `end`."
732
- }],
733
- "text": ""
734
- },
735
- "getter": false,
736
- "setter": false,
737
- "reflect": false,
738
- "defaultValue": "'start'"
739
- },
740
- "iconSubmit": {
741
- "type": "boolean",
742
- "attribute": "icon-submit",
743
- "mutable": false,
744
- "complexType": {
745
- "original": "boolean",
746
- "resolved": "boolean",
747
- "references": {}
748
- },
749
- "required": false,
750
- "optional": true,
751
- "docs": {
752
- "tags": [{
753
- "name": "deprecated",
754
- "text": "Will be removed November 2025.\nTreat legacy icon as submit trigger."
755
- }],
756
- "text": ""
757
- },
758
- "getter": false,
759
- "setter": false,
760
- "reflect": false
761
- },
762
593
  "fullWidth": {
763
594
  "type": "boolean",
764
595
  "attribute": "full-width",
@@ -778,28 +609,6 @@ export class RInput {
778
609
  "setter": false,
779
610
  "reflect": true
780
611
  },
781
- "showValid": {
782
- "type": "boolean",
783
- "attribute": "show-valid",
784
- "mutable": false,
785
- "complexType": {
786
- "original": "boolean",
787
- "resolved": "boolean",
788
- "references": {}
789
- },
790
- "required": false,
791
- "optional": true,
792
- "docs": {
793
- "tags": [{
794
- "name": "deprecated",
795
- "text": "Will be removed November 2025.\nControls visibility of success validation marker."
796
- }],
797
- "text": ""
798
- },
799
- "getter": false,
800
- "setter": false,
801
- "reflect": true
802
- },
803
612
  "valid": {
804
613
  "type": "boolean",
805
614
  "attribute": "valid",
@@ -819,80 +628,6 @@ export class RInput {
819
628
  "setter": false,
820
629
  "reflect": true
821
630
  },
822
- "validMarker": {
823
- "type": "boolean",
824
- "attribute": "valid-marker",
825
- "mutable": false,
826
- "complexType": {
827
- "original": "boolean",
828
- "resolved": "boolean",
829
- "references": {}
830
- },
831
- "required": false,
832
- "optional": false,
833
- "docs": {
834
- "tags": [{
835
- "name": "deprecated",
836
- "text": "Will be removed November 2025.\nLegacy boolean to show a validation marker icon."
837
- }],
838
- "text": ""
839
- },
840
- "getter": false,
841
- "setter": false,
842
- "reflect": true,
843
- "defaultValue": "false"
844
- },
845
- "validMarkerIcon": {
846
- "type": "string",
847
- "attribute": "valid-marker-icon",
848
- "mutable": false,
849
- "complexType": {
850
- "original": "IconName",
851
- "resolved": "string",
852
- "references": {
853
- "IconName": {
854
- "location": "import",
855
- "path": "../icon/exports",
856
- "id": "src/components/icon/exports.ts::IconName"
857
- }
858
- }
859
- },
860
- "required": false,
861
- "optional": false,
862
- "docs": {
863
- "tags": [{
864
- "name": "deprecated",
865
- "text": "Will be removed November 2025.\nIcon name used when `validMarker` is active and state is valid."
866
- }],
867
- "text": ""
868
- },
869
- "getter": false,
870
- "setter": false,
871
- "reflect": true,
872
- "defaultValue": "'circled-check'"
873
- },
874
- "validMessage": {
875
- "type": "string",
876
- "attribute": "valid-message",
877
- "mutable": false,
878
- "complexType": {
879
- "original": "string",
880
- "resolved": "string",
881
- "references": {}
882
- },
883
- "required": false,
884
- "optional": true,
885
- "docs": {
886
- "tags": [{
887
- "name": "deprecated",
888
- "text": "Will be removed November 2025.\nCustom success message when field is valid."
889
- }],
890
- "text": ""
891
- },
892
- "getter": false,
893
- "setter": false,
894
- "reflect": false
895
- },
896
631
  "invalid": {
897
632
  "type": "boolean",
898
633
  "attribute": "invalid",
@@ -1298,6 +1033,50 @@ export class RInput {
1298
1033
  "setter": false,
1299
1034
  "reflect": false
1300
1035
  },
1036
+ "enterkeyhint": {
1037
+ "type": "string",
1038
+ "attribute": "enterkeyhint",
1039
+ "mutable": false,
1040
+ "complexType": {
1041
+ "original": "EnterKeyHint",
1042
+ "resolved": "\"done\" | \"enter\" | \"go\" | \"next\" | \"previous\" | \"search\" | \"send\"",
1043
+ "references": {
1044
+ "EnterKeyHint": {
1045
+ "location": "import",
1046
+ "path": "./exports",
1047
+ "id": "src/components/input/exports.ts::EnterKeyHint"
1048
+ }
1049
+ }
1050
+ },
1051
+ "required": false,
1052
+ "optional": true,
1053
+ "docs": {
1054
+ "tags": [],
1055
+ "text": "Hint for the action label/icon on the virtual keyboard's enter key.\nUse cases:\n- `enter`: Default, generic newline/submit action\n- `done`: Finishes current input session (e.g., last field in a form)\n- `go`: Navigates to URL input target (e.g., URL bar)\n- `next`: Advances to next input field in a sequence\n- `previous`: Goes back to previous input field\n- `search`: Submits a search query\n- `send`: Sends a message (e.g., chat, email)"
1056
+ },
1057
+ "getter": false,
1058
+ "setter": false,
1059
+ "reflect": false
1060
+ },
1061
+ "passwordrules": {
1062
+ "type": "string",
1063
+ "attribute": "passwordrules",
1064
+ "mutable": false,
1065
+ "complexType": {
1066
+ "original": "string",
1067
+ "resolved": "string",
1068
+ "references": {}
1069
+ },
1070
+ "required": false,
1071
+ "optional": true,
1072
+ "docs": {
1073
+ "tags": [],
1074
+ "text": "Safari-specific password rules for strong password generation (password inputs only).\nFormat: \"minlength: X; required: lower; required: upper; required: digit; required: special;\"\nThis attribute is Safari-specific and will be ignored by other browsers.\nSee: https://developer.apple.com/documentation/security/password_autofill/customizing_password_autofill_rules"
1075
+ },
1076
+ "getter": false,
1077
+ "setter": false,
1078
+ "reflect": false
1079
+ },
1301
1080
  "autofocus": {
1302
1081
  "type": "boolean",
1303
1082
  "attribute": "autofocus",
@@ -1335,35 +1114,64 @@ export class RInput {
1335
1114
  "getter": false,
1336
1115
  "setter": false,
1337
1116
  "reflect": true
1117
+ },
1118
+ "inputmode": {
1119
+ "type": "string",
1120
+ "attribute": "inputmode",
1121
+ "mutable": false,
1122
+ "complexType": {
1123
+ "original": "InputMode",
1124
+ "resolved": "\"decimal\" | \"email\" | \"none\" | \"numeric\" | \"search\" | \"tel\" | \"text\" | \"url\"",
1125
+ "references": {
1126
+ "InputMode": {
1127
+ "location": "import",
1128
+ "path": "./exports",
1129
+ "id": "src/components/input/exports.ts::InputMode"
1130
+ }
1131
+ }
1132
+ },
1133
+ "required": false,
1134
+ "optional": true,
1135
+ "docs": {
1136
+ "tags": [],
1137
+ "text": "Hint to the browser about which keyboard to display on mobile devices."
1138
+ },
1139
+ "getter": false,
1140
+ "setter": false,
1141
+ "reflect": false
1142
+ },
1143
+ "validityMarker": {
1144
+ "type": "boolean",
1145
+ "attribute": "validity-marker",
1146
+ "mutable": false,
1147
+ "complexType": {
1148
+ "original": "boolean",
1149
+ "resolved": "boolean",
1150
+ "references": {}
1151
+ },
1152
+ "required": false,
1153
+ "optional": false,
1154
+ "docs": {
1155
+ "tags": [],
1156
+ "text": "When `true` field renders valid/invalid marker within."
1157
+ },
1158
+ "getter": false,
1159
+ "setter": false,
1160
+ "reflect": true,
1161
+ "defaultValue": "true"
1338
1162
  }
1339
1163
  };
1340
1164
  }
1341
1165
  static get states() {
1342
1166
  return {
1343
1167
  "validityState": {},
1344
- "validityMessage": {}
1168
+ "validityMessage": {},
1169
+ "touched": {},
1170
+ "dirty": {}
1345
1171
  };
1346
1172
  }
1347
1173
  static get events() {
1348
1174
  return [{
1349
- "method": "rClickIcon",
1350
- "name": "rClickIcon",
1351
- "bubbles": true,
1352
- "cancelable": true,
1353
- "composed": true,
1354
- "docs": {
1355
- "tags": [{
1356
- "name": "deprecated",
1357
- "text": "Will be removed November 2025.\nEmitted when legacy icon is clicked."
1358
- }],
1359
- "text": ""
1360
- },
1361
- "complexType": {
1362
- "original": "any",
1363
- "resolved": "any",
1364
- "references": {}
1365
- }
1366
- }, {
1367
1175
  "method": "rValidate",
1368
1176
  "name": "rValidate",
1369
1177
  "bubbles": true,
@@ -1652,6 +1460,57 @@ export class RInput {
1652
1460
  "text": "A boolean indicating whether the input is valid."
1653
1461
  }]
1654
1462
  }
1463
+ },
1464
+ "isTouched": {
1465
+ "complexType": {
1466
+ "signature": "() => Promise<boolean>",
1467
+ "parameters": [],
1468
+ "references": {
1469
+ "Promise": {
1470
+ "location": "global",
1471
+ "id": "global::Promise"
1472
+ }
1473
+ },
1474
+ "return": "Promise<boolean>"
1475
+ },
1476
+ "docs": {
1477
+ "text": "Gets the touched state (whether user has interacted with the input)",
1478
+ "tags": []
1479
+ }
1480
+ },
1481
+ "isDirty": {
1482
+ "complexType": {
1483
+ "signature": "() => Promise<boolean>",
1484
+ "parameters": [],
1485
+ "references": {
1486
+ "Promise": {
1487
+ "location": "global",
1488
+ "id": "global::Promise"
1489
+ }
1490
+ },
1491
+ "return": "Promise<boolean>"
1492
+ },
1493
+ "docs": {
1494
+ "text": "Gets the dirty state (whether value has been changed by user)",
1495
+ "tags": []
1496
+ }
1497
+ },
1498
+ "markAsPristine": {
1499
+ "complexType": {
1500
+ "signature": "() => Promise<void>",
1501
+ "parameters": [],
1502
+ "references": {
1503
+ "Promise": {
1504
+ "location": "global",
1505
+ "id": "global::Promise"
1506
+ }
1507
+ },
1508
+ "return": "Promise<void>"
1509
+ },
1510
+ "docs": {
1511
+ "text": "Resets touched and dirty states to pristine (untouched/clean)",
1512
+ "tags": []
1513
+ }
1655
1514
  }
1656
1515
  };
1657
1516
  }
@@ -1660,6 +1519,9 @@ export class RInput {
1660
1519
  return [{
1661
1520
  "propName": "value",
1662
1521
  "methodName": "handleValueChange"
1522
+ }, {
1523
+ "propName": "type",
1524
+ "methodName": "handleTypeChange"
1663
1525
  }];
1664
1526
  }
1665
1527
  }