@ionic/core 8.7.13-dev.11765558154.1273081d → 8.7.13-dev.11765569652.136c6b13

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 (279) hide show
  1. package/components/header.js +2 -2
  2. package/components/ion-datetime-button.js +2 -2
  3. package/components/ion-datetime.js +77 -66
  4. package/components/ion-fab-button.js +2 -2
  5. package/components/ion-fab-list.js +2 -2
  6. package/components/ion-fab.js +2 -2
  7. package/components/ion-footer.js +2 -2
  8. package/components/ion-grid.js +2 -2
  9. package/components/ion-img.js +1 -1
  10. package/components/ion-infinite-scroll-content.js +2 -2
  11. package/components/ion-infinite-scroll.js +1 -1
  12. package/components/ion-input-otp.js +3 -3
  13. package/components/ion-input-password-toggle.js +3 -3
  14. package/components/ion-input.js +3 -3
  15. package/components/ion-item-divider.js +2 -2
  16. package/components/ion-item-group.js +1 -1
  17. package/components/ion-item-option.js +2 -2
  18. package/components/ion-item-options.js +1 -1
  19. package/components/ion-item-sliding.js +1 -1
  20. package/components/ion-loading.js +2 -2
  21. package/components/ion-menu-button.js +2 -2
  22. package/components/ion-menu-toggle.js +2 -2
  23. package/components/ion-menu.js +2 -2
  24. package/components/ion-nav-link.js +1 -1
  25. package/components/ion-nav.js +1 -1
  26. package/components/ion-note.js +2 -2
  27. package/components/ion-picker-legacy.js +2 -2
  28. package/components/ion-progress-bar.js +1 -1
  29. package/components/ion-range.js +3 -3
  30. package/components/ion-refresher-content.js +1 -1
  31. package/components/ion-refresher.js +1 -1
  32. package/components/ion-reorder-group.js +1 -1
  33. package/components/ion-reorder.js +1 -1
  34. package/components/ion-router-link.js +2 -2
  35. package/components/ion-router-outlet.js +1 -1
  36. package/components/ion-row.js +1 -1
  37. package/components/ion-searchbar.js +4 -4
  38. package/components/ion-segment-button.js +2 -2
  39. package/components/ion-segment-content.js +1 -1
  40. package/components/ion-segment-view.js +2 -2
  41. package/components/ion-segment.js +2 -2
  42. package/components/ion-select-option.js +1 -1
  43. package/components/ion-select.js +2 -2
  44. package/components/ion-skeleton-text.js +2 -2
  45. package/components/ion-split-pane.js +2 -2
  46. package/components/ion-tab-bar.js +2 -2
  47. package/components/ion-tab-button.js +2 -2
  48. package/components/ion-tab.js +2 -2
  49. package/components/ion-tabs.js +1 -1
  50. package/components/ion-text.js +2 -2
  51. package/components/ion-textarea.js +2 -2
  52. package/components/ion-thumbnail.js +1 -1
  53. package/components/ion-toast.js +2 -2
  54. package/components/ion-toggle.js +3 -3
  55. package/components/label.js +2 -2
  56. package/components/list-header.js +2 -2
  57. package/components/list.js +1 -1
  58. package/components/modal.js +4 -4
  59. package/components/picker-column-option.js +2 -2
  60. package/components/picker-column.js +3 -3
  61. package/components/picker-column2.js +2 -2
  62. package/components/picker.js +2 -2
  63. package/components/popover.js +2 -2
  64. package/components/radio-group.js +1 -1
  65. package/components/radio.js +3 -3
  66. package/components/ripple-effect.js +1 -1
  67. package/components/select-modal.js +1 -1
  68. package/components/select-popover.js +1 -1
  69. package/components/spinner.js +1 -1
  70. package/components/title.js +2 -2
  71. package/components/toolbar.js +2 -2
  72. package/dist/cjs/ion-app_8.cjs.entry.js +9 -9
  73. package/dist/cjs/ion-avatar_3.cjs.entry.js +1 -1
  74. package/dist/cjs/ion-col_3.cjs.entry.js +3 -3
  75. package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
  76. package/dist/cjs/ion-datetime_3.cjs.entry.js +81 -70
  77. package/dist/cjs/ion-fab_3.cjs.entry.js +6 -6
  78. package/dist/cjs/ion-img.cjs.entry.js +1 -1
  79. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -3
  80. package/dist/cjs/ion-input-otp.cjs.entry.js +3 -3
  81. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +3 -3
  82. package/dist/cjs/ion-input.cjs.entry.js +3 -3
  83. package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
  84. package/dist/cjs/ion-item_8.cjs.entry.js +12 -12
  85. package/dist/cjs/ion-loading.cjs.entry.js +2 -2
  86. package/dist/cjs/ion-menu_3.cjs.entry.js +6 -6
  87. package/dist/cjs/ion-modal.cjs.entry.js +4 -4
  88. package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
  89. package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
  90. package/dist/cjs/ion-picker-column.cjs.entry.js +3 -3
  91. package/dist/cjs/ion-picker.cjs.entry.js +2 -2
  92. package/dist/cjs/ion-popover.cjs.entry.js +2 -2
  93. package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
  94. package/dist/cjs/ion-radio_2.cjs.entry.js +4 -4
  95. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  96. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  97. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  98. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  99. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  100. package/dist/cjs/ion-searchbar.cjs.entry.js +4 -4
  101. package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
  102. package/dist/cjs/ion-segment-view.cjs.entry.js +2 -2
  103. package/dist/cjs/ion-segment_2.cjs.entry.js +4 -4
  104. package/dist/cjs/ion-select-modal.cjs.entry.js +1 -1
  105. package/dist/cjs/ion-select_3.cjs.entry.js +4 -4
  106. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  107. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  108. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  109. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  110. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  111. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  112. package/dist/cjs/ion-toast.cjs.entry.js +2 -2
  113. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  114. package/dist/collection/components/datetime/datetime.js +77 -66
  115. package/dist/collection/components/datetime-button/datetime-button.js +2 -2
  116. package/dist/collection/components/fab/fab.js +2 -2
  117. package/dist/collection/components/fab-button/fab-button.js +2 -2
  118. package/dist/collection/components/fab-list/fab-list.js +2 -2
  119. package/dist/collection/components/footer/footer.js +2 -2
  120. package/dist/collection/components/grid/grid.js +2 -2
  121. package/dist/collection/components/header/header.js +2 -2
  122. package/dist/collection/components/img/img.js +1 -1
  123. package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
  124. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
  125. package/dist/collection/components/input/input.js +3 -3
  126. package/dist/collection/components/input-otp/input-otp.js +3 -3
  127. package/dist/collection/components/input-password-toggle/input-password-toggle.js +3 -3
  128. package/dist/collection/components/item-divider/item-divider.js +2 -2
  129. package/dist/collection/components/item-group/item-group.js +1 -1
  130. package/dist/collection/components/item-option/item-option.js +2 -2
  131. package/dist/collection/components/item-options/item-options.js +1 -1
  132. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  133. package/dist/collection/components/label/label.js +2 -2
  134. package/dist/collection/components/list/list.js +1 -1
  135. package/dist/collection/components/list-header/list-header.js +2 -2
  136. package/dist/collection/components/loading/loading.js +2 -2
  137. package/dist/collection/components/menu/menu.js +2 -2
  138. package/dist/collection/components/menu-button/menu-button.js +2 -2
  139. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  140. package/dist/collection/components/modal/modal.js +4 -4
  141. package/dist/collection/components/nav/nav.js +1 -1
  142. package/dist/collection/components/nav-link/nav-link.js +1 -1
  143. package/dist/collection/components/note/note.js +2 -2
  144. package/dist/collection/components/picker/picker.js +2 -2
  145. package/dist/collection/components/picker-column/picker-column.js +3 -3
  146. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
  147. package/dist/collection/components/picker-legacy/picker.js +2 -2
  148. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
  149. package/dist/collection/components/popover/popover.js +2 -2
  150. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  151. package/dist/collection/components/radio/radio.js +3 -3
  152. package/dist/collection/components/radio-group/radio-group.js +1 -1
  153. package/dist/collection/components/range/range.js +3 -3
  154. package/dist/collection/components/refresher/refresher.js +1 -1
  155. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  156. package/dist/collection/components/reorder/reorder.js +1 -1
  157. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  158. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  159. package/dist/collection/components/router-link/router-link.js +2 -2
  160. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  161. package/dist/collection/components/row/row.js +1 -1
  162. package/dist/collection/components/searchbar/searchbar.js +4 -4
  163. package/dist/collection/components/segment/segment.js +2 -2
  164. package/dist/collection/components/segment-button/segment-button.js +2 -2
  165. package/dist/collection/components/segment-content/segment-content.js +1 -1
  166. package/dist/collection/components/segment-view/segment-view.js +2 -2
  167. package/dist/collection/components/select/select.js +2 -2
  168. package/dist/collection/components/select-modal/select-modal.js +1 -1
  169. package/dist/collection/components/select-option/select-option.js +1 -1
  170. package/dist/collection/components/select-popover/select-popover.js +1 -1
  171. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  172. package/dist/collection/components/spinner/spinner.js +1 -1
  173. package/dist/collection/components/split-pane/split-pane.js +2 -2
  174. package/dist/collection/components/tab/tab.js +2 -2
  175. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  176. package/dist/collection/components/tab-button/tab-button.js +2 -2
  177. package/dist/collection/components/tabs/tabs.js +1 -1
  178. package/dist/collection/components/text/text.js +2 -2
  179. package/dist/collection/components/textarea/textarea.js +2 -2
  180. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  181. package/dist/collection/components/title/title.js +2 -2
  182. package/dist/collection/components/toast/toast.js +2 -2
  183. package/dist/collection/components/toggle/toggle.js +3 -3
  184. package/dist/collection/components/toolbar/toolbar.js +2 -2
  185. package/dist/docs.json +1 -1
  186. package/dist/esm/ion-app_8.entry.js +9 -9
  187. package/dist/esm/ion-avatar_3.entry.js +1 -1
  188. package/dist/esm/ion-col_3.entry.js +3 -3
  189. package/dist/esm/ion-datetime-button.entry.js +2 -2
  190. package/dist/esm/ion-datetime_3.entry.js +81 -70
  191. package/dist/esm/ion-fab_3.entry.js +6 -6
  192. package/dist/esm/ion-img.entry.js +1 -1
  193. package/dist/esm/ion-infinite-scroll_2.entry.js +3 -3
  194. package/dist/esm/ion-input-otp.entry.js +3 -3
  195. package/dist/esm/ion-input-password-toggle.entry.js +3 -3
  196. package/dist/esm/ion-input.entry.js +3 -3
  197. package/dist/esm/ion-item-option_3.entry.js +4 -4
  198. package/dist/esm/ion-item_8.entry.js +12 -12
  199. package/dist/esm/ion-loading.entry.js +2 -2
  200. package/dist/esm/ion-menu_3.entry.js +6 -6
  201. package/dist/esm/ion-modal.entry.js +4 -4
  202. package/dist/esm/ion-nav_2.entry.js +2 -2
  203. package/dist/esm/ion-picker-column-option.entry.js +2 -2
  204. package/dist/esm/ion-picker-column.entry.js +3 -3
  205. package/dist/esm/ion-picker.entry.js +2 -2
  206. package/dist/esm/ion-popover.entry.js +2 -2
  207. package/dist/esm/ion-progress-bar.entry.js +1 -1
  208. package/dist/esm/ion-radio_2.entry.js +4 -4
  209. package/dist/esm/ion-range.entry.js +3 -3
  210. package/dist/esm/ion-refresher_2.entry.js +2 -2
  211. package/dist/esm/ion-reorder_2.entry.js +2 -2
  212. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  213. package/dist/esm/ion-route_4.entry.js +2 -2
  214. package/dist/esm/ion-searchbar.entry.js +4 -4
  215. package/dist/esm/ion-segment-content.entry.js +1 -1
  216. package/dist/esm/ion-segment-view.entry.js +2 -2
  217. package/dist/esm/ion-segment_2.entry.js +4 -4
  218. package/dist/esm/ion-select-modal.entry.js +1 -1
  219. package/dist/esm/ion-select_3.entry.js +4 -4
  220. package/dist/esm/ion-spinner.entry.js +1 -1
  221. package/dist/esm/ion-split-pane.entry.js +2 -2
  222. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  223. package/dist/esm/ion-tab_2.entry.js +3 -3
  224. package/dist/esm/ion-text.entry.js +2 -2
  225. package/dist/esm/ion-textarea.entry.js +2 -2
  226. package/dist/esm/ion-toast.entry.js +2 -2
  227. package/dist/esm/ion-toggle.entry.js +3 -3
  228. package/dist/ionic/ionic.esm.js +1 -1
  229. package/dist/ionic/{p-cc2a9936.entry.js → p-020af078.entry.js} +1 -1
  230. package/dist/ionic/{p-01e27965.entry.js → p-074839fc.entry.js} +1 -1
  231. package/dist/ionic/{p-67f46577.entry.js → p-0abeb0fc.entry.js} +1 -1
  232. package/dist/ionic/{p-59a5cdf5.entry.js → p-0bf76d0f.entry.js} +1 -1
  233. package/dist/ionic/{p-530fcd71.entry.js → p-0dfa5a37.entry.js} +1 -1
  234. package/dist/ionic/{p-85ee4a92.entry.js → p-11518b31.entry.js} +1 -1
  235. package/dist/ionic/{p-363d1209.entry.js → p-1647c46c.entry.js} +1 -1
  236. package/dist/ionic/{p-6f37536a.entry.js → p-2a939845.entry.js} +1 -1
  237. package/dist/ionic/{p-221a3d8c.entry.js → p-316c0420.entry.js} +1 -1
  238. package/dist/ionic/{p-a4a9f5ae.entry.js → p-31f7095f.entry.js} +1 -1
  239. package/dist/ionic/{p-fbb00634.entry.js → p-370e4237.entry.js} +1 -1
  240. package/dist/ionic/{p-2668188b.entry.js → p-3a6caca9.entry.js} +1 -1
  241. package/dist/ionic/{p-64841854.entry.js → p-40c261a3.entry.js} +1 -1
  242. package/dist/ionic/{p-ee8ecd40.entry.js → p-46d74291.entry.js} +1 -1
  243. package/dist/ionic/p-4b658a7c.entry.js +4 -0
  244. package/dist/ionic/p-4e41ea20.entry.js +4 -0
  245. package/dist/ionic/p-51a60e0f.entry.js +4 -0
  246. package/dist/ionic/p-576e0965.entry.js +4 -0
  247. package/dist/ionic/{p-e036eb2f.entry.js → p-6241ce47.entry.js} +1 -1
  248. package/dist/ionic/{p-c175d792.entry.js → p-639dd543.entry.js} +1 -1
  249. package/dist/ionic/{p-d655735d.entry.js → p-6444c606.entry.js} +1 -1
  250. package/dist/ionic/{p-65db57d7.entry.js → p-675b1a31.entry.js} +1 -1
  251. package/dist/ionic/{p-82d5bb3d.entry.js → p-6d070558.entry.js} +1 -1
  252. package/dist/ionic/{p-e64b550c.entry.js → p-7268efa5.entry.js} +1 -1
  253. package/dist/ionic/{p-20f135b4.entry.js → p-72c38b88.entry.js} +1 -1
  254. package/dist/ionic/{p-b8551510.entry.js → p-86f53961.entry.js} +1 -1
  255. package/dist/ionic/p-94de5cfa.entry.js +4 -0
  256. package/dist/ionic/{p-e48f026f.entry.js → p-9575b654.entry.js} +1 -1
  257. package/dist/ionic/{p-30333874.entry.js → p-a127bee2.entry.js} +1 -1
  258. package/dist/ionic/{p-3b0b7a05.entry.js → p-a8ed848b.entry.js} +1 -1
  259. package/dist/ionic/{p-bccc9207.entry.js → p-ac4eb91d.entry.js} +1 -1
  260. package/dist/ionic/{p-dbc82f0e.entry.js → p-b57c6d3e.entry.js} +1 -1
  261. package/dist/ionic/{p-b30c3430.entry.js → p-c19f63d0.entry.js} +1 -1
  262. package/dist/ionic/{p-f097a9e5.entry.js → p-c85a2127.entry.js} +1 -1
  263. package/dist/ionic/{p-69c6fe52.entry.js → p-cc45bcbc.entry.js} +1 -1
  264. package/dist/ionic/{p-75ebaa15.entry.js → p-cebb0328.entry.js} +1 -1
  265. package/dist/ionic/{p-bce86e56.entry.js → p-d126e8d3.entry.js} +1 -1
  266. package/dist/ionic/{p-2bd1ea35.entry.js → p-d3014190.entry.js} +1 -1
  267. package/dist/ionic/{p-652318c3.entry.js → p-dbbe606a.entry.js} +1 -1
  268. package/dist/ionic/{p-0852af24.entry.js → p-ea509e3c.entry.js} +1 -1
  269. package/dist/ionic/{p-fc14f34a.entry.js → p-ec654c42.entry.js} +1 -1
  270. package/dist/ionic/{p-fb0271ae.entry.js → p-f8f22cc0.entry.js} +1 -1
  271. package/dist/types/components/datetime/datetime.d.ts +11 -2
  272. package/hydrate/index.js +205 -194
  273. package/hydrate/index.mjs +205 -194
  274. package/package.json +5 -5
  275. package/dist/ionic/p-0ca0fe9c.entry.js +0 -4
  276. package/dist/ionic/p-43c5249f.entry.js +0 -4
  277. package/dist/ionic/p-7f98e710.entry.js +0 -4
  278. package/dist/ionic/p-8611adcf.entry.js +0 -4
  279. package/dist/ionic/p-ce8dad03.entry.js +0 -4
