@ionic/core 7.3.4-dev.11694542086.1f624b36 → 7.3.4-dev.11694608913.1bc64f72

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 (408) hide show
  1. package/components/button-active.js +1 -1
  2. package/components/checkbox.js +6 -3
  3. package/components/data.js +31 -7
  4. package/components/index.js +2 -2
  5. package/components/index2.js +203 -429
  6. package/components/index3.js +429 -203
  7. package/components/input-shims.js +2 -76
  8. package/components/ion-datetime-button.js +3 -0
  9. package/components/ion-datetime.js +132 -92
  10. package/components/ion-item-sliding.js +1 -1
  11. package/components/ion-menu.js +1 -1
  12. package/components/ion-modal.js +2 -2
  13. package/components/ion-nav.js +1 -1
  14. package/components/ion-range.js +3 -3
  15. package/components/ion-refresher.js +3 -3
  16. package/components/ion-reorder-group.js +1 -1
  17. package/components/ion-router-outlet.js +1 -1
  18. package/components/ion-segment.js +1 -1
  19. package/components/ion-toggle.js +7 -4
  20. package/components/ios.transition.js +1 -1
  21. package/components/md.transition.js +1 -1
  22. package/components/picker-column.js +1 -1
  23. package/components/popover.js +1 -1
  24. package/components/radio.js +6 -3
  25. package/components/swipe-back.js +1 -1
  26. package/dist/cjs/{app-globals-a63c2a19.js → app-globals-a579aafd.js} +1 -1
  27. package/dist/cjs/{button-active-0ff8e82c.js → button-active-dfd2756e.js} +1 -1
  28. package/dist/cjs/{data-967b9c15.js → data-db832785.js} +31 -7
  29. package/dist/cjs/{index-184fdd62.js → index-484b1104.js} +6 -6
  30. package/dist/cjs/{index-e6416850.js → index-653be4df.js} +1 -1
  31. package/dist/cjs/{index-be8a2ab9.js → index-8568bedb.js} +3 -3
  32. package/dist/cjs/index.cjs.js +15 -14
  33. package/dist/cjs/{input-shims-d8e322aa.js → input-shims-f8569707.js} +2 -76
  34. package/dist/cjs/ion-accordion_2.cjs.entry.js +2 -2
  35. package/dist/cjs/ion-action-sheet.cjs.entry.js +4 -4
  36. package/dist/cjs/ion-alert.cjs.entry.js +4 -4
  37. package/dist/cjs/ion-app_8.cjs.entry.js +5 -5
  38. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  39. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  40. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  41. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
  42. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  43. package/dist/cjs/ion-card_5.cjs.entry.js +2 -2
  44. package/dist/cjs/ion-checkbox.cjs.entry.js +7 -5
  45. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  46. package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
  47. package/dist/cjs/ion-datetime-button.cjs.entry.js +6 -3
  48. package/dist/cjs/ion-datetime_3.cjs.entry.js +135 -96
  49. package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
  50. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  51. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
  52. package/dist/cjs/ion-input.cjs.entry.js +2 -2
  53. package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
  54. package/dist/cjs/ion-item_8.cjs.entry.js +2 -2
  55. package/dist/cjs/ion-loading.cjs.entry.js +3 -3
  56. package/dist/cjs/ion-menu_3.cjs.entry.js +4 -4
  57. package/dist/cjs/ion-modal.cjs.entry.js +4 -4
  58. package/dist/cjs/ion-nav_2.cjs.entry.js +3 -3
  59. package/dist/cjs/ion-picker-column-internal.cjs.entry.js +2 -2
  60. package/dist/cjs/ion-picker-internal.cjs.entry.js +1 -1
  61. package/dist/cjs/ion-popover.cjs.entry.js +4 -4
  62. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  63. package/dist/cjs/ion-radio_2.cjs.entry.js +7 -5
  64. package/dist/cjs/ion-range.cjs.entry.js +4 -4
  65. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  66. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  67. package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
  68. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  69. package/dist/cjs/ion-searchbar.cjs.entry.js +2 -2
  70. package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
  71. package/dist/cjs/ion-select_3.cjs.entry.js +3 -3
  72. package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
  73. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  74. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
  75. package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
  76. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  77. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  78. package/dist/cjs/ion-toast.cjs.entry.js +3 -3
  79. package/dist/cjs/ion-toggle.cjs.entry.js +7 -5
  80. package/dist/cjs/{ionic-global-6d5d27b5.js → ionic-global-f81d8b73.js} +1 -1
  81. package/dist/cjs/ionic.cjs.js +5 -5
  82. package/dist/cjs/{ios.transition-80582b44.js → ios.transition-f7c78d7c.js} +2 -2
  83. package/dist/cjs/loader.cjs.js +4 -4
  84. package/dist/cjs/{md.transition-eeca9fb5.js → md.transition-65dc7dce.js} +2 -2
  85. package/dist/cjs/{overlays-c78a0148.js → overlays-5c1706ed.js} +1 -1
  86. package/dist/cjs/{status-tap-cc4c6539.js → status-tap-4564b66c.js} +1 -1
  87. package/dist/collection/collection-manifest.json +1 -1
  88. package/dist/collection/components/checkbox/checkbox.ios.css +35 -0
  89. package/dist/collection/components/checkbox/checkbox.js +24 -4
  90. package/dist/collection/components/checkbox/checkbox.md.css +35 -0
  91. package/dist/collection/components/checkbox/test/item/checkbox.e2e.js +13 -0
  92. package/dist/collection/components/checkbox/test/label/checkbox.e2e.js +16 -0
  93. package/dist/collection/components/datetime/datetime.ios.css +32 -29
  94. package/dist/collection/components/datetime/datetime.js +137 -93
  95. package/dist/collection/components/datetime/datetime.md.css +20 -28
  96. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +25 -0
  97. package/dist/collection/components/datetime/test/color/datetime.e2e.js +1 -1
  98. package/dist/collection/components/datetime/test/custom/datetime.e2e.js +27 -1
  99. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +15 -0
  100. package/dist/collection/components/datetime/test/set-value/datetime.e2e.js +9 -12
  101. package/dist/collection/components/datetime/utils/data.js +14 -6
  102. package/dist/collection/components/datetime/utils/parse.js +18 -1
  103. package/dist/collection/components/datetime-button/datetime-button.js +3 -0
  104. package/dist/collection/components/radio/radio.ios.css +35 -0
  105. package/dist/collection/components/radio/radio.js +24 -4
  106. package/dist/collection/components/radio/radio.md.css +35 -0
  107. package/dist/collection/components/radio/test/item/radio.e2e.js +15 -0
  108. package/dist/collection/components/radio/test/label-placement/radio.e2e.js +20 -0
  109. package/dist/collection/components/range/range.ios.css +41 -1
  110. package/dist/collection/components/range/range.js +3 -3
  111. package/dist/collection/components/range/range.md.css +41 -1
  112. package/dist/collection/components/range/test/label/range.e2e.js +48 -0
  113. package/dist/collection/components/toggle/test/item/toggle.e2e.js +15 -0
  114. package/dist/collection/components/toggle/test/label/toggle.e2e.js +16 -0
  115. package/dist/collection/components/toggle/toggle.ios.css +35 -1
  116. package/dist/collection/components/toggle/toggle.js +24 -4
  117. package/dist/collection/components/toggle/toggle.md.css +35 -1
  118. package/dist/collection/index.js +1 -0
  119. package/dist/collection/utils/input-shims/hacks/scroll-assist.js +2 -76
  120. package/dist/docs.json +148 -19
  121. package/dist/esm/{app-globals-c7886b40.js → app-globals-e8ddf830.js} +1 -1
  122. package/dist/esm/{button-active-b76ae4ec.js → button-active-2da0f611.js} +1 -1
  123. package/dist/esm/{data-4b448e3a.js → data-009dbf15.js} +31 -7
  124. package/dist/esm/{index-01839411.js → index-6391de89.js} +3 -3
  125. package/dist/esm/{index-adfb2000.js → index-847f2fde.js} +6 -6
  126. package/dist/esm/{index-48f5e259.js → index-b3e05099.js} +1 -1
  127. package/dist/esm/index.js +7 -7
  128. package/dist/esm/{input-shims-c738363e.js → input-shims-af993f05.js} +2 -76
  129. package/dist/esm/ion-accordion_2.entry.js +2 -2
  130. package/dist/esm/ion-action-sheet.entry.js +4 -4
  131. package/dist/esm/ion-alert.entry.js +4 -4
  132. package/dist/esm/ion-app_8.entry.js +5 -5
  133. package/dist/esm/ion-avatar_3.entry.js +2 -2
  134. package/dist/esm/ion-back-button.entry.js +2 -2
  135. package/dist/esm/ion-backdrop.entry.js +2 -2
  136. package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
  137. package/dist/esm/ion-button_2.entry.js +2 -2
  138. package/dist/esm/ion-card_5.entry.js +2 -2
  139. package/dist/esm/ion-checkbox.entry.js +7 -5
  140. package/dist/esm/ion-chip.entry.js +2 -2
  141. package/dist/esm/ion-col_3.entry.js +2 -2
  142. package/dist/esm/ion-datetime-button.entry.js +6 -3
  143. package/dist/esm/ion-datetime_3.entry.js +135 -96
  144. package/dist/esm/ion-fab_3.entry.js +2 -2
  145. package/dist/esm/ion-img.entry.js +2 -2
  146. package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
  147. package/dist/esm/ion-input.entry.js +2 -2
  148. package/dist/esm/ion-item-option_3.entry.js +2 -2
  149. package/dist/esm/ion-item_8.entry.js +2 -2
  150. package/dist/esm/ion-loading.entry.js +3 -3
  151. package/dist/esm/ion-menu_3.entry.js +4 -4
  152. package/dist/esm/ion-modal.entry.js +4 -4
  153. package/dist/esm/ion-nav_2.entry.js +3 -3
  154. package/dist/esm/ion-picker-column-internal.entry.js +2 -2
  155. package/dist/esm/ion-picker-internal.entry.js +1 -1
  156. package/dist/esm/ion-popover.entry.js +4 -4
  157. package/dist/esm/ion-progress-bar.entry.js +2 -2
  158. package/dist/esm/ion-radio_2.entry.js +7 -5
  159. package/dist/esm/ion-range.entry.js +4 -4
  160. package/dist/esm/ion-refresher_2.entry.js +2 -2
  161. package/dist/esm/ion-reorder_2.entry.js +2 -2
  162. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  163. package/dist/esm/ion-route_4.entry.js +2 -2
  164. package/dist/esm/ion-searchbar.entry.js +2 -2
  165. package/dist/esm/ion-segment_2.entry.js +2 -2
  166. package/dist/esm/ion-select_3.entry.js +3 -3
  167. package/dist/esm/ion-spinner.entry.js +2 -2
  168. package/dist/esm/ion-split-pane.entry.js +2 -2
  169. package/dist/esm/ion-tab-bar_2.entry.js +2 -2
  170. package/dist/esm/ion-tab_2.entry.js +1 -1
  171. package/dist/esm/ion-text.entry.js +2 -2
  172. package/dist/esm/ion-textarea.entry.js +2 -2
  173. package/dist/esm/ion-toast.entry.js +3 -3
  174. package/dist/esm/ion-toggle.entry.js +7 -5
  175. package/dist/esm/{ionic-global-9080266a.js → ionic-global-1ef19007.js} +1 -1
  176. package/dist/esm/ionic.js +6 -6
  177. package/dist/esm/{ios.transition-f43871cd.js → ios.transition-3137d23e.js} +2 -2
  178. package/dist/esm/loader.js +5 -5
  179. package/dist/esm/{md.transition-12d21ad0.js → md.transition-48b3b77c.js} +2 -2
  180. package/dist/esm/{overlays-4565894b.js → overlays-e1dadfe6.js} +1 -1
  181. package/dist/esm/{status-tap-121c711d.js → status-tap-823a0df3.js} +1 -1
  182. package/dist/esm-es5/app-globals-e8ddf830.js +4 -0
  183. package/dist/esm-es5/{button-active-b76ae4ec.js → button-active-2da0f611.js} +1 -1
  184. package/dist/esm-es5/data-009dbf15.js +4 -0
  185. package/dist/esm-es5/{index-01839411.js → index-6391de89.js} +1 -1
  186. package/dist/esm-es5/{index-48f5e259.js → index-b3e05099.js} +1 -1
  187. package/dist/esm-es5/index.js +1 -1
  188. package/dist/esm-es5/input-shims-af993f05.js +4 -0
  189. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  190. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  191. package/dist/esm-es5/ion-alert.entry.js +1 -1
  192. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  193. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  194. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  195. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  196. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  197. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  198. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  199. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  200. package/dist/esm-es5/ion-chip.entry.js +1 -1
  201. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  202. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  203. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  204. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  205. package/dist/esm-es5/ion-img.entry.js +1 -1
  206. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  207. package/dist/esm-es5/ion-input.entry.js +1 -1
  208. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  209. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  210. package/dist/esm-es5/ion-loading.entry.js +1 -1
  211. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  212. package/dist/esm-es5/ion-modal.entry.js +1 -1
  213. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  214. package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
  215. package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
  216. package/dist/esm-es5/ion-popover.entry.js +1 -1
  217. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  218. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  219. package/dist/esm-es5/ion-range.entry.js +1 -1
  220. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  221. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  222. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  223. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  224. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  225. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  226. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  227. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  228. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  229. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  230. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  231. package/dist/esm-es5/ion-text.entry.js +1 -1
  232. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  233. package/dist/esm-es5/ion-toast.entry.js +1 -1
  234. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  235. package/dist/esm-es5/{ionic-global-9080266a.js → ionic-global-1ef19007.js} +1 -1
  236. package/dist/esm-es5/ionic.js +1 -1
  237. package/dist/esm-es5/{ios.transition-f43871cd.js → ios.transition-3137d23e.js} +1 -1
  238. package/dist/esm-es5/loader.js +1 -1
  239. package/dist/esm-es5/md.transition-48b3b77c.js +4 -0
  240. package/dist/esm-es5/{overlays-4565894b.js → overlays-e1dadfe6.js} +1 -1
  241. package/dist/esm-es5/{status-tap-121c711d.js → status-tap-823a0df3.js} +1 -1
  242. package/dist/html.html-data.json +52 -4
  243. package/dist/ionic/index.esm.js +1 -1
  244. package/dist/ionic/ionic.esm.js +1 -1
  245. package/dist/ionic/ionic.js +1 -1
  246. package/dist/ionic/{p-9b53c813.entry.js → p-0142ba6d.entry.js} +1 -1
  247. package/dist/ionic/{p-516421e2.system.entry.js → p-0219ac12.system.entry.js} +1 -1
  248. package/dist/ionic/{p-c2d6088f.entry.js → p-0660215f.entry.js} +1 -1
  249. package/dist/ionic/p-06902103.system.js +4 -0
  250. package/dist/ionic/{p-4446e19f.system.entry.js → p-06d6e9c0.system.entry.js} +1 -1
  251. package/dist/ionic/{p-74834696.system.entry.js → p-0b68c41d.system.entry.js} +1 -1
  252. package/dist/ionic/{p-e239ab05.system.entry.js → p-0cc2bf5a.system.entry.js} +1 -1
  253. package/dist/ionic/{p-5df94bf8.entry.js → p-0ff17c93.entry.js} +1 -1
  254. package/dist/ionic/{p-d57e8b06.js → p-11248f01.js} +1 -1
  255. package/dist/ionic/{p-5080e623.system.entry.js → p-11a42c03.system.entry.js} +1 -1
  256. package/dist/ionic/{p-a8270ae8.system.entry.js → p-1d82df31.system.entry.js} +1 -1
  257. package/dist/ionic/{p-48d378cf.entry.js → p-1ec4dc01.entry.js} +1 -1
  258. package/dist/ionic/p-1f4adf06.system.entry.js +4 -0
  259. package/dist/ionic/{p-4d2807fa.entry.js → p-1fb9aab8.entry.js} +1 -1
  260. package/dist/ionic/{p-9f3ad626.system.entry.js → p-2061c86f.system.entry.js} +1 -1
  261. package/dist/ionic/{p-28d8b87b.entry.js → p-208f640c.entry.js} +1 -1
  262. package/dist/ionic/p-218b6f33.entry.js +4 -0
  263. package/dist/ionic/{p-d8d30fd1.system.entry.js → p-2539e967.system.entry.js} +1 -1
  264. package/dist/ionic/p-273e78ae.entry.js +4 -0
  265. package/dist/ionic/p-2da6ba37.system.entry.js +4 -0
  266. package/dist/ionic/{p-4e1a58c6.system.entry.js → p-32d11ce2.system.entry.js} +1 -1
  267. package/dist/ionic/{p-c8c0d58a.system.entry.js → p-336420f9.system.entry.js} +1 -1
  268. package/dist/ionic/{p-be187db3.entry.js → p-341d5877.entry.js} +1 -1
  269. package/dist/ionic/{p-11d0977d.entry.js → p-38dd9aec.entry.js} +1 -1
  270. package/dist/ionic/{p-fde174d6.system.entry.js → p-3ef88fc2.system.entry.js} +1 -1
  271. package/dist/ionic/p-40138199.entry.js +4 -0
  272. package/dist/ionic/{p-765e6339.entry.js → p-430e902d.entry.js} +1 -1
  273. package/dist/ionic/p-44ef7224.system.js +4 -0
  274. package/dist/ionic/p-4531b920.system.js +4 -0
  275. package/dist/ionic/{p-8db97b90.entry.js → p-48144921.entry.js} +1 -1
  276. package/dist/ionic/{p-0ce43a8f.system.entry.js → p-4a153fbc.system.entry.js} +1 -1
  277. package/dist/ionic/p-4ca1ce6b.system.entry.js +4 -0
  278. package/dist/ionic/p-51b165af.system.js +4 -0
  279. package/dist/ionic/{p-98bfaff3.system.entry.js → p-57dc87eb.system.entry.js} +1 -1
  280. package/dist/ionic/{p-83459b99.entry.js → p-57f0efcc.entry.js} +1 -1
  281. package/dist/ionic/p-582dc7c1.js +4 -0
  282. package/dist/ionic/{p-ee55302a.system.entry.js → p-5ba27716.system.entry.js} +1 -1
  283. package/dist/ionic/{p-68deb933.entry.js → p-5c17f888.entry.js} +1 -1
  284. package/dist/ionic/{p-a037b6d5.system.entry.js → p-62324608.system.entry.js} +1 -1
  285. package/dist/ionic/{p-f62bed60.entry.js → p-639d7b25.entry.js} +1 -1
  286. package/dist/ionic/p-64ad5765.entry.js +4 -0
  287. package/dist/ionic/{p-9eced28c.entry.js → p-653f2fc6.entry.js} +1 -1
  288. package/dist/ionic/{p-b9179eab.entry.js → p-67b891af.entry.js} +1 -1
  289. package/dist/ionic/{p-8bcd482b.entry.js → p-68e0ea3c.entry.js} +1 -1
  290. package/dist/ionic/{p-2e5930dd.system.js → p-69303bb5.system.js} +1 -1
  291. package/dist/ionic/{p-42e0558f.entry.js → p-6b3afb0f.entry.js} +1 -1
  292. package/dist/ionic/{p-ec344ed1.system.entry.js → p-6bf632d0.system.entry.js} +1 -1
  293. package/dist/ionic/{p-cd002251.entry.js → p-728ac2b3.entry.js} +1 -1
  294. package/dist/ionic/p-778460f7.js +4 -0
  295. package/dist/ionic/{p-3f15f60b.entry.js → p-77f91ca9.entry.js} +1 -1
  296. package/dist/ionic/{p-b052b578.entry.js → p-785b0913.entry.js} +1 -1
  297. package/dist/ionic/{p-ff3d728d.system.js → p-7b16490a.system.js} +1 -1
  298. package/dist/ionic/{p-629b0629.js → p-7c938ad6.js} +1 -1
  299. package/dist/ionic/p-7cfd253c.js +4 -0
  300. package/dist/ionic/{p-5e549223.system.js → p-81597423.system.js} +1 -1
  301. package/dist/ionic/{p-3d5a6d14.system.js → p-82632e15.system.js} +1 -1
  302. package/dist/ionic/{p-23ddd787.system.entry.js → p-82f5c07e.system.entry.js} +1 -1
  303. package/dist/ionic/{p-b453b38d.entry.js → p-82f8ee51.entry.js} +1 -1
  304. package/dist/ionic/{p-a314559e.system.js → p-83008f7c.system.js} +2 -2
  305. package/dist/ionic/{p-7474a472.system.entry.js → p-839bd69f.system.entry.js} +1 -1
  306. package/dist/ionic/{p-9be96bf3.system.entry.js → p-83bcaec9.system.entry.js} +1 -1
  307. package/dist/ionic/p-86c5c320.entry.js +4 -0
  308. package/dist/ionic/{p-95188051.system.entry.js → p-87383d00.system.entry.js} +1 -1
  309. package/dist/ionic/{p-57847936.entry.js → p-8a676776.entry.js} +1 -1
  310. package/dist/ionic/{p-5fc777e6.system.js → p-8ba724fa.system.js} +1 -1
  311. package/dist/ionic/p-90ec5785.system.entry.js +4 -0
  312. package/dist/ionic/{p-b3f6f321.js → p-91459620.js} +1 -1
  313. package/dist/ionic/{p-49f2eaa6.entry.js → p-93e47822.entry.js} +1 -1
  314. package/dist/ionic/{p-fa8fc77b.system.entry.js → p-96c2a273.system.entry.js} +1 -1
  315. package/dist/ionic/{p-6dff4431.entry.js → p-98a189f3.entry.js} +1 -1
  316. package/dist/ionic/{p-0dbfa45f.entry.js → p-98ebc376.entry.js} +1 -1
  317. package/dist/ionic/{p-07656a8a.entry.js → p-99028088.entry.js} +1 -1
  318. package/dist/ionic/{p-84084b75.entry.js → p-99140340.entry.js} +1 -1
  319. package/dist/ionic/{p-47a11fc4.entry.js → p-9c32000a.entry.js} +1 -1
  320. package/dist/ionic/p-a2b25750.js +4 -0
  321. package/dist/ionic/{p-c2b524f3.system.entry.js → p-a34669bf.system.entry.js} +1 -1
  322. package/dist/ionic/{p-bacf09d3.entry.js → p-a3f9d271.entry.js} +1 -1
  323. package/dist/ionic/p-a62c0ff4.js +4 -0
  324. package/dist/ionic/{p-5a9dc764.system.entry.js → p-af0bc751.system.entry.js} +1 -1
  325. package/dist/ionic/p-af986299.system.entry.js +4 -0
  326. package/dist/ionic/{p-6ccffb74.system.entry.js → p-b0e9e0b8.system.entry.js} +1 -1
  327. package/dist/ionic/{p-563068af.js → p-b22ee0dc.js} +1 -1
  328. package/dist/ionic/{p-204fb8f0.system.entry.js → p-b2514862.system.entry.js} +1 -1
  329. package/dist/ionic/p-b321c999.entry.js +4 -0
  330. package/dist/ionic/{p-bfee11b2.system.js → p-b32742f3.system.js} +1 -1
  331. package/dist/ionic/{p-3bf120f8.system.entry.js → p-b9654781.system.entry.js} +1 -1
  332. package/dist/ionic/{p-1c236453.system.entry.js → p-bbae0ac3.system.entry.js} +1 -1
  333. package/dist/ionic/{p-32983529.system.entry.js → p-bf4b8d8a.system.entry.js} +1 -1
  334. package/dist/ionic/{p-5163baf4.system.entry.js → p-c4afbed8.system.entry.js} +1 -1
  335. package/dist/ionic/p-c53dd7a2.entry.js +4 -0
  336. package/dist/ionic/{p-a033a91d.system.entry.js → p-d1bab5e7.system.entry.js} +1 -1
  337. package/dist/ionic/{p-5260588f.system.entry.js → p-d1d3b740.system.entry.js} +1 -1
  338. package/dist/ionic/{p-59b40b60.entry.js → p-d3378c35.entry.js} +1 -1
  339. package/dist/ionic/{p-eb91aee6.entry.js → p-d5e3bff3.entry.js} +1 -1
  340. package/dist/ionic/{p-dc4c9086.system.entry.js → p-d693e765.system.entry.js} +1 -1
  341. package/dist/ionic/p-d898dd46.js +4 -0
  342. package/dist/ionic/p-d8a0267b.system.entry.js +4 -0
  343. package/dist/ionic/{p-ef8a8827.system.entry.js → p-dbb48066.system.entry.js} +1 -1
  344. package/dist/ionic/{p-574411f2.system.entry.js → p-dc49c681.system.entry.js} +1 -1
  345. package/dist/ionic/{p-a122ecd0.system.js → p-df6743df.system.js} +1 -1
  346. package/dist/ionic/{p-6276ba2f.system.entry.js → p-e112994b.system.entry.js} +1 -1
  347. package/dist/ionic/{p-3c325277.js → p-e3cba96d.js} +1 -1
  348. package/dist/ionic/p-e3d5608d.system.js +4 -0
  349. package/dist/ionic/{p-2ac2278e.system.entry.js → p-e805ff9f.system.entry.js} +1 -1
  350. package/dist/ionic/{p-07f5e286.entry.js → p-e9c112ba.entry.js} +1 -1
  351. package/dist/ionic/{p-ec7ff98b.entry.js → p-ed7b205b.entry.js} +1 -1
  352. package/dist/ionic/{p-26276eb7.system.entry.js → p-f5b7b710.system.entry.js} +1 -1
  353. package/dist/ionic/p-f5c19164.entry.js +4 -0
  354. package/dist/ionic/{p-9e8727d6.entry.js → p-f7faa32d.entry.js} +1 -1
  355. package/dist/ionic/{p-7b14f1a9.entry.js → p-f9567c67.entry.js} +1 -1
  356. package/dist/ionic/{p-810f1bc9.system.entry.js → p-f95f798a.system.entry.js} +1 -1
  357. package/dist/ionic/{p-6eb7b33c.system.entry.js → p-fa3327e8.system.entry.js} +1 -1
  358. package/dist/ionic/{p-072f99fd.entry.js → p-fabb7294.entry.js} +1 -1
  359. package/dist/ionic/{p-041ac2c3.entry.js → p-fac1660b.entry.js} +1 -1
  360. package/dist/ionic/{p-1916030e.entry.js → p-fe83e3e2.entry.js} +1 -1
  361. package/dist/ionic/{p-b703ebeb.system.entry.js → p-fea46870.system.entry.js} +1 -1
  362. package/dist/types/components/checkbox/checkbox.d.ts +8 -1
  363. package/dist/types/components/datetime/datetime.d.ts +23 -10
  364. package/dist/types/components/datetime/utils/data.d.ts +1 -1
  365. package/dist/types/components/datetime/utils/parse.d.ts +3 -3
  366. package/dist/types/components/radio/radio.d.ts +8 -1
  367. package/dist/types/components/range/range.d.ts +2 -1
  368. package/dist/types/components/toast/toast-interface.d.ts +3 -0
  369. package/dist/types/components/toggle/toggle.d.ts +8 -1
  370. package/dist/types/components.d.ts +40 -16
  371. package/dist/types/index.d.ts +1 -0
  372. package/dist/types/interface.d.ts +1 -0
  373. package/dist/types/stencil-public-runtime.d.ts +3 -3
  374. package/hydrate/index.d.ts +5 -5
  375. package/hydrate/index.js +234 -150
  376. package/package.json +3 -3
  377. package/dist/esm-es5/app-globals-c7886b40.js +0 -4
  378. package/dist/esm-es5/data-4b448e3a.js +0 -4
  379. package/dist/esm-es5/input-shims-c738363e.js +0 -4
  380. package/dist/esm-es5/md.transition-12d21ad0.js +0 -4
  381. package/dist/ionic/p-17e961cf.entry.js +0 -4
  382. package/dist/ionic/p-1b533a76.system.entry.js +0 -4
  383. package/dist/ionic/p-2b0ecc04.entry.js +0 -4
  384. package/dist/ionic/p-44a6f15d.system.entry.js +0 -4
  385. package/dist/ionic/p-4f7109fa.entry.js +0 -4
  386. package/dist/ionic/p-56495958.js +0 -4
  387. package/dist/ionic/p-601fd53c.js +0 -4
  388. package/dist/ionic/p-7106c152.system.js +0 -4
  389. package/dist/ionic/p-75d4ceab.js +0 -4
  390. package/dist/ionic/p-8f7edf3e.js +0 -4
  391. package/dist/ionic/p-99a3df5c.entry.js +0 -4
  392. package/dist/ionic/p-9eaaa910.entry.js +0 -4
  393. package/dist/ionic/p-a533868d.system.js +0 -4
  394. package/dist/ionic/p-af6125d1.system.entry.js +0 -4
  395. package/dist/ionic/p-b8d7f0eb.system.entry.js +0 -4
  396. package/dist/ionic/p-c254bde2.js +0 -4
  397. package/dist/ionic/p-c68a8814.system.js +0 -4
  398. package/dist/ionic/p-c7ce7e18.entry.js +0 -4
  399. package/dist/ionic/p-cc8910e7.system.js +0 -4
  400. package/dist/ionic/p-dacb0258.js +0 -4
  401. package/dist/ionic/p-dc7d392d.entry.js +0 -4
  402. package/dist/ionic/p-e65aed58.system.entry.js +0 -4
  403. package/dist/ionic/p-f3ec1f2b.entry.js +0 -4
  404. package/dist/ionic/p-f58cbf92.system.js +0 -4
  405. package/dist/ionic/p-fb26fa56.system.entry.js +0 -4
  406. /package/dist/esm-es5/{index-adfb2000.js → index-847f2fde.js} +0 -0
  407. /package/dist/ionic/{p-a18eb556.js → p-156967ec.js} +0 -0
  408. /package/dist/ionic/{p-2441ba84.system.js → p-5b553dc0.system.js} +0 -0
@@ -71,6 +71,7 @@ export class Toggle {
71
71
  this.labelPlacement = 'start';
72
72
  this.legacy = undefined;
73
73
  this.justify = 'space-between';
74
+ this.alignment = 'center';
74
75
  }
75
76
  disabledChanged() {
76
77
  this.emitStyle();
@@ -168,7 +169,7 @@ export class Toggle {
168
169
  return legacyFormController.hasLegacyControl() ? this.renderLegacyToggle() : this.renderToggle();
169
170
  }
170
171
  renderToggle() {
171
- const { activated, color, checked, disabled, el, justify, labelPlacement, inputId, name } = this;
172
+ const { activated, color, checked, disabled, el, justify, labelPlacement, inputId, name, alignment } = this;
172
173
  const mode = getIonMode(this);
173
174
  const value = this.getValue();
174
175
  const rtl = isRTL(el) ? 'rtl' : 'ltr';
@@ -180,6 +181,7 @@ export class Toggle {
180
181
  'toggle-checked': checked,
181
182
  'toggle-disabled': disabled,
182
183
  [`toggle-justify-${justify}`]: true,
184
+ [`toggle-alignment-${alignment}`]: true,
183
185
  [`toggle-label-placement-${labelPlacement}`]: true,
184
186
  [`toggle-${rtl}`]: true,
185
187
  }) }, h("label", { class: "toggle-wrapper" }, h("input", Object.assign({ type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, this.inheritedAttributes)), h("div", { class: {
@@ -352,15 +354,15 @@ Developers can dismiss this warning by removing their usage of the "legacy" prop
352
354
  "type": "string",
353
355
  "mutable": false,
354
356
  "complexType": {
355
- "original": "'start' | 'end' | 'fixed'",
356
- "resolved": "\"end\" | \"fixed\" | \"start\"",
357
+ "original": "'start' | 'end' | 'fixed' | 'stacked'",
358
+ "resolved": "\"end\" | \"fixed\" | \"stacked\" | \"start\"",
357
359
  "references": {}
358
360
  },
359
361
  "required": false,
360
362
  "optional": false,
361
363
  "docs": {
362
364
  "tags": [],
363
- "text": "Where to place the label relative to the input.\n`\"start\"`: The label will appear to the left of the toggle in LTR and to the right in RTL.\n`\"end\"`: The label will appear to the right of the toggle in LTR and to the left in RTL.\n`\"fixed\"`: The label has the same behavior as `\"start\"` except it also has a fixed width. Long text will be truncated with ellipses (\"...\")."
365
+ "text": "Where to place the label relative to the input.\n`\"start\"`: The label will appear to the left of the toggle in LTR and to the right in RTL.\n`\"end\"`: The label will appear to the right of the toggle in LTR and to the left in RTL.\n`\"fixed\"`: The label has the same behavior as `\"start\"` except it also has a fixed width. Long text will be truncated with ellipses (\"...\").\n`\"stacked\"`: The label will appear above the toggle regardless of the direction. The alignment of the label can be controlled with the `alignment` property."
364
366
  },
365
367
  "attribute": "label-placement",
366
368
  "reflect": false,
@@ -400,6 +402,24 @@ Developers can dismiss this warning by removing their usage of the "legacy" prop
400
402
  "attribute": "justify",
401
403
  "reflect": false,
402
404
  "defaultValue": "'space-between'"
405
+ },
406
+ "alignment": {
407
+ "type": "string",
408
+ "mutable": false,
409
+ "complexType": {
410
+ "original": "'start' | 'center'",
411
+ "resolved": "\"center\" | \"start\"",
412
+ "references": {}
413
+ },
414
+ "required": false,
415
+ "optional": false,
416
+ "docs": {
417
+ "tags": [],
418
+ "text": "How to control the alignment of the toggle and label on the cross axis.\n``\"start\"`: The label and control will appear on the left of the cross axis in LTR, and on the right side in RTL.\n`\"center\"`: The label and control will appear at the center of the cross axis in both LTR and RTL."
419
+ },
420
+ "attribute": "alignment",
421
+ "reflect": false,
422
+ "defaultValue": "'center'"
403
423
  }
404
424
  };
405
425
  }
@@ -123,7 +123,6 @@ input {
123
123
  display: flex;
124
124
  position: relative;
125
125
  flex-grow: 1;
126
- align-items: center;
127
126
  height: inherit;
128
127
  transition: background-color 15ms linear;
129
128
  cursor: inherit;
@@ -146,6 +145,15 @@ input {
146
145
  margin-bottom: 10px;
147
146
  }
148
147
 
148
+ :host(.in-item.toggle-label-placement-stacked) .label-text-wrapper {
149
+ margin-top: 10px;
150
+ margin-bottom: 16px;
151
+ }
152
+
153
+ :host(.in-item.toggle-label-placement-stacked) .native-wrapper {
154
+ margin-bottom: 10px;
155
+ }
156
+
149
157
  /**
150
158
  * If no label text is placed into the slot
151
159
  * then the element should be hidden otherwise
@@ -172,6 +180,14 @@ input {
172
180
  justify-content: end;
173
181
  }
174
182
 
183
+ :host(.toggle-alignment-start) .toggle-wrapper {
184
+ align-items: start;
185
+ }
186
+
187
+ :host(.toggle-alignment-center) .toggle-wrapper {
188
+ align-items: center;
189
+ }
190
+
175
191
  /**
176
192
  * Label is on the left of the input in LTR and
177
193
  * on the right in RTL.
@@ -235,6 +251,24 @@ input {
235
251
  max-width: 200px;
236
252
  }
237
253
 
254
+ /**
255
+ * Label is on top of the toggle.
256
+ */
257
+ :host(.toggle-label-placement-stacked) .toggle-wrapper {
258
+ flex-direction: column;
259
+ }
260
+
261
+ :host(.toggle-label-placement-stacked) .label-text-wrapper {
262
+ /**
263
+ * The margin between the label and
264
+ * the toggle should be on the bottom
265
+ * when the label sits on top.
266
+ */
267
+ margin-left: 0;
268
+ margin-right: 0;
269
+ margin-bottom: 16px;
270
+ }
271
+
238
272
  .toggle-icon-wrapper {
239
273
  display: flex;
240
274
  position: relative;
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import "ionicons";
5
5
  export { createAnimation } from './utils/animation/animation';
6
+ export { getIonPageElement } from './utils/transition';
6
7
  export { iosTransitionAnimation } from './utils/transition/ios.transition';
7
8
  export { mdTransitionAnimation } from './utils/transition/md.transition';
8
9
  export { getTimeGivenProgression } from './utils/animation/cubic-bezier';
@@ -20,68 +20,6 @@ export const enableScrollAssist = (componentEl, inputEl, contentEl, footerEl, ke
20
20
  * Resize info is available on Capacitor 4+
21
21
  */
22
22
  const addScrollPadding = enableScrollPadding && (keyboardResize === undefined || keyboardResize.mode === KeyboardResize.None);
23
- /**
24
- * This tracks whether or not the keyboard has been
25
- * presented for a single focused text field. Note
26
- * that it does not track if the keyboard is open
27
- * in general such as if the keyboard is open for
28
- * a different focused text field.
29
- */
30
- let hasKeyboardBeenPresentedForTextField = false;
31
- /**
32
- * Scroll assist is run when a text field
33
- * is focused. However, it may need to
34
- * re-run when the keyboard size changes
35
- * such that the text field is now hidden
36
- * underneath the keyboard.
37
- * This function re-runs scroll assist
38
- * when that happens.
39
- *
40
- * One limitation of this is on a web browser
41
- * where native keyboard APIs do not have cross-browser
42
- * support. `ionKeyboardDidShow` relies on the Visual Viewport API.
43
- * This means that if the keyboard changes but does not change
44
- * geometry, then scroll assist will not re-run even if
45
- * the user has scrolled the text field under the keyboard.
46
- * This should not be a problem when running in Cordova/Capacitor
47
- * because `ionKeyboardDidShow` uses the native events
48
- * which fire every time the keyboard changes.
49
- */
50
- const keyboardShow = (ev) => {
51
- /**
52
- * If the keyboard has not yet been presented
53
- * for this text field then the text field has just
54
- * received focus. In that case, the focusin listener
55
- * will run scroll assist.
56
- */
57
- if (hasKeyboardBeenPresentedForTextField === false) {
58
- hasKeyboardBeenPresentedForTextField = true;
59
- return;
60
- }
61
- /**
62
- * Otherwise, the keyboard has already been presented
63
- * for the focused text field.
64
- * This means that the keyboard likely changed
65
- * geometry, and we need to re-run scroll assist.
66
- * This can happen when the user rotates their device
67
- * or when they switch keyboards.
68
- *
69
- * Make sure we pass in the computed keyboard height
70
- * rather than the estimated keyboard height.
71
- *
72
- * Since the keyboard is already open then we do not
73
- * need to wait for the webview to resize, so we pass
74
- * "waitForResize: false".
75
- */
76
- jsSetFocus(componentEl, inputEl, contentEl, footerEl, ev.detail.keyboardHeight, addScrollPadding, disableClonedInput, false);
77
- };
78
- /**
79
- * Reset the internal state when the text field loses focus.
80
- */
81
- const focusOut = () => {
82
- hasKeyboardBeenPresentedForTextField = false;
83
- window.removeEventListener('ionKeyboardDidShow', keyboardShow);
84
- };
85
23
  /**
86
24
  * When the input is about to receive
87
25
  * focus, we need to move it to prevent
@@ -99,22 +37,10 @@ export const enableScrollAssist = (componentEl, inputEl, contentEl, footerEl, ke
99
37
  return;
100
38
  }
101
39
  jsSetFocus(componentEl, inputEl, contentEl, footerEl, keyboardHeight, addScrollPadding, disableClonedInput);
102
- /**
103
- * Listen for any changes to the keyboard
104
- * dimensions in case we need to re-run scroll assist.
105
- */
106
- window.addEventListener('ionKeyboardDidShow', keyboardShow);
107
- componentEl.addEventListener('focusout', focusOut, true);
108
40
  };
109
41
  componentEl.addEventListener('focusin', focusIn, true);
110
- /**
111
- * Scroll assist is being destroyed for this
112
- * text field instance, so remove any remaining listeners.
113
- */
114
42
  return () => {
115
43
  componentEl.removeEventListener('focusin', focusIn, true);
116
- window.removeEventListener('ionKeyboardDidShow', keyboardShow);
117
- componentEl.removeEventListener('focusout', focusOut, true);
118
44
  };
119
45
  };
120
46
  /**
@@ -133,7 +59,7 @@ const setManualFocus = (el) => {
133
59
  el.setAttribute(SKIP_SCROLL_ASSIST, 'true');
134
60
  el.focus();
135
61
  };
136
- const jsSetFocus = async (componentEl, inputEl, contentEl, footerEl, keyboardHeight, enableScrollPadding, disableClonedInput = false, waitForResize = true) => {
62
+ const jsSetFocus = async (componentEl, inputEl, contentEl, footerEl, keyboardHeight, enableScrollPadding, disableClonedInput = false) => {
137
63
  if (!contentEl && !footerEl) {
138
64
  return;
139
65
  }
@@ -224,7 +150,7 @@ const jsSetFocus = async (componentEl, inputEl, contentEl, footerEl, keyboardHei
224
150
  * bandwidth to become available.
225
151
  */
226
152
  const totalScrollAmount = scrollEl.scrollHeight - scrollEl.clientHeight;
227
- if (waitForResize && scrollData.scrollAmount > totalScrollAmount - scrollEl.scrollTop) {
153
+ if (scrollData.scrollAmount > totalScrollAmount - scrollEl.scrollTop) {
228
154
  /**
229
155
  * On iOS devices, the system will show a "Passwords" bar above the keyboard
230
156
  * after the initial keyboard is shown. This prevents the webview from resizing
package/dist/docs.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
- "timestamp": "2023-09-12T18:10:21",
2
+ "timestamp": "2023-09-13T12:44:09",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
- "version": "4.2.1",
5
+ "version": "4.2.0",
6
6
  "typescriptVersion": "5.1.6"
7
7
  },
8
8
  "components": [
@@ -4959,6 +4959,33 @@
4959
4959
  ],
4960
4960
  "usage": {},
4961
4961
  "props": [
4962
+ {
4963
+ "name": "alignment",
4964
+ "type": "\"center\" | \"start\"",
4965
+ "complexType": {
4966
+ "original": "'start' | 'center'",
4967
+ "resolved": "\"center\" | \"start\"",
4968
+ "references": {}
4969
+ },
4970
+ "mutable": false,
4971
+ "attr": "alignment",
4972
+ "reflectToAttr": false,
4973
+ "docs": "How to control the alignment of the checkbox and label on the cross axis.\n`\"start\"`: The label and control will appear on the left of the cross axis in LTR, and on the right side in RTL.\n`\"center\"`: The label and control will appear at the center of the cross axis in both LTR and RTL.",
4974
+ "docsTags": [],
4975
+ "default": "'center'",
4976
+ "values": [
4977
+ {
4978
+ "value": "center",
4979
+ "type": "string"
4980
+ },
4981
+ {
4982
+ "value": "start",
4983
+ "type": "string"
4984
+ }
4985
+ ],
4986
+ "optional": false,
4987
+ "required": false
4988
+ },
4962
4989
  {
4963
4990
  "name": "checked",
4964
4991
  "type": "boolean",
@@ -5124,16 +5151,16 @@
5124
5151
  },
5125
5152
  {
5126
5153
  "name": "labelPlacement",
5127
- "type": "\"end\" | \"fixed\" | \"start\"",
5154
+ "type": "\"end\" | \"fixed\" | \"stacked\" | \"start\"",
5128
5155
  "complexType": {
5129
- "original": "'start' | 'end' | 'fixed'",
5130
- "resolved": "\"end\" | \"fixed\" | \"start\"",
5156
+ "original": "'start' | 'end' | 'fixed' | 'stacked'",
5157
+ "resolved": "\"end\" | \"fixed\" | \"stacked\" | \"start\"",
5131
5158
  "references": {}
5132
5159
  },
5133
5160
  "mutable": false,
5134
5161
  "attr": "label-placement",
5135
5162
  "reflectToAttr": false,
5136
- "docs": "Where to place the label relative to the checkbox.\n`\"start\"`: The label will appear to the left of the checkbox in LTR and to the right in RTL.\n`\"end\"`: The label will appear to the right of the checkbox in LTR and to the left in RTL.\n`\"fixed\"`: The label has the same behavior as `\"start\"` except it also has a fixed width. Long text will be truncated with ellipses (\"...\").",
5163
+ "docs": "Where to place the label relative to the checkbox.\n`\"start\"`: The label will appear to the left of the checkbox in LTR and to the right in RTL.\n`\"end\"`: The label will appear to the right of the checkbox in LTR and to the left in RTL.\n`\"fixed\"`: The label has the same behavior as `\"start\"` except it also has a fixed width. Long text will be truncated with ellipses (\"...\").\n`\"stacked\"`: The label will appear above the checkbox regardless of the direction. The alignment of the label can be controlled with the `alignment` property.",
5137
5164
  "docsTags": [],
5138
5165
  "default": "'start'",
5139
5166
  "values": [
@@ -5145,6 +5172,10 @@
5145
5172
  "value": "fixed",
5146
5173
  "type": "string"
5147
5174
  },
5175
+ {
5176
+ "value": "stacked",
5177
+ "type": "string"
5178
+ },
5148
5179
  {
5149
5180
  "value": "start",
5150
5181
  "type": "string"
@@ -6808,6 +6839,22 @@
6808
6839
  {
6809
6840
  "name": "part",
6810
6841
  "text": "month-year-button - The button that opens the month/year picker when\nusing a grid style layout."
6842
+ },
6843
+ {
6844
+ "name": "part",
6845
+ "text": "calendar-day - The individual buttons that display a day inside of the datetime\ncalendar."
6846
+ },
6847
+ {
6848
+ "name": "part",
6849
+ "text": "calendar-day active - The currently selected calendar day."
6850
+ },
6851
+ {
6852
+ "name": "part",
6853
+ "text": "calendar-day today - The calendar day that contains the current day."
6854
+ },
6855
+ {
6856
+ "name": "part",
6857
+ "text": "calendar-day disabled - The calendar day that is disabled."
6811
6858
  }
6812
6859
  ],
6813
6860
  "usage": {},
@@ -7828,6 +7875,22 @@
7828
7875
  }
7829
7876
  ],
7830
7877
  "parts": [
7878
+ {
7879
+ "name": "calendar-day",
7880
+ "docs": "The individual buttons that display a day inside of the datetime\ncalendar."
7881
+ },
7882
+ {
7883
+ "name": "calendar-day active",
7884
+ "docs": "The currently selected calendar day."
7885
+ },
7886
+ {
7887
+ "name": "calendar-day disabled",
7888
+ "docs": "The calendar day that is disabled."
7889
+ },
7890
+ {
7891
+ "name": "calendar-day today",
7892
+ "docs": "The calendar day that contains the current day."
7893
+ },
7831
7894
  {
7832
7895
  "name": "month-year-button",
7833
7896
  "docs": "The button that opens the month/year picker when\nusing a grid style layout."
@@ -19254,6 +19317,33 @@
19254
19317
  ],
19255
19318
  "usage": {},
19256
19319
  "props": [
19320
+ {
19321
+ "name": "alignment",
19322
+ "type": "\"center\" | \"start\"",
19323
+ "complexType": {
19324
+ "original": "'start' | 'center'",
19325
+ "resolved": "\"center\" | \"start\"",
19326
+ "references": {}
19327
+ },
19328
+ "mutable": false,
19329
+ "attr": "alignment",
19330
+ "reflectToAttr": false,
19331
+ "docs": "How to control the alignment of the radio and label on the cross axis.\n`\"start\"`: The label and control will appear on the left of the cross axis in LTR, and on the right side in RTL.\n`\"center\"`: The label and control will appear at the center of the cross axis in both LTR and RTL.",
19332
+ "docsTags": [],
19333
+ "default": "'center'",
19334
+ "values": [
19335
+ {
19336
+ "value": "center",
19337
+ "type": "string"
19338
+ },
19339
+ {
19340
+ "value": "start",
19341
+ "type": "string"
19342
+ }
19343
+ ],
19344
+ "optional": false,
19345
+ "required": false
19346
+ },
19257
19347
  {
19258
19348
  "name": "color",
19259
19349
  "type": "\"danger\" | \"dark\" | \"light\" | \"medium\" | \"primary\" | \"secondary\" | \"success\" | \"tertiary\" | \"warning\" | string & Record<never, never> | undefined",
@@ -19375,16 +19465,16 @@
19375
19465
  },
19376
19466
  {
19377
19467
  "name": "labelPlacement",
19378
- "type": "\"end\" | \"fixed\" | \"start\"",
19468
+ "type": "\"end\" | \"fixed\" | \"stacked\" | \"start\"",
19379
19469
  "complexType": {
19380
- "original": "'start' | 'end' | 'fixed'",
19381
- "resolved": "\"end\" | \"fixed\" | \"start\"",
19470
+ "original": "'start' | 'end' | 'fixed' | 'stacked'",
19471
+ "resolved": "\"end\" | \"fixed\" | \"stacked\" | \"start\"",
19382
19472
  "references": {}
19383
19473
  },
19384
19474
  "mutable": false,
19385
19475
  "attr": "label-placement",
19386
19476
  "reflectToAttr": false,
19387
- "docs": "Where to place the label relative to the radio.\n`\"start\"`: The label will appear to the left of the radio in LTR and to the right in RTL.\n`\"end\"`: The label will appear to the right of the radio in LTR and to the left in RTL.\n`\"fixed\"`: The label has the same behavior as `\"start\"` except it also has a fixed width. Long text will be truncated with ellipses (\"...\").",
19477
+ "docs": "Where to place the label relative to the radio.\n`\"start\"`: The label will appear to the left of the radio in LTR and to the right in RTL.\n`\"end\"`: The label will appear to the right of the radio in LTR and to the left in RTL.\n`\"fixed\"`: The label has the same behavior as `\"start\"` except it also has a fixed width. Long text will be truncated with ellipses (\"...\").\n`\"stacked\"`: The label will appear above the radio regardless of the direction. The alignment of the label can be controlled with the `alignment` property.",
19388
19478
  "docsTags": [],
19389
19479
  "default": "'start'",
19390
19480
  "values": [
@@ -19396,6 +19486,10 @@
19396
19486
  "value": "fixed",
19397
19487
  "type": "string"
19398
19488
  },
19489
+ {
19490
+ "value": "stacked",
19491
+ "type": "string"
19492
+ },
19399
19493
  {
19400
19494
  "value": "start",
19401
19495
  "type": "string"
@@ -19924,16 +20018,16 @@
19924
20018
  },
19925
20019
  {
19926
20020
  "name": "labelPlacement",
19927
- "type": "\"end\" | \"fixed\" | \"start\"",
20021
+ "type": "\"end\" | \"fixed\" | \"stacked\" | \"start\"",
19928
20022
  "complexType": {
19929
- "original": "'start' | 'end' | 'fixed'",
19930
- "resolved": "\"end\" | \"fixed\" | \"start\"",
20023
+ "original": "'start' | 'end' | 'fixed' | 'stacked'",
20024
+ "resolved": "\"end\" | \"fixed\" | \"stacked\" | \"start\"",
19931
20025
  "references": {}
19932
20026
  },
19933
20027
  "mutable": false,
19934
20028
  "attr": "label-placement",
19935
20029
  "reflectToAttr": false,
19936
- "docs": "Where to place the label relative to the range.\n`\"start\"`: The label will appear to the left of the range in LTR and to the right in RTL.\n`\"end\"`: The label will appear to the right of the range in LTR and to the left in RTL.\n`\"fixed\"`: The label has the same behavior as `\"start\"` except it also has a fixed width. Long text will be truncated with ellipses (\"...\").",
20030
+ "docs": "Where to place the label relative to the range.\n`\"start\"`: The label will appear to the left of the range in LTR and to the right in RTL.\n`\"end\"`: The label will appear to the right of the range in LTR and to the left in RTL.\n`\"fixed\"`: The label has the same behavior as `\"start\"` except it also has a fixed width. Long text will be truncated with ellipses (\"...\").\n`\"stacked\"`: The label will appear above the range regardless of the direction.",
19937
20031
  "docsTags": [],
19938
20032
  "default": "'start'",
19939
20033
  "values": [
@@ -19945,6 +20039,10 @@
19945
20039
  "value": "fixed",
19946
20040
  "type": "string"
19947
20041
  },
20042
+ {
20043
+ "value": "stacked",
20044
+ "type": "string"
20045
+ },
19948
20046
  {
19949
20047
  "value": "start",
19950
20048
  "type": "string"
@@ -28122,6 +28220,33 @@
28122
28220
  ],
28123
28221
  "usage": {},
28124
28222
  "props": [
28223
+ {
28224
+ "name": "alignment",
28225
+ "type": "\"center\" | \"start\"",
28226
+ "complexType": {
28227
+ "original": "'start' | 'center'",
28228
+ "resolved": "\"center\" | \"start\"",
28229
+ "references": {}
28230
+ },
28231
+ "mutable": false,
28232
+ "attr": "alignment",
28233
+ "reflectToAttr": false,
28234
+ "docs": "How to control the alignment of the toggle and label on the cross axis.\n``\"start\"`: The label and control will appear on the left of the cross axis in LTR, and on the right side in RTL.\n`\"center\"`: The label and control will appear at the center of the cross axis in both LTR and RTL.",
28235
+ "docsTags": [],
28236
+ "default": "'center'",
28237
+ "values": [
28238
+ {
28239
+ "value": "center",
28240
+ "type": "string"
28241
+ },
28242
+ {
28243
+ "value": "start",
28244
+ "type": "string"
28245
+ }
28246
+ ],
28247
+ "optional": false,
28248
+ "required": false
28249
+ },
28125
28250
  {
28126
28251
  "name": "checked",
28127
28252
  "type": "boolean",
@@ -28290,16 +28415,16 @@
28290
28415
  },
28291
28416
  {
28292
28417
  "name": "labelPlacement",
28293
- "type": "\"end\" | \"fixed\" | \"start\"",
28418
+ "type": "\"end\" | \"fixed\" | \"stacked\" | \"start\"",
28294
28419
  "complexType": {
28295
- "original": "'start' | 'end' | 'fixed'",
28296
- "resolved": "\"end\" | \"fixed\" | \"start\"",
28420
+ "original": "'start' | 'end' | 'fixed' | 'stacked'",
28421
+ "resolved": "\"end\" | \"fixed\" | \"stacked\" | \"start\"",
28297
28422
  "references": {}
28298
28423
  },
28299
28424
  "mutable": false,
28300
28425
  "attr": "label-placement",
28301
28426
  "reflectToAttr": false,
28302
- "docs": "Where to place the label relative to the input.\n`\"start\"`: The label will appear to the left of the toggle in LTR and to the right in RTL.\n`\"end\"`: The label will appear to the right of the toggle in LTR and to the left in RTL.\n`\"fixed\"`: The label has the same behavior as `\"start\"` except it also has a fixed width. Long text will be truncated with ellipses (\"...\").",
28427
+ "docs": "Where to place the label relative to the input.\n`\"start\"`: The label will appear to the left of the toggle in LTR and to the right in RTL.\n`\"end\"`: The label will appear to the right of the toggle in LTR and to the left in RTL.\n`\"fixed\"`: The label has the same behavior as `\"start\"` except it also has a fixed width. Long text will be truncated with ellipses (\"...\").\n`\"stacked\"`: The label will appear above the toggle regardless of the direction. The alignment of the label can be controlled with the `alignment` property.",
28303
28428
  "docsTags": [],
28304
28429
  "default": "'start'",
28305
28430
  "values": [
@@ -28311,6 +28436,10 @@
28311
28436
  "value": "fixed",
28312
28437
  "type": "string"
28313
28438
  },
28439
+ {
28440
+ "value": "stacked",
28441
+ "type": "string"
28442
+ },
28314
28443
  {
28315
28444
  "value": "start",
28316
28445
  "type": "string"
@@ -29157,7 +29286,7 @@
29157
29286
  "path": "src/components/toast/toast-interface.ts"
29158
29287
  },
29159
29288
  "src/components/toast/toast-interface.ts::ToastButton": {
29160
- "declaration": "export interface ToastButton {\n text?: string;\n icon?: string;\n side?: 'start' | 'end';\n role?: 'cancel' | string;\n cssClass?: string | string[];\n htmlAttributes?: { [key: string]: any };\n handler?: () => boolean | void | Promise<boolean | void>;\n}",
29289
+ "declaration": "export interface ToastButton {\n text?: string;\n icon?: string;\n side?: 'start' | 'end';\n role?: 'cancel' | string;\n\n /**\n * @deprecated Use the toast button's CSS Shadow Parts instead.\n */\n cssClass?: string | string[];\n htmlAttributes?: { [key: string]: any };\n handler?: () => boolean | void | Promise<boolean | void>;\n}",
29161
29290
  "docstring": "",
29162
29291
  "path": "src/components/toast/toast-interface.ts"
29163
29292
  },
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { i as initialize } from './ionic-global-9080266a.js';
4
+ import { i as initialize } from './ionic-global-1ef19007.js';
5
5
 
6
6
  const globalScripts = initialize;
7
7
 
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { w as writeTask } from './index-adfb2000.js';
4
+ import { w as writeTask } from './index-847f2fde.js';
5
5
  import { h as hapticSelectionEnd, a as hapticSelectionStart, b as hapticSelectionChanged } from './haptic-6447af60.js';
6
6
  import { createGesture } from './index-ff313b19.js';
7
7
 
@@ -185,7 +185,22 @@ const getPartsFromCalendarDay = (el) => {
185
185
  };
186
186
  function parseDate(val) {
187
187
  if (Array.isArray(val)) {
188
- return val.map((valStr) => parseDate(valStr));
188
+ const parsedArray = [];
189
+ for (const valStr of val) {
190
+ const parsedVal = parseDate(valStr);
191
+ /**
192
+ * If any of the values weren't parsed correctly, consider
193
+ * the entire batch incorrect. This simplifies the type
194
+ * signatures by having "undefined" be a general error case
195
+ * instead of returning (Datetime | undefined)[], which is
196
+ * harder for TS to perform type narrowing on.
197
+ */
198
+ if (!parsedVal) {
199
+ return undefined;
200
+ }
201
+ parsedArray.push(parsedVal);
202
+ }
203
+ return parsedArray;
189
204
  }
190
205
  // manually parse IS0 cuz Date.parse cannot be trusted
191
206
  // ISO 8601 format: 1994-12-15T13:47:20Z
@@ -205,6 +220,7 @@ function parseDate(val) {
205
220
  }
206
221
  if (parse === null) {
207
222
  // wasn't able to parse the ISO datetime
223
+ printIonWarning(`Unable to parse date string: ${val}. Please provide a valid ISO 8601 datetime string.`);
208
224
  return undefined;
209
225
  }
210
226
  // ensure all the parse values exist with at least 0
@@ -1225,12 +1241,20 @@ const generateTime = (refParts, hourCycle = 'h12', minParts, maxParts, hourValue
1225
1241
  * Given DatetimeParts, generate the previous,
1226
1242
  * current, and and next months.
1227
1243
  */
1228
- const generateMonths = (refParts) => {
1229
- return [
1230
- getPreviousMonth(refParts),
1231
- { month: refParts.month, year: refParts.year, day: refParts.day },
1232
- getNextMonth(refParts),
1233
- ];
1244
+ const generateMonths = (refParts, forcedDate) => {
1245
+ const current = { month: refParts.month, year: refParts.year, day: refParts.day };
1246
+ /**
1247
+ * If we're forcing a month to appear, and it's different from the current month,
1248
+ * ensure it appears by replacing the next or previous month as appropriate.
1249
+ */
1250
+ if (forcedDate !== undefined && (refParts.month !== forcedDate.month || refParts.year !== forcedDate.year)) {
1251
+ const forced = { month: forcedDate.month, year: forcedDate.year, day: forcedDate.day };
1252
+ const forcedMonthIsBefore = isBefore(forced, current);
1253
+ return forcedMonthIsBefore
1254
+ ? [forced, current, getNextMonth(refParts)]
1255
+ : [getPreviousMonth(refParts), current, forced];
1256
+ }
1257
+ return [getPreviousMonth(refParts), current, getNextMonth(refParts)];
1234
1258
  };
1235
1259
  const getMonthColumnData = (locale, refParts, minParts, maxParts, monthValues, formatOptions = {
1236
1260
  month: 'long',
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { w as writeTask, B as Build } from './index-adfb2000.js';
4
+ import { w as writeTask, B as Build } from './index-847f2fde.js';
5
5
  import { r as raf } from './helpers-3379ba19.js';
6
6
 
7
7
  const LIFECYCLE_WILL_ENTER = 'ionViewWillEnter';
@@ -10,8 +10,8 @@ const LIFECYCLE_WILL_LEAVE = 'ionViewWillLeave';
10
10
  const LIFECYCLE_DID_LEAVE = 'ionViewDidLeave';
11
11
  const LIFECYCLE_WILL_UNLOAD = 'ionViewWillUnload';
12
12
 
13
- const iosTransitionAnimation = () => import('./ios.transition-f43871cd.js');
14
- const mdTransitionAnimation = () => import('./md.transition-12d21ad0.js');
13
+ const iosTransitionAnimation = () => import('./ios.transition-3137d23e.js');
14
+ const mdTransitionAnimation = () => import('./md.transition-48b3b77c.js');
15
15
  // TODO(FW-2832): types
16
16
  const transition = (opts) => {
17
17
  return new Promise((resolve, reject) => {