@ionic/core 8.4.4-dev.11741630999.189d7fc2 → 8.4.4-dev.11741648084.118e26ac

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 (317) hide show
  1. package/components/checkbox.js +37 -5
  2. package/components/ion-item-divider.js +2 -2
  3. package/components/ion-item-group.js +1 -1
  4. package/components/ion-item-option.js +2 -2
  5. package/components/ion-item-options.js +1 -1
  6. package/components/ion-item-sliding.js +1 -1
  7. package/components/ion-loading.js +2 -2
  8. package/components/ion-menu-button.js +2 -2
  9. package/components/ion-menu-toggle.js +2 -2
  10. package/components/ion-menu.js +2 -2
  11. package/components/ion-nav-link.js +1 -1
  12. package/components/ion-nav.js +1 -1
  13. package/components/ion-note.js +2 -2
  14. package/components/ion-picker-legacy.js +2 -2
  15. package/components/ion-progress-bar.js +1 -1
  16. package/components/ion-range.js +3 -3
  17. package/components/ion-refresher-content.js +1 -1
  18. package/components/ion-refresher.js +1 -1
  19. package/components/ion-reorder-group.js +1 -1
  20. package/components/ion-reorder.js +1 -1
  21. package/components/ion-router-link.js +2 -2
  22. package/components/ion-router-outlet.js +1 -1
  23. package/components/ion-row.js +1 -1
  24. package/components/ion-searchbar.js +4 -4
  25. package/components/ion-segment-button.js +2 -2
  26. package/components/ion-segment-content.js +1 -1
  27. package/components/ion-segment-view.js +2 -2
  28. package/components/ion-segment.js +2 -2
  29. package/components/ion-select-option.js +1 -1
  30. package/components/ion-select.js +47 -5
  31. package/components/ion-skeleton-text.js +2 -2
  32. package/components/ion-split-pane.js +2 -2
  33. package/components/ion-tab-bar.js +2 -2
  34. package/components/ion-tab-button.js +2 -2
  35. package/components/ion-tab.js +2 -2
  36. package/components/ion-tabs.js +1 -1
  37. package/components/ion-text.js +2 -2
  38. package/components/ion-textarea.js +2 -2
  39. package/components/ion-thumbnail.js +1 -1
  40. package/components/ion-toast.js +2 -2
  41. package/components/ion-toggle.js +3 -3
  42. package/components/label.js +2 -2
  43. package/components/list-header.js +2 -2
  44. package/components/modal.js +15 -7
  45. package/components/picker-column-option.js +2 -2
  46. package/components/picker-column2.js +2 -2
  47. package/components/popover.js +2 -2
  48. package/components/radio-group.js +39 -2
  49. package/components/radio.js +3 -3
  50. package/components/ripple-effect.js +1 -1
  51. package/components/select-modal.js +1 -1
  52. package/components/select-popover.js +1 -1
  53. package/components/spinner.js +1 -1
  54. package/components/title.js +2 -2
  55. package/components/toolbar.js +2 -2
  56. package/dist/cjs/ion-app_8.cjs.entry.js +5 -5
  57. package/dist/cjs/ion-avatar_3.cjs.entry.js +1 -1
  58. package/dist/cjs/ion-checkbox.cjs.entry.js +35 -5
  59. package/dist/cjs/ion-col_3.cjs.entry.js +1 -1
  60. package/dist/cjs/ion-datetime_3.cjs.entry.js +4 -4
  61. package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
  62. package/dist/cjs/ion-item_8.cjs.entry.js +11 -11
  63. package/dist/cjs/ion-loading.cjs.entry.js +2 -2
  64. package/dist/cjs/ion-menu_3.cjs.entry.js +6 -6
  65. package/dist/cjs/ion-modal.cjs.entry.js +15 -7
  66. package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
  67. package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
  68. package/dist/cjs/ion-popover.cjs.entry.js +2 -2
  69. package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
  70. package/dist/cjs/ion-radio_2.cjs.entry.js +39 -4
  71. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  72. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  73. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  74. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  75. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  76. package/dist/cjs/ion-searchbar.cjs.entry.js +4 -4
  77. package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
  78. package/dist/cjs/ion-segment-view.cjs.entry.js +2 -2
  79. package/dist/cjs/ion-segment_2.cjs.entry.js +4 -4
  80. package/dist/cjs/ion-select-modal.cjs.entry.js +1 -1
  81. package/dist/cjs/ion-select_3.cjs.entry.js +47 -7
  82. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  83. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  84. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  85. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  86. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  87. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  88. package/dist/cjs/ion-toast.cjs.entry.js +2 -2
  89. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  90. package/dist/cjs/ionic.cjs.js +1 -1
  91. package/dist/cjs/loader.cjs.js +1 -1
  92. package/dist/collection/components/checkbox/checkbox.ios.css +52 -15
  93. package/dist/collection/components/checkbox/checkbox.js +70 -3
  94. package/dist/collection/components/checkbox/checkbox.md.css +52 -15
  95. package/dist/collection/components/item-divider/item-divider.js +2 -2
  96. package/dist/collection/components/item-group/item-group.js +1 -1
  97. package/dist/collection/components/item-option/item-option.js +2 -2
  98. package/dist/collection/components/item-options/item-options.js +1 -1
  99. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  100. package/dist/collection/components/label/label.js +2 -2
  101. package/dist/collection/components/list-header/list-header.js +2 -2
  102. package/dist/collection/components/loading/loading.js +2 -2
  103. package/dist/collection/components/menu/menu.js +2 -2
  104. package/dist/collection/components/menu-button/menu-button.js +2 -2
  105. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  106. package/dist/collection/components/modal/gestures/sheet.js +11 -3
  107. package/dist/collection/components/modal/modal.js +5 -5
  108. package/dist/collection/components/nav/nav.js +1 -1
  109. package/dist/collection/components/nav-link/nav-link.js +1 -1
  110. package/dist/collection/components/note/note.js +2 -2
  111. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
  112. package/dist/collection/components/picker-legacy/picker.js +2 -2
  113. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
  114. package/dist/collection/components/popover/popover.js +2 -2
  115. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  116. package/dist/collection/components/radio/radio.js +3 -3
  117. package/dist/collection/components/radio-group/radio-group.ios.css +205 -0
  118. package/dist/collection/components/radio-group/radio-group.js +72 -1
  119. package/dist/collection/components/radio-group/radio-group.md.css +205 -0
  120. package/dist/collection/components/range/range.js +3 -3
  121. package/dist/collection/components/refresher/refresher.js +1 -1
  122. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  123. package/dist/collection/components/reorder/reorder.js +1 -1
  124. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  125. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  126. package/dist/collection/components/router-link/router-link.js +2 -2
  127. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  128. package/dist/collection/components/row/row.js +1 -1
  129. package/dist/collection/components/searchbar/searchbar.js +4 -4
  130. package/dist/collection/components/segment/segment.js +2 -2
  131. package/dist/collection/components/segment-button/segment-button.js +2 -2
  132. package/dist/collection/components/segment-content/segment-content.js +1 -1
  133. package/dist/collection/components/segment-view/segment-view.js +2 -2
  134. package/dist/collection/components/select/select.ios.css +59 -0
  135. package/dist/collection/components/select/select.js +80 -3
  136. package/dist/collection/components/select/select.md.css +61 -0
  137. package/dist/collection/components/select-modal/select-modal.js +1 -1
  138. package/dist/collection/components/select-option/select-option.js +1 -1
  139. package/dist/collection/components/select-popover/select-popover.js +1 -1
  140. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  141. package/dist/collection/components/spinner/spinner.js +1 -1
  142. package/dist/collection/components/split-pane/split-pane.js +2 -2
  143. package/dist/collection/components/tab/tab.js +2 -2
  144. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  145. package/dist/collection/components/tab-button/tab-button.js +2 -2
  146. package/dist/collection/components/tabs/tabs.js +1 -1
  147. package/dist/collection/components/text/text.js +2 -2
  148. package/dist/collection/components/textarea/textarea.js +2 -2
  149. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  150. package/dist/collection/components/title/title.js +2 -2
  151. package/dist/collection/components/toast/toast.js +2 -2
  152. package/dist/collection/components/toggle/toggle.js +3 -3
  153. package/dist/collection/components/toolbar/toolbar.js +2 -2
  154. package/dist/docs.json +194 -2
  155. package/dist/esm/ion-app_8.entry.js +5 -5
  156. package/dist/esm/ion-avatar_3.entry.js +1 -1
  157. package/dist/esm/ion-checkbox.entry.js +35 -5
  158. package/dist/esm/ion-col_3.entry.js +1 -1
  159. package/dist/esm/ion-datetime_3.entry.js +4 -4
  160. package/dist/esm/ion-item-option_3.entry.js +4 -4
  161. package/dist/esm/ion-item_8.entry.js +11 -11
  162. package/dist/esm/ion-loading.entry.js +2 -2
  163. package/dist/esm/ion-menu_3.entry.js +6 -6
  164. package/dist/esm/ion-modal.entry.js +15 -7
  165. package/dist/esm/ion-nav_2.entry.js +2 -2
  166. package/dist/esm/ion-picker-column-option.entry.js +2 -2
  167. package/dist/esm/ion-popover.entry.js +2 -2
  168. package/dist/esm/ion-progress-bar.entry.js +1 -1
  169. package/dist/esm/ion-radio_2.entry.js +39 -4
  170. package/dist/esm/ion-range.entry.js +3 -3
  171. package/dist/esm/ion-refresher_2.entry.js +2 -2
  172. package/dist/esm/ion-reorder_2.entry.js +2 -2
  173. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  174. package/dist/esm/ion-route_4.entry.js +2 -2
  175. package/dist/esm/ion-searchbar.entry.js +4 -4
  176. package/dist/esm/ion-segment-content.entry.js +1 -1
  177. package/dist/esm/ion-segment-view.entry.js +2 -2
  178. package/dist/esm/ion-segment_2.entry.js +4 -4
  179. package/dist/esm/ion-select-modal.entry.js +1 -1
  180. package/dist/esm/ion-select_3.entry.js +47 -7
  181. package/dist/esm/ion-spinner.entry.js +1 -1
  182. package/dist/esm/ion-split-pane.entry.js +2 -2
  183. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  184. package/dist/esm/ion-tab_2.entry.js +3 -3
  185. package/dist/esm/ion-text.entry.js +2 -2
  186. package/dist/esm/ion-textarea.entry.js +2 -2
  187. package/dist/esm/ion-toast.entry.js +2 -2
  188. package/dist/esm/ion-toggle.entry.js +3 -3
  189. package/dist/esm/ionic.js +1 -1
  190. package/dist/esm/loader.js +1 -1
  191. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  192. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  193. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  194. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  195. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  196. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  197. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  198. package/dist/esm-es5/ion-loading.entry.js +1 -1
  199. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  200. package/dist/esm-es5/ion-modal.entry.js +1 -1
  201. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  202. package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
  203. package/dist/esm-es5/ion-popover.entry.js +1 -1
  204. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  205. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  206. package/dist/esm-es5/ion-range.entry.js +1 -1
  207. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  208. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  209. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  210. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  211. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  212. package/dist/esm-es5/ion-segment-content.entry.js +1 -1
  213. package/dist/esm-es5/ion-segment-view.entry.js +1 -1
  214. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  215. package/dist/esm-es5/ion-select-modal.entry.js +1 -1
  216. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  217. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  218. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  219. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  220. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  221. package/dist/esm-es5/ion-text.entry.js +1 -1
  222. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  223. package/dist/esm-es5/ion-toast.entry.js +1 -1
  224. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  225. package/dist/esm-es5/ionic.js +1 -1
  226. package/dist/esm-es5/loader.js +1 -1
  227. package/dist/html.html-data.json +25 -1
  228. package/dist/ionic/ionic.esm.js +1 -1
  229. package/dist/ionic/{p-026517fb.entry.js → p-020df11a.entry.js} +1 -1
  230. package/dist/ionic/{p-dd14d988.entry.js → p-0434c94c.entry.js} +1 -1
  231. package/dist/ionic/p-0ab8caf8.system.entry.js +4 -0
  232. package/dist/ionic/{p-136ff13e.entry.js → p-0eab6979.entry.js} +1 -1
  233. package/dist/ionic/{p-ab2f4b05.entry.js → p-0f138cf3.entry.js} +1 -1
  234. package/dist/ionic/{p-d9ef8526.system.entry.js → p-166a794f.system.entry.js} +1 -1
  235. package/dist/ionic/{p-3fe95571.system.entry.js → p-1cf593cf.system.entry.js} +1 -1
  236. package/dist/ionic/p-21780245.entry.js +4 -0
  237. package/dist/ionic/p-221fbdf5.entry.js +4 -0
  238. package/dist/ionic/{p-d782ad8d.entry.js → p-2840743b.entry.js} +1 -1
  239. package/dist/ionic/{p-71e1d84d.entry.js → p-29cccf08.entry.js} +1 -1
  240. package/dist/ionic/{p-d25142f7.entry.js → p-2f429536.entry.js} +1 -1
  241. package/dist/ionic/{p-166f4ba0.entry.js → p-3b872754.entry.js} +1 -1
  242. package/dist/ionic/p-3e6be709.entry.js +4 -0
  243. package/dist/ionic/p-41d7ca3c.entry.js +4 -0
  244. package/dist/ionic/{p-323984f9.system.entry.js → p-4200e056.system.entry.js} +1 -1
  245. package/dist/ionic/{p-56a8aa85.entry.js → p-43bfbfd7.entry.js} +1 -1
  246. package/dist/ionic/{p-7112ab06.system.entry.js → p-47026941.system.entry.js} +1 -1
  247. package/dist/ionic/p-48e9eedb.entry.js +4 -0
  248. package/dist/ionic/{p-2cb33c6c.system.entry.js → p-506f2664.system.entry.js} +2 -2
  249. package/dist/ionic/p-541b5191.entry.js +4 -0
  250. package/dist/ionic/{p-3c29cb9d.entry.js → p-5c364a5b.entry.js} +1 -1
  251. package/dist/ionic/{p-424eb140.system.entry.js → p-5cc9314d.system.entry.js} +1 -1
  252. package/dist/ionic/{p-5d3dc32b.system.entry.js → p-5f10138c.system.entry.js} +1 -1
  253. package/dist/ionic/{p-98ce0c01.system.entry.js → p-5f7a9125.system.entry.js} +2 -2
  254. package/dist/ionic/p-62151078.system.entry.js +4 -0
  255. package/dist/ionic/{p-c42a4dad.system.entry.js → p-623b4fa6.system.entry.js} +1 -1
  256. package/dist/ionic/{p-37a21d70.entry.js → p-62d2e17d.entry.js} +1 -1
  257. package/dist/ionic/{p-e4c1fd74.system.entry.js → p-6321783a.system.entry.js} +1 -1
  258. package/dist/ionic/{p-b6208867.system.entry.js → p-66425a02.system.entry.js} +1 -1
  259. package/dist/ionic/{p-e84da6cb.system.entry.js → p-6703c724.system.entry.js} +1 -1
  260. package/dist/ionic/{p-fd2c0aa6.entry.js → p-6f6dd24f.entry.js} +1 -1
  261. package/dist/ionic/{p-57cca929.system.entry.js → p-717520d6.system.entry.js} +1 -1
  262. package/dist/ionic/{p-16799667.system.entry.js → p-7af3d1e8.system.entry.js} +1 -1
  263. package/dist/ionic/{p-6c85db7e.system.entry.js → p-7ef62ef9.system.entry.js} +2 -2
  264. package/dist/ionic/{p-712b57f9.system.entry.js → p-826c4d67.system.entry.js} +1 -1
  265. package/dist/ionic/{p-e18fc89c.entry.js → p-82afe775.entry.js} +1 -1
  266. package/dist/ionic/{p-8c0d81a9.entry.js → p-85d6d07c.entry.js} +1 -1
  267. package/dist/ionic/{p-c2583512.entry.js → p-8eee812a.entry.js} +1 -1
  268. package/dist/ionic/{p-badd3610.entry.js → p-8fa80de0.entry.js} +1 -1
  269. package/dist/ionic/{p-5bf080b2.entry.js → p-95a11fc4.entry.js} +1 -1
  270. package/dist/ionic/{p-8c42a26f.system.entry.js → p-986a98d9.system.entry.js} +1 -1
  271. package/dist/ionic/{p-5996d3ad.system.entry.js → p-98aefaa1.system.entry.js} +1 -1
  272. package/dist/ionic/{p-f670529f.system.entry.js → p-99b4160f.system.entry.js} +1 -1
  273. package/dist/ionic/p-9a950d3c.entry.js +4 -0
  274. package/dist/ionic/{p-48e13807.system.entry.js → p-9aaaff17.system.entry.js} +1 -1
  275. package/dist/ionic/{p-d7fef52e.system.entry.js → p-a4e7eaf6.system.entry.js} +1 -1
  276. package/dist/ionic/{p-b6849d30.system.entry.js → p-aae5907a.system.entry.js} +1 -1
  277. package/dist/ionic/{p-6f36e4c8.system.entry.js → p-afba4c00.system.entry.js} +1 -1
  278. package/dist/ionic/{p-e2f893bd.entry.js → p-b1dbfc12.entry.js} +1 -1
  279. package/dist/ionic/{p-91b944fa.entry.js → p-bd1c99cb.entry.js} +1 -1
  280. package/dist/ionic/{p-2cf956b8.entry.js → p-c43872df.entry.js} +1 -1
  281. package/dist/ionic/p-c4f9367a.entry.js +4 -0
  282. package/dist/ionic/{p-6347c733.system.entry.js → p-c52ca485.system.entry.js} +1 -1
  283. package/dist/ionic/{p-d4896d36.system.entry.js → p-cad0b874.system.entry.js} +1 -1
  284. package/dist/ionic/{p-193d447d.system.entry.js → p-d9162cf7.system.entry.js} +1 -1
  285. package/dist/ionic/{p-3c3d353b.entry.js → p-dbe534f5.entry.js} +1 -1
  286. package/dist/ionic/{p-42a9bb35.entry.js → p-dde5afee.entry.js} +1 -1
  287. package/dist/ionic/{p-d6b60875.entry.js → p-de0b8503.entry.js} +1 -1
  288. package/dist/ionic/p-e3bd1070.entry.js +4 -0
  289. package/dist/ionic/{p-85b1ffae.entry.js → p-ebceb0ac.entry.js} +1 -1
  290. package/dist/ionic/{p-a873feda.system.entry.js → p-ec92cc52.system.entry.js} +1 -1
  291. package/dist/ionic/{p-447d4981.system.entry.js → p-ee70a913.system.entry.js} +1 -1
  292. package/dist/ionic/{p-73dc4950.entry.js → p-f2a72b24.entry.js} +1 -1
  293. package/dist/ionic/p-f4f255cb.system.js +1 -1
  294. package/dist/ionic/{p-c3a51c19.system.entry.js → p-f5f52b6d.system.entry.js} +1 -1
  295. package/dist/ionic/{p-4eed0eb2.system.entry.js → p-fa5a45cd.system.entry.js} +1 -1
  296. package/dist/ionic/{p-3b8b35c7.system.entry.js → p-fb048d4d.system.entry.js} +1 -1
  297. package/dist/ionic/p-fe00ac05.system.entry.js +4 -0
  298. package/dist/types/components/checkbox/checkbox.d.ts +19 -0
  299. package/dist/types/components/modal/modal.d.ts +6 -3
  300. package/dist/types/components/radio-group/radio-group.d.ts +15 -0
  301. package/dist/types/components/select/select.d.ts +23 -0
  302. package/dist/types/components.d.ts +50 -2
  303. package/hydrate/index.js +231 -106
  304. package/hydrate/index.mjs +231 -106
  305. package/package.json +1 -1
  306. package/dist/ionic/p-14be4015.entry.js +0 -4
  307. package/dist/ionic/p-30ec5574.entry.js +0 -4
  308. package/dist/ionic/p-37264dcc.entry.js +0 -4
  309. package/dist/ionic/p-49b2653a.system.entry.js +0 -4
  310. package/dist/ionic/p-59884cc7.system.entry.js +0 -4
  311. package/dist/ionic/p-7896a440.system.entry.js +0 -4
  312. package/dist/ionic/p-8b367303.entry.js +0 -4
  313. package/dist/ionic/p-ba61193a.entry.js +0 -4
  314. package/dist/ionic/p-ebb85488.entry.js +0 -4
  315. package/dist/ionic/p-ec197876.entry.js +0 -4
  316. package/dist/ionic/p-efcb7383.entry.js +0 -4
  317. package/dist/ionic/p-fc9149bd.entry.js +0 -4