@@ -699,7 +699,7 @@ const Footer = class {
699
699
  const mode = getIonMode(this);
700
700
  const tabs = this.el.closest('ion-tabs');
701
701
  const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');
702
- return (h(Host, { key: '5da19dc38ba73e1ddfd1bef3ebd485105d77c751', role: "contentinfo", class: {
702
+ return (h(Host, { key: 'ddc228f1a1e7fa4f707dccf74db2490ca3241137', role: "contentinfo", class: {
703
703
  [mode]: true,
704
704
  // Used internally for styling
705
705
  [`footer-${mode}`]: true,
@@ -707,7 +707,7 @@ const Footer = class {
707
707
  [`footer-translucent-${mode}`]: translucent,
708
708
  ['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
709
709
  [`footer-collapse-${collapse}`]: collapse !== undefined,
710
- } }, mode === 'ios' && translucent && h("div", { key: 'fafad08090a33d8c4e8a5b63d61929dcb89aab47', class: "footer-background" }), h("slot", { key: 'e0a443d346afa55e4317c0bc1263fdbe3c619559' })));
710
+ } }, mode === 'ios' && translucent && h("div", { key: 'e16ed4963ff94e06de77eb8038201820af73937c', class: "footer-background" }), h("slot", { key: 'f186934febf85d37133d9351a96c1a64b0a4b203' })));
711
711
  }
712
712
  get el() { return getElement(this); }
713
713
  };
@@ -1091,14 +1091,14 @@ const Header = class {
1091
1091
  const isCondensed = collapse === 'condense';
1092
1092
  // banner role must be at top level, so remove role if inside a menu
1093
1093
  const roleType = getRoleType(hostContext('ion-menu', this.el), isCondensed, mode);
1094
- return (h(Host, Object.assign({ key: '42fb0d8aa663bef7b1a21e026ea45e932b965794', role: roleType, class: {
1094
+ return (h(Host, Object.assign({ key: '863c4568cd7b8c0ec55109f193bbbaed68a1346e', role: roleType, class: {
1095
1095
  [mode]: true,
1096
1096
  // Used internally for styling
1097
1097
  [`header-${mode}`]: true,
1098
1098
  [`header-translucent`]: this.translucent,
1099
1099
  [`header-collapse-${collapse}`]: true,
1100
1100
  [`header-translucent-${mode}`]: this.translucent,
1101
- } }, inheritedAttributes), mode === 'ios' && translucent && h("div", { key: '31fac480feb43bf4adcc97529d88f1fa8034ce98', class: "header-background" }), h("slot", { key: '8fb8d10312836c3de63ba3fccf9ec1a08ca5b9d1' })));
1101
+ } }, inheritedAttributes), mode === 'ios' && translucent && h("div", { key: '25c3bdce328b0b35607d154c8b8374679313d881', class: "header-background" }), h("slot", { key: 'b44fab0a9be7920b9650da26117c783e751e1702' })));
1102
1102
  }
1103
1103
  get el() { return getElement(this); }
1104
1104
  };
