voyager-ionic-core 8.3.4 → 8.4.1

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 (518) hide show
  1. package/components/alert.js +7 -5
  2. package/components/backdrop.js +1 -1
  3. package/components/button.js +2 -2
  4. package/components/buttons.js +2 -2
  5. package/components/checkbox.js +7 -5
  6. package/components/content.js +446 -0
  7. package/components/header.js +375 -0
  8. package/components/index4.js +2 -2
  9. package/components/ion-app.js +1 -1
  10. package/components/ion-avatar.js +1 -1
  11. package/components/ion-back-button.js +2 -2
  12. package/components/ion-badge.js +2 -2
  13. package/components/ion-breadcrumb.js +4 -4
  14. package/components/ion-breadcrumbs.js +2 -2
  15. package/components/ion-card-content.js +1 -1
  16. package/components/ion-card-header.js +2 -2
  17. package/components/ion-card-subtitle.js +2 -2
  18. package/components/ion-card-title.js +2 -2
  19. package/components/ion-card.js +1 -1
  20. package/components/ion-chip.js +2 -2
  21. package/components/ion-col.js +2 -2
  22. package/components/ion-content.js +1 -441
  23. package/components/ion-datetime-button.js +2 -2
  24. package/components/ion-datetime.js +2 -2
  25. package/components/ion-fab-button.js +2 -2
  26. package/components/ion-fab-list.js +2 -2
  27. package/components/ion-fab.js +2 -2
  28. package/components/ion-footer.js +2 -2
  29. package/components/ion-grid.js +2 -2
  30. package/components/ion-header.js +1 -351
  31. package/components/ion-img.js +1 -1
  32. package/components/ion-infinite-scroll-content.js +2 -2
  33. package/components/ion-infinite-scroll.js +1 -1
  34. package/components/ion-input-password-toggle.js +3 -3
  35. package/components/ion-input.js +3 -3
  36. package/components/ion-item-divider.js +2 -2
  37. package/components/ion-item-group.js +1 -1
  38. package/components/ion-item-option.js +2 -2
  39. package/components/ion-item-options.js +1 -1
  40. package/components/ion-item-sliding.js +3 -1
  41. package/components/ion-loading.js +2 -2
  42. package/components/ion-menu-button.js +2 -2
  43. package/components/ion-menu-toggle.js +2 -2
  44. package/components/ion-menu.js +47 -20
  45. package/components/ion-modal.js +1 -1737
  46. package/components/ion-nav-link.js +1 -1
  47. package/components/ion-nav.js +1 -1
  48. package/components/ion-note.js +2 -2
  49. package/components/ion-picker-legacy.js +2 -2
  50. package/components/ion-progress-bar.js +1 -1
  51. package/components/ion-range.js +3 -3
  52. package/components/ion-refresher-content.js +1 -1
  53. package/components/ion-refresher.js +1 -1
  54. package/components/ion-reorder-group.js +1 -1
  55. package/components/ion-reorder.js +1 -1
  56. package/components/ion-router-link.js +2 -2
  57. package/components/ion-router-outlet.js +1 -1
  58. package/components/ion-row.js +1 -1
  59. package/components/ion-searchbar.js +4 -4
  60. package/components/ion-segment-button.js +24 -5
  61. package/components/ion-segment-content.d.ts +11 -0
  62. package/components/ion-segment-content.js +37 -0
  63. package/components/ion-segment-view.d.ts +11 -0
  64. package/components/ion-segment-view.js +140 -0
  65. package/components/ion-segment.js +110 -15
  66. package/components/ion-select-modal.d.ts +11 -0
  67. package/components/ion-select-modal.js +9 -0
  68. package/components/ion-select-option.js +1 -1
  69. package/components/ion-select.js +114 -41
  70. package/components/ion-skeleton-text.js +2 -2
  71. package/components/ion-split-pane.js +2 -2
  72. package/components/ion-tab-bar.js +2 -2
  73. package/components/ion-tab-button.js +2 -2
  74. package/components/ion-tab.js +2 -2
  75. package/components/ion-tabs.js +1 -1
  76. package/components/ion-text.js +2 -2
  77. package/components/ion-textarea.js +2 -2
  78. package/components/ion-thumbnail.js +1 -1
  79. package/components/ion-title.js +1 -70
  80. package/components/ion-toast.js +4 -4
  81. package/components/ion-toggle.js +3 -3
  82. package/components/ion-toolbar.js +1 -88
  83. package/components/label.js +2 -2
  84. package/components/list-header.js +2 -2
  85. package/components/list.js +1 -1
  86. package/components/modal.js +1742 -0
  87. package/components/overlays.js +27 -12
  88. package/components/picker-column-option.js +2 -2
  89. package/components/picker-column.js +3 -3
  90. package/components/picker-column2.js +2 -2
  91. package/components/picker.js +2 -2
  92. package/components/popover.js +2 -2
  93. package/components/radio-group.js +12 -4
  94. package/components/radio.js +7 -5
  95. package/components/ripple-effect.js +1 -1
  96. package/components/select-modal.js +197 -0
  97. package/components/select-popover.js +1 -1
  98. package/components/spinner.js +1 -1
  99. package/components/title.js +75 -0
  100. package/components/toolbar.js +93 -0
  101. package/dist/cjs/{index-9cd00dc3.js → index-8e789962.js} +2 -2
  102. package/dist/cjs/index.cjs.js +2 -2
  103. package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
  104. package/dist/cjs/ion-alert.cjs.entry.js +8 -6
  105. package/dist/cjs/ion-app_8.cjs.entry.js +36 -17
  106. package/dist/cjs/ion-avatar_3.cjs.entry.js +4 -4
  107. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  108. package/dist/cjs/ion-backdrop.cjs.entry.js +1 -1
  109. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +6 -6
  110. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  111. package/dist/cjs/ion-card_5.cjs.entry.js +8 -8
  112. package/dist/cjs/ion-checkbox.cjs.entry.js +5 -4
  113. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  114. package/dist/cjs/ion-col_3.cjs.entry.js +5 -5
  115. package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
  116. package/dist/cjs/ion-datetime_3.cjs.entry.js +7 -7
  117. package/dist/cjs/ion-fab_3.cjs.entry.js +6 -6
  118. package/dist/cjs/ion-img.cjs.entry.js +1 -1
  119. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -3
  120. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +3 -3
  121. package/dist/cjs/ion-input.cjs.entry.js +3 -3
  122. package/dist/cjs/ion-item-option_3.cjs.entry.js +6 -4
  123. package/dist/cjs/ion-item_8.cjs.entry.js +12 -12
  124. package/dist/cjs/ion-loading.cjs.entry.js +3 -3
  125. package/dist/cjs/ion-menu_3.cjs.entry.js +52 -25
  126. package/dist/cjs/ion-modal.cjs.entry.js +5 -5
  127. package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
  128. package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
  129. package/dist/cjs/ion-picker-column.cjs.entry.js +3 -3
  130. package/dist/cjs/ion-picker.cjs.entry.js +2 -2
  131. package/dist/cjs/ion-popover.cjs.entry.js +3 -3
  132. package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
  133. package/dist/cjs/ion-radio_2.cjs.entry.js +17 -8
  134. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  135. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  136. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  137. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  138. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  139. package/dist/cjs/ion-searchbar.cjs.entry.js +4 -4
  140. package/dist/cjs/ion-segment-content.cjs.entry.js +23 -0
  141. package/dist/cjs/ion-segment-view.cjs.entry.js +122 -0
  142. package/dist/cjs/ion-segment_2.cjs.entry.js +132 -19
  143. package/dist/cjs/ion-select-modal.cjs.entry.js +111 -0
  144. package/dist/cjs/ion-select_3.cjs.entry.js +40 -15
  145. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  146. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  147. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  148. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  149. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  150. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  151. package/dist/cjs/ion-toast.cjs.entry.js +5 -5
  152. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  153. package/dist/cjs/ionic.cjs.js +1 -1
  154. package/dist/cjs/loader.cjs.js +1 -1
  155. package/dist/cjs/{overlays-ba0f6986.js → overlays-aa669eb8.js} +26 -11
  156. package/dist/collection/collection-manifest.json +3 -0
  157. package/dist/collection/components/alert/alert.js +7 -5
  158. package/dist/collection/components/app/app.js +1 -1
  159. package/dist/collection/components/avatar/avatar.js +1 -1
  160. package/dist/collection/components/back-button/back-button.js +2 -2
  161. package/dist/collection/components/backdrop/backdrop.js +1 -1
  162. package/dist/collection/components/badge/badge.js +2 -2
  163. package/dist/collection/components/breadcrumb/breadcrumb.js +4 -4
  164. package/dist/collection/components/breadcrumbs/breadcrumbs.js +2 -2
  165. package/dist/collection/components/button/button.js +2 -2
  166. package/dist/collection/components/buttons/buttons.js +2 -2
  167. package/dist/collection/components/card/card.js +1 -1
  168. package/dist/collection/components/card-content/card-content.js +1 -1
  169. package/dist/collection/components/card-header/card-header.js +2 -2
  170. package/dist/collection/components/card-subtitle/card-subtitle.js +2 -2
  171. package/dist/collection/components/card-title/card-title.js +2 -2
  172. package/dist/collection/components/checkbox/checkbox.js +29 -4
  173. package/dist/collection/components/chip/chip.js +2 -2
  174. package/dist/collection/components/col/col.js +2 -2
  175. package/dist/collection/components/content/content.js +3 -3
  176. package/dist/collection/components/datetime/datetime.js +2 -2
  177. package/dist/collection/components/datetime-button/datetime-button.js +2 -2
  178. package/dist/collection/components/fab/fab.js +2 -2
  179. package/dist/collection/components/fab-button/fab-button.js +2 -2
  180. package/dist/collection/components/fab-list/fab-list.js +2 -2
  181. package/dist/collection/components/footer/footer.js +2 -2
  182. package/dist/collection/components/grid/grid.js +2 -2
  183. package/dist/collection/components/header/header.js +2 -2
  184. package/dist/collection/components/header/header.utils.js +21 -2
  185. package/dist/collection/components/img/img.js +1 -1
  186. package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
  187. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
  188. package/dist/collection/components/input/input.js +3 -3
  189. package/dist/collection/components/input-password-toggle/input-password-toggle.js +3 -3
  190. package/dist/collection/components/item-divider/item-divider.js +2 -2
  191. package/dist/collection/components/item-group/item-group.js +1 -1
  192. package/dist/collection/components/item-option/item-option.js +2 -2
  193. package/dist/collection/components/item-options/item-options.js +1 -1
  194. package/dist/collection/components/item-sliding/item-sliding.js +3 -1
  195. package/dist/collection/components/label/label.js +2 -2
  196. package/dist/collection/components/list/list.js +1 -1
  197. package/dist/collection/components/list-header/list-header.js +2 -2
  198. package/dist/collection/components/loading/loading.js +2 -2
  199. package/dist/collection/components/menu/menu.js +75 -27
  200. package/dist/collection/components/menu-button/menu-button.js +2 -2
  201. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  202. package/dist/collection/components/modal/modal.js +4 -4
  203. package/dist/collection/components/nav/nav.js +1 -1
  204. package/dist/collection/components/nav-link/nav-link.js +1 -1
  205. package/dist/collection/components/note/note.js +2 -2
  206. package/dist/collection/components/picker/picker.js +2 -2
  207. package/dist/collection/components/picker-column/picker-column.js +3 -3
  208. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
  209. package/dist/collection/components/picker-legacy/picker.js +2 -2
  210. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
  211. package/dist/collection/components/popover/popover.js +2 -2
  212. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  213. package/dist/collection/components/radio/radio.js +9 -7
  214. package/dist/collection/components/radio-group/radio-group.js +34 -3
  215. package/dist/collection/components/range/range.js +3 -3
  216. package/dist/collection/components/refresher/refresher.js +1 -1
  217. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  218. package/dist/collection/components/reorder/reorder.js +1 -1
  219. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  220. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  221. package/dist/collection/components/router-link/router-link.js +2 -2
  222. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  223. package/dist/collection/components/row/row.js +1 -1
  224. package/dist/collection/components/searchbar/searchbar.js +4 -4
  225. package/dist/collection/components/segment/segment.js +115 -14
  226. package/dist/collection/components/segment-button/segment-button.js +40 -5
  227. package/dist/collection/components/segment-content/segment-content.css +6 -0
  228. package/dist/collection/components/segment-content/segment-content.js +21 -0
  229. package/dist/collection/components/segment-view/segment-view-interface.js +1 -0
  230. package/dist/collection/components/segment-view/segment-view.ios.css +83 -0
  231. package/dist/collection/components/segment-view/segment-view.js +227 -0
  232. package/dist/collection/components/segment-view/segment-view.md.css +83 -0
  233. package/dist/collection/components/select/select.js +61 -16
  234. package/dist/collection/components/select-modal/select-modal-interface.js +1 -0
  235. package/dist/collection/components/select-modal/select-modal.ios.css +3 -0
  236. package/dist/collection/components/select-modal/select-modal.js +159 -0
  237. package/dist/collection/components/select-modal/select-modal.md.css +110 -0
  238. package/dist/collection/components/select-modal/test/fixtures.js +48 -0
  239. package/dist/collection/components/select-option/select-option.js +1 -1
  240. package/dist/collection/components/select-popover/select-popover.js +1 -1
  241. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  242. package/dist/collection/components/spinner/spinner.js +1 -1
  243. package/dist/collection/components/split-pane/split-pane.js +2 -2
  244. package/dist/collection/components/tab/tab.js +2 -2
  245. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  246. package/dist/collection/components/tab-button/tab-button.js +2 -2
  247. package/dist/collection/components/tabs/tabs.js +1 -1
  248. package/dist/collection/components/text/text.js +2 -2
  249. package/dist/collection/components/textarea/textarea.js +2 -2
  250. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  251. package/dist/collection/components/title/title.js +2 -2
  252. package/dist/collection/components/toast/toast.ios.css +1 -1
  253. package/dist/collection/components/toast/toast.js +2 -2
  254. package/dist/collection/components/toast/toast.md.css +1 -1
  255. package/dist/collection/components/toggle/toggle.js +3 -3
  256. package/dist/collection/components/toolbar/toolbar.js +2 -2
  257. package/dist/collection/utils/focus-trap.js +8 -2
  258. package/dist/collection/utils/menu-controller/index.js +2 -2
  259. package/dist/collection/utils/overlays.js +19 -9
  260. package/dist/docs.json +426 -29
  261. package/dist/esm/{index-fe1782b1.js → index-24b48b06.js} +2 -2
  262. package/dist/esm/index.js +2 -2
  263. package/dist/esm/ion-action-sheet.entry.js +1 -1
  264. package/dist/esm/ion-alert.entry.js +8 -6
  265. package/dist/esm/ion-app_8.entry.js +36 -17
  266. package/dist/esm/ion-avatar_3.entry.js +4 -4
  267. package/dist/esm/ion-back-button.entry.js +2 -2
  268. package/dist/esm/ion-backdrop.entry.js +1 -1
  269. package/dist/esm/ion-breadcrumb_2.entry.js +6 -6
  270. package/dist/esm/ion-button_2.entry.js +2 -2
  271. package/dist/esm/ion-card_5.entry.js +8 -8
  272. package/dist/esm/ion-checkbox.entry.js +5 -4
  273. package/dist/esm/ion-chip.entry.js +2 -2
  274. package/dist/esm/ion-col_3.entry.js +5 -5
  275. package/dist/esm/ion-datetime-button.entry.js +2 -2
  276. package/dist/esm/ion-datetime_3.entry.js +7 -7
  277. package/dist/esm/ion-fab_3.entry.js +6 -6
  278. package/dist/esm/ion-img.entry.js +1 -1
  279. package/dist/esm/ion-infinite-scroll_2.entry.js +3 -3
  280. package/dist/esm/ion-input-password-toggle.entry.js +3 -3
  281. package/dist/esm/ion-input.entry.js +3 -3
  282. package/dist/esm/ion-item-option_3.entry.js +6 -4
  283. package/dist/esm/ion-item_8.entry.js +12 -12
  284. package/dist/esm/ion-loading.entry.js +3 -3
  285. package/dist/esm/ion-menu_3.entry.js +52 -25
  286. package/dist/esm/ion-modal.entry.js +5 -5
  287. package/dist/esm/ion-nav_2.entry.js +2 -2
  288. package/dist/esm/ion-picker-column-option.entry.js +2 -2
  289. package/dist/esm/ion-picker-column.entry.js +3 -3
  290. package/dist/esm/ion-picker.entry.js +2 -2
  291. package/dist/esm/ion-popover.entry.js +3 -3
  292. package/dist/esm/ion-progress-bar.entry.js +1 -1
  293. package/dist/esm/ion-radio_2.entry.js +17 -8
  294. package/dist/esm/ion-range.entry.js +3 -3
  295. package/dist/esm/ion-refresher_2.entry.js +2 -2
  296. package/dist/esm/ion-reorder_2.entry.js +2 -2
  297. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  298. package/dist/esm/ion-route_4.entry.js +2 -2
  299. package/dist/esm/ion-searchbar.entry.js +4 -4
  300. package/dist/esm/ion-segment-content.entry.js +19 -0
  301. package/dist/esm/ion-segment-view.entry.js +118 -0
  302. package/dist/esm/ion-segment_2.entry.js +132 -19
  303. package/dist/esm/ion-select-modal.entry.js +107 -0
  304. package/dist/esm/ion-select_3.entry.js +40 -15
  305. package/dist/esm/ion-spinner.entry.js +1 -1
  306. package/dist/esm/ion-split-pane.entry.js +2 -2
  307. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  308. package/dist/esm/ion-tab_2.entry.js +3 -3
  309. package/dist/esm/ion-text.entry.js +2 -2
  310. package/dist/esm/ion-textarea.entry.js +2 -2
  311. package/dist/esm/ion-toast.entry.js +5 -5
  312. package/dist/esm/ion-toggle.entry.js +3 -3
  313. package/dist/esm/ionic.js +1 -1
  314. package/dist/esm/loader.js +1 -1
  315. package/dist/esm/{overlays-ae10d43d.js → overlays-e7b9d6d9.js} +27 -12
  316. package/dist/esm-es5/{index-fe1782b1.js → index-24b48b06.js} +1 -1
  317. package/dist/esm-es5/index.js +1 -1
  318. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  319. package/dist/esm-es5/ion-alert.entry.js +1 -1
  320. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  321. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  322. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  323. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  324. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  325. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  326. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  327. package/dist/esm-es5/ion-checkbox.entry.js +2 -2
  328. package/dist/esm-es5/ion-chip.entry.js +1 -1
  329. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  330. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  331. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  332. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  333. package/dist/esm-es5/ion-img.entry.js +1 -1
  334. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  335. package/dist/esm-es5/ion-input-password-toggle.entry.js +1 -1
  336. package/dist/esm-es5/ion-input.entry.js +1 -1
  337. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  338. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  339. package/dist/esm-es5/ion-loading.entry.js +1 -1
  340. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  341. package/dist/esm-es5/ion-modal.entry.js +1 -1
  342. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  343. package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
  344. package/dist/esm-es5/ion-picker-column.entry.js +1 -1
  345. package/dist/esm-es5/ion-picker.entry.js +1 -1
  346. package/dist/esm-es5/ion-popover.entry.js +1 -1
  347. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  348. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  349. package/dist/esm-es5/ion-range.entry.js +1 -1
  350. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  351. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  352. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  353. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  354. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  355. package/dist/esm-es5/ion-segment-content.entry.js +4 -0
  356. package/dist/esm-es5/ion-segment-view.entry.js +4 -0
  357. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  358. package/dist/esm-es5/ion-select-modal.entry.js +4 -0
  359. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  360. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  361. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  362. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  363. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  364. package/dist/esm-es5/ion-text.entry.js +1 -1
  365. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  366. package/dist/esm-es5/ion-toast.entry.js +1 -1
  367. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  368. package/dist/esm-es5/ionic.js +1 -1
  369. package/dist/esm-es5/loader.js +1 -1
  370. package/dist/esm-es5/overlays-e7b9d6d9.js +4 -0
  371. package/dist/html.html-data.json +65 -2
  372. package/dist/ionic/index.esm.js +1 -1
  373. package/dist/ionic/ionic.esm.js +1 -1
  374. package/dist/ionic/{p-313ccc01.system.entry.js → p-01186920.system.entry.js} +1 -1
  375. package/dist/ionic/{p-7251fed5.entry.js → p-04909654.entry.js} +1 -1
  376. package/dist/ionic/{p-e3e1e3de.entry.js → p-081a4ce4.entry.js} +1 -1
  377. package/dist/ionic/p-0aa833fb.system.js +4 -0
  378. package/dist/ionic/{p-79e7be3a.system.entry.js → p-1046866e.system.entry.js} +1 -1
  379. package/dist/ionic/p-12a722b8.system.entry.js +4 -0
  380. package/dist/ionic/{p-41c89b8d.entry.js → p-12c45a7c.entry.js} +1 -1
  381. package/dist/ionic/p-14be4015.entry.js +4 -0
  382. package/dist/ionic/{p-c71f301f.system.entry.js → p-14e159ea.system.entry.js} +1 -1
  383. package/dist/ionic/p-15e76dd1.entry.js +4 -0
  384. package/dist/ionic/{p-003eecb9.entry.js → p-16188af7.entry.js} +1 -1
  385. package/dist/ionic/p-16799667.system.entry.js +4 -0
  386. package/dist/ionic/p-16bfb979.system.entry.js +4 -0
  387. package/dist/ionic/{p-8836d0eb.system.entry.js → p-17a9ca63.system.entry.js} +1 -1
  388. package/dist/ionic/{p-b54fc1ae.entry.js → p-19ec4f42.entry.js} +1 -1
  389. package/dist/ionic/{p-8b6232a6.system.entry.js → p-1e010627.system.entry.js} +2 -2
  390. package/dist/ionic/{p-cdb11938.system.entry.js → p-1e67b266.system.entry.js} +1 -1
  391. package/dist/ionic/{p-0790b342.system.entry.js → p-1fe02220.system.entry.js} +1 -1
  392. package/dist/ionic/{p-836d39d4.system.entry.js → p-2172893e.system.entry.js} +1 -1
  393. package/dist/ionic/{p-4a0a4204.system.entry.js → p-2507278c.system.entry.js} +1 -1
  394. package/dist/ionic/{p-75c0dc65.system.entry.js → p-2799c6d3.system.entry.js} +1 -1
  395. package/dist/ionic/{p-a879ecb7.system.entry.js → p-2abae1cc.system.entry.js} +1 -1
  396. package/dist/ionic/{p-293ed6ac.system.entry.js → p-2b838f86.system.entry.js} +1 -1
  397. package/dist/ionic/p-2b9b78c7.entry.js +4 -0
  398. package/dist/ionic/{p-f0ab13a8.system.entry.js → p-2bd0ae94.system.entry.js} +1 -1
  399. package/dist/ionic/{p-4a82bd1c.system.entry.js → p-2e46590d.system.entry.js} +1 -1
  400. package/dist/ionic/{p-148b8abb.entry.js → p-2fc0dafe.entry.js} +1 -1
  401. package/dist/ionic/p-322c5fb4.system.js +2 -2
  402. package/dist/ionic/{p-60cc7986.entry.js → p-33a8a71b.entry.js} +1 -1
  403. package/dist/ionic/{p-18105026.system.entry.js → p-37cb43bd.system.entry.js} +1 -1
  404. package/dist/ionic/{p-be71fe0f.system.entry.js → p-404aede0.system.entry.js} +1 -1
  405. package/dist/ionic/p-424eb140.system.entry.js +4 -0
  406. package/dist/ionic/{p-b7657e8d.entry.js → p-4439fc2a.entry.js} +1 -1
  407. package/dist/ionic/{p-c34659b9.entry.js → p-45693d7e.entry.js} +1 -1
  408. package/dist/ionic/p-49a0e74c.entry.js +4 -0
  409. package/dist/ionic/{p-fd0cb4ef.entry.js → p-4ec778aa.entry.js} +1 -1
  410. package/dist/ionic/p-508d024a.entry.js +4 -0
  411. package/dist/ionic/{p-f559ac5b.entry.js → p-51796b2d.entry.js} +1 -1
  412. package/dist/ionic/{p-9ece8dcf.entry.js → p-52d7a191.entry.js} +1 -1
  413. package/dist/ionic/{p-ce705aac.system.entry.js → p-567de071.system.entry.js} +1 -1
  414. package/dist/ionic/{p-95823c62.system.entry.js → p-5823babc.system.entry.js} +2 -2
  415. package/dist/ionic/{p-baffaf8d.system.entry.js → p-58d5df0c.system.entry.js} +1 -1
  416. package/dist/ionic/{p-521eca2e.entry.js → p-5ab1b709.entry.js} +1 -1
  417. package/dist/ionic/{p-8d44cf1f.entry.js → p-5b932840.entry.js} +1 -1
  418. package/dist/ionic/{p-53add985.system.entry.js → p-5fce0c0b.system.entry.js} +1 -1
  419. package/dist/ionic/p-626fd66d.system.entry.js +4 -0
  420. package/dist/ionic/{p-233e6c93.entry.js → p-62af944c.entry.js} +1 -1
  421. package/dist/ionic/{p-00b01a55.system.entry.js → p-63b0abde.system.entry.js} +1 -1
  422. package/dist/ionic/{p-ad9b5007.system.entry.js → p-6416c34c.system.entry.js} +1 -1
  423. package/dist/ionic/{p-857ca696.system.entry.js → p-6499df44.system.entry.js} +1 -1
  424. package/dist/ionic/p-69666e8a.system.entry.js +4 -0
  425. package/dist/ionic/{p-9e208825.entry.js → p-6b280620.entry.js} +1 -1
  426. package/dist/ionic/{p-5e842258.entry.js → p-6d32975a.entry.js} +1 -1
  427. package/dist/ionic/p-6d6cedc5.entry.js +4 -0
  428. package/dist/ionic/p-73dc4950.entry.js +4 -0
  429. package/dist/ionic/{p-fcd71204.system.entry.js → p-7458862e.system.entry.js} +1 -1
  430. package/dist/ionic/{p-a3711608.system.entry.js → p-797eeea8.system.entry.js} +1 -1
  431. package/dist/ionic/{p-f8c8b9ba.entry.js → p-7b9a2b23.entry.js} +1 -1
  432. package/dist/ionic/{p-bd25d639.system.entry.js → p-7ddc46c3.system.entry.js} +1 -1
  433. package/dist/ionic/{p-6817cf42.system.entry.js → p-7ed1657c.system.entry.js} +1 -1
  434. package/dist/ionic/p-908d6080.entry.js +4 -0
  435. package/dist/ionic/{p-af999a31.entry.js → p-937a7e21.entry.js} +1 -1
  436. package/dist/ionic/p-942b5e13.entry.js +4 -0
  437. package/dist/ionic/{p-4c8fceb0.entry.js → p-95775830.entry.js} +1 -1
  438. package/dist/ionic/{p-6ceb04b5.entry.js → p-982315a6.entry.js} +1 -1
  439. package/dist/ionic/{p-973f0b15.system.entry.js → p-98231c01.system.entry.js} +1 -1
  440. package/dist/ionic/{p-25928b83.system.entry.js → p-985a7e17.system.entry.js} +1 -1
  441. package/dist/ionic/{p-e3a5da9d.entry.js → p-98ff6b32.entry.js} +1 -1
  442. package/dist/ionic/{p-6e85e450.entry.js → p-9df2c6fb.entry.js} +1 -1
  443. package/dist/ionic/{p-d58f21d2.entry.js → p-9e33104d.entry.js} +1 -1
  444. package/dist/ionic/{p-da263d8e.entry.js → p-9fa07aec.entry.js} +1 -1
  445. package/dist/ionic/{p-9910f786.entry.js → p-a43467d8.entry.js} +1 -1
  446. package/dist/ionic/{p-6b8893dd.entry.js → p-a61cba41.entry.js} +1 -1
  447. package/dist/ionic/p-adbc4bdf.entry.js +4 -0
  448. package/dist/ionic/{p-49bc6544.entry.js → p-afecb188.entry.js} +1 -1
  449. package/dist/ionic/p-b2272f51.system.entry.js +4 -0
  450. package/dist/ionic/{p-be715dd3.system.entry.js → p-b335ffed.system.entry.js} +1 -1
  451. package/dist/ionic/{p-6d50faff.entry.js → p-b79ba17c.entry.js} +1 -1
  452. package/dist/ionic/{p-e3f13b08.js → p-b82d4cab.js} +1 -1
  453. package/dist/ionic/{p-68c4df55.entry.js → p-b9d7015f.entry.js} +1 -1
  454. package/dist/ionic/{p-7243df6f.entry.js → p-bb0db172.entry.js} +1 -1
  455. package/dist/ionic/{p-df83e308.system.entry.js → p-bc36ad98.system.entry.js} +1 -1
  456. package/dist/ionic/{p-773d118d.entry.js → p-bdad26e3.entry.js} +1 -1
  457. package/dist/ionic/p-c29f8157.system.entry.js +4 -0
  458. package/dist/ionic/p-c2b74d92.system.entry.js +4 -0
  459. package/dist/ionic/{p-176b372f.entry.js → p-c41ac815.entry.js} +1 -1
  460. package/dist/ionic/{p-79b12fda.system.js → p-c449820c.system.js} +1 -1
  461. package/dist/ionic/{p-5417b9bb.entry.js → p-c9f3a539.entry.js} +1 -1
  462. package/dist/ionic/{p-2ea1ca4f.system.entry.js → p-ca065903.system.entry.js} +1 -1
  463. package/dist/ionic/{p-2ca6eac2.system.entry.js → p-cac0e0b3.system.entry.js} +1 -1
  464. package/dist/ionic/{p-3c968c7f.system.entry.js → p-d18ab582.system.entry.js} +2 -2
  465. package/dist/ionic/{p-92d7a3d1.entry.js → p-d7aa6b00.entry.js} +1 -1
  466. package/dist/ionic/{p-21cfd4de.entry.js → p-da074ff7.entry.js} +1 -1
  467. package/dist/ionic/{p-89a0a446.entry.js → p-de930745.entry.js} +1 -1
  468. package/dist/ionic/{p-960803fc.system.entry.js → p-e4ee80be.system.entry.js} +1 -1
  469. package/dist/ionic/{p-d754c709.system.entry.js → p-e4f69534.system.entry.js} +1 -1
  470. package/dist/ionic/{p-dda5c73d.entry.js → p-e563a35c.entry.js} +1 -1
  471. package/dist/ionic/p-e6635685.js +4 -0
  472. package/dist/ionic/{p-7740e32c.system.js → p-e7ed4a7f.system.js} +1 -1
  473. package/dist/ionic/{p-0373d924.system.entry.js → p-ebf042e0.system.entry.js} +1 -1
  474. package/dist/ionic/{p-9b6c6302.system.entry.js → p-ed75fcfb.system.entry.js} +1 -1
  475. package/dist/ionic/{p-01503bbd.system.entry.js → p-f3102647.system.entry.js} +1 -1
  476. package/dist/ionic/p-fbf284c7.entry.js +4 -0
  477. package/dist/ionic/{p-6562e0a9.system.entry.js → p-fca6ef5f.system.entry.js} +1 -1
  478. package/dist/ionic/p-fec61c32.entry.js +4 -0
  479. package/dist/ionic/{p-b0180ce1.system.entry.js → p-ffd131f9.system.entry.js} +1 -1
  480. package/dist/types/components/checkbox/checkbox.d.ts +2 -1
  481. package/dist/types/components/menu/menu-interface.d.ts +5 -2
  482. package/dist/types/components/menu/menu.d.ts +6 -6
  483. package/dist/types/components/radio/radio.d.ts +1 -1
  484. package/dist/types/components/radio-group/radio-group.d.ts +2 -0
  485. package/dist/types/components/segment/segment.d.ts +21 -1
  486. package/dist/types/components/segment-button/segment-button.d.ts +4 -0
  487. package/dist/types/components/segment-content/segment-content.d.ts +4 -0
  488. package/dist/types/components/segment-view/segment-view-interface.d.ts +4 -0
  489. package/dist/types/components/segment-view/segment-view.d.ts +55 -0
  490. package/dist/types/components/select/select-interface.d.ts +1 -1
  491. package/dist/types/components/select/select.d.ts +5 -4
  492. package/dist/types/components/select-modal/select-modal-interface.d.ts +10 -0
  493. package/dist/types/components/select-modal/select-modal.d.ts +16 -0
  494. package/dist/types/components/select-modal/test/fixtures.d.ts +16 -0
  495. package/dist/types/components.d.ts +104 -13
  496. package/dist/types/utils/focus-trap.d.ts +1 -1
  497. package/dist/types/utils/overlays-interface.d.ts +1 -1
  498. package/hydrate/index.js +695 -228
  499. package/hydrate/index.mjs +695 -228
  500. package/package.json +1 -1
  501. package/dist/esm-es5/overlays-ae10d43d.js +0 -4
  502. package/dist/ionic/p-04fc24ee.system.js +0 -4
  503. package/dist/ionic/p-110e03be.system.entry.js +0 -4
  504. package/dist/ionic/p-2200e26b.entry.js +0 -4
  505. package/dist/ionic/p-44d1539c.system.entry.js +0 -4
  506. package/dist/ionic/p-53854390.entry.js +0 -4
  507. package/dist/ionic/p-5800e441.entry.js +0 -4
  508. package/dist/ionic/p-5c831f49.js +0 -4
  509. package/dist/ionic/p-63d65dbc.system.entry.js +0 -4
  510. package/dist/ionic/p-72ffd137.system.entry.js +0 -4
  511. package/dist/ionic/p-82ab7ccb.entry.js +0 -4
  512. package/dist/ionic/p-87a4407b.entry.js +0 -4
  513. package/dist/ionic/p-9172535c.entry.js +0 -4
  514. package/dist/ionic/p-93f37ceb.system.entry.js +0 -4
  515. package/dist/ionic/p-9895e7f3.entry.js +0 -4
  516. package/dist/ionic/p-a0c88dc2.system.entry.js +0 -4
  517. package/dist/ionic/p-a89dac49.entry.js +0 -4
  518. package/dist/ionic/p-f88ebc36.entry.js +0 -4
