voyager-ionic-core 8.3.4 → 8.4.0

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 (496) 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 +356 -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 +1 -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 +19 -19
  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 +2 -2
  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/picker-column-option.js +2 -2
  88. package/components/picker-column.js +3 -3
  89. package/components/picker-column2.js +2 -2
  90. package/components/picker.js +2 -2
  91. package/components/popover.js +2 -2
  92. package/components/radio-group.js +5 -3
  93. package/components/radio.js +7 -5
  94. package/components/ripple-effect.js +1 -1
  95. package/components/select-modal.js +197 -0
  96. package/components/select-popover.js +1 -1
  97. package/components/spinner.js +1 -1
  98. package/components/title.js +75 -0
  99. package/components/toolbar.js +93 -0
  100. package/dist/cjs/{index-9cd00dc3.js → index-8e789962.js} +2 -2
  101. package/dist/cjs/index.cjs.js +1 -1
  102. package/dist/cjs/ion-alert.cjs.entry.js +7 -5
  103. package/dist/cjs/ion-app_8.cjs.entry.js +15 -15
  104. package/dist/cjs/ion-avatar_3.cjs.entry.js +4 -4
  105. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  106. package/dist/cjs/ion-backdrop.cjs.entry.js +1 -1
  107. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +6 -6
  108. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  109. package/dist/cjs/ion-card_5.cjs.entry.js +8 -8
  110. package/dist/cjs/ion-checkbox.cjs.entry.js +5 -4
  111. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  112. package/dist/cjs/ion-col_3.cjs.entry.js +5 -5
  113. package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
  114. package/dist/cjs/ion-datetime_3.cjs.entry.js +6 -6
  115. package/dist/cjs/ion-fab_3.cjs.entry.js +6 -6
  116. package/dist/cjs/ion-img.cjs.entry.js +1 -1
  117. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -3
  118. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +3 -3
  119. package/dist/cjs/ion-input.cjs.entry.js +3 -3
  120. package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
  121. package/dist/cjs/ion-item_8.cjs.entry.js +12 -12
  122. package/dist/cjs/ion-loading.cjs.entry.js +2 -2
  123. package/dist/cjs/ion-menu_3.cjs.entry.js +23 -23
  124. package/dist/cjs/ion-modal.cjs.entry.js +4 -4
  125. package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
  126. package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
  127. package/dist/cjs/ion-picker-column.cjs.entry.js +3 -3
  128. package/dist/cjs/ion-picker.cjs.entry.js +2 -2
  129. package/dist/cjs/ion-popover.cjs.entry.js +2 -2
  130. package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
  131. package/dist/cjs/ion-radio_2.cjs.entry.js +12 -8
  132. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  133. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  134. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  135. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  136. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  137. package/dist/cjs/ion-searchbar.cjs.entry.js +4 -4
  138. package/dist/cjs/ion-segment-content.cjs.entry.js +23 -0
  139. package/dist/cjs/ion-segment-view.cjs.entry.js +122 -0
  140. package/dist/cjs/ion-segment_2.cjs.entry.js +132 -19
  141. package/dist/cjs/ion-select-modal.cjs.entry.js +111 -0
  142. package/dist/cjs/ion-select_3.cjs.entry.js +39 -14
  143. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  144. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  145. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  146. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  147. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  148. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  149. package/dist/cjs/ion-toast.cjs.entry.js +2 -2
  150. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  151. package/dist/cjs/ionic.cjs.js +1 -1
  152. package/dist/cjs/loader.cjs.js +1 -1
  153. package/dist/collection/collection-manifest.json +3 -0
  154. package/dist/collection/components/alert/alert.js +7 -5
  155. package/dist/collection/components/app/app.js +1 -1
  156. package/dist/collection/components/avatar/avatar.js +1 -1
  157. package/dist/collection/components/back-button/back-button.js +2 -2
  158. package/dist/collection/components/backdrop/backdrop.js +1 -1
  159. package/dist/collection/components/badge/badge.js +2 -2
  160. package/dist/collection/components/breadcrumb/breadcrumb.js +4 -4
  161. package/dist/collection/components/breadcrumbs/breadcrumbs.js +2 -2
  162. package/dist/collection/components/button/button.js +2 -2
  163. package/dist/collection/components/buttons/buttons.js +2 -2
  164. package/dist/collection/components/card/card.js +1 -1
  165. package/dist/collection/components/card-content/card-content.js +1 -1
  166. package/dist/collection/components/card-header/card-header.js +2 -2
  167. package/dist/collection/components/card-subtitle/card-subtitle.js +2 -2
  168. package/dist/collection/components/card-title/card-title.js +2 -2
  169. package/dist/collection/components/checkbox/checkbox.js +29 -4
  170. package/dist/collection/components/chip/chip.js +2 -2
  171. package/dist/collection/components/col/col.js +2 -2
  172. package/dist/collection/components/content/content.js +3 -3
  173. package/dist/collection/components/datetime/datetime.js +2 -2
  174. package/dist/collection/components/datetime-button/datetime-button.js +2 -2
  175. package/dist/collection/components/fab/fab.js +2 -2
  176. package/dist/collection/components/fab-button/fab-button.js +2 -2
  177. package/dist/collection/components/fab-list/fab-list.js +2 -2
  178. package/dist/collection/components/footer/footer.js +2 -2
  179. package/dist/collection/components/grid/grid.js +2 -2
  180. package/dist/collection/components/header/header.js +2 -2
  181. package/dist/collection/components/img/img.js +1 -1
  182. package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
  183. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
  184. package/dist/collection/components/input/input.js +3 -3
  185. package/dist/collection/components/input-password-toggle/input-password-toggle.js +3 -3
  186. package/dist/collection/components/item-divider/item-divider.js +2 -2
  187. package/dist/collection/components/item-group/item-group.js +1 -1
  188. package/dist/collection/components/item-option/item-option.js +2 -2
  189. package/dist/collection/components/item-options/item-options.js +1 -1
  190. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  191. package/dist/collection/components/label/label.js +2 -2
  192. package/dist/collection/components/list/list.js +1 -1
  193. package/dist/collection/components/list-header/list-header.js +2 -2
  194. package/dist/collection/components/loading/loading.js +2 -2
  195. package/dist/collection/components/menu/menu.js +47 -27
  196. package/dist/collection/components/menu-button/menu-button.js +2 -2
  197. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  198. package/dist/collection/components/modal/modal.js +4 -4
  199. package/dist/collection/components/nav/nav.js +1 -1
  200. package/dist/collection/components/nav-link/nav-link.js +1 -1
  201. package/dist/collection/components/note/note.js +2 -2
  202. package/dist/collection/components/picker/picker.js +2 -2
  203. package/dist/collection/components/picker-column/picker-column.js +3 -3
  204. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
  205. package/dist/collection/components/picker-legacy/picker.js +2 -2
  206. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
  207. package/dist/collection/components/popover/popover.js +2 -2
  208. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  209. package/dist/collection/components/radio/radio.js +9 -7
  210. package/dist/collection/components/radio-group/radio-group.js +5 -3
  211. package/dist/collection/components/range/range.js +3 -3
  212. package/dist/collection/components/refresher/refresher.js +1 -1
  213. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  214. package/dist/collection/components/reorder/reorder.js +1 -1
  215. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  216. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  217. package/dist/collection/components/router-link/router-link.js +2 -2
  218. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  219. package/dist/collection/components/row/row.js +1 -1
  220. package/dist/collection/components/searchbar/searchbar.js +4 -4
  221. package/dist/collection/components/segment/segment.js +115 -14
  222. package/dist/collection/components/segment-button/segment-button.js +40 -5
  223. package/dist/collection/components/segment-content/segment-content.css +6 -0
  224. package/dist/collection/components/segment-content/segment-content.js +21 -0
  225. package/dist/collection/components/segment-view/segment-view-interface.js +1 -0
  226. package/dist/collection/components/segment-view/segment-view.ios.css +83 -0
  227. package/dist/collection/components/segment-view/segment-view.js +227 -0
  228. package/dist/collection/components/segment-view/segment-view.md.css +83 -0
  229. package/dist/collection/components/select/select.js +61 -16
  230. package/dist/collection/components/select-modal/select-modal-interface.js +1 -0
  231. package/dist/collection/components/select-modal/select-modal.ios.css +3 -0
  232. package/dist/collection/components/select-modal/select-modal.js +159 -0
  233. package/dist/collection/components/select-modal/select-modal.md.css +110 -0
  234. package/dist/collection/components/select-modal/test/fixtures.js +48 -0
  235. package/dist/collection/components/select-option/select-option.js +1 -1
  236. package/dist/collection/components/select-popover/select-popover.js +1 -1
  237. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  238. package/dist/collection/components/spinner/spinner.js +1 -1
  239. package/dist/collection/components/split-pane/split-pane.js +2 -2
  240. package/dist/collection/components/tab/tab.js +2 -2
  241. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  242. package/dist/collection/components/tab-button/tab-button.js +2 -2
  243. package/dist/collection/components/tabs/tabs.js +1 -1
  244. package/dist/collection/components/text/text.js +2 -2
  245. package/dist/collection/components/textarea/textarea.js +2 -2
  246. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  247. package/dist/collection/components/title/title.js +2 -2
  248. package/dist/collection/components/toast/toast.js +2 -2
  249. package/dist/collection/components/toggle/toggle.js +3 -3
  250. package/dist/collection/components/toolbar/toolbar.js +2 -2
  251. package/dist/collection/utils/menu-controller/index.js +2 -2
  252. package/dist/docs.json +426 -29
  253. package/dist/esm/{index-fe1782b1.js → index-24b48b06.js} +2 -2
  254. package/dist/esm/index.js +1 -1
  255. package/dist/esm/ion-alert.entry.js +7 -5
  256. package/dist/esm/ion-app_8.entry.js +15 -15
  257. package/dist/esm/ion-avatar_3.entry.js +4 -4
  258. package/dist/esm/ion-back-button.entry.js +2 -2
  259. package/dist/esm/ion-backdrop.entry.js +1 -1
  260. package/dist/esm/ion-breadcrumb_2.entry.js +6 -6
  261. package/dist/esm/ion-button_2.entry.js +2 -2
  262. package/dist/esm/ion-card_5.entry.js +8 -8
  263. package/dist/esm/ion-checkbox.entry.js +5 -4
  264. package/dist/esm/ion-chip.entry.js +2 -2
  265. package/dist/esm/ion-col_3.entry.js +5 -5
  266. package/dist/esm/ion-datetime-button.entry.js +2 -2
  267. package/dist/esm/ion-datetime_3.entry.js +6 -6
  268. package/dist/esm/ion-fab_3.entry.js +6 -6
  269. package/dist/esm/ion-img.entry.js +1 -1
  270. package/dist/esm/ion-infinite-scroll_2.entry.js +3 -3
  271. package/dist/esm/ion-input-password-toggle.entry.js +3 -3
  272. package/dist/esm/ion-input.entry.js +3 -3
  273. package/dist/esm/ion-item-option_3.entry.js +4 -4
  274. package/dist/esm/ion-item_8.entry.js +12 -12
  275. package/dist/esm/ion-loading.entry.js +2 -2
  276. package/dist/esm/ion-menu_3.entry.js +24 -24
  277. package/dist/esm/ion-modal.entry.js +4 -4
  278. package/dist/esm/ion-nav_2.entry.js +2 -2
  279. package/dist/esm/ion-picker-column-option.entry.js +2 -2
  280. package/dist/esm/ion-picker-column.entry.js +3 -3
  281. package/dist/esm/ion-picker.entry.js +2 -2
  282. package/dist/esm/ion-popover.entry.js +2 -2
  283. package/dist/esm/ion-progress-bar.entry.js +1 -1
  284. package/dist/esm/ion-radio_2.entry.js +12 -8
  285. package/dist/esm/ion-range.entry.js +3 -3
  286. package/dist/esm/ion-refresher_2.entry.js +2 -2
  287. package/dist/esm/ion-reorder_2.entry.js +2 -2
  288. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  289. package/dist/esm/ion-route_4.entry.js +2 -2
  290. package/dist/esm/ion-searchbar.entry.js +4 -4
  291. package/dist/esm/ion-segment-content.entry.js +19 -0
  292. package/dist/esm/ion-segment-view.entry.js +118 -0
  293. package/dist/esm/ion-segment_2.entry.js +132 -19
  294. package/dist/esm/ion-select-modal.entry.js +107 -0
  295. package/dist/esm/ion-select_3.entry.js +40 -15
  296. package/dist/esm/ion-spinner.entry.js +1 -1
  297. package/dist/esm/ion-split-pane.entry.js +2 -2
  298. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  299. package/dist/esm/ion-tab_2.entry.js +3 -3
  300. package/dist/esm/ion-text.entry.js +2 -2
  301. package/dist/esm/ion-textarea.entry.js +2 -2
  302. package/dist/esm/ion-toast.entry.js +2 -2
  303. package/dist/esm/ion-toggle.entry.js +3 -3
  304. package/dist/esm/ionic.js +1 -1
  305. package/dist/esm/loader.js +1 -1
  306. package/dist/esm-es5/{index-fe1782b1.js → index-24b48b06.js} +1 -1
  307. package/dist/esm-es5/index.js +1 -1
  308. package/dist/esm-es5/ion-alert.entry.js +1 -1
  309. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  310. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  311. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  312. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  313. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  314. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  315. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  316. package/dist/esm-es5/ion-checkbox.entry.js +2 -2
  317. package/dist/esm-es5/ion-chip.entry.js +1 -1
  318. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  319. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  320. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  321. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  322. package/dist/esm-es5/ion-img.entry.js +1 -1
  323. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  324. package/dist/esm-es5/ion-input-password-toggle.entry.js +1 -1
  325. package/dist/esm-es5/ion-input.entry.js +1 -1
  326. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  327. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  328. package/dist/esm-es5/ion-loading.entry.js +1 -1
  329. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  330. package/dist/esm-es5/ion-modal.entry.js +1 -1
  331. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  332. package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
  333. package/dist/esm-es5/ion-picker-column.entry.js +1 -1
  334. package/dist/esm-es5/ion-picker.entry.js +1 -1
  335. package/dist/esm-es5/ion-popover.entry.js +1 -1
  336. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  337. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  338. package/dist/esm-es5/ion-range.entry.js +1 -1
  339. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  340. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  341. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  342. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  343. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  344. package/dist/esm-es5/ion-segment-content.entry.js +4 -0
  345. package/dist/esm-es5/ion-segment-view.entry.js +4 -0
  346. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  347. package/dist/esm-es5/ion-select-modal.entry.js +4 -0
  348. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  349. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  350. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  351. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  352. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  353. package/dist/esm-es5/ion-text.entry.js +1 -1
  354. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  355. package/dist/esm-es5/ion-toast.entry.js +1 -1
  356. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  357. package/dist/esm-es5/ionic.js +1 -1
  358. package/dist/esm-es5/loader.js +1 -1
  359. package/dist/html.html-data.json +65 -2
  360. package/dist/ionic/index.esm.js +1 -1
  361. package/dist/ionic/ionic.esm.js +1 -1
  362. package/dist/ionic/{p-313ccc01.system.entry.js → p-01186920.system.entry.js} +1 -1
  363. package/dist/ionic/{p-0790b342.system.entry.js → p-0161caf9.system.entry.js} +1 -1
  364. package/dist/ionic/p-0437ace4.system.entry.js +4 -0
  365. package/dist/ionic/{p-e3e1e3de.entry.js → p-081a4ce4.entry.js} +1 -1
  366. package/dist/ionic/p-09cf2394.entry.js +4 -0
  367. package/dist/ionic/p-14be4015.entry.js +4 -0
  368. package/dist/ionic/p-15e76dd1.entry.js +4 -0
  369. package/dist/ionic/{p-003eecb9.entry.js → p-16188af7.entry.js} +1 -1
  370. package/dist/ionic/p-16799667.system.entry.js +4 -0
  371. package/dist/ionic/p-16bfb979.system.entry.js +4 -0
  372. package/dist/ionic/{p-b54fc1ae.entry.js → p-19ec4f42.entry.js} +1 -1
  373. package/dist/ionic/p-1b7605a7.system.entry.js +4 -0
  374. package/dist/ionic/p-1c1b8e1f.entry.js +4 -0
  375. package/dist/ionic/{p-8b6232a6.system.entry.js → p-1e010627.system.entry.js} +2 -2
  376. package/dist/ionic/{p-d754c709.system.entry.js → p-1e41f2aa.system.entry.js} +1 -1
  377. package/dist/ionic/{p-cdb11938.system.entry.js → p-1e67b266.system.entry.js} +1 -1
  378. package/dist/ionic/{p-bd25d639.system.entry.js → p-1ebd1e27.system.entry.js} +1 -1
  379. package/dist/ionic/{p-836d39d4.system.entry.js → p-2172893e.system.entry.js} +1 -1
  380. package/dist/ionic/{p-4a0a4204.system.entry.js → p-2507278c.system.entry.js} +1 -1
  381. package/dist/ionic/{p-75c0dc65.system.entry.js → p-2799c6d3.system.entry.js} +1 -1
  382. package/dist/ionic/{p-a879ecb7.system.entry.js → p-2abae1cc.system.entry.js} +1 -1
  383. package/dist/ionic/{p-293ed6ac.system.entry.js → p-2b838f86.system.entry.js} +1 -1
  384. package/dist/ionic/{p-4a82bd1c.system.entry.js → p-2e46590d.system.entry.js} +1 -1
  385. package/dist/ionic/{p-148b8abb.entry.js → p-2fc0dafe.entry.js} +1 -1
  386. package/dist/ionic/p-322c5fb4.system.js +2 -2
  387. package/dist/ionic/{p-60cc7986.entry.js → p-33a8a71b.entry.js} +1 -1
  388. package/dist/ionic/{p-18105026.system.entry.js → p-37cb43bd.system.entry.js} +1 -1
  389. package/dist/ionic/{p-ad9b5007.system.entry.js → p-3b419d79.system.entry.js} +1 -1
  390. package/dist/ionic/p-424eb140.system.entry.js +4 -0
  391. package/dist/ionic/{p-b7657e8d.entry.js → p-4439fc2a.entry.js} +1 -1
  392. package/dist/ionic/{p-be71fe0f.system.entry.js → p-4561cd09.system.entry.js} +1 -1
  393. package/dist/ionic/{p-c34659b9.entry.js → p-45693d7e.entry.js} +1 -1
  394. package/dist/ionic/p-49a0e74c.entry.js +4 -0
  395. package/dist/ionic/{p-6d50faff.entry.js → p-4a274c89.entry.js} +1 -1
  396. package/dist/ionic/{p-41c89b8d.entry.js → p-4b000207.entry.js} +1 -1
  397. package/dist/ionic/{p-fd0cb4ef.entry.js → p-4ec778aa.entry.js} +1 -1
  398. package/dist/ionic/{p-f559ac5b.entry.js → p-51796b2d.entry.js} +1 -1
  399. package/dist/ionic/{p-9ece8dcf.entry.js → p-52d7a191.entry.js} +1 -1
  400. package/dist/ionic/{p-79e7be3a.system.entry.js → p-5393e8bb.system.entry.js} +1 -1
  401. package/dist/ionic/{p-ce705aac.system.entry.js → p-567de071.system.entry.js} +1 -1
  402. package/dist/ionic/{p-95823c62.system.entry.js → p-5823babc.system.entry.js} +2 -2
  403. package/dist/ionic/{p-baffaf8d.system.entry.js → p-58d5df0c.system.entry.js} +1 -1
  404. package/dist/ionic/{p-521eca2e.entry.js → p-5ab1b709.entry.js} +1 -1
  405. package/dist/ionic/{p-c71f301f.system.entry.js → p-5b5c1505.system.entry.js} +1 -1
  406. package/dist/ionic/{p-8d44cf1f.entry.js → p-5b932840.entry.js} +1 -1
  407. package/dist/ionic/{p-f0ab13a8.system.entry.js → p-5bd39e5e.system.entry.js} +2 -2
  408. package/dist/ionic/{p-5800e441.entry.js → p-5f79d8c5.entry.js} +1 -1
  409. package/dist/ionic/{p-53add985.system.entry.js → p-5fce0c0b.system.entry.js} +1 -1
  410. package/dist/ionic/{p-233e6c93.entry.js → p-62af944c.entry.js} +1 -1
  411. package/dist/ionic/{p-00b01a55.system.entry.js → p-63b0abde.system.entry.js} +1 -1
  412. package/dist/ionic/p-6734db42.system.entry.js +4 -0
  413. package/dist/ionic/p-69666e8a.system.entry.js +4 -0
  414. package/dist/ionic/{p-5e842258.entry.js → p-6d32975a.entry.js} +1 -1
  415. package/dist/ionic/p-73dc4950.entry.js +4 -0
  416. package/dist/ionic/{p-fcd71204.system.entry.js → p-7458862e.system.entry.js} +1 -1
  417. package/dist/ionic/{p-a3711608.system.entry.js → p-797eeea8.system.entry.js} +1 -1
  418. package/dist/ionic/{p-f8c8b9ba.entry.js → p-7b9a2b23.entry.js} +1 -1
  419. package/dist/ionic/{p-6817cf42.system.entry.js → p-7ed1657c.system.entry.js} +1 -1
  420. package/dist/ionic/{p-79b12fda.system.js → p-8f05ba3b.system.js} +1 -1
  421. package/dist/ionic/p-908d6080.entry.js +4 -0
  422. package/dist/ionic/{p-af999a31.entry.js → p-937a7e21.entry.js} +1 -1
  423. package/dist/ionic/{p-4c8fceb0.entry.js → p-95775830.entry.js} +1 -1
  424. package/dist/ionic/{p-973f0b15.system.entry.js → p-98231c01.system.entry.js} +1 -1
  425. package/dist/ionic/{p-25928b83.system.entry.js → p-985a7e17.system.entry.js} +1 -1
  426. package/dist/ionic/{p-e3a5da9d.entry.js → p-98ff6b32.entry.js} +1 -1
  427. package/dist/ionic/{p-6e85e450.entry.js → p-9df2c6fb.entry.js} +1 -1
  428. package/dist/ionic/{p-7251fed5.entry.js → p-9ee1e8a6.entry.js} +1 -1
  429. package/dist/ionic/{p-da263d8e.entry.js → p-9fa07aec.entry.js} +1 -1
  430. package/dist/ionic/{p-d58f21d2.entry.js → p-a1051806.entry.js} +1 -1
  431. package/dist/ionic/{p-6ceb04b5.entry.js → p-a1b9a163.entry.js} +1 -1
  432. package/dist/ionic/p-a34b4d94.entry.js +4 -0
  433. package/dist/ionic/{p-8836d0eb.system.entry.js → p-a49378bb.system.entry.js} +1 -1
  434. package/dist/ionic/{p-6b8893dd.entry.js → p-a61cba41.entry.js} +1 -1
  435. package/dist/ionic/p-adbc4bdf.entry.js +4 -0
  436. package/dist/ionic/{p-49bc6544.entry.js → p-afecb188.entry.js} +1 -1
  437. package/dist/ionic/{p-be715dd3.system.entry.js → p-b335ffed.system.entry.js} +1 -1
  438. package/dist/ionic/{p-e3f13b08.js → p-b82d4cab.js} +1 -1
  439. package/dist/ionic/{p-68c4df55.entry.js → p-b9d7015f.entry.js} +1 -1
  440. package/dist/ionic/{p-7243df6f.entry.js → p-bb0db172.entry.js} +1 -1
  441. package/dist/ionic/{p-df83e308.system.entry.js → p-bc36ad98.system.entry.js} +1 -1
  442. package/dist/ionic/{p-773d118d.entry.js → p-bdad26e3.entry.js} +1 -1
  443. package/dist/ionic/p-c29f8157.system.entry.js +4 -0
  444. package/dist/ionic/p-c2b74d92.system.entry.js +4 -0
  445. package/dist/ionic/{p-176b372f.entry.js → p-c41ac815.entry.js} +1 -1
  446. package/dist/ionic/{p-5417b9bb.entry.js → p-c9f3a539.entry.js} +1 -1
  447. package/dist/ionic/{p-2ea1ca4f.system.entry.js → p-ca065903.system.entry.js} +1 -1
  448. package/dist/ionic/{p-2ca6eac2.system.entry.js → p-cac0e0b3.system.entry.js} +1 -1
  449. package/dist/ionic/{p-3c968c7f.system.entry.js → p-d18ab582.system.entry.js} +2 -2
  450. package/dist/ionic/{p-92d7a3d1.entry.js → p-d7aa6b00.entry.js} +1 -1
  451. package/dist/ionic/{p-21cfd4de.entry.js → p-da074ff7.entry.js} +1 -1
  452. package/dist/ionic/{p-9e208825.entry.js → p-db0c8e7d.entry.js} +1 -1
  453. package/dist/ionic/{p-89a0a446.entry.js → p-de930745.entry.js} +1 -1
  454. package/dist/ionic/p-e2252ad6.entry.js +4 -0
  455. package/dist/ionic/{p-960803fc.system.entry.js → p-e4ee80be.system.entry.js} +1 -1
  456. package/dist/ionic/{p-dda5c73d.entry.js → p-e563a35c.entry.js} +1 -1
  457. package/dist/ionic/{p-7740e32c.system.js → p-e7ed4a7f.system.js} +1 -1
  458. package/dist/ionic/{p-0373d924.system.entry.js → p-ebf042e0.system.entry.js} +1 -1
  459. package/dist/ionic/{p-9b6c6302.system.entry.js → p-ed75fcfb.system.entry.js} +1 -1
  460. package/dist/ionic/p-f10b70a1.entry.js +4 -0
  461. package/dist/ionic/{p-01503bbd.system.entry.js → p-f3102647.system.entry.js} +1 -1
  462. package/dist/ionic/{p-6562e0a9.system.entry.js → p-fca6ef5f.system.entry.js} +1 -1
  463. package/dist/ionic/{p-b0180ce1.system.entry.js → p-ffd131f9.system.entry.js} +1 -1
  464. package/dist/types/components/checkbox/checkbox.d.ts +2 -1
  465. package/dist/types/components/menu/menu-interface.d.ts +5 -2
  466. package/dist/types/components/menu/menu.d.ts +6 -6
  467. package/dist/types/components/radio/radio.d.ts +1 -1
  468. package/dist/types/components/segment/segment.d.ts +21 -1
  469. package/dist/types/components/segment-button/segment-button.d.ts +4 -0
  470. package/dist/types/components/segment-content/segment-content.d.ts +4 -0
  471. package/dist/types/components/segment-view/segment-view-interface.d.ts +4 -0
  472. package/dist/types/components/segment-view/segment-view.d.ts +55 -0
  473. package/dist/types/components/select/select-interface.d.ts +1 -1
  474. package/dist/types/components/select/select.d.ts +5 -4
  475. package/dist/types/components/select-modal/select-modal-interface.d.ts +10 -0
  476. package/dist/types/components/select-modal/select-modal.d.ts +16 -0
  477. package/dist/types/components/select-modal/test/fixtures.d.ts +16 -0
  478. package/dist/types/components.d.ts +103 -13
  479. package/dist/types/utils/overlays-interface.d.ts +1 -1
  480. package/hydrate/index.js +610 -212
  481. package/hydrate/index.mjs +610 -212
  482. package/package.json +1 -1
  483. package/dist/ionic/p-110e03be.system.entry.js +0 -4
  484. package/dist/ionic/p-2200e26b.entry.js +0 -4
  485. package/dist/ionic/p-44d1539c.system.entry.js +0 -4
  486. package/dist/ionic/p-53854390.entry.js +0 -4
  487. package/dist/ionic/p-63d65dbc.system.entry.js +0 -4
  488. package/dist/ionic/p-72ffd137.system.entry.js +0 -4
  489. package/dist/ionic/p-82ab7ccb.entry.js +0 -4
  490. package/dist/ionic/p-87a4407b.entry.js +0 -4
  491. package/dist/ionic/p-9172535c.entry.js +0 -4
  492. package/dist/ionic/p-93f37ceb.system.entry.js +0 -4
  493. package/dist/ionic/p-9895e7f3.entry.js +0 -4
  494. package/dist/ionic/p-a0c88dc2.system.entry.js +0 -4
  495. package/dist/ionic/p-a89dac49.entry.js +0 -4
  496. package/dist/ionic/p-f88ebc36.entry.js +0 -4