@@ -1284,7 +1284,7 @@ const RouterOutlet = class {
1284
1284
  return true;
1285
1285
  }
1286
1286
  render() {
1287
- return h("slot", { key: '386c41745b61daba161cf75063da97fe29ba36cb' });
1287
+ return h("slot", { key: '84b50f1155b0d780dff802ee13223287259fd525' });
1288
1288
  }
1289
1289
  get el() { return getElement(this); }
1290
1290
  static get watchers() { return {
@@ -1320,11 +1320,11 @@ const ToolbarTitle = class {
1320
1320
  render() {
1321
1321
  const mode = getIonMode(this);
1322
1322
  const size = this.getSize();
1323
- return (h(Host, { key: '44e63f8439df64c470692904427b417e19406476', class: createColorClasses(this.color, {
1323
+ return (h(Host, { key: 'e599c0bf1b0817df3fa8360bdcd6d787f751c371', class: createColorClasses(this.color, {
1324
1324
  [mode]: true,
1325
1325
  [`title-${size}`]: true,
1326
1326
  'title-rtl': document.dir === 'rtl',
1327
- }) }, h("div", { key: '784cf60a0db16045391891cc8fad0c7dbeba4039', class: "toolbar-title" }, h("slot", { key: '0c720a50479ba257e8756337aeb9b0ab7516a227' }))));
1327
+ }) }, h("div", { key: '6e7eee9047d6759876bb31d7305b76efc7c4338c', class: "toolbar-title" }, h("slot", { key: 'bf790eb4c83dd0af4f2fd1f85ab4af5819f46ff4' }))));
1328
1328
  }
1329
1329
  get el() { return getElement(this); }
1330
1330
  static get watchers() { return {
@@ -1389,10 +1389,10 @@ const Toolbar = class {
1389
1389
  this.childrenStyles.forEach((value) => {
1390
1390
  Object.assign(childStyles, value);
1391
1391
  });
1392
- return (h(Host, { key: 'b849db2863778dee6c5a251bffa1b3a657aeb036', class: Object.assign(Object.assign({}, childStyles), createColorClasses(this.color, {
1392
+ return (h(Host, { key: 'f6c4f669a6a61c5eac4cbb5ea0aa97c48ae5bd46', class: Object.assign(Object.assign({}, childStyles), createColorClasses(this.color, {
1393
1393
  [mode]: true,
1394
1394
  'in-toolbar': hostContext('ion-toolbar', this.el),
1395
- })) }, h("div", { key: '67f5bba9c4f527c3f35bfe1313a2b85741f9b246', class: "toolbar-background", part: "background" }), h("div", { key: '085e8c68f056e5b0deb9d1606431fbeb45dae8e5', class: "toolbar-container", part: "container" }, h("slot", { key: '15227c79c3baf883fd8c43fdb7e1313453933c79', name: "start" }), h("slot", { key: '0b8a7f7e685aa31c80d9bc03446ccc3a9d07e0e8', name: "secondary" }), h("div", { key: '57e4628c1fa89df79dd80456259db961bb691404', class: "toolbar-content", part: "content" }, h("slot", { key: '82c2f6e1acf8d96db259bd8baf295881801edbd5' })), h("slot", { key: 'b2d4afb15214199f206c0a5e08b581e4c9c2f58a', name: "primary" }), h("slot", { key: 'bfb909a0c472f8834046c2ea23bef2f562167ad3', name: "end" }))));
1395
+ })) }, h("div", { key: '9c81742ffa02de9ba7417025b077d05e67305074', class: "toolbar-background", part: "background" }), h("div", { key: '5fc96d166fa47894a062e41541a9beee38078a36', class: "toolbar-container", part: "container" }, h("slot", { key: 'b62c0d9d59a70176bdbf769aec6090d7a166853b', name: "start" }), h("slot", { key: 'd01d3cc2c50e5aaa49c345b209fe8dbdf3d48131', name: "secondary" }), h("div", { key: '3aaa3a2810aedd38c37eb616158ec7b9638528fc', class: "toolbar-content", part: "content" }, h("slot", { key: '357246690f8d5e1cc3ca369611d4845a79edf610' })), h("slot", { key: '06ed3cca4f7ebff4a54cd877dad3cc925ccf9f75', name: "primary" }), h("slot", { key: 'e453d43d14a26b0d72f41e1b81a554bab8ece811', name: "end" }))));
1396
1396
  }
1397
1397
  get el() { return getElement(this); }
1398
1398
  };
@@ -49,7 +49,7 @@ const Thumbnail = class {
49
49
  registerInstance(this, hostRef);
50
50
  }
51
51
  render() {
52
- return (h(Host, { key: 'b250e01664238f1dca8f9757b15bc3d5d9387ffa', class: getIonMode(this) }, h("slot", { key: '72cb568bccabc983c5186a7596ef6c6d4ebf5ad9' })));
52
+ return (h(Host, { key: '70ada828e8cf541ab3b47f94b7e56ce34114ef88', class: getIonMode(this) }, h("slot", { key: 'c43e105669d2bae123619b616f3af8ca2f722d61' })));
53
53
  }
54
54
  };
55
55
  Thumbnail.style = thumbnailCss;
@@ -130,10 +130,10 @@ const Grid = class {
130
130
  }
131
131
  render() {
132
132
  const mode = getIonMode(this);
133
- return (h(Host, { key: '930ce78b02f8360fbca08a35d364d2c09128c6c8', class: {
133
+ return (h(Host, { key: '617127ecfabf9bf615bef1dda1be3fed5a065949', class: {
134
134
  [mode]: true,
135
135
  'grid-fixed': this.fixed,
136
- } }, h("slot", { key: 'c47bf7ef2197f5ebc42d3e2c55044276fb0db393' })));
136
+ } }, h("slot", { key: 'c781fff853b093d8f44bdb7943bbc4f17c903803' })));
137
137
  }
138
138
  };
139
139
  Grid.style = gridCss;
@@ -145,7 +145,7 @@ const Row = class {
145
145
  registerInstance(this, hostRef);
146
146
  }
147
147
  render() {
148
- return (h(Host, { key: '8ba906a8cbea060a79ed658c9bf34906f0c11d38', class: getIonMode(this) }, h("slot", { key: 'd1009176f45b588fa52c7d9eb336f3c6d3214bb8' })));
148
+ return (h(Host, { key: '65592a79621bd8f75f9566db3e8c05a4b8fc6048', class: getIonMode(this) }, h("slot", { key: '56f09784db7a0299c9ce76dfcede185b295251ff' })));
149
149
  }
150
150
  };
151
151
  Row.style = rowCss;
@@ -335,11 +335,11 @@ const DatetimeButton = class {
335
335
  render() {
336
336
  const { color, dateText, timeText, selectedButton, datetimeActive, disabled } = this;
337
337
  const mode = getIonMode(this);
338
- return (h(Host, { key: '0cad13e702cd8f76b10364d44993495d1aac40fb', class: createColorClasses(color, {
338
+ return (h(Host, { key: '11d037e6ab061e5116842970760b04850b42f2c7', class: createColorClasses(color, {
339
339
  [mode]: true,
340
340
  [`${selectedButton}-active`]: datetimeActive,
341
341
  ['datetime-button-disabled']: disabled,
342
- }) }, dateText && (h("button", { key: '03ceb62c8dd7b4a97eca211d8ad73a4cfa8c2a1a', class: "ion-activatable", id: "date-button", "aria-expanded": datetimeActive ? 'true' : 'false', onClick: this.handleDateClick, disabled: disabled, part: "native", ref: (el) => (this.dateTargetEl = el) }, h("slot", { key: '251c03d7dc30180caf5f2728818ab445b7b99b52', name: "date-target" }, dateText), mode === 'md' && h("ion-ripple-effect", { key: 'ce5fa19ed565fd788c6096aa55d8102ac36a1307' }))), timeText && (h("button", { key: '4833eb0e7b23f7c4faf03c998a58cc80cc714887', class: "ion-activatable", id: "time-button", "aria-expanded": datetimeActive ? 'true' : 'false', onClick: this.handleTimeClick, disabled: disabled, part: "native", ref: (el) => (this.timeTargetEl = el) }, h("slot", { key: '60966f907d725aea78af66dbb57f1d6f212a1ef5', name: "time-target" }, timeText), mode === 'md' && h("ion-ripple-effect", { key: 'c26bd731e8991e2b2b7984a2bd859f36337a038b' })))));
342
+ }) }, dateText && (h("button", { key: '08ecb62da0fcbf7466a1f2403276712a3ff17fbc', class: "ion-activatable", id: "date-button", "aria-expanded": datetimeActive ? 'true' : 'false', onClick: this.handleDateClick, disabled: disabled, part: "native", ref: (el) => (this.dateTargetEl = el) }, h("slot", { key: '1c04853d4d23c0f1a594602bde44511c98355644', name: "date-target" }, dateText), mode === 'md' && h("ion-ripple-effect", { key: '5fc566cd4bc885bcf983ce99e3dc65d7f485bf9b' }))), timeText && (h("button", { key: 'c9c5c34ac338badf8659da22bea5829d62c51169', class: "ion-activatable", id: "time-button", "aria-expanded": datetimeActive ? 'true' : 'false', onClick: this.handleTimeClick, disabled: disabled, part: "native", ref: (el) => (this.timeTargetEl = el) }, h("slot", { key: '147a9d2069dbf737f6fc64787823d6d5af5aa653', name: "time-target" }, timeText), mode === 'md' && h("ion-ripple-effect", { key: '70a5e25b75ed90ac6bba003468435f67aa9d8f0a' })))));
343
343
  }
344
344
  get el() { return getElement(this); }
345
345
  };
@@ -784,6 +784,28 @@ const Datetime = class {
784
784
  destroyKeyboardMO();
785
785
  }
786
786
  };
