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
@@ -23,6 +23,7 @@ const Segment = class {
23
23
  this.ionChange = index.createEvent(this, "ionChange", 7);
24
24
  this.ionSelect = index.createEvent(this, "ionSelect", 7);
25
25
  this.ionStyle = index.createEvent(this, "ionStyle", 7);
26
+ this.segmentViewEl = null;
26
27
  this.onClick = (ev) => {
27
28
  const current = ev.target;
28
29
  const previous = this.checked;
@@ -37,7 +38,13 @@ const Segment = class {
37
38
  if (current !== previous) {
38
39
  this.emitValueChange();
39
40
  }
40
- if (this.scrollable || !this.swipeGesture) {
41
+ if (this.segmentViewEl) {
42
+ this.updateSegmentView();
43
+ if (this.scrollable && previous) {
44
+ this.checkButton(previous, current);
45
+ }
46
+ }
47
+ else if (this.scrollable || !this.swipeGesture) {
41
48
  if (previous) {
42
49
  this.checkButton(previous, current);
43
50
  }
@@ -93,19 +100,49 @@ const Segment = class {
93
100
  swipeGestureChanged() {
94
101
  this.gestureChanged();
95
102
  }
96
- valueChanged(value) {
103
+ valueChanged(value, oldValue) {
104
+ // Force a value to exist if we're using a segment view
105
+ if (this.segmentViewEl && value === undefined) {
106
+ this.value = this.getButtons()[0].value;
107
+ return;
108
+ }
109
+ if (oldValue !== undefined && value !== undefined) {
110
+ const buttons = this.getButtons();
111
+ const previous = buttons.find((button) => button.value === oldValue);
112
+ const current = buttons.find((button) => button.value === value);
113
+ if (previous && current) {
114
+ if (!this.segmentViewEl) {
115
+ this.checkButton(previous, current);
116
+ }
117
+ else if (this.triggerScrollOnValueChange !== false) {
118
+ this.updateSegmentView();
119
+ }
120
+ }
121
+ }
122
+ else if (value !== undefined && oldValue === undefined && this.segmentViewEl) {
123
+ this.updateSegmentView();
124
+ }
97
125
  /**
98
126
  * `ionSelect` is emitted every time the value changes (internal or external changes).
99
127
  * Used by `ion-segment-button` to determine if the button should be checked.
100
128
  */
101
129
  this.ionSelect.emit({ value });
102
- this.scrollActiveButtonIntoView();
130
+ // The scroll listener should handle scrolling the active button into view as needed
131
+ if (!this.segmentViewEl) {
132
+ this.scrollActiveButtonIntoView();
133
+ }
134
+ this.triggerScrollOnValueChange = undefined;
103
135
  }
104
136
  disabledChanged() {
105
137
  this.gestureChanged();
106
- const buttons = this.getButtons();
107
- for (const button of buttons) {
108
- button.disabled = this.disabled;
138
+ if (!this.segmentViewEl) {
139
+ const buttons = this.getButtons();
140
+ for (const button of buttons) {
141
+ button.disabled = this.disabled;
142
+ }
143
+ }
144
+ else {
145
+ this.segmentViewEl.disabled = this.disabled;
109
146
  }
110
147
  }
111
148
  gestureChanged() {
@@ -115,6 +152,10 @@ const Segment = class {
115
152
  }
116
153
  connectedCallback() {
117
154
  this.emitStyle();
155
+ this.segmentViewEl = this.getSegmentView();
156
+ }
157
+ disconnectedCallback() {
158
+ this.segmentViewEl = null;
118
159
  }
119
160
  componentWillLoad() {
120
161
  this.emitStyle();
@@ -148,6 +189,9 @@ const Segment = class {
148
189
  if (this.disabled) {
149
190
  this.disabledChanged();
150
191
  }
192
+ // Update segment view based on the initial value,
193
+ // but do not animate the scroll
194
+ this.updateSegmentView(false);
151
195
  }
152
196
  onStart(detail) {
153
197
  this.valueBeforeGesture = this.value;
@@ -164,6 +208,7 @@ const Segment = class {
164
208
  if (value !== undefined) {
165
209
  if (this.valueBeforeGesture !== value) {
166
210
  this.emitValueChange();
211
+ this.updateSegmentView();
167
212
  }
168
213
  }
169
214
  this.valueBeforeGesture = undefined;
@@ -191,12 +236,7 @@ const Segment = class {
191
236
  setActivated(activated) {
192
237
  const buttons = this.getButtons();
193
238
  buttons.forEach((button) => {
194
- if (activated) {
195
- button.classList.add('segment-button-activated');
196
- }
197
- else {
198
- button.classList.remove('segment-button-activated');
199
- }
239
+ button.classList.toggle('segment-button-activated', activated);
200
240
  });
201
241
  this.activated = activated;
202
242
  }
@@ -247,6 +287,7 @@ const Segment = class {
247
287
  currentIndicator.classList.add('segment-button-indicator-animated');
248
288
  // Remove the transform to slide the indicator back to the button clicked
249
289
  currentIndicator.style.setProperty('transform', '');
290
+ this.scrollActiveButtonIntoView(true);
250
291
  });
251
292
  this.value = current.value;
252
293
  this.setCheckedClasses();
@@ -262,6 +303,60 @@ const Segment = class {
262
303
  buttons[next].classList.add('segment-button-after-checked');
263
304
  }
264
305
  }
306
+ getSegmentView() {
307
+ const buttons = this.getButtons();
308
+ // Get the first button with a contentId
309
+ const firstContentId = buttons.find((button) => button.contentId);
310
+ // Get the segment content with an id matching the button's contentId
311
+ const segmentContent = document.querySelector(`ion-segment-content[id="${firstContentId === null || firstContentId === void 0 ? void 0 : firstContentId.contentId}"]`);
312
+ // Return the segment view for that matching segment content
313
+ return segmentContent === null || segmentContent === void 0 ? void 0 : segmentContent.closest('ion-segment-view');
314
+ }
315
+ handleSegmentViewScroll(ev) {
316
+ const { scrollRatio, isManualScroll } = ev.detail;
317
+ if (!isManualScroll) {
318
+ return;
319
+ }
320
+ const dispatchedFrom = ev.target;
321
+ const segmentViewEl = this.segmentViewEl;
322
+ const segmentEl = this.el;
323
+ // Only update the indicator if the event was dispatched from the correct segment view
324
+ if (ev.composedPath().includes(segmentViewEl) || (dispatchedFrom === null || dispatchedFrom === void 0 ? void 0 : dispatchedFrom.contains(segmentEl))) {
325
+ const buttons = this.getButtons();
326
+ // If no buttons are found or there is no value set then do nothing
327
+ if (!buttons.length)
328
+ return;
329
+ const index = buttons.findIndex((button) => button.value === this.value);
330
+ const current = buttons[index];
331
+ const nextIndex = Math.round(scrollRatio * (buttons.length - 1));
332
+ if (this.lastNextIndex === undefined || this.lastNextIndex !== nextIndex) {
333
+ this.lastNextIndex = nextIndex;
334
+ this.triggerScrollOnValueChange = false;
335
+ this.checkButton(current, buttons[nextIndex]);
336
+ this.emitValueChange();
337
+ }
338
+ }
339
+ }
340
+ /**
341
+ * Finds the related segment view and sets its current content
342
+ * based on the selected segment button. This method
343
+ * should be called on initial load of the segment,
344
+ * after the gesture is completed (if dragging between segments)
345
+ * and when a segment button is clicked directly.
346
+ */
347
+ updateSegmentView(smoothScroll = true) {
348
+ const buttons = this.getButtons();
349
+ const button = buttons.find((btn) => btn.value === this.value);
350
+ // If the button does not have a contentId then there is
351
+ // no associated segment view to update
352
+ if (!(button === null || button === void 0 ? void 0 : button.contentId)) {
353
+ return;
354
+ }
355
+ const segmentView = this.segmentViewEl;
356
+ if (segmentView) {
357
+ segmentView.setContent(button.contentId, smoothScroll);
358
+ }
359
+ }
265
360
  scrollActiveButtonIntoView(smoothScroll = true) {
266
361
  const { scrollable, value, el } = this;
267
362
  if (scrollable) {
@@ -444,14 +539,14 @@ const Segment = class {
444
539
  }
445
540
  render() {
446
541
  const mode = ionicGlobal.getIonMode(this);
447
- return (index.h(index.Host, { key: 'f1f7103b4c298e037df850ac809a1a7c6e9987a7', role: "tablist", onClick: this.onClick, class: theme.createColorClasses(this.color, {
542
+ return (index.h(index.Host, { key: '66bd7a565ba73540b3bbe56dd23b95e59bcef9bc', role: "tablist", onClick: this.onClick, class: theme.createColorClasses(this.color, {
448
543
  [mode]: true,
449
544
  'in-toolbar': theme.hostContext('ion-toolbar', this.el),
450
545
  'in-toolbar-color': theme.hostContext('ion-toolbar[color]', this.el),
451
546
  'segment-activated': this.activated,
452
547
  'segment-disabled': this.disabled,
453
548
  'segment-scrollable': this.scrollable,
454
- }) }, index.h("slot", { key: '6efdb318b13da8d21687084aa0761728fdf12579', onSlotchange: this.onSlottedItemsChange })));
549
+ }) }, index.h("slot", { key: '782c521b1a33729b8eab1c4b879bc3f2ff48ae1b', onSlotchange: this.onSlottedItemsChange })));
455
550
  }
456
551
  get el() { return index.getElement(this); }
457
552
  static get watchers() { return {
@@ -491,6 +586,7 @@ const SegmentButton = class {
491
586
  }
492
587
  };
493
588
  this.checked = false;
589
+ this.contentId = undefined;
494
590
  this.disabled = false;
495
591
  this.layout = 'icon-top';
496
592
  this.type = 'button';
@@ -506,6 +602,26 @@ const SegmentButton = class {
506
602
  helpers.addEventListener(segmentEl, 'ionSelect', this.updateState);
507
603
  helpers.addEventListener(segmentEl, 'ionStyle', this.updateStyle);
508
604
  }
605
+ // Return if there is no contentId defined
606
+ if (!this.contentId)
607
+ return;
608
+ // Attempt to find the Segment Content by its contentId
609
+ const segmentContent = document.getElementById(this.contentId);
610
+ // If no associated Segment Content exists, log an error and return
611
+ if (!segmentContent) {
612
+ console.error(`Segment Button: Unable to find Segment Content with id="${this.contentId}".`);
613
+ return;
614
+ }
615
+ // Ensure the found element is a valid ION-SEGMENT-CONTENT
616
+ if (segmentContent.tagName !== 'ION-SEGMENT-CONTENT') {
617
+ console.error(`Segment Button: Element with id="${this.contentId}" is not an <ion-segment-content> element.`);
618
+ return;
619
+ }
620
+ // Prevent buttons from being disabled when associated with segment content
621
+ if (this.disabled) {
622
+ console.warn(`Segment Button: Segment buttons cannot be disabled when associated with an <ion-segment-content>.`);
623
+ this.disabled = false;
624
+ }
509
625
  }
510
626
  disconnectedCallback() {
511
627
  const segmentEl = this.segmentEl;
@@ -539,7 +655,7 @@ const SegmentButton = class {
539
655
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
540
656
  const mode = ionicGlobal.getIonMode(this);
541
657
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
542
- return (index.h(index.Host, { key: '70cf5c7a3ae2620222c5250c644faf3cfc3b3e4e', class: {
658
+ return (index.h(index.Host, { key: 'd50a5d5e2f6206e8523598f258d8217d2903f69b', class: {
543
659
  [mode]: true,
544
660
  'in-toolbar': theme.hostContext('ion-toolbar', this.el),
545
661
  'in-toolbar-color': theme.hostContext('ion-toolbar[color]', this.el),
@@ -555,10 +671,7 @@ const SegmentButton = class {
555
671
  'ion-activatable': true,
556
672
  'ion-activatable-instant': true,
557
673
  'ion-focusable': true,
558
- } }, index.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), index.h("span", { key: '7d8feda840d389941cc693f500b5eba0b39b41da', class: "button-inner" }, index.h("slot", { key: 'd9ae1eec45db253cbf573d29cd545658dd595d87' })), mode === 'md' && index.h("ion-ripple-effect", { key: '49e6a16968709dc9b3fc77bc9fb99acb42fda88c' })), index.h("div", { key: '4e3ea0989ed5205dbb03586e4facb439b05a92de', part: "indicator", class: {
559
- 'segment-button-indicator': true,
560
- 'segment-button-indicator-animated': true,
561
- } }, index.h("div", { key: '65c72a151080998c1e548c87d4d4ebd5c7dda72f', part: "indicator-background", class: "segment-button-indicator-background" }))));
674
+ } }, index.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), index.h("span", { key: '67965996c9ffe70553875e00d3da0ae5b2b1d814', class: "button-inner" }, index.h("slot", { key: '5087988fe45a8fdf388ec44c395d0b745b207806' })), mode === 'md' && index.h("ion-ripple-effect", { key: 'b24858de0750bbc769b3183fac0077dfe817ba27' })), index.h("div", { key: '97b4359432acd1c9da0816360cd1df9472e183f7', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, index.h("div", { key: '0561738ea15b0986f4ed3d8276d5e6f2d13f7e51', part: "indicator-background", class: "segment-button-indicator-background" }))));
562
675
  }
563
676
  get el() { return index.getElement(this); }
564
677
  static get watchers() { return {
@@ -0,0 +1,111 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ 'use strict';
5
+
6
+ Object.defineProperty(exports, '__esModule', { value: true });
7
+
8
+ const index = require('./index-73f75efb.js');
9
+ const ionicGlobal = require('./ionic-global-d9a8bb5b.js');
10
+ const overlays = require('./overlays-aa669eb8.js');
11
+ const theme = require('./theme-d1c573d2.js');
12
+ require('./index-c8d52405.js');
13
+ require('./helpers-afaa9001.js');
14
+ require('./hardware-back-button-9e8a2c4f.js');
15
+ require('./framework-delegate-55f5683a.js');
16
+ require('./gesture-controller-9436f482.js');
17
+ require('./index-5915f9b3.js');
18
+
19
+ 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)}";
20
+ const IonSelectModalIonicStyle0 = ionicSelectModalMdCss;
21
+
22
+ const selectModalIosCss = ".sc-ion-select-modal-ios-h{height:100%}";
23
+ const IonSelectModalIosStyle0 = selectModalIosCss;
24
+
25
+ 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)}";
26
+ const IonSelectModalMdStyle0 = selectModalMdCss;
27
+
28
+ const SelectModal = class {
29
+ constructor(hostRef) {
30
+ index.registerInstance(this, hostRef);
31
+ this.header = undefined;
32
+ this.multiple = undefined;
33
+ this.options = [];
34
+ }
35
+ closeModal() {
36
+ const modal = this.el.closest('ion-modal');
37
+ if (modal) {
38
+ modal.dismiss();
39
+ }
40
+ }
41
+ findOptionFromEvent(ev) {
42
+ const { options } = this;
43
+ return options.find((o) => o.value === ev.target.value);
44
+ }
45
+ getValues(ev) {
46
+ const { multiple, options } = this;
47
+ if (multiple) {
48
+ // this is a modal with checkboxes (multiple value select)
49
+ // return an array of all the checked values
50
+ return options.filter((o) => o.checked).map((o) => o.value);
51
+ }
52
+ // this is a modal with radio buttons (single value select)
53
+ // return the value that was clicked, otherwise undefined
54
+ const option = ev ? this.findOptionFromEvent(ev) : null;
55
+ return option ? option.value : undefined;
56
+ }
57
+ callOptionHandler(ev) {
58
+ const option = this.findOptionFromEvent(ev);
59
+ const values = this.getValues(ev);
60
+ if (option === null || option === void 0 ? void 0 : option.handler) {
61
+ overlays.safeCall(option.handler, values);
62
+ }
63
+ }
64
+ setChecked(ev) {
65
+ const { multiple } = this;
66
+ const option = this.findOptionFromEvent(ev);
67
+ // this is a modal with checkboxes (multiple value select)
68
+ // we need to set the checked value for this option
69
+ if (multiple && option) {
70
+ option.checked = ev.detail.checked;
71
+ }
72
+ }
73
+ renderRadioOptions() {
74
+ const checked = this.options.filter((o) => o.checked).map((o) => o.value)[0];
75
+ return (index.h("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, this.options.map((option) => (index.h("ion-item", { class: Object.assign({
76
+ // TODO FW-4784
77
+ 'item-radio-checked': option.value === checked
78
+ }, theme.getClassMap(option.cssClass)) }, index.h("ion-radio", { value: option.value, disabled: option.disabled, justify: "start", labelPlacement: "end", onClick: () => this.closeModal(), onKeyUp: (ev) => {
79
+ if (ev.key === ' ') {
80
+ /**
81
+ * Selecting a radio option with keyboard navigation,
82
+ * either through the Enter or Space keys, should
83
+ * dismiss the modal.
84
+ */
85
+ this.closeModal();
86
+ }
87
+ } }, option.text))))));
88
+ }
89
+ renderCheckboxOptions() {
90
+ return this.options.map((option) => (index.h("ion-item", { class: Object.assign({
91
+ // TODO FW-4784
92
+ 'item-checkbox-checked': option.checked
93
+ }, theme.getClassMap(option.cssClass)) }, index.h("ion-checkbox", { value: option.value, disabled: option.disabled, checked: option.checked, justify: "start", labelPlacement: "end", onIonChange: (ev) => {
94
+ this.setChecked(ev);
95
+ this.callOptionHandler(ev);
96
+ // TODO FW-4784
97
+ index.forceUpdate(this);
98
+ } }, option.text))));
99
+ }
100
+ render() {
101
+ return (index.h(index.Host, { key: 'f4b92f4fc3d646f9a327e43a9622abaf69659c28', class: ionicGlobal.getIonMode(this) }, index.h("ion-header", { key: '11232ef496e7abd69e55cef988963a4869a7b01e' }, index.h("ion-toolbar", { key: 'e7c41878691a504d44c658db02807867df542588' }, this.header !== undefined && index.h("ion-title", { key: 'fcf9d33e0f3e0076ff14805de68848f9ef199cca' }, this.header), index.h("ion-buttons", { key: '748a967ae0ce68bc2fd018a6b9ebe0e4b810f6ac', slot: "end" }, index.h("ion-button", { key: 'f5e60791870b5085a31b7af70ed4bb3fb83eb185', onClick: () => this.closeModal() }, "Close")))), index.h("ion-content", { key: '159797957b6f788a9b393d91864c18db34481c68' }, index.h("ion-list", { key: '4124554fe8b2411637cbf02f08e50e0d8f804175' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
102
+ }
103
+ get el() { return index.getElement(this); }
104
+ };
105
+ SelectModal.style = {
106
+ ionic: IonSelectModalIonicStyle0,
107
+ ios: IonSelectModalIosStyle0,
108
+ md: IonSelectModalMdStyle0
109
+ };
110
+
111
+ exports.ion_select_modal = SelectModal;
@@ -9,7 +9,7 @@ const index = require('./index-73f75efb.js');
9
9
  const notchController = require('./notch-controller-d69150f5.js');
10
10
  const compareWithUtils = require('./compare-with-utils-df1001d7.js');
11
11
  const helpers = require('./helpers-afaa9001.js');
12
- const overlays = require('./overlays-ba0f6986.js');
12
+ const overlays = require('./overlays-aa669eb8.js');
13
13
  const dir = require('./dir-94c21456.js');
14
14
  const theme = require('./theme-d1c573d2.js');
15
15
  const watchOptions = require('./watch-options-f5f3e158.js');
@@ -170,13 +170,12 @@ const Select = class {
170
170
  this.setFocus();
171
171
  });
172
172
  await overlay.present();
173
- // focus selected option for popovers
174
- if (this.interface === 'popover') {
175
- const indexOfSelected = this.childOpts.map((o) => o.value).indexOf(this.value);
173
+ // focus selected option for popovers and modals
174
+ if (this.interface === 'popover' || this.interface === 'modal') {
175
+ const indexOfSelected = this.childOpts.findIndex((o) => o.value === this.value);
176
176
  if (indexOfSelected > -1) {
177
177
  const selectedItem = overlay.querySelector(`.select-interface-option:nth-child(${indexOfSelected + 1})`);
178
178
  if (selectedItem) {
179
- helpers.focusVisibleElement(selectedItem);
180
179
  /**
181
180
  * Browsers such as Firefox do not
182
181
  * correctly delegate focus when manually
@@ -190,8 +189,11 @@ const Select = class {
190
189
  */
191
190
  const interactiveEl = selectedItem.querySelector('ion-radio, ion-checkbox');
192
191
  if (interactiveEl) {
193
- interactiveEl.focus();
192
+ // Needs to be called before `focusVisibleElement` to prevent issue with focus event bubbling
193
+ // and removing `ion-focused` style
194
+ interactiveEl.setFocus();
194
195
  }
196
+ helpers.focusVisibleElement(selectedItem);
195
197
  }
196
198
  }
197
199
  else {
@@ -200,11 +202,14 @@ const Select = class {
200
202
  */
201
203
  const firstEnabledOption = overlay.querySelector('ion-radio:not(.radio-disabled), ion-checkbox:not(.checkbox-disabled)');
202
204
  if (firstEnabledOption) {
203
- helpers.focusVisibleElement(firstEnabledOption.closest('ion-item'));
204
205
  /**
205
206
  * Focus the option for the same reason as we do above.
207
+ *
208
+ * Needs to be called before `focusVisibleElement` to prevent issue with focus event bubbling
209
+ * and removing `ion-focused` style
206
210
  */
207
- firstEnabledOption.focus();
211
+ firstEnabledOption.setFocus();
212
+ helpers.focusVisibleElement(firstEnabledOption.closest('ion-item'));
208
213
  }
209
214
  }
210
215
  }
@@ -226,6 +231,9 @@ const Select = class {
226
231
  if (selectInterface === 'popover') {
227
232
  return this.openPopover(ev);
228
233
  }
234
+ if (selectInterface === 'modal') {
235
+ return this.openModal();
236
+ }
229
237
  return this.openAlert();
230
238
  }
231
239
  updateOverlayOptions() {
@@ -242,7 +250,13 @@ const Select = class {
242
250
  case 'popover':
243
251
  const popover = overlay.querySelector('ion-select-popover');
244
252
  if (popover) {
245
- popover.options = this.createPopoverOptions(childOpts, value);
253
+ popover.options = this.createOverlaySelectOptions(childOpts, value);
254
+ }
255
+ break;
256
+ case 'modal':
257
+ const modal = overlay.querySelector('ion-select-modal');
258
+ if (modal) {
259
+ modal.options = this.createOverlaySelectOptions(childOpts, value);
246
260
  }
247
261
  break;
248
262
  case 'alert':
@@ -297,7 +311,7 @@ const Select = class {
297
311
  });
298
312
  return alertInputs;
299
313
  }
300
- createPopoverOptions(data, selectValue) {
314
+ createOverlaySelectOptions(data, selectValue) {
301
315
  const popoverOptions = data.map((option) => {
302
316
  const value = getOptionValue(option);
303
317
  // Remove hydrated before copying over classes
@@ -357,7 +371,7 @@ const Select = class {
357
371
  message: interfaceOptions.message,
358
372
  multiple,
359
373
  value,
360
- options: this.createPopoverOptions(this.childOpts, value),
374
+ options: this.createOverlaySelectOptions(this.childOpts, value),
361
375
  } });
362
376
  return overlays.popoverController.create(popoverOpts);
363
377
  }
@@ -392,6 +406,17 @@ const Select = class {
392
406
  ] });
393
407
  return overlays.alertController.create(alertOpts);
394
408
  }
409
+ openModal() {
410
+ const { multiple, value, interfaceOptions } = this;
411
+ const mode = ionicGlobal.getIonMode(this);
412
+ const modalOpts = Object.assign(Object.assign({}, interfaceOptions), { mode, cssClass: ['select-modal', interfaceOptions.cssClass], component: 'ion-select-modal', componentProps: {
413
+ header: interfaceOptions.header,
414
+ multiple,
415
+ value,
416
+ options: this.createOverlaySelectOptions(this.childOpts, value),
417
+ } });
418
+ return overlays.modalController.create(modalOpts);
419
+ }
395
420
  /**
396
421
  * Close the select interface.
397
422
  */
@@ -599,7 +624,7 @@ const Select = class {
599
624
  * TODO(FW-5592): Remove hasStartEndSlots condition
600
625
  */
601
626
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
602
- return (index.h(index.Host, { key: '73c571c1f8468e1c3f4fe02fbbb33ba9cbc8e989', onClick: this.onClick, class: theme.createColorClasses(this.color, {
627
+ return (index.h(index.Host, { key: '144dfa5c49549a74fe516c65b9b8104a477ac789', onClick: this.onClick, class: theme.createColorClasses(this.color, {
603
628
  [mode]: true,
604
629
  'in-item': inItem,
605
630
  'in-item-color': theme.hostContext('ion-item.ion-color', el),
@@ -615,7 +640,7 @@ const Select = class {
615
640
  [`select-justify-${justify}`]: justifyEnabled,
616
641
  [`select-shape-${shape}`]: shape !== undefined,
617
642
  [`select-label-placement-${labelPlacement}`]: true,
618
- }) }, index.h("label", { key: '2b08538cba0b9f747541d57ac18fb6a1ea658878', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), index.h("div", { key: '33f54373bcb02c72a9d0af2efffebc27ee2c69fe', class: "select-wrapper-inner" }, index.h("slot", { key: 'd1c93aec99dc1cd6410f93309cef615fe04b541b', name: "start" }), index.h("div", { key: '493d1a3cad9565516f855bef75685b020785ffd3', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), index.h("slot", { key: '353a3ee5635f8a8f3be411efd6caef6c2ad74a89', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && index.h("div", { key: 'fd5f85555db02affe954f9f4f2876ac8fe676234', class: "select-highlight" }))));
643
+ }) }, index.h("label", { key: '0edcfcbac575a9dccc77991531b6980d1caebf42', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), index.h("div", { key: '348151d90cb093f5d21c7d4a834264ac4a312c40', class: "select-wrapper-inner" }, index.h("slot", { key: '8b7708c7f81217435c58276da0c08bba766d9500', name: "start" }), index.h("div", { key: '10c520a335da0a0d1cf40f9365597beb244d3b48', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), index.h("slot", { key: '0f15c40a5495e98e29d2a21ba21e0bc6f1c0125a', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && index.h("div", { key: 'c87faad2e5ebf7f9453397d7ede43abd64d21294', class: "select-highlight" }))));
619
644
  }
620
645
  get el() { return index.getElement(this); }
621
646
  static get watchers() { return {
@@ -676,7 +701,7 @@ const SelectOption = class {
676
701
  this.value = undefined;
677
702
  }
678
703
  render() {
679
- return index.h(index.Host, { key: 'ba5a9c695c53fe0802af11a49f4305a9b8f71773', role: "option", id: this.inputId, class: ionicGlobal.getIonMode(this) });
704
+ return index.h(index.Host, { key: '2e6fa159464f04f6d8720f960141f67918bc7534', role: "option", id: this.inputId, class: ionicGlobal.getIonMode(this) });
680
705
  }
681
706
  get el() { return index.getElement(this); }
682
707
  };
@@ -784,7 +809,7 @@ const SelectPopover = class {
784
809
  render() {
785
810
  const { header, message, options, subHeader } = this;
786
811
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
787
- return (index.h(index.Host, { key: '302553a2eec4d1442751b8af28b7c9bd3487fd5d', class: ionicGlobal.getIonMode(this) }, index.h("ion-list", { key: '39ae8579e6fe3bae2c7504147268ad5c82fd27e6' }, header !== undefined && index.h("ion-list-header", { key: 'e0e6686380d188f46c593e1bb25287dcf08c75c2' }, header), hasSubHeaderOrMessage && (index.h("ion-item", { key: '8a2d8652db269593c0ba7d767277e12c2b06144d' }, index.h("ion-label", { key: 'a30cc0ecf95d5bdd6421ee1683922c1b853e98ea', class: "ion-text-wrap" }, subHeader !== undefined && index.h("h3", { key: 'c298459ca450123808a08d65660825b2c26d00e5' }, subHeader), message !== undefined && index.h("p", { key: 'ed895fbaec020e809021138401341b6fd7675035' }, message)))), this.renderOptions(options))));
812
+ return (index.h(index.Host, { key: 'dd0990db4de4f175b176b27f35501dd1604ca400', class: ionicGlobal.getIonMode(this) }, index.h("ion-list", { key: 'cea2bc3687b8b2490a2a9ff4a1e16cd34169558e' }, header !== undefined && index.h("ion-list-header", { key: '194aebb53453c43f913daae45a1a3066a1708c4c' }, header), hasSubHeaderOrMessage && (index.h("ion-item", { key: 'b706b07a3c63ad8104d2db413e210c735ec1bec9' }, index.h("ion-label", { key: '6e52b5b4cf6b04ff3dd5671d64264233de4190d5', class: "ion-text-wrap" }, subHeader !== undefined && index.h("h3", { key: '6ef4440d17f5db8c96c63b9aa5073f4fe4b8ad62' }, subHeader), message !== undefined && index.h("p", { key: 'c7b3b76c30ecd606c0e985a0258c13d3a75756e7' }, message)))), this.renderOptions(options))));
788
813
  }
789
814
  get el() { return index.getElement(this); }
790
815
  };
@@ -47,7 +47,7 @@ const Spinner = class {
47
47
  svgs.push(buildLine(spinner, duration, i, spinner.lines));
48
48
  }
49
49
  }
50
- return (index.h(index.Host, { key: '50cbaed55eeab15292447d106a80b93db4cb40de', class: theme.createColorClasses(self.color, {
50
+ return (index.h(index.Host, { key: '9d30ee9f5aa0dd0e220da07e75d05b8b2435224d', class: theme.createColorClasses(self.color, {
51
51
  [mode]: true,
52
52
  [`spinner-${spinnerName}`]: true,
53
53
  'spinner-paused': self.paused || ionicGlobal.config.getBoolean('_testing'),
@@ -125,12 +125,12 @@ const SplitPane = class {
125
125
  }
126
126
  render() {
127
127
  const mode = ionicGlobal.getIonMode(this);
128
- return (index.h(index.Host, { key: 'd54c356cd4bff7e55325160882dea8249f47f388', class: {
128
+ return (index.h(index.Host, { key: '1ca0b0299d03605bb358112ca56cbafbe58f00f5', class: {
129
129
  [mode]: true,
130
130
  // Used internally for styling
131
131
  [`split-pane-${mode}`]: true,
132
132
  'split-pane-visible': this.visible,
133
- } }, index.h("slot", { key: 'af62690d0fd686cfbd29d888c79eda9001f13e2f' })));
133
+ } }, index.h("slot", { key: 'abe231361727ae7fc63edd592a4490caac1909fb' })));
134
134
  }
135
135
  get el() { return index.getElement(this); }
136
136
  static get watchers() { return {
@@ -66,11 +66,11 @@ const TabBar = class {
66
66
  const { color, translucent, keyboardVisible } = this;
67
67
  const mode = ionicGlobal.getIonMode(this);
68
68
  const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
69
- return (index.h(index.Host, { key: '3a8595dd83f89e8319471a7a7f9f64b2565b384c', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: theme.createColorClasses(color, {
69
+ return (index.h(index.Host, { key: 'a87fd2ea5df053705a37ea7ffec043e75c4a9907', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: theme.createColorClasses(color, {
70
70
  [mode]: true,
71
71
  'tab-bar-translucent': translucent,
72
72
  'tab-bar-hidden': shouldHide,
73
- }) }, index.h("slot", { key: '8b65eceb922f6abfa15f41046261586fb94b981f' })));
73
+ }) }, index.h("slot", { key: '81a6223299b6cab29d7ddced590e9152e2b3ded0' })));
74
74
  }
75
75
  get el() { return index.getElement(this); }
76
76
  static get watchers() { return {
@@ -150,7 +150,7 @@ const TabButton = class {
150
150
  rel,
151
151
  target,
152
152
  };
153
- return (index.h(index.Host, { key: '4b528ce31f67e10ad849e0c99bd034bba675c227', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
153
+ return (index.h(index.Host, { key: '5976c45943ea7ea8e7c1a85fc9996de421439f08', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
154
154
  [mode]: true,
155
155
  'tab-selected': selected,
156
156
  'tab-disabled': disabled,
@@ -162,7 +162,7 @@ const TabButton = class {
162
162
  'ion-activatable': true,
163
163
  'ion-selectable': true,
164
164
  'ion-focusable': true,
165
- } }, index.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), index.h("span", { key: '2c628e8f1ebc129f84876c01530468cb97d8bf3a', class: "button-inner" }, index.h("slot", { key: '8052a171d197a7de1a7eb12b091c35f73ae1ee21' })), mode === 'md' && index.h("ion-ripple-effect", { key: '4186bdb5ed045ec16f495a14fa30ac864c576227', type: "unbounded" }))));
165
+ } }, index.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), index.h("span", { key: '4381eafcb27e8c7bb0d86d4f115ceb0caf03b9b4', class: "button-inner" }, index.h("slot", { key: '1981135f6fbb88376c1bd923c55c70fe8b5c5159' })), mode === 'md' && index.h("ion-ripple-effect", { key: '0509bc7155d055d1ed710600e9cf4df135881491', type: "unbounded" }))));
166
166
  }
167
167
  get el() { return index.getElement(this); }
168
168
  };
@@ -50,10 +50,10 @@ const Tab = class {
50
50
  }
51
51
  render() {
52
52
  const { tab, active, component } = this;
53
- return (index.h(index.Host, { key: '46d5498418f5379861c3d7465e8021dec45f1200', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
53
+ return (index.h(index.Host, { key: 'cb75d0877979b3b8df8f7e1952bfa9677da1eaa5', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
54
54
  'ion-page': component === undefined,
55
55
  'tab-hidden': !active,
56
- } }, index.h("slot", { key: 'b45045dccb87dfe75e3f5a5a474bb48b6c98e922' })));
56
+ } }, index.h("slot", { key: '37fbb7b7a6b03eb93b1dacd2dc1025b78eb2aa6b' })));
57
57
  }
58
58
  get el() { return index.getElement(this); }
59
59
  static get watchers() { return {
@@ -207,7 +207,7 @@ const Tabs = class {
207
207
  return Array.from(this.el.querySelectorAll('ion-tab'));
208
208
  }
209
209
  render() {
210
- return (index.h(index.Host, { key: 'eb094c9bd15b7777c53bd0bd6d225784fa472849', onIonTabButtonClick: this.onTabClicked }, index.h("slot", { key: 'a516ca6915bf26e77eeeb0ff684c4fcc7d4420a7', name: "top" }), index.h("div", { key: 'dd2a32a072d77afe216abc4958c1d686405fb780', class: "tabs-inner" }, index.h("slot", { key: '222c20ba862068f5c78e7bbef4fa213499fb2fa5' })), index.h("slot", { key: '3e76dcb1b21873aa137d095c56131514054ead3a', name: "bottom" })));
210
+ return (index.h(index.Host, { key: 'e01ccf6bfaccad094515be50e407399c733fc226', onIonTabButtonClick: this.onTabClicked }, index.h("slot", { key: '38d2d01dbfd8a08f01e6f0e27274b21d75424e37', name: "top" }), index.h("div", { key: '7e894f0f423e2d43e1c68daff5f9f6c442fad237', class: "tabs-inner" }, index.h("slot", { key: 'df16be529a0370a26d0adf850530b31607507c23' })), index.h("slot", { key: '44642e1cb24c3281c43db75fd69a32fe0defe40a', name: "bottom" })));
211
211
  }
212
212
  get el() { return index.getElement(this); }
213
213
  };
@@ -19,9 +19,9 @@ const Text = class {
19
19
  }
20
20
  render() {
21
21
  const mode = ionicGlobal.getIonMode(this);
22
- return (index.h(index.Host, { key: '4b76333b1ea5cab134b9dc1f5670c0d5a253fc32', class: theme.createColorClasses(this.color, {
22
+ return (index.h(index.Host, { key: 'e134d70c04344b708a2ecf6253722781ad2ca826', class: theme.createColorClasses(this.color, {
23
23
  [mode]: true,
24
- }) }, index.h("slot", { key: '3dee5f16bc58b3d92547d910bd4f441a00ce2039' })));
24
+ }) }, index.h("slot", { key: 'da79c760f7ebbcd007ce110439f05a62cb22eac8' })));
25
25
  }
26
26
  };
27
27
  Text.style = IonTextStyle0;