@ionic/core 7.3.4-dev.11694548895.1578981b → 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 (410) 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 +6 -20
  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-93284c80.js → input-shims-f8569707.js} +7 -20
  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 +3 -18
  120. package/dist/collection/utils/input-shims/hacks/scroll-data.js +3 -2
  121. package/dist/docs.json +148 -19
  122. package/dist/esm/{app-globals-c7886b40.js → app-globals-e8ddf830.js} +1 -1
  123. package/dist/esm/{button-active-b76ae4ec.js → button-active-2da0f611.js} +1 -1
  124. package/dist/esm/{data-4b448e3a.js → data-009dbf15.js} +31 -7
  125. package/dist/esm/{index-01839411.js → index-6391de89.js} +3 -3
  126. package/dist/esm/{index-adfb2000.js → index-847f2fde.js} +6 -6
  127. package/dist/esm/{index-48f5e259.js → index-b3e05099.js} +1 -1
  128. package/dist/esm/index.js +7 -7
  129. package/dist/esm/{input-shims-4f1b0af9.js → input-shims-af993f05.js} +7 -20
  130. package/dist/esm/ion-accordion_2.entry.js +2 -2
  131. package/dist/esm/ion-action-sheet.entry.js +4 -4
  132. package/dist/esm/ion-alert.entry.js +4 -4
  133. package/dist/esm/ion-app_8.entry.js +5 -5
  134. package/dist/esm/ion-avatar_3.entry.js +2 -2
  135. package/dist/esm/ion-back-button.entry.js +2 -2
  136. package/dist/esm/ion-backdrop.entry.js +2 -2
  137. package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
  138. package/dist/esm/ion-button_2.entry.js +2 -2
  139. package/dist/esm/ion-card_5.entry.js +2 -2
  140. package/dist/esm/ion-checkbox.entry.js +7 -5
  141. package/dist/esm/ion-chip.entry.js +2 -2
  142. package/dist/esm/ion-col_3.entry.js +2 -2
  143. package/dist/esm/ion-datetime-button.entry.js +6 -3
  144. package/dist/esm/ion-datetime_3.entry.js +135 -96
  145. package/dist/esm/ion-fab_3.entry.js +2 -2
  146. package/dist/esm/ion-img.entry.js +2 -2
  147. package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
  148. package/dist/esm/ion-input.entry.js +2 -2
  149. package/dist/esm/ion-item-option_3.entry.js +2 -2
  150. package/dist/esm/ion-item_8.entry.js +2 -2
  151. package/dist/esm/ion-loading.entry.js +3 -3
  152. package/dist/esm/ion-menu_3.entry.js +4 -4
  153. package/dist/esm/ion-modal.entry.js +4 -4
  154. package/dist/esm/ion-nav_2.entry.js +3 -3
  155. package/dist/esm/ion-picker-column-internal.entry.js +2 -2
  156. package/dist/esm/ion-picker-internal.entry.js +1 -1
  157. package/dist/esm/ion-popover.entry.js +4 -4
  158. package/dist/esm/ion-progress-bar.entry.js +2 -2
  159. package/dist/esm/ion-radio_2.entry.js +7 -5
  160. package/dist/esm/ion-range.entry.js +4 -4
  161. package/dist/esm/ion-refresher_2.entry.js +2 -2
  162. package/dist/esm/ion-reorder_2.entry.js +2 -2
  163. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  164. package/dist/esm/ion-route_4.entry.js +2 -2
  165. package/dist/esm/ion-searchbar.entry.js +2 -2
  166. package/dist/esm/ion-segment_2.entry.js +2 -2
  167. package/dist/esm/ion-select_3.entry.js +3 -3
  168. package/dist/esm/ion-spinner.entry.js +2 -2
  169. package/dist/esm/ion-split-pane.entry.js +2 -2
  170. package/dist/esm/ion-tab-bar_2.entry.js +2 -2
  171. package/dist/esm/ion-tab_2.entry.js +1 -1
  172. package/dist/esm/ion-text.entry.js +2 -2
  173. package/dist/esm/ion-textarea.entry.js +2 -2
  174. package/dist/esm/ion-toast.entry.js +3 -3
  175. package/dist/esm/ion-toggle.entry.js +7 -5
  176. package/dist/esm/{ionic-global-9080266a.js → ionic-global-1ef19007.js} +1 -1
  177. package/dist/esm/ionic.js +6 -6
  178. package/dist/esm/{ios.transition-f43871cd.js → ios.transition-3137d23e.js} +2 -2
  179. package/dist/esm/loader.js +5 -5
  180. package/dist/esm/{md.transition-12d21ad0.js → md.transition-48b3b77c.js} +2 -2
  181. package/dist/esm/{overlays-4565894b.js → overlays-e1dadfe6.js} +1 -1
  182. package/dist/esm/{status-tap-121c711d.js → status-tap-823a0df3.js} +1 -1
  183. package/dist/esm-es5/app-globals-e8ddf830.js +4 -0
  184. package/dist/esm-es5/{button-active-b76ae4ec.js → button-active-2da0f611.js} +1 -1
  185. package/dist/esm-es5/data-009dbf15.js +4 -0
  186. package/dist/esm-es5/{index-01839411.js → index-6391de89.js} +1 -1
  187. package/dist/esm-es5/{index-48f5e259.js → index-b3e05099.js} +1 -1
  188. package/dist/esm-es5/index.js +1 -1
  189. package/dist/esm-es5/input-shims-af993f05.js +4 -0
  190. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  191. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  192. package/dist/esm-es5/ion-alert.entry.js +1 -1
  193. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  194. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  195. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  196. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  197. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  198. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  199. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  200. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  201. package/dist/esm-es5/ion-chip.entry.js +1 -1
  202. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  203. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  204. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  205. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  206. package/dist/esm-es5/ion-img.entry.js +1 -1
  207. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  208. package/dist/esm-es5/ion-input.entry.js +1 -1
  209. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  210. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  211. package/dist/esm-es5/ion-loading.entry.js +1 -1
  212. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  213. package/dist/esm-es5/ion-modal.entry.js +1 -1
  214. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  215. package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
  216. package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
  217. package/dist/esm-es5/ion-popover.entry.js +1 -1
  218. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  219. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  220. package/dist/esm-es5/ion-range.entry.js +1 -1
  221. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  222. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  223. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  224. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  225. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  226. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  227. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  228. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  229. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  230. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  231. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  232. package/dist/esm-es5/ion-text.entry.js +1 -1
  233. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  234. package/dist/esm-es5/ion-toast.entry.js +1 -1
  235. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  236. package/dist/esm-es5/{ionic-global-9080266a.js → ionic-global-1ef19007.js} +1 -1
  237. package/dist/esm-es5/ionic.js +1 -1
  238. package/dist/esm-es5/{ios.transition-f43871cd.js → ios.transition-3137d23e.js} +1 -1
  239. package/dist/esm-es5/loader.js +1 -1
  240. package/dist/esm-es5/md.transition-48b3b77c.js +4 -0
  241. package/dist/esm-es5/{overlays-4565894b.js → overlays-e1dadfe6.js} +1 -1
  242. package/dist/esm-es5/{status-tap-121c711d.js → status-tap-823a0df3.js} +1 -1
  243. package/dist/html.html-data.json +52 -4
  244. package/dist/ionic/index.esm.js +1 -1
  245. package/dist/ionic/ionic.esm.js +1 -1
  246. package/dist/ionic/ionic.js +1 -1
  247. package/dist/ionic/{p-9b53c813.entry.js → p-0142ba6d.entry.js} +1 -1
  248. package/dist/ionic/{p-516421e2.system.entry.js → p-0219ac12.system.entry.js} +1 -1
  249. package/dist/ionic/{p-c2d6088f.entry.js → p-0660215f.entry.js} +1 -1
  250. package/dist/ionic/p-06902103.system.js +4 -0
  251. package/dist/ionic/{p-4446e19f.system.entry.js → p-06d6e9c0.system.entry.js} +1 -1
  252. package/dist/ionic/{p-74834696.system.entry.js → p-0b68c41d.system.entry.js} +1 -1
  253. package/dist/ionic/{p-e239ab05.system.entry.js → p-0cc2bf5a.system.entry.js} +1 -1
  254. package/dist/ionic/{p-5df94bf8.entry.js → p-0ff17c93.entry.js} +1 -1
  255. package/dist/ionic/{p-d57e8b06.js → p-11248f01.js} +1 -1
  256. package/dist/ionic/{p-5080e623.system.entry.js → p-11a42c03.system.entry.js} +1 -1
  257. package/dist/ionic/{p-a8270ae8.system.entry.js → p-1d82df31.system.entry.js} +1 -1
  258. package/dist/ionic/{p-48d378cf.entry.js → p-1ec4dc01.entry.js} +1 -1
  259. package/dist/ionic/p-1f4adf06.system.entry.js +4 -0
  260. package/dist/ionic/{p-4d2807fa.entry.js → p-1fb9aab8.entry.js} +1 -1
  261. package/dist/ionic/{p-9f3ad626.system.entry.js → p-2061c86f.system.entry.js} +1 -1
  262. package/dist/ionic/{p-28d8b87b.entry.js → p-208f640c.entry.js} +1 -1
  263. package/dist/ionic/p-218b6f33.entry.js +4 -0
  264. package/dist/ionic/{p-d8d30fd1.system.entry.js → p-2539e967.system.entry.js} +1 -1
  265. package/dist/ionic/p-273e78ae.entry.js +4 -0
  266. package/dist/ionic/p-2da6ba37.system.entry.js +4 -0
  267. package/dist/ionic/{p-4e1a58c6.system.entry.js → p-32d11ce2.system.entry.js} +1 -1
  268. package/dist/ionic/{p-c8c0d58a.system.entry.js → p-336420f9.system.entry.js} +1 -1
  269. package/dist/ionic/{p-be187db3.entry.js → p-341d5877.entry.js} +1 -1
  270. package/dist/ionic/{p-11d0977d.entry.js → p-38dd9aec.entry.js} +1 -1
  271. package/dist/ionic/{p-fde174d6.system.entry.js → p-3ef88fc2.system.entry.js} +1 -1
  272. package/dist/ionic/p-40138199.entry.js +4 -0
  273. package/dist/ionic/{p-765e6339.entry.js → p-430e902d.entry.js} +1 -1
  274. package/dist/ionic/p-44ef7224.system.js +4 -0
  275. package/dist/ionic/p-4531b920.system.js +4 -0
  276. package/dist/ionic/{p-8db97b90.entry.js → p-48144921.entry.js} +1 -1
  277. package/dist/ionic/{p-0ce43a8f.system.entry.js → p-4a153fbc.system.entry.js} +1 -1
  278. package/dist/ionic/p-4ca1ce6b.system.entry.js +4 -0
  279. package/dist/ionic/p-51b165af.system.js +4 -0
  280. package/dist/ionic/{p-98bfaff3.system.entry.js → p-57dc87eb.system.entry.js} +1 -1
  281. package/dist/ionic/{p-83459b99.entry.js → p-57f0efcc.entry.js} +1 -1
  282. package/dist/ionic/p-582dc7c1.js +4 -0
  283. package/dist/ionic/{p-ee55302a.system.entry.js → p-5ba27716.system.entry.js} +1 -1
  284. package/dist/ionic/{p-68deb933.entry.js → p-5c17f888.entry.js} +1 -1
  285. package/dist/ionic/{p-a037b6d5.system.entry.js → p-62324608.system.entry.js} +1 -1
  286. package/dist/ionic/{p-f62bed60.entry.js → p-639d7b25.entry.js} +1 -1
  287. package/dist/ionic/p-64ad5765.entry.js +4 -0
  288. package/dist/ionic/{p-9eced28c.entry.js → p-653f2fc6.entry.js} +1 -1
  289. package/dist/ionic/{p-b9179eab.entry.js → p-67b891af.entry.js} +1 -1
  290. package/dist/ionic/{p-8bcd482b.entry.js → p-68e0ea3c.entry.js} +1 -1
  291. package/dist/ionic/{p-2e5930dd.system.js → p-69303bb5.system.js} +1 -1
  292. package/dist/ionic/{p-42e0558f.entry.js → p-6b3afb0f.entry.js} +1 -1
  293. package/dist/ionic/{p-ec344ed1.system.entry.js → p-6bf632d0.system.entry.js} +1 -1
  294. package/dist/ionic/{p-cd002251.entry.js → p-728ac2b3.entry.js} +1 -1
  295. package/dist/ionic/p-778460f7.js +4 -0
  296. package/dist/ionic/{p-3f15f60b.entry.js → p-77f91ca9.entry.js} +1 -1
  297. package/dist/ionic/{p-b052b578.entry.js → p-785b0913.entry.js} +1 -1
  298. package/dist/ionic/{p-ff3d728d.system.js → p-7b16490a.system.js} +1 -1
  299. package/dist/ionic/{p-629b0629.js → p-7c938ad6.js} +1 -1
  300. package/dist/ionic/p-7cfd253c.js +4 -0
  301. package/dist/ionic/{p-5e549223.system.js → p-81597423.system.js} +1 -1
  302. package/dist/ionic/{p-3d5a6d14.system.js → p-82632e15.system.js} +1 -1
  303. package/dist/ionic/{p-23ddd787.system.entry.js → p-82f5c07e.system.entry.js} +1 -1
  304. package/dist/ionic/{p-b453b38d.entry.js → p-82f8ee51.entry.js} +1 -1
  305. package/dist/ionic/{p-a314559e.system.js → p-83008f7c.system.js} +2 -2
  306. package/dist/ionic/{p-7474a472.system.entry.js → p-839bd69f.system.entry.js} +1 -1
  307. package/dist/ionic/{p-9be96bf3.system.entry.js → p-83bcaec9.system.entry.js} +1 -1
  308. package/dist/ionic/p-86c5c320.entry.js +4 -0
  309. package/dist/ionic/{p-95188051.system.entry.js → p-87383d00.system.entry.js} +1 -1
  310. package/dist/ionic/{p-57847936.entry.js → p-8a676776.entry.js} +1 -1
  311. package/dist/ionic/{p-5fc777e6.system.js → p-8ba724fa.system.js} +1 -1
  312. package/dist/ionic/p-90ec5785.system.entry.js +4 -0
  313. package/dist/ionic/{p-b3f6f321.js → p-91459620.js} +1 -1
  314. package/dist/ionic/{p-49f2eaa6.entry.js → p-93e47822.entry.js} +1 -1
  315. package/dist/ionic/{p-fa8fc77b.system.entry.js → p-96c2a273.system.entry.js} +1 -1
  316. package/dist/ionic/{p-6dff4431.entry.js → p-98a189f3.entry.js} +1 -1
  317. package/dist/ionic/{p-0dbfa45f.entry.js → p-98ebc376.entry.js} +1 -1
  318. package/dist/ionic/{p-07656a8a.entry.js → p-99028088.entry.js} +1 -1
  319. package/dist/ionic/{p-84084b75.entry.js → p-99140340.entry.js} +1 -1
  320. package/dist/ionic/{p-47a11fc4.entry.js → p-9c32000a.entry.js} +1 -1
  321. package/dist/ionic/p-a2b25750.js +4 -0
  322. package/dist/ionic/{p-d524e68b.system.entry.js → p-a34669bf.system.entry.js} +1 -1
  323. package/dist/ionic/{p-bacf09d3.entry.js → p-a3f9d271.entry.js} +1 -1
  324. package/dist/ionic/p-a62c0ff4.js +4 -0
  325. package/dist/ionic/{p-5a9dc764.system.entry.js → p-af0bc751.system.entry.js} +1 -1
  326. package/dist/ionic/p-af986299.system.entry.js +4 -0
  327. package/dist/ionic/{p-6ccffb74.system.entry.js → p-b0e9e0b8.system.entry.js} +1 -1
  328. package/dist/ionic/{p-563068af.js → p-b22ee0dc.js} +1 -1
  329. package/dist/ionic/{p-204fb8f0.system.entry.js → p-b2514862.system.entry.js} +1 -1
  330. package/dist/ionic/p-b321c999.entry.js +4 -0
  331. package/dist/ionic/{p-bfee11b2.system.js → p-b32742f3.system.js} +1 -1
  332. package/dist/ionic/{p-3bf120f8.system.entry.js → p-b9654781.system.entry.js} +1 -1
  333. package/dist/ionic/{p-1c236453.system.entry.js → p-bbae0ac3.system.entry.js} +1 -1
  334. package/dist/ionic/{p-32983529.system.entry.js → p-bf4b8d8a.system.entry.js} +1 -1
  335. package/dist/ionic/{p-5163baf4.system.entry.js → p-c4afbed8.system.entry.js} +1 -1
  336. package/dist/ionic/p-c53dd7a2.entry.js +4 -0
  337. package/dist/ionic/{p-a033a91d.system.entry.js → p-d1bab5e7.system.entry.js} +1 -1
  338. package/dist/ionic/{p-5260588f.system.entry.js → p-d1d3b740.system.entry.js} +1 -1
  339. package/dist/ionic/{p-59b40b60.entry.js → p-d3378c35.entry.js} +1 -1
  340. package/dist/ionic/{p-eb91aee6.entry.js → p-d5e3bff3.entry.js} +1 -1
  341. package/dist/ionic/{p-dc4c9086.system.entry.js → p-d693e765.system.entry.js} +1 -1
  342. package/dist/ionic/p-d898dd46.js +4 -0
  343. package/dist/ionic/p-d8a0267b.system.entry.js +4 -0
  344. package/dist/ionic/{p-ef8a8827.system.entry.js → p-dbb48066.system.entry.js} +1 -1
  345. package/dist/ionic/{p-574411f2.system.entry.js → p-dc49c681.system.entry.js} +1 -1
  346. package/dist/ionic/{p-a122ecd0.system.js → p-df6743df.system.js} +1 -1
  347. package/dist/ionic/{p-6276ba2f.system.entry.js → p-e112994b.system.entry.js} +1 -1
  348. package/dist/ionic/{p-3c325277.js → p-e3cba96d.js} +1 -1
  349. package/dist/ionic/p-e3d5608d.system.js +4 -0
  350. package/dist/ionic/{p-2ac2278e.system.entry.js → p-e805ff9f.system.entry.js} +1 -1
  351. package/dist/ionic/{p-07f5e286.entry.js → p-e9c112ba.entry.js} +1 -1
  352. package/dist/ionic/{p-ec7ff98b.entry.js → p-ed7b205b.entry.js} +1 -1
  353. package/dist/ionic/{p-26276eb7.system.entry.js → p-f5b7b710.system.entry.js} +1 -1
  354. package/dist/ionic/p-f5c19164.entry.js +4 -0
  355. package/dist/ionic/{p-9e8727d6.entry.js → p-f7faa32d.entry.js} +1 -1
  356. package/dist/ionic/{p-fc991193.entry.js → p-f9567c67.entry.js} +1 -1
  357. package/dist/ionic/{p-810f1bc9.system.entry.js → p-f95f798a.system.entry.js} +1 -1
  358. package/dist/ionic/{p-6eb7b33c.system.entry.js → p-fa3327e8.system.entry.js} +1 -1
  359. package/dist/ionic/{p-072f99fd.entry.js → p-fabb7294.entry.js} +1 -1
  360. package/dist/ionic/{p-041ac2c3.entry.js → p-fac1660b.entry.js} +1 -1
  361. package/dist/ionic/{p-1916030e.entry.js → p-fe83e3e2.entry.js} +1 -1
  362. package/dist/ionic/{p-b703ebeb.system.entry.js → p-fea46870.system.entry.js} +1 -1
  363. package/dist/types/components/checkbox/checkbox.d.ts +8 -1
  364. package/dist/types/components/datetime/datetime.d.ts +23 -10
  365. package/dist/types/components/datetime/utils/data.d.ts +1 -1
  366. package/dist/types/components/datetime/utils/parse.d.ts +3 -3
  367. package/dist/types/components/radio/radio.d.ts +8 -1
  368. package/dist/types/components/range/range.d.ts +2 -1
  369. package/dist/types/components/toast/toast-interface.d.ts +3 -0
  370. package/dist/types/components/toggle/toggle.d.ts +8 -1
  371. package/dist/types/components.d.ts +40 -16
  372. package/dist/types/index.d.ts +1 -0
  373. package/dist/types/interface.d.ts +1 -0
  374. package/dist/types/stencil-public-runtime.d.ts +3 -3
  375. package/dist/types/utils/input-shims/hacks/scroll-data.d.ts +1 -1
  376. package/hydrate/index.d.ts +5 -5
  377. package/hydrate/index.js +234 -150
  378. package/package.json +3 -3
  379. package/dist/esm-es5/app-globals-c7886b40.js +0 -4
  380. package/dist/esm-es5/data-4b448e3a.js +0 -4
  381. package/dist/esm-es5/input-shims-4f1b0af9.js +0 -4
  382. package/dist/esm-es5/md.transition-12d21ad0.js +0 -4
  383. package/dist/ionic/p-17e961cf.entry.js +0 -4
  384. package/dist/ionic/p-1b533a76.system.entry.js +0 -4
  385. package/dist/ionic/p-1d4a4a94.system.js +0 -4
  386. package/dist/ionic/p-2b0ecc04.entry.js +0 -4
  387. package/dist/ionic/p-44a6f15d.system.entry.js +0 -4
  388. package/dist/ionic/p-4f7109fa.entry.js +0 -4
  389. package/dist/ionic/p-56495958.js +0 -4
  390. package/dist/ionic/p-601fd53c.js +0 -4
  391. package/dist/ionic/p-7106c152.system.js +0 -4
  392. package/dist/ionic/p-75d4ceab.js +0 -4
  393. package/dist/ionic/p-8f7edf3e.js +0 -4
  394. package/dist/ionic/p-99a3df5c.entry.js +0 -4
  395. package/dist/ionic/p-9eaaa910.entry.js +0 -4
  396. package/dist/ionic/p-a533868d.system.js +0 -4
  397. package/dist/ionic/p-af6125d1.system.entry.js +0 -4
  398. package/dist/ionic/p-b8d7f0eb.system.entry.js +0 -4
  399. package/dist/ionic/p-c4abd708.js +0 -4
  400. package/dist/ionic/p-c68a8814.system.js +0 -4
  401. package/dist/ionic/p-c7ce7e18.entry.js +0 -4
  402. package/dist/ionic/p-cc8910e7.system.js +0 -4
  403. package/dist/ionic/p-dacb0258.js +0 -4
  404. package/dist/ionic/p-dc7d392d.entry.js +0 -4
  405. package/dist/ionic/p-e65aed58.system.entry.js +0 -4
  406. package/dist/ionic/p-f3ec1f2b.entry.js +0 -4
  407. package/dist/ionic/p-fb26fa56.system.entry.js +0 -4
  408. /package/dist/esm-es5/{index-adfb2000.js → index-847f2fde.js} +0 -0
  409. /package/dist/ionic/{p-a18eb556.js → p-156967ec.js} +0 -0
  410. /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';