787
+ /**
788
+ * TODO(FW-6931): Remove this fallback upon solving the root cause
789
+ * Fallback to ensure the datetime becomes ready even if
790
+ * IntersectionObserver never reports it as intersecting.
791
+ *
792
+ * This is primarily used in environments where the observer
793
+ * might not fire as expected, such as when running under
794
+ * synthetic tests that stub IntersectionObserver.
795
+ */
796
+ this.ensureReadyIfVisible = () => {
797
+ if (this.el.classList.contains('datetime-ready')) {
798
+ return;
799
+ }
800
+ const rect = this.el.getBoundingClientRect();
801
+ if (rect.width === 0 || rect.height === 0) {
802
+ return;
803
+ }
804
+ this.initializeListeners();
805
+ writeTask(() => {
806
+ this.el.classList.add('datetime-ready');
807
+ });
808
+ };
787
809
  this.processValue = (value) => {
788
810
  const hasValue = value !== null && value !== undefined && value !== '' && (!Array.isArray(value) || value.length > 0);
789
811
  const valueToProcess = hasValue ? parseDate(value) : this.defaultParts;
@@ -1061,95 +1083,84 @@ const Datetime = class {
1061
1083
  this.clearFocusVisible();
1062
1084
  this.clearFocusVisible = undefined;
1063
1085
  }
1064
- if (this.resizeObserver) {
1065
- this.resizeObserver.disconnect();
1066
- this.resizeObserver = undefined;
1067
- }
1068
- if (this.destroyOverlayListeners) {
1069
- this.destroyOverlayListeners();
1070
- this.destroyOverlayListeners = undefined;
1071
- }
1072
1086
  }
1073
1087
  initializeListeners() {
1074
1088
  this.initializeCalendarListener();
1075
1089
  this.initializeKeyboardListeners();
1076
1090
  }
