@ionic/core 8.8.14-dev.11784238294.131cd99d → 8.8.14-dev.11784243422.11f0110c
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-popover.js +1 -1
- package/components/ion-progress-bar.js +1 -1
- package/components/ion-radio.js +1 -1
- package/components/ion-range.js +1 -1
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +1 -1
- package/components/ion-reorder-group.js +1 -1
- package/components/ion-reorder.js +1 -1
- package/components/ion-ripple-effect.js +1 -1
- package/components/ion-router-link.js +1 -1
- package/components/ion-router-outlet.js +1 -1
- package/components/ion-row.js +1 -1
- package/components/ion-searchbar.js +1 -1
- package/components/ion-segment-button.js +1 -1
- package/components/ion-segment-content.js +1 -1
- package/components/ion-segment-view.js +1 -1
- package/components/ion-segment.js +1 -1
- package/components/ion-select-modal.js +1 -1
- package/components/ion-select-option.js +1 -1
- package/components/ion-select-popover.js +1 -1
- package/components/ion-select.js +1 -1
- package/components/ion-skeleton-text.js +1 -1
- package/components/ion-spinner.js +1 -1
- package/components/ion-split-pane.js +1 -1
- package/components/ion-tab-bar.js +1 -1
- package/components/ion-tab-button.js +1 -1
- package/components/ion-tab.js +1 -1
- package/components/ion-tabs.js +1 -1
- package/components/ion-text.js +1 -1
- package/components/ion-textarea.js +1 -1
- package/components/ion-thumbnail.js +1 -1
- package/components/ion-title.js +1 -1
- package/components/ion-toast.js +1 -1
- package/components/ion-toggle.js +1 -1
- package/components/ion-toolbar.js +1 -1
- package/components/p-279dFMvg.js +4 -0
- package/components/p-BSQPZ79H.js +4 -0
- package/components/{p-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 -32
- package/dist/cjs/ion-popover.cjs.entry.js +9 -5
- package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
- package/dist/cjs/ion-radio_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-range.cjs.entry.js +3 -3
- package/dist/cjs/ion-refresher_2.cjs.entry.js +6 -5
- package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
- package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
- package/dist/cjs/ion-searchbar.cjs.entry.js +5 -5
- package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment-view.cjs.entry.js +2 -2
- package/dist/cjs/ion-segment_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-select-modal.cjs.entry.js +84 -30
- package/dist/cjs/ion-select_3.cjs.entry.js +407 -49
- package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
- package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-text.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
- package/dist/cjs/ion-toast.cjs.entry.js +6 -5
- package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/overlay-control-label-D2sdL2O8.js +50 -0
- package/dist/cjs/{overlays-DdtIYQUH.js → overlays-DSmSrd_4.js} +27 -31
- 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 -7
- package/dist/collection/components/modal/gestures/swipe-to-close.js +0 -7
- package/dist/collection/components/modal/modal.ios.css +0 -8
- package/dist/collection/components/modal/modal.js +23 -18
- package/dist/collection/components/modal/modal.md.css +0 -8
- package/dist/collection/components/popover/popover.ios.css +15 -0
- package/dist/collection/components/popover/popover.js +7 -3
- package/dist/collection/components/popover/popover.md.css +15 -0
- package/dist/collection/components/progress-bar/progress-bar.js +1 -1
- package/dist/collection/components/radio/radio.js +4 -4
- package/dist/collection/components/range/range.js +3 -3
- package/dist/collection/components/refresher/refresher.js +1 -1
- package/dist/collection/components/refresher-content/refresher-content.js +1 -1
- package/dist/collection/components/reorder/reorder.js +1 -1
- package/dist/collection/components/reorder-group/reorder-group.js +1 -1
- package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
- package/dist/collection/components/router-link/router-link.js +2 -2
- package/dist/collection/components/router-outlet/router-outlet.js +38 -5
- package/dist/collection/components/row/row.js +1 -1
- package/dist/collection/components/searchbar/searchbar.js +9 -9
- package/dist/collection/components/segment/segment.js +2 -2
- package/dist/collection/components/segment-button/segment-button.js +2 -2
- package/dist/collection/components/segment-content/segment-content.js +1 -1
- package/dist/collection/components/segment-view/segment-view.js +2 -2
- package/dist/collection/components/select/select.ios.css +33 -0
- package/dist/collection/components/select/select.js +323 -16
- package/dist/collection/components/select/select.md.css +33 -0
- package/dist/collection/components/select-modal/select-modal.ios.css +219 -0
- package/dist/collection/components/select-modal/select-modal.js +79 -26
- package/dist/collection/components/select-modal/select-modal.md.css +165 -0
- package/dist/collection/components/select-option/select-option.js +67 -3
- package/dist/collection/components/select-popover/select-popover.ios.css +219 -0
- package/dist/collection/components/select-popover/select-popover.js +78 -26
- package/dist/collection/components/select-popover/select-popover.md.css +165 -0
- package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
- package/dist/collection/components/spinner/spinner.js +1 -1
- package/dist/collection/components/split-pane/split-pane.js +2 -2
- package/dist/collection/components/tab/tab.js +2 -2
- package/dist/collection/components/tab-bar/tab-bar.js +2 -2
- package/dist/collection/components/tab-button/tab-button.js +2 -2
- package/dist/collection/components/tabs/tabs.js +1 -1
- package/dist/collection/components/text/text.js +2 -2
- package/dist/collection/components/textarea/textarea.js +2 -2
- package/dist/collection/components/thumbnail/thumbnail.js +1 -1
- package/dist/collection/components/title/title.js +2 -2
- package/dist/collection/components/toast/toast.js +2 -2
- package/dist/collection/components/toggle/toggle.js +3 -3
- package/dist/collection/components/toolbar/toolbar.js +2 -2
- package/dist/collection/index.js +1 -1
- package/dist/collection/utils/overlay-control-label.js +45 -0
- package/dist/collection/utils/overlays.js +26 -30
- package/dist/collection/utils/sanitization/index.js +274 -18
- package/dist/collection/utils/select-option-render.js +119 -0
- package/dist/collection/utils/test/playwright/drag-element.js +0 -5
- package/dist/docs.json +485 -1177
- 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 -32
- package/dist/esm/ion-popover.entry.js +9 -5
- package/dist/esm/ion-progress-bar.entry.js +1 -1
- package/dist/esm/ion-radio_2.entry.js +3 -3
- package/dist/esm/ion-range.entry.js +3 -3
- package/dist/esm/ion-refresher_2.entry.js +5 -4
- package/dist/esm/ion-reorder_2.entry.js +3 -3
- package/dist/esm/ion-ripple-effect.entry.js +1 -1
- package/dist/esm/ion-route_4.entry.js +2 -2
- package/dist/esm/ion-searchbar.entry.js +6 -6
- package/dist/esm/ion-segment-content.entry.js +1 -1
- package/dist/esm/ion-segment-view.entry.js +2 -2
- package/dist/esm/ion-segment_2.entry.js +4 -4
- package/dist/esm/ion-select-modal.entry.js +84 -30
- package/dist/esm/ion-select_3.entry.js +410 -52
- package/dist/esm/ion-spinner.entry.js +1 -1
- package/dist/esm/ion-split-pane.entry.js +2 -2
- package/dist/esm/ion-tab-bar_2.entry.js +4 -4
- package/dist/esm/ion-tab_2.entry.js +3 -3
- package/dist/esm/ion-text.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +2 -2
- package/dist/esm/ion-toast.entry.js +5 -4
- package/dist/esm/ion-toggle.entry.js +4 -4
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/overlay-control-label-BSQPZ79H.js +47 -0
- package/dist/esm/{overlays-Dg0q2_tJ.js → overlays-DLNOHWNc.js} +28 -32
- package/dist/esm/select-option-render-B8nWZRnd.js +122 -0
- package/dist/html.html-data.json +51 -79
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-038eb991.entry.js +4 -0
- package/dist/ionic/{p-8fce95d5.entry.js → p-14095ba5.entry.js} +1 -1
- package/dist/ionic/{p-3a126bca.entry.js → p-259d0d98.entry.js} +1 -1
- package/dist/ionic/{p-fabcce6c.entry.js → p-341032b3.entry.js} +1 -1
- package/dist/ionic/{p-3a7d1e91.entry.js → p-4502a274.entry.js} +1 -1
- package/dist/ionic/p-4621c387.entry.js +4 -0
- package/dist/ionic/p-4ace7762.entry.js +4 -0
- package/dist/ionic/p-4bb3eb60.entry.js +4 -0
- package/dist/ionic/p-4e9ec5c5.entry.js +4 -0
- package/dist/ionic/{p-874b4bd8.entry.js → p-51cd1643.entry.js} +1 -1
- package/dist/ionic/p-5c3ec490.entry.js +4 -0
- package/dist/ionic/p-5d1ac2c7.entry.js +4 -0
- package/dist/ionic/{p-3ae5f277.entry.js → p-627fabd9.entry.js} +1 -1
- package/dist/ionic/{p-e0be05c5.entry.js → p-629e4703.entry.js} +1 -1
- package/dist/ionic/p-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-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-34586ead.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/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 +72 -288
- package/dist/types/index.d.ts +1 -1
- package/dist/types/interface.d.ts +0 -1
- package/dist/types/utils/config.d.ts +0 -8
- package/dist/types/utils/overlay-control-label.d.ts +32 -0
- package/dist/types/utils/overlays.d.ts +11 -9
- package/dist/types/utils/sanitization/index.d.ts +58 -2
- package/dist/types/utils/select-option-render.d.ts +53 -0
- package/hydrate/index.js +1401 -1182
- package/hydrate/index.mjs +1401 -1182
- 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-BIPPbW0M.js +0 -4
- package/components/p-BUYFy35a.js +0 -4
- package/components/p-BWEZufiK.js +0 -4
- package/components/p-BqpciLfi.js +0 -4
- package/components/p-BsQPAqo9.js +0 -4
- package/components/p-CRNiQiYf.js +0 -4
- package/components/p-CU5rbWAW.js +0 -4
- package/components/p-k_E4tX5Z.js +0 -4
- package/components/p-nyXeHk23.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-0dc33652.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-2a05aa64.entry.js +0 -4
- package/dist/ionic/p-2bb2cb18.entry.js +0 -4
- package/dist/ionic/p-485fda23.entry.js +0 -4
- package/dist/ionic/p-4baa5b82.entry.js +0 -4
- package/dist/ionic/p-5018dfc8.entry.js +0 -4
- package/dist/ionic/p-50e1194a.entry.js +0 -4
- package/dist/ionic/p-5eb8e86d.entry.js +0 -4
- package/dist/ionic/p-65ebdf1b.entry.js +0 -4
- package/dist/ionic/p-6ebdbebe.entry.js +0 -4
- package/dist/ionic/p-9f9db3a2.entry.js +0 -4
- package/dist/ionic/p-D-3ycHmd.js +0 -4
- package/dist/ionic/p-DzWaWHGc.js +0 -4
- package/dist/ionic/p-a21add2f.entry.js +0 -4
- package/dist/ionic/p-ca2ab74d.entry.js +0 -4
- package/dist/ionic/p-e6a4bb56.entry.js +0 -4
- package/dist/ionic/p-ec090e0a.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
|
@@ -1,3 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A heuristic that applies CSS to tablet
|
|
3
|
+
* viewports.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* @include tablet-viewport() {
|
|
7
|
+
* :host {
|
|
8
|
+
* background-color: green;
|
|
9
|
+
* }
|
|
10
|
+
* }
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* A heuristic that applies CSS to mobile
|
|
14
|
+
* viewports (i.e. phones, not tablets).
|
|
15
|
+
*
|
|
16
|
+
* Usage:
|
|
17
|
+
* @include mobile-viewport() {
|
|
18
|
+
* :host {
|
|
19
|
+
* background-color: blue;
|
|
20
|
+
* }
|
|
21
|
+
* }
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Convert a font size to a dynamic font size.
|
|
25
|
+
* Fonts that participate in Dynamic Type should use
|
|
26
|
+
* dynamic font sizes.
|
|
27
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
28
|
+
* @param unit (optional) - The unit to convert to. Use this if you want to
|
|
29
|
+
* convert to a unit other than $baselineUnit.
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* Convert a font size to a dynamic font size but impose
|
|
33
|
+
* a maximum font size.
|
|
34
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
35
|
+
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
36
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
37
|
+
* convert to a unit other than $baselineUnit.
|
|
38
|
+
*/
|
|
39
|
+
/**
|
|
40
|
+
* Convert a font size to a dynamic font size but impose
|
|
41
|
+
* a minimum font size.
|
|
42
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
43
|
+
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
44
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
45
|
+
* convert to a unit other than $baselineUnit.
|
|
46
|
+
*/
|
|
47
|
+
/**
|
|
48
|
+
* Convert a font size to a dynamic font size but impose
|
|
49
|
+
* maximum and minimum font sizes.
|
|
50
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
51
|
+
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
52
|
+
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
53
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
54
|
+
* convert to a unit other than $baselineUnit.
|
|
55
|
+
*/
|
|
56
|
+
.action-sheet-button-label-has-rich-content,
|
|
57
|
+
.alert-radio-label-has-rich-content,
|
|
58
|
+
.alert-checkbox-label-has-rich-content,
|
|
59
|
+
.select-option-label-has-rich-content {
|
|
60
|
+
display: flex;
|
|
61
|
+
align-items: center;
|
|
62
|
+
gap: 16px;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Outer label container has rich content
|
|
67
|
+
* (start, content, description, end) that needs the
|
|
68
|
+
* label to span the available row width.
|
|
69
|
+
*/
|
|
70
|
+
.action-sheet-button-label-has-rich-content,
|
|
71
|
+
.alert-radio-label-has-rich-content,
|
|
72
|
+
.alert-checkbox-label-has-rich-content,
|
|
73
|
+
.select-option-content {
|
|
74
|
+
flex: 1;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.action-sheet-button-label-text,
|
|
78
|
+
.alert-checkbox-label-text,
|
|
79
|
+
.alert-radio-label-text,
|
|
80
|
+
.select-option-label-text {
|
|
81
|
+
display: flex;
|
|
82
|
+
align-items: center;
|
|
83
|
+
gap: 12px;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.select-option-start,
|
|
87
|
+
.select-option-end {
|
|
88
|
+
display: flex;
|
|
89
|
+
align-items: center;
|
|
90
|
+
gap: 8px;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.select-option-description {
|
|
94
|
+
padding-left: 0;
|
|
95
|
+
padding-right: 0;
|
|
96
|
+
padding-top: 5px;
|
|
97
|
+
padding-bottom: 0;
|
|
98
|
+
display: block;
|
|
99
|
+
color: var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));
|
|
100
|
+
font-size: 0.75rem;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Non-rich labels are plain text and should ellipsize when they
|
|
105
|
+
* overflow the row. Rich-content labels switch to flex so the
|
|
106
|
+
* start / content / end pieces can lay out side-by-side and wrap.
|
|
107
|
+
*/
|
|
108
|
+
.select-option-label:not(.select-option-label-has-rich-content) {
|
|
109
|
+
text-overflow: ellipsis;
|
|
110
|
+
white-space: nowrap;
|
|
111
|
+
overflow: hidden;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.select-option-label-has-rich-content {
|
|
115
|
+
display: flex;
|
|
116
|
+
align-items: center;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
ion-radio.select-option-has-rich-content::part(label),
|
|
120
|
+
ion-checkbox.select-option-has-rich-content::part(label),
|
|
121
|
+
.select-option-content {
|
|
122
|
+
flex: 1;
|
|
123
|
+
/**
|
|
124
|
+
* Let rich content wrap instead of inheriting the label part's
|
|
125
|
+
* single-line truncation, so arbitrary slotted elements render
|
|
126
|
+
* without clipping.
|
|
127
|
+
*/
|
|
128
|
+
white-space: normal;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Convert a font size to a dynamic font size.
|
|
133
|
+
* Fonts that participate in Dynamic Type should use
|
|
134
|
+
* dynamic font sizes.
|
|
135
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
136
|
+
* @param unit (optional) - The unit to convert to. Use this if you want to
|
|
137
|
+
* convert to a unit other than $baselineUnit.
|
|
138
|
+
*/
|
|
139
|
+
/**
|
|
140
|
+
* Convert a font size to a dynamic font size but impose
|
|
141
|
+
* a maximum font size.
|
|
142
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
143
|
+
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
144
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
145
|
+
* convert to a unit other than $baselineUnit.
|
|
146
|
+
*/
|
|
147
|
+
/**
|
|
148
|
+
* Convert a font size to a dynamic font size but impose
|
|
149
|
+
* a minimum font size.
|
|
150
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
151
|
+
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
152
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
153
|
+
* convert to a unit other than $baselineUnit.
|
|
154
|
+
*/
|
|
155
|
+
/**
|
|
156
|
+
* Convert a font size to a dynamic font size but impose
|
|
157
|
+
* maximum and minimum font sizes.
|
|
158
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
159
|
+
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
160
|
+
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
161
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
162
|
+
* convert to a unit other than $baselineUnit.
|
|
163
|
+
*/
|
|
164
|
+
/**
|
|
165
|
+
* A heuristic that applies CSS to tablet
|
|
166
|
+
* viewports.
|
|
167
|
+
*
|
|
168
|
+
* Usage:
|
|
169
|
+
* @include tablet-viewport() {
|
|
170
|
+
* :host {
|
|
171
|
+
* background-color: green;
|
|
172
|
+
* }
|
|
173
|
+
* }
|
|
174
|
+
*/
|
|
175
|
+
/**
|
|
176
|
+
* A heuristic that applies CSS to mobile
|
|
177
|
+
* viewports (i.e. phones, not tablets).
|
|
178
|
+
*
|
|
179
|
+
* Usage:
|
|
180
|
+
* @include mobile-viewport() {
|
|
181
|
+
* :host {
|
|
182
|
+
* background-color: blue;
|
|
183
|
+
* }
|
|
184
|
+
* }
|
|
185
|
+
*/
|
|
186
|
+
/**
|
|
187
|
+
* Cap slotted children so they can't stretch the option
|
|
188
|
+
* row out of proportion, keeping rows visually uniform
|
|
189
|
+
* regardless of the content.
|
|
190
|
+
*/
|
|
191
|
+
.select-option-start > ion-avatar,
|
|
192
|
+
.select-option-start > ion-img,
|
|
193
|
+
.select-option-start > ion-thumbnail,
|
|
194
|
+
.select-option-start > img,
|
|
195
|
+
.select-option-start > svg,
|
|
196
|
+
.select-option-end > ion-avatar,
|
|
197
|
+
.select-option-end > ion-img,
|
|
198
|
+
.select-option-end > ion-thumbnail,
|
|
199
|
+
.select-option-end > img,
|
|
200
|
+
.select-option-end > svg {
|
|
201
|
+
width: 44px;
|
|
202
|
+
height: 44px;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
.select-option-start > ion-icon,
|
|
206
|
+
.select-option-end > ion-icon {
|
|
207
|
+
width: 28px;
|
|
208
|
+
height: 28px;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.action-sheet-button-label-text {
|
|
212
|
+
justify-content: center;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.select-option-has-rich-content {
|
|
216
|
+
-webkit-padding-end: 16px;
|
|
217
|
+
padding-inline-end: 16px;
|
|
218
|
+
}
|
|
219
|
+
|
|
1
220
|
:host {
|
|
2
221
|
height: 100%;
|
|
3
222
|
}
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { getIonMode } from "../../global/ionic-global";
|
|
5
5
|
import { Host, forceUpdate, h } from "@stencil/core";
|
|
6
|
+
import { getOverlayLabelJustify, getOverlayLabelPlacement } from "../../utils/overlay-control-label";
|
|
6
7
|
import { safeCall } from "../../utils/overlays";
|
|
8
|
+
import { renderOptionLabel } from "../../utils/select-option-render";
|
|
7
9
|
import { getClassMap } from "../../utils/theme";
|
|
8
10
|
export class SelectModal {
|
|
9
11
|
constructor() {
|
|
@@ -56,41 +58,92 @@ export class SelectModal {
|
|
|
56
58
|
}
|
|
57
59
|
}
|
|
58
60
|
renderRadioOptions() {
|
|
61
|
+
const mode = getIonMode(this);
|
|
59
62
|
const checked = this.options.filter((o) => o.checked).map((o) => o.value)[0];
|
|
60
|
-
return (h("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, this.options.map((option) =>
|
|
63
|
+
return (h("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, this.options.map((option, index) => {
|
|
64
|
+
var _a, _b;
|
|
65
|
+
/**
|
|
66
|
+
* Cast to `SelectOverlayOption` to access rich content
|
|
67
|
+
* fields (`startContent`, `endContent`, `description`)
|
|
68
|
+
* that are passed through from `ion-select` but not
|
|
69
|
+
* part of the public `SelectModalOption` interface.
|
|
70
|
+
*/
|
|
71
|
+
const richOption = option;
|
|
72
|
+
const hasRichContent = !!richOption.startContent || !!richOption.endContent || !!richOption.description;
|
|
73
|
+
const optionLabelOptions = {
|
|
74
|
+
id: `modal-option-${index}`,
|
|
75
|
+
label: richOption.text,
|
|
76
|
+
startContent: richOption.startContent,
|
|
77
|
+
endContent: richOption.endContent,
|
|
78
|
+
description: richOption.description,
|
|
79
|
+
};
|
|
80
|
+
const defaultLabelPlacement = getOverlayLabelPlacement(mode, 'radio', 'modal');
|
|
81
|
+
const defaultJustify = getOverlayLabelJustify(mode, 'radio', 'modal');
|
|
82
|
+
return (h("ion-item", { lines: "none",
|
|
61
83
|
// TODO FW-4784
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
this.pendingEnterTarget = null;
|
|
75
|
-
if (shouldClose) {
|
|
84
|
+
disabled: option.disabled, class: Object.assign({
|
|
85
|
+
// TODO FW-4784
|
|
86
|
+
'item-radio-checked': option.value === checked
|
|
87
|
+
}, getClassMap(option.cssClass)) }, h("ion-radio", { class: {
|
|
88
|
+
'select-option-has-rich-content': hasRichContent,
|
|
89
|
+
}, 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) => {
|
|
90
|
+
if (ev.key === 'Enter' && !ev.repeat) {
|
|
91
|
+
this.pendingEnterTarget = ev.currentTarget;
|
|
92
|
+
}
|
|
93
|
+
}, onKeyUp: (ev) => {
|
|
94
|
+
if (ev.key === ' ') {
|
|
95
|
+
// Space selects and dismisses in one press.
|
|
76
96
|
this.closeModal();
|
|
77
97
|
}
|
|
78
|
-
|
|
79
|
-
|
|
98
|
+
else if (ev.key === 'Enter') {
|
|
99
|
+
const shouldClose = this.pendingEnterTarget === ev.currentTarget;
|
|
100
|
+
this.pendingEnterTarget = null;
|
|
101
|
+
if (shouldClose) {
|
|
102
|
+
this.closeModal();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
} }, renderOptionLabel(optionLabelOptions, 'select-option-label'))));
|
|
106
|
+
})));
|
|
80
107
|
}
|
|
81
108
|
renderCheckboxOptions() {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
109
|
+
const mode = getIonMode(this);
|
|
110
|
+
return this.options.map((option, index) => {
|
|
111
|
+
var _a, _b;
|
|
112
|
+
/**
|
|
113
|
+
* Cast to `SelectOverlayOption` to access rich content
|
|
114
|
+
* fields (`startContent`, `endContent`, `description`)
|
|
115
|
+
* that are passed through from `ion-select` but not
|
|
116
|
+
* part of the public `SelectModalOption` interface.
|
|
117
|
+
*/
|
|
118
|
+
const richOption = option;
|
|
119
|
+
const hasRichContent = !!richOption.startContent || !!richOption.endContent || !!richOption.description;
|
|
120
|
+
const optionLabelOptions = {
|
|
121
|
+
id: `modal-option-${index}`,
|
|
122
|
+
label: richOption.text,
|
|
123
|
+
startContent: richOption.startContent,
|
|
124
|
+
endContent: richOption.endContent,
|
|
125
|
+
description: richOption.description,
|
|
126
|
+
};
|
|
127
|
+
const defaultLabelPlacement = getOverlayLabelPlacement(mode, 'checkbox', 'modal');
|
|
128
|
+
const defaultJustify = getOverlayLabelJustify(mode, 'checkbox', 'modal');
|
|
129
|
+
return (h("ion-item", {
|
|
88
130
|
// TODO FW-4784
|
|
89
|
-
|
|
90
|
-
|
|
131
|
+
disabled: option.disabled, class: Object.assign({
|
|
132
|
+
// TODO FW-4784
|
|
133
|
+
'item-checkbox-checked': option.checked
|
|
134
|
+
}, getClassMap(option.cssClass))
|
|
135
|
+
}, h("ion-checkbox", { class: {
|
|
136
|
+
'select-option-has-rich-content': hasRichContent,
|
|
137
|
+
}, 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) => {
|
|
138
|
+
this.setChecked(ev);
|
|
139
|
+
this.callOptionHandler(ev);
|
|
140
|
+
// TODO FW-4784
|
|
141
|
+
forceUpdate(this);
|
|
142
|
+
} }, renderOptionLabel(optionLabelOptions, 'select-option-label'))));
|
|
143
|
+
});
|
|
91
144
|
}
|
|
92
145
|
render() {
|
|
93
|
-
return (h(Host, { key: '
|
|
146
|
+
return (h(Host, { key: '2cb1ae057b7a66f5d12c926f618f6b945f019803', class: getIonMode(this) }, h("ion-header", { key: 'e41f1c4ad1c71dcc927d210502d6366cea894a14' }, h("ion-toolbar", { key: '1a191dfc8980541469ee4d8996ba4de52cac1ac5' }, this.header !== undefined && h("ion-title", { key: '14ab9cb7d41d15b982c6ccd8ba6cee0e9cb528d9' }, this.header), h("ion-buttons", { key: '80451a2ed3a82138eb1575135cf2ebbd5e8f6e60', slot: "end" }, h("ion-button", { key: '01a315cd739569f3c0b23a4d243d52b69b63dfa7', onClick: () => this.closeModal() }, this.cancelText)))), h("ion-content", { key: 'd953101bae9a91f8108f7a5e411bb1e34338655d' }, h("ion-list", { key: '171a5668afc67b03d2ee87e91cf400b17541bc7f' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
|
|
94
147
|
}
|
|
95
148
|
static get is() { return "ion-select-modal"; }
|
|
96
149
|
static get encapsulation() { return "scoped"; }
|
|
@@ -1,3 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A heuristic that applies CSS to tablet
|
|
3
|
+
* viewports.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* @include tablet-viewport() {
|
|
7
|
+
* :host {
|
|
8
|
+
* background-color: green;
|
|
9
|
+
* }
|
|
10
|
+
* }
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* A heuristic that applies CSS to mobile
|
|
14
|
+
* viewports (i.e. phones, not tablets).
|
|
15
|
+
*
|
|
16
|
+
* Usage:
|
|
17
|
+
* @include mobile-viewport() {
|
|
18
|
+
* :host {
|
|
19
|
+
* background-color: blue;
|
|
20
|
+
* }
|
|
21
|
+
* }
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Convert a font size to a dynamic font size.
|
|
25
|
+
* Fonts that participate in Dynamic Type should use
|
|
26
|
+
* dynamic font sizes.
|
|
27
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
28
|
+
* @param unit (optional) - The unit to convert to. Use this if you want to
|
|
29
|
+
* convert to a unit other than $baselineUnit.
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* Convert a font size to a dynamic font size but impose
|
|
33
|
+
* a maximum font size.
|
|
34
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
35
|
+
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
36
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
37
|
+
* convert to a unit other than $baselineUnit.
|
|
38
|
+
*/
|
|
39
|
+
/**
|
|
40
|
+
* Convert a font size to a dynamic font size but impose
|
|
41
|
+
* a minimum font size.
|
|
42
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
43
|
+
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
44
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
45
|
+
* convert to a unit other than $baselineUnit.
|
|
46
|
+
*/
|
|
47
|
+
/**
|
|
48
|
+
* Convert a font size to a dynamic font size but impose
|
|
49
|
+
* maximum and minimum font sizes.
|
|
50
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
51
|
+
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
52
|
+
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
53
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
54
|
+
* convert to a unit other than $baselineUnit.
|
|
55
|
+
*/
|
|
56
|
+
.action-sheet-button-label-has-rich-content,
|
|
57
|
+
.alert-radio-label-has-rich-content,
|
|
58
|
+
.alert-checkbox-label-has-rich-content,
|
|
59
|
+
.select-option-label-has-rich-content {
|
|
60
|
+
display: flex;
|
|
61
|
+
align-items: center;
|
|
62
|
+
gap: 16px;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Outer label container has rich content
|
|
67
|
+
* (start, content, description, end) that needs the
|
|
68
|
+
* label to span the available row width.
|
|
69
|
+
*/
|
|
70
|
+
.action-sheet-button-label-has-rich-content,
|
|
71
|
+
.alert-radio-label-has-rich-content,
|
|
72
|
+
.alert-checkbox-label-has-rich-content,
|
|
73
|
+
.select-option-content {
|
|
74
|
+
flex: 1;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.action-sheet-button-label-text,
|
|
78
|
+
.alert-checkbox-label-text,
|
|
79
|
+
.alert-radio-label-text,
|
|
80
|
+
.select-option-label-text {
|
|
81
|
+
display: flex;
|
|
82
|
+
align-items: center;
|
|
83
|
+
gap: 12px;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.select-option-start,
|
|
87
|
+
.select-option-end {
|
|
88
|
+
display: flex;
|
|
89
|
+
align-items: center;
|
|
90
|
+
gap: 8px;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.select-option-description {
|
|
94
|
+
padding-left: 0;
|
|
95
|
+
padding-right: 0;
|
|
96
|
+
padding-top: 5px;
|
|
97
|
+
padding-bottom: 0;
|
|
98
|
+
display: block;
|
|
99
|
+
color: var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));
|
|
100
|
+
font-size: 0.75rem;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Non-rich labels are plain text and should ellipsize when they
|
|
105
|
+
* overflow the row. Rich-content labels switch to flex so the
|
|
106
|
+
* start / content / end pieces can lay out side-by-side and wrap.
|
|
107
|
+
*/
|
|
108
|
+
.select-option-label:not(.select-option-label-has-rich-content) {
|
|
109
|
+
text-overflow: ellipsis;
|
|
110
|
+
white-space: nowrap;
|
|
111
|
+
overflow: hidden;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.select-option-label-has-rich-content {
|
|
115
|
+
display: flex;
|
|
116
|
+
align-items: center;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
ion-radio.select-option-has-rich-content::part(label),
|
|
120
|
+
ion-checkbox.select-option-has-rich-content::part(label),
|
|
121
|
+
.select-option-content {
|
|
122
|
+
flex: 1;
|
|
123
|
+
/**
|
|
124
|
+
* Let rich content wrap instead of inheriting the label part's
|
|
125
|
+
* single-line truncation, so arbitrary slotted elements render
|
|
126
|
+
* without clipping.
|
|
127
|
+
*/
|
|
128
|
+
white-space: normal;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Cap slotted children so they can't stretch the option
|
|
133
|
+
* row out of proportion, keeping rows visually uniform
|
|
134
|
+
* regardless of the content.
|
|
135
|
+
*/
|
|
136
|
+
.select-option-start > ion-avatar,
|
|
137
|
+
.select-option-end > ion-avatar {
|
|
138
|
+
width: 40px;
|
|
139
|
+
height: 40px;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.select-option-start > ion-icon,
|
|
143
|
+
.select-option-end > ion-icon {
|
|
144
|
+
width: 24px;
|
|
145
|
+
height: 24px;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.select-option-start > ion-img,
|
|
149
|
+
.select-option-start > img,
|
|
150
|
+
.select-option-start > svg,
|
|
151
|
+
.select-option-start > ion-thumbnail,
|
|
152
|
+
.select-option-end > ion-img,
|
|
153
|
+
.select-option-end > img,
|
|
154
|
+
.select-option-end > svg,
|
|
155
|
+
.select-option-end > ion-thumbnail {
|
|
156
|
+
width: 56px;
|
|
157
|
+
height: 56px;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.select-option-start > video,
|
|
161
|
+
.select-option-end > video {
|
|
162
|
+
width: 114px;
|
|
163
|
+
height: 56px;
|
|
164
|
+
}
|
|
165
|
+
|
|
1
166
|
:host {
|
|
2
167
|
height: 100%;
|
|
3
168
|
}
|
|
@@ -3,16 +3,23 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { Host, h } from "@stencil/core";
|
|
5
5
|
import { getIonMode } from "../../global/ionic-global";
|
|
6
|
+
/**
|
|
7
|
+
* @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
|
|
8
|
+
*
|
|
9
|
+
* @slot - Content is placed between the named slots if provided without a slot.
|
|
10
|
+
* @slot start - Content is placed to the left of the select option text in LTR, and to the right in RTL.
|
|
11
|
+
* @slot end - Content is placed to the right of the select option text in LTR, and to the left in RTL.
|
|
12
|
+
*/
|
|
6
13
|
export class SelectOption {
|
|
7
14
|
constructor() {
|
|
8
15
|
this.inputId = `ion-selopt-${selectOptionIds++}`;
|
|
9
16
|
/**
|
|
10
|
-
* If `true`, the user cannot interact with the select option.
|
|
17
|
+
* If `true`, the user cannot interact with the select option.
|
|
11
18
|
*/
|
|
12
19
|
this.disabled = false;
|
|
13
20
|
}
|
|
14
21
|
render() {
|
|
15
|
-
return h(Host, { key: '
|
|
22
|
+
return h(Host, { key: '8b8bef0f5a55f18048708c34d3ea3ff0ff2f1d47', role: "option", id: this.inputId, class: getIonMode(this) });
|
|
16
23
|
}
|
|
17
24
|
static get is() { return "ion-select-option"; }
|
|
18
25
|
static get encapsulation() { return "shadow"; }
|
|
@@ -40,7 +47,7 @@ export class SelectOption {
|
|
|
40
47
|
"optional": false,
|
|
41
48
|
"docs": {
|
|
42
49
|
"tags": [],
|
|
43
|
-
"text": "If `true`, the user cannot interact with the select option.
|
|
50
|
+
"text": "If `true`, the user cannot interact with the select option."
|
|
44
51
|
},
|
|
45
52
|
"getter": false,
|
|
46
53
|
"setter": false,
|
|
@@ -66,6 +73,63 @@ export class SelectOption {
|
|
|
66
73
|
"setter": false,
|
|
67
74
|
"reflect": false,
|
|
68
75
|
"attribute": "value"
|
|
76
|
+
},
|
|
77
|
+
"description": {
|
|
78
|
+
"type": "string",
|
|
79
|
+
"mutable": false,
|
|
80
|
+
"complexType": {
|
|
81
|
+
"original": "string",
|
|
82
|
+
"resolved": "string | undefined",
|
|
83
|
+
"references": {}
|
|
84
|
+
},
|
|
85
|
+
"required": false,
|
|
86
|
+
"optional": true,
|
|
87
|
+
"docs": {
|
|
88
|
+
"tags": [],
|
|
89
|
+
"text": "Text that is placed underneath the option text to provide additional details about the option."
|
|
90
|
+
},
|
|
91
|
+
"getter": false,
|
|
92
|
+
"setter": false,
|
|
93
|
+
"reflect": false,
|
|
94
|
+
"attribute": "description"
|
|
95
|
+
},
|
|
96
|
+
"labelPlacement": {
|
|
97
|
+
"type": "string",
|
|
98
|
+
"mutable": false,
|
|
99
|
+
"complexType": {
|
|
100
|
+
"original": "'start' | 'end'",
|
|
101
|
+
"resolved": "\"end\" | \"start\" | undefined",
|
|
102
|
+
"references": {}
|
|
103
|
+
},
|
|
104
|
+
"required": false,
|
|
105
|
+
"optional": true,
|
|
106
|
+
"docs": {
|
|
107
|
+
"tags": [],
|
|
108
|
+
"text": "Where the label is placed relative to the option's selection control\n(radio circle or checkbox box) when the option is rendered in an\n`alert`, `popover`, or `modal` interface.\n`\"start\"`: The label will appear to the left of the radio in LTR and to the right in RTL.\n`\"end\"`: The label will appear to the right of the radio in LTR and to the left in RTL.\n\nApplies to the `alert`, `popover`, and `modal` interfaces, but has no\nvisible effect on radio options in `popover` or `modal` on `md` (the radio control is hidden there).\n\nWhen unset, the interface picks a default based on mode and control\ntype."
|
|
109
|
+
},
|
|
110
|
+
"getter": false,
|
|
111
|
+
"setter": false,
|
|
112
|
+
"reflect": false,
|
|
113
|
+
"attribute": "label-placement"
|
|
114
|
+
},
|
|
115
|
+
"justify": {
|
|
116
|
+
"type": "string",
|
|
117
|
+
"mutable": false,
|
|
118
|
+
"complexType": {
|
|
119
|
+
"original": "'start' | 'end' | 'space-between'",
|
|
120
|
+
"resolved": "\"end\" | \"space-between\" | \"start\" | undefined",
|
|
121
|
+
"references": {}
|
|
122
|
+
},
|
|
123
|
+
"required": false,
|
|
124
|
+
"optional": true,
|
|
125
|
+
"docs": {
|
|
126
|
+
"tags": [],
|
|
127
|
+
"text": "How to pack the label and the option's selection control within a line.\n`\"start\"`: The label and radio will appear on the left in LTR and\non the right in RTL.\n`\"end\"`: The label and radio will appear on the right in LTR and\non the left in RTL.\n`\"space-between\"`: The label and radio will appear on opposite\nends of the line with space between the two elements.\n\nApplies to the `alert`, `popover`, and `modal` interfaces, but has no\nvisible effect on radio options in `popover` or `modal` on `md` (the radio control is hidden there).\n\nWhen unset, the interface picks a default based on mode and control\ntype."
|
|
128
|
+
},
|
|
129
|
+
"getter": false,
|
|
130
|
+
"setter": false,
|
|
131
|
+
"reflect": false,
|
|
132
|
+
"attribute": "justify"
|
|
69
133
|
}
|
|
70
134
|
};
|
|
71
135
|
}
|