@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
@@ -161,9 +161,9 @@ export class Loading {
161
161
  * Otherwise, don't set aria-labelledby.
162
162
  */
163
163
  const ariaLabelledBy = message !== undefined ? msgId : null;
164
- return (h(Host, Object.assign({ key: 'd97f536b7f443ea19a2bbf2dcbc7f546b8e0a092', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
164
+ return (h(Host, Object.assign({ key: 'd6066c8b56b1fe4b597a243a7dab191ef0d21286', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
165
165
  zIndex: `${40000 + this.overlayIndex}`,
166
- }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), h("ion-backdrop", { key: '6cd39bd7912fd080ab59d041644054c96d238ea9', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: 'c14ca5a9308844f11bcb010257e15208a75b39bc', tabindex: "0", "aria-hidden": "true" }), h("div", { key: '118bceefa8e1cf8b225a858f224e6d919cf03c26', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (h("div", { key: '490d6e8ae4433835fe273162d7b90deab944fb39', class: "loading-spinner" }, h("ion-spinner", { key: 'c5cf6549c43df4cb23814b3e62ec4d9e7ea2b64f', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), h("div", { key: '2b888362122d3b66b0492d53b0c21bd6a2a97501', tabindex: "0", "aria-hidden": "true" })));
166
+ }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), h("ion-backdrop", { key: '2431eda00a2a3f510f5dfc39b7c7d47c056dfa3d', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: 'cf210aaf5e754e4eccdb49cf7ead4647b3f9b2d1', tabindex: "0", "aria-hidden": "true" }), h("div", { key: 'fa9375143d391656d70e181d25b952c77c2fc6ec', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (h("div", { key: '8e4a4ed994f7f62df86b03696ac95162df41f52d', class: "loading-spinner" }, h("ion-spinner", { key: 'e5b323c272d365853ba92bd211e390b4fd4751d2', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), h("div", { key: 'cae35ec8c34800477bff3ebcec8010e632158233', tabindex: "0", "aria-hidden": "true" })));
167
167
  }
168
168
  static get is() { return "ion-loading"; }
169
169
  static get encapsulation() { return "scoped"; }
@@ -614,14 +614,14 @@ export class Menu {
614
614
  * the ionBackButton listener in the menu controller
615
615
  * will handle closing the menu when Escape is pressed.
616
616
  */
617
- return (h(Host, { key: 'da96fdb4c5ddf60e615cc4cdda7ccdb3fd7e089b', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
617
+ return (h(Host, { key: '342db8551d26604128b29b21d2d8c37593972ed9', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
618
618
  [mode]: true,
619
619
  [`menu-type-${type}`]: true,
620
620
  'menu-enabled': !disabled,
621
621
  [`menu-side-${side}`]: true,
622
622
  'menu-pane-visible': isPaneVisible,
623
623
  'split-pane-side': hostContext('ion-split-pane', el),
624
- } }, h("div", { key: '894e680fe227534711128c7aca980964ddb5a08a', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, h("slot", { key: 'e9f5934518dc0cceaeadf1f2820614595fec6bc9' })), h("ion-backdrop", { key: '7282077817657b1bb6c155f1404c0a519fece993', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
624
+ } }, h("div", { key: '3c9bec2862b7fb9d88de66b1600be01f6735e3dd', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, h("slot", { key: '76283b4b2a65c78646f92c3b273eea021eda499c' })), h("ion-backdrop", { key: '121c395bc4873542a1b6ae2c9e23f2e881e75d93', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
625
625
  }
626
626
  static get is() { return "ion-menu"; }
627
627
  static get encapsulation() { return "shadow"; }
@@ -46,7 +46,7 @@ export class MenuButton {
46
46
  type: this.type,
47
47
  };
48
48
  const ariaLabel = inheritedAttributes['aria-label'] || 'menu';
49
- return (h(Host, { key: '7ec29715ce7926b7c2b08f3d9cac8aaa16b3dc28', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses(color, {
49
+ return (h(Host, { key: '3cde3704f28eb275f4a5ff2985bbb68c1024e79c', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses(color, {
50
50
  [mode]: true,
51
51
  button: true, // ion-buttons target .button
52
52
  'menu-button-hidden': hidden,
@@ -55,7 +55,7 @@ export class MenuButton {
55
55
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
56
56
  'ion-activatable': true,
57
57
  'ion-focusable': true,
58
- }) }, h("button", Object.assign({ key: 'd4c5929264af3ba0328118bcc27d2ab7ef5d3809' }, attrs, { disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }), h("span", { key: '7bfa6e9a93105486623d044861e879ec79ff64f1', class: "button-inner" }, h("slot", { key: '071ab58e285832fc188706166f5547d45d501ac5' }, h("ion-icon", { key: '918ec5d791921de9821c347af4f65f97dd94aabf', part: "icon", icon: menuIcon, mode: mode, lazy: false, "aria-hidden": "true" }))), mode === 'md' && h("ion-ripple-effect", { key: '00ffdd53f635e706c1dbd01b8e7944498650fe81', type: "unbounded" }))));
58
+ }) }, h("button", Object.assign({ key: 'a02a3374288bd1759b6e352ada8eab0d45c6422f' }, attrs, { disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }), h("span", { key: 'ba699f2277a4e7b27ce5e42faeefc53d8805bb43', class: "button-inner" }, h("slot", { key: '829fe6cbdeb173f50d1a670389d1565baa6273e4' }, h("ion-icon", { key: 'a9a9f7b8dcffc648a8429fe0adbe766869de72fd', part: "icon", icon: menuIcon, mode: mode, lazy: false, "aria-hidden": "true" }))), mode === 'md' && h("ion-ripple-effect", { key: '48deca9a771a249f2fc76eaa8b9741c8d66d8355', type: "unbounded" }))));
59
59
  }
60
60
  static get is() { return "ion-menu-button"; }
61
61
  static get encapsulation() { return "shadow"; }
@@ -26,10 +26,10 @@ export class MenuToggle {
26
26
  render() {
27
27
  const mode = getIonMode(this);
28
28
  const hidden = this.autoHide && !this.visible;
29
- return (h(Host, { key: '7c27ea5b0795676bf5cb33e1f83aa142c197f64e', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
29
+ return (h(Host, { key: '88e88fa13ac7f10ba3acfe378bd11cda0c7e2749', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
30
30
  [mode]: true,
31
31
  'menu-toggle-hidden': hidden,
32
- } }, h("slot", { key: '69f187becedc0fe34603d41d279f043cf0fdf776' })));
32
+ } }, h("slot", { key: '0a14c7b63eda64702d2fd1b4bc7db4809892842d' })));
33
33
  }
34
34
  static get is() { return "ion-menu-toggle"; }
35
35
  static get encapsulation() { return "shadow"; }
@@ -130,11 +130,12 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
130
130
  const contentEl = findClosestIonContent(detail.event.target);
131
131
  currentBreakpoint = getCurrentBreakpoint();
132
132
  /**
133
- * If we have expandToScroll disabled, we should not allow the swipe gesture to start
134
- * if the content is being swiped.
133
+ * If `expandToScroll` is disabled, we should not allow the swipe gesture
134
+ * to start if the content is not scrolled to the top.
135
135
  */
136
136
  if (!expandToScroll && contentEl) {
137
- return false;
137
+ const scrollEl = isIonContent(contentEl) ? getElementRoot(contentEl).querySelector('.inner-scroll') : contentEl;
138
+ return scrollEl.scrollTop === 0;
138
139
  }
139
140
  if (currentBreakpoint === 1 && contentEl) {
140
141
  /**
@@ -192,6 +193,13 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
192
193
  animation.progressStart(true, 1 - currentBreakpoint);
193
194
  };
194
195
  const onMove = (detail) => {
196
+ /**
197
+ * If `expandToScroll` is disabled, we should not allow the swipe gesture
198
+ * to continue if the gesture is not pulling down.
199
+ */
200
+ if (!expandToScroll && detail.deltaY <= 0) {
201
+ return;
202
+ }
195
203
  /**
196
204
  * If we are pulling down, then it is possible we are pulling on the content.
197
205
  * We do not want scrolling to happen at the same time as the gesture.
@@ -573,18 +573,18 @@ export class Modal {
573
573
  const mode = getIonMode(this);
574
574
  const isCardModal = presentingElement !== undefined && mode === 'ios';
575
575
  const isHandleCycle = handleBehavior === 'cycle';
576
- return (h(Host, Object.assign({ key: 'ff15df63e72caaeb0a4ad68e9eedeaaa7d3f3bde', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
576
+ return (h(Host, Object.assign({ key: 'e661562f9e4126136cee337e4ab8ca69ac80faae', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
577
577
  zIndex: `${20000 + this.overlayIndex}`,
578
- }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), h("ion-backdrop", { key: '27a73655779af9d175a829d3d2d29e42fd2a63ee', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: '406a65080087e7895026ecc2f04e9d707439e86f', class: "modal-shadow" }), h("div", Object.assign({ key: '8e410eb925374158996c82cbbd522f07d741679e',
578
+ }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), h("ion-backdrop", { key: '9221692e0e111f99e80239ca44faaaed9b288425', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: '20def7088d31e5eb13c3f2404c514cd8b74cd966', class: "modal-shadow" }), h("div", Object.assign({ key: 'b11229330571d4ff7b9136dfdddcd7d759ada876',
579
579
  /*
580
580
  role and aria-modal must be used on the
581
581
  same element. They must also be set inside the
582
582
  shadow DOM otherwise ion-button will not be highlighted
583
583
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
584
584
  */
585
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '7326c969ebe5a70a35e83b09d3db2bb848c90e47', class: "modal-handle",
585
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '95b2a62477dfbc063a91910f0d37357388cfd914', class: "modal-handle",
586
586
  // Prevents the handle from receiving keyboard focus when it does not cycle
587
- tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), h("slot", { key: '0b65cdb9e337a27edf437b9e754e79f1449c217d' }))));
587
+ tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), h("slot", { key: 'fba17dfdbdffbfd8992f473f633d172c5124dc19' }))));
588
588
  }
589
589
  static get is() { return "ion-modal"; }
590
590
  static get encapsulation() { return "shadow"; }
@@ -754,7 +754,7 @@ export class Modal {
754
754
  "optional": false,
755
755
  "docs": {
756
756
  "tags": [],
757
- "text": "Controls whether scrolling or dragging within the sheet modal expands\nit to a larger breakpoint. This only takes effect when `breakpoints`\nand `initialBreakpoint` are set.\n\nIf `true`, scrolling or dragging anywhere in the modal will first expand\nit to the next breakpoint. Once fully expanded, scrolling will affect the content.\nIf `false`, scrolling will always affect the content, and the modal will only expand\nwhen dragging the header or handle."
757
+ "text": "Controls whether scrolling or dragging within the sheet modal expands\nit to a larger breakpoint. This only takes effect when `breakpoints`\nand `initialBreakpoint` are set.\n\nIf `true`, scrolling or dragging anywhere in the modal will first expand\nit to the next breakpoint. Once fully expanded, scrolling will affect the\ncontent.\nIf `false`, scrolling will always affect the content. The modal will\nonly expand when dragging the header or handle. The modal will close when\ndragging the header or handle. It can also be closed when dragging the\ncontent, but only if the content is scrolled to the top."
758
758
  },
759
759
  "attribute": "expand-to-scroll",
760
760
  "reflect": false,
@@ -830,7 +830,7 @@ export class Nav {
830
830
  }
831
831
  }
832
832
  render() {
833
- return h("slot", { key: 'dfe98cb6604a2015a49f41beffebdd2da957dfff' });
833
+ return h("slot", { key: '71e9b5d07fc90ca5534197a63a003a4154aabd59' });
834
834
  }
835
835
  static get is() { return "ion-nav"; }
836
836
  static get encapsulation() { return "shadow"; }
@@ -14,7 +14,7 @@ export class NavLink {
14
14
  this.routerAnimation = undefined;
15
15
  }
16
16
  render() {
17
- return h(Host, { key: 'd2f8545b4fbd5aa25ef36eb01dffbc5d35ccfbb9', onClick: this.onClick });
17
+ return h(Host, { key: '9ba170d1b10e08e8a6b5e6a30d363871d455a0a9', onClick: this.onClick });
18
18
  }
19
19
  static get is() { return "ion-nav-link"; }
20
20
  static get properties() {
@@ -13,9 +13,9 @@ export class Note {
13
13
  }
14
14
  render() {
15
15
  const mode = getIonMode(this);
16
- return (h(Host, { key: '10a3495bc21166176986441479f8f7539029d161', class: createColorClasses(this.color, {
16
+ return (h(Host, { key: '3c3d9b2aa805c0bc1fdc6270a2bbf4dcc1b96c5b', class: createColorClasses(this.color, {
17
17
  [mode]: true,
18
- }) }, h("slot", { key: 'b6a9459e1b85f608fafd060a4bfeb11637ebe873' })));
18
+ }) }, h("slot", { key: '39e34682009fcb705ecafe51825162734bdf14d3' })));
19
19
  }
20
20
  static get is() { return "ion-note"; }
21
21
  static get encapsulation() { return "shadow"; }
@@ -76,10 +76,10 @@ export class PickerColumnOption {
76
76
  render() {
77
77
  const { color, disabled, ariaLabel } = this;
78
78
  const mode = getIonMode(this);
79
- return (h(Host, { key: 'c743c6ef44bb9f765cc15b3b5d2864de6520203a', class: createColorClasses(color, {
79
+ return (h(Host, { key: 'c1353e99c2aa19c0e3ddbe433557ed18e72e1c66', class: createColorClasses(color, {
80
80
  [mode]: true,
81
81
  ['option-disabled']: disabled,
82
- }) }, h("button", { key: '4c3d9eb245c52b2c007f727e145cfb55759bd7a9', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, h("slot", { key: '4c907d2187cbe9d5941e27f2b12578e2b7271461' }))));
82
+ }) }, h("button", { key: 'b4ee62ecf7458a07a56e8aa494485766a87a3fcb', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, h("slot", { key: '9ab1e4700c27103b676670a4b3521c183c6ab83d' }))));
83
83
  }
84
84
  static get is() { return "ion-picker-column-option"; }
85
85
  static get encapsulation() { return "shadow"; }
@@ -185,11 +185,11 @@ export class Picker {
185
185
  render() {
186
186
  const { htmlAttributes } = this;
187
187
  const mode = getIonMode(this);
188
- return (h(Host, Object.assign({ key: '0712fa8732141848e50ad2e08e2ba66ef2a48991', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
188
+ return (h(Host, Object.assign({ key: 'dc03f252e3b59a94bc7132c953d2d3b36b62237e', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
189
189
  zIndex: `${20000 + this.overlayIndex}`,
190
190
  }, class: Object.assign({ [mode]: true,
191
191
  // Used internally for styling
192
- [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), h("ion-backdrop", { key: 'c997632ef0488698739664012de5a6494de438b6', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: '20045054a76cca997b410835fa6b305af22dcb12', tabindex: "0", "aria-hidden": "true" }), h("div", { key: 'a73a6ac20b685ed9694d4fa95ea236ce5d63fdbf', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, h("div", { key: '1221cdcc2ff013deeba12170129c8fe78308330c', class: "picker-toolbar" }, this.buttons.map((b) => (h("div", { class: buttonWrapperClass(b) }, h("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass(b) }, b.text))))), h("div", { key: '45038a58430a4251100797b902e7034243137564', class: "picker-columns" }, h("div", { key: 'c579bb69cddd4090912855ffd7f59536280f34b9', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => h("ion-picker-legacy-column", { col: c })), h("div", { key: '978c6632d82a97d053b729c9de65dd3af4c4cee2', class: "picker-below-highlight" }))), h("div", { key: 'e7e9dc437a3cf6d559e2cb0df71af69047a2ae31', tabindex: "0", "aria-hidden": "true" })));
192
+ [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), h("ion-backdrop", { key: 'bdabe9c82c41f96da5dafb1a0aa0854fa7e7ec93', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: '1380e0c8989153b425674753764f12f253f4a738', tabindex: "0", "aria-hidden": "true" }), h("div", { key: 'edec769bbc0993d003852d0bf1123e6e2332ebbe', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, h("div", { key: 'b82c67ff47aa9412a6ff8f3b2e6230b855e92c51', class: "picker-toolbar" }, this.buttons.map((b) => (h("div", { class: buttonWrapperClass(b) }, h("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass(b) }, b.text))))), h("div", { key: '76485b643387f36b6b3d5f85e4d072fa18e68552', class: "picker-columns" }, h("div", { key: '99268217263feb5285db1b1acd48fd0e4d5f0e7b', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => h("ion-picker-legacy-column", { col: c })), h("div", { key: '2dd7e488bc4e9695094f0758567e626e0bb5979d', class: "picker-below-highlight" }))), h("div", { key: '8b2f3ae798a4ddcdd4e2716ebba1de797e446ac4', tabindex: "0", "aria-hidden": "true" })));
193
193
  }
194
194
  static get is() { return "ion-picker-legacy"; }
195
195
  static get encapsulation() { return "scoped"; }
@@ -336,9 +336,9 @@ export class PickerColumnCmp {
336
336
  render() {
337
337
  const col = this.col;
338
338
  const mode = getIonMode(this);
339
- return (h(Host, { key: 'c015eb8bc01b3287cbd1d71af0aa311b6be89d36', class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
339
+ return (h(Host, { key: '88a3c9397c9ac92dd814074c8ae6ecf8e3420a2c', class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
340
340
  'max-width': this.col.columnWidth,
341
- } }, col.prefix && (h("div", { key: 'f9de3fe2f5c7ad3256d6e5f44b6d03a2b1f96ffb', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), h("div", { key: '10f9c12aa174f96c7cf9adc30efbb26695c0aa64', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (h("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (h("div", { key: '1d9c0892ce56e0da9044c79eb953827166f5190b', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
341
+ } }, col.prefix && (h("div", { key: '4491a705d15337e6f45f3cf6fd21af5242474729', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), h("div", { key: 'b0dd4b7a7a4c1edc4b73e7fb134ac85264072365', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (h("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (h("div", { key: 'c16419ce6481d60fc3ba6b8d102a4edf0ede02aa', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
342
342
  }
343
343
  static get is() { return "ion-picker-legacy-column"; }
344
344
  static get originalStyleUrls() {
@@ -338,9 +338,9 @@ export class Popover {
338
338
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
339
339
  const desktop = isPlatform('desktop');
340
340
  const enableArrow = arrow && !parentPopover;
341
- return (h(Host, Object.assign({ key: 'ffe8b37c9ffb5cac210a7307e6cdfcf78712905b', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
341
+ return (h(Host, Object.assign({ key: '48f108a9b74f121559626889dd5a1fcccf38fc3d', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
342
342
  zIndex: `${20000 + this.overlayIndex}`,
343
- }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && h("ion-backdrop", { key: '12b3ffa3928b4d56a4f09c3d2f5d493d47b45255', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { key: '2c2862d5c7e75b637973c712b4982bf4978c0cdf', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { key: '0cfacc52afaa7abc28c1b7742889d7a1c23a37ad', class: "popover-arrow", part: "arrow" }), h("div", { key: '3ef570c44d4fe7f063dd419008c92c8c40d3cd22', class: "popover-content", part: "content" }, h("slot", { key: '6fc5dfdce20fee1642bc1f05d41b5bf7d1034457' })))));
343
+ }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && h("ion-backdrop", { key: '580c14ab48472534f59eedc5ba7fa486df25ed4e', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { key: '9bcf47893e8d3053e2baa40511785d84feb4038c', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { key: '4d47f2bdc01a546a88190c07f8f4700f21de6715', class: "popover-arrow", part: "arrow" }), h("div", { key: '70018c088654c1996e305b7b6b114419e97824ef', class: "popover-content", part: "content" }, h("slot", { key: '3de8e1959b8facba2fbe694947704832200d8276' })))));
344
344
  }
345
345
  static get is() { return "ion-popover"; }
346
346
  static get encapsulation() { return "shadow"; }
@@ -28,7 +28,7 @@ export class ProgressBar {
28
28
  const mode = getIonMode(this);
29
29
  // If the progress is displayed as a solid bar.
30
30
  const progressSolid = buffer === 1;
31
- return (h(Host, { key: '8d8ddf0b26fe33803d3a6168cbedd523d1a888e7', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses(color, {
31
+ return (h(Host, { key: 'd60eeaa18aaee607e083c0ef9d0de8178d47c4cd', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses(color, {
32
32
  [mode]: true,
33
33
  [`progress-bar-${type}`]: true,
34
34
  'progress-paused': paused,
@@ -120,7 +120,7 @@ export class Radio {
120
120
  const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
121
121
  const mode = getIonMode(this);
122
122
  const inItem = hostContext('ion-item', el);
123
- return (h(Host, { key: '5a0adab55ad009305de4856fa1b9f93f2279a734', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses(color, {
123
+ return (h(Host, { key: '8badd4aec277addc0793e14df21f73bb345e99b7', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses(color, {
124
124
  [mode]: true,
125
125
  'in-item': inItem,
126
126
  'radio-checked': checked,
@@ -131,10 +131,10 @@ export class Radio {
131
131
  // Focus and active styling should not apply when the radio is in an item
132
132
  'ion-activatable': !inItem,
133
133
  'ion-focusable': !inItem,
134
- }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, h("label", { key: 'f5673a798e6d87868339f046445f707e1d93b7b6', class: "radio-wrapper" }, h("div", { key: 'e9190c06f75a171cab63e3f74ccf771c3ed87005', class: {
134
+ }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, h("label", { key: '8765b847edc93a1b5a16506e155ed03da807bb10', class: "radio-wrapper" }, h("div", { key: '3d568a0192a32d4f0b8a920019c79ff02639b5c9', class: {
135
135
  'label-text-wrapper': true,
136
136
  'label-text-wrapper-hidden': !hasLabel,
137
- }, part: "label" }, h("slot", { key: '6cedf4e7b3bd03e4a635727dd7b6094bab64af64' })), h("div", { key: '26dd48d9d2848b7f100b732abdc4a3171adde483', class: "native-wrapper" }, this.renderRadioControl()))));
137
+ }, part: "label" }, h("slot", { key: '331f3dc2ce5f6ed8f124fc4560f92e0f7c668a85' })), h("div", { key: '473bd4aaf448753e385f2dda3fddc9f56379aa19', class: "native-wrapper" }, this.renderRadioControl()))));
138
138
  }
139
139
  static get is() { return "ion-radio"; }
140
140
  static get encapsulation() { return "shadow"; }
@@ -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
+ }
@@ -7,6 +7,8 @@ import { getIonMode } from "../../global/ionic-global";
7
7
  export class RadioGroup {
8
8
  constructor() {
9
9
  this.inputId = `ion-rg-${radioGroupIds++}`;
10
+ this.helperTextId = `${this.inputId}-helper-text`;
11
+ this.errorTextId = `${this.inputId}-error-text`;
10
12
  this.labelId = `${this.inputId}-lbl`;
11
13
  this.setRadioTabindex = (value) => {
12
14
  const radios = this.getRadios();
@@ -58,6 +60,8 @@ export class RadioGroup {
58
60
  this.compareWith = undefined;
59
61
  this.name = this.inputId;
60
62
  this.value = undefined;
63
+ this.helperText = undefined;
64
+ this.errorText = undefined;
61
65
  }
62
66
  valueChanged(value) {
63
67
  this.setRadioTabindex(value);
@@ -156,13 +160,46 @@ export class RadioGroup {
156
160
  const radioToFocus = this.getRadios().find((r) => r.tabIndex !== -1);
157
161
  radioToFocus === null || radioToFocus === void 0 ? void 0 : radioToFocus.setFocus();
158
162
  }
163
+ /**
164
+ * Renders the helper text or error text values
165
+ */
166
+ renderHintText() {
167
+ const { helperText, errorText, helperTextId, errorTextId } = this;
168
+ const hasHintText = !!helperText || !!errorText;
169
+ if (!hasHintText) {
170
+ return;
171
+ }
172
+ return (h("div", { class: "radio-group-top" }, h("div", { id: helperTextId, class: "helper-text" }, helperText), h("div", { id: errorTextId, class: "error-text" }, errorText)));
173
+ }
174
+ getHintTextID() {
175
+ const { el, helperText, errorText, helperTextId, errorTextId } = this;
176
+ if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
177
+ return errorTextId;
178
+ }
179
+ if (helperText) {
180
+ return helperTextId;
181
+ }
182
+ return undefined;
183
+ }
159
184
  render() {
160
185
  const { label, labelId, el, name, value } = this;
161
186
  const mode = getIonMode(this);
162
187
  renderHiddenInput(true, el, name, value, false);
163
- return h(Host, { key: 'a853e38901f0f4ba17bbf21ebb5da5b5c20b327e', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
188
+ return (h(Host, { key: 'cac92777297029d7fd1b6af264d92850e35dfbba', role: "radiogroup", "aria-labelledby": label ? labelId : null, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId, onClick: this.onClick, class: mode }, this.renderHintText(), h("div", { key: '6b5c634dba30d54eedc031b077863f3d6a9d9e9b', class: "radio-group-wrapper" }, h("slot", { key: '443edb3ff6f4c59d4c4324c8a19f2d6def47a322' }))));
164
189
  }
165
190
  static get is() { return "ion-radio-group"; }
191
+ static get originalStyleUrls() {
192
+ return {
193
+ "ios": ["radio-group.ios.scss"],
194
+ "md": ["radio-group.md.scss"]
195
+ };
196
+ }
197
+ static get styleUrls() {
198
+ return {
199
+ "ios": ["radio-group.ios.css"],
200
+ "md": ["radio-group.md.css"]
201
+ };
202
+ }
166
203
  static get properties() {
167
204
  return {
168
205
  "allowEmptySelection": {
@@ -240,6 +277,40 @@ export class RadioGroup {
240
277
  },
241
278
  "attribute": "value",
242
279
  "reflect": false
280
+ },
281
+ "helperText": {
282
+ "type": "string",
283
+ "mutable": false,
284
+ "complexType": {
285
+ "original": "string",
286
+ "resolved": "string | undefined",
287
+ "references": {}
288
+ },
289
+ "required": false,
290
+ "optional": true,
291
+ "docs": {
292
+ "tags": [],
293
+ "text": "The helper text to display at the top of the radio group."
294
+ },
295
+ "attribute": "helper-text",
296
+ "reflect": false
297
+ },
298
+ "errorText": {
299
+ "type": "string",
300
+ "mutable": false,
301
+ "complexType": {
302
+ "original": "string",
303
+ "resolved": "string | undefined",
304
+ "references": {}
305
+ },
306
+ "required": false,
307
+ "optional": true,
308
+ "docs": {
309
+ "tags": [],
310
+ "text": "The error text to display at the top of the radio group."
311
+ },
312
+ "attribute": "error-text",
313
+ "reflect": false
243
314
  }
244
315
  };
245
316
  }