@@ -19,6 +19,7 @@ const Segment = class {
19
19
  this.ionChange = createEvent(this, "ionChange", 7);
20
20
  this.ionSelect = createEvent(this, "ionSelect", 7);
21
21
  this.ionStyle = createEvent(this, "ionStyle", 7);
22
+ this.segmentViewEl = null;
22
23
  this.onClick = (ev) => {
23
24
  const current = ev.target;
24
25
  const previous = this.checked;
@@ -33,7 +34,13 @@ const Segment = class {
33
34
  if (current !== previous) {
34
35
  this.emitValueChange();
35
36
  }
36
- if (this.scrollable || !this.swipeGesture) {
37
+ if (this.segmentViewEl) {
38
+ this.updateSegmentView();
39
+ if (this.scrollable && previous) {
40
+ this.checkButton(previous, current);
41
+ }
42
+ }
43
+ else if (this.scrollable || !this.swipeGesture) {
37
44
  if (previous) {
38
45
  this.checkButton(previous, current);
39
46
  }
@@ -89,19 +96,49 @@ const Segment = class {
89
96
  swipeGestureChanged() {
90
97
  this.gestureChanged();
91
98
  }
92
- valueChanged(value) {
99
+ valueChanged(value, oldValue) {
100
+ // Force a value to exist if we're using a segment view
101
+ if (this.segmentViewEl && value === undefined) {
102
+ this.value = this.getButtons()[0].value;
103
+ return;
104
+ }
105
+ if (oldValue !== undefined && value !== undefined) {
106
+ const buttons = this.getButtons();
107
+ const previous = buttons.find((button) => button.value === oldValue);
108
+ const current = buttons.find((button) => button.value === value);
109
+ if (previous && current) {
110
+ if (!this.segmentViewEl) {
111
+ this.checkButton(previous, current);
112
+ }
113
+ else if (this.triggerScrollOnValueChange !== false) {
114
+ this.updateSegmentView();
115
+ }
116
+ }
117
+ }
118
+ else if (value !== undefined && oldValue === undefined && this.segmentViewEl) {
119
+ this.updateSegmentView();
120
+ }
93
121
  /**
94
122
  * `ionSelect` is emitted every time the value changes (internal or external changes).
95
123
  * Used by `ion-segment-button` to determine if the button should be checked.
96
124
  */
97
125
  this.ionSelect.emit({ value });
98
- this.scrollActiveButtonIntoView();
126
+ // The scroll listener should handle scrolling the active button into view as needed
127
+ if (!this.segmentViewEl) {
128
+ this.scrollActiveButtonIntoView();
129
+ }
130
+ this.triggerScrollOnValueChange = undefined;
99
131
  }
100
132
  disabledChanged() {
101
133
  this.gestureChanged();
102
- const buttons = this.getButtons();
103
- for (const button of buttons) {
104
- button.disabled = this.disabled;
134
+ if (!this.segmentViewEl) {
135
+ const buttons = this.getButtons();
136
+ for (const button of buttons) {
137
+ button.disabled = this.disabled;
138
+ }
139
+ }
140
+ else {
141
+ this.segmentViewEl.disabled = this.disabled;
105
142
  }
106
143
  }
107
144
  gestureChanged() {
@@ -111,6 +148,10 @@ const Segment = class {
111
148
  }
112
149
  connectedCallback() {
113
150
  this.emitStyle();
151
+ this.segmentViewEl = this.getSegmentView();
152
+ }
153
+ disconnectedCallback() {
154
+ this.segmentViewEl = null;
114
155
  }
115
156
  componentWillLoad() {
116
157
  this.emitStyle();
@@ -144,6 +185,9 @@ const Segment = class {
144
185
  if (this.disabled) {
145
186
  this.disabledChanged();
146
187
  }
188
+ // Update segment view based on the initial value,
189
+ // but do not animate the scroll
190
+ this.updateSegmentView(false);
147
191
  }
148
192
  onStart(detail) {
149
193
  this.valueBeforeGesture = this.value;
@@ -160,6 +204,7 @@ const Segment = class {
160
204
  if (value !== undefined) {
161
205
  if (this.valueBeforeGesture !== value) {
162
206
  this.emitValueChange();
207
+ this.updateSegmentView();
163
208
  }
164
209
  }
165
210
  this.valueBeforeGesture = undefined;
@@ -187,12 +232,7 @@ const Segment = class {
187
232
  setActivated(activated) {
188
233
  const buttons = this.getButtons();
189
234
  buttons.forEach((button) => {
190
- if (activated) {
191
- button.classList.add('segment-button-activated');
192
- }
193
- else {
194
- button.classList.remove('segment-button-activated');
195
- }
235
+ button.classList.toggle('segment-button-activated', activated);
196
236
  });
197
237
  this.activated = activated;
198
238
  }
@@ -243,6 +283,7 @@ const Segment = class {
243
283
  currentIndicator.classList.add('segment-button-indicator-animated');
244
284
  // Remove the transform to slide the indicator back to the button clicked
245
285
  currentIndicator.style.setProperty('transform', '');
286
+ this.scrollActiveButtonIntoView(true);
246
287
  });
247
288
  this.value = current.value;
248
289
  this.setCheckedClasses();
@@ -258,6 +299,60 @@ const Segment = class {
258
299
  buttons[next].classList.add('segment-button-after-checked');
259
300
  }
260
301
  }
302
+ getSegmentView() {
303
+ const buttons = this.getButtons();
304
+ // Get the first button with a contentId
305
+ const firstContentId = buttons.find((button) => button.contentId);
306
+ // Get the segment content with an id matching the button's contentId
307
+ const segmentContent = document.querySelector(`ion-segment-content[id="${firstContentId === null || firstContentId === void 0 ? void 0 : firstContentId.contentId}"]`);
308
+ // Return the segment view for that matching segment content
309
+ return segmentContent === null || segmentContent === void 0 ? void 0 : segmentContent.closest('ion-segment-view');
310
+ }
311
+ handleSegmentViewScroll(ev) {
312
+ const { scrollRatio, isManualScroll } = ev.detail;
313
+ if (!isManualScroll) {
314
+ return;
315
+ }
316
+ const dispatchedFrom = ev.target;
317
+ const segmentViewEl = this.segmentViewEl;
318
+ const segmentEl = this.el;
319
+ // Only update the indicator if the event was dispatched from the correct segment view
320
+ if (ev.composedPath().includes(segmentViewEl) || (dispatchedFrom === null || dispatchedFrom === void 0 ? void 0 : dispatchedFrom.contains(segmentEl))) {
321
+ const buttons = this.getButtons();
322
+ // If no buttons are found or there is no value set then do nothing
323
+ if (!buttons.length)
324
+ return;
325
+ const index = buttons.findIndex((button) => button.value === this.value);
326
+ const current = buttons[index];
327
+ const nextIndex = Math.round(scrollRatio * (buttons.length - 1));
328
+ if (this.lastNextIndex === undefined || this.lastNextIndex !== nextIndex) {
329
+ this.lastNextIndex = nextIndex;
330
+ this.triggerScrollOnValueChange = false;
331
+ this.checkButton(current, buttons[nextIndex]);
332
+ this.emitValueChange();
333
+ }
334
+ }
335
+ }
336
+ /**
337
+ * Finds the related segment view and sets its current content
338
+ * based on the selected segment button. This method
339
+ * should be called on initial load of the segment,
340
+ * after the gesture is completed (if dragging between segments)
341
+ * and when a segment button is clicked directly.
342
+ */
343
+ updateSegmentView(smoothScroll = true) {
344
+ const buttons = this.getButtons();
345
+ const button = buttons.find((btn) => btn.value === this.value);
346
+ // If the button does not have a contentId then there is
347
+ // no associated segment view to update
348
+ if (!(button === null || button === void 0 ? void 0 : button.contentId)) {
349
+ return;
350
+ }
351
+ const segmentView = this.segmentViewEl;
352
+ if (segmentView) {
353
+ segmentView.setContent(button.contentId, smoothScroll);
354
+ }
355
+ }
261
356
  scrollActiveButtonIntoView(smoothScroll = true) {
262
357
  const { scrollable, value, el } = this;
263
358
  if (scrollable) {
@@ -440,14 +535,14 @@ const Segment = class {
440
535
  }
441
536
  render() {
442
537
  const mode = getIonMode(this);
443
- return (h(Host, { key: 'f1f7103b4c298e037df850ac809a1a7c6e9987a7', role: "tablist", onClick: this.onClick, class: createColorClasses(this.color, {
538
+ return (h(Host, { key: '66bd7a565ba73540b3bbe56dd23b95e59bcef9bc', role: "tablist", onClick: this.onClick, class: createColorClasses(this.color, {
444
539
  [mode]: true,
445
540
  'in-toolbar': hostContext('ion-toolbar', this.el),
446
541
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
447
542
  'segment-activated': this.activated,
448
543
  'segment-disabled': this.disabled,
449
544
  'segment-scrollable': this.scrollable,
450
- }) }, h("slot", { key: '6efdb318b13da8d21687084aa0761728fdf12579', onSlotchange: this.onSlottedItemsChange })));
545
+ }) }, h("slot", { key: '782c521b1a33729b8eab1c4b879bc3f2ff48ae1b', onSlotchange: this.onSlottedItemsChange })));
451
546
  }
452
547
  get el() { return getElement(this); }
453
548
  static get watchers() { return {
@@ -487,6 +582,7 @@ const SegmentButton = class {
487
582
  }
488
583
  };
489
584
  this.checked = false;
585
+ this.contentId = undefined;
490
586
  this.disabled = false;
491
587
  this.layout = 'icon-top';
492
588
  this.type = 'button';
@@ -502,6 +598,26 @@ const SegmentButton = class {
502
598
  addEventListener(segmentEl, 'ionSelect', this.updateState);
503
599
  addEventListener(segmentEl, 'ionStyle', this.updateStyle);
504
600
  }
601
+ // Return if there is no contentId defined
602
+ if (!this.contentId)
603
+ return;
604
+ // Attempt to find the Segment Content by its contentId
605
+ const segmentContent = document.getElementById(this.contentId);
606
+ // If no associated Segment Content exists, log an error and return
607
+ if (!segmentContent) {
608
+ console.error(`Segment Button: Unable to find Segment Content with id="${this.contentId}".`);
609
+ return;
610
+ }
611
+ // Ensure the found element is a valid ION-SEGMENT-CONTENT
612
+ if (segmentContent.tagName !== 'ION-SEGMENT-CONTENT') {
613
+ console.error(`Segment Button: Element with id="${this.contentId}" is not an <ion-segment-content> element.`);
614
+ return;
615
+ }
616
+ // Prevent buttons from being disabled when associated with segment content
617
+ if (this.disabled) {
618
+ console.warn(`Segment Button: Segment buttons cannot be disabled when associated with an <ion-segment-content>.`);
619
+ this.disabled = false;
620
+ }
505
621
  }
506
622
  disconnectedCallback() {
507
623
  const segmentEl = this.segmentEl;
@@ -535,7 +651,7 @@ const SegmentButton = class {
535
651
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
536
652
  const mode = getIonMode(this);
537
653
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
538
- return (h(Host, { key: '70cf5c7a3ae2620222c5250c644faf3cfc3b3e4e', class: {
654
+ return (h(Host, { key: 'd50a5d5e2f6206e8523598f258d8217d2903f69b', class: {
539
655
  [mode]: true,
540
656
  'in-toolbar': hostContext('ion-toolbar', this.el),
541
657
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
@@ -551,10 +667,7 @@ const SegmentButton = class {
551
667
  'ion-activatable': true,
552
668
  'ion-activatable-instant': true,
553
669
  'ion-focusable': true,
554
- } }, h("button", Object.assign({ key: 'a53c9f1e360934e8d2e90476642ba4507fc38ebd', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), h("span", { key: '7d8feda840d389941cc693f500b5eba0b39b41da', class: "button-inner" }, h("slot", { key: 'd9ae1eec45db253cbf573d29cd545658dd595d87' })), mode === 'md' && h("ion-ripple-effect", { key: '49e6a16968709dc9b3fc77bc9fb99acb42fda88c' })), h("div", { key: '4e3ea0989ed5205dbb03586e4facb439b05a92de', part: "indicator", class: {
555
- 'segment-button-indicator': true,
556
- 'segment-button-indicator-animated': true,
557
- } }, h("div", { key: '65c72a151080998c1e548c87d4d4ebd5c7dda72f', part: "indicator-background", class: "segment-button-indicator-background" }))));
670
+ } }, h("button", Object.assign({ key: 'b4f6f145286ba8ab79669e11035b906daa85ae7e', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), h("span", { key: '67965996c9ffe70553875e00d3da0ae5b2b1d814', class: "button-inner" }, h("slot", { key: '5087988fe45a8fdf388ec44c395d0b745b207806' })), mode === 'md' && h("ion-ripple-effect", { key: 'b24858de0750bbc769b3183fac0077dfe817ba27' })), h("div", { key: '97b4359432acd1c9da0816360cd1df9472e183f7', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, h("div", { key: '0561738ea15b0986f4ed3d8276d5e6f2d13f7e51', part: "indicator-background", class: "segment-button-indicator-background" }))));
558
671
  }
559
672
  get el() { return getElement(this); }
560
673
  static get watchers() { return {
@@ -0,0 +1,107 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { r as registerInstance, h, j as forceUpdate, f as Host, i as getElement } from './index-28849c61.js';
5
+ import { b as getIonMode } from './ionic-global-c81d82ab.js';
6
+ import { s as safeCall } from './overlays-e7b9d6d9.js';
7
+ import { g as getClassMap } from './theme-01f3f29c.js';
8
+ import './index-a5d50daf.js';
9
+ import './helpers-da915de8.js';
10
+ import './hardware-back-button-06ef3c3e.js';
11
+ import './framework-delegate-63d1a679.js';
12
+ import './gesture-controller-314a54f6.js';
13
+ import './index-9b0d46f4.js';
14
+
15
+ const ionicSelectModalMdCss = ".sc-ion-select-modal-ionic-h{height:100%}ion-list.sc-ion-select-modal-ionic ion-radio.sc-ion-select-modal-ionic::part(container){display:none}ion-list.sc-ion-select-modal-ionic ion-radio.sc-ion-select-modal-ionic::part(label){margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-item.sc-ion-select-modal-ionic{--inner-border-width:0}.item-radio-checked.sc-ion-select-modal-ionic{--background:rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.08);--background-focused:var(--ion-color-primary, #0054e9);--background-focused-opacity:0.2;--background-hover:var(--ion-color-primary, #0054e9);--background-hover-opacity:0.12}.item-checkbox-checked.sc-ion-select-modal-ionic{--background-activated:var(--ion-item-color, var(--ion-text-color, #000));--background-focused:var(--ion-item-color, var(--ion-text-color, #000));--background-hover:var(--ion-item-color, var(--ion-text-color, #000));--color:var(--ion-color-primary, #0054e9)}";
16
+ const IonSelectModalIonicStyle0 = ionicSelectModalMdCss;
17
+
18
+ const selectModalIosCss = ".sc-ion-select-modal-ios-h{height:100%}";
19
+ const IonSelectModalIosStyle0 = selectModalIosCss;
20
+
21
+ const selectModalMdCss = ".sc-ion-select-modal-md-h{height:100%}ion-list.sc-ion-select-modal-md ion-radio.sc-ion-select-modal-md::part(container){display:none}ion-list.sc-ion-select-modal-md ion-radio.sc-ion-select-modal-md::part(label){margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-item.sc-ion-select-modal-md{--inner-border-width:0}.item-radio-checked.sc-ion-select-modal-md{--background:rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.08);--background-focused:var(--ion-color-primary, #0054e9);--background-focused-opacity:0.2;--background-hover:var(--ion-color-primary, #0054e9);--background-hover-opacity:0.12}.item-checkbox-checked.sc-ion-select-modal-md{--background-activated:var(--ion-item-color, var(--ion-text-color, #000));--background-focused:var(--ion-item-color, var(--ion-text-color, #000));--background-hover:var(--ion-item-color, var(--ion-text-color, #000));--color:var(--ion-color-primary, #0054e9)}";
22
+ const IonSelectModalMdStyle0 = selectModalMdCss;
23
+
24
+ const SelectModal = class {
25
+ constructor(hostRef) {
26
+ registerInstance(this, hostRef);
27
+ this.header = undefined;
28
+ this.multiple = undefined;
29
+ this.options = [];
30
+ }
31
+ closeModal() {
32
+ const modal = this.el.closest('ion-modal');
33
+ if (modal) {
34
+ modal.dismiss();
35
+ }
36
+ }
37
+ findOptionFromEvent(ev) {
38
+ const { options } = this;
39
+ return options.find((o) => o.value === ev.target.value);
40
+ }
41
+ getValues(ev) {
42
+ const { multiple, options } = this;
43
+ if (multiple) {
44
+ // this is a modal with checkboxes (multiple value select)
45
+ // return an array of all the checked values
46
+ return options.filter((o) => o.checked).map((o) => o.value);
47
+ }
48
+ // this is a modal with radio buttons (single value select)
49
+ // return the value that was clicked, otherwise undefined
50
+ const option = ev ? this.findOptionFromEvent(ev) : null;
51
+ return option ? option.value : undefined;
52
+ }
53
+ callOptionHandler(ev) {
54
+ const option = this.findOptionFromEvent(ev);
55
+ const values = this.getValues(ev);
56
+ if (option === null || option === void 0 ? void 0 : option.handler) {
57
+ safeCall(option.handler, values);
58
+ }
59
+ }
60
+ setChecked(ev) {
61
+ const { multiple } = this;
62
+ const option = this.findOptionFromEvent(ev);
63
+ // this is a modal with checkboxes (multiple value select)
64
+ // we need to set the checked value for this option
65
+ if (multiple && option) {
66
+ option.checked = ev.detail.checked;
67
+ }
68
+ }
69
+ renderRadioOptions() {
70
+ const checked = this.options.filter((o) => o.checked).map((o) => o.value)[0];
71
+ return (h("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, this.options.map((option) => (h("ion-item", { class: Object.assign({
72
+ // TODO FW-4784
73
+ 'item-radio-checked': option.value === checked
74
+ }, getClassMap(option.cssClass)) }, h("ion-radio", { value: option.value, disabled: option.disabled, justify: "start", labelPlacement: "end", onClick: () => this.closeModal(), onKeyUp: (ev) => {
75
+ if (ev.key === ' ') {
76
+ /**
77
+ * Selecting a radio option with keyboard navigation,
78
+ * either through the Enter or Space keys, should
79
+ * dismiss the modal.
80
+ */
81
+ this.closeModal();
82
+ }
83
+ } }, option.text))))));
84
+ }
85
+ renderCheckboxOptions() {
86
+ return this.options.map((option) => (h("ion-item", { class: Object.assign({
87
+ // TODO FW-4784
88
+ 'item-checkbox-checked': option.checked
89
+ }, getClassMap(option.cssClass)) }, h("ion-checkbox", { value: option.value, disabled: option.disabled, checked: option.checked, justify: "start", labelPlacement: "end", onIonChange: (ev) => {
90
+ this.setChecked(ev);
91
+ this.callOptionHandler(ev);
92
+ // TODO FW-4784
93
+ forceUpdate(this);
94
+ } }, option.text))));
95
+ }
96
+ render() {
97
+ return (h(Host, { key: 'f4b92f4fc3d646f9a327e43a9622abaf69659c28', class: getIonMode(this) }, h("ion-header", { key: '11232ef496e7abd69e55cef988963a4869a7b01e' }, h("ion-toolbar", { key: 'e7c41878691a504d44c658db02807867df542588' }, this.header !== undefined && h("ion-title", { key: 'fcf9d33e0f3e0076ff14805de68848f9ef199cca' }, this.header), h("ion-buttons", { key: '748a967ae0ce68bc2fd018a6b9ebe0e4b810f6ac', slot: "end" }, h("ion-button", { key: 'f5e60791870b5085a31b7af70ed4bb3fb83eb185', onClick: () => this.closeModal() }, "Close")))), h("ion-content", { key: '159797957b6f788a9b393d91864c18db34481c68' }, h("ion-list", { key: '4124554fe8b2411637cbf02f08e50e0d8f804175' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
98
+ }
99
+ get el() { return getElement(this); }
100
+ };
101
+ SelectModal.style = {
102
+ ionic: IonSelectModalIonicStyle0,
103
+ ios: IonSelectModalIosStyle0,
104
+ md: IonSelectModalMdStyle0
105
+ };
106
+
107
+ export { SelectModal as ion_select_modal };
@@ -5,7 +5,7 @@ import { r as registerInstance, d as createEvent, h, f as Host, i as getElement,
5
5
  import { c as createNotchController } from './notch-controller-55b09e11.js';
6
6
  import { i as isOptionSelected, c as compareOptions } from './compare-with-utils-a96ff2ea.js';
7
7
  import { h as inheritAttributes, f as focusVisibleElement, d as renderHiddenInput } from './helpers-da915de8.js';
8
- import { c as popoverController, b as actionSheetController, a as alertController, s as safeCall } from './overlays-ae10d43d.js';
8
+ import { c as popoverController, b as actionSheetController, a as alertController, m as modalController, s as safeCall } from './overlays-e7b9d6d9.js';
9
9
  import { i as isRTL } from './dir-babeabeb.js';
10
10
  import { h as hostContext, c as createColorClasses, g as getClassMap } from './theme-01f3f29c.js';
11
11
  import { w as watchForOptions } from './watch-options-c2911ace.js';
@@ -166,13 +166,12 @@ const Select = class {
166
166
  this.setFocus();
167
167
  });
168
168
  await overlay.present();
169
- // focus selected option for popovers
170
- if (this.interface === 'popover') {
171
- const indexOfSelected = this.childOpts.map((o) => o.value).indexOf(this.value);
169
+ // focus selected option for popovers and modals
170
+ if (this.interface === 'popover' || this.interface === 'modal') {
171
+ const indexOfSelected = this.childOpts.findIndex((o) => o.value === this.value);
172
172
  if (indexOfSelected > -1) {
173
173
  const selectedItem = overlay.querySelector(`.select-interface-option:nth-child(${indexOfSelected + 1})`);
174
174
  if (selectedItem) {
175
- focusVisibleElement(selectedItem);
176
175
  /**
177
176
  * Browsers such as Firefox do not
178
177
  * correctly delegate focus when manually
@@ -186,8 +185,11 @@ const Select = class {
186
185
  */
187
186
  const interactiveEl = selectedItem.querySelector('ion-radio, ion-checkbox');
188
187
  if (interactiveEl) {
189
- interactiveEl.focus();
188
+ // Needs to be called before `focusVisibleElement` to prevent issue with focus event bubbling
189
+ // and removing `ion-focused` style
190
+ interactiveEl.setFocus();
190
191
  }
192
+ focusVisibleElement(selectedItem);
191
193
  }
192
194
  }
193
195
  else {
@@ -196,11 +198,14 @@ const Select = class {
196
198
  */
197
199
  const firstEnabledOption = overlay.querySelector('ion-radio:not(.radio-disabled), ion-checkbox:not(.checkbox-disabled)');
198
200
  if (firstEnabledOption) {
199
- focusVisibleElement(firstEnabledOption.closest('ion-item'));
200
201
  /**
201
202
  * Focus the option for the same reason as we do above.
203
+ *
204
+ * Needs to be called before `focusVisibleElement` to prevent issue with focus event bubbling
205
+ * and removing `ion-focused` style
202
206
  */
203
- firstEnabledOption.focus();
207
+ firstEnabledOption.setFocus();
208
+ focusVisibleElement(firstEnabledOption.closest('ion-item'));
204
209
  }
205
210
  }
206
211
  }
@@ -222,6 +227,9 @@ const Select = class {
222
227
  if (selectInterface === 'popover') {
223
228
  return this.openPopover(ev);
224
229
  }
230
+ if (selectInterface === 'modal') {
231
+ return this.openModal();
232
+ }
225
233
  return this.openAlert();
226
234
  }
227
235
  updateOverlayOptions() {
@@ -238,7 +246,13 @@ const Select = class {
238
246
  case 'popover':
239
247
  const popover = overlay.querySelector('ion-select-popover');
240
248
  if (popover) {
241
- popover.options = this.createPopoverOptions(childOpts, value);
249
+ popover.options = this.createOverlaySelectOptions(childOpts, value);
250
+ }
251
+ break;
252
+ case 'modal':
253
+ const modal = overlay.querySelector('ion-select-modal');
254
+ if (modal) {
255
+ modal.options = this.createOverlaySelectOptions(childOpts, value);
242
256
  }
243
257
  break;
244
258
  case 'alert':
@@ -293,7 +307,7 @@ const Select = class {
293
307
  });
294
308
  return alertInputs;
295
309
  }
296
- createPopoverOptions(data, selectValue) {
310
+ createOverlaySelectOptions(data, selectValue) {
297
311
  const popoverOptions = data.map((option) => {
298
312
  const value = getOptionValue(option);
299
313
  // Remove hydrated before copying over classes
@@ -353,7 +367,7 @@ const Select = class {
353
367
  message: interfaceOptions.message,
354
368
  multiple,
355
369
  value,
356
- options: this.createPopoverOptions(this.childOpts, value),
370
+ options: this.createOverlaySelectOptions(this.childOpts, value),
357
371
  } });
358
372
  return popoverController.create(popoverOpts);
359
373
  }
@@ -388,6 +402,17 @@ const Select = class {
388
402
  ] });
389
403
  return alertController.create(alertOpts);
390
404
  }
405
+ openModal() {
406
+ const { multiple, value, interfaceOptions } = this;
407
+ const mode = getIonMode(this);
408
+ const modalOpts = Object.assign(Object.assign({}, interfaceOptions), { mode, cssClass: ['select-modal', interfaceOptions.cssClass], component: 'ion-select-modal', componentProps: {
409
+ header: interfaceOptions.header,
410
+ multiple,
411
+ value,
412
+ options: this.createOverlaySelectOptions(this.childOpts, value),
413
+ } });
414
+ return modalController.create(modalOpts);
415
+ }
391
416
  /**
392
417
  * Close the select interface.
393
418
  */
@@ -595,7 +620,7 @@ const Select = class {
595
620
  * TODO(FW-5592): Remove hasStartEndSlots condition
596
621
  */
597
622
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
598
- return (h(Host, { key: '73c571c1f8468e1c3f4fe02fbbb33ba9cbc8e989', onClick: this.onClick, class: createColorClasses(this.color, {
623
+ return (h(Host, { key: '144dfa5c49549a74fe516c65b9b8104a477ac789', onClick: this.onClick, class: createColorClasses(this.color, {
599
624
  [mode]: true,
600
625
  'in-item': inItem,
601
626
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -611,7 +636,7 @@ const Select = class {
611
636
  [`select-justify-${justify}`]: justifyEnabled,
612
637
  [`select-shape-${shape}`]: shape !== undefined,
613
638
  [`select-label-placement-${labelPlacement}`]: true,
614
- }) }, h("label", { key: '2b08538cba0b9f747541d57ac18fb6a1ea658878', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), h("div", { key: '33f54373bcb02c72a9d0af2efffebc27ee2c69fe', class: "select-wrapper-inner" }, h("slot", { key: 'd1c93aec99dc1cd6410f93309cef615fe04b541b', name: "start" }), h("div", { key: '493d1a3cad9565516f855bef75685b020785ffd3', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: '353a3ee5635f8a8f3be411efd6caef6c2ad74a89', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: 'fd5f85555db02affe954f9f4f2876ac8fe676234', class: "select-highlight" }))));
639
+ }) }, h("label", { key: '0edcfcbac575a9dccc77991531b6980d1caebf42', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), h("div", { key: '348151d90cb093f5d21c7d4a834264ac4a312c40', class: "select-wrapper-inner" }, h("slot", { key: '8b7708c7f81217435c58276da0c08bba766d9500', name: "start" }), h("div", { key: '10c520a335da0a0d1cf40f9365597beb244d3b48', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: '0f15c40a5495e98e29d2a21ba21e0bc6f1c0125a', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: 'c87faad2e5ebf7f9453397d7ede43abd64d21294', class: "select-highlight" }))));
615
640
  }
616
641
  get el() { return getElement(this); }
617
642
  static get watchers() { return {
@@ -672,7 +697,7 @@ const SelectOption = class {
672
697
  this.value = undefined;
673
698
  }
674
699
  render() {
675
- return h(Host, { key: 'ba5a9c695c53fe0802af11a49f4305a9b8f71773', role: "option", id: this.inputId, class: getIonMode(this) });
700
+ return h(Host, { key: '2e6fa159464f04f6d8720f960141f67918bc7534', role: "option", id: this.inputId, class: getIonMode(this) });
676
701
  }
677
702
  get el() { return getElement(this); }
678
703
  };
@@ -780,7 +805,7 @@ const SelectPopover = class {
780
805
  render() {
781
806
  const { header, message, options, subHeader } = this;
782
807
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
783
- return (h(Host, { key: '302553a2eec4d1442751b8af28b7c9bd3487fd5d', class: getIonMode(this) }, h("ion-list", { key: '39ae8579e6fe3bae2c7504147268ad5c82fd27e6' }, header !== undefined && h("ion-list-header", { key: 'e0e6686380d188f46c593e1bb25287dcf08c75c2' }, header), hasSubHeaderOrMessage && (h("ion-item", { key: '8a2d8652db269593c0ba7d767277e12c2b06144d' }, h("ion-label", { key: 'a30cc0ecf95d5bdd6421ee1683922c1b853e98ea', class: "ion-text-wrap" }, subHeader !== undefined && h("h3", { key: 'c298459ca450123808a08d65660825b2c26d00e5' }, subHeader), message !== undefined && h("p", { key: 'ed895fbaec020e809021138401341b6fd7675035' }, message)))), this.renderOptions(options))));
808
+ return (h(Host, { key: 'dd0990db4de4f175b176b27f35501dd1604ca400', class: getIonMode(this) }, h("ion-list", { key: 'cea2bc3687b8b2490a2a9ff4a1e16cd34169558e' }, header !== undefined && h("ion-list-header", { key: '194aebb53453c43f913daae45a1a3066a1708c4c' }, header), hasSubHeaderOrMessage && (h("ion-item", { key: 'b706b07a3c63ad8104d2db413e210c735ec1bec9' }, h("ion-label", { key: '6e52b5b4cf6b04ff3dd5671d64264233de4190d5', class: "ion-text-wrap" }, subHeader !== undefined && h("h3", { key: '6ef4440d17f5db8c96c63b9aa5073f4fe4b8ad62' }, subHeader), message !== undefined && h("p", { key: 'c7b3b76c30ecd606c0e985a0258c13d3a75756e7' }, message)))), this.renderOptions(options))));
784
809
  }
785
810
  get el() { return getElement(this); }
786
811
  };
@@ -43,7 +43,7 @@ const Spinner = class {
43
43
  svgs.push(buildLine(spinner, duration, i, spinner.lines));
44
44
  }
45
45
  }
46
- return (h(Host, { key: '50cbaed55eeab15292447d106a80b93db4cb40de', class: createColorClasses(self.color, {
46
+ return (h(Host, { key: '9d30ee9f5aa0dd0e220da07e75d05b8b2435224d', class: createColorClasses(self.color, {
47
47
  [mode]: true,
48
48
  [`spinner-${spinnerName}`]: true,
49
49
  'spinner-paused': self.paused || config.getBoolean('_testing'),
@@ -121,12 +121,12 @@ const SplitPane = class {
121
121
  }
122
122
  render() {
123
123
  const mode = getIonMode(this);
124
- return (h(Host, { key: 'd54c356cd4bff7e55325160882dea8249f47f388', class: {
124
+ return (h(Host, { key: '1ca0b0299d03605bb358112ca56cbafbe58f00f5', class: {
125
125
  [mode]: true,
126
126
  // Used internally for styling
127
127
  [`split-pane-${mode}`]: true,
128
128
  'split-pane-visible': this.visible,
129
- } }, h("slot", { key: 'af62690d0fd686cfbd29d888c79eda9001f13e2f' })));
129
+ } }, h("slot", { key: 'abe231361727ae7fc63edd592a4490caac1909fb' })));
130
130
  }
131
131
  get el() { return getElement(this); }
132
132
  static get watchers() { return {
@@ -62,11 +62,11 @@ const TabBar = class {
62
62
  const { color, translucent, keyboardVisible } = this;
63
63
  const mode = getIonMode(this);
64
64
  const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
65
- return (h(Host, { key: '3a8595dd83f89e8319471a7a7f9f64b2565b384c', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses(color, {
65
+ return (h(Host, { key: 'a87fd2ea5df053705a37ea7ffec043e75c4a9907', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses(color, {
66
66
  [mode]: true,
67
67
  'tab-bar-translucent': translucent,
68
68
  'tab-bar-hidden': shouldHide,
69
- }) }, h("slot", { key: '8b65eceb922f6abfa15f41046261586fb94b981f' })));
69
+ }) }, h("slot", { key: '81a6223299b6cab29d7ddced590e9152e2b3ded0' })));
70
70
  }
71
71
  get el() { return getElement(this); }
72
72
  static get watchers() { return {
@@ -146,7 +146,7 @@ const TabButton = class {
146
146
  rel,
147
147
  target,
148
148
  };
149
- return (h(Host, { key: '4b528ce31f67e10ad849e0c99bd034bba675c227', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
149
+ return (h(Host, { key: '5976c45943ea7ea8e7c1a85fc9996de421439f08', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
150
150
  [mode]: true,
151
151
  'tab-selected': selected,
152
152
  'tab-disabled': disabled,
@@ -158,7 +158,7 @@ const TabButton = class {
158
158
  'ion-activatable': true,
159
159
  'ion-selectable': true,
160
160
  'ion-focusable': true,
161
- } }, h("a", Object.assign({ key: '0da8784b1b243ffaaaf04dd7adb55d6881ed0c08' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), h("span", { key: '2c628e8f1ebc129f84876c01530468cb97d8bf3a', class: "button-inner" }, h("slot", { key: '8052a171d197a7de1a7eb12b091c35f73ae1ee21' })), mode === 'md' && h("ion-ripple-effect", { key: '4186bdb5ed045ec16f495a14fa30ac864c576227', type: "unbounded" }))));
161
+ } }, h("a", Object.assign({ key: '1db09d861b67ff292018fb4b0dc7b85bd4677eb8' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), h("span", { key: '4381eafcb27e8c7bb0d86d4f115ceb0caf03b9b4', class: "button-inner" }, h("slot", { key: '1981135f6fbb88376c1bd923c55c70fe8b5c5159' })), mode === 'md' && h("ion-ripple-effect", { key: '0509bc7155d055d1ed710600e9cf4df135881491', type: "unbounded" }))));
162
162
  }
163
163
  get el() { return getElement(this); }
164
164
  };
@@ -46,10 +46,10 @@ const Tab = class {
46
46
  }
47
47
  render() {
48
48
  const { tab, active, component } = this;
49
- return (h(Host, { key: '46d5498418f5379861c3d7465e8021dec45f1200', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
49
+ return (h(Host, { key: 'cb75d0877979b3b8df8f7e1952bfa9677da1eaa5', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
50
50
  'ion-page': component === undefined,
51
51
  'tab-hidden': !active,
52
- } }, h("slot", { key: 'b45045dccb87dfe75e3f5a5a474bb48b6c98e922' })));
52
+ } }, h("slot", { key: '37fbb7b7a6b03eb93b1dacd2dc1025b78eb2aa6b' })));
53
53
  }
54
54
  get el() { return getElement(this); }
55
55
  static get watchers() { return {
@@ -203,7 +203,7 @@ const Tabs = class {
203
203
  return Array.from(this.el.querySelectorAll('ion-tab'));
204
204
  }
205
205
  render() {
206
- return (h(Host, { key: 'eb094c9bd15b7777c53bd0bd6d225784fa472849', onIonTabButtonClick: this.onTabClicked }, h("slot", { key: 'a516ca6915bf26e77eeeb0ff684c4fcc7d4420a7', name: "top" }), h("div", { key: 'dd2a32a072d77afe216abc4958c1d686405fb780', class: "tabs-inner" }, h("slot", { key: '222c20ba862068f5c78e7bbef4fa213499fb2fa5' })), h("slot", { key: '3e76dcb1b21873aa137d095c56131514054ead3a', name: "bottom" })));
206
+ return (h(Host, { key: 'e01ccf6bfaccad094515be50e407399c733fc226', onIonTabButtonClick: this.onTabClicked }, h("slot", { key: '38d2d01dbfd8a08f01e6f0e27274b21d75424e37', name: "top" }), h("div", { key: '7e894f0f423e2d43e1c68daff5f9f6c442fad237', class: "tabs-inner" }, h("slot", { key: 'df16be529a0370a26d0adf850530b31607507c23' })), h("slot", { key: '44642e1cb24c3281c43db75fd69a32fe0defe40a', name: "bottom" })));
207
207
  }
208
208
  get el() { return getElement(this); }
209
209
  };
@@ -15,9 +15,9 @@ const Text = class {
15
15
  }
16
16
  render() {
17
17
  const mode = getIonMode(this);
18
- return (h(Host, { key: '4b76333b1ea5cab134b9dc1f5670c0d5a253fc32', class: createColorClasses(this.color, {
18
+ return (h(Host, { key: 'e134d70c04344b708a2ecf6253722781ad2ca826', class: createColorClasses(this.color, {
19
19
  [mode]: true,
20
- }) }, h("slot", { key: '3dee5f16bc58b3d92547d910bd4f441a00ce2039' })));
20
+ }) }, h("slot", { key: 'da79c760f7ebbcd007ce110439f05a62cb22eac8' })));
21
21
  }
22
22
  };
23
23
  Text.style = IonTextStyle0;
@@ -380,7 +380,7 @@ const Textarea = class {
380
380
  * TODO(FW-5592): Remove hasStartEndSlots condition
381
381
  */
382
382
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
383
- return (h(Host, { key: 'e8a5b5727c6a018bbd6f5507b690bc5f0959e352', class: createColorClasses(this.color, {
383
+ return (h(Host, { key: 'd6e25c83d8eab8cb1a5b6ab411c9a13847f69f8d', class: createColorClasses(this.color, {
384
384
  [mode]: true,
385
385
  'has-value': hasValue,
386
386
  'has-focus': hasFocus,
@@ -389,7 +389,7 @@ const Textarea = class {
389
389
  [`textarea-shape-${shape}`]: shape !== undefined,
390
390
  [`textarea-label-placement-${labelPlacement}`]: true,
391
391
  'textarea-disabled': disabled,
392
- }) }, h("label", { key: '48e889571e2d3e7e150b038e4b4b15862b418288', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), h("div", { key: '6c6c7872ae4d351d8b8d772ad18ce3ba7a0e9a87', class: "textarea-wrapper-inner" }, h("div", { key: '03aef5dfa59af0fa78a3e5c92e0ed72396717d72', class: "start-slot-wrapper" }, h("slot", { key: '39aee9faebb0f1d10de5a5817fd9d9771b074b96', name: "start" })), h("div", { key: '738e8ff603f4c9b9083b3139db861f4b7ec20f79', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, h("textarea", Object.assign({ key: '7763fb4f8ffe94635167331c70d21d661544c4f8', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId }, this.inheritedAttributes), value)), h("div", { key: 'b3af9ec0982c6dbd381afaa02df153d7e90471be', class: "end-slot-wrapper" }, h("slot", { key: '60f99bcd49a5ec2e1fa6e3e77809aefeb9d2d0d6', name: "end" }))), shouldRenderHighlight && h("div", { key: '6a7f45639ba027f4da573adae53f1197a6dec383', class: "textarea-highlight" })), this.renderBottomContent()));
392
+ }) }, h("label", { key: 'f840a5be2b776a4b9c18c6da24e0b7d3d4838fee', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), h("div", { key: '979461fc0d4684926d79d75759c63c6867b7622b', class: "textarea-wrapper-inner" }, h("div", { key: '88f0d5d4bac29597cc2588e5b2ed72fb4fbe153d', class: "start-slot-wrapper" }, h("slot", { key: '21dcca0e59c1260e3d0d1e126c1c590de15c4bad', name: "start" })), h("div", { key: '3c48a4bb3d763a389d3429123e7c110064b9b8d4', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, h("textarea", Object.assign({ key: '1550599ad15b3f215c104c014e90711f073ace8b', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId }, this.inheritedAttributes), value)), h("div", { key: '4f01ab4d2994a6de6f49eb9ed2e310d00daf21b2', class: "end-slot-wrapper" }, h("slot", { key: '501e288b6807e039972bb4f0b63906114255518a', name: "end" }))), shouldRenderHighlight && h("div", { key: 'd3008eed34494aa9f8e98a28eac3b465dc4c2bd0', class: "textarea-highlight" })), this.renderBottomContent()));
393
393
  }
394
394
  get el() { return getElement(this); }
395
395
  static get watchers() { return {