@ionic/core 8.8.12-dev.11781813448.16e7a064 → 8.8.12-dev.11782931922.18ba507c
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.
- package/components/index.js +1 -1
- package/components/ion-action-sheet.js +1 -1
- package/components/ion-alert.js +1 -1
- package/components/ion-back-button.js +1 -1
- package/components/ion-button.js +1 -1
- package/components/ion-card.js +1 -1
- package/components/ion-chip.js +1 -1
- package/components/ion-datetime-button.js +1 -1
- package/components/ion-datetime.js +1 -1
- package/components/ion-fab-button.js +1 -1
- package/components/ion-infinite-scroll-content.js +1 -1
- package/components/ion-input-password-toggle.js +1 -1
- package/components/ion-input.js +1 -1
- package/components/ion-item-option.js +1 -1
- package/components/ion-item.js +1 -1
- package/components/ion-loading.js +1 -1
- package/components/ion-menu-button.js +1 -1
- package/components/ion-menu.js +1 -1
- package/components/ion-modal.js +1 -1
- package/components/ion-popover.js +1 -1
- package/components/ion-progress-bar.js +1 -1
- package/components/ion-radio.js +1 -1
- package/components/ion-range.js +1 -1
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +1 -1
- package/components/ion-reorder-group.js +1 -1
- package/components/ion-reorder.js +1 -1
- package/components/ion-ripple-effect.js +1 -1
- package/components/ion-router-link.js +1 -1
- package/components/ion-router-outlet.js +1 -1
- package/components/ion-row.js +1 -1
- package/components/ion-searchbar.js +1 -1
- package/components/ion-segment-button.js +1 -1
- package/components/ion-segment-content.js +1 -1
- package/components/ion-segment-view.js +1 -1
- package/components/ion-segment.js +1 -1
- package/components/ion-select-modal.js +1 -1
- package/components/ion-select-option.js +1 -1
- package/components/ion-select-popover.js +1 -1
- package/components/ion-select.js +1 -1
- package/components/ion-skeleton-text.js +1 -1
- package/components/ion-spinner.js +1 -1
- package/components/ion-split-pane.js +1 -1
- package/components/ion-tab-bar.js +1 -1
- package/components/ion-tab-button.js +1 -1
- package/components/ion-tab.js +1 -1
- package/components/ion-tabs.js +1 -1
- package/components/ion-text.js +1 -1
- package/components/ion-textarea.js +1 -1
- package/components/ion-thumbnail.js +1 -1
- package/components/ion-title.js +1 -1
- package/components/ion-toast.js +1 -1
- package/components/ion-toggle.js +1 -1
- package/components/ion-toolbar.js +1 -1
- package/components/p-279dFMvg.js +4 -0
- package/components/p-BSQPZ79H.js +4 -0
- package/components/p-BwKpO3Is.js +4 -0
- package/components/p-C-Rx1zny.js +4 -0
- package/components/p-CHzfYZbv.js +4 -0
- package/components/p-COdmnpcX.js +4 -0
- package/components/p-D4h1H_hh.js +4 -0
- package/components/{p-C2lKgrXx.js → p-DEBD4LvH.js} +1 -1
- package/components/{p-BSEgsdFI.js → p-DhkITZ-y.js} +1 -1
- package/components/{p-5bE_Wz4Y.js → p-DpV-p5Xs.js} +1 -1
- package/components/{p-Cfx4M1Bn.js → p-Dz74mwlk.js} +1 -1
- package/components/p-LMGfIvTf.js +4 -0
- package/components/{p-BLmJ0zRm.js → p-XJWMAP8m.js} +1 -1
- package/components/p-j9Da6cYO.js +4 -0
- package/components/p-jOtMJMv8.js +4 -0
- package/components/{p-B60hm8Qv.js → p-r0aq7dpt.js} +1 -1
- package/components/p-uTR_dEqg.js +4 -0
- package/components/{p-rCa2eL0j.js → p-wk2QqrAo.js} +1 -1
- package/dist/cjs/config-DWdFbSNK.js +35 -0
- package/dist/cjs/index-Cueg3U4w.js +429 -0
- package/dist/cjs/index.cjs.js +6 -6
- package/dist/cjs/ion-action-sheet.cjs.entry.js +27 -7
- package/dist/cjs/ion-alert.cjs.entry.js +64 -25
- package/dist/cjs/ion-app_8.cjs.entry.js +23 -9
- package/dist/cjs/ion-avatar_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-col_3.cjs.entry.js +1 -1
- package/dist/cjs/{ion-datetime_3.cjs.entry.js → ion-datetime.cjs.entry.js} +1 -639
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -2
- package/dist/cjs/ion-input.cjs.entry.js +4 -4
- package/dist/cjs/ion-item_8.cjs.entry.js +2 -2
- package/dist/cjs/ion-loading.cjs.entry.js +10 -5
- package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-modal.cjs.entry.js +21 -10
- package/dist/cjs/ion-popover.cjs.entry.js +9 -5
- package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
- package/dist/cjs/ion-radio_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-range.cjs.entry.js +3 -3
- package/dist/cjs/ion-refresher_2.cjs.entry.js +6 -5
- package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
- package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
- package/dist/cjs/ion-searchbar.cjs.entry.js +5 -5
- package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment-view.cjs.entry.js +2 -2
- package/dist/cjs/ion-segment_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-select-modal.cjs.entry.js +84 -30
- package/dist/cjs/ion-select_3.cjs.entry.js +407 -49
- package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
- package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-text.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
- package/dist/cjs/ion-toast.cjs.entry.js +6 -5
- package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/overlay-control-label-D2sdL2O8.js +50 -0
- package/dist/cjs/{overlays-TbKsuC-K.js → overlays-DSmSrd_4.js} +26 -7
- package/dist/cjs/select-option-render-DTF50t5r.js +124 -0
- package/dist/collection/collection-manifest.json +6 -10
- package/dist/collection/components/action-sheet/action-sheet.ios.css +229 -2
- package/dist/collection/components/action-sheet/action-sheet.js +24 -5
- package/dist/collection/components/action-sheet/action-sheet.md.css +175 -2
- package/dist/collection/components/alert/alert.ios.css +280 -10
- package/dist/collection/components/alert/alert.js +59 -21
- package/dist/collection/components/alert/alert.md.css +269 -20
- package/dist/collection/components/input/input.js +8 -8
- package/dist/collection/components/loading/loading.js +7 -3
- package/dist/collection/components/modal/modal.js +23 -12
- package/dist/collection/components/popover/popover.ios.css +15 -0
- package/dist/collection/components/popover/popover.js +7 -3
- package/dist/collection/components/popover/popover.md.css +15 -0
- package/dist/collection/components/progress-bar/progress-bar.js +1 -1
- package/dist/collection/components/radio/radio.js +4 -4
- package/dist/collection/components/range/range.js +3 -3
- package/dist/collection/components/refresher/refresher.js +1 -1
- package/dist/collection/components/refresher-content/refresher-content.js +1 -1
- package/dist/collection/components/reorder/reorder.js +1 -1
- package/dist/collection/components/reorder-group/reorder-group.js +1 -1
- package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
- package/dist/collection/components/router-link/router-link.js +2 -2
- package/dist/collection/components/router-outlet/router-outlet.js +38 -5
- package/dist/collection/components/row/row.js +1 -1
- package/dist/collection/components/searchbar/searchbar.js +9 -9
- package/dist/collection/components/segment/segment.js +2 -2
- package/dist/collection/components/segment-button/segment-button.js +2 -2
- package/dist/collection/components/segment-content/segment-content.js +1 -1
- package/dist/collection/components/segment-view/segment-view.js +2 -2
- package/dist/collection/components/select/select.ios.css +33 -0
- package/dist/collection/components/select/select.js +323 -16
- package/dist/collection/components/select/select.md.css +33 -0
- package/dist/collection/components/select-modal/select-modal.ios.css +219 -0
- package/dist/collection/components/select-modal/select-modal.js +79 -26
- package/dist/collection/components/select-modal/select-modal.md.css +165 -0
- package/dist/collection/components/select-option/select-option.js +67 -3
- package/dist/collection/components/select-popover/select-popover.ios.css +219 -0
- package/dist/collection/components/select-popover/select-popover.js +78 -26
- package/dist/collection/components/select-popover/select-popover.md.css +165 -0
- package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
- package/dist/collection/components/spinner/spinner.js +1 -1
- package/dist/collection/components/split-pane/split-pane.js +2 -2
- package/dist/collection/components/tab/tab.js +2 -2
- package/dist/collection/components/tab-bar/tab-bar.js +2 -2
- package/dist/collection/components/tab-button/tab-button.js +2 -2
- package/dist/collection/components/tabs/tabs.js +1 -1
- package/dist/collection/components/text/text.js +2 -2
- package/dist/collection/components/textarea/textarea.js +2 -2
- package/dist/collection/components/thumbnail/thumbnail.js +1 -1
- package/dist/collection/components/title/title.js +2 -2
- package/dist/collection/components/toast/toast.js +2 -2
- package/dist/collection/components/toggle/toggle.js +3 -3
- package/dist/collection/components/toolbar/toolbar.js +2 -2
- package/dist/collection/index.js +1 -1
- package/dist/collection/utils/overlay-control-label.js +45 -0
- package/dist/collection/utils/overlays.js +25 -6
- package/dist/collection/utils/sanitization/index.js +274 -18
- package/dist/collection/utils/select-option-render.js +119 -0
- package/dist/docs.json +480 -1176
- package/dist/esm/config-BwKpO3Is.js +31 -0
- package/dist/esm/{index-DV3sJJW8.js → index-AlrZKoWR.js} +1 -1
- package/dist/esm/index-DQSkZyOJ.js +424 -0
- package/dist/esm/index.js +3 -2
- package/dist/esm/ion-accordion_2.entry.js +1 -1
- package/dist/esm/ion-action-sheet.entry.js +27 -7
- package/dist/esm/ion-alert.entry.js +63 -24
- package/dist/esm/ion-app_8.entry.js +23 -9
- package/dist/esm/ion-avatar_3.entry.js +1 -1
- package/dist/esm/ion-back-button.entry.js +1 -1
- package/dist/esm/ion-breadcrumb_2.entry.js +1 -1
- package/dist/esm/ion-col_3.entry.js +1 -1
- package/dist/esm/{ion-datetime_3.entry.js → ion-datetime.entry.js} +5 -641
- package/dist/esm/ion-fab_3.entry.js +1 -1
- package/dist/esm/ion-infinite-scroll_2.entry.js +2 -1
- package/dist/esm/ion-input-password-toggle.entry.js +1 -1
- package/dist/esm/ion-input.entry.js +5 -5
- package/dist/esm/ion-item_8.entry.js +3 -3
- package/dist/esm/ion-loading.entry.js +9 -4
- package/dist/esm/ion-menu_3.entry.js +2 -2
- package/dist/esm/ion-modal.entry.js +21 -10
- package/dist/esm/ion-popover.entry.js +9 -5
- package/dist/esm/ion-progress-bar.entry.js +1 -1
- package/dist/esm/ion-radio_2.entry.js +3 -3
- package/dist/esm/ion-range.entry.js +3 -3
- package/dist/esm/ion-refresher_2.entry.js +5 -4
- package/dist/esm/ion-reorder_2.entry.js +3 -3
- package/dist/esm/ion-ripple-effect.entry.js +1 -1
- package/dist/esm/ion-route_4.entry.js +2 -2
- package/dist/esm/ion-searchbar.entry.js +6 -6
- package/dist/esm/ion-segment-content.entry.js +1 -1
- package/dist/esm/ion-segment-view.entry.js +2 -2
- package/dist/esm/ion-segment_2.entry.js +4 -4
- package/dist/esm/ion-select-modal.entry.js +84 -30
- package/dist/esm/ion-select_3.entry.js +410 -52
- package/dist/esm/ion-spinner.entry.js +1 -1
- package/dist/esm/ion-split-pane.entry.js +2 -2
- package/dist/esm/ion-tab-bar_2.entry.js +4 -4
- package/dist/esm/ion-tab_2.entry.js +3 -3
- package/dist/esm/ion-text.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +2 -2
- package/dist/esm/ion-toast.entry.js +5 -4
- package/dist/esm/ion-toggle.entry.js +4 -4
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/overlay-control-label-BSQPZ79H.js +47 -0
- package/dist/esm/{overlays-TbiM4mdr.js → overlays-DLNOHWNc.js} +26 -7
- package/dist/esm/select-option-render-B8nWZRnd.js +122 -0
- package/dist/html.html-data.json +51 -79
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-038eb991.entry.js +4 -0
- package/dist/ionic/{p-8fce95d5.entry.js → p-14095ba5.entry.js} +1 -1
- package/dist/ionic/{p-3a126bca.entry.js → p-259d0d98.entry.js} +1 -1
- package/dist/ionic/{p-fabcce6c.entry.js → p-341032b3.entry.js} +1 -1
- package/dist/ionic/{p-3a7d1e91.entry.js → p-4502a274.entry.js} +1 -1
- package/dist/ionic/p-4621c387.entry.js +4 -0
- package/dist/ionic/p-4ace7762.entry.js +4 -0
- package/dist/ionic/p-4bb3eb60.entry.js +4 -0
- package/dist/ionic/p-4e9ec5c5.entry.js +4 -0
- package/dist/ionic/{p-874b4bd8.entry.js → p-51cd1643.entry.js} +1 -1
- package/dist/ionic/p-5c3ec490.entry.js +4 -0
- package/dist/ionic/p-5d1ac2c7.entry.js +4 -0
- package/dist/ionic/{p-3ae5f277.entry.js → p-627fabd9.entry.js} +1 -1
- package/dist/ionic/{p-e0be05c5.entry.js → p-629e4703.entry.js} +1 -1
- package/dist/ionic/{p-5d1da0a2.entry.js → p-76e92a84.entry.js} +1 -1
- package/dist/ionic/p-79a36078.entry.js +4 -0
- package/dist/ionic/{p-9f1103ce.entry.js → p-7a37b3ce.entry.js} +1 -1
- package/dist/ionic/{p-3353c229.entry.js → p-80b44b3c.entry.js} +1 -1
- package/dist/ionic/p-8d624ee5.entry.js +4 -0
- package/dist/ionic/p-913b218a.entry.js +4 -0
- package/dist/ionic/{p-390ca786.entry.js → p-9177f4ac.entry.js} +1 -1
- package/dist/ionic/{p-DV3sJJW8.js → p-AlrZKoWR.js} +1 -1
- package/dist/ionic/p-BDtODLZ4.js +4 -0
- package/dist/ionic/p-BSQPZ79H.js +4 -0
- package/dist/ionic/p-BwKpO3Is.js +4 -0
- package/dist/ionic/p-Cg5-OQYy.js +4 -0
- package/dist/ionic/p-DCOvXkOm.js +4 -0
- package/dist/ionic/{p-4858af1f.entry.js → p-a5213260.entry.js} +1 -1
- package/dist/ionic/{p-37e720da.entry.js → p-a7628bc7.entry.js} +1 -1
- package/dist/ionic/p-a9a33367.entry.js +4 -0
- package/dist/ionic/p-ad728198.entry.js +4 -0
- package/dist/ionic/{p-ef4c3bee.entry.js → p-b1599fca.entry.js} +1 -1
- package/dist/ionic/{p-84d5ce05.entry.js → p-b9ac1fe0.entry.js} +1 -1
- package/dist/ionic/p-bfc8c629.entry.js +4 -0
- package/dist/ionic/p-c08e666a.entry.js +4 -0
- package/dist/ionic/{p-94f2a736.entry.js → p-c93553d2.entry.js} +1 -1
- package/dist/ionic/p-ce7992c4.entry.js +4 -0
- package/dist/ionic/{p-75dc25ba.entry.js → p-d2c7f046.entry.js} +1 -1
- package/dist/ionic/{p-c4d8641b.entry.js → p-d8387b99.entry.js} +1 -1
- package/dist/ionic/{p-9a65ac7f.entry.js → p-db1b6738.entry.js} +1 -1
- package/dist/ionic/p-ed797c72.entry.js +4 -0
- package/dist/ionic/{p-8eb8ee76.entry.js → p-ef93ca92.entry.js} +1 -1
- package/dist/ionic/p-f09f9642.entry.js +4 -0
- package/dist/ionic/p-f1c06f82.entry.js +4 -0
- package/dist/ionic/{p-0fa9c382.entry.js → p-fe4aa1db.entry.js} +1 -1
- package/dist/types/components/input/input.d.ts +1 -1
- package/dist/types/components/modal/modal.d.ts +11 -4
- package/dist/types/components/router-outlet/router-outlet.d.ts +7 -0
- package/dist/types/components/searchbar/searchbar.d.ts +1 -1
- package/dist/types/components/select/select-interface.d.ts +31 -0
- package/dist/types/components/select/select.d.ts +18 -0
- package/dist/types/components/select-option/select-option.d.ts +42 -1
- package/dist/types/components.d.ts +60 -288
- package/dist/types/index.d.ts +1 -1
- package/dist/types/interface.d.ts +0 -1
- package/dist/types/utils/config.d.ts +0 -8
- package/dist/types/utils/overlay-control-label.d.ts +32 -0
- package/dist/types/utils/overlays.d.ts +11 -9
- package/dist/types/utils/sanitization/index.d.ts +58 -2
- package/dist/types/utils/select-option-render.d.ts +53 -0
- package/hydrate/index.js +1400 -1142
- package/hydrate/index.mjs +1400 -1142
- package/package.json +37 -5
- package/components/ion-picker-legacy-column.d.ts +0 -11
- package/components/ion-picker-legacy-column.js +0 -4
- package/components/ion-picker-legacy.d.ts +0 -11
- package/components/ion-picker-legacy.js +0 -4
- package/components/p-0NRupjzW.js +0 -4
- package/components/p-Bth-EzJ0.js +0 -4
- package/components/p-CU5rbWAW.js +0 -4
- package/components/p-DDWp95gH.js +0 -4
- package/components/p-W9CZ2mWX.js +0 -4
- package/components/p-dhLYXa7A.js +0 -4
- package/components/p-k_E4tX5Z.js +0 -4
- package/components/p-nQi4oKcG.js +0 -4
- package/components/p-uVRyUM3z.js +0 -4
- package/dist/cjs/config-xninhj0J.js +0 -201
- package/dist/collection/components/picker-legacy/animations/ios.enter.js +0 -27
- package/dist/collection/components/picker-legacy/animations/ios.leave.js +0 -23
- package/dist/collection/components/picker-legacy/picker-interface.js +0 -1
- package/dist/collection/components/picker-legacy/picker.ios.css +0 -300
- package/dist/collection/components/picker-legacy/picker.js +0 -890
- package/dist/collection/components/picker-legacy/picker.md.css +0 -287
- package/dist/collection/components/picker-legacy-column/picker-column.ios.css +0 -231
- package/dist/collection/components/picker-legacy-column/picker-column.js +0 -422
- package/dist/collection/components/picker-legacy-column/picker-column.md.css +0 -222
- package/dist/collection/components/picker-legacy-column/test/test.utils.js +0 -43
- package/dist/esm/config-DQCONYYp.js +0 -195
- package/dist/ionic/p-00dbb17e.entry.js +0 -4
- package/dist/ionic/p-01f81ea5.entry.js +0 -4
- package/dist/ionic/p-0d005398.entry.js +0 -4
- package/dist/ionic/p-20b1a044.entry.js +0 -4
- package/dist/ionic/p-21eb76d5.entry.js +0 -4
- package/dist/ionic/p-27d30585.entry.js +0 -4
- package/dist/ionic/p-2bb2cb18.entry.js +0 -4
- package/dist/ionic/p-2f55dc1a.entry.js +0 -4
- package/dist/ionic/p-30bf9737.entry.js +0 -4
- package/dist/ionic/p-3a541154.entry.js +0 -4
- package/dist/ionic/p-485fda23.entry.js +0 -4
- package/dist/ionic/p-4baa5b82.entry.js +0 -4
- package/dist/ionic/p-4dc1c33c.entry.js +0 -4
- package/dist/ionic/p-5fc7e542.entry.js +0 -4
- package/dist/ionic/p-DzWaWHGc.js +0 -4
- package/dist/ionic/p-a21add2f.entry.js +0 -4
- package/dist/ionic/p-aa5d6b8f.entry.js +0 -4
- package/dist/ionic/p-e847a888.entry.js +0 -4
- package/dist/ionic/p-ec090e0a.entry.js +0 -4
- package/dist/ionic/p-xOfi7-Zn.js +0 -4
- package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +0 -5
- package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +0 -5
- package/dist/types/components/picker-legacy/picker-interface.d.ts +0 -52
- package/dist/types/components/picker-legacy/picker.d.ts +0 -158
- package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
- package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +0 -9
package/hydrate/index.js
CHANGED
|
@@ -8041,7 +8041,7 @@ const focusElementInOverlay = (hostToFocus, overlay) => {
|
|
|
8041
8041
|
* Should NOT include: Toast
|
|
8042
8042
|
*/
|
|
8043
8043
|
const trapKeyboardFocus = (ev, doc) => {
|
|
8044
|
-
const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-
|
|
8044
|
+
const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-popover');
|
|
8045
8045
|
const target = ev.target;
|
|
8046
8046
|
/**
|
|
8047
8047
|
* If no active overlay, ignore this event.
|
|
@@ -8275,7 +8275,7 @@ const dismissOverlay = (doc, data, role, overlayTag, id) => {
|
|
|
8275
8275
|
*/
|
|
8276
8276
|
const getOverlays = (doc, selector) => {
|
|
8277
8277
|
if (selector === undefined) {
|
|
8278
|
-
selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-
|
|
8278
|
+
selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-popover,ion-toast';
|
|
8279
8279
|
}
|
|
8280
8280
|
return Array.from(doc.querySelectorAll(selector)).filter((c) => c.overlayIndex > 0);
|
|
8281
8281
|
};
|
|
@@ -8337,6 +8337,29 @@ const setRootAriaHidden = (hidden = false) => {
|
|
|
8337
8337
|
viewContainer.removeAttribute('aria-hidden');
|
|
8338
8338
|
}
|
|
8339
8339
|
};
|
|
8340
|
+
/**
|
|
8341
|
+
* Cleans up root `aria-hidden` and `backdrop-no-scroll` when
|
|
8342
|
+
* an overlay is removed from the DOM without going through
|
|
8343
|
+
* the `dismiss()` flow (e.g., when a framework unmounts the
|
|
8344
|
+
* overlay during a route change).
|
|
8345
|
+
*
|
|
8346
|
+
* Should be called from an overlay's `disconnectedCallback`
|
|
8347
|
+
* when the overlay was still presented at the time of removal.
|
|
8348
|
+
*/
|
|
8349
|
+
const cleanupRootFocusTrapAccessibility = () => {
|
|
8350
|
+
if (typeof document === 'undefined') {
|
|
8351
|
+
return;
|
|
8352
|
+
}
|
|
8353
|
+
const remainingOverlays = getPresentedOverlays(document);
|
|
8354
|
+
const hasRemainingLocking = remainingOverlays.some((o) => {
|
|
8355
|
+
const el = o;
|
|
8356
|
+
return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && isBackdropAlwaysBlocking(el);
|
|
8357
|
+
});
|
|
8358
|
+
if (!hasRemainingLocking) {
|
|
8359
|
+
setRootAriaHidden(false);
|
|
8360
|
+
document.body.classList.remove(BACKDROP_NO_SCROLL);
|
|
8361
|
+
}
|
|
8362
|
+
};
|
|
8340
8363
|
const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts) => {
|
|
8341
8364
|
var _a, _b;
|
|
8342
8365
|
if (overlay.presented) {
|
|
@@ -8738,6 +8761,539 @@ const createTriggerController = () => {
|
|
|
8738
8761
|
};
|
|
8739
8762
|
const FOCUS_TRAP_DISABLE_CLASS = 'ion-disable-focus-trap';
|
|
8740
8763
|
|
|
8764
|
+
/**
|
|
8765
|
+
* Sanitize an untrusted HTML string.
|
|
8766
|
+
*
|
|
8767
|
+
* Parses the string into a detached DOM, removes blocked tags, strips
|
|
8768
|
+
* attributes outside the narrow `domStringAllowedAttributes` list (refer
|
|
8769
|
+
* `sanitizeElement`), and scrubs script-scheme URLs. Returns the sanitized
|
|
8770
|
+
* HTML string.
|
|
8771
|
+
*
|
|
8772
|
+
* Use this when you have an HTML string from an unknown source and need to
|
|
8773
|
+
* render it via `innerHTML`. Use `sanitizeDOMTree` instead when you already
|
|
8774
|
+
* have a DOM tree and want to sanitize it in place without a string round
|
|
8775
|
+
* trip. The two apply the same dangerous-vector scrubbing but different
|
|
8776
|
+
* attribute allowlists: this path stays narrow so existing consumers
|
|
8777
|
+
* (toast, loading, alert message, etc.) are unaffected, while
|
|
8778
|
+
* `sanitizeDOMTree` uses the wider rich-content allowlist.
|
|
8779
|
+
*
|
|
8780
|
+
* @param untrustedString - The HTML string to sanitize. Pass an
|
|
8781
|
+
* `IonicSafeString` to bypass sanitization, or `undefined` to short-circuit.
|
|
8782
|
+
* @returns The sanitized HTML string, or `undefined` if the input was
|
|
8783
|
+
* `undefined`. Returns `''` if sanitization fails or the input contains
|
|
8784
|
+
* an inline `onload=` handler.
|
|
8785
|
+
*/
|
|
8786
|
+
const sanitizeDOMString = (untrustedString) => {
|
|
8787
|
+
try {
|
|
8788
|
+
if (untrustedString instanceof IonicSafeString) {
|
|
8789
|
+
return untrustedString.value;
|
|
8790
|
+
}
|
|
8791
|
+
if (!isSanitizerEnabled() || typeof untrustedString !== 'string' || untrustedString === '') {
|
|
8792
|
+
return untrustedString;
|
|
8793
|
+
}
|
|
8794
|
+
/**
|
|
8795
|
+
* onload is fired when appending to a document
|
|
8796
|
+
* fragment in Chrome. If a string
|
|
8797
|
+
* contains onload then we should not
|
|
8798
|
+
* attempt to add this to the fragment.
|
|
8799
|
+
*/
|
|
8800
|
+
if (untrustedString.includes('onload=')) {
|
|
8801
|
+
return '';
|
|
8802
|
+
}
|
|
8803
|
+
/**
|
|
8804
|
+
* Create a document fragment
|
|
8805
|
+
* separate from the main DOM,
|
|
8806
|
+
* create a div to do our work in
|
|
8807
|
+
*/
|
|
8808
|
+
const documentFragment = document.createDocumentFragment();
|
|
8809
|
+
const workingDiv = document.createElement('div');
|
|
8810
|
+
documentFragment.appendChild(workingDiv);
|
|
8811
|
+
workingDiv.innerHTML = untrustedString;
|
|
8812
|
+
/**
|
|
8813
|
+
* Remove any elements
|
|
8814
|
+
* that are blocked
|
|
8815
|
+
*/
|
|
8816
|
+
blockedTags.forEach((blockedTag) => {
|
|
8817
|
+
const getElementsToRemove = documentFragment.querySelectorAll(blockedTag);
|
|
8818
|
+
for (let elementIndex = getElementsToRemove.length - 1; elementIndex >= 0; elementIndex--) {
|
|
8819
|
+
const element = getElementsToRemove[elementIndex];
|
|
8820
|
+
if (element.parentNode) {
|
|
8821
|
+
element.parentNode.removeChild(element);
|
|
8822
|
+
}
|
|
8823
|
+
else {
|
|
8824
|
+
documentFragment.removeChild(element);
|
|
8825
|
+
}
|
|
8826
|
+
/**
|
|
8827
|
+
* We still need to sanitize
|
|
8828
|
+
* the children of this element
|
|
8829
|
+
* as they are left behind
|
|
8830
|
+
*/
|
|
8831
|
+
const childElements = getElementChildren(element);
|
|
8832
|
+
/* eslint-disable-next-line */
|
|
8833
|
+
for (let childIndex = 0; childIndex < childElements.length; childIndex++) {
|
|
8834
|
+
sanitizeElement(childElements[childIndex], domStringAllowedAttributes);
|
|
8835
|
+
}
|
|
8836
|
+
}
|
|
8837
|
+
});
|
|
8838
|
+
/**
|
|
8839
|
+
* Go through remaining elements and remove
|
|
8840
|
+
* non-allowed attribs
|
|
8841
|
+
*/
|
|
8842
|
+
// IE does not support .children on document fragments, only .childNodes
|
|
8843
|
+
const dfChildren = getElementChildren(documentFragment);
|
|
8844
|
+
/* eslint-disable-next-line */
|
|
8845
|
+
for (let childIndex = 0; childIndex < dfChildren.length; childIndex++) {
|
|
8846
|
+
sanitizeElement(dfChildren[childIndex], domStringAllowedAttributes);
|
|
8847
|
+
}
|
|
8848
|
+
// Append document fragment to div
|
|
8849
|
+
const fragmentDiv = document.createElement('div');
|
|
8850
|
+
fragmentDiv.appendChild(documentFragment);
|
|
8851
|
+
// First child is always the div we did our work in
|
|
8852
|
+
const getInnerDiv = fragmentDiv.querySelector('div');
|
|
8853
|
+
return getInnerDiv !== null ? getInnerDiv.innerHTML : fragmentDiv.innerHTML;
|
|
8854
|
+
}
|
|
8855
|
+
catch (err) {
|
|
8856
|
+
printIonError('sanitizeDOMString', err);
|
|
8857
|
+
return '';
|
|
8858
|
+
}
|
|
8859
|
+
};
|
|
8860
|
+
/**
|
|
8861
|
+
* Sanitize an entire trusted DOM tree in place.
|
|
8862
|
+
*
|
|
8863
|
+
* Removes blocked tags (`script`, `iframe`, etc.) from the subtree and
|
|
8864
|
+
* then sanitizes attributes on every remaining element using the wider
|
|
8865
|
+
* `richContentAllowedAttributes` allowlist (refer `sanitizeElement`).
|
|
8866
|
+
* Component presentational attributes (`size`, `color`, `shape`, inline
|
|
8867
|
+
* SVG, `aria-*`, `data-*`) are preserved; `style`, event handlers (`on*`),
|
|
8868
|
+
* form/navigation-hijack attributes, script-scheme URLs, and non-image
|
|
8869
|
+
* `data:` URLs are stripped.
|
|
8870
|
+
*
|
|
8871
|
+
* Use this when you have a DOM tree the developer controls (e.g.
|
|
8872
|
+
* cloned slot content from a component) and you need to render it
|
|
8873
|
+
* elsewhere safely.
|
|
8874
|
+
*
|
|
8875
|
+
* @param root - The root element whose subtree will be sanitized in
|
|
8876
|
+
* place. No-op when the sanitizer is disabled via `Ionic.config`.
|
|
8877
|
+
*/
|
|
8878
|
+
const sanitizeDOMTree = (root) => {
|
|
8879
|
+
if (!isSanitizerEnabled()) {
|
|
8880
|
+
return;
|
|
8881
|
+
}
|
|
8882
|
+
blockedTags.forEach((tag) => {
|
|
8883
|
+
const matches = root.querySelectorAll(tag);
|
|
8884
|
+
for (let i = matches.length - 1; i >= 0; i--) {
|
|
8885
|
+
matches[i].remove();
|
|
8886
|
+
}
|
|
8887
|
+
});
|
|
8888
|
+
sanitizeElement(root, richContentAllowedAttributes, richContentAllowedAttributePrefixes);
|
|
8889
|
+
};
|
|
8890
|
+
/**
|
|
8891
|
+
* Clean up current element based on allowed attributes
|
|
8892
|
+
* and then recursively dig down into any child elements to
|
|
8893
|
+
* clean those up as well
|
|
8894
|
+
*/
|
|
8895
|
+
// TODO(FW-2832): type (using Element triggers other type errors as well)
|
|
8896
|
+
const sanitizeElement = (element, allowedAttributes, allowedAttributePrefixes = []) => {
|
|
8897
|
+
// IE uses childNodes, so ignore nodes that are not elements
|
|
8898
|
+
if (element.nodeType && element.nodeType !== 1) {
|
|
8899
|
+
return;
|
|
8900
|
+
}
|
|
8901
|
+
/**
|
|
8902
|
+
* If attributes is not a NamedNodeMap
|
|
8903
|
+
* then we should remove the element entirely.
|
|
8904
|
+
* This helps avoid DOM Clobbering attacks where
|
|
8905
|
+
* attributes is overridden.
|
|
8906
|
+
*/
|
|
8907
|
+
if (typeof NamedNodeMap !== 'undefined' && !(element.attributes instanceof NamedNodeMap)) {
|
|
8908
|
+
element.remove();
|
|
8909
|
+
return;
|
|
8910
|
+
}
|
|
8911
|
+
/**
|
|
8912
|
+
* Always strip `style` (CSS injection, `background:url()` beaconing, UI
|
|
8913
|
+
* spoofing). It is never on the allowlist, but it is removed explicitly
|
|
8914
|
+
* here because some engines (e.g. jsdom) don't enumerate the CSSOM-backed
|
|
8915
|
+
* `style` attribute in `element.attributes`, which would let the loop
|
|
8916
|
+
* below skip over it.
|
|
8917
|
+
*/
|
|
8918
|
+
element.removeAttribute('style');
|
|
8919
|
+
for (let i = element.attributes.length - 1; i >= 0; i--) {
|
|
8920
|
+
const attribute = element.attributes.item(i);
|
|
8921
|
+
const attributeName = attribute.name;
|
|
8922
|
+
const lowerName = attributeName.toLowerCase();
|
|
8923
|
+
/**
|
|
8924
|
+
* Remove any attribute that is not on the allowlist. This drops event
|
|
8925
|
+
* handlers (`on*`), `style`, the form/navigation-hijack attributes
|
|
8926
|
+
* (`formaction`, `action`, `target`), namespaced attributes like
|
|
8927
|
+
* `xlink:href`, and anything else not explicitly known to be safe.
|
|
8928
|
+
*/
|
|
8929
|
+
if (!isAttributeAllowed(lowerName, allowedAttributes, allowedAttributePrefixes)) {
|
|
8930
|
+
element.removeAttribute(attributeName);
|
|
8931
|
+
continue;
|
|
8932
|
+
}
|
|
8933
|
+
// clean up any allowed attribs
|
|
8934
|
+
// that attempt to do any JS funny-business
|
|
8935
|
+
const attributeValue = attribute.value;
|
|
8936
|
+
if (attributeValue == null) {
|
|
8937
|
+
continue;
|
|
8938
|
+
}
|
|
8939
|
+
/**
|
|
8940
|
+
* Scrub dangerous schemes from the value. The value is normalized first
|
|
8941
|
+
* (whitespace and ASCII control characters removed) so entity-obfuscated
|
|
8942
|
+
* payloads such as `java	script:`, which the parser decodes to
|
|
8943
|
+
* `java\tscript:`, are still caught. Normalizing the value also covers
|
|
8944
|
+
* namespaced attributes, where the previous `element[attributeName]`
|
|
8945
|
+
* property reflection returned `undefined` and let them slip through.
|
|
8946
|
+
*/
|
|
8947
|
+
const normalizedValue = attributeValue.replace(controlCharactersAndWhitespace, '').toLowerCase();
|
|
8948
|
+
// Script schemes are never allowed, on any attribute.
|
|
8949
|
+
if (normalizedValue.includes('javascript:') || normalizedValue.includes('vbscript:')) {
|
|
8950
|
+
element.removeAttribute(attributeName);
|
|
8951
|
+
continue;
|
|
8952
|
+
}
|
|
8953
|
+
/**
|
|
8954
|
+
* For URL-bearing attributes, allow `data:` URIs only for raster
|
|
8955
|
+
* images. Document-bearing types (`text/html`, `image/svg+xml`,
|
|
8956
|
+
* `application/*`, etc.) can carry markup or script when navigated to
|
|
8957
|
+
* or rendered, so they are stripped, while safe image types are kept so
|
|
8958
|
+
* inline images keep working.
|
|
8959
|
+
*/
|
|
8960
|
+
if (urlAttributes.includes(lowerName) &&
|
|
8961
|
+
normalizedValue.startsWith('data:') &&
|
|
8962
|
+
!safeDataImageUri.test(normalizedValue)) {
|
|
8963
|
+
element.removeAttribute(attributeName);
|
|
8964
|
+
}
|
|
8965
|
+
}
|
|
8966
|
+
/**
|
|
8967
|
+
* Sanitize any nested children
|
|
8968
|
+
*/
|
|
8969
|
+
const childElements = getElementChildren(element);
|
|
8970
|
+
/* eslint-disable-next-line */
|
|
8971
|
+
for (let i = 0; i < childElements.length; i++) {
|
|
8972
|
+
sanitizeElement(childElements[i], allowedAttributes, allowedAttributePrefixes);
|
|
8973
|
+
}
|
|
8974
|
+
};
|
|
8975
|
+
/**
|
|
8976
|
+
* IE doesn't always support .children
|
|
8977
|
+
* so we revert to .childNodes instead
|
|
8978
|
+
*/
|
|
8979
|
+
// TODO(FW-2832): type
|
|
8980
|
+
const getElementChildren = (el) => {
|
|
8981
|
+
return el.children != null ? el.children : el.childNodes;
|
|
8982
|
+
};
|
|
8983
|
+
const isSanitizerEnabled = () => {
|
|
8984
|
+
var _a;
|
|
8985
|
+
const win = window;
|
|
8986
|
+
const config = (_a = win === null || win === void 0 ? void 0 : win.Ionic) === null || _a === void 0 ? void 0 : _a.config;
|
|
8987
|
+
if (config) {
|
|
8988
|
+
if (config.get) {
|
|
8989
|
+
return config.get('sanitizerEnabled', true);
|
|
8990
|
+
}
|
|
8991
|
+
else {
|
|
8992
|
+
return config.sanitizerEnabled === true || config.sanitizerEnabled === undefined;
|
|
8993
|
+
}
|
|
8994
|
+
}
|
|
8995
|
+
return true;
|
|
8996
|
+
};
|
|
8997
|
+
/**
|
|
8998
|
+
* Mirror known custom-element DOM properties onto attributes so they
|
|
8999
|
+
* survive `cloneNode`. Call this on a DOM subtree before cloning it for
|
|
9000
|
+
* rendering elsewhere (e.g. cloning slotted option content into an
|
|
9001
|
+
* overlay).
|
|
9002
|
+
*
|
|
9003
|
+
* Only sets the attribute when the property holds a non-empty string
|
|
9004
|
+
* and the attribute isn't already present, so existing attributes
|
|
9005
|
+
* take precedence.
|
|
9006
|
+
*
|
|
9007
|
+
* @param root - The root element whose subtree (and itself) will be
|
|
9008
|
+
* inspected.
|
|
9009
|
+
*/
|
|
9010
|
+
const reflectPropertiesToAttributes = (root) => {
|
|
9011
|
+
const candidates = [];
|
|
9012
|
+
if (root.tagName in elementPropsToReflect) {
|
|
9013
|
+
candidates.push(root);
|
|
9014
|
+
}
|
|
9015
|
+
for (const tagName of Object.keys(elementPropsToReflect)) {
|
|
9016
|
+
candidates.push(...Array.from(root.querySelectorAll(tagName.toLowerCase())));
|
|
9017
|
+
}
|
|
9018
|
+
for (const el of candidates) {
|
|
9019
|
+
if (!(el.tagName in elementPropsToReflect)) {
|
|
9020
|
+
continue;
|
|
9021
|
+
}
|
|
9022
|
+
const props = elementPropsToReflect[el.tagName];
|
|
9023
|
+
for (const prop of props) {
|
|
9024
|
+
const value = el[prop];
|
|
9025
|
+
if (typeof value === 'string' && value.length > 0 && !el.hasAttribute(prop)) {
|
|
9026
|
+
el.setAttribute(prop, value);
|
|
9027
|
+
}
|
|
9028
|
+
}
|
|
9029
|
+
}
|
|
9030
|
+
};
|
|
9031
|
+
/**
|
|
9032
|
+
* Attribute allowlist for `sanitizeDOMString`. Intentionally narrow: this
|
|
9033
|
+
* path sanitizes developer HTML strings rendered via `innerHTML` by
|
|
9034
|
+
* `ion-toast`, `ion-loading`, the `ion-alert` message,
|
|
9035
|
+
* `ion-refresher-content`, and `ion-infinite-scroll-content`, so the list
|
|
9036
|
+
* is kept to the minimum those have always needed. Broadening it here would
|
|
9037
|
+
* change sanitization output for all of those consumers, so the wider
|
|
9038
|
+
* rich-content allowlist below is deliberately scoped to `sanitizeDOMTree`
|
|
9039
|
+
* instead.
|
|
9040
|
+
*/
|
|
9041
|
+
const domStringAllowedAttributes = ['class', 'id', 'href', 'src', 'name', 'slot'];
|
|
9042
|
+
/**
|
|
9043
|
+
* Attribute allowlist for `sanitizeDOMTree` (the select rich-content path).
|
|
9044
|
+
* Covers global HTML attributes, the Ionic component presentational props
|
|
9045
|
+
* that cloned rich content (e.g. `ion-select-option` markup) relies on, and
|
|
9046
|
+
* the inert SVG presentation attributes used by inline icons.
|
|
9047
|
+
*
|
|
9048
|
+
* `aria-*` and `data-*` are allowed separately by prefix (refer
|
|
9049
|
+
* `richContentAllowedAttributePrefixes`) since they are inert and not worth
|
|
9050
|
+
* enumerating. URL-bearing names (`href`, `src`) are allowed here, but
|
|
9051
|
+
* their values are still scrubbed for script schemes in `sanitizeElement`.
|
|
9052
|
+
*
|
|
9053
|
+
* Notably absent: `style`, event handlers (`on*`), and the
|
|
9054
|
+
* form/navigation-hijack attributes (`formaction`, `action`, `target`),
|
|
9055
|
+
* which are therefore stripped.
|
|
9056
|
+
*/
|
|
9057
|
+
const richContentAllowedAttributes = [
|
|
9058
|
+
// Global / structural
|
|
9059
|
+
'class',
|
|
9060
|
+
'id',
|
|
9061
|
+
'slot',
|
|
9062
|
+
'name',
|
|
9063
|
+
'title',
|
|
9064
|
+
'alt',
|
|
9065
|
+
'lang',
|
|
9066
|
+
'dir',
|
|
9067
|
+
'role',
|
|
9068
|
+
'type',
|
|
9069
|
+
'value',
|
|
9070
|
+
'disabled',
|
|
9071
|
+
'width',
|
|
9072
|
+
'height',
|
|
9073
|
+
'href',
|
|
9074
|
+
'src',
|
|
9075
|
+
// Ionic component presentational props
|
|
9076
|
+
'color',
|
|
9077
|
+
'size',
|
|
9078
|
+
'shape',
|
|
9079
|
+
'fill',
|
|
9080
|
+
'expand',
|
|
9081
|
+
'mode',
|
|
9082
|
+
'theme',
|
|
9083
|
+
'icon',
|
|
9084
|
+
'label',
|
|
9085
|
+
'label-placement',
|
|
9086
|
+
'justify',
|
|
9087
|
+
'inset',
|
|
9088
|
+
'lines',
|
|
9089
|
+
'ios',
|
|
9090
|
+
'md',
|
|
9091
|
+
// SVG presentation attributes (compared lowercased, e.g. `viewBox`)
|
|
9092
|
+
'xmlns',
|
|
9093
|
+
'viewbox',
|
|
9094
|
+
'preserveaspectratio',
|
|
9095
|
+
'stroke',
|
|
9096
|
+
'stroke-width',
|
|
9097
|
+
'stroke-linecap',
|
|
9098
|
+
'stroke-linejoin',
|
|
9099
|
+
'stroke-opacity',
|
|
9100
|
+
'stroke-dasharray',
|
|
9101
|
+
'fill-rule',
|
|
9102
|
+
'fill-opacity',
|
|
9103
|
+
'clip-rule',
|
|
9104
|
+
'd',
|
|
9105
|
+
'points',
|
|
9106
|
+
'cx',
|
|
9107
|
+
'cy',
|
|
9108
|
+
'r',
|
|
9109
|
+
'rx',
|
|
9110
|
+
'ry',
|
|
9111
|
+
'x',
|
|
9112
|
+
'y',
|
|
9113
|
+
'x1',
|
|
9114
|
+
'y1',
|
|
9115
|
+
'x2',
|
|
9116
|
+
'y2',
|
|
9117
|
+
'transform',
|
|
9118
|
+
'opacity',
|
|
9119
|
+
];
|
|
9120
|
+
/**
|
|
9121
|
+
* Attribute-name prefixes that are always safe to keep in the rich-content
|
|
9122
|
+
* path. `aria-*` and `data-*` attributes cannot execute script or load
|
|
9123
|
+
* resources, so they are allowed wholesale rather than enumerated by name.
|
|
9124
|
+
*/
|
|
9125
|
+
const richContentAllowedAttributePrefixes = ['aria-', 'data-'];
|
|
9126
|
+
/**
|
|
9127
|
+
* Whether an attribute name (already lowercased) is safe to keep, by exact
|
|
9128
|
+
* match or by an allowed prefix.
|
|
9129
|
+
*/
|
|
9130
|
+
const isAttributeAllowed = (lowerName, allowedAttributes, allowedAttributePrefixes) => {
|
|
9131
|
+
if (allowedAttributes.includes(lowerName)) {
|
|
9132
|
+
return true;
|
|
9133
|
+
}
|
|
9134
|
+
return allowedAttributePrefixes.some((prefix) => lowerName.startsWith(prefix));
|
|
9135
|
+
};
|
|
9136
|
+
/**
|
|
9137
|
+
* Matches ASCII control characters and whitespace (including the
|
|
9138
|
+
* non-breaking space). Used to normalize attribute values before matching
|
|
9139
|
+
* a URL scheme so entity-obfuscated payloads such as `java	script:`
|
|
9140
|
+
* (decoded by the parser to `java\tscript:`) can't smuggle a scheme past
|
|
9141
|
+
* the check.
|
|
9142
|
+
*/
|
|
9143
|
+
// eslint-disable-next-line no-control-regex -- matching control characters is the point
|
|
9144
|
+
const controlCharactersAndWhitespace = /[\u0000-\u0020\u007f-\u00a0]/g;
|
|
9145
|
+
/**
|
|
9146
|
+
* Attributes whose values are URLs. Their values are scheme-checked in
|
|
9147
|
+
* `sanitizeElement` (e.g. `data:` filtering) beyond the script-scheme scrub
|
|
9148
|
+
* applied to every attribute.
|
|
9149
|
+
*/
|
|
9150
|
+
const urlAttributes = ['href', 'src'];
|
|
9151
|
+
/**
|
|
9152
|
+
* Matches a `data:` URI for a raster image type that cannot carry script.
|
|
9153
|
+
* `image/svg+xml` is deliberately excluded (SVG can execute script), as are
|
|
9154
|
+
* document types like `text/html` and `application/*`. The value is already
|
|
9155
|
+
* lowercased and whitespace-stripped before this is tested.
|
|
9156
|
+
*/
|
|
9157
|
+
const safeDataImageUri = /^data:image\/(?:png|jpe?g|gif|webp|bmp|avif|x-icon|vnd\.microsoft\.icon)[;,]/;
|
|
9158
|
+
/**
|
|
9159
|
+
* Tags removed entirely (with their subtree) before attribute sanitization.
|
|
9160
|
+
* Exported so tests can assert the set without hardcoding it.
|
|
9161
|
+
*/
|
|
9162
|
+
const blockedTags = ['script', 'style', 'iframe', 'meta', 'link', 'object', 'embed', 'base'];
|
|
9163
|
+
/**
|
|
9164
|
+
* Properties on custom elements that frameworks (Vue, Angular) often
|
|
9165
|
+
* set as DOM properties rather than attributes. `cloneNode` only copies
|
|
9166
|
+
* attributes, so these values are lost when slotted content is cloned
|
|
9167
|
+
* into an overlay. For each known custom element, we mirror the listed
|
|
9168
|
+
* properties onto attributes so the cloned copy still has the data it
|
|
9169
|
+
* needs to render.
|
|
9170
|
+
*
|
|
9171
|
+
* Keyed by uppercased tagName so the lookup matches `Element.tagName`.
|
|
9172
|
+
*/
|
|
9173
|
+
const elementPropsToReflect = {
|
|
9174
|
+
'ION-ICON': ['icon', 'name', 'src', 'ios', 'md'],
|
|
9175
|
+
};
|
|
9176
|
+
class IonicSafeString {
|
|
9177
|
+
constructor(value) {
|
|
9178
|
+
this.value = value;
|
|
9179
|
+
}
|
|
9180
|
+
}
|
|
9181
|
+
|
|
9182
|
+
/**
|
|
9183
|
+
* Converts a DOM node into a Stencil VNode (or text string) so the
|
|
9184
|
+
* resulting tree is rendered through the component's normal render
|
|
9185
|
+
* path. Rendering through Stencil ensures that scoped CSS classes
|
|
9186
|
+
* (e.g. `sc-ion-action-sheet-ionic`) are applied to every element.
|
|
9187
|
+
*
|
|
9188
|
+
* Highly recommended to pre-sanitize the source DOM (see
|
|
9189
|
+
* `getOptionContent` in select.tsx). This function performs pure
|
|
9190
|
+
* structural conversion — no security filtering.
|
|
9191
|
+
*
|
|
9192
|
+
* Preserves attributes only — properties set imperatively on the source
|
|
9193
|
+
* element (e.g. `input.value` after a user types) won't carry through.
|
|
9194
|
+
* In practice this isn't a concern: interactive controls shouldn't
|
|
9195
|
+
* appear in select-option rich content since they'd nest inside the
|
|
9196
|
+
* overlay's button/radio/checkbox wrapper, which is invalid HTML and
|
|
9197
|
+
* an accessibility issue.
|
|
9198
|
+
*
|
|
9199
|
+
* @param node - The DOM node to convert. Text nodes become strings,
|
|
9200
|
+
* element nodes become VNodes, and any other node types are skipped.
|
|
9201
|
+
* @param keyPrefix - String prefix used to build a stable VNode key,
|
|
9202
|
+
* so Stencil's diff can preserve elements across re-renders.
|
|
9203
|
+
* @param index - Position of this node among its siblings. Combined
|
|
9204
|
+
* with `keyPrefix` to form the final unique key.
|
|
9205
|
+
* @returns The converted VNode, a text string, or `null` if the node
|
|
9206
|
+
* type isn't supported.
|
|
9207
|
+
*
|
|
9208
|
+
* @internal Exported only so it can be unit tested; not part of the
|
|
9209
|
+
* public API.
|
|
9210
|
+
*/
|
|
9211
|
+
const cloneToVNode = (node, keyPrefix, index) => {
|
|
9212
|
+
var _a;
|
|
9213
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
9214
|
+
return (_a = node.textContent) !== null && _a !== void 0 ? _a : '';
|
|
9215
|
+
}
|
|
9216
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
9217
|
+
return null;
|
|
9218
|
+
}
|
|
9219
|
+
const el = node;
|
|
9220
|
+
const tag = el.tagName.toLowerCase();
|
|
9221
|
+
const key = `${keyPrefix}-${index}`;
|
|
9222
|
+
const attrs = { key };
|
|
9223
|
+
for (let i = 0; i < el.attributes.length; i++) {
|
|
9224
|
+
const attr = el.attributes.item(i);
|
|
9225
|
+
attrs[attr.name] = attr.value;
|
|
9226
|
+
}
|
|
9227
|
+
const children = Array.from(el.childNodes)
|
|
9228
|
+
.map((child, i) => cloneToVNode(child, key, i))
|
|
9229
|
+
.filter((c) => c !== null);
|
|
9230
|
+
return hAsync(tag, attrs, children);
|
|
9231
|
+
};
|
|
9232
|
+
/**
|
|
9233
|
+
* Renders cloned DOM content as Stencil JSX. Walking the source DOM
|
|
9234
|
+
* into VNodes (rather than injecting it via innerHTML) keeps the
|
|
9235
|
+
* content inside Stencil's render path, so scoped CSS classes are
|
|
9236
|
+
* applied automatically and component attributes like `size` or
|
|
9237
|
+
* `color` survive intact.
|
|
9238
|
+
*
|
|
9239
|
+
* Span elements should be used when this content renders within buttons,
|
|
9240
|
+
* depending on the select interface. Buttons can only have phrasing
|
|
9241
|
+
* content to prevent accessibility issues.
|
|
9242
|
+
*
|
|
9243
|
+
* @param id - Unique identifier for generating stable virtual DOM keys.
|
|
9244
|
+
* @param content - The HTMLElement container whose child nodes will be cloned.
|
|
9245
|
+
* @param className - CSS class applied to the wrapper element.
|
|
9246
|
+
* @param useSpan - Whether to use a span element instead of a div for the wrapper.
|
|
9247
|
+
*/
|
|
9248
|
+
const renderClonedContent = (id, content, className, useSpan = false) => {
|
|
9249
|
+
const Tag = useSpan ? 'span' : 'div';
|
|
9250
|
+
const keyPrefix = `${className}-${id}`;
|
|
9251
|
+
/**
|
|
9252
|
+
* Do not remove. This is the only sanitization pass for callers that pass
|
|
9253
|
+
* an `HTMLElement` straight to `renderOptionLabel` (e.g. vanilla JS)
|
|
9254
|
+
* without going through `getOptionContent`, which sanitizes upstream.
|
|
9255
|
+
* `cloneToVNode` does pure structural conversion and no security
|
|
9256
|
+
* filtering, so dropping this call would reopen an XSS hole on the
|
|
9257
|
+
* direct `HTMLElement` path.
|
|
9258
|
+
*/
|
|
9259
|
+
sanitizeDOMTree(content);
|
|
9260
|
+
return (hAsync(Tag, { class: className, key: keyPrefix }, Array.from(content.childNodes).map((child, i) => cloneToVNode(child, keyPrefix, i))));
|
|
9261
|
+
};
|
|
9262
|
+
/**
|
|
9263
|
+
* Renders the label content for a select option within an overlay
|
|
9264
|
+
* interface based on the presence of rich content.
|
|
9265
|
+
*
|
|
9266
|
+
* Span elements should be used when this content renders within buttons,
|
|
9267
|
+
* depending on the select interface. Buttons can only have phrasing
|
|
9268
|
+
* content to prevent accessibility issues.
|
|
9269
|
+
*
|
|
9270
|
+
* @param option - The content option data containing label, slots,
|
|
9271
|
+
* and description.
|
|
9272
|
+
* @param className - The base CSS class for the label element.
|
|
9273
|
+
* @param useSpan - Whether to use a span element instead of a div for the label.
|
|
9274
|
+
*/
|
|
9275
|
+
const renderOptionLabel = (option, className, useSpan = false) => {
|
|
9276
|
+
const { id, label, startContent, endContent, description } = option;
|
|
9277
|
+
const hasRichContent = !!startContent || !!endContent || !!description;
|
|
9278
|
+
const Tag = useSpan ? 'span' : 'div';
|
|
9279
|
+
// Render simple string label if there is no rich content to display
|
|
9280
|
+
if (!hasRichContent && (typeof label === 'string' || !label)) {
|
|
9281
|
+
return (hAsync(Tag, { class: className, key: `${className}-${id}` }, label));
|
|
9282
|
+
}
|
|
9283
|
+
// Render the main label
|
|
9284
|
+
const labelEl = typeof label === 'string' || !label ? (
|
|
9285
|
+
// Label is a simple string or undefined
|
|
9286
|
+
hAsync(Tag, { key: `${className}-label-${id}` }, label)) : (
|
|
9287
|
+
// Label is an HTMLElement with potential rich content
|
|
9288
|
+
renderClonedContent(id, label, `${className}-text`, useSpan));
|
|
9289
|
+
// No rich content, render just the label
|
|
9290
|
+
if (!hasRichContent) {
|
|
9291
|
+
return (hAsync(Tag, { class: className, key: `${className}-${id}` }, labelEl));
|
|
9292
|
+
}
|
|
9293
|
+
// Render label with rich content (start, end, description)
|
|
9294
|
+
return (hAsync(Tag, { class: `${className} ${className}-has-rich-content`, key: `${className}-${id}` }, startContent && renderClonedContent(id, startContent, 'select-option-start', useSpan), hAsync(Tag, { class: "select-option-content", key: `${className}-content-${id}` }, labelEl, description && (hAsync(Tag, { class: "select-option-description", key: `${className}-desc-${id}` }, description))), endContent && renderClonedContent(id, endContent, 'select-option-end', useSpan)));
|
|
9295
|
+
};
|
|
9296
|
+
|
|
8741
9297
|
const hostContext = (selector, el) => {
|
|
8742
9298
|
return el.closest(selector) !== null;
|
|
8743
9299
|
};
|
|
@@ -9593,7 +10149,7 @@ const createAnimation = (animationId) => {
|
|
|
9593
10149
|
/**
|
|
9594
10150
|
* iOS Action Sheet Enter Animation
|
|
9595
10151
|
*/
|
|
9596
|
-
const iosEnterAnimation$
|
|
10152
|
+
const iosEnterAnimation$5 = (baseEl) => {
|
|
9597
10153
|
const baseAnimation = createAnimation();
|
|
9598
10154
|
const backdropAnimation = createAnimation();
|
|
9599
10155
|
const wrapperAnimation = createAnimation();
|
|
@@ -9617,7 +10173,7 @@ const iosEnterAnimation$6 = (baseEl) => {
|
|
|
9617
10173
|
/**
|
|
9618
10174
|
* iOS Action Sheet Leave Animation
|
|
9619
10175
|
*/
|
|
9620
|
-
const iosLeaveAnimation$
|
|
10176
|
+
const iosLeaveAnimation$5 = (baseEl) => {
|
|
9621
10177
|
const baseAnimation = createAnimation();
|
|
9622
10178
|
const backdropAnimation = createAnimation();
|
|
9623
10179
|
const wrapperAnimation = createAnimation();
|
|
@@ -9674,9 +10230,9 @@ const mdLeaveAnimation$5 = (baseEl) => {
|
|
|
9674
10230
|
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
9675
10231
|
};
|
|
9676
10232
|
|
|
9677
|
-
const actionSheetIosCss = () => `.sc-ion-action-sheet-ios-h{--color:initial;--button-color-activated:var(--button-color);--button-color-focused:var(--button-color);--button-color-hover:var(--button-color);--button-color-selected:var(--button-color);--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--height:auto;--max-height:calc(100% - (var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:block;position:fixed;outline:none;font-family:var(--ion-font-family, inherit);-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-action-sheet-ios-h{display:none}.action-sheet-wrapper.sc-ion-action-sheet-ios{left:0;right:0;bottom:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:block;position:absolute;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);z-index:10;pointer-events:none}.action-sheet-button.sc-ion-action-sheet-ios{display:block;position:relative;width:100%;border:0;outline:none;background:var(--button-background);color:var(--button-color);font-family:inherit;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-ios:disabled{color:var(--button-color-disabled);opacity:0.4}.action-sheet-button-inner.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;pointer-events:none;width:100%;height:100%;z-index:1}.action-sheet-container.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-ms-flex-pack:end;justify-content:flex-end;height:100%;max-height:calc(100vh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)));max-height:calc(100dvh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)))}.action-sheet-group.sc-ion-action-sheet-ios{-ms-flex-negative:2;flex-shrink:2;overscroll-behavior-y:contain;overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:all;background:var(--background)}@media (any-pointer: coarse){.action-sheet-group.sc-ion-action-sheet-ios::-webkit-scrollbar{display:none}}.action-sheet-group-cancel.sc-ion-action-sheet-ios{-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-ios::after{left:0;right:0;top:0;bottom:0;position:absolute;content:"";opacity:0}.action-sheet-selected.sc-ion-action-sheet-ios{color:var(--button-color-selected)}.action-sheet-selected.sc-ion-action-sheet-ios::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-button.ion-activated.sc-ion-action-sheet-ios{color:var(--button-color-activated)}.action-sheet-button.ion-activated.sc-ion-action-sheet-ios::after{background:var(--button-background-activated);opacity:var(--button-background-activated-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ios{color:var(--button-color-focused)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ios::after{background:var(--button-background-focused);opacity:var(--button-background-focused-opacity)}@media (any-hover: hover){.action-sheet-button.sc-ion-action-sheet-ios:not(:disabled):hover{color:var(--button-color-hover)}.action-sheet-button.sc-ion-action-sheet-ios:not(:disabled):hover::after{background:var(--button-background-hover);opacity:var(--button-background-hover-opacity)}}.sc-ion-action-sheet-ios-h{--background:var(--ion-overlay-background-color, var(--ion-color-step-100, var(--ion-background-color-step-100, #f9f9f9)));--backdrop-opacity:var(--ion-backdrop-opacity, 0.4);--button-background:linear-gradient(0deg, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08), rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08) 50%, transparent 50%) bottom/100% 1px no-repeat transparent;--button-background-activated:var(--ion-text-color, #000);--button-background-activated-opacity:.08;--button-background-hover:currentColor;--button-background-hover-opacity:.04;--button-background-focused:currentColor;--button-background-focused-opacity:.12;--button-background-selected:var(--ion-color-step-150, var(--ion-background-color-step-150, var(--ion-background-color, #fff)));--button-background-selected-opacity:1;--button-color:var(--ion-color-primary, #0054e9);--button-color-disabled:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));--color:var(--ion-color-step-400, var(--ion-text-color-step-600, #999999));text-align:center}.action-sheet-wrapper.sc-ion-action-sheet-ios{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:var(--ion-safe-area-top, 0);padding-bottom:var(--ion-safe-area-bottom, 0);-webkit-box-sizing:content-box;box-sizing:content-box}.action-sheet-container.sc-ion-action-sheet-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0}.action-sheet-group.sc-ion-action-sheet-ios{border-radius:13px;margin-bottom:8px}.action-sheet-group.sc-ion-action-sheet-ios:first-child{margin-top:10px}.action-sheet-group.sc-ion-action-sheet-ios:last-child{margin-bottom:10px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-group.sc-ion-action-sheet-ios{background-color:transparent;-webkit-backdrop-filter:saturate(280%) blur(20px);backdrop-filter:saturate(280%) blur(20px)}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-title.sc-ion-action-sheet-ios,.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-button.sc-ion-action-sheet-ios{background-color:transparent;background-image:-webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)), to(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8))), -webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4)), color-stop(50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4)), color-stop(50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)));background-image:linear-gradient(0deg, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8), rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%), linear-gradient(0deg, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4), rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4) 50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 50%);background-repeat:no-repeat;background-position:top, bottom;background-size:100% calc(100% - 1px), 100% 1px;-webkit-backdrop-filter:saturate(120%);backdrop-filter:saturate(120%)}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-button.ion-activated.sc-ion-action-sheet-ios{background-color:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.7);background-image:none}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-cancel.sc-ion-action-sheet-ios{background:var(--button-background-selected)}}.action-sheet-title.sc-ion-action-sheet-ios{background:-webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08)), color-stop(50%, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08)), color-stop(50%, transparent)) bottom/100% 1px no-repeat transparent;background:linear-gradient(0deg, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08), rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08) 50%, transparent 50%) bottom/100% 1px no-repeat transparent}.action-sheet-title.sc-ion-action-sheet-ios{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:14px;padding-bottom:13px;color:var(--color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-size:max(13px, 0.8125rem);font-weight:400;text-align:center}.action-sheet-title.action-sheet-has-sub-title.sc-ion-action-sheet-ios{font-weight:600}.action-sheet-sub-title.sc-ion-action-sheet-ios{padding-left:0;padding-right:0;padding-top:6px;padding-bottom:0;font-size:max(13px, 0.8125rem);font-weight:400}.action-sheet-button.sc-ion-action-sheet-ios{-webkit-padding-start:14px;padding-inline-start:14px;-webkit-padding-end:14px;padding-inline-end:14px;padding-top:14px;padding-bottom:14px;min-height:56px;font-size:max(20px, 1.25rem);contain:content}.action-sheet-button.sc-ion-action-sheet-ios .action-sheet-icon.sc-ion-action-sheet-ios{-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:max(28px, 1.75rem);pointer-events:none}.action-sheet-button.sc-ion-action-sheet-ios:last-child{background-image:none}.action-sheet-selected.sc-ion-action-sheet-ios{font-weight:bold}.action-sheet-cancel.sc-ion-action-sheet-ios{font-weight:600}.action-sheet-cancel.sc-ion-action-sheet-ios::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-destructive.sc-ion-action-sheet-ios,.action-sheet-destructive.ion-activated.sc-ion-action-sheet-ios,.action-sheet-destructive.ion-focused.sc-ion-action-sheet-ios{color:var(--ion-color-danger, #c5000f)}@media (any-hover: hover){.action-sheet-destructive.sc-ion-action-sheet-ios:hover{color:var(--ion-color-danger, #c5000f)}}`;
|
|
10233
|
+
const actionSheetIosCss = () => `.action-sheet-button-label-has-rich-content.sc-ion-action-sheet-ios,.alert-radio-label-has-rich-content.sc-ion-action-sheet-ios,.alert-checkbox-label-has-rich-content.sc-ion-action-sheet-ios,.select-option-label-has-rich-content.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:16px}.action-sheet-button-label-has-rich-content.sc-ion-action-sheet-ios,.alert-radio-label-has-rich-content.sc-ion-action-sheet-ios,.alert-checkbox-label-has-rich-content.sc-ion-action-sheet-ios,.select-option-content.sc-ion-action-sheet-ios{-ms-flex:1;flex:1}.action-sheet-button-label-text.sc-ion-action-sheet-ios,.alert-checkbox-label-text.sc-ion-action-sheet-ios,.alert-radio-label-text.sc-ion-action-sheet-ios,.select-option-label-text.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:12px}.select-option-start.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px}.select-option-description.sc-ion-action-sheet-ios{padding-left:0;padding-right:0;padding-top:5px;padding-bottom:0;display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem}.select-option-label.sc-ion-action-sheet-ios:not(.select-option-label-has-rich-content){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-option-label-has-rich-content.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}ion-radio.select-option-has-rich-content.sc-ion-action-sheet-ios::part(label),ion-radio.select-option-has-rich-content.sc-ion-action-sheet-ios [part~="label"],ion-checkbox.select-option-has-rich-content.sc-ion-action-sheet-ios::part(label),ion-checkbox.select-option-has-rich-content.sc-ion-action-sheet-ios [part~="label"],.select-option-content.sc-ion-action-sheet-ios{-ms-flex:1;flex:1;white-space:normal}.select-option-start.sc-ion-action-sheet-ios>ion-avatar.sc-ion-action-sheet-ios,.select-option-start.sc-ion-action-sheet-ios>ion-img.sc-ion-action-sheet-ios,.select-option-start.sc-ion-action-sheet-ios>ion-thumbnail.sc-ion-action-sheet-ios,.select-option-start.sc-ion-action-sheet-ios>img.sc-ion-action-sheet-ios,.select-option-start.sc-ion-action-sheet-ios>svg.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios>ion-avatar.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios>ion-img.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios>ion-thumbnail.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios>img.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios>svg.sc-ion-action-sheet-ios{width:44px;height:44px}.select-option-start.sc-ion-action-sheet-ios>ion-icon.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios>ion-icon.sc-ion-action-sheet-ios{width:28px;height:28px}.action-sheet-button-label-text.sc-ion-action-sheet-ios{-ms-flex-pack:center;justify-content:center}.select-option-has-rich-content.sc-ion-action-sheet-ios{-webkit-padding-end:16px;padding-inline-end:16px}.sc-ion-action-sheet-ios-h{--color:initial;--button-color-activated:var(--button-color);--button-color-focused:var(--button-color);--button-color-hover:var(--button-color);--button-color-selected:var(--button-color);--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--height:auto;--max-height:calc(100% - (var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:block;position:fixed;outline:none;font-family:var(--ion-font-family, inherit);-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-action-sheet-ios-h{display:none}.action-sheet-wrapper.sc-ion-action-sheet-ios{left:0;right:0;bottom:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:block;position:absolute;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);z-index:10;pointer-events:none}.action-sheet-button.sc-ion-action-sheet-ios{display:block;position:relative;width:100%;border:0;outline:none;background:var(--button-background);color:var(--button-color);font-family:inherit;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-ios:disabled{color:var(--button-color-disabled);opacity:0.4}.action-sheet-button.sc-ion-action-sheet-ios:disabled ion-icon.sc-ion-action-sheet-ios{color:currentColor}.action-sheet-button-inner.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;pointer-events:none;width:100%;height:100%;z-index:1}.action-sheet-container.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-ms-flex-pack:end;justify-content:flex-end;height:100%;max-height:calc(100vh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)));max-height:calc(100dvh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)))}.action-sheet-group.sc-ion-action-sheet-ios{-ms-flex-negative:2;flex-shrink:2;overscroll-behavior-y:contain;overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:all;background:var(--background)}@media (any-pointer: coarse){.action-sheet-group.sc-ion-action-sheet-ios::-webkit-scrollbar{display:none}}.action-sheet-group-cancel.sc-ion-action-sheet-ios{-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-ios::after{left:0;right:0;top:0;bottom:0;position:absolute;content:"";opacity:0}.action-sheet-selected.sc-ion-action-sheet-ios{color:var(--button-color-selected)}.action-sheet-selected.sc-ion-action-sheet-ios::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-button.ion-activated.sc-ion-action-sheet-ios{color:var(--button-color-activated)}.action-sheet-button.ion-activated.sc-ion-action-sheet-ios::after{background:var(--button-background-activated);opacity:var(--button-background-activated-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ios:not(.ion-activated){color:var(--button-color-focused)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ios:not(.ion-activated)::after{background:var(--button-background-focused);opacity:var(--button-background-focused-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ios:not(.ion-activated).action-sheet-selected::after{background:var(--button-background-focused, var(--button-background-selected));opacity:var(--button-background-focused-opacity, var(--button-background-selected-opacity))}@media (any-hover: hover){.action-sheet-button.sc-ion-action-sheet-ios:not(:disabled):hover{color:var(--button-color-hover)}.action-sheet-button.sc-ion-action-sheet-ios:not(:disabled):hover::after{background:var(--button-background-hover);opacity:var(--button-background-hover-opacity)}}.sc-ion-action-sheet-ios-h{--background:var(--ion-overlay-background-color, var(--ion-color-step-100, var(--ion-background-color-step-100, #f9f9f9)));--backdrop-opacity:var(--ion-backdrop-opacity, 0.4);--button-background:linear-gradient(0deg, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08), rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08) 50%, transparent 50%) bottom/100% 1px no-repeat transparent;--button-background-activated:var(--ion-text-color, #000);--button-background-activated-opacity:.08;--button-background-hover:currentColor;--button-background-hover-opacity:.04;--button-background-focused:currentColor;--button-background-focused-opacity:.12;--button-background-selected:var(--ion-color-step-150, var(--ion-background-color-step-150, var(--ion-background-color, #fff)));--button-background-selected-opacity:1;--button-color:var(--ion-color-primary, #0054e9);--button-color-disabled:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));--color:var(--ion-color-step-400, var(--ion-text-color-step-600, #999999));text-align:center}.action-sheet-wrapper.sc-ion-action-sheet-ios{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:var(--ion-safe-area-top, 0);padding-bottom:var(--ion-safe-area-bottom, 0);-webkit-box-sizing:content-box;box-sizing:content-box}.action-sheet-container.sc-ion-action-sheet-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0}.action-sheet-group.sc-ion-action-sheet-ios{border-radius:13px;margin-bottom:8px}.action-sheet-group.sc-ion-action-sheet-ios:first-child{margin-top:10px}.action-sheet-group.sc-ion-action-sheet-ios:last-child{margin-bottom:10px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-group.sc-ion-action-sheet-ios{background-color:transparent;-webkit-backdrop-filter:saturate(280%) blur(20px);backdrop-filter:saturate(280%) blur(20px)}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-title.sc-ion-action-sheet-ios,.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-button.sc-ion-action-sheet-ios{background-color:transparent;background-image:-webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)), to(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8))), -webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4)), color-stop(50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4)), color-stop(50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)));background-image:linear-gradient(0deg, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8), rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%), linear-gradient(0deg, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4), rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4) 50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 50%);background-repeat:no-repeat;background-position:top, bottom;background-size:100% calc(100% - 1px), 100% 1px;-webkit-backdrop-filter:saturate(120%);backdrop-filter:saturate(120%)}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-button.ion-activated.sc-ion-action-sheet-ios{background-color:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.7);background-image:none}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-cancel.sc-ion-action-sheet-ios{background:var(--button-background-selected)}}.action-sheet-title.sc-ion-action-sheet-ios{background:-webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08)), color-stop(50%, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08)), color-stop(50%, transparent)) bottom/100% 1px no-repeat transparent;background:linear-gradient(0deg, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08), rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08) 50%, transparent 50%) bottom/100% 1px no-repeat transparent}.action-sheet-title.sc-ion-action-sheet-ios{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:14px;padding-bottom:13px;color:var(--color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-size:max(13px, 0.8125rem);font-weight:400;text-align:center}.action-sheet-title.action-sheet-has-sub-title.sc-ion-action-sheet-ios{font-weight:600}.action-sheet-sub-title.sc-ion-action-sheet-ios{padding-left:0;padding-right:0;padding-top:6px;padding-bottom:0;font-size:max(13px, 0.8125rem);font-weight:400}.action-sheet-button.sc-ion-action-sheet-ios{-webkit-padding-start:14px;padding-inline-start:14px;-webkit-padding-end:14px;padding-inline-end:14px;padding-top:14px;padding-bottom:14px;min-height:56px;font-size:max(20px, 1.25rem);contain:content}.action-sheet-button.sc-ion-action-sheet-ios .action-sheet-icon.sc-ion-action-sheet-ios{-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:max(28px, 1.75rem);pointer-events:none}.action-sheet-button.sc-ion-action-sheet-ios:last-child{background-image:none}.action-sheet-selected.sc-ion-action-sheet-ios{font-weight:bold}.action-sheet-cancel.sc-ion-action-sheet-ios{font-weight:600}.action-sheet-cancel.sc-ion-action-sheet-ios::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-destructive.sc-ion-action-sheet-ios,.action-sheet-destructive.ion-activated.sc-ion-action-sheet-ios,.action-sheet-destructive.ion-focused.sc-ion-action-sheet-ios{color:var(--ion-color-danger, #c5000f)}@media (any-hover: hover){.action-sheet-destructive.sc-ion-action-sheet-ios:hover{color:var(--ion-color-danger, #c5000f)}}`;
|
|
9678
10234
|
|
|
9679
|
-
const actionSheetMdCss = () => `.sc-ion-action-sheet-md-h{--color:initial;--button-color-activated:var(--button-color);--button-color-focused:var(--button-color);--button-color-hover:var(--button-color);--button-color-selected:var(--button-color);--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--height:auto;--max-height:calc(100% - (var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:block;position:fixed;outline:none;font-family:var(--ion-font-family, inherit);-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-action-sheet-md-h{display:none}.action-sheet-wrapper.sc-ion-action-sheet-md{left:0;right:0;bottom:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:block;position:absolute;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);z-index:10;pointer-events:none}.action-sheet-button.sc-ion-action-sheet-md{display:block;position:relative;width:100%;border:0;outline:none;background:var(--button-background);color:var(--button-color);font-family:inherit;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-md:disabled{color:var(--button-color-disabled);opacity:0.4}.action-sheet-button-inner.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;pointer-events:none;width:100%;height:100%;z-index:1}.action-sheet-container.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-ms-flex-pack:end;justify-content:flex-end;height:100%;max-height:calc(100vh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)));max-height:calc(100dvh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)))}.action-sheet-group.sc-ion-action-sheet-md{-ms-flex-negative:2;flex-shrink:2;overscroll-behavior-y:contain;overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:all;background:var(--background)}@media (any-pointer: coarse){.action-sheet-group.sc-ion-action-sheet-md::-webkit-scrollbar{display:none}}.action-sheet-group-cancel.sc-ion-action-sheet-md{-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-md::after{left:0;right:0;top:0;bottom:0;position:absolute;content:"";opacity:0}.action-sheet-selected.sc-ion-action-sheet-md{color:var(--button-color-selected)}.action-sheet-selected.sc-ion-action-sheet-md::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-button.ion-activated.sc-ion-action-sheet-md{color:var(--button-color-activated)}.action-sheet-button.ion-activated.sc-ion-action-sheet-md::after{background:var(--button-background-activated);opacity:var(--button-background-activated-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-md{color:var(--button-color-focused)}.action-sheet-button.ion-focused.sc-ion-action-sheet-md::after{background:var(--button-background-focused);opacity:var(--button-background-focused-opacity)}@media (any-hover: hover){.action-sheet-button.sc-ion-action-sheet-md:not(:disabled):hover{color:var(--button-color-hover)}.action-sheet-button.sc-ion-action-sheet-md:not(:disabled):hover::after{background:var(--button-background-hover);opacity:var(--button-background-hover-opacity)}}.sc-ion-action-sheet-md-h{--background:var(--ion-overlay-background-color, var(--ion-background-color, #fff));--backdrop-opacity:var(--ion-backdrop-opacity, 0.32);--button-background:transparent;--button-background-selected:currentColor;--button-background-selected-opacity:0;--button-background-activated:transparent;--button-background-activated-opacity:0;--button-background-hover:currentColor;--button-background-hover-opacity:.04;--button-background-focused:currentColor;--button-background-focused-opacity:.12;--button-color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));--button-color-disabled:var(--button-color);--color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54)}.action-sheet-wrapper.sc-ion-action-sheet-md{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:var(--ion-safe-area-top, 0);margin-bottom:0}.action-sheet-title.sc-ion-action-sheet-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:20px;padding-bottom:17px;min-height:60px;color:var(--color, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54));font-size:1rem;text-align:start}.action-sheet-sub-title.sc-ion-action-sheet-md{padding-left:0;padding-right:0;padding-top:16px;padding-bottom:0;font-size:0.875rem}.action-sheet-group.sc-ion-action-sheet-md:first-child{padding-top:0}.action-sheet-group.sc-ion-action-sheet-md:last-child{padding-bottom:var(--ion-safe-area-bottom)}.action-sheet-button.sc-ion-action-sheet-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:12px;padding-bottom:12px;position:relative;min-height:52px;font-size:1rem;text-align:start;contain:content;overflow:hidden}.action-sheet-icon.sc-ion-action-sheet-md{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:32px;margin-inline-end:32px;margin-top:0;margin-bottom:0;color:var(--color);font-size:1.5rem}.action-sheet-button-inner.sc-ion-action-sheet-md{-ms-flex-pack:start;justify-content:flex-start}.action-sheet-selected.sc-ion-action-sheet-md{font-weight:bold}`;
|
|
10235
|
+
const actionSheetMdCss = () => `.action-sheet-button-label-has-rich-content.sc-ion-action-sheet-md,.alert-radio-label-has-rich-content.sc-ion-action-sheet-md,.alert-checkbox-label-has-rich-content.sc-ion-action-sheet-md,.select-option-label-has-rich-content.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:16px}.action-sheet-button-label-has-rich-content.sc-ion-action-sheet-md,.alert-radio-label-has-rich-content.sc-ion-action-sheet-md,.alert-checkbox-label-has-rich-content.sc-ion-action-sheet-md,.select-option-content.sc-ion-action-sheet-md{-ms-flex:1;flex:1}.action-sheet-button-label-text.sc-ion-action-sheet-md,.alert-checkbox-label-text.sc-ion-action-sheet-md,.alert-radio-label-text.sc-ion-action-sheet-md,.select-option-label-text.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:12px}.select-option-start.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px}.select-option-description.sc-ion-action-sheet-md{padding-left:0;padding-right:0;padding-top:5px;padding-bottom:0;display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem}.select-option-label.sc-ion-action-sheet-md:not(.select-option-label-has-rich-content){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-option-label-has-rich-content.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}ion-radio.select-option-has-rich-content.sc-ion-action-sheet-md::part(label),ion-radio.select-option-has-rich-content.sc-ion-action-sheet-md [part~="label"],ion-checkbox.select-option-has-rich-content.sc-ion-action-sheet-md::part(label),ion-checkbox.select-option-has-rich-content.sc-ion-action-sheet-md [part~="label"],.select-option-content.sc-ion-action-sheet-md{-ms-flex:1;flex:1;white-space:normal}.select-option-start.sc-ion-action-sheet-md>ion-avatar.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md>ion-avatar.sc-ion-action-sheet-md{width:40px;height:40px}.select-option-start.sc-ion-action-sheet-md>ion-icon.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md>ion-icon.sc-ion-action-sheet-md{width:24px;height:24px}.select-option-start.sc-ion-action-sheet-md>ion-img.sc-ion-action-sheet-md,.select-option-start.sc-ion-action-sheet-md>img.sc-ion-action-sheet-md,.select-option-start.sc-ion-action-sheet-md>svg.sc-ion-action-sheet-md,.select-option-start.sc-ion-action-sheet-md>ion-thumbnail.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md>ion-img.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md>img.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md>svg.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md>ion-thumbnail.sc-ion-action-sheet-md{width:56px;height:56px}.select-option-start.sc-ion-action-sheet-md>video.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md>video.sc-ion-action-sheet-md{width:114px;height:56px}.sc-ion-action-sheet-md-h{--color:initial;--button-color-activated:var(--button-color);--button-color-focused:var(--button-color);--button-color-hover:var(--button-color);--button-color-selected:var(--button-color);--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--height:auto;--max-height:calc(100% - (var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:block;position:fixed;outline:none;font-family:var(--ion-font-family, inherit);-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-action-sheet-md-h{display:none}.action-sheet-wrapper.sc-ion-action-sheet-md{left:0;right:0;bottom:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:block;position:absolute;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);z-index:10;pointer-events:none}.action-sheet-button.sc-ion-action-sheet-md{display:block;position:relative;width:100%;border:0;outline:none;background:var(--button-background);color:var(--button-color);font-family:inherit;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-md:disabled{color:var(--button-color-disabled);opacity:0.4}.action-sheet-button.sc-ion-action-sheet-md:disabled ion-icon.sc-ion-action-sheet-md{color:currentColor}.action-sheet-button-inner.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;pointer-events:none;width:100%;height:100%;z-index:1}.action-sheet-container.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-ms-flex-pack:end;justify-content:flex-end;height:100%;max-height:calc(100vh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)));max-height:calc(100dvh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)))}.action-sheet-group.sc-ion-action-sheet-md{-ms-flex-negative:2;flex-shrink:2;overscroll-behavior-y:contain;overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:all;background:var(--background)}@media (any-pointer: coarse){.action-sheet-group.sc-ion-action-sheet-md::-webkit-scrollbar{display:none}}.action-sheet-group-cancel.sc-ion-action-sheet-md{-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-md::after{left:0;right:0;top:0;bottom:0;position:absolute;content:"";opacity:0}.action-sheet-selected.sc-ion-action-sheet-md{color:var(--button-color-selected)}.action-sheet-selected.sc-ion-action-sheet-md::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-button.ion-activated.sc-ion-action-sheet-md{color:var(--button-color-activated)}.action-sheet-button.ion-activated.sc-ion-action-sheet-md::after{background:var(--button-background-activated);opacity:var(--button-background-activated-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-md:not(.ion-activated){color:var(--button-color-focused)}.action-sheet-button.ion-focused.sc-ion-action-sheet-md:not(.ion-activated)::after{background:var(--button-background-focused);opacity:var(--button-background-focused-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-md:not(.ion-activated).action-sheet-selected::after{background:var(--button-background-focused, var(--button-background-selected));opacity:var(--button-background-focused-opacity, var(--button-background-selected-opacity))}@media (any-hover: hover){.action-sheet-button.sc-ion-action-sheet-md:not(:disabled):hover{color:var(--button-color-hover)}.action-sheet-button.sc-ion-action-sheet-md:not(:disabled):hover::after{background:var(--button-background-hover);opacity:var(--button-background-hover-opacity)}}.sc-ion-action-sheet-md-h{--background:var(--ion-overlay-background-color, var(--ion-background-color, #fff));--backdrop-opacity:var(--ion-backdrop-opacity, 0.32);--button-background:transparent;--button-background-selected:currentColor;--button-background-selected-opacity:0;--button-background-activated:transparent;--button-background-activated-opacity:0;--button-background-hover:currentColor;--button-background-hover-opacity:.04;--button-background-focused:currentColor;--button-background-focused-opacity:.12;--button-color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));--button-color-disabled:var(--button-color);--color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54)}.action-sheet-wrapper.sc-ion-action-sheet-md{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:var(--ion-safe-area-top, 0);margin-bottom:0}.action-sheet-title.sc-ion-action-sheet-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:20px;padding-bottom:17px;min-height:60px;color:var(--color, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54));font-size:1rem;text-align:start}.action-sheet-sub-title.sc-ion-action-sheet-md{padding-left:0;padding-right:0;padding-top:16px;padding-bottom:0;font-size:0.875rem}.action-sheet-group.sc-ion-action-sheet-md:first-child{padding-top:0}.action-sheet-group.sc-ion-action-sheet-md:last-child{padding-bottom:var(--ion-safe-area-bottom)}.action-sheet-button.sc-ion-action-sheet-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:12px;padding-bottom:12px;position:relative;min-height:52px;font-size:1rem;text-align:start;contain:content;overflow:hidden}.action-sheet-icon.sc-ion-action-sheet-md{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:32px;margin-inline-end:32px;margin-top:0;margin-bottom:0;color:var(--color);font-size:1.5rem}.action-sheet-button-inner.sc-ion-action-sheet-md{-ms-flex-pack:start;justify-content:flex-start}.action-sheet-selected.sc-ion-action-sheet-md{font-weight:bold}`;
|
|
9680
10236
|
|
|
9681
10237
|
/**
|
|
9682
10238
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
@@ -9773,7 +10329,7 @@ class ActionSheet {
|
|
|
9773
10329
|
async present() {
|
|
9774
10330
|
const unlock = await this.lockController.lock();
|
|
9775
10331
|
await this.delegateController.attachViewToDom();
|
|
9776
|
-
await present(this, 'actionSheetEnter', iosEnterAnimation$
|
|
10332
|
+
await present(this, 'actionSheetEnter', iosEnterAnimation$5, mdEnterAnimation$5);
|
|
9777
10333
|
unlock();
|
|
9778
10334
|
}
|
|
9779
10335
|
/**
|
|
@@ -9790,7 +10346,7 @@ class ActionSheet {
|
|
|
9790
10346
|
*/
|
|
9791
10347
|
async dismiss(data, role) {
|
|
9792
10348
|
const unlock = await this.lockController.lock();
|
|
9793
|
-
const dismissed = await dismiss(this, data, role, 'actionSheetLeave', iosLeaveAnimation$
|
|
10349
|
+
const dismissed = await dismiss(this, data, role, 'actionSheetLeave', iosLeaveAnimation$5, mdLeaveAnimation$5);
|
|
9794
10350
|
if (dismissed) {
|
|
9795
10351
|
this.delegateController.removeViewFromDom();
|
|
9796
10352
|
}
|
|
@@ -9959,6 +10515,10 @@ class ActionSheet {
|
|
|
9959
10515
|
this.gesture = undefined;
|
|
9960
10516
|
}
|
|
9961
10517
|
this.triggerController.removeClickListener();
|
|
10518
|
+
// Clean up aria-hidden if removed without dismiss() being called
|
|
10519
|
+
if (this.presented) {
|
|
10520
|
+
cleanupRootFocusTrapAccessibility();
|
|
10521
|
+
}
|
|
9962
10522
|
}
|
|
9963
10523
|
componentWillLoad() {
|
|
9964
10524
|
var _a;
|
|
@@ -10047,12 +10607,26 @@ class ActionSheet {
|
|
|
10047
10607
|
if (isRadio) {
|
|
10048
10608
|
htmlAttrs['aria-checked'] = isActiveRadio ? 'true' : 'false';
|
|
10049
10609
|
}
|
|
10050
|
-
|
|
10610
|
+
/**
|
|
10611
|
+
* Cast to `SelectActionSheetButton` to access rich content
|
|
10612
|
+
* fields (`startContent`, `endContent`, `description`)
|
|
10613
|
+
* that are passed through from `ion-select` but not
|
|
10614
|
+
* part of the public `ActionSheetButton` interface.
|
|
10615
|
+
*/
|
|
10616
|
+
const richButton = b;
|
|
10617
|
+
const optionLabelOptions = {
|
|
10618
|
+
id: buttonId,
|
|
10619
|
+
label: richButton.text,
|
|
10620
|
+
startContent: richButton.startContent,
|
|
10621
|
+
endContent: richButton.endContent,
|
|
10622
|
+
description: richButton.description,
|
|
10623
|
+
};
|
|
10624
|
+
return (hAsync("button", Object.assign({}, htmlAttrs, { role: isRadio ? 'radio' : undefined, type: "button", id: buttonId, class: Object.assign(Object.assign({}, buttonClass$2(b)), (isRadio && { 'action-sheet-selected': isActiveRadio })), onClick: () => {
|
|
10051
10625
|
if (isRadio) {
|
|
10052
10626
|
this.selectRadioButton(b);
|
|
10053
10627
|
}
|
|
10054
10628
|
this.buttonClick(b);
|
|
10055
|
-
}, disabled: b.disabled, tabIndex: tabIndex }), hAsync("span", { class: "action-sheet-button-inner" }, b.icon && hAsync("ion-icon", { icon: b.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" }),
|
|
10629
|
+
}, disabled: b.disabled, tabIndex: tabIndex }), hAsync("span", { class: "action-sheet-button-inner" }, b.icon && hAsync("ion-icon", { icon: b.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" }), renderOptionLabel(optionLabelOptions, 'action-sheet-button-label', true)), mode === 'md' && hAsync("ion-ripple-effect", null)));
|
|
10056
10630
|
});
|
|
10057
10631
|
}
|
|
10058
10632
|
render() {
|
|
@@ -10062,12 +10636,12 @@ class ActionSheet {
|
|
|
10062
10636
|
const cancelButton = allButtons.find((b) => b.role === 'cancel');
|
|
10063
10637
|
const buttons = allButtons.filter((b) => b.role !== 'cancel');
|
|
10064
10638
|
const headerID = `action-sheet-${overlayIndex}-header`;
|
|
10065
|
-
return (hAsync(Host, Object.assign({ key: '
|
|
10639
|
+
return (hAsync(Host, Object.assign({ key: '7685831da9a78b73473246a2cea95cefa79a53c3', role: "dialog", "aria-modal": "true", "aria-labelledby": header !== undefined ? headerID : null, tabindex: "-1" }, htmlAttributes, { style: {
|
|
10066
10640
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
10067
|
-
}, class: Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), hAsync("ion-backdrop", { key: '
|
|
10641
|
+
}, class: Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), hAsync("ion-backdrop", { key: 'c70f00e401cac99b89412d1adb867f35bc855d57', tappable: this.backdropDismiss }), hAsync("div", { key: '3332893ce3098f1435875480b1269b2821d41660', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: 'eb406b0a9e303d6f94c5c7aa99c6f4c089bfbd41', class: "action-sheet-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, hAsync("div", { key: '92ec855379f10e1e0bfce6ff68b45d3cda0c137c', class: "action-sheet-container" }, hAsync("div", { key: 'bc88a396d75396f574961471bf7e6c4edb513353', class: "action-sheet-group", ref: (el) => (this.groupEl = el), role: hasRadioButtons ? 'radiogroup' : undefined }, header !== undefined && (hAsync("div", { key: '33329e0193818888bdcaa443ff5ea301802e0787', id: headerID, class: {
|
|
10068
10642
|
'action-sheet-title': true,
|
|
10069
10643
|
'action-sheet-has-sub-title': this.subHeader !== undefined,
|
|
10070
|
-
} }, header, this.subHeader && hAsync("div", { key: '
|
|
10644
|
+
} }, header, this.subHeader && hAsync("div", { key: '92ac5a9217a12b7417f7aca9c4fdb7bf6b051364', class: "action-sheet-sub-title" }, this.subHeader))), this.renderActionSheetButtons(buttons)), cancelButton && (hAsync("div", { key: '020463b830fa48fc3ae647ea64f2aaa4d0969305', class: "action-sheet-group action-sheet-group-cancel" }, hAsync("button", Object.assign({ key: 'cefa9c70a2233f6652a81b1a2eae6e717712144d' }, cancelButton.htmlAttributes, { type: "button", class: buttonClass$2(cancelButton), onClick: () => this.buttonClick(cancelButton) }), hAsync("span", { key: '56d7e2f8bfb3644e4476895164d334445fda9b2f', class: "action-sheet-button-inner" }, cancelButton.icon && (hAsync("ion-icon", { key: '6a4a49254ec5cd96f4e0dce9447f90d8cac81913', icon: cancelButton.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" })), cancelButton.text), mode === 'md' && hAsync("ion-ripple-effect", { key: '7d3c6e8d70b0922ea0f75520856285ce1005c891' })))))), hAsync("div", { key: '958fc43e603c6a7f5d1e649d3326fce0f163b5d0', tabindex: "0", "aria-hidden": "true" })));
|
|
10071
10645
|
}
|
|
10072
10646
|
get el() { return getElement(this); }
|
|
10073
10647
|
static get watchers() { return {
|
|
@@ -10116,178 +10690,59 @@ class ActionSheet {
|
|
|
10116
10690
|
"$attrsToReflect$": []
|
|
10117
10691
|
}; }
|
|
10118
10692
|
}
|
|
10119
|
-
const buttonClass$
|
|
10693
|
+
const buttonClass$2 = (button) => {
|
|
10120
10694
|
return Object.assign({ 'action-sheet-button': true, 'ion-activatable': !button.disabled, 'ion-focusable': !button.disabled, [`action-sheet-${button.role}`]: button.role !== undefined }, getClassMap(button.cssClass));
|
|
10121
10695
|
};
|
|
10122
10696
|
|
|
10123
10697
|
const ENABLE_HTML_CONTENT_DEFAULT = false;
|
|
10124
10698
|
|
|
10699
|
+
// TODO(FW-6886, FW-6892, FW-6891): Remove this file in favor of the Modular Ionic component config. Each overlay will be able to select its own defaults for label placement and justify based on the interface and mode, so this utility will no longer be necessary.
|
|
10125
10700
|
/**
|
|
10126
|
-
*
|
|
10127
|
-
*
|
|
10701
|
+
* Returns the default `labelPlacement` for a radio or checkbox option
|
|
10702
|
+
* rendered inside an overlay. Defaults follow each mode's established
|
|
10703
|
+
* option-row layout:
|
|
10704
|
+
* - `ios`: `"start"` for radio in `alert` and `popover`. The `modal`
|
|
10705
|
+
* interface flips iOS radio back to `"end"`. Checkbox is always
|
|
10706
|
+
* `"end"` on iOS.
|
|
10707
|
+
* - everything else (e.g. `md`): `"end"`.
|
|
10708
|
+
*
|
|
10709
|
+
* `interfaceType` is optional; only `"modal"` changes the result, so
|
|
10710
|
+
* callers that aren't a modal can omit it.
|
|
10711
|
+
*
|
|
10712
|
+
* Used by `select-popover` and `select-modal` as the fallback when an
|
|
10713
|
+
* option doesn't explicitly set `labelPlacement`.
|
|
10128
10714
|
*/
|
|
10129
|
-
const
|
|
10130
|
-
|
|
10131
|
-
|
|
10132
|
-
return untrustedString.value;
|
|
10133
|
-
}
|
|
10134
|
-
if (!isSanitizerEnabled() || typeof untrustedString !== 'string' || untrustedString === '') {
|
|
10135
|
-
return untrustedString;
|
|
10136
|
-
}
|
|
10137
|
-
/**
|
|
10138
|
-
* onload is fired when appending to a document
|
|
10139
|
-
* fragment in Chrome. If a string
|
|
10140
|
-
* contains onload then we should not
|
|
10141
|
-
* attempt to add this to the fragment.
|
|
10142
|
-
*/
|
|
10143
|
-
if (untrustedString.includes('onload=')) {
|
|
10144
|
-
return '';
|
|
10145
|
-
}
|
|
10146
|
-
/**
|
|
10147
|
-
* Create a document fragment
|
|
10148
|
-
* separate from the main DOM,
|
|
10149
|
-
* create a div to do our work in
|
|
10150
|
-
*/
|
|
10151
|
-
const documentFragment = document.createDocumentFragment();
|
|
10152
|
-
const workingDiv = document.createElement('div');
|
|
10153
|
-
documentFragment.appendChild(workingDiv);
|
|
10154
|
-
workingDiv.innerHTML = untrustedString;
|
|
10155
|
-
/**
|
|
10156
|
-
* Remove any elements
|
|
10157
|
-
* that are blocked
|
|
10158
|
-
*/
|
|
10159
|
-
blockedTags.forEach((blockedTag) => {
|
|
10160
|
-
const getElementsToRemove = documentFragment.querySelectorAll(blockedTag);
|
|
10161
|
-
for (let elementIndex = getElementsToRemove.length - 1; elementIndex >= 0; elementIndex--) {
|
|
10162
|
-
const element = getElementsToRemove[elementIndex];
|
|
10163
|
-
if (element.parentNode) {
|
|
10164
|
-
element.parentNode.removeChild(element);
|
|
10165
|
-
}
|
|
10166
|
-
else {
|
|
10167
|
-
documentFragment.removeChild(element);
|
|
10168
|
-
}
|
|
10169
|
-
/**
|
|
10170
|
-
* We still need to sanitize
|
|
10171
|
-
* the children of this element
|
|
10172
|
-
* as they are left behind
|
|
10173
|
-
*/
|
|
10174
|
-
const childElements = getElementChildren(element);
|
|
10175
|
-
/* eslint-disable-next-line */
|
|
10176
|
-
for (let childIndex = 0; childIndex < childElements.length; childIndex++) {
|
|
10177
|
-
sanitizeElement(childElements[childIndex]);
|
|
10178
|
-
}
|
|
10179
|
-
}
|
|
10180
|
-
});
|
|
10181
|
-
/**
|
|
10182
|
-
* Go through remaining elements and remove
|
|
10183
|
-
* non-allowed attribs
|
|
10184
|
-
*/
|
|
10185
|
-
// IE does not support .children on document fragments, only .childNodes
|
|
10186
|
-
const dfChildren = getElementChildren(documentFragment);
|
|
10187
|
-
/* eslint-disable-next-line */
|
|
10188
|
-
for (let childIndex = 0; childIndex < dfChildren.length; childIndex++) {
|
|
10189
|
-
sanitizeElement(dfChildren[childIndex]);
|
|
10190
|
-
}
|
|
10191
|
-
// Append document fragment to div
|
|
10192
|
-
const fragmentDiv = document.createElement('div');
|
|
10193
|
-
fragmentDiv.appendChild(documentFragment);
|
|
10194
|
-
// First child is always the div we did our work in
|
|
10195
|
-
const getInnerDiv = fragmentDiv.querySelector('div');
|
|
10196
|
-
return getInnerDiv !== null ? getInnerDiv.innerHTML : fragmentDiv.innerHTML;
|
|
10197
|
-
}
|
|
10198
|
-
catch (err) {
|
|
10199
|
-
printIonError('sanitizeDOMString', err);
|
|
10200
|
-
return '';
|
|
10201
|
-
}
|
|
10202
|
-
};
|
|
10203
|
-
/**
|
|
10204
|
-
* Clean up current element based on allowed attributes
|
|
10205
|
-
* and then recursively dig down into any child elements to
|
|
10206
|
-
* clean those up as well
|
|
10207
|
-
*/
|
|
10208
|
-
// TODO(FW-2832): type (using Element triggers other type errors as well)
|
|
10209
|
-
const sanitizeElement = (element) => {
|
|
10210
|
-
// IE uses childNodes, so ignore nodes that are not elements
|
|
10211
|
-
if (element.nodeType && element.nodeType !== 1) {
|
|
10212
|
-
return;
|
|
10213
|
-
}
|
|
10214
|
-
/**
|
|
10215
|
-
* If attributes is not a NamedNodeMap
|
|
10216
|
-
* then we should remove the element entirely.
|
|
10217
|
-
* This helps avoid DOM Clobbering attacks where
|
|
10218
|
-
* attributes is overridden.
|
|
10219
|
-
*/
|
|
10220
|
-
if (typeof NamedNodeMap !== 'undefined' && !(element.attributes instanceof NamedNodeMap)) {
|
|
10221
|
-
element.remove();
|
|
10222
|
-
return;
|
|
10223
|
-
}
|
|
10224
|
-
for (let i = element.attributes.length - 1; i >= 0; i--) {
|
|
10225
|
-
const attribute = element.attributes.item(i);
|
|
10226
|
-
const attributeName = attribute.name;
|
|
10227
|
-
// remove non-allowed attribs
|
|
10228
|
-
if (!allowedAttributes.includes(attributeName.toLowerCase())) {
|
|
10229
|
-
element.removeAttribute(attributeName);
|
|
10230
|
-
continue;
|
|
10231
|
-
}
|
|
10232
|
-
// clean up any allowed attribs
|
|
10233
|
-
// that attempt to do any JS funny-business
|
|
10234
|
-
const attributeValue = attribute.value;
|
|
10235
|
-
/**
|
|
10236
|
-
* We also need to check the property value
|
|
10237
|
-
* as javascript: can allow special characters
|
|
10238
|
-
* such as 	 and still be valid (i.e. java	script)
|
|
10239
|
-
*/
|
|
10240
|
-
const propertyValue = element[attributeName];
|
|
10241
|
-
/* eslint-disable */
|
|
10242
|
-
if ((attributeValue != null && attributeValue.toLowerCase().includes('javascript:')) ||
|
|
10243
|
-
(propertyValue != null && propertyValue.toLowerCase().includes('javascript:'))) {
|
|
10244
|
-
element.removeAttribute(attributeName);
|
|
10245
|
-
}
|
|
10246
|
-
/* eslint-enable */
|
|
10247
|
-
}
|
|
10248
|
-
/**
|
|
10249
|
-
* Sanitize any nested children
|
|
10250
|
-
*/
|
|
10251
|
-
const childElements = getElementChildren(element);
|
|
10252
|
-
/* eslint-disable-next-line */
|
|
10253
|
-
for (let i = 0; i < childElements.length; i++) {
|
|
10254
|
-
sanitizeElement(childElements[i]);
|
|
10715
|
+
const getOverlayLabelPlacement = (mode, control, interfaceType) => {
|
|
10716
|
+
if (mode === 'ios' && control === 'radio' && interfaceType !== 'modal') {
|
|
10717
|
+
return 'start';
|
|
10255
10718
|
}
|
|
10719
|
+
return 'end';
|
|
10256
10720
|
};
|
|
10257
10721
|
/**
|
|
10258
|
-
*
|
|
10259
|
-
*
|
|
10722
|
+
* Returns the default `justify` for a radio or checkbox option rendered
|
|
10723
|
+
* inside an overlay. Defaults follow each mode's option-row layout:
|
|
10724
|
+
* - `ios`: `"space-between"` for radio in `alert` and `popover`. The
|
|
10725
|
+
* `modal` interface falls back to `"start"`. Checkbox is always `"start"`
|
|
10726
|
+
* on iOS.
|
|
10727
|
+
* - everything else (e.g. `md`): `"start"`.
|
|
10728
|
+
*
|
|
10729
|
+
* `interfaceType` is optional; only `"modal"` changes the result, so
|
|
10730
|
+
* callers that aren't a modal can omit it.
|
|
10731
|
+
*
|
|
10732
|
+
* Used by `select-popover` and `select-modal` as the fallback when an
|
|
10733
|
+
* option doesn't explicitly set `justify`.
|
|
10260
10734
|
*/
|
|
10261
|
-
|
|
10262
|
-
|
|
10263
|
-
|
|
10264
|
-
};
|
|
10265
|
-
const isSanitizerEnabled = () => {
|
|
10266
|
-
var _a;
|
|
10267
|
-
const win = window;
|
|
10268
|
-
const config = (_a = win === null || win === void 0 ? void 0 : win.Ionic) === null || _a === void 0 ? void 0 : _a.config;
|
|
10269
|
-
if (config) {
|
|
10270
|
-
if (config.get) {
|
|
10271
|
-
return config.get('sanitizerEnabled', true);
|
|
10272
|
-
}
|
|
10273
|
-
else {
|
|
10274
|
-
return config.sanitizerEnabled === true || config.sanitizerEnabled === undefined;
|
|
10275
|
-
}
|
|
10735
|
+
const getOverlayLabelJustify = (mode, control, interfaceType) => {
|
|
10736
|
+
if (mode === 'ios' && control === 'radio' && interfaceType !== 'modal') {
|
|
10737
|
+
return 'space-between';
|
|
10276
10738
|
}
|
|
10277
|
-
return
|
|
10739
|
+
return 'start';
|
|
10278
10740
|
};
|
|
10279
|
-
const allowedAttributes = ['class', 'id', 'href', 'src', 'name', 'slot'];
|
|
10280
|
-
const blockedTags = ['script', 'style', 'iframe', 'meta', 'link', 'object', 'embed'];
|
|
10281
|
-
class IonicSafeString {
|
|
10282
|
-
constructor(value) {
|
|
10283
|
-
this.value = value;
|
|
10284
|
-
}
|
|
10285
|
-
}
|
|
10286
10741
|
|
|
10287
10742
|
/**
|
|
10288
10743
|
* iOS Alert Enter Animation
|
|
10289
10744
|
*/
|
|
10290
|
-
const iosEnterAnimation$
|
|
10745
|
+
const iosEnterAnimation$4 = (baseEl) => {
|
|
10291
10746
|
const baseAnimation = createAnimation();
|
|
10292
10747
|
const backdropAnimation = createAnimation();
|
|
10293
10748
|
const wrapperAnimation = createAnimation();
|
|
@@ -10312,7 +10767,7 @@ const iosEnterAnimation$5 = (baseEl) => {
|
|
|
10312
10767
|
/**
|
|
10313
10768
|
* iOS Alert Leave Animation
|
|
10314
10769
|
*/
|
|
10315
|
-
const iosLeaveAnimation$
|
|
10770
|
+
const iosLeaveAnimation$4 = (baseEl) => {
|
|
10316
10771
|
const baseAnimation = createAnimation();
|
|
10317
10772
|
const backdropAnimation = createAnimation();
|
|
10318
10773
|
const wrapperAnimation = createAnimation();
|
|
@@ -10369,9 +10824,9 @@ const mdLeaveAnimation$4 = (baseEl) => {
|
|
|
10369
10824
|
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
10370
10825
|
};
|
|
10371
10826
|
|
|
10372
|
-
const alertIosCss = () => `.sc-ion-alert-ios-h{--min-width:250px;--width:auto;--min-height:auto;--height:auto;--max-height:90%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-alert-ios-h{display:none}.alert-top.sc-ion-alert-ios-h{padding-top:50px;-ms-flex-align:start;align-items:flex-start}.alert-wrapper.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);contain:content;opacity:0;z-index:10}.alert-title.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-sub-title.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-weight:normal}.alert-message.sc-ion-alert-ios,.alert-input-group.sc-ion-alert-ios{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch;overflow-y:auto;overscroll-behavior-y:contain}.alert-checkbox-label.sc-ion-alert-ios,.alert-radio-label.sc-ion-alert-ios{overflow-wrap:anywhere}@media (any-pointer: coarse){.alert-checkbox-group.sc-ion-alert-ios::-webkit-scrollbar,.alert-radio-group.sc-ion-alert-ios::-webkit-scrollbar,.alert-message.sc-ion-alert-ios::-webkit-scrollbar{display:none}}.alert-input.sc-ion-alert-ios{padding-left:0;padding-right:0;padding-top:10px;padding-bottom:10px;width:100%;border:0;background:inherit;font:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.alert-button-group.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;width:100%}.alert-button-group-vertical.sc-ion-alert-ios{-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.alert-button.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;border:0;font-size:0.875rem;line-height:1.25rem;z-index:0}.alert-button.ion-focused.sc-ion-alert-ios,.alert-tappable.ion-focused.sc-ion-alert-ios{background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.alert-button-inner.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;min-height:inherit}.alert-input-disabled.sc-ion-alert-ios,.alert-checkbox-button-disabled.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios,.alert-radio-button-disabled.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios{cursor:default;opacity:0.5;pointer-events:none}.alert-tappable.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;display:-ms-flexbox;display:flex;width:100%;border:0;background:transparent;font-size:inherit;line-height:initial;text-align:start;-webkit-appearance:none;-moz-appearance:none;appearance:none;contain:content}.alert-button.sc-ion-alert-ios,.alert-checkbox.sc-ion-alert-ios,.alert-input.sc-ion-alert-ios,.alert-radio.sc-ion-alert-ios{outline:none}.alert-radio-icon.sc-ion-alert-ios,.alert-checkbox-icon.sc-ion-alert-ios,.alert-checkbox-inner.sc-ion-alert-ios{-webkit-box-sizing:border-box;box-sizing:border-box}textarea.alert-input.sc-ion-alert-ios{min-height:37px;resize:none}.sc-ion-alert-ios-h{--background:var(--ion-overlay-background-color, var(--ion-color-step-100, var(--ion-background-color-step-100, #f9f9f9)));--max-width:clamp(270px, 16.875rem, 324px);--backdrop-opacity:var(--ion-backdrop-opacity, 0.3);font-size:max(14px, 0.875rem)}.alert-wrapper.sc-ion-alert-ios{border-radius:13px;-webkit-box-shadow:none;box-shadow:none;overflow:hidden}.alert-button.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios{pointer-events:none}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.alert-translucent.sc-ion-alert-ios-h .alert-wrapper.sc-ion-alert-ios{background:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.9);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.alert-head.sc-ion-alert-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:12px;padding-bottom:7px;text-align:center}.alert-title.sc-ion-alert-ios{margin-top:8px;color:var(--ion-text-color, #000);font-size:max(17px, 1.0625rem);font-weight:600}.alert-sub-title.sc-ion-alert-ios{color:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666));font-size:max(14px, 0.875rem)}.alert-message.sc-ion-alert-ios,.alert-input-group.sc-ion-alert-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:21px;color:var(--ion-text-color, #000);font-size:max(13px, 0.8125rem);text-align:center}.alert-message.sc-ion-alert-ios{max-height:240px}.alert-message.sc-ion-alert-ios:empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:12px}.alert-input.sc-ion-alert-ios{border-radius:7px;margin-top:10px;-webkit-padding-start:7px;padding-inline-start:7px;-webkit-padding-end:7px;padding-inline-end:7px;padding-top:7px;padding-bottom:7px;border:0.55px solid var(--ion-color-step-250, var(--ion-background-color-step-250, #bfbfbf));background-color:var(--ion-background-color, #fff);-webkit-appearance:none;-moz-appearance:none;appearance:none;font-size:1rem}.alert-input.sc-ion-alert-ios::-webkit-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-moz-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios:-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-ms-clear{display:none}.alert-input.sc-ion-alert-ios::-webkit-date-and-time-value{height:18px}.alert-radio-group.sc-ion-alert-ios,.alert-checkbox-group.sc-ion-alert-ios{-ms-scroll-chaining:none;overscroll-behavior:contain;max-height:240px;border-top:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);overflow-y:auto;-webkit-overflow-scrolling:touch}.alert-tappable.sc-ion-alert-ios{min-height:44px}.alert-radio-label.sc-ion-alert-ios{-webkit-padding-start:13px;padding-inline-start:13px;-webkit-padding-end:13px;padding-inline-end:13px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;-ms-flex-order:0;order:0;color:var(--ion-text-color, #000)}[aria-checked=true].sc-ion-alert-ios .alert-radio-label.sc-ion-alert-ios{color:var(--ion-color-primary, #0054e9)}.alert-radio-icon.sc-ion-alert-ios{position:relative;-ms-flex-order:1;order:1;min-width:30px}[aria-checked=true].sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios{top:-7px;position:absolute;width:6px;height:12px;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:2px;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios{inset-inline-start:7px}.alert-checkbox-label.sc-ion-alert-ios{-webkit-padding-start:13px;padding-inline-start:13px;-webkit-padding-end:13px;padding-inline-end:13px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;color:var(--ion-text-color, #000)}.alert-checkbox-icon.sc-ion-alert-ios{border-radius:50%;-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:6px;margin-inline-end:6px;margin-top:10px;margin-bottom:10px;position:relative;width:min(1.375rem, 55.836px);height:min(1.375rem, 55.836px);border-width:0.125rem;border-style:solid;border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));background-color:var(--ion-item-background, var(--ion-background-color, #fff));contain:strict}[aria-checked=true].sc-ion-alert-ios .alert-checkbox-icon.sc-ion-alert-ios{border-color:var(--ion-color-primary, #0054e9);background-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios{top:calc(min(1.375rem, 55.836px) / 8);position:absolute;width:calc(min(1.375rem, 55.836px) / 6 + 1px);height:calc(min(1.375rem, 55.836px) * 0.5);-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:0.125rem;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-background-color, #fff)}[aria-checked=true].sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios{inset-inline-start:calc(min(1.375rem, 55.836px) / 3)}.alert-button-group.sc-ion-alert-ios{-webkit-margin-end:-0.55px;margin-inline-end:-0.55px;-ms-flex-wrap:wrap;flex-wrap:wrap}.alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios{border-right:none}[dir=rtl].sc-ion-alert-ios-h .alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child{border-right:none}[dir=rtl].sc-ion-alert-ios .alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child{border-right:none}@supports selector(:dir(rtl)){.alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child:dir(rtl){border-right:none}}.alert-button.sc-ion-alert-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;border-radius:0;-ms-flex:1 1 auto;flex:1 1 auto;min-width:50%;height:max(44px, 2.75rem);border-top:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);background-color:transparent;color:var(--ion-color-primary, #0054e9);font-size:max(17px, 1.0625rem);overflow:hidden}[dir=rtl].sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:first-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:first-child{border-right:0}[dir=rtl].sc-ion-alert-ios .alert-button.sc-ion-alert-ios:first-child{border-right:0}@supports selector(:dir(rtl)){.alert-button.sc-ion-alert-ios:first-child:dir(rtl){border-right:0}}.alert-button.sc-ion-alert-ios:last-child{border-right:0;font-weight:bold}[dir=rtl].sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:last-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:last-child{border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2)}[dir=rtl].sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child{border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2)}@supports selector(:dir(rtl)){.alert-button.sc-ion-alert-ios:last-child:dir(rtl){border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2)}}.alert-button.ion-activated.sc-ion-alert-ios{background-color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.1)}.alert-button-role-destructive.sc-ion-alert-ios,.alert-button-role-destructive.ion-activated.sc-ion-alert-ios,.alert-button-role-destructive.ion-focused.sc-ion-alert-ios{color:var(--ion-color-danger, #c5000f)}`;
|
|
10827
|
+
const alertIosCss = () => `.action-sheet-button-label-has-rich-content.sc-ion-alert-ios,.alert-radio-label-has-rich-content.sc-ion-alert-ios,.alert-checkbox-label-has-rich-content.sc-ion-alert-ios,.select-option-label-has-rich-content.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:16px}.action-sheet-button-label-has-rich-content.sc-ion-alert-ios,.alert-radio-label-has-rich-content.sc-ion-alert-ios,.alert-checkbox-label-has-rich-content.sc-ion-alert-ios,.select-option-content.sc-ion-alert-ios{-ms-flex:1;flex:1}.action-sheet-button-label-text.sc-ion-alert-ios,.alert-checkbox-label-text.sc-ion-alert-ios,.alert-radio-label-text.sc-ion-alert-ios,.select-option-label-text.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:12px}.select-option-start.sc-ion-alert-ios,.select-option-end.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px}.select-option-description.sc-ion-alert-ios{padding-left:0;padding-right:0;padding-top:5px;padding-bottom:0;display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem}.select-option-label.sc-ion-alert-ios:not(.select-option-label-has-rich-content){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-option-label-has-rich-content.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}ion-radio.select-option-has-rich-content.sc-ion-alert-ios::part(label),ion-radio.select-option-has-rich-content.sc-ion-alert-ios [part~="label"],ion-checkbox.select-option-has-rich-content.sc-ion-alert-ios::part(label),ion-checkbox.select-option-has-rich-content.sc-ion-alert-ios [part~="label"],.select-option-content.sc-ion-alert-ios{-ms-flex:1;flex:1;white-space:normal}.select-option-start.sc-ion-alert-ios>ion-avatar.sc-ion-alert-ios,.select-option-start.sc-ion-alert-ios>ion-img.sc-ion-alert-ios,.select-option-start.sc-ion-alert-ios>ion-thumbnail.sc-ion-alert-ios,.select-option-start.sc-ion-alert-ios>img.sc-ion-alert-ios,.select-option-start.sc-ion-alert-ios>svg.sc-ion-alert-ios,.select-option-end.sc-ion-alert-ios>ion-avatar.sc-ion-alert-ios,.select-option-end.sc-ion-alert-ios>ion-img.sc-ion-alert-ios,.select-option-end.sc-ion-alert-ios>ion-thumbnail.sc-ion-alert-ios,.select-option-end.sc-ion-alert-ios>img.sc-ion-alert-ios,.select-option-end.sc-ion-alert-ios>svg.sc-ion-alert-ios{width:44px;height:44px}.select-option-start.sc-ion-alert-ios>ion-icon.sc-ion-alert-ios,.select-option-end.sc-ion-alert-ios>ion-icon.sc-ion-alert-ios{width:28px;height:28px}.action-sheet-button-label-text.sc-ion-alert-ios{-ms-flex-pack:center;justify-content:center}.select-option-has-rich-content.sc-ion-alert-ios{-webkit-padding-end:16px;padding-inline-end:16px}.sc-ion-alert-ios-h{--min-width:250px;--width:auto;--min-height:auto;--height:auto;--max-height:90%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-alert-ios-h{display:none}.alert-top.sc-ion-alert-ios-h{padding-top:50px;-ms-flex-align:start;align-items:flex-start}.alert-wrapper.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);contain:content;opacity:0;z-index:10}.alert-title.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-sub-title.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-weight:normal}.alert-message.sc-ion-alert-ios,.alert-input-group.sc-ion-alert-ios{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch;overflow-y:auto;overscroll-behavior-y:contain}.alert-checkbox-label.sc-ion-alert-ios,.alert-radio-label.sc-ion-alert-ios{overflow-wrap:anywhere}@media (any-pointer: coarse){.alert-checkbox-group.sc-ion-alert-ios::-webkit-scrollbar,.alert-radio-group.sc-ion-alert-ios::-webkit-scrollbar,.alert-message.sc-ion-alert-ios::-webkit-scrollbar{display:none}}.alert-input.sc-ion-alert-ios{padding-left:0;padding-right:0;padding-top:10px;padding-bottom:10px;width:100%;border:0;background:inherit;font:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.alert-button-group.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;width:100%}.alert-button-group-vertical.sc-ion-alert-ios{-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.alert-button.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;border:0;font-size:0.875rem;line-height:1.25rem;z-index:0}.alert-button.ion-focused.sc-ion-alert-ios,.alert-tappable.ion-focused.sc-ion-alert-ios{background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.alert-button-inner.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;min-height:inherit}.radio-label-placement-start.sc-ion-alert-ios,.checkbox-label-placement-start.sc-ion-alert-ios{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.radio-label-placement-end.sc-ion-alert-ios,.checkbox-label-placement-end.sc-ion-alert-ios{-ms-flex-direction:row;flex-direction:row}.radio-justify-start.sc-ion-alert-ios,.checkbox-justify-start.sc-ion-alert-ios{-ms-flex-pack:start;justify-content:start}.radio-justify-end.sc-ion-alert-ios,.checkbox-justify-end.sc-ion-alert-ios{-ms-flex-pack:end;justify-content:end}.radio-justify-space-between.sc-ion-alert-ios,.checkbox-justify-space-between.sc-ion-alert-ios{-ms-flex-pack:justify;justify-content:space-between}.alert-input-disabled.sc-ion-alert-ios,.alert-checkbox-button-disabled.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios,.alert-radio-button-disabled.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios{cursor:default;opacity:0.5;pointer-events:none}.alert-tappable.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;display:-ms-flexbox;display:flex;width:100%;border:0;background:transparent;font-size:inherit;line-height:initial;text-align:start;-webkit-appearance:none;-moz-appearance:none;appearance:none;contain:content}.alert-button.sc-ion-alert-ios,.alert-checkbox.sc-ion-alert-ios,.alert-input.sc-ion-alert-ios,.alert-radio.sc-ion-alert-ios{outline:none}.alert-radio-icon.sc-ion-alert-ios,.alert-checkbox-icon.sc-ion-alert-ios,.alert-checkbox-inner.sc-ion-alert-ios{-webkit-box-sizing:border-box;box-sizing:border-box}textarea.alert-input.sc-ion-alert-ios{min-height:37px;resize:none}.sc-ion-alert-ios-h{--background:var(--ion-overlay-background-color, var(--ion-color-step-100, var(--ion-background-color-step-100, #f9f9f9)));--max-width:clamp(270px, 16.875rem, 324px);--backdrop-opacity:var(--ion-backdrop-opacity, 0.3);font-size:max(14px, 0.875rem)}.alert-wrapper.sc-ion-alert-ios{border-radius:13px;-webkit-box-shadow:none;box-shadow:none;overflow:hidden}.alert-button.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios{pointer-events:none}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.alert-translucent.sc-ion-alert-ios-h .alert-wrapper.sc-ion-alert-ios{background:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.9);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.alert-head.sc-ion-alert-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:12px;padding-bottom:7px;text-align:center}.alert-title.sc-ion-alert-ios{margin-top:8px;color:var(--ion-text-color, #000);font-size:max(17px, 1.0625rem);font-weight:600}.alert-sub-title.sc-ion-alert-ios{color:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666));font-size:max(14px, 0.875rem)}.alert-message.sc-ion-alert-ios,.alert-input-group.sc-ion-alert-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:21px;color:var(--ion-text-color, #000);font-size:max(13px, 0.8125rem);text-align:center}.alert-message.sc-ion-alert-ios{max-height:240px}.alert-message.sc-ion-alert-ios:empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:12px}.alert-input.sc-ion-alert-ios{border-radius:7px;margin-top:10px;-webkit-padding-start:7px;padding-inline-start:7px;-webkit-padding-end:7px;padding-inline-end:7px;padding-top:7px;padding-bottom:7px;border:0.55px solid var(--ion-color-step-250, var(--ion-background-color-step-250, #bfbfbf));background-color:var(--ion-background-color, #fff);-webkit-appearance:none;-moz-appearance:none;appearance:none;font-size:1rem}.alert-input.sc-ion-alert-ios::-webkit-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-moz-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios:-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-ms-clear{display:none}.alert-input.sc-ion-alert-ios::-webkit-date-and-time-value{height:18px}.alert-radio-group.sc-ion-alert-ios,.alert-checkbox-group.sc-ion-alert-ios{-ms-scroll-chaining:none;overscroll-behavior:contain;max-height:240px;border-top:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);overflow-y:auto;-webkit-overflow-scrolling:touch}.alert-tappable.sc-ion-alert-ios{min-height:44px}.alert-radio-label.sc-ion-alert-ios{-webkit-padding-start:13px;padding-inline-start:13px;-webkit-padding-end:13px;padding-inline-end:13px;padding-top:13px;padding-bottom:13px;color:var(--ion-text-color, #000)}[aria-checked=true].sc-ion-alert-ios .alert-radio-label.sc-ion-alert-ios{color:var(--ion-color-primary, #0054e9)}.alert-radio-icon.sc-ion-alert-ios{position:relative;-ms-flex-negative:0;flex-shrink:0;min-width:30px}[aria-checked=true].sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios{top:-7px;position:absolute;width:6px;height:12px;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:2px;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-ios .radio-label-placement-end.sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios{inset-inline-end:7px}[aria-checked=true].sc-ion-alert-ios .radio-label-placement-start.sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios{inset-inline-start:7px}.alert-checkbox-label.sc-ion-alert-ios{-webkit-padding-start:13px;padding-inline-start:13px;-webkit-padding-end:13px;padding-inline-end:13px;padding-top:13px;padding-bottom:13px;color:var(--ion-text-color, #000)}.alert-checkbox-icon.sc-ion-alert-ios{border-radius:50%;margin-top:10px;margin-bottom:10px;position:relative;-ms-flex-negative:0;flex-shrink:0;width:min(1.375rem, 55.836px);height:min(1.375rem, 55.836px);border-width:0.125rem;border-style:solid;border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));background-color:var(--ion-item-background, var(--ion-background-color, #fff));contain:strict}.checkbox-label-placement-end.sc-ion-alert-ios .alert-checkbox-icon.sc-ion-alert-ios{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:6px;margin-inline-end:6px}.checkbox-label-placement-start.sc-ion-alert-ios .alert-checkbox-icon.sc-ion-alert-ios{-webkit-margin-start:6px;margin-inline-start:6px;-webkit-margin-end:16px;margin-inline-end:16px}[aria-checked=true].sc-ion-alert-ios .alert-checkbox-icon.sc-ion-alert-ios{border-color:var(--ion-color-primary, #0054e9);background-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios{top:calc(min(1.375rem, 55.836px) / 8);position:absolute;width:calc(min(1.375rem, 55.836px) / 6 + 1px);height:calc(min(1.375rem, 55.836px) * 0.5);-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:0.125rem;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-background-color, #fff)}[aria-checked=true].sc-ion-alert-ios .checkbox-label-placement-end.sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios{inset-inline-start:calc(min(1.375rem, 55.836px) / 3)}[aria-checked=true].sc-ion-alert-ios .checkbox-label-placement-start.sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios{inset-inline-end:calc(min(1.375rem, 55.836px) / 3)}.alert-button-group.sc-ion-alert-ios{-webkit-margin-end:-0.55px;margin-inline-end:-0.55px;-ms-flex-wrap:wrap;flex-wrap:wrap}.alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios{border-right:none}[dir=rtl].sc-ion-alert-ios-h .alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child{border-right:none}[dir=rtl].sc-ion-alert-ios .alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child{border-right:none}@supports selector(:dir(rtl)){.alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child:dir(rtl){border-right:none}}.alert-button.sc-ion-alert-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;border-radius:0;-ms-flex:1 1 auto;flex:1 1 auto;min-width:50%;height:max(44px, 2.75rem);border-top:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);background-color:transparent;color:var(--ion-color-primary, #0054e9);font-size:max(17px, 1.0625rem);overflow:hidden}[dir=rtl].sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:first-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:first-child{border-right:0}[dir=rtl].sc-ion-alert-ios .alert-button.sc-ion-alert-ios:first-child{border-right:0}@supports selector(:dir(rtl)){.alert-button.sc-ion-alert-ios:first-child:dir(rtl){border-right:0}}.alert-button.sc-ion-alert-ios:last-child{border-right:0;font-weight:bold}[dir=rtl].sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:last-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:last-child{border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2)}[dir=rtl].sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child{border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2)}@supports selector(:dir(rtl)){.alert-button.sc-ion-alert-ios:last-child:dir(rtl){border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2)}}.alert-button.ion-activated.sc-ion-alert-ios{background-color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.1)}.alert-button-role-destructive.sc-ion-alert-ios,.alert-button-role-destructive.ion-activated.sc-ion-alert-ios,.alert-button-role-destructive.ion-focused.sc-ion-alert-ios{color:var(--ion-color-danger, #c5000f)}`;
|
|
10373
10828
|
|
|
10374
|
-
const alertMdCss = () => `.sc-ion-alert-md-h{--min-width:250px;--width:auto;--min-height:auto;--height:auto;--max-height:90%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-alert-md-h{display:none}.alert-top.sc-ion-alert-md-h{padding-top:50px;-ms-flex-align:start;align-items:flex-start}.alert-wrapper.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);contain:content;opacity:0;z-index:10}.alert-title.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-sub-title.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-weight:normal}.alert-message.sc-ion-alert-md,.alert-input-group.sc-ion-alert-md{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch;overflow-y:auto;overscroll-behavior-y:contain}.alert-checkbox-label.sc-ion-alert-md,.alert-radio-label.sc-ion-alert-md{overflow-wrap:anywhere}@media (any-pointer: coarse){.alert-checkbox-group.sc-ion-alert-md::-webkit-scrollbar,.alert-radio-group.sc-ion-alert-md::-webkit-scrollbar,.alert-message.sc-ion-alert-md::-webkit-scrollbar{display:none}}.alert-input.sc-ion-alert-md{padding-left:0;padding-right:0;padding-top:10px;padding-bottom:10px;width:100%;border:0;background:inherit;font:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.alert-button-group.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;width:100%}.alert-button-group-vertical.sc-ion-alert-md{-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.alert-button.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;border:0;font-size:0.875rem;line-height:1.25rem;z-index:0}.alert-button.ion-focused.sc-ion-alert-md,.alert-tappable.ion-focused.sc-ion-alert-md{background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.alert-button-inner.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;min-height:inherit}.alert-input-disabled.sc-ion-alert-md,.alert-checkbox-button-disabled.sc-ion-alert-md .alert-button-inner.sc-ion-alert-md,.alert-radio-button-disabled.sc-ion-alert-md .alert-button-inner.sc-ion-alert-md{cursor:default;opacity:0.5;pointer-events:none}.alert-tappable.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;display:-ms-flexbox;display:flex;width:100%;border:0;background:transparent;font-size:inherit;line-height:initial;text-align:start;-webkit-appearance:none;-moz-appearance:none;appearance:none;contain:content}.alert-button.sc-ion-alert-md,.alert-checkbox.sc-ion-alert-md,.alert-input.sc-ion-alert-md,.alert-radio.sc-ion-alert-md{outline:none}.alert-radio-icon.sc-ion-alert-md,.alert-checkbox-icon.sc-ion-alert-md,.alert-checkbox-inner.sc-ion-alert-md{-webkit-box-sizing:border-box;box-sizing:border-box}textarea.alert-input.sc-ion-alert-md{min-height:37px;resize:none}.sc-ion-alert-md-h{--background:var(--ion-overlay-background-color, var(--ion-background-color, #fff));--max-width:280px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.32);font-size:0.875rem}.alert-wrapper.sc-ion-alert-md{border-radius:4px;-webkit-box-shadow:0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12);box-shadow:0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12)}.alert-head.sc-ion-alert-md{-webkit-padding-start:23px;padding-inline-start:23px;-webkit-padding-end:23px;padding-inline-end:23px;padding-top:20px;padding-bottom:15px;text-align:start}.alert-title.sc-ion-alert-md{color:var(--ion-text-color, #000);font-size:1.25rem;font-weight:500}.alert-sub-title.sc-ion-alert-md{color:var(--ion-text-color, #000);font-size:1rem}.alert-message.sc-ion-alert-md,.alert-input-group.sc-ion-alert-md{-webkit-padding-start:24px;padding-inline-start:24px;-webkit-padding-end:24px;padding-inline-end:24px;padding-top:20px;padding-bottom:20px;color:var(--ion-color-step-550, var(--ion-text-color-step-450, #737373))}.alert-message.sc-ion-alert-md{font-size:1rem}@media screen and (max-width: 767px){.alert-message.sc-ion-alert-md{max-height:266px}}.alert-message.sc-ion-alert-md:empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-head.sc-ion-alert-md+.alert-message.sc-ion-alert-md{padding-top:0}.alert-input.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:5px;border-bottom:1px solid var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));color:var(--ion-text-color, #000)}.alert-input.sc-ion-alert-md::-webkit-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-moz-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md:-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-ms-clear{display:none}.alert-input.sc-ion-alert-md:focus{margin-bottom:4px;border-bottom:2px solid var(--ion-color-primary, #0054e9)}.alert-radio-group.sc-ion-alert-md,.alert-checkbox-group.sc-ion-alert-md{position:relative;border-top:1px solid var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));border-bottom:1px solid var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));overflow:auto}@media screen and (max-width: 767px){.alert-radio-group.sc-ion-alert-md,.alert-checkbox-group.sc-ion-alert-md{max-height:266px}}.alert-tappable.sc-ion-alert-md{position:relative;min-height:48px}.alert-radio-label.sc-ion-alert-md{-webkit-padding-start:52px;padding-inline-start:52px;-webkit-padding-end:26px;padding-inline-end:26px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));font-size:1rem}.alert-radio-icon.sc-ion-alert-md{top:0;border-radius:50%;display:block;position:relative;width:20px;height:20px;border-width:2px;border-style:solid;border-color:var(--ion-color-step-550, var(--ion-background-color-step-550, #737373))}.alert-radio-icon.sc-ion-alert-md{inset-inline-start:26px}.alert-radio-inner.sc-ion-alert-md{top:3px;border-radius:50%;position:absolute;width:10px;height:10px;-webkit-transform:scale3d(0, 0, 0);transform:scale3d(0, 0, 0);-webkit-transition:-webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:-webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:transform 280ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);background-color:var(--ion-color-primary, #0054e9)}.alert-radio-inner.sc-ion-alert-md{inset-inline-start:3px}[aria-checked=true].sc-ion-alert-md .alert-radio-label.sc-ion-alert-md{color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626))}[aria-checked=true].sc-ion-alert-md .alert-radio-icon.sc-ion-alert-md{border-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-md .alert-radio-inner.sc-ion-alert-md{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}.alert-checkbox-label.sc-ion-alert-md{-webkit-padding-start:53px;padding-inline-start:53px;-webkit-padding-end:26px;padding-inline-end:26px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;width:calc(100% - 53px);color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));font-size:1rem}.alert-checkbox-icon.sc-ion-alert-md{top:0;border-radius:2px;position:relative;width:16px;height:16px;border-width:2px;border-style:solid;border-color:var(--ion-color-step-550, var(--ion-background-color-step-550, #737373));contain:strict}.alert-checkbox-icon.sc-ion-alert-md{inset-inline-start:26px}[aria-checked=true].sc-ion-alert-md .alert-checkbox-icon.sc-ion-alert-md{border-color:var(--ion-color-primary, #0054e9);background-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-md .alert-checkbox-inner.sc-ion-alert-md{top:0;position:absolute;width:6px;height:10px;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:2px;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-color-primary-contrast, #fff)}[aria-checked=true].sc-ion-alert-md .alert-checkbox-inner.sc-ion-alert-md{inset-inline-start:3px}.alert-button-group.sc-ion-alert-md{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse;-ms-flex-pack:end;justify-content:flex-end}.alert-button.sc-ion-alert-md{border-radius:2px;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:8px;margin-inline-end:8px;margin-top:0;margin-bottom:0;-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:10px;padding-bottom:10px;position:relative;background-color:transparent;color:var(--ion-color-primary, #0054e9);font-weight:500;text-align:end;text-transform:uppercase;overflow:hidden}.alert-button-inner.sc-ion-alert-md{-ms-flex-pack:end;justify-content:flex-end}@media screen and (min-width: 768px){.sc-ion-alert-md-h{--max-width:min(100vw - 96px, 560px);--max-height:min(100vh - 96px, 560px)}}`;
|
|
10829
|
+
const alertMdCss = () => `.action-sheet-button-label-has-rich-content.sc-ion-alert-md,.alert-radio-label-has-rich-content.sc-ion-alert-md,.alert-checkbox-label-has-rich-content.sc-ion-alert-md,.select-option-label-has-rich-content.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:16px}.action-sheet-button-label-has-rich-content.sc-ion-alert-md,.alert-radio-label-has-rich-content.sc-ion-alert-md,.alert-checkbox-label-has-rich-content.sc-ion-alert-md,.select-option-content.sc-ion-alert-md{-ms-flex:1;flex:1}.action-sheet-button-label-text.sc-ion-alert-md,.alert-checkbox-label-text.sc-ion-alert-md,.alert-radio-label-text.sc-ion-alert-md,.select-option-label-text.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:12px}.select-option-start.sc-ion-alert-md,.select-option-end.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px}.select-option-description.sc-ion-alert-md{padding-left:0;padding-right:0;padding-top:5px;padding-bottom:0;display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem}.select-option-label.sc-ion-alert-md:not(.select-option-label-has-rich-content){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-option-label-has-rich-content.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}ion-radio.select-option-has-rich-content.sc-ion-alert-md::part(label),ion-radio.select-option-has-rich-content.sc-ion-alert-md [part~="label"],ion-checkbox.select-option-has-rich-content.sc-ion-alert-md::part(label),ion-checkbox.select-option-has-rich-content.sc-ion-alert-md [part~="label"],.select-option-content.sc-ion-alert-md{-ms-flex:1;flex:1;white-space:normal}.select-option-start.sc-ion-alert-md>ion-avatar.sc-ion-alert-md,.select-option-end.sc-ion-alert-md>ion-avatar.sc-ion-alert-md{width:40px;height:40px}.select-option-start.sc-ion-alert-md>ion-icon.sc-ion-alert-md,.select-option-end.sc-ion-alert-md>ion-icon.sc-ion-alert-md{width:24px;height:24px}.select-option-start.sc-ion-alert-md>ion-img.sc-ion-alert-md,.select-option-start.sc-ion-alert-md>img.sc-ion-alert-md,.select-option-start.sc-ion-alert-md>svg.sc-ion-alert-md,.select-option-start.sc-ion-alert-md>ion-thumbnail.sc-ion-alert-md,.select-option-end.sc-ion-alert-md>ion-img.sc-ion-alert-md,.select-option-end.sc-ion-alert-md>img.sc-ion-alert-md,.select-option-end.sc-ion-alert-md>svg.sc-ion-alert-md,.select-option-end.sc-ion-alert-md>ion-thumbnail.sc-ion-alert-md{width:56px;height:56px}.select-option-start.sc-ion-alert-md>video.sc-ion-alert-md,.select-option-end.sc-ion-alert-md>video.sc-ion-alert-md{width:114px;height:56px}.sc-ion-alert-md-h{--min-width:250px;--width:auto;--min-height:auto;--height:auto;--max-height:90%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-alert-md-h{display:none}.alert-top.sc-ion-alert-md-h{padding-top:50px;-ms-flex-align:start;align-items:flex-start}.alert-wrapper.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);contain:content;opacity:0;z-index:10}.alert-title.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-sub-title.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-weight:normal}.alert-message.sc-ion-alert-md,.alert-input-group.sc-ion-alert-md{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch;overflow-y:auto;overscroll-behavior-y:contain}.alert-checkbox-label.sc-ion-alert-md,.alert-radio-label.sc-ion-alert-md{overflow-wrap:anywhere}@media (any-pointer: coarse){.alert-checkbox-group.sc-ion-alert-md::-webkit-scrollbar,.alert-radio-group.sc-ion-alert-md::-webkit-scrollbar,.alert-message.sc-ion-alert-md::-webkit-scrollbar{display:none}}.alert-input.sc-ion-alert-md{padding-left:0;padding-right:0;padding-top:10px;padding-bottom:10px;width:100%;border:0;background:inherit;font:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.alert-button-group.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;width:100%}.alert-button-group-vertical.sc-ion-alert-md{-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.alert-button.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;border:0;font-size:0.875rem;line-height:1.25rem;z-index:0}.alert-button.ion-focused.sc-ion-alert-md,.alert-tappable.ion-focused.sc-ion-alert-md{background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.alert-button-inner.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;min-height:inherit}.radio-label-placement-start.sc-ion-alert-md,.checkbox-label-placement-start.sc-ion-alert-md{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.radio-label-placement-end.sc-ion-alert-md,.checkbox-label-placement-end.sc-ion-alert-md{-ms-flex-direction:row;flex-direction:row}.radio-justify-start.sc-ion-alert-md,.checkbox-justify-start.sc-ion-alert-md{-ms-flex-pack:start;justify-content:start}.radio-justify-end.sc-ion-alert-md,.checkbox-justify-end.sc-ion-alert-md{-ms-flex-pack:end;justify-content:end}.radio-justify-space-between.sc-ion-alert-md,.checkbox-justify-space-between.sc-ion-alert-md{-ms-flex-pack:justify;justify-content:space-between}.alert-input-disabled.sc-ion-alert-md,.alert-checkbox-button-disabled.sc-ion-alert-md .alert-button-inner.sc-ion-alert-md,.alert-radio-button-disabled.sc-ion-alert-md .alert-button-inner.sc-ion-alert-md{cursor:default;opacity:0.5;pointer-events:none}.alert-tappable.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;display:-ms-flexbox;display:flex;width:100%;border:0;background:transparent;font-size:inherit;line-height:initial;text-align:start;-webkit-appearance:none;-moz-appearance:none;appearance:none;contain:content}.alert-button.sc-ion-alert-md,.alert-checkbox.sc-ion-alert-md,.alert-input.sc-ion-alert-md,.alert-radio.sc-ion-alert-md{outline:none}.alert-radio-icon.sc-ion-alert-md,.alert-checkbox-icon.sc-ion-alert-md,.alert-checkbox-inner.sc-ion-alert-md{-webkit-box-sizing:border-box;box-sizing:border-box}textarea.alert-input.sc-ion-alert-md{min-height:37px;resize:none}.sc-ion-alert-md-h{--background:var(--ion-overlay-background-color, var(--ion-background-color, #fff));--max-width:280px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.32);font-size:0.875rem}.alert-wrapper.sc-ion-alert-md{border-radius:4px;-webkit-box-shadow:0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12);box-shadow:0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12)}.alert-head.sc-ion-alert-md{-webkit-padding-start:24px;padding-inline-start:24px;-webkit-padding-end:24px;padding-inline-end:24px;padding-top:20px;padding-bottom:15px;text-align:start}.alert-title.sc-ion-alert-md{color:var(--ion-text-color, #000);font-size:1.25rem;font-weight:500}.alert-sub-title.sc-ion-alert-md{color:var(--ion-text-color, #000);font-size:1rem}.alert-message.sc-ion-alert-md,.alert-input-group.sc-ion-alert-md{-webkit-padding-start:24px;padding-inline-start:24px;-webkit-padding-end:24px;padding-inline-end:24px;padding-top:20px;padding-bottom:20px;color:var(--ion-color-step-550, var(--ion-text-color-step-450, #737373))}.alert-message.sc-ion-alert-md{font-size:1rem}@media screen and (max-width: 767px){.alert-message.sc-ion-alert-md{max-height:266px}}.alert-message.sc-ion-alert-md:empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-head.sc-ion-alert-md+.alert-message.sc-ion-alert-md{padding-top:0}.alert-input.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:5px;border-bottom:1px solid var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));color:var(--ion-text-color, #000)}.alert-input.sc-ion-alert-md::-webkit-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-moz-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md:-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-ms-clear{display:none}.alert-input.sc-ion-alert-md:focus{margin-bottom:4px;border-bottom:2px solid var(--ion-color-primary, #0054e9)}.alert-radio-group.sc-ion-alert-md,.alert-checkbox-group.sc-ion-alert-md{position:relative;border-top:1px solid var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));border-bottom:1px solid var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));overflow:auto}@media screen and (max-width: 767px){.alert-radio-group.sc-ion-alert-md,.alert-checkbox-group.sc-ion-alert-md{max-height:266px}}.alert-tappable.sc-ion-alert-md{position:relative;min-height:48px}.alert-radio-label.sc-ion-alert-md{padding-top:13px;padding-bottom:13px;max-width:calc(100% - 20px);color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));font-size:1rem}.radio-label-placement-end.sc-ion-alert-md .alert-radio-label.sc-ion-alert-md{-webkit-padding-start:56px;padding-inline-start:56px;-webkit-padding-end:24px;padding-inline-end:24px}.radio-label-placement-start.sc-ion-alert-md .alert-radio-label.sc-ion-alert-md{-webkit-padding-start:24px;padding-inline-start:24px;-webkit-padding-end:56px;padding-inline-end:56px}.alert-radio-icon.sc-ion-alert-md{top:0;border-radius:50%;display:block;position:relative;-ms-flex-negative:0;flex-shrink:0;width:20px;height:20px;border-width:2px;border-style:solid;border-color:var(--ion-color-step-550, var(--ion-background-color-step-550, #737373))}.radio-label-placement-end.sc-ion-alert-md .alert-radio-icon.sc-ion-alert-md{inset-inline-start:24px}.radio-label-placement-start.sc-ion-alert-md .alert-radio-icon.sc-ion-alert-md{inset-inline-end:24px}.alert-radio-inner.sc-ion-alert-md{top:3px;border-radius:50%;position:absolute;width:10px;height:10px;-webkit-transform:scale3d(0, 0, 0);transform:scale3d(0, 0, 0);-webkit-transition:-webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:-webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:transform 280ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);background-color:var(--ion-color-primary, #0054e9)}.alert-radio-inner.sc-ion-alert-md{inset-inline-start:3px}[aria-checked=true].sc-ion-alert-md .alert-radio-label.sc-ion-alert-md{color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626))}[aria-checked=true].sc-ion-alert-md .alert-radio-icon.sc-ion-alert-md{border-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-md .alert-radio-inner.sc-ion-alert-md{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}.alert-checkbox-label.sc-ion-alert-md{padding-top:13px;padding-bottom:13px;max-width:calc(100% - 16px);color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));font-size:1rem}.checkbox-label-placement-end.sc-ion-alert-md .alert-checkbox-label.sc-ion-alert-md{-webkit-padding-start:56px;padding-inline-start:56px;-webkit-padding-end:24px;padding-inline-end:24px}.checkbox-label-placement-start.sc-ion-alert-md .alert-checkbox-label.sc-ion-alert-md{-webkit-padding-start:24px;padding-inline-start:24px;-webkit-padding-end:56px;padding-inline-end:56px}.alert-checkbox-icon.sc-ion-alert-md{top:0;border-radius:2px;position:relative;-ms-flex-negative:0;flex-shrink:0;width:16px;height:16px;border-width:2px;border-style:solid;border-color:var(--ion-color-step-550, var(--ion-background-color-step-550, #737373));contain:strict}.checkbox-label-placement-end.sc-ion-alert-md .alert-checkbox-icon.sc-ion-alert-md{inset-inline-start:24px}.checkbox-label-placement-start.sc-ion-alert-md .alert-checkbox-icon.sc-ion-alert-md{inset-inline-end:24px}[aria-checked=true].sc-ion-alert-md .alert-checkbox-icon.sc-ion-alert-md{border-color:var(--ion-color-primary, #0054e9);background-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-md .alert-checkbox-inner.sc-ion-alert-md{top:0;position:absolute;width:6px;height:10px;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:2px;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-color-primary-contrast, #fff)}[aria-checked=true].sc-ion-alert-md .alert-checkbox-inner.sc-ion-alert-md{inset-inline-start:3px}.alert-button-group.sc-ion-alert-md{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse;-ms-flex-pack:end;justify-content:flex-end}.alert-button.sc-ion-alert-md{border-radius:2px;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:8px;margin-inline-end:8px;margin-top:0;margin-bottom:0;-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:10px;padding-bottom:10px;position:relative;background-color:transparent;color:var(--ion-color-primary, #0054e9);font-weight:500;text-align:end;text-transform:uppercase;overflow:hidden}.alert-button-group.sc-ion-alert-md .alert-button-inner.sc-ion-alert-md{-ms-flex-pack:end;justify-content:flex-end}@media screen and (min-width: 768px){.sc-ion-alert-md-h{--max-width:min(100vw - 96px, 560px);--max-height:min(100vh - 96px, 560px)}}`;
|
|
10375
10830
|
|
|
10376
10831
|
// TODO(FW-2832): types
|
|
10377
10832
|
/**
|
|
@@ -10545,22 +11000,7 @@ class Alert {
|
|
|
10545
11000
|
this.inputType = inputTypes.values().next().value;
|
|
10546
11001
|
this.processedInputs = inputs.map((i, index) => {
|
|
10547
11002
|
var _a;
|
|
10548
|
-
return ({
|
|
10549
|
-
type: i.type || 'text',
|
|
10550
|
-
name: i.name || `${index}`,
|
|
10551
|
-
placeholder: i.placeholder || '',
|
|
10552
|
-
value: i.value,
|
|
10553
|
-
label: i.label,
|
|
10554
|
-
checked: !!i.checked,
|
|
10555
|
-
disabled: !!i.disabled,
|
|
10556
|
-
id: i.id || `alert-input-${this.overlayIndex}-${index}`,
|
|
10557
|
-
handler: i.handler,
|
|
10558
|
-
min: i.min,
|
|
10559
|
-
max: i.max,
|
|
10560
|
-
cssClass: (_a = i.cssClass) !== null && _a !== void 0 ? _a : '',
|
|
10561
|
-
attributes: i.attributes || {},
|
|
10562
|
-
tabindex: i.type === 'radio' && i !== focusable ? -1 : 0,
|
|
10563
|
-
});
|
|
11003
|
+
return Object.assign(Object.assign({}, i), { type: i.type || 'text', name: i.name || `${index}`, placeholder: i.placeholder || '', checked: !!i.checked, disabled: !!i.disabled, id: i.id || `alert-input-${this.overlayIndex}-${index}`, cssClass: (_a = i.cssClass) !== null && _a !== void 0 ? _a : '', attributes: i.attributes || {}, tabindex: i.type === 'radio' && i !== focusable ? -1 : 0 });
|
|
10564
11004
|
});
|
|
10565
11005
|
}
|
|
10566
11006
|
connectedCallback() {
|
|
@@ -10588,6 +11028,10 @@ class Alert {
|
|
|
10588
11028
|
this.gesture.destroy();
|
|
10589
11029
|
this.gesture = undefined;
|
|
10590
11030
|
}
|
|
11031
|
+
// Clean up aria-hidden if removed without dismiss() being called
|
|
11032
|
+
if (this.presented) {
|
|
11033
|
+
cleanupRootFocusTrapAccessibility();
|
|
11034
|
+
}
|
|
10591
11035
|
(_a = this.buttonGroupResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
10592
11036
|
this.buttonGroupResizeObserver = undefined;
|
|
10593
11037
|
}
|
|
@@ -10627,7 +11071,7 @@ class Alert {
|
|
|
10627
11071
|
async present() {
|
|
10628
11072
|
const unlock = await this.lockController.lock();
|
|
10629
11073
|
await this.delegateController.attachViewToDom();
|
|
10630
|
-
await present(this, 'alertEnter', iosEnterAnimation$
|
|
11074
|
+
await present(this, 'alertEnter', iosEnterAnimation$4, mdEnterAnimation$4).then(() => {
|
|
10631
11075
|
var _a, _b;
|
|
10632
11076
|
/**
|
|
10633
11077
|
* Check if alert has only one button and no inputs.
|
|
@@ -10658,7 +11102,7 @@ class Alert {
|
|
|
10658
11102
|
*/
|
|
10659
11103
|
async dismiss(data, role) {
|
|
10660
11104
|
const unlock = await this.lockController.lock();
|
|
10661
|
-
const dismissed = await dismiss(this, data, role, 'alertLeave', iosLeaveAnimation$
|
|
11105
|
+
const dismissed = await dismiss(this, data, role, 'alertLeave', iosLeaveAnimation$4, mdLeaveAnimation$4);
|
|
10662
11106
|
if (dismissed) {
|
|
10663
11107
|
this.delegateController.removeViewFromDom();
|
|
10664
11108
|
}
|
|
@@ -10756,14 +11200,61 @@ class Alert {
|
|
|
10756
11200
|
if (inputs.length === 0) {
|
|
10757
11201
|
return null;
|
|
10758
11202
|
}
|
|
10759
|
-
return (hAsync("div", { class: "alert-checkbox-group" }, inputs.map((i) =>
|
|
11203
|
+
return (hAsync("div", { class: "alert-checkbox-group" }, inputs.map((i) => {
|
|
11204
|
+
var _a, _b;
|
|
11205
|
+
/**
|
|
11206
|
+
* Cast to `SelectAlertInput` to access rich content
|
|
11207
|
+
* fields (`startContent`, `endContent`, `description`)
|
|
11208
|
+
* that are passed through from `ion-select` but not
|
|
11209
|
+
* part of the public `AlertInput` interface.
|
|
11210
|
+
*/
|
|
11211
|
+
const richInput = i;
|
|
11212
|
+
const optionLabelOptions = {
|
|
11213
|
+
id: richInput.id,
|
|
11214
|
+
label: richInput.label,
|
|
11215
|
+
startContent: richInput.startContent,
|
|
11216
|
+
endContent: richInput.endContent,
|
|
11217
|
+
description: richInput.description,
|
|
11218
|
+
};
|
|
11219
|
+
const defaultLabelPlacement = getOverlayLabelPlacement(mode, 'checkbox');
|
|
11220
|
+
const defaultJustify = getOverlayLabelJustify(mode, 'checkbox');
|
|
11221
|
+
return (hAsync("button", { type: "button", onClick: () => this.cbClick(i), "aria-checked": `${i.checked}`, id: i.id, disabled: i.disabled, tabIndex: i.tabindex, role: "checkbox", class: Object.assign(Object.assign({}, getClassMap(i.cssClass)), { 'alert-tappable': true, 'alert-checkbox': true, 'alert-checkbox-button': true, 'ion-focusable': !i.disabled, 'ion-activatable': !i.disabled, 'alert-checkbox-button-disabled': i.disabled || false }) }, hAsync("div", { class: {
|
|
11222
|
+
'alert-button-inner': true,
|
|
11223
|
+
[`checkbox-label-placement-${(_a = richInput.labelPlacement) !== null && _a !== void 0 ? _a : defaultLabelPlacement}`]: true,
|
|
11224
|
+
[`checkbox-justify-${(_b = richInput.justify) !== null && _b !== void 0 ? _b : defaultJustify}`]: true,
|
|
11225
|
+
} }, hAsync("div", { class: "alert-checkbox-icon" }, hAsync("div", { class: "alert-checkbox-inner" })), renderOptionLabel(optionLabelOptions, 'alert-checkbox-label')), mode === 'md' && hAsync("ion-ripple-effect", null)));
|
|
11226
|
+
})));
|
|
10760
11227
|
}
|
|
10761
11228
|
renderRadio() {
|
|
10762
11229
|
const inputs = this.processedInputs;
|
|
11230
|
+
const mode = getIonMode$1(this);
|
|
10763
11231
|
if (inputs.length === 0) {
|
|
10764
11232
|
return null;
|
|
10765
11233
|
}
|
|
10766
|
-
return (hAsync("div", { class: "alert-radio-group", role: "radiogroup", "aria-activedescendant": this.activeId }, inputs.map((i) =>
|
|
11234
|
+
return (hAsync("div", { class: "alert-radio-group", role: "radiogroup", "aria-activedescendant": this.activeId }, inputs.map((i) => {
|
|
11235
|
+
var _a, _b;
|
|
11236
|
+
/**
|
|
11237
|
+
* Cast to `SelectAlertInput` to access rich content
|
|
11238
|
+
* fields (`startContent`, `endContent`, `description`)
|
|
11239
|
+
* that are passed through from `ion-select` but not
|
|
11240
|
+
* part of the public `AlertInput` interface.
|
|
11241
|
+
*/
|
|
11242
|
+
const richInput = i;
|
|
11243
|
+
const optionLabelOptions = {
|
|
11244
|
+
id: richInput.id,
|
|
11245
|
+
label: richInput.label,
|
|
11246
|
+
startContent: richInput.startContent,
|
|
11247
|
+
endContent: richInput.endContent,
|
|
11248
|
+
description: richInput.description,
|
|
11249
|
+
};
|
|
11250
|
+
const defaultLabelPlacement = getOverlayLabelPlacement(mode, 'radio');
|
|
11251
|
+
const defaultJustify = getOverlayLabelJustify(mode, 'radio');
|
|
11252
|
+
return (hAsync("button", { type: "button", onClick: () => this.rbClick(i), "aria-checked": `${i.checked}`, disabled: i.disabled, id: i.id, tabIndex: i.tabindex, class: Object.assign(Object.assign({}, getClassMap(i.cssClass)), { 'alert-radio-button': true, 'alert-tappable': true, 'alert-radio': true, 'ion-focusable': !i.disabled, 'ion-activatable': !i.disabled, 'alert-radio-button-disabled': i.disabled || false }), role: "radio" }, hAsync("div", { class: {
|
|
11253
|
+
'alert-button-inner': true,
|
|
11254
|
+
[`radio-label-placement-${(_a = richInput.labelPlacement) !== null && _a !== void 0 ? _a : defaultLabelPlacement}`]: true,
|
|
11255
|
+
[`radio-justify-${(_b = richInput.justify) !== null && _b !== void 0 ? _b : defaultJustify}`]: true,
|
|
11256
|
+
} }, hAsync("div", { class: "alert-radio-icon" }, hAsync("div", { class: "alert-radio-inner" })), renderOptionLabel(optionLabelOptions, 'alert-radio-label'))));
|
|
11257
|
+
})));
|
|
10767
11258
|
}
|
|
10768
11259
|
renderInput() {
|
|
10769
11260
|
const inputs = this.processedInputs;
|
|
@@ -10843,7 +11334,7 @@ class Alert {
|
|
|
10843
11334
|
'alert-button-group': true,
|
|
10844
11335
|
'alert-button-group-vertical': buttons.length > 2 || this.isButtonGroupWrapped,
|
|
10845
11336
|
};
|
|
10846
|
-
return (hAsync("div", { class: alertButtonGroupClass, ref: (el) => (this.buttonGroupEl = el) }, buttons.map((button) => (hAsync("button", Object.assign({}, button.htmlAttributes, { type: "button", id: button.id, class: buttonClass$
|
|
11337
|
+
return (hAsync("div", { class: alertButtonGroupClass, ref: (el) => (this.buttonGroupEl = el) }, buttons.map((button) => (hAsync("button", Object.assign({}, button.htmlAttributes, { type: "button", id: button.id, class: buttonClass$1(button), tabIndex: 0, onClick: () => this.buttonClick(button) }), hAsync("span", { class: "alert-button-inner" }, button.text), mode === 'md' && hAsync("ion-ripple-effect", null))))));
|
|
10847
11338
|
}
|
|
10848
11339
|
renderAlertMessage(msgId) {
|
|
10849
11340
|
const { customHTMLEnabled, message } = this;
|
|
@@ -10866,9 +11357,9 @@ class Alert {
|
|
|
10866
11357
|
* If neither are defined, do not set aria-labelledby.
|
|
10867
11358
|
*/
|
|
10868
11359
|
const ariaLabelledBy = header && subHeader ? `${hdrId} ${subHdrId}` : header ? hdrId : subHeader ? subHdrId : null;
|
|
10869
|
-
return (hAsync(Host, { key: '
|
|
11360
|
+
return (hAsync(Host, { key: '022f3463b8e6c52064b90ec304c524847c3d5ad3', tabindex: "-1", style: {
|
|
10870
11361
|
zIndex: `${20000 + overlayIndex}`,
|
|
10871
|
-
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, hAsync("ion-backdrop", { key: '
|
|
11362
|
+
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, hAsync("ion-backdrop", { key: 'c3cd05738bc2834f54707edeb2fae06ec10d6fd2', tappable: this.backdropDismiss }), hAsync("div", { key: 'b44fadd9ba7ddf073854c5035538d11ae8e66bc2', tabindex: "0", "aria-hidden": "true" }), hAsync("div", Object.assign({ key: 'fafea048141a6c7957e62aef31faa8041dd610c1', class: "alert-wrapper ion-overlay-wrapper", role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "0", ref: (el) => (this.wrapperEl = el) }, htmlAttributes), hAsync("div", { key: '3ad9d2d4b7cf425eab8293ddc12eff0fe8df1517', class: "alert-head" }, header && (hAsync("h2", { key: '7d9154f5ee595b7e4da6ecf3a20871f104c1256e', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (hAsync("h2", { key: '1f891f38004be6964e9406b84dd580145c42516a', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (hAsync("h3", { key: '2ab4d344ecb7e384e8f6d3d3e59ee5a1bbcc832c', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), hAsync("div", { key: '78a4ff09aa3aaafcd0dc2a42d036767d83b3cfa2', tabindex: "0", "aria-hidden": "true" })));
|
|
10872
11363
|
}
|
|
10873
11364
|
get el() { return getElement(this); }
|
|
10874
11365
|
static get watchers() { return {
|
|
@@ -10926,7 +11417,7 @@ const inputClass = (input) => {
|
|
|
10926
11417
|
var _a, _b, _c;
|
|
10927
11418
|
return Object.assign(Object.assign({ 'alert-input': true, 'alert-input-disabled': ((_b = (_a = input.attributes) === null || _a === void 0 ? void 0 : _a.disabled) !== null && _b !== void 0 ? _b : input.disabled) || false }, getClassMap(input.cssClass)), getClassMap(input.attributes ? (_c = input.attributes.class) === null || _c === void 0 ? void 0 : _c.toString() : ''));
|
|
10928
11419
|
};
|
|
10929
|
-
const buttonClass$
|
|
11420
|
+
const buttonClass$1 = (button) => {
|
|
10930
11421
|
return Object.assign({ 'alert-button': true, 'ion-focusable': true, 'ion-activatable': true, [`alert-button-role-${button.role}`]: button.role !== undefined }, getClassMap(button.cssClass));
|
|
10931
11422
|
};
|
|
10932
11423
|
|
|
@@ -19265,7 +19756,7 @@ class Input {
|
|
|
19265
19756
|
/**
|
|
19266
19757
|
* Whether auto correction should be enabled when the user is entering/editing the text value.
|
|
19267
19758
|
*/
|
|
19268
|
-
this.autocorrect =
|
|
19759
|
+
this.autocorrect = false;
|
|
19269
19760
|
/**
|
|
19270
19761
|
* Sets the [`autofocus` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus) on the native input element.
|
|
19271
19762
|
*
|
|
@@ -19722,7 +20213,7 @@ class Input {
|
|
|
19722
20213
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
19723
20214
|
*/
|
|
19724
20215
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
|
|
19725
|
-
return (hAsync(Host, { key: '
|
|
20216
|
+
return (hAsync(Host, { key: '6a05f61339d8045285d5820c2508296cc842c210', class: createColorClasses$1(this.color, {
|
|
19726
20217
|
[mode]: true,
|
|
19727
20218
|
'has-value': hasValue,
|
|
19728
20219
|
'has-focus': hasFocus,
|
|
@@ -19733,14 +20224,14 @@ class Input {
|
|
|
19733
20224
|
'in-item': inItem,
|
|
19734
20225
|
'in-item-color': hostContext('ion-item.ion-color', this.el),
|
|
19735
20226
|
'input-disabled': disabled,
|
|
19736
|
-
}) }, hAsync("label", { key: '
|
|
20227
|
+
}) }, hAsync("label", { key: 'b546d66f53ea25082494e3a4cb0ce7532ee649d7', class: "input-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: '6af832f2b25fadee7a49adb999166dbc97565e2d', class: "native-wrapper", onClick: this.onLabelClick }, hAsync("slot", { key: 'e7a8895038a8d2503f646acfda20c6c1a99c2839', name: "start" }), hAsync("input", Object.assign({ key: 'ce85703e0434a6322bb4275a924e3cd91c79fa20', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect ? 'on' : 'off', autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd, "aria-describedby": this.getHintTextID(), "aria-invalid": this.isInvalid ? 'true' : undefined, "aria-labelledby": this.getLabelledById() }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (hAsync("button", { key: '1e59589fc89a37d7830dc915b4c19d26a8f568c7', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
|
|
19737
20228
|
/**
|
|
19738
20229
|
* This prevents mobile browsers from
|
|
19739
20230
|
* blurring the input when the clear
|
|
19740
20231
|
* button is activated.
|
|
19741
20232
|
*/
|
|
19742
20233
|
ev.preventDefault();
|
|
19743
|
-
}, onClick: this.clearTextInput }, hAsync("ion-icon", { key: '
|
|
20234
|
+
}, onClick: this.clearTextInput }, hAsync("ion-icon", { key: '7d443c5061bf6436d3b77a2444676c679b3e62e4', "aria-hidden": "true", icon: clearIconData }))), hAsync("slot", { key: '5516f88d46886348217570ec1fadda0b79b63c01', name: "end" })), shouldRenderHighlight && hAsync("div", { key: '2a1fdb7e7c974654dfbb3afb4fbfd9204e9d9092', class: "input-highlight" })), this.renderBottomContent()));
|
|
19744
20235
|
}
|
|
19745
20236
|
get el() { return getElement(this); }
|
|
19746
20237
|
static get watchers() { return {
|
|
@@ -19768,7 +20259,7 @@ class Input {
|
|
|
19768
20259
|
"color": [513],
|
|
19769
20260
|
"autocapitalize": [1],
|
|
19770
20261
|
"autocomplete": [1],
|
|
19771
|
-
"autocorrect": [
|
|
20262
|
+
"autocorrect": [4],
|
|
19772
20263
|
"autofocus": [4],
|
|
19773
20264
|
"clearInput": [4, "clear-input"],
|
|
19774
20265
|
"clearInputIcon": [1, "clear-input-icon"],
|
|
@@ -21772,7 +22263,7 @@ class ListHeader {
|
|
|
21772
22263
|
/**
|
|
21773
22264
|
* iOS Loading Enter Animation
|
|
21774
22265
|
*/
|
|
21775
|
-
const iosEnterAnimation$
|
|
22266
|
+
const iosEnterAnimation$3 = (baseEl) => {
|
|
21776
22267
|
const baseAnimation = createAnimation();
|
|
21777
22268
|
const backdropAnimation = createAnimation();
|
|
21778
22269
|
const wrapperAnimation = createAnimation();
|
|
@@ -21797,7 +22288,7 @@ const iosEnterAnimation$4 = (baseEl) => {
|
|
|
21797
22288
|
/**
|
|
21798
22289
|
* iOS Loading Leave Animation
|
|
21799
22290
|
*/
|
|
21800
|
-
const iosLeaveAnimation$
|
|
22291
|
+
const iosLeaveAnimation$3 = (baseEl) => {
|
|
21801
22292
|
const baseAnimation = createAnimation();
|
|
21802
22293
|
const backdropAnimation = createAnimation();
|
|
21803
22294
|
const wrapperAnimation = createAnimation();
|
|
@@ -21970,6 +22461,10 @@ class Loading {
|
|
|
21970
22461
|
}
|
|
21971
22462
|
disconnectedCallback() {
|
|
21972
22463
|
this.triggerController.removeClickListener();
|
|
22464
|
+
// Clean up aria-hidden if removed without dismiss() being called
|
|
22465
|
+
if (this.presented) {
|
|
22466
|
+
cleanupRootFocusTrapAccessibility();
|
|
22467
|
+
}
|
|
21973
22468
|
}
|
|
21974
22469
|
/**
|
|
21975
22470
|
* Present the loading overlay after it has been created.
|
|
@@ -21977,7 +22472,7 @@ class Loading {
|
|
|
21977
22472
|
async present() {
|
|
21978
22473
|
const unlock = await this.lockController.lock();
|
|
21979
22474
|
await this.delegateController.attachViewToDom();
|
|
21980
|
-
await present(this, 'loadingEnter', iosEnterAnimation$
|
|
22475
|
+
await present(this, 'loadingEnter', iosEnterAnimation$3, mdEnterAnimation$3);
|
|
21981
22476
|
if (this.duration > 0) {
|
|
21982
22477
|
this.durationTimeout = setTimeout(() => this.dismiss(), this.duration + 10);
|
|
21983
22478
|
}
|
|
@@ -22000,7 +22495,7 @@ class Loading {
|
|
|
22000
22495
|
if (this.durationTimeout) {
|
|
22001
22496
|
clearTimeout(this.durationTimeout);
|
|
22002
22497
|
}
|
|
22003
|
-
const dismissed = await dismiss(this, data, role, 'loadingLeave', iosLeaveAnimation$
|
|
22498
|
+
const dismissed = await dismiss(this, data, role, 'loadingLeave', iosLeaveAnimation$3, mdLeaveAnimation$3);
|
|
22004
22499
|
if (dismissed) {
|
|
22005
22500
|
this.delegateController.removeViewFromDom();
|
|
22006
22501
|
}
|
|
@@ -22035,9 +22530,9 @@ class Loading {
|
|
|
22035
22530
|
* Otherwise, don't set aria-labelledby.
|
|
22036
22531
|
*/
|
|
22037
22532
|
const ariaLabelledBy = message !== undefined ? msgId : null;
|
|
22038
|
-
return (hAsync(Host, Object.assign({ key: '
|
|
22533
|
+
return (hAsync(Host, Object.assign({ key: 'ab48bfcee8f7e3e33847a2f262fdc08b9ea804ca', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
|
|
22039
22534
|
zIndex: `${40000 + this.overlayIndex}`,
|
|
22040
|
-
}, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), hAsync("ion-backdrop", { key: '
|
|
22535
|
+
}, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), hAsync("ion-backdrop", { key: '41baccc7fb6474389a3a3431c208e829ef738b75', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: '7b7290974abbe8db8739b19835aca9f8b5c271c2', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: 'e32466abfcc92aaad47ea03b1dcb49f66abe4b63', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (hAsync("div", { key: 'c5e6e6f9e3f39dba0225d08d7dd2c1b96a1d83c7', class: "loading-spinner" }, hAsync("ion-spinner", { key: 'f428038959d879404ea898011363aac0b807ad11', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), hAsync("div", { key: '490e531367b86c319fa4260722dcff4dd631fa88', tabindex: "0", "aria-hidden": "true" })));
|
|
22041
22536
|
}
|
|
22042
22537
|
get el() { return getElement(this); }
|
|
22043
22538
|
static get watchers() { return {
|
|
@@ -24311,7 +24806,7 @@ const createEnterAnimation$1 = () => {
|
|
|
24311
24806
|
/**
|
|
24312
24807
|
* iOS Modal Enter Animation for the Card presentation style
|
|
24313
24808
|
*/
|
|
24314
|
-
const iosEnterAnimation$
|
|
24809
|
+
const iosEnterAnimation$2 = (baseEl, opts) => {
|
|
24315
24810
|
const { presentingEl, currentBreakpoint, expandToScroll } = opts;
|
|
24316
24811
|
const root = getElementRoot(baseEl);
|
|
24317
24812
|
const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
|
|
@@ -24404,7 +24899,7 @@ const createLeaveAnimation$1 = () => {
|
|
|
24404
24899
|
/**
|
|
24405
24900
|
* iOS Modal Leave Animation
|
|
24406
24901
|
*/
|
|
24407
|
-
const iosLeaveAnimation$
|
|
24902
|
+
const iosLeaveAnimation$2 = (baseEl, opts, duration = 500) => {
|
|
24408
24903
|
const { presentingEl, currentBreakpoint } = opts;
|
|
24409
24904
|
const root = getElementRoot(baseEl);
|
|
24410
24905
|
const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation$1();
|
|
@@ -25579,13 +26074,20 @@ class Modal {
|
|
|
25579
26074
|
/**
|
|
25580
26075
|
* The interaction behavior for the sheet modal when the handle is pressed.
|
|
25581
26076
|
*
|
|
25582
|
-
*
|
|
25583
|
-
*
|
|
26077
|
+
* Handle behavior is unavailable when the `handle` property is set to
|
|
26078
|
+
* `false` or when the `breakpoints` property is not set (using a
|
|
26079
|
+
* fullscreen or card modal).
|
|
26080
|
+
*
|
|
26081
|
+
* Set to `"cycle"` to make the handle focusable and let the sheet modal
|
|
26082
|
+
* cycle between available breakpoints when pressed. This keeps the sheet
|
|
26083
|
+
* operable with assistive technology.
|
|
25584
26084
|
*
|
|
25585
|
-
*
|
|
25586
|
-
*
|
|
26085
|
+
* Set to `"none"` to make the handle purely decorative when pressed and
|
|
26086
|
+
* removed from the tab order.
|
|
26087
|
+
*
|
|
26088
|
+
* Defaults to `"cycle"`.
|
|
25587
26089
|
*/
|
|
25588
|
-
this.handleBehavior = '
|
|
26090
|
+
this.handleBehavior = 'cycle';
|
|
25589
26091
|
/**
|
|
25590
26092
|
* If `true`, the modal will be dismissed when the backdrop is clicked.
|
|
25591
26093
|
*/
|
|
@@ -25777,6 +26279,10 @@ class Modal {
|
|
|
25777
26279
|
// Also called in dismiss() — intentional dual cleanup covers both
|
|
25778
26280
|
// dismiss-then-remove and direct DOM removal without dismiss.
|
|
25779
26281
|
this.cleanupSafeAreaOverrides();
|
|
26282
|
+
// Clean up aria-hidden if removed without dismiss() being called
|
|
26283
|
+
if (this.presented) {
|
|
26284
|
+
cleanupRootFocusTrapAccessibility();
|
|
26285
|
+
}
|
|
25780
26286
|
}
|
|
25781
26287
|
componentWillLoad() {
|
|
25782
26288
|
var _a;
|
|
@@ -25953,7 +26459,7 @@ class Modal {
|
|
|
25953
26459
|
this.statusBarStyle = await StatusBar.getStyle();
|
|
25954
26460
|
setCardStatusBarDark();
|
|
25955
26461
|
}
|
|
25956
|
-
await present(this, 'modalEnter', iosEnterAnimation$
|
|
26462
|
+
await present(this, 'modalEnter', iosEnterAnimation$2, mdEnterAnimation$2, {
|
|
25957
26463
|
presentingEl: presentingElement,
|
|
25958
26464
|
currentBreakpoint: this.initialBreakpoint,
|
|
25959
26465
|
backdropBreakpoint: this.backdropBreakpoint,
|
|
@@ -26015,7 +26521,7 @@ class Modal {
|
|
|
26015
26521
|
// All of the elements needed for the swipe gesture
|
|
26016
26522
|
// should be in the DOM and referenced by now, except
|
|
26017
26523
|
// for the presenting el
|
|
26018
|
-
const animationBuilder = this.leaveAnimation || config.get('modalLeave', iosLeaveAnimation$
|
|
26524
|
+
const animationBuilder = this.leaveAnimation || config.get('modalLeave', iosLeaveAnimation$2);
|
|
26019
26525
|
const ani = (this.animation = animationBuilder(el, {
|
|
26020
26526
|
presentingEl: this.presentingElement,
|
|
26021
26527
|
expandToScroll: this.expandToScroll,
|
|
@@ -26034,7 +26540,7 @@ class Modal {
|
|
|
26034
26540
|
if (!wrapperEl || initialBreakpoint === undefined) {
|
|
26035
26541
|
return;
|
|
26036
26542
|
}
|
|
26037
|
-
const animationBuilder = this.enterAnimation || config.get('modalEnter', iosEnterAnimation$
|
|
26543
|
+
const animationBuilder = this.enterAnimation || config.get('modalEnter', iosEnterAnimation$2);
|
|
26038
26544
|
const ani = (this.animation = animationBuilder(this.el, {
|
|
26039
26545
|
presentingEl: this.presentingElement,
|
|
26040
26546
|
currentBreakpoint: initialBreakpoint,
|
|
@@ -26224,7 +26730,7 @@ class Modal {
|
|
|
26224
26730
|
window.removeEventListener(KEYBOARD_DID_OPEN, this.keyboardOpenCallback);
|
|
26225
26731
|
this.keyboardOpenCallback = undefined;
|
|
26226
26732
|
}
|
|
26227
|
-
const dismissed = await dismiss(this, data, role, 'modalLeave', iosLeaveAnimation$
|
|
26733
|
+
const dismissed = await dismiss(this, data, role, 'modalLeave', iosLeaveAnimation$2, mdLeaveAnimation$2, {
|
|
26228
26734
|
presentingEl: presentingElement,
|
|
26229
26735
|
currentBreakpoint: (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : this.initialBreakpoint,
|
|
26230
26736
|
backdropBreakpoint: this.backdropBreakpoint,
|
|
@@ -26656,20 +27162,20 @@ class Modal {
|
|
|
26656
27162
|
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
|
26657
27163
|
const isHandleCycle = handleBehavior === 'cycle';
|
|
26658
27164
|
const isSheetModalWithHandle = isSheetModal && showHandle;
|
|
26659
|
-
return (hAsync(Host, Object.assign({ key: '
|
|
27165
|
+
return (hAsync(Host, Object.assign({ key: '528f9e354f470e22563938e7531e3f23a97e4200', "no-router": true,
|
|
26660
27166
|
// Allow the modal to be navigable when the handle is focusable
|
|
26661
27167
|
tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
|
|
26662
27168
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
26663
|
-
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`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 }), hAsync("ion-backdrop", { key: '
|
|
27169
|
+
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`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 }), hAsync("ion-backdrop", { key: '53983c96bc6b30df89986c8d9c978a8e6f78fe80', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: '34288a7343b7c47fed00d3abc73957f45f06d2fd', class: "modal-shadow" }), hAsync("div", Object.assign({ key: 'f9b37f547bd5c61037bbad1a71bfed80ba8c630b',
|
|
26664
27170
|
/*
|
|
26665
27171
|
role and aria-modal must be used on the
|
|
26666
27172
|
same element. They must also be set inside the
|
|
26667
27173
|
shadow DOM otherwise ion-button will not be highlighted
|
|
26668
27174
|
when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
|
|
26669
27175
|
*/
|
|
26670
|
-
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: '
|
|
27176
|
+
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: 'b8741594108d3ea681ff41ff8f2241a4119578b1', class: "modal-handle",
|
|
26671
27177
|
// Prevents the handle from receiving keyboard focus when it does not cycle
|
|
26672
|
-
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) })), hAsync("slot", { key: '
|
|
27178
|
+
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) })), hAsync("slot", { key: 'bcc7960fae3fed09076c704d08c3afc46caa0738', onSlotchange: this.onSlotChange }))));
|
|
26673
27179
|
}
|
|
26674
27180
|
get el() { return getElement(this); }
|
|
26675
27181
|
static get watchers() { return {
|
|
@@ -27752,14 +28258,14 @@ class Note {
|
|
|
27752
28258
|
}; }
|
|
27753
28259
|
}
|
|
27754
28260
|
|
|
27755
|
-
const pickerIosCss
|
|
28261
|
+
const pickerIosCss = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}:host .picker-before,:host .picker-after{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}:host .picker-before{top:0;height:83px}:host .picker-before{inset-inline-start:0}:host .picker-after{top:116px;height:84px}:host .picker-after{inset-inline-start:0}:host .picker-highlight{border-radius:var(--highlight-border-radius, 8px);left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--highlight-background);z-index:-1}:host input{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}:host ::slotted(ion-picker-column:first-of-type){text-align:start}:host ::slotted(ion-picker-column:last-of-type){text-align:end}:host ::slotted(ion-picker-column:only-child){text-align:center}:host .picker-before{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}:host .picker-after{background:-webkit-gradient(linear, left bottom, left top, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}:host .picker-highlight{background:var(--highlight-background, var(--ion-color-step-150, var(--ion-background-color-step-150, #eeeeef)))}`;
|
|
27756
28262
|
|
|
27757
|
-
const pickerMdCss
|
|
28263
|
+
const pickerMdCss = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}:host .picker-before,:host .picker-after{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}:host .picker-before{top:0;height:83px}:host .picker-before{inset-inline-start:0}:host .picker-after{top:116px;height:84px}:host .picker-after{inset-inline-start:0}:host .picker-highlight{border-radius:var(--highlight-border-radius, 8px);left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--highlight-background);z-index:-1}:host input{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}:host ::slotted(ion-picker-column:first-of-type){text-align:start}:host ::slotted(ion-picker-column:last-of-type){text-align:end}:host ::slotted(ion-picker-column:only-child){text-align:center}:host .picker-before{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}:host .picker-after{background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 30%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}`;
|
|
27758
28264
|
|
|
27759
28265
|
/**
|
|
27760
28266
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
27761
28267
|
*/
|
|
27762
|
-
|
|
28268
|
+
class Picker {
|
|
27763
28269
|
constructor(hostRef) {
|
|
27764
28270
|
registerInstance(this, hostRef);
|
|
27765
28271
|
this.ionInputModeChange = createEvent(this, "ionInputModeChange", 7);
|
|
@@ -28225,8 +28731,8 @@ let Picker$1 = class Picker {
|
|
|
28225
28731
|
}
|
|
28226
28732
|
get el() { return getElement(this); }
|
|
28227
28733
|
static get style() { return {
|
|
28228
|
-
ios: pickerIosCss
|
|
28229
|
-
md: pickerMdCss
|
|
28734
|
+
ios: pickerIosCss(),
|
|
28735
|
+
md: pickerMdCss()
|
|
28230
28736
|
}; }
|
|
28231
28737
|
static get cmpMeta() { return {
|
|
28232
28738
|
"$flags$": 297,
|
|
@@ -28238,359 +28744,44 @@ let Picker$1 = class Picker {
|
|
|
28238
28744
|
"$lazyBundleId$": "-",
|
|
28239
28745
|
"$attrsToReflect$": []
|
|
28240
28746
|
}; }
|
|
28241
|
-
}
|
|
28242
|
-
|
|
28243
|
-
/**
|
|
28244
|
-
* iOS Picker Enter Animation
|
|
28245
|
-
*/
|
|
28246
|
-
const iosEnterAnimation$2 = (baseEl) => {
|
|
28247
|
-
const baseAnimation = createAnimation();
|
|
28248
|
-
const backdropAnimation = createAnimation();
|
|
28249
|
-
const wrapperAnimation = createAnimation();
|
|
28250
|
-
backdropAnimation
|
|
28251
|
-
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
28252
|
-
.fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
|
|
28253
|
-
.beforeStyles({
|
|
28254
|
-
'pointer-events': 'none',
|
|
28255
|
-
})
|
|
28256
|
-
.afterClearStyles(['pointer-events']);
|
|
28257
|
-
wrapperAnimation
|
|
28258
|
-
.addElement(baseEl.querySelector('.picker-wrapper'))
|
|
28259
|
-
.fromTo('transform', 'translateY(100%)', 'translateY(0%)');
|
|
28260
|
-
return baseAnimation
|
|
28261
|
-
.addElement(baseEl)
|
|
28262
|
-
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
28263
|
-
.duration(400)
|
|
28264
|
-
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
28265
|
-
};
|
|
28266
|
-
|
|
28267
|
-
/**
|
|
28268
|
-
* iOS Picker Leave Animation
|
|
28269
|
-
*/
|
|
28270
|
-
const iosLeaveAnimation$2 = (baseEl) => {
|
|
28271
|
-
const baseAnimation = createAnimation();
|
|
28272
|
-
const backdropAnimation = createAnimation();
|
|
28273
|
-
const wrapperAnimation = createAnimation();
|
|
28274
|
-
backdropAnimation
|
|
28275
|
-
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
28276
|
-
.fromTo('opacity', 'var(--backdrop-opacity)', 0.01);
|
|
28277
|
-
wrapperAnimation
|
|
28278
|
-
.addElement(baseEl.querySelector('.picker-wrapper'))
|
|
28279
|
-
.fromTo('transform', 'translateY(0%)', 'translateY(100%)');
|
|
28280
|
-
return baseAnimation
|
|
28281
|
-
.addElement(baseEl)
|
|
28282
|
-
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
28283
|
-
.duration(400)
|
|
28284
|
-
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
28285
|
-
};
|
|
28286
|
-
|
|
28287
|
-
const pickerIosCss = () => `.sc-ion-picker-legacy-ios-h{--border-radius:0;--border-style:solid;--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--max-height:auto;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.sc-ion-picker-legacy-ios-h{inset-inline-start:0}.overlay-hidden.sc-ion-picker-legacy-ios-h{display:none}.picker-wrapper.sc-ion-picker-legacy-ios{border-radius:var(--border-radius);left:0;right:0;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;overflow:hidden;z-index:10}.picker-toolbar.sc-ion-picker-legacy-ios{width:100%;background:transparent;contain:strict;z-index:1}.picker-button.sc-ion-picker-legacy-ios{border:0;font-family:inherit}.picker-button.sc-ion-picker-legacy-ios:active,.picker-button.sc-ion-picker-legacy-ios:focus{outline:none}.picker-columns.sc-ion-picker-legacy-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-pack:center;justify-content:center;margin-bottom:var(--ion-safe-area-bottom, 0);contain:strict;overflow:hidden}.picker-above-highlight.sc-ion-picker-legacy-ios,.picker-below-highlight.sc-ion-picker-legacy-ios{display:none;pointer-events:none}.sc-ion-picker-legacy-ios-h{--background:var(--ion-background-color, #fff);--border-width:1px 0 0;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));--height:260px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.26);color:var(--ion-item-color, var(--ion-text-color, #000))}.picker-toolbar.sc-ion-picker-legacy-ios{display:-ms-flexbox;display:flex;height:44px;border-bottom:0.55px solid var(--border-color)}.picker-toolbar-button.sc-ion-picker-legacy-ios{-ms-flex:1;flex:1;text-align:end}.picker-toolbar-button.sc-ion-picker-legacy-ios:last-child .picker-button.sc-ion-picker-legacy-ios{font-weight:600}.picker-toolbar-button.sc-ion-picker-legacy-ios:first-child{font-weight:normal;text-align:start}.picker-button.sc-ion-picker-legacy-ios,.picker-button.ion-activated.sc-ion-picker-legacy-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:1em;padding-inline-start:1em;-webkit-padding-end:1em;padding-inline-end:1em;padding-top:0;padding-bottom:0;height:44px;background:transparent;color:var(--ion-color-primary, #0054e9);font-size:16px}.picker-columns.sc-ion-picker-legacy-ios{height:215px;-webkit-perspective:1000px;perspective:1000px}.picker-above-highlight.sc-ion-picker-legacy-ios{top:0;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);display:block;position:absolute;width:100%;height:81px;border-bottom:1px solid var(--border-color);background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, var(--background, var(--ion-background-color, #fff))), to(rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8)));background:linear-gradient(to bottom, var(--background, var(--ion-background-color, #fff)) 20%, rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8) 100%);z-index:10}.picker-above-highlight.sc-ion-picker-legacy-ios{inset-inline-start:0}.picker-below-highlight.sc-ion-picker-legacy-ios{top:115px;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);display:block;position:absolute;width:100%;height:119px;border-top:1px solid var(--border-color);background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, var(--background, var(--ion-background-color, #fff))), to(rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8)));background:linear-gradient(to top, var(--background, var(--ion-background-color, #fff)) 30%, rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8) 100%);z-index:11}.picker-below-highlight.sc-ion-picker-legacy-ios{inset-inline-start:0}`;
|
|
28747
|
+
}
|
|
28288
28748
|
|
|
28289
|
-
const
|
|
28749
|
+
const pickerColumnCss = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;max-width:100%;height:200px;font-size:22px;text-align:center}.assistive-focusable{left:0;right:0;top:0;bottom:0;position:absolute;z-index:1;pointer-events:none}.assistive-focusable:focus{outline:none}.picker-opts{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-width:26px;max-height:200px;outline:none;text-align:inherit;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none}.picker-item-empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.picker-opts::-webkit-scrollbar{display:none}::slotted(ion-picker-column-option){display:block;scroll-snap-align:center}.picker-item-empty,:host(:not([disabled])) ::slotted(ion-picker-column-option.option-disabled){scroll-snap-align:none}::slotted([slot=prefix]),::slotted([slot=suffix]){max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::slotted([slot=prefix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:end;justify-content:end}::slotted([slot=suffix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:start;justify-content:start}:host(.picker-column-disabled) .picker-opts{overflow-y:hidden}:host(.picker-column-disabled) ::slotted(ion-picker-column-option){cursor:default;opacity:0.4;pointer-events:none}@media (any-hover: hover){:host(:focus) .picker-opts{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}`;
|
|
28290
28750
|
|
|
28291
|
-
// TODO(FW-2832): types
|
|
28292
28751
|
/**
|
|
28293
28752
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
28753
|
+
*
|
|
28754
|
+
* @slot prefix - Content to show on the left side of the picker options.
|
|
28755
|
+
* @slot suffix - Content to show on the right side of the picker options.
|
|
28294
28756
|
*/
|
|
28295
|
-
class
|
|
28757
|
+
class PickerColumn {
|
|
28296
28758
|
constructor(hostRef) {
|
|
28297
28759
|
registerInstance(this, hostRef);
|
|
28298
|
-
this.
|
|
28299
|
-
this.
|
|
28300
|
-
this.
|
|
28301
|
-
this.
|
|
28302
|
-
this.
|
|
28303
|
-
this.
|
|
28304
|
-
this.
|
|
28305
|
-
this.didDismissShorthand = createEvent(this, "didDismiss", 7);
|
|
28306
|
-
this.delegateController = createDelegateController(this);
|
|
28307
|
-
this.lockController = createLockController();
|
|
28308
|
-
this.triggerController = createTriggerController();
|
|
28309
|
-
this.presented = false;
|
|
28310
|
-
/** @internal */
|
|
28311
|
-
this.hasController = false;
|
|
28312
|
-
/**
|
|
28313
|
-
* If `true`, the keyboard will be automatically dismissed when the overlay is presented.
|
|
28314
|
-
*/
|
|
28315
|
-
this.keyboardClose = true;
|
|
28316
|
-
/**
|
|
28317
|
-
* Array of buttons to be displayed at the top of the picker.
|
|
28318
|
-
*/
|
|
28319
|
-
this.buttons = [];
|
|
28320
|
-
/**
|
|
28321
|
-
* Array of columns to be displayed in the picker.
|
|
28322
|
-
*/
|
|
28323
|
-
this.columns = [];
|
|
28324
|
-
/**
|
|
28325
|
-
* Number of milliseconds to wait before dismissing the picker.
|
|
28326
|
-
*/
|
|
28327
|
-
this.duration = 0;
|
|
28760
|
+
this.ionChange = createEvent(this, "ionChange", 7);
|
|
28761
|
+
this.isScrolling = false;
|
|
28762
|
+
this.isColumnVisible = false;
|
|
28763
|
+
this.canExitInputMode = true;
|
|
28764
|
+
this.updateValueTextOnScroll = false;
|
|
28765
|
+
this.ariaLabel = null;
|
|
28766
|
+
this.isActive = false;
|
|
28328
28767
|
/**
|
|
28329
|
-
* If `true`,
|
|
28768
|
+
* If `true`, the user cannot interact with the picker.
|
|
28330
28769
|
*/
|
|
28331
|
-
this.
|
|
28770
|
+
this.disabled = false;
|
|
28332
28771
|
/**
|
|
28333
|
-
*
|
|
28772
|
+
* The color to use from your application's color palette.
|
|
28773
|
+
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
28774
|
+
* For more information on colors, see [theming](/docs/theming/basics).
|
|
28334
28775
|
*/
|
|
28335
|
-
this.
|
|
28776
|
+
this.color = 'primary';
|
|
28336
28777
|
/**
|
|
28337
|
-
* If `true`, the picker will
|
|
28338
|
-
|
|
28339
|
-
|
|
28340
|
-
|
|
28341
|
-
*
|
|
28342
|
-
*
|
|
28343
|
-
*
|
|
28344
|
-
* Note: `isOpen` will not automatically be set back to `false` when
|
|
28345
|
-
* the picker dismisses. You will need to do that in your code.
|
|
28346
|
-
*/
|
|
28347
|
-
this.isOpen = false;
|
|
28348
|
-
this.onBackdropTap = () => {
|
|
28349
|
-
this.dismiss(undefined, BACKDROP);
|
|
28350
|
-
};
|
|
28351
|
-
this.dispatchCancelHandler = (ev) => {
|
|
28352
|
-
const role = ev.detail.role;
|
|
28353
|
-
if (isCancel(role)) {
|
|
28354
|
-
const cancelButton = this.buttons.find((b) => b.role === 'cancel');
|
|
28355
|
-
this.callButtonHandler(cancelButton);
|
|
28356
|
-
}
|
|
28357
|
-
};
|
|
28358
|
-
}
|
|
28359
|
-
onIsOpenChange(newValue, oldValue) {
|
|
28360
|
-
if (newValue === true && oldValue === false) {
|
|
28361
|
-
this.present();
|
|
28362
|
-
}
|
|
28363
|
-
else if (newValue === false && oldValue === true) {
|
|
28364
|
-
this.dismiss();
|
|
28365
|
-
}
|
|
28366
|
-
}
|
|
28367
|
-
triggerChanged() {
|
|
28368
|
-
const { trigger, el, triggerController } = this;
|
|
28369
|
-
if (trigger) {
|
|
28370
|
-
triggerController.addClickListener(el, trigger);
|
|
28371
|
-
}
|
|
28372
|
-
}
|
|
28373
|
-
connectedCallback() {
|
|
28374
|
-
prepareOverlay(this.el);
|
|
28375
|
-
this.triggerChanged();
|
|
28376
|
-
}
|
|
28377
|
-
disconnectedCallback() {
|
|
28378
|
-
this.triggerController.removeClickListener();
|
|
28379
|
-
}
|
|
28380
|
-
componentWillLoad() {
|
|
28381
|
-
var _a;
|
|
28382
|
-
if (!((_a = this.htmlAttributes) === null || _a === void 0 ? void 0 : _a.id)) {
|
|
28383
|
-
setOverlayId(this.el);
|
|
28384
|
-
}
|
|
28385
|
-
}
|
|
28386
|
-
componentDidLoad() {
|
|
28387
|
-
printIonWarning('[ion-picker-legacy] - ion-picker-legacy and ion-picker-legacy-column have been deprecated in favor of new versions of the ion-picker and ion-picker-column components. These new components display inline with your page content allowing for more presentation flexibility than before.', this.el);
|
|
28388
|
-
/**
|
|
28389
|
-
* If picker was rendered with isOpen="true"
|
|
28390
|
-
* then we should open picker immediately.
|
|
28391
|
-
*/
|
|
28392
|
-
if (this.isOpen === true) {
|
|
28393
|
-
raf(() => this.present());
|
|
28394
|
-
}
|
|
28395
|
-
/**
|
|
28396
|
-
* When binding values in frameworks such as Angular
|
|
28397
|
-
* it is possible for the value to be set after the Web Component
|
|
28398
|
-
* initializes but before the value watcher is set up in Stencil.
|
|
28399
|
-
* As a result, the watcher callback may not be fired.
|
|
28400
|
-
* We work around this by manually calling the watcher
|
|
28401
|
-
* callback when the component has loaded and the watcher
|
|
28402
|
-
* is configured.
|
|
28403
|
-
*/
|
|
28404
|
-
this.triggerChanged();
|
|
28405
|
-
}
|
|
28406
|
-
/**
|
|
28407
|
-
* Present the picker overlay after it has been created.
|
|
28408
|
-
*/
|
|
28409
|
-
async present() {
|
|
28410
|
-
const unlock = await this.lockController.lock();
|
|
28411
|
-
await this.delegateController.attachViewToDom();
|
|
28412
|
-
await present(this, 'pickerEnter', iosEnterAnimation$2, iosEnterAnimation$2, undefined);
|
|
28413
|
-
if (this.duration > 0) {
|
|
28414
|
-
this.durationTimeout = setTimeout(() => this.dismiss(), this.duration);
|
|
28415
|
-
}
|
|
28416
|
-
unlock();
|
|
28417
|
-
}
|
|
28418
|
-
/**
|
|
28419
|
-
* Dismiss the picker overlay after it has been presented.
|
|
28420
|
-
*
|
|
28421
|
-
* @param data Any data to emit in the dismiss events.
|
|
28422
|
-
* @param role The role of the element that is dismissing the picker.
|
|
28423
|
-
* This can be useful in a button handler for determining which button was
|
|
28424
|
-
* clicked to dismiss the picker.
|
|
28425
|
-
* Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
|
|
28426
|
-
*/
|
|
28427
|
-
async dismiss(data, role) {
|
|
28428
|
-
const unlock = await this.lockController.lock();
|
|
28429
|
-
if (this.durationTimeout) {
|
|
28430
|
-
clearTimeout(this.durationTimeout);
|
|
28431
|
-
}
|
|
28432
|
-
const dismissed = await dismiss(this, data, role, 'pickerLeave', iosLeaveAnimation$2, iosLeaveAnimation$2);
|
|
28433
|
-
if (dismissed) {
|
|
28434
|
-
this.delegateController.removeViewFromDom();
|
|
28435
|
-
}
|
|
28436
|
-
unlock();
|
|
28437
|
-
return dismissed;
|
|
28438
|
-
}
|
|
28439
|
-
/**
|
|
28440
|
-
* Returns a promise that resolves when the picker did dismiss.
|
|
28441
|
-
*/
|
|
28442
|
-
onDidDismiss() {
|
|
28443
|
-
return eventMethod(this.el, 'ionPickerDidDismiss');
|
|
28444
|
-
}
|
|
28445
|
-
/**
|
|
28446
|
-
* Returns a promise that resolves when the picker will dismiss.
|
|
28447
|
-
*/
|
|
28448
|
-
onWillDismiss() {
|
|
28449
|
-
return eventMethod(this.el, 'ionPickerWillDismiss');
|
|
28450
|
-
}
|
|
28451
|
-
/**
|
|
28452
|
-
* Get the column that matches the specified name.
|
|
28453
|
-
*
|
|
28454
|
-
* @param name The name of the column.
|
|
28455
|
-
*/
|
|
28456
|
-
getColumn(name) {
|
|
28457
|
-
return Promise.resolve(this.columns.find((column) => column.name === name));
|
|
28458
|
-
}
|
|
28459
|
-
async buttonClick(button) {
|
|
28460
|
-
const role = button.role;
|
|
28461
|
-
if (isCancel(role)) {
|
|
28462
|
-
return this.dismiss(undefined, role);
|
|
28463
|
-
}
|
|
28464
|
-
const shouldDismiss = await this.callButtonHandler(button);
|
|
28465
|
-
if (shouldDismiss) {
|
|
28466
|
-
return this.dismiss(this.getSelected(), button.role);
|
|
28467
|
-
}
|
|
28468
|
-
return Promise.resolve();
|
|
28469
|
-
}
|
|
28470
|
-
async callButtonHandler(button) {
|
|
28471
|
-
if (button) {
|
|
28472
|
-
// a handler has been provided, execute it
|
|
28473
|
-
// pass the handler the values from the inputs
|
|
28474
|
-
const rtn = await safeCall(button.handler, this.getSelected());
|
|
28475
|
-
if (rtn === false) {
|
|
28476
|
-
// if the return value of the handler is false then do not dismiss
|
|
28477
|
-
return false;
|
|
28478
|
-
}
|
|
28479
|
-
}
|
|
28480
|
-
return true;
|
|
28481
|
-
}
|
|
28482
|
-
getSelected() {
|
|
28483
|
-
const selected = {};
|
|
28484
|
-
this.columns.forEach((col, index) => {
|
|
28485
|
-
const selectedColumn = col.selectedIndex !== undefined ? col.options[col.selectedIndex] : undefined;
|
|
28486
|
-
selected[col.name] = {
|
|
28487
|
-
text: selectedColumn ? selectedColumn.text : undefined,
|
|
28488
|
-
value: selectedColumn ? selectedColumn.value : undefined,
|
|
28489
|
-
columnIndex: index,
|
|
28490
|
-
};
|
|
28491
|
-
});
|
|
28492
|
-
return selected;
|
|
28493
|
-
}
|
|
28494
|
-
render() {
|
|
28495
|
-
const { htmlAttributes } = this;
|
|
28496
|
-
const mode = getIonMode$1(this);
|
|
28497
|
-
return (hAsync(Host, Object.assign({ key: '80f66d33780d8a1352d24be9cb63a0cc03d01ab5', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
|
|
28498
|
-
zIndex: `${20000 + this.overlayIndex}`,
|
|
28499
|
-
}, class: Object.assign({ [mode]: true,
|
|
28500
|
-
// Used internally for styling
|
|
28501
|
-
[`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), hAsync("ion-backdrop", { key: '97fb8e10ba08b197610cb8c0cdea61103883d55f', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: 'b3969cb6fbf7153623d14e3ca1493d3370efb211', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: '299268483c3727e698d9135bfdf40349a7050ac1', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, hAsync("div", { key: '95394de3ef691899b7dbf416f56fd3e86bbdce3f', class: "picker-toolbar" }, this.buttons.map((b) => (hAsync("div", { class: buttonWrapperClass(b) }, hAsync("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass$1(b) }, b.text))))), hAsync("div", { key: '05f18bb8d00dc0e22f691b7e41f90f729a6c66d7', class: "picker-columns" }, hAsync("div", { key: '4a8fdf224effc0af67fd413e2e6aca8a78d1cf43', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => hAsync("ion-picker-legacy-column", { col: c })), hAsync("div", { key: 'e50a31db45e3f39e9d0fed36a21be9257eec09bf', class: "picker-below-highlight" }))), hAsync("div", { key: '5a78cb2176ac807ea0c195c6b76cd0e8eef9d4c0', tabindex: "0", "aria-hidden": "true" })));
|
|
28502
|
-
}
|
|
28503
|
-
get el() { return getElement(this); }
|
|
28504
|
-
static get watchers() { return {
|
|
28505
|
-
"isOpen": [{
|
|
28506
|
-
"onIsOpenChange": 0
|
|
28507
|
-
}],
|
|
28508
|
-
"trigger": [{
|
|
28509
|
-
"triggerChanged": 0
|
|
28510
|
-
}]
|
|
28511
|
-
}; }
|
|
28512
|
-
static get style() { return {
|
|
28513
|
-
ios: pickerIosCss(),
|
|
28514
|
-
md: pickerMdCss()
|
|
28515
|
-
}; }
|
|
28516
|
-
static get cmpMeta() { return {
|
|
28517
|
-
"$flags$": 34,
|
|
28518
|
-
"$tagName$": "ion-picker-legacy",
|
|
28519
|
-
"$members$": {
|
|
28520
|
-
"overlayIndex": [2, "overlay-index"],
|
|
28521
|
-
"delegate": [16],
|
|
28522
|
-
"hasController": [4, "has-controller"],
|
|
28523
|
-
"keyboardClose": [4, "keyboard-close"],
|
|
28524
|
-
"enterAnimation": [16],
|
|
28525
|
-
"leaveAnimation": [16],
|
|
28526
|
-
"buttons": [16],
|
|
28527
|
-
"columns": [16],
|
|
28528
|
-
"cssClass": [1, "css-class"],
|
|
28529
|
-
"duration": [2],
|
|
28530
|
-
"showBackdrop": [4, "show-backdrop"],
|
|
28531
|
-
"backdropDismiss": [4, "backdrop-dismiss"],
|
|
28532
|
-
"animated": [4],
|
|
28533
|
-
"htmlAttributes": [16],
|
|
28534
|
-
"isOpen": [4, "is-open"],
|
|
28535
|
-
"trigger": [1],
|
|
28536
|
-
"presented": [32],
|
|
28537
|
-
"present": [64],
|
|
28538
|
-
"dismiss": [64],
|
|
28539
|
-
"onDidDismiss": [64],
|
|
28540
|
-
"onWillDismiss": [64],
|
|
28541
|
-
"getColumn": [64]
|
|
28542
|
-
},
|
|
28543
|
-
"$listeners$": undefined,
|
|
28544
|
-
"$lazyBundleId$": "-",
|
|
28545
|
-
"$attrsToReflect$": []
|
|
28546
|
-
}; }
|
|
28547
|
-
}
|
|
28548
|
-
const buttonWrapperClass = (button) => {
|
|
28549
|
-
return {
|
|
28550
|
-
[`picker-toolbar-${button.role}`]: button.role !== undefined,
|
|
28551
|
-
'picker-toolbar-button': true,
|
|
28552
|
-
};
|
|
28553
|
-
};
|
|
28554
|
-
const buttonClass$1 = (button) => {
|
|
28555
|
-
return Object.assign({ 'picker-button': true, 'ion-activatable': true }, getClassMap(button.cssClass));
|
|
28556
|
-
};
|
|
28557
|
-
|
|
28558
|
-
const pickerColumnCss = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;max-width:100%;height:200px;font-size:22px;text-align:center}.assistive-focusable{left:0;right:0;top:0;bottom:0;position:absolute;z-index:1;pointer-events:none}.assistive-focusable:focus{outline:none}.picker-opts{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-width:26px;max-height:200px;outline:none;text-align:inherit;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none}.picker-item-empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.picker-opts::-webkit-scrollbar{display:none}::slotted(ion-picker-column-option){display:block;scroll-snap-align:center}.picker-item-empty,:host(:not([disabled])) ::slotted(ion-picker-column-option.option-disabled){scroll-snap-align:none}::slotted([slot=prefix]),::slotted([slot=suffix]){max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::slotted([slot=prefix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:end;justify-content:end}::slotted([slot=suffix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:start;justify-content:start}:host(.picker-column-disabled) .picker-opts{overflow-y:hidden}:host(.picker-column-disabled) ::slotted(ion-picker-column-option){cursor:default;opacity:0.4;pointer-events:none}@media (any-hover: hover){:host(:focus) .picker-opts{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}`;
|
|
28559
|
-
|
|
28560
|
-
/**
|
|
28561
|
-
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
28562
|
-
*
|
|
28563
|
-
* @slot prefix - Content to show on the left side of the picker options.
|
|
28564
|
-
* @slot suffix - Content to show on the right side of the picker options.
|
|
28565
|
-
*/
|
|
28566
|
-
class PickerColumn {
|
|
28567
|
-
constructor(hostRef) {
|
|
28568
|
-
registerInstance(this, hostRef);
|
|
28569
|
-
this.ionChange = createEvent(this, "ionChange", 7);
|
|
28570
|
-
this.isScrolling = false;
|
|
28571
|
-
this.isColumnVisible = false;
|
|
28572
|
-
this.canExitInputMode = true;
|
|
28573
|
-
this.updateValueTextOnScroll = false;
|
|
28574
|
-
this.ariaLabel = null;
|
|
28575
|
-
this.isActive = false;
|
|
28576
|
-
/**
|
|
28577
|
-
* If `true`, the user cannot interact with the picker.
|
|
28578
|
-
*/
|
|
28579
|
-
this.disabled = false;
|
|
28580
|
-
/**
|
|
28581
|
-
* The color to use from your application's color palette.
|
|
28582
|
-
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
28583
|
-
* For more information on colors, see [theming](/docs/theming/basics).
|
|
28584
|
-
*/
|
|
28585
|
-
this.color = 'primary';
|
|
28586
|
-
/**
|
|
28587
|
-
* If `true`, tapping the picker will
|
|
28588
|
-
* reveal a number input keyboard that lets
|
|
28589
|
-
* the user type in values for each picker
|
|
28590
|
-
* column. This is useful when working
|
|
28591
|
-
* with time pickers.
|
|
28592
|
-
*
|
|
28593
|
-
* @internal
|
|
28778
|
+
* If `true`, tapping the picker will
|
|
28779
|
+
* reveal a number input keyboard that lets
|
|
28780
|
+
* the user type in values for each picker
|
|
28781
|
+
* column. This is useful when working
|
|
28782
|
+
* with time pickers.
|
|
28783
|
+
*
|
|
28784
|
+
* @internal
|
|
28594
28785
|
*/
|
|
28595
28786
|
this.numericInput = false;
|
|
28596
28787
|
this.centerPickerItemInView = (target, smooth = true, canExitInputMode = true) => {
|
|
@@ -29046,464 +29237,99 @@ class PickerColumn {
|
|
|
29046
29237
|
*/
|
|
29047
29238
|
if (firstOption !== null && firstOption.value !== value) {
|
|
29048
29239
|
this.setValue(firstOption.value);
|
|
29049
|
-
}
|
|
29050
|
-
}
|
|
29051
|
-
}
|
|
29052
|
-
/** @internal */
|
|
29053
|
-
async scrollActiveItemIntoView(smooth = false) {
|
|
29054
|
-
const activeEl = this.activeItem;
|
|
29055
|
-
if (activeEl) {
|
|
29056
|
-
this.centerPickerItemInView(activeEl, smooth, false);
|
|
29057
|
-
}
|
|
29058
|
-
}
|
|
29059
|
-
/**
|
|
29060
|
-
* Sets the value prop and fires the ionChange event.
|
|
29061
|
-
* This is used when we need to fire ionChange from
|
|
29062
|
-
* user-generated events that cannot be caught with normal
|
|
29063
|
-
* input/change event listeners.
|
|
29064
|
-
* @internal
|
|
29065
|
-
*/
|
|
29066
|
-
async setValue(value) {
|
|
29067
|
-
if (this.disabled === true || this.value === value) {
|
|
29068
|
-
return;
|
|
29069
|
-
}
|
|
29070
|
-
this.value = value;
|
|
29071
|
-
this.ionChange.emit({ value });
|
|
29072
|
-
}
|
|
29073
|
-
/**
|
|
29074
|
-
* Sets focus on the scrollable container within the picker column.
|
|
29075
|
-
* Use this method instead of the global `pickerColumn.focus()`.
|
|
29076
|
-
*/
|
|
29077
|
-
async setFocus() {
|
|
29078
|
-
if (this.assistiveFocusable) {
|
|
29079
|
-
this.assistiveFocusable.focus();
|
|
29080
|
-
}
|
|
29081
|
-
}
|
|
29082
|
-
connectedCallback() {
|
|
29083
|
-
var _a;
|
|
29084
|
-
this.ariaLabel = (_a = this.el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : 'Select a value';
|
|
29085
|
-
}
|
|
29086
|
-
get activeItem() {
|
|
29087
|
-
const { value } = this;
|
|
29088
|
-
const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
|
|
29089
|
-
return options.find((option) => {
|
|
29090
|
-
/**
|
|
29091
|
-
* If the whole picker column is disabled, the current value should appear active
|
|
29092
|
-
* If the current value item is specifically disabled, it should not appear active
|
|
29093
|
-
*/
|
|
29094
|
-
if (!this.disabled && option.disabled) {
|
|
29095
|
-
return false;
|
|
29096
|
-
}
|
|
29097
|
-
return option.value === value;
|
|
29098
|
-
});
|
|
29099
|
-
}
|
|
29100
|
-
render() {
|
|
29101
|
-
const { color, disabled, isActive, numericInput } = this;
|
|
29102
|
-
const mode = getIonMode$1(this);
|
|
29103
|
-
return (hAsync(Host, { key: '234c96a501d7ac413b9b0ea56b33017681e25b40', class: createColorClasses$1(color, {
|
|
29104
|
-
[mode]: true,
|
|
29105
|
-
['picker-column-active']: isActive,
|
|
29106
|
-
['picker-column-numeric-input']: numericInput,
|
|
29107
|
-
['picker-column-disabled']: disabled,
|
|
29108
|
-
}) }, hAsync("slot", { key: '9dc15ea0601ddd2cb2e0a745e91e036a8bd96f8b', name: "prefix" }), hAsync("div", { key: 'de4fe28ee4bc46b7c0420d6ab0df0e7809443da9', class: "picker-opts", ref: (el) => {
|
|
29109
|
-
this.scrollEl = el;
|
|
29110
|
-
}, role: "slider", tabindex: this.disabled ? undefined : 0, "aria-label": this.ariaLabel, "aria-valuemin": 0, "aria-valuemax": 0, "aria-valuenow": 0, "aria-valuetext": this.getOptionValueText(this.activeItem), "aria-orientation": "vertical", onKeyDown: (ev) => this.onKeyDown(ev) }, hAsync("div", { key: '5297617462cc30e9444039ae032d8bdf718349af', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '55ea39ef867bcb1a11a912d52ecd20cb886c5fb3', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '3496730ce6182ebfd33e0ee4bafc130feb575a31', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("slot", { key: '44c3628aa957d60f799dc7019f72fe8b676c7843' }), hAsync("div", { key: '5a1809f6c949678a67e0d4b5bfe93ea335c0161d', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '98fd57f1c66dbaebc2db2dd5da142671b3159fd1', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '85590708abddfa885994e549deac64866fec938f', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), hAsync("slot", { key: 'bb7e674f543696a80fcbfb1f68f2e975826898a6', name: "suffix" })));
|
|
29111
|
-
}
|
|
29112
|
-
get el() { return getElement(this); }
|
|
29113
|
-
static get watchers() { return {
|
|
29114
|
-
"aria-label": [{
|
|
29115
|
-
"ariaLabelChanged": 0
|
|
29116
|
-
}],
|
|
29117
|
-
"value": [{
|
|
29118
|
-
"valueChange": 0
|
|
29119
|
-
}]
|
|
29120
|
-
}; }
|
|
29121
|
-
static get style() { return pickerColumnCss(); }
|
|
29122
|
-
static get cmpMeta() { return {
|
|
29123
|
-
"$flags$": 265,
|
|
29124
|
-
"$tagName$": "ion-picker-column",
|
|
29125
|
-
"$members$": {
|
|
29126
|
-
"disabled": [4],
|
|
29127
|
-
"value": [1032],
|
|
29128
|
-
"color": [513],
|
|
29129
|
-
"numericInput": [4, "numeric-input"],
|
|
29130
|
-
"ariaLabel": [32],
|
|
29131
|
-
"isActive": [32],
|
|
29132
|
-
"scrollActiveItemIntoView": [64],
|
|
29133
|
-
"setValue": [64],
|
|
29134
|
-
"setFocus": [64]
|
|
29135
|
-
},
|
|
29136
|
-
"$listeners$": undefined,
|
|
29137
|
-
"$lazyBundleId$": "-",
|
|
29138
|
-
"$attrsToReflect$": [["color", "color"]]
|
|
29139
|
-
}; }
|
|
29140
|
-
}
|
|
29141
|
-
const PICKER_ITEM_ACTIVE_CLASS = 'option-active';
|
|
29142
|
-
|
|
29143
|
-
const pickerColumnIosCss = () => `.picker-col{display:-ms-flexbox;display:flex;position:relative;-ms-flex:1;flex:1;-ms-flex-pack:center;justify-content:center;height:100%;-webkit-box-sizing:content-box;box-sizing:content-box;contain:content}.picker-opts{position:relative;-ms-flex:1;flex:1;max-width:100%}.picker-opt{top:0;display:block;position:absolute;width:100%;border:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;contain:strict;overflow:hidden;will-change:transform}.picker-opt{inset-inline-start:0}.picker-opt.picker-opt-disabled{pointer-events:none}.picker-opt-disabled{opacity:0}.picker-opts-left{-ms-flex-pack:start;justify-content:flex-start}.picker-opts-right{-ms-flex-pack:end;justify-content:flex-end}.picker-opt:active,.picker-opt:focus{outline:none}.picker-prefix{position:relative;-ms-flex:1;flex:1;text-align:end;white-space:nowrap}.picker-suffix{position:relative;-ms-flex:1;flex:1;text-align:start;white-space:nowrap}.picker-col{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:0;padding-bottom:0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.picker-prefix,.picker-suffix,.picker-opts{top:77px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;color:inherit;font-size:20px;line-height:42px;pointer-events:none}.picker-opt{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-transform-origin:center center;transform-origin:center center;height:46px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;background:transparent;color:inherit;font-size:20px;line-height:42px;-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:auto}:host-context([dir=rtl]) .picker-opt{-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}[dir=rtl] .picker-opt{-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}@supports selector(:dir(rtl)){.picker-opt:dir(rtl){-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}}`;
|
|
29144
|
-
|
|
29145
|
-
const pickerColumnMdCss = () => `.picker-col{display:-ms-flexbox;display:flex;position:relative;-ms-flex:1;flex:1;-ms-flex-pack:center;justify-content:center;height:100%;-webkit-box-sizing:content-box;box-sizing:content-box;contain:content}.picker-opts{position:relative;-ms-flex:1;flex:1;max-width:100%}.picker-opt{top:0;display:block;position:absolute;width:100%;border:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;contain:strict;overflow:hidden;will-change:transform}.picker-opt{inset-inline-start:0}.picker-opt.picker-opt-disabled{pointer-events:none}.picker-opt-disabled{opacity:0}.picker-opts-left{-ms-flex-pack:start;justify-content:flex-start}.picker-opts-right{-ms-flex-pack:end;justify-content:flex-end}.picker-opt:active,.picker-opt:focus{outline:none}.picker-prefix{position:relative;-ms-flex:1;flex:1;text-align:end;white-space:nowrap}.picker-suffix{position:relative;-ms-flex:1;flex:1;text-align:start;white-space:nowrap}.picker-col{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.picker-prefix,.picker-suffix,.picker-opts{top:77px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;color:inherit;font-size:22px;line-height:42px;pointer-events:none}.picker-opt{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;height:43px;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;background:transparent;color:inherit;font-size:22px;line-height:42px;-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:auto}.picker-prefix,.picker-suffix,.picker-opt.picker-opt-selected{color:var(--ion-color-primary, #0054e9)}`;
|
|
29146
|
-
|
|
29147
|
-
/**
|
|
29148
|
-
* @internal
|
|
29149
|
-
*/
|
|
29150
|
-
class PickerColumnCmp {
|
|
29151
|
-
constructor(hostRef) {
|
|
29152
|
-
registerInstance(this, hostRef);
|
|
29153
|
-
this.ionPickerColChange = createEvent(this, "ionPickerColChange", 7);
|
|
29154
|
-
this.optHeight = 0;
|
|
29155
|
-
this.rotateFactor = 0;
|
|
29156
|
-
this.scaleFactor = 1;
|
|
29157
|
-
this.velocity = 0;
|
|
29158
|
-
this.y = 0;
|
|
29159
|
-
this.noAnimate = true;
|
|
29160
|
-
// `colDidChange` is a flag that gets set when the column is changed
|
|
29161
|
-
// dynamically. When this flag is set, the column will refresh
|
|
29162
|
-
// after the component re-renders to incorporate the new column data.
|
|
29163
|
-
// This is necessary because `this.refresh` queries for the option elements,
|
|
29164
|
-
// so it needs to wait for the latest elements to be available in the DOM.
|
|
29165
|
-
// Ex: column is created with 3 options. User updates the column data
|
|
29166
|
-
// to have 5 options. The column will still think it only has 3 options.
|
|
29167
|
-
this.colDidChange = false;
|
|
29168
|
-
}
|
|
29169
|
-
colChanged() {
|
|
29170
|
-
this.colDidChange = true;
|
|
29171
|
-
}
|
|
29172
|
-
async connectedCallback() {
|
|
29173
|
-
let pickerRotateFactor = 0;
|
|
29174
|
-
let pickerScaleFactor = 0.81;
|
|
29175
|
-
const mode = getIonMode$1(this);
|
|
29176
|
-
if (mode === 'ios') {
|
|
29177
|
-
pickerRotateFactor = -0.46;
|
|
29178
|
-
pickerScaleFactor = 1;
|
|
29179
|
-
}
|
|
29180
|
-
this.rotateFactor = pickerRotateFactor;
|
|
29181
|
-
this.scaleFactor = pickerScaleFactor;
|
|
29182
|
-
this.gesture = (await Promise.resolve().then(function () { return index; })).createGesture({
|
|
29183
|
-
el: this.el,
|
|
29184
|
-
gestureName: 'picker-swipe',
|
|
29185
|
-
gesturePriority: 100,
|
|
29186
|
-
threshold: 0,
|
|
29187
|
-
passive: false,
|
|
29188
|
-
onStart: (ev) => this.onStart(ev),
|
|
29189
|
-
onMove: (ev) => this.onMove(ev),
|
|
29190
|
-
onEnd: (ev) => this.onEnd(ev),
|
|
29191
|
-
});
|
|
29192
|
-
this.gesture.enable();
|
|
29193
|
-
// Options have not been initialized yet
|
|
29194
|
-
// Animation must be disabled through the `noAnimate` flag
|
|
29195
|
-
// Otherwise, the options will render
|
|
29196
|
-
// at the top of the column and transition down
|
|
29197
|
-
this.tmrId = setTimeout(() => {
|
|
29198
|
-
this.noAnimate = false;
|
|
29199
|
-
// After initialization, `refresh()` will be called
|
|
29200
|
-
// At this point, animation will be enabled. The options will
|
|
29201
|
-
// animate as they are being selected.
|
|
29202
|
-
this.refresh(true);
|
|
29203
|
-
}, 250);
|
|
29204
|
-
}
|
|
29205
|
-
componentDidLoad() {
|
|
29206
|
-
this.onDomChange();
|
|
29207
|
-
}
|
|
29208
|
-
componentDidUpdate() {
|
|
29209
|
-
// Options may have changed since last update.
|
|
29210
|
-
if (this.colDidChange) {
|
|
29211
|
-
// Animation must be disabled through the `onDomChange` parameter.
|
|
29212
|
-
// Otherwise, the recently added options will render
|
|
29213
|
-
// at the top of the column and transition down
|
|
29214
|
-
this.onDomChange(true, false);
|
|
29215
|
-
this.colDidChange = false;
|
|
29216
|
-
}
|
|
29217
|
-
}
|
|
29218
|
-
disconnectedCallback() {
|
|
29219
|
-
if (this.rafId !== undefined)
|
|
29220
|
-
cancelAnimationFrame(this.rafId);
|
|
29221
|
-
if (this.tmrId)
|
|
29222
|
-
clearTimeout(this.tmrId);
|
|
29223
|
-
if (this.gesture) {
|
|
29224
|
-
this.gesture.destroy();
|
|
29225
|
-
this.gesture = undefined;
|
|
29226
|
-
}
|
|
29227
|
-
}
|
|
29228
|
-
emitColChange() {
|
|
29229
|
-
this.ionPickerColChange.emit(this.col);
|
|
29230
|
-
}
|
|
29231
|
-
setSelected(selectedIndex, duration) {
|
|
29232
|
-
// if there is a selected index, then figure out it's y position
|
|
29233
|
-
// if there isn't a selected index, then just use the top y position
|
|
29234
|
-
const y = selectedIndex > -1 ? -(selectedIndex * this.optHeight) : 0;
|
|
29235
|
-
this.velocity = 0;
|
|
29236
|
-
// set what y position we're at
|
|
29237
|
-
if (this.rafId !== undefined)
|
|
29238
|
-
cancelAnimationFrame(this.rafId);
|
|
29239
|
-
this.update(y, duration, true);
|
|
29240
|
-
this.emitColChange();
|
|
29241
|
-
}
|
|
29242
|
-
update(y, duration, saveY) {
|
|
29243
|
-
if (!this.optsEl) {
|
|
29244
|
-
return;
|
|
29245
|
-
}
|
|
29246
|
-
// ensure we've got a good round number :)
|
|
29247
|
-
let translateY = 0;
|
|
29248
|
-
let translateZ = 0;
|
|
29249
|
-
const { col, rotateFactor } = this;
|
|
29250
|
-
const prevSelected = col.selectedIndex;
|
|
29251
|
-
const selectedIndex = (col.selectedIndex = this.indexForY(-y));
|
|
29252
|
-
const durationStr = duration === 0 ? '' : duration + 'ms';
|
|
29253
|
-
const scaleStr = `scale(${this.scaleFactor})`;
|
|
29254
|
-
const children = this.optsEl.children;
|
|
29255
|
-
for (let i = 0; i < children.length; i++) {
|
|
29256
|
-
const button = children[i];
|
|
29257
|
-
const opt = col.options[i];
|
|
29258
|
-
const optOffset = i * this.optHeight + y;
|
|
29259
|
-
let transform = '';
|
|
29260
|
-
if (rotateFactor !== 0) {
|
|
29261
|
-
const rotateX = optOffset * rotateFactor;
|
|
29262
|
-
if (Math.abs(rotateX) <= 90) {
|
|
29263
|
-
translateY = 0;
|
|
29264
|
-
translateZ = 90;
|
|
29265
|
-
transform = `rotateX(${rotateX}deg) `;
|
|
29266
|
-
}
|
|
29267
|
-
else {
|
|
29268
|
-
translateY = -9999;
|
|
29269
|
-
}
|
|
29270
|
-
}
|
|
29271
|
-
else {
|
|
29272
|
-
translateZ = 0;
|
|
29273
|
-
translateY = optOffset;
|
|
29274
|
-
}
|
|
29275
|
-
const selected = selectedIndex === i;
|
|
29276
|
-
transform += `translate3d(0px,${translateY}px,${translateZ}px) `;
|
|
29277
|
-
if (this.scaleFactor !== 1 && !selected) {
|
|
29278
|
-
transform += scaleStr;
|
|
29279
|
-
}
|
|
29280
|
-
// Update transition duration
|
|
29281
|
-
if (this.noAnimate) {
|
|
29282
|
-
opt.duration = 0;
|
|
29283
|
-
button.style.transitionDuration = '';
|
|
29284
|
-
}
|
|
29285
|
-
else if (duration !== opt.duration) {
|
|
29286
|
-
opt.duration = duration;
|
|
29287
|
-
button.style.transitionDuration = durationStr;
|
|
29288
|
-
}
|
|
29289
|
-
// Update transform
|
|
29290
|
-
if (transform !== opt.transform) {
|
|
29291
|
-
opt.transform = transform;
|
|
29292
|
-
}
|
|
29293
|
-
button.style.transform = transform;
|
|
29294
|
-
/**
|
|
29295
|
-
* Ensure that the select column
|
|
29296
|
-
* item has the selected class
|
|
29297
|
-
*/
|
|
29298
|
-
opt.selected = selected;
|
|
29299
|
-
if (selected) {
|
|
29300
|
-
button.classList.add(PICKER_OPT_SELECTED);
|
|
29301
|
-
}
|
|
29302
|
-
else {
|
|
29303
|
-
button.classList.remove(PICKER_OPT_SELECTED);
|
|
29304
|
-
}
|
|
29305
|
-
}
|
|
29306
|
-
this.col.prevSelected = prevSelected;
|
|
29307
|
-
if (saveY) {
|
|
29308
|
-
this.y = y;
|
|
29309
|
-
}
|
|
29310
|
-
if (this.lastIndex !== selectedIndex) {
|
|
29311
|
-
// have not set a last index yet
|
|
29312
|
-
hapticSelectionChanged();
|
|
29313
|
-
this.lastIndex = selectedIndex;
|
|
29314
|
-
}
|
|
29315
|
-
}
|
|
29316
|
-
decelerate() {
|
|
29317
|
-
if (this.velocity !== 0) {
|
|
29318
|
-
// still decelerating
|
|
29319
|
-
this.velocity *= DECELERATION_FRICTION;
|
|
29320
|
-
// do not let it go slower than a velocity of 1
|
|
29321
|
-
this.velocity = this.velocity > 0 ? Math.max(this.velocity, 1) : Math.min(this.velocity, -1);
|
|
29322
|
-
let y = this.y + this.velocity;
|
|
29323
|
-
if (y > this.minY) {
|
|
29324
|
-
// whoops, it's trying to scroll up farther than the options we have!
|
|
29325
|
-
y = this.minY;
|
|
29326
|
-
this.velocity = 0;
|
|
29327
|
-
}
|
|
29328
|
-
else if (y < this.maxY) {
|
|
29329
|
-
// gahh, it's trying to scroll down farther than we can!
|
|
29330
|
-
y = this.maxY;
|
|
29331
|
-
this.velocity = 0;
|
|
29332
|
-
}
|
|
29333
|
-
this.update(y, 0, true);
|
|
29334
|
-
const notLockedIn = Math.round(y) % this.optHeight !== 0 || Math.abs(this.velocity) > 1;
|
|
29335
|
-
if (notLockedIn) {
|
|
29336
|
-
// isn't locked in yet, keep decelerating until it is
|
|
29337
|
-
this.rafId = requestAnimationFrame(() => this.decelerate());
|
|
29338
|
-
}
|
|
29339
|
-
else {
|
|
29340
|
-
this.velocity = 0;
|
|
29341
|
-
this.emitColChange();
|
|
29342
|
-
hapticSelectionEnd();
|
|
29343
|
-
}
|
|
29344
|
-
}
|
|
29345
|
-
else if (this.y % this.optHeight !== 0) {
|
|
29346
|
-
// needs to still get locked into a position so options line up
|
|
29347
|
-
const currentPos = Math.abs(this.y % this.optHeight);
|
|
29348
|
-
// create a velocity in the direction it needs to scroll
|
|
29349
|
-
this.velocity = currentPos > this.optHeight / 2 ? 1 : -1;
|
|
29350
|
-
this.decelerate();
|
|
29351
|
-
}
|
|
29352
|
-
}
|
|
29353
|
-
indexForY(y) {
|
|
29354
|
-
return Math.min(Math.max(Math.abs(Math.round(y / this.optHeight)), 0), this.col.options.length - 1);
|
|
29355
|
-
}
|
|
29356
|
-
onStart(detail) {
|
|
29357
|
-
// We have to prevent default in order to block scrolling under the picker
|
|
29358
|
-
// but we DO NOT have to stop propagation, since we still want
|
|
29359
|
-
// some "click" events to capture
|
|
29360
|
-
if (detail.event.cancelable) {
|
|
29361
|
-
detail.event.preventDefault();
|
|
29362
|
-
}
|
|
29363
|
-
detail.event.stopPropagation();
|
|
29364
|
-
hapticSelectionStart();
|
|
29365
|
-
// reset everything
|
|
29366
|
-
if (this.rafId !== undefined)
|
|
29367
|
-
cancelAnimationFrame(this.rafId);
|
|
29368
|
-
const options = this.col.options;
|
|
29369
|
-
let minY = options.length - 1;
|
|
29370
|
-
let maxY = 0;
|
|
29371
|
-
for (let i = 0; i < options.length; i++) {
|
|
29372
|
-
if (!options[i].disabled) {
|
|
29373
|
-
minY = Math.min(minY, i);
|
|
29374
|
-
maxY = Math.max(maxY, i);
|
|
29375
|
-
}
|
|
29376
|
-
}
|
|
29377
|
-
this.minY = -(minY * this.optHeight);
|
|
29378
|
-
this.maxY = -(maxY * this.optHeight);
|
|
29379
|
-
}
|
|
29380
|
-
onMove(detail) {
|
|
29381
|
-
if (detail.event.cancelable) {
|
|
29382
|
-
detail.event.preventDefault();
|
|
29383
|
-
}
|
|
29384
|
-
detail.event.stopPropagation();
|
|
29385
|
-
// update the scroll position relative to pointer start position
|
|
29386
|
-
let y = this.y + detail.deltaY;
|
|
29387
|
-
if (y > this.minY) {
|
|
29388
|
-
// scrolling up higher than scroll area
|
|
29389
|
-
y = Math.pow(y, 0.8);
|
|
29390
|
-
this.bounceFrom = y;
|
|
29391
|
-
}
|
|
29392
|
-
else if (y < this.maxY) {
|
|
29393
|
-
// scrolling down below scroll area
|
|
29394
|
-
y += Math.pow(this.maxY - y, 0.9);
|
|
29395
|
-
this.bounceFrom = y;
|
|
29396
|
-
}
|
|
29397
|
-
else {
|
|
29398
|
-
this.bounceFrom = 0;
|
|
29240
|
+
}
|
|
29399
29241
|
}
|
|
29400
|
-
this.update(y, 0, false);
|
|
29401
29242
|
}
|
|
29402
|
-
|
|
29403
|
-
|
|
29404
|
-
|
|
29405
|
-
|
|
29406
|
-
this.
|
|
29407
|
-
return;
|
|
29243
|
+
/** @internal */
|
|
29244
|
+
async scrollActiveItemIntoView(smooth = false) {
|
|
29245
|
+
const activeEl = this.activeItem;
|
|
29246
|
+
if (activeEl) {
|
|
29247
|
+
this.centerPickerItemInView(activeEl, smooth, false);
|
|
29408
29248
|
}
|
|
29409
|
-
|
|
29410
|
-
|
|
29411
|
-
|
|
29412
|
-
|
|
29249
|
+
}
|
|
29250
|
+
/**
|
|
29251
|
+
* Sets the value prop and fires the ionChange event.
|
|
29252
|
+
* This is used when we need to fire ionChange from
|
|
29253
|
+
* user-generated events that cannot be caught with normal
|
|
29254
|
+
* input/change event listeners.
|
|
29255
|
+
* @internal
|
|
29256
|
+
*/
|
|
29257
|
+
async setValue(value) {
|
|
29258
|
+
if (this.disabled === true || this.value === value) {
|
|
29413
29259
|
return;
|
|
29414
29260
|
}
|
|
29415
|
-
this.
|
|
29416
|
-
|
|
29417
|
-
|
|
29418
|
-
|
|
29419
|
-
|
|
29420
|
-
|
|
29421
|
-
|
|
29422
|
-
|
|
29423
|
-
|
|
29424
|
-
|
|
29425
|
-
const isScrollingUp = detail.deltaY > 0;
|
|
29426
|
-
const optHeightFraction = (Math.abs(this.y) % this.optHeight) / this.optHeight;
|
|
29427
|
-
if (isScrollingUp && optHeightFraction > 0.5) {
|
|
29428
|
-
this.velocity = Math.abs(this.velocity) * -1;
|
|
29429
|
-
}
|
|
29430
|
-
else if (!isScrollingUp && optHeightFraction <= 0.5) {
|
|
29431
|
-
this.velocity = Math.abs(this.velocity);
|
|
29432
|
-
}
|
|
29433
|
-
}
|
|
29434
|
-
this.decelerate();
|
|
29261
|
+
this.value = value;
|
|
29262
|
+
this.ionChange.emit({ value });
|
|
29263
|
+
}
|
|
29264
|
+
/**
|
|
29265
|
+
* Sets focus on the scrollable container within the picker column.
|
|
29266
|
+
* Use this method instead of the global `pickerColumn.focus()`.
|
|
29267
|
+
*/
|
|
29268
|
+
async setFocus() {
|
|
29269
|
+
if (this.assistiveFocusable) {
|
|
29270
|
+
this.assistiveFocusable.focus();
|
|
29435
29271
|
}
|
|
29436
29272
|
}
|
|
29437
|
-
|
|
29273
|
+
connectedCallback() {
|
|
29438
29274
|
var _a;
|
|
29439
|
-
|
|
29440
|
-
let max = 0;
|
|
29441
|
-
const options = this.col.options;
|
|
29442
|
-
for (let i = 0; i < options.length; i++) {
|
|
29443
|
-
if (!options[i].disabled) {
|
|
29444
|
-
min = Math.min(min, i);
|
|
29445
|
-
max = Math.max(max, i);
|
|
29446
|
-
}
|
|
29447
|
-
}
|
|
29448
|
-
/**
|
|
29449
|
-
* Only update selected value if column has a
|
|
29450
|
-
* velocity of 0. If it does not, then the
|
|
29451
|
-
* column is animating might land on
|
|
29452
|
-
* a value different than the value at
|
|
29453
|
-
* selectedIndex
|
|
29454
|
-
*/
|
|
29455
|
-
if (this.velocity !== 0) {
|
|
29456
|
-
return;
|
|
29457
|
-
}
|
|
29458
|
-
const selectedIndex = clamp(min, (_a = this.col.selectedIndex) !== null && _a !== void 0 ? _a : 0, max);
|
|
29459
|
-
if (this.col.prevSelected !== selectedIndex || forceRefresh) {
|
|
29460
|
-
const y = selectedIndex * this.optHeight * -1;
|
|
29461
|
-
const duration = animated ? TRANSITION_DURATION : 0;
|
|
29462
|
-
this.velocity = 0;
|
|
29463
|
-
this.update(y, duration, true);
|
|
29464
|
-
}
|
|
29275
|
+
this.ariaLabel = (_a = this.el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : 'Select a value';
|
|
29465
29276
|
}
|
|
29466
|
-
|
|
29467
|
-
const
|
|
29468
|
-
|
|
29469
|
-
|
|
29470
|
-
|
|
29471
|
-
|
|
29472
|
-
|
|
29473
|
-
|
|
29277
|
+
get activeItem() {
|
|
29278
|
+
const { value } = this;
|
|
29279
|
+
const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
|
|
29280
|
+
return options.find((option) => {
|
|
29281
|
+
/**
|
|
29282
|
+
* If the whole picker column is disabled, the current value should appear active
|
|
29283
|
+
* If the current value item is specifically disabled, it should not appear active
|
|
29284
|
+
*/
|
|
29285
|
+
if (!this.disabled && option.disabled) {
|
|
29286
|
+
return false;
|
|
29287
|
+
}
|
|
29288
|
+
return option.value === value;
|
|
29289
|
+
});
|
|
29474
29290
|
}
|
|
29475
29291
|
render() {
|
|
29476
|
-
const
|
|
29292
|
+
const { color, disabled, isActive, numericInput } = this;
|
|
29477
29293
|
const mode = getIonMode$1(this);
|
|
29478
|
-
return (hAsync(Host, { key: '
|
|
29479
|
-
|
|
29480
|
-
|
|
29294
|
+
return (hAsync(Host, { key: '234c96a501d7ac413b9b0ea56b33017681e25b40', class: createColorClasses$1(color, {
|
|
29295
|
+
[mode]: true,
|
|
29296
|
+
['picker-column-active']: isActive,
|
|
29297
|
+
['picker-column-numeric-input']: numericInput,
|
|
29298
|
+
['picker-column-disabled']: disabled,
|
|
29299
|
+
}) }, hAsync("slot", { key: '9dc15ea0601ddd2cb2e0a745e91e036a8bd96f8b', name: "prefix" }), hAsync("div", { key: 'de4fe28ee4bc46b7c0420d6ab0df0e7809443da9', class: "picker-opts", ref: (el) => {
|
|
29300
|
+
this.scrollEl = el;
|
|
29301
|
+
}, role: "slider", tabindex: this.disabled ? undefined : 0, "aria-label": this.ariaLabel, "aria-valuemin": 0, "aria-valuemax": 0, "aria-valuenow": 0, "aria-valuetext": this.getOptionValueText(this.activeItem), "aria-orientation": "vertical", onKeyDown: (ev) => this.onKeyDown(ev) }, hAsync("div", { key: '5297617462cc30e9444039ae032d8bdf718349af', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '55ea39ef867bcb1a11a912d52ecd20cb886c5fb3', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '3496730ce6182ebfd33e0ee4bafc130feb575a31', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("slot", { key: '44c3628aa957d60f799dc7019f72fe8b676c7843' }), hAsync("div", { key: '5a1809f6c949678a67e0d4b5bfe93ea335c0161d', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '98fd57f1c66dbaebc2db2dd5da142671b3159fd1', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '85590708abddfa885994e549deac64866fec938f', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), hAsync("slot", { key: 'bb7e674f543696a80fcbfb1f68f2e975826898a6', name: "suffix" })));
|
|
29481
29302
|
}
|
|
29482
29303
|
get el() { return getElement(this); }
|
|
29483
29304
|
static get watchers() { return {
|
|
29484
|
-
"
|
|
29485
|
-
"
|
|
29305
|
+
"aria-label": [{
|
|
29306
|
+
"ariaLabelChanged": 0
|
|
29307
|
+
}],
|
|
29308
|
+
"value": [{
|
|
29309
|
+
"valueChange": 0
|
|
29486
29310
|
}]
|
|
29487
29311
|
}; }
|
|
29488
|
-
static get style() { return
|
|
29489
|
-
ios: pickerColumnIosCss(),
|
|
29490
|
-
md: pickerColumnMdCss()
|
|
29491
|
-
}; }
|
|
29312
|
+
static get style() { return pickerColumnCss(); }
|
|
29492
29313
|
static get cmpMeta() { return {
|
|
29493
|
-
"$flags$":
|
|
29494
|
-
"$tagName$": "ion-picker-
|
|
29314
|
+
"$flags$": 265,
|
|
29315
|
+
"$tagName$": "ion-picker-column",
|
|
29495
29316
|
"$members$": {
|
|
29496
|
-
"
|
|
29317
|
+
"disabled": [4],
|
|
29318
|
+
"value": [1032],
|
|
29319
|
+
"color": [513],
|
|
29320
|
+
"numericInput": [4, "numeric-input"],
|
|
29321
|
+
"ariaLabel": [32],
|
|
29322
|
+
"isActive": [32],
|
|
29323
|
+
"scrollActiveItemIntoView": [64],
|
|
29324
|
+
"setValue": [64],
|
|
29325
|
+
"setFocus": [64]
|
|
29497
29326
|
},
|
|
29498
29327
|
"$listeners$": undefined,
|
|
29499
29328
|
"$lazyBundleId$": "-",
|
|
29500
|
-
"$attrsToReflect$": []
|
|
29329
|
+
"$attrsToReflect$": [["color", "color"]]
|
|
29501
29330
|
}; }
|
|
29502
29331
|
}
|
|
29503
|
-
const
|
|
29504
|
-
const DECELERATION_FRICTION = 0.97;
|
|
29505
|
-
const MAX_PICKER_SPEED = 90;
|
|
29506
|
-
const TRANSITION_DURATION = 150;
|
|
29332
|
+
const PICKER_ITEM_ACTIVE_CLASS = 'option-active';
|
|
29507
29333
|
|
|
29508
29334
|
const pickerColumnOptionIosCss = () => `.picker-column-option-button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) .picker-column-option-button{cursor:default}`;
|
|
29509
29335
|
|
|
@@ -30700,9 +30526,9 @@ const mdLeaveAnimation$1 = (baseEl) => {
|
|
|
30700
30526
|
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
30701
30527
|
};
|
|
30702
30528
|
|
|
30703
|
-
const popoverIosCss = () => `:host{--background:var(--ion-background-color, #fff);--min-width:0;--min-height:0;--max-width:auto;--height:auto;--offset-x:0px;--offset-y:0px;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:fixed;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);z-index:1001}:host(.popover-nested){pointer-events:none}:host(.popover-nested) .popover-wrapper{pointer-events:auto}:host(.overlay-hidden){display:none}.popover-wrapper{z-index:10}.popover-content{display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:auto;z-index:10}::slotted(.popover-viewport){--ion-safe-area-top:0px;--ion-safe-area-right:0px;--ion-safe-area-bottom:0px;--ion-safe-area-left:0px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:host(.popover-nested.popover-side-left){--offset-x:5px}:host(.popover-nested.popover-side-right){--offset-x:-5px}:host(.popover-nested.popover-side-start){--offset-x:5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-start),:host-context([dir=rtl]).popover-nested.popover-side-start{--offset-x:-5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-start:dir(rtl)){--offset-x:-5px}}:host(.popover-nested.popover-side-end){--offset-x:-5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-end),:host-context([dir=rtl]).popover-nested.popover-side-end{--offset-x:5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-end:dir(rtl)){--offset-x:5px}}:host{--width:200px;--max-height:90%;--box-shadow:none;--backdrop-opacity:var(--ion-backdrop-opacity, 0.08)}:host(.popover-desktop){--box-shadow:0px 4px 16px 0px rgba(0, 0, 0, 0.12)}.popover-content{border-radius:10px}:host(.popover-desktop) .popover-content{border:0.5px solid var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.popover-arrow{display:block;position:absolute;width:20px;height:10px;overflow:hidden;z-index:11}.popover-arrow::after{top:3px;border-radius:3px;position:absolute;width:14px;height:14px;-webkit-transform:rotate(45deg);transform:rotate(45deg);background:var(--background);content:"";z-index:10}.popover-arrow::after{inset-inline-start:3px}:host(.popover-bottom) .popover-arrow{top:auto;bottom:-10px}:host(.popover-bottom) .popover-arrow::after{top:-6px}:host(.popover-side-left) .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}:host(.popover-side-right) .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}:host(.popover-side-top) .popover-arrow{-webkit-transform:rotate(180deg);transform:rotate(180deg)}:host(.popover-side-start) .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}:host-context([dir=rtl]):host(.popover-side-start) .popover-arrow,:host-context([dir=rtl]).popover-side-start .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}@supports selector(:dir(rtl)){:host(.popover-side-start:dir(rtl)) .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}}:host(.popover-side-end) .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}:host-context([dir=rtl]):host(.popover-side-end) .popover-arrow,:host-context([dir=rtl]).popover-side-end .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}@supports selector(:dir(rtl)){:host(.popover-side-end:dir(rtl)) .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}}.popover-arrow,.popover-content{opacity:0}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){:host(.popover-translucent) .popover-content,:host(.popover-translucent) .popover-arrow::after{background:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}`;
|
|
30529
|
+
const popoverIosCss = () => `:host{--background:var(--ion-background-color, #fff);--min-width:0;--min-height:0;--max-width:auto;--height:auto;--offset-x:0px;--offset-y:0px;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:fixed;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);z-index:1001}:host(.popover-nested){pointer-events:none}:host(.popover-nested) .popover-wrapper{pointer-events:auto}:host(.overlay-hidden){display:none}.popover-wrapper{z-index:10}.popover-content{display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:auto;z-index:10}::slotted(.popover-viewport){--ion-safe-area-top:0px;--ion-safe-area-right:0px;--ion-safe-area-bottom:0px;--ion-safe-area-left:0px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:host(.popover-nested.popover-side-left){--offset-x:5px}:host(.popover-nested.popover-side-right){--offset-x:-5px}:host(.popover-nested.popover-side-start){--offset-x:5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-start),:host-context([dir=rtl]).popover-nested.popover-side-start{--offset-x:-5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-start:dir(rtl)){--offset-x:-5px}}:host(.popover-nested.popover-side-end){--offset-x:-5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-end),:host-context([dir=rtl]).popover-nested.popover-side-end{--offset-x:5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-end:dir(rtl)){--offset-x:5px}}:host(.select-popover-rich-content){--width:clamp(250px, calc(100vw - 40px), 400px)}:host{--width:200px;--max-height:90%;--box-shadow:none;--backdrop-opacity:var(--ion-backdrop-opacity, 0.08)}:host(.popover-desktop){--box-shadow:0px 4px 16px 0px rgba(0, 0, 0, 0.12)}.popover-content{border-radius:10px}:host(.popover-desktop) .popover-content{border:0.5px solid var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.popover-arrow{display:block;position:absolute;width:20px;height:10px;overflow:hidden;z-index:11}.popover-arrow::after{top:3px;border-radius:3px;position:absolute;width:14px;height:14px;-webkit-transform:rotate(45deg);transform:rotate(45deg);background:var(--background);content:"";z-index:10}.popover-arrow::after{inset-inline-start:3px}:host(.popover-bottom) .popover-arrow{top:auto;bottom:-10px}:host(.popover-bottom) .popover-arrow::after{top:-6px}:host(.popover-side-left) .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}:host(.popover-side-right) .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}:host(.popover-side-top) .popover-arrow{-webkit-transform:rotate(180deg);transform:rotate(180deg)}:host(.popover-side-start) .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}:host-context([dir=rtl]):host(.popover-side-start) .popover-arrow,:host-context([dir=rtl]).popover-side-start .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}@supports selector(:dir(rtl)){:host(.popover-side-start:dir(rtl)) .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}}:host(.popover-side-end) .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}:host-context([dir=rtl]):host(.popover-side-end) .popover-arrow,:host-context([dir=rtl]).popover-side-end .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}@supports selector(:dir(rtl)){:host(.popover-side-end:dir(rtl)) .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}}.popover-arrow,.popover-content{opacity:0}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){:host(.popover-translucent) .popover-content,:host(.popover-translucent) .popover-arrow::after{background:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}`;
|
|
30704
30530
|
|
|
30705
|
-
const popoverMdCss = () => `:host{--background:var(--ion-background-color, #fff);--min-width:0;--min-height:0;--max-width:auto;--height:auto;--offset-x:0px;--offset-y:0px;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:fixed;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);z-index:1001}:host(.popover-nested){pointer-events:none}:host(.popover-nested) .popover-wrapper{pointer-events:auto}:host(.overlay-hidden){display:none}.popover-wrapper{z-index:10}.popover-content{display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:auto;z-index:10}::slotted(.popover-viewport){--ion-safe-area-top:0px;--ion-safe-area-right:0px;--ion-safe-area-bottom:0px;--ion-safe-area-left:0px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:host(.popover-nested.popover-side-left){--offset-x:5px}:host(.popover-nested.popover-side-right){--offset-x:-5px}:host(.popover-nested.popover-side-start){--offset-x:5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-start),:host-context([dir=rtl]).popover-nested.popover-side-start{--offset-x:-5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-start:dir(rtl)){--offset-x:-5px}}:host(.popover-nested.popover-side-end){--offset-x:-5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-end),:host-context([dir=rtl]).popover-nested.popover-side-end{--offset-x:5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-end:dir(rtl)){--offset-x:5px}}:host{--width:250px;--max-height:90%;--box-shadow:0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12);--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}.popover-content{border-radius:4px;-webkit-transform-origin:left top;transform-origin:left top}:host-context([dir=rtl]) .popover-content{-webkit-transform-origin:right top;transform-origin:right top}[dir=rtl] .popover-content{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){.popover-content:dir(rtl){-webkit-transform-origin:right top;transform-origin:right top}}.popover-viewport{-webkit-transition-delay:100ms;transition-delay:100ms}.popover-wrapper{opacity:0}`;
|
|
30531
|
+
const popoverMdCss = () => `:host{--background:var(--ion-background-color, #fff);--min-width:0;--min-height:0;--max-width:auto;--height:auto;--offset-x:0px;--offset-y:0px;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:fixed;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);z-index:1001}:host(.popover-nested){pointer-events:none}:host(.popover-nested) .popover-wrapper{pointer-events:auto}:host(.overlay-hidden){display:none}.popover-wrapper{z-index:10}.popover-content{display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:auto;z-index:10}::slotted(.popover-viewport){--ion-safe-area-top:0px;--ion-safe-area-right:0px;--ion-safe-area-bottom:0px;--ion-safe-area-left:0px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:host(.popover-nested.popover-side-left){--offset-x:5px}:host(.popover-nested.popover-side-right){--offset-x:-5px}:host(.popover-nested.popover-side-start){--offset-x:5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-start),:host-context([dir=rtl]).popover-nested.popover-side-start{--offset-x:-5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-start:dir(rtl)){--offset-x:-5px}}:host(.popover-nested.popover-side-end){--offset-x:-5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-end),:host-context([dir=rtl]).popover-nested.popover-side-end{--offset-x:5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-end:dir(rtl)){--offset-x:5px}}:host(.select-popover-rich-content){--width:clamp(250px, calc(100vw - 40px), 400px)}:host{--width:250px;--max-height:90%;--box-shadow:0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12);--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}.popover-content{border-radius:4px;-webkit-transform-origin:left top;transform-origin:left top}:host-context([dir=rtl]) .popover-content{-webkit-transform-origin:right top;transform-origin:right top}[dir=rtl] .popover-content{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){.popover-content:dir(rtl){-webkit-transform-origin:right top;transform-origin:right top}}.popover-viewport{-webkit-transition-delay:100ms;transition-delay:100ms}.popover-wrapper{opacity:0}`;
|
|
30706
30532
|
|
|
30707
30533
|
// TODO(FW-2832): types
|
|
30708
30534
|
/**
|
|
@@ -30926,6 +30752,10 @@ class Popover {
|
|
|
30926
30752
|
this.headerResizeObserver.disconnect();
|
|
30927
30753
|
this.headerResizeObserver = undefined;
|
|
30928
30754
|
}
|
|
30755
|
+
// Clean up aria-hidden if removed without dismiss() being called
|
|
30756
|
+
if (this.presented) {
|
|
30757
|
+
cleanupRootFocusTrapAccessibility();
|
|
30758
|
+
}
|
|
30929
30759
|
}
|
|
30930
30760
|
componentWillLoad() {
|
|
30931
30761
|
var _a, _b;
|
|
@@ -31164,9 +30994,9 @@ class Popover {
|
|
|
31164
30994
|
const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
|
|
31165
30995
|
const desktop = isPlatform('desktop');
|
|
31166
30996
|
const enableArrow = arrow && !parentPopover;
|
|
31167
|
-
return (hAsync(Host, Object.assign({ key: '
|
|
30997
|
+
return (hAsync(Host, Object.assign({ key: 'd7f3aa2c2fa93a93585e3eda9e4a6d0daaa541be', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
|
|
31168
30998
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
31169
|
-
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: 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 && hAsync("ion-backdrop", { key: '
|
|
30999
|
+
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: 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 && hAsync("ion-backdrop", { key: 'b87be2ef14219997b9c47dcbaf904eb770d0e057', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), hAsync("div", { key: 'e6243572faf1b871ae2b34923410b2a6638469f0', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && hAsync("div", { key: '3d4938c9d0764a644398e0e7a4361106da1bd926', class: "popover-arrow", part: "arrow" }), hAsync("div", { key: '24ad6d777828aad2881d56595693e6022fc9cb8e', class: "popover-content", part: "content" }, hAsync("slot", { key: '79f83df74a5c5e3dd7650f15c1aa50795b90a345' })))));
|
|
31170
31000
|
}
|
|
31171
31001
|
get el() { return getElement(this); }
|
|
31172
31002
|
static get watchers() { return {
|
|
@@ -31277,7 +31107,7 @@ class ProgressBar {
|
|
|
31277
31107
|
const mode = getIonMode$1(this);
|
|
31278
31108
|
// If the progress is displayed as a solid bar.
|
|
31279
31109
|
const progressSolid = buffer === 1;
|
|
31280
|
-
return (hAsync(Host, { key: '
|
|
31110
|
+
return (hAsync(Host, { key: 'd7476268ce53b6a4f425b7bc9f01d6935eb411c3', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
|
|
31281
31111
|
[mode]: true,
|
|
31282
31112
|
[`progress-bar-${type}`]: true,
|
|
31283
31113
|
'progress-paused': paused,
|
|
@@ -31462,7 +31292,7 @@ class Radio {
|
|
|
31462
31292
|
const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
|
|
31463
31293
|
const mode = getIonMode$1(this);
|
|
31464
31294
|
const inItem = hostContext('ion-item', el);
|
|
31465
|
-
return (hAsync(Host, { key: '
|
|
31295
|
+
return (hAsync(Host, { key: 'd9425b252ed38086420d91d5c680421d121c99f4', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
|
|
31466
31296
|
[mode]: true,
|
|
31467
31297
|
'in-item': inItem,
|
|
31468
31298
|
'radio-checked': checked,
|
|
@@ -31473,10 +31303,10 @@ class Radio {
|
|
|
31473
31303
|
// Focus and active styling should not apply when the radio is in an item
|
|
31474
31304
|
'ion-activatable': !inItem,
|
|
31475
31305
|
'ion-focusable': !inItem,
|
|
31476
|
-
}), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, hAsync("label", { key: '
|
|
31306
|
+
}), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, hAsync("label", { key: 'de391fca2aa0b681af5c1d089121596c46e68271', class: "radio-wrapper" }, hAsync("div", { key: '44e4c71645f86a9e73ad58c0e8b41c0558b920f6', class: {
|
|
31477
31307
|
'label-text-wrapper': true,
|
|
31478
31308
|
'label-text-wrapper-hidden': !hasLabel,
|
|
31479
|
-
}, part: "label" }, hAsync("slot", { key: '
|
|
31309
|
+
}, part: "label" }, hAsync("slot", { key: '589d7c1b45a1918b5811663daa8f30788e7729f8' })), hAsync("div", { key: '0f61a17b195582d6c9a0c597cd40e6629256e479', class: "native-wrapper" }, this.renderRadioControl()))));
|
|
31480
31310
|
}
|
|
31481
31311
|
get el() { return getElement(this); }
|
|
31482
31312
|
static get watchers() { return {
|
|
@@ -31495,7 +31325,7 @@ class Radio {
|
|
|
31495
31325
|
"color": [513],
|
|
31496
31326
|
"name": [1],
|
|
31497
31327
|
"disabled": [4],
|
|
31498
|
-
"value": [
|
|
31328
|
+
"value": [520],
|
|
31499
31329
|
"labelPlacement": [1, "label-placement"],
|
|
31500
31330
|
"justify": [1],
|
|
31501
31331
|
"alignment": [1],
|
|
@@ -31506,7 +31336,7 @@ class Radio {
|
|
|
31506
31336
|
},
|
|
31507
31337
|
"$listeners$": undefined,
|
|
31508
31338
|
"$lazyBundleId$": "-",
|
|
31509
|
-
"$attrsToReflect$": [["color", "color"]]
|
|
31339
|
+
"$attrsToReflect$": [["color", "color"], ["value", "value"]]
|
|
31510
31340
|
}; }
|
|
31511
31341
|
}
|
|
31512
31342
|
let radioButtonIds = 0;
|
|
@@ -32571,7 +32401,7 @@ class Range {
|
|
|
32571
32401
|
const valueAtMin = dualKnobs ? this.valA === min || this.valB === min : this.valA === min;
|
|
32572
32402
|
const valueAtMax = dualKnobs ? this.valA === max || this.valB === max : this.valA === max;
|
|
32573
32403
|
renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
|
|
32574
|
-
return (hAsync(Host, { key: '
|
|
32404
|
+
return (hAsync(Host, { key: 'cd26f0187c0d37c7eb9df923f75c8a0f57c19ab6', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
|
|
32575
32405
|
[mode]: true,
|
|
32576
32406
|
'in-item': inItem,
|
|
32577
32407
|
'range-disabled': disabled,
|
|
@@ -32585,10 +32415,10 @@ class Range {
|
|
|
32585
32415
|
'range-item-end-adjustment': needsEndAdjustment,
|
|
32586
32416
|
'range-value-min': valueAtMin,
|
|
32587
32417
|
'range-value-max': valueAtMax,
|
|
32588
|
-
}) }, hAsync("label", { key: '
|
|
32418
|
+
}) }, hAsync("label", { key: '90224fd24b0e625a17e7972feff73a0ac31e093d', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: 'e07b9fa10983249c425eec26b741f0f628daf2b2', class: {
|
|
32589
32419
|
'label-text-wrapper': true,
|
|
32590
32420
|
'label-text-wrapper-hidden': !hasLabel,
|
|
32591
|
-
}, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: '
|
|
32421
|
+
}, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: '9e252f1190838fbae46e724bf665f9b1943600a4', class: "native-wrapper" }, hAsync("slot", { key: '950697dd9636da340de659812daa91fff50e5345', name: "start" }), this.renderRangeSlider(), hAsync("slot", { key: 'd3fce46b29db275af71e6149e725967839ec12b0', name: "end" })))));
|
|
32592
32422
|
}
|
|
32593
32423
|
get el() { return getElement(this); }
|
|
32594
32424
|
static get watchers() { return {
|
|
@@ -33659,7 +33489,7 @@ class Refresher {
|
|
|
33659
33489
|
}
|
|
33660
33490
|
render() {
|
|
33661
33491
|
const mode = getIonMode$1(this);
|
|
33662
|
-
return (hAsync(Host, { key: '
|
|
33492
|
+
return (hAsync(Host, { key: '1dd475095f76491206644828cf89fc6d2ec276d1', slot: "fixed", class: {
|
|
33663
33493
|
[mode]: true,
|
|
33664
33494
|
// Used internally for styling
|
|
33665
33495
|
[`refresher-${mode}`]: true,
|
|
@@ -33885,7 +33715,7 @@ class RefresherContent {
|
|
|
33885
33715
|
const pullingIcon = this.pullingIcon;
|
|
33886
33716
|
const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
|
|
33887
33717
|
const mode = getIonMode$1(this);
|
|
33888
|
-
return (hAsync(Host, { key: '
|
|
33718
|
+
return (hAsync(Host, { key: 'ec378d6a302be697c12c4f973a57c6ad2ada070f', class: mode }, hAsync("div", { key: '0055f98f8c5a1ed7979dc8146ec1f82a575860c7', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (hAsync("div", { key: '4f88468e26370df6889e72aa54ebb395ebf3757d', class: "refresher-pulling-icon" }, hAsync("div", { key: '05b3f8679576aaa6c2d84d60df6629a392df29e2', class: "spinner-arrow-container" }, hAsync("ion-spinner", { key: '0bf6ceea416ce1140c0f10a5bede063cae7054f4', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (hAsync("div", { key: 'b71ede8455837968218edae28504e5e14bbc1f5c', class: "arrow-container" }, hAsync("ion-icon", { key: '30b808288d23d3eac681b1225cd8392fdacfefe1', icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (hAsync("div", { key: 'fee1ae7e57ef8a02f5654808dff9dca3002b6702', class: "refresher-pulling-icon" }, hAsync("ion-icon", { key: '55b34a98028adb497fbc2ac66bdb3d5ae5b1705b', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), hAsync("div", { key: 'ef8f987daa8060cb6f8fd83c0864095042b9eecf', class: "refresher-refreshing" }, this.refreshingSpinner && (hAsync("div", { key: 'cd6fe0e81b34eeae11478fcc8a42044bff6f7a52', class: "refresher-refreshing-icon" }, hAsync("ion-spinner", { key: '9cd778229582b538d54589c4d8e4d470efb64aad', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
|
|
33889
33719
|
}
|
|
33890
33720
|
get el() { return getElement(this); }
|
|
33891
33721
|
static get cmpMeta() { return {
|
|
@@ -33926,7 +33756,7 @@ class Reorder {
|
|
|
33926
33756
|
render() {
|
|
33927
33757
|
const mode = getIonMode$1(this);
|
|
33928
33758
|
const reorderIcon = mode === 'ios' ? reorderThreeOutline : reorderTwoSharp;
|
|
33929
|
-
return (hAsync(Host, { key: '
|
|
33759
|
+
return (hAsync(Host, { key: '4d35db30b5b3df2020d2212abb3cfac94f9bc2b8', class: mode }, hAsync("slot", { key: '68a565ae4a47f6a9f5d6ba845b596fdfa629ece8' }, hAsync("ion-icon", { key: '168fb0f8eb9c02329274488900fcdb05d44cb895', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
|
|
33930
33760
|
}
|
|
33931
33761
|
get el() { return getElement(this); }
|
|
33932
33762
|
static get style() { return {
|
|
@@ -34197,7 +34027,7 @@ class ReorderGroup {
|
|
|
34197
34027
|
}
|
|
34198
34028
|
render() {
|
|
34199
34029
|
const mode = getIonMode$1(this);
|
|
34200
|
-
return (hAsync(Host, { key: '
|
|
34030
|
+
return (hAsync(Host, { key: '3afdc6a6c81bba2f88ea523d4b73c6fccff1b9ec', class: {
|
|
34201
34031
|
[mode]: true,
|
|
34202
34032
|
'reorder-enabled': !this.disabled,
|
|
34203
34033
|
'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
|
|
@@ -34315,7 +34145,7 @@ class RippleEffect {
|
|
|
34315
34145
|
}
|
|
34316
34146
|
render() {
|
|
34317
34147
|
const mode = getIonMode$1(this);
|
|
34318
|
-
return (hAsync(Host, { key: '
|
|
34148
|
+
return (hAsync(Host, { key: '5e88b5225414e29883256c86f111ded5bdf2ef91', role: "presentation", class: {
|
|
34319
34149
|
[mode]: true,
|
|
34320
34150
|
unbounded: this.unbounded,
|
|
34321
34151
|
} }));
|
|
@@ -35449,10 +35279,10 @@ class RouterLink {
|
|
|
35449
35279
|
rel: this.rel,
|
|
35450
35280
|
target: this.target,
|
|
35451
35281
|
};
|
|
35452
|
-
return (hAsync(Host, { key: '
|
|
35282
|
+
return (hAsync(Host, { key: '6d5fdfa0dcf1eb216173bcc53f1f4d625f3ec551', onClick: this.onClick, class: createColorClasses$1(this.color, {
|
|
35453
35283
|
[mode]: true,
|
|
35454
35284
|
'ion-activatable': true,
|
|
35455
|
-
}) }, hAsync("a", Object.assign({ key: '
|
|
35285
|
+
}) }, hAsync("a", Object.assign({ key: '85796b7b48581fe9830ba1102dad7d1069de4e17' }, attrs), hAsync("slot", { key: '0f93b0da3ec4ae8f50f624f9e7bed87d13d712d0' }))));
|
|
35456
35286
|
}
|
|
35457
35287
|
static get style() { return routerLinkCss(); }
|
|
35458
35288
|
static get cmpMeta() { return {
|
|
@@ -35491,10 +35321,11 @@ class RouterOutlet {
|
|
|
35491
35321
|
*/
|
|
35492
35322
|
this.animated = true;
|
|
35493
35323
|
}
|
|
35324
|
+
swipeGestureChanged() {
|
|
35325
|
+
this.updateGestureEnabled();
|
|
35326
|
+
}
|
|
35494
35327
|
swipeHandlerChanged() {
|
|
35495
|
-
|
|
35496
|
-
this.gesture.enable(this.swipeHandler !== undefined);
|
|
35497
|
-
}
|
|
35328
|
+
this.updateGestureEnabled();
|
|
35498
35329
|
}
|
|
35499
35330
|
async connectedCallback() {
|
|
35500
35331
|
const onStart = () => {
|
|
@@ -35534,11 +35365,21 @@ class RouterOutlet {
|
|
|
35534
35365
|
this.gestureOrAnimationInProgress = false;
|
|
35535
35366
|
}
|
|
35536
35367
|
});
|
|
35537
|
-
this.
|
|
35368
|
+
if (this.swipeGesture === undefined) {
|
|
35369
|
+
this.swipeGesture = config.getBoolean('swipeBackEnabled', this.mode === 'ios');
|
|
35370
|
+
}
|
|
35371
|
+
else {
|
|
35372
|
+
this.updateGestureEnabled();
|
|
35373
|
+
}
|
|
35538
35374
|
}
|
|
35539
35375
|
componentWillLoad() {
|
|
35540
35376
|
this.ionNavWillLoad.emit();
|
|
35541
35377
|
}
|
|
35378
|
+
updateGestureEnabled() {
|
|
35379
|
+
if (this.gesture) {
|
|
35380
|
+
this.gesture.enable(this.swipeHandler !== undefined && this.swipeGesture === true);
|
|
35381
|
+
}
|
|
35382
|
+
}
|
|
35542
35383
|
disconnectedCallback() {
|
|
35543
35384
|
if (this.gesture) {
|
|
35544
35385
|
this.gesture.destroy();
|
|
@@ -35649,10 +35490,13 @@ class RouterOutlet {
|
|
|
35649
35490
|
return true;
|
|
35650
35491
|
}
|
|
35651
35492
|
render() {
|
|
35652
|
-
return hAsync("slot", { key: '
|
|
35493
|
+
return hAsync("slot", { key: 'ce09e6fbba7b0a2276cdde5245bb37c9a162c1c7' });
|
|
35653
35494
|
}
|
|
35654
35495
|
get el() { return getElement(this); }
|
|
35655
35496
|
static get watchers() { return {
|
|
35497
|
+
"swipeGesture": [{
|
|
35498
|
+
"swipeGestureChanged": 0
|
|
35499
|
+
}],
|
|
35656
35500
|
"swipeHandler": [{
|
|
35657
35501
|
"swipeHandlerChanged": 0
|
|
35658
35502
|
}]
|
|
@@ -35666,6 +35510,7 @@ class RouterOutlet {
|
|
|
35666
35510
|
"delegate": [16],
|
|
35667
35511
|
"animated": [4],
|
|
35668
35512
|
"animation": [16],
|
|
35513
|
+
"swipeGesture": [1028, "swipe-gesture"],
|
|
35669
35514
|
"swipeHandler": [16],
|
|
35670
35515
|
"commit": [64],
|
|
35671
35516
|
"setRouteId": [64],
|
|
@@ -35684,7 +35529,7 @@ class Row {
|
|
|
35684
35529
|
registerInstance(this, hostRef);
|
|
35685
35530
|
}
|
|
35686
35531
|
render() {
|
|
35687
|
-
return (hAsync(Host, { key: '
|
|
35532
|
+
return (hAsync(Host, { key: 'a9066661fff12baaf3e80b2e8c08591af72fe5b8', class: getIonMode$1(this) }, hAsync("slot", { key: '62b103af46d3a5ec9c146019ae300b68a4ae867a' })));
|
|
35688
35533
|
}
|
|
35689
35534
|
static get style() { return rowCss(); }
|
|
35690
35535
|
static get cmpMeta() { return {
|
|
@@ -35736,7 +35581,7 @@ class Searchbar {
|
|
|
35736
35581
|
/**
|
|
35737
35582
|
* Set the input's autocorrect property.
|
|
35738
35583
|
*/
|
|
35739
|
-
this.autocorrect =
|
|
35584
|
+
this.autocorrect = false;
|
|
35740
35585
|
/**
|
|
35741
35586
|
* Set the cancel button icon. Only applies to `md` mode.
|
|
35742
35587
|
* Defaults to `arrow-back-sharp`.
|
|
@@ -36157,8 +36002,8 @@ class Searchbar {
|
|
|
36157
36002
|
const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
|
|
36158
36003
|
const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
|
|
36159
36004
|
const shouldShowCancelButton = this.shouldShowCancelButton();
|
|
36160
|
-
const cancelButton = this.showCancelButton !== 'never' && (hAsync("button", { key: '
|
|
36161
|
-
return (hAsync(Host, { key: '
|
|
36005
|
+
const cancelButton = this.showCancelButton !== 'never' && (hAsync("button", { key: '73964da43dbd099fc7f3d30cbc4da11087701ac5', "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" }, hAsync("div", { key: '27335a0e35f6c253c074685fa0b088404927bcbb', "aria-hidden": "true" }, mode === 'md' ? (hAsync("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
|
|
36006
|
+
return (hAsync(Host, { key: '1b4f6c4e7dffb02e092f0026ce3875822d98a631', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
|
|
36162
36007
|
[mode]: true,
|
|
36163
36008
|
'searchbar-animated': animated,
|
|
36164
36009
|
'searchbar-disabled': this.disabled,
|
|
@@ -36168,14 +36013,14 @@ class Searchbar {
|
|
|
36168
36013
|
'searchbar-has-focus': this.focused,
|
|
36169
36014
|
'searchbar-should-show-clear': this.shouldShowClearButton(),
|
|
36170
36015
|
'searchbar-should-show-cancel': this.shouldShowCancelButton(),
|
|
36171
|
-
}) }, hAsync("div", { key: '
|
|
36016
|
+
}) }, hAsync("div", { key: '587e1950e329cfb9d3658be5b2a6491e7af9321a', class: "searchbar-input-container" }, hAsync("input", Object.assign({ key: '7f78a3d22cce03af277a538b4d9f85faddf1fa80', "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 ? 'on' : 'off', spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, hAsync("ion-icon", { key: '9fd3e458978b64e9e3358bcbb26471753f6ff2a6', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), hAsync("button", { key: 'c7864c85923668dfa25f5fc4a70c7dbf6da191b7', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
|
|
36172
36017
|
/**
|
|
36173
36018
|
* This prevents mobile browsers from
|
|
36174
36019
|
* blurring the input when the clear
|
|
36175
36020
|
* button is activated.
|
|
36176
36021
|
*/
|
|
36177
36022
|
ev.preventDefault();
|
|
36178
|
-
}, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: '
|
|
36023
|
+
}, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: '47e7a15c6c6d4df4c54c62b042842e499627da05', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
|
|
36179
36024
|
}
|
|
36180
36025
|
get el() { return getElement(this); }
|
|
36181
36026
|
static get watchers() { return {
|
|
@@ -36207,7 +36052,7 @@ class Searchbar {
|
|
|
36207
36052
|
"animated": [4],
|
|
36208
36053
|
"autocapitalize": [1],
|
|
36209
36054
|
"autocomplete": [1],
|
|
36210
|
-
"autocorrect": [
|
|
36055
|
+
"autocorrect": [4],
|
|
36211
36056
|
"cancelButtonIcon": [1, "cancel-button-icon"],
|
|
36212
36057
|
"cancelButtonText": [1, "cancel-button-text"],
|
|
36213
36058
|
"clearIcon": [1, "clear-icon"],
|
|
@@ -36784,14 +36629,14 @@ class Segment {
|
|
|
36784
36629
|
}
|
|
36785
36630
|
render() {
|
|
36786
36631
|
const mode = getIonMode$1(this);
|
|
36787
|
-
return (hAsync(Host, { key: '
|
|
36632
|
+
return (hAsync(Host, { key: 'bb626072e73f09c3433e1a769e09789a00822d8f', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
|
|
36788
36633
|
[mode]: true,
|
|
36789
36634
|
'in-toolbar': hostContext('ion-toolbar', this.el),
|
|
36790
36635
|
'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
|
|
36791
36636
|
'segment-activated': this.activated,
|
|
36792
36637
|
'segment-disabled': this.disabled,
|
|
36793
36638
|
'segment-scrollable': this.scrollable,
|
|
36794
|
-
}) }, hAsync("slot", { key: '
|
|
36639
|
+
}) }, hAsync("slot", { key: '652d5037c2c2dee4d47a5710b1d150e691202d25', onSlotchange: this.onSlottedItemsChange })));
|
|
36795
36640
|
}
|
|
36796
36641
|
get el() { return getElement(this); }
|
|
36797
36642
|
static get watchers() { return {
|
|
@@ -36939,7 +36784,7 @@ class SegmentButton {
|
|
|
36939
36784
|
const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
|
|
36940
36785
|
const mode = getIonMode$1(this);
|
|
36941
36786
|
const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
|
|
36942
|
-
return (hAsync(Host, { key: '
|
|
36787
|
+
return (hAsync(Host, { key: '792f621c36260b1fceff2b4ec4fa95d98d51d46b', class: {
|
|
36943
36788
|
[mode]: true,
|
|
36944
36789
|
'in-toolbar': hostContext('ion-toolbar', this.el),
|
|
36945
36790
|
'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
|
|
@@ -36955,7 +36800,7 @@ class SegmentButton {
|
|
|
36955
36800
|
'ion-activatable': true,
|
|
36956
36801
|
'ion-activatable-instant': true,
|
|
36957
36802
|
'ion-focusable': true,
|
|
36958
|
-
} }, hAsync("button", Object.assign({ key: '
|
|
36803
|
+
} }, hAsync("button", Object.assign({ key: '860698be6ceb8f08c0ce3d16ba82d4bb56adf030', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), hAsync("span", { key: 'e903a2642ff46797878a941887b5c596d52fd3a3', class: "button-inner" }, hAsync("slot", { key: '5fc6b842ecb7f0ab8df23b344bf6714f38dda89a' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '710aaf6e4fa2b6cb15897a883e88dec17ef3829f' })), hAsync("div", { key: 'a7b036cba32420e9eb3f2d16487df0519ecc5289', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, hAsync("div", { key: 'a0a5f49ea7f2ecab8014f4f9ca473a27db8348b6', part: "indicator-background", class: "segment-button-indicator-background" }))));
|
|
36959
36804
|
}
|
|
36960
36805
|
get el() { return getElement(this); }
|
|
36961
36806
|
static get watchers() { return {
|
|
@@ -36992,7 +36837,7 @@ class SegmentContent {
|
|
|
36992
36837
|
registerInstance(this, hostRef);
|
|
36993
36838
|
}
|
|
36994
36839
|
render() {
|
|
36995
|
-
return (hAsync(Host, { key: '
|
|
36840
|
+
return (hAsync(Host, { key: 'ef39f29c444177c3b083cd35680ba891e4bb6a2a' }, hAsync("slot", { key: '51f9dd9ca084ddd928b376aa9d716509669c32b2' })));
|
|
36996
36841
|
}
|
|
36997
36842
|
static get style() { return segmentContentCss(); }
|
|
36998
36843
|
static get cmpMeta() { return {
|
|
@@ -37111,11 +36956,11 @@ class SegmentView {
|
|
|
37111
36956
|
}
|
|
37112
36957
|
render() {
|
|
37113
36958
|
const { disabled, isManualScroll, swipeGesture } = this;
|
|
37114
|
-
return (hAsync(Host, { key: '
|
|
36959
|
+
return (hAsync(Host, { key: 'a6c6ac0232c4bb6f2a954b3de7993019d71f423a', class: {
|
|
37115
36960
|
'segment-view-disabled': disabled,
|
|
37116
36961
|
'segment-view-scroll-disabled': isManualScroll === false,
|
|
37117
36962
|
'segment-view-swipe-disabled': swipeGesture === false,
|
|
37118
|
-
} }, hAsync("slot", { key: '
|
|
36963
|
+
} }, hAsync("slot", { key: '386305be2a75069c79def12005d9f6b49276763f' })));
|
|
37119
36964
|
}
|
|
37120
36965
|
get el() { return getElement(this); }
|
|
37121
36966
|
static get style() { return {
|
|
@@ -37137,9 +36982,9 @@ class SegmentView {
|
|
|
37137
36982
|
}; }
|
|
37138
36983
|
}
|
|
37139
36984
|
|
|
37140
|
-
const selectIosCss = () => `:host{--padding-top:0px;--padding-end:0px;--padding-bottom:0px;--padding-start:0px;--placeholder-color:currentColor;--placeholder-opacity:var(--ion-placeholder-opacity, 0.6);--background:transparent;--border-style:solid;--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--highlight-color:var(--highlight-color-focused);display:block;position:relative;width:100%;min-height:44px;font-family:var(--ion-font-family, inherit);white-space:nowrap;cursor:pointer;z-index:2}:host(.select-label-placement-floating),:host(.select-label-placement-stacked){min-height:56px}:host(.ion-color){--highlight-color-focused:var(--ion-color-base)}:host(.in-item){-ms-flex:1 1 0px;flex:1 1 0}:host(.select-disabled){pointer-events:none}:host(.has-focus) button{border:2px solid #5e9ed6}:host([slot=start]),:host([slot=end]){-ms-flex:initial;flex:initial;width:auto}.select-placeholder{color:var(--placeholder-color);opacity:var(--placeholder-opacity)}button{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}.select-icon{-webkit-margin-start:4px;margin-inline-start:4px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0;position:relative;-ms-flex-negative:0;flex-shrink:0}:host(.in-item-color) .select-icon{color:inherit}:host(.select-label-placement-stacked) .select-icon,:host(.select-label-placement-floating) .select-icon{position:absolute;height:100%}:host(.select-ltr.select-label-placement-stacked) .select-icon,:host(.select-ltr.select-label-placement-floating) .select-icon{right:var(--padding-end, 0)}:host(.select-rtl.select-label-placement-stacked) .select-icon,:host(.select-rtl.select-label-placement-floating) .select-icon{left:var(--padding-start, 0)}.select-text{-ms-flex:1;flex:1;min-width:16px;font-size:inherit;text-overflow:ellipsis;white-space:inherit;overflow:hidden}.select-wrapper{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);border-radius:var(--border-radius);display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;height:inherit;min-height:inherit;-webkit-transition:background-color 15ms linear;transition:background-color 15ms linear;background:var(--background);line-height:normal;cursor:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.select-wrapper .select-placeholder{-webkit-transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.select-wrapper-inner{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;overflow:hidden}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{-ms-flex-positive:1;flex-grow:1}:host(.ion-touched.ion-invalid){--highlight-color:var(--highlight-color-invalid)}:host(.ion-valid){--highlight-color:var(--highlight-color-valid)}.select-bottom{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:5px;padding-bottom:0;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;border-top:var(--border-width) var(--border-style) var(--border-color);font-size:0.75rem;white-space:normal}:host(.has-focus.ion-valid),:host(.select-expanded.ion-valid),:host(.ion-touched.ion-invalid),:host(.select-expanded.ion-touched.ion-invalid){--border-color:var(--highlight-color)}.select-bottom .error-text{display:none;color:var(--highlight-color-invalid)}.select-bottom .helper-text{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}:host(.ion-touched.ion-invalid) .select-bottom .error-text{display:block}:host(.ion-touched.ion-invalid) .select-bottom .helper-text{display:none}.label-text-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;max-width:200px;-webkit-transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);pointer-events:none}.label-text,::slotted([slot=label]){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.label-text-wrapper-hidden,.select-outline-notch-hidden{display:none}.native-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);overflow:hidden}:host(.select-justify-space-between) .select-wrapper{-ms-flex-pack:justify;justify-content:space-between}:host(.select-justify-start) .select-wrapper{-ms-flex-pack:start;justify-content:start}:host(.select-justify-end) .select-wrapper{-ms-flex-pack:end;justify-content:end}:host(.select-label-placement-start) .select-wrapper{-ms-flex-direction:row;flex-direction:row}:host(.select-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-end) .select-wrapper{-ms-flex-direction:row-reverse;flex-direction:row-reverse}:host(.select-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}:host(.select-label-placement-stacked) .select-wrapper,:host(.select-label-placement-floating) .select-wrapper{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:start}:host(.select-label-placement-stacked) .label-text-wrapper,:host(.select-label-placement-floating) .label-text-wrapper{max-width:100%}:host(.select-ltr.select-label-placement-stacked) .label-text-wrapper,:host(.select-ltr.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top}:host(.select-rtl.select-label-placement-stacked) .label-text-wrapper,:host(.select-rtl.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}:host(.select-label-placement-stacked) .native-wrapper,:host(.select-label-placement-floating) .native-wrapper{margin-left:0;margin-right:0;margin-top:1px;margin-bottom:0;-ms-flex-positive:1;flex-grow:1;width:100%}:host(.select-label-placement-floating) .label-text-wrapper{-webkit-transform:translateY(100%) scale(1);transform:translateY(100%) scale(1)}:host(.select-label-placement-floating:not(.label-floating)) .native-wrapper .select-placeholder{opacity:0}:host(.select-expanded.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.has-focus.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.has-value.select-label-placement-floating) .native-wrapper .select-placeholder{opacity:1}:host(.label-floating) .label-text-wrapper{-webkit-transform:translateY(50%) scale(0.75);transform:translateY(50%) scale(0.75);max-width:calc(100% / 0.75)}::slotted([slot=start]),::slotted([slot=end]){-ms-flex-negative:0;flex-shrink:0}::slotted([slot=start]:last-of-type){-webkit-margin-end:16px;margin-inline-end:16px;-webkit-margin-start:0;margin-inline-start:0}::slotted([slot=end]:first-of-type){-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0}:host{--border-width:0.55px;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));--highlight-height:0px}.select-icon{width:1.125rem;height:1.125rem;color:var(--ion-color-step-650, var(--ion-text-color-step-350, #595959))}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{width:calc(100% - 1.125rem - 4px)}:host(.select-disabled){opacity:0.3}::slotted(ion-button[slot=start].button-has-icon-only),::slotted(ion-button[slot=end].button-has-icon-only){--border-radius:50%;--padding-start:0;--padding-end:0;--padding-top:0;--padding-bottom:0;aspect-ratio:1}`;
|
|
36985
|
+
const selectIosCss = () => `:host{--padding-top:0px;--padding-end:0px;--padding-bottom:0px;--padding-start:0px;--placeholder-color:currentColor;--placeholder-opacity:var(--ion-placeholder-opacity, 0.6);--background:transparent;--border-style:solid;--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--select-text-media-height:1.5em;--select-text-media-width:1.5em;--select-text-gap:12px;--highlight-color:var(--highlight-color-focused);display:block;position:relative;width:100%;min-height:44px;font-family:var(--ion-font-family, inherit);white-space:nowrap;cursor:pointer;z-index:2}:host(.select-label-placement-floating),:host(.select-label-placement-stacked){min-height:56px}:host(.ion-color){--highlight-color-focused:var(--ion-color-base)}:host(.in-item){-ms-flex:1 1 0px;flex:1 1 0}:host(.select-disabled){pointer-events:none}:host(.has-focus) button{border:2px solid #5e9ed6}:host([slot=start]),:host([slot=end]){-ms-flex:initial;flex:initial;width:auto}.select-placeholder{color:var(--placeholder-color);opacity:var(--placeholder-opacity)}button{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}.select-icon{-webkit-margin-start:4px;margin-inline-start:4px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0;position:relative;-ms-flex-negative:0;flex-shrink:0}:host(.in-item-color) .select-icon{color:inherit}:host(.select-label-placement-stacked) .select-icon,:host(.select-label-placement-floating) .select-icon{position:absolute;height:100%}:host(.select-ltr.select-label-placement-stacked) .select-icon,:host(.select-ltr.select-label-placement-floating) .select-icon{right:var(--padding-end, 0)}:host(.select-rtl.select-label-placement-stacked) .select-icon,:host(.select-rtl.select-label-placement-floating) .select-icon{left:var(--padding-start, 0)}.select-text{-ms-flex:1;flex:1;min-width:16px;font-size:inherit;text-overflow:ellipsis;white-space:inherit;overflow:hidden}.select-text>*+*{-webkit-margin-start:var(--select-text-gap);margin-inline-start:var(--select-text-gap)}.select-text img,.select-text ion-img,.select-text ion-icon,.select-text ion-thumbnail,.select-text ion-avatar{border-radius:var(--select-text-media-border-radius);width:var(--select-text-media-width);height:var(--select-text-media-height);border-width:var(--select-text-media-border-width);border-style:var(--select-text-media-border-style);border-color:var(--select-text-media-border-color)}.select-wrapper{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);border-radius:var(--border-radius);display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;height:inherit;min-height:inherit;-webkit-transition:background-color 15ms linear;transition:background-color 15ms linear;background:var(--background);line-height:normal;cursor:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.select-wrapper .select-placeholder{-webkit-transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.select-wrapper-inner{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;overflow:hidden}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{-ms-flex-positive:1;flex-grow:1}:host(.ion-touched.ion-invalid){--highlight-color:var(--highlight-color-invalid)}:host(.ion-valid){--highlight-color:var(--highlight-color-valid)}.select-bottom{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:5px;padding-bottom:0;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;border-top:var(--border-width) var(--border-style) var(--border-color);font-size:0.75rem;white-space:normal}:host(.has-focus.ion-valid),:host(.select-expanded.ion-valid),:host(.ion-touched.ion-invalid),:host(.select-expanded.ion-touched.ion-invalid){--border-color:var(--highlight-color)}.select-bottom .error-text{display:none;color:var(--highlight-color-invalid)}.select-bottom .helper-text{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}:host(.ion-touched.ion-invalid) .select-bottom .error-text{display:block}:host(.ion-touched.ion-invalid) .select-bottom .helper-text{display:none}.label-text-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;max-width:200px;-webkit-transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);pointer-events:none}.label-text,::slotted([slot=label]){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.label-text-wrapper-hidden,.select-outline-notch-hidden{display:none}.native-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);overflow:hidden}:host(.select-justify-space-between) .select-wrapper{-ms-flex-pack:justify;justify-content:space-between}:host(.select-justify-start) .select-wrapper{-ms-flex-pack:start;justify-content:start}:host(.select-justify-end) .select-wrapper{-ms-flex-pack:end;justify-content:end}:host(.select-label-placement-start) .select-wrapper{-ms-flex-direction:row;flex-direction:row}:host(.select-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-end) .select-wrapper{-ms-flex-direction:row-reverse;flex-direction:row-reverse}:host(.select-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}:host(.select-label-placement-stacked) .select-wrapper,:host(.select-label-placement-floating) .select-wrapper{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:start}:host(.select-label-placement-stacked) .label-text-wrapper,:host(.select-label-placement-floating) .label-text-wrapper{max-width:100%}:host(.select-ltr.select-label-placement-stacked) .label-text-wrapper,:host(.select-ltr.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top}:host(.select-rtl.select-label-placement-stacked) .label-text-wrapper,:host(.select-rtl.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}:host(.select-label-placement-stacked) .native-wrapper,:host(.select-label-placement-floating) .native-wrapper{margin-left:0;margin-right:0;margin-top:1px;margin-bottom:0;-ms-flex-positive:1;flex-grow:1;width:100%}:host(.select-label-placement-floating) .label-text-wrapper{-webkit-transform:translateY(100%) scale(1);transform:translateY(100%) scale(1)}:host(.select-label-placement-floating:not(.label-floating)) .native-wrapper .select-placeholder{opacity:0}:host(.select-expanded.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.has-focus.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.has-value.select-label-placement-floating) .native-wrapper .select-placeholder{opacity:1}:host(.label-floating) .label-text-wrapper{-webkit-transform:translateY(50%) scale(0.75);transform:translateY(50%) scale(0.75);max-width:calc(100% / 0.75)}::slotted([slot=start]),::slotted([slot=end]){-ms-flex-negative:0;flex-shrink:0}::slotted([slot=start]:last-of-type){-webkit-margin-end:16px;margin-inline-end:16px;-webkit-margin-start:0;margin-inline-start:0}::slotted([slot=end]:first-of-type){-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0}:host{--border-width:0.55px;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));--highlight-height:0px}.select-icon{width:1.125rem;height:1.125rem;color:var(--ion-color-step-650, var(--ion-text-color-step-350, #595959))}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{width:calc(100% - 1.125rem - 4px)}:host(.select-disabled){opacity:0.3}::slotted(ion-button[slot=start].button-has-icon-only),::slotted(ion-button[slot=end].button-has-icon-only){--border-radius:50%;--padding-start:0;--padding-end:0;--padding-top:0;--padding-bottom:0;aspect-ratio:1}`;
|
|
37141
36986
|
|
|
37142
|
-
const selectMdCss = () => `:host{--padding-top:0px;--padding-end:0px;--padding-bottom:0px;--padding-start:0px;--placeholder-color:currentColor;--placeholder-opacity:var(--ion-placeholder-opacity, 0.6);--background:transparent;--border-style:solid;--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--highlight-color:var(--highlight-color-focused);display:block;position:relative;width:100%;min-height:44px;font-family:var(--ion-font-family, inherit);white-space:nowrap;cursor:pointer;z-index:2}:host(.select-label-placement-floating),:host(.select-label-placement-stacked){min-height:56px}:host(.ion-color){--highlight-color-focused:var(--ion-color-base)}:host(.in-item){-ms-flex:1 1 0px;flex:1 1 0}:host(.select-disabled){pointer-events:none}:host(.has-focus) button{border:2px solid #5e9ed6}:host([slot=start]),:host([slot=end]){-ms-flex:initial;flex:initial;width:auto}.select-placeholder{color:var(--placeholder-color);opacity:var(--placeholder-opacity)}button{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}.select-icon{-webkit-margin-start:4px;margin-inline-start:4px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0;position:relative;-ms-flex-negative:0;flex-shrink:0}:host(.in-item-color) .select-icon{color:inherit}:host(.select-label-placement-stacked) .select-icon,:host(.select-label-placement-floating) .select-icon{position:absolute;height:100%}:host(.select-ltr.select-label-placement-stacked) .select-icon,:host(.select-ltr.select-label-placement-floating) .select-icon{right:var(--padding-end, 0)}:host(.select-rtl.select-label-placement-stacked) .select-icon,:host(.select-rtl.select-label-placement-floating) .select-icon{left:var(--padding-start, 0)}.select-text{-ms-flex:1;flex:1;min-width:16px;font-size:inherit;text-overflow:ellipsis;white-space:inherit;overflow:hidden}.select-wrapper{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);border-radius:var(--border-radius);display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;height:inherit;min-height:inherit;-webkit-transition:background-color 15ms linear;transition:background-color 15ms linear;background:var(--background);line-height:normal;cursor:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.select-wrapper .select-placeholder{-webkit-transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.select-wrapper-inner{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;overflow:hidden}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{-ms-flex-positive:1;flex-grow:1}:host(.ion-touched.ion-invalid){--highlight-color:var(--highlight-color-invalid)}:host(.ion-valid){--highlight-color:var(--highlight-color-valid)}.select-bottom{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:5px;padding-bottom:0;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;border-top:var(--border-width) var(--border-style) var(--border-color);font-size:0.75rem;white-space:normal}:host(.has-focus.ion-valid),:host(.select-expanded.ion-valid),:host(.ion-touched.ion-invalid),:host(.select-expanded.ion-touched.ion-invalid){--border-color:var(--highlight-color)}.select-bottom .error-text{display:none;color:var(--highlight-color-invalid)}.select-bottom .helper-text{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}:host(.ion-touched.ion-invalid) .select-bottom .error-text{display:block}:host(.ion-touched.ion-invalid) .select-bottom .helper-text{display:none}.label-text-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;max-width:200px;-webkit-transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);pointer-events:none}.label-text,::slotted([slot=label]){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.label-text-wrapper-hidden,.select-outline-notch-hidden{display:none}.native-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);overflow:hidden}:host(.select-justify-space-between) .select-wrapper{-ms-flex-pack:justify;justify-content:space-between}:host(.select-justify-start) .select-wrapper{-ms-flex-pack:start;justify-content:start}:host(.select-justify-end) .select-wrapper{-ms-flex-pack:end;justify-content:end}:host(.select-label-placement-start) .select-wrapper{-ms-flex-direction:row;flex-direction:row}:host(.select-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-end) .select-wrapper{-ms-flex-direction:row-reverse;flex-direction:row-reverse}:host(.select-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}:host(.select-label-placement-stacked) .select-wrapper,:host(.select-label-placement-floating) .select-wrapper{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:start}:host(.select-label-placement-stacked) .label-text-wrapper,:host(.select-label-placement-floating) .label-text-wrapper{max-width:100%}:host(.select-ltr.select-label-placement-stacked) .label-text-wrapper,:host(.select-ltr.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top}:host(.select-rtl.select-label-placement-stacked) .label-text-wrapper,:host(.select-rtl.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}:host(.select-label-placement-stacked) .native-wrapper,:host(.select-label-placement-floating) .native-wrapper{margin-left:0;margin-right:0;margin-top:1px;margin-bottom:0;-ms-flex-positive:1;flex-grow:1;width:100%}:host(.select-label-placement-floating) .label-text-wrapper{-webkit-transform:translateY(100%) scale(1);transform:translateY(100%) scale(1)}:host(.select-label-placement-floating:not(.label-floating)) .native-wrapper .select-placeholder{opacity:0}:host(.select-expanded.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.has-focus.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.has-value.select-label-placement-floating) .native-wrapper .select-placeholder{opacity:1}:host(.label-floating) .label-text-wrapper{-webkit-transform:translateY(50%) scale(0.75);transform:translateY(50%) scale(0.75);max-width:calc(100% / 0.75)}::slotted([slot=start]),::slotted([slot=end]){-ms-flex-negative:0;flex-shrink:0}::slotted([slot=start]:last-of-type){-webkit-margin-end:16px;margin-inline-end:16px;-webkit-margin-start:0;margin-inline-start:0}::slotted([slot=end]:first-of-type){-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0}:host(.select-fill-solid){--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--border-color:var(--ion-color-step-500, var(--ion-background-color-step-500, gray));--border-radius:4px;--padding-start:16px;--padding-end:16px;min-height:56px}:host(.select-fill-solid) .select-wrapper{border-bottom:var(--border-width) var(--border-style) var(--border-color)}:host(.select-expanded.select-fill-solid.ion-valid),:host(.has-focus.select-fill-solid.ion-valid),:host(.select-fill-solid.ion-touched.ion-invalid){--border-color:var(--highlight-color)}:host(.select-fill-solid) .select-bottom{border-top:none}@media (any-hover: hover){:host(.select-fill-solid:hover){--background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));--border-color:var(--ion-color-step-750, var(--ion-background-color-step-750, #404040))}}:host(.select-fill-solid.select-expanded),:host(.select-fill-solid.has-focus){--background:var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));--border-color:var(--highlight-color)}:host(.select-fill-solid) .select-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0px;border-end-start-radius:0px}:host(.label-floating.select-fill-solid) .label-text-wrapper{max-width:calc(100% / 0.75)}:host(.in-item.select-expanded.select-fill-solid) .select-wrapper .select-icon,:host(.in-item.has-focus.select-fill-solid) .select-wrapper .select-icon,:host(.in-item.has-focus.ion-valid.select-fill-solid) .select-wrapper .select-icon,:host(.in-item.ion-touched.ion-invalid.select-fill-solid) .select-wrapper .select-icon{color:var(--highlight-color)}:host(.select-fill-outline){--border-color:var(--ion-color-step-300, var(--ion-background-color-step-300, #b3b3b3));--border-radius:4px;--padding-start:16px;--padding-end:16px;min-height:56px}:host(.select-fill-outline.select-shape-round){--border-radius:28px;--padding-start:32px;--padding-end:32px}:host(.has-focus.select-fill-outline.ion-valid),:host(.select-fill-outline.ion-touched.ion-invalid){--border-color:var(--highlight-color)}@media (any-hover: hover){:host(.select-fill-outline:hover){--border-color:var(--ion-color-step-750, var(--ion-background-color-step-750, #404040))}}:host(.select-fill-outline.select-expanded),:host(.select-fill-outline.has-focus){--border-width:var(--highlight-height);--border-color:var(--highlight-color)}:host(.select-fill-outline) .select-bottom{border-top:none}:host(.select-fill-outline) .select-wrapper{border-bottom:none}:host(.select-ltr.select-fill-outline.select-label-placement-stacked) .label-text-wrapper,:host(.select-ltr.select-fill-outline.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top}:host(.select-rtl.select-fill-outline.select-label-placement-stacked) .label-text-wrapper,:host(.select-rtl.select-fill-outline.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}:host(.select-fill-outline.select-label-placement-stacked) .label-text-wrapper,:host(.select-fill-outline.select-label-placement-floating) .label-text-wrapper{position:absolute;max-width:calc(100% - var(--padding-start) - var(--padding-end))}:host(.select-fill-outline) .label-text-wrapper{position:relative;z-index:1}:host(.label-floating.select-fill-outline) .label-text-wrapper{-webkit-transform:translateY(-32%) scale(0.75);transform:translateY(-32%) scale(0.75);margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;max-width:calc((100% - var(--padding-start) - var(--padding-end) - 8px) / 0.75)}:host(.select-fill-outline.select-label-placement-stacked) select,:host(.select-fill-outline.select-label-placement-floating) select{margin-left:0;margin-right:0;margin-top:6px;margin-bottom:6px}:host(.select-fill-outline) .select-outline-container{left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;width:100%;height:100%}:host(.select-fill-outline) .select-outline-start,:host(.select-fill-outline) .select-outline-end{pointer-events:none}:host(.select-fill-outline) .select-outline-start,:host(.select-fill-outline) .select-outline-notch,:host(.select-fill-outline) .select-outline-end{border-top:var(--border-width) var(--border-style) var(--border-color);border-bottom:var(--border-width) var(--border-style) var(--border-color);-webkit-box-sizing:border-box;box-sizing:border-box}:host(.select-fill-outline) .select-outline-notch{max-width:calc(100% - var(--padding-start) - var(--padding-end))}:host(.select-fill-outline) .notch-spacer{-webkit-padding-end:8px;padding-inline-end:8px;font-size:calc(1em * 0.75);opacity:0;pointer-events:none}:host(.select-fill-outline) .select-outline-start{-webkit-border-start:var(--border-width) var(--border-style) var(--border-color);border-inline-start:var(--border-width) var(--border-style) var(--border-color)}:host(.select-fill-outline) .select-outline-start{border-start-start-radius:var(--border-radius);border-start-end-radius:0px;border-end-end-radius:0px;border-end-start-radius:var(--border-radius)}:host(.select-fill-outline) .select-outline-start{width:calc(var(--padding-start) - 4px)}:host(.select-fill-outline) .select-outline-end{-webkit-border-end:var(--border-width) var(--border-style) var(--border-color);border-inline-end:var(--border-width) var(--border-style) var(--border-color)}:host(.select-fill-outline) .select-outline-end{border-start-start-radius:0px;border-start-end-radius:var(--border-radius);border-end-end-radius:var(--border-radius);border-end-start-radius:0px}:host(.select-fill-outline) .select-outline-end{-ms-flex-positive:1;flex-grow:1}:host(.label-floating.select-fill-outline) .select-outline-notch{border-top:none}:host(.in-item.select-expanded.select-fill-outline) .select-wrapper .select-icon,:host(.in-item.has-focus.select-fill-outline) .select-wrapper .select-icon,:host(.in-item.has-focus.ion-valid.select-fill-outline) .select-wrapper .select-icon,:host(.in-item.ion-touched.ion-invalid.select-fill-outline) .select-wrapper .select-icon{color:var(--highlight-color)}:host{--border-width:1px;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.13)))));--highlight-height:2px}:host(.select-label-placement-floating.select-expanded) .label-text-wrapper,:host(.select-label-placement-floating.has-focus) .label-text-wrapper,:host(.select-label-placement-stacked.select-expanded) .label-text-wrapper,:host(.select-label-placement-stacked.has-focus) .label-text-wrapper{color:var(--highlight-color)}:host(.has-focus.select-label-placement-floating.ion-valid) .label-text-wrapper,:host(.select-label-placement-floating.ion-touched.ion-invalid) .label-text-wrapper,:host(.has-focus.select-label-placement-stacked.ion-valid) .label-text-wrapper,:host(.select-label-placement-stacked.ion-touched.ion-invalid) .label-text-wrapper{color:var(--highlight-color)}.select-highlight{bottom:-1px;position:absolute;width:100%;height:var(--highlight-height);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:-webkit-transform 200ms;transition:-webkit-transform 200ms;transition:transform 200ms;transition:transform 200ms, -webkit-transform 200ms;background:var(--highlight-color)}.select-highlight{inset-inline-start:0}:host(.select-expanded) .select-highlight,:host(.has-focus) .select-highlight{-webkit-transform:scale(1);transform:scale(1)}:host(.in-item) .select-highlight{bottom:0}:host(.in-item) .select-highlight{inset-inline-start:0}.select-icon{width:0.8125rem;-webkit-transition:-webkit-transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);transition:-webkit-transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);transition:transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);transition:transform 0.15s cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);color:var(--ion-color-step-500, var(--ion-text-color-step-500, gray))}:host(.select-expanded:not(.has-expanded-icon)) .select-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}:host(.in-item.select-expanded) .select-wrapper .select-icon,:host(.in-item.has-focus) .select-wrapper .select-icon,:host(.in-item.has-focus.ion-valid) .select-wrapper .select-icon,:host(.in-item.ion-touched.ion-invalid) .select-wrapper .select-icon{color:var(--ion-color-step-500, var(--ion-text-color-step-500, gray))}:host(.select-expanded) .select-wrapper .select-icon,:host(.has-focus.ion-valid) .select-wrapper .select-icon,:host(.ion-touched.ion-invalid) .select-wrapper .select-icon,:host(.has-focus) .select-wrapper .select-icon{color:var(--highlight-color)}:host(.select-shape-round){--border-radius:16px}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{width:calc(100% - 0.8125rem - 4px)}:host(.select-disabled){opacity:0.38}::slotted(ion-button[slot=start].button-has-icon-only),::slotted(ion-button[slot=end].button-has-icon-only){--border-radius:50%;--padding-start:8px;--padding-end:8px;--padding-top:8px;--padding-bottom:8px;aspect-ratio:1;min-height:40px}`;
|
|
36987
|
+
const selectMdCss = () => `:host{--padding-top:0px;--padding-end:0px;--padding-bottom:0px;--padding-start:0px;--placeholder-color:currentColor;--placeholder-opacity:var(--ion-placeholder-opacity, 0.6);--background:transparent;--border-style:solid;--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--select-text-media-height:1.5em;--select-text-media-width:1.5em;--select-text-gap:12px;--highlight-color:var(--highlight-color-focused);display:block;position:relative;width:100%;min-height:44px;font-family:var(--ion-font-family, inherit);white-space:nowrap;cursor:pointer;z-index:2}:host(.select-label-placement-floating),:host(.select-label-placement-stacked){min-height:56px}:host(.ion-color){--highlight-color-focused:var(--ion-color-base)}:host(.in-item){-ms-flex:1 1 0px;flex:1 1 0}:host(.select-disabled){pointer-events:none}:host(.has-focus) button{border:2px solid #5e9ed6}:host([slot=start]),:host([slot=end]){-ms-flex:initial;flex:initial;width:auto}.select-placeholder{color:var(--placeholder-color);opacity:var(--placeholder-opacity)}button{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}.select-icon{-webkit-margin-start:4px;margin-inline-start:4px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0;position:relative;-ms-flex-negative:0;flex-shrink:0}:host(.in-item-color) .select-icon{color:inherit}:host(.select-label-placement-stacked) .select-icon,:host(.select-label-placement-floating) .select-icon{position:absolute;height:100%}:host(.select-ltr.select-label-placement-stacked) .select-icon,:host(.select-ltr.select-label-placement-floating) .select-icon{right:var(--padding-end, 0)}:host(.select-rtl.select-label-placement-stacked) .select-icon,:host(.select-rtl.select-label-placement-floating) .select-icon{left:var(--padding-start, 0)}.select-text{-ms-flex:1;flex:1;min-width:16px;font-size:inherit;text-overflow:ellipsis;white-space:inherit;overflow:hidden}.select-text>*+*{-webkit-margin-start:var(--select-text-gap);margin-inline-start:var(--select-text-gap)}.select-text img,.select-text ion-img,.select-text ion-icon,.select-text ion-thumbnail,.select-text ion-avatar{border-radius:var(--select-text-media-border-radius);width:var(--select-text-media-width);height:var(--select-text-media-height);border-width:var(--select-text-media-border-width);border-style:var(--select-text-media-border-style);border-color:var(--select-text-media-border-color)}.select-wrapper{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);border-radius:var(--border-radius);display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;height:inherit;min-height:inherit;-webkit-transition:background-color 15ms linear;transition:background-color 15ms linear;background:var(--background);line-height:normal;cursor:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.select-wrapper .select-placeholder{-webkit-transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.select-wrapper-inner{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;overflow:hidden}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{-ms-flex-positive:1;flex-grow:1}:host(.ion-touched.ion-invalid){--highlight-color:var(--highlight-color-invalid)}:host(.ion-valid){--highlight-color:var(--highlight-color-valid)}.select-bottom{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:5px;padding-bottom:0;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;border-top:var(--border-width) var(--border-style) var(--border-color);font-size:0.75rem;white-space:normal}:host(.has-focus.ion-valid),:host(.select-expanded.ion-valid),:host(.ion-touched.ion-invalid),:host(.select-expanded.ion-touched.ion-invalid){--border-color:var(--highlight-color)}.select-bottom .error-text{display:none;color:var(--highlight-color-invalid)}.select-bottom .helper-text{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}:host(.ion-touched.ion-invalid) .select-bottom .error-text{display:block}:host(.ion-touched.ion-invalid) .select-bottom .helper-text{display:none}.label-text-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;max-width:200px;-webkit-transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);pointer-events:none}.label-text,::slotted([slot=label]){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.label-text-wrapper-hidden,.select-outline-notch-hidden{display:none}.native-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);overflow:hidden}:host(.select-justify-space-between) .select-wrapper{-ms-flex-pack:justify;justify-content:space-between}:host(.select-justify-start) .select-wrapper{-ms-flex-pack:start;justify-content:start}:host(.select-justify-end) .select-wrapper{-ms-flex-pack:end;justify-content:end}:host(.select-label-placement-start) .select-wrapper{-ms-flex-direction:row;flex-direction:row}:host(.select-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-end) .select-wrapper{-ms-flex-direction:row-reverse;flex-direction:row-reverse}:host(.select-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}:host(.select-label-placement-stacked) .select-wrapper,:host(.select-label-placement-floating) .select-wrapper{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:start}:host(.select-label-placement-stacked) .label-text-wrapper,:host(.select-label-placement-floating) .label-text-wrapper{max-width:100%}:host(.select-ltr.select-label-placement-stacked) .label-text-wrapper,:host(.select-ltr.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top}:host(.select-rtl.select-label-placement-stacked) .label-text-wrapper,:host(.select-rtl.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}:host(.select-label-placement-stacked) .native-wrapper,:host(.select-label-placement-floating) .native-wrapper{margin-left:0;margin-right:0;margin-top:1px;margin-bottom:0;-ms-flex-positive:1;flex-grow:1;width:100%}:host(.select-label-placement-floating) .label-text-wrapper{-webkit-transform:translateY(100%) scale(1);transform:translateY(100%) scale(1)}:host(.select-label-placement-floating:not(.label-floating)) .native-wrapper .select-placeholder{opacity:0}:host(.select-expanded.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.has-focus.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.has-value.select-label-placement-floating) .native-wrapper .select-placeholder{opacity:1}:host(.label-floating) .label-text-wrapper{-webkit-transform:translateY(50%) scale(0.75);transform:translateY(50%) scale(0.75);max-width:calc(100% / 0.75)}::slotted([slot=start]),::slotted([slot=end]){-ms-flex-negative:0;flex-shrink:0}::slotted([slot=start]:last-of-type){-webkit-margin-end:16px;margin-inline-end:16px;-webkit-margin-start:0;margin-inline-start:0}::slotted([slot=end]:first-of-type){-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0}:host(.select-fill-solid){--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--border-color:var(--ion-color-step-500, var(--ion-background-color-step-500, gray));--border-radius:4px;--padding-start:16px;--padding-end:16px;min-height:56px}:host(.select-fill-solid) .select-wrapper{border-bottom:var(--border-width) var(--border-style) var(--border-color)}:host(.select-expanded.select-fill-solid.ion-valid),:host(.has-focus.select-fill-solid.ion-valid),:host(.select-fill-solid.ion-touched.ion-invalid){--border-color:var(--highlight-color)}:host(.select-fill-solid) .select-bottom{border-top:none}@media (any-hover: hover){:host(.select-fill-solid:hover){--background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));--border-color:var(--ion-color-step-750, var(--ion-background-color-step-750, #404040))}}:host(.select-fill-solid.select-expanded),:host(.select-fill-solid.has-focus){--background:var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));--border-color:var(--highlight-color)}:host(.select-fill-solid) .select-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0px;border-end-start-radius:0px}:host(.label-floating.select-fill-solid) .label-text-wrapper{max-width:calc(100% / 0.75)}:host(.in-item.select-expanded.select-fill-solid) .select-wrapper .select-icon,:host(.in-item.has-focus.select-fill-solid) .select-wrapper .select-icon,:host(.in-item.has-focus.ion-valid.select-fill-solid) .select-wrapper .select-icon,:host(.in-item.ion-touched.ion-invalid.select-fill-solid) .select-wrapper .select-icon{color:var(--highlight-color)}:host(.select-fill-outline){--border-color:var(--ion-color-step-300, var(--ion-background-color-step-300, #b3b3b3));--border-radius:4px;--padding-start:16px;--padding-end:16px;min-height:56px}:host(.select-fill-outline.select-shape-round){--border-radius:28px;--padding-start:32px;--padding-end:32px}:host(.has-focus.select-fill-outline.ion-valid),:host(.select-fill-outline.ion-touched.ion-invalid){--border-color:var(--highlight-color)}@media (any-hover: hover){:host(.select-fill-outline:hover){--border-color:var(--ion-color-step-750, var(--ion-background-color-step-750, #404040))}}:host(.select-fill-outline.select-expanded),:host(.select-fill-outline.has-focus){--border-width:var(--highlight-height);--border-color:var(--highlight-color)}:host(.select-fill-outline) .select-bottom{border-top:none}:host(.select-fill-outline) .select-wrapper{border-bottom:none}:host(.select-ltr.select-fill-outline.select-label-placement-stacked) .label-text-wrapper,:host(.select-ltr.select-fill-outline.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top}:host(.select-rtl.select-fill-outline.select-label-placement-stacked) .label-text-wrapper,:host(.select-rtl.select-fill-outline.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}:host(.select-fill-outline.select-label-placement-stacked) .label-text-wrapper,:host(.select-fill-outline.select-label-placement-floating) .label-text-wrapper{position:absolute;max-width:calc(100% - var(--padding-start) - var(--padding-end))}:host(.select-fill-outline) .label-text-wrapper{position:relative;z-index:1}:host(.label-floating.select-fill-outline) .label-text-wrapper{-webkit-transform:translateY(-32%) scale(0.75);transform:translateY(-32%) scale(0.75);margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;max-width:calc((100% - var(--padding-start) - var(--padding-end) - 8px) / 0.75)}:host(.select-fill-outline.select-label-placement-stacked) select,:host(.select-fill-outline.select-label-placement-floating) select{margin-left:0;margin-right:0;margin-top:6px;margin-bottom:6px}:host(.select-fill-outline) .select-outline-container{left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;width:100%;height:100%}:host(.select-fill-outline) .select-outline-start,:host(.select-fill-outline) .select-outline-end{pointer-events:none}:host(.select-fill-outline) .select-outline-start,:host(.select-fill-outline) .select-outline-notch,:host(.select-fill-outline) .select-outline-end{border-top:var(--border-width) var(--border-style) var(--border-color);border-bottom:var(--border-width) var(--border-style) var(--border-color);-webkit-box-sizing:border-box;box-sizing:border-box}:host(.select-fill-outline) .select-outline-notch{max-width:calc(100% - var(--padding-start) - var(--padding-end))}:host(.select-fill-outline) .notch-spacer{-webkit-padding-end:8px;padding-inline-end:8px;font-size:calc(1em * 0.75);opacity:0;pointer-events:none}:host(.select-fill-outline) .select-outline-start{-webkit-border-start:var(--border-width) var(--border-style) var(--border-color);border-inline-start:var(--border-width) var(--border-style) var(--border-color)}:host(.select-fill-outline) .select-outline-start{border-start-start-radius:var(--border-radius);border-start-end-radius:0px;border-end-end-radius:0px;border-end-start-radius:var(--border-radius)}:host(.select-fill-outline) .select-outline-start{width:calc(var(--padding-start) - 4px)}:host(.select-fill-outline) .select-outline-end{-webkit-border-end:var(--border-width) var(--border-style) var(--border-color);border-inline-end:var(--border-width) var(--border-style) var(--border-color)}:host(.select-fill-outline) .select-outline-end{border-start-start-radius:0px;border-start-end-radius:var(--border-radius);border-end-end-radius:var(--border-radius);border-end-start-radius:0px}:host(.select-fill-outline) .select-outline-end{-ms-flex-positive:1;flex-grow:1}:host(.label-floating.select-fill-outline) .select-outline-notch{border-top:none}:host(.in-item.select-expanded.select-fill-outline) .select-wrapper .select-icon,:host(.in-item.has-focus.select-fill-outline) .select-wrapper .select-icon,:host(.in-item.has-focus.ion-valid.select-fill-outline) .select-wrapper .select-icon,:host(.in-item.ion-touched.ion-invalid.select-fill-outline) .select-wrapper .select-icon{color:var(--highlight-color)}:host{--border-width:1px;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.13)))));--highlight-height:2px}:host(.select-label-placement-floating.select-expanded) .label-text-wrapper,:host(.select-label-placement-floating.has-focus) .label-text-wrapper,:host(.select-label-placement-stacked.select-expanded) .label-text-wrapper,:host(.select-label-placement-stacked.has-focus) .label-text-wrapper{color:var(--highlight-color)}:host(.has-focus.select-label-placement-floating.ion-valid) .label-text-wrapper,:host(.select-label-placement-floating.ion-touched.ion-invalid) .label-text-wrapper,:host(.has-focus.select-label-placement-stacked.ion-valid) .label-text-wrapper,:host(.select-label-placement-stacked.ion-touched.ion-invalid) .label-text-wrapper{color:var(--highlight-color)}.select-highlight{bottom:-1px;position:absolute;width:100%;height:var(--highlight-height);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:-webkit-transform 200ms;transition:-webkit-transform 200ms;transition:transform 200ms;transition:transform 200ms, -webkit-transform 200ms;background:var(--highlight-color)}.select-highlight{inset-inline-start:0}:host(.select-expanded) .select-highlight,:host(.has-focus) .select-highlight{-webkit-transform:scale(1);transform:scale(1)}:host(.in-item) .select-highlight{bottom:0}:host(.in-item) .select-highlight{inset-inline-start:0}.select-icon{width:0.8125rem;-webkit-transition:-webkit-transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);transition:-webkit-transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);transition:transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);transition:transform 0.15s cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);color:var(--ion-color-step-500, var(--ion-text-color-step-500, gray))}:host(.select-expanded:not(.has-expanded-icon)) .select-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}:host(.in-item.select-expanded) .select-wrapper .select-icon,:host(.in-item.has-focus) .select-wrapper .select-icon,:host(.in-item.has-focus.ion-valid) .select-wrapper .select-icon,:host(.in-item.ion-touched.ion-invalid) .select-wrapper .select-icon{color:var(--ion-color-step-500, var(--ion-text-color-step-500, gray))}:host(.select-expanded) .select-wrapper .select-icon,:host(.has-focus.ion-valid) .select-wrapper .select-icon,:host(.ion-touched.ion-invalid) .select-wrapper .select-icon,:host(.has-focus) .select-wrapper .select-icon{color:var(--highlight-color)}:host(.select-shape-round){--border-radius:16px}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{width:calc(100% - 0.8125rem - 4px)}:host(.select-disabled){opacity:0.38}::slotted(ion-button[slot=start].button-has-icon-only),::slotted(ion-button[slot=end].button-has-icon-only){--border-radius:50%;--padding-start:8px;--padding-end:8px;--padding-top:8px;--padding-bottom:8px;aspect-ratio:1;min-height:40px}`;
|
|
37143
36988
|
|
|
37144
36989
|
// TODO(FW-2832): types
|
|
37145
36990
|
/**
|
|
@@ -37174,6 +37019,7 @@ class Select {
|
|
|
37174
37019
|
this.helperTextId = `${this.inputId}-helper-text`;
|
|
37175
37020
|
this.errorTextId = `${this.inputId}-error-text`;
|
|
37176
37021
|
this.inheritedAttributes = {};
|
|
37022
|
+
this.customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
|
|
37177
37023
|
this.isExpanded = false;
|
|
37178
37024
|
/**
|
|
37179
37025
|
* The `hasFocus` state ensures the focus class is
|
|
@@ -37299,9 +37145,40 @@ class Select {
|
|
|
37299
37145
|
this.emitStyle();
|
|
37300
37146
|
}
|
|
37301
37147
|
setValue(value) {
|
|
37148
|
+
if (this.isValueEqual(this.value, value)) {
|
|
37149
|
+
return;
|
|
37150
|
+
}
|
|
37302
37151
|
this.value = value;
|
|
37303
37152
|
this.ionChange.emit({ value });
|
|
37304
37153
|
}
|
|
37154
|
+
isValueEqual(currentValue, newValue) {
|
|
37155
|
+
if (this.multiple) {
|
|
37156
|
+
const currentArr = Array.isArray(currentValue) ? currentValue : [];
|
|
37157
|
+
const newArr = Array.isArray(newValue) ? newValue : [];
|
|
37158
|
+
if (currentArr.length !== newArr.length) {
|
|
37159
|
+
return false;
|
|
37160
|
+
}
|
|
37161
|
+
// Multiset compare: each new value must match a distinct current value.
|
|
37162
|
+
// A plain `every(isOptionSelected)` would accept ['a','a'] as equal to
|
|
37163
|
+
// ['a','b'] when both 'a' and 'b' map to options whose values overlap.
|
|
37164
|
+
const remaining = currentArr.slice();
|
|
37165
|
+
return newArr.every((val) => {
|
|
37166
|
+
const idx = remaining.findIndex((c) => compareOptions(c, val, this.compareWith));
|
|
37167
|
+
if (idx === -1) {
|
|
37168
|
+
return false;
|
|
37169
|
+
}
|
|
37170
|
+
remaining.splice(idx, 1);
|
|
37171
|
+
return true;
|
|
37172
|
+
});
|
|
37173
|
+
}
|
|
37174
|
+
if (currentValue == null && newValue == null) {
|
|
37175
|
+
return true;
|
|
37176
|
+
}
|
|
37177
|
+
if (currentValue == null || newValue == null) {
|
|
37178
|
+
return false;
|
|
37179
|
+
}
|
|
37180
|
+
return compareOptions(currentValue, newValue, this.compareWith);
|
|
37181
|
+
}
|
|
37305
37182
|
async connectedCallback() {
|
|
37306
37183
|
const { el } = this;
|
|
37307
37184
|
this.notchController = createNotchController(el, () => this.notchSpacerEl, () => this.labelSlot);
|
|
@@ -37495,10 +37372,11 @@ class Select {
|
|
|
37495
37372
|
.join(' ');
|
|
37496
37373
|
const optClass = `${OPTION_CLASS} ${copyClasses}`;
|
|
37497
37374
|
const isSelected = isOptionSelected(selectValue, value, this.compareWith);
|
|
37375
|
+
const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
|
|
37498
37376
|
return {
|
|
37499
|
-
|
|
37500
|
-
text: option.textContent,
|
|
37377
|
+
text: content !== null && content !== void 0 ? content : '',
|
|
37501
37378
|
cssClass: optClass,
|
|
37379
|
+
disabled: option.disabled,
|
|
37502
37380
|
handler: () => {
|
|
37503
37381
|
this.setValue(value);
|
|
37504
37382
|
},
|
|
@@ -37506,6 +37384,9 @@ class Select {
|
|
|
37506
37384
|
'aria-checked': isSelected ? 'true' : 'false',
|
|
37507
37385
|
role: 'radio',
|
|
37508
37386
|
},
|
|
37387
|
+
startContent,
|
|
37388
|
+
endContent,
|
|
37389
|
+
description: option.description,
|
|
37509
37390
|
};
|
|
37510
37391
|
});
|
|
37511
37392
|
// Add "cancel" button
|
|
@@ -37526,13 +37407,19 @@ class Select {
|
|
|
37526
37407
|
.filter((cls) => cls !== 'hydrated')
|
|
37527
37408
|
.join(' ');
|
|
37528
37409
|
const optClass = `${OPTION_CLASS} ${copyClasses}`;
|
|
37410
|
+
const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
|
|
37529
37411
|
return {
|
|
37530
37412
|
type: inputType,
|
|
37531
37413
|
cssClass: optClass,
|
|
37532
|
-
label:
|
|
37414
|
+
label: content !== null && content !== void 0 ? content : '',
|
|
37533
37415
|
value,
|
|
37534
37416
|
checked: isOptionSelected(selectValue, value, this.compareWith),
|
|
37535
37417
|
disabled: option.disabled,
|
|
37418
|
+
startContent,
|
|
37419
|
+
endContent,
|
|
37420
|
+
description: option.description,
|
|
37421
|
+
labelPlacement: option.labelPlacement,
|
|
37422
|
+
justify: option.justify,
|
|
37536
37423
|
};
|
|
37537
37424
|
});
|
|
37538
37425
|
return alertInputs;
|
|
@@ -37545,8 +37432,9 @@ class Select {
|
|
|
37545
37432
|
.filter((cls) => cls !== 'hydrated')
|
|
37546
37433
|
.join(' ');
|
|
37547
37434
|
const optClass = `${OPTION_CLASS} ${copyClasses}`;
|
|
37435
|
+
const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
|
|
37548
37436
|
return {
|
|
37549
|
-
text:
|
|
37437
|
+
text: content !== null && content !== void 0 ? content : '',
|
|
37550
37438
|
cssClass: optClass,
|
|
37551
37439
|
value,
|
|
37552
37440
|
checked: isOptionSelected(selectValue, value, this.compareWith),
|
|
@@ -37557,6 +37445,11 @@ class Select {
|
|
|
37557
37445
|
this.close();
|
|
37558
37446
|
}
|
|
37559
37447
|
},
|
|
37448
|
+
startContent,
|
|
37449
|
+
endContent,
|
|
37450
|
+
description: option.description,
|
|
37451
|
+
labelPlacement: option.labelPlacement,
|
|
37452
|
+
justify: option.justify,
|
|
37560
37453
|
};
|
|
37561
37454
|
});
|
|
37562
37455
|
return popoverOptions;
|
|
@@ -37589,15 +37482,21 @@ class Select {
|
|
|
37589
37482
|
ionShadowTarget: this.nativeWrapperEl,
|
|
37590
37483
|
} });
|
|
37591
37484
|
}
|
|
37485
|
+
const options = this.createOverlaySelectOptions(this.childOpts, value);
|
|
37486
|
+
const hasRichContent = options.some((opt) => opt.startContent || opt.endContent || opt.description);
|
|
37592
37487
|
const popoverOpts = Object.assign(Object.assign({ mode,
|
|
37593
37488
|
event, alignment: 'center', size,
|
|
37594
|
-
showBackdrop }, interfaceOptions), { component: 'ion-select-popover', cssClass: [
|
|
37489
|
+
showBackdrop }, interfaceOptions), { component: 'ion-select-popover', cssClass: [
|
|
37490
|
+
'select-popover',
|
|
37491
|
+
hasRichContent ? 'select-popover-rich-content' : undefined,
|
|
37492
|
+
interfaceOptions.cssClass,
|
|
37493
|
+
], componentProps: {
|
|
37595
37494
|
header: interfaceOptions.header,
|
|
37596
37495
|
subHeader: interfaceOptions.subHeader,
|
|
37597
37496
|
message: interfaceOptions.message,
|
|
37598
37497
|
multiple,
|
|
37599
37498
|
value,
|
|
37600
|
-
options
|
|
37499
|
+
options,
|
|
37601
37500
|
} });
|
|
37602
37501
|
return popoverController.create(popoverOpts);
|
|
37603
37502
|
}
|
|
@@ -37678,12 +37577,18 @@ class Select {
|
|
|
37678
37577
|
}
|
|
37679
37578
|
return;
|
|
37680
37579
|
}
|
|
37681
|
-
|
|
37580
|
+
/**
|
|
37581
|
+
* Returns the text to display in the select based on the selected value.
|
|
37582
|
+
*
|
|
37583
|
+
* @param useHTML If `true`, the returned text will include any custom HTML content from the selected option. If `false`, the returned text will be plain text without any HTML. Defaults to `false`.
|
|
37584
|
+
* @returns The text to display in the select, either with or without HTML based on the `useHTML` parameter.
|
|
37585
|
+
*/
|
|
37586
|
+
getText(useHTML = false) {
|
|
37682
37587
|
const selectedText = this.selectedText;
|
|
37683
37588
|
if (selectedText != null && selectedText !== '') {
|
|
37684
37589
|
return selectedText;
|
|
37685
37590
|
}
|
|
37686
|
-
return generateText(this.childOpts, this.value, this.compareWith);
|
|
37591
|
+
return generateText(this.childOpts, this.value, this.compareWith, useHTML);
|
|
37687
37592
|
}
|
|
37688
37593
|
setFocus() {
|
|
37689
37594
|
if (this.focusEl) {
|
|
@@ -37753,6 +37658,47 @@ class Select {
|
|
|
37753
37658
|
*/
|
|
37754
37659
|
return this.renderLabel();
|
|
37755
37660
|
}
|
|
37661
|
+
/**
|
|
37662
|
+
* Wraps text nodes in the select text with span elements
|
|
37663
|
+
* so spacing can be added between elements without
|
|
37664
|
+
* changing the display to prevent losing the ellipses
|
|
37665
|
+
* behavior.
|
|
37666
|
+
*
|
|
37667
|
+
* Only wraps when the string contains HTML elements
|
|
37668
|
+
* alongside text.
|
|
37669
|
+
*/
|
|
37670
|
+
wrapSelectTextNodes(html) {
|
|
37671
|
+
const temp = document.createElement('div');
|
|
37672
|
+
temp.innerHTML = html;
|
|
37673
|
+
const hasElements = Array.from(temp.childNodes).some((n) => n.nodeType === Node.ELEMENT_NODE);
|
|
37674
|
+
// Return the plain text
|
|
37675
|
+
if (!hasElements) {
|
|
37676
|
+
return html;
|
|
37677
|
+
}
|
|
37678
|
+
Array.from(temp.childNodes).forEach((node) => {
|
|
37679
|
+
var _a, _b, _c, _d;
|
|
37680
|
+
if (node.nodeType === Node.TEXT_NODE && ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim())) {
|
|
37681
|
+
const text = node.textContent;
|
|
37682
|
+
/**
|
|
37683
|
+
* Split comma separator from the text content
|
|
37684
|
+
* e.g., ", Bacon" becomes ", " text node + <span>Bacon</span>.
|
|
37685
|
+
*/
|
|
37686
|
+
const commaMatch = text.match(/^(,\s*)(.*)/);
|
|
37687
|
+
if (commaMatch) {
|
|
37688
|
+
const commaNode = document.createTextNode(commaMatch[1]);
|
|
37689
|
+
const wrapper = document.createElement('span');
|
|
37690
|
+
wrapper.textContent = commaMatch[2];
|
|
37691
|
+
(_b = node.parentNode) === null || _b === void 0 ? void 0 : _b.replaceChild(wrapper, node);
|
|
37692
|
+
(_c = wrapper.parentNode) === null || _c === void 0 ? void 0 : _c.insertBefore(commaNode, wrapper);
|
|
37693
|
+
return;
|
|
37694
|
+
}
|
|
37695
|
+
const wrapper = document.createElement('span');
|
|
37696
|
+
(_d = node.parentNode) === null || _d === void 0 ? void 0 : _d.replaceChild(wrapper, node);
|
|
37697
|
+
wrapper.appendChild(node);
|
|
37698
|
+
}
|
|
37699
|
+
});
|
|
37700
|
+
return temp.innerHTML;
|
|
37701
|
+
}
|
|
37756
37702
|
/**
|
|
37757
37703
|
* Renders either the placeholder
|
|
37758
37704
|
* or the selected values based on
|
|
@@ -37760,7 +37706,7 @@ class Select {
|
|
|
37760
37706
|
*/
|
|
37761
37707
|
renderSelectText() {
|
|
37762
37708
|
const { placeholder } = this;
|
|
37763
|
-
const displayValue = this.getText();
|
|
37709
|
+
const displayValue = this.getText(true);
|
|
37764
37710
|
let addPlaceholderClass = false;
|
|
37765
37711
|
let selectText = displayValue;
|
|
37766
37712
|
if (selectText === '' && placeholder !== undefined) {
|
|
@@ -37772,6 +37718,10 @@ class Select {
|
|
|
37772
37718
|
'select-placeholder': addPlaceholderClass,
|
|
37773
37719
|
};
|
|
37774
37720
|
const textPart = addPlaceholderClass ? 'placeholder' : 'text';
|
|
37721
|
+
if (this.customHTMLEnabled) {
|
|
37722
|
+
const wrapped = this.wrapSelectTextNodes(selectText);
|
|
37723
|
+
return hAsync("div", { "aria-hidden": "true", class: selectTextClasses, part: textPart, innerHTML: wrapped });
|
|
37724
|
+
}
|
|
37775
37725
|
return (hAsync("div", { "aria-hidden": "true", class: selectTextClasses, part: textPart }, selectText));
|
|
37776
37726
|
}
|
|
37777
37727
|
/**
|
|
@@ -37794,6 +37744,7 @@ class Select {
|
|
|
37794
37744
|
get ariaLabel() {
|
|
37795
37745
|
var _a;
|
|
37796
37746
|
const { placeholder, inheritedAttributes } = this;
|
|
37747
|
+
// Get the plain text from the selected text
|
|
37797
37748
|
const displayValue = this.getText();
|
|
37798
37749
|
// The aria label should be preferred over visible text if both are specified
|
|
37799
37750
|
const definedLabel = (_a = inheritedAttributes['aria-label']) !== null && _a !== void 0 ? _a : this.labelText;
|
|
@@ -37887,7 +37838,7 @@ class Select {
|
|
|
37887
37838
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
37888
37839
|
*/
|
|
37889
37840
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
|
|
37890
|
-
return (hAsync(Host, { key: '
|
|
37841
|
+
return (hAsync(Host, { key: 'a3036d51e0db13332641e9523264ddd1ab031912', onClick: this.onClick, class: createColorClasses$1(this.color, {
|
|
37891
37842
|
[mode]: true,
|
|
37892
37843
|
'in-item': inItem,
|
|
37893
37844
|
'in-item-color': hostContext('ion-item.ion-color', el),
|
|
@@ -37905,7 +37856,7 @@ class Select {
|
|
|
37905
37856
|
[`select-justify-${justify}`]: justifyEnabled,
|
|
37906
37857
|
[`select-shape-${shape}`]: shape !== undefined,
|
|
37907
37858
|
[`select-label-placement-${labelPlacement}`]: true,
|
|
37908
|
-
}) }, hAsync("label", { key: '
|
|
37859
|
+
}) }, hAsync("label", { key: '58b77f683499b958840721bdb59a9bf822c7f218', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, this.renderLabelContainer(), hAsync("div", { key: '9e68d96524c1b87d6cb1bdce79fa86f2022be04a', class: "select-wrapper-inner", part: "inner" }, hAsync("slot", { key: 'c9bcc5d684d2cefadff6ad3ec91498d5b405afc5', name: "start" }), hAsync("div", { key: '5405bc15ffb3437ca00c64fbbc83d8eb2631c4ea', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: '95e2f041c8517afb1cc6bddb2c3c38cf41f2376e', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: 'f3d2410f678ea22a107121aea1bbda197a618ed6', class: "select-highlight" })), this.renderBottomContent()));
|
|
37909
37860
|
}
|
|
37910
37861
|
get el() { return getElement(this); }
|
|
37911
37862
|
static get watchers() { return {
|
|
@@ -37976,34 +37927,232 @@ const parseValue = (value) => {
|
|
|
37976
37927
|
}
|
|
37977
37928
|
return value.toString();
|
|
37978
37929
|
};
|
|
37979
|
-
const generateText = (opts, value, compareWith) => {
|
|
37930
|
+
const generateText = (opts, value, compareWith, useHTML = false) => {
|
|
37980
37931
|
if (value === undefined) {
|
|
37981
37932
|
return '';
|
|
37982
37933
|
}
|
|
37983
37934
|
if (Array.isArray(value)) {
|
|
37984
37935
|
return value
|
|
37985
|
-
.map((v) => textForValue(opts, v, compareWith))
|
|
37936
|
+
.map((v) => textForValue(opts, v, compareWith, useHTML))
|
|
37986
37937
|
.filter((opt) => opt !== null)
|
|
37987
37938
|
.join(', ');
|
|
37988
37939
|
}
|
|
37989
37940
|
else {
|
|
37990
|
-
return textForValue(opts, value, compareWith) || '';
|
|
37941
|
+
return textForValue(opts, value, compareWith, useHTML) || '';
|
|
37991
37942
|
}
|
|
37992
37943
|
};
|
|
37993
|
-
|
|
37944
|
+
/**
|
|
37945
|
+
* Returns the display text for a given value from the list of options.
|
|
37946
|
+
* When `useHTML` is true, returns sanitized HTML for the select text.
|
|
37947
|
+
* When `useHTML` is false, returns plain text for aria-label and other
|
|
37948
|
+
* text-only contexts.
|
|
37949
|
+
*
|
|
37950
|
+
* @param opts - The list of ion-select-option elements.
|
|
37951
|
+
* @param value - The value to find the matching option for.
|
|
37952
|
+
* @param compareWith - Custom comparison function or property name.
|
|
37953
|
+
* @param useHTML - If true, returns HTML string. If false, returns plain text.
|
|
37954
|
+
*/
|
|
37955
|
+
const textForValue = (opts, value, compareWith, useHTML = false) => {
|
|
37994
37956
|
const selectOpt = opts.find((opt) => {
|
|
37995
37957
|
return compareOptions(value, getOptionValue(opt), compareWith);
|
|
37996
37958
|
});
|
|
37997
|
-
|
|
37959
|
+
const customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
|
|
37960
|
+
if (!selectOpt) {
|
|
37961
|
+
return null;
|
|
37962
|
+
}
|
|
37963
|
+
// Return sanitized HTML for the select text
|
|
37964
|
+
if (customHTMLEnabled && useHTML) {
|
|
37965
|
+
return getOptionContent(selectOpt, undefined, true);
|
|
37966
|
+
}
|
|
37967
|
+
/**
|
|
37968
|
+
* When custom HTML is enabled, extract only the default slot content.
|
|
37969
|
+
* This ensures aria-label and other text-only contexts read only
|
|
37970
|
+
* the relevant option text.
|
|
37971
|
+
*/
|
|
37972
|
+
if (customHTMLEnabled) {
|
|
37973
|
+
const content = getOptionContent(selectOpt);
|
|
37974
|
+
if (typeof content === 'string') {
|
|
37975
|
+
return content;
|
|
37976
|
+
}
|
|
37977
|
+
/**
|
|
37978
|
+
* Elements were found in the default slot, extract and concatenate
|
|
37979
|
+
* their text content while trimming whitespace.
|
|
37980
|
+
*/
|
|
37981
|
+
if (content) {
|
|
37982
|
+
const texts = Array.from(content.childNodes)
|
|
37983
|
+
.map((n) => { var _a; return (_a = n.textContent) === null || _a === void 0 ? void 0 : _a.trim(); })
|
|
37984
|
+
.filter((t) => t);
|
|
37985
|
+
return texts.join(' ') || null;
|
|
37986
|
+
}
|
|
37987
|
+
// Empty option
|
|
37988
|
+
return null;
|
|
37989
|
+
}
|
|
37990
|
+
return getDefaultSlotPlainText(selectOpt);
|
|
37991
|
+
};
|
|
37992
|
+
/**
|
|
37993
|
+
* Trims whitespace from all text nodes within a DOM tree.
|
|
37994
|
+
* This prevents invisible layout shifts and unwanted gaps between
|
|
37995
|
+
* elements when HTML content is injected via innerHTML or cloneNode,
|
|
37996
|
+
* as browsers preserve whitespace (tabs, newlines, spaces) from
|
|
37997
|
+
* the original source markup.
|
|
37998
|
+
*
|
|
37999
|
+
* @param node The root node to start trimming text nodes from.
|
|
38000
|
+
*/
|
|
38001
|
+
const trimTextNodes = (node) => {
|
|
38002
|
+
node.childNodes.forEach((child) => {
|
|
38003
|
+
var _a;
|
|
38004
|
+
if (child.nodeType === Node.TEXT_NODE) {
|
|
38005
|
+
child.textContent = ((_a = child.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || '';
|
|
38006
|
+
}
|
|
38007
|
+
else if (child.nodeType === Node.ELEMENT_NODE) {
|
|
38008
|
+
trimTextNodes(child);
|
|
38009
|
+
}
|
|
38010
|
+
});
|
|
38011
|
+
};
|
|
38012
|
+
/**
|
|
38013
|
+
* Extracts and clones content from an `ion-select-option` element
|
|
38014
|
+
* for rendering within overlay interfaces or the select text when `customHTMLEnabled` is `true`.
|
|
38015
|
+
*
|
|
38016
|
+
* @param option - The `ion-select-option` element to extract content from.
|
|
38017
|
+
* @param slotName - Optional slot name to extract. If omitted, extracts the default slot content.
|
|
38018
|
+
* @param useHTML - If `true`, the returned string will include any custom HTML content. If `false`, the returned string will be plain text without any HTML.
|
|
38019
|
+
* @returns When `useHTML` is `true`, a sanitized HTML string. When `false`, a
|
|
38020
|
+
* div element containing cloned child nodes. Returns `null` if no matching
|
|
38021
|
+
* content is found.
|
|
38022
|
+
*/
|
|
38023
|
+
const getOptionContent = (option, slotName, useHTML = false) => {
|
|
38024
|
+
let nodes;
|
|
38025
|
+
if (slotName) {
|
|
38026
|
+
// Named slot: get elements with matching slot attribute
|
|
38027
|
+
nodes = Array.from(option.children).filter((el) => el.getAttribute('slot') === slotName);
|
|
38028
|
+
}
|
|
38029
|
+
else {
|
|
38030
|
+
// Default slot: get nodes without a slot attribute
|
|
38031
|
+
const defaultSlot = getOptionDefaultSlot(option) || [];
|
|
38032
|
+
nodes = defaultSlot.filter((node) => {
|
|
38033
|
+
var _a;
|
|
38034
|
+
/**
|
|
38035
|
+
* Exclude whitespace-only text nodes (newline noise between
|
|
38036
|
+
* markup elements). Element nodes are always kept, even when
|
|
38037
|
+
* their textContent is empty (e.g. <svg>, <img>).
|
|
38038
|
+
*/
|
|
38039
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
38040
|
+
return ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim().length) !== 0;
|
|
38041
|
+
}
|
|
38042
|
+
return true;
|
|
38043
|
+
});
|
|
38044
|
+
}
|
|
38045
|
+
if (nodes.length === 0) {
|
|
38046
|
+
return null;
|
|
38047
|
+
}
|
|
38048
|
+
// Return plain text if no elements are found
|
|
38049
|
+
if (!slotName && nodes.every((n) => n.nodeType === Node.TEXT_NODE)) {
|
|
38050
|
+
return nodes.map((n) => { var _a; return (_a = n.textContent) === null || _a === void 0 ? void 0 : _a.trim(); }).join(' ') || null;
|
|
38051
|
+
}
|
|
38052
|
+
/**
|
|
38053
|
+
* Mirror known custom-element properties (e.g. ion-icon's `icon`)
|
|
38054
|
+
* onto attributes before cloning. Frameworks like Vue set these as
|
|
38055
|
+
* DOM properties, which `cloneNode` doesn't copy, so without this
|
|
38056
|
+
* step the cloned overlay copy renders without the prop's value.
|
|
38057
|
+
*/
|
|
38058
|
+
nodes.forEach((n) => {
|
|
38059
|
+
if (n.nodeType === Node.ELEMENT_NODE) {
|
|
38060
|
+
reflectPropertiesToAttributes(n);
|
|
38061
|
+
}
|
|
38062
|
+
});
|
|
38063
|
+
// Clone each node into a temporary container
|
|
38064
|
+
const container = document.createElement('div');
|
|
38065
|
+
nodes.forEach((n) => {
|
|
38066
|
+
var _a;
|
|
38067
|
+
const clone = n.cloneNode(true);
|
|
38068
|
+
if (clone.nodeType === Node.TEXT_NODE) {
|
|
38069
|
+
clone.textContent = ((_a = clone.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || '';
|
|
38070
|
+
}
|
|
38071
|
+
else {
|
|
38072
|
+
trimTextNodes(clone);
|
|
38073
|
+
}
|
|
38074
|
+
container.appendChild(clone);
|
|
38075
|
+
});
|
|
38076
|
+
/**
|
|
38077
|
+
* Sanitize the cloned DOM in place. Trusted attributes (size, color,
|
|
38078
|
+
* shape, etc.) are preserved; event handlers, javascript: URLs, and
|
|
38079
|
+
* blocked tags are stripped.
|
|
38080
|
+
*/
|
|
38081
|
+
sanitizeDOMTree(container);
|
|
38082
|
+
if (useHTML) {
|
|
38083
|
+
return container.innerHTML.trim() || null;
|
|
38084
|
+
}
|
|
38085
|
+
return container;
|
|
38086
|
+
};
|
|
38087
|
+
/**
|
|
38088
|
+
* Returns the child nodes that belong to the default slot of an
|
|
38089
|
+
* option element, excluding any nodes that are assigned to named
|
|
38090
|
+
* slots.
|
|
38091
|
+
*
|
|
38092
|
+
* @param option - The `ion-select-option` element to extract default-slot nodes from.
|
|
38093
|
+
* @returns An array of default slot nodes, or `null` if none are found.
|
|
38094
|
+
*/
|
|
38095
|
+
const getOptionDefaultSlot = (option) => {
|
|
38096
|
+
const defaultSlotNodes = Array.from(option.childNodes).filter((node) => {
|
|
38097
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
38098
|
+
return !node.hasAttribute('slot');
|
|
38099
|
+
}
|
|
38100
|
+
return node.nodeType === Node.TEXT_NODE;
|
|
38101
|
+
});
|
|
38102
|
+
if (defaultSlotNodes.length === 0) {
|
|
38103
|
+
return null;
|
|
38104
|
+
}
|
|
38105
|
+
return defaultSlotNodes;
|
|
38106
|
+
};
|
|
38107
|
+
/**
|
|
38108
|
+
* Extracts plain text from only the default slot of an option,
|
|
38109
|
+
* excluding content assigned to named slots (start/end).
|
|
38110
|
+
*/
|
|
38111
|
+
const getDefaultSlotPlainText = (option) => {
|
|
38112
|
+
const texts = Array.from(option.childNodes)
|
|
38113
|
+
.filter((node) => {
|
|
38114
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
38115
|
+
return !node.hasAttribute('slot');
|
|
38116
|
+
}
|
|
38117
|
+
return node.nodeType === Node.TEXT_NODE;
|
|
38118
|
+
})
|
|
38119
|
+
.filter((node) => node.nodeType === Node.TEXT_NODE)
|
|
38120
|
+
.map((n) => { var _a; return (_a = n.textContent) === null || _a === void 0 ? void 0 : _a.trim(); })
|
|
38121
|
+
.filter((t) => t);
|
|
38122
|
+
return texts.join(' ');
|
|
38123
|
+
};
|
|
38124
|
+
/**
|
|
38125
|
+
* Extracts the rich content from an `ion-select-option`.
|
|
38126
|
+
* When `customHTMLEnabled` is `false`, only the plain text from the
|
|
38127
|
+
* default slot is read and the start and end slots are skipped.
|
|
38128
|
+
*
|
|
38129
|
+
* @param option - The `ion-select-option` element to extract content from.
|
|
38130
|
+
* @param customHTMLEnabled - Whether custom HTML rendering is enabled
|
|
38131
|
+
* via the `innerHTMLTemplatesEnabled` config.
|
|
38132
|
+
*/
|
|
38133
|
+
const extractOptionContent = (option, customHTMLEnabled) => {
|
|
38134
|
+
var _a, _b;
|
|
38135
|
+
if (!customHTMLEnabled) {
|
|
38136
|
+
return {
|
|
38137
|
+
content: getDefaultSlotPlainText(option),
|
|
38138
|
+
startContent: undefined,
|
|
38139
|
+
endContent: undefined,
|
|
38140
|
+
};
|
|
38141
|
+
}
|
|
38142
|
+
return {
|
|
38143
|
+
content: getOptionContent(option),
|
|
38144
|
+
startContent: (_a = getOptionContent(option, 'start')) !== null && _a !== void 0 ? _a : undefined,
|
|
38145
|
+
endContent: (_b = getOptionContent(option, 'end')) !== null && _b !== void 0 ? _b : undefined,
|
|
38146
|
+
};
|
|
37998
38147
|
};
|
|
37999
38148
|
let selectIds = 0;
|
|
38000
38149
|
const OPTION_CLASS = 'select-interface-option';
|
|
38001
38150
|
|
|
38002
|
-
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),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),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)}`;
|
|
38151
|
+
const ionicSelectModalMdCss = () => `.action-sheet-button-label-has-rich-content.sc-ion-select-modal-ionic,.alert-radio-label-has-rich-content.sc-ion-select-modal-ionic,.alert-checkbox-label-has-rich-content.sc-ion-select-modal-ionic,.select-option-label-has-rich-content.sc-ion-select-modal-ionic{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:16px}.action-sheet-button-label-has-rich-content.sc-ion-select-modal-ionic,.alert-radio-label-has-rich-content.sc-ion-select-modal-ionic,.alert-checkbox-label-has-rich-content.sc-ion-select-modal-ionic,.select-option-content.sc-ion-select-modal-ionic{-ms-flex:1;flex:1}.action-sheet-button-label-text.sc-ion-select-modal-ionic,.alert-checkbox-label-text.sc-ion-select-modal-ionic,.alert-radio-label-text.sc-ion-select-modal-ionic,.select-option-label-text.sc-ion-select-modal-ionic{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:12px}.select-option-start.sc-ion-select-modal-ionic,.select-option-end.sc-ion-select-modal-ionic{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px}.select-option-description.sc-ion-select-modal-ionic{padding-left:0;padding-right:0;padding-top:5px;padding-bottom:0;display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem}.select-option-label.sc-ion-select-modal-ionic:not(.select-option-label-has-rich-content){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-option-label-has-rich-content.sc-ion-select-modal-ionic{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}ion-radio.select-option-has-rich-content.sc-ion-select-modal-ionic::part(label),ion-radio.select-option-has-rich-content.sc-ion-select-modal-ionic [part~="label"],ion-checkbox.select-option-has-rich-content.sc-ion-select-modal-ionic::part(label),ion-checkbox.select-option-has-rich-content.sc-ion-select-modal-ionic [part~="label"],.select-option-content.sc-ion-select-modal-ionic{-ms-flex:1;flex:1;white-space:normal}.select-option-start.sc-ion-select-modal-ionic>ion-avatar.sc-ion-select-modal-ionic,.select-option-end.sc-ion-select-modal-ionic>ion-avatar.sc-ion-select-modal-ionic{width:40px;height:40px}.select-option-start.sc-ion-select-modal-ionic>ion-icon.sc-ion-select-modal-ionic,.select-option-end.sc-ion-select-modal-ionic>ion-icon.sc-ion-select-modal-ionic{width:24px;height:24px}.select-option-start.sc-ion-select-modal-ionic>ion-img.sc-ion-select-modal-ionic,.select-option-start.sc-ion-select-modal-ionic>img.sc-ion-select-modal-ionic,.select-option-start.sc-ion-select-modal-ionic>svg.sc-ion-select-modal-ionic,.select-option-start.sc-ion-select-modal-ionic>ion-thumbnail.sc-ion-select-modal-ionic,.select-option-end.sc-ion-select-modal-ionic>ion-img.sc-ion-select-modal-ionic,.select-option-end.sc-ion-select-modal-ionic>img.sc-ion-select-modal-ionic,.select-option-end.sc-ion-select-modal-ionic>svg.sc-ion-select-modal-ionic,.select-option-end.sc-ion-select-modal-ionic>ion-thumbnail.sc-ion-select-modal-ionic{width:56px;height:56px}.select-option-start.sc-ion-select-modal-ionic>video.sc-ion-select-modal-ionic,.select-option-end.sc-ion-select-modal-ionic>video.sc-ion-select-modal-ionic{width:114px;height:56px}.sc-ion-select-modal-ionic-h{height:100%}ion-list.sc-ion-select-modal-ionic ion-radio.sc-ion-select-modal-ionic::part(container),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),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)}`;
|
|
38003
38152
|
|
|
38004
|
-
const selectModalIosCss = () => `.sc-ion-select-modal-ios-h{height:100%}ion-item.sc-ion-select-modal-ios{--inner-padding-end:0}ion-radio.sc-ion-select-modal-ios::after{bottom:0;position:absolute;width:calc(100% - 0.9375rem - 16px);border-width:0px 0px 0.55px 0px;border-style:solid;border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));content:""}ion-radio.sc-ion-select-modal-ios::after{inset-inline-start:calc(0.9375rem + 16px)}`;
|
|
38153
|
+
const selectModalIosCss = () => `.action-sheet-button-label-has-rich-content.sc-ion-select-modal-ios,.alert-radio-label-has-rich-content.sc-ion-select-modal-ios,.alert-checkbox-label-has-rich-content.sc-ion-select-modal-ios,.select-option-label-has-rich-content.sc-ion-select-modal-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:16px}.action-sheet-button-label-has-rich-content.sc-ion-select-modal-ios,.alert-radio-label-has-rich-content.sc-ion-select-modal-ios,.alert-checkbox-label-has-rich-content.sc-ion-select-modal-ios,.select-option-content.sc-ion-select-modal-ios{-ms-flex:1;flex:1}.action-sheet-button-label-text.sc-ion-select-modal-ios,.alert-checkbox-label-text.sc-ion-select-modal-ios,.alert-radio-label-text.sc-ion-select-modal-ios,.select-option-label-text.sc-ion-select-modal-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:12px}.select-option-start.sc-ion-select-modal-ios,.select-option-end.sc-ion-select-modal-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px}.select-option-description.sc-ion-select-modal-ios{padding-left:0;padding-right:0;padding-top:5px;padding-bottom:0;display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem}.select-option-label.sc-ion-select-modal-ios:not(.select-option-label-has-rich-content){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-option-label-has-rich-content.sc-ion-select-modal-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}ion-radio.select-option-has-rich-content.sc-ion-select-modal-ios::part(label),ion-radio.select-option-has-rich-content.sc-ion-select-modal-ios [part~="label"],ion-checkbox.select-option-has-rich-content.sc-ion-select-modal-ios::part(label),ion-checkbox.select-option-has-rich-content.sc-ion-select-modal-ios [part~="label"],.select-option-content.sc-ion-select-modal-ios{-ms-flex:1;flex:1;white-space:normal}.select-option-start.sc-ion-select-modal-ios>ion-avatar.sc-ion-select-modal-ios,.select-option-start.sc-ion-select-modal-ios>ion-img.sc-ion-select-modal-ios,.select-option-start.sc-ion-select-modal-ios>ion-thumbnail.sc-ion-select-modal-ios,.select-option-start.sc-ion-select-modal-ios>img.sc-ion-select-modal-ios,.select-option-start.sc-ion-select-modal-ios>svg.sc-ion-select-modal-ios,.select-option-end.sc-ion-select-modal-ios>ion-avatar.sc-ion-select-modal-ios,.select-option-end.sc-ion-select-modal-ios>ion-img.sc-ion-select-modal-ios,.select-option-end.sc-ion-select-modal-ios>ion-thumbnail.sc-ion-select-modal-ios,.select-option-end.sc-ion-select-modal-ios>img.sc-ion-select-modal-ios,.select-option-end.sc-ion-select-modal-ios>svg.sc-ion-select-modal-ios{width:44px;height:44px}.select-option-start.sc-ion-select-modal-ios>ion-icon.sc-ion-select-modal-ios,.select-option-end.sc-ion-select-modal-ios>ion-icon.sc-ion-select-modal-ios{width:28px;height:28px}.action-sheet-button-label-text.sc-ion-select-modal-ios{-ms-flex-pack:center;justify-content:center}.select-option-has-rich-content.sc-ion-select-modal-ios{-webkit-padding-end:16px;padding-inline-end:16px}.sc-ion-select-modal-ios-h{height:100%}ion-item.sc-ion-select-modal-ios{--inner-padding-end:0}ion-radio.sc-ion-select-modal-ios::after{bottom:0;position:absolute;width:calc(100% - 0.9375rem - 16px);border-width:0px 0px 0.55px 0px;border-style:solid;border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));content:""}ion-radio.sc-ion-select-modal-ios::after{inset-inline-start:calc(0.9375rem + 16px)}`;
|
|
38005
38154
|
|
|
38006
|
-
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),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),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)}`;
|
|
38155
|
+
const selectModalMdCss = () => `.action-sheet-button-label-has-rich-content.sc-ion-select-modal-md,.alert-radio-label-has-rich-content.sc-ion-select-modal-md,.alert-checkbox-label-has-rich-content.sc-ion-select-modal-md,.select-option-label-has-rich-content.sc-ion-select-modal-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:16px}.action-sheet-button-label-has-rich-content.sc-ion-select-modal-md,.alert-radio-label-has-rich-content.sc-ion-select-modal-md,.alert-checkbox-label-has-rich-content.sc-ion-select-modal-md,.select-option-content.sc-ion-select-modal-md{-ms-flex:1;flex:1}.action-sheet-button-label-text.sc-ion-select-modal-md,.alert-checkbox-label-text.sc-ion-select-modal-md,.alert-radio-label-text.sc-ion-select-modal-md,.select-option-label-text.sc-ion-select-modal-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:12px}.select-option-start.sc-ion-select-modal-md,.select-option-end.sc-ion-select-modal-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px}.select-option-description.sc-ion-select-modal-md{padding-left:0;padding-right:0;padding-top:5px;padding-bottom:0;display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem}.select-option-label.sc-ion-select-modal-md:not(.select-option-label-has-rich-content){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-option-label-has-rich-content.sc-ion-select-modal-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}ion-radio.select-option-has-rich-content.sc-ion-select-modal-md::part(label),ion-radio.select-option-has-rich-content.sc-ion-select-modal-md [part~="label"],ion-checkbox.select-option-has-rich-content.sc-ion-select-modal-md::part(label),ion-checkbox.select-option-has-rich-content.sc-ion-select-modal-md [part~="label"],.select-option-content.sc-ion-select-modal-md{-ms-flex:1;flex:1;white-space:normal}.select-option-start.sc-ion-select-modal-md>ion-avatar.sc-ion-select-modal-md,.select-option-end.sc-ion-select-modal-md>ion-avatar.sc-ion-select-modal-md{width:40px;height:40px}.select-option-start.sc-ion-select-modal-md>ion-icon.sc-ion-select-modal-md,.select-option-end.sc-ion-select-modal-md>ion-icon.sc-ion-select-modal-md{width:24px;height:24px}.select-option-start.sc-ion-select-modal-md>ion-img.sc-ion-select-modal-md,.select-option-start.sc-ion-select-modal-md>img.sc-ion-select-modal-md,.select-option-start.sc-ion-select-modal-md>svg.sc-ion-select-modal-md,.select-option-start.sc-ion-select-modal-md>ion-thumbnail.sc-ion-select-modal-md,.select-option-end.sc-ion-select-modal-md>ion-img.sc-ion-select-modal-md,.select-option-end.sc-ion-select-modal-md>img.sc-ion-select-modal-md,.select-option-end.sc-ion-select-modal-md>svg.sc-ion-select-modal-md,.select-option-end.sc-ion-select-modal-md>ion-thumbnail.sc-ion-select-modal-md{width:56px;height:56px}.select-option-start.sc-ion-select-modal-md>video.sc-ion-select-modal-md,.select-option-end.sc-ion-select-modal-md>video.sc-ion-select-modal-md{width:114px;height:56px}.sc-ion-select-modal-md-h{height:100%}ion-list.sc-ion-select-modal-md ion-radio.sc-ion-select-modal-md::part(container),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),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)}`;
|
|
38007
38156
|
|
|
38008
38157
|
class SelectModal {
|
|
38009
38158
|
constructor(hostRef) {
|
|
@@ -38057,39 +38206,90 @@ class SelectModal {
|
|
|
38057
38206
|
}
|
|
38058
38207
|
}
|
|
38059
38208
|
renderRadioOptions() {
|
|
38209
|
+
const mode = getIonMode$1(this);
|
|
38060
38210
|
const checked = this.options.filter((o) => o.checked).map((o) => o.value)[0];
|
|
38061
|
-
return (hAsync("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, this.options.map((option) =>
|
|
38211
|
+
return (hAsync("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, this.options.map((option, index) => {
|
|
38212
|
+
var _a, _b;
|
|
38213
|
+
/**
|
|
38214
|
+
* Cast to `SelectOverlayOption` to access rich content
|
|
38215
|
+
* fields (`startContent`, `endContent`, `description`)
|
|
38216
|
+
* that are passed through from `ion-select` but not
|
|
38217
|
+
* part of the public `SelectModalOption` interface.
|
|
38218
|
+
*/
|
|
38219
|
+
const richOption = option;
|
|
38220
|
+
const hasRichContent = !!richOption.startContent || !!richOption.endContent || !!richOption.description;
|
|
38221
|
+
const optionLabelOptions = {
|
|
38222
|
+
id: `modal-option-${index}`,
|
|
38223
|
+
label: richOption.text,
|
|
38224
|
+
startContent: richOption.startContent,
|
|
38225
|
+
endContent: richOption.endContent,
|
|
38226
|
+
description: richOption.description,
|
|
38227
|
+
};
|
|
38228
|
+
const defaultLabelPlacement = getOverlayLabelPlacement(mode, 'radio', 'modal');
|
|
38229
|
+
const defaultJustify = getOverlayLabelJustify(mode, 'radio', 'modal');
|
|
38230
|
+
return (hAsync("ion-item", { lines: "none",
|
|
38062
38231
|
// TODO FW-4784
|
|
38063
|
-
|
|
38064
|
-
|
|
38065
|
-
|
|
38066
|
-
|
|
38067
|
-
|
|
38068
|
-
|
|
38069
|
-
|
|
38070
|
-
|
|
38071
|
-
|
|
38072
|
-
}
|
|
38073
|
-
|
|
38074
|
-
|
|
38075
|
-
this.pendingEnterTarget = null;
|
|
38076
|
-
if (shouldClose) {
|
|
38232
|
+
disabled: option.disabled, class: Object.assign({
|
|
38233
|
+
// TODO FW-4784
|
|
38234
|
+
'item-radio-checked': option.value === checked
|
|
38235
|
+
}, getClassMap(option.cssClass)) }, hAsync("ion-radio", { class: {
|
|
38236
|
+
'select-option-has-rich-content': hasRichContent,
|
|
38237
|
+
}, value: option.value, disabled: option.disabled, justify: (_a = richOption.justify) !== null && _a !== void 0 ? _a : defaultJustify, labelPlacement: (_b = richOption.labelPlacement) !== null && _b !== void 0 ? _b : defaultLabelPlacement, onClick: () => this.closeModal(), onKeyDown: (ev) => {
|
|
38238
|
+
if (ev.key === 'Enter' && !ev.repeat) {
|
|
38239
|
+
this.pendingEnterTarget = ev.currentTarget;
|
|
38240
|
+
}
|
|
38241
|
+
}, onKeyUp: (ev) => {
|
|
38242
|
+
if (ev.key === ' ') {
|
|
38243
|
+
// Space selects and dismisses in one press.
|
|
38077
38244
|
this.closeModal();
|
|
38078
38245
|
}
|
|
38079
|
-
|
|
38080
|
-
|
|
38246
|
+
else if (ev.key === 'Enter') {
|
|
38247
|
+
const shouldClose = this.pendingEnterTarget === ev.currentTarget;
|
|
38248
|
+
this.pendingEnterTarget = null;
|
|
38249
|
+
if (shouldClose) {
|
|
38250
|
+
this.closeModal();
|
|
38251
|
+
}
|
|
38252
|
+
}
|
|
38253
|
+
} }, renderOptionLabel(optionLabelOptions, 'select-option-label'))));
|
|
38254
|
+
})));
|
|
38081
38255
|
}
|
|
38082
38256
|
renderCheckboxOptions() {
|
|
38083
|
-
|
|
38257
|
+
const mode = getIonMode$1(this);
|
|
38258
|
+
return this.options.map((option, index) => {
|
|
38259
|
+
var _a, _b;
|
|
38260
|
+
/**
|
|
38261
|
+
* Cast to `SelectOverlayOption` to access rich content
|
|
38262
|
+
* fields (`startContent`, `endContent`, `description`)
|
|
38263
|
+
* that are passed through from `ion-select` but not
|
|
38264
|
+
* part of the public `SelectModalOption` interface.
|
|
38265
|
+
*/
|
|
38266
|
+
const richOption = option;
|
|
38267
|
+
const hasRichContent = !!richOption.startContent || !!richOption.endContent || !!richOption.description;
|
|
38268
|
+
const optionLabelOptions = {
|
|
38269
|
+
id: `modal-option-${index}`,
|
|
38270
|
+
label: richOption.text,
|
|
38271
|
+
startContent: richOption.startContent,
|
|
38272
|
+
endContent: richOption.endContent,
|
|
38273
|
+
description: richOption.description,
|
|
38274
|
+
};
|
|
38275
|
+
const defaultLabelPlacement = getOverlayLabelPlacement(mode, 'checkbox', 'modal');
|
|
38276
|
+
const defaultJustify = getOverlayLabelJustify(mode, 'checkbox', 'modal');
|
|
38277
|
+
return (hAsync("ion-item", {
|
|
38084
38278
|
// TODO FW-4784
|
|
38085
|
-
|
|
38086
|
-
|
|
38087
|
-
|
|
38088
|
-
|
|
38089
|
-
}
|
|
38279
|
+
disabled: option.disabled, class: Object.assign({
|
|
38280
|
+
// TODO FW-4784
|
|
38281
|
+
'item-checkbox-checked': option.checked
|
|
38282
|
+
}, getClassMap(option.cssClass))
|
|
38283
|
+
}, hAsync("ion-checkbox", { class: {
|
|
38284
|
+
'select-option-has-rich-content': hasRichContent,
|
|
38285
|
+
}, value: option.value, disabled: option.disabled, checked: option.checked, justify: (_a = richOption.justify) !== null && _a !== void 0 ? _a : defaultJustify, labelPlacement: (_b = richOption.labelPlacement) !== null && _b !== void 0 ? _b : defaultLabelPlacement, onIonChange: (ev) => {
|
|
38286
|
+
this.setChecked(ev);
|
|
38287
|
+
this.callOptionHandler(ev);
|
|
38288
|
+
} }, renderOptionLabel(optionLabelOptions, 'select-option-label'))));
|
|
38289
|
+
});
|
|
38090
38290
|
}
|
|
38091
38291
|
render() {
|
|
38092
|
-
return (hAsync(Host, { key: '
|
|
38292
|
+
return (hAsync(Host, { key: '2cb1ae057b7a66f5d12c926f618f6b945f019803', class: getIonMode$1(this) }, hAsync("ion-header", { key: 'e41f1c4ad1c71dcc927d210502d6366cea894a14' }, hAsync("ion-toolbar", { key: '1a191dfc8980541469ee4d8996ba4de52cac1ac5' }, this.header !== undefined && hAsync("ion-title", { key: '14ab9cb7d41d15b982c6ccd8ba6cee0e9cb528d9' }, this.header), hAsync("ion-buttons", { key: '80451a2ed3a82138eb1575135cf2ebbd5e8f6e60', slot: "end" }, hAsync("ion-button", { key: '01a315cd739569f3c0b23a4d243d52b69b63dfa7', onClick: () => this.closeModal() }, this.cancelText)))), hAsync("ion-content", { key: 'd953101bae9a91f8108f7a5e411bb1e34338655d' }, hAsync("ion-list", { key: '171a5668afc67b03d2ee87e91cf400b17541bc7f' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
|
|
38093
38293
|
}
|
|
38094
38294
|
get el() { return getElement(this); }
|
|
38095
38295
|
static get style() { return {
|
|
@@ -38114,17 +38314,24 @@ class SelectModal {
|
|
|
38114
38314
|
|
|
38115
38315
|
const selectOptionCss = () => `:host{display:none}`;
|
|
38116
38316
|
|
|
38317
|
+
/**
|
|
38318
|
+
* @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
|
|
38319
|
+
*
|
|
38320
|
+
* @slot - Content is placed between the named slots if provided without a slot.
|
|
38321
|
+
* @slot start - Content is placed to the left of the select option text in LTR, and to the right in RTL.
|
|
38322
|
+
* @slot end - Content is placed to the right of the select option text in LTR, and to the left in RTL.
|
|
38323
|
+
*/
|
|
38117
38324
|
class SelectOption {
|
|
38118
38325
|
constructor(hostRef) {
|
|
38119
38326
|
registerInstance(this, hostRef);
|
|
38120
38327
|
this.inputId = `ion-selopt-${selectOptionIds++}`;
|
|
38121
38328
|
/**
|
|
38122
|
-
* If `true`, the user cannot interact with the select option.
|
|
38329
|
+
* If `true`, the user cannot interact with the select option.
|
|
38123
38330
|
*/
|
|
38124
38331
|
this.disabled = false;
|
|
38125
38332
|
}
|
|
38126
38333
|
render() {
|
|
38127
|
-
return hAsync(Host, { key: '
|
|
38334
|
+
return hAsync(Host, { key: '8b8bef0f5a55f18048708c34d3ea3ff0ff2f1d47', role: "option", id: this.inputId, class: getIonMode$1(this) });
|
|
38128
38335
|
}
|
|
38129
38336
|
get el() { return getElement(this); }
|
|
38130
38337
|
static get style() { return selectOptionCss(); }
|
|
@@ -38133,7 +38340,10 @@ class SelectOption {
|
|
|
38133
38340
|
"$tagName$": "ion-select-option",
|
|
38134
38341
|
"$members$": {
|
|
38135
38342
|
"disabled": [4],
|
|
38136
|
-
"value": [8]
|
|
38343
|
+
"value": [8],
|
|
38344
|
+
"description": [1],
|
|
38345
|
+
"labelPlacement": [1, "label-placement"],
|
|
38346
|
+
"justify": [1]
|
|
38137
38347
|
},
|
|
38138
38348
|
"$listeners$": undefined,
|
|
38139
38349
|
"$lazyBundleId$": "-",
|
|
@@ -38142,9 +38352,9 @@ class SelectOption {
|
|
|
38142
38352
|
}
|
|
38143
38353
|
let selectOptionIds = 0;
|
|
38144
38354
|
|
|
38145
|
-
const selectPopoverIosCss = () => `.sc-ion-select-popover-ios-h ion-list.sc-ion-select-popover-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list-header.sc-ion-select-popover-ios,ion-label.sc-ion-select-popover-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-select-popover-ios-h{overflow-y:auto}`;
|
|
38355
|
+
const selectPopoverIosCss = () => `.action-sheet-button-label-has-rich-content.sc-ion-select-popover-ios,.alert-radio-label-has-rich-content.sc-ion-select-popover-ios,.alert-checkbox-label-has-rich-content.sc-ion-select-popover-ios,.select-option-label-has-rich-content.sc-ion-select-popover-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:16px}.action-sheet-button-label-has-rich-content.sc-ion-select-popover-ios,.alert-radio-label-has-rich-content.sc-ion-select-popover-ios,.alert-checkbox-label-has-rich-content.sc-ion-select-popover-ios,.select-option-content.sc-ion-select-popover-ios{-ms-flex:1;flex:1}.action-sheet-button-label-text.sc-ion-select-popover-ios,.alert-checkbox-label-text.sc-ion-select-popover-ios,.alert-radio-label-text.sc-ion-select-popover-ios,.select-option-label-text.sc-ion-select-popover-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:12px}.select-option-start.sc-ion-select-popover-ios,.select-option-end.sc-ion-select-popover-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px}.select-option-description.sc-ion-select-popover-ios{padding-left:0;padding-right:0;padding-top:5px;padding-bottom:0;display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem}.select-option-label.sc-ion-select-popover-ios:not(.select-option-label-has-rich-content){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-option-label-has-rich-content.sc-ion-select-popover-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}ion-radio.select-option-has-rich-content.sc-ion-select-popover-ios::part(label),ion-radio.select-option-has-rich-content.sc-ion-select-popover-ios [part~="label"],ion-checkbox.select-option-has-rich-content.sc-ion-select-popover-ios::part(label),ion-checkbox.select-option-has-rich-content.sc-ion-select-popover-ios [part~="label"],.select-option-content.sc-ion-select-popover-ios{-ms-flex:1;flex:1;white-space:normal}.select-option-start.sc-ion-select-popover-ios>ion-avatar.sc-ion-select-popover-ios,.select-option-start.sc-ion-select-popover-ios>ion-img.sc-ion-select-popover-ios,.select-option-start.sc-ion-select-popover-ios>ion-thumbnail.sc-ion-select-popover-ios,.select-option-start.sc-ion-select-popover-ios>img.sc-ion-select-popover-ios,.select-option-start.sc-ion-select-popover-ios>svg.sc-ion-select-popover-ios,.select-option-end.sc-ion-select-popover-ios>ion-avatar.sc-ion-select-popover-ios,.select-option-end.sc-ion-select-popover-ios>ion-img.sc-ion-select-popover-ios,.select-option-end.sc-ion-select-popover-ios>ion-thumbnail.sc-ion-select-popover-ios,.select-option-end.sc-ion-select-popover-ios>img.sc-ion-select-popover-ios,.select-option-end.sc-ion-select-popover-ios>svg.sc-ion-select-popover-ios{width:44px;height:44px}.select-option-start.sc-ion-select-popover-ios>ion-icon.sc-ion-select-popover-ios,.select-option-end.sc-ion-select-popover-ios>ion-icon.sc-ion-select-popover-ios{width:28px;height:28px}.action-sheet-button-label-text.sc-ion-select-popover-ios{-ms-flex-pack:center;justify-content:center}.select-option-has-rich-content.sc-ion-select-popover-ios{-webkit-padding-end:16px;padding-inline-end:16px}.sc-ion-select-popover-ios-h ion-list.sc-ion-select-popover-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list-header.sc-ion-select-popover-ios,ion-label.sc-ion-select-popover-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-select-popover-ios-h{overflow-y:auto}`;
|
|
38146
38356
|
|
|
38147
|
-
const selectPopoverMdCss = () => `.sc-ion-select-popover-md-h ion-list.sc-ion-select-popover-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list-header.sc-ion-select-popover-md,ion-label.sc-ion-select-popover-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-select-popover-md-h{overflow-y:auto}ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md::part(container),ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md [part~="container"]{display:none}ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md::part(label),ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md [part~="label"]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-item.sc-ion-select-popover-md{--inner-border-width:0}.item-radio-checked.sc-ion-select-popover-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-popover-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)}`;
|
|
38357
|
+
const selectPopoverMdCss = () => `.action-sheet-button-label-has-rich-content.sc-ion-select-popover-md,.alert-radio-label-has-rich-content.sc-ion-select-popover-md,.alert-checkbox-label-has-rich-content.sc-ion-select-popover-md,.select-option-label-has-rich-content.sc-ion-select-popover-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:16px}.action-sheet-button-label-has-rich-content.sc-ion-select-popover-md,.alert-radio-label-has-rich-content.sc-ion-select-popover-md,.alert-checkbox-label-has-rich-content.sc-ion-select-popover-md,.select-option-content.sc-ion-select-popover-md{-ms-flex:1;flex:1}.action-sheet-button-label-text.sc-ion-select-popover-md,.alert-checkbox-label-text.sc-ion-select-popover-md,.alert-radio-label-text.sc-ion-select-popover-md,.select-option-label-text.sc-ion-select-popover-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:12px}.select-option-start.sc-ion-select-popover-md,.select-option-end.sc-ion-select-popover-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px}.select-option-description.sc-ion-select-popover-md{padding-left:0;padding-right:0;padding-top:5px;padding-bottom:0;display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem}.select-option-label.sc-ion-select-popover-md:not(.select-option-label-has-rich-content){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-option-label-has-rich-content.sc-ion-select-popover-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}ion-radio.select-option-has-rich-content.sc-ion-select-popover-md::part(label),ion-radio.select-option-has-rich-content.sc-ion-select-popover-md [part~="label"],ion-checkbox.select-option-has-rich-content.sc-ion-select-popover-md::part(label),ion-checkbox.select-option-has-rich-content.sc-ion-select-popover-md [part~="label"],.select-option-content.sc-ion-select-popover-md{-ms-flex:1;flex:1;white-space:normal}.select-option-start.sc-ion-select-popover-md>ion-avatar.sc-ion-select-popover-md,.select-option-end.sc-ion-select-popover-md>ion-avatar.sc-ion-select-popover-md{width:40px;height:40px}.select-option-start.sc-ion-select-popover-md>ion-icon.sc-ion-select-popover-md,.select-option-end.sc-ion-select-popover-md>ion-icon.sc-ion-select-popover-md{width:24px;height:24px}.select-option-start.sc-ion-select-popover-md>ion-img.sc-ion-select-popover-md,.select-option-start.sc-ion-select-popover-md>img.sc-ion-select-popover-md,.select-option-start.sc-ion-select-popover-md>svg.sc-ion-select-popover-md,.select-option-start.sc-ion-select-popover-md>ion-thumbnail.sc-ion-select-popover-md,.select-option-end.sc-ion-select-popover-md>ion-img.sc-ion-select-popover-md,.select-option-end.sc-ion-select-popover-md>img.sc-ion-select-popover-md,.select-option-end.sc-ion-select-popover-md>svg.sc-ion-select-popover-md,.select-option-end.sc-ion-select-popover-md>ion-thumbnail.sc-ion-select-popover-md{width:56px;height:56px}.select-option-start.sc-ion-select-popover-md>video.sc-ion-select-popover-md,.select-option-end.sc-ion-select-popover-md>video.sc-ion-select-popover-md{width:114px;height:56px}.sc-ion-select-popover-md-h ion-list.sc-ion-select-popover-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list-header.sc-ion-select-popover-md,ion-label.sc-ion-select-popover-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-select-popover-md-h{overflow-y:auto}ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md::part(container),ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md [part~="container"]{display:none}ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md::part(label),ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md [part~="label"]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-item.sc-ion-select-popover-md{--inner-border-width:0}.item-radio-checked.sc-ion-select-popover-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-popover-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)}`;
|
|
38148
38358
|
|
|
38149
38359
|
/**
|
|
38150
38360
|
* @internal
|
|
@@ -38218,41 +38428,91 @@ class SelectPopover {
|
|
|
38218
38428
|
}
|
|
38219
38429
|
}
|
|
38220
38430
|
renderCheckboxOptions(options) {
|
|
38221
|
-
|
|
38431
|
+
const mode = getIonMode$1(this);
|
|
38432
|
+
return options.map((option, index) => {
|
|
38433
|
+
var _a, _b;
|
|
38434
|
+
/**
|
|
38435
|
+
* Cast to `SelectOverlayOption` to access rich content
|
|
38436
|
+
* fields (`startContent`, `endContent`, `description`)
|
|
38437
|
+
* that are passed through from `ion-select` but not
|
|
38438
|
+
* part of the public `SelectPopoverOption` interface.
|
|
38439
|
+
*/
|
|
38440
|
+
const richOption = option;
|
|
38441
|
+
const hasRichContent = !!richOption.startContent || !!richOption.endContent || !!richOption.description;
|
|
38442
|
+
const optionLabelOptions = {
|
|
38443
|
+
id: `popover-option-${index}`,
|
|
38444
|
+
label: richOption.text,
|
|
38445
|
+
startContent: richOption.startContent,
|
|
38446
|
+
endContent: richOption.endContent,
|
|
38447
|
+
description: richOption.description,
|
|
38448
|
+
};
|
|
38449
|
+
const defaultLabelPlacement = getOverlayLabelPlacement(mode, 'checkbox');
|
|
38450
|
+
const defaultJustify = getOverlayLabelJustify(mode, 'checkbox');
|
|
38451
|
+
return (hAsync("ion-item", {
|
|
38222
38452
|
// TODO FW-4784
|
|
38223
|
-
|
|
38224
|
-
|
|
38225
|
-
|
|
38226
|
-
|
|
38227
|
-
}
|
|
38453
|
+
disabled: option.disabled, class: Object.assign({
|
|
38454
|
+
// TODO FW-4784
|
|
38455
|
+
'item-checkbox-checked': option.checked
|
|
38456
|
+
}, getClassMap(option.cssClass))
|
|
38457
|
+
}, hAsync("ion-checkbox", { class: {
|
|
38458
|
+
'select-option-has-rich-content': hasRichContent,
|
|
38459
|
+
}, value: option.value, disabled: option.disabled, checked: option.checked, justify: (_a = richOption.justify) !== null && _a !== void 0 ? _a : defaultJustify, labelPlacement: (_b = richOption.labelPlacement) !== null && _b !== void 0 ? _b : defaultLabelPlacement, onIonChange: (ev) => {
|
|
38460
|
+
this.setChecked(ev);
|
|
38461
|
+
this.callOptionHandler(ev);
|
|
38462
|
+
} }, renderOptionLabel(optionLabelOptions, 'select-option-label'))));
|
|
38463
|
+
});
|
|
38228
38464
|
}
|
|
38229
38465
|
renderRadioOptions(options) {
|
|
38466
|
+
const mode = getIonMode$1(this);
|
|
38230
38467
|
const checked = options.filter((o) => o.checked).map((o) => o.value)[0];
|
|
38231
|
-
return (hAsync("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, options.map((option) =>
|
|
38468
|
+
return (hAsync("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, options.map((option, index) => {
|
|
38469
|
+
var _a, _b;
|
|
38470
|
+
/**
|
|
38471
|
+
* Cast to `SelectOverlayOption` to access rich content
|
|
38472
|
+
* fields (`startContent`, `endContent`, `description`)
|
|
38473
|
+
* that are passed through from `ion-select` but not
|
|
38474
|
+
* part of the public `SelectPopoverOption` interface.
|
|
38475
|
+
*/
|
|
38476
|
+
const richOption = option;
|
|
38477
|
+
const hasRichContent = !!richOption.startContent || !!richOption.endContent || !!richOption.description;
|
|
38478
|
+
const optionLabelOptions = {
|
|
38479
|
+
id: `popover-option-${index}`,
|
|
38480
|
+
label: richOption.text,
|
|
38481
|
+
startContent: richOption.startContent,
|
|
38482
|
+
endContent: richOption.endContent,
|
|
38483
|
+
description: richOption.description,
|
|
38484
|
+
};
|
|
38485
|
+
return (hAsync("ion-item", {
|
|
38232
38486
|
// TODO FW-4784
|
|
38233
|
-
|
|
38234
|
-
|
|
38235
|
-
|
|
38236
|
-
|
|
38237
|
-
|
|
38238
|
-
|
|
38239
|
-
|
|
38240
|
-
|
|
38241
|
-
|
|
38242
|
-
|
|
38243
|
-
|
|
38244
|
-
|
|
38245
|
-
|
|
38246
|
-
if (shouldDismiss) {
|
|
38487
|
+
disabled: option.disabled, class: Object.assign({
|
|
38488
|
+
// TODO FW-4784
|
|
38489
|
+
'item-radio-checked': option.value === checked
|
|
38490
|
+
}, getClassMap(option.cssClass))
|
|
38491
|
+
}, hAsync("ion-radio", { class: {
|
|
38492
|
+
'select-option-has-rich-content': hasRichContent,
|
|
38493
|
+
}, value: option.value, disabled: option.disabled, justify: (_a = richOption.justify) !== null && _a !== void 0 ? _a : getOverlayLabelJustify(mode, 'radio'), labelPlacement: (_b = richOption.labelPlacement) !== null && _b !== void 0 ? _b : getOverlayLabelPlacement(mode, 'radio'), onClick: () => this.dismissParentPopover(), onKeyDown: (ev) => {
|
|
38494
|
+
if (ev.key === 'Enter' && !ev.repeat) {
|
|
38495
|
+
this.pendingEnterTarget = ev.currentTarget;
|
|
38496
|
+
}
|
|
38497
|
+
}, onKeyUp: (ev) => {
|
|
38498
|
+
if (ev.key === ' ') {
|
|
38499
|
+
// Space selects and dismisses in one press.
|
|
38247
38500
|
this.dismissParentPopover();
|
|
38248
38501
|
}
|
|
38249
|
-
|
|
38250
|
-
|
|
38502
|
+
else if (ev.key === 'Enter') {
|
|
38503
|
+
const shouldDismiss = this.pendingEnterTarget === ev.currentTarget;
|
|
38504
|
+
this.pendingEnterTarget = null;
|
|
38505
|
+
if (shouldDismiss) {
|
|
38506
|
+
this.dismissParentPopover();
|
|
38507
|
+
}
|
|
38508
|
+
}
|
|
38509
|
+
} }, renderOptionLabel(optionLabelOptions, 'select-option-label'))));
|
|
38510
|
+
})));
|
|
38251
38511
|
}
|
|
38252
38512
|
render() {
|
|
38253
38513
|
const { header, message, options, subHeader } = this;
|
|
38254
38514
|
const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
|
|
38255
|
-
return (hAsync(Host, { key: '
|
|
38515
|
+
return (hAsync(Host, { key: 'd0c107e0ca78955a3cfcd9f098a527fb35eff14d', class: getIonMode$1(this) }, hAsync("ion-list", { key: '1e103312e22bf78d2201a0f88cc4fed789f62a2b' }, header !== undefined && hAsync("ion-list-header", { key: '657439905dc480112ed8d7f8d4a01464724de2bd' }, header), hasSubHeaderOrMessage && (hAsync("ion-item", { key: 'e0eaa0250bf233cf846adba5ddc141bf3430c2a8' }, hAsync("ion-label", { key: 'ad1cff877f9d582fbc64f9049603146fd1a1a6f9', class: "ion-text-wrap" }, subHeader !== undefined && hAsync("h3", { key: 'ead921d395b614a99c89a8ffe2a102a620f80767' }, subHeader), message !== undefined && hAsync("p", { key: '3a47e7091528930f33324ccd04d6734217155244' }, message)))), this.renderOptions(options))));
|
|
38256
38516
|
}
|
|
38257
38517
|
get el() { return getElement(this); }
|
|
38258
38518
|
static get style() { return {
|
|
@@ -38302,11 +38562,11 @@ class SkeletonText {
|
|
|
38302
38562
|
const animated = this.animated && config.getBoolean('animated', true);
|
|
38303
38563
|
const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
|
|
38304
38564
|
const mode = getIonMode$1(this);
|
|
38305
|
-
return (hAsync(Host, { key: '
|
|
38565
|
+
return (hAsync(Host, { key: '887d958d982345ce610730ab5c9ae35010430f75', class: {
|
|
38306
38566
|
[mode]: true,
|
|
38307
38567
|
'skeleton-text-animated': animated,
|
|
38308
38568
|
'in-media': inMedia,
|
|
38309
|
-
} }, hAsync("span", { key: '
|
|
38569
|
+
} }, hAsync("span", { key: 'a184f4b9780a2aada0a16729109ac81436e9c9e1' }, "\u00A0")));
|
|
38310
38570
|
}
|
|
38311
38571
|
get el() { return getElement(this); }
|
|
38312
38572
|
static get style() { return skeletonTextCss(); }
|
|
@@ -38358,7 +38618,7 @@ class Spinner {
|
|
|
38358
38618
|
svgs.push(buildLine(spinner, duration, i, spinner.lines));
|
|
38359
38619
|
}
|
|
38360
38620
|
}
|
|
38361
|
-
return (hAsync(Host, { key: '
|
|
38621
|
+
return (hAsync(Host, { key: 'c35ebd01186e860acb9cac260193f0836424fdf4', class: createColorClasses$1(self.color, {
|
|
38362
38622
|
[mode]: true,
|
|
38363
38623
|
[`spinner-${spinnerName}`]: true,
|
|
38364
38624
|
'spinner-paused': self.paused || config.getBoolean('_testing'),
|
|
@@ -38457,12 +38717,12 @@ class SplitPane {
|
|
|
38457
38717
|
}
|
|
38458
38718
|
render() {
|
|
38459
38719
|
const mode = getIonMode$1(this);
|
|
38460
|
-
return (hAsync(Host, { key: '
|
|
38720
|
+
return (hAsync(Host, { key: '694e989fafcfe2453e0a83b3cb736efaa1eb4fec', class: {
|
|
38461
38721
|
[mode]: true,
|
|
38462
38722
|
// Used internally for styling
|
|
38463
38723
|
[`split-pane-${mode}`]: true,
|
|
38464
38724
|
'split-pane-visible': this.visible,
|
|
38465
|
-
} }, hAsync("slot", { key: '
|
|
38725
|
+
} }, hAsync("slot", { key: 'dde7e9382b62cc11971aa233cf98c2314ae4f720' })));
|
|
38466
38726
|
}
|
|
38467
38727
|
get el() { return getElement(this); }
|
|
38468
38728
|
static get watchers() { return {
|
|
@@ -38534,10 +38794,10 @@ class Tab {
|
|
|
38534
38794
|
}
|
|
38535
38795
|
render() {
|
|
38536
38796
|
const { tab, active, component } = this;
|
|
38537
|
-
return (hAsync(Host, { key: '
|
|
38797
|
+
return (hAsync(Host, { key: '745262368a7f45244da459f4fa1730a46dd3e257', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
|
|
38538
38798
|
'ion-page': component === undefined,
|
|
38539
38799
|
'tab-hidden': !active,
|
|
38540
|
-
} }, hAsync("slot", { key: '
|
|
38800
|
+
} }, hAsync("slot", { key: '823d09a6f93bf7c0dc74f2b8717d1d3a62df1ad8' })));
|
|
38541
38801
|
}
|
|
38542
38802
|
get el() { return getElement(this); }
|
|
38543
38803
|
static get watchers() { return {
|
|
@@ -38651,11 +38911,11 @@ class TabBar {
|
|
|
38651
38911
|
const { color, translucent, keyboardVisible } = this;
|
|
38652
38912
|
const mode = getIonMode$1(this);
|
|
38653
38913
|
const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
|
|
38654
|
-
return (hAsync(Host, { key: '
|
|
38914
|
+
return (hAsync(Host, { key: '148f65df0818e9d220a9b46db74cb89ab94e62d2', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
|
|
38655
38915
|
[mode]: true,
|
|
38656
38916
|
'tab-bar-translucent': translucent,
|
|
38657
38917
|
'tab-bar-hidden': shouldHide,
|
|
38658
|
-
}) }, hAsync("slot", { key: '
|
|
38918
|
+
}) }, hAsync("slot", { key: 'a64e235f3703662e2dd7a834f752cc5b1490adbc' })));
|
|
38659
38919
|
}
|
|
38660
38920
|
get el() { return getElement(this); }
|
|
38661
38921
|
static get watchers() { return {
|
|
@@ -38753,7 +39013,7 @@ class TabButton {
|
|
|
38753
39013
|
rel,
|
|
38754
39014
|
target,
|
|
38755
39015
|
};
|
|
38756
|
-
return (hAsync(Host, { key: '
|
|
39016
|
+
return (hAsync(Host, { key: '1034b5a928ecec49bd8efec3730ea1b11a579cf3', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
|
|
38757
39017
|
[mode]: true,
|
|
38758
39018
|
'tab-selected': selected,
|
|
38759
39019
|
'tab-disabled': disabled,
|
|
@@ -38765,7 +39025,7 @@ class TabButton {
|
|
|
38765
39025
|
'ion-activatable': true,
|
|
38766
39026
|
'ion-selectable': true,
|
|
38767
39027
|
'ion-focusable': true,
|
|
38768
|
-
} }, hAsync("a", Object.assign({ key: '
|
|
39028
|
+
} }, hAsync("a", Object.assign({ key: '4cc8e695425956ffc7622af27c1b88a45f8a0c68' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), hAsync("span", { key: 'c529c166f557e1a5c744873c075b564c49786a2c', class: "button-inner" }, hAsync("slot", { key: 'f832355934d80267cd6e81e58b9c5afce0b42907' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '90e79bdf38ba1cd89fca9ce63465e26a29b49316', type: "unbounded" }))));
|
|
38769
39029
|
}
|
|
38770
39030
|
get el() { return getElement(this); }
|
|
38771
39031
|
static get style() { return {
|
|
@@ -38956,7 +39216,7 @@ class Tabs {
|
|
|
38956
39216
|
return Array.from(this.el.querySelectorAll('ion-tab'));
|
|
38957
39217
|
}
|
|
38958
39218
|
render() {
|
|
38959
|
-
return (hAsync(Host, { key: '
|
|
39219
|
+
return (hAsync(Host, { key: 'ba04a29fdd02d7c758cbaa98cfc589949872d832', onIonTabButtonClick: this.onTabClicked }, hAsync("slot", { key: 'd5794140152e2c251e567eeb06afc392af74749d', name: "top" }), hAsync("div", { key: '26fb83786637fe7288901fbbdb3694b8bc94329f', class: "tabs-inner" }, hAsync("slot", { key: '60c663a8647e684455b533eaf5fa3908f9333ae9' })), hAsync("slot", { key: '2d9f7d07c8cdc72f5df200fa71fa56a9dd822c4c', name: "bottom" })));
|
|
38960
39220
|
}
|
|
38961
39221
|
get el() { return getElement(this); }
|
|
38962
39222
|
static get style() { return tabsCss(); }
|
|
@@ -38996,9 +39256,9 @@ class Text {
|
|
|
38996
39256
|
}
|
|
38997
39257
|
render() {
|
|
38998
39258
|
const mode = getIonMode$1(this);
|
|
38999
|
-
return (hAsync(Host, { key: '
|
|
39259
|
+
return (hAsync(Host, { key: '41ed8da617ed0e07bbfe96e32a000e1c6503e24e', class: createColorClasses$1(this.color, {
|
|
39000
39260
|
[mode]: true,
|
|
39001
|
-
}) }, hAsync("slot", { key: '
|
|
39261
|
+
}) }, hAsync("slot", { key: 'db8de04a2493537b3037f276b03abd92dfa56847' })));
|
|
39002
39262
|
}
|
|
39003
39263
|
static get style() { return textCss(); }
|
|
39004
39264
|
static get cmpMeta() { return {
|
|
@@ -39459,7 +39719,7 @@ class Textarea {
|
|
|
39459
39719
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
39460
39720
|
*/
|
|
39461
39721
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
|
|
39462
|
-
return (hAsync(Host, { key: '
|
|
39722
|
+
return (hAsync(Host, { key: 'eca1dfed53189408f614661ef3902cdb73d5f5de', class: createColorClasses$1(this.color, {
|
|
39463
39723
|
[mode]: true,
|
|
39464
39724
|
'has-value': hasValue,
|
|
39465
39725
|
'has-focus': hasFocus,
|
|
@@ -39468,7 +39728,7 @@ class Textarea {
|
|
|
39468
39728
|
[`textarea-shape-${shape}`]: shape !== undefined,
|
|
39469
39729
|
[`textarea-label-placement-${labelPlacement}`]: true,
|
|
39470
39730
|
'textarea-disabled': disabled,
|
|
39471
|
-
}) }, hAsync("label", { key: '
|
|
39731
|
+
}) }, hAsync("label", { key: 'd4d835ffedbf8b6de192096e21167ec4f7e01d30', class: "textarea-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: '39b03e26c23473de31a0237543eaf1e0875e6ed9', class: "textarea-wrapper-inner" }, hAsync("div", { key: 'e9e0997e7dc6d25f09e8439d81e138590c33a151', class: "start-slot-wrapper" }, hAsync("slot", { key: '2d88aace11d74196758e40af27a777eebb270019', name: "start" })), hAsync("div", { key: '8434424404f9fe707f9209ac6495a33bae060538', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: '5bb8eaeba76c39bccadb7c041a10fb077c422dcc', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown, "aria-describedby": this.getHintTextID(), "aria-invalid": this.isInvalid ? 'true' : undefined }, this.inheritedAttributes), value)), hAsync("div", { key: '107707676552f8faca3e708285cc3266061a0394', class: "end-slot-wrapper" }, hAsync("slot", { key: 'dc890ffdce898f3d39a315e7bc432840559be466', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: '4554ad09ac0908cea2e90bfa2301b4cd80ac7242', class: "textarea-highlight" })), this.renderBottomContent()));
|
|
39472
39732
|
}
|
|
39473
39733
|
get el() { return getElement(this); }
|
|
39474
39734
|
static get watchers() { return {
|
|
@@ -39537,7 +39797,7 @@ class Thumbnail {
|
|
|
39537
39797
|
registerInstance(this, hostRef);
|
|
39538
39798
|
}
|
|
39539
39799
|
render() {
|
|
39540
|
-
return (hAsync(Host, { key: '
|
|
39800
|
+
return (hAsync(Host, { key: '833e947c683b482a78f8f0df8c9a68e99478bbaa', class: getIonMode$1(this) }, hAsync("slot", { key: '6d1e9e686db88d91379f14121058dbf035d8ded2' })));
|
|
39541
39801
|
}
|
|
39542
39802
|
static get style() { return thumbnailCss(); }
|
|
39543
39803
|
static get cmpMeta() { return {
|
|
@@ -40397,9 +40657,9 @@ class Toast {
|
|
|
40397
40657
|
if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
|
|
40398
40658
|
printIonWarning('[ion-toast] - This toast is using start and end buttons with the stacked toast layout. We recommend following the best practice of using either start or end buttons with the stacked toast layout.', el);
|
|
40399
40659
|
}
|
|
40400
|
-
return (hAsync(Host, Object.assign({ key: '
|
|
40660
|
+
return (hAsync(Host, Object.assign({ key: '2acb2cd2e12ea0082986495929e4a596d4da2f38', tabindex: "-1" }, this.htmlAttributes, { style: {
|
|
40401
40661
|
zIndex: `${60000 + this.overlayIndex}`,
|
|
40402
|
-
}, class: createColorClasses$1(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), hAsync("div", { key: '
|
|
40662
|
+
}, class: createColorClasses$1(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), hAsync("div", { key: '8b24ba5d3d51d1ab94b9bf6bb5d6e4b8bb3248a7', class: wrapperClass, part: "wrapper" }, hAsync("div", { key: 'e1ebdf4f0425cc7b1e2688667ee9a2b3c545804a', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (hAsync("ion-icon", { key: '552b1ab8f4e72882cc8e878579c7a594119677e1', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), hAsync("div", { key: '8ac8d64f632fbedadb180132c83043474466bee0', class: "toast-content", part: "content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
|
|
40403
40663
|
}
|
|
40404
40664
|
get el() { return getElement(this); }
|
|
40405
40665
|
static get watchers() { return {
|
|
@@ -40717,7 +40977,7 @@ class Toggle {
|
|
|
40717
40977
|
const value = this.getValue();
|
|
40718
40978
|
const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
|
|
40719
40979
|
renderHiddenInput(true, el, name, checked ? value : '', disabled);
|
|
40720
|
-
return (hAsync(Host, { key: '
|
|
40980
|
+
return (hAsync(Host, { key: 'ab093ddb505af61685cbb8571af1e765fc0292f8', role: "switch", "aria-checked": `${checked}`, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, onClick: this.onClick, "aria-labelledby": hasLabel ? inputLabelId : null, "aria-label": inheritedAttributes['aria-label'] || null, "aria-disabled": disabled ? 'true' : null, "aria-required": required ? 'true' : undefined, tabindex: disabled ? undefined : 0, onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, class: createColorClasses$1(color, {
|
|
40721
40981
|
[mode]: true,
|
|
40722
40982
|
'in-item': hostContext('ion-item', el),
|
|
40723
40983
|
'toggle-activated': activated,
|
|
@@ -40727,10 +40987,10 @@ class Toggle {
|
|
|
40727
40987
|
[`toggle-alignment-${alignment}`]: alignment !== undefined,
|
|
40728
40988
|
[`toggle-label-placement-${labelPlacement}`]: true,
|
|
40729
40989
|
[`toggle-${rtl}`]: true,
|
|
40730
|
-
}) }, hAsync("label", { key: '
|
|
40990
|
+
}) }, hAsync("label", { key: 'b4b05e458fcbc767e4392ae43e647b075780cad0', class: "toggle-wrapper", htmlFor: inputId }, hAsync("input", Object.assign({ key: 'c09100447011c51d5b49b4400ec7d72012e3bc6f', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, required: required }, inheritedAttributes)), hAsync("div", { key: '71cf059a999ae572a20127b76907e010ace486ad', class: {
|
|
40731
40991
|
'label-text-wrapper': true,
|
|
40732
40992
|
'label-text-wrapper-hidden': !hasLabel,
|
|
40733
|
-
}, part: "label", id: inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: '
|
|
40993
|
+
}, part: "label", id: inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: 'c480b96a0ddd926568f73291d71253d6f74438c7' }), this.renderHintText()), hAsync("div", { key: '96a2cbd1673e051a78f8b2b16535ecd3f0ed4339', class: "native-wrapper" }, this.renderToggleControl()))));
|
|
40734
40994
|
}
|
|
40735
40995
|
get el() { return getElement(this); }
|
|
40736
40996
|
static get watchers() { return {
|
|
@@ -40842,10 +41102,10 @@ class Toolbar {
|
|
|
40842
41102
|
this.childrenStyles.forEach((value) => {
|
|
40843
41103
|
Object.assign(childStyles, value);
|
|
40844
41104
|
});
|
|
40845
|
-
return (hAsync(Host, { key: '
|
|
41105
|
+
return (hAsync(Host, { key: '40bad6fa7e94262438da4bbe037dcf8a5fa2df22', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
|
|
40846
41106
|
[mode]: true,
|
|
40847
41107
|
'in-toolbar': hostContext('ion-toolbar', this.el),
|
|
40848
|
-
})) }, hAsync("div", { key: '
|
|
41108
|
+
})) }, hAsync("div", { key: 'df44c9f0fe3958116ab860b0dad79c53b89f6c59', class: "toolbar-background", part: "background" }), hAsync("div", { key: '2169ffa576875b8d5624211cc0b4bf86191562bc', class: "toolbar-container", part: "container" }, hAsync("slot", { key: 'c8910dcf1ce98ab427fd89c3396a67c2a75bdd07', name: "start" }), hAsync("slot", { key: '05da24d5ef96b9eebd83b534ce02c1f7bcd06680', name: "secondary" }), hAsync("div", { key: '090fea1541e7e2b6ad74a6ded4eadffdb471ccce', class: "toolbar-content", part: "content" }, hAsync("slot", { key: '507e143f92f6fa59ff23d94026411fa2c74f2f8e' })), hAsync("slot", { key: 'f79fdee472e657e26a910cb89d7551943e40e440', name: "primary" }), hAsync("slot", { key: 'dd40fe9ed490cf4346c642e195fdb524dc6cc4f5', name: "end" }))));
|
|
40849
41109
|
}
|
|
40850
41110
|
get el() { return getElement(this); }
|
|
40851
41111
|
static get style() { return {
|
|
@@ -40891,11 +41151,11 @@ class ToolbarTitle {
|
|
|
40891
41151
|
render() {
|
|
40892
41152
|
const mode = getIonMode$1(this);
|
|
40893
41153
|
const size = this.getSize();
|
|
40894
|
-
return (hAsync(Host, { key: '
|
|
41154
|
+
return (hAsync(Host, { key: 'd9317e8e66cb6112717f5a9c252658777efbd873', class: createColorClasses$1(this.color, {
|
|
40895
41155
|
[mode]: true,
|
|
40896
41156
|
[`title-${size}`]: true,
|
|
40897
41157
|
'title-rtl': document.dir === 'rtl',
|
|
40898
|
-
}) }, hAsync("div", { key: '
|
|
41158
|
+
}) }, hAsync("div", { key: 'a4d011d6d409bf006d8efe33667002edb109820a', class: "toolbar-title" }, hAsync("slot", { key: '4ca3303b957a0e5387f1e9058e5adb4c6275afcc' }))));
|
|
40899
41159
|
}
|
|
40900
41160
|
get el() { return getElement(this); }
|
|
40901
41161
|
static get watchers() { return {
|
|
@@ -40975,10 +41235,8 @@ registerComponents([
|
|
|
40975
41235
|
Nav,
|
|
40976
41236
|
NavLink,
|
|
40977
41237
|
Note,
|
|
40978
|
-
Picker$1,
|
|
40979
41238
|
Picker,
|
|
40980
41239
|
PickerColumn,
|
|
40981
|
-
PickerColumnCmp,
|
|
40982
41240
|
PickerColumnOption,
|
|
40983
41241
|
Popover,
|
|
40984
41242
|
ProgressBar,
|