@@ -603,7 +603,7 @@ const Range = class {
603
603
  const needsEndAdjustment = inItem && !hasEndContent;
604
604
  const mode = getIonMode(this);
605
605
  renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
606
- return (h(Host, { key: '877c9f15e62fadb184f9da82dc19898227521e07', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses(this.color, {
606
+ return (h(Host, { key: '05c699caaead7cc74deaae2a958c4632191473a8', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses(this.color, {
607
607
  [mode]: true,
608
608
  'in-item': inItem,
609
609
  'range-disabled': disabled,
@@ -612,10 +612,10 @@ const Range = class {
612
612
  [`range-label-placement-${labelPlacement}`]: true,
613
613
  'range-item-start-adjustment': needsStartAdjustment,
614
614
  'range-item-end-adjustment': needsEndAdjustment,
615
- }) }, h("label", { key: '2ae9088349a65e09b0e33c53442190ef563b2345', class: "range-wrapper", id: "range-label" }, h("div", { key: 'c3d0ca96ceb1e57fbd383e9c7e4da14d931771b8', class: {
615
+ }) }, h("label", { key: '959837bcc48c4bda33ae1f62b66ef444329a2961', class: "range-wrapper", id: "range-label" }, h("div", { key: 'a434c6b5c26f57f52b3af98d881e7e6a179c89fc', class: {
616
616
  'label-text-wrapper': true,
617
617
  'label-text-wrapper-hidden': !hasLabel,
618
- }, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '25d20fd5e015931f60a8ecc5374a1c84d167af9c', class: "native-wrapper" }, h("slot", { key: 'ae9f9fd92eed35b81ca97a81caa56332d8b6b2b2', name: "start" }), this.renderRangeSlider(), h("slot", { key: '74b7dede566a959c9b05a6de68426c7e339d18c8', name: "end" })))));
618
+ }, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '87df1037b6b3337bd1fab05d33a26bf658c57914', class: "native-wrapper" }, h("slot", { key: '2cb88f101da49b70aeae29b0bf5445fac241bb2f', name: "start" }), this.renderRangeSlider(), h("slot", { key: '17b835cfb2bd9b8e1957afd425543ff02b913d83', name: "end" })))));
619
619
  }
620
620
  get el() { return getElement(this); }
621
621
  static get watchers() { return {
@@ -823,7 +823,7 @@ const Refresher = class {
823
823
  }
824
824
  render() {
825
825
  const mode = getIonMode(this);
826
- return (h(Host, { key: '3270f181a5141e7d886ec554a3e892974446b90e', slot: "fixed", class: {
826
+ return (h(Host, { key: '9d4ac22988aec2c6af0b0c90934c52f62f0e4ce3', slot: "fixed", class: {
827
827
  [mode]: true,
828
828
  // Used internally for styling
829
829
  [`refresher-${mode}`]: true,
@@ -890,7 +890,7 @@ const RefresherContent = class {
890
890
  const pullingIcon = this.pullingIcon;
891
891
  const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
892
892
  const mode = getIonMode(this);
893
- return (h(Host, { key: '1bec5b4da221c69d856f3f5ddf40f2e03ebf2a4c', class: mode }, h("div", { key: '4fcc526c4f1881e9368d9cd16bd7030919bd3841', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (h("div", { key: 'a4e9e2e12c2d7faefc8303ec8c021f999ddf308e', class: "refresher-pulling-icon" }, h("div", { key: '5a2d215feb7fb4b64d540d3a65c0f24b415a2433', class: "spinner-arrow-container" }, h("ion-spinner", { key: 'abef2621d671ac6ff0abac43a702cbd825b7f127', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (h("div", { key: '30087d672c3780672a05874cd93cd099b2855462', class: "arrow-container" }, h("ion-icon", { key: '5e30333dee469aec0d8efc8c4e6dabb619c6f363', icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (h("div", { key: '48fe72b5ce8ded633c6ee799cebb520b9c8be528', class: "refresher-pulling-icon" }, h("ion-icon", { key: 'd8dfd5d42056b1c0a436c5006affb255407816c0', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), h("div", { key: 'c2cbfb94f157c82601ffe7bb815ff82ebc7c0a49', class: "refresher-refreshing" }, this.refreshingSpinner && (h("div", { key: '17f3ebe6a31768d5e389f45a2c12f68600185db9', class: "refresher-refreshing-icon" }, h("ion-spinner", { key: 'e8e61f8d7189c9939bba184201c9509d1d5b0fad', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
893
+ return (h(Host, { key: '19633bbcf02e3dba885d6bdcdaf2269bf4c8e2f5', class: mode }, h("div", { key: '28922e434a55a6cac0476fe2bee56941ce0d1c02', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (h("div", { key: 'fe575bf996021884677e9b23a3215d63caf894f5', class: "refresher-pulling-icon" }, h("div", { key: '59fe12297fd95bc33b8df8cd35316e2a1c084d91', class: "spinner-arrow-container" }, h("ion-spinner", { key: 'af9cc013ae04945c140b2865610ca73edb52ab48', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (h("div", { key: '34df66ad1b0f706a0532957251aa2c20bf4587d8', class: "arrow-container" }, h("ion-icon", { key: 'ffdb5c123e606b823491c6c51cc2b497f62581bb', icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (h("div", { key: 'ac3a2032bb969264d20fa057e9123441005d7a9d', class: "refresher-pulling-icon" }, h("ion-icon", { key: 'd969d10915548e72aae289b52154366f3dd39b31', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), h("div", { key: 'a8f854f81a94812d7bef8ce088331d94f49ff53d', class: "refresher-refreshing" }, this.refreshingSpinner && (h("div", { key: 'a1f646945370e40c844d62bc0c647443ae9dfbe7', class: "refresher-refreshing-icon" }, h("ion-spinner", { key: 'ab3ff4047769b6436e222b46d193c1e8b23e2fce', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
894
894
  }
895
895
  get el() { return getElement(this); }
896
896
  };
@@ -33,7 +33,7 @@ const Reorder = class {
33
33
  render() {
34
34
  const mode = getIonMode(this);
35
35
  const reorderIcon = mode === 'ios' ? reorderThreeOutline : reorderTwoSharp;
36
- return (h(Host, { key: '663d74e231e3af56b6298ee2539fdac9c8465839', class: mode }, h("slot", { key: 'c7c384ab8c9ca8abdc89cd984a39dfde70e342ca' }, h("ion-icon", { key: 'c8b6052db03d4b9e33a90e600c20861c73ee73ce', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
36
+ return (h(Host, { key: '27266e30bcb7e10c57fb6d546399cfb1f1c93b23', class: mode }, h("slot", { key: '8745cb9a31458e884c27eed1fb90d104fe9a79eb' }, h("ion-icon", { key: '6c4b9631a2f5610f1e21b2db025b6702d0d593bf', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
37
37
  }
38
38
  get el() { return getElement(this); }
39
39
  };
@@ -279,7 +279,7 @@ const ReorderGroup = class {
279
279
  }
280
280
  render() {
281
281
  const mode = getIonMode(this);
282
- return (h(Host, { key: '491f3e5843cf728ff4589e58bd86b8ce6709b293', class: {
282
+ return (h(Host, { key: 'a38c7fbceb677201330a602273d5b55abb32da19', class: {
283
283
  [mode]: true,
284
284
  'reorder-enabled': !this.disabled,
285
285
  'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
@@ -64,7 +64,7 @@ const RippleEffect = class {
64
64
  }
65
65
  render() {
66
66
  const mode = getIonMode(this);
67
- return (h(Host, { key: '2302f087ab1c6755355736e4ca77309c5fdcf185', role: "presentation", class: {
67
+ return (h(Host, { key: '7ae559bda5d2c1856a45bfa150c2cb4f83373f8e', role: "presentation", class: {
68
68
  [mode]: true,
69
69
  unbounded: this.unbounded,
70
70
  } }));
@@ -878,10 +878,10 @@ const RouterLink = class {
878
878
  rel: this.rel,
879
879
  target: this.target,
880
880
  };
881
- return (h(Host, { key: 'f876442cab5b14b7e83c6d6ad2c2d878a9c57439', onClick: this.onClick, class: createColorClasses(this.color, {
881
+ return (h(Host, { key: '529ceed5beaf92d7b4cc315c82f449eac18310e8', onClick: this.onClick, class: createColorClasses(this.color, {
882
882
  [mode]: true,
883
883
  'ion-activatable': true,
884
- }) }, h("a", Object.assign({ key: 'c44b78ec1fd10a40c23bfe548860ac2b346646a8' }, attrs), h("slot", { key: 'd32180a567613f79f89885135bd0d776ffc1eb8e' }))));
884
+ }) }, h("a", Object.assign({ key: 'd5f1f8b256695d70bdafd20ff3d1b625963fa2da' }, attrs), h("slot", { key: '613fcdb36a71e076f989551ea21f1d5c118b1cd2' }))));
885
885
  }
886
886
  };
887
887
  RouterLink.style = IonRouterLinkStyle0;
@@ -389,8 +389,8 @@ const Searchbar = class {
389
389
  const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
390
390
  const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
391
391
  const shouldShowCancelButton = this.shouldShowCancelButton();
392
- const cancelButton = this.showCancelButton !== 'never' && (h("button", { key: '20b2d0f2e3425eede725dbe3323c7c29cdb66f4e', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: mode === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, h("div", { key: '3a516c3fdd35256eb79639fd340afcdd92cfd7aa', "aria-hidden": "true" }, mode === 'md' ? (h("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
393
- return (h(Host, { key: '34878db21f63a9bdffca0446d8ad5619ff04cac3', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses(this.color, {
392
+ const cancelButton = this.showCancelButton !== 'never' && (h("button", { key: '0ef595eb1628928d4c7fdb166b8e41768700fa6e', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: mode === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, h("div", { key: 'ea2c9b36d991acf5af7662059cb6b045f683ca94', "aria-hidden": "true" }, mode === 'md' ? (h("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
393
+ return (h(Host, { key: '17d57ece5852d03047e4d53ddad6c9d88a432a00', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses(this.color, {
394
394
  [mode]: true,
395
395
  'searchbar-animated': animated,
396
396
  'searchbar-disabled': this.disabled,
@@ -400,14 +400,14 @@ const Searchbar = class {
400
400
  'searchbar-has-focus': this.focused,
401
401
  'searchbar-should-show-clear': this.shouldShowClearButton(),
402
402
  'searchbar-should-show-cancel': this.shouldShowCancelButton(),
403
- }) }, h("div", { key: 'faa7b011206a8359b1963368c65988e506b260cb', class: "searchbar-input-container" }, h("input", Object.assign({ key: '732d3e5a2b258da6f136a14472ac872816a9853b', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, h("ion-icon", { key: '767dca971849f221dde220deae728b41bf764b98', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), h("button", { key: '9941b5de1ed9ebcf3e81de8e0731c09dea5a89d9', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
403
+ }) }, h("div", { key: 'f67c2124e70c24eef0a271516e9c4bdaf7e98ceb', class: "searchbar-input-container" }, h("input", Object.assign({ key: '8c7f7ccc6809cca30ccc8c4e98e349d3f916321d', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, h("ion-icon", { key: 'f06524d3163b3883bbde937862aa1e0e8f49f6e1', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), h("button", { key: '9f7ba2bec93412ecb674b197be13db1de308bb57', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
404
404
  /**
405
405
  * This prevents mobile browsers from
406
406
  * blurring the input when the clear
407
407
  * button is activated.
408
408
  */
409
409
  ev.preventDefault();
410
- }, onClick: () => this.onClearInput(true) }, h("ion-icon", { key: 'cb2b543d286373a84e2c6c2a959f92b045bbd7dd', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
410
+ }, onClick: () => this.onClearInput(true) }, h("ion-icon", { key: '19fc3dbc722acc47ff7eb3c94ad4de8aed38dff4', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
411
411
  }
412
412
  get el() { return getElement(this); }
413
413
  static get watchers() { return {
@@ -0,0 +1,19 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { r as registerInstance, h, f as Host } from './index-28849c61.js';
5
+
6
+ const segmentContentCss = ":host{scroll-snap-align:center;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}";
7
+ const IonSegmentContentStyle0 = segmentContentCss;
8
+
9
+ const SegmentContent = class {
10
+ constructor(hostRef) {
11
+ registerInstance(this, hostRef);
12
+ }
13
+ render() {
14
+ return (h(Host, { key: '03684b2999ac64fe13e376fd7e7f279976e9d4f2' }, h("slot", { key: '143031075bf33ca19e7cfd76fc8a67b83ccaf11c' })));
15
+ }
16
+ };
17
+ SegmentContent.style = IonSegmentContentStyle0;
18
+
19
+ export { SegmentContent as ion_segment_content };
@@ -0,0 +1,118 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { r as registerInstance, d as createEvent, h, f as Host, i as getElement } from './index-28849c61.js';
5
+
6
+ const segmentViewIosCss = ":host{display:-ms-flexbox;display:flex;height:100%;overflow-x:scroll;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}:host::-webkit-scrollbar{display:none}:host(.segment-view-disabled){-ms-touch-action:none;touch-action:none;overflow-x:hidden}:host(.segment-view-scroll-disabled){pointer-events:none}:host(.segment-view-disabled){opacity:0.3}";
7
+ const IonSegmentViewIosStyle0 = segmentViewIosCss;
8
+
9
+ const segmentViewMdCss = ":host{display:-ms-flexbox;display:flex;height:100%;overflow-x:scroll;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}:host::-webkit-scrollbar{display:none}:host(.segment-view-disabled){-ms-touch-action:none;touch-action:none;overflow-x:hidden}:host(.segment-view-scroll-disabled){pointer-events:none}:host(.segment-view-disabled){opacity:0.3}";
10
+ const IonSegmentViewMdStyle0 = segmentViewMdCss;
11
+
12
+ const SegmentView = class {
13
+ constructor(hostRef) {
14
+ registerInstance(this, hostRef);
15
+ this.ionSegmentViewScroll = createEvent(this, "ionSegmentViewScroll", 7);
16
+ this.scrollEndTimeout = null;
17
+ this.isTouching = false;
18
+ this.disabled = false;
19
+ this.isManualScroll = undefined;
20
+ }
21
+ handleScroll(ev) {
22
+ var _a;
23
+ const { scrollLeft, scrollWidth, clientWidth } = ev.target;
24
+ const scrollRatio = scrollLeft / (scrollWidth - clientWidth);
25
+ this.ionSegmentViewScroll.emit({
26
+ scrollRatio,
27
+ isManualScroll: (_a = this.isManualScroll) !== null && _a !== void 0 ? _a : true,
28
+ });
29
+ // Reset the timeout to check for scroll end
30
+ this.resetScrollEndTimeout();
31
+ }
32
+ /**
33
+ * Handle touch start event to know when the user is actively dragging the segment view.
34
+ */
35
+ handleScrollStart() {
36
+ if (this.scrollEndTimeout) {
37
+ clearTimeout(this.scrollEndTimeout);
38
+ this.scrollEndTimeout = null;
39
+ }
40
+ this.isTouching = true;
41
+ }
42
+ /**
43
+ * Handle touch end event to know when the user is no longer dragging the segment view.
44
+ */
45
+ handleTouchEnd() {
46
+ this.isTouching = false;
47
+ }
48
+ /**
49
+ * Reset the scroll end detection timer. This is called on every scroll event.
50
+ */
51
+ resetScrollEndTimeout() {
52
+ if (this.scrollEndTimeout) {
53
+ clearTimeout(this.scrollEndTimeout);
54
+ this.scrollEndTimeout = null;
55
+ }
56
+ this.scrollEndTimeout = setTimeout(() => {
57
+ this.checkForScrollEnd();
58
+ },
59
+ // Setting this to a lower value may result in inconsistencies in behavior
60
+ // across browsers (particularly Firefox).
61
+ // Ideally, all of this logic is removed once the scroll end event is
62
+ // supported on all browsers (https://caniuse.com/?search=scrollend)
63
+ 100);
64
+ }
65
+ /**
66
+ * Check if the scroll has ended and the user is not actively touching.
67
+ * If the conditions are met (active content is enabled and no active touch),
68
+ * reset the scroll position and emit the scroll end event.
69
+ */
70
+ checkForScrollEnd() {
71
+ // Only emit scroll end event if the active content is not disabled and
72
+ // the user is not touching the segment view
73
+ if (!this.isTouching) {
74
+ this.isManualScroll = undefined;
75
+ }
76
+ }
77
+ /**
78
+ * @internal
79
+ *
80
+ * This method is used to programmatically set the displayed segment content
81
+ * in the segment view. Calling this method will update the `value` of the
82
+ * corresponding segment button.
83
+ *
84
+ * @param id: The id of the segment content to display.
85
+ * @param smoothScroll: Whether to animate the scroll transition.
86
+ */
87
+ async setContent(id, smoothScroll = true) {
88
+ const contents = this.getSegmentContents();
89
+ const index = contents.findIndex((content) => content.id === id);
90
+ if (index === -1)
91
+ return;
92
+ this.isManualScroll = false;
93
+ this.resetScrollEndTimeout();
94
+ const contentWidth = this.el.offsetWidth;
95
+ this.el.scrollTo({
96
+ top: 0,
97
+ left: index * contentWidth,
98
+ behavior: smoothScroll ? 'smooth' : 'instant',
99
+ });
100
+ }
101
+ getSegmentContents() {
102
+ return Array.from(this.el.querySelectorAll('ion-segment-content'));
103
+ }
104
+ render() {
105
+ const { disabled, isManualScroll } = this;
106
+ return (h(Host, { key: '9f4f11d31c4db776f077e59ae895b35dd4454717', class: {
107
+ 'segment-view-disabled': disabled,
108
+ 'segment-view-scroll-disabled': isManualScroll === false,
109
+ } }, h("slot", { key: 'ea58b21f031cee2ab2b70580f336deaefa364538' })));
110
+ }
111
+ get el() { return getElement(this); }
112
+ };
113
+ SegmentView.style = {
114
+ ios: IonSegmentViewIosStyle0,
115
+ md: IonSegmentViewMdStyle0
116
+ };
117
+
118
+ export { SegmentView as ion_segment_view };
@@ -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-ae10d43d.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 };