@ionic/core 7.5.4-dev.11701112913.1ea61220 → 7.5.4-dev.11702935369.11a4baba
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/animation.js +11 -12
- package/components/checkbox.js +0 -2
- package/components/index4.js +12 -10
- package/components/index5.js +22 -0
- package/components/input-shims.js +7 -12
- package/components/input.utils.js +2 -3
- package/components/ion-datetime.js +2 -2
- package/components/ion-input.js +8 -31
- package/components/ion-modal.js +2 -2
- package/components/ion-range.js +0 -2
- package/components/ion-select.js +29 -44
- package/components/ion-skeleton-text.js +1 -14
- package/components/ion-textarea.js +7 -30
- package/components/ion-toast.js +74 -419
- package/components/ion-toggle.js +0 -2
- package/components/item.js +2 -2
- package/components/label.js +2 -2
- package/components/overlays.js +1 -2
- package/components/radio-group.js +0 -2
- package/components/radio.js +2 -42
- package/dist/cjs/{animation-d101aa7a.js → animation-1083855c.js} +12 -13
- package/dist/cjs/{app-globals-ef077808.js → app-globals-d1892126.js} +1 -1
- package/dist/cjs/{button-active-69c3bee4.js → button-active-e93ab34d.js} +2 -2
- package/dist/cjs/{capacitor-f68447d3.js → capacitor-2ffba62a.js} +1 -1
- package/dist/cjs/{haptic-a74c2767.js → haptic-678abc9f.js} +1 -1
- package/dist/cjs/index-306a7476.js +32 -0
- package/dist/cjs/{index-9146d04a.js → index-4323b635.js} +14 -12
- package/dist/cjs/{index-adbcffee.js → index-84c4c696.js} +3 -3
- package/dist/cjs/{index-e9634bc9.js → index-9f379eaa.js} +1 -1
- package/dist/cjs/index.cjs.js +10 -10
- package/dist/cjs/{input-shims-3e3f35b9.js → input-shims-b0a75a01.js} +10 -15
- package/dist/cjs/{input.utils-bdb6953c.js → input.utils-0fe3097c.js} +3 -4
- package/dist/cjs/ion-accordion_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -8
- package/dist/cjs/ion-alert.cjs.entry.js +8 -8
- package/dist/cjs/ion-app_8.cjs.entry.js +11 -11
- package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-back-button.cjs.entry.js +3 -3
- package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-card_5.cjs.entry.js +2 -2
- package/dist/cjs/ion-checkbox.cjs.entry.js +2 -4
- package/dist/cjs/ion-chip.cjs.entry.js +2 -2
- package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime_3.cjs.entry.js +10 -10
- package/dist/cjs/ion-fab_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-img.cjs.entry.js +2 -2
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-input.cjs.entry.js +14 -37
- package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-item_8.cjs.entry.js +7 -20
- package/dist/cjs/ion-loading.cjs.entry.js +5 -5
- package/dist/cjs/ion-menu_3.cjs.entry.js +8 -8
- package/dist/cjs/ion-modal.cjs.entry.js +10 -10
- package/dist/cjs/ion-nav_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-picker-column-internal.cjs.entry.js +5 -5
- package/dist/cjs/ion-picker-internal.cjs.entry.js +1 -1
- package/dist/cjs/ion-popover.cjs.entry.js +6 -6
- package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
- package/dist/cjs/ion-radio_2.cjs.entry.js +3 -8
- package/dist/cjs/ion-range.cjs.entry.js +2 -4
- package/dist/cjs/ion-refresher_2.cjs.entry.js +7 -7
- package/dist/cjs/ion-reorder_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
- package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
- package/dist/cjs/ion-searchbar.cjs.entry.js +3 -3
- package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-select_3.cjs.entry.js +38 -54
- package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
- package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-text.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +12 -35
- package/dist/cjs/ion-toast.cjs.entry.js +93 -435
- package/dist/cjs/ion-toggle.cjs.entry.js +6 -8
- package/dist/cjs/{ionic-global-4538d91c.js → ionic-global-91f1f8f2.js} +1 -1
- package/dist/cjs/ionic.cjs.js +4 -4
- package/dist/cjs/{ios.transition-7972d9e3.js → ios.transition-facbe500.js} +4 -4
- package/dist/cjs/{keyboard-840107b3.js → keyboard-38f2bb7b.js} +3 -3
- package/dist/cjs/{keyboard-controller-019f42df.js → keyboard-controller-50beb83a.js} +2 -2
- package/dist/cjs/{keyboard-43df0428.js → keyboard-fd7db491.js} +1 -1
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-6e61a10f.js → md.transition-0a7d53f1.js} +4 -4
- package/dist/cjs/{notch-controller-c22d1344.js → notch-controller-f4f6af5d.js} +1 -1
- package/dist/cjs/{overlays-ba1a1e21.js → overlays-91bb8ff7.js} +2 -4
- package/dist/cjs/{status-tap-2e9f9c86.js → status-tap-a9d8edcf.js} +1 -1
- package/dist/collection/components/checkbox/checkbox.js +0 -2
- package/dist/collection/components/datetime/datetime.ios.css +0 -1
- package/dist/collection/components/datetime/datetime.md.css +0 -1
- package/dist/collection/components/icon/test/dir/heart-broken.svg +0 -0
- package/dist/collection/components/input/input.ios.css +3 -10
- package/dist/collection/components/input/input.js +6 -31
- package/dist/collection/components/input/input.md.css +12 -13
- package/dist/collection/components/item/item.ios.css +15 -85
- package/dist/collection/components/item/item.md.css +15 -85
- package/dist/collection/components/item/test/basic/item.e2e.js +0 -26
- package/dist/collection/components/item/test/disabled/item.e2e.js +1 -0
- package/dist/collection/components/item/test/icons/heart-broken.svg +0 -0
- package/dist/collection/components/item/test/text/item.e2e.js +14 -0
- package/dist/collection/components/label/label.ios.css +3 -14
- package/dist/collection/components/label/label.md.css +3 -14
- package/dist/collection/components/modal/gestures/swipe-to-close.js +1 -2
- package/dist/collection/components/note/test/a11y/note.e2e.js +0 -43
- package/dist/collection/components/radio/radio.js +2 -5
- package/dist/collection/components/radio-group/radio-group.js +0 -24
- package/dist/collection/components/range/range.js +0 -2
- package/dist/collection/components/select/select.ios.css +7 -61
- package/dist/collection/components/select/select.js +28 -45
- package/dist/collection/components/select/select.md.css +19 -64
- package/dist/collection/components/select/test/label/select.e2e.js +1 -1
- package/dist/collection/components/select/test/legacy/wrapping/select.e2e.js +1 -1
- package/dist/collection/components/skeleton-text/skeleton-text.js +0 -39
- package/dist/collection/components/textarea/textarea.ios.css +5 -37
- package/dist/collection/components/textarea/textarea.js +5 -30
- package/dist/collection/components/textarea/textarea.md.css +14 -47
- package/dist/collection/components/toast/animations/ios.enter.js +1 -2
- package/dist/collection/components/toast/animations/md.enter.js +3 -4
- package/dist/collection/components/toast/animations/utils.js +14 -20
- package/dist/collection/components/toast/toast.ios.css +10 -10
- package/dist/collection/components/toast/toast.js +1 -104
- package/dist/collection/components/toast/toast.md.css +0 -10
- package/dist/collection/components/toggle/toggle.js +0 -2
- package/dist/collection/utils/animation/animation.js +11 -12
- package/dist/collection/utils/browser/index.js +22 -0
- package/dist/collection/utils/forms/index.js +0 -1
- package/dist/collection/utils/input-shims/input-shims.js +6 -12
- package/dist/collection/utils/menu-controller/index.js +12 -10
- package/dist/collection/utils/overlays.js +0 -1
- package/dist/collection/utils/slot-mutation-controller.js +2 -3
- package/dist/docs.json +2 -127
- package/dist/esm/{animation-cf3dd234.js → animation-8aa13916.js} +12 -13
- package/dist/esm/{app-globals-ba8b3a06.js → app-globals-8d413354.js} +1 -1
- package/dist/esm/{button-active-109ba60d.js → button-active-c7a04c9a.js} +2 -2
- package/dist/esm/{capacitor-f1f25364.js → capacitor-b4979570.js} +1 -1
- package/dist/esm/{haptic-1a66d69f.js → haptic-1243b917.js} +1 -1
- package/dist/esm/index-7a14ecec.js +29 -0
- package/dist/esm/{index-50582f1c.js → index-d62333a6.js} +3 -3
- package/dist/esm/{index-6a48e009.js → index-e2052f20.js} +14 -12
- package/dist/esm/{index-c9e82353.js → index-f0cc4e14.js} +1 -1
- package/dist/esm/index.js +10 -10
- package/dist/esm/{input-shims-1d767845.js → input-shims-d0c93e5d.js} +9 -14
- package/dist/esm/{input.utils-2cf5e372.js → input.utils-ec063df4.js} +3 -4
- package/dist/esm/ion-accordion_2.entry.js +3 -3
- package/dist/esm/ion-action-sheet.entry.js +8 -8
- package/dist/esm/ion-alert.entry.js +8 -8
- package/dist/esm/ion-app_8.entry.js +11 -11
- package/dist/esm/ion-avatar_3.entry.js +2 -2
- package/dist/esm/ion-back-button.entry.js +3 -3
- package/dist/esm/ion-backdrop.entry.js +2 -2
- package/dist/esm/ion-breadcrumb_2.entry.js +3 -3
- package/dist/esm/ion-button_2.entry.js +2 -2
- package/dist/esm/ion-card_5.entry.js +2 -2
- package/dist/esm/ion-checkbox.entry.js +2 -4
- package/dist/esm/ion-chip.entry.js +2 -2
- package/dist/esm/ion-col_3.entry.js +2 -2
- package/dist/esm/ion-datetime-button.entry.js +2 -2
- package/dist/esm/ion-datetime_3.entry.js +10 -10
- package/dist/esm/ion-fab_3.entry.js +3 -3
- package/dist/esm/ion-img.entry.js +2 -2
- package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
- package/dist/esm/ion-input.entry.js +14 -37
- package/dist/esm/ion-item-option_3.entry.js +2 -2
- package/dist/esm/ion-item_8.entry.js +7 -20
- package/dist/esm/ion-loading.entry.js +5 -5
- package/dist/esm/ion-menu_3.entry.js +8 -8
- package/dist/esm/ion-modal.entry.js +10 -10
- package/dist/esm/ion-nav_2.entry.js +3 -3
- package/dist/esm/ion-picker-column-internal.entry.js +5 -5
- package/dist/esm/ion-picker-internal.entry.js +1 -1
- package/dist/esm/ion-popover.entry.js +6 -6
- package/dist/esm/ion-progress-bar.entry.js +2 -2
- package/dist/esm/ion-radio_2.entry.js +3 -8
- package/dist/esm/ion-range.entry.js +2 -4
- package/dist/esm/ion-refresher_2.entry.js +7 -7
- package/dist/esm/ion-reorder_2.entry.js +6 -6
- package/dist/esm/ion-ripple-effect.entry.js +2 -2
- package/dist/esm/ion-route_4.entry.js +2 -2
- package/dist/esm/ion-searchbar.entry.js +3 -3
- package/dist/esm/ion-segment_2.entry.js +2 -2
- package/dist/esm/ion-select_3.entry.js +34 -50
- package/dist/esm/ion-spinner.entry.js +2 -2
- package/dist/esm/ion-split-pane.entry.js +2 -2
- package/dist/esm/ion-tab-bar_2.entry.js +6 -6
- package/dist/esm/ion-tab_2.entry.js +1 -1
- package/dist/esm/ion-text.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +12 -35
- package/dist/esm/ion-toast.entry.js +77 -419
- package/dist/esm/ion-toggle.entry.js +6 -8
- package/dist/esm/{ionic-global-7efdecd0.js → ionic-global-8673c5ce.js} +1 -1
- package/dist/esm/ionic.js +5 -5
- package/dist/esm/{ios.transition-e20d71bc.js → ios.transition-2fdb6f26.js} +4 -4
- package/dist/esm/{keyboard-b6230bfb.js → keyboard-b063f012.js} +1 -1
- package/dist/esm/{keyboard-9f771a04.js → keyboard-b551279d.js} +3 -3
- package/dist/esm/{keyboard-controller-3f0faa10.js → keyboard-controller-0c2dce71.js} +2 -2
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-a8469407.js → md.transition-6f8b3cd0.js} +4 -4
- package/dist/esm/{notch-controller-3f79197e.js → notch-controller-8c9c0e54.js} +1 -1
- package/dist/esm/{overlays-d79b34b4.js → overlays-d4c45da6.js} +3 -4
- package/dist/esm/polyfills/core-js.js +0 -0
- package/dist/esm/polyfills/dom.js +0 -0
- package/dist/esm/polyfills/es5-html-element.js +0 -0
- package/dist/esm/polyfills/index.js +0 -0
- package/dist/esm/polyfills/system.js +0 -0
- package/dist/esm/{status-tap-7ca28a1c.js → status-tap-71db1a8f.js} +1 -1
- package/dist/esm-es5/{animation-cf3dd234.js → animation-8aa13916.js} +1 -1
- package/dist/esm-es5/app-globals-8d413354.js +4 -0
- package/dist/esm-es5/{button-active-109ba60d.js → button-active-c7a04c9a.js} +1 -1
- package/dist/esm-es5/{capacitor-f1f25364.js → capacitor-b4979570.js} +1 -1
- package/dist/esm-es5/{haptic-1a66d69f.js → haptic-1243b917.js} +1 -1
- package/dist/esm-es5/{index-50582f1c.js → index-d62333a6.js} +1 -1
- package/dist/esm-es5/index-e2052f20.js +4 -0
- package/dist/esm-es5/index-f0cc4e14.js +4 -0
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/input-shims-d0c93e5d.js +4 -0
- package/dist/esm-es5/input.utils-ec063df4.js +4 -0
- 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-avatar_3.entry.js +1 -1
- package/dist/esm-es5/ion-back-button.entry.js +1 -1
- package/dist/esm-es5/ion-backdrop.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-chip.entry.js +1 -1
- package/dist/esm-es5/ion-col_3.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-internal.entry.js +1 -1
- package/dist/esm-es5/ion-picker-internal.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-ripple-effect.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_3.entry.js +1 -1
- package/dist/esm-es5/ion-spinner.entry.js +1 -1
- package/dist/esm-es5/ion-split-pane.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-text.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-global-7efdecd0.js → ionic-global-8673c5ce.js} +1 -1
- package/dist/esm-es5/ionic.js +1 -1
- package/dist/esm-es5/{ios.transition-e20d71bc.js → ios.transition-2fdb6f26.js} +1 -1
- package/dist/esm-es5/{keyboard-b6230bfb.js → keyboard-b063f012.js} +1 -1
- package/dist/esm-es5/{keyboard-9f771a04.js → keyboard-b551279d.js} +1 -1
- package/dist/esm-es5/{keyboard-controller-3f0faa10.js → keyboard-controller-0c2dce71.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/md.transition-6f8b3cd0.js +4 -0
- package/dist/esm-es5/{notch-controller-3f79197e.js → notch-controller-8c9c0e54.js} +1 -1
- package/dist/esm-es5/{overlays-d79b34b4.js → overlays-d4c45da6.js} +1 -1
- package/dist/esm-es5/{status-tap-7ca28a1c.js → status-tap-71db1a8f.js} +1 -1
- package/dist/html.html-data.json +1 -14
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/ionic.js +1 -1
- package/dist/ionic/p-02863edb.system.js +4 -0
- package/dist/ionic/{p-bf3396e1.entry.js → p-0335e66c.entry.js} +1 -1
- package/dist/ionic/{p-1b5b6845.system.entry.js → p-076e622f.system.entry.js} +1 -1
- package/dist/ionic/{p-35787a6f.entry.js → p-08dcf03a.entry.js} +1 -1
- package/dist/ionic/{p-4c50b357.system.entry.js → p-091702af.system.entry.js} +1 -1
- package/dist/ionic/{p-e53f2605.entry.js → p-094dbfa5.entry.js} +1 -1
- package/dist/ionic/{p-1fc6b5a5.system.entry.js → p-0993782a.system.entry.js} +1 -1
- package/dist/ionic/p-0d8e9076.system.entry.js +4 -0
- package/dist/ionic/p-0f23c3a5.entry.js +4 -0
- package/dist/ionic/p-0f4f11eb.entry.js +4 -0
- package/dist/ionic/{p-8a9760f7.system.entry.js → p-10a2ab8c.system.entry.js} +1 -1
- package/dist/ionic/{p-3fc0b7ba.entry.js → p-1289df52.entry.js} +1 -1
- package/dist/ionic/{p-35e25602.system.entry.js → p-14be0381.system.entry.js} +1 -1
- package/dist/ionic/{p-2151a4a4.system.entry.js → p-153ea88b.system.entry.js} +1 -1
- package/dist/ionic/{p-e4d66e2d.system.entry.js → p-176a386b.system.entry.js} +1 -1
- package/dist/ionic/{p-15512a5e.system.entry.js → p-1acd1607.system.entry.js} +1 -1
- package/dist/ionic/{p-eec1aa12.system.entry.js → p-1b16c2ef.system.entry.js} +1 -1
- package/dist/ionic/{p-a3434028.system.entry.js → p-1df460d5.system.entry.js} +1 -1
- package/dist/ionic/{p-0148306b.system.js → p-1e87e3fb.system.js} +1 -1
- package/dist/ionic/{p-3962542f.system.entry.js → p-202654b4.system.entry.js} +1 -1
- package/dist/ionic/p-276afddd.js +4 -0
- package/dist/ionic/{p-ce20c101.entry.js → p-287d76e0.entry.js} +1 -1
- package/dist/ionic/{p-20ff4d7f.system.entry.js → p-2954d245.system.entry.js} +1 -1
- package/dist/ionic/p-2ac243b7.entry.js +4 -0
- package/dist/ionic/p-2e8e0045.js +4 -0
- package/dist/ionic/{p-138a4a93.entry.js → p-31589ed7.entry.js} +1 -1
- package/dist/ionic/{p-70bf6086.system.entry.js → p-3299adbf.system.entry.js} +1 -1
- package/dist/ionic/p-3602001b.system.js +4 -0
- package/dist/ionic/p-3632220b.system.js +4 -0
- package/dist/ionic/{p-3dedd258.system.entry.js → p-3878d22f.system.entry.js} +1 -1
- package/dist/ionic/{p-957f3028.system.entry.js → p-38fbf9f5.system.entry.js} +1 -1
- package/dist/ionic/{p-13dd7d20.system.js → p-3b3046e8.system.js} +1 -1
- package/dist/ionic/{p-e5fd9f10.js → p-3bad5c1a.js} +1 -1
- package/dist/ionic/{p-0c40f7d3.system.js → p-3d074f21.system.js} +1 -1
- package/dist/ionic/p-3daa6ecf.js +4 -0
- package/dist/ionic/{p-510bc27b.entry.js → p-40f5a803.entry.js} +1 -1
- package/dist/ionic/{p-958f1c70.system.js → p-41477ad9.system.js} +1 -1
- package/dist/ionic/{p-a135e3ba.js → p-419eb426.js} +1 -1
- package/dist/ionic/{p-0e8335b9.entry.js → p-44723fa5.entry.js} +1 -1
- package/dist/ionic/{p-5b978c94.system.js → p-4639874e.system.js} +2 -2
- package/dist/ionic/p-4c724478.entry.js +4 -0
- package/dist/ionic/{p-f6d089a7.entry.js → p-4d06fd5b.entry.js} +1 -1
- package/dist/ionic/{p-938c4956.js → p-4f91b9c6.js} +1 -1
- package/dist/ionic/{p-ed8a02a2.system.entry.js → p-51086b36.system.entry.js} +1 -1
- package/dist/ionic/{p-abaa9b48.system.js → p-5504ca9b.system.js} +1 -1
- package/dist/ionic/{p-020dd47f.entry.js → p-55a8f9a3.entry.js} +1 -1
- package/dist/ionic/p-5916b355.system.entry.js +4 -0
- package/dist/ionic/{p-bedc16f0.system.entry.js → p-5b9cb91d.system.entry.js} +1 -1
- package/dist/ionic/{p-2d86b19a.entry.js → p-6008efa0.entry.js} +1 -1
- package/dist/ionic/{p-cb6c380e.system.entry.js → p-664cb3ad.system.entry.js} +1 -1
- package/dist/ionic/p-67eecef4.system.js +4 -0
- package/dist/ionic/{p-27923249.system.entry.js → p-6a61d423.system.entry.js} +1 -1
- package/dist/ionic/{p-e525dbea.entry.js → p-6e4225ed.entry.js} +1 -1
- package/dist/ionic/{p-00a10b94.system.entry.js → p-793625e5.system.entry.js} +1 -1
- package/dist/ionic/{p-89703003.entry.js → p-7e6cf80c.entry.js} +1 -1
- package/dist/ionic/{p-c7138053.system.entry.js → p-7eaa28eb.system.entry.js} +1 -1
- package/dist/ionic/{p-696c63fb.system.entry.js → p-7fd77f56.system.entry.js} +1 -1
- package/dist/ionic/{p-11cb4e19.js → p-81c818e7.js} +1 -1
- package/dist/ionic/p-843fe6e3.entry.js +4 -0
- package/dist/ionic/p-8708a93c.entry.js +4 -0
- package/dist/ionic/{p-ab1908ba.system.entry.js → p-889118cf.system.entry.js} +1 -1
- package/dist/ionic/{p-9471d511.system.entry.js → p-88cfa8f1.system.entry.js} +1 -1
- package/dist/ionic/{p-edd568c5.js → p-8bda8767.js} +1 -1
- package/dist/ionic/p-8c44e074.system.entry.js +4 -0
- package/dist/ionic/{p-53f75103.system.js → p-8c63eccf.system.js} +1 -1
- package/dist/ionic/{p-5885e9af.js → p-8cf94fc1.js} +1 -1
- package/dist/ionic/p-8d9c5be5.system.entry.js +4 -0
- package/dist/ionic/{p-5a7df436.entry.js → p-8f518e79.entry.js} +1 -1
- package/dist/ionic/p-910c1904.system.entry.js +4 -0
- package/dist/ionic/{p-47826f19.entry.js → p-93a2c76b.entry.js} +1 -1
- package/dist/ionic/p-94154db4.js +4 -0
- package/dist/ionic/{p-c4381a06.entry.js → p-952c64ea.entry.js} +1 -1
- package/dist/ionic/{p-60f25049.js → p-959e7a7a.js} +1 -1
- package/dist/ionic/p-97c65aa5.js +4 -0
- package/dist/ionic/p-9ab6f3e6.system.js +4 -0
- package/dist/ionic/p-9c7a56f0.entry.js +4 -0
- package/dist/ionic/{p-51b94085.system.entry.js → p-9c933855.system.entry.js} +1 -1
- package/dist/ionic/{p-c2e199ac.entry.js → p-9da6eef4.entry.js} +1 -1
- package/dist/ionic/p-9e4bb700.entry.js +4 -0
- package/dist/ionic/{p-50375f3b.system.entry.js → p-a134a81b.system.entry.js} +1 -1
- package/dist/ionic/p-a30595f3.system.entry.js +4 -0
- package/dist/ionic/p-a3b6e1b2.entry.js +4 -0
- package/dist/ionic/{p-d3278cb8.entry.js → p-a7c33806.entry.js} +1 -1
- package/dist/ionic/p-a809a205.js +4 -0
- package/dist/ionic/{p-aec8a70a.system.js → p-ab4cff27.system.js} +1 -1
- package/dist/ionic/p-ad227931.system.js +4 -0
- package/dist/ionic/{p-5c7107b4.system.entry.js → p-ae2e4e30.system.entry.js} +1 -1
- package/dist/ionic/{p-8be2b964.entry.js → p-b1200f55.entry.js} +1 -1
- package/dist/ionic/{p-400a78f3.system.entry.js → p-b4085a03.system.entry.js} +1 -1
- package/dist/ionic/{p-9292fd42.system.js → p-b4b4bb29.system.js} +1 -1
- package/dist/ionic/{p-6a309574.js → p-b923f3d7.js} +1 -1
- package/dist/ionic/{p-25b8d65c.entry.js → p-b95cc39b.entry.js} +1 -1
- package/dist/ionic/{p-3e8d7ed8.js → p-b977b57a.js} +1 -1
- package/dist/ionic/{p-f9a641fa.system.js → p-bba2ce59.system.js} +1 -1
- package/dist/ionic/{p-d73eb00e.entry.js → p-bd946be0.entry.js} +1 -1
- package/dist/ionic/p-c096895d.system.js +4 -0
- package/dist/ionic/{p-a03566c4.system.entry.js → p-c2af8468.system.entry.js} +2 -2
- package/dist/ionic/p-c3b62be8.system.entry.js +4 -0
- package/dist/ionic/{p-2fb115dc.entry.js → p-c5106edf.entry.js} +1 -1
- package/dist/ionic/p-c75422d5.entry.js +4 -0
- package/dist/ionic/p-c87d155e.entry.js +4 -0
- package/dist/ionic/p-cbe7738f.entry.js +4 -0
- package/dist/ionic/p-cc196b34.js +4 -0
- package/dist/ionic/{p-1511dc35.system.js → p-cc68ad40.system.js} +1 -1
- package/dist/ionic/{p-e7d20dfb.system.js → p-ccdcb022.system.js} +1 -1
- package/dist/ionic/{p-6825ff8d.entry.js → p-cd1c8ab2.entry.js} +1 -1
- package/dist/ionic/{p-a6880f79.system.entry.js → p-cd3a87bd.system.entry.js} +1 -1
- package/dist/ionic/{p-7dafac2c.system.entry.js → p-ce62bf2c.system.entry.js} +1 -1
- package/dist/ionic/{p-ebdaf11b.entry.js → p-ce9bf0ed.entry.js} +1 -1
- package/dist/ionic/p-d05b431a.system.entry.js +4 -0
- package/dist/ionic/{p-71e70a57.system.entry.js → p-d0c701d0.system.entry.js} +1 -1
- package/dist/ionic/{p-03a36678.entry.js → p-d1ac0094.entry.js} +1 -1
- package/dist/ionic/p-d1de1188.js +4 -0
- package/dist/ionic/{p-f8febce9.system.entry.js → p-d27ade6f.system.entry.js} +1 -1
- package/dist/ionic/p-d37d3ebc.system.entry.js +4 -0
- package/dist/ionic/{p-b3d50a72.entry.js → p-d59f70db.entry.js} +1 -1
- package/dist/ionic/{p-152998a6.system.entry.js → p-d9c86724.system.entry.js} +1 -1
- package/dist/ionic/{p-df18d20d.js → p-da26ba41.js} +1 -1
- package/dist/ionic/{p-4430713b.entry.js → p-da6b2907.entry.js} +1 -1
- package/dist/ionic/p-dee844d7.js +4 -0
- package/dist/ionic/{p-9939c98e.entry.js → p-e23c3d22.entry.js} +1 -1
- package/dist/ionic/{p-bc48e521.system.entry.js → p-ecbc7728.system.entry.js} +1 -1
- package/dist/ionic/{p-12d62aa9.entry.js → p-ef0d410f.entry.js} +1 -1
- package/dist/ionic/{p-6abde4f1.system.entry.js → p-f2743f0f.system.entry.js} +1 -1
- package/dist/ionic/{p-a9424586.entry.js → p-f30dabf4.entry.js} +1 -1
- package/dist/ionic/{p-3e1deb37.system.entry.js → p-f323209c.system.entry.js} +1 -1
- package/dist/ionic/{p-664cc492.entry.js → p-f33808d4.entry.js} +1 -1
- package/dist/ionic/{p-bc6e32d2.entry.js → p-f3d770d2.entry.js} +1 -1
- package/dist/ionic/p-f47f2024.entry.js +4 -0
- package/dist/ionic/p-f9336ef9.system.js +4 -0
- package/dist/ionic/{p-d2de097b.entry.js → p-fc758470.entry.js} +1 -1
- package/dist/ionic/p-ff5a10f9.system.js +4 -0
- package/dist/types/components/input/input.d.ts +0 -2
- package/dist/types/components/radio-group/radio-group-interface.d.ts +0 -1
- package/dist/types/components/radio-group/radio-group.d.ts +1 -8
- package/dist/types/components/router/router.d.ts +1 -2
- package/dist/types/components/select/select.d.ts +1 -6
- package/dist/types/components/skeleton-text/skeleton-text.d.ts +1 -9
- package/dist/types/components/textarea/textarea.d.ts +0 -2
- package/dist/types/components/toast/animations/utils.d.ts +4 -15
- package/dist/types/components/toast/toast-interface.d.ts +0 -2
- package/dist/types/components/toast/toast.d.ts +1 -28
- package/dist/types/components.d.ts +6 -37
- package/dist/types/interface.d.ts +5 -1
- package/dist/types/utils/animation/animation-interface.d.ts +4 -4
- package/dist/types/utils/browser/index.d.ts +2 -11
- package/dist/types/utils/forms/index.d.ts +0 -1
- package/dist/types/utils/hardware-back-button.d.ts +0 -4
- package/dist/types/utils/overlays.d.ts +0 -1
- package/dist/types/utils/slot-mutation-controller.d.ts +2 -2
- package/dist/types/utils/test/playwright/page/utils/goto.d.ts +1 -1
- package/hydrate/index.js +169 -616
- package/package.json +31 -30
- package/dist/cjs/compare-with-utils-c0444525.js +0 -44
- package/dist/cjs/index-c8d52405.js +0 -10
- package/dist/collection/components/input/test/slot/input.e2e.js +0 -51
- package/dist/collection/components/select/test/slot/select.e2e.js +0 -67
- package/dist/collection/components/textarea/test/slot/textarea.e2e.js +0 -51
- package/dist/collection/components/toast/gestures/swipe-to-dismiss.js +0 -267
- package/dist/collection/components/toast/test/swipe-gesture/toast.e2e.js +0 -84
- package/dist/collection/utils/forms/compare-with-utils.js +0 -39
- package/dist/esm/compare-with-utils-4928c09d.js +0 -41
- package/dist/esm/index-a5d50daf.js +0 -7
- package/dist/esm-es5/app-globals-ba8b3a06.js +0 -4
- package/dist/esm-es5/compare-with-utils-4928c09d.js +0 -4
- package/dist/esm-es5/index-6a48e009.js +0 -4
- package/dist/esm-es5/index-c9e82353.js +0 -4
- package/dist/esm-es5/input-shims-1d767845.js +0 -4
- package/dist/esm-es5/input.utils-2cf5e372.js +0 -4
- package/dist/esm-es5/md.transition-a8469407.js +0 -4
- package/dist/ionic/p-02663394.system.js +0 -4
- package/dist/ionic/p-0fa05d7a.system.entry.js +0 -4
- package/dist/ionic/p-11104d0d.entry.js +0 -4
- package/dist/ionic/p-314c4dee.js +0 -4
- package/dist/ionic/p-33c650c5.entry.js +0 -4
- package/dist/ionic/p-3554b264.js +0 -4
- package/dist/ionic/p-37afecd5.entry.js +0 -4
- package/dist/ionic/p-3afb9c3d.entry.js +0 -4
- package/dist/ionic/p-3bc3d880.system.js +0 -4
- package/dist/ionic/p-40dd5937.system.js +0 -4
- package/dist/ionic/p-43716898.js +0 -4
- package/dist/ionic/p-494e75ad.js +0 -4
- package/dist/ionic/p-4e3c07a6.system.js +0 -4
- package/dist/ionic/p-4e4ee05e.js +0 -4
- package/dist/ionic/p-561cc050.system.js +0 -4
- package/dist/ionic/p-57b14769.js +0 -4
- package/dist/ionic/p-647fcea8.entry.js +0 -4
- package/dist/ionic/p-6b45cfd0.system.entry.js +0 -4
- package/dist/ionic/p-6c89025e.system.entry.js +0 -4
- package/dist/ionic/p-6dc21cd1.system.entry.js +0 -4
- package/dist/ionic/p-70dcf429.js +0 -4
- package/dist/ionic/p-710cea83.system.js +0 -4
- package/dist/ionic/p-78a8e1e8.entry.js +0 -4
- package/dist/ionic/p-79841aa8.entry.js +0 -4
- package/dist/ionic/p-7ac30f6a.entry.js +0 -4
- package/dist/ionic/p-7acd17bc.entry.js +0 -4
- package/dist/ionic/p-7b44e419.js +0 -4
- package/dist/ionic/p-81bdfa1c.system.entry.js +0 -4
- package/dist/ionic/p-8414ed31.entry.js +0 -4
- package/dist/ionic/p-92ac915c.system.js +0 -4
- package/dist/ionic/p-a6b819ca.entry.js +0 -4
- package/dist/ionic/p-ad6ed7ab.system.entry.js +0 -4
- package/dist/ionic/p-be499f29.entry.js +0 -4
- package/dist/ionic/p-c2db1374.system.js +0 -4
- package/dist/ionic/p-c3547c7a.system.js +0 -4
- package/dist/ionic/p-c700acef.system.js +0 -4
- package/dist/ionic/p-cd73cfd1.system.entry.js +0 -4
- package/dist/ionic/p-e3b7a2d0.system.entry.js +0 -4
- package/dist/ionic/p-e9fe3c8b.system.entry.js +0 -4
- package/dist/ionic/p-f2d4e3c8.entry.js +0 -4
- package/dist/ionic/p-f4ccdc77.js +0 -4
- package/dist/ionic/p-f7769c83.js +0 -4
- package/dist/node_modules/ionicons/dist/collection/components/icon/icon.css +0 -144
- package/dist/types/components/toast/gestures/swipe-to-dismiss.d.ts +0 -9
- package/dist/types/utils/forms/compare-with-utils.d.ts +0 -18
- /package/dist/cjs/{index-73186843.js → index-53026db1.js} +0 -0
- /package/dist/cjs/{index-09471526.js → index-677c4d13.js} +0 -0
- /package/dist/esm/{index-c132c5f1.js → index-4d016006.js} +0 -0
- /package/dist/esm/{index-4392ebcb.js → index-8eb0239b.js} +0 -0
- /package/dist/esm-es5/{index-c132c5f1.js → index-4d016006.js} +0 -0
- /package/dist/esm-es5/{index-a5d50daf.js → index-7a14ecec.js} +0 -0
- /package/dist/esm-es5/{index-4392ebcb.js → index-8eb0239b.js} +0 -0
- /package/dist/ionic/{p-8050b9b9.system.js → p-0c55ffe1.system.js} +0 -0
- /package/dist/ionic/{p-792919fd.system.js → p-0e94957a.system.js} +0 -0
- /package/dist/ionic/{p-dab42c1b.system.js → p-2814c8e5.system.js} +0 -0
- /package/dist/ionic/{p-f5e886cd.js → p-8a40746c.js} +0 -0
- /package/dist/ionic/{p-7b30edcc.js → p-b347cfd1.js} +0 -0
- /package/dist/ionic/{p-ea96fa73.js → p-e90d610c.js} +0 -0
|
@@ -48,48 +48,5 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
|
48
48
|
const note = page.locator('ion-note');
|
|
49
49
|
await expect(note).toHaveScreenshot(screenshot(`note-item-divider-scale`));
|
|
50
50
|
});
|
|
51
|
-
test('should wrap label to the next line without truncating', async ({ page }) => {
|
|
52
|
-
await page.setContent(`
|
|
53
|
-
<style>
|
|
54
|
-
html {
|
|
55
|
-
font-size: 310%;
|
|
56
|
-
}
|
|
57
|
-
</style>
|
|
58
|
-
|
|
59
|
-
<ion-list>
|
|
60
|
-
<ion-item>
|
|
61
|
-
<ion-note slot="start">Really really long note</ion-note>
|
|
62
|
-
<ion-label>Label</ion-label>
|
|
63
|
-
</ion-item>
|
|
64
|
-
|
|
65
|
-
<ion-item>
|
|
66
|
-
<ion-label>Label</ion-label>
|
|
67
|
-
<ion-note slot="end">Really really long note</ion-note>
|
|
68
|
-
</ion-item>
|
|
69
|
-
|
|
70
|
-
<ion-item>
|
|
71
|
-
<ion-note slot="start">Note</ion-note>
|
|
72
|
-
<ion-label>Really really long label</ion-label>
|
|
73
|
-
</ion-item>
|
|
74
|
-
|
|
75
|
-
<ion-item>
|
|
76
|
-
<ion-label>Really really long label</ion-label>
|
|
77
|
-
<ion-note slot="end">Note</ion-note>
|
|
78
|
-
</ion-item>
|
|
79
|
-
|
|
80
|
-
<ion-item>
|
|
81
|
-
<ion-note slot="start">Really really long note</ion-note>
|
|
82
|
-
<ion-label>Really really long label</ion-label>
|
|
83
|
-
</ion-item>
|
|
84
|
-
|
|
85
|
-
<ion-item>
|
|
86
|
-
<ion-label>Really really long label</ion-label>
|
|
87
|
-
<ion-note slot="end">Really really long note</ion-note>
|
|
88
|
-
</ion-item>
|
|
89
|
-
</ion-list>
|
|
90
|
-
`, config);
|
|
91
|
-
const list = page.locator('ion-list');
|
|
92
|
-
await expect(list).toHaveScreenshot(screenshot(`note-wrapping-label-scale`));
|
|
93
|
-
});
|
|
94
51
|
});
|
|
95
52
|
});
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { Host, h } from "@stencil/core";
|
|
5
|
-
import { createLegacyFormController
|
|
5
|
+
import { createLegacyFormController } from "../../utils/forms/index";
|
|
6
6
|
import { addEventListener, getAriaLabel, removeEventListener } from "../../utils/helpers";
|
|
7
7
|
import { printIonWarning } from "../../utils/logging/index";
|
|
8
8
|
import { createColorClasses, hostContext } from "../../utils/theme";
|
|
@@ -23,8 +23,7 @@ export class Radio {
|
|
|
23
23
|
this.hasLoggedDeprecationWarning = false;
|
|
24
24
|
this.updateState = () => {
|
|
25
25
|
if (this.radioGroup) {
|
|
26
|
-
|
|
27
|
-
this.checked = isOptionSelected(radioGroupValue, this.value, compareWith);
|
|
26
|
+
this.checked = this.radioGroup.value === this.value;
|
|
28
27
|
}
|
|
29
28
|
};
|
|
30
29
|
this.onClick = () => {
|
|
@@ -121,8 +120,6 @@ export class Radio {
|
|
|
121
120
|
emitStyle() {
|
|
122
121
|
const style = {
|
|
123
122
|
'interactive-disabled': this.disabled,
|
|
124
|
-
// TODO(FW-3125): remove this
|
|
125
|
-
legacy: !!this.legacy,
|
|
126
123
|
};
|
|
127
124
|
if (this.legacyFormController.hasLegacyControl()) {
|
|
128
125
|
style['radio-checked'] = this.checked;
|
|
@@ -47,7 +47,6 @@ export class RadioGroup {
|
|
|
47
47
|
}
|
|
48
48
|
};
|
|
49
49
|
this.allowEmptySelection = false;
|
|
50
|
-
this.compareWith = undefined;
|
|
51
50
|
this.name = this.inputId;
|
|
52
51
|
this.value = undefined;
|
|
53
52
|
}
|
|
@@ -159,29 +158,6 @@ export class RadioGroup {
|
|
|
159
158
|
"reflect": false,
|
|
160
159
|
"defaultValue": "false"
|
|
161
160
|
},
|
|
162
|
-
"compareWith": {
|
|
163
|
-
"type": "string",
|
|
164
|
-
"mutable": false,
|
|
165
|
-
"complexType": {
|
|
166
|
-
"original": "string | RadioGroupCompareFn | null",
|
|
167
|
-
"resolved": "((currentValue: any, compareValue: any) => boolean) | null | string | undefined",
|
|
168
|
-
"references": {
|
|
169
|
-
"RadioGroupCompareFn": {
|
|
170
|
-
"location": "import",
|
|
171
|
-
"path": "./radio-group-interface",
|
|
172
|
-
"id": "src/components/radio-group/radio-group-interface.ts::RadioGroupCompareFn"
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
},
|
|
176
|
-
"required": false,
|
|
177
|
-
"optional": true,
|
|
178
|
-
"docs": {
|
|
179
|
-
"tags": [],
|
|
180
|
-
"text": "This property allows developers to specify a custom function or property\nname for comparing objects when determining the selected option in the\nion-radio-group. When not specified, the default behavior will use strict\nequality (===) for comparison."
|
|
181
|
-
},
|
|
182
|
-
"attribute": "compare-with",
|
|
183
|
-
"reflect": false
|
|
184
|
-
},
|
|
185
161
|
"name": {
|
|
186
162
|
"type": "string",
|
|
187
163
|
"mutable": false,
|
|
@@ -110,11 +110,6 @@
|
|
|
110
110
|
overflow: hidden;
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
:host(.in-item:not(.legacy-select)) {
|
|
114
|
-
flex: 1 1 0;
|
|
115
|
-
width: 0;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
113
|
:host(.in-item.legacy-select) {
|
|
119
114
|
position: static;
|
|
120
115
|
max-width: 45%;
|
|
@@ -215,12 +210,6 @@ button {
|
|
|
215
210
|
margin-top: 0;
|
|
216
211
|
margin-bottom: 0;
|
|
217
212
|
position: relative;
|
|
218
|
-
/**
|
|
219
|
-
* Prevent the icon from shrinking when the label and/or
|
|
220
|
-
* selected item text is long enough to fill the rest of
|
|
221
|
-
* the container.
|
|
222
|
-
*/
|
|
223
|
-
flex-shrink: 0;
|
|
224
213
|
}
|
|
225
214
|
|
|
226
215
|
/**
|
|
@@ -304,23 +293,6 @@ button {
|
|
|
304
293
|
transition: opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
305
294
|
}
|
|
306
295
|
|
|
307
|
-
.select-wrapper-inner {
|
|
308
|
-
display: flex;
|
|
309
|
-
align-items: center;
|
|
310
|
-
overflow: hidden;
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
:host(.select-label-placement-stacked) .select-wrapper-inner,
|
|
314
|
-
:host(.select-label-placement-floating) .select-wrapper-inner {
|
|
315
|
-
/**
|
|
316
|
-
* When using a stacked/floating label, the inner wrapper is
|
|
317
|
-
* stacked vertically under the label container. This line
|
|
318
|
-
* ensures that the inner wrapper fills all the remaining height
|
|
319
|
-
* of the component.
|
|
320
|
-
*/
|
|
321
|
-
flex-grow: 1;
|
|
322
|
-
}
|
|
323
|
-
|
|
324
296
|
:host(.ion-touched.ion-invalid) {
|
|
325
297
|
--highlight-color: var(--highlight-color-invalid);
|
|
326
298
|
}
|
|
@@ -561,23 +533,11 @@ button {
|
|
|
561
533
|
* The placeholder should be hidden when the label
|
|
562
534
|
* is on top of the select. This prevents the label
|
|
563
535
|
* from overlapping any placeholder value.
|
|
564
|
-
*
|
|
565
|
-
* TODO(FW-5592): Remove :not(.label-floating) piece
|
|
566
536
|
*/
|
|
567
|
-
:host(.select-label-placement-floating
|
|
537
|
+
:host(.select-label-placement-floating) .native-wrapper .select-placeholder {
|
|
568
538
|
opacity: 0;
|
|
569
539
|
}
|
|
570
540
|
|
|
571
|
-
/**
|
|
572
|
-
* We don't use .label-floating here because that would
|
|
573
|
-
* also include the case where the label is floating due
|
|
574
|
-
* to content in the start/end slot. We want the opacity
|
|
575
|
-
* to remain at the default in this case, since the select
|
|
576
|
-
* isn't being actively interacted with.
|
|
577
|
-
*
|
|
578
|
-
* TODO(FW-5592): Change entire selector to:
|
|
579
|
-
* :host(.label-floating.select-label-placement-floating) .native-wrapper .select-placeholder
|
|
580
|
-
*/
|
|
581
541
|
:host(.select-expanded.select-label-placement-floating) .native-wrapper .select-placeholder,
|
|
582
542
|
:host(.ion-focused.select-label-placement-floating) .native-wrapper .select-placeholder,
|
|
583
543
|
:host(.has-value.select-label-placement-floating) .native-wrapper .select-placeholder {
|
|
@@ -587,7 +547,10 @@ button {
|
|
|
587
547
|
/**
|
|
588
548
|
* This makes the label sit above the input.
|
|
589
549
|
*/
|
|
590
|
-
:host(.label-
|
|
550
|
+
:host(.select-label-placement-stacked) .label-text-wrapper,
|
|
551
|
+
:host(.select-expanded.select-label-placement-floating) .label-text-wrapper,
|
|
552
|
+
:host(.ion-focused.select-label-placement-floating) .label-text-wrapper,
|
|
553
|
+
:host(.has-value.select-label-placement-floating) .label-text-wrapper {
|
|
591
554
|
transform: translateY(50%) scale(0.75);
|
|
592
555
|
/**
|
|
593
556
|
* Label text should not extend
|
|
@@ -596,23 +559,6 @@ button {
|
|
|
596
559
|
max-width: calc(100% / 0.75);
|
|
597
560
|
}
|
|
598
561
|
|
|
599
|
-
::slotted([slot=start]), ::slotted([slot=end]) {
|
|
600
|
-
/**
|
|
601
|
-
* Prevent the slots from shrinking when the label and/or
|
|
602
|
-
* selected item text is long enough to fill the rest of
|
|
603
|
-
* the container.
|
|
604
|
-
*/
|
|
605
|
-
flex-shrink: 0;
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
::slotted([slot=start]) {
|
|
609
|
-
margin-inline-end: 16px;
|
|
610
|
-
}
|
|
611
|
-
|
|
612
|
-
::slotted([slot=end]) {
|
|
613
|
-
margin-inline-start: 16px;
|
|
614
|
-
}
|
|
615
|
-
|
|
616
562
|
/**
|
|
617
563
|
* Convert a font size to a dynamic font size.
|
|
618
564
|
* Fonts that participate in Dynamic Type should use
|
|
@@ -692,8 +638,8 @@ button {
|
|
|
692
638
|
color: var(--ion-color-step-650, #595959);
|
|
693
639
|
}
|
|
694
640
|
|
|
695
|
-
:host(.select-label-placement-stacked) .
|
|
696
|
-
:host(.select-label-placement-floating) .
|
|
641
|
+
:host(.select-label-placement-stacked) .native-wrapper,
|
|
642
|
+
:host(.select-label-placement-floating) .native-wrapper {
|
|
697
643
|
width: calc(100% - 1.125rem - 4px);
|
|
698
644
|
}
|
|
699
645
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { Host, h, forceUpdate } from "@stencil/core";
|
|
5
|
-
import {
|
|
5
|
+
import { createLegacyFormController, createNotchController } from "../../utils/forms/index";
|
|
6
6
|
import { findItemLabel, focusElement, getAriaLabel, renderHiddenInput, inheritAttributes } from "../../utils/helpers";
|
|
7
7
|
import { printIonWarning } from "../../utils/logging/index";
|
|
8
8
|
import { actionSheetController, alertController, popoverController } from "../../utils/overlays";
|
|
@@ -16,8 +16,6 @@ import { getIonMode } from "../../global/ionic-global";
|
|
|
16
16
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
17
17
|
*
|
|
18
18
|
* @slot label - The label text to associate with the select. Use the `labelPlacement` property to control where the label is placed relative to the select. Use this if you need to render a label with custom HTML.
|
|
19
|
-
* @slot start - Content to display at the leading edge of the select.
|
|
20
|
-
* @slot end - Content to display at the trailing edge of the select.
|
|
21
19
|
*
|
|
22
20
|
* @part placeholder - The text displayed in the select when there is no value.
|
|
23
21
|
* @part text - The displayed value of the select.
|
|
@@ -32,22 +30,8 @@ export class Select {
|
|
|
32
30
|
// This flag ensures we log the deprecation warning at most once.
|
|
33
31
|
this.hasLoggedDeprecationWarning = false;
|
|
34
32
|
this.onClick = (ev) => {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
if (target === this.el || closestSlot === null) {
|
|
38
|
-
this.setFocus();
|
|
39
|
-
this.open(ev);
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
/**
|
|
43
|
-
* Prevent clicks to the start/end slots from opening the select.
|
|
44
|
-
* We ensure the target isn't this element in case the select is slotted
|
|
45
|
-
* in, for example, an item. This would prevent the select from ever
|
|
46
|
-
* being opened since the element itself has slot="start"/"end".
|
|
47
|
-
*/
|
|
48
|
-
ev.stopPropagation();
|
|
49
|
-
ev.preventDefault();
|
|
50
|
-
}
|
|
33
|
+
this.setFocus();
|
|
34
|
+
this.open(ev);
|
|
51
35
|
};
|
|
52
36
|
this.onFocus = () => {
|
|
53
37
|
this.ionFocus.emit();
|
|
@@ -481,8 +465,6 @@ export class Select {
|
|
|
481
465
|
style['has-placeholder'] = this.placeholder !== undefined;
|
|
482
466
|
style['has-value'] = this.hasValue();
|
|
483
467
|
style['has-focus'] = this.isExpanded;
|
|
484
|
-
// TODO(FW-3194): remove this
|
|
485
|
-
style['legacy'] = !!this.legacy;
|
|
486
468
|
}
|
|
487
469
|
this.ionStyle.emit(style);
|
|
488
470
|
}
|
|
@@ -550,27 +532,7 @@ export class Select {
|
|
|
550
532
|
const rtl = isRTL(el) ? 'rtl' : 'ltr';
|
|
551
533
|
const inItem = hostContext('ion-item', this.el);
|
|
552
534
|
const shouldRenderHighlight = mode === 'md' && fill !== 'outline' && !inItem;
|
|
553
|
-
const hasValue = this.hasValue();
|
|
554
|
-
const hasStartEndSlots = el.querySelector('[slot="start"], [slot="end"]') !== null;
|
|
555
535
|
renderHiddenInput(true, el, name, parseValue(value), disabled);
|
|
556
|
-
/**
|
|
557
|
-
* If the label is stacked, it should always sit above the select.
|
|
558
|
-
* For floating labels, the label should move above the select if
|
|
559
|
-
* the select has a value, is open, or has anything in either
|
|
560
|
-
* the start or end slot.
|
|
561
|
-
*
|
|
562
|
-
* If there is content in the start slot, the label would overlap
|
|
563
|
-
* it if not forced to float. This is also applied to the end slot
|
|
564
|
-
* because with the default or solid fills, the select is not
|
|
565
|
-
* vertically centered in the container, but the label is. This
|
|
566
|
-
* causes the slots and label to appear vertically offset from each
|
|
567
|
-
* other when the label isn't floating above the input. This doesn't
|
|
568
|
-
* apply to the outline fill, but this was not accounted for to keep
|
|
569
|
-
* things consistent.
|
|
570
|
-
*
|
|
571
|
-
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
572
|
-
*/
|
|
573
|
-
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
|
|
574
536
|
return (h(Host, { onClick: this.onClick, class: createColorClasses(this.color, {
|
|
575
537
|
[mode]: true,
|
|
576
538
|
'in-item': inItem,
|
|
@@ -578,8 +540,7 @@ export class Select {
|
|
|
578
540
|
'select-disabled': disabled,
|
|
579
541
|
'select-expanded': isExpanded,
|
|
580
542
|
'has-expanded-icon': expandedIcon !== undefined,
|
|
581
|
-
'has-value': hasValue,
|
|
582
|
-
'label-floating': labelShouldFloat,
|
|
543
|
+
'has-value': this.hasValue(),
|
|
583
544
|
'has-placeholder': placeholder !== undefined,
|
|
584
545
|
'ion-focusable': true,
|
|
585
546
|
[`select-${rtl}`]: true,
|
|
@@ -587,7 +548,7 @@ export class Select {
|
|
|
587
548
|
[`select-justify-${justify}`]: justifyEnabled,
|
|
588
549
|
[`select-shape-${shape}`]: shape !== undefined,
|
|
589
550
|
[`select-label-placement-${labelPlacement}`]: true,
|
|
590
|
-
}) }, h("label", { class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), h("div", { class: "
|
|
551
|
+
}) }, h("label", { class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), h("div", { class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), !hasFloatingOrStackedLabel && this.renderSelectIcon(), this.renderListbox()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && h("div", { class: "select-highlight" }))));
|
|
591
552
|
}
|
|
592
553
|
// TODO FW-3194 - Remove this
|
|
593
554
|
renderLegacySelect() {
|
|
@@ -776,7 +737,7 @@ Developers can use the "legacy" property to continue using the legacy form marku
|
|
|
776
737
|
"optional": true,
|
|
777
738
|
"docs": {
|
|
778
739
|
"tags": [],
|
|
779
|
-
"text": "
|
|
740
|
+
"text": "A property name or function used to compare object values"
|
|
780
741
|
},
|
|
781
742
|
"attribute": "compare-with",
|
|
782
743
|
"reflect": false
|
|
@@ -1254,6 +1215,17 @@ Developers can use the "legacy" property to continue using the legacy form marku
|
|
|
1254
1215
|
}];
|
|
1255
1216
|
}
|
|
1256
1217
|
}
|
|
1218
|
+
const isOptionSelected = (currentValue, compareValue, compareWith) => {
|
|
1219
|
+
if (currentValue === undefined) {
|
|
1220
|
+
return false;
|
|
1221
|
+
}
|
|
1222
|
+
if (Array.isArray(currentValue)) {
|
|
1223
|
+
return currentValue.some((val) => compareOptions(val, compareValue, compareWith));
|
|
1224
|
+
}
|
|
1225
|
+
else {
|
|
1226
|
+
return compareOptions(currentValue, compareValue, compareWith);
|
|
1227
|
+
}
|
|
1228
|
+
};
|
|
1257
1229
|
const getOptionValue = (el) => {
|
|
1258
1230
|
const value = el.value;
|
|
1259
1231
|
return value === undefined ? el.textContent || '' : value;
|
|
@@ -1267,6 +1239,17 @@ const parseValue = (value) => {
|
|
|
1267
1239
|
}
|
|
1268
1240
|
return value.toString();
|
|
1269
1241
|
};
|
|
1242
|
+
const compareOptions = (currentValue, compareValue, compareWith) => {
|
|
1243
|
+
if (typeof compareWith === 'function') {
|
|
1244
|
+
return compareWith(currentValue, compareValue);
|
|
1245
|
+
}
|
|
1246
|
+
else if (typeof compareWith === 'string') {
|
|
1247
|
+
return currentValue[compareWith] === compareValue[compareWith];
|
|
1248
|
+
}
|
|
1249
|
+
else {
|
|
1250
|
+
return Array.isArray(compareValue) ? compareValue.includes(currentValue) : currentValue === compareValue;
|
|
1251
|
+
}
|
|
1252
|
+
};
|
|
1270
1253
|
const generateText = (opts, value, compareWith) => {
|
|
1271
1254
|
if (value === undefined) {
|
|
1272
1255
|
return '';
|
|
@@ -110,11 +110,6 @@
|
|
|
110
110
|
overflow: hidden;
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
:host(.in-item:not(.legacy-select)) {
|
|
114
|
-
flex: 1 1 0;
|
|
115
|
-
width: 0;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
113
|
:host(.in-item.legacy-select) {
|
|
119
114
|
position: static;
|
|
120
115
|
max-width: 45%;
|
|
@@ -215,12 +210,6 @@ button {
|
|
|
215
210
|
margin-top: 0;
|
|
216
211
|
margin-bottom: 0;
|
|
217
212
|
position: relative;
|
|
218
|
-
/**
|
|
219
|
-
* Prevent the icon from shrinking when the label and/or
|
|
220
|
-
* selected item text is long enough to fill the rest of
|
|
221
|
-
* the container.
|
|
222
|
-
*/
|
|
223
|
-
flex-shrink: 0;
|
|
224
213
|
}
|
|
225
214
|
|
|
226
215
|
/**
|
|
@@ -304,23 +293,6 @@ button {
|
|
|
304
293
|
transition: opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
305
294
|
}
|
|
306
295
|
|
|
307
|
-
.select-wrapper-inner {
|
|
308
|
-
display: flex;
|
|
309
|
-
align-items: center;
|
|
310
|
-
overflow: hidden;
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
:host(.select-label-placement-stacked) .select-wrapper-inner,
|
|
314
|
-
:host(.select-label-placement-floating) .select-wrapper-inner {
|
|
315
|
-
/**
|
|
316
|
-
* When using a stacked/floating label, the inner wrapper is
|
|
317
|
-
* stacked vertically under the label container. This line
|
|
318
|
-
* ensures that the inner wrapper fills all the remaining height
|
|
319
|
-
* of the component.
|
|
320
|
-
*/
|
|
321
|
-
flex-grow: 1;
|
|
322
|
-
}
|
|
323
|
-
|
|
324
296
|
:host(.ion-touched.ion-invalid) {
|
|
325
297
|
--highlight-color: var(--highlight-color-invalid);
|
|
326
298
|
}
|
|
@@ -561,23 +533,11 @@ button {
|
|
|
561
533
|
* The placeholder should be hidden when the label
|
|
562
534
|
* is on top of the select. This prevents the label
|
|
563
535
|
* from overlapping any placeholder value.
|
|
564
|
-
*
|
|
565
|
-
* TODO(FW-5592): Remove :not(.label-floating) piece
|
|
566
536
|
*/
|
|
567
|
-
:host(.select-label-placement-floating
|
|
537
|
+
:host(.select-label-placement-floating) .native-wrapper .select-placeholder {
|
|
568
538
|
opacity: 0;
|
|
569
539
|
}
|
|
570
540
|
|
|
571
|
-
/**
|
|
572
|
-
* We don't use .label-floating here because that would
|
|
573
|
-
* also include the case where the label is floating due
|
|
574
|
-
* to content in the start/end slot. We want the opacity
|
|
575
|
-
* to remain at the default in this case, since the select
|
|
576
|
-
* isn't being actively interacted with.
|
|
577
|
-
*
|
|
578
|
-
* TODO(FW-5592): Change entire selector to:
|
|
579
|
-
* :host(.label-floating.select-label-placement-floating) .native-wrapper .select-placeholder
|
|
580
|
-
*/
|
|
581
541
|
:host(.select-expanded.select-label-placement-floating) .native-wrapper .select-placeholder,
|
|
582
542
|
:host(.ion-focused.select-label-placement-floating) .native-wrapper .select-placeholder,
|
|
583
543
|
:host(.has-value.select-label-placement-floating) .native-wrapper .select-placeholder {
|
|
@@ -587,7 +547,10 @@ button {
|
|
|
587
547
|
/**
|
|
588
548
|
* This makes the label sit above the input.
|
|
589
549
|
*/
|
|
590
|
-
:host(.label-
|
|
550
|
+
:host(.select-label-placement-stacked) .label-text-wrapper,
|
|
551
|
+
:host(.select-expanded.select-label-placement-floating) .label-text-wrapper,
|
|
552
|
+
:host(.ion-focused.select-label-placement-floating) .label-text-wrapper,
|
|
553
|
+
:host(.has-value.select-label-placement-floating) .label-text-wrapper {
|
|
591
554
|
transform: translateY(50%) scale(0.75);
|
|
592
555
|
/**
|
|
593
556
|
* Label text should not extend
|
|
@@ -596,23 +559,6 @@ button {
|
|
|
596
559
|
max-width: calc(100% / 0.75);
|
|
597
560
|
}
|
|
598
561
|
|
|
599
|
-
::slotted([slot=start]), ::slotted([slot=end]) {
|
|
600
|
-
/**
|
|
601
|
-
* Prevent the slots from shrinking when the label and/or
|
|
602
|
-
* selected item text is long enough to fill the rest of
|
|
603
|
-
* the container.
|
|
604
|
-
*/
|
|
605
|
-
flex-shrink: 0;
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
::slotted([slot=start]) {
|
|
609
|
-
margin-inline-end: 16px;
|
|
610
|
-
}
|
|
611
|
-
|
|
612
|
-
::slotted([slot=end]) {
|
|
613
|
-
margin-inline-start: 16px;
|
|
614
|
-
}
|
|
615
|
-
|
|
616
562
|
/**
|
|
617
563
|
* Convert a font size to a dynamic font size.
|
|
618
564
|
* Fonts that participate in Dynamic Type should use
|
|
@@ -790,7 +736,10 @@ button {
|
|
|
790
736
|
}
|
|
791
737
|
}
|
|
792
738
|
|
|
793
|
-
:host(.
|
|
739
|
+
:host(.select-fill-solid.select-label-placement-stacked) .label-text-wrapper,
|
|
740
|
+
:host(.select-expanded.select-fill-solid.select-label-placement-floating) .label-text-wrapper,
|
|
741
|
+
:host(.ion-focused.select-fill-solid.select-label-placement-floating) .label-text-wrapper,
|
|
742
|
+
:host(.has-value.select-fill-solid.select-label-placement-floating) .label-text-wrapper {
|
|
794
743
|
/**
|
|
795
744
|
* Label text should not extend
|
|
796
745
|
* beyond the bounds of the select.
|
|
@@ -924,7 +873,10 @@ button {
|
|
|
924
873
|
/**
|
|
925
874
|
* This makes the label sit above the select.
|
|
926
875
|
*/
|
|
927
|
-
:host(.
|
|
876
|
+
:host(.select-expanded.select-fill-outline.select-label-placement-floating) .label-text-wrapper,
|
|
877
|
+
:host(.ion-focused.select-fill-outline.select-label-placement-floating) .label-text-wrapper,
|
|
878
|
+
:host(.has-value.select-fill-outline.select-label-placement-floating) .label-text-wrapper,
|
|
879
|
+
:host(.select-fill-outline.select-label-placement-stacked) .label-text-wrapper {
|
|
928
880
|
transform: translateY(-32%) scale(0.75);
|
|
929
881
|
margin-left: 0;
|
|
930
882
|
margin-right: 0;
|
|
@@ -1069,7 +1021,10 @@ button {
|
|
|
1069
1021
|
* the floating/stacked label. We simulate this "cut out"
|
|
1070
1022
|
* by removing the top border from the notch fragment.
|
|
1071
1023
|
*/
|
|
1072
|
-
:host(.
|
|
1024
|
+
:host(.select-expanded.select-fill-outline.select-label-placement-floating) .select-outline-notch,
|
|
1025
|
+
:host(.ion-focused.select-fill-outline.select-label-placement-floating) .select-outline-notch,
|
|
1026
|
+
:host(.has-value.select-fill-outline.select-label-placement-floating) .select-outline-notch,
|
|
1027
|
+
:host(.select-fill-outline.select-label-placement-stacked) .select-outline-notch {
|
|
1073
1028
|
border-top: none;
|
|
1074
1029
|
}
|
|
1075
1030
|
|
|
@@ -1234,8 +1189,8 @@ button {
|
|
|
1234
1189
|
--border-radius: 16px;
|
|
1235
1190
|
}
|
|
1236
1191
|
|
|
1237
|
-
:host(.select-label-placement-stacked) .
|
|
1238
|
-
:host(.select-label-placement-floating) .
|
|
1192
|
+
:host(.select-label-placement-stacked) .native-wrapper,
|
|
1193
|
+
:host(.select-label-placement-floating) .native-wrapper {
|
|
1239
1194
|
width: calc(100% - 0.8125rem - 4px);
|
|
1240
1195
|
}
|
|
1241
1196
|
|
|
@@ -121,7 +121,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|
|
121
121
|
});
|
|
122
122
|
test('label should appear on top of the select when the select is expanded', async ({ page }) => {
|
|
123
123
|
await page.setContent(`
|
|
124
|
-
<ion-select class="select-expanded
|
|
124
|
+
<ion-select class="select-expanded" label="Label" label-placement="floating" placeholder="Select a Fruit">
|
|
125
125
|
<ion-select-option value="apples">Apples</ion-select-option>
|
|
126
126
|
</ion-select>
|
|
127
127
|
`, config);
|
|
@@ -27,7 +27,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
|
27
27
|
await page.setContent(`
|
|
28
28
|
<ion-item>
|
|
29
29
|
<ion-label>Really long label should not wrap</ion-label>
|
|
30
|
-
<ion-select value="wrap"
|
|
30
|
+
<ion-select value="wrap" class="ion-text-wrap">
|
|
31
31
|
<ion-select-option value="wrap">Should wrap value only when label exists and really long text exists to make it wrap the text</ion-select-option>
|
|
32
32
|
</ion-select>
|
|
33
33
|
</ion-item>
|
|
@@ -9,18 +9,6 @@ export class SkeletonText {
|
|
|
9
9
|
constructor() {
|
|
10
10
|
this.animated = false;
|
|
11
11
|
}
|
|
12
|
-
componentWillLoad() {
|
|
13
|
-
this.emitStyle();
|
|
14
|
-
}
|
|
15
|
-
emitStyle() {
|
|
16
|
-
// The emitted property is used by item in order
|
|
17
|
-
// to add the item-skeleton-text class which applies
|
|
18
|
-
// overflow: hidden to its label
|
|
19
|
-
const style = {
|
|
20
|
-
'skeleton-text': true,
|
|
21
|
-
};
|
|
22
|
-
this.ionStyle.emit(style);
|
|
23
|
-
}
|
|
24
12
|
render() {
|
|
25
13
|
const animated = this.animated && config.getBoolean('animated', true);
|
|
26
14
|
const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
|
|
@@ -65,32 +53,5 @@ export class SkeletonText {
|
|
|
65
53
|
}
|
|
66
54
|
};
|
|
67
55
|
}
|
|
68
|
-
static get events() {
|
|
69
|
-
return [{
|
|
70
|
-
"method": "ionStyle",
|
|
71
|
-
"name": "ionStyle",
|
|
72
|
-
"bubbles": true,
|
|
73
|
-
"cancelable": true,
|
|
74
|
-
"composed": true,
|
|
75
|
-
"docs": {
|
|
76
|
-
"tags": [{
|
|
77
|
-
"name": "internal",
|
|
78
|
-
"text": undefined
|
|
79
|
-
}],
|
|
80
|
-
"text": "Emitted when the styles change."
|
|
81
|
-
},
|
|
82
|
-
"complexType": {
|
|
83
|
-
"original": "StyleEventDetail",
|
|
84
|
-
"resolved": "StyleEventDetail",
|
|
85
|
-
"references": {
|
|
86
|
-
"StyleEventDetail": {
|
|
87
|
-
"location": "import",
|
|
88
|
-
"path": "../../interface",
|
|
89
|
-
"id": "src/interface.d.ts::StyleEventDetail"
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}];
|
|
94
|
-
}
|
|
95
56
|
static get elementRef() { return "el"; }
|
|
96
57
|
}
|