@ionic/core 8.4.4-dev.11741206641.18dd4e91 → 8.4.4-dev.11741289071.1e8e1c3f
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/checkbox.js +5 -37
- package/components/helpers.js +11 -1
- package/components/index9.js +1 -1
- package/components/ion-input.js +2 -2
- package/components/ion-segment-button.js +40 -9
- package/components/ion-select.js +84 -15
- package/components/ion-textarea.js +2 -2
- package/dist/cjs/{framework-delegate-55f5683a.js → framework-delegate-05579976.js} +1 -1
- package/dist/cjs/{helpers-afaa9001.js → helpers-4be3f90d.js} +11 -0
- package/dist/cjs/{index-3652c918.js → index-0ff61d0b.js} +1 -1
- package/dist/cjs/{index-e975c92b.js → index-26bb7e42.js} +3 -3
- package/dist/cjs/{index-0d762bba.js → index-6770fc00.js} +1 -1
- package/dist/cjs/{index-9509ecad.js → index-ad7a712e.js} +1 -1
- package/dist/cjs/index.cjs.js +7 -7
- package/dist/cjs/{input-shims-cd05268a.js → input-shims-fd997b01.js} +2 -2
- package/dist/cjs/{input.utils-ffb2f81b.js → input.utils-c15a1814.js} +1 -1
- package/dist/cjs/ion-accordion_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-action-sheet.cjs.entry.js +3 -3
- package/dist/cjs/ion-alert.cjs.entry.js +3 -3
- package/dist/cjs/ion-app_8.cjs.entry.js +8 -8
- package/dist/cjs/ion-back-button.cjs.entry.js +1 -1
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-button_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-card_5.cjs.entry.js +1 -1
- package/dist/cjs/ion-checkbox.cjs.entry.js +6 -36
- package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
- package/dist/cjs/ion-datetime_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-fab_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-img.cjs.entry.js +1 -1
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-input.cjs.entry.js +5 -5
- package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-item_8.cjs.entry.js +1 -1
- package/dist/cjs/ion-loading.cjs.entry.js +3 -3
- package/dist/cjs/ion-menu_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-modal.cjs.entry.js +5 -5
- package/dist/cjs/ion-nav_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +1 -1
- package/dist/cjs/ion-picker-column.cjs.entry.js +1 -1
- package/dist/cjs/ion-picker.cjs.entry.js +1 -1
- package/dist/cjs/ion-popover.cjs.entry.js +4 -4
- package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
- package/dist/cjs/ion-radio_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-range.cjs.entry.js +2 -2
- package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-route_4.cjs.entry.js +1 -1
- package/dist/cjs/ion-searchbar.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment_2.cjs.entry.js +40 -9
- package/dist/cjs/ion-select-modal.cjs.entry.js +3 -3
- package/dist/cjs/ion-select_3.cjs.entry.js +85 -18
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-tab_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +5 -5
- package/dist/cjs/ion-toast.cjs.entry.js +3 -3
- package/dist/cjs/ion-toggle.cjs.entry.js +1 -1
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/{ios.transition-0e664e88.js → ios.transition-a4f35c55.js} +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{md.transition-2e8aef2c.js → md.transition-cdf904e6.js} +2 -2
- package/dist/cjs/{notch-controller-d69150f5.js → notch-controller-a0c464d1.js} +1 -1
- package/dist/cjs/{overlays-65fdaff6.js → overlays-86695cf1.js} +2 -2
- package/dist/cjs/{status-tap-d74f1429.js → status-tap-1a2485c1.js} +2 -2
- package/dist/cjs/{swipe-back-0303a5e4.js → swipe-back-47a52b83.js} +1 -1
- package/dist/collection/components/checkbox/checkbox.ios.css +15 -52
- package/dist/collection/components/checkbox/checkbox.js +3 -70
- package/dist/collection/components/checkbox/checkbox.md.css +15 -52
- package/dist/collection/components/input/input.ios.css +3 -2
- package/dist/collection/components/input/input.md.css +7 -2
- package/dist/collection/components/segment-button/segment-button.js +40 -9
- package/dist/collection/components/select/select.ios.css +59 -0
- package/dist/collection/components/select/select.js +116 -12
- package/dist/collection/components/select/select.md.css +61 -0
- package/dist/collection/components/textarea/textarea.ios.css +3 -2
- package/dist/collection/components/textarea/textarea.md.css +7 -2
- package/dist/collection/utils/helpers.js +10 -0
- package/dist/docs.json +73 -73
- package/dist/esm/{framework-delegate-63d1a679.js → framework-delegate-f683816e.js} +1 -1
- package/dist/esm/{helpers-da915de8.js → helpers-9b49d7d2.js} +11 -1
- package/dist/esm/{index-79b30591.js → index-5a0f5fd0.js} +1 -1
- package/dist/esm/{index-2f7fde3d.js → index-6a5baab0.js} +3 -3
- package/dist/esm/{index-cb21eccb.js → index-7105cd59.js} +1 -1
- package/dist/esm/{index-efb8ecdf.js → index-dd0f7395.js} +1 -1
- package/dist/esm/index.js +7 -7
- package/dist/esm/{input-shims-2fd7c6ef.js → input-shims-dff819a9.js} +2 -2
- package/dist/esm/{input.utils-961c9f17.js → input.utils-2f1029cf.js} +1 -1
- package/dist/esm/ion-accordion_2.entry.js +1 -1
- package/dist/esm/ion-action-sheet.entry.js +3 -3
- package/dist/esm/ion-alert.entry.js +3 -3
- package/dist/esm/ion-app_8.entry.js +8 -8
- package/dist/esm/ion-back-button.entry.js +1 -1
- package/dist/esm/ion-breadcrumb_2.entry.js +1 -1
- package/dist/esm/ion-button_2.entry.js +1 -1
- package/dist/esm/ion-card_5.entry.js +1 -1
- package/dist/esm/ion-checkbox.entry.js +6 -36
- package/dist/esm/ion-datetime-button.entry.js +1 -1
- package/dist/esm/ion-datetime_3.entry.js +3 -3
- package/dist/esm/ion-fab_3.entry.js +1 -1
- package/dist/esm/ion-img.entry.js +1 -1
- package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
- package/dist/esm/ion-input.entry.js +5 -5
- package/dist/esm/ion-item-option_3.entry.js +2 -2
- package/dist/esm/ion-item_8.entry.js +1 -1
- package/dist/esm/ion-loading.entry.js +3 -3
- package/dist/esm/ion-menu_3.entry.js +4 -4
- package/dist/esm/ion-modal.entry.js +5 -5
- package/dist/esm/ion-nav_2.entry.js +4 -4
- package/dist/esm/ion-picker-column-option.entry.js +1 -1
- package/dist/esm/ion-picker-column.entry.js +1 -1
- package/dist/esm/ion-picker.entry.js +1 -1
- package/dist/esm/ion-popover.entry.js +4 -4
- package/dist/esm/ion-progress-bar.entry.js +1 -1
- package/dist/esm/ion-radio_2.entry.js +1 -1
- package/dist/esm/ion-range.entry.js +2 -2
- package/dist/esm/ion-refresher_2.entry.js +2 -2
- package/dist/esm/ion-reorder_2.entry.js +2 -2
- package/dist/esm/ion-route_4.entry.js +1 -1
- package/dist/esm/ion-searchbar.entry.js +1 -1
- package/dist/esm/ion-segment_2.entry.js +40 -9
- package/dist/esm/ion-select-modal.entry.js +3 -3
- package/dist/esm/ion-select_3.entry.js +85 -18
- package/dist/esm/ion-tab-bar_2.entry.js +1 -1
- package/dist/esm/ion-tab_2.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +5 -5
- package/dist/esm/ion-toast.entry.js +3 -3
- package/dist/esm/ion-toggle.entry.js +1 -1
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/{ios.transition-b1da3753.js → ios.transition-314468a2.js} +2 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{md.transition-571b3859.js → md.transition-a560e0e2.js} +2 -2
- package/dist/esm/{notch-controller-55b09e11.js → notch-controller-3dc61260.js} +1 -1
- package/dist/esm/{overlays-5deab4de.js → overlays-9a81f230.js} +2 -2
- package/dist/esm/{status-tap-79eac0ac.js → status-tap-d07dbc82.js} +2 -2
- package/dist/esm/{swipe-back-e5394307.js → swipe-back-23ee7ab1.js} +1 -1
- package/dist/esm-es5/{framework-delegate-63d1a679.js → framework-delegate-f683816e.js} +1 -1
- package/dist/esm-es5/{helpers-da915de8.js → helpers-9b49d7d2.js} +1 -1
- package/dist/esm-es5/{index-79b30591.js → index-5a0f5fd0.js} +1 -1
- package/dist/esm-es5/{index-2f7fde3d.js → index-6a5baab0.js} +1 -1
- package/dist/esm-es5/{index-cb21eccb.js → index-7105cd59.js} +1 -1
- package/dist/esm-es5/{index-efb8ecdf.js → index-dd0f7395.js} +1 -1
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/{input-shims-2fd7c6ef.js → input-shims-dff819a9.js} +1 -1
- package/dist/esm-es5/{input.utils-961c9f17.js → input.utils-2f1029cf.js} +1 -1
- package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
- package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
- package/dist/esm-es5/ion-alert.entry.js +1 -1
- package/dist/esm-es5/ion-app_8.entry.js +1 -1
- package/dist/esm-es5/ion-back-button.entry.js +1 -1
- package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
- package/dist/esm-es5/ion-button_2.entry.js +1 -1
- package/dist/esm-es5/ion-card_5.entry.js +1 -1
- package/dist/esm-es5/ion-checkbox.entry.js +1 -1
- package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
- package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
- package/dist/esm-es5/ion-fab_3.entry.js +1 -1
- package/dist/esm-es5/ion-img.entry.js +1 -1
- package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
- package/dist/esm-es5/ion-input.entry.js +1 -1
- package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
- package/dist/esm-es5/ion-item_8.entry.js +1 -1
- package/dist/esm-es5/ion-loading.entry.js +1 -1
- package/dist/esm-es5/ion-menu_3.entry.js +1 -1
- package/dist/esm-es5/ion-modal.entry.js +1 -1
- package/dist/esm-es5/ion-nav_2.entry.js +1 -1
- package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
- package/dist/esm-es5/ion-picker-column.entry.js +1 -1
- package/dist/esm-es5/ion-picker.entry.js +1 -1
- package/dist/esm-es5/ion-popover.entry.js +1 -1
- package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
- package/dist/esm-es5/ion-radio_2.entry.js +1 -1
- package/dist/esm-es5/ion-range.entry.js +1 -1
- package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
- package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
- package/dist/esm-es5/ion-route_4.entry.js +1 -1
- package/dist/esm-es5/ion-searchbar.entry.js +1 -1
- package/dist/esm-es5/ion-segment_2.entry.js +1 -1
- package/dist/esm-es5/ion-select-modal.entry.js +1 -1
- package/dist/esm-es5/ion-select_3.entry.js +1 -1
- package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
- package/dist/esm-es5/ion-tab_2.entry.js +1 -1
- package/dist/esm-es5/ion-textarea.entry.js +1 -1
- package/dist/esm-es5/ion-toast.entry.js +1 -1
- package/dist/esm-es5/ion-toggle.entry.js +1 -1
- package/dist/esm-es5/ionic.js +1 -1
- package/dist/esm-es5/{ios.transition-b1da3753.js → ios.transition-314468a2.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/md.transition-a560e0e2.js +4 -0
- package/dist/esm-es5/{notch-controller-55b09e11.js → notch-controller-3dc61260.js} +1 -1
- package/dist/esm-es5/{overlays-5deab4de.js → overlays-9a81f230.js} +1 -1
- package/dist/esm-es5/{status-tap-79eac0ac.js → status-tap-d07dbc82.js} +1 -1
- package/dist/esm-es5/{swipe-back-e5394307.js → swipe-back-23ee7ab1.js} +1 -1
- package/dist/html.html-data.json +8 -8
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-937a7e21.entry.js → p-02e23f26.entry.js} +1 -1
- package/dist/ionic/{p-9b428d25.entry.js → p-037fc3f3.entry.js} +1 -1
- package/dist/ionic/p-04e08129.entry.js +4 -0
- package/dist/ionic/{p-b3c60433.system.js → p-058e61eb.system.js} +1 -1
- package/dist/ionic/{p-bdf2cb2e.system.entry.js → p-0bfffa34.system.entry.js} +1 -1
- package/dist/ionic/{p-7ed1657c.system.entry.js → p-0eb2553a.system.entry.js} +1 -1
- package/dist/ionic/{p-9b122e3c.system.entry.js → p-10327ad2.system.entry.js} +1 -1
- package/dist/ionic/{p-f63c2d12.entry.js → p-155c2bb0.entry.js} +1 -1
- package/dist/ionic/{p-a8f2c254.entry.js → p-155f4d90.entry.js} +1 -1
- package/dist/ionic/{p-2346ab53.system.entry.js → p-18e101b7.system.entry.js} +1 -1
- package/dist/ionic/p-1f405274.js +4 -0
- package/dist/ionic/p-21227121.js +4 -0
- package/dist/ionic/{p-7513b0c4.js → p-22149a4f.js} +1 -1
- package/dist/ionic/{p-2b838f86.system.entry.js → p-2515cb4d.system.entry.js} +1 -1
- package/dist/ionic/{p-de930745.entry.js → p-265939f0.entry.js} +1 -1
- package/dist/ionic/{p-34b11c24.js → p-2bc73fb5.js} +1 -1
- package/dist/ionic/p-2c9eb774.system.js +4 -0
- package/dist/ionic/{p-61db139d.entry.js → p-2cbe5399.entry.js} +1 -1
- package/dist/ionic/{p-2e46590d.system.entry.js → p-2ef3c7ee.system.entry.js} +1 -1
- package/dist/ionic/{p-cba1f9bc.system.entry.js → p-31a6efce.system.entry.js} +1 -1
- package/dist/ionic/p-322c5fb4.system.js +1 -1
- package/dist/ionic/{p-0430c2e0.entry.js → p-34479cfb.entry.js} +1 -1
- package/dist/ionic/p-346b2baf.js +4 -0
- package/dist/ionic/{p-b1eb86fd.entry.js → p-36c448fe.entry.js} +1 -1
- package/dist/ionic/{p-1ab13b2b.js → p-39dd4f62.js} +1 -1
- package/dist/ionic/p-4129228f.system.entry.js +4 -0
- package/dist/ionic/{p-9df2c6fb.entry.js → p-41780810.entry.js} +1 -1
- package/dist/ionic/{p-577bc414.entry.js → p-42c9deb1.entry.js} +1 -1
- package/dist/ionic/{p-a15ddedb.system.js → p-4452a8ac.system.js} +1 -1
- package/dist/ionic/{p-933727f9.system.entry.js → p-484d855b.system.entry.js} +2 -2
- package/dist/ionic/{p-52d7a191.entry.js → p-4ad78edc.entry.js} +1 -1
- package/dist/ionic/{p-28706c6f.js → p-4d3a5f86.js} +1 -1
- package/dist/ionic/{p-6933c482.system.entry.js → p-4d413973.system.entry.js} +1 -1
- package/dist/ionic/{p-74e3f0af.system.entry.js → p-5010643d.system.entry.js} +2 -2
- package/dist/ionic/{p-19ea7bff.system.js → p-5126cf1e.system.js} +1 -1
- package/dist/ionic/p-52245809.js +4 -0
- package/dist/ionic/p-56da53ad.system.entry.js +4 -0
- package/dist/ionic/{p-a88dec0d.system.js → p-578efda4.system.js} +1 -1
- package/dist/ionic/{p-a0eb506c.system.entry.js → p-5882bffa.system.entry.js} +1 -1
- package/dist/ionic/p-5c47ebbd.system.entry.js +4 -0
- package/dist/ionic/{p-a3db8ee3.js → p-5c9324c6.js} +1 -1
- package/dist/ionic/{p-6d6cedc5.entry.js → p-6190d0d6.entry.js} +1 -1
- package/dist/ionic/{p-ab674093.system.entry.js → p-63c09585.system.entry.js} +1 -1
- package/dist/ionic/{p-585b455c.system.entry.js → p-65346408.system.entry.js} +1 -1
- package/dist/ionic/{p-a4a2420e.system.entry.js → p-655723eb.system.entry.js} +1 -1
- package/dist/ionic/{p-120fb79a.entry.js → p-70af0afb.entry.js} +1 -1
- package/dist/ionic/{p-7ddc46c3.system.entry.js → p-70ccc275.system.entry.js} +1 -1
- package/dist/ionic/p-712fedc9.entry.js +4 -0
- package/dist/ionic/{p-5c9eb9af.entry.js → p-72ec9a26.entry.js} +1 -1
- package/dist/ionic/{p-0eb35a7f.system.js → p-73897169.system.js} +1 -1
- package/dist/ionic/{p-98ff6b32.entry.js → p-76446a85.entry.js} +1 -1
- package/dist/ionic/{p-98231c01.system.entry.js → p-77e7b7b6.system.entry.js} +1 -1
- package/dist/ionic/{p-72812e99.js → p-7a1766d6.js} +1 -1
- package/dist/ionic/{p-16188af7.entry.js → p-7b98cebe.entry.js} +1 -1
- package/dist/ionic/{p-fceec762.entry.js → p-80c6d619.entry.js} +1 -1
- package/dist/ionic/{p-1e67b266.system.entry.js → p-84d08aae.system.entry.js} +1 -1
- package/dist/ionic/{p-7de1e42c.system.js → p-860eb968.system.js} +1 -1
- package/dist/ionic/{p-7a02f476.entry.js → p-8818edd8.entry.js} +1 -1
- package/dist/ionic/{p-c4238c12.system.js → p-8e407469.system.js} +1 -1
- package/dist/ionic/{p-567de071.system.entry.js → p-92365bc1.system.entry.js} +1 -1
- package/dist/ionic/{p-f1120724.system.entry.js → p-93e3654c.system.entry.js} +1 -1
- package/dist/ionic/{p-d7aa6b00.entry.js → p-955c3eb8.entry.js} +1 -1
- package/dist/ionic/{p-8635f5e6.system.js → p-95da3ae2.system.js} +1 -1
- package/dist/ionic/{p-b6efeab8.js → p-990630ca.js} +1 -1
- package/dist/ionic/{p-92763d3d.entry.js → p-9962f63f.entry.js} +1 -1
- package/dist/ionic/p-9a100adc.entry.js +4 -0
- package/dist/ionic/{p-b9d7015f.entry.js → p-9b3bb24e.entry.js} +1 -1
- package/dist/ionic/{p-f1060cd8.entry.js → p-9de5c787.entry.js} +1 -1
- package/dist/ionic/{p-e3171ff3.entry.js → p-a18470c6.entry.js} +1 -1
- package/dist/ionic/{p-e06057c9.entry.js → p-a5b31c0f.entry.js} +1 -1
- package/dist/ionic/{p-01186920.system.entry.js → p-a9e24ae2.system.entry.js} +1 -1
- package/dist/ionic/{p-5c08627a.system.js → p-acb30a5c.system.js} +1 -1
- package/dist/ionic/p-acc8399c.system.entry.js +4 -0
- package/dist/ionic/p-af09741c.entry.js +4 -0
- package/dist/ionic/{p-d22e2a38.system.js → p-af452fa4.system.js} +1 -1
- package/dist/ionic/{p-e09d6392.system.entry.js → p-af744710.system.entry.js} +1 -1
- package/dist/ionic/{p-3ad285e3.system.js → p-b3680e2f.system.js} +1 -1
- package/dist/ionic/p-b936eb7e.system.entry.js +4 -0
- package/dist/ionic/{p-b51e4004.js → p-bb11d9fb.js} +1 -1
- package/dist/ionic/{p-081a4ce4.entry.js → p-bb2a6761.entry.js} +1 -1
- package/dist/ionic/{p-948e6c6a.entry.js → p-bc616455.entry.js} +1 -1
- package/dist/ionic/{p-bb0db172.entry.js → p-c32644d7.entry.js} +1 -1
- package/dist/ionic/{p-4c98e2cf.system.js → p-c3802319.system.js} +1 -1
- package/dist/ionic/{p-c41ac815.entry.js → p-c8d645b3.entry.js} +1 -1
- package/dist/ionic/{p-f1c4dcd4.js → p-c935cfc9.js} +1 -1
- package/dist/ionic/p-d0546368.entry.js +4 -0
- package/dist/ionic/{p-6dfb0f39.system.entry.js → p-d1172fe3.system.entry.js} +1 -1
- package/dist/ionic/{p-3cc276f4.js → p-d4ca0475.js} +1 -1
- package/dist/ionic/{p-7a6eaf9e.entry.js → p-d7bb5325.entry.js} +1 -1
- package/dist/ionic/{p-a090bce8.system.entry.js → p-d821466d.system.entry.js} +1 -1
- package/dist/ionic/{p-ada36597.system.js → p-d99e8644.system.js} +1 -1
- package/dist/ionic/{p-58d5df0c.system.entry.js → p-da8ef548.system.entry.js} +1 -1
- package/dist/ionic/{p-985a7e17.system.entry.js → p-dc146a2a.system.entry.js} +1 -1
- package/dist/ionic/{p-cac0e0b3.system.entry.js → p-dd0c9350.system.entry.js} +1 -1
- package/dist/ionic/p-df862603.entry.js +4 -0
- package/dist/ionic/{p-2172893e.system.entry.js → p-e2e19375.system.entry.js} +1 -1
- package/dist/ionic/{p-05b74e45.system.entry.js → p-e32557bb.system.entry.js} +1 -1
- package/dist/ionic/{p-2da9c8a7.entry.js → p-e5849f8d.entry.js} +1 -1
- package/dist/ionic/{p-15e76dd1.entry.js → p-e8f34871.entry.js} +1 -1
- package/dist/ionic/{p-d6eaffb1.system.entry.js → p-eeb5cb45.system.entry.js} +2 -2
- package/dist/ionic/{p-744c8672.system.entry.js → p-efbf5af5.system.entry.js} +1 -1
- package/dist/ionic/{p-e6376b93.system.entry.js → p-f2613334.system.entry.js} +1 -1
- package/dist/ionic/{p-e4ee80be.system.entry.js → p-f301a694.system.entry.js} +1 -1
- package/dist/ionic/{p-fbd41a7e.system.entry.js → p-f56752be.system.entry.js} +1 -1
- package/dist/ionic/{p-e76dae93.entry.js → p-f5d6624d.entry.js} +1 -1
- package/dist/ionic/{p-797eeea8.system.entry.js → p-f78af648.system.entry.js} +1 -1
- package/dist/ionic/{p-63b0abde.system.entry.js → p-f89cf011.system.entry.js} +1 -1
- package/dist/ionic/p-fbf86e62.system.js +4 -0
- package/dist/ionic/{p-7b9a2b23.entry.js → p-fca17935.entry.js} +1 -1
- package/dist/ionic/{p-eef505e8.entry.js → p-fec13c57.entry.js} +1 -1
- package/dist/types/components/checkbox/checkbox.d.ts +0 -19
- package/dist/types/components/segment-button/segment-button.d.ts +2 -1
- package/dist/types/components/select/select.d.ts +23 -0
- package/dist/types/components.d.ts +16 -16
- package/dist/types/utils/helpers.d.ts +1 -0
- package/hydrate/index.js +144 -66
- package/hydrate/index.mjs +144 -66
- package/package.json +2 -2
- package/dist/esm-es5/md.transition-571b3859.js +0 -4
- package/dist/ionic/p-0af823e1.js +0 -4
- package/dist/ionic/p-1132ffee.entry.js +0 -4
- package/dist/ionic/p-15d18206.entry.js +0 -4
- package/dist/ionic/p-248318e0.system.entry.js +0 -4
- package/dist/ionic/p-302b50bb.system.entry.js +0 -4
- package/dist/ionic/p-4c2d5b80.system.js +0 -4
- package/dist/ionic/p-4ec778aa.entry.js +0 -4
- package/dist/ionic/p-72bc8a1c.js +0 -4
- package/dist/ionic/p-8694928f.entry.js +0 -4
- package/dist/ionic/p-9343a445.js +0 -4
- package/dist/ionic/p-9f364443.system.entry.js +0 -4
- package/dist/ionic/p-c4b53b16.system.entry.js +0 -4
- package/dist/ionic/p-cb13696c.js +0 -4
- package/dist/ionic/p-cdc83025.entry.js +0 -4
- package/dist/ionic/p-d1c5b60e.system.js +0 -4
- package/dist/ionic/p-d7dd8fb1.entry.js +0 -4
- package/dist/ionic/p-e4fde4fb.system.entry.js +0 -4
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { Host, forceUpdate, h } from "@stencil/core";
|
|
5
|
-
import { addEventListener, removeEventListener, inheritAttributes } from "../../utils/helpers";
|
|
5
|
+
import { addEventListener, removeEventListener, inheritAttributes, getNextSiblingOfType } from "../../utils/helpers";
|
|
6
6
|
import { hostContext } from "../../utils/theme";
|
|
7
7
|
import { getIonMode } from "../../global/ionic-global";
|
|
8
8
|
let ids = 0;
|
|
@@ -39,7 +39,35 @@ export class SegmentButton {
|
|
|
39
39
|
valueChanged() {
|
|
40
40
|
this.updateState();
|
|
41
41
|
}
|
|
42
|
-
|
|
42
|
+
waitForSegmentContent(ionSegment, contentId) {
|
|
43
|
+
return new Promise((resolve, reject) => {
|
|
44
|
+
let timeoutId = undefined;
|
|
45
|
+
let animationFrameId;
|
|
46
|
+
const check = () => {
|
|
47
|
+
if (!ionSegment) {
|
|
48
|
+
reject(new Error(`Segment not found when looking for Segment Content`));
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const segmentView = getNextSiblingOfType(ionSegment); // Skip the text nodes
|
|
52
|
+
const segmentContent = segmentView === null || segmentView === void 0 ? void 0 : segmentView.querySelector(`ion-segment-content[id="${contentId}"]`);
|
|
53
|
+
if (segmentContent && timeoutId) {
|
|
54
|
+
clearTimeout(timeoutId); // Clear the timeout if the segmentContent is found
|
|
55
|
+
cancelAnimationFrame(animationFrameId);
|
|
56
|
+
resolve(segmentContent);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
animationFrameId = requestAnimationFrame(check); // Keep checking on the next animation frame
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
check();
|
|
63
|
+
// Set a timeout to reject the promise
|
|
64
|
+
timeoutId = setTimeout(() => {
|
|
65
|
+
cancelAnimationFrame(animationFrameId);
|
|
66
|
+
reject(new Error(`Unable to find Segment Content with id="${contentId} within 1000 ms`));
|
|
67
|
+
}, 1000);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
async connectedCallback() {
|
|
43
71
|
const segmentEl = (this.segmentEl = this.el.closest('ion-segment'));
|
|
44
72
|
if (segmentEl) {
|
|
45
73
|
this.updateState();
|
|
@@ -49,11 +77,14 @@ export class SegmentButton {
|
|
|
49
77
|
// Return if there is no contentId defined
|
|
50
78
|
if (!this.contentId)
|
|
51
79
|
return;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
80
|
+
let segmentContent;
|
|
81
|
+
try {
|
|
82
|
+
// Attempt to find the Segment Content by its contentId
|
|
83
|
+
segmentContent = await this.waitForSegmentContent(segmentEl, this.contentId);
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
// If no associated Segment Content exists, log an error and return
|
|
87
|
+
console.error('Segment Button: ', error.message);
|
|
57
88
|
return;
|
|
58
89
|
}
|
|
59
90
|
// Ensure the found element is a valid ION-SEGMENT-CONTENT
|
|
@@ -99,7 +130,7 @@ export class SegmentButton {
|
|
|
99
130
|
const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
|
|
100
131
|
const mode = getIonMode(this);
|
|
101
132
|
const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
|
|
102
|
-
return (h(Host, { key: '
|
|
133
|
+
return (h(Host, { key: 'f9da656c8eccb80e4ef30e3fa977f2dbbefbc988', class: {
|
|
103
134
|
[mode]: true,
|
|
104
135
|
'in-toolbar': hostContext('ion-toolbar', this.el),
|
|
105
136
|
'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
|
|
@@ -115,7 +146,7 @@ export class SegmentButton {
|
|
|
115
146
|
'ion-activatable': true,
|
|
116
147
|
'ion-activatable-instant': true,
|
|
117
148
|
'ion-focusable': true,
|
|
118
|
-
} }, h("button", Object.assign({ key: '
|
|
149
|
+
} }, h("button", Object.assign({ key: '00dbcdbd81cd74abdd39803f6840a6e477cc7b0c', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), h("span", { key: '5200c082a9c4788010c4fc33fe75e2b2ad28364a', class: "button-inner" }, h("slot", { key: 'cf3fce2b5d22436b84cd4367a5885df7d6a2715f' })), mode === 'md' && h("ion-ripple-effect", { key: 'f1a2816465f4c2c06644be07315bff2da77e2342' })), h("div", { key: 'aaf31c0ed39641fca698ee98d0773131f4eea6bd', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, h("div", { key: 'fc556651361b7ac305aaedd25ea4afe3173abd20', part: "indicator-background", class: "segment-button-indicator-background" }))));
|
|
119
150
|
}
|
|
120
151
|
static get is() { return "ion-segment-button"; }
|
|
121
152
|
static get encapsulation() { return "shadow"; }
|
|
@@ -299,6 +299,63 @@ button {
|
|
|
299
299
|
--highlight-color: var(--highlight-color-valid);
|
|
300
300
|
}
|
|
301
301
|
|
|
302
|
+
.select-bottom {
|
|
303
|
+
/**
|
|
304
|
+
* The bottom content should take on the start and end
|
|
305
|
+
* padding so it is always aligned with either the label
|
|
306
|
+
* or the start of the text select.
|
|
307
|
+
*/
|
|
308
|
+
-webkit-padding-start: var(--padding-start);
|
|
309
|
+
padding-inline-start: var(--padding-start);
|
|
310
|
+
-webkit-padding-end: var(--padding-end);
|
|
311
|
+
padding-inline-end: var(--padding-end);
|
|
312
|
+
padding-top: 5px;
|
|
313
|
+
padding-bottom: 0;
|
|
314
|
+
display: flex;
|
|
315
|
+
justify-content: space-between;
|
|
316
|
+
border-top: var(--border-width) var(--border-style) var(--border-color);
|
|
317
|
+
font-size: 0.75rem;
|
|
318
|
+
white-space: normal;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* If the select has a validity state, the
|
|
323
|
+
* border and label should reflect that as a color.
|
|
324
|
+
* The invalid state should show if the select is
|
|
325
|
+
* invalid and has already been touched.
|
|
326
|
+
* The valid state should show if the select
|
|
327
|
+
* is valid, has already been touched, and
|
|
328
|
+
* is currently focused. Do not show the valid
|
|
329
|
+
* highlight when the select is blurred.
|
|
330
|
+
*/
|
|
331
|
+
:host(.has-focus.ion-valid),
|
|
332
|
+
:host(.ion-touched.ion-invalid) {
|
|
333
|
+
--border-color: var(--highlight-color);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* Error text should only be shown when .ion-invalid is
|
|
338
|
+
* present on the select. Otherwise the helper text should
|
|
339
|
+
* be shown.
|
|
340
|
+
*/
|
|
341
|
+
.select-bottom .error-text {
|
|
342
|
+
display: none;
|
|
343
|
+
color: var(--highlight-color-invalid);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
.select-bottom .helper-text {
|
|
347
|
+
display: block;
|
|
348
|
+
color: var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
:host(.ion-touched.ion-invalid) .select-bottom .error-text {
|
|
352
|
+
display: block;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
:host(.ion-touched.ion-invalid) .select-bottom .helper-text {
|
|
356
|
+
display: none;
|
|
357
|
+
}
|
|
358
|
+
|
|
302
359
|
.label-text-wrapper {
|
|
303
360
|
/**
|
|
304
361
|
* This causes the label to take up
|
|
@@ -686,6 +743,8 @@ button {
|
|
|
686
743
|
* }
|
|
687
744
|
*/
|
|
688
745
|
:host {
|
|
746
|
+
--border-width: 0.55px;
|
|
747
|
+
--border-color: var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));
|
|
689
748
|
--highlight-height: 0px;
|
|
690
749
|
}
|
|
691
750
|
|
|
@@ -23,10 +23,15 @@ import { getIonMode } from "../../global/ionic-global";
|
|
|
23
23
|
* @part icon - The select icon container.
|
|
24
24
|
* @part container - The container for the selected text or placeholder.
|
|
25
25
|
* @part label - The label text describing the select.
|
|
26
|
+
* @part supporting-text - Supporting text displayed beneath the select.
|
|
27
|
+
* @part helper-text - Supporting text displayed beneath the select when the select is valid.
|
|
28
|
+
* @part error-text - Supporting text displayed beneath the select when the select is invalid and touched.
|
|
26
29
|
*/
|
|
27
30
|
export class Select {
|
|
28
31
|
constructor() {
|
|
29
32
|
this.inputId = `ion-sel-${selectIds++}`;
|
|
33
|
+
this.helperTextId = `${this.inputId}-helper-text`;
|
|
34
|
+
this.errorTextId = `${this.inputId}-error-text`;
|
|
30
35
|
this.inheritedAttributes = {};
|
|
31
36
|
this.onClick = (ev) => {
|
|
32
37
|
const target = ev.target;
|
|
@@ -77,6 +82,8 @@ export class Select {
|
|
|
77
82
|
this.compareWith = undefined;
|
|
78
83
|
this.disabled = false;
|
|
79
84
|
this.fill = undefined;
|
|
85
|
+
this.errorText = undefined;
|
|
86
|
+
this.helperText = undefined;
|
|
80
87
|
this.interface = 'alert';
|
|
81
88
|
this.interfaceOptions = {};
|
|
82
89
|
this.justify = undefined;
|
|
@@ -154,15 +161,8 @@ export class Select {
|
|
|
154
161
|
}
|
|
155
162
|
this.isExpanded = true;
|
|
156
163
|
const overlay = (this.overlay = await this.createOverlay(event));
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
this.isExpanded = false;
|
|
160
|
-
this.ionDismiss.emit();
|
|
161
|
-
this.setFocus();
|
|
162
|
-
});
|
|
163
|
-
await overlay.present();
|
|
164
|
-
// focus selected option for popovers and modals
|
|
165
|
-
if (this.interface === 'popover' || this.interface === 'modal') {
|
|
164
|
+
// Add logic to scroll selected item into view before presenting
|
|
165
|
+
const scrollSelectedIntoView = () => {
|
|
166
166
|
const indexOfSelected = this.childOpts.findIndex((o) => o.value === this.value);
|
|
167
167
|
if (indexOfSelected > -1) {
|
|
168
168
|
const selectedItem = overlay.querySelector(`.select-interface-option:nth-child(${indexOfSelected + 1})`);
|
|
@@ -180,6 +180,7 @@ export class Select {
|
|
|
180
180
|
*/
|
|
181
181
|
const interactiveEl = selectedItem.querySelector('ion-radio, ion-checkbox');
|
|
182
182
|
if (interactiveEl) {
|
|
183
|
+
selectedItem.scrollIntoView({ block: 'nearest' });
|
|
183
184
|
// Needs to be called before `focusVisibleElement` to prevent issue with focus event bubbling
|
|
184
185
|
// and removing `ion-focused` style
|
|
185
186
|
interactiveEl.setFocus();
|
|
@@ -203,7 +204,40 @@ export class Select {
|
|
|
203
204
|
focusVisibleElement(firstEnabledOption.closest('ion-item'));
|
|
204
205
|
}
|
|
205
206
|
}
|
|
207
|
+
};
|
|
208
|
+
// For modals and popovers, we can scroll before they're visible
|
|
209
|
+
if (this.interface === 'modal') {
|
|
210
|
+
overlay.addEventListener('ionModalWillPresent', scrollSelectedIntoView, { once: true });
|
|
211
|
+
}
|
|
212
|
+
else if (this.interface === 'popover') {
|
|
213
|
+
overlay.addEventListener('ionPopoverWillPresent', scrollSelectedIntoView, { once: true });
|
|
206
214
|
}
|
|
215
|
+
else {
|
|
216
|
+
/**
|
|
217
|
+
* For alerts and action sheets, we need to wait a frame after willPresent
|
|
218
|
+
* because these overlays don't have their content in the DOM immediately
|
|
219
|
+
* when willPresent fires. By waiting a frame, we ensure the content is
|
|
220
|
+
* rendered and can be properly scrolled into view.
|
|
221
|
+
*/
|
|
222
|
+
const scrollAfterRender = () => {
|
|
223
|
+
requestAnimationFrame(() => {
|
|
224
|
+
scrollSelectedIntoView();
|
|
225
|
+
});
|
|
226
|
+
};
|
|
227
|
+
if (this.interface === 'alert') {
|
|
228
|
+
overlay.addEventListener('ionAlertWillPresent', scrollAfterRender, { once: true });
|
|
229
|
+
}
|
|
230
|
+
else if (this.interface === 'action-sheet') {
|
|
231
|
+
overlay.addEventListener('ionActionSheetWillPresent', scrollAfterRender, { once: true });
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
overlay.onDidDismiss().then(() => {
|
|
235
|
+
this.overlay = undefined;
|
|
236
|
+
this.isExpanded = false;
|
|
237
|
+
this.ionDismiss.emit();
|
|
238
|
+
this.setFocus();
|
|
239
|
+
});
|
|
240
|
+
await overlay.present();
|
|
207
241
|
return overlay;
|
|
208
242
|
}
|
|
209
243
|
createOverlay(ev) {
|
|
@@ -630,7 +664,43 @@ export class Select {
|
|
|
630
664
|
}
|
|
631
665
|
renderListbox() {
|
|
632
666
|
const { disabled, inputId, isExpanded, required } = this;
|
|
633
|
-
return (h("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "dialog", "aria-expanded": `${isExpanded}`, "aria-required": `${required}`, onFocus: this.onFocus, onBlur: this.onBlur, ref: (focusEl) => (this.focusEl = focusEl) }));
|
|
667
|
+
return (h("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "dialog", "aria-expanded": `${isExpanded}`, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId, "aria-required": `${required}`, onFocus: this.onFocus, onBlur: this.onBlur, ref: (focusEl) => (this.focusEl = focusEl) }));
|
|
668
|
+
}
|
|
669
|
+
getHintTextID() {
|
|
670
|
+
const { el, helperText, errorText, helperTextId, errorTextId } = this;
|
|
671
|
+
if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
|
|
672
|
+
return errorTextId;
|
|
673
|
+
}
|
|
674
|
+
if (helperText) {
|
|
675
|
+
return helperTextId;
|
|
676
|
+
}
|
|
677
|
+
return undefined;
|
|
678
|
+
}
|
|
679
|
+
/**
|
|
680
|
+
* Renders the helper text or error text values
|
|
681
|
+
*/
|
|
682
|
+
renderHintText() {
|
|
683
|
+
const { helperText, errorText, helperTextId, errorTextId } = this;
|
|
684
|
+
return [
|
|
685
|
+
h("div", { id: helperTextId, class: "helper-text", part: "supporting-text helper-text" }, helperText),
|
|
686
|
+
h("div", { id: errorTextId, class: "error-text", part: "supporting-text error-text" }, errorText),
|
|
687
|
+
];
|
|
688
|
+
}
|
|
689
|
+
/**
|
|
690
|
+
* Responsible for rendering helper text, and error text. This element
|
|
691
|
+
* should only be rendered if hint text is set.
|
|
692
|
+
*/
|
|
693
|
+
renderBottomContent() {
|
|
694
|
+
const { helperText, errorText } = this;
|
|
695
|
+
/**
|
|
696
|
+
* undefined and empty string values should
|
|
697
|
+
* be treated as not having helper/error text.
|
|
698
|
+
*/
|
|
699
|
+
const hasHintText = !!helperText || !!errorText;
|
|
700
|
+
if (!hasHintText) {
|
|
701
|
+
return;
|
|
702
|
+
}
|
|
703
|
+
return h("div", { class: "select-bottom" }, this.renderHintText());
|
|
634
704
|
}
|
|
635
705
|
render() {
|
|
636
706
|
const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill, shape, name, value } = this;
|
|
@@ -661,7 +731,7 @@ export class Select {
|
|
|
661
731
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
662
732
|
*/
|
|
663
733
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
|
|
664
|
-
return (h(Host, { key: '
|
|
734
|
+
return (h(Host, { key: '6c0141f40087a1793516882641e4473a6a82a0b2', onClick: this.onClick, class: createColorClasses(this.color, {
|
|
665
735
|
[mode]: true,
|
|
666
736
|
'in-item': inItem,
|
|
667
737
|
'in-item-color': hostContext('ion-item.ion-color', el),
|
|
@@ -677,7 +747,7 @@ export class Select {
|
|
|
677
747
|
[`select-justify-${justify}`]: justifyEnabled,
|
|
678
748
|
[`select-shape-${shape}`]: shape !== undefined,
|
|
679
749
|
[`select-label-placement-${labelPlacement}`]: true,
|
|
680
|
-
}) }, h("label", { key: '
|
|
750
|
+
}) }, h("label", { key: 'a0d70c7cfb6c784f200e9b0893ddcbd25b59b167', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), h("div", { key: 'd398f85e1c3af2758cf0672ce8eab1ffa1e3e6a8', class: "select-wrapper-inner" }, h("slot", { key: 'b2ba9dbc8b944c04981b5f97975231a4b1c18768', name: "start" }), h("div", { key: '625c1029456701694f521a9b3e2199a8fd6c3331', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: '54bee045845d773e11f8952b9278c97082534488', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: 'cf70509d4140259a41367333ca3815a427f9ad66', class: "select-highlight" })), this.renderBottomContent()));
|
|
681
751
|
}
|
|
682
752
|
static get is() { return "ion-select"; }
|
|
683
753
|
static get encapsulation() { return "shadow"; }
|
|
@@ -794,6 +864,40 @@ export class Select {
|
|
|
794
864
|
"attribute": "fill",
|
|
795
865
|
"reflect": false
|
|
796
866
|
},
|
|
867
|
+
"errorText": {
|
|
868
|
+
"type": "string",
|
|
869
|
+
"mutable": false,
|
|
870
|
+
"complexType": {
|
|
871
|
+
"original": "string",
|
|
872
|
+
"resolved": "string | undefined",
|
|
873
|
+
"references": {}
|
|
874
|
+
},
|
|
875
|
+
"required": false,
|
|
876
|
+
"optional": true,
|
|
877
|
+
"docs": {
|
|
878
|
+
"tags": [],
|
|
879
|
+
"text": "Text that is placed under the select and displayed when an error is detected."
|
|
880
|
+
},
|
|
881
|
+
"attribute": "error-text",
|
|
882
|
+
"reflect": false
|
|
883
|
+
},
|
|
884
|
+
"helperText": {
|
|
885
|
+
"type": "string",
|
|
886
|
+
"mutable": false,
|
|
887
|
+
"complexType": {
|
|
888
|
+
"original": "string",
|
|
889
|
+
"resolved": "string | undefined",
|
|
890
|
+
"references": {}
|
|
891
|
+
},
|
|
892
|
+
"required": false,
|
|
893
|
+
"optional": true,
|
|
894
|
+
"docs": {
|
|
895
|
+
"tags": [],
|
|
896
|
+
"text": "Text that is placed under the select and displayed when no error is detected."
|
|
897
|
+
},
|
|
898
|
+
"attribute": "helper-text",
|
|
899
|
+
"reflect": false
|
|
900
|
+
},
|
|
797
901
|
"interface": {
|
|
798
902
|
"type": "string",
|
|
799
903
|
"mutable": false,
|
|
@@ -299,6 +299,63 @@ button {
|
|
|
299
299
|
--highlight-color: var(--highlight-color-valid);
|
|
300
300
|
}
|
|
301
301
|
|
|
302
|
+
.select-bottom {
|
|
303
|
+
/**
|
|
304
|
+
* The bottom content should take on the start and end
|
|
305
|
+
* padding so it is always aligned with either the label
|
|
306
|
+
* or the start of the text select.
|
|
307
|
+
*/
|
|
308
|
+
-webkit-padding-start: var(--padding-start);
|
|
309
|
+
padding-inline-start: var(--padding-start);
|
|
310
|
+
-webkit-padding-end: var(--padding-end);
|
|
311
|
+
padding-inline-end: var(--padding-end);
|
|
312
|
+
padding-top: 5px;
|
|
313
|
+
padding-bottom: 0;
|
|
314
|
+
display: flex;
|
|
315
|
+
justify-content: space-between;
|
|
316
|
+
border-top: var(--border-width) var(--border-style) var(--border-color);
|
|
317
|
+
font-size: 0.75rem;
|
|
318
|
+
white-space: normal;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* If the select has a validity state, the
|
|
323
|
+
* border and label should reflect that as a color.
|
|
324
|
+
* The invalid state should show if the select is
|
|
325
|
+
* invalid and has already been touched.
|
|
326
|
+
* The valid state should show if the select
|
|
327
|
+
* is valid, has already been touched, and
|
|
328
|
+
* is currently focused. Do not show the valid
|
|
329
|
+
* highlight when the select is blurred.
|
|
330
|
+
*/
|
|
331
|
+
:host(.has-focus.ion-valid),
|
|
332
|
+
:host(.ion-touched.ion-invalid) {
|
|
333
|
+
--border-color: var(--highlight-color);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* Error text should only be shown when .ion-invalid is
|
|
338
|
+
* present on the select. Otherwise the helper text should
|
|
339
|
+
* be shown.
|
|
340
|
+
*/
|
|
341
|
+
.select-bottom .error-text {
|
|
342
|
+
display: none;
|
|
343
|
+
color: var(--highlight-color-invalid);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
.select-bottom .helper-text {
|
|
347
|
+
display: block;
|
|
348
|
+
color: var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
:host(.ion-touched.ion-invalid) .select-bottom .error-text {
|
|
352
|
+
display: block;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
:host(.ion-touched.ion-invalid) .select-bottom .helper-text {
|
|
356
|
+
display: none;
|
|
357
|
+
}
|
|
358
|
+
|
|
302
359
|
.label-text-wrapper {
|
|
303
360
|
/**
|
|
304
361
|
* This causes the label to take up
|
|
@@ -768,6 +825,10 @@ button {
|
|
|
768
825
|
--border-color: var(--highlight-color);
|
|
769
826
|
}
|
|
770
827
|
|
|
828
|
+
/**
|
|
829
|
+
* The bottom content should never have
|
|
830
|
+
* a border with the solid style.
|
|
831
|
+
*/
|
|
771
832
|
:host(.select-fill-solid) .select-bottom {
|
|
772
833
|
border-top: none;
|
|
773
834
|
}
|
|
@@ -373,6 +373,7 @@
|
|
|
373
373
|
justify-content: space-between;
|
|
374
374
|
border-top: var(--border-width) var(--border-style) var(--border-color);
|
|
375
375
|
font-size: 0.75rem;
|
|
376
|
+
white-space: normal;
|
|
376
377
|
}
|
|
377
378
|
|
|
378
379
|
/**
|
|
@@ -396,7 +397,7 @@
|
|
|
396
397
|
|
|
397
398
|
.textarea-bottom .helper-text {
|
|
398
399
|
display: block;
|
|
399
|
-
color: var(--ion-color-step-
|
|
400
|
+
color: var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));
|
|
400
401
|
}
|
|
401
402
|
|
|
402
403
|
:host(.ion-touched.ion-invalid) .textarea-bottom .error-text {
|
|
@@ -415,7 +416,7 @@
|
|
|
415
416
|
*/
|
|
416
417
|
-webkit-margin-start: auto;
|
|
417
418
|
margin-inline-start: auto;
|
|
418
|
-
color: var(--ion-color-step-
|
|
419
|
+
color: var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));
|
|
419
420
|
white-space: nowrap;
|
|
420
421
|
padding-inline-start: 16px;
|
|
421
422
|
}
|
|
@@ -373,6 +373,7 @@
|
|
|
373
373
|
justify-content: space-between;
|
|
374
374
|
border-top: var(--border-width) var(--border-style) var(--border-color);
|
|
375
375
|
font-size: 0.75rem;
|
|
376
|
+
white-space: normal;
|
|
376
377
|
}
|
|
377
378
|
|
|
378
379
|
/**
|
|
@@ -396,7 +397,7 @@
|
|
|
396
397
|
|
|
397
398
|
.textarea-bottom .helper-text {
|
|
398
399
|
display: block;
|
|
399
|
-
color: var(--ion-color-step-
|
|
400
|
+
color: var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));
|
|
400
401
|
}
|
|
401
402
|
|
|
402
403
|
:host(.ion-touched.ion-invalid) .textarea-bottom .error-text {
|
|
@@ -415,7 +416,7 @@
|
|
|
415
416
|
*/
|
|
416
417
|
-webkit-margin-start: auto;
|
|
417
418
|
margin-inline-start: auto;
|
|
418
|
-
color: var(--ion-color-step-
|
|
419
|
+
color: var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));
|
|
419
420
|
white-space: nowrap;
|
|
420
421
|
padding-inline-start: 16px;
|
|
421
422
|
}
|
|
@@ -928,6 +929,10 @@
|
|
|
928
929
|
--border-color: var(--highlight-color);
|
|
929
930
|
}
|
|
930
931
|
|
|
932
|
+
/**
|
|
933
|
+
* The bottom content should never have
|
|
934
|
+
* a border with the solid style.
|
|
935
|
+
*/
|
|
931
936
|
:host(.textarea-fill-solid) .textarea-bottom {
|
|
932
937
|
border-top: none;
|
|
933
938
|
}
|
|
@@ -364,3 +364,13 @@ export const shallowEqualStringMap = (map1, map2) => {
|
|
|
364
364
|
}
|
|
365
365
|
return true;
|
|
366
366
|
};
|
|
367
|
+
export const getNextSiblingOfType = (element) => {
|
|
368
|
+
let sibling = element.nextSibling;
|
|
369
|
+
while (sibling) {
|
|
370
|
+
if (sibling.nodeType === Node.ELEMENT_NODE && sibling !== null) {
|
|
371
|
+
return sibling;
|
|
372
|
+
}
|
|
373
|
+
sibling = sibling.nextSibling;
|
|
374
|
+
}
|
|
375
|
+
return null;
|
|
376
|
+
};
|