@@ -0,0 +1,205 @@
1
+ /**
2
+ * Convert a font size to a dynamic font size.
3
+ * Fonts that participate in Dynamic Type should use
4
+ * dynamic font sizes.
5
+ * @param size - The initial font size including the unit (i.e. px or pt)
6
+ * @param unit (optional) - The unit to convert to. Use this if you want to
7
+ * convert to a unit other than $baselineUnit.
8
+ */
9
+ /**
10
+ * Convert a font size to a dynamic font size but impose
11
+ * a maximum font size.
12
+ * @param size - The initial font size including the unit (i.e. px or pt)
13
+ * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
14
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
15
+ * convert to a unit other than $baselineUnit.
16
+ */
17
+ /**
18
+ * Convert a font size to a dynamic font size but impose
19
+ * a minimum font size.
20
+ * @param size - The initial font size including the unit (i.e. px or pt)
21
+ * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
22
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
23
+ * convert to a unit other than $baselineUnit.
24
+ */
25
+ /**
26
+ * Convert a font size to a dynamic font size but impose
27
+ * maximum and minimum font sizes.
28
+ * @param size - The initial font size including the unit (i.e. px or pt)
29
+ * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
30
+ * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
31
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
32
+ * convert to a unit other than $baselineUnit.
33
+ */
34
+ /**
35
+ * A heuristic that applies CSS to tablet
36
+ * viewports.
37
+ *
38
+ * Usage:
39
+ * @include tablet-viewport() {
40
+ * :host {
41
+ * background-color: green;
42
+ * }
43
+ * }
44
+ */
45
+ /**
46
+ * A heuristic that applies CSS to mobile
47
+ * viewports (i.e. phones, not tablets).
48
+ *
49
+ * Usage:
50
+ * @include mobile-viewport() {
51
+ * :host {
52
+ * background-color: blue;
53
+ * }
54
+ * }
55
+ */
56
+ /**
57
+ * Convert a font size to a dynamic font size.
58
+ * Fonts that participate in Dynamic Type should use
59
+ * dynamic font sizes.
60
+ * @param size - The initial font size including the unit (i.e. px or pt)
61
+ * @param unit (optional) - The unit to convert to. Use this if you want to
62
+ * convert to a unit other than $baselineUnit.
63
+ */
64
+ /**
65
+ * Convert a font size to a dynamic font size but impose
66
+ * a maximum font size.
67
+ * @param size - The initial font size including the unit (i.e. px or pt)
68
+ * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
69
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
70
+ * convert to a unit other than $baselineUnit.
71
+ */
72
+ /**
73
+ * Convert a font size to a dynamic font size but impose
74
+ * a minimum font size.
75
+ * @param size - The initial font size including the unit (i.e. px or pt)
76
+ * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
77
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
78
+ * convert to a unit other than $baselineUnit.
79
+ */
80
+ /**
81
+ * Convert a font size to a dynamic font size but impose
82
+ * maximum and minimum font sizes.
83
+ * @param size - The initial font size including the unit (i.e. px or pt)
84
+ * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
85
+ * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
86
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
87
+ * convert to a unit other than $baselineUnit.
88
+ */
89
+ /**
90
+ * A heuristic that applies CSS to tablet
91
+ * viewports.
92
+ *
93
+ * Usage:
94
+ * @include tablet-viewport() {
95
+ * :host {
96
+ * background-color: green;
97
+ * }
98
+ * }
99
+ */
100
+ /**
101
+ * A heuristic that applies CSS to mobile
102
+ * viewports (i.e. phones, not tablets).
103
+ *
104
+ * Usage:
105
+ * @include mobile-viewport() {
106
+ * :host {
107
+ * background-color: blue;
108
+ * }
109
+ * }
110
+ */
111
+ ion-radio-group {
112
+ vertical-align: top;
113
+ }
114
+
115
+ .radio-group-wrapper {
116
+ display: inline;
117
+ }
118
+
119
+ .radio-group-top {
120
+ line-height: 1.5;
121
+ }
122
+
123
+ /**
124
+ * Error text should only be shown when .ion-invalid is present
125
+ * on the radio group. Otherwise the helper text should be shown.
126
+ */
127
+ .radio-group-top .error-text {
128
+ display: none;
129
+ color: var(--ion-color-danger, #c5000f);
130
+ }
131
+
132
+ .radio-group-top .helper-text {
133
+ display: block;
134
+ color: var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));
135
+ }
136
+
137
+ .ion-touched.ion-invalid .radio-group-top .error-text {
138
+ display: block;
139
+ }
140
+
141
+ .ion-touched.ion-invalid .radio-group-top .helper-text {
142
+ display: none;
143
+ }
144
+
145
+ /**
146
+ * Convert a font size to a dynamic font size.
147
+ * Fonts that participate in Dynamic Type should use
148
+ * dynamic font sizes.
149
+ * @param size - The initial font size including the unit (i.e. px or pt)
150
+ * @param unit (optional) - The unit to convert to. Use this if you want to
151
+ * convert to a unit other than $baselineUnit.
152
+ */
153
+ /**
154
+ * Convert a font size to a dynamic font size but impose
155
+ * a maximum font size.
156
+ * @param size - The initial font size including the unit (i.e. px or pt)
157
+ * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
158
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
159
+ * convert to a unit other than $baselineUnit.
160
+ */
161
+ /**
162
+ * Convert a font size to a dynamic font size but impose
163
+ * a minimum font size.
164
+ * @param size - The initial font size including the unit (i.e. px or pt)
165
+ * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
166
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
167
+ * convert to a unit other than $baselineUnit.
168
+ */
169
+ /**
170
+ * Convert a font size to a dynamic font size but impose
171
+ * maximum and minimum font sizes.
172
+ * @param size - The initial font size including the unit (i.e. px or pt)
173
+ * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
174
+ * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
175
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
176
+ * convert to a unit other than $baselineUnit.
177
+ */
178
+ /**
179
+ * A heuristic that applies CSS to tablet
180
+ * viewports.
181
+ *
182
+ * Usage:
183
+ * @include tablet-viewport() {
184
+ * :host {
185
+ * background-color: green;
186
+ * }
187
+ * }
188
+ */
189
+ /**
190
+ * A heuristic that applies CSS to mobile
191
+ * viewports (i.e. phones, not tablets).
192
+ *
193
+ * Usage:
194
+ * @include mobile-viewport() {
195
+ * :host {
196
+ * background-color: blue;
197
+ * }
198
+ * }
199
+ */
200
+ ion-list .radio-group-top {
201
+ -webkit-padding-start: 16px;
202
+ padding-inline-start: 16px;
203
+ -webkit-padding-end: 16px;
204
+ padding-inline-end: 16px;
205
+ }
@@ -580,7 +580,7 @@ export class Range {
580
580
  const needsEndAdjustment = inItem && !hasEndContent;
581
581
  const mode = getIonMode(this);
582
582
  renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
583
- return (h(Host, { key: 'a9dacdb8935627860188c035f2edf6b8cc751dc5', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses(this.color, {
583
+ return (h(Host, { key: 'ddecc98800b9137294c8cadfbde7d07d5b3825d7', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses(this.color, {
584
584
  [mode]: true,
585
585
  'in-item': inItem,
586
586
  'range-disabled': disabled,
@@ -589,10 +589,10 @@ export class Range {
589
589
  [`range-label-placement-${labelPlacement}`]: true,
590
590
  'range-item-start-adjustment': needsStartAdjustment,
591
591
  'range-item-end-adjustment': needsEndAdjustment,
592
- }) }, h("label", { key: '4f5682ab5f793c1097956c092c8b88b6d676fe85', class: "range-wrapper", id: "range-label" }, h("div", { key: 'f906c5ab076275721cb8e99e22f5a3c2509713de', class: {
592
+ }) }, h("label", { key: '5afdbea21b1b82efde1126ceb0a263f85731aecf', class: "range-wrapper", id: "range-label" }, h("div", { key: 'e47e0bbefcb931dff5b846f47b4458153b73df94', class: {
593
593
  'label-text-wrapper': true,
594
594
  'label-text-wrapper-hidden': !hasLabel,
595
- }, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: 'bb6ca75df1394a01464d40a8b4ba6e08b3c12824', class: "native-wrapper" }, h("slot", { key: '34f6e5f0ee73864ed2fa64cf041639f842540ae6', name: "start" }), this.renderRangeSlider(), h("slot", { key: 'b8602e24234900fe9bb300610b236951bf2c6ebb', name: "end" })))));
595
+ }, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '842f35cd03bb6108d1ecf0c0a07adfbdc900401c', class: "native-wrapper" }, h("slot", { key: '4a5141daaf5de5b3251bef4232ce5a27fc0395df', name: "start" }), this.renderRangeSlider(), h("slot", { key: '53ffe0a40b093c5fbcbc50d47eea6bb3f39dfdbb', name: "end" })))));
596
596
  }
597
597
  static get is() { return "ion-range"; }
598
598
  static get encapsulation() { return "shadow"; }
@@ -621,7 +621,7 @@ export class Refresher {
621
621
  }
622
622
  render() {
623
623
  const mode = getIonMode(this);
624
- return (h(Host, { key: '9d4ac22988aec2c6af0b0c90934c52f62f0e4ce3', slot: "fixed", class: {
624
+ return (h(Host, { key: '4c36bffbfa32ef1bd28a60f4455c125842880659', slot: "fixed", class: {
625
625
  [mode]: true,
626
626
  // Used internally for styling
627
627
  [`refresher-${mode}`]: true,
@@ -52,7 +52,7 @@ export class RefresherContent {
52
52
  const pullingIcon = this.pullingIcon;
53
53
  const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
54
54
  const mode = getIonMode(this);
55
- return (h(Host, { key: '19633bbcf02e3dba885d6bdcdaf2269bf4c8e2f5', class: mode }, h("div", { key: '28922e434a55a6cac0476fe2bee56941ce0d1c02', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (h("div", { key: 'fe575bf996021884677e9b23a3215d63caf894f5', class: "refresher-pulling-icon" }, h("div", { key: '59fe12297fd95bc33b8df8cd35316e2a1c084d91', class: "spinner-arrow-container" }, h("ion-spinner", { key: 'af9cc013ae04945c140b2865610ca73edb52ab48', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (h("div", { key: '34df66ad1b0f706a0532957251aa2c20bf4587d8', class: "arrow-container" }, h("ion-icon", { key: 'ffdb5c123e606b823491c6c51cc2b497f62581bb', icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (h("div", { key: 'ac3a2032bb969264d20fa057e9123441005d7a9d', class: "refresher-pulling-icon" }, h("ion-icon", { key: 'd969d10915548e72aae289b52154366f3dd39b31', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), h("div", { key: 'a8f854f81a94812d7bef8ce088331d94f49ff53d', class: "refresher-refreshing" }, this.refreshingSpinner && (h("div", { key: 'a1f646945370e40c844d62bc0c647443ae9dfbe7', class: "refresher-refreshing-icon" }, h("ion-spinner", { key: 'ab3ff4047769b6436e222b46d193c1e8b23e2fce', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
55
+ return (h(Host, { key: 'fb78d7e31f8feb31025e58903eb9de85cb928dbd', class: mode }, h("div", { key: '23f67800f09765ef8fde8cf85a843e19e667f337', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (h("div", { key: '5a08d3b69762f8b51dcd3dcfbaf3fddb707257fa', class: "refresher-pulling-icon" }, h("div", { key: '42a613b029e092acdff7fe613a429375d89f157e', class: "spinner-arrow-container" }, h("ion-spinner", { key: '2f9cdc75938c4d306de7a717ed67901daef71c2c', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (h("div", { key: '1f8a6347b4a46417ba55286a79f1a41f04bf9c91', class: "arrow-container" }, h("ion-icon", { key: '326713d11d482d420ba5a739ff4528400a37e9ca', icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (h("div", { key: 'ab18c7cbea7bcbfa034f90f317652af4d93660ed', class: "refresher-pulling-icon" }, h("ion-icon", { key: 'f488acd54acc8a61b6c5a279f0d7f9a437c370c0', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), h("div", { key: '914ad6139442dac53af47120ea821fa11c309a38', class: "refresher-refreshing" }, this.refreshingSpinner && (h("div", { key: '7eba732f5e2d72b90399d68a3e89617d8979b3d1', class: "refresher-refreshing-icon" }, h("ion-spinner", { key: '838d66d8bef6f56622c62b1068e7fed29e094302', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
56
56
  }
57
57
  static get is() { return "ion-refresher-content"; }
58
58
  static get properties() {
@@ -20,7 +20,7 @@ export class Reorder {
20
20
  render() {
21
21
  const mode = getIonMode(this);
22
22
  const reorderIcon = mode === 'ios' ? reorderThreeOutline : reorderTwoSharp;
23
- return (h(Host, { key: '27266e30bcb7e10c57fb6d546399cfb1f1c93b23', class: mode }, h("slot", { key: '8745cb9a31458e884c27eed1fb90d104fe9a79eb' }, h("ion-icon", { key: '6c4b9631a2f5610f1e21b2db025b6702d0d593bf', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
23
+ return (h(Host, { key: '17adf3165f4e09283d5d6434d7cd47bd23519048', class: mode }, h("slot", { key: 'd00d1cd97c689fc5c7b7175a2051cf697fe22871' }, h("ion-icon", { key: 'eec219aebde6083de98358be3e75965c5a5dc3d0', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
24
24
  }
25
25
  static get is() { return "ion-reorder"; }
26
26
  static get encapsulation() { return "shadow"; }
@@ -238,7 +238,7 @@ export class ReorderGroup {
238
238
  }
239
239
  render() {
240
240
  const mode = getIonMode(this);
241
- return (h(Host, { key: 'a38c7fbceb677201330a602273d5b55abb32da19', class: {
241
+ return (h(Host, { key: '6ca009dd65302a914d459aec638e62977440db20', class: {
242
242
  [mode]: true,
243
243
  'reorder-enabled': !this.disabled,
244
244
  'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
@@ -59,7 +59,7 @@ export class RippleEffect {
59
59
  }
60
60
  render() {
61
61
  const mode = getIonMode(this);
62
- return (h(Host, { key: '7ae559bda5d2c1856a45bfa150c2cb4f83373f8e', role: "presentation", class: {
62
+ return (h(Host, { key: '40c7f73e7f5f67e29f83e1236a61c6e1c9943c42', role: "presentation", class: {
63
63
  [mode]: true,
64
64
  unbounded: this.unbounded,
65
65
  } }));
@@ -23,10 +23,10 @@ export class RouterLink {
23
23
  rel: this.rel,
24
24
  target: this.target,
25
25
  };
26
- return (h(Host, { key: '529ceed5beaf92d7b4cc315c82f449eac18310e8', onClick: this.onClick, class: createColorClasses(this.color, {
26
+ return (h(Host, { key: '11183264fb6ae0db9a7a47c71b6862d60001b834', onClick: this.onClick, class: createColorClasses(this.color, {
27
27
  [mode]: true,
28
28
  'ion-activatable': true,
29
- }) }, h("a", Object.assign({ key: 'd5f1f8b256695d70bdafd20ff3d1b625963fa2da' }, attrs), h("slot", { key: '613fcdb36a71e076f989551ea21f1d5c118b1cd2' }))));
29
+ }) }, h("a", Object.assign({ key: '3e0e5242161cb0df593d6d573e51b8ba750065a1' }, attrs), h("slot", { key: '5bd808e98a4627bb1236f0d955f4b32971355417' }))));
30
30
  }
31
31
  static get is() { return "ion-router-link"; }
32
32
  static get encapsulation() { return "shadow"; }
@@ -177,7 +177,7 @@ export class RouterOutlet {
177
177
  return true;
178
178
  }
179
179
  render() {
180
- return h("slot", { key: 'a70341f58d19df55de1dad00e3464388e446aa2a' });
180
+ return h("slot", { key: '8d0c163c5f63158e16ef2db7cc3c756cf597461d' });
181
181
  }
182
182
  static get is() { return "ion-router-outlet"; }
183
183
  static get encapsulation() { return "shadow"; }
@@ -5,7 +5,7 @@ import { Host, h } from "@stencil/core";
5
5
  import { getIonMode } from "../../global/ionic-global";
6
6
  export class Row {
7
7
  render() {
8
- return (h(Host, { key: 'aea072a5005e3f1f309f0d1ae5be5ee19869b035', class: getIonMode(this) }, h("slot", { key: '2a481c2126ac6ca65f0a1bbd07c2d3365409cb78' })));
8
+ return (h(Host, { key: 'a690022e2abdce6946d24264574e4aa0886a8ea5', class: getIonMode(this) }, h("slot", { key: 'd1a0e831dd1dbfe7877d3ad01d0a3045a5fb29e3' })));
9
9
  }
10
10
  static get is() { return "ion-row"; }
11
11
  static get encapsulation() { return "shadow"; }
@@ -378,8 +378,8 @@ export class Searchbar {
378
378
  const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
379
379
  const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
380
380
  const shouldShowCancelButton = this.shouldShowCancelButton();
381
- const cancelButton = this.showCancelButton !== 'never' && (h("button", { key: '0ef595eb1628928d4c7fdb166b8e41768700fa6e', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: mode === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, h("div", { key: 'ea2c9b36d991acf5af7662059cb6b045f683ca94', "aria-hidden": "true" }, mode === 'md' ? (h("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
382
- return (h(Host, { key: '17d57ece5852d03047e4d53ddad6c9d88a432a00', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses(this.color, {
381
+ const cancelButton = this.showCancelButton !== 'never' && (h("button", { key: '989f3e84c472ada6e66dd9b249d0d268bf17ce26', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: mode === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, h("div", { key: '7d335d4fde33822dc79d26b748ba2e98db7494bb', "aria-hidden": "true" }, mode === 'md' ? (h("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
382
+ return (h(Host, { key: 'd1a1972725e949fb102c91487aaa7b9d10c2d718', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses(this.color, {
383
383
  [mode]: true,
384
384
  'searchbar-animated': animated,
385
385
  'searchbar-disabled': this.disabled,
@@ -389,14 +389,14 @@ export class Searchbar {
389
389
  'searchbar-has-focus': this.focused,
390
390
  'searchbar-should-show-clear': this.shouldShowClearButton(),
391
391
  'searchbar-should-show-cancel': this.shouldShowCancelButton(),
392
- }) }, h("div", { key: 'f67c2124e70c24eef0a271516e9c4bdaf7e98ceb', class: "searchbar-input-container" }, h("input", Object.assign({ key: '8c7f7ccc6809cca30ccc8c4e98e349d3f916321d', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, h("ion-icon", { key: 'f06524d3163b3883bbde937862aa1e0e8f49f6e1', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), h("button", { key: '9f7ba2bec93412ecb674b197be13db1de308bb57', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
392
+ }) }, h("div", { key: 'add53640b2994cb6b2bf02792dafe51aba6b1684', class: "searchbar-input-container" }, h("input", Object.assign({ key: '160cc36459a4a652e7f41ccd14dcdc782278779e', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, h("ion-icon", { key: '8825fd13af0d2dea451ccc0e00ae7b5021dc01c4', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), h("button", { key: '8a7b56da278b9ca5c4f5a4ee9c01924fd5ae29d8', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
393
393
  /**
394
394
  * This prevents mobile browsers from
395
395
  * blurring the input when the clear
396
396
  * button is activated.
397
397
  */
398
398
  ev.preventDefault();
399
- }, onClick: () => this.onClearInput(true) }, h("ion-icon", { key: '19fc3dbc722acc47ff7eb3c94ad4de8aed38dff4', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
399
+ }, onClick: () => this.onClearInput(true) }, h("ion-icon", { key: '24c55274516ab012d8c25f03525c6cdb9409e52f', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
400
400
  }
401
401
  static get is() { return "ion-searchbar"; }
402
402
  static get encapsulation() { return "scoped"; }
@@ -530,14 +530,14 @@ export class Segment {
530
530
  }
531
531
  render() {
532
532
  const mode = getIonMode(this);
533
- return (h(Host, { key: 'b1eb4a6e4f953f6c4882395585799503735bbc6b', role: "tablist", onClick: this.onClick, class: createColorClasses(this.color, {
533
+ return (h(Host, { key: 'a64e39352050b516f7dc82ce95a4bcff8431d1d0', role: "tablist", onClick: this.onClick, class: createColorClasses(this.color, {
534
534
  [mode]: true,
535
535
  'in-toolbar': hostContext('ion-toolbar', this.el),
536
536
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
537
537
  'segment-activated': this.activated,
538
538
  'segment-disabled': this.disabled,
539
539
  'segment-scrollable': this.scrollable,
540
- }) }, h("slot", { key: 'e7df6b017d154f30eb8021bc965f2e6c8e6480bf', onSlotchange: this.onSlottedItemsChange })));
540
+ }) }, h("slot", { key: 'bb3f3ec30e59e0461fa620d8961ab730cc802a4e', onSlotchange: this.onSlottedItemsChange })));
541
541
  }
542
542
  static get is() { return "ion-segment"; }
543
543
  static get encapsulation() { return "shadow"; }
@@ -130,7 +130,7 @@ export class SegmentButton {
130
130
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
131
131
  const mode = getIonMode(this);
132
132
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
133
- return (h(Host, { key: 'f9da656c8eccb80e4ef30e3fa977f2dbbefbc988', class: {
133
+ return (h(Host, { key: 'e1e582b9a142cb07043ba08f02ad25f5a1fa5690', class: {
134
134
  [mode]: true,
135
135
  'in-toolbar': hostContext('ion-toolbar', this.el),
136
136
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
@@ -146,7 +146,7 @@ export class SegmentButton {
146
146
  'ion-activatable': true,
147
147
  'ion-activatable-instant': true,
148
148
  'ion-focusable': true,
149
- } }, h("button", Object.assign({ key: '00dbcdbd81cd74abdd39803f6840a6e477cc7b0c', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), h("span", { key: '5200c082a9c4788010c4fc33fe75e2b2ad28364a', class: "button-inner" }, h("slot", { key: 'cf3fce2b5d22436b84cd4367a5885df7d6a2715f' })), mode === 'md' && h("ion-ripple-effect", { key: 'f1a2816465f4c2c06644be07315bff2da77e2342' })), h("div", { key: 'aaf31c0ed39641fca698ee98d0773131f4eea6bd', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, h("div", { key: 'fc556651361b7ac305aaedd25ea4afe3173abd20', part: "indicator-background", class: "segment-button-indicator-background" }))));
149
+ } }, h("button", Object.assign({ key: '8621a028894fb382854ff28779d0cadd3d9035f7', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), h("span", { key: '5c55858dbfb50734fb02d24091ebac3e0d05259f', class: "button-inner" }, h("slot", { key: '1f3bb8d76a1039ad648e202c650db06dfca88f79' })), mode === 'md' && h("ion-ripple-effect", { key: 'bda74b25bfdd431a8a36f0ee727b9184e9074321' })), h("div", { key: 'ff11369e921d6d0a540c75c37f692a3853e903f7', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, h("div", { key: '74ec4ca69331ed3f155fd8a8a356545941887df1', part: "indicator-background", class: "segment-button-indicator-background" }))));
150
150
  }
151
151
  static get is() { return "ion-segment-button"; }
152
152
  static get encapsulation() { return "shadow"; }
@@ -4,7 +4,7 @@
4
4
  import { Host, h } from "@stencil/core";
5
5
  export class SegmentContent {
6
6
  render() {
7
- return (h(Host, { key: '03684b2999ac64fe13e376fd7e7f279976e9d4f2' }, h("slot", { key: '143031075bf33ca19e7cfd76fc8a67b83ccaf11c' })));
7
+ return (h(Host, { key: '64b3965b14c749e77e9ce13b59f349d971e245c8' }, h("slot", { key: '2d0bed34f9bc93f92e713cb51e42220f3cecd8f5' })));
8
8
  }
9
9
  static get is() { return "ion-segment-content"; }
10
10
  static get encapsulation() { return "shadow"; }
@@ -94,10 +94,10 @@ export class SegmentView {
94
94
  }
95
95
  render() {
96
96
  const { disabled, isManualScroll } = this;
97
- return (h(Host, { key: '9f4f11d31c4db776f077e59ae895b35dd4454717', class: {
97
+ return (h(Host, { key: 'fa528d2d9ae0f00fc3067defe2a047dce77c814a', class: {
98
98
  'segment-view-disabled': disabled,
99
99
  'segment-view-scroll-disabled': isManualScroll === false,
100
- } }, h("slot", { key: 'ea58b21f031cee2ab2b70580f336deaefa364538' })));
100
+ } }, h("slot", { key: '74dc8b4d073caeff1bab272d11b9ea3e1a215954' })));
101
101
  }
102
102
  static get is() { return "ion-segment-view"; }
103
103
  static get encapsulation() { return "shadow"; }
@@ -299,6 +299,63 @@ button {
299
299
  --highlight-color: var(--highlight-color-valid);
300
300
  }
301
301
 
302
+ .select-bottom {
303
+ /**
304
+ * The bottom content should take on the start and end
305
+ * padding so it is always aligned with either the label
306
+ * or the start of the text select.
307
+ */
308
+ -webkit-padding-start: var(--padding-start);
309
+ padding-inline-start: var(--padding-start);
310
+ -webkit-padding-end: var(--padding-end);
311
+ padding-inline-end: var(--padding-end);
312
+ padding-top: 5px;
313
+ padding-bottom: 0;
314
+ display: flex;
315
+ justify-content: space-between;
316
+ border-top: var(--border-width) var(--border-style) var(--border-color);
317
+ font-size: 0.75rem;
318
+ white-space: normal;
319
+ }
320
+
321
+ /**
322
+ * If the select has a validity state, the
323
+ * border and label should reflect that as a color.
324
+ * The invalid state should show if the select is
325
+ * invalid and has already been touched.
326
+ * The valid state should show if the select
327
+ * is valid, has already been touched, and
328
+ * is currently focused. Do not show the valid
329
+ * highlight when the select is blurred.
330
+ */
331
+ :host(.has-focus.ion-valid),
332
+ :host(.ion-touched.ion-invalid) {
333
+ --border-color: var(--highlight-color);
334
+ }
335
+
336
+ /**
337
+ * Error text should only be shown when .ion-invalid is
338
+ * present on the select. Otherwise the helper text should
339
+ * be shown.
340
+ */
341
+ .select-bottom .error-text {
342
+ display: none;
343
+ color: var(--highlight-color-invalid);
344
+ }
345
+
346
+ .select-bottom .helper-text {
347
+ display: block;
348
+ color: var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));
349
+ }
350
+
351
+ :host(.ion-touched.ion-invalid) .select-bottom .error-text {
352
+ display: block;
353
+ }
354
+
355
+ :host(.ion-touched.ion-invalid) .select-bottom .helper-text {
356
+ display: none;
357
+ }
358
+
302
359
  .label-text-wrapper {
303
360
  /**
304
361
  * This causes the label to take up
@@ -686,6 +743,8 @@ button {
686
743
  * }
687
744
  */
688
745
  :host {
746
+ --border-width: 0.55px;
747
+ --border-color: var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));
689
748
  --highlight-height: 0px;
690
749
  }
691
750
 
@@ -23,10 +23,15 @@ import { getIonMode } from "../../global/ionic-global";
23
23
  * @part icon - The select icon container.
24
24
  * @part container - The container for the selected text or placeholder.
25
25
  * @part label - The label text describing the select.
26
+ * @part supporting-text - Supporting text displayed beneath the select.
27
+ * @part helper-text - Supporting text displayed beneath the select when the select is valid.
28
+ * @part error-text - Supporting text displayed beneath the select when the select is invalid and touched.
26
29
  */
27
30
  export class Select {
28
31
  constructor() {
29
32
  this.inputId = `ion-sel-${selectIds++}`;
33
+ this.helperTextId = `${this.inputId}-helper-text`;
34
+ this.errorTextId = `${this.inputId}-error-text`;
30
35
  this.inheritedAttributes = {};
31
36
  this.onClick = (ev) => {
32
37
  const target = ev.target;
@@ -77,6 +82,8 @@ export class Select {
77
82
  this.compareWith = undefined;
78
83
  this.disabled = false;
79
84
  this.fill = undefined;
85
+ this.errorText = undefined;
86
+ this.helperText = undefined;
80
87
  this.interface = 'alert';
81
88
  this.interfaceOptions = {};
82
89
  this.justify = undefined;
@@ -657,7 +664,43 @@ export class Select {
657
664
  }
658
665
  renderListbox() {
659
666
  const { disabled, inputId, isExpanded, required } = this;
660
- return (h("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "dialog", "aria-expanded": `${isExpanded}`, "aria-required": `${required}`, onFocus: this.onFocus, onBlur: this.onBlur, ref: (focusEl) => (this.focusEl = focusEl) }));
667
+ return (h("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "dialog", "aria-expanded": `${isExpanded}`, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId, "aria-required": `${required}`, onFocus: this.onFocus, onBlur: this.onBlur, ref: (focusEl) => (this.focusEl = focusEl) }));
668
+ }
669
+ getHintTextID() {
670
+ const { el, helperText, errorText, helperTextId, errorTextId } = this;
671
+ if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
672
+ return errorTextId;
673
+ }
674
+ if (helperText) {
675
+ return helperTextId;
676
+ }
677
+ return undefined;
678
+ }
679
+ /**
680
+ * Renders the helper text or error text values
681
+ */
682
+ renderHintText() {
683
+ const { helperText, errorText, helperTextId, errorTextId } = this;
684
+ return [
685
+ h("div", { id: helperTextId, class: "helper-text", part: "supporting-text helper-text" }, helperText),
686
+ h("div", { id: errorTextId, class: "error-text", part: "supporting-text error-text" }, errorText),
687
+ ];
688
+ }
689
+ /**
690
+ * Responsible for rendering helper text, and error text. This element
691
+ * should only be rendered if hint text is set.
692
+ */
693
+ renderBottomContent() {
694
+ const { helperText, errorText } = this;
695
+ /**
696
+ * undefined and empty string values should
697
+ * be treated as not having helper/error text.
698
+ */
699
+ const hasHintText = !!helperText || !!errorText;
700
+ if (!hasHintText) {
701
+ return;
702
+ }
703
+ return h("div", { class: "select-bottom" }, this.renderHintText());
661
704
  }
662
705
  render() {
663
706
  const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill, shape, name, value } = this;
@@ -688,7 +731,7 @@ export class Select {
688
731
  * TODO(FW-5592): Remove hasStartEndSlots condition
689
732
  */
690
733
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
691
- return (h(Host, { key: 'f7cf03de773cd85da42978e274d65cc1eb6ed8a3', onClick: this.onClick, class: createColorClasses(this.color, {
734
+ return (h(Host, { key: 'aa7bd7fbb6479c7805486990650a406e5470fd13', onClick: this.onClick, class: createColorClasses(this.color, {
692
735
  [mode]: true,
693
736
  'in-item': inItem,
694
737
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -704,7 +747,7 @@ export class Select {
704
747
  [`select-justify-${justify}`]: justifyEnabled,
705
748
  [`select-shape-${shape}`]: shape !== undefined,
706
749
  [`select-label-placement-${labelPlacement}`]: true,
707
- }) }, h("label", { key: '91674f8f5cce37c87a7096d09b3f1d351cba1527', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), h("div", { key: '2229333833047db13ed2a01cb10bb6e6f774031d', class: "select-wrapper-inner" }, h("slot", { key: 'f2766bdf8bff261efa5711f72d9edef407e45189', name: "start" }), h("div", { key: '84fec020ecaaac41298a01dbffdbb2f3744170b4', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: '9b91237d7a1621bce1e15546abcb4f6b74cccc5f', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: 'e02aea3e8f344376013257f5261a29408e62b359', class: "select-highlight" }))));
750
+ }) }, h("label", { key: 'fde3cdfd0ef7d1a20263e35ff4358ee7f61a789f', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), h("div", { key: '6fb8deedc827b6be2f19f9e57a62efefaaba200f', class: "select-wrapper-inner" }, h("slot", { key: 'a57a204ea1cbd9c4bac338f14e196e780dab0a10', name: "start" }), h("div", { key: '78b83e1484a446537e038527d539d997e330cd69', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: '9fc660134e5247c4e5243c7d9d71ac6cec08705d', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: '7f143285efa7fd7756dfdc5517ca33e84c8a027e', class: "select-highlight" })), this.renderBottomContent()));
708
751
  }
709
752
  static get is() { return "ion-select"; }
710
753
  static get encapsulation() { return "shadow"; }
@@ -821,6 +864,40 @@ export class Select {
821
864
  "attribute": "fill",
822
865
  "reflect": false
823
866
  },
867
+ "errorText": {
868
+ "type": "string",
869
+ "mutable": false,
870
+ "complexType": {
871
+ "original": "string",
872
+ "resolved": "string | undefined",
873
+ "references": {}
874
+ },
875
+ "required": false,
876
+ "optional": true,
877
+ "docs": {
878
+ "tags": [],
879
+ "text": "Text that is placed under the select and displayed when an error is detected."
880
+ },
881
+ "attribute": "error-text",
882
+ "reflect": false
883
+ },
884
+ "helperText": {
885
+ "type": "string",
886
+ "mutable": false,
887
+ "complexType": {
888
+ "original": "string",
889
+ "resolved": "string | undefined",
890
+ "references": {}
891
+ },
892
+ "required": false,
893
+ "optional": true,
894
+ "docs": {
895
+ "tags": [],
896
+ "text": "Text that is placed under the select and displayed when no error is detected."
897
+ },
898
+ "attribute": "helper-text",
899
+ "reflect": false
900
+ },
824
901
  "interface": {
825
902
  "type": "string",
826
903
  "mutable": false,