@ionic/core 8.7.13-dev.11765560568.1a8772e8 → 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 +85 -86
  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 +89 -90
  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 +85 -86
  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 +89 -90
  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 +8 -9
  272. package/hydrate/index.js +213 -214
  273. package/hydrate/index.mjs +213 -214
  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-ce8dad03.entry.js +0 -4
  279. package/dist/ionic/p-ebcfc1d2.entry.js +0 -4
package/dist/docs.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2025-12-12T17:31:38",
2
+ "timestamp": "2025-12-12T20:02:50",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.38.0",
@@ -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,107 +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
- /**
1078
- * Sets up visibility detection for the datetime component.
1079
- *
1080
- * Uses multiple strategies to reliably detect when the datetime becomes
1081
- * visible, which is necessary for proper initialization of scrollable areas:
1082
- * 1. ResizeObserver - detects dimension changes
1083
- * 2. Overlay event listeners - for datetime inside modals/popovers
1084
- * 3. Polling fallback - for browsers where observers are unreliable (WebKit)
1085
- */
1086
- initializeVisibilityObserver() {
1087
- const { el } = this;
1088
- const markReady = () => {
1089
- if (el.classList.contains('datetime-ready')) {
1091
+ componentDidLoad() {
1092
+ const { el, intersectionTrackerRef } = this;
1093
+ /**
1094
+ * If a scrollable element is hidden using `display: none`,
1095
+ * it will not have a scroll height meaning we cannot scroll elements
1096
+ * into view. As a result, we will need to wait for the datetime to become
1097
+ * visible if used inside of a modal or a popover otherwise the scrollable
1098
+ * areas will not have the correct values snapped into place.
1099
+ */
1100
+ const visibleCallback = (entries) => {
1101
+ const ev = entries[0];
1102
+ if (!ev.isIntersecting) {
1090
1103
  return;
1091
1104
  }
1092
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
+ */
1093
1114
  writeTask(() => {
1094
- el.classList.add('datetime-ready');
1095
- });
1096
- };
1097
- const markHidden = () => {
1098
- this.destroyInteractionListeners();
1099
- this.showMonthAndYear = false;
1100
- writeTask(() => {
1101
- el.classList.remove('datetime-ready');
1115
+ this.el.classList.add('datetime-ready');
1102
1116
  });
1103
- startVisibilityPolling();
1104
1117
  };
1118
+ const visibleIO = new IntersectionObserver(visibleCallback, { threshold: 0.01, root: el });
1105
1119
  /**
1106
- * FW-6931: Poll for visibility as a fallback for browsers where
1107
- * ResizeObserver doesn't fire reliably (e.g., WebKit).
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.
1108
1124
  */
1109
- const startVisibilityPolling = () => {
1110
- let pollCount = 0;
1111
- const poll = () => {
1112
- if (el.classList.contains('datetime-ready') || pollCount++ >= 60) {
1113
- return;
1114
- }
1115
- const { width, height } = el.getBoundingClientRect();
1116
- if (width > 0 && height > 0) {
1117
- markReady();
1118
- }
1119
- else {
1120
- raf(poll);
1121
- }
1122
- };
1123
- raf(poll);
1124
- };
1125
+ raf(() => visibleIO === null || visibleIO === void 0 ? void 0 : visibleIO.observe(intersectionTrackerRef));
1125
1126
  /**
1126
- * FW-6931: Listen for overlay present/dismiss events when datetime
1127
- * is inside a modal or popover.
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.
1128
1133
  */
1129
- const parentOverlay = el.closest('ion-modal, ion-popover');
1130
- if (parentOverlay) {
1131
- const handlePresent = () => markReady();
1132
- const handleDismiss = () => markHidden();
1133
- parentOverlay.addEventListener('didPresent', handlePresent);
1134
- parentOverlay.addEventListener('didDismiss', handleDismiss);
1135
- this.destroyOverlayListeners = () => {
1136
- parentOverlay.removeEventListener('didPresent', handlePresent);
1137
- parentOverlay.removeEventListener('didDismiss', handleDismiss);
1138
- };
1139
- }
1140
- if (typeof ResizeObserver !== 'undefined') {
1141
- this.resizeObserver = new ResizeObserver((entries) => {
1142
- const { width, height } = entries[0].contentRect;
1143
- const isVisible = width > 0 && height > 0;
1144
- const isReady = el.classList.contains('datetime-ready');
1145
- if (isVisible && !isReady) {
1146
- markReady();
1147
- }
1148
- else if (!isVisible && isReady) {
1149
- markHidden();
1150
- }
1151
- });
1152
- // Use raf to avoid race condition with modal/popover animations
1153
- raf(() => { var _a; return (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.observe(el); });
1154
- startVisibilityPolling();
1155
- }
1156
- else {
1157
- // Test environment fallback - mark ready immediately
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();
1150
+ /**
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.
1156
+ */
1157
+ this.showMonthAndYear = false;
1158
1158
  writeTask(() => {
1159
- el.classList.add('datetime-ready');
1159
+ this.el.classList.remove('datetime-ready');
1160
1160
  });
1161
- }
1162
- }
1163
- componentDidLoad() {
1164
- this.initializeVisibilityObserver();
1161
+ };
1162
+ const hiddenIO = new IntersectionObserver(hiddenCallback, { threshold: 0, root: el });
1163
+ raf(() => hiddenIO === null || hiddenIO === void 0 ? void 0 : hiddenIO.observe(intersectionTrackerRef));
1165
1164
  /**
1166
1165
  * Datetime uses Ionic components that emit
1167
1166
  * ionFocus and ionBlur. These events are
@@ -1890,7 +1889,7 @@ const Datetime = class {
1890
1889
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
1891
1890
  const hasWheelVariant = hasDatePresentation && preferWheel;
1892
1891
  renderHiddenInput(true, el, name, formatValue(value), disabled);
1893
- return (h(Host, { key: '2fb2938db507a134622a3feac44804f11071c589', "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, {
1894
1893
  [mode]: true,
1895
1894
  ['datetime-readonly']: readonly,
1896
1895
  ['datetime-disabled']: disabled,
@@ -1900,7 +1899,7 @@ const Datetime = class {
1900
1899
  [`datetime-size-${size}`]: true,
1901
1900
  [`datetime-prefer-wheel`]: hasWheelVariant,
1902
1901
  [`datetime-grid`]: isGridStyle,
1903
- })) }, this.renderDatetime(mode)));
1902
+ })) }, h("div", { key: '3f8bb75fcb0baff55182ef3aa1b535eacc58d81f', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
1904
1903
  }
1905
1904
  get el() { return getElement(this); }
1906
1905
  static get watchers() { return {
@@ -2177,11 +2176,11 @@ const Picker = class {
2177
2176
  render() {
2178
2177
  const { htmlAttributes } = this;
2179
2178
  const mode = getIonMode(this);
2180
- 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: {
2181
2180
  zIndex: `${20000 + this.overlayIndex}`,
2182
2181
  }, class: Object.assign({ [mode]: true,
2183
2182
  // Used internally for styling
2184
- [`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" })));
2185
2184
  }
2186
2185
  get el() { return getElement(this); }
2187
2186
  static get watchers() { return {
@@ -2535,9 +2534,9 @@ const PickerColumnCmp = class {
2535
2534
  render() {
2536
2535
  const col = this.col;
2537
2536
  const mode = getIonMode(this);
2538
- 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: {
2539
2538
  'max-width': this.col.columnWidth,
2540
- } }, 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))));
2541
2540
  }
2542
2541
  get el() { return getElement(this); }
2543
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,