@ionic/core 8.8.4-dev.11776184632.103b8351 → 8.8.4-dev.11776246162.138c2737

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 (217) hide show
  1. package/components/index.js +1 -1
  2. package/components/ion-action-sheet.js +1 -1
  3. package/components/ion-alert.js +1 -1
  4. package/components/ion-datetime.js +1 -1
  5. package/components/ion-infinite-scroll-content.js +1 -1
  6. package/components/ion-loading.js +1 -1
  7. package/components/ion-menu.js +1 -1
  8. package/components/ion-modal.js +1 -1
  9. package/components/ion-picker-legacy.js +1 -1
  10. package/components/ion-popover.js +1 -1
  11. package/components/ion-refresher-content.js +1 -1
  12. package/components/ion-select-modal.js +1 -1
  13. package/components/ion-select-option.js +1 -1
  14. package/components/ion-select-popover.js +1 -1
  15. package/components/ion-select.js +1 -1
  16. package/components/ion-skeleton-text.js +1 -1
  17. package/components/ion-spinner.js +1 -1
  18. package/components/ion-split-pane.js +1 -1
  19. package/components/ion-tab-bar.js +1 -1
  20. package/components/ion-tab-button.js +1 -1
  21. package/components/ion-tab.js +1 -1
  22. package/components/ion-tabs.js +1 -1
  23. package/components/ion-text.js +1 -1
  24. package/components/ion-textarea.js +1 -1
  25. package/components/ion-thumbnail.js +1 -1
  26. package/components/ion-title.js +1 -1
  27. package/components/ion-toast.js +1 -1
  28. package/components/ion-toggle.js +1 -1
  29. package/components/ion-toolbar.js +1 -1
  30. package/components/p-B36-MWK0.js +4 -0
  31. package/components/p-BDPU2685.js +4 -0
  32. package/components/p-BrNzoF1U.js +4 -0
  33. package/components/{p-B0orUoaV.js → p-C-_EGKki.js} +1 -1
  34. package/components/{p-qhBzWoOF.js → p-C2cZvGcF.js} +1 -1
  35. package/components/p-CEUppJkx.js +4 -0
  36. package/components/p-CSexRbnt.js +4 -0
  37. package/components/{p-ZRp3l6Dk.js → p-CoarhFWH.js} +1 -1
  38. package/components/p-DNdBtsfu.js +4 -0
  39. package/components/p-Njik5v4C.js +4 -0
  40. package/dist/cjs/index.cjs.js +1 -1
  41. package/dist/cjs/ion-action-sheet.cjs.entry.js +34 -18
  42. package/dist/cjs/ion-alert.cjs.entry.js +35 -32
  43. package/dist/cjs/ion-app_8.cjs.entry.js +4 -4
  44. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  45. package/dist/cjs/ion-datetime_3.cjs.entry.js +28 -4
  46. package/dist/cjs/ion-item_8.cjs.entry.js +2 -2
  47. package/dist/cjs/ion-loading.cjs.entry.js +29 -4
  48. package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
  49. package/dist/cjs/ion-modal.cjs.entry.js +176 -79
  50. package/dist/cjs/ion-popover.cjs.entry.js +90 -4
  51. package/dist/cjs/ion-select-modal.cjs.entry.js +27 -46
  52. package/dist/cjs/ion-select_3.cjs.entry.js +48 -177
  53. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  54. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  55. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  56. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  57. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  58. package/dist/cjs/ion-textarea.cjs.entry.js +3 -3
  59. package/dist/cjs/ion-toast.cjs.entry.js +32 -4
  60. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  61. package/dist/cjs/ionic.cjs.js +1 -1
  62. package/dist/cjs/loader.cjs.js +1 -1
  63. package/dist/cjs/{overlays-Dhoy6v_5.js → overlays-BbhewSIQ.js} +4 -4
  64. package/dist/collection/components/action-sheet/action-sheet.ios.css +0 -84
  65. package/dist/collection/components/action-sheet/action-sheet.js +8 -15
  66. package/dist/collection/components/action-sheet/action-sheet.md.css +0 -84
  67. package/dist/collection/components/action-sheet/animations/ionic.enter.js +27 -0
  68. package/dist/collection/components/action-sheet/animations/ionic.leave.js +21 -0
  69. package/dist/collection/components/alert/alert.ios.css +0 -83
  70. package/dist/collection/components/alert/alert.js +8 -29
  71. package/dist/collection/components/alert/alert.md.css +0 -83
  72. package/dist/collection/components/alert/animations/ionic.enter.js +28 -0
  73. package/dist/collection/components/alert/animations/ionic.leave.js +19 -0
  74. package/dist/collection/components/loading/animations/ionic.enter.js +28 -0
  75. package/dist/collection/components/loading/animations/ionic.leave.js +22 -0
  76. package/dist/collection/components/loading/loading.js +4 -3
  77. package/dist/collection/components/modal/animations/ionic.enter.js +40 -0
  78. package/dist/collection/components/modal/animations/ionic.leave.js +28 -0
  79. package/dist/collection/components/modal/gestures/sheet.js +71 -9
  80. package/dist/collection/components/modal/modal.ionic.css +1 -1
  81. package/dist/collection/components/modal/modal.js +6 -5
  82. package/dist/collection/components/picker-legacy/animations/ionic.enter.js +27 -0
  83. package/dist/collection/components/picker-legacy/animations/ionic.leave.js +23 -0
  84. package/dist/collection/components/picker-legacy/picker.js +4 -3
  85. package/dist/collection/components/popover/animations/ionic.enter.js +91 -0
  86. package/dist/collection/components/popover/animations/ionic.leave.js +29 -0
  87. package/dist/collection/components/popover/popover.js +4 -3
  88. package/dist/collection/components/select/select.ionic.css +0 -31
  89. package/dist/collection/components/select/select.ios.css +0 -31
  90. package/dist/collection/components/select/select.js +14 -125
  91. package/dist/collection/components/select/select.md.css +0 -31
  92. package/dist/collection/components/select-modal/select-modal.ionic.css +0 -24
  93. package/dist/collection/components/select-modal/select-modal.ios.css +0 -77
  94. package/dist/collection/components/select-modal/select-modal.js +23 -42
  95. package/dist/collection/components/select-modal/select-modal.md.css +1 -80
  96. package/dist/collection/components/select-option/select-option.js +2 -21
  97. package/dist/collection/components/select-popover/select-popover.ios.css +0 -77
  98. package/dist/collection/components/select-popover/select-popover.js +26 -45
  99. package/dist/collection/components/select-popover/select-popover.md.css +0 -77
  100. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  101. package/dist/collection/components/spinner/spinner.js +1 -1
  102. package/dist/collection/components/split-pane/split-pane.js +2 -2
  103. package/dist/collection/components/tab/tab.js +2 -2
  104. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  105. package/dist/collection/components/tab-button/tab-button.js +2 -2
  106. package/dist/collection/components/tabs/tabs.js +1 -1
  107. package/dist/collection/components/text/text.js +2 -2
  108. package/dist/collection/components/textarea/textarea.js +3 -3
  109. package/dist/collection/components/thumbnail/thumbnail.js +2 -2
  110. package/dist/collection/components/title/title.js +2 -2
  111. package/dist/collection/components/toast/animations/ionic.enter.js +33 -0
  112. package/dist/collection/components/toast/animations/ionic.leave.js +16 -0
  113. package/dist/collection/components/toast/toast.js +4 -3
  114. package/dist/collection/components/toggle/toggle.js +3 -3
  115. package/dist/collection/components/toolbar/toolbar.js +2 -2
  116. package/dist/collection/utils/overlays.js +5 -5
  117. package/dist/docs.json +5 -139
  118. package/dist/esm/index.js +1 -1
  119. package/dist/esm/ion-action-sheet.entry.js +34 -18
  120. package/dist/esm/ion-alert.entry.js +35 -32
  121. package/dist/esm/ion-app_8.entry.js +4 -4
  122. package/dist/esm/ion-avatar_3.entry.js +2 -2
  123. package/dist/esm/ion-datetime_3.entry.js +28 -4
  124. package/dist/esm/ion-item_8.entry.js +2 -2
  125. package/dist/esm/ion-loading.entry.js +29 -4
  126. package/dist/esm/ion-menu_3.entry.js +1 -1
  127. package/dist/esm/ion-modal.entry.js +177 -80
  128. package/dist/esm/ion-popover.entry.js +90 -4
  129. package/dist/esm/ion-select-modal.entry.js +27 -46
  130. package/dist/esm/ion-select_3.entry.js +49 -178
  131. package/dist/esm/ion-spinner.entry.js +1 -1
  132. package/dist/esm/ion-split-pane.entry.js +2 -2
  133. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  134. package/dist/esm/ion-tab_2.entry.js +3 -3
  135. package/dist/esm/ion-text.entry.js +2 -2
  136. package/dist/esm/ion-textarea.entry.js +3 -3
  137. package/dist/esm/ion-toast.entry.js +32 -4
  138. package/dist/esm/ion-toggle.entry.js +3 -3
  139. package/dist/esm/ionic.js +1 -1
  140. package/dist/esm/loader.js +1 -1
  141. package/dist/esm/{overlays-CvFHfO3y.js → overlays-VA-4NWjf.js} +5 -5
  142. package/dist/html.html-data.json +0 -4
  143. package/dist/ionic/index.esm.js +1 -1
  144. package/dist/ionic/ionic.esm.js +1 -1
  145. package/dist/ionic/p-07b129d5.entry.js +4 -0
  146. package/dist/ionic/p-0cb50208.entry.js +4 -0
  147. package/dist/ionic/{p-db4f4eaf.entry.js → p-1efe83c8.entry.js} +1 -1
  148. package/dist/ionic/{p-d2fe6791.entry.js → p-2193e875.entry.js} +1 -1
  149. package/dist/ionic/{p-69033ad6.entry.js → p-2bf931ae.entry.js} +1 -1
  150. package/dist/ionic/{p-26595044.entry.js → p-3bf01c2c.entry.js} +1 -1
  151. package/dist/ionic/p-3d4c8528.entry.js +4 -0
  152. package/dist/ionic/{p-9e71982e.entry.js → p-49799a34.entry.js} +1 -1
  153. package/dist/ionic/p-64341e32.entry.js +4 -0
  154. package/dist/ionic/p-6992d9d6.entry.js +4 -0
  155. package/dist/ionic/{p-aa8c1e64.entry.js → p-6c8c37c2.entry.js} +1 -1
  156. package/dist/ionic/{p-a94016be.entry.js → p-91e242e4.entry.js} +1 -1
  157. package/dist/ionic/{p-96ec9a10.entry.js → p-9b9b1450.entry.js} +1 -1
  158. package/dist/ionic/p-9dd4276b.entry.js +4 -0
  159. package/dist/ionic/p-BExfzy0B.js +4 -0
  160. package/dist/ionic/p-a3d794ba.entry.js +4 -0
  161. package/dist/ionic/p-ba9f8cbb.entry.js +4 -0
  162. package/dist/ionic/{p-2095969c.entry.js → p-bae3ebe5.entry.js} +1 -1
  163. package/dist/ionic/{p-a1c8ba8c.entry.js → p-bc5713f7.entry.js} +1 -1
  164. package/dist/ionic/{p-71f28573.entry.js → p-cdfbe4cc.entry.js} +1 -1
  165. package/dist/ionic/p-fa701753.entry.js +4 -0
  166. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +1 -4
  167. package/dist/types/components/action-sheet/animations/ionic.enter.d.ts +5 -0
  168. package/dist/types/components/action-sheet/animations/ionic.leave.d.ts +5 -0
  169. package/dist/types/components/alert/alert-interface.d.ts +1 -4
  170. package/dist/types/components/alert/animations/ionic.enter.d.ts +5 -0
  171. package/dist/types/components/alert/animations/ionic.leave.d.ts +5 -0
  172. package/dist/types/components/loading/animations/ionic.enter.d.ts +5 -0
  173. package/dist/types/components/loading/animations/ionic.leave.d.ts +5 -0
  174. package/dist/types/components/modal/animations/ionic.enter.d.ts +6 -0
  175. package/dist/types/components/modal/animations/ionic.leave.d.ts +6 -0
  176. package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
  177. package/dist/types/components/picker-legacy/animations/ionic.enter.d.ts +5 -0
  178. package/dist/types/components/picker-legacy/animations/ionic.leave.d.ts +5 -0
  179. package/dist/types/components/popover/animations/ionic.enter.d.ts +5 -0
  180. package/dist/types/components/popover/animations/ionic.leave.d.ts +5 -0
  181. package/dist/types/components/select/select.d.ts +0 -7
  182. package/dist/types/components/select-modal/select-modal-interface.d.ts +1 -4
  183. package/dist/types/components/select-option/select-option.d.ts +0 -4
  184. package/dist/types/components/select-popover/select-popover-interface.d.ts +1 -4
  185. package/dist/types/components/toast/animations/ionic.enter.d.ts +6 -0
  186. package/dist/types/components/toast/animations/ionic.leave.d.ts +5 -0
  187. package/dist/types/components.d.ts +0 -9
  188. package/dist/types/utils/overlays.d.ts +1 -1
  189. package/hydrate/index.js +518 -442
  190. package/hydrate/index.mjs +518 -442
  191. package/package.json +1 -1
  192. package/components/p-B6czg-mf.js +0 -4
  193. package/components/p-BDwab5EM.js +0 -4
  194. package/components/p-BjV_nNDy.js +0 -4
  195. package/components/p-C8Dne7pI.js +0 -4
  196. package/components/p-C9d4LXRu.js +0 -4
  197. package/components/p-CvoKp7OI.js +0 -4
  198. package/components/p-GytrfCp8.js +0 -4
  199. package/components/p-ZeIAjDcZ.js +0 -4
  200. package/dist/cjs/select-option-render-qQf4xz8P.js +0 -67
  201. package/dist/collection/components/action-sheet/action-sheet.ionic.css +0 -834
  202. package/dist/collection/components/alert/alert.ionic.css +0 -1165
  203. package/dist/collection/components/select-popover/select-popover.ionic.css +0 -489
  204. package/dist/collection/utils/select-option-render.js +0 -62
  205. package/dist/esm/select-option-render-BQUT9Aqa.js +0 -65
  206. package/dist/ionic/p-37f895a8.entry.js +0 -4
  207. package/dist/ionic/p-3884bfa4.entry.js +0 -4
  208. package/dist/ionic/p-38897781.entry.js +0 -4
  209. package/dist/ionic/p-63e09af5.entry.js +0 -4
  210. package/dist/ionic/p-6bffc700.entry.js +0 -4
  211. package/dist/ionic/p-6e0ce081.entry.js +0 -4
  212. package/dist/ionic/p-BYtS2rae.js +0 -4
  213. package/dist/ionic/p-Dr3N4o63.js +0 -4
  214. package/dist/ionic/p-a64ae62e.entry.js +0 -4
  215. package/dist/ionic/p-d45b911b.entry.js +0 -4
  216. package/dist/ionic/p-ef0c281a.entry.js +0 -4
  217. package/dist/types/utils/select-option-render.d.ts +0 -26