1077
1091
  componentDidLoad() {
1078
- const { el } = this;
1092
+ const { el, intersectionTrackerRef } = this;
1079
1093
  /**
1080
1094
  * If a scrollable element is hidden using `display: none`,
1081
1095
  * it will not have a scroll height meaning we cannot scroll elements
1082
1096
  * into view. As a result, we will need to wait for the datetime to become
1083
1097
  * visible if used inside of a modal or a popover otherwise the scrollable
1084
1098
  * areas will not have the correct values snapped into place.
1085
- *
1086
- * We use ResizeObserver to detect when the element transitions between
1087
- * having dimensions (visible) and zero dimensions (hidden). This is more
1088
- * reliable than IntersectionObserver for detecting visibility changes,
1089
- * especially when the element is inside a modal or popover.
1090
1099
  */
1091
- const markReady = () => {
1092
- if (el.classList.contains('datetime-ready')) {
1100
+ const visibleCallback = (entries) => {
1101
+ const ev = entries[0];
1102
+ if (!ev.isIntersecting) {
1093
1103
  return;
1094
1104
  }
1095
1105
  this.initializeListeners();
1106
+ /**
1107
+ * TODO FW-2793: Datetime needs a frame to ensure that it
1108
+ * can properly scroll contents into view. As a result
1109
+ * we hide the scrollable content until after that frame
1110
+ * so users do not see the content quickly shifting. The downside
1111
+ * is that the content will pop into view a frame after. Maybe there
1112
+ * is a better way to handle this?
1113
+ */
1096
1114
  writeTask(() => {
1097
- el.classList.add('datetime-ready');
1098
- });
1099
- };
1100
- const markHidden = () => {
1101
- this.destroyInteractionListeners();
1102
- this.showMonthAndYear = false;
1103
- writeTask(() => {
1104
- el.classList.remove('datetime-ready');
1115
+ this.el.classList.add('datetime-ready');
1105
1116
  });
1106
1117
  };
1118
+ const visibleIO = new IntersectionObserver(visibleCallback, { threshold: 0.01, root: el });
1107
1119
  /**
1108
- * FW-6931: If datetime is inside a popover or modal, listen for the
1109
- * overlay's present/dismiss events. This is more reliable than
1110
- * ResizeObserver in some browsers (e.g., WebKit) where the observer
1111
- * doesn't always fire when the overlay opens.
1120
+ * Use raf to avoid a race condition between the component loading and
1121
+ * its display animation starting (such as when shown in a modal). This
1122
+ * could cause the datetime to start at a visibility of 0, erroneously
1123
+ * triggering the `hiddenIO` observer below.
1112
1124
  */
1113
- const parentOverlay = el.closest('ion-modal, ion-popover');
1114
- if (parentOverlay) {
1115
- const handlePresent = () => markReady();
1116
- const handleDismiss = () => markHidden();
1117
- parentOverlay.addEventListener('didPresent', handlePresent);
1118
- parentOverlay.addEventListener('didDismiss', handleDismiss);
1119
- this.destroyOverlayListeners = () => {
1120
- parentOverlay.removeEventListener('didPresent', handlePresent);
1121
- parentOverlay.removeEventListener('didDismiss', handleDismiss);
1122
- };
1123
- }
1124
- if (typeof ResizeObserver !== 'undefined') {
1125
- this.resizeObserver = new ResizeObserver((entries) => {
1126
- const entry = entries[0];
1127
- const { width, height } = entry.contentRect;
1128
- const isVisible = width > 0 && height > 0;
1129
- const isReady = el.classList.contains('datetime-ready');
1130
- if (isVisible && !isReady) {
1131
- markReady();
1132
- }
1133
- else if (!isVisible && isReady) {
1134
- markHidden();
1135
- }
1136
- });
1137
- /**
1138
- * Use raf to avoid a race condition between the component loading and
1139
- * its display animation starting (such as when shown in a modal).
1140
- */
1141
- raf(() => { var _a; return (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.observe(el); });
1142
- }
1143
- else {
1125
+ raf(() => visibleIO === null || visibleIO === void 0 ? void 0 : visibleIO.observe(intersectionTrackerRef));
1126
+ /**
1127
+ * TODO(FW-6931): Remove this fallback upon solving the root cause
1128
+ * Fallback: If IntersectionObserver never reports that the
1129
+ * datetime is visible but the host clearly has layout, ensure
1130
+ * we still initialize listeners and mark the component as ready.
1131
+ *
1132
+ * We schedule this after everything has had a chance to run.
1133
+ */
1134
+ setTimeout(() => {
1135
+ this.ensureReadyIfVisible();
1136
+ }, 100);
1137
+ /**
1138
+ * We need to clean up listeners when the datetime is hidden
1139
+ * in a popover/modal so that we can properly scroll containers
1140
+ * back into view if they are re-presented. When the datetime is hidden
1141
+ * the scroll areas have scroll widths/heights of 0px, so any snapping
1142
+ * we did originally has been lost.
1143
+ */
1144
+ const hiddenCallback = (entries) => {
1145
+ const ev = entries[0];
1146
+ if (ev.isIntersecting) {
1147
+ return;
1148
+ }
1149
+ this.destroyInteractionListeners();
1144
1150
  /**
1145
- * Fallback for test environments where ResizeObserver is not available.
1146
- * Just mark as ready without initializing scroll/keyboard listeners
1147
- * since those also require browser APIs not available in Jest.
1151
+ * When datetime is hidden, we need to make sure that
1152
+ * the month/year picker is closed. Otherwise,
1153
+ * it will be open when the datetime re-appears
1154
+ * and the scroll area of the calendar grid will be 0.
1155
+ * As a result, the wrong month will be shown.
1148
1156
  */
1157
+ this.showMonthAndYear = false;
1149
1158
  writeTask(() => {
1150
- el.classList.add('datetime-ready');
1159
+ this.el.classList.remove('datetime-ready');
1151
1160
  });
1152
- }
1161
+ };
1162
+ const hiddenIO = new IntersectionObserver(hiddenCallback, { threshold: 0, root: el });
1163
+ raf(() => hiddenIO === null || hiddenIO === void 0 ? void 0 : hiddenIO.observe(intersectionTrackerRef));
1153
1164
  /**
1154
1165
  * Datetime uses Ionic components that emit
1155
1166
  * ionFocus and ionBlur. These events are
@@ -1878,7 +1889,7 @@ const Datetime = class {
1878
1889
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
1879
1890
  const hasWheelVariant = hasDatePresentation && preferWheel;
1880
1891
  renderHiddenInput(true, el, name, formatValue(value), disabled);
1881
- return (h(Host, { key: '5d01aefc3fc66ae90c4b1a85e0f804a3e7819c44', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses(color, {
1892
+ return (h(Host, { key: 'efdbc0922670a841bc667ceac392cdc1dedffd01', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses(color, {
1882
1893
  [mode]: true,
1883
1894
  ['datetime-readonly']: readonly,
1884
1895
  ['datetime-disabled']: disabled,
@@ -1888,7 +1899,7 @@ const Datetime = class {
1888
1899
  [`datetime-size-${size}`]: true,
1889
1900
  [`datetime-prefer-wheel`]: hasWheelVariant,
1890
1901
  [`datetime-grid`]: isGridStyle,
1891
- })) }, this.renderDatetime(mode)));
1902
+ })) }, h("div", { key: '3f8bb75fcb0baff55182ef3aa1b535eacc58d81f', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
1892
1903
  }
1893
1904
  get el() { return getElement(this); }
1894
1905
  static get watchers() { return {
@@ -2165,11 +2176,11 @@ const Picker = class {
2165
2176
  render() {
2166
2177
  const { htmlAttributes } = this;
2167
2178
  const mode = getIonMode(this);
2168
- return (h(Host, Object.assign({ key: '80f66d33780d8a1352d24be9cb63a0cc03d01ab5', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
2179
+ return (h(Host, Object.assign({ key: 'b95440747eb80cba23ae676d399d5e5816722c58', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
2169
2180
  zIndex: `${20000 + this.overlayIndex}`,
2170
2181
  }, class: Object.assign({ [mode]: true,
2171
2182
  // Used internally for styling
2172
- [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), h("ion-backdrop", { key: '97fb8e10ba08b197610cb8c0cdea61103883d55f', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: 'b3969cb6fbf7153623d14e3ca1493d3370efb211', tabindex: "0", "aria-hidden": "true" }), h("div", { key: '299268483c3727e698d9135bfdf40349a7050ac1', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, h("div", { key: '95394de3ef691899b7dbf416f56fd3e86bbdce3f', class: "picker-toolbar" }, this.buttons.map((b) => (h("div", { class: buttonWrapperClass(b) }, h("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass(b) }, b.text))))), h("div", { key: '05f18bb8d00dc0e22f691b7e41f90f729a6c66d7', class: "picker-columns" }, h("div", { key: '4a8fdf224effc0af67fd413e2e6aca8a78d1cf43', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => h("ion-picker-legacy-column", { col: c })), h("div", { key: 'e50a31db45e3f39e9d0fed36a21be9257eec09bf', class: "picker-below-highlight" }))), h("div", { key: '5a78cb2176ac807ea0c195c6b76cd0e8eef9d4c0', tabindex: "0", "aria-hidden": "true" })));
2183
+ [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), h("ion-backdrop", { key: '169d1c83ef40e7fcb134219a585298b403a70b0f', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: '98518e5f5cea2dfb8dfa63d9545e9ae3a5765023', tabindex: "0", "aria-hidden": "true" }), h("div", { key: '151755ab8eb23f9adafbfe201349398f5a69dee7', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, h("div", { key: '5dcf93b2f4fe8f4fce7c7aec8f85ef45a03ef470', class: "picker-toolbar" }, this.buttons.map((b) => (h("div", { class: buttonWrapperClass(b) }, h("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass(b) }, b.text))))), h("div", { key: 'fd5d66708edd38adc5a4d2fad7298969398a05e3', class: "picker-columns" }, h("div", { key: '1b5830fd6cef1016af7736792c514965d6cb38a8', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => h("ion-picker-legacy-column", { col: c })), h("div", { key: 'c6edeca7afd69e13c9c66ba36f261974fd0f8f78', class: "picker-below-highlight" }))), h("div", { key: 'e2a4b24710e30579b14b82dbfd3761b2187797b5', tabindex: "0", "aria-hidden": "true" })));
2173
2184
  }
2174
2185
  get el() { return getElement(this); }
2175
2186
  static get watchers() { return {
@@ -2523,9 +2534,9 @@ const PickerColumnCmp = class {
2523
2534
  render() {
2524
2535
  const col = this.col;
2525
2536
  const mode = getIonMode(this);
2526
- return (h(Host, { key: '86125e95f18837dfd021db01777d72a1562d8ee3', class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
2537
+ return (h(Host, { key: 'ed32d108dd94f0302fb453c31a3497ebae65ec37', class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
2527
2538
  'max-width': this.col.columnWidth,
2528
- } }, col.prefix && (h("div", { key: 'b0f3d39e0bd128781066ffefb7a1e40d12a9e76d', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), h("div", { key: '0b106ac4d56916eaaa7f09d1b68348b3754b7bba', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (h("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (h("div", { key: '00ff2f9dbb4561787e5a5223327c6a2a33f8362e', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
2539
+ } }, col.prefix && (h("div", { key: '9f0634890e66fd4ae74f826d1eea3431de121393', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), h("div", { key: '337e996e5be91af16446085fe22436f213b771eb', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (h("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (h("div", { key: 'd69a132599d78d9e5107f12228978cfce4e43098', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
2529
2540
  }
2530
2541
  get el() { return getElement(this); }
2531
2542
  static get watchers() { return {
@@ -61,12 +61,12 @@ const Fab = class {
61
61
  render() {
62
62
  const { horizontal, vertical, edge } = this;
63
63
  const mode = getIonMode(this);
64
- return (h(Host, { key: 'cb44cf6486b0a6439b99da87c065b0b52e2514f4', class: {
64
+ return (h(Host, { key: '8a310806d0e748d7ebb0ed3d9a2652038e0f2960', class: {
65
65
  [mode]: true,
66
66
  [`fab-horizontal-${horizontal}`]: horizontal !== undefined,
67
67
  [`fab-vertical-${vertical}`]: vertical !== undefined,
68
68
  'fab-edge': edge,
69
- } }, h("slot", { key: '1ed484c7ecb10cd81fbca9a4f5c4049bf82f9f8a' })));
69
+ } }, h("slot", { key: '9394ef6d6e5b0410fa6ba212171f687fb178ce2d' })));
70
70
  }
71
71
  get el() { return getElement(this); }
72
72
  static get watchers() { return {
@@ -152,7 +152,7 @@ const FabButton = class {
152
152
  rel: this.rel,
153
153
  target: this.target,
154
154
  };
155
- return (h(Host, { key: 'eb347f7d6749c40637540d84778eb8d1b667a947', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses(color, {
155
+ return (h(Host, { key: '4eee204d20b0e2ffed49a88f6cb3e04b6697965c', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses(color, {
156
156
  [mode]: true,
157
157
  'fab-button-in-list': inList,
158
158
  'fab-button-translucent-in-list': inList && translucent,
@@ -163,7 +163,7 @@ const FabButton = class {
163
163
  'ion-activatable': true,
164
164
  'ion-focusable': true,
165
165
  [`fab-button-${size}`]: size !== undefined,
166
- }) }, h(TagType, Object.assign({ key: '83e853c8815f41543c848eb2e05ec2bb1716110a' }, attrs, { class: "button-native", part: "native", disabled: disabled, onFocus: this.onFocus, onBlur: this.onBlur, onClick: (ev) => openURL(href, ev, this.routerDirection, this.routerAnimation) }, inheritedAttributes), h("ion-icon", { key: '798deede94de658e4345acf7c2aafe2ab2567b0b', "aria-hidden": "true", icon: this.closeIcon, part: "close-icon", class: "close-icon", lazy: false }), h("span", { key: '99252fde6de1aca73fc240a6da7e29acac9acb18', class: "button-inner" }, h("slot", { key: 'dc73e9b41bf1f0e385e5784f975dfb81e37c8dfb' })), mode === 'md' && h("ion-ripple-effect", { key: '8413e162f44a0350f54dff06cff7aad101de3549' }))));
166
+ }) }, h(TagType, Object.assign({ key: '914561622c0c6bd41453e828a7d8a39f924875ac' }, attrs, { class: "button-native", part: "native", disabled: disabled, onFocus: this.onFocus, onBlur: this.onBlur, onClick: (ev) => openURL(href, ev, this.routerDirection, this.routerAnimation) }, inheritedAttributes), h("ion-icon", { key: '2c8090742a64c62a79243667027a195cca9d5912', "aria-hidden": "true", icon: this.closeIcon, part: "close-icon", class: "close-icon", lazy: false }), h("span", { key: 'c3e55291e4c4d306d34a4b95dd2e727e87bdf39c', class: "button-inner" }, h("slot", { key: 'f8e57f71d8f8878d9746cfece82f57f19ef9e988' })), mode === 'md' && h("ion-ripple-effect", { key: 'a5e94fa0bb9836072300617245ed0c1b4887bac6' }))));
167
167
  }
168
168
  get el() { return getElement(this); }
169
169
  };
@@ -196,11 +196,11 @@ const FabList = class {
196
196
  }
197
197
  render() {
198
198
  const mode = getIonMode(this);
199
- return (h(Host, { key: 'fa1d195b9950654ba0e984bf61d981c977d05275', class: {
199
+ return (h(Host, { key: '64b33366447f66c7f979cfac56307fbb1a6fac1c', class: {
200
200
  [mode]: true,
201
201
  'fab-list-active': this.activated,
202
202
  [`fab-list-side-${this.side}`]: true,
203
- } }, h("slot", { key: '2ec738c66c05112e1e2521155d6adfc36d2fd1db' })));
203
+ } }, h("slot", { key: 'd9f474f7f20fd7e813db358fddc720534ca05bb6' })));
204
204
  }
205
205
  get el() { return getElement(this); }
206
206
  static get watchers() { return {
@@ -71,7 +71,7 @@ const Img = class {
71
71
  render() {
72
72
  const { loadSrc, alt, onLoad, loadError, inheritedAttributes } = this;
73
73
  const { draggable } = inheritedAttributes;
74
- return (h(Host, { key: '14d24d65ec8e5522192ca58035264971b1ab883b', class: getIonMode(this) }, h("img", { key: '345ba155a5fdce5e66c397a599b7333d37d9cb1d', decoding: "async", src: loadSrc, alt: alt, onLoad: onLoad, onError: loadError, part: "image", draggable: isDraggable(draggable) })));
74
+ return (h(Host, { key: 'da600442894427dee1974a28e545613afac69fca', class: getIonMode(this) }, h("img", { key: '16df0c7069af86c0fa7ce5af598bc0f63b4eb71a', decoding: "async", src: loadSrc, alt: alt, onLoad: onLoad, onError: loadError, part: "image", draggable: isDraggable(draggable) })));
75
75
  }
76
76
  get el() { return getElement(this); }
77
77
  static get watchers() { return {
@@ -196,7 +196,7 @@ const InfiniteScroll = class {
196
196
  render() {
197
197
  const mode = getIonMode(this);
198
198
  const disabled = this.disabled;
199
- return (h(Host, { key: '1444429a86950c449953cbf578436cc8cabf40ec', class: {
199
+ return (h(Host, { key: 'e844956795f69be33396ce4480aa7a54ad01b28c', class: {
200
200
  [mode]: true,
201
201
  'infinite-scroll-loading': this.isLoading,
202
202
  'infinite-scroll-enabled': !disabled,
@@ -234,11 +234,11 @@ const InfiniteScrollContent = class {
234
234
  }
235
235
  render() {
236
236
  const mode = getIonMode(this);
237
- return (h(Host, { key: '060278bf9cb0321e182352f9613be4ebbb028259', class: {
237
+ return (h(Host, { key: '7c16060dcfe2a0b0fb3e2f8f4c449589a76f1baa', class: {
238
238
  [mode]: true,
239
239
  // Used internally for styling
240
240
  [`infinite-scroll-content-${mode}`]: true,
241
- } }, h("div", { key: '07d3cada920145f979ad315bd187fb878e0c3da3', class: "infinite-loading" }, this.loadingSpinner && (h("div", { key: '6254f175d7543d09f3dd47cd0589a2809182cd8c', class: "infinite-loading-spinner" }, h("ion-spinner", { key: 'a6a816d1c65b60b786333b209b63492aa716a283', name: this.loadingSpinner }))), this.loadingText !== undefined && this.renderLoadingText())));
241
+ } }, h("div", { key: 'a94f4d8746e053dc718f97520bd7e48cb316443a', class: "infinite-loading" }, this.loadingSpinner && (h("div", { key: '10143d5d2a50a2a2bc5de1cee8e7ab51263bcf23', class: "infinite-loading-spinner" }, h("ion-spinner", { key: '8846e88191690d9c61a0b462889ed56fbfed8b0d', name: this.loadingSpinner }))), this.loadingText !== undefined && this.renderLoadingText())));
242
242
  }
243
243
  };
244
244
  InfiniteScrollContent.style = {
@@ -615,7 +615,7 @@ const InputOTP = class {
615
615
  const tabbableIndex = this.getTabbableIndex();
616
616
  const pattern = this.getPattern();
617
617
  const hasDescription = ((_b = (_a = el.querySelector('.input-otp-description')) === null || _a === void 0 ? void 0 : _a.textContent) === null || _b === void 0 ? void 0 : _b.trim()) !== '';
618
- return (h(Host, { key: '76126aeef5a333d3ce86149d1ce21da6c7834898', class: createColorClasses(color, {
618
+ return (h(Host, { key: 'f15a29fb17b681ef55885ca36d3d5f899cbaca83', class: createColorClasses(color, {
619
619
  [mode]: true,
620
620
  'has-focus': hasFocus,
621
621
  [`input-otp-size-${size}`]: true,
@@ -623,10 +623,10 @@ const InputOTP = class {
623
623
  [`input-otp-fill-${fill}`]: true,
624
624
  'input-otp-disabled': disabled,
625
625
  'input-otp-readonly': readonly,
626
- }) }, h("div", Object.assign({ key: 'e9aa792de40a0e49075e8881c6a11245807e1051', role: "group", "aria-label": "One-time password input", class: "input-otp-group" }, inheritedAttributes), Array.from({ length }).map((_, index) => (h(Fragment, null, h("div", { class: "native-wrapper" }, h("input", { class: "native-input", id: `${inputId}-${index}`, "aria-label": `Input ${index + 1} of ${length}`, type: "text", autoCapitalize: autocapitalize, inputmode: inputmode, pattern: pattern, disabled: disabled, readOnly: readonly, tabIndex: index === tabbableIndex ? 0 : -1, value: inputValues[index] || '', autocomplete: "one-time-code", ref: (el) => (inputRefs[index] = el), onInput: this.onInput(index), onBlur: this.onBlur, onFocus: this.onFocus(index), onKeyDown: this.onKeyDown(index), onPaste: this.onPaste })), this.showSeparator(index) && h("div", { class: "input-otp-separator" }))))), h("div", { key: '262ead41c9401a2144e9d7b7bd85311e366d09b2', class: {
626
+ }) }, h("div", Object.assign({ key: 'd7e1d4edd8aafcf2ed4313301287282e90fc7e82', role: "group", "aria-label": "One-time password input", class: "input-otp-group" }, inheritedAttributes), Array.from({ length }).map((_, index) => (h(Fragment, null, h("div", { class: "native-wrapper" }, h("input", { class: "native-input", id: `${inputId}-${index}`, "aria-label": `Input ${index + 1} of ${length}`, type: "text", autoCapitalize: autocapitalize, inputmode: inputmode, pattern: pattern, disabled: disabled, readOnly: readonly, tabIndex: index === tabbableIndex ? 0 : -1, value: inputValues[index] || '', autocomplete: "one-time-code", ref: (el) => (inputRefs[index] = el), onInput: this.onInput(index), onBlur: this.onBlur, onFocus: this.onFocus(index), onKeyDown: this.onKeyDown(index), onPaste: this.onPaste })), this.showSeparator(index) && h("div", { class: "input-otp-separator" }))))), h("div", { key: '3724a3159d02860971879a906092f9965f5a7c47', class: {
627
627
  'input-otp-description': true,
628
628
  'input-otp-description-hidden': !hasDescription,
629
- } }, h("slot", { key: '63a4b07ef5e3174cc75cdaed59305cdaebcfd1ad' }))));
629
+ } }, h("slot", { key: '11baa2624926a08274508afe0833d9237a8dc35c' }))));
630
630
  }
631
631
  get el() { return getElement(this); }
632
632
  static get watchers() { return {
@@ -62,16 +62,16 @@ const InputPasswordToggle = class {
62
62
  const showPasswordIcon = (_a = this.showIcon) !== null && _a !== void 0 ? _a : eye;
63
63
  const hidePasswordIcon = (_b = this.hideIcon) !== null && _b !== void 0 ? _b : eyeOff;
64
64
  const isPasswordVisible = type === 'text';
65
- return (h(Host, { key: '07e26969f77ad361e358efe33a3b3728d9669017', class: createColorClasses(color, {
65
+ return (h(Host, { key: '91bc55664d496fe457518bd112865dd7811d0c17', class: createColorClasses(color, {
66
66
  [mode]: true,
67
- }) }, h("ion-button", { key: '9f21eaea5756844d37930d52d8d3013c9d476b9f', mode: mode, color: color, fill: "clear", shape: "round", "aria-checked": isPasswordVisible ? 'true' : 'false', "aria-label": isPasswordVisible ? 'Hide password' : 'Show password', role: "switch", type: "button", onPointerDown: (ev) => {
67
+ }) }, h("ion-button", { key: 'f3e436422110c9cb4d5c0b83500255b24ab4cdef', mode: mode, color: color, fill: "clear", shape: "round", "aria-checked": isPasswordVisible ? 'true' : 'false', "aria-label": isPasswordVisible ? 'Hide password' : 'Show password', role: "switch", type: "button", onPointerDown: (ev) => {
68
68
  /**
69
69
  * This prevents mobile browsers from
70
70
  * blurring the input when the password toggle
71
71
  * button is activated.
72
72
  */
73
73
  ev.preventDefault();
74
- }, onClick: this.togglePasswordVisibility }, h("ion-icon", { key: 'd7b1f55b77b71bf2c147f3bde83de1e9083f70ba', slot: "icon-only", "aria-hidden": "true", icon: isPasswordVisible ? hidePasswordIcon : showPasswordIcon }))));
74
+ }, onClick: this.togglePasswordVisibility }, h("ion-icon", { key: '5c8b121153f148f92aa7cba0447673a4f6f3ad1e', slot: "icon-only", "aria-hidden": "true", icon: isPasswordVisible ? hidePasswordIcon : showPasswordIcon }))));
75
75
  }
