@ionic/core 8.4.2-dev.11739468652.1ae78967 → 8.4.2-dev.11741080979.1715cc06
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/backdrop.js +1 -1
- package/components/focus-visible.js +16 -1
- package/components/helpers.js +39 -1
- package/components/ion-app.js +9 -4
- package/components/ion-avatar.js +3 -3
- package/components/ion-badge.js +9 -6
- package/components/ion-searchbar.js +21 -5
- package/components/ion-textarea.js +6 -5
- package/css/ionic/bundle.ionic.css +1 -1
- package/css/ionic/bundle.ionic.css.map +1 -1
- package/css/ionic/core.ionic.css.map +1 -1
- package/css/ionic/global.bundle.ionic.css +1 -1
- package/css/ionic/global.bundle.ionic.css.map +1 -1
- package/css/ionic/link.ionic.css +1 -1
- package/css/ionic/link.ionic.css.map +1 -1
- package/css/ionic/typography.ionic.css.map +1 -1
- package/css/ionic/utils.bundle.ionic.css +1 -1
- package/css/ionic/utils.bundle.ionic.css.map +1 -1
- package/dist/cjs/{animation-58015a44.js → animation-2a0332b1.js} +1 -1
- package/dist/cjs/{app-globals-d64148d3.js → app-globals-4578d70b.js} +1 -1
- package/dist/cjs/{button-active-ec1fd1d8.js → button-active-ba88bc3f.js} +1 -1
- package/dist/cjs/{capacitor-454dd071.js → capacitor-ca383c28.js} +1 -1
- package/dist/cjs/{data-5a4013f1.js → data-03effdb6.js} +1 -1
- package/dist/cjs/{focus-visible-9aa87fa3.js → focus-visible-fe3acfb5.js} +16 -0
- package/dist/cjs/{framework-delegate-32f1a0e4.js → framework-delegate-709f0e46.js} +1 -1
- package/dist/cjs/{haptic-7c25be74.js → haptic-adbf56c4.js} +1 -1
- package/dist/cjs/{helpers-4e2936d2.js → helpers-7ae114be.js} +39 -1
- package/dist/cjs/{index-03fbee1d.js → index-334da068.js} +3 -3
- package/dist/cjs/{index-0e0c6196.js → index-a05f157b.js} +3 -2
- package/dist/cjs/{index-604c36ae.js → index-b980fd83.js} +2 -2
- package/dist/cjs/{index-8f975cf4.js → index-e28c2cc7.js} +4 -4
- package/dist/cjs/index.cjs.js +10 -9
- package/dist/cjs/{input-shims-4b4d2251.js → input-shims-41e05551.js} +6 -5
- package/dist/cjs/{input.utils-fb1debe4.js → input.utils-01401fa8.js} +2 -2
- package/dist/cjs/ion-accordion_2.cjs.entry.js +3 -2
- package/dist/cjs/ion-action-sheet.cjs.entry.js +9 -8
- package/dist/cjs/ion-alert.cjs.entry.js +9 -8
- package/dist/cjs/ion-app_8.cjs.entry.js +18 -13
- package/dist/cjs/ion-avatar_3.cjs.entry.js +11 -9
- package/dist/cjs/ion-back-button.cjs.entry.js +3 -2
- package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +3 -2
- package/dist/cjs/ion-button_2.cjs.entry.js +3 -2
- package/dist/cjs/ion-card_5.cjs.entry.js +3 -2
- package/dist/cjs/ion-checkbox.cjs.entry.js +3 -2
- package/dist/cjs/ion-chip.cjs.entry.js +1 -1
- package/dist/cjs/ion-col_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-datetime-button.cjs.entry.js +4 -3
- package/dist/cjs/ion-datetime_3.cjs.entry.js +9 -9
- package/dist/cjs/ion-fab_3.cjs.entry.js +3 -2
- package/dist/cjs/ion-img.cjs.entry.js +3 -2
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +4 -3
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +1 -1
- package/dist/cjs/ion-input.cjs.entry.js +5 -4
- package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -3
- package/dist/cjs/ion-item_8.cjs.entry.js +3 -2
- package/dist/cjs/ion-loading.cjs.entry.js +6 -5
- package/dist/cjs/ion-menu_3.cjs.entry.js +7 -6
- package/dist/cjs/ion-modal.cjs.entry.js +11 -10
- package/dist/cjs/ion-nav_2.cjs.entry.js +6 -5
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +3 -2
- package/dist/cjs/ion-picker-column.cjs.entry.js +5 -4
- package/dist/cjs/ion-picker.cjs.entry.js +2 -1
- package/dist/cjs/ion-popover.cjs.entry.js +7 -6
- package/dist/cjs/ion-progress-bar.cjs.entry.js +3 -2
- package/dist/cjs/ion-radio_2.cjs.entry.js +3 -2
- package/dist/cjs/ion-range.cjs.entry.js +4 -3
- package/dist/cjs/ion-refresher_2.cjs.entry.js +7 -6
- package/dist/cjs/ion-reorder_2.cjs.entry.js +6 -5
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
- package/dist/cjs/ion-route_4.cjs.entry.js +3 -2
- package/dist/cjs/ion-searchbar.cjs.entry.js +23 -7
- package/dist/cjs/ion-segment_2.cjs.entry.js +3 -2
- package/dist/cjs/ion-select-modal.cjs.entry.js +5 -4
- package/dist/cjs/ion-select_3.cjs.entry.js +6 -5
- package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
- package/dist/cjs/ion-split-pane.cjs.entry.js +1 -1
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +6 -5
- package/dist/cjs/ion-tab_2.cjs.entry.js +3 -2
- package/dist/cjs/ion-text.cjs.entry.js +1 -1
- package/dist/cjs/ion-textarea.cjs.entry.js +11 -9
- package/dist/cjs/ion-toast.cjs.entry.js +6 -5
- package/dist/cjs/ion-toggle.cjs.entry.js +5 -4
- package/dist/cjs/{ionic-global-14af9c21.js → ionic-global-309eea24.js} +5 -5
- package/dist/cjs/ionic.cjs.js +3 -3
- package/dist/cjs/{ios.transition-2bb0f7d5.js → ios.transition-433559be.js} +5 -4
- package/dist/cjs/{keyboard-0a5d46dd.js → keyboard-2465fd71.js} +3 -3
- package/dist/cjs/{keyboard-53c12a15.js → keyboard-b0d97d7f.js} +1 -1
- package/dist/cjs/{keyboard-controller-102bad3e.js → keyboard-controller-97c0f679.js} +2 -2
- package/dist/cjs/loader.cjs.js +3 -3
- package/dist/cjs/{md.transition-cf600117.js → md.transition-cb55340c.js} +5 -4
- package/dist/cjs/{notch-controller-ea70e230.js → notch-controller-fa2844a9.js} +2 -2
- package/dist/cjs/{overlays-542a90b3.js → overlays-2f1007d0.js} +3 -3
- package/dist/cjs/{status-tap-aa97d209.js → status-tap-fce5d44e.js} +4 -3
- package/dist/cjs/{swipe-back-27975274.js → swipe-back-8b3f8972.js} +2 -1
- package/dist/collection/components/app/app.js +14 -6
- package/dist/collection/components/avatar/avatar.ionic.css +17 -0
- package/dist/collection/components/avatar/avatar.ios.css +1 -0
- package/dist/collection/components/avatar/avatar.md.css +9 -0
- package/dist/collection/components/backdrop/backdrop.ionic.css +0 -1
- package/dist/collection/components/badge/badge.ionic.css +66 -2
- package/dist/collection/components/badge/badge.ios.css +23 -2
- package/dist/collection/components/badge/badge.js +21 -2
- package/dist/collection/components/badge/badge.md.css +23 -2
- package/dist/collection/components/searchbar/searchbar.ionic.css +12 -0
- package/dist/collection/components/searchbar/searchbar.js +36 -4
- package/dist/collection/components/textarea/textarea.ionic.css +25 -2
- package/dist/collection/components/textarea/textarea.js +5 -4
- package/dist/collection/utils/focus-visible.js +15 -0
- package/dist/collection/utils/helpers.js +39 -1
- package/dist/docs.json +71 -4
- package/dist/esm/{animation-f1a88600.js → animation-9425a7de.js} +1 -1
- package/dist/esm/{app-globals-eceadabb.js → app-globals-e7b9ec58.js} +1 -1
- package/dist/esm/{button-active-321f0dba.js → button-active-3461e57c.js} +1 -1
- package/dist/esm/{capacitor-6b0341c8.js → capacitor-74587d3c.js} +1 -1
- package/dist/esm/{data-98c06dea.js → data-69fcc43c.js} +1 -1
- package/dist/esm/{focus-visible-501aff19.js → focus-visible-6827442c.js} +16 -1
- package/dist/esm/{framework-delegate-3e4a8c9f.js → framework-delegate-89969cd9.js} +1 -1
- package/dist/esm/{haptic-dd6c0ea9.js → haptic-1f990858.js} +1 -1
- package/dist/esm/{helpers-f08d15bd.js → helpers-2891ef8a.js} +39 -1
- package/dist/esm/{index-59f81cb8.js → index-01a5c404.js} +4 -4
- package/dist/esm/{index-31109e63.js → index-3e251942.js} +3 -3
- package/dist/esm/{index-7bd160c2.js → index-784203dc.js} +2 -2
- package/dist/esm/{index-62b4a18b.js → index-7d582503.js} +3 -2
- package/dist/esm/index.js +10 -9
- package/dist/esm/{input-shims-6be83e59.js → input-shims-eb19958d.js} +6 -5
- package/dist/esm/{input.utils-67459bae.js → input.utils-021846b8.js} +2 -2
- package/dist/esm/ion-accordion_2.entry.js +3 -2
- package/dist/esm/ion-action-sheet.entry.js +9 -8
- package/dist/esm/ion-alert.entry.js +9 -8
- package/dist/esm/ion-app_8.entry.js +18 -13
- package/dist/esm/ion-avatar_3.entry.js +11 -9
- package/dist/esm/ion-back-button.entry.js +3 -2
- package/dist/esm/ion-backdrop.entry.js +2 -2
- package/dist/esm/ion-breadcrumb_2.entry.js +3 -2
- package/dist/esm/ion-button_2.entry.js +3 -2
- package/dist/esm/ion-card_5.entry.js +3 -2
- package/dist/esm/ion-checkbox.entry.js +3 -2
- package/dist/esm/ion-chip.entry.js +1 -1
- package/dist/esm/ion-col_3.entry.js +1 -1
- package/dist/esm/ion-datetime-button.entry.js +4 -3
- package/dist/esm/ion-datetime_3.entry.js +9 -9
- package/dist/esm/ion-fab_3.entry.js +3 -2
- package/dist/esm/ion-img.entry.js +3 -2
- package/dist/esm/ion-infinite-scroll_2.entry.js +4 -3
- package/dist/esm/ion-input-password-toggle.entry.js +1 -1
- package/dist/esm/ion-input.entry.js +5 -4
- package/dist/esm/ion-item-option_3.entry.js +4 -3
- package/dist/esm/ion-item_8.entry.js +3 -2
- package/dist/esm/ion-loading.entry.js +6 -5
- package/dist/esm/ion-menu_3.entry.js +7 -6
- package/dist/esm/ion-modal.entry.js +11 -10
- package/dist/esm/ion-nav_2.entry.js +6 -5
- package/dist/esm/ion-picker-column-option.entry.js +3 -2
- package/dist/esm/ion-picker-column.entry.js +5 -4
- package/dist/esm/ion-picker.entry.js +2 -1
- package/dist/esm/ion-popover.entry.js +7 -6
- package/dist/esm/ion-progress-bar.entry.js +3 -2
- package/dist/esm/ion-radio_2.entry.js +3 -2
- package/dist/esm/ion-range.entry.js +4 -3
- package/dist/esm/ion-refresher_2.entry.js +7 -6
- package/dist/esm/ion-reorder_2.entry.js +6 -5
- package/dist/esm/ion-ripple-effect.entry.js +1 -1
- package/dist/esm/ion-route_4.entry.js +3 -2
- package/dist/esm/ion-searchbar.entry.js +23 -7
- package/dist/esm/ion-segment_2.entry.js +3 -2
- package/dist/esm/ion-select-modal.entry.js +5 -4
- package/dist/esm/ion-select_3.entry.js +6 -5
- package/dist/esm/ion-spinner.entry.js +1 -1
- package/dist/esm/ion-split-pane.entry.js +1 -1
- package/dist/esm/ion-tab-bar_2.entry.js +6 -5
- package/dist/esm/ion-tab_2.entry.js +3 -2
- package/dist/esm/ion-text.entry.js +1 -1
- package/dist/esm/ion-textarea.entry.js +11 -9
- package/dist/esm/ion-toast.entry.js +6 -5
- package/dist/esm/ion-toggle.entry.js +5 -4
- package/dist/esm/{ionic-global-3c97a4aa.js → ionic-global-483790dd.js} +5 -5
- package/dist/esm/ionic.js +3 -3
- package/dist/esm/{ios.transition-06b78ea0.js → ios.transition-9da97621.js} +5 -4
- package/dist/esm/{keyboard-9bbd546a.js → keyboard-16dbc7a0.js} +1 -1
- package/dist/esm/{keyboard-5b1b354d.js → keyboard-a762a3d6.js} +3 -3
- package/dist/esm/{keyboard-controller-aff395fd.js → keyboard-controller-ebc0c1a6.js} +2 -2
- package/dist/esm/loader.js +3 -3
- package/dist/esm/{md.transition-e5712bda.js → md.transition-9d6d778a.js} +5 -4
- package/dist/esm/{notch-controller-c0bd22ff.js → notch-controller-ab0c0e81.js} +2 -2
- package/dist/esm/{overlays-66cb5522.js → overlays-e1400470.js} +3 -3
- package/dist/esm/{status-tap-edf9f395.js → status-tap-e7f5aa77.js} +4 -3
- package/dist/esm/{swipe-back-17c42610.js → swipe-back-e12c482f.js} +2 -1
- package/dist/esm-es5/{animation-f1a88600.js → animation-9425a7de.js} +1 -1
- package/dist/esm-es5/app-globals-e7b9ec58.js +4 -0
- package/dist/esm-es5/{button-active-321f0dba.js → button-active-3461e57c.js} +1 -1
- package/dist/esm-es5/{capacitor-6b0341c8.js → capacitor-74587d3c.js} +1 -1
- package/dist/esm-es5/{data-98c06dea.js → data-69fcc43c.js} +1 -1
- package/dist/esm-es5/focus-visible-6827442c.js +4 -0
- package/dist/esm-es5/{framework-delegate-3e4a8c9f.js → framework-delegate-89969cd9.js} +1 -1
- package/dist/esm-es5/{haptic-dd6c0ea9.js → haptic-1f990858.js} +1 -1
- package/dist/esm-es5/helpers-2891ef8a.js +4 -0
- package/dist/esm-es5/{index-59f81cb8.js → index-01a5c404.js} +1 -1
- package/dist/esm-es5/{index-31109e63.js → index-3e251942.js} +1 -1
- package/dist/esm-es5/{index-7bd160c2.js → index-784203dc.js} +1 -1
- package/dist/esm-es5/index-7d582503.js +4 -0
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/input-shims-eb19958d.js +4 -0
- package/dist/esm-es5/{input.utils-67459bae.js → input.utils-021846b8.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-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-password-toggle.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-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-modal.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-3c97a4aa.js → ionic-global-483790dd.js} +1 -1
- package/dist/esm-es5/ionic.js +1 -1
- package/dist/esm-es5/ios.transition-9da97621.js +4 -0
- package/dist/esm-es5/{keyboard-9bbd546a.js → keyboard-16dbc7a0.js} +1 -1
- package/dist/esm-es5/{keyboard-5b1b354d.js → keyboard-a762a3d6.js} +1 -1
- package/dist/esm-es5/{keyboard-controller-aff395fd.js → keyboard-controller-ebc0c1a6.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/md.transition-9d6d778a.js +4 -0
- package/dist/esm-es5/{notch-controller-c0bd22ff.js → notch-controller-ab0c0e81.js} +1 -1
- package/dist/esm-es5/{overlays-66cb5522.js → overlays-e1400470.js} +1 -1
- package/dist/esm-es5/status-tap-e7f5aa77.js +4 -0
- package/dist/esm-es5/swipe-back-e12c482f.js +4 -0
- package/dist/html.html-data.json +27 -0
- 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-01b359c9.entry.js +4 -0
- package/dist/ionic/{p-11266916.js → p-035fb5a0.js} +1 -1
- package/dist/ionic/{p-815f649a.system.entry.js → p-0390f622.system.entry.js} +1 -1
- package/dist/ionic/p-03df1462.entry.js +4 -0
- package/dist/ionic/p-05b69c23.system.entry.js +4 -0
- package/dist/ionic/p-063fb017.system.entry.js +4 -0
- package/dist/ionic/p-08174a05.system.entry.js +4 -0
- package/dist/ionic/p-086cdee7.entry.js +4 -0
- package/dist/ionic/p-0986712d.system.entry.js +4 -0
- package/dist/ionic/p-0c579259.system.entry.js +4 -0
- package/dist/ionic/{p-94816e7a.system.js → p-10c4f43c.system.js} +1 -1
- package/dist/ionic/p-128c9da8.entry.js +4 -0
- package/dist/ionic/p-1581ba44.js +4 -0
- package/dist/ionic/{p-3ce95a91.entry.js → p-1d15aa94.entry.js} +1 -1
- package/dist/ionic/{p-46787abb.system.js → p-1fd5c378.system.js} +1 -1
- package/dist/ionic/p-200b21b9.system.entry.js +4 -0
- package/dist/ionic/{p-72cbf799.system.entry.js → p-215c5ddb.system.entry.js} +1 -1
- package/dist/ionic/p-2364fade.entry.js +4 -0
- package/dist/ionic/{p-18f86177.system.js → p-268b6353.system.js} +1 -1
- package/dist/ionic/{p-be87ec25.entry.js → p-2779ce56.entry.js} +1 -1
- package/dist/ionic/p-284a0c63.entry.js +4 -0
- package/dist/ionic/p-297fcc18.system.entry.js +4 -0
- package/dist/ionic/p-29bc5069.entry.js +4 -0
- package/dist/ionic/{p-09c6b5e4.js → p-2ca20c1c.js} +1 -1
- package/dist/ionic/p-2ce11d2f.entry.js +4 -0
- package/dist/ionic/{p-12d6df53.js → p-2d9e2af4.js} +1 -1
- package/dist/ionic/p-309ddef5.system.js +4 -0
- package/dist/ionic/p-3198161b.entry.js +4 -0
- package/dist/ionic/p-31e267ab.entry.js +4 -0
- package/dist/ionic/p-343906be.entry.js +4 -0
- package/dist/ionic/p-38700ea8.entry.js +4 -0
- package/dist/ionic/p-3ca5d573.system.entry.js +4 -0
- package/dist/ionic/{p-29ca4da2.entry.js → p-402ffd31.entry.js} +1 -1
- package/dist/ionic/p-42f8e688.entry.js +4 -0
- package/dist/ionic/p-43902855.entry.js +4 -0
- package/dist/ionic/{p-b9d2d554.entry.js → p-453bd903.entry.js} +1 -1
- package/dist/ionic/p-45d8fe77.system.js +4 -0
- package/dist/ionic/p-478723ce.entry.js +4 -0
- package/dist/ionic/p-47acf6b1.system.entry.js +4 -0
- package/dist/ionic/p-49f0023f.entry.js +4 -0
- package/dist/ionic/p-4bccba08.js +4 -0
- package/dist/ionic/p-4c0b6220.system.entry.js +4 -0
- package/dist/ionic/p-4cbe0257.js +4 -0
- package/dist/ionic/p-5345fc46.entry.js +4 -0
- package/dist/ionic/p-537407c2.system.js +4 -0
- package/dist/ionic/{p-728f5b22.system.js → p-54030163.system.js} +1 -1
- package/dist/ionic/p-583f0c5f.js +4 -0
- package/dist/ionic/p-59f088ef.js +4 -0
- package/dist/ionic/p-5b4aaa87.js +4 -0
- package/dist/ionic/p-5dd7815f.system.entry.js +4 -0
- package/dist/ionic/{p-f8c63ac0.system.js → p-5f413457.system.js} +2 -2
- package/dist/ionic/p-5fead11d.system.entry.js +4 -0
- package/dist/ionic/p-60f547a8.entry.js +4 -0
- package/dist/ionic/p-6453d7e2.js +4 -0
- package/dist/ionic/p-648eac1a.system.entry.js +4 -0
- package/dist/ionic/p-695c2cbd.entry.js +4 -0
- package/dist/ionic/p-6b5c8c61.system.js +4 -0
- package/dist/ionic/{p-74d76684.js → p-6d80bd6d.js} +1 -1
- package/dist/ionic/{p-3e91ea3a.system.js → p-6e26cf64.system.js} +2 -2
- package/dist/ionic/p-71523065.entry.js +4 -0
- package/dist/ionic/p-75d056d0.system.entry.js +4 -0
- package/dist/ionic/p-77d57dc2.system.entry.js +4 -0
- package/dist/ionic/p-7917710f.system.entry.js +4 -0
- package/dist/ionic/p-795787f2.entry.js +4 -0
- package/dist/ionic/p-7a81f98e.entry.js +4 -0
- package/dist/ionic/p-7bc994fd.js +4 -0
- package/dist/ionic/p-7cfe6f4a.entry.js +4 -0
- package/dist/ionic/{p-cea92c46.system.js → p-7f143abf.system.js} +1 -1
- package/dist/ionic/{p-dbd39afd.system.js → p-7fd5a3d3.system.js} +1 -1
- package/dist/ionic/p-836fb660.entry.js +4 -0
- package/dist/ionic/p-83cb6a20.system.entry.js +4 -0
- package/dist/ionic/p-86521979.system.entry.js +4 -0
- package/dist/ionic/p-87281fc9.system.js +4 -0
- package/dist/ionic/{p-4c275462.js → p-872be13b.js} +1 -1
- package/dist/ionic/p-886ff0f8.system.entry.js +4 -0
- package/dist/ionic/p-89ad4473.js +4 -0
- package/dist/ionic/{p-697eee8c.system.entry.js → p-8a8e843c.system.entry.js} +1 -1
- package/dist/ionic/p-910e6371.entry.js +4 -0
- package/dist/ionic/p-9355dcb4.system.entry.js +4 -0
- package/dist/ionic/{p-3d61263b.system.entry.js → p-9685fe95.system.entry.js} +1 -1
- package/dist/ionic/{p-58aa8a36.system.js → p-97c801b9.system.js} +1 -1
- package/dist/ionic/{p-f25ad420.system.entry.js → p-97cc477f.system.entry.js} +1 -1
- package/dist/ionic/p-986dd0b7.entry.js +4 -0
- package/dist/ionic/p-99227d83.system.entry.js +4 -0
- package/dist/ionic/{p-86d98446.system.entry.js → p-99d106bd.system.entry.js} +1 -1
- package/dist/ionic/p-9a7c6bf9.system.js +4 -0
- package/dist/ionic/p-9cd19610.system.entry.js +4 -0
- package/dist/ionic/p-9f9a666d.system.js +4 -0
- package/dist/ionic/p-a0879901.system.js +4 -0
- package/dist/ionic/p-a09bf565.entry.js +4 -0
- package/dist/ionic/{p-a1cdc742.js → p-a5a91cba.js} +1 -1
- package/dist/ionic/p-a66016cd.system.entry.js +4 -0
- package/dist/ionic/p-a6ad7cc9.entry.js +4 -0
- package/dist/ionic/{p-93e47936.js → p-a6e62d2b.js} +1 -1
- package/dist/ionic/p-a78181cc.system.entry.js +4 -0
- package/dist/ionic/p-a7e1bd93.entry.js +4 -0
- package/dist/ionic/p-aaacc929.system.entry.js +4 -0
- package/dist/ionic/p-ac558084.entry.js +4 -0
- package/dist/ionic/{p-47fd935c.system.js → p-ae21baa6.system.js} +2 -2
- package/dist/ionic/p-af321c18.entry.js +4 -0
- package/dist/ionic/p-af69da90.entry.js +4 -0
- package/dist/ionic/p-b13db3c9.system.entry.js +4 -0
- package/dist/ionic/p-b1914bba.system.entry.js +4 -0
- package/dist/ionic/{p-a510e9c0.js → p-b1a9e1ce.js} +1 -1
- package/dist/ionic/{p-f116fb3f.system.js → p-b30830bd.system.js} +1 -1
- package/dist/ionic/{p-1efa63f2.js → p-b447afc8.js} +1 -1
- package/dist/ionic/{p-ac1c2b6a.js → p-b45244a2.js} +1 -1
- package/dist/ionic/{p-63fde7fe.entry.js → p-b4b60b97.entry.js} +1 -1
- package/dist/ionic/p-b5348f8f.system.js +4 -0
- package/dist/ionic/p-b6f00169.system.entry.js +4 -0
- package/dist/ionic/p-b6f44863.system.js +4 -0
- package/dist/ionic/p-b812ce8d.entry.js +4 -0
- package/dist/ionic/{p-62887754.system.js → p-b892d7e3.system.js} +1 -1
- package/dist/ionic/{p-a2814291.system.js → p-bbc9d5aa.system.js} +1 -1
- package/dist/ionic/p-bcb255e3.system.entry.js +4 -0
- package/dist/ionic/p-bea37cc1.system.entry.js +4 -0
- package/dist/ionic/p-c0a8a8b6.system.entry.js +4 -0
- package/dist/ionic/{p-9ed87d1b.js → p-c1c637d2.js} +1 -1
- package/dist/ionic/p-c48a6425.system.entry.js +4 -0
- package/dist/ionic/{p-8463212e.js → p-c4cf7721.js} +1 -1
- package/dist/ionic/p-c7aa652c.entry.js +4 -0
- package/dist/ionic/{p-f193945e.system.js → p-cdbb6875.system.js} +1 -1
- package/dist/ionic/p-d49da56a.system.entry.js +4 -0
- package/dist/ionic/{p-a538ab98.js → p-d61bbbec.js} +1 -1
- package/dist/ionic/p-d683e61f.system.entry.js +4 -0
- package/dist/ionic/p-d7e43c62.system.entry.js +4 -0
- package/dist/ionic/{p-84667060.entry.js → p-d8005cef.entry.js} +1 -1
- package/dist/ionic/{p-18892506.entry.js → p-d854fb32.entry.js} +1 -1
- package/dist/ionic/{p-986855d6.js → p-d91c085a.js} +1 -1
- package/dist/ionic/{p-5684893b.system.entry.js → p-da89b9bd.system.entry.js} +2 -2
- package/dist/ionic/p-dbb23cfa.entry.js +4 -0
- package/dist/ionic/p-dcbbd7bb.entry.js +4 -0
- package/dist/ionic/p-e5bffd6f.system.entry.js +4 -0
- package/dist/ionic/p-e6430e45.entry.js +4 -0
- package/dist/ionic/{p-556778bd.system.js → p-e832ef1e.system.js} +1 -1
- package/dist/ionic/{p-4626fb32.system.js → p-e97ceed8.system.js} +1 -1
- package/dist/ionic/p-e9c36e22.system.entry.js +4 -0
- package/dist/ionic/p-ece9123f.entry.js +4 -0
- package/dist/ionic/{p-822e47a9.system.js → p-efa05ed2.system.js} +1 -1
- package/dist/ionic/{p-5a6d245d.system.entry.js → p-f2b7dad7.system.entry.js} +1 -1
- package/dist/ionic/p-f2f33ab4.system.entry.js +4 -0
- package/dist/ionic/p-f3508be6.js +4 -0
- package/dist/ionic/{p-fad81132.system.entry.js → p-f3d7cf9a.system.entry.js} +1 -1
- package/dist/ionic/p-f52959de.js +4 -0
- package/dist/ionic/p-fa34bf0c.system.entry.js +4 -0
- package/dist/ionic/p-fa5a0d2e.system.entry.js +4 -0
- package/dist/ionic/p-fa5dc348.entry.js +4 -0
- package/dist/ionic/p-fac055ef.entry.js +4 -0
- package/dist/ionic/p-fb559858.entry.js +4 -0
- package/dist/ionic/p-fe76a062.entry.js +4 -0
- package/dist/types/components/app/app.d.ts +2 -0
- package/dist/types/components/badge/badge.d.ts +5 -0
- package/dist/types/components/searchbar/searchbar.d.ts +8 -0
- package/dist/types/components.d.ts +17 -0
- package/dist/types/utils/focus-visible.d.ts +12 -0
- package/dist/types/utils/helpers.d.ts +11 -0
- package/hydrate/index.js +179 -102
- package/hydrate/index.mjs +179 -102
- package/package.json +2 -2
- package/dist/esm-es5/app-globals-eceadabb.js +0 -4
- package/dist/esm-es5/focus-visible-501aff19.js +0 -4
- package/dist/esm-es5/helpers-f08d15bd.js +0 -4
- package/dist/esm-es5/index-62b4a18b.js +0 -4
- package/dist/esm-es5/input-shims-6be83e59.js +0 -4
- package/dist/esm-es5/ios.transition-06b78ea0.js +0 -4
- package/dist/esm-es5/md.transition-e5712bda.js +0 -4
- package/dist/esm-es5/status-tap-edf9f395.js +0 -4
- package/dist/esm-es5/swipe-back-17c42610.js +0 -4
- package/dist/ionic/p-01451762.entry.js +0 -4
- package/dist/ionic/p-038a6294.js +0 -4
- package/dist/ionic/p-06f2f110.system.entry.js +0 -4
- package/dist/ionic/p-09125f4f.entry.js +0 -4
- package/dist/ionic/p-096e5f6d.system.entry.js +0 -4
- package/dist/ionic/p-0a0ce78f.system.entry.js +0 -4
- package/dist/ionic/p-0db90e9b.entry.js +0 -4
- package/dist/ionic/p-101ccd60.system.entry.js +0 -4
- package/dist/ionic/p-112120d7.system.js +0 -4
- package/dist/ionic/p-12337305.system.entry.js +0 -4
- package/dist/ionic/p-156d17cd.js +0 -4
- package/dist/ionic/p-18bbe9a5.entry.js +0 -4
- package/dist/ionic/p-18c930a5.system.entry.js +0 -4
- package/dist/ionic/p-1abd1c99.entry.js +0 -4
- package/dist/ionic/p-1cf1141c.system.entry.js +0 -4
- package/dist/ionic/p-1dd2b0af.entry.js +0 -4
- package/dist/ionic/p-1eeb9796.entry.js +0 -4
- package/dist/ionic/p-23b31425.entry.js +0 -4
- package/dist/ionic/p-24f15ce4.system.entry.js +0 -4
- package/dist/ionic/p-25cc2477.entry.js +0 -4
- package/dist/ionic/p-2e35a770.system.js +0 -4
- package/dist/ionic/p-2ef115ec.system.entry.js +0 -4
- package/dist/ionic/p-330e703e.entry.js +0 -4
- package/dist/ionic/p-33dc4514.js +0 -4
- package/dist/ionic/p-346c67b0.js +0 -4
- package/dist/ionic/p-3583dd40.system.entry.js +0 -4
- package/dist/ionic/p-398b00a5.system.entry.js +0 -4
- package/dist/ionic/p-3b7adbc3.system.entry.js +0 -4
- package/dist/ionic/p-41c19986.system.js +0 -4
- package/dist/ionic/p-41f06734.entry.js +0 -4
- package/dist/ionic/p-4219582c.system.js +0 -4
- package/dist/ionic/p-4385e3fb.system.entry.js +0 -4
- package/dist/ionic/p-4a39ba11.entry.js +0 -4
- package/dist/ionic/p-4a6d4288.entry.js +0 -4
- package/dist/ionic/p-4a869870.entry.js +0 -4
- package/dist/ionic/p-4ac4f52a.system.entry.js +0 -4
- package/dist/ionic/p-4c9e1b2c.js +0 -4
- package/dist/ionic/p-51371e21.system.js +0 -4
- package/dist/ionic/p-530c591a.entry.js +0 -4
- package/dist/ionic/p-5377db51.system.entry.js +0 -4
- package/dist/ionic/p-55546d77.system.entry.js +0 -4
- package/dist/ionic/p-57de8d54.system.entry.js +0 -4
- package/dist/ionic/p-58c64779.system.entry.js +0 -4
- package/dist/ionic/p-5a6b3c0d.entry.js +0 -4
- package/dist/ionic/p-5ce35a03.js +0 -4
- package/dist/ionic/p-5eb8561f.system.entry.js +0 -4
- package/dist/ionic/p-5ff5d2bb.entry.js +0 -4
- package/dist/ionic/p-60c310ae.system.entry.js +0 -4
- package/dist/ionic/p-60d21ee9.system.entry.js +0 -4
- package/dist/ionic/p-61f85a49.system.entry.js +0 -4
- package/dist/ionic/p-623fcccc.entry.js +0 -4
- package/dist/ionic/p-6433742e.system.entry.js +0 -4
- package/dist/ionic/p-67b6e18d.entry.js +0 -4
- package/dist/ionic/p-6bc2795b.entry.js +0 -4
- package/dist/ionic/p-6caa76ec.js +0 -4
- package/dist/ionic/p-6cbca6c5.system.entry.js +0 -4
- package/dist/ionic/p-6dc32e8b.entry.js +0 -4
- package/dist/ionic/p-6e53290f.system.entry.js +0 -4
- package/dist/ionic/p-7607d8ba.system.entry.js +0 -4
- package/dist/ionic/p-78ed8923.js +0 -4
- package/dist/ionic/p-7a858bae.system.js +0 -4
- package/dist/ionic/p-7d36cf9f.system.entry.js +0 -4
- package/dist/ionic/p-81b72701.entry.js +0 -4
- package/dist/ionic/p-82cb4235.js +0 -4
- package/dist/ionic/p-857ba8d4.entry.js +0 -4
- package/dist/ionic/p-86e9a917.system.entry.js +0 -4
- package/dist/ionic/p-871f4046.entry.js +0 -4
- package/dist/ionic/p-8956f9a8.system.entry.js +0 -4
- package/dist/ionic/p-8a5c53fa.entry.js +0 -4
- package/dist/ionic/p-8b0f0a87.entry.js +0 -4
- package/dist/ionic/p-8dbfae64.entry.js +0 -4
- package/dist/ionic/p-903c544a.js +0 -4
- package/dist/ionic/p-916bc9ed.system.entry.js +0 -4
- package/dist/ionic/p-92646426.js +0 -4
- package/dist/ionic/p-94fc2104.system.entry.js +0 -4
- package/dist/ionic/p-9abb7d9b.entry.js +0 -4
- package/dist/ionic/p-9ac1a506.system.js +0 -4
- package/dist/ionic/p-a5a9206f.entry.js +0 -4
- package/dist/ionic/p-a98061d0.entry.js +0 -4
- package/dist/ionic/p-b18c52cd.entry.js +0 -4
- package/dist/ionic/p-b517144d.system.entry.js +0 -4
- package/dist/ionic/p-b5dc9a32.system.entry.js +0 -4
- package/dist/ionic/p-b80582fe.system.entry.js +0 -4
- package/dist/ionic/p-bbcec459.system.js +0 -4
- package/dist/ionic/p-bcdd3eaf.entry.js +0 -4
- package/dist/ionic/p-c373eebd.system.js +0 -4
- package/dist/ionic/p-cdff6a80.system.entry.js +0 -4
- package/dist/ionic/p-d4862803.entry.js +0 -4
- package/dist/ionic/p-d6ed3be1.entry.js +0 -4
- package/dist/ionic/p-dc286a59.entry.js +0 -4
- package/dist/ionic/p-df09db21.entry.js +0 -4
- package/dist/ionic/p-df4b88fc.system.entry.js +0 -4
- package/dist/ionic/p-ea3ca474.system.js +0 -4
- package/dist/ionic/p-eb4ba253.entry.js +0 -4
- package/dist/ionic/p-ebd641e4.system.entry.js +0 -4
- package/dist/ionic/p-ebe94d15.entry.js +0 -4
- package/dist/ionic/p-eda736d7.entry.js +0 -4
- package/dist/ionic/p-ee17be82.entry.js +0 -4
- package/dist/ionic/p-eee899d5.system.entry.js +0 -4
- package/dist/ionic/p-f44c9c6e.system.entry.js +0 -4
- package/dist/ionic/p-f5be97b8.entry.js +0 -4
- package/dist/ionic/p-f8123284.entry.js +0 -4
- package/dist/ionic/p-fff78cd2.system.entry.js +0 -4
|
@@ -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 {
|
|
5
|
+
import { focusElements } from "../../utils/focus-visible";
|
|
6
6
|
import { config } from "../../global/config";
|
|
7
7
|
import { getIonTheme } from "../../global/ionic-global";
|
|
8
8
|
/**
|
|
@@ -18,14 +18,19 @@ export class App {
|
|
|
18
18
|
* a result of another user action. (Ex: We focus the first element
|
|
19
19
|
* inside of a popover when the user presents it, but the popover is not always
|
|
20
20
|
* presented as a result of keyboard action.)
|
|
21
|
+
*
|
|
22
|
+
* @param elements - The elements to set focus on.
|
|
21
23
|
*/
|
|
22
24
|
async setFocus(elements) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
/**
|
|
26
|
+
* The focus-visible utility is used to set focus on an
|
|
27
|
+
* element that uses `ion-focusable`.
|
|
28
|
+
*/
|
|
29
|
+
focusElements(elements);
|
|
25
30
|
}
|
|
26
31
|
render() {
|
|
27
32
|
const theme = getIonTheme(this);
|
|
28
|
-
return (h(Host, { key: '
|
|
33
|
+
return (h(Host, { key: '25667e21b2fffa03ccf013044c340e96bd7faad9', class: {
|
|
29
34
|
[theme]: true,
|
|
30
35
|
'ion-page': true,
|
|
31
36
|
'force-statusbar-padding': config.getBoolean('_forceStatusbarPadding'),
|
|
@@ -50,7 +55,7 @@ export class App {
|
|
|
50
55
|
"parameters": [{
|
|
51
56
|
"name": "elements",
|
|
52
57
|
"type": "HTMLElement[]",
|
|
53
|
-
"docs": ""
|
|
58
|
+
"docs": "- The elements to set focus on."
|
|
54
59
|
}],
|
|
55
60
|
"references": {
|
|
56
61
|
"Promise": {
|
|
@@ -66,7 +71,10 @@ export class App {
|
|
|
66
71
|
},
|
|
67
72
|
"docs": {
|
|
68
73
|
"text": "Used to set focus on an element that uses `ion-focusable`.\nDo not use this if focusing the element as a result of a keyboard\nevent as the focus utility should handle this for us. This method\nshould be used when we want to programmatically focus an element as\na result of another user action. (Ex: We focus the first element\ninside of a popover when the user presents it, but the popover is not always\npresented as a result of keyboard action.)",
|
|
69
|
-
"tags": [
|
|
74
|
+
"tags": [{
|
|
75
|
+
"name": "param",
|
|
76
|
+
"text": "elements - The elements to set focus on."
|
|
77
|
+
}]
|
|
70
78
|
}
|
|
71
79
|
}
|
|
72
80
|
};
|
|
@@ -128,6 +128,7 @@ Do not edit directly, this file was auto-generated.
|
|
|
128
128
|
*/
|
|
129
129
|
border-radius: var(--border-radius);
|
|
130
130
|
display: block;
|
|
131
|
+
position: relative;
|
|
131
132
|
}
|
|
132
133
|
|
|
133
134
|
::slotted(ion-img),
|
|
@@ -265,4 +266,20 @@ Do not edit directly, this file was auto-generated.
|
|
|
265
266
|
:host(.avatar-xlarge) ::slotted(ion-icon) {
|
|
266
267
|
width: var(--ion-scale-1000, 40px);
|
|
267
268
|
height: var(--ion-scale-1000, 40px);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
:host ::slotted(ion-badge.badge-vertical-top:empty) {
|
|
272
|
+
transform: translate(var(--ion-scale-050, 2px), calc(var(--ion-scale-050, 2px) * -1));
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
:host(.avatar-xxsmall) ::slotted(ion-badge.badge-vertical-top:empty) {
|
|
276
|
+
transform: translate(var(--ion-scale-100, 4px), calc(var(--ion-scale-100, 4px) * -1));
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
:host ::slotted(ion-badge.badge-vertical-bottom:empty) {
|
|
280
|
+
transform: translate(0, var(--ion-scale-100, 4px));
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
:host(.avatar-xxsmall) ::slotted(ion-badge.badge-vertical-bottom:empty) {
|
|
284
|
+
transform: translate(var(--ion-scale-100, 4px), calc(var(--ion-scale-100, 4px)));
|
|
268
285
|
}
|
|
@@ -65,6 +65,7 @@
|
|
|
65
65
|
*/
|
|
66
66
|
border-radius: var(--border-radius);
|
|
67
67
|
display: block;
|
|
68
|
+
position: relative;
|
|
68
69
|
}
|
|
69
70
|
|
|
70
71
|
::slotted(ion-img),
|
|
@@ -141,4 +142,12 @@
|
|
|
141
142
|
--border-radius: 50%;
|
|
142
143
|
width: 64px;
|
|
143
144
|
height: 64px;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
::slotted(ion-badge.badge-vertical-top:empty) {
|
|
148
|
+
transform: translate(-50%, 50%);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
::slotted(ion-badge.badge-vertical-bottom:empty) {
|
|
152
|
+
transform: translateX(-100%);
|
|
144
153
|
}
|
|
@@ -156,8 +156,19 @@ Do not edit directly, this file was auto-generated.
|
|
|
156
156
|
color: var(--ion-color-contrast);
|
|
157
157
|
}
|
|
158
158
|
|
|
159
|
-
:host(
|
|
160
|
-
|
|
159
|
+
:host([vertical]) {
|
|
160
|
+
position: absolute;
|
|
161
|
+
}
|
|
162
|
+
:host([vertical]) {
|
|
163
|
+
inset-inline-end: 0;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
:host(:empty.badge-vertical-top) {
|
|
167
|
+
top: 0;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
:host(:empty.badge-vertical-bottom) {
|
|
171
|
+
bottom: 0;
|
|
161
172
|
}
|
|
162
173
|
|
|
163
174
|
:host {
|
|
@@ -204,6 +215,11 @@ Do not edit directly, this file was auto-generated.
|
|
|
204
215
|
line-height: var(--ion-font-line-height-400, 16px);
|
|
205
216
|
}
|
|
206
217
|
|
|
218
|
+
:host(.badge-xxsmall) ::slotted(ion-icon) {
|
|
219
|
+
width: var(--ion-scale-300, 12px);
|
|
220
|
+
height: var(--ion-scale-300, 12px);
|
|
221
|
+
}
|
|
222
|
+
|
|
207
223
|
/* Extra Small Badge */
|
|
208
224
|
:host(.badge-xsmall) {
|
|
209
225
|
--padding-start: var(--ion-space-100, 4px);
|
|
@@ -214,6 +230,11 @@ Do not edit directly, this file was auto-generated.
|
|
|
214
230
|
line-height: var(--ion-font-line-height-600, 24px);
|
|
215
231
|
}
|
|
216
232
|
|
|
233
|
+
:host(.badge-xsmall) ::slotted(ion-icon) {
|
|
234
|
+
width: var(--ion-scale-400, 16px);
|
|
235
|
+
height: var(--ion-scale-400, 16px);
|
|
236
|
+
}
|
|
237
|
+
|
|
217
238
|
/* Small Badge */
|
|
218
239
|
:host(.badge-small) {
|
|
219
240
|
--padding-start: var(--ion-space-100, 4px);
|
|
@@ -224,6 +245,11 @@ Do not edit directly, this file was auto-generated.
|
|
|
224
245
|
line-height: var(--ion-font-line-height-600, 24px);
|
|
225
246
|
}
|
|
226
247
|
|
|
248
|
+
:host(.badge-small) ::slotted(ion-icon) {
|
|
249
|
+
width: var(--ion-scale-500, 20px);
|
|
250
|
+
height: var(--ion-scale-500, 20px);
|
|
251
|
+
}
|
|
252
|
+
|
|
227
253
|
/* Medium Badge */
|
|
228
254
|
:host(.badge-medium) {
|
|
229
255
|
min-width: var(--ion-scale-1000, 40px);
|
|
@@ -232,6 +258,11 @@ Do not edit directly, this file was auto-generated.
|
|
|
232
258
|
line-height: var(--ion-font-line-height-700, 28px);
|
|
233
259
|
}
|
|
234
260
|
|
|
261
|
+
:host(.badge-medium) ::slotted(ion-icon) {
|
|
262
|
+
width: var(--ion-scale-600, 24px);
|
|
263
|
+
height: var(--ion-scale-600, 24px);
|
|
264
|
+
}
|
|
265
|
+
|
|
235
266
|
/* Large Badge */
|
|
236
267
|
:host(.badge-large) {
|
|
237
268
|
min-width: var(--ion-scale-1200, 48px);
|
|
@@ -240,10 +271,43 @@ Do not edit directly, this file was auto-generated.
|
|
|
240
271
|
line-height: var(--ion-font-line-height-700, 28px);
|
|
241
272
|
}
|
|
242
273
|
|
|
274
|
+
:host(.badge-large) ::slotted(ion-icon) {
|
|
275
|
+
width: var(--ion-scale-800, 32px);
|
|
276
|
+
height: var(--ion-scale-800, 32px);
|
|
277
|
+
}
|
|
278
|
+
|
|
243
279
|
/* Extra Large Badge */
|
|
244
280
|
:host(.badge-xlarge) {
|
|
245
281
|
min-width: var(--ion-scale-1400, 56px);
|
|
246
282
|
height: var(--ion-scale-1400, 56px);
|
|
247
283
|
font-size: var(--ion-font-size-550, 1.375rem);
|
|
248
284
|
line-height: var(--ion-font-line-height-700, 28px);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
:host(.badge-xlarge) ::slotted(ion-icon) {
|
|
288
|
+
width: var(--ion-scale-1000, 40px);
|
|
289
|
+
height: var(--ion-scale-1000, 40px);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
:host(:empty) {
|
|
293
|
+
--padding-start: 0;
|
|
294
|
+
--padding-end: 0;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/* sm */
|
|
298
|
+
:host(.badge-small:empty) {
|
|
299
|
+
min-width: var(--ion-scale-200, 8px);
|
|
300
|
+
height: var(--ion-scale-200, 8px);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/* md */
|
|
304
|
+
:host(.badge-medium:empty) {
|
|
305
|
+
min-width: var(--ion-scale-300, 12px);
|
|
306
|
+
height: var(--ion-scale-300, 12px);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/* lg */
|
|
310
|
+
:host(.badge-large:empty) {
|
|
311
|
+
min-width: var(--ion-scale-400, 16px);
|
|
312
|
+
height: var(--ion-scale-400, 16px);
|
|
249
313
|
}
|
|
@@ -154,8 +154,19 @@
|
|
|
154
154
|
color: var(--ion-color-contrast);
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
:host(
|
|
158
|
-
|
|
157
|
+
:host([vertical]) {
|
|
158
|
+
position: absolute;
|
|
159
|
+
}
|
|
160
|
+
:host([vertical]) {
|
|
161
|
+
inset-inline-end: 0;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
:host(:empty.badge-vertical-top) {
|
|
165
|
+
top: 0;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
:host(:empty.badge-vertical-bottom) {
|
|
169
|
+
bottom: 0;
|
|
159
170
|
}
|
|
160
171
|
|
|
161
172
|
/**
|
|
@@ -197,6 +208,16 @@
|
|
|
197
208
|
font-family: var(--ion-font-family, inherit);
|
|
198
209
|
}
|
|
199
210
|
|
|
211
|
+
:host(:empty) {
|
|
212
|
+
--padding-start: 0;
|
|
213
|
+
--padding-end: 0;
|
|
214
|
+
--padding-bottom: 0;
|
|
215
|
+
--padding-top: 0;
|
|
216
|
+
border-radius: 999px;
|
|
217
|
+
width: 10px;
|
|
218
|
+
height: 10px;
|
|
219
|
+
}
|
|
220
|
+
|
|
200
221
|
/**
|
|
201
222
|
* Convert a pixels given value into rem
|
|
202
223
|
*
|
|
@@ -13,6 +13,7 @@ export class Badge {
|
|
|
13
13
|
this.color = undefined;
|
|
14
14
|
this.shape = undefined;
|
|
15
15
|
this.size = undefined;
|
|
16
|
+
this.vertical = undefined;
|
|
16
17
|
}
|
|
17
18
|
getShape() {
|
|
18
19
|
const theme = getIonTheme(this);
|
|
@@ -42,11 +43,12 @@ export class Badge {
|
|
|
42
43
|
const shape = this.getShape();
|
|
43
44
|
const size = this.getSize();
|
|
44
45
|
const theme = getIonTheme(this);
|
|
45
|
-
return (h(Host, { key: '
|
|
46
|
+
return (h(Host, { key: 'aebcad9a9d4e650344cc855085ab30c376f9b367', class: createColorClasses(this.color, {
|
|
46
47
|
[theme]: true,
|
|
47
48
|
[`badge-${shape}`]: shape !== undefined,
|
|
48
49
|
[`badge-${size}`]: size !== undefined,
|
|
49
|
-
|
|
50
|
+
[`badge-vertical-${this.vertical}`]: this.vertical !== undefined,
|
|
51
|
+
}) }, h("slot", { key: 'b62bca8ec3666dce3283573497b7c4306ecc7fc4' })));
|
|
50
52
|
}
|
|
51
53
|
static get is() { return "ion-badge"; }
|
|
52
54
|
static get encapsulation() { return "shadow"; }
|
|
@@ -122,6 +124,23 @@ export class Badge {
|
|
|
122
124
|
},
|
|
123
125
|
"attribute": "size",
|
|
124
126
|
"reflect": false
|
|
127
|
+
},
|
|
128
|
+
"vertical": {
|
|
129
|
+
"type": "string",
|
|
130
|
+
"mutable": false,
|
|
131
|
+
"complexType": {
|
|
132
|
+
"original": "'top' | 'bottom'",
|
|
133
|
+
"resolved": "\"bottom\" | \"top\" | undefined",
|
|
134
|
+
"references": {}
|
|
135
|
+
},
|
|
136
|
+
"required": false,
|
|
137
|
+
"optional": true,
|
|
138
|
+
"docs": {
|
|
139
|
+
"tags": [],
|
|
140
|
+
"text": "Set to `\"top\"` to position the badge on top right absolute position of the parent element.\nSet to `\"bottom\"` to position the badge on bottom right absolute position of the parent element."
|
|
141
|
+
},
|
|
142
|
+
"attribute": "vertical",
|
|
143
|
+
"reflect": false
|
|
125
144
|
}
|
|
126
145
|
};
|
|
127
146
|
}
|
|
@@ -154,8 +154,19 @@
|
|
|
154
154
|
color: var(--ion-color-contrast);
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
:host(
|
|
158
|
-
|
|
157
|
+
:host([vertical]) {
|
|
158
|
+
position: absolute;
|
|
159
|
+
}
|
|
160
|
+
:host([vertical]) {
|
|
161
|
+
inset-inline-end: 0;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
:host(:empty.badge-vertical-top) {
|
|
165
|
+
top: 0;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
:host(:empty.badge-vertical-bottom) {
|
|
169
|
+
bottom: 0;
|
|
159
170
|
}
|
|
160
171
|
|
|
161
172
|
/**
|
|
@@ -197,6 +208,16 @@
|
|
|
197
208
|
font-family: var(--ion-font-family, inherit);
|
|
198
209
|
}
|
|
199
210
|
|
|
211
|
+
:host(:empty) {
|
|
212
|
+
--padding-start: 0;
|
|
213
|
+
--padding-end: 0;
|
|
214
|
+
--padding-bottom: 0;
|
|
215
|
+
--padding-top: 0;
|
|
216
|
+
border-radius: 999px;
|
|
217
|
+
width: 10px;
|
|
218
|
+
height: 10px;
|
|
219
|
+
}
|
|
220
|
+
|
|
200
221
|
/**
|
|
201
222
|
* Convert a pixels given value into rem
|
|
202
223
|
*
|
|
@@ -342,4 +342,16 @@ Do not edit directly, this file was auto-generated.
|
|
|
342
342
|
--placeholder-color: var(--ion-primitives-neutral-500, #a2a2a2);
|
|
343
343
|
cursor: default;
|
|
344
344
|
pointer-events: none;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
:host(.searchbar-shape-soft) {
|
|
348
|
+
--border-radius: var(--ion-border-radius-200, 8px);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
:host(.searchbar-shape-round) {
|
|
352
|
+
--border-radius: var(--ion-border-radius-400, 16px);
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
:host(.searchbar-shape-rectangular) {
|
|
356
|
+
--border-radius: var(--ion-border-radius-0, 0px);
|
|
345
357
|
}
|
|
@@ -141,6 +141,7 @@ export class Searchbar {
|
|
|
141
141
|
this.spellcheck = false;
|
|
142
142
|
this.type = 'search';
|
|
143
143
|
this.value = '';
|
|
144
|
+
this.shape = undefined;
|
|
144
145
|
}
|
|
145
146
|
/**
|
|
146
147
|
* lang and dir are globally enumerated attributes.
|
|
@@ -375,6 +376,18 @@ export class Searchbar {
|
|
|
375
376
|
}
|
|
376
377
|
return true;
|
|
377
378
|
}
|
|
379
|
+
getShape() {
|
|
380
|
+
const theme = getIonTheme(this);
|
|
381
|
+
const { shape } = this;
|
|
382
|
+
// TODO(ROU-11677): Remove theme check when shapes are defined for all themes.
|
|
383
|
+
if (theme !== 'ionic') {
|
|
384
|
+
return undefined;
|
|
385
|
+
}
|
|
386
|
+
if (shape === undefined) {
|
|
387
|
+
return 'round';
|
|
388
|
+
}
|
|
389
|
+
return shape;
|
|
390
|
+
}
|
|
378
391
|
/**
|
|
379
392
|
* Get the icon to use for the clear icon.
|
|
380
393
|
* If an icon is set on the component, use that.
|
|
@@ -449,8 +462,9 @@ export class Searchbar {
|
|
|
449
462
|
const animated = this.animated && config.getBoolean('animated', true);
|
|
450
463
|
const theme = getIonTheme(this);
|
|
451
464
|
const shouldShowCancelButton = this.shouldShowCancelButton();
|
|
452
|
-
const
|
|
453
|
-
|
|
465
|
+
const shape = this.getShape();
|
|
466
|
+
const cancelButton = this.showCancelButton !== 'never' && (h("button", { key: 'd7382dd39f5699330fa1c981cd252a903029d1b5', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: theme === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, h("div", { key: '3b3c4a16c23d7406be4eda6076deca41e79e196d', "aria-hidden": "true" }, theme === 'md' || theme === 'ionic' ? (h("ion-icon", { "aria-hidden": "true", icon: searchbarCancelIcon, lazy: false })) : (cancelButtonText))));
|
|
467
|
+
return (h(Host, { key: '4890a1478e7e1ff0a85d5e6ca2214c50aee96777', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses(this.color, {
|
|
454
468
|
[theme]: true,
|
|
455
469
|
'searchbar-animated': animated,
|
|
456
470
|
'searchbar-disabled': this.disabled,
|
|
@@ -460,14 +474,15 @@ export class Searchbar {
|
|
|
460
474
|
'searchbar-has-focus': this.focused,
|
|
461
475
|
'searchbar-should-show-clear': this.shouldShowClearButton(),
|
|
462
476
|
'searchbar-should-show-cancel': this.shouldShowCancelButton(),
|
|
463
|
-
|
|
477
|
+
[`searchbar-shape-${shape}`]: shape !== undefined,
|
|
478
|
+
}) }, h("div", { key: 'e2b95c0f77605f8d1e9b3f8b971d07fba72cb794', class: "searchbar-input-container" }, h("input", Object.assign({ key: '6dd8ff97d0ef85190addbd20a1093d22fecf9a80', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), (theme === 'md' || theme === 'ionic') && cancelButton, h("ion-icon", { key: '626aefedcd35c36bd9a697b5f5bdbaec4f0142eb', "aria-hidden": "true", icon: searchbarSearchIcon, lazy: false, class: "searchbar-search-icon" }), h("button", { key: '9996031c9eeba745d37b6600b6594f69c4808842', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
|
|
464
479
|
/**
|
|
465
480
|
* This prevents mobile browsers from
|
|
466
481
|
* blurring the input when the clear
|
|
467
482
|
* button is activated.
|
|
468
483
|
*/
|
|
469
484
|
ev.preventDefault();
|
|
470
|
-
}, onClick: () => this.onClearInput(true) }, h("ion-icon", { key: '
|
|
485
|
+
}, onClick: () => this.onClearInput(true) }, h("ion-icon", { key: '403a5866e82ca6be91101a1719c3ad2f273a652f', "aria-hidden": "true", icon: searchbarClearIcon, lazy: false, class: "searchbar-clear-icon" }))), theme === 'ios' && cancelButton));
|
|
471
486
|
}
|
|
472
487
|
static get is() { return "ion-searchbar"; }
|
|
473
488
|
static get encapsulation() { return "scoped"; }
|
|
@@ -885,6 +900,23 @@ export class Searchbar {
|
|
|
885
900
|
"attribute": "value",
|
|
886
901
|
"reflect": false,
|
|
887
902
|
"defaultValue": "''"
|
|
903
|
+
},
|
|
904
|
+
"shape": {
|
|
905
|
+
"type": "string",
|
|
906
|
+
"mutable": false,
|
|
907
|
+
"complexType": {
|
|
908
|
+
"original": "'soft' | 'round' | 'rectangular'",
|
|
909
|
+
"resolved": "\"rectangular\" | \"round\" | \"soft\" | undefined",
|
|
910
|
+
"references": {}
|
|
911
|
+
},
|
|
912
|
+
"required": false,
|
|
913
|
+
"optional": true,
|
|
914
|
+
"docs": {
|
|
915
|
+
"tags": [],
|
|
916
|
+
"text": "Set to `\"soft\"` for a searchbar with slightly rounded corners,\n`\"round\"` for a searchbar with fully rounded corners,\nor `\"rectangular\"` for a searchbar without rounded corners.\nDefaults to `\"round\"` for the ionic theme, and `undefined` for all other themes."
|
|
917
|
+
},
|
|
918
|
+
"attribute": "shape",
|
|
919
|
+
"reflect": false
|
|
888
920
|
}
|
|
889
921
|
};
|
|
890
922
|
}
|
|
@@ -688,9 +688,10 @@ Do not edit directly, this file was auto-generated.
|
|
|
688
688
|
}
|
|
689
689
|
|
|
690
690
|
:host {
|
|
691
|
+
--border-color: var(--ion-primitives-neutral-500, #a2a2a2);
|
|
691
692
|
--color: var(--ion-primitives-neutral-1200, #242424);
|
|
692
|
-
--highlight-color-valid: var(--ion-semantics-success-
|
|
693
|
-
--highlight-color-invalid: var(--ion-semantics-danger-
|
|
693
|
+
--highlight-color-valid: var(--ion-semantics-success-900, #126f23);
|
|
694
|
+
--highlight-color-invalid: var(--ion-semantics-danger-800, #bf2222);
|
|
694
695
|
--placeholder-color: var(--ion-primitives-neutral-800, #626262);
|
|
695
696
|
--placeholder-opacity: 1;
|
|
696
697
|
--background: var(--ion-primitives-base-white, #ffffff);
|
|
@@ -831,4 +832,26 @@ ion-icon {
|
|
|
831
832
|
|
|
832
833
|
:host(.has-focus) .textarea-highlight {
|
|
833
834
|
transform: scale(1);
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
@media (any-hover: hover) {
|
|
838
|
+
:host(:hover) {
|
|
839
|
+
--border-color: var(--ion-primitives-neutral-600, #8c8c8c);
|
|
840
|
+
}
|
|
841
|
+
}
|
|
842
|
+
:host(.textarea-disabled) {
|
|
843
|
+
--color: var(--ion-primitives-neutral-500, #a2a2a2);
|
|
844
|
+
--background: var(--ion-primitives-neutral-100, #f5f5f5);
|
|
845
|
+
--border-color: var(--ion-primitives-neutral-300, #cfcfcf);
|
|
846
|
+
--placeholder-color: var(--ion-primitives-neutral-500, #a2a2a2);
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
:host(.textarea-disabled:not(.ion-valid)) .textarea-bottom .helper-text,
|
|
850
|
+
:host(.textarea-disabled) .textarea-bottom .counter,
|
|
851
|
+
:host(.textarea-disabled) .label-text-wrapper {
|
|
852
|
+
color: var(--ion-primitives-neutral-500, #a2a2a2);
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
:host(.textarea-readonly) {
|
|
856
|
+
--background: var(--ion-primitives-neutral-100, #f5f5f5);
|
|
834
857
|
}
|
|
@@ -368,7 +368,7 @@ export class Textarea {
|
|
|
368
368
|
return (h("div", { class: "textarea-bottom" }, this.renderHintText(), this.renderCounter()));
|
|
369
369
|
}
|
|
370
370
|
render() {
|
|
371
|
-
const { inputId, disabled, size, labelPlacement, el, hasFocus } = this;
|
|
371
|
+
const { inputId, disabled, readonly, size, labelPlacement, el, hasFocus } = this;
|
|
372
372
|
const fill = this.getFill();
|
|
373
373
|
const theme = getIonTheme(this);
|
|
374
374
|
const shape = this.getShape();
|
|
@@ -395,7 +395,7 @@ export class Textarea {
|
|
|
395
395
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
396
396
|
*/
|
|
397
397
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
|
|
398
|
-
return (h(Host, { key: '
|
|
398
|
+
return (h(Host, { key: 'bc1de868d3b58707859e453186cc9312dab38405', class: createColorClasses(this.color, {
|
|
399
399
|
[theme]: true,
|
|
400
400
|
'has-value': hasValue,
|
|
401
401
|
'has-focus': hasFocus,
|
|
@@ -405,7 +405,8 @@ export class Textarea {
|
|
|
405
405
|
[`textarea-size-${size}`]: true,
|
|
406
406
|
[`textarea-label-placement-${labelPlacement}`]: true,
|
|
407
407
|
'textarea-disabled': disabled,
|
|
408
|
-
|
|
408
|
+
'textarea-readonly': readonly,
|
|
409
|
+
}) }, h("label", { key: '4d82bc767dff5bd28efd2bb13dd5e65cc50ab410', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), h("div", { key: 'ebc6391ad58294b01fb5e6fd6d21496250bed484', class: "textarea-wrapper-inner" },
|
|
409
410
|
/**
|
|
410
411
|
* For the ionic theme, we render the outline container here
|
|
411
412
|
* instead of higher up, so it can be positioned relative to
|
|
@@ -415,7 +416,7 @@ export class Textarea {
|
|
|
415
416
|
* <label> element, ensuring that clicking the label text
|
|
416
417
|
* focuses the textarea.
|
|
417
418
|
*/
|
|
418
|
-
theme === 'ionic' && fill === 'outline' && h("div", { key: '
|
|
419
|
+
theme === 'ionic' && fill === 'outline' && h("div", { key: 'cfab00504ef4b268a8e3c446d00c8c06ddbc3699', class: "textarea-outline" }), h("div", { key: '7387ddde6cb4316c4f34c642f0ddb6e8ad27c9ce', class: "start-slot-wrapper" }, h("slot", { key: '0d4e4ff1f4957677538e0f5230146f5605592d4e', name: "start" })), h("div", { key: '09e1ae9084976374347adddf7197f256b02ccd41', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, h("textarea", Object.assign({ key: 'cd4afa93446db0761ee10acdc356c06c24f5699f', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId }, this.inheritedAttributes), value)), h("div", { key: '4eccbe7ee70c1ec967e3e64c19ffe796415f65a5', class: "end-slot-wrapper" }, h("slot", { key: '4d6c3da0b28183d6398fab4afd29fff7ae7083b3', name: "end" }))), shouldRenderHighlight && h("div", { key: '33267aa7e8388de28a33317ba1ac98929f32b48e', class: "textarea-highlight" })), this.renderBottomContent()));
|
|
419
420
|
}
|
|
420
421
|
static get is() { return "ion-textarea"; }
|
|
421
422
|
static get encapsulation() { return "scoped"; }
|
|
@@ -24,6 +24,21 @@ export const getOrInitFocusVisibleUtility = () => {
|
|
|
24
24
|
}
|
|
25
25
|
return focusVisibleUtility;
|
|
26
26
|
};
|
|
27
|
+
/**
|
|
28
|
+
* Used to set focus on an element that uses `ion-focusable`.
|
|
29
|
+
* Do not use this if focusing the element as a result of a keyboard
|
|
30
|
+
* event as the focus utility should handle this for us. This method
|
|
31
|
+
* should be used when we want to programmatically focus an element as
|
|
32
|
+
* a result of another user action. (Ex: We focus the first element
|
|
33
|
+
* inside of a popover when the user presents it, but the popover is not always
|
|
34
|
+
* presented as a result of keyboard action.)
|
|
35
|
+
*
|
|
36
|
+
* @param elements - The elements to set focus on.
|
|
37
|
+
*/
|
|
38
|
+
export const focusElements = (elements) => {
|
|
39
|
+
const focusVisible = getOrInitFocusVisibleUtility();
|
|
40
|
+
focusVisible.setFocus(elements);
|
|
41
|
+
};
|
|
27
42
|
export const startFocusVisible = (rootEl) => {
|
|
28
43
|
let currentFocus = [];
|
|
29
44
|
let keyboardMode = true;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
+
import { focusElements } from "./focus-visible";
|
|
4
5
|
import { config } from "../global/config";
|
|
5
6
|
export const transitionEndAsync = (el, expectedDuration = 0) => {
|
|
6
7
|
return new Promise((resolve) => {
|
|
@@ -231,6 +232,17 @@ export const raf = (h) => {
|
|
|
231
232
|
export const hasShadowDom = (el) => {
|
|
232
233
|
return !!el.shadowRoot && !!el.attachShadow;
|
|
233
234
|
};
|
|
235
|
+
/**
|
|
236
|
+
* Focuses a given element while ensuring proper focus management
|
|
237
|
+
* within the Ionic framework. If the element is marked as `ion-focusable`,
|
|
238
|
+
* this function will delegate focus handling to `ion-app` or manually
|
|
239
|
+
* apply focus when a custom app root is used.
|
|
240
|
+
*
|
|
241
|
+
* This function helps maintain accessibility and expected focus behavior
|
|
242
|
+
* in both standard and custom root environments.
|
|
243
|
+
*
|
|
244
|
+
* @param el - The element to focus.
|
|
245
|
+
*/
|
|
234
246
|
export const focusVisibleElement = (el) => {
|
|
235
247
|
el.focus();
|
|
236
248
|
/**
|
|
@@ -245,7 +257,33 @@ export const focusVisibleElement = (el) => {
|
|
|
245
257
|
const appRootSelector = config.get('appRootSelector', 'ion-app');
|
|
246
258
|
const app = el.closest(appRootSelector);
|
|
247
259
|
if (app) {
|
|
248
|
-
app
|
|
260
|
+
if (appRootSelector === 'ion-app') {
|
|
261
|
+
/**
|
|
262
|
+
* If the app root is the default, then it will be
|
|
263
|
+
* in charge of setting focus. This is because the
|
|
264
|
+
* focus-visible utility is attached to the app root
|
|
265
|
+
* and will handle setting focus on the correct element.
|
|
266
|
+
*/
|
|
267
|
+
app.setFocus([el]);
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
/**
|
|
271
|
+
* When using a custom app root selector, the focus-visible
|
|
272
|
+
* utility is not available to manage focus automatically.
|
|
273
|
+
* If we set focus immediately, the element may not be fully
|
|
274
|
+
* rendered or interactive, especially if it was just added
|
|
275
|
+
* to the DOM. Using requestAnimationFrame ensures that focus
|
|
276
|
+
* is applied on the next frame, allowing the DOM to settle
|
|
277
|
+
* before changing focus.
|
|
278
|
+
*/
|
|
279
|
+
requestAnimationFrame(() => {
|
|
280
|
+
/**
|
|
281
|
+
* The focus-visible utility is used to set focus on an
|
|
282
|
+
* element that uses `ion-focusable`.
|
|
283
|
+
*/
|
|
284
|
+
focusElements([el]);
|
|
285
|
+
});
|
|
286
|
+
}
|
|
249
287
|
}
|
|
250
288
|
}
|
|
251
289
|
};
|