@@ -14,6 +14,7 @@ import { deepReady, waitForMount } from "../../utils/transition/index";
14
14
  import { config } from "../../global/config";
15
15
  import { getIonMode, getIonTheme } from "../../global/ionic-global";
16
16
  import { KEYBOARD_DID_OPEN } from "../../utils/keyboard/keyboard";
17
+ import { ionicEnterAnimation } from "./animations/ionic.enter";
17
18
  import { iosEnterAnimation } from "./animations/ios.enter";
18
19
  import { iosLeaveAnimation } from "./animations/ios.leave";
19
20
  import { portraitToLandscapeTransition, landscapeToPortraitTransition } from "./animations/ios.transition";
@@ -454,7 +455,7 @@ export class Modal {
454
455
  this.statusBarStyle = await StatusBar.getStyle();
455
456
  setCardStatusBarDark();
456
457
  }
457
- await present(this, 'modalEnter', iosEnterAnimation, mdEnterAnimation, {
458
+ await present(this, 'modalEnter', iosEnterAnimation, mdEnterAnimation, ionicEnterAnimation, {
458
459
  presentingEl: presentingElement,
459
460
  currentBreakpoint: this.initialBreakpoint,
460
461
  backdropBreakpoint: this.backdropBreakpoint,
@@ -1149,20 +1150,20 @@ export class Modal {
1149
1150
  const isHandleCycle = handleBehavior === 'cycle';
1150
1151
  const shape = this.getShape();
1151
1152
  const isSheetModalWithHandle = isSheetModal && showHandle;
1152
- return (h(Host, Object.assign({ key: '4b323edb66d28260c34b31fd2af8f4ae53a7ef90', "no-router": true,
1153
+ return (h(Host, Object.assign({ key: '3011c8f49c1ccb6c20c01db35b59fe4f6e22ec01', "no-router": true,
1153
1154
  // Allow the modal to be navigable when the handle is focusable
1154
1155
  tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
1155
1156
  zIndex: `${20000 + this.overlayIndex}`,
1156
- }, class: Object.assign({ [theme]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-${shape}`]: shape !== undefined, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: '6059e348dc3d020f995577dde1b7949bdb2c0f2f', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), theme === 'ios' && h("div", { key: '5a08a99dfc3de51ac7516fc76fdba3672f84db71', class: "modal-shadow" }), h("div", Object.assign({ key: 'a7a841a5b2f740fbf576b82b82782aa235b701ee',
1157
+ }, class: Object.assign({ [theme]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-${shape}`]: shape !== undefined, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: 'ab99fb4ff1b335b06d5676890012dfe3cd1a1a01', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), theme === 'ios' && h("div", { key: '95d4c79c4455c6a5ae6d581fa9dfaabdbee8c567', class: "modal-shadow" }), h("div", Object.assign({ key: '2d7d2406cdb986c69ef52708d33eca67d8a877f8',
1157
1158
  /*
1158
1159
  role and aria-modal must be used on the
1159
1160
  same element. They must also be set inside the
1160
1161
  shadow DOM otherwise ion-button will not be highlighted
1161
1162
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
1162
1163
  */
1163
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: 'ca5567e9ab3e9e80b41314d396106faf2da09ffe', class: "modal-handle",
1164
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: 'ccec8bfc314763bd6dd868b69fbfdc085f5957c9', class: "modal-handle",
1164
1165
  // Prevents the handle from receiving keyboard focus when it does not cycle
1165
- tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: 'da5471ea4292166798d3f949e79e7b3e55a0e83f', onSlotchange: this.onSlotChange }))));
1166
+ tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '38469e3447b46983783627d697e12cadcef614fa', onSlotchange: this.onSlotChange }))));
1166
1167
  }
1167
1168
  static get is() { return "ion-modal"; }
1168
1169
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1,27 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { createAnimation } from "../../../utils/animation/animation";
5
+ /**
6
+ * Ionic Picker Enter Animation
7
+ */
8
+ export const ionicEnterAnimation = (baseEl) => {
9
+ const baseAnimation = createAnimation();
10
+ const backdropAnimation = createAnimation();
11
+ const wrapperAnimation = createAnimation();
12
+ backdropAnimation
13
+ .addElement(baseEl.querySelector('ion-backdrop'))
14
+ .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
15
+ .beforeStyles({
16
+ 'pointer-events': 'none',
17
+ })
18
+ .afterClearStyles(['pointer-events']);
19
+ wrapperAnimation
20
+ .addElement(baseEl.querySelector('.picker-wrapper'))
21
+ .fromTo('transform', 'translateY(100%)', 'translateY(0%)');
22
+ return baseAnimation
23
+ .addElement(baseEl)
24
+ .easing('cubic-bezier(.36,.66,.04,1)')
25
+ .duration(400)
26
+ .addAnimation([backdropAnimation, wrapperAnimation]);
27
+ };
@@ -0,0 +1,23 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { createAnimation } from "../../../utils/animation/animation";
5
+ /**
6
+ * iOS Picker Leave Animation
7
+ */
8
+ export const ionicLeaveAnimation = (baseEl) => {
9
+ const baseAnimation = createAnimation();
10
+ const backdropAnimation = createAnimation();
11
+ const wrapperAnimation = createAnimation();
12
+ backdropAnimation
13
+ .addElement(baseEl.querySelector('ion-backdrop'))
14
+ .fromTo('opacity', 'var(--backdrop-opacity)', 0.01);
15
+ wrapperAnimation
16
+ .addElement(baseEl.querySelector('.picker-wrapper'))
17
+ .fromTo('transform', 'translateY(0%)', 'translateY(100%)');
18
+ return baseAnimation
19
+ .addElement(baseEl)
20
+ .easing('cubic-bezier(.36,.66,.04,1)')
21
+ .duration(400)
22
+ .addAnimation([backdropAnimation, wrapperAnimation]);
23
+ };
@@ -8,6 +8,7 @@ import { printIonWarning } from "../../utils/logging/index";
8
8
  import { createDelegateController, createTriggerController, BACKDROP, dismiss, eventMethod, isCancel, prepareOverlay, present, safeCall, setOverlayId, } from "../../utils/overlays";
9
9
  import { getClassMap } from "../../utils/theme";
10
10
  import { getIonTheme } from "../../global/ionic-global";
11
+ import { ionicEnterAnimation } from "./animations/ionic.enter";
11
12
  import { iosEnterAnimation } from "./animations/ios.enter";
12
13
  import { iosLeaveAnimation } from "./animations/ios.leave";
13
14
  // TODO(FW-2832): types
@@ -123,7 +124,7 @@ export class Picker {
123
124
  async present() {
124
125
  const unlock = await this.lockController.lock();
125
126
  await this.delegateController.attachViewToDom();
126
- await present(this, 'pickerEnter', iosEnterAnimation, iosEnterAnimation, undefined);
127
+ await present(this, 'pickerEnter', iosEnterAnimation, iosEnterAnimation, ionicEnterAnimation, undefined);
127
128
  if (this.duration > 0) {
128
129
  this.durationTimeout = setTimeout(() => this.dismiss(), this.duration);
129
130
  }
@@ -208,11 +209,11 @@ export class Picker {
208
209
  render() {
209
210
  const { htmlAttributes } = this;
210
211
  const theme = getIonTheme(this);
211
- return (h(Host, Object.assign({ key: 'efcc823fad9cb37c1379bef4f4b84c6461f3a3a6', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
212
+ return (h(Host, Object.assign({ key: '8db0e1a6cb7697efcc5d5a4a80f3dc3435760c1d', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
212
213
  zIndex: `${20000 + this.overlayIndex}`,
213
214
  }, class: Object.assign({ [theme]: true,
214
215
  // Used internally for styling
215
- [`picker-${theme}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), h("ion-backdrop", { key: '3f44bf34e039210ae149c590c393ee9f7fb85da0', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: 'c2a51a89c525b1a22cbc8583cd30f41c3c356d4f', tabindex: "0", "aria-hidden": "true" }), h("div", { key: '23837ffe309d0aad9b8ea09d7ac94d21040ef0d7', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, h("div", { key: '91ba7e553d570768142715ded4bcc27fceedbce4', class: "picker-toolbar" }, this.buttons.map((b) => (h("div", { class: buttonWrapperClass(b) }, h("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass(b) }, b.text))))), h("div", { key: '22661cafeb555f1435ec1e0a122404a48136095b', class: "picker-columns" }, h("div", { key: '5f3db32468b8c60f63c70d81a27b18cce6f2e259', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => h("ion-picker-legacy-column", { col: c })), h("div", { key: '1bae6b170125b1671a480506ba73636b42b65909', class: "picker-below-highlight" }))), h("div", { key: '91beb94ce537122fbd6cd0c2bd3c00f908d0fefe', tabindex: "0", "aria-hidden": "true" })));
216
+ [`picker-${theme}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), h("ion-backdrop", { key: 'c32c446147dff1e8b53fcf6885bdaa504d134d06', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: '87c9eeeed6869569b0da65d720289f14f76d0cba', tabindex: "0", "aria-hidden": "true" }), h("div", { key: '17a1250e5ce1dc176a39d7480587c56aa11f0247', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, h("div", { key: '4d4043aae3373d2f271e8e1320ba72f726eb2338', class: "picker-toolbar" }, this.buttons.map((b) => (h("div", { class: buttonWrapperClass(b) }, h("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass(b) }, b.text))))), h("div", { key: '954edc5d83380d04025ec8029194ad0f9c6778ff', class: "picker-columns" }, h("div", { key: 'f3c7f7bbb784b8076eebe984e7dd057d78c9824f', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => h("ion-picker-legacy-column", { col: c })), h("div", { key: '63dcf6a252024984cb3eaca133805343b324fdb1', class: "picker-below-highlight" }))), h("div", { key: 'e07eb1a59edf5d94fc487114c2d8b923fd768696', tabindex: "0", "aria-hidden": "true" })));
216
217
  }
217
218
  static get is() { return "ion-picker-legacy"; }
218
219
  static get encapsulation() { return "scoped"; }
@@ -0,0 +1,91 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { createAnimation } from "../../../utils/animation/animation";
5
+ import { getElementRoot } from "../../../utils/helpers";
6
+ import { calculateWindowAdjustment, getPopoverDimensions, getPopoverPosition, getSafeAreaInsets } from "../utils";
7
+ const POPOVER_MD_BODY_PADDING = 12;
8
+ /**
9
+ * Ionic Popover Enter Animation
10
+ */
11
+ // TODO(FW-2832): types
12
+ export const ionicEnterAnimation = (baseEl, opts) => {
13
+ var _a;
14
+ const { event: ev, size, trigger, reference, side, align } = opts;
15
+ const doc = baseEl.ownerDocument;
16
+ const isRTL = doc.dir === 'rtl';
17
+ const bodyWidth = doc.defaultView.innerWidth;
18
+ const bodyHeight = doc.defaultView.innerHeight;
19
+ const root = getElementRoot(baseEl);
20
+ const contentEl = root.querySelector('.popover-content');
21
+ const referenceSizeEl = trigger || ((_a = ev === null || ev === void 0 ? void 0 : ev.detail) === null || _a === void 0 ? void 0 : _a.ionShadowTarget) || (ev === null || ev === void 0 ? void 0 : ev.target);
22
+ const { contentWidth, contentHeight } = getPopoverDimensions(size, contentEl, referenceSizeEl);
23
+ const defaultPosition = {
24
+ top: bodyHeight / 2 - contentHeight / 2,
25
+ left: bodyWidth / 2 - contentWidth / 2,
26
+ originX: isRTL ? 'right' : 'left',
27
+ originY: 'top',
28
+ };
29
+ const results = getPopoverPosition(isRTL, contentWidth, contentHeight, 0, 0, reference, side, align, defaultPosition, trigger, ev);
30
+ const padding = size === 'cover' ? 0 : POPOVER_MD_BODY_PADDING;
31
+ // MD mode now applies safe-area insets (previously passed 0, ignoring all safe areas).
32
+ // This is needed for Android edge-to-edge (API 36+) where system bars overlap content.
33
+ const safeArea = size === 'cover' ? { top: 0, bottom: 0, left: 0, right: 0 } : getSafeAreaInsets(doc);
34
+ const { originX, originY, top, left, bottom, checkSafeAreaLeft, checkSafeAreaRight, checkSafeAreaTop, checkSafeAreaBottom, addPopoverBottomClass, } = calculateWindowAdjustment(side, results.top, results.left, padding, bodyWidth, bodyHeight, contentWidth, contentHeight, safeArea, results.originX, results.originY, results.referenceCoordinates);
35
+ const safeAreaLeftCalc = ' + var(--ion-safe-area-left, 0px)';
36
+ const safeAreaRightCalc = ' - var(--ion-safe-area-right, 0px)';
37
+ let leftValue = `${left}px`;
38
+ if (checkSafeAreaLeft) {
39
+ leftValue = `${left}px${safeAreaLeftCalc}`;
40
+ }
41
+ if (checkSafeAreaRight) {
42
+ leftValue = `${left}px${safeAreaRightCalc}`;
43
+ }
44
+ let topValue = `${top}px`;
45
+ if (checkSafeAreaTop) {
46
+ topValue = `${top}px + var(--ion-safe-area-top, 0px)`;
47
+ }
48
+ const baseAnimation = createAnimation();
49
+ const backdropAnimation = createAnimation();
50
+ const wrapperAnimation = createAnimation();
51
+ const contentAnimation = createAnimation();
52
+ const viewportAnimation = createAnimation();
53
+ backdropAnimation
54
+ .addElement(root.querySelector('ion-backdrop'))
55
+ .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
56
+ .beforeStyles({
57
+ 'pointer-events': 'none',
58
+ })
59
+ .afterClearStyles(['pointer-events']);
60
+ wrapperAnimation.addElement(root.querySelector('.popover-wrapper')).duration(150).fromTo('opacity', 0.01, 1);
61
+ contentAnimation
62
+ .addElement(contentEl)
63
+ .beforeStyles({
64
+ top: `calc(${topValue} + var(--offset-y, 0px))`,
65
+ left: `calc(${leftValue} + var(--offset-x, 0px))`,
66
+ 'transform-origin': `${originY} ${originX}`,
67
+ })
68
+ .beforeAddWrite(() => {
69
+ if (bottom !== undefined) {
70
+ let bottomValue = `${bottom}px`;
71
+ if (checkSafeAreaBottom) {
72
+ bottomValue = `${bottom}px + var(--ion-safe-area-bottom, 0px)`;
73
+ }
74
+ contentEl.style.setProperty('bottom', `calc(${bottomValue})`);
75
+ }
76
+ })
77
+ .fromTo('transform', 'scale(0.8)', 'scale(1)');
78
+ viewportAnimation.addElement(root.querySelector('.popover-viewport')).fromTo('opacity', 0.01, 1);
79
+ return baseAnimation
80
+ .easing('cubic-bezier(0.36,0.66,0.04,1)')
81
+ .duration(300)
82
+ .beforeAddWrite(() => {
83
+ if (size === 'cover') {
84
+ baseEl.style.setProperty('--width', `${contentWidth}px`);
85
+ }
86
+ if (addPopoverBottomClass) {
87
+ baseEl.classList.add('popover-bottom');
88
+ }
89
+ })
90
+ .addAnimation([backdropAnimation, wrapperAnimation, contentAnimation, viewportAnimation]);
91
+ };
@@ -0,0 +1,29 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { createAnimation } from "../../../utils/animation/animation";
5
+ import { getElementRoot } from "../../../utils/helpers";
6
+ /**
7
+ * Ionic Popover Leave Animation
8
+ */
9
+ export const ionicLeaveAnimation = (baseEl) => {
10
+ const root = getElementRoot(baseEl);
11
+ const contentEl = root.querySelector('.popover-content');
12
+ const baseAnimation = createAnimation();
13
+ const backdropAnimation = createAnimation();
14
+ const wrapperAnimation = createAnimation();
15
+ backdropAnimation.addElement(root.querySelector('ion-backdrop')).fromTo('opacity', 'var(--backdrop-opacity)', 0);
16
+ wrapperAnimation.addElement(root.querySelector('.popover-wrapper')).fromTo('opacity', 0.99, 0);
17
+ return baseAnimation
18
+ .easing('ease')
19
+ .afterAddWrite(() => {
20
+ baseEl.style.removeProperty('--width');
21
+ baseEl.classList.remove('popover-bottom');
22
+ contentEl.style.removeProperty('top');
23
+ contentEl.style.removeProperty('left');
24
+ contentEl.style.removeProperty('bottom');
25
+ contentEl.style.removeProperty('transform-origin');
26
+ })
27
+ .duration(150)
28
+ .addAnimation([backdropAnimation, wrapperAnimation]);
29
+ };
@@ -12,6 +12,7 @@ import { isPlatform } from "../../utils/platform";
12
12
  import { getClassMap } from "../../utils/theme";
13
13
  import { deepReady, waitForMount } from "../../utils/transition/index";
14
14
  import { getIonTheme } from "../../global/ionic-global";
15
+ import { ionicEnterAnimation } from "./animations/ionic.enter";
15
16
  import { iosEnterAnimation } from "./animations/ios.enter";
16
17
  import { iosLeaveAnimation } from "./animations/ios.leave";
17
18
  import { mdEnterAnimation } from "./animations/md.enter";
@@ -359,7 +360,7 @@ export class Popover {
359
360
  else if (!this.keepContentsMounted) {
360
361
  await waitForMount();
361
362
  }
362
- await present(this, 'popoverEnter', iosEnterAnimation, mdEnterAnimation, {
363
+ await present(this, 'popoverEnter', iosEnterAnimation, mdEnterAnimation, ionicEnterAnimation, {
363
364
  event: event || this.event,
364
365
  size: this.size,
365
366
  trigger: this.triggerEl,
@@ -468,9 +469,9 @@ export class Popover {
468
469
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
469
470
  const desktop = isPlatform('desktop');
470
471
  const enableArrow = arrow && !parentPopover;
471
- return (h(Host, Object.assign({ key: 'cc70f9b037b16ea78b999916106a1062ceb74cb6', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
472
+ return (h(Host, Object.assign({ key: '398b4c72cfea89fb743d427e3c2b48507649aff1', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
472
473
  zIndex: `${20000 + this.overlayIndex}`,
473
- }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [theme]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && h("ion-backdrop", { key: 'e641e7ee28cbd54911ec3f8c0bfd9d7e3f2e85cd', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { key: '750494585c3524b27e42d79f02e729f3eff9e660', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { key: '2e49b4ad1287e31a3cdbfebc91120405a998dc95', class: "popover-arrow", part: "arrow" }), h("div", { key: '306586776e74acab787b2a96433553005bca580d', class: "popover-content", part: "content" }, h("slot", { key: '0273c0975cd7dc37db5cfa0b91d418867a77c4d8' })))));
474
+ }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [theme]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && h("ion-backdrop", { key: '6baec0b33665557c55425ffad9c6b31741c25651', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { key: '6ce3a61164f478560cc45c618fc5b7f62b491ecd', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { key: 'a36815fc0417a10fb350429909a79cb4025baf3a', class: "popover-arrow", part: "arrow" }), h("div", { key: 'cec3436cdb2cb6fa839c37abb3cb6daf7de453de', class: "popover-content", part: "content" }, h("slot", { key: '5405fb03bab017acd7fa09d00cfe1b7cfbdfae92' })))));
474
475
  }
475
476
  static get is() { return "ion-popover"; }
476
477
  static get encapsulation() { return "shadow"; }
@@ -81,13 +81,6 @@
81
81
  * @prop --border-width: Width of the select border
82
82
  *
83
83
  * @prop --ripple-color: The color of the ripple effect on MD mode.
84
- *
85
- * @prop --select-text-media-width: The width of media (icons/images) in the select text.
86
- * @prop --select-text-media-height: The height of media (icons/images) in the select text.
87
- * @prop --select-text-media-border-width: The border width of media (icons/images) in the select text.
88
- * @prop --select-text-media-border-color: The border color of media (icons/images) in the select text.
89
- * @prop --select-text-media-border-radius: The border radius of media (icons/images) in the select text.
90
- * @prop --select-text-media-border-style: The border style of media (icons/images) in the select text.
91
84
  */
92
85
  --padding-top: 0px;
93
86
  --padding-end: 0px;
@@ -99,8 +92,6 @@
99
92
  --highlight-color-focused: ion-color(primary, base);
100
93
  --highlight-color-valid: ion-color(success, base);
101
94
  --highlight-color-invalid: ion-color(danger, base);
102
- --select-text-media-height: 1.5em;
103
- --select-text-media-width: 1.5em;
104
95
  /**
105
96
  * This is a private API that is used to switch
106
97
  * out the highlight color based on the state
@@ -205,19 +196,6 @@ button {
205
196
  overflow: hidden;
206
197
  }
207
198
 
208
- .select-text img,
209
- .select-text ion-img,
210
- .select-text ion-icon,
211
- .select-text ion-thumbnail,
212
- .select-text ion-avatar {
213
- border-radius: var(--select-text-media-border-radius);
214
- width: var(--select-text-media-width);
215
- height: var(--select-text-media-height);
216
- border-width: var(--select-text-media-border-width);
217
- border-style: var(--select-text-media-border-style);
218
- border-color: var(--select-text-media-border-color);
219
- }
220
-
221
199
  .select-wrapper {
222
200
  display: flex;
223
201
  position: relative;
@@ -589,15 +567,6 @@ button {
589
567
  color: var(--token-text-default, var(--token-primitives-neutral-1200, #242424));
590
568
  }
591
569
 
592
- /**
593
- * If the select text contains rich content, we want to add some
594
- * spacing between the items without changing the display to prevent
595
- * losing the ellipsis behavior.
596
- */
597
- .select-text > * {
598
- margin-inline-start: var(--token-space-200, var(--token-scale-200, 8px));
599
- }
600
-
601
570
  .label-text-wrapper {
602
571
  font-size: var(--token-font-size-300, 0.75rem);
603
572
  font-weight: var(--token-font-weight-medium, 500);
@@ -103,13 +103,6 @@
103
103
  * @prop --border-width: Width of the select border
104
104
  *
105
105
  * @prop --ripple-color: The color of the ripple effect on MD mode.
106
- *
107
- * @prop --select-text-media-width: The width of media (icons/images) in the select text.
108
- * @prop --select-text-media-height: The height of media (icons/images) in the select text.
109
- * @prop --select-text-media-border-width: The border width of media (icons/images) in the select text.
110
- * @prop --select-text-media-border-color: The border color of media (icons/images) in the select text.
111
- * @prop --select-text-media-border-radius: The border radius of media (icons/images) in the select text.
112
- * @prop --select-text-media-border-style: The border style of media (icons/images) in the select text.
113
106
  */
114
107
  --padding-top: 0px;
115
108
  --padding-end: 0px;
@@ -121,8 +114,6 @@
121
114
  --highlight-color-focused: var(--ion-color-primary, #0054e9);
122
115
  --highlight-color-valid: var(--ion-color-success, #2dd55b);
123
116
  --highlight-color-invalid: var(--ion-color-danger, #c5000f);
124
- --select-text-media-height: 1.5em;
125
- --select-text-media-width: 1.5em;
126
117
  /**
127
118
  * This is a private API that is used to switch
128
119
  * out the highlight color based on the state
@@ -227,19 +218,6 @@ button {
227
218
  overflow: hidden;
228
219
  }
229
220
 
230
- .select-text img,
231
- .select-text ion-img,
232
- .select-text ion-icon,
233
- .select-text ion-thumbnail,
234
- .select-text ion-avatar {
235
- border-radius: var(--select-text-media-border-radius);
236
- width: var(--select-text-media-width);
237
- height: var(--select-text-media-height);
238
- border-width: var(--select-text-media-border-width);
239
- border-style: var(--select-text-media-border-style);
240
- border-color: var(--select-text-media-border-color);
241
- }
242
-
243
221
  .select-wrapper {
244
222
  display: flex;
245
223
  position: relative;
@@ -641,15 +619,6 @@ button {
641
619
  min-width: 16px;
642
620
  }
643
621
 
644
- /**
645
- * If the select text contains rich content, we want to add some
646
- * spacing between the items without changing the display to prevent
647
- * losing the ellipsis behavior.
648
- */
649
- .select-text > * {
650
- margin-inline-start: 8px;
651
- }
652
-
653
622
  .label-text-wrapper {
654
623
  /**
655
624
  * Label text should not extend