76
76
  get el() { return getElement(this); }
77
77
  static get watchers() { return {
@@ -515,7 +515,7 @@ const Input = class {
515
515
  * TODO(FW-5592): Remove hasStartEndSlots condition
516
516
  */
517
517
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
518
- return (h(Host, { key: '81b44a68138ec7a9f1d4a27549d0c32283dea50d', class: createColorClasses(this.color, {
518
+ return (h(Host, { key: '97b5308021064d9e7434ef2d3d96f27045c1b0c4', class: createColorClasses(this.color, {
519
519
  [mode]: true,
520
520
  'has-value': hasValue,
521
521
  'has-focus': hasFocus,
@@ -526,14 +526,14 @@ const Input = class {
526
526
  'in-item': inItem,
527
527
  'in-item-color': hostContext('ion-item.ion-color', this.el),
528
528
  'input-disabled': disabled,
529
- }) }, h("label", { key: '049adad1bdcb64ee416e420b523e222cb9c0d3df', class: "input-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), h("div", { key: '00414cbb2adcc565d52dd5ba3af0280df3ba2c9c', class: "native-wrapper", onClick: this.onLabelClick }, h("slot", { key: 'a09366b057322372e48daeb5a70619e5603b6972', name: "start" }), h("input", Object.assign({ key: '8bd259fca7c30885df0bef6fa37a3c6516b7533e', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd, "aria-describedby": this.getHintTextID(), "aria-invalid": this.isInvalid ? 'true' : undefined }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (h("button", { key: '9655b387bf51a371877ab40879c9cdc953a8019f', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
529
+ }) }, h("label", { key: '353f68726ce180299bd9adc81e5ff7d26a48f54f', class: "input-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), h("div", { key: '2034b4bad04fc157f3298a1805819216b6f439d0', class: "native-wrapper", onClick: this.onLabelClick }, h("slot", { key: '96bb5e30176b2bd76dfb75bfbf6c1c3d4403f4bb', name: "start" }), h("input", Object.assign({ key: '1a1d75b0e414a95c89d5a760757c33548d234aca', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd, "aria-describedby": this.getHintTextID(), "aria-invalid": this.isInvalid ? 'true' : undefined }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (h("button", { key: '95f3df17b7691d9a2e7dcd4a51f16a94aa3ca36f', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
530
530
  /**
531
531
  * This prevents mobile browsers from
532
532
  * blurring the input when the clear
533
533
  * button is activated.
534
534
  */
535
535
  ev.preventDefault();
536
- }, onClick: this.clearTextInput }, h("ion-icon", { key: '834670e725e0140069eead8ff6c7a63d87f0aac0', "aria-hidden": "true", icon: clearIconData }))), h("slot", { key: 'e41136ffef6bd8f8fb4c8480bf6dfaa3b61dc286', name: "end" })), shouldRenderHighlight && h("div", { key: '517a556a9748600af6c258c9f668e7b10a798427', class: "input-highlight" })), this.renderBottomContent()));
536
+ }, onClick: this.clearTextInput }, h("ion-icon", { key: '16b0af75eed50c8115fb5597f73b5fbf71c2530e', "aria-hidden": "true", icon: clearIconData }))), h("slot", { key: 'c48da0f8ddb3764ac43efa705bb4a6bb2d9cc2fd', name: "end" })), shouldRenderHighlight && h("div", { key: 'f15238481fc20de56ca7ecb6e350b3c024cc755e', class: "input-highlight" })), this.renderBottomContent()));
537
537
  }
