@ionic/core 8.7.10-dev.11762798751.11b77c85 → 8.7.10-dev.11763406256.1a4bac8c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/checkbox.js +63 -9
- package/components/ion-input.js +7 -6
- package/components/ion-searchbar.js +6 -6
- package/components/ion-select.js +7 -6
- package/components/ion-textarea.js +2 -1
- package/components/ion-toggle.js +62 -12
- package/components/notch-controller.js +153 -0
- package/components/radio-group.js +60 -7
- package/components/validity.js +1 -150
- package/dist/cjs/{animation-D_c13yq_.js → animation-Bt3H9L1C.js} +1 -1
- package/dist/cjs/{app-globals--1qFsqEw.js → app-globals-Ciccnk9_.js} +1 -1
- package/dist/cjs/{button-active-CQiBOKCI.js → button-active-CMc8cD90.js} +1 -1
- package/dist/cjs/{config-DL8XJF0D.js → config-C5fsO43a.js} +1 -1
- package/dist/cjs/{data-DtEHxOpt.js → data-JwZKaIQB.js} +1 -1
- package/dist/cjs/{framework-delegate-DmSgIb_h.js → framework-delegate-DMJRBuDi.js} +1 -1
- package/dist/cjs/{hardware-back-button-C72O8m7E.js → hardware-back-button-VCK4V3mG.js} +1 -1
- package/dist/cjs/{helpers-xCoR213K.js → helpers-DrTqNghc.js} +1 -1
- package/dist/cjs/{index-WEBAL2Zz.js → index-094mMFB-.js} +4 -4
- package/dist/cjs/{index-DOeyHw27.js → index-C534ULug.js} +2 -2
- package/dist/cjs/{index-FugOCm8C.js → index-CO6eryBo.js} +2 -2
- package/dist/cjs/{index-qWlbeMTM.js → index-D6Wc6v08.js} +3 -41
- package/dist/cjs/{index-FdJ4-6Rg.js → index-DrMUZJj6.js} +5 -5
- package/dist/cjs/index.cjs.js +12 -12
- package/dist/cjs/{input-shims-CYpwizql.js → input-shims-CW0KUFTQ.js} +3 -3
- package/dist/cjs/{input.utils-DhlH-Ng5.js → input.utils-B_QROI2g.js} +2 -2
- 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 +9 -9
- package/dist/cjs/ion-app_8.cjs.entry.js +12 -12
- 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 +3 -3
- package/dist/cjs/ion-card_5.cjs.entry.js +3 -3
- package/dist/cjs/ion-checkbox.cjs.entry.js +63 -11
- 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 +4 -4
- package/dist/cjs/ion-datetime_3.cjs.entry.js +8 -8
- package/dist/cjs/ion-fab_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-img.cjs.entry.js +3 -3
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +5 -5
- package/dist/cjs/ion-input-otp.cjs.entry.js +3 -3
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +2 -2
- package/dist/cjs/ion-input.cjs.entry.js +11 -10
- package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-item_8.cjs.entry.js +3 -3
- package/dist/cjs/ion-loading.cjs.entry.js +8 -8
- package/dist/cjs/ion-menu_3.cjs.entry.js +8 -8
- package/dist/cjs/ion-modal.cjs.entry.js +9 -9
- package/dist/cjs/ion-nav_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +3 -3
- package/dist/cjs/ion-picker-column.cjs.entry.js +3 -3
- package/dist/cjs/ion-picker.cjs.entry.js +2 -2
- package/dist/cjs/ion-popover.cjs.entry.js +8 -8
- package/dist/cjs/ion-progress-bar.cjs.entry.js +3 -3
- package/dist/cjs/ion-radio_2.cjs.entry.js +60 -9
- package/dist/cjs/ion-range.cjs.entry.js +4 -4
- package/dist/cjs/ion-refresher_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-reorder_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
- package/dist/cjs/ion-route_4.cjs.entry.js +3 -3
- package/dist/cjs/ion-searchbar.cjs.entry.js +8 -8
- package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment-view.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-select-modal.cjs.entry.js +6 -6
- package/dist/cjs/ion-select_3.cjs.entry.js +13 -12
- 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 +3 -3
- package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-text.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +7 -6
- package/dist/cjs/ion-toast.cjs.entry.js +8 -8
- package/dist/cjs/ion-toggle.cjs.entry.js +61 -13
- package/dist/cjs/{ionic-global-CR8JSFWa.js → ionic-global-HMVqOFGO.js} +1 -1
- package/dist/cjs/ionic.cjs.js +5 -5
- package/dist/cjs/{ios.transition-MQamiuLS.js → ios.transition-BOt_uW73.js} +4 -4
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-VK5nuqXu.js → md.transition-Dt968VXB.js} +4 -4
- package/dist/cjs/{validity-ilhIJL9Q.js → notch-controller-Bzqhjm4f.js} +1 -15
- package/dist/cjs/{overlays-DcMnmLe2.js → overlays-DxIZwUXI.js} +5 -5
- package/dist/cjs/{status-tap-C0NZlIwJ.js → status-tap-g0sWWkXk.js} +3 -3
- package/dist/cjs/{swipe-back-CdOHy9bk.js → swipe-back-BIayeNOD.js} +2 -2
- package/dist/cjs/validity-BpS37YFM.js +19 -0
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/checkbox/checkbox.js +67 -9
- package/dist/collection/components/input/input.js +8 -8
- package/dist/collection/components/radio-group/radio-group.js +64 -7
- package/dist/collection/components/searchbar/searchbar.js +9 -9
- package/dist/collection/components/select/select.js +5 -5
- package/dist/collection/components/toggle/toggle.js +62 -12
- package/dist/docs.json +25 -15
- package/dist/esm/{animation-BMjqGaKJ.js → animation-Dt8bGnA-.js} +1 -1
- package/dist/esm/{app-globals-CXKe5CYv.js → app-globals-BDSf8fOA.js} +1 -1
- package/dist/esm/{button-active-DsHCf5yJ.js → button-active-L570Swow.js} +1 -1
- package/dist/esm/{config-FyGnL1d5.js → config-mCdtaoPe.js} +1 -1
- package/dist/esm/{data-VwBJONjN.js → data-DCORV9FH.js} +1 -1
- package/dist/esm/{framework-delegate-DA71As64.js → framework-delegate-BYawdMXj.js} +1 -1
- package/dist/esm/{hardware-back-button-gEuwgxq4.js → hardware-back-button-CPLxO-Ev.js} +1 -1
- package/dist/esm/{helpers-Br4puuoA.js → helpers-DEn3pfjm.js} +1 -1
- package/dist/esm/{index-nzxJGPo-.js → index-Bs3kT4bc.js} +2 -2
- package/dist/esm/{index-COOKa-0k.js → index-C8IsBmNU.js} +3 -41
- package/dist/esm/{index-DNUVD4sY.js → index-CvDIirVx.js} +5 -5
- package/dist/esm/{index-CZzUL5H7.js → index-ceb5RaMT.js} +2 -2
- package/dist/esm/{index-DKnepNGf.js → index-r2D9DEro.js} +4 -4
- package/dist/esm/index.js +12 -12
- package/dist/esm/{input-shims-G0QQ_JXi.js → input-shims-DyOpfTg6.js} +3 -3
- package/dist/esm/{input.utils-BRuJbV55.js → input.utils-DrvTa8gz.js} +2 -2
- 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 +9 -9
- package/dist/esm/ion-app_8.entry.js +12 -12
- 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 +3 -3
- package/dist/esm/ion-card_5.entry.js +3 -3
- package/dist/esm/ion-checkbox.entry.js +63 -11
- 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 +4 -4
- package/dist/esm/ion-datetime_3.entry.js +8 -8
- package/dist/esm/ion-fab_3.entry.js +3 -3
- package/dist/esm/ion-img.entry.js +3 -3
- package/dist/esm/ion-infinite-scroll_2.entry.js +5 -5
- package/dist/esm/ion-input-otp.entry.js +3 -3
- package/dist/esm/ion-input-password-toggle.entry.js +2 -2
- package/dist/esm/ion-input.entry.js +10 -9
- package/dist/esm/ion-item-option_3.entry.js +4 -4
- package/dist/esm/ion-item_8.entry.js +3 -3
- package/dist/esm/ion-loading.entry.js +8 -8
- package/dist/esm/ion-menu_3.entry.js +8 -8
- package/dist/esm/ion-modal.entry.js +9 -9
- package/dist/esm/ion-nav_2.entry.js +6 -6
- package/dist/esm/ion-picker-column-option.entry.js +3 -3
- package/dist/esm/ion-picker-column.entry.js +3 -3
- package/dist/esm/ion-picker.entry.js +2 -2
- package/dist/esm/ion-popover.entry.js +8 -8
- package/dist/esm/ion-progress-bar.entry.js +3 -3
- package/dist/esm/ion-radio_2.entry.js +60 -9
- package/dist/esm/ion-range.entry.js +4 -4
- package/dist/esm/ion-refresher_2.entry.js +6 -6
- package/dist/esm/ion-reorder_2.entry.js +4 -4
- package/dist/esm/ion-ripple-effect.entry.js +2 -2
- package/dist/esm/ion-route_4.entry.js +3 -3
- package/dist/esm/ion-searchbar.entry.js +8 -8
- package/dist/esm/ion-segment-content.entry.js +1 -1
- package/dist/esm/ion-segment-view.entry.js +1 -1
- package/dist/esm/ion-segment_2.entry.js +3 -3
- package/dist/esm/ion-select-modal.entry.js +6 -6
- package/dist/esm/ion-select_3.entry.js +12 -11
- 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 +3 -3
- package/dist/esm/ion-tab_2.entry.js +3 -3
- package/dist/esm/ion-text.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +6 -5
- package/dist/esm/ion-toast.entry.js +8 -8
- package/dist/esm/ion-toggle.entry.js +61 -13
- package/dist/esm/{ionic-global-ssiordoc.js → ionic-global-CDrldh-5.js} +1 -1
- package/dist/esm/ionic.js +6 -6
- package/dist/esm/{ios.transition-CdWk5te_.js → ios.transition-BDzw0_Hm.js} +4 -4
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-CTwmjwnm.js → md.transition-BzDYi3qq.js} +4 -4
- package/dist/esm/{validity-CwxNVaqN.js → notch-controller-BwelN_JM.js} +2 -15
- package/dist/esm/{overlays-DNIbGUWk.js → overlays-BymNv-BL.js} +5 -5
- package/dist/esm/{status-tap-B6uPB7F5.js → status-tap-5DQ7Fc4V.js} +3 -3
- package/dist/esm/{swipe-back-INesdA_O.js → swipe-back-BKw2CAHc.js} +2 -2
- package/dist/esm/validity-DJztqcrH.js +17 -0
- package/dist/html.html-data.json +18 -2
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-2b9e100d.entry.js → p-020af078.entry.js} +1 -1
- package/dist/ionic/p-074839fc.entry.js +4 -0
- package/dist/ionic/{p-964e89ac.entry.js → p-0b80d700.entry.js} +1 -1
- package/dist/ionic/{p-894e8953.entry.js → p-0dfa5a37.entry.js} +1 -1
- package/dist/ionic/{p-3807749f.entry.js → p-11518b31.entry.js} +1 -1
- package/dist/ionic/{p-fcd74818.entry.js → p-15193d01.entry.js} +1 -1
- package/dist/ionic/{p-c49f0f68.entry.js → p-1647c46c.entry.js} +1 -1
- package/dist/ionic/{p-116a97cb.entry.js → p-2a939845.entry.js} +1 -1
- package/dist/ionic/{p-3c522786.entry.js → p-316c0420.entry.js} +1 -1
- package/dist/ionic/{p-860f309a.entry.js → p-31f7095f.entry.js} +1 -1
- package/dist/ionic/{p-adde497f.entry.js → p-370e4237.entry.js} +1 -1
- package/dist/ionic/{p-ef8c7682.entry.js → p-3a6caca9.entry.js} +1 -1
- package/dist/ionic/p-40c261a3.entry.js +4 -0
- package/dist/ionic/{p-06881392.entry.js → p-43ed1ef5.entry.js} +1 -1
- package/dist/ionic/{p-a66bbfa0.entry.js → p-46d74291.entry.js} +1 -1
- package/dist/ionic/{p-7047a7b7.entry.js → p-49d06882.entry.js} +1 -1
- package/dist/ionic/{p-d0f6b9a7.entry.js → p-4c85d268.entry.js} +1 -1
- package/dist/ionic/p-4e41ea20.entry.js +4 -0
- package/dist/ionic/{p-5d600703.entry.js → p-4efea47a.entry.js} +1 -1
- package/dist/ionic/{p-dfd6acb5.entry.js → p-510d86e1.entry.js} +1 -1
- package/dist/ionic/p-51a60e0f.entry.js +4 -0
- package/dist/ionic/{p-dfc6f4b1.entry.js → p-582824c5.entry.js} +1 -1
- package/dist/ionic/{p-259e4068.entry.js → p-6241ce47.entry.js} +1 -1
- package/dist/ionic/{p-4ede0a73.entry.js → p-639dd543.entry.js} +1 -1
- package/dist/ionic/{p-7a19f3d1.entry.js → p-6444c606.entry.js} +1 -1
- package/dist/ionic/{p-c7f3e813.entry.js → p-675b1a31.entry.js} +1 -1
- package/dist/ionic/{p-db44afdd.entry.js → p-6d070558.entry.js} +1 -1
- package/dist/ionic/{p-5dcbb52f.entry.js → p-7268efa5.entry.js} +1 -1
- package/dist/ionic/{p-c6b68ac0.entry.js → p-72c38b88.entry.js} +1 -1
- package/dist/ionic/p-7380261c.entry.js +4 -0
- package/dist/ionic/{p-a41048a1.entry.js → p-79bd78f9.entry.js} +1 -1
- package/dist/ionic/{p-295a2119.entry.js → p-7da39a4d.entry.js} +1 -1
- package/dist/ionic/{p-d24d55cb.entry.js → p-83be404e.entry.js} +1 -1
- package/dist/ionic/{p-70c66710.entry.js → p-86f53961.entry.js} +1 -1
- package/dist/ionic/{p-db648b6a.entry.js → p-94de5cfa.entry.js} +1 -1
- package/dist/ionic/{p-6fe93af5.entry.js → p-9575b654.entry.js} +1 -1
- package/dist/ionic/{p-bef7bd83.entry.js → p-98fc09eb.entry.js} +1 -1
- package/dist/ionic/{p-BA44xiai.js → p-B0q1YL7N.js} +1 -1
- package/dist/ionic/p-BFvmZNyx.js +4 -0
- package/dist/ionic/p-BKc55Xev.js +4 -0
- package/dist/ionic/{p-baqdazzM.js → p-BOVrCkpJ.js} +1 -1
- package/dist/ionic/{p-CT3hZD31.js → p-BYEqWnSg.js} +1 -1
- package/dist/ionic/p-Bmgaetn_.js +4 -0
- package/dist/ionic/{p-CUek2VVk.js → p-C7hRNDhM.js} +1 -1
- package/dist/ionic/p-C8IsBmNU.js +5 -0
- package/dist/ionic/{p-CYTVJxfQ.js → p-CJxh_yLS.js} +1 -1
- package/dist/ionic/{p-C8VsQFea.js → p-CTfR9YZG.js} +1 -1
- package/dist/ionic/p-CwgG81ZD.js +4 -0
- package/dist/ionic/{p-UCpjvnQe.js → p-D-eFFUkA.js} +1 -1
- package/dist/ionic/{p-DddcVlzx.js → p-D0dMcSkw.js} +1 -1
- package/dist/ionic/{p-ynapDa0U.js → p-D87hU-Ly.js} +1 -1
- package/dist/ionic/{p-C9IcKRgw.js → p-DCv9sLH2.js} +1 -1
- package/dist/ionic/p-DDb5r57F.js +4 -0
- package/dist/ionic/p-DJztqcrH.js +4 -0
- package/dist/ionic/{p-yu2f42Nv.js → p-DNcfiJwE.js} +1 -1
- package/dist/ionic/{p-CETqdl8n.js → p-DUt5fQmA.js} +1 -1
- package/dist/ionic/p-DZRJwG4S.js +4 -0
- package/dist/ionic/{p-D8G3beZX.js → p-DbQ5QkTP.js} +1 -1
- package/dist/ionic/{p-BUluHF_z.js → p-Dc45iWE4.js} +1 -1
- package/dist/ionic/{p-Bzed_Vkc.js → p-QHYY4sjU.js} +1 -1
- package/dist/ionic/{p-3ca55cd6.entry.js → p-a127bee2.entry.js} +1 -1
- package/dist/ionic/{p-b3da5db0.entry.js → p-a80f1b04.entry.js} +1 -1
- package/dist/ionic/{p-948228a2.entry.js → p-ac4eb91d.entry.js} +1 -1
- package/dist/ionic/{p-7078b759.entry.js → p-b0a7585c.entry.js} +1 -1
- package/dist/ionic/{p-3549e539.entry.js → p-b57c6d3e.entry.js} +1 -1
- package/dist/ionic/p-c19f63d0.entry.js +4 -0
- package/dist/ionic/{p-e1547a17.entry.js → p-cc45bcbc.entry.js} +1 -1
- package/dist/ionic/{p-e1c3b35d.entry.js → p-d0a2a1ab.entry.js} +1 -1
- package/dist/ionic/{p-89c2d5ea.entry.js → p-d126e8d3.entry.js} +1 -1
- package/dist/ionic/p-d1f54e28.entry.js +4 -0
- package/dist/ionic/p-d3014190.entry.js +4 -0
- package/dist/ionic/{p-93d7685c.entry.js → p-da7d04cc.entry.js} +1 -1
- package/dist/ionic/p-dbbe606a.entry.js +4 -0
- package/dist/ionic/{p-0144ab54.entry.js → p-e16b69e1.entry.js} +1 -1
- package/dist/ionic/{p-d27a5c0b.entry.js → p-f8f22cc0.entry.js} +1 -1
- package/dist/types/components/checkbox/checkbox.d.ts +9 -1
- package/dist/types/components/header/header.utils.d.ts +1 -2
- package/dist/types/components/input/input.d.ts +1 -1
- package/dist/types/components/radio-group/radio-group.d.ts +9 -1
- package/dist/types/components/searchbar/searchbar.d.ts +1 -1
- package/dist/types/components/select/select.d.ts +2 -2
- package/dist/types/components/toggle/toggle.d.ts +7 -1
- package/dist/types/components.d.ts +8 -8
- package/dist/types/stencil-public-runtime.d.ts +9 -19
- package/dist/types/utils/forms/validity.d.ts +1 -1
- package/dist/types/utils/gesture/listener.d.ts +1 -2
- package/hydrate/index.js +369 -356
- package/hydrate/index.mjs +369 -356
- package/package.json +3 -3
- package/dist/ionic/p-0188f4a6.entry.js +0 -4
- package/dist/ionic/p-14e08559.entry.js +0 -4
- package/dist/ionic/p-22bcfae9.entry.js +0 -4
- package/dist/ionic/p-45c80fd7.entry.js +0 -4
- package/dist/ionic/p-49a21ffb.entry.js +0 -4
- package/dist/ionic/p-5cf136b5.entry.js +0 -4
- package/dist/ionic/p-9fc9dfae.entry.js +0 -4
- package/dist/ionic/p-BS-HlVX0.js +0 -4
- package/dist/ionic/p-BWS2Niqo.js +0 -4
- package/dist/ionic/p-CCKqmAua.js +0 -4
- package/dist/ionic/p-COOKa-0k.js +0 -5
- package/dist/ionic/p-CSQuMCUi.js +0 -4
- package/dist/ionic/p-PfJ1h_Zm.js +0 -4
- package/dist/ionic/p-edcc6f4f.entry.js +0 -4
- package/dist/ionic/p-f53597ee.entry.js +0 -4
- package/dist/ionic/p-w2EzNm9e.js +0 -4
package/hydrate/index.js
CHANGED
|
@@ -130,7 +130,7 @@ function hydrateFactory($stencilWindow, $stencilHydrateOpts, $stencilHydrateResu
|
|
|
130
130
|
|
|
131
131
|
|
|
132
132
|
const NAMESPACE = 'ionic';
|
|
133
|
-
const BUILD = /* ionic */ { hydratedSelectorName: "hydrated", slotRelocation: true,
|
|
133
|
+
const BUILD = /* ionic */ { hydratedSelectorName: "hydrated", slotRelocation: true, updatable: true};
|
|
134
134
|
|
|
135
135
|
// TODO(FW-2832): types
|
|
136
136
|
class Config {
|
|
@@ -392,7 +392,7 @@ const initialize = (userConfig = {}) => {
|
|
|
392
392
|
const globalScripts = initialize;
|
|
393
393
|
|
|
394
394
|
/*
|
|
395
|
-
Stencil Hydrate Platform v4.38.
|
|
395
|
+
Stencil Hydrate Platform v4.38.0 | MIT Licensed | https://stenciljs.com
|
|
396
396
|
*/
|
|
397
397
|
var __defProp = Object.defineProperty;
|
|
398
398
|
var __export = (target, all) => {
|
|
@@ -428,40 +428,6 @@ var TYPE_CONSTANT = "type";
|
|
|
428
428
|
var VALUE_CONSTANT = "value";
|
|
429
429
|
var SERIALIZED_PREFIX = "serialized:";
|
|
430
430
|
|
|
431
|
-
// src/utils/es2022-rewire-class-members.ts
|
|
432
|
-
var reWireGetterSetter = (instance, hostRef) => {
|
|
433
|
-
var _a;
|
|
434
|
-
const cmpMeta = hostRef.$cmpMeta$;
|
|
435
|
-
const members = Object.entries((_a = cmpMeta.$members$) != null ? _a : {});
|
|
436
|
-
members.map(([memberName, [memberFlags]]) => {
|
|
437
|
-
if ((memberFlags & 31 /* Prop */ || memberFlags & 32 /* State */)) {
|
|
438
|
-
const ogValue = instance[memberName];
|
|
439
|
-
const ogDescriptor = getPropertyDescriptor(Object.getPrototypeOf(instance), memberName) || Object.getOwnPropertyDescriptor(instance, memberName);
|
|
440
|
-
if (ogDescriptor) {
|
|
441
|
-
Object.defineProperty(instance, memberName, {
|
|
442
|
-
get() {
|
|
443
|
-
return ogDescriptor.get.call(this);
|
|
444
|
-
},
|
|
445
|
-
set(newValue) {
|
|
446
|
-
ogDescriptor.set.call(this, newValue);
|
|
447
|
-
},
|
|
448
|
-
configurable: true,
|
|
449
|
-
enumerable: true
|
|
450
|
-
});
|
|
451
|
-
}
|
|
452
|
-
instance[memberName] = hostRef.$instanceValues$.has(memberName) ? hostRef.$instanceValues$.get(memberName) : ogValue;
|
|
453
|
-
}
|
|
454
|
-
});
|
|
455
|
-
};
|
|
456
|
-
function getPropertyDescriptor(obj, memberName) {
|
|
457
|
-
while (obj) {
|
|
458
|
-
const desc = Object.getOwnPropertyDescriptor(obj, memberName);
|
|
459
|
-
if (desc == null ? void 0 : desc.get) return desc;
|
|
460
|
-
obj = Object.getPrototypeOf(obj);
|
|
461
|
-
}
|
|
462
|
-
return void 0;
|
|
463
|
-
}
|
|
464
|
-
|
|
465
431
|
// src/utils/helpers.ts
|
|
466
432
|
var isDef = (v) => v != null && v !== void 0;
|
|
467
433
|
var isComplexType = (o) => {
|
|
@@ -3681,9 +3647,6 @@ var registerInstance = (lazyInstance, hostRef) => {
|
|
|
3681
3647
|
if (!hostRef) return void 0;
|
|
3682
3648
|
lazyInstance.__stencil__getHostRef = () => hostRef;
|
|
3683
3649
|
hostRef.$lazyInstance$ = lazyInstance;
|
|
3684
|
-
if (hostRef.$cmpMeta$.$flags$ & 512 /* hasModernPropertyDecls */ && (BUILD.state)) {
|
|
3685
|
-
reWireGetterSetter(lazyInstance, hostRef);
|
|
3686
|
-
}
|
|
3687
3650
|
return hostRef;
|
|
3688
3651
|
};
|
|
3689
3652
|
var registerHost = (elm, cmpMeta) => {
|
|
@@ -9722,6 +9685,202 @@ class CardTitle {
|
|
|
9722
9685
|
}; }
|
|
9723
9686
|
}
|
|
9724
9687
|
|
|
9688
|
+
/**
|
|
9689
|
+
* A utility to calculate the size of an outline notch
|
|
9690
|
+
* width relative to the content passed. This is used in
|
|
9691
|
+
* components such as `ion-select` with `fill="outline"`
|
|
9692
|
+
* where we need to pass slotted HTML content. This is not
|
|
9693
|
+
* needed when rendering plaintext content because we can
|
|
9694
|
+
* render the plaintext again hidden with `opacity: 0` inside
|
|
9695
|
+
* of the notch. As a result we can rely on the intrinsic size
|
|
9696
|
+
* of the element to correctly compute the notch width. We
|
|
9697
|
+
* cannot do this with slotted content because we cannot project
|
|
9698
|
+
* it into 2 places at once.
|
|
9699
|
+
*
|
|
9700
|
+
* @internal
|
|
9701
|
+
* @param el: The host element
|
|
9702
|
+
* @param getNotchSpacerEl: A function that returns a reference to the notch spacer element inside of the component template.
|
|
9703
|
+
* @param getLabelSlot: A function that returns a reference to the slotted content.
|
|
9704
|
+
*/
|
|
9705
|
+
const createNotchController = (el, getNotchSpacerEl, getLabelSlot) => {
|
|
9706
|
+
let notchVisibilityIO;
|
|
9707
|
+
const needsExplicitNotchWidth = () => {
|
|
9708
|
+
const notchSpacerEl = getNotchSpacerEl();
|
|
9709
|
+
if (
|
|
9710
|
+
/**
|
|
9711
|
+
* If the notch is not being used
|
|
9712
|
+
* then we do not need to set the notch width.
|
|
9713
|
+
*/
|
|
9714
|
+
notchSpacerEl === undefined ||
|
|
9715
|
+
/**
|
|
9716
|
+
* If either the label property is being
|
|
9717
|
+
* used or the label slot is not defined,
|
|
9718
|
+
* then we do not need to estimate the notch width.
|
|
9719
|
+
*/
|
|
9720
|
+
el.label !== undefined ||
|
|
9721
|
+
getLabelSlot() === null) {
|
|
9722
|
+
return false;
|
|
9723
|
+
}
|
|
9724
|
+
return true;
|
|
9725
|
+
};
|
|
9726
|
+
const calculateNotchWidth = () => {
|
|
9727
|
+
if (needsExplicitNotchWidth()) {
|
|
9728
|
+
/**
|
|
9729
|
+
* Run this the frame after
|
|
9730
|
+
* the browser has re-painted the host element.
|
|
9731
|
+
* Otherwise, the label element may have a width
|
|
9732
|
+
* of 0 and the IntersectionObserver will be used.
|
|
9733
|
+
*/
|
|
9734
|
+
raf(() => {
|
|
9735
|
+
setNotchWidth();
|
|
9736
|
+
});
|
|
9737
|
+
}
|
|
9738
|
+
};
|
|
9739
|
+
/**
|
|
9740
|
+
* When using a label prop we can render
|
|
9741
|
+
* the label value inside of the notch and
|
|
9742
|
+
* let the browser calculate the size of the notch.
|
|
9743
|
+
* However, we cannot render the label slot in multiple
|
|
9744
|
+
* places so we need to manually calculate the notch dimension
|
|
9745
|
+
* based on the size of the slotted content.
|
|
9746
|
+
*
|
|
9747
|
+
* This function should only be used to set the notch width
|
|
9748
|
+
* on slotted label content. The notch width for label prop
|
|
9749
|
+
* content is automatically calculated based on the
|
|
9750
|
+
* intrinsic size of the label text.
|
|
9751
|
+
*/
|
|
9752
|
+
const setNotchWidth = () => {
|
|
9753
|
+
const notchSpacerEl = getNotchSpacerEl();
|
|
9754
|
+
if (notchSpacerEl === undefined) {
|
|
9755
|
+
return;
|
|
9756
|
+
}
|
|
9757
|
+
if (!needsExplicitNotchWidth()) {
|
|
9758
|
+
notchSpacerEl.style.removeProperty('width');
|
|
9759
|
+
return;
|
|
9760
|
+
}
|
|
9761
|
+
const width = getLabelSlot().scrollWidth;
|
|
9762
|
+
if (
|
|
9763
|
+
/**
|
|
9764
|
+
* If the computed width of the label is 0
|
|
9765
|
+
* and notchSpacerEl's offsetParent is null
|
|
9766
|
+
* then that means the element is hidden.
|
|
9767
|
+
* As a result, we need to wait for the element
|
|
9768
|
+
* to become visible before setting the notch width.
|
|
9769
|
+
*
|
|
9770
|
+
* We do not check el.offsetParent because
|
|
9771
|
+
* that can be null if the host element has
|
|
9772
|
+
* position: fixed applied to it.
|
|
9773
|
+
* notchSpacerEl does not have position: fixed.
|
|
9774
|
+
*/
|
|
9775
|
+
width === 0 &&
|
|
9776
|
+
notchSpacerEl.offsetParent === null &&
|
|
9777
|
+
win$1 !== undefined &&
|
|
9778
|
+
'IntersectionObserver' in win$1) {
|
|
9779
|
+
/**
|
|
9780
|
+
* If there is an IO already attached
|
|
9781
|
+
* then that will update the notch
|
|
9782
|
+
* once the element becomes visible.
|
|
9783
|
+
* As a result, there is no need to create
|
|
9784
|
+
* another one.
|
|
9785
|
+
*/
|
|
9786
|
+
if (notchVisibilityIO !== undefined) {
|
|
9787
|
+
return;
|
|
9788
|
+
}
|
|
9789
|
+
const io = (notchVisibilityIO = new IntersectionObserver((ev) => {
|
|
9790
|
+
/**
|
|
9791
|
+
* If the element is visible then we
|
|
9792
|
+
* can try setting the notch width again.
|
|
9793
|
+
*/
|
|
9794
|
+
if (ev[0].intersectionRatio === 1) {
|
|
9795
|
+
setNotchWidth();
|
|
9796
|
+
io.disconnect();
|
|
9797
|
+
notchVisibilityIO = undefined;
|
|
9798
|
+
}
|
|
9799
|
+
},
|
|
9800
|
+
/**
|
|
9801
|
+
* Set the root to be the host element
|
|
9802
|
+
* This causes the IO callback
|
|
9803
|
+
* to be fired in WebKit as soon as the element
|
|
9804
|
+
* is visible. If we used the default root value
|
|
9805
|
+
* then WebKit would only fire the IO callback
|
|
9806
|
+
* after any animations (such as a modal transition)
|
|
9807
|
+
* finished, and there would potentially be a flicker.
|
|
9808
|
+
*/
|
|
9809
|
+
{ threshold: 0.01, root: el }));
|
|
9810
|
+
io.observe(notchSpacerEl);
|
|
9811
|
+
return;
|
|
9812
|
+
}
|
|
9813
|
+
/**
|
|
9814
|
+
* If the element is visible then we can set the notch width.
|
|
9815
|
+
* The notch is only visible when the label is scaled,
|
|
9816
|
+
* which is why we multiply the width by 0.75 as this is
|
|
9817
|
+
* the same amount the label element is scaled by in the host CSS.
|
|
9818
|
+
* (See $form-control-label-stacked-scale in ionic.globals.scss).
|
|
9819
|
+
*/
|
|
9820
|
+
notchSpacerEl.style.setProperty('width', `${width * 0.75}px`);
|
|
9821
|
+
};
|
|
9822
|
+
const destroy = () => {
|
|
9823
|
+
if (notchVisibilityIO) {
|
|
9824
|
+
notchVisibilityIO.disconnect();
|
|
9825
|
+
notchVisibilityIO = undefined;
|
|
9826
|
+
}
|
|
9827
|
+
};
|
|
9828
|
+
return {
|
|
9829
|
+
calculateNotchWidth,
|
|
9830
|
+
destroy,
|
|
9831
|
+
};
|
|
9832
|
+
};
|
|
9833
|
+
|
|
9834
|
+
/**
|
|
9835
|
+
* Uses the compareWith param to compare two values to determine if they are equal.
|
|
9836
|
+
*
|
|
9837
|
+
* @param currentValue The current value of the control.
|
|
9838
|
+
* @param compareValue The value to compare against.
|
|
9839
|
+
* @param compareWith The function or property name to use to compare values.
|
|
9840
|
+
*/
|
|
9841
|
+
const compareOptions = (currentValue, compareValue, compareWith) => {
|
|
9842
|
+
if (typeof compareWith === 'function') {
|
|
9843
|
+
return compareWith(currentValue, compareValue);
|
|
9844
|
+
}
|
|
9845
|
+
else if (typeof compareWith === 'string') {
|
|
9846
|
+
return currentValue[compareWith] === compareValue[compareWith];
|
|
9847
|
+
}
|
|
9848
|
+
else {
|
|
9849
|
+
return Array.isArray(compareValue) ? compareValue.includes(currentValue) : currentValue === compareValue;
|
|
9850
|
+
}
|
|
9851
|
+
};
|
|
9852
|
+
/**
|
|
9853
|
+
* Compares a value against the current value(s) to determine if it is selected.
|
|
9854
|
+
*
|
|
9855
|
+
* @param currentValue The current value of the control.
|
|
9856
|
+
* @param compareValue The value to compare against.
|
|
9857
|
+
* @param compareWith The function or property name to use to compare values.
|
|
9858
|
+
*/
|
|
9859
|
+
const isOptionSelected = (currentValue, compareValue, compareWith) => {
|
|
9860
|
+
if (currentValue === undefined) {
|
|
9861
|
+
return false;
|
|
9862
|
+
}
|
|
9863
|
+
if (Array.isArray(currentValue)) {
|
|
9864
|
+
return currentValue.some((val) => compareOptions(val, compareValue, compareWith));
|
|
9865
|
+
}
|
|
9866
|
+
else {
|
|
9867
|
+
return compareOptions(currentValue, compareValue, compareWith);
|
|
9868
|
+
}
|
|
9869
|
+
};
|
|
9870
|
+
|
|
9871
|
+
/**
|
|
9872
|
+
* Checks if the form element is in an invalid state based on
|
|
9873
|
+
* Ionic validation classes.
|
|
9874
|
+
*
|
|
9875
|
+
* @param el The form element to check.
|
|
9876
|
+
* @returns `true` if the element is invalid, `false` otherwise.
|
|
9877
|
+
*/
|
|
9878
|
+
const checkInvalidState = (el) => {
|
|
9879
|
+
const hasIonTouched = el.classList.contains('ion-touched');
|
|
9880
|
+
const hasIonInvalid = el.classList.contains('ion-invalid');
|
|
9881
|
+
return hasIonTouched && hasIonInvalid;
|
|
9882
|
+
};
|
|
9883
|
+
|
|
9725
9884
|
const checkboxIosCss = ":host{--checkbox-background-checked:var(--ion-color-primary, #0054e9);--border-color-checked:var(--ion-color-primary, #0054e9);--checkmark-color:var(--ion-color-primary-contrast, #fff);--transition:none;display:inline-block;position:relative;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:2}:host(.in-item){-ms-flex:1 1 0px;flex:1 1 0;width:100%;height:100%}:host([slot=start]),:host([slot=end]){-ms-flex:initial;flex:initial;width:auto}:host(.ion-color){--checkbox-background-checked:var(--ion-color-base);--border-color-checked:var(--ion-color-base);--checkmark-color:var(--ion-color-contrast)}.checkbox-wrapper{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;height:inherit;cursor:inherit}.label-text-wrapper{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host(.in-item) .label-text-wrapper,:host(.in-item:not(.checkbox-label-placement-stacked):not([slot])) .native-wrapper{margin-top:10px;margin-bottom:10px}:host(.in-item.checkbox-label-placement-stacked) .label-text-wrapper{margin-top:10px;margin-bottom:16px}:host(.in-item.checkbox-label-placement-stacked) .native-wrapper{margin-bottom:10px}.label-text-wrapper-hidden{display:none}input{display:none}.native-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.checkbox-icon{border-radius:var(--border-radius);position:relative;width:var(--size);height:var(--size);-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--checkbox-background);-webkit-box-sizing:border-box;box-sizing:border-box}.checkbox-icon path{fill:none;stroke:var(--checkmark-color);stroke-width:var(--checkmark-width);opacity:0}.checkbox-bottom{padding-top:4px;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;font-size:0.75rem;white-space:normal}:host(.checkbox-label-placement-stacked) .checkbox-bottom{font-size:1rem}.checkbox-bottom .error-text{display:none;color:var(--ion-color-danger, #c5000f)}.checkbox-bottom .helper-text{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}:host(.ion-touched.ion-invalid) .checkbox-bottom .error-text{display:block}:host(.ion-touched.ion-invalid) .checkbox-bottom .helper-text{display:none}:host(.checkbox-label-placement-start) .checkbox-wrapper{-ms-flex-direction:row;flex-direction:row}:host(.checkbox-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px}:host(.checkbox-label-placement-end) .checkbox-wrapper{-ms-flex-direction:row-reverse;flex-direction:row-reverse;-ms-flex-pack:start;justify-content:start}:host(.checkbox-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0}:host(.checkbox-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px}:host(.checkbox-label-placement-fixed) .label-text-wrapper{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}:host(.checkbox-label-placement-stacked) .checkbox-wrapper{-ms-flex-direction:column;flex-direction:column;text-align:center}:host(.checkbox-label-placement-stacked) .label-text-wrapper{-webkit-transform:scale(0.75);transform:scale(0.75);margin-left:0;margin-right:0;margin-bottom:16px;max-width:calc(100% / 0.75)}:host(.checkbox-label-placement-stacked.checkbox-alignment-start) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top}:host-context([dir=rtl]):host(.checkbox-label-placement-stacked.checkbox-alignment-start) .label-text-wrapper,:host-context([dir=rtl]).checkbox-label-placement-stacked.checkbox-alignment-start .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){:host(.checkbox-label-placement-stacked.checkbox-alignment-start:dir(rtl)) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}}:host(.checkbox-label-placement-stacked.checkbox-alignment-center) .label-text-wrapper{-webkit-transform-origin:center top;transform-origin:center top}:host-context([dir=rtl]):host(.checkbox-label-placement-stacked.checkbox-alignment-center) .label-text-wrapper,:host-context([dir=rtl]).checkbox-label-placement-stacked.checkbox-alignment-center .label-text-wrapper{-webkit-transform-origin:calc(100% - center) top;transform-origin:calc(100% - center) top}@supports selector(:dir(rtl)){:host(.checkbox-label-placement-stacked.checkbox-alignment-center:dir(rtl)) .label-text-wrapper{-webkit-transform-origin:calc(100% - center) top;transform-origin:calc(100% - center) top}}:host(.checkbox-justify-space-between) .checkbox-wrapper{-ms-flex-pack:justify;justify-content:space-between}:host(.checkbox-justify-start) .checkbox-wrapper{-ms-flex-pack:start;justify-content:start}:host(.checkbox-justify-end) .checkbox-wrapper{-ms-flex-pack:end;justify-content:end}:host(.checkbox-alignment-start) .checkbox-wrapper{-ms-flex-align:start;align-items:start}:host(.checkbox-alignment-center) .checkbox-wrapper{-ms-flex-align:center;align-items:center}:host(.checkbox-justify-space-between),:host(.checkbox-justify-start),:host(.checkbox-justify-end),:host(.checkbox-alignment-start),:host(.checkbox-alignment-center){display:block}:host(.checkbox-checked) .checkbox-icon,:host(.checkbox-indeterminate) .checkbox-icon{border-color:var(--border-color-checked);background:var(--checkbox-background-checked)}:host(.checkbox-checked) .checkbox-icon path,:host(.checkbox-indeterminate) .checkbox-icon path{opacity:1}:host(.checkbox-disabled){pointer-events:none}:host{--border-radius:50%;--border-width:0.125rem;--border-style:solid;--border-color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.23);--checkbox-background:var(--ion-item-background, var(--ion-background-color, #fff));--size:min(1.375rem, 55.836px);--checkmark-width:1.5px}:host(.checkbox-disabled){opacity:0.3}";
|
|
9726
9885
|
|
|
9727
9886
|
const checkboxMdCss = ":host{--checkbox-background-checked:var(--ion-color-primary, #0054e9);--border-color-checked:var(--ion-color-primary, #0054e9);--checkmark-color:var(--ion-color-primary-contrast, #fff);--transition:none;display:inline-block;position:relative;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:2}:host(.in-item){-ms-flex:1 1 0px;flex:1 1 0;width:100%;height:100%}:host([slot=start]),:host([slot=end]){-ms-flex:initial;flex:initial;width:auto}:host(.ion-color){--checkbox-background-checked:var(--ion-color-base);--border-color-checked:var(--ion-color-base);--checkmark-color:var(--ion-color-contrast)}.checkbox-wrapper{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;height:inherit;cursor:inherit}.label-text-wrapper{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host(.in-item) .label-text-wrapper,:host(.in-item:not(.checkbox-label-placement-stacked):not([slot])) .native-wrapper{margin-top:10px;margin-bottom:10px}:host(.in-item.checkbox-label-placement-stacked) .label-text-wrapper{margin-top:10px;margin-bottom:16px}:host(.in-item.checkbox-label-placement-stacked) .native-wrapper{margin-bottom:10px}.label-text-wrapper-hidden{display:none}input{display:none}.native-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.checkbox-icon{border-radius:var(--border-radius);position:relative;width:var(--size);height:var(--size);-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--checkbox-background);-webkit-box-sizing:border-box;box-sizing:border-box}.checkbox-icon path{fill:none;stroke:var(--checkmark-color);stroke-width:var(--checkmark-width);opacity:0}.checkbox-bottom{padding-top:4px;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;font-size:0.75rem;white-space:normal}:host(.checkbox-label-placement-stacked) .checkbox-bottom{font-size:1rem}.checkbox-bottom .error-text{display:none;color:var(--ion-color-danger, #c5000f)}.checkbox-bottom .helper-text{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}:host(.ion-touched.ion-invalid) .checkbox-bottom .error-text{display:block}:host(.ion-touched.ion-invalid) .checkbox-bottom .helper-text{display:none}:host(.checkbox-label-placement-start) .checkbox-wrapper{-ms-flex-direction:row;flex-direction:row}:host(.checkbox-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px}:host(.checkbox-label-placement-end) .checkbox-wrapper{-ms-flex-direction:row-reverse;flex-direction:row-reverse;-ms-flex-pack:start;justify-content:start}:host(.checkbox-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0}:host(.checkbox-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px}:host(.checkbox-label-placement-fixed) .label-text-wrapper{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}:host(.checkbox-label-placement-stacked) .checkbox-wrapper{-ms-flex-direction:column;flex-direction:column;text-align:center}:host(.checkbox-label-placement-stacked) .label-text-wrapper{-webkit-transform:scale(0.75);transform:scale(0.75);margin-left:0;margin-right:0;margin-bottom:16px;max-width:calc(100% / 0.75)}:host(.checkbox-label-placement-stacked.checkbox-alignment-start) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top}:host-context([dir=rtl]):host(.checkbox-label-placement-stacked.checkbox-alignment-start) .label-text-wrapper,:host-context([dir=rtl]).checkbox-label-placement-stacked.checkbox-alignment-start .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){:host(.checkbox-label-placement-stacked.checkbox-alignment-start:dir(rtl)) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}}:host(.checkbox-label-placement-stacked.checkbox-alignment-center) .label-text-wrapper{-webkit-transform-origin:center top;transform-origin:center top}:host-context([dir=rtl]):host(.checkbox-label-placement-stacked.checkbox-alignment-center) .label-text-wrapper,:host-context([dir=rtl]).checkbox-label-placement-stacked.checkbox-alignment-center .label-text-wrapper{-webkit-transform-origin:calc(100% - center) top;transform-origin:calc(100% - center) top}@supports selector(:dir(rtl)){:host(.checkbox-label-placement-stacked.checkbox-alignment-center:dir(rtl)) .label-text-wrapper{-webkit-transform-origin:calc(100% - center) top;transform-origin:calc(100% - center) top}}:host(.checkbox-justify-space-between) .checkbox-wrapper{-ms-flex-pack:justify;justify-content:space-between}:host(.checkbox-justify-start) .checkbox-wrapper{-ms-flex-pack:start;justify-content:start}:host(.checkbox-justify-end) .checkbox-wrapper{-ms-flex-pack:end;justify-content:end}:host(.checkbox-alignment-start) .checkbox-wrapper{-ms-flex-align:start;align-items:start}:host(.checkbox-alignment-center) .checkbox-wrapper{-ms-flex-align:center;align-items:center}:host(.checkbox-justify-space-between),:host(.checkbox-justify-start),:host(.checkbox-justify-end),:host(.checkbox-alignment-start),:host(.checkbox-alignment-center){display:block}:host(.checkbox-checked) .checkbox-icon,:host(.checkbox-indeterminate) .checkbox-icon{border-color:var(--border-color-checked);background:var(--checkbox-background-checked)}:host(.checkbox-checked) .checkbox-icon path,:host(.checkbox-indeterminate) .checkbox-icon path{opacity:1}:host(.checkbox-disabled){pointer-events:none}:host{--border-radius:calc(var(--size) * .125);--border-width:2px;--border-style:solid;--border-color:rgb(var(--ion-text-color-rgb, 0, 0, 0), 0.6);--checkmark-width:3;--checkbox-background:var(--ion-item-background, var(--ion-background-color, #fff));--transition:background 180ms cubic-bezier(0.4, 0, 0.2, 1);--size:18px}.checkbox-icon path{stroke-dasharray:30;stroke-dashoffset:30}:host(.checkbox-checked) .checkbox-icon path,:host(.checkbox-indeterminate) .checkbox-icon path{stroke-dashoffset:0;-webkit-transition:stroke-dashoffset 90ms linear 90ms;transition:stroke-dashoffset 90ms linear 90ms}:host(.checkbox-disabled) .label-text-wrapper{opacity:0.38}:host(.checkbox-disabled) .native-wrapper{opacity:0.63}";
|
|
@@ -9787,6 +9946,10 @@ class Checkbox {
|
|
|
9787
9946
|
* submitting if the value is invalid.
|
|
9788
9947
|
*/
|
|
9789
9948
|
this.required = false;
|
|
9949
|
+
/**
|
|
9950
|
+
* Track validation state for proper aria-live announcements.
|
|
9951
|
+
*/
|
|
9952
|
+
this.isInvalid = false;
|
|
9790
9953
|
/**
|
|
9791
9954
|
* Sets the checked property and emits
|
|
9792
9955
|
* the ionChange event. Use this to update the
|
|
@@ -9833,16 +9996,29 @@ class Checkbox {
|
|
|
9833
9996
|
ev.stopPropagation();
|
|
9834
9997
|
};
|
|
9835
9998
|
}
|
|
9999
|
+
connectedCallback() {
|
|
10000
|
+
const { el } = this;
|
|
10001
|
+
// Always set initial state
|
|
10002
|
+
this.isInvalid = checkInvalidState(el);
|
|
10003
|
+
}
|
|
9836
10004
|
componentWillLoad() {
|
|
9837
10005
|
this.inheritedAttributes = Object.assign({}, inheritAriaAttributes(this.el));
|
|
10006
|
+
this.hintTextId = this.getHintTextId();
|
|
10007
|
+
}
|
|
10008
|
+
disconnectedCallback() {
|
|
10009
|
+
// Clean up validation observer to prevent memory leaks.
|
|
10010
|
+
if (this.validationObserver) {
|
|
10011
|
+
this.validationObserver.disconnect();
|
|
10012
|
+
this.validationObserver = undefined;
|
|
10013
|
+
}
|
|
9838
10014
|
}
|
|
9839
10015
|
/** @internal */
|
|
9840
10016
|
async setFocus() {
|
|
9841
10017
|
this.el.focus();
|
|
9842
10018
|
}
|
|
9843
|
-
|
|
9844
|
-
const {
|
|
9845
|
-
if (
|
|
10019
|
+
getHintTextId() {
|
|
10020
|
+
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
|
|
10021
|
+
if (isInvalid && errorText) {
|
|
9846
10022
|
return errorTextId;
|
|
9847
10023
|
}
|
|
9848
10024
|
if (helperText) {
|
|
@@ -9855,7 +10031,7 @@ class Checkbox {
|
|
|
9855
10031
|
* This element should only be rendered if hint text is set.
|
|
9856
10032
|
*/
|
|
9857
10033
|
renderHintText() {
|
|
9858
|
-
const { helperText, errorText, helperTextId, errorTextId } = this;
|
|
10034
|
+
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
|
|
9859
10035
|
/**
|
|
9860
10036
|
* undefined and empty string values should
|
|
9861
10037
|
* be treated as not having helper/error text.
|
|
@@ -9864,7 +10040,7 @@ class Checkbox {
|
|
|
9864
10040
|
if (!hasHintText) {
|
|
9865
10041
|
return;
|
|
9866
10042
|
}
|
|
9867
|
-
return (hAsync("div", { class: "checkbox-bottom" }, hAsync("div", { id: helperTextId, class: "helper-text", part: "supporting-text helper-text" }, helperText), hAsync("div", { id: errorTextId, class: "error-text", part: "supporting-text error-text" }, errorText)));
|
|
10043
|
+
return (hAsync("div", { class: "checkbox-bottom" }, hAsync("div", { id: helperTextId, class: "helper-text", part: "supporting-text helper-text", "aria-live": "polite" }, !isInvalid ? helperText : null), hAsync("div", { id: errorTextId, class: "error-text", part: "supporting-text error-text", role: "alert" }, isInvalid ? errorText : null)));
|
|
9868
10044
|
}
|
|
9869
10045
|
render() {
|
|
9870
10046
|
const { color, checked, disabled, el, getSVGPath, indeterminate, inheritedAttributes, inputId, justify, labelPlacement, name, value, alignment, required, } = this;
|
|
@@ -9874,7 +10050,7 @@ class Checkbox {
|
|
|
9874
10050
|
renderHiddenInput(true, el, name, checked ? value : '', disabled);
|
|
9875
10051
|
// The host element must have a checkbox role to ensure proper VoiceOver
|
|
9876
10052
|
// support in Safari for accessibility.
|
|
9877
|
-
return (hAsync(Host, { key: '
|
|
10053
|
+
return (hAsync(Host, { key: 'ae0fbd4b21accbac132e6b85c513512ad9179394', role: "checkbox", "aria-checked": indeterminate ? 'mixed' : `${checked}`, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, "aria-labelledby": hasLabelContent ? this.inputLabelId : null, "aria-label": inheritedAttributes['aria-label'] || null, "aria-disabled": disabled ? 'true' : null, "aria-required": required ? 'true' : undefined, tabindex: disabled ? undefined : 0, onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
|
|
9878
10054
|
[mode]: true,
|
|
9879
10055
|
'in-item': hostContext('ion-item', el),
|
|
9880
10056
|
'checkbox-checked': checked,
|
|
@@ -9884,10 +10060,10 @@ class Checkbox {
|
|
|
9884
10060
|
[`checkbox-justify-${justify}`]: justify !== undefined,
|
|
9885
10061
|
[`checkbox-alignment-${alignment}`]: alignment !== undefined,
|
|
9886
10062
|
[`checkbox-label-placement-${labelPlacement}`]: true,
|
|
9887
|
-
}) }, hAsync("label", { key: '
|
|
10063
|
+
}) }, hAsync("label", { key: '7a3d7f3c27dde514f2dbf2e34f4629fad33ec3bf', class: "checkbox-wrapper", htmlFor: inputId }, hAsync("input", Object.assign({ key: '4130d77ddf034271fecccda14e101a5a809921b6', type: "checkbox", checked: checked ? true : undefined, disabled: disabled, id: inputId, onChange: this.toggleChecked, required: required }, inheritedAttributes)), hAsync("div", { key: '5daa74f4e62b0947e37764762524001ee42609d9', class: {
|
|
9888
10064
|
'label-text-wrapper': true,
|
|
9889
10065
|
'label-text-wrapper-hidden': !hasLabelContent,
|
|
9890
|
-
}, part: "label", id: this.inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: '
|
|
10066
|
+
}, part: "label", id: this.inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: '23ff66138f8c3a2f56f39113fc842d54b2f7952a' }), this.renderHintText()), hAsync("div", { key: 'ab914d9623c19fc46821d5e62db92f1192ebbe7e', class: "native-wrapper" }, hAsync("svg", { key: '66e3f4f5dcaa9756fb0e9452299954f9ed3dcb7b', class: "checkbox-icon", viewBox: "0 0 24 24", part: "container", "aria-hidden": "true" }, path)))));
|
|
9891
10067
|
}
|
|
9892
10068
|
getSVGPath(mode, indeterminate) {
|
|
9893
10069
|
let path = indeterminate ? (hAsync("path", { d: "M6 12L18 12", part: "mark" })) : (hAsync("path", { d: "M5.9,12.5l3.8,3.8l8.8-8.8", part: "mark" }));
|
|
@@ -9917,6 +10093,8 @@ class Checkbox {
|
|
|
9917
10093
|
"justify": [1],
|
|
9918
10094
|
"alignment": [1],
|
|
9919
10095
|
"required": [4],
|
|
10096
|
+
"isInvalid": [32],
|
|
10097
|
+
"hintTextId": [32],
|
|
9920
10098
|
"setFocus": [64]
|
|
9921
10099
|
},
|
|
9922
10100
|
"$listeners$": undefined,
|
|
@@ -16351,202 +16529,6 @@ class InfiniteScrollContent {
|
|
|
16351
16529
|
}; }
|
|
16352
16530
|
}
|
|
16353
16531
|
|
|
16354
|
-
/**
|
|
16355
|
-
* A utility to calculate the size of an outline notch
|
|
16356
|
-
* width relative to the content passed. This is used in
|
|
16357
|
-
* components such as `ion-select` with `fill="outline"`
|
|
16358
|
-
* where we need to pass slotted HTML content. This is not
|
|
16359
|
-
* needed when rendering plaintext content because we can
|
|
16360
|
-
* render the plaintext again hidden with `opacity: 0` inside
|
|
16361
|
-
* of the notch. As a result we can rely on the intrinsic size
|
|
16362
|
-
* of the element to correctly compute the notch width. We
|
|
16363
|
-
* cannot do this with slotted content because we cannot project
|
|
16364
|
-
* it into 2 places at once.
|
|
16365
|
-
*
|
|
16366
|
-
* @internal
|
|
16367
|
-
* @param el: The host element
|
|
16368
|
-
* @param getNotchSpacerEl: A function that returns a reference to the notch spacer element inside of the component template.
|
|
16369
|
-
* @param getLabelSlot: A function that returns a reference to the slotted content.
|
|
16370
|
-
*/
|
|
16371
|
-
const createNotchController = (el, getNotchSpacerEl, getLabelSlot) => {
|
|
16372
|
-
let notchVisibilityIO;
|
|
16373
|
-
const needsExplicitNotchWidth = () => {
|
|
16374
|
-
const notchSpacerEl = getNotchSpacerEl();
|
|
16375
|
-
if (
|
|
16376
|
-
/**
|
|
16377
|
-
* If the notch is not being used
|
|
16378
|
-
* then we do not need to set the notch width.
|
|
16379
|
-
*/
|
|
16380
|
-
notchSpacerEl === undefined ||
|
|
16381
|
-
/**
|
|
16382
|
-
* If either the label property is being
|
|
16383
|
-
* used or the label slot is not defined,
|
|
16384
|
-
* then we do not need to estimate the notch width.
|
|
16385
|
-
*/
|
|
16386
|
-
el.label !== undefined ||
|
|
16387
|
-
getLabelSlot() === null) {
|
|
16388
|
-
return false;
|
|
16389
|
-
}
|
|
16390
|
-
return true;
|
|
16391
|
-
};
|
|
16392
|
-
const calculateNotchWidth = () => {
|
|
16393
|
-
if (needsExplicitNotchWidth()) {
|
|
16394
|
-
/**
|
|
16395
|
-
* Run this the frame after
|
|
16396
|
-
* the browser has re-painted the host element.
|
|
16397
|
-
* Otherwise, the label element may have a width
|
|
16398
|
-
* of 0 and the IntersectionObserver will be used.
|
|
16399
|
-
*/
|
|
16400
|
-
raf(() => {
|
|
16401
|
-
setNotchWidth();
|
|
16402
|
-
});
|
|
16403
|
-
}
|
|
16404
|
-
};
|
|
16405
|
-
/**
|
|
16406
|
-
* When using a label prop we can render
|
|
16407
|
-
* the label value inside of the notch and
|
|
16408
|
-
* let the browser calculate the size of the notch.
|
|
16409
|
-
* However, we cannot render the label slot in multiple
|
|
16410
|
-
* places so we need to manually calculate the notch dimension
|
|
16411
|
-
* based on the size of the slotted content.
|
|
16412
|
-
*
|
|
16413
|
-
* This function should only be used to set the notch width
|
|
16414
|
-
* on slotted label content. The notch width for label prop
|
|
16415
|
-
* content is automatically calculated based on the
|
|
16416
|
-
* intrinsic size of the label text.
|
|
16417
|
-
*/
|
|
16418
|
-
const setNotchWidth = () => {
|
|
16419
|
-
const notchSpacerEl = getNotchSpacerEl();
|
|
16420
|
-
if (notchSpacerEl === undefined) {
|
|
16421
|
-
return;
|
|
16422
|
-
}
|
|
16423
|
-
if (!needsExplicitNotchWidth()) {
|
|
16424
|
-
notchSpacerEl.style.removeProperty('width');
|
|
16425
|
-
return;
|
|
16426
|
-
}
|
|
16427
|
-
const width = getLabelSlot().scrollWidth;
|
|
16428
|
-
if (
|
|
16429
|
-
/**
|
|
16430
|
-
* If the computed width of the label is 0
|
|
16431
|
-
* and notchSpacerEl's offsetParent is null
|
|
16432
|
-
* then that means the element is hidden.
|
|
16433
|
-
* As a result, we need to wait for the element
|
|
16434
|
-
* to become visible before setting the notch width.
|
|
16435
|
-
*
|
|
16436
|
-
* We do not check el.offsetParent because
|
|
16437
|
-
* that can be null if the host element has
|
|
16438
|
-
* position: fixed applied to it.
|
|
16439
|
-
* notchSpacerEl does not have position: fixed.
|
|
16440
|
-
*/
|
|
16441
|
-
width === 0 &&
|
|
16442
|
-
notchSpacerEl.offsetParent === null &&
|
|
16443
|
-
win$1 !== undefined &&
|
|
16444
|
-
'IntersectionObserver' in win$1) {
|
|
16445
|
-
/**
|
|
16446
|
-
* If there is an IO already attached
|
|
16447
|
-
* then that will update the notch
|
|
16448
|
-
* once the element becomes visible.
|
|
16449
|
-
* As a result, there is no need to create
|
|
16450
|
-
* another one.
|
|
16451
|
-
*/
|
|
16452
|
-
if (notchVisibilityIO !== undefined) {
|
|
16453
|
-
return;
|
|
16454
|
-
}
|
|
16455
|
-
const io = (notchVisibilityIO = new IntersectionObserver((ev) => {
|
|
16456
|
-
/**
|
|
16457
|
-
* If the element is visible then we
|
|
16458
|
-
* can try setting the notch width again.
|
|
16459
|
-
*/
|
|
16460
|
-
if (ev[0].intersectionRatio === 1) {
|
|
16461
|
-
setNotchWidth();
|
|
16462
|
-
io.disconnect();
|
|
16463
|
-
notchVisibilityIO = undefined;
|
|
16464
|
-
}
|
|
16465
|
-
},
|
|
16466
|
-
/**
|
|
16467
|
-
* Set the root to be the host element
|
|
16468
|
-
* This causes the IO callback
|
|
16469
|
-
* to be fired in WebKit as soon as the element
|
|
16470
|
-
* is visible. If we used the default root value
|
|
16471
|
-
* then WebKit would only fire the IO callback
|
|
16472
|
-
* after any animations (such as a modal transition)
|
|
16473
|
-
* finished, and there would potentially be a flicker.
|
|
16474
|
-
*/
|
|
16475
|
-
{ threshold: 0.01, root: el }));
|
|
16476
|
-
io.observe(notchSpacerEl);
|
|
16477
|
-
return;
|
|
16478
|
-
}
|
|
16479
|
-
/**
|
|
16480
|
-
* If the element is visible then we can set the notch width.
|
|
16481
|
-
* The notch is only visible when the label is scaled,
|
|
16482
|
-
* which is why we multiply the width by 0.75 as this is
|
|
16483
|
-
* the same amount the label element is scaled by in the host CSS.
|
|
16484
|
-
* (See $form-control-label-stacked-scale in ionic.globals.scss).
|
|
16485
|
-
*/
|
|
16486
|
-
notchSpacerEl.style.setProperty('width', `${width * 0.75}px`);
|
|
16487
|
-
};
|
|
16488
|
-
const destroy = () => {
|
|
16489
|
-
if (notchVisibilityIO) {
|
|
16490
|
-
notchVisibilityIO.disconnect();
|
|
16491
|
-
notchVisibilityIO = undefined;
|
|
16492
|
-
}
|
|
16493
|
-
};
|
|
16494
|
-
return {
|
|
16495
|
-
calculateNotchWidth,
|
|
16496
|
-
destroy,
|
|
16497
|
-
};
|
|
16498
|
-
};
|
|
16499
|
-
|
|
16500
|
-
/**
|
|
16501
|
-
* Uses the compareWith param to compare two values to determine if they are equal.
|
|
16502
|
-
*
|
|
16503
|
-
* @param currentValue The current value of the control.
|
|
16504
|
-
* @param compareValue The value to compare against.
|
|
16505
|
-
* @param compareWith The function or property name to use to compare values.
|
|
16506
|
-
*/
|
|
16507
|
-
const compareOptions = (currentValue, compareValue, compareWith) => {
|
|
16508
|
-
if (typeof compareWith === 'function') {
|
|
16509
|
-
return compareWith(currentValue, compareValue);
|
|
16510
|
-
}
|
|
16511
|
-
else if (typeof compareWith === 'string') {
|
|
16512
|
-
return currentValue[compareWith] === compareValue[compareWith];
|
|
16513
|
-
}
|
|
16514
|
-
else {
|
|
16515
|
-
return Array.isArray(compareValue) ? compareValue.includes(currentValue) : currentValue === compareValue;
|
|
16516
|
-
}
|
|
16517
|
-
};
|
|
16518
|
-
/**
|
|
16519
|
-
* Compares a value against the current value(s) to determine if it is selected.
|
|
16520
|
-
*
|
|
16521
|
-
* @param currentValue The current value of the control.
|
|
16522
|
-
* @param compareValue The value to compare against.
|
|
16523
|
-
* @param compareWith The function or property name to use to compare values.
|
|
16524
|
-
*/
|
|
16525
|
-
const isOptionSelected = (currentValue, compareValue, compareWith) => {
|
|
16526
|
-
if (currentValue === undefined) {
|
|
16527
|
-
return false;
|
|
16528
|
-
}
|
|
16529
|
-
if (Array.isArray(currentValue)) {
|
|
16530
|
-
return currentValue.some((val) => compareOptions(val, compareValue, compareWith));
|
|
16531
|
-
}
|
|
16532
|
-
else {
|
|
16533
|
-
return compareOptions(currentValue, compareValue, compareWith);
|
|
16534
|
-
}
|
|
16535
|
-
};
|
|
16536
|
-
|
|
16537
|
-
/**
|
|
16538
|
-
* Checks if the form element is in an invalid state based on
|
|
16539
|
-
* Ionic validation classes.
|
|
16540
|
-
*
|
|
16541
|
-
* @param el The form element to check.
|
|
16542
|
-
* @returns `true` if the element is invalid, `false` otherwise.
|
|
16543
|
-
*/
|
|
16544
|
-
const checkInvalidState = (el) => {
|
|
16545
|
-
const hasIonTouched = el.classList.contains('ion-touched');
|
|
16546
|
-
const hasIonInvalid = el.classList.contains('ion-invalid');
|
|
16547
|
-
return hasIonTouched && hasIonInvalid;
|
|
16548
|
-
};
|
|
16549
|
-
|
|
16550
16532
|
/**
|
|
16551
16533
|
* Used to update a scoped component that uses emulated slots. This fires when
|
|
16552
16534
|
* content is passed into the slot or when the content inside of a slot changes.
|
|
@@ -16741,7 +16723,7 @@ class Input {
|
|
|
16741
16723
|
/**
|
|
16742
16724
|
* Whether auto correction should be enabled when the user is entering/editing the text value.
|
|
16743
16725
|
*/
|
|
16744
|
-
this.autocorrect =
|
|
16726
|
+
this.autocorrect = 'off';
|
|
16745
16727
|
/**
|
|
16746
16728
|
* Sets the [`autofocus` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus) on the native input element.
|
|
16747
16729
|
*
|
|
@@ -17171,7 +17153,7 @@ class Input {
|
|
|
17171
17153
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
17172
17154
|
*/
|
|
17173
17155
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
|
|
17174
|
-
return (hAsync(Host, { key: '
|
|
17156
|
+
return (hAsync(Host, { key: '97b5308021064d9e7434ef2d3d96f27045c1b0c4', class: createColorClasses$1(this.color, {
|
|
17175
17157
|
[mode]: true,
|
|
17176
17158
|
'has-value': hasValue,
|
|
17177
17159
|
'has-focus': hasFocus,
|
|
@@ -17182,14 +17164,14 @@ class Input {
|
|
|
17182
17164
|
'in-item': inItem,
|
|
17183
17165
|
'in-item-color': hostContext('ion-item.ion-color', this.el),
|
|
17184
17166
|
'input-disabled': disabled,
|
|
17185
|
-
}) }, hAsync("label", { key: '
|
|
17167
|
+
}) }, hAsync("label", { key: '353f68726ce180299bd9adc81e5ff7d26a48f54f', class: "input-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: '2034b4bad04fc157f3298a1805819216b6f439d0', class: "native-wrapper", onClick: this.onLabelClick }, hAsync("slot", { key: '96bb5e30176b2bd76dfb75bfbf6c1c3d4403f4bb', name: "start" }), hAsync("input", Object.assign({ key: '1a1d75b0e414a95c89d5a760757c33548d234aca', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd, "aria-describedby": this.getHintTextID(), "aria-invalid": this.isInvalid ? 'true' : undefined }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (hAsync("button", { key: '95f3df17b7691d9a2e7dcd4a51f16a94aa3ca36f', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
|
|
17186
17168
|
/**
|
|
17187
17169
|
* This prevents mobile browsers from
|
|
17188
17170
|
* blurring the input when the clear
|
|
17189
17171
|
* button is activated.
|
|
17190
17172
|
*/
|
|
17191
17173
|
ev.preventDefault();
|
|
17192
|
-
}, onClick: this.clearTextInput }, hAsync("ion-icon", { key: '
|
|
17174
|
+
}, onClick: this.clearTextInput }, hAsync("ion-icon", { key: '16b0af75eed50c8115fb5597f73b5fbf71c2530e', "aria-hidden": "true", icon: clearIconData }))), hAsync("slot", { key: 'c48da0f8ddb3764ac43efa705bb4a6bb2d9cc2fd', name: "end" })), shouldRenderHighlight && hAsync("div", { key: 'f15238481fc20de56ca7ecb6e350b3c024cc755e', class: "input-highlight" })), this.renderBottomContent()));
|
|
17193
17175
|
}
|
|
17194
17176
|
get el() { return getElement(this); }
|
|
17195
17177
|
static get watchers() { return {
|
|
@@ -17209,7 +17191,7 @@ class Input {
|
|
|
17209
17191
|
"color": [513],
|
|
17210
17192
|
"autocapitalize": [1],
|
|
17211
17193
|
"autocomplete": [1],
|
|
17212
|
-
"autocorrect": [
|
|
17194
|
+
"autocorrect": [1],
|
|
17213
17195
|
"autofocus": [4],
|
|
17214
17196
|
"clearInput": [4, "clear-input"],
|
|
17215
17197
|
"clearInputIcon": [1, "clear-input-icon"],
|
|
@@ -28088,6 +28070,10 @@ class RadioGroup {
|
|
|
28088
28070
|
this.helperTextId = `${this.inputId}-helper-text`;
|
|
28089
28071
|
this.errorTextId = `${this.inputId}-error-text`;
|
|
28090
28072
|
this.labelId = `${this.inputId}-lbl`;
|
|
28073
|
+
/**
|
|
28074
|
+
* Track validation state for proper aria-live announcements.
|
|
28075
|
+
*/
|
|
28076
|
+
this.isInvalid = false;
|
|
28091
28077
|
/**
|
|
28092
28078
|
* If `true`, the radios can be deselected.
|
|
28093
28079
|
*/
|
|
@@ -28169,6 +28155,18 @@ class RadioGroup {
|
|
|
28169
28155
|
this.labelId = label.id = this.name + '-lbl';
|
|
28170
28156
|
}
|
|
28171
28157
|
}
|
|
28158
|
+
// Always set initial state
|
|
28159
|
+
this.isInvalid = checkInvalidState(this.el);
|
|
28160
|
+
}
|
|
28161
|
+
componentWillLoad() {
|
|
28162
|
+
this.hintTextId = this.getHintTextId();
|
|
28163
|
+
}
|
|
28164
|
+
disconnectedCallback() {
|
|
28165
|
+
// Clean up validation observer to prevent memory leaks.
|
|
28166
|
+
if (this.validationObserver) {
|
|
28167
|
+
this.validationObserver.disconnect();
|
|
28168
|
+
this.validationObserver = undefined;
|
|
28169
|
+
}
|
|
28172
28170
|
}
|
|
28173
28171
|
getRadios() {
|
|
28174
28172
|
return Array.from(this.el.querySelectorAll('ion-radio'));
|
|
@@ -28244,16 +28242,16 @@ class RadioGroup {
|
|
|
28244
28242
|
* Renders the helper text or error text values
|
|
28245
28243
|
*/
|
|
28246
28244
|
renderHintText() {
|
|
28247
|
-
const { helperText, errorText, helperTextId, errorTextId } = this;
|
|
28245
|
+
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
|
|
28248
28246
|
const hasHintText = !!helperText || !!errorText;
|
|
28249
28247
|
if (!hasHintText) {
|
|
28250
28248
|
return;
|
|
28251
28249
|
}
|
|
28252
|
-
return (hAsync("div", { class: "radio-group-top" }, hAsync("div", { id: helperTextId, class: "helper-text" }, helperText), hAsync("div", { id: errorTextId, class: "error-text" }, errorText)));
|
|
28250
|
+
return (hAsync("div", { class: "radio-group-top" }, hAsync("div", { id: helperTextId, class: "helper-text", "aria-live": "polite" }, !isInvalid ? helperText : null), hAsync("div", { id: errorTextId, class: "error-text", role: "alert" }, isInvalid ? errorText : null)));
|
|
28253
28251
|
}
|
|
28254
|
-
|
|
28255
|
-
const {
|
|
28256
|
-
if (
|
|
28252
|
+
getHintTextId() {
|
|
28253
|
+
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
|
|
28254
|
+
if (isInvalid && errorText) {
|
|
28257
28255
|
return errorTextId;
|
|
28258
28256
|
}
|
|
28259
28257
|
if (helperText) {
|
|
@@ -28265,7 +28263,7 @@ class RadioGroup {
|
|
|
28265
28263
|
const { label, labelId, el, name, value } = this;
|
|
28266
28264
|
const mode = getIonMode$1(this);
|
|
28267
28265
|
renderHiddenInput(true, el, name, value, false);
|
|
28268
|
-
return (hAsync(Host, { key: '
|
|
28266
|
+
return (hAsync(Host, { key: 'db593b3ed511e9395e3c7bfd91b787328692cd6d', role: "radiogroup", "aria-labelledby": label ? labelId : null, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, onClick: this.onClick, class: mode }, this.renderHintText(), hAsync("div", { key: '85045b45a0100a45f3b9a35d1c5a25ec63d525c4', class: "radio-group-wrapper" }, hAsync("slot", { key: '53dacb87ce62398e78771fb2efaf839ab922d946' }))));
|
|
28269
28267
|
}
|
|
28270
28268
|
get el() { return getElement(this); }
|
|
28271
28269
|
static get watchers() { return {
|
|
@@ -28285,6 +28283,8 @@ class RadioGroup {
|
|
|
28285
28283
|
"value": [1032],
|
|
28286
28284
|
"helperText": [1, "helper-text"],
|
|
28287
28285
|
"errorText": [1, "error-text"],
|
|
28286
|
+
"isInvalid": [32],
|
|
28287
|
+
"hintTextId": [32],
|
|
28288
28288
|
"setFocus": [64]
|
|
28289
28289
|
},
|
|
28290
28290
|
"$listeners$": [[4, "keydown", "onKeydown"]],
|
|
@@ -31898,7 +31898,7 @@ class Searchbar {
|
|
|
31898
31898
|
/**
|
|
31899
31899
|
* Set the input's autocorrect property.
|
|
31900
31900
|
*/
|
|
31901
|
-
this.autocorrect =
|
|
31901
|
+
this.autocorrect = 'off';
|
|
31902
31902
|
/**
|
|
31903
31903
|
* Set the cancel button icon. Only applies to `md` mode.
|
|
31904
31904
|
* Defaults to `arrow-back-sharp`.
|
|
@@ -32287,8 +32287,8 @@ class Searchbar {
|
|
|
32287
32287
|
const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
|
|
32288
32288
|
const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
|
|
32289
32289
|
const shouldShowCancelButton = this.shouldShowCancelButton();
|
|
32290
|
-
const cancelButton = this.showCancelButton !== 'never' && (hAsync("button", { key: '
|
|
32291
|
-
return (hAsync(Host, { key: '
|
|
32290
|
+
const cancelButton = this.showCancelButton !== 'never' && (hAsync("button", { key: '19e18775856db87daeb4b9e3d7bca0461915a0df', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: mode === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, hAsync("div", { key: 'b3bbdcc033f3bd3441d619e4a252cef0dad4d07e', "aria-hidden": "true" }, mode === 'md' ? (hAsync("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
|
|
32291
|
+
return (hAsync(Host, { key: '074aa60e051bfb3225e87d44bbb6346c59c73574', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
|
|
32292
32292
|
[mode]: true,
|
|
32293
32293
|
'searchbar-animated': animated,
|
|
32294
32294
|
'searchbar-disabled': this.disabled,
|
|
@@ -32298,14 +32298,14 @@ class Searchbar {
|
|
|
32298
32298
|
'searchbar-has-focus': this.focused,
|
|
32299
32299
|
'searchbar-should-show-clear': this.shouldShowClearButton(),
|
|
32300
32300
|
'searchbar-should-show-cancel': this.shouldShowCancelButton(),
|
|
32301
|
-
}) }, hAsync("div", { key: '
|
|
32301
|
+
}) }, hAsync("div", { key: '54f58a79fe36e85d9295157303f1be89c98bbdaf', class: "searchbar-input-container" }, hAsync("input", Object.assign({ key: 'f991a37fcf54d26b7ad10d89084764e03d97b9de', "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)), mode === 'md' && cancelButton, hAsync("ion-icon", { key: '8b44dd90a3292c5cf872ef16a8520675f5673494', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), hAsync("button", { key: '79d9cfed8f01268044f82811a35d323a12dca749', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
|
|
32302
32302
|
/**
|
|
32303
32303
|
* This prevents mobile browsers from
|
|
32304
32304
|
* blurring the input when the clear
|
|
32305
32305
|
* button is activated.
|
|
32306
32306
|
*/
|
|
32307
32307
|
ev.preventDefault();
|
|
32308
|
-
}, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: '
|
|
32308
|
+
}, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: 'aa3b9fa8a61f853236783ac7bcd0b113ea65ece2', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
|
|
32309
32309
|
}
|
|
32310
32310
|
get el() { return getElement(this); }
|
|
32311
32311
|
static get watchers() { return {
|
|
@@ -32327,7 +32327,7 @@ class Searchbar {
|
|
|
32327
32327
|
"animated": [4],
|
|
32328
32328
|
"autocapitalize": [1],
|
|
32329
32329
|
"autocomplete": [1],
|
|
32330
|
-
"autocorrect": [
|
|
32330
|
+
"autocorrect": [1],
|
|
32331
32331
|
"cancelButtonIcon": [1, "cancel-button-icon"],
|
|
32332
32332
|
"cancelButtonText": [1, "cancel-button-text"],
|
|
32333
32333
|
"clearIcon": [1, "clear-icon"],
|
|
@@ -33412,7 +33412,7 @@ class Select {
|
|
|
33412
33412
|
}
|
|
33413
33413
|
componentWillLoad() {
|
|
33414
33414
|
this.inheritedAttributes = inheritAttributes$1(this.el, ['aria-label']);
|
|
33415
|
-
this.
|
|
33415
|
+
this.hintTextId = this.getHintTextId();
|
|
33416
33416
|
}
|
|
33417
33417
|
componentDidLoad() {
|
|
33418
33418
|
/**
|
|
@@ -33911,9 +33911,9 @@ class Select {
|
|
|
33911
33911
|
}
|
|
33912
33912
|
renderListbox() {
|
|
33913
33913
|
const { disabled, inputId, isExpanded, required } = this;
|
|
33914
|
-
return (hAsync("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "dialog", "aria-expanded": `${isExpanded}`, "aria-describedby": this.
|
|
33914
|
+
return (hAsync("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "dialog", "aria-expanded": `${isExpanded}`, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, "aria-required": `${required}`, onFocus: this.onFocus, onBlur: this.onBlur, ref: (focusEl) => (this.focusEl = focusEl) }));
|
|
33915
33915
|
}
|
|
33916
|
-
|
|
33916
|
+
getHintTextId() {
|
|
33917
33917
|
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
|
|
33918
33918
|
if (isInvalid && errorText) {
|
|
33919
33919
|
return errorTextId;
|
|
@@ -34038,7 +34038,7 @@ class Select {
|
|
|
34038
34038
|
"isExpanded": [32],
|
|
34039
34039
|
"hasFocus": [32],
|
|
34040
34040
|
"isInvalid": [32],
|
|
34041
|
-
"
|
|
34041
|
+
"hintTextId": [32],
|
|
34042
34042
|
"open": [64]
|
|
34043
34043
|
},
|
|
34044
34044
|
"$listeners$": undefined,
|
|
@@ -36509,6 +36509,10 @@ class Toggle {
|
|
|
36509
36509
|
this.inheritedAttributes = {};
|
|
36510
36510
|
this.didLoad = false;
|
|
36511
36511
|
this.activated = false;
|
|
36512
|
+
/**
|
|
36513
|
+
* Track validation state for proper aria-live announcements.
|
|
36514
|
+
*/
|
|
36515
|
+
this.isInvalid = false;
|
|
36512
36516
|
/**
|
|
36513
36517
|
* The name of the control, which is submitted with the form data.
|
|
36514
36518
|
*/
|
|
@@ -36622,15 +36626,18 @@ class Toggle {
|
|
|
36622
36626
|
});
|
|
36623
36627
|
}
|
|
36624
36628
|
async connectedCallback() {
|
|
36629
|
+
const { didLoad, el } = this;
|
|
36625
36630
|
/**
|
|
36626
36631
|
* If we have not yet rendered
|
|
36627
36632
|
* ion-toggle, then toggleTrack is not defined.
|
|
36628
36633
|
* But if we are moving ion-toggle via appendChild,
|
|
36629
36634
|
* then toggleTrack will be defined.
|
|
36630
36635
|
*/
|
|
36631
|
-
if (
|
|
36636
|
+
if (didLoad) {
|
|
36632
36637
|
this.setupGesture();
|
|
36633
36638
|
}
|
|
36639
|
+
// Always set initial state
|
|
36640
|
+
this.isInvalid = checkInvalidState(el);
|
|
36634
36641
|
}
|
|
36635
36642
|
componentDidLoad() {
|
|
36636
36643
|
this.setupGesture();
|
|
@@ -36641,9 +36648,15 @@ class Toggle {
|
|
|
36641
36648
|
this.gesture.destroy();
|
|
36642
36649
|
this.gesture = undefined;
|
|
36643
36650
|
}
|
|
36651
|
+
// Clean up validation observer to prevent memory leaks.
|
|
36652
|
+
if (this.validationObserver) {
|
|
36653
|
+
this.validationObserver.disconnect();
|
|
36654
|
+
this.validationObserver = undefined;
|
|
36655
|
+
}
|
|
36644
36656
|
}
|
|
36645
36657
|
componentWillLoad() {
|
|
36646
36658
|
this.inheritedAttributes = Object.assign({}, inheritAriaAttributes(this.el));
|
|
36659
|
+
this.hintTextId = this.getHintTextId();
|
|
36647
36660
|
}
|
|
36648
36661
|
onStart() {
|
|
36649
36662
|
this.activated = true;
|
|
@@ -36684,9 +36697,9 @@ class Toggle {
|
|
|
36684
36697
|
get hasLabel() {
|
|
36685
36698
|
return this.el.textContent !== '';
|
|
36686
36699
|
}
|
|
36687
|
-
|
|
36688
|
-
const {
|
|
36689
|
-
if (
|
|
36700
|
+
getHintTextId() {
|
|
36701
|
+
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
|
|
36702
|
+
if (isInvalid && errorText) {
|
|
36690
36703
|
return errorTextId;
|
|
36691
36704
|
}
|
|
36692
36705
|
if (helperText) {
|
|
@@ -36699,7 +36712,7 @@ class Toggle {
|
|
|
36699
36712
|
* This element should only be rendered if hint text is set.
|
|
36700
36713
|
*/
|
|
36701
36714
|
renderHintText() {
|
|
36702
|
-
const { helperText, errorText, helperTextId, errorTextId } = this;
|
|
36715
|
+
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
|
|
36703
36716
|
/**
|
|
36704
36717
|
* undefined and empty string values should
|
|
36705
36718
|
* be treated as not having helper/error text.
|
|
@@ -36708,15 +36721,15 @@ class Toggle {
|
|
|
36708
36721
|
if (!hasHintText) {
|
|
36709
36722
|
return;
|
|
36710
36723
|
}
|
|
36711
|
-
return (hAsync("div", { class: "toggle-bottom" }, hAsync("div", { id: helperTextId, class: "helper-text", part: "supporting-text helper-text" }, helperText), hAsync("div", { id: errorTextId, class: "error-text", part: "supporting-text error-text" }, errorText)));
|
|
36724
|
+
return (hAsync("div", { class: "toggle-bottom" }, hAsync("div", { id: helperTextId, class: "helper-text", part: "supporting-text helper-text", "aria-live": "polite" }, !isInvalid ? helperText : null), hAsync("div", { id: errorTextId, class: "error-text", part: "supporting-text error-text", role: "alert" }, isInvalid ? errorText : null)));
|
|
36712
36725
|
}
|
|
36713
36726
|
render() {
|
|
36714
|
-
const { activated, alignment, checked, color, disabled, el,
|
|
36727
|
+
const { activated, alignment, checked, color, disabled, el, hasLabel, inheritedAttributes, inputId, inputLabelId, justify, labelPlacement, name, required, } = this;
|
|
36715
36728
|
const mode = getIonMode$1(this);
|
|
36716
36729
|
const value = this.getValue();
|
|
36717
36730
|
const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
|
|
36718
36731
|
renderHiddenInput(true, el, name, checked ? value : '', disabled);
|
|
36719
|
-
return (hAsync(Host, { key: '
|
|
36732
|
+
return (hAsync(Host, { key: 'f569148edd89ee041a4719ffc4733c16b05229bd', role: "switch", "aria-checked": `${checked}`, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, onClick: this.onClick, "aria-labelledby": hasLabel ? inputLabelId : null, "aria-label": inheritedAttributes['aria-label'] || null, "aria-disabled": disabled ? 'true' : null, "aria-required": required ? 'true' : undefined, tabindex: disabled ? undefined : 0, onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, class: createColorClasses$1(color, {
|
|
36720
36733
|
[mode]: true,
|
|
36721
36734
|
'in-item': hostContext('ion-item', el),
|
|
36722
36735
|
'toggle-activated': activated,
|
|
@@ -36726,10 +36739,10 @@ class Toggle {
|
|
|
36726
36739
|
[`toggle-alignment-${alignment}`]: alignment !== undefined,
|
|
36727
36740
|
[`toggle-label-placement-${labelPlacement}`]: true,
|
|
36728
36741
|
[`toggle-${rtl}`]: true,
|
|
36729
|
-
}) }, hAsync("label", { key: '
|
|
36742
|
+
}) }, hAsync("label", { key: '3027f2ac4be6de422a14486d847fbee77f615db1', class: "toggle-wrapper", htmlFor: inputId }, hAsync("input", Object.assign({ key: '4b0304c9e879e432b80184b4e5de37d55c11b436', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, required: required }, inheritedAttributes)), hAsync("div", { key: '8ef265ec942e7f01ff31cbb202ed146c6bf94e02', class: {
|
|
36730
36743
|
'label-text-wrapper': true,
|
|
36731
36744
|
'label-text-wrapper-hidden': !hasLabel,
|
|
36732
|
-
}, part: "label", id: inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: '
|
|
36745
|
+
}, part: "label", id: inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: '7b162b7dd27199cca2a4c995276a18b9f8e44aaf' }), this.renderHintText()), hAsync("div", { key: 'd13c34bd42fca01cc73ddb4ea7e471b33a282a3e', class: "native-wrapper" }, this.renderToggleControl()))));
|
|
36733
36746
|
}
|
|
36734
36747
|
get el() { return getElement(this); }
|
|
36735
36748
|
static get watchers() { return {
|
|
@@ -36755,7 +36768,9 @@ class Toggle {
|
|
|
36755
36768
|
"justify": [1],
|
|
36756
36769
|
"alignment": [1],
|
|
36757
36770
|
"required": [4],
|
|
36758
|
-
"activated": [32]
|
|
36771
|
+
"activated": [32],
|
|
36772
|
+
"isInvalid": [32],
|
|
36773
|
+
"hintTextId": [32]
|
|
36759
36774
|
},
|
|
36760
36775
|
"$listeners$": undefined,
|
|
36761
36776
|
"$lazyBundleId$": "-",
|
|
@@ -37912,7 +37927,7 @@ var NAMESPACE = (
|
|
|
37912
37927
|
);
|
|
37913
37928
|
|
|
37914
37929
|
/*
|
|
37915
|
-
Stencil Hydrate Runner v4.38.
|
|
37930
|
+
Stencil Hydrate Runner v4.38.0 | MIT Licensed | https://stenciljs.com
|
|
37916
37931
|
*/
|
|
37917
37932
|
var __defProp = Object.defineProperty;
|
|
37918
37933
|
var __export = (target, all) => {
|
|
@@ -38073,6 +38088,82 @@ var MockAttr = class {
|
|
|
38073
38088
|
}
|
|
38074
38089
|
};
|
|
38075
38090
|
|
|
38091
|
+
// src/mock-doc/class-list.ts
|
|
38092
|
+
var MockClassList = class {
|
|
38093
|
+
constructor(elm) {
|
|
38094
|
+
this.elm = elm;
|
|
38095
|
+
}
|
|
38096
|
+
add(...classNames) {
|
|
38097
|
+
const clsNames = getItems(this.elm);
|
|
38098
|
+
let updated = false;
|
|
38099
|
+
classNames.forEach((className) => {
|
|
38100
|
+
className = String(className);
|
|
38101
|
+
validateClass(className);
|
|
38102
|
+
if (clsNames.includes(className) === false) {
|
|
38103
|
+
clsNames.push(className);
|
|
38104
|
+
updated = true;
|
|
38105
|
+
}
|
|
38106
|
+
});
|
|
38107
|
+
if (updated) {
|
|
38108
|
+
this.elm.setAttributeNS(null, "class", clsNames.join(" "));
|
|
38109
|
+
}
|
|
38110
|
+
}
|
|
38111
|
+
remove(...classNames) {
|
|
38112
|
+
const clsNames = getItems(this.elm);
|
|
38113
|
+
let updated = false;
|
|
38114
|
+
classNames.forEach((className) => {
|
|
38115
|
+
className = String(className);
|
|
38116
|
+
validateClass(className);
|
|
38117
|
+
const index = clsNames.indexOf(className);
|
|
38118
|
+
if (index > -1) {
|
|
38119
|
+
clsNames.splice(index, 1);
|
|
38120
|
+
updated = true;
|
|
38121
|
+
}
|
|
38122
|
+
});
|
|
38123
|
+
if (updated) {
|
|
38124
|
+
this.elm.setAttributeNS(null, "class", clsNames.filter((c) => c.length > 0).join(" "));
|
|
38125
|
+
}
|
|
38126
|
+
}
|
|
38127
|
+
contains(className) {
|
|
38128
|
+
className = String(className);
|
|
38129
|
+
return getItems(this.elm).includes(className);
|
|
38130
|
+
}
|
|
38131
|
+
toggle(className) {
|
|
38132
|
+
className = String(className);
|
|
38133
|
+
if (this.contains(className) === true) {
|
|
38134
|
+
this.remove(className);
|
|
38135
|
+
} else {
|
|
38136
|
+
this.add(className);
|
|
38137
|
+
}
|
|
38138
|
+
}
|
|
38139
|
+
get length() {
|
|
38140
|
+
return getItems(this.elm).length;
|
|
38141
|
+
}
|
|
38142
|
+
item(index) {
|
|
38143
|
+
return getItems(this.elm)[index];
|
|
38144
|
+
}
|
|
38145
|
+
toString() {
|
|
38146
|
+
return getItems(this.elm).join(" ");
|
|
38147
|
+
}
|
|
38148
|
+
};
|
|
38149
|
+
function validateClass(className) {
|
|
38150
|
+
if (className === "") {
|
|
38151
|
+
throw new Error("The token provided must not be empty.");
|
|
38152
|
+
}
|
|
38153
|
+
if (/\s/.test(className)) {
|
|
38154
|
+
throw new Error(
|
|
38155
|
+
`The token provided ('${className}') contains HTML space characters, which are not valid in tokens.`
|
|
38156
|
+
);
|
|
38157
|
+
}
|
|
38158
|
+
}
|
|
38159
|
+
function getItems(elm) {
|
|
38160
|
+
const className = elm.getAttribute("class");
|
|
38161
|
+
if (typeof className === "string" && className.length > 0) {
|
|
38162
|
+
return className.trim().split(" ").filter((c) => c.length > 0);
|
|
38163
|
+
}
|
|
38164
|
+
return [];
|
|
38165
|
+
}
|
|
38166
|
+
|
|
38076
38167
|
// src/mock-doc/css-style-declaration.ts
|
|
38077
38168
|
var MockCSSStyleDeclaration = class {
|
|
38078
38169
|
constructor() {
|
|
@@ -48588,81 +48679,6 @@ var STRUCTURE_ELEMENTS = /* @__PURE__ */ new Set([
|
|
|
48588
48679
|
"style"
|
|
48589
48680
|
]);
|
|
48590
48681
|
|
|
48591
|
-
// src/mock-doc/token-list.ts
|
|
48592
|
-
var MockTokenList = class {
|
|
48593
|
-
constructor(elm, attr) {
|
|
48594
|
-
this.elm = elm;
|
|
48595
|
-
this.attr = attr;
|
|
48596
|
-
}
|
|
48597
|
-
add(...tokens) {
|
|
48598
|
-
const items = getItems(this.elm, this.attr);
|
|
48599
|
-
let updated = false;
|
|
48600
|
-
tokens.forEach((token) => {
|
|
48601
|
-
token = String(token);
|
|
48602
|
-
validateToken(token);
|
|
48603
|
-
if (items.includes(token) === false) {
|
|
48604
|
-
items.push(token);
|
|
48605
|
-
updated = true;
|
|
48606
|
-
}
|
|
48607
|
-
});
|
|
48608
|
-
if (updated) {
|
|
48609
|
-
this.elm.setAttributeNS(null, this.attr, items.join(" "));
|
|
48610
|
-
}
|
|
48611
|
-
}
|
|
48612
|
-
remove(...tokens) {
|
|
48613
|
-
const items = getItems(this.elm, this.attr);
|
|
48614
|
-
let updated = false;
|
|
48615
|
-
tokens.forEach((token) => {
|
|
48616
|
-
token = String(token);
|
|
48617
|
-
validateToken(token);
|
|
48618
|
-
const index = items.indexOf(token);
|
|
48619
|
-
if (index > -1) {
|
|
48620
|
-
items.splice(index, 1);
|
|
48621
|
-
updated = true;
|
|
48622
|
-
}
|
|
48623
|
-
});
|
|
48624
|
-
if (updated) {
|
|
48625
|
-
this.elm.setAttributeNS(null, this.attr, items.filter((c) => c.length > 0).join(" "));
|
|
48626
|
-
}
|
|
48627
|
-
}
|
|
48628
|
-
contains(token) {
|
|
48629
|
-
token = String(token);
|
|
48630
|
-
return getItems(this.elm, this.attr).includes(token);
|
|
48631
|
-
}
|
|
48632
|
-
toggle(token) {
|
|
48633
|
-
token = String(token);
|
|
48634
|
-
if (this.contains(token) === true) {
|
|
48635
|
-
this.remove(token);
|
|
48636
|
-
} else {
|
|
48637
|
-
this.add(token);
|
|
48638
|
-
}
|
|
48639
|
-
}
|
|
48640
|
-
get length() {
|
|
48641
|
-
return getItems(this.elm, this.attr).length;
|
|
48642
|
-
}
|
|
48643
|
-
item(index) {
|
|
48644
|
-
return getItems(this.elm, this.attr)[index];
|
|
48645
|
-
}
|
|
48646
|
-
toString() {
|
|
48647
|
-
return getItems(this.elm, this.attr).join(" ");
|
|
48648
|
-
}
|
|
48649
|
-
};
|
|
48650
|
-
function validateToken(token) {
|
|
48651
|
-
if (token === "") {
|
|
48652
|
-
throw new Error("The token provided must not be empty.");
|
|
48653
|
-
}
|
|
48654
|
-
if (/\s/.test(token)) {
|
|
48655
|
-
throw new Error(`The token provided ('${token}') contains HTML space characters, which are not valid in tokens.`);
|
|
48656
|
-
}
|
|
48657
|
-
}
|
|
48658
|
-
function getItems(elm, attr) {
|
|
48659
|
-
const value = elm.getAttribute(attr);
|
|
48660
|
-
if (typeof value === "string" && value.length > 0) {
|
|
48661
|
-
return value.trim().split(" ").filter((c) => c.length > 0);
|
|
48662
|
-
}
|
|
48663
|
-
return [];
|
|
48664
|
-
}
|
|
48665
|
-
|
|
48666
48682
|
// src/mock-doc/node.ts
|
|
48667
48683
|
var MockNode2 = class {
|
|
48668
48684
|
constructor(ownerDocument, nodeType, nodeName, nodeValue) {
|
|
@@ -48930,10 +48946,7 @@ var MockElement = class extends MockNode2 {
|
|
|
48930
48946
|
this.setAttributeNS(null, "class", value);
|
|
48931
48947
|
}
|
|
48932
48948
|
get classList() {
|
|
48933
|
-
return new
|
|
48934
|
-
}
|
|
48935
|
-
get part() {
|
|
48936
|
-
return new MockTokenList(this, "part");
|
|
48949
|
+
return new MockClassList(this);
|
|
48937
48950
|
}
|
|
48938
48951
|
click() {
|
|
48939
48952
|
dispatchEvent(this, new MockEvent("click", { bubbles: true, cancelable: true, composed: true }));
|
|
@@ -51816,7 +51829,7 @@ var MockDocument = class _MockDocument extends MockHTMLElement {
|
|
|
51816
51829
|
}
|
|
51817
51830
|
set location(val) {
|
|
51818
51831
|
if (this.defaultView != null) {
|
|
51819
|
-
this.defaultView.location
|
|
51832
|
+
this.defaultView.location = val;
|
|
51820
51833
|
}
|
|
51821
51834
|
}
|
|
51822
51835
|
get baseURI() {
|