@ionic/core 8.8.14-dev.11784037956.17449639 → 8.8.14-dev.11784216165.1ecbf364
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-img.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-nav.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-router.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-BHrrc-3d.js → p-Buf_7zcy.js} +1 -1
- 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-D4h1H_hh.js +4 -0
- 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-_lHSumhG.js +4 -0
- 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-img.cjs.entry.js +3 -1
- 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 +23 -33
- package/dist/cjs/ion-nav_2.cjs.entry.js +2 -115
- 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 +18 -4
- 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-B9UiYZ4R.js → overlays-DSmSrd_4.js} +27 -30
- 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/img/img.js +6 -1
- package/dist/collection/components/input/input.js +8 -8
- package/dist/collection/components/loading/loading.js +7 -3
- package/dist/collection/components/modal/gestures/sheet.js +0 -8
- package/dist/collection/components/modal/gestures/swipe-to-close.js +0 -8
- package/dist/collection/components/modal/modal.ios.css +0 -8
- package/dist/collection/components/modal/modal.js +23 -17
- package/dist/collection/components/modal/modal.md.css +0 -8
- package/dist/collection/components/nav/nav.js +4 -219
- 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/route/route.js +1 -1
- package/dist/collection/components/router/utils/dom.js +22 -3
- 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 +26 -29
- package/dist/collection/utils/sanitization/index.js +274 -18
- package/dist/collection/utils/select-option-render.js +119 -0
- package/dist/docs.json +497 -1189
- 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-img.entry.js +4 -2
- 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 +23 -33
- package/dist/esm/ion-nav_2.entry.js +3 -116
- 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 +18 -4
- 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-Bmfhux69.js → overlays-DLNOHWNc.js} +28 -31
- package/dist/esm/select-option-render-B8nWZRnd.js +122 -0
- package/dist/html.html-data.json +52 -80
- 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-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-700795f6.entry.js +4 -0
- 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-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-a18dcb3c.entry.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-c474f471.entry.js +4 -0
- package/dist/ionic/{p-cf91e738.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-f718fccb.entry.js +4 -0
- package/dist/ionic/{p-0fa9c382.entry.js → p-fe4aa1db.entry.js} +1 -1
- package/dist/types/components/img/img.d.ts +2 -0
- package/dist/types/components/input/input.d.ts +1 -1
- package/dist/types/components/modal/modal.d.ts +11 -4
- package/dist/types/components/nav/nav-interface.d.ts +0 -1
- package/dist/types/components/nav/nav.d.ts +2 -22
- package/dist/types/components/route/route.d.ts +1 -1
- 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 +74 -303
- 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 +1410 -1292
- package/hydrate/index.mjs +1410 -1292
- 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-B1BWKArA.js +0 -4
- package/components/p-B4PlLGHT.js +0 -4
- package/components/p-BFsEcwW9.js +0 -4
- package/components/p-CFRyvUvJ.js +0 -4
- package/components/p-CU5rbWAW.js +0 -4
- package/components/p-CgLiHbz0.js +0 -4
- package/components/p-MLyEeL3Q.js +0 -4
- package/components/p-PgMVWD8U.js +0 -4
- package/components/p-k_E4tX5Z.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-01f81ea5.entry.js +0 -4
- package/dist/ionic/p-02473803.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-2f529a55.entry.js +0 -4
- package/dist/ionic/p-485fda23.entry.js +0 -4
- package/dist/ionic/p-48fa7fb1.entry.js +0 -4
- package/dist/ionic/p-4baa5b82.entry.js +0 -4
- package/dist/ionic/p-4d9181c7.entry.js +0 -4
- package/dist/ionic/p-50e1194a.entry.js +0 -4
- package/dist/ionic/p-532eb373.entry.js +0 -4
- package/dist/ionic/p-8fce95d5.entry.js +0 -4
- package/dist/ionic/p-B0zdMdR0.js +0 -4
- package/dist/ionic/p-DzWaWHGc.js +0 -4
- package/dist/ionic/p-a21add2f.entry.js +0 -4
- package/dist/ionic/p-ab60b48a.entry.js +0 -4
- package/dist/ionic/p-ec090e0a.entry.js +0 -4
- package/dist/ionic/p-f386f6ae.entry.js +0 -4
- package/dist/ionic/p-f994dc44.entry.js +0 -4
- package/dist/ionic/p-fd76f647.entry.js +0 -4
- package/dist/ionic/p-fda60562.entry.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) {
|
|
@@ -8402,29 +8425,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
|
|
|
8402
8425
|
* to the overlay container.
|
|
8403
8426
|
*/
|
|
8404
8427
|
if (overlay.keyboardClose && (document.activeElement === null || !overlay.el.contains(document.activeElement))) {
|
|
8405
|
-
|
|
8406
|
-
* Some overlays (e.g. modal) put the dialog role and label on the
|
|
8407
|
-
* `.ion-overlay-wrapper` rather than the host. Screen readers need
|
|
8408
|
-
* focus on the element with role="dialog" to properly announce and
|
|
8409
|
-
* navigate the dialog. The `[tabindex]` qualifier ensures we only
|
|
8410
|
-
* target such a wrapper when it is actually focusable; otherwise
|
|
8411
|
-
* (e.g. picker-legacy, whose role="dialog" wrapper has no tabindex)
|
|
8412
|
-
* `focus()` would be a no-op, so we fall back to the host.
|
|
8413
|
-
*/
|
|
8414
|
-
const overlayWrapper = getElementRoot(overlay.el).querySelector('[role="dialog"][tabindex]');
|
|
8415
|
-
const focusTarget = overlayWrapper !== null && overlayWrapper !== void 0 ? overlayWrapper : overlay.el;
|
|
8416
|
-
/**
|
|
8417
|
-
* `preventScroll` keeps this a pure focus move so the viewport does not
|
|
8418
|
-
* jump when the wrapper is partially off-screen (e.g. a sheet modal).
|
|
8419
|
-
* Guard the options call so an older engine that mishandles it can never
|
|
8420
|
-
* reject present(); we fall back to a plain focus() in that case.
|
|
8421
|
-
*/
|
|
8422
|
-
try {
|
|
8423
|
-
focusTarget.focus({ preventScroll: true });
|
|
8424
|
-
}
|
|
8425
|
-
catch (_c) {
|
|
8426
|
-
focusTarget.focus();
|
|
8427
|
-
}
|
|
8428
|
+
overlay.el.focus();
|
|
8428
8429
|
}
|
|
8429
8430
|
/**
|
|
8430
8431
|
* If this overlay was previously dismissed without being
|
|
@@ -8760,6 +8761,539 @@ const createTriggerController = () => {
|
|
|
8760
8761
|
};
|
|
8761
8762
|
const FOCUS_TRAP_DISABLE_CLASS = 'ion-disable-focus-trap';
|
|
8762
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
|
+
|
|
8763
9297
|
const hostContext = (selector, el) => {
|
|
8764
9298
|
return el.closest(selector) !== null;
|
|
8765
9299
|
};
|
|
@@ -9615,7 +10149,7 @@ const createAnimation = (animationId) => {
|
|
|
9615
10149
|
/**
|
|
9616
10150
|
* iOS Action Sheet Enter Animation
|
|
9617
10151
|
*/
|
|
9618
|
-
const iosEnterAnimation$
|
|
10152
|
+
const iosEnterAnimation$5 = (baseEl) => {
|
|
9619
10153
|
const baseAnimation = createAnimation();
|
|
9620
10154
|
const backdropAnimation = createAnimation();
|
|
9621
10155
|
const wrapperAnimation = createAnimation();
|
|
@@ -9639,7 +10173,7 @@ const iosEnterAnimation$6 = (baseEl) => {
|
|
|
9639
10173
|
/**
|
|
9640
10174
|
* iOS Action Sheet Leave Animation
|
|
9641
10175
|
*/
|
|
9642
|
-
const iosLeaveAnimation$
|
|
10176
|
+
const iosLeaveAnimation$5 = (baseEl) => {
|
|
9643
10177
|
const baseAnimation = createAnimation();
|
|
9644
10178
|
const backdropAnimation = createAnimation();
|
|
9645
10179
|
const wrapperAnimation = createAnimation();
|
|
@@ -9696,9 +10230,9 @@ const mdLeaveAnimation$5 = (baseEl) => {
|
|
|
9696
10230
|
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
9697
10231
|
};
|
|
9698
10232
|
|
|
9699
|
-
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)}}`;
|
|
9700
10234
|
|
|
9701
|
-
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}`;
|
|
9702
10236
|
|
|
9703
10237
|
/**
|
|
9704
10238
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
@@ -9795,7 +10329,7 @@ class ActionSheet {
|
|
|
9795
10329
|
async present() {
|
|
9796
10330
|
const unlock = await this.lockController.lock();
|
|
9797
10331
|
await this.delegateController.attachViewToDom();
|
|
9798
|
-
await present(this, 'actionSheetEnter', iosEnterAnimation$
|
|
10332
|
+
await present(this, 'actionSheetEnter', iosEnterAnimation$5, mdEnterAnimation$5);
|
|
9799
10333
|
unlock();
|
|
9800
10334
|
}
|
|
9801
10335
|
/**
|
|
@@ -9812,7 +10346,7 @@ class ActionSheet {
|
|
|
9812
10346
|
*/
|
|
9813
10347
|
async dismiss(data, role) {
|
|
9814
10348
|
const unlock = await this.lockController.lock();
|
|
9815
|
-
const dismissed = await dismiss(this, data, role, 'actionSheetLeave', iosLeaveAnimation$
|
|
10349
|
+
const dismissed = await dismiss(this, data, role, 'actionSheetLeave', iosLeaveAnimation$5, mdLeaveAnimation$5);
|
|
9816
10350
|
if (dismissed) {
|
|
9817
10351
|
this.delegateController.removeViewFromDom();
|
|
9818
10352
|
}
|
|
@@ -9981,6 +10515,10 @@ class ActionSheet {
|
|
|
9981
10515
|
this.gesture = undefined;
|
|
9982
10516
|
}
|
|
9983
10517
|
this.triggerController.removeClickListener();
|
|
10518
|
+
// Clean up aria-hidden if removed without dismiss() being called
|
|
10519
|
+
if (this.presented) {
|
|
10520
|
+
cleanupRootFocusTrapAccessibility();
|
|
10521
|
+
}
|
|
9984
10522
|
}
|
|
9985
10523
|
componentWillLoad() {
|
|
9986
10524
|
var _a;
|
|
@@ -10069,12 +10607,26 @@ class ActionSheet {
|
|
|
10069
10607
|
if (isRadio) {
|
|
10070
10608
|
htmlAttrs['aria-checked'] = isActiveRadio ? 'true' : 'false';
|
|
10071
10609
|
}
|
|
10072
|
-
|
|
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: () => {
|
|
10073
10625
|
if (isRadio) {
|
|
10074
10626
|
this.selectRadioButton(b);
|
|
10075
10627
|
}
|
|
10076
10628
|
this.buttonClick(b);
|
|
10077
|
-
}, 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)));
|
|
10078
10630
|
});
|
|
10079
10631
|
}
|
|
10080
10632
|
render() {
|
|
@@ -10084,12 +10636,12 @@ class ActionSheet {
|
|
|
10084
10636
|
const cancelButton = allButtons.find((b) => b.role === 'cancel');
|
|
10085
10637
|
const buttons = allButtons.filter((b) => b.role !== 'cancel');
|
|
10086
10638
|
const headerID = `action-sheet-${overlayIndex}-header`;
|
|
10087
|
-
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: {
|
|
10088
10640
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
10089
|
-
}, 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: {
|
|
10090
10642
|
'action-sheet-title': true,
|
|
10091
10643
|
'action-sheet-has-sub-title': this.subHeader !== undefined,
|
|
10092
|
-
} }, 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" })));
|
|
10093
10645
|
}
|
|
10094
10646
|
get el() { return getElement(this); }
|
|
10095
10647
|
static get watchers() { return {
|
|
@@ -10138,178 +10690,59 @@ class ActionSheet {
|
|
|
10138
10690
|
"$attrsToReflect$": []
|
|
10139
10691
|
}; }
|
|
10140
10692
|
}
|
|
10141
|
-
const buttonClass$
|
|
10693
|
+
const buttonClass$2 = (button) => {
|
|
10142
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));
|
|
10143
10695
|
};
|
|
10144
10696
|
|
|
10145
10697
|
const ENABLE_HTML_CONTENT_DEFAULT = false;
|
|
10146
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.
|
|
10147
10700
|
/**
|
|
10148
|
-
*
|
|
10149
|
-
*
|
|
10150
|
-
|
|
10151
|
-
|
|
10152
|
-
|
|
10153
|
-
|
|
10154
|
-
|
|
10155
|
-
|
|
10156
|
-
|
|
10157
|
-
|
|
10158
|
-
|
|
10159
|
-
|
|
10160
|
-
|
|
10161
|
-
* fragment in Chrome. If a string
|
|
10162
|
-
* contains onload then we should not
|
|
10163
|
-
* attempt to add this to the fragment.
|
|
10164
|
-
*/
|
|
10165
|
-
if (untrustedString.includes('onload=')) {
|
|
10166
|
-
return '';
|
|
10167
|
-
}
|
|
10168
|
-
/**
|
|
10169
|
-
* Create a document fragment
|
|
10170
|
-
* separate from the main DOM,
|
|
10171
|
-
* create a div to do our work in
|
|
10172
|
-
*/
|
|
10173
|
-
const documentFragment = document.createDocumentFragment();
|
|
10174
|
-
const workingDiv = document.createElement('div');
|
|
10175
|
-
documentFragment.appendChild(workingDiv);
|
|
10176
|
-
workingDiv.innerHTML = untrustedString;
|
|
10177
|
-
/**
|
|
10178
|
-
* Remove any elements
|
|
10179
|
-
* that are blocked
|
|
10180
|
-
*/
|
|
10181
|
-
blockedTags.forEach((blockedTag) => {
|
|
10182
|
-
const getElementsToRemove = documentFragment.querySelectorAll(blockedTag);
|
|
10183
|
-
for (let elementIndex = getElementsToRemove.length - 1; elementIndex >= 0; elementIndex--) {
|
|
10184
|
-
const element = getElementsToRemove[elementIndex];
|
|
10185
|
-
if (element.parentNode) {
|
|
10186
|
-
element.parentNode.removeChild(element);
|
|
10187
|
-
}
|
|
10188
|
-
else {
|
|
10189
|
-
documentFragment.removeChild(element);
|
|
10190
|
-
}
|
|
10191
|
-
/**
|
|
10192
|
-
* We still need to sanitize
|
|
10193
|
-
* the children of this element
|
|
10194
|
-
* as they are left behind
|
|
10195
|
-
*/
|
|
10196
|
-
const childElements = getElementChildren(element);
|
|
10197
|
-
/* eslint-disable-next-line */
|
|
10198
|
-
for (let childIndex = 0; childIndex < childElements.length; childIndex++) {
|
|
10199
|
-
sanitizeElement(childElements[childIndex]);
|
|
10200
|
-
}
|
|
10201
|
-
}
|
|
10202
|
-
});
|
|
10203
|
-
/**
|
|
10204
|
-
* Go through remaining elements and remove
|
|
10205
|
-
* non-allowed attribs
|
|
10206
|
-
*/
|
|
10207
|
-
// IE does not support .children on document fragments, only .childNodes
|
|
10208
|
-
const dfChildren = getElementChildren(documentFragment);
|
|
10209
|
-
/* eslint-disable-next-line */
|
|
10210
|
-
for (let childIndex = 0; childIndex < dfChildren.length; childIndex++) {
|
|
10211
|
-
sanitizeElement(dfChildren[childIndex]);
|
|
10212
|
-
}
|
|
10213
|
-
// Append document fragment to div
|
|
10214
|
-
const fragmentDiv = document.createElement('div');
|
|
10215
|
-
fragmentDiv.appendChild(documentFragment);
|
|
10216
|
-
// First child is always the div we did our work in
|
|
10217
|
-
const getInnerDiv = fragmentDiv.querySelector('div');
|
|
10218
|
-
return getInnerDiv !== null ? getInnerDiv.innerHTML : fragmentDiv.innerHTML;
|
|
10219
|
-
}
|
|
10220
|
-
catch (err) {
|
|
10221
|
-
printIonError('sanitizeDOMString', err);
|
|
10222
|
-
return '';
|
|
10223
|
-
}
|
|
10224
|
-
};
|
|
10225
|
-
/**
|
|
10226
|
-
* Clean up current element based on allowed attributes
|
|
10227
|
-
* and then recursively dig down into any child elements to
|
|
10228
|
-
* clean those up as well
|
|
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`.
|
|
10229
10714
|
*/
|
|
10230
|
-
|
|
10231
|
-
|
|
10232
|
-
|
|
10233
|
-
if (element.nodeType && element.nodeType !== 1) {
|
|
10234
|
-
return;
|
|
10235
|
-
}
|
|
10236
|
-
/**
|
|
10237
|
-
* If attributes is not a NamedNodeMap
|
|
10238
|
-
* then we should remove the element entirely.
|
|
10239
|
-
* This helps avoid DOM Clobbering attacks where
|
|
10240
|
-
* attributes is overridden.
|
|
10241
|
-
*/
|
|
10242
|
-
if (typeof NamedNodeMap !== 'undefined' && !(element.attributes instanceof NamedNodeMap)) {
|
|
10243
|
-
element.remove();
|
|
10244
|
-
return;
|
|
10245
|
-
}
|
|
10246
|
-
for (let i = element.attributes.length - 1; i >= 0; i--) {
|
|
10247
|
-
const attribute = element.attributes.item(i);
|
|
10248
|
-
const attributeName = attribute.name;
|
|
10249
|
-
// remove non-allowed attribs
|
|
10250
|
-
if (!allowedAttributes.includes(attributeName.toLowerCase())) {
|
|
10251
|
-
element.removeAttribute(attributeName);
|
|
10252
|
-
continue;
|
|
10253
|
-
}
|
|
10254
|
-
// clean up any allowed attribs
|
|
10255
|
-
// that attempt to do any JS funny-business
|
|
10256
|
-
const attributeValue = attribute.value;
|
|
10257
|
-
/**
|
|
10258
|
-
* We also need to check the property value
|
|
10259
|
-
* as javascript: can allow special characters
|
|
10260
|
-
* such as 	 and still be valid (i.e. java	script)
|
|
10261
|
-
*/
|
|
10262
|
-
const propertyValue = element[attributeName];
|
|
10263
|
-
/* eslint-disable */
|
|
10264
|
-
if ((attributeValue != null && attributeValue.toLowerCase().includes('javascript:')) ||
|
|
10265
|
-
(propertyValue != null && propertyValue.toLowerCase().includes('javascript:'))) {
|
|
10266
|
-
element.removeAttribute(attributeName);
|
|
10267
|
-
}
|
|
10268
|
-
/* eslint-enable */
|
|
10269
|
-
}
|
|
10270
|
-
/**
|
|
10271
|
-
* Sanitize any nested children
|
|
10272
|
-
*/
|
|
10273
|
-
const childElements = getElementChildren(element);
|
|
10274
|
-
/* eslint-disable-next-line */
|
|
10275
|
-
for (let i = 0; i < childElements.length; i++) {
|
|
10276
|
-
sanitizeElement(childElements[i]);
|
|
10715
|
+
const getOverlayLabelPlacement = (mode, control, interfaceType) => {
|
|
10716
|
+
if (mode === 'ios' && control === 'radio' && interfaceType !== 'modal') {
|
|
10717
|
+
return 'start';
|
|
10277
10718
|
}
|
|
10719
|
+
return 'end';
|
|
10278
10720
|
};
|
|
10279
10721
|
/**
|
|
10280
|
-
*
|
|
10281
|
-
*
|
|
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`.
|
|
10282
10734
|
*/
|
|
10283
|
-
|
|
10284
|
-
|
|
10285
|
-
|
|
10286
|
-
};
|
|
10287
|
-
const isSanitizerEnabled = () => {
|
|
10288
|
-
var _a;
|
|
10289
|
-
const win = window;
|
|
10290
|
-
const config = (_a = win === null || win === void 0 ? void 0 : win.Ionic) === null || _a === void 0 ? void 0 : _a.config;
|
|
10291
|
-
if (config) {
|
|
10292
|
-
if (config.get) {
|
|
10293
|
-
return config.get('sanitizerEnabled', true);
|
|
10294
|
-
}
|
|
10295
|
-
else {
|
|
10296
|
-
return config.sanitizerEnabled === true || config.sanitizerEnabled === undefined;
|
|
10297
|
-
}
|
|
10735
|
+
const getOverlayLabelJustify = (mode, control, interfaceType) => {
|
|
10736
|
+
if (mode === 'ios' && control === 'radio' && interfaceType !== 'modal') {
|
|
10737
|
+
return 'space-between';
|
|
10298
10738
|
}
|
|
10299
|
-
return
|
|
10739
|
+
return 'start';
|
|
10300
10740
|
};
|
|
10301
|
-
const allowedAttributes = ['class', 'id', 'href', 'src', 'name', 'slot'];
|
|
10302
|
-
const blockedTags = ['script', 'style', 'iframe', 'meta', 'link', 'object', 'embed'];
|
|
10303
|
-
class IonicSafeString {
|
|
10304
|
-
constructor(value) {
|
|
10305
|
-
this.value = value;
|
|
10306
|
-
}
|
|
10307
|
-
}
|
|
10308
10741
|
|
|
10309
10742
|
/**
|
|
10310
10743
|
* iOS Alert Enter Animation
|
|
10311
10744
|
*/
|
|
10312
|
-
const iosEnterAnimation$
|
|
10745
|
+
const iosEnterAnimation$4 = (baseEl) => {
|
|
10313
10746
|
const baseAnimation = createAnimation();
|
|
10314
10747
|
const backdropAnimation = createAnimation();
|
|
10315
10748
|
const wrapperAnimation = createAnimation();
|
|
@@ -10334,7 +10767,7 @@ const iosEnterAnimation$5 = (baseEl) => {
|
|
|
10334
10767
|
/**
|
|
10335
10768
|
* iOS Alert Leave Animation
|
|
10336
10769
|
*/
|
|
10337
|
-
const iosLeaveAnimation$
|
|
10770
|
+
const iosLeaveAnimation$4 = (baseEl) => {
|
|
10338
10771
|
const baseAnimation = createAnimation();
|
|
10339
10772
|
const backdropAnimation = createAnimation();
|
|
10340
10773
|
const wrapperAnimation = createAnimation();
|
|
@@ -10391,9 +10824,9 @@ const mdLeaveAnimation$4 = (baseEl) => {
|
|
|
10391
10824
|
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
10392
10825
|
};
|
|
10393
10826
|
|
|
10394
|
-
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)}`;
|
|
10395
10828
|
|
|
10396
|
-
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)}}`;
|
|
10397
10830
|
|
|
10398
10831
|
// TODO(FW-2832): types
|
|
10399
10832
|
/**
|
|
@@ -10567,22 +11000,7 @@ class Alert {
|
|
|
10567
11000
|
this.inputType = inputTypes.values().next().value;
|
|
10568
11001
|
this.processedInputs = inputs.map((i, index) => {
|
|
10569
11002
|
var _a;
|
|
10570
|
-
return ({
|
|
10571
|
-
type: i.type || 'text',
|
|
10572
|
-
name: i.name || `${index}`,
|
|
10573
|
-
placeholder: i.placeholder || '',
|
|
10574
|
-
value: i.value,
|
|
10575
|
-
label: i.label,
|
|
10576
|
-
checked: !!i.checked,
|
|
10577
|
-
disabled: !!i.disabled,
|
|
10578
|
-
id: i.id || `alert-input-${this.overlayIndex}-${index}`,
|
|
10579
|
-
handler: i.handler,
|
|
10580
|
-
min: i.min,
|
|
10581
|
-
max: i.max,
|
|
10582
|
-
cssClass: (_a = i.cssClass) !== null && _a !== void 0 ? _a : '',
|
|
10583
|
-
attributes: i.attributes || {},
|
|
10584
|
-
tabindex: i.type === 'radio' && i !== focusable ? -1 : 0,
|
|
10585
|
-
});
|
|
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 });
|
|
10586
11004
|
});
|
|
10587
11005
|
}
|
|
10588
11006
|
connectedCallback() {
|
|
@@ -10610,6 +11028,10 @@ class Alert {
|
|
|
10610
11028
|
this.gesture.destroy();
|
|
10611
11029
|
this.gesture = undefined;
|
|
10612
11030
|
}
|
|
11031
|
+
// Clean up aria-hidden if removed without dismiss() being called
|
|
11032
|
+
if (this.presented) {
|
|
11033
|
+
cleanupRootFocusTrapAccessibility();
|
|
11034
|
+
}
|
|
10613
11035
|
(_a = this.buttonGroupResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
10614
11036
|
this.buttonGroupResizeObserver = undefined;
|
|
10615
11037
|
}
|
|
@@ -10649,7 +11071,7 @@ class Alert {
|
|
|
10649
11071
|
async present() {
|
|
10650
11072
|
const unlock = await this.lockController.lock();
|
|
10651
11073
|
await this.delegateController.attachViewToDom();
|
|
10652
|
-
await present(this, 'alertEnter', iosEnterAnimation$
|
|
11074
|
+
await present(this, 'alertEnter', iosEnterAnimation$4, mdEnterAnimation$4).then(() => {
|
|
10653
11075
|
var _a, _b;
|
|
10654
11076
|
/**
|
|
10655
11077
|
* Check if alert has only one button and no inputs.
|
|
@@ -10680,7 +11102,7 @@ class Alert {
|
|
|
10680
11102
|
*/
|
|
10681
11103
|
async dismiss(data, role) {
|
|
10682
11104
|
const unlock = await this.lockController.lock();
|
|
10683
|
-
const dismissed = await dismiss(this, data, role, 'alertLeave', iosLeaveAnimation$
|
|
11105
|
+
const dismissed = await dismiss(this, data, role, 'alertLeave', iosLeaveAnimation$4, mdLeaveAnimation$4);
|
|
10684
11106
|
if (dismissed) {
|
|
10685
11107
|
this.delegateController.removeViewFromDom();
|
|
10686
11108
|
}
|
|
@@ -10778,14 +11200,61 @@ class Alert {
|
|
|
10778
11200
|
if (inputs.length === 0) {
|
|
10779
11201
|
return null;
|
|
10780
11202
|
}
|
|
10781
|
-
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
|
+
})));
|
|
10782
11227
|
}
|
|
10783
11228
|
renderRadio() {
|
|
10784
11229
|
const inputs = this.processedInputs;
|
|
11230
|
+
const mode = getIonMode$1(this);
|
|
10785
11231
|
if (inputs.length === 0) {
|
|
10786
11232
|
return null;
|
|
10787
11233
|
}
|
|
10788
|
-
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
|
+
})));
|
|
10789
11258
|
}
|
|
10790
11259
|
renderInput() {
|
|
10791
11260
|
const inputs = this.processedInputs;
|
|
@@ -10865,7 +11334,7 @@ class Alert {
|
|
|
10865
11334
|
'alert-button-group': true,
|
|
10866
11335
|
'alert-button-group-vertical': buttons.length > 2 || this.isButtonGroupWrapped,
|
|
10867
11336
|
};
|
|
10868
|
-
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))))));
|
|
10869
11338
|
}
|
|
10870
11339
|
renderAlertMessage(msgId) {
|
|
10871
11340
|
const { customHTMLEnabled, message } = this;
|
|
@@ -10888,9 +11357,9 @@ class Alert {
|
|
|
10888
11357
|
* If neither are defined, do not set aria-labelledby.
|
|
10889
11358
|
*/
|
|
10890
11359
|
const ariaLabelledBy = header && subHeader ? `${hdrId} ${subHdrId}` : header ? hdrId : subHeader ? subHdrId : null;
|
|
10891
|
-
return (hAsync(Host, { key: '
|
|
11360
|
+
return (hAsync(Host, { key: '022f3463b8e6c52064b90ec304c524847c3d5ad3', tabindex: "-1", style: {
|
|
10892
11361
|
zIndex: `${20000 + overlayIndex}`,
|
|
10893
|
-
}, 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" })));
|
|
10894
11363
|
}
|
|
10895
11364
|
get el() { return getElement(this); }
|
|
10896
11365
|
static get watchers() { return {
|
|
@@ -10948,7 +11417,7 @@ const inputClass = (input) => {
|
|
|
10948
11417
|
var _a, _b, _c;
|
|
10949
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() : ''));
|
|
10950
11419
|
};
|
|
10951
|
-
const buttonClass$
|
|
11420
|
+
const buttonClass$1 = (button) => {
|
|
10952
11421
|
return Object.assign({ 'alert-button': true, 'ion-focusable': true, 'ion-activatable': true, [`alert-button-role-${button.role}`]: button.role !== undefined }, getClassMap(button.cssClass));
|
|
10953
11422
|
};
|
|
10954
11423
|
|
|
@@ -18733,6 +19202,8 @@ const createColorClasses = (color) => {
|
|
|
18733
19202
|
const imgCss = () => `:host{display:block;-o-object-fit:contain;object-fit:contain}img{display:block;width:100%;height:100%;-o-object-fit:inherit;object-fit:inherit;-o-object-position:inherit;object-position:inherit}`;
|
|
18734
19203
|
|
|
18735
19204
|
/**
|
|
19205
|
+
* @deprecated
|
|
19206
|
+
*
|
|
18736
19207
|
* @part image - The inner `img` element.
|
|
18737
19208
|
*/
|
|
18738
19209
|
class Img {
|
|
@@ -18756,6 +19227,8 @@ class Img {
|
|
|
18756
19227
|
this.inheritedAttributes = inheritAttributes$1(this.el, ['draggable']);
|
|
18757
19228
|
}
|
|
18758
19229
|
componentDidLoad() {
|
|
19230
|
+
printIonWarning('[ion-img] - This component is deprecated and will be removed in Ionic v10. ' +
|
|
19231
|
+
'Use a native <img> with the loading="lazy" attribute instead.', this.el);
|
|
18759
19232
|
this.addIO();
|
|
18760
19233
|
}
|
|
18761
19234
|
disconnectedCallback() {
|
|
@@ -18808,7 +19281,7 @@ class Img {
|
|
|
18808
19281
|
render() {
|
|
18809
19282
|
const { loadSrc, alt, onLoad, loadError, inheritedAttributes } = this;
|
|
18810
19283
|
const { draggable } = inheritedAttributes;
|
|
18811
|
-
return (hAsync(Host, { key: '
|
|
19284
|
+
return (hAsync(Host, { key: '57bfb44d9850381fe7b6fcf0c9019b03f7ef86ec', class: getIonMode$1(this) }, hAsync("img", { key: '888ec06a266fa2751fc0147ede6a567f4e2b29a6', decoding: "async", src: loadSrc, alt: alt, onLoad: onLoad, onError: loadError, part: "image", draggable: isDraggable(draggable) })));
|
|
18812
19285
|
}
|
|
18813
19286
|
get el() { return getElement(this); }
|
|
18814
19287
|
static get watchers() { return {
|
|
@@ -19312,7 +19785,7 @@ class Input {
|
|
|
19312
19785
|
/**
|
|
19313
19786
|
* Whether auto correction should be enabled when the user is entering/editing the text value.
|
|
19314
19787
|
*/
|
|
19315
|
-
this.autocorrect =
|
|
19788
|
+
this.autocorrect = false;
|
|
19316
19789
|
/**
|
|
19317
19790
|
* Sets the [`autofocus` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus) on the native input element.
|
|
19318
19791
|
*
|
|
@@ -19769,7 +20242,7 @@ class Input {
|
|
|
19769
20242
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
19770
20243
|
*/
|
|
19771
20244
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
|
|
19772
|
-
return (hAsync(Host, { key: '
|
|
20245
|
+
return (hAsync(Host, { key: '6a05f61339d8045285d5820c2508296cc842c210', class: createColorClasses$1(this.color, {
|
|
19773
20246
|
[mode]: true,
|
|
19774
20247
|
'has-value': hasValue,
|
|
19775
20248
|
'has-focus': hasFocus,
|
|
@@ -19780,14 +20253,14 @@ class Input {
|
|
|
19780
20253
|
'in-item': inItem,
|
|
19781
20254
|
'in-item-color': hostContext('ion-item.ion-color', this.el),
|
|
19782
20255
|
'input-disabled': disabled,
|
|
19783
|
-
}) }, hAsync("label", { key: '
|
|
20256
|
+
}) }, 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) => {
|
|
19784
20257
|
/**
|
|
19785
20258
|
* This prevents mobile browsers from
|
|
19786
20259
|
* blurring the input when the clear
|
|
19787
20260
|
* button is activated.
|
|
19788
20261
|
*/
|
|
19789
20262
|
ev.preventDefault();
|
|
19790
|
-
}, onClick: this.clearTextInput }, hAsync("ion-icon", { key: '
|
|
20263
|
+
}, 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()));
|
|
19791
20264
|
}
|
|
19792
20265
|
get el() { return getElement(this); }
|
|
19793
20266
|
static get watchers() { return {
|
|
@@ -19815,7 +20288,7 @@ class Input {
|
|
|
19815
20288
|
"color": [513],
|
|
19816
20289
|
"autocapitalize": [1],
|
|
19817
20290
|
"autocomplete": [1],
|
|
19818
|
-
"autocorrect": [
|
|
20291
|
+
"autocorrect": [4],
|
|
19819
20292
|
"autofocus": [4],
|
|
19820
20293
|
"clearInput": [4, "clear-input"],
|
|
19821
20294
|
"clearInputIcon": [1, "clear-input-icon"],
|
|
@@ -21819,7 +22292,7 @@ class ListHeader {
|
|
|
21819
22292
|
/**
|
|
21820
22293
|
* iOS Loading Enter Animation
|
|
21821
22294
|
*/
|
|
21822
|
-
const iosEnterAnimation$
|
|
22295
|
+
const iosEnterAnimation$3 = (baseEl) => {
|
|
21823
22296
|
const baseAnimation = createAnimation();
|
|
21824
22297
|
const backdropAnimation = createAnimation();
|
|
21825
22298
|
const wrapperAnimation = createAnimation();
|
|
@@ -21844,7 +22317,7 @@ const iosEnterAnimation$4 = (baseEl) => {
|
|
|
21844
22317
|
/**
|
|
21845
22318
|
* iOS Loading Leave Animation
|
|
21846
22319
|
*/
|
|
21847
|
-
const iosLeaveAnimation$
|
|
22320
|
+
const iosLeaveAnimation$3 = (baseEl) => {
|
|
21848
22321
|
const baseAnimation = createAnimation();
|
|
21849
22322
|
const backdropAnimation = createAnimation();
|
|
21850
22323
|
const wrapperAnimation = createAnimation();
|
|
@@ -22017,6 +22490,10 @@ class Loading {
|
|
|
22017
22490
|
}
|
|
22018
22491
|
disconnectedCallback() {
|
|
22019
22492
|
this.triggerController.removeClickListener();
|
|
22493
|
+
// Clean up aria-hidden if removed without dismiss() being called
|
|
22494
|
+
if (this.presented) {
|
|
22495
|
+
cleanupRootFocusTrapAccessibility();
|
|
22496
|
+
}
|
|
22020
22497
|
}
|
|
22021
22498
|
/**
|
|
22022
22499
|
* Present the loading overlay after it has been created.
|
|
@@ -22024,7 +22501,7 @@ class Loading {
|
|
|
22024
22501
|
async present() {
|
|
22025
22502
|
const unlock = await this.lockController.lock();
|
|
22026
22503
|
await this.delegateController.attachViewToDom();
|
|
22027
|
-
await present(this, 'loadingEnter', iosEnterAnimation$
|
|
22504
|
+
await present(this, 'loadingEnter', iosEnterAnimation$3, mdEnterAnimation$3);
|
|
22028
22505
|
if (this.duration > 0) {
|
|
22029
22506
|
this.durationTimeout = setTimeout(() => this.dismiss(), this.duration + 10);
|
|
22030
22507
|
}
|
|
@@ -22047,7 +22524,7 @@ class Loading {
|
|
|
22047
22524
|
if (this.durationTimeout) {
|
|
22048
22525
|
clearTimeout(this.durationTimeout);
|
|
22049
22526
|
}
|
|
22050
|
-
const dismissed = await dismiss(this, data, role, 'loadingLeave', iosLeaveAnimation$
|
|
22527
|
+
const dismissed = await dismiss(this, data, role, 'loadingLeave', iosLeaveAnimation$3, mdLeaveAnimation$3);
|
|
22051
22528
|
if (dismissed) {
|
|
22052
22529
|
this.delegateController.removeViewFromDom();
|
|
22053
22530
|
}
|
|
@@ -22082,9 +22559,9 @@ class Loading {
|
|
|
22082
22559
|
* Otherwise, don't set aria-labelledby.
|
|
22083
22560
|
*/
|
|
22084
22561
|
const ariaLabelledBy = message !== undefined ? msgId : null;
|
|
22085
|
-
return (hAsync(Host, Object.assign({ key: '
|
|
22562
|
+
return (hAsync(Host, Object.assign({ key: 'ab48bfcee8f7e3e33847a2f262fdc08b9ea804ca', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
|
|
22086
22563
|
zIndex: `${40000 + this.overlayIndex}`,
|
|
22087
|
-
}, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), hAsync("ion-backdrop", { key: '
|
|
22564
|
+
}, 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" })));
|
|
22088
22565
|
}
|
|
22089
22566
|
get el() { return getElement(this); }
|
|
22090
22567
|
static get watchers() { return {
|
|
@@ -24065,15 +24542,8 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onD
|
|
|
24065
24542
|
}
|
|
24066
24543
|
return false;
|
|
24067
24544
|
};
|
|
24068
|
-
/**
|
|
24069
|
-
* In Firefox, pressing over a text caret in the focusable wrapper can
|
|
24070
|
-
* start a native drag that swallows the gesture's pointer events.
|
|
24071
|
-
* Cancel native drag while the gesture is active.
|
|
24072
|
-
*/
|
|
24073
|
-
const preventNativeDragStart = (ev) => ev.preventDefault();
|
|
24074
24545
|
const onStart = (detail) => {
|
|
24075
24546
|
const { deltaY } = detail;
|
|
24076
|
-
el.addEventListener('dragstart', preventNativeDragStart);
|
|
24077
24547
|
/**
|
|
24078
24548
|
* Get the initial scrollY value so
|
|
24079
24549
|
* that we can correctly reset the scrollY
|
|
@@ -24176,7 +24646,6 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onD
|
|
|
24176
24646
|
onDragMove(eventDetail);
|
|
24177
24647
|
};
|
|
24178
24648
|
const onEnd = (detail) => {
|
|
24179
|
-
el.removeEventListener('dragstart', preventNativeDragStart);
|
|
24180
24649
|
const velocity = detail.velocityY;
|
|
24181
24650
|
const step = detail.deltaY / height;
|
|
24182
24651
|
const isAttemptingDismissWithCanDismiss = step >= 0 && canDismissBlocksGesture;
|
|
@@ -24366,7 +24835,7 @@ const createEnterAnimation$1 = () => {
|
|
|
24366
24835
|
/**
|
|
24367
24836
|
* iOS Modal Enter Animation for the Card presentation style
|
|
24368
24837
|
*/
|
|
24369
|
-
const iosEnterAnimation$
|
|
24838
|
+
const iosEnterAnimation$2 = (baseEl, opts) => {
|
|
24370
24839
|
const { presentingEl, currentBreakpoint, expandToScroll } = opts;
|
|
24371
24840
|
const root = getElementRoot(baseEl);
|
|
24372
24841
|
const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
|
|
@@ -24459,7 +24928,7 @@ const createLeaveAnimation$1 = () => {
|
|
|
24459
24928
|
/**
|
|
24460
24929
|
* iOS Modal Leave Animation
|
|
24461
24930
|
*/
|
|
24462
|
-
const iosLeaveAnimation$
|
|
24931
|
+
const iosLeaveAnimation$2 = (baseEl, opts, duration = 500) => {
|
|
24463
24932
|
const { presentingEl, currentBreakpoint } = opts;
|
|
24464
24933
|
const root = getElementRoot(baseEl);
|
|
24465
24934
|
const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation$1();
|
|
@@ -24959,14 +25428,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
24959
25428
|
}
|
|
24960
25429
|
return true;
|
|
24961
25430
|
};
|
|
24962
|
-
/**
|
|
24963
|
-
* In Firefox, pressing over a text caret in the focusable wrapper can
|
|
24964
|
-
* start a native drag that swallows the gesture's pointer events.
|
|
24965
|
-
* Cancel native drag while the gesture is active.
|
|
24966
|
-
*/
|
|
24967
|
-
const preventNativeDragStart = (ev) => ev.preventDefault();
|
|
24968
25431
|
const onStart = (detail) => {
|
|
24969
|
-
baseEl.addEventListener('dragstart', preventNativeDragStart);
|
|
24970
25432
|
/**
|
|
24971
25433
|
* If canDismiss is anything other than `true`
|
|
24972
25434
|
* then users should be able to swipe down
|
|
@@ -25093,7 +25555,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
25093
25555
|
onDragMove(eventDetail);
|
|
25094
25556
|
};
|
|
25095
25557
|
const onEnd = (detail) => {
|
|
25096
|
-
baseEl.removeEventListener('dragstart', preventNativeDragStart);
|
|
25097
25558
|
const snapBreakpoint = calculateSnapBreakpoint(detail.deltaY);
|
|
25098
25559
|
const eventDetail = {
|
|
25099
25560
|
currentY: detail.currentY,
|
|
@@ -25570,9 +26031,9 @@ const clearSafeAreaOverrides = (hostEl) => {
|
|
|
25570
26031
|
hostEl.style.removeProperty('--ion-safe-area-right');
|
|
25571
26032
|
};
|
|
25572
26033
|
|
|
25573
|
-
const modalIosCss = () => `:host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;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;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);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);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-
|
|
26034
|
+
const modalIosCss = () => `:host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;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;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);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);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:""}:host(.modal-sheet){--height:calc(100% - (var(--ion-modal-offset-top, 0px) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}`;
|
|
25574
26035
|
|
|
25575
|
-
const modalMdCss = () => `:host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;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;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);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);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-
|
|
26036
|
+
const modalMdCss = () => `:host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;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;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);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);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:""}:host(.modal-sheet){--height:calc(100% - (var(--ion-modal-offset-top, 0px) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}`;
|
|
25576
26037
|
|
|
25577
26038
|
// TODO(FW-2832): types
|
|
25578
26039
|
/**
|
|
@@ -25642,13 +26103,20 @@ class Modal {
|
|
|
25642
26103
|
/**
|
|
25643
26104
|
* The interaction behavior for the sheet modal when the handle is pressed.
|
|
25644
26105
|
*
|
|
25645
|
-
*
|
|
25646
|
-
*
|
|
26106
|
+
* Handle behavior is unavailable when the `handle` property is set to
|
|
26107
|
+
* `false` or when the `breakpoints` property is not set (using a
|
|
26108
|
+
* fullscreen or card modal).
|
|
26109
|
+
*
|
|
26110
|
+
* Set to `"cycle"` to make the handle focusable and let the sheet modal
|
|
26111
|
+
* cycle between available breakpoints when pressed. This keeps the sheet
|
|
26112
|
+
* operable with assistive technology.
|
|
25647
26113
|
*
|
|
25648
|
-
*
|
|
25649
|
-
*
|
|
26114
|
+
* Set to `"none"` to make the handle purely decorative when pressed and
|
|
26115
|
+
* removed from the tab order.
|
|
26116
|
+
*
|
|
26117
|
+
* Defaults to `"cycle"`.
|
|
25650
26118
|
*/
|
|
25651
|
-
this.handleBehavior = '
|
|
26119
|
+
this.handleBehavior = 'cycle';
|
|
25652
26120
|
/**
|
|
25653
26121
|
* If `true`, the modal will be dismissed when the backdrop is clicked.
|
|
25654
26122
|
*/
|
|
@@ -25840,6 +26308,10 @@ class Modal {
|
|
|
25840
26308
|
// Also called in dismiss() — intentional dual cleanup covers both
|
|
25841
26309
|
// dismiss-then-remove and direct DOM removal without dismiss.
|
|
25842
26310
|
this.cleanupSafeAreaOverrides();
|
|
26311
|
+
// Clean up aria-hidden if removed without dismiss() being called
|
|
26312
|
+
if (this.presented) {
|
|
26313
|
+
cleanupRootFocusTrapAccessibility();
|
|
26314
|
+
}
|
|
25843
26315
|
}
|
|
25844
26316
|
componentWillLoad() {
|
|
25845
26317
|
var _a;
|
|
@@ -26016,7 +26488,7 @@ class Modal {
|
|
|
26016
26488
|
this.statusBarStyle = await StatusBar.getStyle();
|
|
26017
26489
|
setCardStatusBarDark();
|
|
26018
26490
|
}
|
|
26019
|
-
await present(this, 'modalEnter', iosEnterAnimation$
|
|
26491
|
+
await present(this, 'modalEnter', iosEnterAnimation$2, mdEnterAnimation$2, {
|
|
26020
26492
|
presentingEl: presentingElement,
|
|
26021
26493
|
currentBreakpoint: this.initialBreakpoint,
|
|
26022
26494
|
backdropBreakpoint: this.backdropBreakpoint,
|
|
@@ -26078,7 +26550,7 @@ class Modal {
|
|
|
26078
26550
|
// All of the elements needed for the swipe gesture
|
|
26079
26551
|
// should be in the DOM and referenced by now, except
|
|
26080
26552
|
// for the presenting el
|
|
26081
|
-
const animationBuilder = this.leaveAnimation || config.get('modalLeave', iosLeaveAnimation$
|
|
26553
|
+
const animationBuilder = this.leaveAnimation || config.get('modalLeave', iosLeaveAnimation$2);
|
|
26082
26554
|
const ani = (this.animation = animationBuilder(el, {
|
|
26083
26555
|
presentingEl: this.presentingElement,
|
|
26084
26556
|
expandToScroll: this.expandToScroll,
|
|
@@ -26097,7 +26569,7 @@ class Modal {
|
|
|
26097
26569
|
if (!wrapperEl || initialBreakpoint === undefined) {
|
|
26098
26570
|
return;
|
|
26099
26571
|
}
|
|
26100
|
-
const animationBuilder = this.enterAnimation || config.get('modalEnter', iosEnterAnimation$
|
|
26572
|
+
const animationBuilder = this.enterAnimation || config.get('modalEnter', iosEnterAnimation$2);
|
|
26101
26573
|
const ani = (this.animation = animationBuilder(this.el, {
|
|
26102
26574
|
presentingEl: this.presentingElement,
|
|
26103
26575
|
currentBreakpoint: initialBreakpoint,
|
|
@@ -26287,7 +26759,7 @@ class Modal {
|
|
|
26287
26759
|
window.removeEventListener(KEYBOARD_DID_OPEN, this.keyboardOpenCallback);
|
|
26288
26760
|
this.keyboardOpenCallback = undefined;
|
|
26289
26761
|
}
|
|
26290
|
-
const dismissed = await dismiss(this, data, role, 'modalLeave', iosLeaveAnimation$
|
|
26762
|
+
const dismissed = await dismiss(this, data, role, 'modalLeave', iosLeaveAnimation$2, mdLeaveAnimation$2, {
|
|
26291
26763
|
presentingEl: presentingElement,
|
|
26292
26764
|
currentBreakpoint: (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : this.initialBreakpoint,
|
|
26293
26765
|
backdropBreakpoint: this.backdropBreakpoint,
|
|
@@ -26719,25 +27191,20 @@ class Modal {
|
|
|
26719
27191
|
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
|
26720
27192
|
const isHandleCycle = handleBehavior === 'cycle';
|
|
26721
27193
|
const isSheetModalWithHandle = isSheetModal && showHandle;
|
|
26722
|
-
return (hAsync(Host, Object.assign({ key: '
|
|
27194
|
+
return (hAsync(Host, Object.assign({ key: '528f9e354f470e22563938e7531e3f23a97e4200', "no-router": true,
|
|
26723
27195
|
// Allow the modal to be navigable when the handle is focusable
|
|
26724
27196
|
tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
|
|
26725
27197
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
26726
|
-
}, 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: '
|
|
27198
|
+
}, 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',
|
|
26727
27199
|
/*
|
|
26728
27200
|
role and aria-modal must be used on the
|
|
26729
27201
|
same element. They must also be set inside the
|
|
26730
27202
|
shadow DOM otherwise ion-button will not be highlighted
|
|
26731
27203
|
when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
|
|
26732
|
-
|
|
26733
|
-
tabIndex={-1} is required so present() can move focus to this
|
|
26734
|
-
element (which carries the dialog role) instead of the role-less
|
|
26735
|
-
host. role="dialog" alone does not make an element focusable, so
|
|
26736
|
-
without the tabindex focus() would be a no-op.
|
|
26737
27204
|
*/
|
|
26738
|
-
role: "dialog" }, inheritedAttributes, { "aria-modal": "true",
|
|
27205
|
+
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",
|
|
26739
27206
|
// Prevents the handle from receiving keyboard focus when it does not cycle
|
|
26740
|
-
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: '
|
|
27207
|
+
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 }))));
|
|
26741
27208
|
}
|
|
26742
27209
|
get el() { return getElement(this); }
|
|
26743
27210
|
static get watchers() { return {
|
|
@@ -26840,15 +27307,6 @@ class ViewController {
|
|
|
26840
27307
|
this.state = VIEW_STATE_DESTROYED;
|
|
26841
27308
|
}
|
|
26842
27309
|
}
|
|
26843
|
-
const matches = (view, id, params) => {
|
|
26844
|
-
if (!view) {
|
|
26845
|
-
return false;
|
|
26846
|
-
}
|
|
26847
|
-
if (view.component !== id) {
|
|
26848
|
-
return false;
|
|
26849
|
-
}
|
|
26850
|
-
return shallowEqualStringMap(view.params, params);
|
|
26851
|
-
};
|
|
26852
27310
|
const convertToView = (page, params) => {
|
|
26853
27311
|
if (!page) {
|
|
26854
27312
|
return null;
|
|
@@ -26882,7 +27340,6 @@ class Nav {
|
|
|
26882
27340
|
this.ionNavDidChange = createEvent(this, "ionNavDidChange", 3);
|
|
26883
27341
|
this.transInstr = [];
|
|
26884
27342
|
this.gestureOrAnimationInProgress = false;
|
|
26885
|
-
this.useRouter = false;
|
|
26886
27343
|
this.isTransitioning = false;
|
|
26887
27344
|
this.destroyed = false;
|
|
26888
27345
|
this.views = [];
|
|
@@ -26908,14 +27365,9 @@ class Nav {
|
|
|
26908
27365
|
*/
|
|
26909
27366
|
return;
|
|
26910
27367
|
}
|
|
26911
|
-
|
|
26912
|
-
if (this.root !== undefined) {
|
|
26913
|
-
this.setRoot(this.root, this.rootParams);
|
|
26914
|
-
}
|
|
26915
|
-
}
|
|
27368
|
+
this.setRoot(this.root, this.rootParams);
|
|
26916
27369
|
}
|
|
26917
27370
|
componentWillLoad() {
|
|
26918
|
-
this.useRouter = document.querySelector('ion-router') !== null && this.el.closest('[no-router]') === null;
|
|
26919
27371
|
if (this.swipeGesture === undefined) {
|
|
26920
27372
|
const mode = getIonMode$1(this);
|
|
26921
27373
|
this.swipeGesture = config.getBoolean('swipeBackEnabled', mode === 'ios');
|
|
@@ -27080,78 +27532,6 @@ class Nav {
|
|
|
27080
27532
|
opts,
|
|
27081
27533
|
}, done);
|
|
27082
27534
|
}
|
|
27083
|
-
/**
|
|
27084
|
-
* Called by the router to update the view.
|
|
27085
|
-
*
|
|
27086
|
-
* @param id The component tag.
|
|
27087
|
-
* @param params The component params.
|
|
27088
|
-
* @param direction A direction hint.
|
|
27089
|
-
* @param animation an AnimationBuilder.
|
|
27090
|
-
*
|
|
27091
|
-
* @return the status.
|
|
27092
|
-
* @internal
|
|
27093
|
-
*/
|
|
27094
|
-
setRouteId(id, params, direction, animation) {
|
|
27095
|
-
const active = this.getActiveSync();
|
|
27096
|
-
if (matches(active, id, params)) {
|
|
27097
|
-
return Promise.resolve({
|
|
27098
|
-
changed: false,
|
|
27099
|
-
element: active.element,
|
|
27100
|
-
});
|
|
27101
|
-
}
|
|
27102
|
-
let resolve;
|
|
27103
|
-
const promise = new Promise((r) => (resolve = r));
|
|
27104
|
-
let finish;
|
|
27105
|
-
const commonOpts = {
|
|
27106
|
-
updateURL: false,
|
|
27107
|
-
viewIsReady: (enteringEl) => {
|
|
27108
|
-
let mark;
|
|
27109
|
-
const p = new Promise((r) => (mark = r));
|
|
27110
|
-
resolve({
|
|
27111
|
-
changed: true,
|
|
27112
|
-
element: enteringEl,
|
|
27113
|
-
markVisible: async () => {
|
|
27114
|
-
mark();
|
|
27115
|
-
await finish;
|
|
27116
|
-
},
|
|
27117
|
-
});
|
|
27118
|
-
return p;
|
|
27119
|
-
},
|
|
27120
|
-
};
|
|
27121
|
-
if (direction === 'root') {
|
|
27122
|
-
finish = this.setRoot(id, params, commonOpts);
|
|
27123
|
-
}
|
|
27124
|
-
else {
|
|
27125
|
-
// Look for a view matching the target in the view stack.
|
|
27126
|
-
const viewController = this.views.find((v) => matches(v, id, params));
|
|
27127
|
-
if (viewController) {
|
|
27128
|
-
finish = this.popTo(viewController, Object.assign(Object.assign({}, commonOpts), { direction: 'back', animationBuilder: animation }));
|
|
27129
|
-
}
|
|
27130
|
-
else if (direction === 'forward') {
|
|
27131
|
-
finish = this.push(id, params, Object.assign(Object.assign({}, commonOpts), { animationBuilder: animation }));
|
|
27132
|
-
}
|
|
27133
|
-
else if (direction === 'back') {
|
|
27134
|
-
finish = this.setRoot(id, params, Object.assign(Object.assign({}, commonOpts), { direction: 'back', animated: true, animationBuilder: animation }));
|
|
27135
|
-
}
|
|
27136
|
-
}
|
|
27137
|
-
return promise;
|
|
27138
|
-
}
|
|
27139
|
-
/**
|
|
27140
|
-
* Called by <ion-router> to retrieve the current component.
|
|
27141
|
-
*
|
|
27142
|
-
* @internal
|
|
27143
|
-
*/
|
|
27144
|
-
async getRouteId() {
|
|
27145
|
-
const active = this.getActiveSync();
|
|
27146
|
-
if (active) {
|
|
27147
|
-
return {
|
|
27148
|
-
id: active.element.tagName,
|
|
27149
|
-
params: active.params,
|
|
27150
|
-
element: active.element,
|
|
27151
|
-
};
|
|
27152
|
-
}
|
|
27153
|
-
return undefined;
|
|
27154
|
-
}
|
|
27155
27535
|
/**
|
|
27156
27536
|
* Get the active view.
|
|
27157
27537
|
*/
|
|
@@ -27217,25 +27597,6 @@ class Nav {
|
|
|
27217
27597
|
ti.reject = reject;
|
|
27218
27598
|
});
|
|
27219
27599
|
ti.done = done;
|
|
27220
|
-
/**
|
|
27221
|
-
* If using router, check to see if navigation hooks
|
|
27222
|
-
* will allow us to perform this transition. This
|
|
27223
|
-
* is required in order for hooks to work with
|
|
27224
|
-
* the ion-back-button or swipe to go back.
|
|
27225
|
-
*/
|
|
27226
|
-
if (ti.opts && ti.opts.updateURL !== false && this.useRouter) {
|
|
27227
|
-
const router = document.querySelector('ion-router');
|
|
27228
|
-
if (router) {
|
|
27229
|
-
const canTransition = await router.canTransition();
|
|
27230
|
-
if (canTransition === false) {
|
|
27231
|
-
return false;
|
|
27232
|
-
}
|
|
27233
|
-
if (typeof canTransition === 'string') {
|
|
27234
|
-
router.push(canTransition, ti.opts.direction || 'back');
|
|
27235
|
-
return false;
|
|
27236
|
-
}
|
|
27237
|
-
}
|
|
27238
|
-
}
|
|
27239
27600
|
// Normalize empty
|
|
27240
27601
|
if (((_b = ti.insertViews) === null || _b === void 0 ? void 0 : _b.length) === 0) {
|
|
27241
27602
|
ti.insertViews = undefined;
|
|
@@ -27256,13 +27617,6 @@ class Nav {
|
|
|
27256
27617
|
ti.done(result.hasCompleted, result.requiresTransition, result.enteringView, result.leavingView, result.direction);
|
|
27257
27618
|
}
|
|
27258
27619
|
ti.resolve(result.hasCompleted);
|
|
27259
|
-
if (ti.opts.updateURL !== false && this.useRouter) {
|
|
27260
|
-
const router = document.querySelector('ion-router');
|
|
27261
|
-
if (router) {
|
|
27262
|
-
const direction = result.direction === 'back' ? 'back' : 'forward';
|
|
27263
|
-
router.navChanged(direction);
|
|
27264
|
-
}
|
|
27265
|
-
}
|
|
27266
27620
|
}
|
|
27267
27621
|
failed(rejectReason, ti) {
|
|
27268
27622
|
if (this.destroyed) {
|
|
@@ -27692,7 +28046,7 @@ class Nav {
|
|
|
27692
28046
|
}
|
|
27693
28047
|
}
|
|
27694
28048
|
render() {
|
|
27695
|
-
return hAsync("slot", { key: '
|
|
28049
|
+
return hAsync("slot", { key: 'bb4a201a3a8079548f5474ff42293b28fc7599fb' });
|
|
27696
28050
|
}
|
|
27697
28051
|
get el() { return getElement(this); }
|
|
27698
28052
|
static get watchers() { return {
|
|
@@ -27723,8 +28077,6 @@ class Nav {
|
|
|
27723
28077
|
"removeIndex": [64],
|
|
27724
28078
|
"setRoot": [64],
|
|
27725
28079
|
"setPages": [64],
|
|
27726
|
-
"setRouteId": [64],
|
|
27727
|
-
"getRouteId": [64],
|
|
27728
28080
|
"getActive": [64],
|
|
27729
28081
|
"getByIndex": [64],
|
|
27730
28082
|
"canGoBack": [64],
|
|
@@ -27820,14 +28172,14 @@ class Note {
|
|
|
27820
28172
|
}; }
|
|
27821
28173
|
}
|
|
27822
28174
|
|
|
27823
|
-
const pickerIosCss
|
|
28175
|
+
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)))}`;
|
|
27824
28176
|
|
|
27825
|
-
const pickerMdCss
|
|
28177
|
+
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%)}`;
|
|
27826
28178
|
|
|
27827
28179
|
/**
|
|
27828
28180
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
27829
28181
|
*/
|
|
27830
|
-
|
|
28182
|
+
class Picker {
|
|
27831
28183
|
constructor(hostRef) {
|
|
27832
28184
|
registerInstance(this, hostRef);
|
|
27833
28185
|
this.ionInputModeChange = createEvent(this, "ionInputModeChange", 7);
|
|
@@ -28293,8 +28645,8 @@ let Picker$1 = class Picker {
|
|
|
28293
28645
|
}
|
|
28294
28646
|
get el() { return getElement(this); }
|
|
28295
28647
|
static get style() { return {
|
|
28296
|
-
ios: pickerIosCss
|
|
28297
|
-
md: pickerMdCss
|
|
28648
|
+
ios: pickerIosCss(),
|
|
28649
|
+
md: pickerMdCss()
|
|
28298
28650
|
}; }
|
|
28299
28651
|
static get cmpMeta() { return {
|
|
28300
28652
|
"$flags$": 297,
|
|
@@ -28306,324 +28658,9 @@ let Picker$1 = class Picker {
|
|
|
28306
28658
|
"$lazyBundleId$": "-",
|
|
28307
28659
|
"$attrsToReflect$": []
|
|
28308
28660
|
}; }
|
|
28309
|
-
}
|
|
28661
|
+
}
|
|
28310
28662
|
|
|
28311
|
-
|
|
28312
|
-
* iOS Picker Enter Animation
|
|
28313
|
-
*/
|
|
28314
|
-
const iosEnterAnimation$2 = (baseEl) => {
|
|
28315
|
-
const baseAnimation = createAnimation();
|
|
28316
|
-
const backdropAnimation = createAnimation();
|
|
28317
|
-
const wrapperAnimation = createAnimation();
|
|
28318
|
-
backdropAnimation
|
|
28319
|
-
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
28320
|
-
.fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
|
|
28321
|
-
.beforeStyles({
|
|
28322
|
-
'pointer-events': 'none',
|
|
28323
|
-
})
|
|
28324
|
-
.afterClearStyles(['pointer-events']);
|
|
28325
|
-
wrapperAnimation
|
|
28326
|
-
.addElement(baseEl.querySelector('.picker-wrapper'))
|
|
28327
|
-
.fromTo('transform', 'translateY(100%)', 'translateY(0%)');
|
|
28328
|
-
return baseAnimation
|
|
28329
|
-
.addElement(baseEl)
|
|
28330
|
-
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
28331
|
-
.duration(400)
|
|
28332
|
-
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
28333
|
-
};
|
|
28334
|
-
|
|
28335
|
-
/**
|
|
28336
|
-
* iOS Picker Leave Animation
|
|
28337
|
-
*/
|
|
28338
|
-
const iosLeaveAnimation$2 = (baseEl) => {
|
|
28339
|
-
const baseAnimation = createAnimation();
|
|
28340
|
-
const backdropAnimation = createAnimation();
|
|
28341
|
-
const wrapperAnimation = createAnimation();
|
|
28342
|
-
backdropAnimation
|
|
28343
|
-
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
28344
|
-
.fromTo('opacity', 'var(--backdrop-opacity)', 0.01);
|
|
28345
|
-
wrapperAnimation
|
|
28346
|
-
.addElement(baseEl.querySelector('.picker-wrapper'))
|
|
28347
|
-
.fromTo('transform', 'translateY(0%)', 'translateY(100%)');
|
|
28348
|
-
return baseAnimation
|
|
28349
|
-
.addElement(baseEl)
|
|
28350
|
-
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
28351
|
-
.duration(400)
|
|
28352
|
-
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
28353
|
-
};
|
|
28354
|
-
|
|
28355
|
-
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}`;
|
|
28356
|
-
|
|
28357
|
-
const pickerMdCss = () => `.sc-ion-picker-legacy-md-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-md-h{inset-inline-start:0}.overlay-hidden.sc-ion-picker-legacy-md-h{display:none}.picker-wrapper.sc-ion-picker-legacy-md{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-md{width:100%;background:transparent;contain:strict;z-index:1}.picker-button.sc-ion-picker-legacy-md{border:0;font-family:inherit}.picker-button.sc-ion-picker-legacy-md:active,.picker-button.sc-ion-picker-legacy-md:focus{outline:none}.picker-columns.sc-ion-picker-legacy-md{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-md,.picker-below-highlight.sc-ion-picker-legacy-md{display:none;pointer-events:none}.sc-ion-picker-legacy-md-h{--background:var(--ion-background-color, #fff);--border-width:0.55px 0 0;--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)))));--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-md{display:-ms-flexbox;display:flex;-ms-flex-pack:end;justify-content:flex-end;height:44px}.picker-button.sc-ion-picker-legacy-md,.picker-button.ion-activated.sc-ion-picker-legacy-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:1.1em;padding-inline-start:1.1em;-webkit-padding-end:1.1em;padding-inline-end:1.1em;padding-top:0;padding-bottom:0;height:44px;background:transparent;color:var(--ion-color-primary, #0054e9);font-size:14px;font-weight:500;text-transform:uppercase;-webkit-box-shadow:none;box-shadow:none}.picker-columns.sc-ion-picker-legacy-md{height:216px;-webkit-perspective:1800px;perspective:1800px}.picker-above-highlight.sc-ion-picker-legacy-md{top:0;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);position:absolute;width:100%;height:81px;border-bottom:1px solid 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)))));background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, var(--ion-background-color, #fff)), to(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)));background:linear-gradient(to bottom, var(--ion-background-color, #fff) 20%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%);z-index:10}.picker-above-highlight.sc-ion-picker-legacy-md{inset-inline-start:0}.picker-below-highlight.sc-ion-picker-legacy-md{top:115px;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);position:absolute;width:100%;height:119px;border-top:1px solid 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)))));background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, var(--ion-background-color, #fff)), to(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)));background:linear-gradient(to top, var(--ion-background-color, #fff) 30%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%);z-index:11}.picker-below-highlight.sc-ion-picker-legacy-md{inset-inline-start:0}`;
|
|
28358
|
-
|
|
28359
|
-
// TODO(FW-2832): types
|
|
28360
|
-
/**
|
|
28361
|
-
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
28362
|
-
*/
|
|
28363
|
-
class Picker {
|
|
28364
|
-
constructor(hostRef) {
|
|
28365
|
-
registerInstance(this, hostRef);
|
|
28366
|
-
this.didPresent = createEvent(this, "ionPickerDidPresent", 7);
|
|
28367
|
-
this.willPresent = createEvent(this, "ionPickerWillPresent", 7);
|
|
28368
|
-
this.willDismiss = createEvent(this, "ionPickerWillDismiss", 7);
|
|
28369
|
-
this.didDismiss = createEvent(this, "ionPickerDidDismiss", 7);
|
|
28370
|
-
this.didPresentShorthand = createEvent(this, "didPresent", 7);
|
|
28371
|
-
this.willPresentShorthand = createEvent(this, "willPresent", 7);
|
|
28372
|
-
this.willDismissShorthand = createEvent(this, "willDismiss", 7);
|
|
28373
|
-
this.didDismissShorthand = createEvent(this, "didDismiss", 7);
|
|
28374
|
-
this.delegateController = createDelegateController(this);
|
|
28375
|
-
this.lockController = createLockController();
|
|
28376
|
-
this.triggerController = createTriggerController();
|
|
28377
|
-
this.presented = false;
|
|
28378
|
-
/** @internal */
|
|
28379
|
-
this.hasController = false;
|
|
28380
|
-
/**
|
|
28381
|
-
* If `true`, the keyboard will be automatically dismissed when the overlay is presented.
|
|
28382
|
-
*/
|
|
28383
|
-
this.keyboardClose = true;
|
|
28384
|
-
/**
|
|
28385
|
-
* Array of buttons to be displayed at the top of the picker.
|
|
28386
|
-
*/
|
|
28387
|
-
this.buttons = [];
|
|
28388
|
-
/**
|
|
28389
|
-
* Array of columns to be displayed in the picker.
|
|
28390
|
-
*/
|
|
28391
|
-
this.columns = [];
|
|
28392
|
-
/**
|
|
28393
|
-
* Number of milliseconds to wait before dismissing the picker.
|
|
28394
|
-
*/
|
|
28395
|
-
this.duration = 0;
|
|
28396
|
-
/**
|
|
28397
|
-
* If `true`, a backdrop will be displayed behind the picker.
|
|
28398
|
-
*/
|
|
28399
|
-
this.showBackdrop = true;
|
|
28400
|
-
/**
|
|
28401
|
-
* If `true`, the picker will be dismissed when the backdrop is clicked.
|
|
28402
|
-
*/
|
|
28403
|
-
this.backdropDismiss = true;
|
|
28404
|
-
/**
|
|
28405
|
-
* If `true`, the picker will animate.
|
|
28406
|
-
*/
|
|
28407
|
-
this.animated = true;
|
|
28408
|
-
/**
|
|
28409
|
-
* If `true`, the picker will open. If `false`, the picker will close.
|
|
28410
|
-
* Use this if you need finer grained control over presentation, otherwise
|
|
28411
|
-
* just use the pickerController or the `trigger` property.
|
|
28412
|
-
* Note: `isOpen` will not automatically be set back to `false` when
|
|
28413
|
-
* the picker dismisses. You will need to do that in your code.
|
|
28414
|
-
*/
|
|
28415
|
-
this.isOpen = false;
|
|
28416
|
-
this.onBackdropTap = () => {
|
|
28417
|
-
this.dismiss(undefined, BACKDROP);
|
|
28418
|
-
};
|
|
28419
|
-
this.dispatchCancelHandler = (ev) => {
|
|
28420
|
-
const role = ev.detail.role;
|
|
28421
|
-
if (isCancel(role)) {
|
|
28422
|
-
const cancelButton = this.buttons.find((b) => b.role === 'cancel');
|
|
28423
|
-
this.callButtonHandler(cancelButton);
|
|
28424
|
-
}
|
|
28425
|
-
};
|
|
28426
|
-
}
|
|
28427
|
-
onIsOpenChange(newValue, oldValue) {
|
|
28428
|
-
if (newValue === true && oldValue === false) {
|
|
28429
|
-
this.present();
|
|
28430
|
-
}
|
|
28431
|
-
else if (newValue === false && oldValue === true) {
|
|
28432
|
-
this.dismiss();
|
|
28433
|
-
}
|
|
28434
|
-
}
|
|
28435
|
-
triggerChanged() {
|
|
28436
|
-
const { trigger, el, triggerController } = this;
|
|
28437
|
-
if (trigger) {
|
|
28438
|
-
triggerController.addClickListener(el, trigger);
|
|
28439
|
-
}
|
|
28440
|
-
}
|
|
28441
|
-
connectedCallback() {
|
|
28442
|
-
prepareOverlay(this.el);
|
|
28443
|
-
this.triggerChanged();
|
|
28444
|
-
}
|
|
28445
|
-
disconnectedCallback() {
|
|
28446
|
-
this.triggerController.removeClickListener();
|
|
28447
|
-
}
|
|
28448
|
-
componentWillLoad() {
|
|
28449
|
-
var _a;
|
|
28450
|
-
if (!((_a = this.htmlAttributes) === null || _a === void 0 ? void 0 : _a.id)) {
|
|
28451
|
-
setOverlayId(this.el);
|
|
28452
|
-
}
|
|
28453
|
-
}
|
|
28454
|
-
componentDidLoad() {
|
|
28455
|
-
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);
|
|
28456
|
-
/**
|
|
28457
|
-
* If picker was rendered with isOpen="true"
|
|
28458
|
-
* then we should open picker immediately.
|
|
28459
|
-
*/
|
|
28460
|
-
if (this.isOpen === true) {
|
|
28461
|
-
raf(() => this.present());
|
|
28462
|
-
}
|
|
28463
|
-
/**
|
|
28464
|
-
* When binding values in frameworks such as Angular
|
|
28465
|
-
* it is possible for the value to be set after the Web Component
|
|
28466
|
-
* initializes but before the value watcher is set up in Stencil.
|
|
28467
|
-
* As a result, the watcher callback may not be fired.
|
|
28468
|
-
* We work around this by manually calling the watcher
|
|
28469
|
-
* callback when the component has loaded and the watcher
|
|
28470
|
-
* is configured.
|
|
28471
|
-
*/
|
|
28472
|
-
this.triggerChanged();
|
|
28473
|
-
}
|
|
28474
|
-
/**
|
|
28475
|
-
* Present the picker overlay after it has been created.
|
|
28476
|
-
*/
|
|
28477
|
-
async present() {
|
|
28478
|
-
const unlock = await this.lockController.lock();
|
|
28479
|
-
await this.delegateController.attachViewToDom();
|
|
28480
|
-
await present(this, 'pickerEnter', iosEnterAnimation$2, iosEnterAnimation$2, undefined);
|
|
28481
|
-
if (this.duration > 0) {
|
|
28482
|
-
this.durationTimeout = setTimeout(() => this.dismiss(), this.duration);
|
|
28483
|
-
}
|
|
28484
|
-
unlock();
|
|
28485
|
-
}
|
|
28486
|
-
/**
|
|
28487
|
-
* Dismiss the picker overlay after it has been presented.
|
|
28488
|
-
*
|
|
28489
|
-
* @param data Any data to emit in the dismiss events.
|
|
28490
|
-
* @param role The role of the element that is dismissing the picker.
|
|
28491
|
-
* This can be useful in a button handler for determining which button was
|
|
28492
|
-
* clicked to dismiss the picker.
|
|
28493
|
-
* Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
|
|
28494
|
-
*/
|
|
28495
|
-
async dismiss(data, role) {
|
|
28496
|
-
const unlock = await this.lockController.lock();
|
|
28497
|
-
if (this.durationTimeout) {
|
|
28498
|
-
clearTimeout(this.durationTimeout);
|
|
28499
|
-
}
|
|
28500
|
-
const dismissed = await dismiss(this, data, role, 'pickerLeave', iosLeaveAnimation$2, iosLeaveAnimation$2);
|
|
28501
|
-
if (dismissed) {
|
|
28502
|
-
this.delegateController.removeViewFromDom();
|
|
28503
|
-
}
|
|
28504
|
-
unlock();
|
|
28505
|
-
return dismissed;
|
|
28506
|
-
}
|
|
28507
|
-
/**
|
|
28508
|
-
* Returns a promise that resolves when the picker did dismiss.
|
|
28509
|
-
*/
|
|
28510
|
-
onDidDismiss() {
|
|
28511
|
-
return eventMethod(this.el, 'ionPickerDidDismiss');
|
|
28512
|
-
}
|
|
28513
|
-
/**
|
|
28514
|
-
* Returns a promise that resolves when the picker will dismiss.
|
|
28515
|
-
*/
|
|
28516
|
-
onWillDismiss() {
|
|
28517
|
-
return eventMethod(this.el, 'ionPickerWillDismiss');
|
|
28518
|
-
}
|
|
28519
|
-
/**
|
|
28520
|
-
* Get the column that matches the specified name.
|
|
28521
|
-
*
|
|
28522
|
-
* @param name The name of the column.
|
|
28523
|
-
*/
|
|
28524
|
-
getColumn(name) {
|
|
28525
|
-
return Promise.resolve(this.columns.find((column) => column.name === name));
|
|
28526
|
-
}
|
|
28527
|
-
async buttonClick(button) {
|
|
28528
|
-
const role = button.role;
|
|
28529
|
-
if (isCancel(role)) {
|
|
28530
|
-
return this.dismiss(undefined, role);
|
|
28531
|
-
}
|
|
28532
|
-
const shouldDismiss = await this.callButtonHandler(button);
|
|
28533
|
-
if (shouldDismiss) {
|
|
28534
|
-
return this.dismiss(this.getSelected(), button.role);
|
|
28535
|
-
}
|
|
28536
|
-
return Promise.resolve();
|
|
28537
|
-
}
|
|
28538
|
-
async callButtonHandler(button) {
|
|
28539
|
-
if (button) {
|
|
28540
|
-
// a handler has been provided, execute it
|
|
28541
|
-
// pass the handler the values from the inputs
|
|
28542
|
-
const rtn = await safeCall(button.handler, this.getSelected());
|
|
28543
|
-
if (rtn === false) {
|
|
28544
|
-
// if the return value of the handler is false then do not dismiss
|
|
28545
|
-
return false;
|
|
28546
|
-
}
|
|
28547
|
-
}
|
|
28548
|
-
return true;
|
|
28549
|
-
}
|
|
28550
|
-
getSelected() {
|
|
28551
|
-
const selected = {};
|
|
28552
|
-
this.columns.forEach((col, index) => {
|
|
28553
|
-
const selectedColumn = col.selectedIndex !== undefined ? col.options[col.selectedIndex] : undefined;
|
|
28554
|
-
selected[col.name] = {
|
|
28555
|
-
text: selectedColumn ? selectedColumn.text : undefined,
|
|
28556
|
-
value: selectedColumn ? selectedColumn.value : undefined,
|
|
28557
|
-
columnIndex: index,
|
|
28558
|
-
};
|
|
28559
|
-
});
|
|
28560
|
-
return selected;
|
|
28561
|
-
}
|
|
28562
|
-
render() {
|
|
28563
|
-
const { htmlAttributes } = this;
|
|
28564
|
-
const mode = getIonMode$1(this);
|
|
28565
|
-
return (hAsync(Host, Object.assign({ key: '80f66d33780d8a1352d24be9cb63a0cc03d01ab5', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
|
|
28566
|
-
zIndex: `${20000 + this.overlayIndex}`,
|
|
28567
|
-
}, class: Object.assign({ [mode]: true,
|
|
28568
|
-
// Used internally for styling
|
|
28569
|
-
[`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" })));
|
|
28570
|
-
}
|
|
28571
|
-
get el() { return getElement(this); }
|
|
28572
|
-
static get watchers() { return {
|
|
28573
|
-
"isOpen": [{
|
|
28574
|
-
"onIsOpenChange": 0
|
|
28575
|
-
}],
|
|
28576
|
-
"trigger": [{
|
|
28577
|
-
"triggerChanged": 0
|
|
28578
|
-
}]
|
|
28579
|
-
}; }
|
|
28580
|
-
static get style() { return {
|
|
28581
|
-
ios: pickerIosCss(),
|
|
28582
|
-
md: pickerMdCss()
|
|
28583
|
-
}; }
|
|
28584
|
-
static get cmpMeta() { return {
|
|
28585
|
-
"$flags$": 34,
|
|
28586
|
-
"$tagName$": "ion-picker-legacy",
|
|
28587
|
-
"$members$": {
|
|
28588
|
-
"overlayIndex": [2, "overlay-index"],
|
|
28589
|
-
"delegate": [16],
|
|
28590
|
-
"hasController": [4, "has-controller"],
|
|
28591
|
-
"keyboardClose": [4, "keyboard-close"],
|
|
28592
|
-
"enterAnimation": [16],
|
|
28593
|
-
"leaveAnimation": [16],
|
|
28594
|
-
"buttons": [16],
|
|
28595
|
-
"columns": [16],
|
|
28596
|
-
"cssClass": [1, "css-class"],
|
|
28597
|
-
"duration": [2],
|
|
28598
|
-
"showBackdrop": [4, "show-backdrop"],
|
|
28599
|
-
"backdropDismiss": [4, "backdrop-dismiss"],
|
|
28600
|
-
"animated": [4],
|
|
28601
|
-
"htmlAttributes": [16],
|
|
28602
|
-
"isOpen": [4, "is-open"],
|
|
28603
|
-
"trigger": [1],
|
|
28604
|
-
"presented": [32],
|
|
28605
|
-
"present": [64],
|
|
28606
|
-
"dismiss": [64],
|
|
28607
|
-
"onDidDismiss": [64],
|
|
28608
|
-
"onWillDismiss": [64],
|
|
28609
|
-
"getColumn": [64]
|
|
28610
|
-
},
|
|
28611
|
-
"$listeners$": undefined,
|
|
28612
|
-
"$lazyBundleId$": "-",
|
|
28613
|
-
"$attrsToReflect$": []
|
|
28614
|
-
}; }
|
|
28615
|
-
}
|
|
28616
|
-
const buttonWrapperClass = (button) => {
|
|
28617
|
-
return {
|
|
28618
|
-
[`picker-toolbar-${button.role}`]: button.role !== undefined,
|
|
28619
|
-
'picker-toolbar-button': true,
|
|
28620
|
-
};
|
|
28621
|
-
};
|
|
28622
|
-
const buttonClass$1 = (button) => {
|
|
28623
|
-
return Object.assign({ 'picker-button': true, 'ion-activatable': true }, getClassMap(button.cssClass));
|
|
28624
|
-
};
|
|
28625
|
-
|
|
28626
|
-
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)}}`;
|
|
28663
|
+
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)}}`;
|
|
28627
28664
|
|
|
28628
28665
|
/**
|
|
28629
28666
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
@@ -29107,471 +29144,106 @@ class PickerColumn {
|
|
|
29107
29144
|
const firstOption = el.querySelector('ion-picker-column-option');
|
|
29108
29145
|
/**
|
|
29109
29146
|
* If the picker column does not have an active item and the current value
|
|
29110
|
-
* does not match the first item in the picker column, that means
|
|
29111
|
-
* the value is out of bounds. In this case, we assign the value to the
|
|
29112
|
-
* first item to match the scroll position of the column.
|
|
29113
|
-
*
|
|
29114
|
-
*/
|
|
29115
|
-
if (firstOption !== null && firstOption.value !== value) {
|
|
29116
|
-
this.setValue(firstOption.value);
|
|
29117
|
-
}
|
|
29118
|
-
}
|
|
29119
|
-
}
|
|
29120
|
-
/** @internal */
|
|
29121
|
-
async scrollActiveItemIntoView(smooth = false) {
|
|
29122
|
-
const activeEl = this.activeItem;
|
|
29123
|
-
if (activeEl) {
|
|
29124
|
-
this.centerPickerItemInView(activeEl, smooth, false);
|
|
29125
|
-
}
|
|
29126
|
-
}
|
|
29127
|
-
/**
|
|
29128
|
-
* Sets the value prop and fires the ionChange event.
|
|
29129
|
-
* This is used when we need to fire ionChange from
|
|
29130
|
-
* user-generated events that cannot be caught with normal
|
|
29131
|
-
* input/change event listeners.
|
|
29132
|
-
* @internal
|
|
29133
|
-
*/
|
|
29134
|
-
async setValue(value) {
|
|
29135
|
-
if (this.disabled === true || this.value === value) {
|
|
29136
|
-
return;
|
|
29137
|
-
}
|
|
29138
|
-
this.value = value;
|
|
29139
|
-
this.ionChange.emit({ value });
|
|
29140
|
-
}
|
|
29141
|
-
/**
|
|
29142
|
-
* Sets focus on the scrollable container within the picker column.
|
|
29143
|
-
* Use this method instead of the global `pickerColumn.focus()`.
|
|
29144
|
-
*/
|
|
29145
|
-
async setFocus() {
|
|
29146
|
-
if (this.assistiveFocusable) {
|
|
29147
|
-
this.assistiveFocusable.focus();
|
|
29148
|
-
}
|
|
29149
|
-
}
|
|
29150
|
-
connectedCallback() {
|
|
29151
|
-
var _a;
|
|
29152
|
-
this.ariaLabel = (_a = this.el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : 'Select a value';
|
|
29153
|
-
}
|
|
29154
|
-
get activeItem() {
|
|
29155
|
-
const { value } = this;
|
|
29156
|
-
const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
|
|
29157
|
-
return options.find((option) => {
|
|
29158
|
-
/**
|
|
29159
|
-
* If the whole picker column is disabled, the current value should appear active
|
|
29160
|
-
* If the current value item is specifically disabled, it should not appear active
|
|
29161
|
-
*/
|
|
29162
|
-
if (!this.disabled && option.disabled) {
|
|
29163
|
-
return false;
|
|
29164
|
-
}
|
|
29165
|
-
return option.value === value;
|
|
29166
|
-
});
|
|
29167
|
-
}
|
|
29168
|
-
render() {
|
|
29169
|
-
const { color, disabled, isActive, numericInput } = this;
|
|
29170
|
-
const mode = getIonMode$1(this);
|
|
29171
|
-
return (hAsync(Host, { key: '234c96a501d7ac413b9b0ea56b33017681e25b40', class: createColorClasses$1(color, {
|
|
29172
|
-
[mode]: true,
|
|
29173
|
-
['picker-column-active']: isActive,
|
|
29174
|
-
['picker-column-numeric-input']: numericInput,
|
|
29175
|
-
['picker-column-disabled']: disabled,
|
|
29176
|
-
}) }, hAsync("slot", { key: '9dc15ea0601ddd2cb2e0a745e91e036a8bd96f8b', name: "prefix" }), hAsync("div", { key: 'de4fe28ee4bc46b7c0420d6ab0df0e7809443da9', class: "picker-opts", ref: (el) => {
|
|
29177
|
-
this.scrollEl = el;
|
|
29178
|
-
}, 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" })));
|
|
29179
|
-
}
|
|
29180
|
-
get el() { return getElement(this); }
|
|
29181
|
-
static get watchers() { return {
|
|
29182
|
-
"aria-label": [{
|
|
29183
|
-
"ariaLabelChanged": 0
|
|
29184
|
-
}],
|
|
29185
|
-
"value": [{
|
|
29186
|
-
"valueChange": 0
|
|
29187
|
-
}]
|
|
29188
|
-
}; }
|
|
29189
|
-
static get style() { return pickerColumnCss(); }
|
|
29190
|
-
static get cmpMeta() { return {
|
|
29191
|
-
"$flags$": 265,
|
|
29192
|
-
"$tagName$": "ion-picker-column",
|
|
29193
|
-
"$members$": {
|
|
29194
|
-
"disabled": [4],
|
|
29195
|
-
"value": [1032],
|
|
29196
|
-
"color": [513],
|
|
29197
|
-
"numericInput": [4, "numeric-input"],
|
|
29198
|
-
"ariaLabel": [32],
|
|
29199
|
-
"isActive": [32],
|
|
29200
|
-
"scrollActiveItemIntoView": [64],
|
|
29201
|
-
"setValue": [64],
|
|
29202
|
-
"setFocus": [64]
|
|
29203
|
-
},
|
|
29204
|
-
"$listeners$": undefined,
|
|
29205
|
-
"$lazyBundleId$": "-",
|
|
29206
|
-
"$attrsToReflect$": [["color", "color"]]
|
|
29207
|
-
}; }
|
|
29208
|
-
}
|
|
29209
|
-
const PICKER_ITEM_ACTIVE_CLASS = 'option-active';
|
|
29210
|
-
|
|
29211
|
-
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}}`;
|
|
29212
|
-
|
|
29213
|
-
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)}`;
|
|
29214
|
-
|
|
29215
|
-
/**
|
|
29216
|
-
* @internal
|
|
29217
|
-
*/
|
|
29218
|
-
class PickerColumnCmp {
|
|
29219
|
-
constructor(hostRef) {
|
|
29220
|
-
registerInstance(this, hostRef);
|
|
29221
|
-
this.ionPickerColChange = createEvent(this, "ionPickerColChange", 7);
|
|
29222
|
-
this.optHeight = 0;
|
|
29223
|
-
this.rotateFactor = 0;
|
|
29224
|
-
this.scaleFactor = 1;
|
|
29225
|
-
this.velocity = 0;
|
|
29226
|
-
this.y = 0;
|
|
29227
|
-
this.noAnimate = true;
|
|
29228
|
-
// `colDidChange` is a flag that gets set when the column is changed
|
|
29229
|
-
// dynamically. When this flag is set, the column will refresh
|
|
29230
|
-
// after the component re-renders to incorporate the new column data.
|
|
29231
|
-
// This is necessary because `this.refresh` queries for the option elements,
|
|
29232
|
-
// so it needs to wait for the latest elements to be available in the DOM.
|
|
29233
|
-
// Ex: column is created with 3 options. User updates the column data
|
|
29234
|
-
// to have 5 options. The column will still think it only has 3 options.
|
|
29235
|
-
this.colDidChange = false;
|
|
29236
|
-
}
|
|
29237
|
-
colChanged() {
|
|
29238
|
-
this.colDidChange = true;
|
|
29239
|
-
}
|
|
29240
|
-
async connectedCallback() {
|
|
29241
|
-
let pickerRotateFactor = 0;
|
|
29242
|
-
let pickerScaleFactor = 0.81;
|
|
29243
|
-
const mode = getIonMode$1(this);
|
|
29244
|
-
if (mode === 'ios') {
|
|
29245
|
-
pickerRotateFactor = -0.46;
|
|
29246
|
-
pickerScaleFactor = 1;
|
|
29247
|
-
}
|
|
29248
|
-
this.rotateFactor = pickerRotateFactor;
|
|
29249
|
-
this.scaleFactor = pickerScaleFactor;
|
|
29250
|
-
this.gesture = (await Promise.resolve().then(function () { return index; })).createGesture({
|
|
29251
|
-
el: this.el,
|
|
29252
|
-
gestureName: 'picker-swipe',
|
|
29253
|
-
gesturePriority: 100,
|
|
29254
|
-
threshold: 0,
|
|
29255
|
-
passive: false,
|
|
29256
|
-
onStart: (ev) => this.onStart(ev),
|
|
29257
|
-
onMove: (ev) => this.onMove(ev),
|
|
29258
|
-
onEnd: (ev) => this.onEnd(ev),
|
|
29259
|
-
});
|
|
29260
|
-
this.gesture.enable();
|
|
29261
|
-
// Options have not been initialized yet
|
|
29262
|
-
// Animation must be disabled through the `noAnimate` flag
|
|
29263
|
-
// Otherwise, the options will render
|
|
29264
|
-
// at the top of the column and transition down
|
|
29265
|
-
this.tmrId = setTimeout(() => {
|
|
29266
|
-
this.noAnimate = false;
|
|
29267
|
-
// After initialization, `refresh()` will be called
|
|
29268
|
-
// At this point, animation will be enabled. The options will
|
|
29269
|
-
// animate as they are being selected.
|
|
29270
|
-
this.refresh(true);
|
|
29271
|
-
}, 250);
|
|
29272
|
-
}
|
|
29273
|
-
componentDidLoad() {
|
|
29274
|
-
this.onDomChange();
|
|
29275
|
-
}
|
|
29276
|
-
componentDidUpdate() {
|
|
29277
|
-
// Options may have changed since last update.
|
|
29278
|
-
if (this.colDidChange) {
|
|
29279
|
-
// Animation must be disabled through the `onDomChange` parameter.
|
|
29280
|
-
// Otherwise, the recently added options will render
|
|
29281
|
-
// at the top of the column and transition down
|
|
29282
|
-
this.onDomChange(true, false);
|
|
29283
|
-
this.colDidChange = false;
|
|
29284
|
-
}
|
|
29285
|
-
}
|
|
29286
|
-
disconnectedCallback() {
|
|
29287
|
-
if (this.rafId !== undefined)
|
|
29288
|
-
cancelAnimationFrame(this.rafId);
|
|
29289
|
-
if (this.tmrId)
|
|
29290
|
-
clearTimeout(this.tmrId);
|
|
29291
|
-
if (this.gesture) {
|
|
29292
|
-
this.gesture.destroy();
|
|
29293
|
-
this.gesture = undefined;
|
|
29294
|
-
}
|
|
29295
|
-
}
|
|
29296
|
-
emitColChange() {
|
|
29297
|
-
this.ionPickerColChange.emit(this.col);
|
|
29298
|
-
}
|
|
29299
|
-
setSelected(selectedIndex, duration) {
|
|
29300
|
-
// if there is a selected index, then figure out it's y position
|
|
29301
|
-
// if there isn't a selected index, then just use the top y position
|
|
29302
|
-
const y = selectedIndex > -1 ? -(selectedIndex * this.optHeight) : 0;
|
|
29303
|
-
this.velocity = 0;
|
|
29304
|
-
// set what y position we're at
|
|
29305
|
-
if (this.rafId !== undefined)
|
|
29306
|
-
cancelAnimationFrame(this.rafId);
|
|
29307
|
-
this.update(y, duration, true);
|
|
29308
|
-
this.emitColChange();
|
|
29309
|
-
}
|
|
29310
|
-
update(y, duration, saveY) {
|
|
29311
|
-
if (!this.optsEl) {
|
|
29312
|
-
return;
|
|
29313
|
-
}
|
|
29314
|
-
// ensure we've got a good round number :)
|
|
29315
|
-
let translateY = 0;
|
|
29316
|
-
let translateZ = 0;
|
|
29317
|
-
const { col, rotateFactor } = this;
|
|
29318
|
-
const prevSelected = col.selectedIndex;
|
|
29319
|
-
const selectedIndex = (col.selectedIndex = this.indexForY(-y));
|
|
29320
|
-
const durationStr = duration === 0 ? '' : duration + 'ms';
|
|
29321
|
-
const scaleStr = `scale(${this.scaleFactor})`;
|
|
29322
|
-
const children = this.optsEl.children;
|
|
29323
|
-
for (let i = 0; i < children.length; i++) {
|
|
29324
|
-
const button = children[i];
|
|
29325
|
-
const opt = col.options[i];
|
|
29326
|
-
const optOffset = i * this.optHeight + y;
|
|
29327
|
-
let transform = '';
|
|
29328
|
-
if (rotateFactor !== 0) {
|
|
29329
|
-
const rotateX = optOffset * rotateFactor;
|
|
29330
|
-
if (Math.abs(rotateX) <= 90) {
|
|
29331
|
-
translateY = 0;
|
|
29332
|
-
translateZ = 90;
|
|
29333
|
-
transform = `rotateX(${rotateX}deg) `;
|
|
29334
|
-
}
|
|
29335
|
-
else {
|
|
29336
|
-
translateY = -9999;
|
|
29337
|
-
}
|
|
29338
|
-
}
|
|
29339
|
-
else {
|
|
29340
|
-
translateZ = 0;
|
|
29341
|
-
translateY = optOffset;
|
|
29342
|
-
}
|
|
29343
|
-
const selected = selectedIndex === i;
|
|
29344
|
-
transform += `translate3d(0px,${translateY}px,${translateZ}px) `;
|
|
29345
|
-
if (this.scaleFactor !== 1 && !selected) {
|
|
29346
|
-
transform += scaleStr;
|
|
29347
|
-
}
|
|
29348
|
-
// Update transition duration
|
|
29349
|
-
if (this.noAnimate) {
|
|
29350
|
-
opt.duration = 0;
|
|
29351
|
-
button.style.transitionDuration = '';
|
|
29352
|
-
}
|
|
29353
|
-
else if (duration !== opt.duration) {
|
|
29354
|
-
opt.duration = duration;
|
|
29355
|
-
button.style.transitionDuration = durationStr;
|
|
29356
|
-
}
|
|
29357
|
-
// Update transform
|
|
29358
|
-
if (transform !== opt.transform) {
|
|
29359
|
-
opt.transform = transform;
|
|
29360
|
-
}
|
|
29361
|
-
button.style.transform = transform;
|
|
29362
|
-
/**
|
|
29363
|
-
* Ensure that the select column
|
|
29364
|
-
* item has the selected class
|
|
29365
|
-
*/
|
|
29366
|
-
opt.selected = selected;
|
|
29367
|
-
if (selected) {
|
|
29368
|
-
button.classList.add(PICKER_OPT_SELECTED);
|
|
29369
|
-
}
|
|
29370
|
-
else {
|
|
29371
|
-
button.classList.remove(PICKER_OPT_SELECTED);
|
|
29372
|
-
}
|
|
29373
|
-
}
|
|
29374
|
-
this.col.prevSelected = prevSelected;
|
|
29375
|
-
if (saveY) {
|
|
29376
|
-
this.y = y;
|
|
29377
|
-
}
|
|
29378
|
-
if (this.lastIndex !== selectedIndex) {
|
|
29379
|
-
// have not set a last index yet
|
|
29380
|
-
hapticSelectionChanged();
|
|
29381
|
-
this.lastIndex = selectedIndex;
|
|
29382
|
-
}
|
|
29383
|
-
}
|
|
29384
|
-
decelerate() {
|
|
29385
|
-
if (this.velocity !== 0) {
|
|
29386
|
-
// still decelerating
|
|
29387
|
-
this.velocity *= DECELERATION_FRICTION;
|
|
29388
|
-
// do not let it go slower than a velocity of 1
|
|
29389
|
-
this.velocity = this.velocity > 0 ? Math.max(this.velocity, 1) : Math.min(this.velocity, -1);
|
|
29390
|
-
let y = this.y + this.velocity;
|
|
29391
|
-
if (y > this.minY) {
|
|
29392
|
-
// whoops, it's trying to scroll up farther than the options we have!
|
|
29393
|
-
y = this.minY;
|
|
29394
|
-
this.velocity = 0;
|
|
29395
|
-
}
|
|
29396
|
-
else if (y < this.maxY) {
|
|
29397
|
-
// gahh, it's trying to scroll down farther than we can!
|
|
29398
|
-
y = this.maxY;
|
|
29399
|
-
this.velocity = 0;
|
|
29400
|
-
}
|
|
29401
|
-
this.update(y, 0, true);
|
|
29402
|
-
const notLockedIn = Math.round(y) % this.optHeight !== 0 || Math.abs(this.velocity) > 1;
|
|
29403
|
-
if (notLockedIn) {
|
|
29404
|
-
// isn't locked in yet, keep decelerating until it is
|
|
29405
|
-
this.rafId = requestAnimationFrame(() => this.decelerate());
|
|
29406
|
-
}
|
|
29407
|
-
else {
|
|
29408
|
-
this.velocity = 0;
|
|
29409
|
-
this.emitColChange();
|
|
29410
|
-
hapticSelectionEnd();
|
|
29411
|
-
}
|
|
29412
|
-
}
|
|
29413
|
-
else if (this.y % this.optHeight !== 0) {
|
|
29414
|
-
// needs to still get locked into a position so options line up
|
|
29415
|
-
const currentPos = Math.abs(this.y % this.optHeight);
|
|
29416
|
-
// create a velocity in the direction it needs to scroll
|
|
29417
|
-
this.velocity = currentPos > this.optHeight / 2 ? 1 : -1;
|
|
29418
|
-
this.decelerate();
|
|
29419
|
-
}
|
|
29420
|
-
}
|
|
29421
|
-
indexForY(y) {
|
|
29422
|
-
return Math.min(Math.max(Math.abs(Math.round(y / this.optHeight)), 0), this.col.options.length - 1);
|
|
29423
|
-
}
|
|
29424
|
-
onStart(detail) {
|
|
29425
|
-
// We have to prevent default in order to block scrolling under the picker
|
|
29426
|
-
// but we DO NOT have to stop propagation, since we still want
|
|
29427
|
-
// some "click" events to capture
|
|
29428
|
-
if (detail.event.cancelable) {
|
|
29429
|
-
detail.event.preventDefault();
|
|
29430
|
-
}
|
|
29431
|
-
detail.event.stopPropagation();
|
|
29432
|
-
hapticSelectionStart();
|
|
29433
|
-
// reset everything
|
|
29434
|
-
if (this.rafId !== undefined)
|
|
29435
|
-
cancelAnimationFrame(this.rafId);
|
|
29436
|
-
const options = this.col.options;
|
|
29437
|
-
let minY = options.length - 1;
|
|
29438
|
-
let maxY = 0;
|
|
29439
|
-
for (let i = 0; i < options.length; i++) {
|
|
29440
|
-
if (!options[i].disabled) {
|
|
29441
|
-
minY = Math.min(minY, i);
|
|
29442
|
-
maxY = Math.max(maxY, i);
|
|
29443
|
-
}
|
|
29444
|
-
}
|
|
29445
|
-
this.minY = -(minY * this.optHeight);
|
|
29446
|
-
this.maxY = -(maxY * this.optHeight);
|
|
29447
|
-
}
|
|
29448
|
-
onMove(detail) {
|
|
29449
|
-
if (detail.event.cancelable) {
|
|
29450
|
-
detail.event.preventDefault();
|
|
29451
|
-
}
|
|
29452
|
-
detail.event.stopPropagation();
|
|
29453
|
-
// update the scroll position relative to pointer start position
|
|
29454
|
-
let y = this.y + detail.deltaY;
|
|
29455
|
-
if (y > this.minY) {
|
|
29456
|
-
// scrolling up higher than scroll area
|
|
29457
|
-
y = Math.pow(y, 0.8);
|
|
29458
|
-
this.bounceFrom = y;
|
|
29459
|
-
}
|
|
29460
|
-
else if (y < this.maxY) {
|
|
29461
|
-
// scrolling down below scroll area
|
|
29462
|
-
y += Math.pow(this.maxY - y, 0.9);
|
|
29463
|
-
this.bounceFrom = y;
|
|
29464
|
-
}
|
|
29465
|
-
else {
|
|
29466
|
-
this.bounceFrom = 0;
|
|
29467
|
-
}
|
|
29468
|
-
this.update(y, 0, false);
|
|
29469
|
-
}
|
|
29470
|
-
onEnd(detail) {
|
|
29471
|
-
if (this.bounceFrom > 0) {
|
|
29472
|
-
// bounce back up
|
|
29473
|
-
this.update(this.minY, 100, true);
|
|
29474
|
-
this.emitColChange();
|
|
29475
|
-
return;
|
|
29476
|
-
}
|
|
29477
|
-
else if (this.bounceFrom < 0) {
|
|
29478
|
-
// bounce back down
|
|
29479
|
-
this.update(this.maxY, 100, true);
|
|
29480
|
-
this.emitColChange();
|
|
29481
|
-
return;
|
|
29482
|
-
}
|
|
29483
|
-
this.velocity = clamp(-MAX_PICKER_SPEED, detail.velocityY * 23, MAX_PICKER_SPEED);
|
|
29484
|
-
if (this.velocity === 0 && detail.deltaY === 0) {
|
|
29485
|
-
const opt = detail.event.target.closest('.picker-opt');
|
|
29486
|
-
if (opt === null || opt === void 0 ? void 0 : opt.hasAttribute('opt-index')) {
|
|
29487
|
-
this.setSelected(parseInt(opt.getAttribute('opt-index'), 10), TRANSITION_DURATION);
|
|
29488
|
-
}
|
|
29489
|
-
}
|
|
29490
|
-
else {
|
|
29491
|
-
this.y += detail.deltaY;
|
|
29492
|
-
if (Math.abs(detail.velocityY) < 0.05) {
|
|
29493
|
-
const isScrollingUp = detail.deltaY > 0;
|
|
29494
|
-
const optHeightFraction = (Math.abs(this.y) % this.optHeight) / this.optHeight;
|
|
29495
|
-
if (isScrollingUp && optHeightFraction > 0.5) {
|
|
29496
|
-
this.velocity = Math.abs(this.velocity) * -1;
|
|
29497
|
-
}
|
|
29498
|
-
else if (!isScrollingUp && optHeightFraction <= 0.5) {
|
|
29499
|
-
this.velocity = Math.abs(this.velocity);
|
|
29500
|
-
}
|
|
29147
|
+
* does not match the first item in the picker column, that means
|
|
29148
|
+
* the value is out of bounds. In this case, we assign the value to the
|
|
29149
|
+
* first item to match the scroll position of the column.
|
|
29150
|
+
*
|
|
29151
|
+
*/
|
|
29152
|
+
if (firstOption !== null && firstOption.value !== value) {
|
|
29153
|
+
this.setValue(firstOption.value);
|
|
29501
29154
|
}
|
|
29502
|
-
this.decelerate();
|
|
29503
29155
|
}
|
|
29504
29156
|
}
|
|
29505
|
-
|
|
29506
|
-
|
|
29507
|
-
|
|
29508
|
-
|
|
29509
|
-
|
|
29510
|
-
for (let i = 0; i < options.length; i++) {
|
|
29511
|
-
if (!options[i].disabled) {
|
|
29512
|
-
min = Math.min(min, i);
|
|
29513
|
-
max = Math.max(max, i);
|
|
29514
|
-
}
|
|
29157
|
+
/** @internal */
|
|
29158
|
+
async scrollActiveItemIntoView(smooth = false) {
|
|
29159
|
+
const activeEl = this.activeItem;
|
|
29160
|
+
if (activeEl) {
|
|
29161
|
+
this.centerPickerItemInView(activeEl, smooth, false);
|
|
29515
29162
|
}
|
|
29516
|
-
|
|
29517
|
-
|
|
29518
|
-
|
|
29519
|
-
|
|
29520
|
-
|
|
29521
|
-
|
|
29522
|
-
|
|
29523
|
-
|
|
29163
|
+
}
|
|
29164
|
+
/**
|
|
29165
|
+
* Sets the value prop and fires the ionChange event.
|
|
29166
|
+
* This is used when we need to fire ionChange from
|
|
29167
|
+
* user-generated events that cannot be caught with normal
|
|
29168
|
+
* input/change event listeners.
|
|
29169
|
+
* @internal
|
|
29170
|
+
*/
|
|
29171
|
+
async setValue(value) {
|
|
29172
|
+
if (this.disabled === true || this.value === value) {
|
|
29524
29173
|
return;
|
|
29525
29174
|
}
|
|
29526
|
-
|
|
29527
|
-
|
|
29528
|
-
const y = selectedIndex * this.optHeight * -1;
|
|
29529
|
-
const duration = animated ? TRANSITION_DURATION : 0;
|
|
29530
|
-
this.velocity = 0;
|
|
29531
|
-
this.update(y, duration, true);
|
|
29532
|
-
}
|
|
29175
|
+
this.value = value;
|
|
29176
|
+
this.ionChange.emit({ value });
|
|
29533
29177
|
}
|
|
29534
|
-
|
|
29535
|
-
|
|
29536
|
-
|
|
29537
|
-
|
|
29538
|
-
|
|
29539
|
-
|
|
29178
|
+
/**
|
|
29179
|
+
* Sets focus on the scrollable container within the picker column.
|
|
29180
|
+
* Use this method instead of the global `pickerColumn.focus()`.
|
|
29181
|
+
*/
|
|
29182
|
+
async setFocus() {
|
|
29183
|
+
if (this.assistiveFocusable) {
|
|
29184
|
+
this.assistiveFocusable.focus();
|
|
29540
29185
|
}
|
|
29541
|
-
|
|
29186
|
+
}
|
|
29187
|
+
connectedCallback() {
|
|
29188
|
+
var _a;
|
|
29189
|
+
this.ariaLabel = (_a = this.el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : 'Select a value';
|
|
29190
|
+
}
|
|
29191
|
+
get activeItem() {
|
|
29192
|
+
const { value } = this;
|
|
29193
|
+
const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
|
|
29194
|
+
return options.find((option) => {
|
|
29195
|
+
/**
|
|
29196
|
+
* If the whole picker column is disabled, the current value should appear active
|
|
29197
|
+
* If the current value item is specifically disabled, it should not appear active
|
|
29198
|
+
*/
|
|
29199
|
+
if (!this.disabled && option.disabled) {
|
|
29200
|
+
return false;
|
|
29201
|
+
}
|
|
29202
|
+
return option.value === value;
|
|
29203
|
+
});
|
|
29542
29204
|
}
|
|
29543
29205
|
render() {
|
|
29544
|
-
const
|
|
29206
|
+
const { color, disabled, isActive, numericInput } = this;
|
|
29545
29207
|
const mode = getIonMode$1(this);
|
|
29546
|
-
return (hAsync(Host, { key: '
|
|
29547
|
-
|
|
29548
|
-
|
|
29208
|
+
return (hAsync(Host, { key: '234c96a501d7ac413b9b0ea56b33017681e25b40', class: createColorClasses$1(color, {
|
|
29209
|
+
[mode]: true,
|
|
29210
|
+
['picker-column-active']: isActive,
|
|
29211
|
+
['picker-column-numeric-input']: numericInput,
|
|
29212
|
+
['picker-column-disabled']: disabled,
|
|
29213
|
+
}) }, hAsync("slot", { key: '9dc15ea0601ddd2cb2e0a745e91e036a8bd96f8b', name: "prefix" }), hAsync("div", { key: 'de4fe28ee4bc46b7c0420d6ab0df0e7809443da9', class: "picker-opts", ref: (el) => {
|
|
29214
|
+
this.scrollEl = el;
|
|
29215
|
+
}, 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" })));
|
|
29549
29216
|
}
|
|
29550
29217
|
get el() { return getElement(this); }
|
|
29551
29218
|
static get watchers() { return {
|
|
29552
|
-
"
|
|
29553
|
-
"
|
|
29219
|
+
"aria-label": [{
|
|
29220
|
+
"ariaLabelChanged": 0
|
|
29221
|
+
}],
|
|
29222
|
+
"value": [{
|
|
29223
|
+
"valueChange": 0
|
|
29554
29224
|
}]
|
|
29555
29225
|
}; }
|
|
29556
|
-
static get style() { return
|
|
29557
|
-
ios: pickerColumnIosCss(),
|
|
29558
|
-
md: pickerColumnMdCss()
|
|
29559
|
-
}; }
|
|
29226
|
+
static get style() { return pickerColumnCss(); }
|
|
29560
29227
|
static get cmpMeta() { return {
|
|
29561
|
-
"$flags$":
|
|
29562
|
-
"$tagName$": "ion-picker-
|
|
29228
|
+
"$flags$": 265,
|
|
29229
|
+
"$tagName$": "ion-picker-column",
|
|
29563
29230
|
"$members$": {
|
|
29564
|
-
"
|
|
29231
|
+
"disabled": [4],
|
|
29232
|
+
"value": [1032],
|
|
29233
|
+
"color": [513],
|
|
29234
|
+
"numericInput": [4, "numeric-input"],
|
|
29235
|
+
"ariaLabel": [32],
|
|
29236
|
+
"isActive": [32],
|
|
29237
|
+
"scrollActiveItemIntoView": [64],
|
|
29238
|
+
"setValue": [64],
|
|
29239
|
+
"setFocus": [64]
|
|
29565
29240
|
},
|
|
29566
29241
|
"$listeners$": undefined,
|
|
29567
29242
|
"$lazyBundleId$": "-",
|
|
29568
|
-
"$attrsToReflect$": []
|
|
29243
|
+
"$attrsToReflect$": [["color", "color"]]
|
|
29569
29244
|
}; }
|
|
29570
29245
|
}
|
|
29571
|
-
const
|
|
29572
|
-
const DECELERATION_FRICTION = 0.97;
|
|
29573
|
-
const MAX_PICKER_SPEED = 90;
|
|
29574
|
-
const TRANSITION_DURATION = 150;
|
|
29246
|
+
const PICKER_ITEM_ACTIVE_CLASS = 'option-active';
|
|
29575
29247
|
|
|
29576
29248
|
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}`;
|
|
29577
29249
|
|
|
@@ -30768,9 +30440,9 @@ const mdLeaveAnimation$1 = (baseEl) => {
|
|
|
30768
30440
|
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
30769
30441
|
};
|
|
30770
30442
|
|
|
30771
|
-
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)}}`;
|
|
30443
|
+
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)}}`;
|
|
30772
30444
|
|
|
30773
|
-
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}`;
|
|
30445
|
+
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}`;
|
|
30774
30446
|
|
|
30775
30447
|
// TODO(FW-2832): types
|
|
30776
30448
|
/**
|
|
@@ -30994,6 +30666,10 @@ class Popover {
|
|
|
30994
30666
|
this.headerResizeObserver.disconnect();
|
|
30995
30667
|
this.headerResizeObserver = undefined;
|
|
30996
30668
|
}
|
|
30669
|
+
// Clean up aria-hidden if removed without dismiss() being called
|
|
30670
|
+
if (this.presented) {
|
|
30671
|
+
cleanupRootFocusTrapAccessibility();
|
|
30672
|
+
}
|
|
30997
30673
|
}
|
|
30998
30674
|
componentWillLoad() {
|
|
30999
30675
|
var _a, _b;
|
|
@@ -31232,9 +30908,9 @@ class Popover {
|
|
|
31232
30908
|
const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
|
|
31233
30909
|
const desktop = isPlatform('desktop');
|
|
31234
30910
|
const enableArrow = arrow && !parentPopover;
|
|
31235
|
-
return (hAsync(Host, Object.assign({ key: '
|
|
30911
|
+
return (hAsync(Host, Object.assign({ key: 'd7f3aa2c2fa93a93585e3eda9e4a6d0daaa541be', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
|
|
31236
30912
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
31237
|
-
}, 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: '
|
|
30913
|
+
}, 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' })))));
|
|
31238
30914
|
}
|
|
31239
30915
|
get el() { return getElement(this); }
|
|
31240
30916
|
static get watchers() { return {
|
|
@@ -31345,7 +31021,7 @@ class ProgressBar {
|
|
|
31345
31021
|
const mode = getIonMode$1(this);
|
|
31346
31022
|
// If the progress is displayed as a solid bar.
|
|
31347
31023
|
const progressSolid = buffer === 1;
|
|
31348
|
-
return (hAsync(Host, { key: '
|
|
31024
|
+
return (hAsync(Host, { key: 'd7476268ce53b6a4f425b7bc9f01d6935eb411c3', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
|
|
31349
31025
|
[mode]: true,
|
|
31350
31026
|
[`progress-bar-${type}`]: true,
|
|
31351
31027
|
'progress-paused': paused,
|
|
@@ -31530,7 +31206,7 @@ class Radio {
|
|
|
31530
31206
|
const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
|
|
31531
31207
|
const mode = getIonMode$1(this);
|
|
31532
31208
|
const inItem = hostContext('ion-item', el);
|
|
31533
|
-
return (hAsync(Host, { key: '
|
|
31209
|
+
return (hAsync(Host, { key: 'd9425b252ed38086420d91d5c680421d121c99f4', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
|
|
31534
31210
|
[mode]: true,
|
|
31535
31211
|
'in-item': inItem,
|
|
31536
31212
|
'radio-checked': checked,
|
|
@@ -31541,10 +31217,10 @@ class Radio {
|
|
|
31541
31217
|
// Focus and active styling should not apply when the radio is in an item
|
|
31542
31218
|
'ion-activatable': !inItem,
|
|
31543
31219
|
'ion-focusable': !inItem,
|
|
31544
|
-
}), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, hAsync("label", { key: '
|
|
31220
|
+
}), 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: {
|
|
31545
31221
|
'label-text-wrapper': true,
|
|
31546
31222
|
'label-text-wrapper-hidden': !hasLabel,
|
|
31547
|
-
}, part: "label" }, hAsync("slot", { key: '
|
|
31223
|
+
}, part: "label" }, hAsync("slot", { key: '589d7c1b45a1918b5811663daa8f30788e7729f8' })), hAsync("div", { key: '0f61a17b195582d6c9a0c597cd40e6629256e479', class: "native-wrapper" }, this.renderRadioControl()))));
|
|
31548
31224
|
}
|
|
31549
31225
|
get el() { return getElement(this); }
|
|
31550
31226
|
static get watchers() { return {
|
|
@@ -31563,7 +31239,7 @@ class Radio {
|
|
|
31563
31239
|
"color": [513],
|
|
31564
31240
|
"name": [1],
|
|
31565
31241
|
"disabled": [4],
|
|
31566
|
-
"value": [
|
|
31242
|
+
"value": [520],
|
|
31567
31243
|
"labelPlacement": [1, "label-placement"],
|
|
31568
31244
|
"justify": [1],
|
|
31569
31245
|
"alignment": [1],
|
|
@@ -31574,7 +31250,7 @@ class Radio {
|
|
|
31574
31250
|
},
|
|
31575
31251
|
"$listeners$": undefined,
|
|
31576
31252
|
"$lazyBundleId$": "-",
|
|
31577
|
-
"$attrsToReflect$": [["color", "color"]]
|
|
31253
|
+
"$attrsToReflect$": [["color", "color"], ["value", "value"]]
|
|
31578
31254
|
}; }
|
|
31579
31255
|
}
|
|
31580
31256
|
let radioButtonIds = 0;
|
|
@@ -32639,7 +32315,7 @@ class Range {
|
|
|
32639
32315
|
const valueAtMin = dualKnobs ? this.valA === min || this.valB === min : this.valA === min;
|
|
32640
32316
|
const valueAtMax = dualKnobs ? this.valA === max || this.valB === max : this.valA === max;
|
|
32641
32317
|
renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
|
|
32642
|
-
return (hAsync(Host, { key: '
|
|
32318
|
+
return (hAsync(Host, { key: 'cd26f0187c0d37c7eb9df923f75c8a0f57c19ab6', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
|
|
32643
32319
|
[mode]: true,
|
|
32644
32320
|
'in-item': inItem,
|
|
32645
32321
|
'range-disabled': disabled,
|
|
@@ -32653,10 +32329,10 @@ class Range {
|
|
|
32653
32329
|
'range-item-end-adjustment': needsEndAdjustment,
|
|
32654
32330
|
'range-value-min': valueAtMin,
|
|
32655
32331
|
'range-value-max': valueAtMax,
|
|
32656
|
-
}) }, hAsync("label", { key: '
|
|
32332
|
+
}) }, hAsync("label", { key: '90224fd24b0e625a17e7972feff73a0ac31e093d', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: 'e07b9fa10983249c425eec26b741f0f628daf2b2', class: {
|
|
32657
32333
|
'label-text-wrapper': true,
|
|
32658
32334
|
'label-text-wrapper-hidden': !hasLabel,
|
|
32659
|
-
}, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: '
|
|
32335
|
+
}, 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" })))));
|
|
32660
32336
|
}
|
|
32661
32337
|
get el() { return getElement(this); }
|
|
32662
32338
|
static get watchers() { return {
|
|
@@ -33727,7 +33403,7 @@ class Refresher {
|
|
|
33727
33403
|
}
|
|
33728
33404
|
render() {
|
|
33729
33405
|
const mode = getIonMode$1(this);
|
|
33730
|
-
return (hAsync(Host, { key: '
|
|
33406
|
+
return (hAsync(Host, { key: '1dd475095f76491206644828cf89fc6d2ec276d1', slot: "fixed", class: {
|
|
33731
33407
|
[mode]: true,
|
|
33732
33408
|
// Used internally for styling
|
|
33733
33409
|
[`refresher-${mode}`]: true,
|
|
@@ -33953,7 +33629,7 @@ class RefresherContent {
|
|
|
33953
33629
|
const pullingIcon = this.pullingIcon;
|
|
33954
33630
|
const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
|
|
33955
33631
|
const mode = getIonMode$1(this);
|
|
33956
|
-
return (hAsync(Host, { key: '
|
|
33632
|
+
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())));
|
|
33957
33633
|
}
|
|
33958
33634
|
get el() { return getElement(this); }
|
|
33959
33635
|
static get cmpMeta() { return {
|
|
@@ -33994,7 +33670,7 @@ class Reorder {
|
|
|
33994
33670
|
render() {
|
|
33995
33671
|
const mode = getIonMode$1(this);
|
|
33996
33672
|
const reorderIcon = mode === 'ios' ? reorderThreeOutline : reorderTwoSharp;
|
|
33997
|
-
return (hAsync(Host, { key: '
|
|
33673
|
+
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" }))));
|
|
33998
33674
|
}
|
|
33999
33675
|
get el() { return getElement(this); }
|
|
34000
33676
|
static get style() { return {
|
|
@@ -34265,7 +33941,7 @@ class ReorderGroup {
|
|
|
34265
33941
|
}
|
|
34266
33942
|
render() {
|
|
34267
33943
|
const mode = getIonMode$1(this);
|
|
34268
|
-
return (hAsync(Host, { key: '
|
|
33944
|
+
return (hAsync(Host, { key: '3afdc6a6c81bba2f88ea523d4b73c6fccff1b9ec', class: {
|
|
34269
33945
|
[mode]: true,
|
|
34270
33946
|
'reorder-enabled': !this.disabled,
|
|
34271
33947
|
'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
|
|
@@ -34383,7 +34059,7 @@ class RippleEffect {
|
|
|
34383
34059
|
}
|
|
34384
34060
|
render() {
|
|
34385
34061
|
const mode = getIonMode$1(this);
|
|
34386
|
-
return (hAsync(Host, { key: '
|
|
34062
|
+
return (hAsync(Host, { key: '5e88b5225414e29883256c86f111ded5bdf2ef91', role: "presentation", class: {
|
|
34387
34063
|
[mode]: true,
|
|
34388
34064
|
unbounded: this.unbounded,
|
|
34389
34065
|
} }));
|
|
@@ -34821,16 +34497,30 @@ const scrollToFragment = async (fragment, shouldContinue = () => true) => {
|
|
|
34821
34497
|
return false;
|
|
34822
34498
|
}
|
|
34823
34499
|
};
|
|
34500
|
+
/** How long the router waits for a navigation outlet before giving up and proceeding. */
|
|
34501
|
+
const NAV_NODE_TIMEOUT = 500;
|
|
34824
34502
|
const waitUntilNavNode = () => {
|
|
34825
34503
|
if (searchNavNode(document.body)) {
|
|
34826
34504
|
return Promise.resolve();
|
|
34827
34505
|
}
|
|
34828
34506
|
return new Promise((resolve) => {
|
|
34829
|
-
|
|
34507
|
+
/**
|
|
34508
|
+
* Outlets emit `ionNavWillLoad` as they load, so resolve as soon as one does.
|
|
34509
|
+
* A timeout backstops the case where the page has no outlet at all: without it
|
|
34510
|
+
* the router would wait forever and its `componentWillLoad` would never settle,
|
|
34511
|
+
* which in turn prevents the app from signalling that it has finished loading.
|
|
34512
|
+
*/
|
|
34513
|
+
const done = () => {
|
|
34514
|
+
window.removeEventListener('ionNavWillLoad', done);
|
|
34515
|
+
clearTimeout(timeout);
|
|
34516
|
+
resolve();
|
|
34517
|
+
};
|
|
34518
|
+
const timeout = setTimeout(done, NAV_NODE_TIMEOUT);
|
|
34519
|
+
window.addEventListener('ionNavWillLoad', done, { once: true });
|
|
34830
34520
|
});
|
|
34831
34521
|
};
|
|
34832
34522
|
/** Selector for all the outlets supported by the router. */
|
|
34833
|
-
const OUTLET_SELECTOR = ':not([no-router]) ion-
|
|
34523
|
+
const OUTLET_SELECTOR = ':not([no-router]) ion-tabs, :not([no-router]) ion-router-outlet';
|
|
34834
34524
|
const searchNavNode = (root) => {
|
|
34835
34525
|
if (!root) {
|
|
34836
34526
|
return undefined;
|
|
@@ -35517,10 +35207,10 @@ class RouterLink {
|
|
|
35517
35207
|
rel: this.rel,
|
|
35518
35208
|
target: this.target,
|
|
35519
35209
|
};
|
|
35520
|
-
return (hAsync(Host, { key: '
|
|
35210
|
+
return (hAsync(Host, { key: '6d5fdfa0dcf1eb216173bcc53f1f4d625f3ec551', onClick: this.onClick, class: createColorClasses$1(this.color, {
|
|
35521
35211
|
[mode]: true,
|
|
35522
35212
|
'ion-activatable': true,
|
|
35523
|
-
}) }, hAsync("a", Object.assign({ key: '
|
|
35213
|
+
}) }, hAsync("a", Object.assign({ key: '85796b7b48581fe9830ba1102dad7d1069de4e17' }, attrs), hAsync("slot", { key: '0f93b0da3ec4ae8f50f624f9e7bed87d13d712d0' }))));
|
|
35524
35214
|
}
|
|
35525
35215
|
static get style() { return routerLinkCss(); }
|
|
35526
35216
|
static get cmpMeta() { return {
|
|
@@ -35559,10 +35249,11 @@ class RouterOutlet {
|
|
|
35559
35249
|
*/
|
|
35560
35250
|
this.animated = true;
|
|
35561
35251
|
}
|
|
35252
|
+
swipeGestureChanged() {
|
|
35253
|
+
this.updateGestureEnabled();
|
|
35254
|
+
}
|
|
35562
35255
|
swipeHandlerChanged() {
|
|
35563
|
-
|
|
35564
|
-
this.gesture.enable(this.swipeHandler !== undefined);
|
|
35565
|
-
}
|
|
35256
|
+
this.updateGestureEnabled();
|
|
35566
35257
|
}
|
|
35567
35258
|
async connectedCallback() {
|
|
35568
35259
|
const onStart = () => {
|
|
@@ -35602,11 +35293,21 @@ class RouterOutlet {
|
|
|
35602
35293
|
this.gestureOrAnimationInProgress = false;
|
|
35603
35294
|
}
|
|
35604
35295
|
});
|
|
35605
|
-
this.
|
|
35296
|
+
if (this.swipeGesture === undefined) {
|
|
35297
|
+
this.swipeGesture = config.getBoolean('swipeBackEnabled', this.mode === 'ios');
|
|
35298
|
+
}
|
|
35299
|
+
else {
|
|
35300
|
+
this.updateGestureEnabled();
|
|
35301
|
+
}
|
|
35606
35302
|
}
|
|
35607
35303
|
componentWillLoad() {
|
|
35608
35304
|
this.ionNavWillLoad.emit();
|
|
35609
35305
|
}
|
|
35306
|
+
updateGestureEnabled() {
|
|
35307
|
+
if (this.gesture) {
|
|
35308
|
+
this.gesture.enable(this.swipeHandler !== undefined && this.swipeGesture === true);
|
|
35309
|
+
}
|
|
35310
|
+
}
|
|
35610
35311
|
disconnectedCallback() {
|
|
35611
35312
|
if (this.gesture) {
|
|
35612
35313
|
this.gesture.destroy();
|
|
@@ -35717,10 +35418,13 @@ class RouterOutlet {
|
|
|
35717
35418
|
return true;
|
|
35718
35419
|
}
|
|
35719
35420
|
render() {
|
|
35720
|
-
return hAsync("slot", { key: '
|
|
35421
|
+
return hAsync("slot", { key: 'ce09e6fbba7b0a2276cdde5245bb37c9a162c1c7' });
|
|
35721
35422
|
}
|
|
35722
35423
|
get el() { return getElement(this); }
|
|
35723
35424
|
static get watchers() { return {
|
|
35425
|
+
"swipeGesture": [{
|
|
35426
|
+
"swipeGestureChanged": 0
|
|
35427
|
+
}],
|
|
35724
35428
|
"swipeHandler": [{
|
|
35725
35429
|
"swipeHandlerChanged": 0
|
|
35726
35430
|
}]
|
|
@@ -35734,6 +35438,7 @@ class RouterOutlet {
|
|
|
35734
35438
|
"delegate": [16],
|
|
35735
35439
|
"animated": [4],
|
|
35736
35440
|
"animation": [16],
|
|
35441
|
+
"swipeGesture": [1028, "swipe-gesture"],
|
|
35737
35442
|
"swipeHandler": [16],
|
|
35738
35443
|
"commit": [64],
|
|
35739
35444
|
"setRouteId": [64],
|
|
@@ -35752,7 +35457,7 @@ class Row {
|
|
|
35752
35457
|
registerInstance(this, hostRef);
|
|
35753
35458
|
}
|
|
35754
35459
|
render() {
|
|
35755
|
-
return (hAsync(Host, { key: '
|
|
35460
|
+
return (hAsync(Host, { key: 'a9066661fff12baaf3e80b2e8c08591af72fe5b8', class: getIonMode$1(this) }, hAsync("slot", { key: '62b103af46d3a5ec9c146019ae300b68a4ae867a' })));
|
|
35756
35461
|
}
|
|
35757
35462
|
static get style() { return rowCss(); }
|
|
35758
35463
|
static get cmpMeta() { return {
|
|
@@ -35804,7 +35509,7 @@ class Searchbar {
|
|
|
35804
35509
|
/**
|
|
35805
35510
|
* Set the input's autocorrect property.
|
|
35806
35511
|
*/
|
|
35807
|
-
this.autocorrect =
|
|
35512
|
+
this.autocorrect = false;
|
|
35808
35513
|
/**
|
|
35809
35514
|
* Set the cancel button icon. Only applies to `md` mode.
|
|
35810
35515
|
* Defaults to `arrow-back-sharp`.
|
|
@@ -36225,8 +35930,8 @@ class Searchbar {
|
|
|
36225
35930
|
const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
|
|
36226
35931
|
const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
|
|
36227
35932
|
const shouldShowCancelButton = this.shouldShowCancelButton();
|
|
36228
|
-
const cancelButton = this.showCancelButton !== 'never' && (hAsync("button", { key: '
|
|
36229
|
-
return (hAsync(Host, { key: '
|
|
35933
|
+
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))));
|
|
35934
|
+
return (hAsync(Host, { key: '1b4f6c4e7dffb02e092f0026ce3875822d98a631', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
|
|
36230
35935
|
[mode]: true,
|
|
36231
35936
|
'searchbar-animated': animated,
|
|
36232
35937
|
'searchbar-disabled': this.disabled,
|
|
@@ -36236,14 +35941,14 @@ class Searchbar {
|
|
|
36236
35941
|
'searchbar-has-focus': this.focused,
|
|
36237
35942
|
'searchbar-should-show-clear': this.shouldShowClearButton(),
|
|
36238
35943
|
'searchbar-should-show-cancel': this.shouldShowCancelButton(),
|
|
36239
|
-
}) }, hAsync("div", { key: '
|
|
35944
|
+
}) }, 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) => {
|
|
36240
35945
|
/**
|
|
36241
35946
|
* This prevents mobile browsers from
|
|
36242
35947
|
* blurring the input when the clear
|
|
36243
35948
|
* button is activated.
|
|
36244
35949
|
*/
|
|
36245
35950
|
ev.preventDefault();
|
|
36246
|
-
}, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: '
|
|
35951
|
+
}, 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));
|
|
36247
35952
|
}
|
|
36248
35953
|
get el() { return getElement(this); }
|
|
36249
35954
|
static get watchers() { return {
|
|
@@ -36275,7 +35980,7 @@ class Searchbar {
|
|
|
36275
35980
|
"animated": [4],
|
|
36276
35981
|
"autocapitalize": [1],
|
|
36277
35982
|
"autocomplete": [1],
|
|
36278
|
-
"autocorrect": [
|
|
35983
|
+
"autocorrect": [4],
|
|
36279
35984
|
"cancelButtonIcon": [1, "cancel-button-icon"],
|
|
36280
35985
|
"cancelButtonText": [1, "cancel-button-text"],
|
|
36281
35986
|
"clearIcon": [1, "clear-icon"],
|
|
@@ -36852,14 +36557,14 @@ class Segment {
|
|
|
36852
36557
|
}
|
|
36853
36558
|
render() {
|
|
36854
36559
|
const mode = getIonMode$1(this);
|
|
36855
|
-
return (hAsync(Host, { key: '
|
|
36560
|
+
return (hAsync(Host, { key: 'bb626072e73f09c3433e1a769e09789a00822d8f', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
|
|
36856
36561
|
[mode]: true,
|
|
36857
36562
|
'in-toolbar': hostContext('ion-toolbar', this.el),
|
|
36858
36563
|
'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
|
|
36859
36564
|
'segment-activated': this.activated,
|
|
36860
36565
|
'segment-disabled': this.disabled,
|
|
36861
36566
|
'segment-scrollable': this.scrollable,
|
|
36862
|
-
}) }, hAsync("slot", { key: '
|
|
36567
|
+
}) }, hAsync("slot", { key: '652d5037c2c2dee4d47a5710b1d150e691202d25', onSlotchange: this.onSlottedItemsChange })));
|
|
36863
36568
|
}
|
|
36864
36569
|
get el() { return getElement(this); }
|
|
36865
36570
|
static get watchers() { return {
|
|
@@ -37007,7 +36712,7 @@ class SegmentButton {
|
|
|
37007
36712
|
const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
|
|
37008
36713
|
const mode = getIonMode$1(this);
|
|
37009
36714
|
const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
|
|
37010
|
-
return (hAsync(Host, { key: '
|
|
36715
|
+
return (hAsync(Host, { key: '792f621c36260b1fceff2b4ec4fa95d98d51d46b', class: {
|
|
37011
36716
|
[mode]: true,
|
|
37012
36717
|
'in-toolbar': hostContext('ion-toolbar', this.el),
|
|
37013
36718
|
'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
|
|
@@ -37023,7 +36728,7 @@ class SegmentButton {
|
|
|
37023
36728
|
'ion-activatable': true,
|
|
37024
36729
|
'ion-activatable-instant': true,
|
|
37025
36730
|
'ion-focusable': true,
|
|
37026
|
-
} }, hAsync("button", Object.assign({ key: '
|
|
36731
|
+
} }, 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" }))));
|
|
37027
36732
|
}
|
|
37028
36733
|
get el() { return getElement(this); }
|
|
37029
36734
|
static get watchers() { return {
|
|
@@ -37060,7 +36765,7 @@ class SegmentContent {
|
|
|
37060
36765
|
registerInstance(this, hostRef);
|
|
37061
36766
|
}
|
|
37062
36767
|
render() {
|
|
37063
|
-
return (hAsync(Host, { key: '
|
|
36768
|
+
return (hAsync(Host, { key: 'ef39f29c444177c3b083cd35680ba891e4bb6a2a' }, hAsync("slot", { key: '51f9dd9ca084ddd928b376aa9d716509669c32b2' })));
|
|
37064
36769
|
}
|
|
37065
36770
|
static get style() { return segmentContentCss(); }
|
|
37066
36771
|
static get cmpMeta() { return {
|
|
@@ -37179,11 +36884,11 @@ class SegmentView {
|
|
|
37179
36884
|
}
|
|
37180
36885
|
render() {
|
|
37181
36886
|
const { disabled, isManualScroll, swipeGesture } = this;
|
|
37182
|
-
return (hAsync(Host, { key: '
|
|
36887
|
+
return (hAsync(Host, { key: 'a6c6ac0232c4bb6f2a954b3de7993019d71f423a', class: {
|
|
37183
36888
|
'segment-view-disabled': disabled,
|
|
37184
36889
|
'segment-view-scroll-disabled': isManualScroll === false,
|
|
37185
36890
|
'segment-view-swipe-disabled': swipeGesture === false,
|
|
37186
|
-
} }, hAsync("slot", { key: '
|
|
36891
|
+
} }, hAsync("slot", { key: '386305be2a75069c79def12005d9f6b49276763f' })));
|
|
37187
36892
|
}
|
|
37188
36893
|
get el() { return getElement(this); }
|
|
37189
36894
|
static get style() { return {
|
|
@@ -37205,9 +36910,9 @@ class SegmentView {
|
|
|
37205
36910
|
}; }
|
|
37206
36911
|
}
|
|
37207
36912
|
|
|
37208
|
-
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}`;
|
|
36913
|
+
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}`;
|
|
37209
36914
|
|
|
37210
|
-
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}`;
|
|
36915
|
+
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}`;
|
|
37211
36916
|
|
|
37212
36917
|
// TODO(FW-2832): types
|
|
37213
36918
|
/**
|
|
@@ -37242,6 +36947,7 @@ class Select {
|
|
|
37242
36947
|
this.helperTextId = `${this.inputId}-helper-text`;
|
|
37243
36948
|
this.errorTextId = `${this.inputId}-error-text`;
|
|
37244
36949
|
this.inheritedAttributes = {};
|
|
36950
|
+
this.customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
|
|
37245
36951
|
this.isExpanded = false;
|
|
37246
36952
|
/**
|
|
37247
36953
|
* The `hasFocus` state ensures the focus class is
|
|
@@ -37367,9 +37073,40 @@ class Select {
|
|
|
37367
37073
|
this.emitStyle();
|
|
37368
37074
|
}
|
|
37369
37075
|
setValue(value) {
|
|
37076
|
+
if (this.isValueEqual(this.value, value)) {
|
|
37077
|
+
return;
|
|
37078
|
+
}
|
|
37370
37079
|
this.value = value;
|
|
37371
37080
|
this.ionChange.emit({ value });
|
|
37372
37081
|
}
|
|
37082
|
+
isValueEqual(currentValue, newValue) {
|
|
37083
|
+
if (this.multiple) {
|
|
37084
|
+
const currentArr = Array.isArray(currentValue) ? currentValue : [];
|
|
37085
|
+
const newArr = Array.isArray(newValue) ? newValue : [];
|
|
37086
|
+
if (currentArr.length !== newArr.length) {
|
|
37087
|
+
return false;
|
|
37088
|
+
}
|
|
37089
|
+
// Multiset compare: each new value must match a distinct current value.
|
|
37090
|
+
// A plain `every(isOptionSelected)` would accept ['a','a'] as equal to
|
|
37091
|
+
// ['a','b'] when both 'a' and 'b' map to options whose values overlap.
|
|
37092
|
+
const remaining = currentArr.slice();
|
|
37093
|
+
return newArr.every((val) => {
|
|
37094
|
+
const idx = remaining.findIndex((c) => compareOptions(c, val, this.compareWith));
|
|
37095
|
+
if (idx === -1) {
|
|
37096
|
+
return false;
|
|
37097
|
+
}
|
|
37098
|
+
remaining.splice(idx, 1);
|
|
37099
|
+
return true;
|
|
37100
|
+
});
|
|
37101
|
+
}
|
|
37102
|
+
if (currentValue == null && newValue == null) {
|
|
37103
|
+
return true;
|
|
37104
|
+
}
|
|
37105
|
+
if (currentValue == null || newValue == null) {
|
|
37106
|
+
return false;
|
|
37107
|
+
}
|
|
37108
|
+
return compareOptions(currentValue, newValue, this.compareWith);
|
|
37109
|
+
}
|
|
37373
37110
|
async connectedCallback() {
|
|
37374
37111
|
const { el } = this;
|
|
37375
37112
|
this.notchController = createNotchController(el, () => this.notchSpacerEl, () => this.labelSlot);
|
|
@@ -37563,10 +37300,11 @@ class Select {
|
|
|
37563
37300
|
.join(' ');
|
|
37564
37301
|
const optClass = `${OPTION_CLASS} ${copyClasses}`;
|
|
37565
37302
|
const isSelected = isOptionSelected(selectValue, value, this.compareWith);
|
|
37303
|
+
const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
|
|
37566
37304
|
return {
|
|
37567
|
-
|
|
37568
|
-
text: option.textContent,
|
|
37305
|
+
text: content !== null && content !== void 0 ? content : '',
|
|
37569
37306
|
cssClass: optClass,
|
|
37307
|
+
disabled: option.disabled,
|
|
37570
37308
|
handler: () => {
|
|
37571
37309
|
this.setValue(value);
|
|
37572
37310
|
},
|
|
@@ -37574,6 +37312,9 @@ class Select {
|
|
|
37574
37312
|
'aria-checked': isSelected ? 'true' : 'false',
|
|
37575
37313
|
role: 'radio',
|
|
37576
37314
|
},
|
|
37315
|
+
startContent,
|
|
37316
|
+
endContent,
|
|
37317
|
+
description: option.description,
|
|
37577
37318
|
};
|
|
37578
37319
|
});
|
|
37579
37320
|
// Add "cancel" button
|
|
@@ -37594,13 +37335,19 @@ class Select {
|
|
|
37594
37335
|
.filter((cls) => cls !== 'hydrated')
|
|
37595
37336
|
.join(' ');
|
|
37596
37337
|
const optClass = `${OPTION_CLASS} ${copyClasses}`;
|
|
37338
|
+
const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
|
|
37597
37339
|
return {
|
|
37598
37340
|
type: inputType,
|
|
37599
37341
|
cssClass: optClass,
|
|
37600
|
-
label:
|
|
37342
|
+
label: content !== null && content !== void 0 ? content : '',
|
|
37601
37343
|
value,
|
|
37602
37344
|
checked: isOptionSelected(selectValue, value, this.compareWith),
|
|
37603
37345
|
disabled: option.disabled,
|
|
37346
|
+
startContent,
|
|
37347
|
+
endContent,
|
|
37348
|
+
description: option.description,
|
|
37349
|
+
labelPlacement: option.labelPlacement,
|
|
37350
|
+
justify: option.justify,
|
|
37604
37351
|
};
|
|
37605
37352
|
});
|
|
37606
37353
|
return alertInputs;
|
|
@@ -37613,8 +37360,9 @@ class Select {
|
|
|
37613
37360
|
.filter((cls) => cls !== 'hydrated')
|
|
37614
37361
|
.join(' ');
|
|
37615
37362
|
const optClass = `${OPTION_CLASS} ${copyClasses}`;
|
|
37363
|
+
const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
|
|
37616
37364
|
return {
|
|
37617
|
-
text:
|
|
37365
|
+
text: content !== null && content !== void 0 ? content : '',
|
|
37618
37366
|
cssClass: optClass,
|
|
37619
37367
|
value,
|
|
37620
37368
|
checked: isOptionSelected(selectValue, value, this.compareWith),
|
|
@@ -37625,6 +37373,11 @@ class Select {
|
|
|
37625
37373
|
this.close();
|
|
37626
37374
|
}
|
|
37627
37375
|
},
|
|
37376
|
+
startContent,
|
|
37377
|
+
endContent,
|
|
37378
|
+
description: option.description,
|
|
37379
|
+
labelPlacement: option.labelPlacement,
|
|
37380
|
+
justify: option.justify,
|
|
37628
37381
|
};
|
|
37629
37382
|
});
|
|
37630
37383
|
return popoverOptions;
|
|
@@ -37657,15 +37410,21 @@ class Select {
|
|
|
37657
37410
|
ionShadowTarget: this.nativeWrapperEl,
|
|
37658
37411
|
} });
|
|
37659
37412
|
}
|
|
37413
|
+
const options = this.createOverlaySelectOptions(this.childOpts, value);
|
|
37414
|
+
const hasRichContent = options.some((opt) => opt.startContent || opt.endContent || opt.description);
|
|
37660
37415
|
const popoverOpts = Object.assign(Object.assign({ mode,
|
|
37661
37416
|
event, alignment: 'center', size,
|
|
37662
|
-
showBackdrop }, interfaceOptions), { component: 'ion-select-popover', cssClass: [
|
|
37417
|
+
showBackdrop }, interfaceOptions), { component: 'ion-select-popover', cssClass: [
|
|
37418
|
+
'select-popover',
|
|
37419
|
+
hasRichContent ? 'select-popover-rich-content' : undefined,
|
|
37420
|
+
interfaceOptions.cssClass,
|
|
37421
|
+
], componentProps: {
|
|
37663
37422
|
header: interfaceOptions.header,
|
|
37664
37423
|
subHeader: interfaceOptions.subHeader,
|
|
37665
37424
|
message: interfaceOptions.message,
|
|
37666
37425
|
multiple,
|
|
37667
37426
|
value,
|
|
37668
|
-
options
|
|
37427
|
+
options,
|
|
37669
37428
|
} });
|
|
37670
37429
|
return popoverController.create(popoverOpts);
|
|
37671
37430
|
}
|
|
@@ -37746,12 +37505,18 @@ class Select {
|
|
|
37746
37505
|
}
|
|
37747
37506
|
return;
|
|
37748
37507
|
}
|
|
37749
|
-
|
|
37508
|
+
/**
|
|
37509
|
+
* Returns the text to display in the select based on the selected value.
|
|
37510
|
+
*
|
|
37511
|
+
* @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`.
|
|
37512
|
+
* @returns The text to display in the select, either with or without HTML based on the `useHTML` parameter.
|
|
37513
|
+
*/
|
|
37514
|
+
getText(useHTML = false) {
|
|
37750
37515
|
const selectedText = this.selectedText;
|
|
37751
37516
|
if (selectedText != null && selectedText !== '') {
|
|
37752
37517
|
return selectedText;
|
|
37753
37518
|
}
|
|
37754
|
-
return generateText(this.childOpts, this.value, this.compareWith);
|
|
37519
|
+
return generateText(this.childOpts, this.value, this.compareWith, useHTML);
|
|
37755
37520
|
}
|
|
37756
37521
|
setFocus() {
|
|
37757
37522
|
if (this.focusEl) {
|
|
@@ -37821,6 +37586,47 @@ class Select {
|
|
|
37821
37586
|
*/
|
|
37822
37587
|
return this.renderLabel();
|
|
37823
37588
|
}
|
|
37589
|
+
/**
|
|
37590
|
+
* Wraps text nodes in the select text with span elements
|
|
37591
|
+
* so spacing can be added between elements without
|
|
37592
|
+
* changing the display to prevent losing the ellipses
|
|
37593
|
+
* behavior.
|
|
37594
|
+
*
|
|
37595
|
+
* Only wraps when the string contains HTML elements
|
|
37596
|
+
* alongside text.
|
|
37597
|
+
*/
|
|
37598
|
+
wrapSelectTextNodes(html) {
|
|
37599
|
+
const temp = document.createElement('div');
|
|
37600
|
+
temp.innerHTML = html;
|
|
37601
|
+
const hasElements = Array.from(temp.childNodes).some((n) => n.nodeType === Node.ELEMENT_NODE);
|
|
37602
|
+
// Return the plain text
|
|
37603
|
+
if (!hasElements) {
|
|
37604
|
+
return html;
|
|
37605
|
+
}
|
|
37606
|
+
Array.from(temp.childNodes).forEach((node) => {
|
|
37607
|
+
var _a, _b, _c, _d;
|
|
37608
|
+
if (node.nodeType === Node.TEXT_NODE && ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim())) {
|
|
37609
|
+
const text = node.textContent;
|
|
37610
|
+
/**
|
|
37611
|
+
* Split comma separator from the text content
|
|
37612
|
+
* e.g., ", Bacon" becomes ", " text node + <span>Bacon</span>.
|
|
37613
|
+
*/
|
|
37614
|
+
const commaMatch = text.match(/^(,\s*)(.*)/);
|
|
37615
|
+
if (commaMatch) {
|
|
37616
|
+
const commaNode = document.createTextNode(commaMatch[1]);
|
|
37617
|
+
const wrapper = document.createElement('span');
|
|
37618
|
+
wrapper.textContent = commaMatch[2];
|
|
37619
|
+
(_b = node.parentNode) === null || _b === void 0 ? void 0 : _b.replaceChild(wrapper, node);
|
|
37620
|
+
(_c = wrapper.parentNode) === null || _c === void 0 ? void 0 : _c.insertBefore(commaNode, wrapper);
|
|
37621
|
+
return;
|
|
37622
|
+
}
|
|
37623
|
+
const wrapper = document.createElement('span');
|
|
37624
|
+
(_d = node.parentNode) === null || _d === void 0 ? void 0 : _d.replaceChild(wrapper, node);
|
|
37625
|
+
wrapper.appendChild(node);
|
|
37626
|
+
}
|
|
37627
|
+
});
|
|
37628
|
+
return temp.innerHTML;
|
|
37629
|
+
}
|
|
37824
37630
|
/**
|
|
37825
37631
|
* Renders either the placeholder
|
|
37826
37632
|
* or the selected values based on
|
|
@@ -37828,7 +37634,7 @@ class Select {
|
|
|
37828
37634
|
*/
|
|
37829
37635
|
renderSelectText() {
|
|
37830
37636
|
const { placeholder } = this;
|
|
37831
|
-
const displayValue = this.getText();
|
|
37637
|
+
const displayValue = this.getText(true);
|
|
37832
37638
|
let addPlaceholderClass = false;
|
|
37833
37639
|
let selectText = displayValue;
|
|
37834
37640
|
if (selectText === '' && placeholder !== undefined) {
|
|
@@ -37840,6 +37646,10 @@ class Select {
|
|
|
37840
37646
|
'select-placeholder': addPlaceholderClass,
|
|
37841
37647
|
};
|
|
37842
37648
|
const textPart = addPlaceholderClass ? 'placeholder' : 'text';
|
|
37649
|
+
if (this.customHTMLEnabled) {
|
|
37650
|
+
const wrapped = this.wrapSelectTextNodes(selectText);
|
|
37651
|
+
return hAsync("div", { "aria-hidden": "true", class: selectTextClasses, part: textPart, innerHTML: wrapped });
|
|
37652
|
+
}
|
|
37843
37653
|
return (hAsync("div", { "aria-hidden": "true", class: selectTextClasses, part: textPart }, selectText));
|
|
37844
37654
|
}
|
|
37845
37655
|
/**
|
|
@@ -37862,6 +37672,7 @@ class Select {
|
|
|
37862
37672
|
get ariaLabel() {
|
|
37863
37673
|
var _a;
|
|
37864
37674
|
const { placeholder, inheritedAttributes } = this;
|
|
37675
|
+
// Get the plain text from the selected text
|
|
37865
37676
|
const displayValue = this.getText();
|
|
37866
37677
|
// The aria label should be preferred over visible text if both are specified
|
|
37867
37678
|
const definedLabel = (_a = inheritedAttributes['aria-label']) !== null && _a !== void 0 ? _a : this.labelText;
|
|
@@ -37955,7 +37766,7 @@ class Select {
|
|
|
37955
37766
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
37956
37767
|
*/
|
|
37957
37768
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
|
|
37958
|
-
return (hAsync(Host, { key: '
|
|
37769
|
+
return (hAsync(Host, { key: 'a3036d51e0db13332641e9523264ddd1ab031912', onClick: this.onClick, class: createColorClasses$1(this.color, {
|
|
37959
37770
|
[mode]: true,
|
|
37960
37771
|
'in-item': inItem,
|
|
37961
37772
|
'in-item-color': hostContext('ion-item.ion-color', el),
|
|
@@ -37973,7 +37784,7 @@ class Select {
|
|
|
37973
37784
|
[`select-justify-${justify}`]: justifyEnabled,
|
|
37974
37785
|
[`select-shape-${shape}`]: shape !== undefined,
|
|
37975
37786
|
[`select-label-placement-${labelPlacement}`]: true,
|
|
37976
|
-
}) }, hAsync("label", { key: '
|
|
37787
|
+
}) }, 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()));
|
|
37977
37788
|
}
|
|
37978
37789
|
get el() { return getElement(this); }
|
|
37979
37790
|
static get watchers() { return {
|
|
@@ -38044,34 +37855,232 @@ const parseValue = (value) => {
|
|
|
38044
37855
|
}
|
|
38045
37856
|
return value.toString();
|
|
38046
37857
|
};
|
|
38047
|
-
const generateText = (opts, value, compareWith) => {
|
|
37858
|
+
const generateText = (opts, value, compareWith, useHTML = false) => {
|
|
38048
37859
|
if (value === undefined) {
|
|
38049
37860
|
return '';
|
|
38050
37861
|
}
|
|
38051
37862
|
if (Array.isArray(value)) {
|
|
38052
37863
|
return value
|
|
38053
|
-
.map((v) => textForValue(opts, v, compareWith))
|
|
37864
|
+
.map((v) => textForValue(opts, v, compareWith, useHTML))
|
|
38054
37865
|
.filter((opt) => opt !== null)
|
|
38055
37866
|
.join(', ');
|
|
38056
37867
|
}
|
|
38057
37868
|
else {
|
|
38058
|
-
return textForValue(opts, value, compareWith) || '';
|
|
37869
|
+
return textForValue(opts, value, compareWith, useHTML) || '';
|
|
38059
37870
|
}
|
|
38060
37871
|
};
|
|
38061
|
-
|
|
37872
|
+
/**
|
|
37873
|
+
* Returns the display text for a given value from the list of options.
|
|
37874
|
+
* When `useHTML` is true, returns sanitized HTML for the select text.
|
|
37875
|
+
* When `useHTML` is false, returns plain text for aria-label and other
|
|
37876
|
+
* text-only contexts.
|
|
37877
|
+
*
|
|
37878
|
+
* @param opts - The list of ion-select-option elements.
|
|
37879
|
+
* @param value - The value to find the matching option for.
|
|
37880
|
+
* @param compareWith - Custom comparison function or property name.
|
|
37881
|
+
* @param useHTML - If true, returns HTML string. If false, returns plain text.
|
|
37882
|
+
*/
|
|
37883
|
+
const textForValue = (opts, value, compareWith, useHTML = false) => {
|
|
38062
37884
|
const selectOpt = opts.find((opt) => {
|
|
38063
37885
|
return compareOptions(value, getOptionValue(opt), compareWith);
|
|
38064
37886
|
});
|
|
38065
|
-
|
|
37887
|
+
const customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
|
|
37888
|
+
if (!selectOpt) {
|
|
37889
|
+
return null;
|
|
37890
|
+
}
|
|
37891
|
+
// Return sanitized HTML for the select text
|
|
37892
|
+
if (customHTMLEnabled && useHTML) {
|
|
37893
|
+
return getOptionContent(selectOpt, undefined, true);
|
|
37894
|
+
}
|
|
37895
|
+
/**
|
|
37896
|
+
* When custom HTML is enabled, extract only the default slot content.
|
|
37897
|
+
* This ensures aria-label and other text-only contexts read only
|
|
37898
|
+
* the relevant option text.
|
|
37899
|
+
*/
|
|
37900
|
+
if (customHTMLEnabled) {
|
|
37901
|
+
const content = getOptionContent(selectOpt);
|
|
37902
|
+
if (typeof content === 'string') {
|
|
37903
|
+
return content;
|
|
37904
|
+
}
|
|
37905
|
+
/**
|
|
37906
|
+
* Elements were found in the default slot, extract and concatenate
|
|
37907
|
+
* their text content while trimming whitespace.
|
|
37908
|
+
*/
|
|
37909
|
+
if (content) {
|
|
37910
|
+
const texts = Array.from(content.childNodes)
|
|
37911
|
+
.map((n) => { var _a; return (_a = n.textContent) === null || _a === void 0 ? void 0 : _a.trim(); })
|
|
37912
|
+
.filter((t) => t);
|
|
37913
|
+
return texts.join(' ') || null;
|
|
37914
|
+
}
|
|
37915
|
+
// Empty option
|
|
37916
|
+
return null;
|
|
37917
|
+
}
|
|
37918
|
+
return getDefaultSlotPlainText(selectOpt);
|
|
37919
|
+
};
|
|
37920
|
+
/**
|
|
37921
|
+
* Trims whitespace from all text nodes within a DOM tree.
|
|
37922
|
+
* This prevents invisible layout shifts and unwanted gaps between
|
|
37923
|
+
* elements when HTML content is injected via innerHTML or cloneNode,
|
|
37924
|
+
* as browsers preserve whitespace (tabs, newlines, spaces) from
|
|
37925
|
+
* the original source markup.
|
|
37926
|
+
*
|
|
37927
|
+
* @param node The root node to start trimming text nodes from.
|
|
37928
|
+
*/
|
|
37929
|
+
const trimTextNodes = (node) => {
|
|
37930
|
+
node.childNodes.forEach((child) => {
|
|
37931
|
+
var _a;
|
|
37932
|
+
if (child.nodeType === Node.TEXT_NODE) {
|
|
37933
|
+
child.textContent = ((_a = child.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || '';
|
|
37934
|
+
}
|
|
37935
|
+
else if (child.nodeType === Node.ELEMENT_NODE) {
|
|
37936
|
+
trimTextNodes(child);
|
|
37937
|
+
}
|
|
37938
|
+
});
|
|
37939
|
+
};
|
|
37940
|
+
/**
|
|
37941
|
+
* Extracts and clones content from an `ion-select-option` element
|
|
37942
|
+
* for rendering within overlay interfaces or the select text when `customHTMLEnabled` is `true`.
|
|
37943
|
+
*
|
|
37944
|
+
* @param option - The `ion-select-option` element to extract content from.
|
|
37945
|
+
* @param slotName - Optional slot name to extract. If omitted, extracts the default slot content.
|
|
37946
|
+
* @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.
|
|
37947
|
+
* @returns When `useHTML` is `true`, a sanitized HTML string. When `false`, a
|
|
37948
|
+
* div element containing cloned child nodes. Returns `null` if no matching
|
|
37949
|
+
* content is found.
|
|
37950
|
+
*/
|
|
37951
|
+
const getOptionContent = (option, slotName, useHTML = false) => {
|
|
37952
|
+
let nodes;
|
|
37953
|
+
if (slotName) {
|
|
37954
|
+
// Named slot: get elements with matching slot attribute
|
|
37955
|
+
nodes = Array.from(option.children).filter((el) => el.getAttribute('slot') === slotName);
|
|
37956
|
+
}
|
|
37957
|
+
else {
|
|
37958
|
+
// Default slot: get nodes without a slot attribute
|
|
37959
|
+
const defaultSlot = getOptionDefaultSlot(option) || [];
|
|
37960
|
+
nodes = defaultSlot.filter((node) => {
|
|
37961
|
+
var _a;
|
|
37962
|
+
/**
|
|
37963
|
+
* Exclude whitespace-only text nodes (newline noise between
|
|
37964
|
+
* markup elements). Element nodes are always kept, even when
|
|
37965
|
+
* their textContent is empty (e.g. <svg>, <img>).
|
|
37966
|
+
*/
|
|
37967
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
37968
|
+
return ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim().length) !== 0;
|
|
37969
|
+
}
|
|
37970
|
+
return true;
|
|
37971
|
+
});
|
|
37972
|
+
}
|
|
37973
|
+
if (nodes.length === 0) {
|
|
37974
|
+
return null;
|
|
37975
|
+
}
|
|
37976
|
+
// Return plain text if no elements are found
|
|
37977
|
+
if (!slotName && nodes.every((n) => n.nodeType === Node.TEXT_NODE)) {
|
|
37978
|
+
return nodes.map((n) => { var _a; return (_a = n.textContent) === null || _a === void 0 ? void 0 : _a.trim(); }).join(' ') || null;
|
|
37979
|
+
}
|
|
37980
|
+
/**
|
|
37981
|
+
* Mirror known custom-element properties (e.g. ion-icon's `icon`)
|
|
37982
|
+
* onto attributes before cloning. Frameworks like Vue set these as
|
|
37983
|
+
* DOM properties, which `cloneNode` doesn't copy, so without this
|
|
37984
|
+
* step the cloned overlay copy renders without the prop's value.
|
|
37985
|
+
*/
|
|
37986
|
+
nodes.forEach((n) => {
|
|
37987
|
+
if (n.nodeType === Node.ELEMENT_NODE) {
|
|
37988
|
+
reflectPropertiesToAttributes(n);
|
|
37989
|
+
}
|
|
37990
|
+
});
|
|
37991
|
+
// Clone each node into a temporary container
|
|
37992
|
+
const container = document.createElement('div');
|
|
37993
|
+
nodes.forEach((n) => {
|
|
37994
|
+
var _a;
|
|
37995
|
+
const clone = n.cloneNode(true);
|
|
37996
|
+
if (clone.nodeType === Node.TEXT_NODE) {
|
|
37997
|
+
clone.textContent = ((_a = clone.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || '';
|
|
37998
|
+
}
|
|
37999
|
+
else {
|
|
38000
|
+
trimTextNodes(clone);
|
|
38001
|
+
}
|
|
38002
|
+
container.appendChild(clone);
|
|
38003
|
+
});
|
|
38004
|
+
/**
|
|
38005
|
+
* Sanitize the cloned DOM in place. Trusted attributes (size, color,
|
|
38006
|
+
* shape, etc.) are preserved; event handlers, javascript: URLs, and
|
|
38007
|
+
* blocked tags are stripped.
|
|
38008
|
+
*/
|
|
38009
|
+
sanitizeDOMTree(container);
|
|
38010
|
+
if (useHTML) {
|
|
38011
|
+
return container.innerHTML.trim() || null;
|
|
38012
|
+
}
|
|
38013
|
+
return container;
|
|
38014
|
+
};
|
|
38015
|
+
/**
|
|
38016
|
+
* Returns the child nodes that belong to the default slot of an
|
|
38017
|
+
* option element, excluding any nodes that are assigned to named
|
|
38018
|
+
* slots.
|
|
38019
|
+
*
|
|
38020
|
+
* @param option - The `ion-select-option` element to extract default-slot nodes from.
|
|
38021
|
+
* @returns An array of default slot nodes, or `null` if none are found.
|
|
38022
|
+
*/
|
|
38023
|
+
const getOptionDefaultSlot = (option) => {
|
|
38024
|
+
const defaultSlotNodes = Array.from(option.childNodes).filter((node) => {
|
|
38025
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
38026
|
+
return !node.hasAttribute('slot');
|
|
38027
|
+
}
|
|
38028
|
+
return node.nodeType === Node.TEXT_NODE;
|
|
38029
|
+
});
|
|
38030
|
+
if (defaultSlotNodes.length === 0) {
|
|
38031
|
+
return null;
|
|
38032
|
+
}
|
|
38033
|
+
return defaultSlotNodes;
|
|
38034
|
+
};
|
|
38035
|
+
/**
|
|
38036
|
+
* Extracts plain text from only the default slot of an option,
|
|
38037
|
+
* excluding content assigned to named slots (start/end).
|
|
38038
|
+
*/
|
|
38039
|
+
const getDefaultSlotPlainText = (option) => {
|
|
38040
|
+
const texts = Array.from(option.childNodes)
|
|
38041
|
+
.filter((node) => {
|
|
38042
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
38043
|
+
return !node.hasAttribute('slot');
|
|
38044
|
+
}
|
|
38045
|
+
return node.nodeType === Node.TEXT_NODE;
|
|
38046
|
+
})
|
|
38047
|
+
.filter((node) => node.nodeType === Node.TEXT_NODE)
|
|
38048
|
+
.map((n) => { var _a; return (_a = n.textContent) === null || _a === void 0 ? void 0 : _a.trim(); })
|
|
38049
|
+
.filter((t) => t);
|
|
38050
|
+
return texts.join(' ');
|
|
38051
|
+
};
|
|
38052
|
+
/**
|
|
38053
|
+
* Extracts the rich content from an `ion-select-option`.
|
|
38054
|
+
* When `customHTMLEnabled` is `false`, only the plain text from the
|
|
38055
|
+
* default slot is read and the start and end slots are skipped.
|
|
38056
|
+
*
|
|
38057
|
+
* @param option - The `ion-select-option` element to extract content from.
|
|
38058
|
+
* @param customHTMLEnabled - Whether custom HTML rendering is enabled
|
|
38059
|
+
* via the `innerHTMLTemplatesEnabled` config.
|
|
38060
|
+
*/
|
|
38061
|
+
const extractOptionContent = (option, customHTMLEnabled) => {
|
|
38062
|
+
var _a, _b;
|
|
38063
|
+
if (!customHTMLEnabled) {
|
|
38064
|
+
return {
|
|
38065
|
+
content: getDefaultSlotPlainText(option),
|
|
38066
|
+
startContent: undefined,
|
|
38067
|
+
endContent: undefined,
|
|
38068
|
+
};
|
|
38069
|
+
}
|
|
38070
|
+
return {
|
|
38071
|
+
content: getOptionContent(option),
|
|
38072
|
+
startContent: (_a = getOptionContent(option, 'start')) !== null && _a !== void 0 ? _a : undefined,
|
|
38073
|
+
endContent: (_b = getOptionContent(option, 'end')) !== null && _b !== void 0 ? _b : undefined,
|
|
38074
|
+
};
|
|
38066
38075
|
};
|
|
38067
38076
|
let selectIds = 0;
|
|
38068
38077
|
const OPTION_CLASS = 'select-interface-option';
|
|
38069
38078
|
|
|
38070
|
-
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)}`;
|
|
38079
|
+
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)}`;
|
|
38071
38080
|
|
|
38072
|
-
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)}`;
|
|
38081
|
+
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)}`;
|
|
38073
38082
|
|
|
38074
|
-
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)}`;
|
|
38083
|
+
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)}`;
|
|
38075
38084
|
|
|
38076
38085
|
class SelectModal {
|
|
38077
38086
|
constructor(hostRef) {
|
|
@@ -38125,39 +38134,90 @@ class SelectModal {
|
|
|
38125
38134
|
}
|
|
38126
38135
|
}
|
|
38127
38136
|
renderRadioOptions() {
|
|
38137
|
+
const mode = getIonMode$1(this);
|
|
38128
38138
|
const checked = this.options.filter((o) => o.checked).map((o) => o.value)[0];
|
|
38129
|
-
return (hAsync("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, this.options.map((option) =>
|
|
38139
|
+
return (hAsync("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, this.options.map((option, index) => {
|
|
38140
|
+
var _a, _b;
|
|
38141
|
+
/**
|
|
38142
|
+
* Cast to `SelectOverlayOption` to access rich content
|
|
38143
|
+
* fields (`startContent`, `endContent`, `description`)
|
|
38144
|
+
* that are passed through from `ion-select` but not
|
|
38145
|
+
* part of the public `SelectModalOption` interface.
|
|
38146
|
+
*/
|
|
38147
|
+
const richOption = option;
|
|
38148
|
+
const hasRichContent = !!richOption.startContent || !!richOption.endContent || !!richOption.description;
|
|
38149
|
+
const optionLabelOptions = {
|
|
38150
|
+
id: `modal-option-${index}`,
|
|
38151
|
+
label: richOption.text,
|
|
38152
|
+
startContent: richOption.startContent,
|
|
38153
|
+
endContent: richOption.endContent,
|
|
38154
|
+
description: richOption.description,
|
|
38155
|
+
};
|
|
38156
|
+
const defaultLabelPlacement = getOverlayLabelPlacement(mode, 'radio', 'modal');
|
|
38157
|
+
const defaultJustify = getOverlayLabelJustify(mode, 'radio', 'modal');
|
|
38158
|
+
return (hAsync("ion-item", { lines: "none",
|
|
38130
38159
|
// TODO FW-4784
|
|
38131
|
-
|
|
38132
|
-
|
|
38133
|
-
|
|
38134
|
-
|
|
38135
|
-
|
|
38136
|
-
|
|
38137
|
-
|
|
38138
|
-
|
|
38139
|
-
|
|
38140
|
-
}
|
|
38141
|
-
|
|
38142
|
-
|
|
38143
|
-
this.pendingEnterTarget = null;
|
|
38144
|
-
if (shouldClose) {
|
|
38160
|
+
disabled: option.disabled, class: Object.assign({
|
|
38161
|
+
// TODO FW-4784
|
|
38162
|
+
'item-radio-checked': option.value === checked
|
|
38163
|
+
}, getClassMap(option.cssClass)) }, hAsync("ion-radio", { class: {
|
|
38164
|
+
'select-option-has-rich-content': hasRichContent,
|
|
38165
|
+
}, 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) => {
|
|
38166
|
+
if (ev.key === 'Enter' && !ev.repeat) {
|
|
38167
|
+
this.pendingEnterTarget = ev.currentTarget;
|
|
38168
|
+
}
|
|
38169
|
+
}, onKeyUp: (ev) => {
|
|
38170
|
+
if (ev.key === ' ') {
|
|
38171
|
+
// Space selects and dismisses in one press.
|
|
38145
38172
|
this.closeModal();
|
|
38146
38173
|
}
|
|
38147
|
-
|
|
38148
|
-
|
|
38174
|
+
else if (ev.key === 'Enter') {
|
|
38175
|
+
const shouldClose = this.pendingEnterTarget === ev.currentTarget;
|
|
38176
|
+
this.pendingEnterTarget = null;
|
|
38177
|
+
if (shouldClose) {
|
|
38178
|
+
this.closeModal();
|
|
38179
|
+
}
|
|
38180
|
+
}
|
|
38181
|
+
} }, renderOptionLabel(optionLabelOptions, 'select-option-label'))));
|
|
38182
|
+
})));
|
|
38149
38183
|
}
|
|
38150
38184
|
renderCheckboxOptions() {
|
|
38151
|
-
|
|
38185
|
+
const mode = getIonMode$1(this);
|
|
38186
|
+
return this.options.map((option, index) => {
|
|
38187
|
+
var _a, _b;
|
|
38188
|
+
/**
|
|
38189
|
+
* Cast to `SelectOverlayOption` to access rich content
|
|
38190
|
+
* fields (`startContent`, `endContent`, `description`)
|
|
38191
|
+
* that are passed through from `ion-select` but not
|
|
38192
|
+
* part of the public `SelectModalOption` interface.
|
|
38193
|
+
*/
|
|
38194
|
+
const richOption = option;
|
|
38195
|
+
const hasRichContent = !!richOption.startContent || !!richOption.endContent || !!richOption.description;
|
|
38196
|
+
const optionLabelOptions = {
|
|
38197
|
+
id: `modal-option-${index}`,
|
|
38198
|
+
label: richOption.text,
|
|
38199
|
+
startContent: richOption.startContent,
|
|
38200
|
+
endContent: richOption.endContent,
|
|
38201
|
+
description: richOption.description,
|
|
38202
|
+
};
|
|
38203
|
+
const defaultLabelPlacement = getOverlayLabelPlacement(mode, 'checkbox', 'modal');
|
|
38204
|
+
const defaultJustify = getOverlayLabelJustify(mode, 'checkbox', 'modal');
|
|
38205
|
+
return (hAsync("ion-item", {
|
|
38152
38206
|
// TODO FW-4784
|
|
38153
|
-
|
|
38154
|
-
|
|
38155
|
-
|
|
38156
|
-
|
|
38157
|
-
}
|
|
38207
|
+
disabled: option.disabled, class: Object.assign({
|
|
38208
|
+
// TODO FW-4784
|
|
38209
|
+
'item-checkbox-checked': option.checked
|
|
38210
|
+
}, getClassMap(option.cssClass))
|
|
38211
|
+
}, hAsync("ion-checkbox", { class: {
|
|
38212
|
+
'select-option-has-rich-content': hasRichContent,
|
|
38213
|
+
}, 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) => {
|
|
38214
|
+
this.setChecked(ev);
|
|
38215
|
+
this.callOptionHandler(ev);
|
|
38216
|
+
} }, renderOptionLabel(optionLabelOptions, 'select-option-label'))));
|
|
38217
|
+
});
|
|
38158
38218
|
}
|
|
38159
38219
|
render() {
|
|
38160
|
-
return (hAsync(Host, { key: '
|
|
38220
|
+
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()))));
|
|
38161
38221
|
}
|
|
38162
38222
|
get el() { return getElement(this); }
|
|
38163
38223
|
static get style() { return {
|
|
@@ -38182,17 +38242,24 @@ class SelectModal {
|
|
|
38182
38242
|
|
|
38183
38243
|
const selectOptionCss = () => `:host{display:none}`;
|
|
38184
38244
|
|
|
38245
|
+
/**
|
|
38246
|
+
* @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
|
|
38247
|
+
*
|
|
38248
|
+
* @slot - Content is placed between the named slots if provided without a slot.
|
|
38249
|
+
* @slot start - Content is placed to the left of the select option text in LTR, and to the right in RTL.
|
|
38250
|
+
* @slot end - Content is placed to the right of the select option text in LTR, and to the left in RTL.
|
|
38251
|
+
*/
|
|
38185
38252
|
class SelectOption {
|
|
38186
38253
|
constructor(hostRef) {
|
|
38187
38254
|
registerInstance(this, hostRef);
|
|
38188
38255
|
this.inputId = `ion-selopt-${selectOptionIds++}`;
|
|
38189
38256
|
/**
|
|
38190
|
-
* If `true`, the user cannot interact with the select option.
|
|
38257
|
+
* If `true`, the user cannot interact with the select option.
|
|
38191
38258
|
*/
|
|
38192
38259
|
this.disabled = false;
|
|
38193
38260
|
}
|
|
38194
38261
|
render() {
|
|
38195
|
-
return hAsync(Host, { key: '
|
|
38262
|
+
return hAsync(Host, { key: '8b8bef0f5a55f18048708c34d3ea3ff0ff2f1d47', role: "option", id: this.inputId, class: getIonMode$1(this) });
|
|
38196
38263
|
}
|
|
38197
38264
|
get el() { return getElement(this); }
|
|
38198
38265
|
static get style() { return selectOptionCss(); }
|
|
@@ -38201,7 +38268,10 @@ class SelectOption {
|
|
|
38201
38268
|
"$tagName$": "ion-select-option",
|
|
38202
38269
|
"$members$": {
|
|
38203
38270
|
"disabled": [4],
|
|
38204
|
-
"value": [8]
|
|
38271
|
+
"value": [8],
|
|
38272
|
+
"description": [1],
|
|
38273
|
+
"labelPlacement": [1, "label-placement"],
|
|
38274
|
+
"justify": [1]
|
|
38205
38275
|
},
|
|
38206
38276
|
"$listeners$": undefined,
|
|
38207
38277
|
"$lazyBundleId$": "-",
|
|
@@ -38210,9 +38280,9 @@ class SelectOption {
|
|
|
38210
38280
|
}
|
|
38211
38281
|
let selectOptionIds = 0;
|
|
38212
38282
|
|
|
38213
|
-
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}`;
|
|
38283
|
+
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}`;
|
|
38214
38284
|
|
|
38215
|
-
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)}`;
|
|
38285
|
+
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)}`;
|
|
38216
38286
|
|
|
38217
38287
|
/**
|
|
38218
38288
|
* @internal
|
|
@@ -38286,41 +38356,91 @@ class SelectPopover {
|
|
|
38286
38356
|
}
|
|
38287
38357
|
}
|
|
38288
38358
|
renderCheckboxOptions(options) {
|
|
38289
|
-
|
|
38359
|
+
const mode = getIonMode$1(this);
|
|
38360
|
+
return options.map((option, index) => {
|
|
38361
|
+
var _a, _b;
|
|
38362
|
+
/**
|
|
38363
|
+
* Cast to `SelectOverlayOption` to access rich content
|
|
38364
|
+
* fields (`startContent`, `endContent`, `description`)
|
|
38365
|
+
* that are passed through from `ion-select` but not
|
|
38366
|
+
* part of the public `SelectPopoverOption` interface.
|
|
38367
|
+
*/
|
|
38368
|
+
const richOption = option;
|
|
38369
|
+
const hasRichContent = !!richOption.startContent || !!richOption.endContent || !!richOption.description;
|
|
38370
|
+
const optionLabelOptions = {
|
|
38371
|
+
id: `popover-option-${index}`,
|
|
38372
|
+
label: richOption.text,
|
|
38373
|
+
startContent: richOption.startContent,
|
|
38374
|
+
endContent: richOption.endContent,
|
|
38375
|
+
description: richOption.description,
|
|
38376
|
+
};
|
|
38377
|
+
const defaultLabelPlacement = getOverlayLabelPlacement(mode, 'checkbox');
|
|
38378
|
+
const defaultJustify = getOverlayLabelJustify(mode, 'checkbox');
|
|
38379
|
+
return (hAsync("ion-item", {
|
|
38290
38380
|
// TODO FW-4784
|
|
38291
|
-
|
|
38292
|
-
|
|
38293
|
-
|
|
38294
|
-
|
|
38295
|
-
}
|
|
38381
|
+
disabled: option.disabled, class: Object.assign({
|
|
38382
|
+
// TODO FW-4784
|
|
38383
|
+
'item-checkbox-checked': option.checked
|
|
38384
|
+
}, getClassMap(option.cssClass))
|
|
38385
|
+
}, hAsync("ion-checkbox", { class: {
|
|
38386
|
+
'select-option-has-rich-content': hasRichContent,
|
|
38387
|
+
}, 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) => {
|
|
38388
|
+
this.setChecked(ev);
|
|
38389
|
+
this.callOptionHandler(ev);
|
|
38390
|
+
} }, renderOptionLabel(optionLabelOptions, 'select-option-label'))));
|
|
38391
|
+
});
|
|
38296
38392
|
}
|
|
38297
38393
|
renderRadioOptions(options) {
|
|
38394
|
+
const mode = getIonMode$1(this);
|
|
38298
38395
|
const checked = options.filter((o) => o.checked).map((o) => o.value)[0];
|
|
38299
|
-
return (hAsync("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, options.map((option) =>
|
|
38396
|
+
return (hAsync("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, options.map((option, index) => {
|
|
38397
|
+
var _a, _b;
|
|
38398
|
+
/**
|
|
38399
|
+
* Cast to `SelectOverlayOption` to access rich content
|
|
38400
|
+
* fields (`startContent`, `endContent`, `description`)
|
|
38401
|
+
* that are passed through from `ion-select` but not
|
|
38402
|
+
* part of the public `SelectPopoverOption` interface.
|
|
38403
|
+
*/
|
|
38404
|
+
const richOption = option;
|
|
38405
|
+
const hasRichContent = !!richOption.startContent || !!richOption.endContent || !!richOption.description;
|
|
38406
|
+
const optionLabelOptions = {
|
|
38407
|
+
id: `popover-option-${index}`,
|
|
38408
|
+
label: richOption.text,
|
|
38409
|
+
startContent: richOption.startContent,
|
|
38410
|
+
endContent: richOption.endContent,
|
|
38411
|
+
description: richOption.description,
|
|
38412
|
+
};
|
|
38413
|
+
return (hAsync("ion-item", {
|
|
38300
38414
|
// TODO FW-4784
|
|
38301
|
-
|
|
38302
|
-
|
|
38303
|
-
|
|
38304
|
-
|
|
38305
|
-
|
|
38306
|
-
|
|
38307
|
-
|
|
38308
|
-
|
|
38309
|
-
|
|
38310
|
-
|
|
38311
|
-
|
|
38312
|
-
|
|
38313
|
-
|
|
38314
|
-
if (shouldDismiss) {
|
|
38415
|
+
disabled: option.disabled, class: Object.assign({
|
|
38416
|
+
// TODO FW-4784
|
|
38417
|
+
'item-radio-checked': option.value === checked
|
|
38418
|
+
}, getClassMap(option.cssClass))
|
|
38419
|
+
}, hAsync("ion-radio", { class: {
|
|
38420
|
+
'select-option-has-rich-content': hasRichContent,
|
|
38421
|
+
}, 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) => {
|
|
38422
|
+
if (ev.key === 'Enter' && !ev.repeat) {
|
|
38423
|
+
this.pendingEnterTarget = ev.currentTarget;
|
|
38424
|
+
}
|
|
38425
|
+
}, onKeyUp: (ev) => {
|
|
38426
|
+
if (ev.key === ' ') {
|
|
38427
|
+
// Space selects and dismisses in one press.
|
|
38315
38428
|
this.dismissParentPopover();
|
|
38316
38429
|
}
|
|
38317
|
-
|
|
38318
|
-
|
|
38430
|
+
else if (ev.key === 'Enter') {
|
|
38431
|
+
const shouldDismiss = this.pendingEnterTarget === ev.currentTarget;
|
|
38432
|
+
this.pendingEnterTarget = null;
|
|
38433
|
+
if (shouldDismiss) {
|
|
38434
|
+
this.dismissParentPopover();
|
|
38435
|
+
}
|
|
38436
|
+
}
|
|
38437
|
+
} }, renderOptionLabel(optionLabelOptions, 'select-option-label'))));
|
|
38438
|
+
})));
|
|
38319
38439
|
}
|
|
38320
38440
|
render() {
|
|
38321
38441
|
const { header, message, options, subHeader } = this;
|
|
38322
38442
|
const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
|
|
38323
|
-
return (hAsync(Host, { key: '
|
|
38443
|
+
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))));
|
|
38324
38444
|
}
|
|
38325
38445
|
get el() { return getElement(this); }
|
|
38326
38446
|
static get style() { return {
|
|
@@ -38370,11 +38490,11 @@ class SkeletonText {
|
|
|
38370
38490
|
const animated = this.animated && config.getBoolean('animated', true);
|
|
38371
38491
|
const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
|
|
38372
38492
|
const mode = getIonMode$1(this);
|
|
38373
|
-
return (hAsync(Host, { key: '
|
|
38493
|
+
return (hAsync(Host, { key: '887d958d982345ce610730ab5c9ae35010430f75', class: {
|
|
38374
38494
|
[mode]: true,
|
|
38375
38495
|
'skeleton-text-animated': animated,
|
|
38376
38496
|
'in-media': inMedia,
|
|
38377
|
-
} }, hAsync("span", { key: '
|
|
38497
|
+
} }, hAsync("span", { key: 'a184f4b9780a2aada0a16729109ac81436e9c9e1' }, "\u00A0")));
|
|
38378
38498
|
}
|
|
38379
38499
|
get el() { return getElement(this); }
|
|
38380
38500
|
static get style() { return skeletonTextCss(); }
|
|
@@ -38426,7 +38546,7 @@ class Spinner {
|
|
|
38426
38546
|
svgs.push(buildLine(spinner, duration, i, spinner.lines));
|
|
38427
38547
|
}
|
|
38428
38548
|
}
|
|
38429
|
-
return (hAsync(Host, { key: '
|
|
38549
|
+
return (hAsync(Host, { key: 'c35ebd01186e860acb9cac260193f0836424fdf4', class: createColorClasses$1(self.color, {
|
|
38430
38550
|
[mode]: true,
|
|
38431
38551
|
[`spinner-${spinnerName}`]: true,
|
|
38432
38552
|
'spinner-paused': self.paused || config.getBoolean('_testing'),
|
|
@@ -38525,12 +38645,12 @@ class SplitPane {
|
|
|
38525
38645
|
}
|
|
38526
38646
|
render() {
|
|
38527
38647
|
const mode = getIonMode$1(this);
|
|
38528
|
-
return (hAsync(Host, { key: '
|
|
38648
|
+
return (hAsync(Host, { key: '694e989fafcfe2453e0a83b3cb736efaa1eb4fec', class: {
|
|
38529
38649
|
[mode]: true,
|
|
38530
38650
|
// Used internally for styling
|
|
38531
38651
|
[`split-pane-${mode}`]: true,
|
|
38532
38652
|
'split-pane-visible': this.visible,
|
|
38533
|
-
} }, hAsync("slot", { key: '
|
|
38653
|
+
} }, hAsync("slot", { key: 'dde7e9382b62cc11971aa233cf98c2314ae4f720' })));
|
|
38534
38654
|
}
|
|
38535
38655
|
get el() { return getElement(this); }
|
|
38536
38656
|
static get watchers() { return {
|
|
@@ -38602,10 +38722,10 @@ class Tab {
|
|
|
38602
38722
|
}
|
|
38603
38723
|
render() {
|
|
38604
38724
|
const { tab, active, component } = this;
|
|
38605
|
-
return (hAsync(Host, { key: '
|
|
38725
|
+
return (hAsync(Host, { key: '745262368a7f45244da459f4fa1730a46dd3e257', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
|
|
38606
38726
|
'ion-page': component === undefined,
|
|
38607
38727
|
'tab-hidden': !active,
|
|
38608
|
-
} }, hAsync("slot", { key: '
|
|
38728
|
+
} }, hAsync("slot", { key: '823d09a6f93bf7c0dc74f2b8717d1d3a62df1ad8' })));
|
|
38609
38729
|
}
|
|
38610
38730
|
get el() { return getElement(this); }
|
|
38611
38731
|
static get watchers() { return {
|
|
@@ -38719,11 +38839,11 @@ class TabBar {
|
|
|
38719
38839
|
const { color, translucent, keyboardVisible } = this;
|
|
38720
38840
|
const mode = getIonMode$1(this);
|
|
38721
38841
|
const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
|
|
38722
|
-
return (hAsync(Host, { key: '
|
|
38842
|
+
return (hAsync(Host, { key: '148f65df0818e9d220a9b46db74cb89ab94e62d2', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
|
|
38723
38843
|
[mode]: true,
|
|
38724
38844
|
'tab-bar-translucent': translucent,
|
|
38725
38845
|
'tab-bar-hidden': shouldHide,
|
|
38726
|
-
}) }, hAsync("slot", { key: '
|
|
38846
|
+
}) }, hAsync("slot", { key: 'a64e235f3703662e2dd7a834f752cc5b1490adbc' })));
|
|
38727
38847
|
}
|
|
38728
38848
|
get el() { return getElement(this); }
|
|
38729
38849
|
static get watchers() { return {
|
|
@@ -38821,7 +38941,7 @@ class TabButton {
|
|
|
38821
38941
|
rel,
|
|
38822
38942
|
target,
|
|
38823
38943
|
};
|
|
38824
|
-
return (hAsync(Host, { key: '
|
|
38944
|
+
return (hAsync(Host, { key: '1034b5a928ecec49bd8efec3730ea1b11a579cf3', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
|
|
38825
38945
|
[mode]: true,
|
|
38826
38946
|
'tab-selected': selected,
|
|
38827
38947
|
'tab-disabled': disabled,
|
|
@@ -38833,7 +38953,7 @@ class TabButton {
|
|
|
38833
38953
|
'ion-activatable': true,
|
|
38834
38954
|
'ion-selectable': true,
|
|
38835
38955
|
'ion-focusable': true,
|
|
38836
|
-
} }, hAsync("a", Object.assign({ key: '
|
|
38956
|
+
} }, 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" }))));
|
|
38837
38957
|
}
|
|
38838
38958
|
get el() { return getElement(this); }
|
|
38839
38959
|
static get style() { return {
|
|
@@ -39024,7 +39144,7 @@ class Tabs {
|
|
|
39024
39144
|
return Array.from(this.el.querySelectorAll('ion-tab'));
|
|
39025
39145
|
}
|
|
39026
39146
|
render() {
|
|
39027
|
-
return (hAsync(Host, { key: '
|
|
39147
|
+
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" })));
|
|
39028
39148
|
}
|
|
39029
39149
|
get el() { return getElement(this); }
|
|
39030
39150
|
static get style() { return tabsCss(); }
|
|
@@ -39064,9 +39184,9 @@ class Text {
|
|
|
39064
39184
|
}
|
|
39065
39185
|
render() {
|
|
39066
39186
|
const mode = getIonMode$1(this);
|
|
39067
|
-
return (hAsync(Host, { key: '
|
|
39187
|
+
return (hAsync(Host, { key: '41ed8da617ed0e07bbfe96e32a000e1c6503e24e', class: createColorClasses$1(this.color, {
|
|
39068
39188
|
[mode]: true,
|
|
39069
|
-
}) }, hAsync("slot", { key: '
|
|
39189
|
+
}) }, hAsync("slot", { key: 'db8de04a2493537b3037f276b03abd92dfa56847' })));
|
|
39070
39190
|
}
|
|
39071
39191
|
static get style() { return textCss(); }
|
|
39072
39192
|
static get cmpMeta() { return {
|
|
@@ -39527,7 +39647,7 @@ class Textarea {
|
|
|
39527
39647
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
39528
39648
|
*/
|
|
39529
39649
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
|
|
39530
|
-
return (hAsync(Host, { key: '
|
|
39650
|
+
return (hAsync(Host, { key: 'eca1dfed53189408f614661ef3902cdb73d5f5de', class: createColorClasses$1(this.color, {
|
|
39531
39651
|
[mode]: true,
|
|
39532
39652
|
'has-value': hasValue,
|
|
39533
39653
|
'has-focus': hasFocus,
|
|
@@ -39536,7 +39656,7 @@ class Textarea {
|
|
|
39536
39656
|
[`textarea-shape-${shape}`]: shape !== undefined,
|
|
39537
39657
|
[`textarea-label-placement-${labelPlacement}`]: true,
|
|
39538
39658
|
'textarea-disabled': disabled,
|
|
39539
|
-
}) }, hAsync("label", { key: '
|
|
39659
|
+
}) }, 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()));
|
|
39540
39660
|
}
|
|
39541
39661
|
get el() { return getElement(this); }
|
|
39542
39662
|
static get watchers() { return {
|
|
@@ -39605,7 +39725,7 @@ class Thumbnail {
|
|
|
39605
39725
|
registerInstance(this, hostRef);
|
|
39606
39726
|
}
|
|
39607
39727
|
render() {
|
|
39608
|
-
return (hAsync(Host, { key: '
|
|
39728
|
+
return (hAsync(Host, { key: '833e947c683b482a78f8f0df8c9a68e99478bbaa', class: getIonMode$1(this) }, hAsync("slot", { key: '6d1e9e686db88d91379f14121058dbf035d8ded2' })));
|
|
39609
39729
|
}
|
|
39610
39730
|
static get style() { return thumbnailCss(); }
|
|
39611
39731
|
static get cmpMeta() { return {
|
|
@@ -40465,9 +40585,9 @@ class Toast {
|
|
|
40465
40585
|
if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
|
|
40466
40586
|
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);
|
|
40467
40587
|
}
|
|
40468
|
-
return (hAsync(Host, Object.assign({ key: '
|
|
40588
|
+
return (hAsync(Host, Object.assign({ key: '2acb2cd2e12ea0082986495929e4a596d4da2f38', tabindex: "-1" }, this.htmlAttributes, { style: {
|
|
40469
40589
|
zIndex: `${60000 + this.overlayIndex}`,
|
|
40470
|
-
}, 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: '
|
|
40590
|
+
}, 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')))));
|
|
40471
40591
|
}
|
|
40472
40592
|
get el() { return getElement(this); }
|
|
40473
40593
|
static get watchers() { return {
|
|
@@ -40785,7 +40905,7 @@ class Toggle {
|
|
|
40785
40905
|
const value = this.getValue();
|
|
40786
40906
|
const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
|
|
40787
40907
|
renderHiddenInput(true, el, name, checked ? value : '', disabled);
|
|
40788
|
-
return (hAsync(Host, { key: '
|
|
40908
|
+
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, {
|
|
40789
40909
|
[mode]: true,
|
|
40790
40910
|
'in-item': hostContext('ion-item', el),
|
|
40791
40911
|
'toggle-activated': activated,
|
|
@@ -40795,10 +40915,10 @@ class Toggle {
|
|
|
40795
40915
|
[`toggle-alignment-${alignment}`]: alignment !== undefined,
|
|
40796
40916
|
[`toggle-label-placement-${labelPlacement}`]: true,
|
|
40797
40917
|
[`toggle-${rtl}`]: true,
|
|
40798
|
-
}) }, hAsync("label", { key: '
|
|
40918
|
+
}) }, 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: {
|
|
40799
40919
|
'label-text-wrapper': true,
|
|
40800
40920
|
'label-text-wrapper-hidden': !hasLabel,
|
|
40801
|
-
}, part: "label", id: inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: '
|
|
40921
|
+
}, part: "label", id: inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: 'c480b96a0ddd926568f73291d71253d6f74438c7' }), this.renderHintText()), hAsync("div", { key: '96a2cbd1673e051a78f8b2b16535ecd3f0ed4339', class: "native-wrapper" }, this.renderToggleControl()))));
|
|
40802
40922
|
}
|
|
40803
40923
|
get el() { return getElement(this); }
|
|
40804
40924
|
static get watchers() { return {
|
|
@@ -40910,10 +41030,10 @@ class Toolbar {
|
|
|
40910
41030
|
this.childrenStyles.forEach((value) => {
|
|
40911
41031
|
Object.assign(childStyles, value);
|
|
40912
41032
|
});
|
|
40913
|
-
return (hAsync(Host, { key: '
|
|
41033
|
+
return (hAsync(Host, { key: '40bad6fa7e94262438da4bbe037dcf8a5fa2df22', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
|
|
40914
41034
|
[mode]: true,
|
|
40915
41035
|
'in-toolbar': hostContext('ion-toolbar', this.el),
|
|
40916
|
-
})) }, hAsync("div", { key: '
|
|
41036
|
+
})) }, 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" }))));
|
|
40917
41037
|
}
|
|
40918
41038
|
get el() { return getElement(this); }
|
|
40919
41039
|
static get style() { return {
|
|
@@ -40959,11 +41079,11 @@ class ToolbarTitle {
|
|
|
40959
41079
|
render() {
|
|
40960
41080
|
const mode = getIonMode$1(this);
|
|
40961
41081
|
const size = this.getSize();
|
|
40962
|
-
return (hAsync(Host, { key: '
|
|
41082
|
+
return (hAsync(Host, { key: 'd9317e8e66cb6112717f5a9c252658777efbd873', class: createColorClasses$1(this.color, {
|
|
40963
41083
|
[mode]: true,
|
|
40964
41084
|
[`title-${size}`]: true,
|
|
40965
41085
|
'title-rtl': document.dir === 'rtl',
|
|
40966
|
-
}) }, hAsync("div", { key: '
|
|
41086
|
+
}) }, hAsync("div", { key: 'a4d011d6d409bf006d8efe33667002edb109820a', class: "toolbar-title" }, hAsync("slot", { key: '4ca3303b957a0e5387f1e9058e5adb4c6275afcc' }))));
|
|
40967
41087
|
}
|
|
40968
41088
|
get el() { return getElement(this); }
|
|
40969
41089
|
static get watchers() { return {
|
|
@@ -41043,10 +41163,8 @@ registerComponents([
|
|
|
41043
41163
|
Nav,
|
|
41044
41164
|
NavLink,
|
|
41045
41165
|
Note,
|
|
41046
|
-
Picker$1,
|
|
41047
41166
|
Picker,
|
|
41048
41167
|
PickerColumn,
|
|
41049
|
-
PickerColumnCmp,
|
|
41050
41168
|
PickerColumnOption,
|
|
41051
41169
|
Popover,
|
|
41052
41170
|
ProgressBar,
|