538
538
  get el() { return getElement(this); }
539
539
  static get watchers() { return {
@@ -45,12 +45,12 @@ const ItemOption = class {
45
45
  href: this.href,
46
46
  target: this.target,
47
47
  };
48
- return (h(Host, { key: '058310ac361612c16f2ef70c74279ba7c24128c5', onClick: this.onClick, class: createColorClasses(this.color, {
48
+ return (h(Host, { key: '189a0040b97163b2336bf216baa71d584c5923a8', onClick: this.onClick, class: createColorClasses(this.color, {
49
49
  [mode]: true,
50
50
  'item-option-disabled': disabled,
51
51
  'item-option-expandable': expandable,
52
52
  'ion-activatable': true,
53
- }) }, h(TagType, Object.assign({ key: '045052656ab652bec065d421950fe9ea00dc1141' }, attrs, { class: "button-native", part: "native", disabled: disabled }), h("span", { key: '988b9166c0dda3c822a99ceace4c105339b2465b', class: "button-inner" }, h("slot", { key: '8050b870ada6b09283f8acbcbb6d2bd1c76508b3', name: "top" }), h("div", { key: 'a206e7b09e660c878ce3c5b61d018e8cdd89dc55', class: "horizontal-wrapper" }, h("slot", { key: '394e5e4ce14cd19b5d5eafca29bb9f971f5f0741', name: "start" }), h("slot", { key: 'dd4c3a1bee7622df40a3d8f2a298045b772f1600', name: "icon-only" }), h("slot", { key: '318f3ec97b722c5e7df1a78b1e0439f919d0aacc' }), h("slot", { key: 'fff6a9a602cf7bd698528982f91742a2d36ea245', name: "end" })), h("slot", { key: '26b4bb155701d8080b486dbad7bb9a6d2e35182c', name: "bottom" })), mode === 'md' && h("ion-ripple-effect", { key: '152b74643bf0f5725c39bfdbb940f0f32ec83d58' }))));
53
+ }) }, h(TagType, Object.assign({ key: '5a7140eb99da5ec82fe2ea3ea134513130763399' }, attrs, { class: "button-native", part: "native", disabled: disabled }), h("span", { key: '9b8577e612706b43e575c9a20f2f9d35c0d1bcb1', class: "button-inner" }, h("slot", { key: '9acb82f04e4822bfaa363cc2c4d29d5c0fec0ad6', name: "top" }), h("div", { key: '66f5fb4fdd0c39f205574c602c793dcf109c7a17', class: "horizontal-wrapper" }, h("slot", { key: '3761a32bca7c6c41b7eb394045497cfde181a62a', name: "start" }), h("slot", { key: 'a96a568955cf6962883dc6771726d3d07462da00', name: "icon-only" }), h("slot", { key: 'af5dfe5eb41456b9359bafe3615b576617ed7b57' }), h("slot", { key: '00426958066ab7b949ff966fabad5cf8a0b54079', name: "end" })), h("slot", { key: 'ae66c8bd536a9f27865f49240980d7b4b831b229', name: "bottom" })), mode === 'md' && h("ion-ripple-effect", { key: '30df6c935ef8a3f28a6bc1f3bb162ca4f80aaf26' }))));
54
54
  }
55
55
  get el() { return getElement(this); }
56
56
  };
@@ -82,7 +82,7 @@ const ItemOptions = class {
82
82
  render() {
83
83
  const mode = getIonMode(this);
84
84
  const isEnd = isEndSide(this.side);
85
- return (h(Host, { key: '7b4b93984182222c64c7a2a22a18e52ac19e3049', class: {
85
+ return (h(Host, { key: '05a22a505e043c2715e3805e5e26ab4668940af0', class: {
86
86
  [mode]: true,
87
87
  // Used internally for styling
88
88
  [`item-options-${mode}`]: true,
@@ -493,7 +493,7 @@ const ItemSliding = class {
493
493
  }
494
494
  render() {
495
495
  const mode = getIonMode(this);
496
- return (h(Host, { key: '8fd81d74701402294a48b79c56d6eceadafd4881', class: {
496
+ return (h(Host, { key: 'd812322c9fb5da4ee16e99dc38bfb24cb4590d03', class: {
497
497
  [mode]: true,
498
498
  'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
499
499
  'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,