@@ -1,7 +1,6 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { win } from "../../browser/index";
5
4
  import { getScrollElement, scrollByPoint } from "../../content";
6
5
  import { raf } from "../../helpers";
7
6
  import { KeyboardResize } from "../../native/keyboard";
@@ -21,20 +20,6 @@ export const enableScrollAssist = (componentEl, inputEl, contentEl, footerEl, ke
21
20
  * Resize info is available on Capacitor 4+
22
21
  */
23
22
  const addScrollPadding = enableScrollPadding && (keyboardResize === undefined || keyboardResize.mode === KeyboardResize.None);
24
- /**
25
- * When adding scroll padding we need to know
26
- * how much of the viewport the keyboard obscures.
27
- * We do this by subtracting the keyboard height
28
- * from the platform height.
29
- *
30
- * If we compute this value when switching between
31
- * inputs then the webview may already be resized.
32
- * At this point, `win.innerHeight` has already accounted
33
- * for the keyboard meaning we would then subtract
34
- * the keyboard height again. This will result in the input
35
- * being scrolled more than it needs to.
36
- */
37
- const platformHeight = win !== undefined ? win.innerHeight : 0;
38
23
  /**
39
24
  * When the input is about to receive
40
25
  * focus, we need to move it to prevent
@@ -51,7 +36,7 @@ export const enableScrollAssist = (componentEl, inputEl, contentEl, footerEl, ke
51
36
  inputEl.removeAttribute(SKIP_SCROLL_ASSIST);
52
37
  return;
53
38
  }
54
- jsSetFocus(componentEl, inputEl, contentEl, footerEl, keyboardHeight, addScrollPadding, disableClonedInput, platformHeight);
39
+ jsSetFocus(componentEl, inputEl, contentEl, footerEl, keyboardHeight, addScrollPadding, disableClonedInput);
55
40
  };
56
41
  componentEl.addEventListener('focusin', focusIn, true);
57
42
  return () => {
@@ -74,11 +59,11 @@ const setManualFocus = (el) => {
74
59
  el.setAttribute(SKIP_SCROLL_ASSIST, 'true');
75
60
  el.focus();
76
61
  };
77
- const jsSetFocus = async (componentEl, inputEl, contentEl, footerEl, keyboardHeight, enableScrollPadding, disableClonedInput = false, platformHeight = 0) => {
62
+ const jsSetFocus = async (componentEl, inputEl, contentEl, footerEl, keyboardHeight, enableScrollPadding, disableClonedInput = false) => {
78
63
  if (!contentEl && !footerEl) {
79
64
  return;
80
65
  }
81
- const scrollData = getScrollData(componentEl, (contentEl || footerEl), keyboardHeight, platformHeight);
66
+ const scrollData = getScrollData(componentEl, (contentEl || footerEl), keyboardHeight);
82
67
  if (contentEl && Math.abs(scrollData.scrollAmount) < 4) {
83
68
  // the text input is in a safe position that doesn't
84
69
  // require it to be scrolled into view, just set focus now
@@ -3,10 +3,11 @@
3
3
  */
4
4
  import { SCROLL_AMOUNT_PADDING } from "./common";
5
5
  const SCROLL_ASSIST_SPEED = 0.3;
6
- export const getScrollData = (componentEl, contentEl, keyboardHeight, platformHeight) => {
6
+ export const getScrollData = (componentEl, contentEl, keyboardHeight) => {
7
7
  var _a;
8
8
  const itemEl = (_a = componentEl.closest('ion-item,[ion-item]')) !== null && _a !== void 0 ? _a : componentEl;
9
- return calcScrollData(itemEl.getBoundingClientRect(), contentEl.getBoundingClientRect(), keyboardHeight, platformHeight);
9
+ return calcScrollData(itemEl.getBoundingClientRect(), contentEl.getBoundingClientRect(), keyboardHeight, componentEl.ownerDocument.defaultView.innerHeight // TODO(FW-2832): type
10
+ );
10
11
  };
11
12
  const calcScrollData = (inputRect, contentRect, keyboardHeight, platformHeight) => {
12
13
  // compute input's Y values relative to the body
package/dist/docs.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
- "timestamp": "2023-09-12T20:03:48",
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) => {
@@ -131,13 +131,13 @@ const h = (nodeName, vnodeData, ...children) => {
131
131
  };
132
132
  walk(children);
133
133
  if (vnodeData) {
134
+ // normalize class / classname attributes
134
135
  if (vnodeData.key) {
135
136
  key = vnodeData.key;
136
137
  }
137
138
  if (vnodeData.name) {
138
139
  slotName = vnodeData.name;
139
140
  }
140
- // normalize class / className attributes
141
141
  {
142
142
  const classData = vnodeData.className || vnodeData.class;
143
143
  if (classData) {
@@ -383,7 +383,7 @@ const clientHydrate = (parentVNode, childRenderNodes, slotNodes, shadowRootNodes
383
383
  }
384
384
  }
385
385
  else if (childVNode.$hostId$ === hostId) {
386
- // this comment node is specifically for this host id
386
+ // this comment node is specifcally for this host id
387
387
  if (childNodeType === SLOT_NODE_ID) {
388
388
  // `${SLOT_NODE_ID}.${hostId}.${nodeId}.${depth}.${index}.${slotName}`;
389
389
  childVNode.$tag$ = 'slot';
@@ -1610,7 +1610,7 @@ const renderVdom = (hostRef, renderFnResults, isInitialLoad = false) => {
1610
1610
  // has a different next sibling or parent relocated
1611
1611
  if (nodeToRelocate !== insertBeforeNode) {
1612
1612
  if (!nodeToRelocate['s-hn'] && nodeToRelocate['s-ol']) {
1613
- // probably a component in the index.html that doesn't have its hostname set
1613
+ // probably a component in the index.html that doesn't have it's hostname set
1614
1614
  nodeToRelocate['s-hn'] = nodeToRelocate['s-ol'].parentNode.nodeName;
1615
1615
  }
1616
1616
  // add it back to the dom but in its new home
@@ -2014,12 +2014,12 @@ const proxyComponent = (Cstr, cmpMeta, flags) => {
2014
2014
  // customElements.define('my-component', MyComponent);
2015
2015
  // </script>
2016
2016
  // ```
2017
- // In this case if we do not un-shadow here and use the value of the shadowing property, attributeChangedCallback
2017
+ // In this case if we do not unshadow here and use the value of the shadowing property, attributeChangedCallback
2018
2018
  // will be called with `newValue = "some-value"` and will set the shadowed property (this.someAttribute = "another-value")
2019
2019
  // to the value that was set inline i.e. "some-value" from above example. When
2020
- // the connectedCallback attempts to un-shadow it will use "some-value" as the initial value rather than "another-value"
2020
+ // the connectedCallback attempts to unshadow it will use "some-value" as the initial value rather than "another-value"
2021
2021
  //
2022
- // The case where the attribute was NOT set inline but was not set programmatically shall be handled/un-shadowed
2022
+ // The case where the attribute was NOT set inline but was not set programmatically shall be handled/unshadowed
2023
2023
  // by connectedCallback as this attributeChangedCallback will not fire.
2024
2024
  //
2025
2025
  // https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties