voyager-ionic-core 8.0.0-beta.1 → 8.0.0-beta.2
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/action-sheet.js +3 -3
- package/components/alert.js +2 -2
- package/components/backdrop.js +1 -1
- package/components/button.js +2 -2
- package/components/buttons.js +3 -3
- package/components/checkbox.js +3 -3
- package/components/data.js +23 -38
- package/components/hardware-back-button.js +3 -3
- package/components/helpers.js +1 -8
- package/components/input.utils.js +12 -0
- package/components/ion-app.js +4 -4
- package/components/ion-avatar.js +1 -1
- package/components/ion-back-button.js +2 -2
- package/components/ion-badge.js +2 -2
- package/components/ion-breadcrumb.js +2 -2
- package/components/ion-breadcrumbs.js +2 -2
- package/components/ion-card-content.js +1 -1
- package/components/ion-card-header.js +2 -2
- package/components/ion-card-subtitle.js +2 -2
- package/components/ion-card-title.js +2 -2
- package/components/ion-card.js +1 -1
- package/components/ion-chip.js +2 -2
- package/components/ion-col.js +2 -2
- package/components/ion-content.js +3 -3
- package/components/ion-datetime-button.js +11 -10
- package/components/ion-datetime.js +69 -7
- package/components/ion-fab-button.js +2 -2
- package/components/ion-fab-list.js +2 -2
- package/components/ion-fab.js +2 -2
- package/components/ion-footer.js +2 -2
- package/components/ion-grid.js +2 -2
- package/components/ion-header.js +2 -2
- package/components/ion-img.js +1 -1
- package/components/ion-infinite-scroll-content.js +2 -2
- package/components/ion-infinite-scroll.js +1 -1
- package/components/ion-input.js +6 -6
- package/components/ion-item-divider.js +2 -2
- package/components/ion-item-group.js +1 -1
- package/components/ion-item-option.js +2 -2
- package/components/ion-item-options.js +1 -1
- package/components/ion-item-sliding.js +1 -1
- package/components/ion-loading.js +2 -2
- package/components/ion-menu-button.js +2 -2
- package/components/ion-menu-toggle.js +2 -2
- package/components/ion-menu.js +3 -3
- package/components/ion-modal.js +3 -3
- package/components/ion-nav-link.js +1 -1
- package/components/ion-nav.js +1 -1
- package/components/ion-note.js +43 -1
- package/components/ion-picker-legacy.js +2 -2
- package/components/ion-progress-bar.js +1 -1
- package/components/ion-range.js +129 -24
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +1 -1
- package/components/ion-reorder-group.js +1 -1
- package/components/ion-reorder.js +1 -1
- package/components/ion-router-link.js +2 -2
- package/components/ion-router-outlet.js +1 -1
- package/components/ion-row.js +1 -1
- package/components/ion-searchbar.js +34 -5
- package/components/ion-segment-button.js +3 -3
- package/components/ion-segment.js +2 -2
- package/components/ion-select-option.js +1 -1
- package/components/ion-select.js +23 -29
- package/components/ion-skeleton-text.js +2 -2
- package/components/ion-split-pane.js +2 -2
- package/components/ion-tab-bar.js +2 -2
- package/components/ion-tab-button.js +2 -2
- package/components/ion-tab.js +2 -2
- package/components/ion-tabs.js +1 -1
- package/components/ion-text.js +2 -2
- package/components/ion-textarea.js +5 -5
- package/components/ion-thumbnail.js +1 -1
- package/components/ion-title.js +2 -2
- package/components/ion-toast.js +2 -2
- package/components/ion-toggle.js +3 -3
- package/components/ion-toolbar.js +2 -2
- package/components/item.js +11 -92
- package/components/label.js +5 -5
- package/components/list-header.js +2 -2
- package/components/list.js +1 -1
- package/components/overlays.js +61 -19
- package/components/picker-column-option.js +2 -2
- package/components/picker-column.js +3 -3
- package/components/picker-column2.js +2 -2
- package/components/picker.js +2 -2
- package/components/popover.js +2 -2
- package/components/radio-group.js +1 -1
- package/components/radio.js +3 -3
- package/components/ripple-effect.js +1 -1
- package/components/select-popover.js +13 -19
- package/components/spinner.js +1 -1
- package/dist/cjs/{animation-4ad55058.js → animation-3e7bb91e.js} +1 -1
- package/dist/cjs/{app-globals-4d26cb5a.js → app-globals-e132c781.js} +1 -1
- package/dist/cjs/{button-active-e447f58b.js → button-active-60ecf64d.js} +1 -1
- package/dist/cjs/{data-e2bf21de.js → data-21dc0f81.js} +22 -39
- package/dist/cjs/{framework-delegate-53817ef1.js → framework-delegate-0499d444.js} +1 -1
- package/dist/cjs/{hardware-back-button-4cb049f1.js → hardware-back-button-1c67a5a2.js} +5 -5
- package/dist/cjs/{helpers-b71ca811.js → helpers-668b3d95.js} +1 -8
- package/dist/cjs/{index-7574e3d2.js → index-275cc12e.js} +1 -1
- package/dist/cjs/{index-ea266398.js → index-2d21d526.js} +441 -12
- package/dist/cjs/{index-bbc5b1f7.js → index-ba7ba0af.js} +4 -4
- package/dist/cjs/{index-347883f6.js → index-c49cb371.js} +1 -1
- package/dist/cjs/{index-92bb95d6.js → index-e4b6c97e.js} +4 -4
- package/dist/cjs/index.cjs.js +11 -11
- package/dist/cjs/{input-shims-679d87bc.js → input-shims-b419f083.js} +2 -2
- package/dist/cjs/{input.utils-5175aea1.js → input.utils-32c0a14a.js} +13 -1
- package/dist/cjs/ion-accordion_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-action-sheet.cjs.entry.js +11 -11
- package/dist/cjs/ion-alert.cjs.entry.js +10 -10
- package/dist/cjs/ion-app_8.cjs.entry.js +29 -29
- package/dist/cjs/ion-avatar_3.cjs.entry.js +6 -6
- package/dist/cjs/ion-back-button.cjs.entry.js +5 -5
- package/dist/cjs/ion-backdrop.cjs.entry.js +3 -3
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +7 -7
- package/dist/cjs/ion-button_2.cjs.entry.js +5 -5
- package/dist/cjs/ion-card_5.cjs.entry.js +11 -11
- package/dist/cjs/ion-checkbox.cjs.entry.js +6 -6
- package/dist/cjs/ion-chip.cjs.entry.js +4 -4
- package/dist/cjs/ion-col_3.cjs.entry.js +7 -7
- package/dist/cjs/ion-datetime-button.cjs.entry.js +14 -13
- package/dist/cjs/ion-datetime_3.cjs.entry.js +77 -18
- package/dist/cjs/ion-fab_3.cjs.entry.js +9 -9
- package/dist/cjs/ion-img.cjs.entry.js +4 -4
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +7 -7
- package/dist/cjs/ion-input.cjs.entry.js +10 -10
- package/dist/cjs/ion-item-option_3.cjs.entry.js +8 -8
- package/dist/cjs/ion-item_8.cjs.entry.js +23 -92
- package/dist/cjs/ion-loading.cjs.entry.js +9 -9
- package/dist/cjs/ion-menu_3.cjs.entry.js +14 -14
- package/dist/cjs/ion-modal.cjs.entry.js +12 -12
- package/dist/cjs/ion-nav_2.cjs.entry.js +8 -8
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +5 -5
- package/dist/cjs/ion-picker-column.cjs.entry.js +6 -6
- package/dist/cjs/ion-picker.cjs.entry.js +4 -4
- package/dist/cjs/ion-popover.cjs.entry.js +10 -10
- package/dist/cjs/ion-progress-bar.cjs.entry.js +4 -4
- package/dist/cjs/ion-radio_2.cjs.entry.js +7 -7
- package/dist/cjs/ion-range.cjs.entry.js +133 -28
- package/dist/cjs/ion-refresher_2.cjs.entry.js +7 -7
- package/dist/cjs/ion-reorder_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +3 -3
- package/dist/cjs/ion-route_4.cjs.entry.js +5 -5
- package/dist/cjs/ion-searchbar.cjs.entry.js +31 -7
- package/dist/cjs/ion-segment_2.cjs.entry.js +8 -8
- package/dist/cjs/ion-select_3.cjs.entry.js +13 -13
- package/dist/cjs/ion-spinner.cjs.entry.js +3 -3
- package/dist/cjs/ion-split-pane.cjs.entry.js +4 -4
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +7 -7
- package/dist/cjs/ion-tab_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-text.cjs.entry.js +4 -4
- package/dist/cjs/ion-textarea.cjs.entry.js +9 -9
- package/dist/cjs/ion-toast.cjs.entry.js +9 -9
- package/dist/cjs/ion-toggle.cjs.entry.js +6 -6
- package/dist/cjs/{ionic-global-59aa7eb7.js → ionic-global-5762eca9.js} +1 -1
- package/dist/cjs/ionic.cjs.js +28 -5
- package/dist/cjs/{ios.transition-997fe325.js → ios.transition-3e119901.js} +4 -4
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-2b76c2c6.js → md.transition-c1392f92.js} +4 -4
- package/dist/cjs/{notch-controller-8e0ae870.js → notch-controller-08a24f39.js} +1 -1
- package/dist/cjs/{overlays-3d02b54f.js → overlays-44b8d0e0.js} +64 -22
- package/dist/cjs/{status-tap-3761c2d4.js → status-tap-32430b3e.js} +3 -3
- package/dist/cjs/{swipe-back-5b71fc62.js → swipe-back-b8484483.js} +1 -1
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/action-sheet/action-sheet.js +3 -3
- package/dist/collection/components/alert/alert.js +2 -2
- package/dist/collection/components/app/app.js +4 -4
- package/dist/collection/components/avatar/avatar.js +1 -1
- package/dist/collection/components/back-button/back-button.js +2 -2
- package/dist/collection/components/backdrop/backdrop.js +1 -1
- package/dist/collection/components/badge/badge.js +2 -2
- package/dist/collection/components/breadcrumb/breadcrumb.js +2 -2
- package/dist/collection/components/breadcrumbs/breadcrumbs.js +2 -2
- package/dist/collection/components/button/button.js +2 -2
- package/dist/collection/components/buttons/buttons.js +2 -2
- package/dist/collection/components/card/card.js +1 -1
- package/dist/collection/components/card-content/card-content.js +1 -1
- package/dist/collection/components/card-header/card-header.js +2 -2
- package/dist/collection/components/card-subtitle/card-subtitle.js +2 -2
- package/dist/collection/components/card-title/card-title.js +2 -2
- package/dist/collection/components/checkbox/checkbox.js +3 -3
- package/dist/collection/components/checkbox/test/checkbox.spec.js +12 -0
- package/dist/collection/components/chip/chip.js +2 -2
- package/dist/collection/components/col/col.js +2 -2
- package/dist/collection/components/content/content.js +3 -3
- package/dist/collection/components/datetime/datetime.js +50 -7
- package/dist/collection/components/datetime/test/basic/datetime.e2e.js +77 -0
- package/dist/collection/components/datetime/test/format.spec.js +65 -15
- package/dist/collection/components/datetime/utils/format.js +24 -37
- package/dist/collection/components/datetime/utils/validate.js +45 -0
- package/dist/collection/components/datetime-button/datetime-button.js +11 -10
- package/dist/collection/components/datetime-button/test/basic/datetime-button.e2e.js +65 -0
- package/dist/collection/components/fab/fab.js +2 -2
- package/dist/collection/components/fab-button/fab-button.js +2 -2
- package/dist/collection/components/fab-list/fab-list.js +2 -2
- package/dist/collection/components/footer/footer.js +2 -2
- package/dist/collection/components/grid/grid.js +2 -2
- package/dist/collection/components/header/header.js +2 -2
- package/dist/collection/components/img/img.js +1 -1
- package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
- package/dist/collection/components/input/input.ios.css +2 -0
- package/dist/collection/components/input/input.js +3 -3
- package/dist/collection/components/input/input.md.css +4 -2
- package/dist/collection/components/input/test/highlight/input.e2e.js +144 -0
- package/dist/collection/components/item/item.ios.css +5 -197
- package/dist/collection/components/item/item.js +4 -166
- package/dist/collection/components/item/item.md.css +7 -360
- package/dist/collection/components/item/test/basic/item.e2e.js +0 -5
- package/dist/collection/components/item/test/item.spec.js +1 -1
- package/dist/collection/components/item-divider/item-divider.js +2 -2
- package/dist/collection/components/item-group/item-group.js +1 -1
- package/dist/collection/components/item-option/item-option.js +2 -2
- package/dist/collection/components/item-options/item-options.js +1 -1
- package/dist/collection/components/item-sliding/item-sliding.js +1 -1
- package/dist/collection/components/label/label.ios.css +0 -5
- package/dist/collection/components/label/label.js +2 -2
- package/dist/collection/components/label/label.md.css +0 -75
- package/dist/collection/components/list/list.js +1 -1
- package/dist/collection/components/list-header/list-header.js +2 -2
- package/dist/collection/components/loading/loading.js +2 -2
- package/dist/collection/components/menu/menu.js +12 -6
- package/dist/collection/components/menu-button/menu-button.js +2 -2
- package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
- package/dist/collection/components/modal/modal.js +3 -3
- package/dist/collection/components/nav/nav.js +1 -1
- package/dist/collection/components/nav-link/nav-link.js +1 -1
- package/dist/collection/components/note/note.js +2 -2
- package/dist/collection/components/picker/picker.js +2 -2
- package/dist/collection/components/picker-column/picker-column.js +3 -3
- package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
- package/dist/collection/components/picker-legacy/picker.js +2 -2
- package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
- package/dist/collection/components/popover/popover.js +2 -2
- package/dist/collection/components/progress-bar/progress-bar.js +1 -1
- package/dist/collection/components/radio/radio.js +3 -3
- package/dist/collection/components/radio-group/radio-group.js +1 -1
- package/dist/collection/components/range/range.js +129 -24
- package/dist/collection/components/range/test/range-events.e2e.js +27 -0
- package/dist/collection/components/refresher/refresher.js +1 -1
- package/dist/collection/components/refresher-content/refresher-content.js +1 -1
- package/dist/collection/components/reorder/reorder.js +1 -1
- package/dist/collection/components/reorder-group/reorder-group.js +1 -1
- package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
- package/dist/collection/components/router-link/router-link.js +2 -2
- package/dist/collection/components/router-outlet/router-outlet.js +1 -1
- package/dist/collection/components/row/row.js +1 -1
- package/dist/collection/components/searchbar/searchbar.js +84 -5
- package/dist/collection/components/searchbar/test/searchbar.spec.js +20 -2
- package/dist/collection/components/segment/segment.js +2 -2
- package/dist/collection/components/segment-button/segment-button.js +3 -3
- package/dist/collection/components/select/select.ios.css +5 -0
- package/dist/collection/components/select/select.js +2 -2
- package/dist/collection/components/select/select.md.css +4 -27
- package/dist/collection/components/select/test/highlight/select.e2e.js +88 -4
- package/dist/collection/components/select-option/select-option.js +1 -1
- package/dist/collection/components/select-popover/select-popover.js +1 -1
- package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
- package/dist/collection/components/spinner/spinner.js +1 -1
- package/dist/collection/components/split-pane/split-pane.js +2 -2
- package/dist/collection/components/tab/tab.js +2 -2
- package/dist/collection/components/tab-bar/tab-bar.js +2 -2
- package/dist/collection/components/tab-button/tab-button.js +2 -2
- package/dist/collection/components/tabs/tabs.js +1 -1
- package/dist/collection/components/text/text.js +2 -2
- package/dist/collection/components/textarea/test/highlight/textarea.e2e.js +144 -0
- package/dist/collection/components/textarea/textarea.ios.css +2 -20
- package/dist/collection/components/textarea/textarea.js +2 -2
- package/dist/collection/components/textarea/textarea.md.css +4 -15
- package/dist/collection/components/thumbnail/thumbnail.js +1 -1
- package/dist/collection/components/title/title.js +2 -2
- package/dist/collection/components/toast/toast.js +2 -2
- package/dist/collection/components/toggle/toggle.js +3 -3
- package/dist/collection/components/toolbar/toolbar.js +2 -2
- package/dist/collection/utils/forms/index.js +0 -1
- package/dist/collection/utils/hardware-back-button.js +2 -2
- package/dist/collection/utils/helpers.js +1 -8
- package/dist/collection/utils/overlays.js +61 -19
- package/dist/collection/utils/slot-mutation-controller.js +12 -0
- package/dist/collection/utils/test/overlays/overlays.spec.js +53 -0
- package/dist/docs.json +158 -189
- package/dist/esm/{animation-a4acf150.js → animation-9a23ed8d.js} +1 -1
- package/dist/esm/{app-globals-cfb6787b.js → app-globals-80842d68.js} +1 -1
- package/dist/esm/{button-active-454e5c57.js → button-active-c6e18fac.js} +1 -1
- package/dist/esm/{data-691286f1.js → data-ae11fd43.js} +23 -38
- package/dist/esm/{framework-delegate-1eb3236c.js → framework-delegate-3fd96df8.js} +1 -1
- package/dist/esm/{hardware-back-button-3a14f99e.js → hardware-back-button-fb295e3a.js} +5 -5
- package/dist/esm/{helpers-ae74b3c9.js → helpers-f51cf76f.js} +1 -8
- package/dist/esm/{index-1f563746.js → index-1262064c.js} +1 -1
- package/dist/esm/{index-9b6d6df3.js → index-5d6a0317.js} +441 -13
- package/dist/esm/{index-5847f4a9.js → index-6da05eef.js} +4 -4
- package/dist/esm/{index-66871a1d.js → index-86688780.js} +1 -1
- package/dist/esm/{index-03086279.js → index-9d7e5d3e.js} +4 -4
- package/dist/esm/index.js +11 -11
- package/dist/esm/{input-shims-56c1f603.js → input-shims-2a4ad5a1.js} +2 -2
- package/dist/esm/{input.utils-482fc893.js → input.utils-d2dee48e.js} +13 -1
- package/dist/esm/ion-accordion_2.entry.js +3 -3
- package/dist/esm/ion-action-sheet.entry.js +11 -11
- package/dist/esm/ion-alert.entry.js +10 -10
- package/dist/esm/ion-app_8.entry.js +29 -29
- package/dist/esm/ion-avatar_3.entry.js +6 -6
- package/dist/esm/ion-back-button.entry.js +5 -5
- package/dist/esm/ion-backdrop.entry.js +3 -3
- package/dist/esm/ion-breadcrumb_2.entry.js +7 -7
- package/dist/esm/ion-button_2.entry.js +5 -5
- package/dist/esm/ion-card_5.entry.js +11 -11
- package/dist/esm/ion-checkbox.entry.js +6 -6
- package/dist/esm/ion-chip.entry.js +4 -4
- package/dist/esm/ion-col_3.entry.js +7 -7
- package/dist/esm/ion-datetime-button.entry.js +14 -13
- package/dist/esm/ion-datetime_3.entry.js +77 -18
- package/dist/esm/ion-fab_3.entry.js +9 -9
- package/dist/esm/ion-img.entry.js +4 -4
- package/dist/esm/ion-infinite-scroll_2.entry.js +7 -7
- package/dist/esm/ion-input.entry.js +10 -10
- package/dist/esm/ion-item-option_3.entry.js +8 -8
- package/dist/esm/ion-item_8.entry.js +23 -92
- package/dist/esm/ion-loading.entry.js +9 -9
- package/dist/esm/ion-menu_3.entry.js +14 -14
- package/dist/esm/ion-modal.entry.js +12 -12
- package/dist/esm/ion-nav_2.entry.js +8 -8
- package/dist/esm/ion-picker-column-option.entry.js +5 -5
- package/dist/esm/ion-picker-column.entry.js +6 -6
- package/dist/esm/ion-picker.entry.js +4 -4
- package/dist/esm/ion-popover.entry.js +10 -10
- package/dist/esm/ion-progress-bar.entry.js +4 -4
- package/dist/esm/ion-radio_2.entry.js +7 -7
- package/dist/esm/ion-range.entry.js +133 -28
- package/dist/esm/ion-refresher_2.entry.js +7 -7
- package/dist/esm/ion-reorder_2.entry.js +6 -6
- package/dist/esm/ion-ripple-effect.entry.js +3 -3
- package/dist/esm/ion-route_4.entry.js +5 -5
- package/dist/esm/ion-searchbar.entry.js +31 -7
- package/dist/esm/ion-segment_2.entry.js +8 -8
- package/dist/esm/ion-select_3.entry.js +13 -13
- package/dist/esm/ion-spinner.entry.js +3 -3
- package/dist/esm/ion-split-pane.entry.js +4 -4
- package/dist/esm/ion-tab-bar_2.entry.js +7 -7
- package/dist/esm/ion-tab_2.entry.js +6 -6
- package/dist/esm/ion-text.entry.js +4 -4
- package/dist/esm/ion-textarea.entry.js +9 -9
- package/dist/esm/ion-toast.entry.js +9 -9
- package/dist/esm/ion-toggle.entry.js +6 -6
- package/dist/esm/{ionic-global-c976d684.js → ionic-global-a589c12c.js} +1 -1
- package/dist/esm/ionic.js +29 -6
- package/dist/esm/{ios.transition-a097dbf5.js → ios.transition-fbde96b0.js} +4 -4
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-b4170ef7.js → md.transition-76e0020b.js} +4 -4
- package/dist/esm/{notch-controller-18bf9f76.js → notch-controller-00572cf8.js} +1 -1
- package/dist/esm/{overlays-4ba3b255.js → overlays-b1ac1c63.js} +64 -22
- package/dist/esm/{status-tap-7a12f017.js → status-tap-84b41f36.js} +3 -3
- package/dist/esm/{swipe-back-ae14449a.js → swipe-back-4f2e5d47.js} +1 -1
- package/dist/esm-es5/{animation-a4acf150.js → animation-9a23ed8d.js} +1 -1
- package/dist/esm-es5/app-globals-80842d68.js +4 -0
- package/dist/esm-es5/{button-active-454e5c57.js → button-active-c6e18fac.js} +1 -1
- package/dist/esm-es5/data-ae11fd43.js +4 -0
- package/dist/esm-es5/{framework-delegate-1eb3236c.js → framework-delegate-3fd96df8.js} +1 -1
- package/dist/esm-es5/hardware-back-button-fb295e3a.js +4 -0
- package/dist/esm-es5/helpers-f51cf76f.js +4 -0
- package/dist/esm-es5/index-1262064c.js +4 -0
- package/dist/esm-es5/index-5d6a0317.js +5 -0
- package/dist/esm-es5/{index-5847f4a9.js → index-6da05eef.js} +1 -1
- package/dist/esm-es5/{index-66871a1d.js → index-86688780.js} +1 -1
- package/dist/esm-es5/{index-03086279.js → index-9d7e5d3e.js} +1 -1
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/{input-shims-56c1f603.js → input-shims-2a4ad5a1.js} +1 -1
- package/dist/esm-es5/input.utils-d2dee48e.js +4 -0
- package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
- package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
- package/dist/esm-es5/ion-alert.entry.js +1 -1
- package/dist/esm-es5/ion-app_8.entry.js +1 -1
- package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
- package/dist/esm-es5/ion-back-button.entry.js +1 -1
- package/dist/esm-es5/ion-backdrop.entry.js +1 -1
- package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
- package/dist/esm-es5/ion-button_2.entry.js +1 -1
- package/dist/esm-es5/ion-card_5.entry.js +1 -1
- package/dist/esm-es5/ion-checkbox.entry.js +1 -1
- package/dist/esm-es5/ion-chip.entry.js +1 -1
- package/dist/esm-es5/ion-col_3.entry.js +1 -1
- package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
- package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
- package/dist/esm-es5/ion-fab_3.entry.js +1 -1
- package/dist/esm-es5/ion-img.entry.js +1 -1
- package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
- package/dist/esm-es5/ion-input.entry.js +1 -1
- package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
- package/dist/esm-es5/ion-item_8.entry.js +1 -1
- package/dist/esm-es5/ion-loading.entry.js +1 -1
- package/dist/esm-es5/ion-menu_3.entry.js +1 -1
- package/dist/esm-es5/ion-modal.entry.js +1 -1
- package/dist/esm-es5/ion-nav_2.entry.js +1 -1
- package/dist/esm-es5/ion-picker-column-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_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-c976d684.js → ionic-global-a589c12c.js} +1 -1
- package/dist/esm-es5/ionic.js +1 -1
- package/dist/esm-es5/{ios.transition-a097dbf5.js → ios.transition-fbde96b0.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/md.transition-76e0020b.js +4 -0
- package/dist/esm-es5/{notch-controller-18bf9f76.js → notch-controller-00572cf8.js} +1 -1
- package/dist/esm-es5/overlays-b1ac1c63.js +4 -0
- package/dist/esm-es5/{status-tap-7a12f017.js → status-tap-84b41f36.js} +1 -1
- package/dist/esm-es5/{swipe-back-ae14449a.js → swipe-back-4f2e5d47.js} +1 -1
- package/dist/html.html-data.json +24 -26
- 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-a8cc0027.system.js → p-01171ead.system.js} +1 -1
- package/dist/ionic/{p-5aa60929.js → p-031c5621.js} +1 -1
- package/dist/ionic/{p-d504bc71.entry.js → p-03f3ebd2.entry.js} +1 -1
- package/dist/ionic/{p-a06af32c.system.js → p-04f9ce05.system.js} +1 -1
- package/dist/ionic/{p-7665bbbc.system.entry.js → p-063c093d.system.entry.js} +1 -1
- package/dist/ionic/p-06e951a9.entry.js +4 -0
- package/dist/ionic/{p-77982637.entry.js → p-070cf7c3.entry.js} +1 -1
- package/dist/ionic/{p-7b795aee.system.entry.js → p-07a0190a.system.entry.js} +1 -1
- package/dist/ionic/{p-1bca443b.system.entry.js → p-0afaf65b.system.entry.js} +1 -1
- package/dist/ionic/p-0b175848.entry.js +4 -0
- package/dist/ionic/p-0da58e53.entry.js +4 -0
- package/dist/ionic/p-0eb381c3.system.js +4 -0
- package/dist/ionic/p-144ae947.js +4 -0
- package/dist/ionic/{p-c5b77291.system.entry.js → p-15e2ff5f.system.entry.js} +1 -1
- package/dist/ionic/{p-85cb4733.entry.js → p-19243ae6.entry.js} +1 -1
- package/dist/ionic/p-1acaf641.entry.js +4 -0
- package/dist/ionic/{p-8e83b7f1.system.entry.js → p-1d1394da.system.entry.js} +1 -1
- package/dist/ionic/{p-842777af.js → p-1e5c0c49.js} +1 -1
- package/dist/ionic/{p-1ed99eba.system.entry.js → p-2028668d.system.entry.js} +1 -1
- package/dist/ionic/{p-1a68de09.entry.js → p-2070f8d8.entry.js} +1 -1
- package/dist/ionic/{p-1c436e95.system.entry.js → p-219c17cf.system.entry.js} +1 -1
- package/dist/ionic/p-21e88629.entry.js +4 -0
- package/dist/ionic/{p-41970e75.entry.js → p-234dc736.entry.js} +1 -1
- package/dist/ionic/{p-1600d68c.system.entry.js → p-237b1791.system.entry.js} +1 -1
- package/dist/ionic/{p-27594fc2.js → p-239906f1.js} +1 -1
- package/dist/ionic/{p-85464e28.system.entry.js → p-25648922.system.entry.js} +2 -2
- package/dist/ionic/{p-e38b3c29.entry.js → p-29ecf879.entry.js} +1 -1
- package/dist/ionic/{p-454b36f7.system.entry.js → p-2c560619.system.entry.js} +1 -1
- package/dist/ionic/{p-62f15daf.system.entry.js → p-2e2635b4.system.entry.js} +2 -2
- package/dist/ionic/p-2f53f47a.entry.js +4 -0
- package/dist/ionic/{p-6d95943d.system.js → p-30dfa360.system.js} +1 -1
- package/dist/ionic/p-314ae72a.js +4 -0
- package/dist/ionic/{p-816476b0.system.js → p-33e39575.system.js} +1 -1
- package/dist/ionic/p-355736ea.js +4 -0
- package/dist/ionic/p-373e757d.entry.js +4 -0
- package/dist/ionic/{p-8a50f8d6.system.js → p-3944820a.system.js} +1 -1
- package/dist/ionic/p-39483fc9.js +4 -0
- package/dist/ionic/{p-5afb6e48.entry.js → p-39860681.entry.js} +1 -1
- package/dist/ionic/{p-6fd26009.js → p-3a572692.js} +1 -1
- package/dist/ionic/{p-a5b7a286.entry.js → p-42d9f81e.entry.js} +1 -1
- package/dist/ionic/{p-b4bb9cd0.system.entry.js → p-45a2b1ee.system.entry.js} +1 -1
- package/dist/ionic/{p-15708968.js → p-46a4e4e8.js} +1 -1
- package/dist/ionic/{p-f16bfd53.entry.js → p-48fef2f1.entry.js} +1 -1
- package/dist/ionic/p-493bce1f.entry.js +4 -0
- package/dist/ionic/{p-c38c5dfc.system.js → p-4997d7dc.system.js} +1 -1
- package/dist/ionic/{p-cb944b1a.system.js → p-49a205d0.system.js} +1 -1
- package/dist/ionic/{p-c880c809.js → p-4ba6d7d1.js} +1 -1
- package/dist/ionic/p-4d6ec139.entry.js +4 -0
- package/dist/ionic/p-4d7230bd.system.entry.js +4 -0
- package/dist/ionic/{p-8d4d902b.js → p-4da2ae44.js} +1 -1
- package/dist/ionic/{p-466bdeae.entry.js → p-5054b3db.entry.js} +1 -1
- package/dist/ionic/{p-f7ed6a44.system.entry.js → p-50d19fc7.system.entry.js} +1 -1
- package/dist/ionic/p-513abaf6.system.entry.js +4 -0
- package/dist/ionic/p-517b76cb.entry.js +4 -0
- package/dist/ionic/{p-a6cc38d4.js → p-51b1a6be.js} +1 -1
- package/dist/ionic/p-53c592ec.system.js +4 -0
- package/dist/ionic/{p-ebe0be94.system.entry.js → p-566818dd.system.entry.js} +1 -1
- package/dist/ionic/{p-6e1fa025.js → p-59e86adb.js} +1 -1
- package/dist/ionic/{p-91a72ad6.system.entry.js → p-5f9abba8.system.entry.js} +2 -2
- package/dist/ionic/{p-baa409f1.system.entry.js → p-6042920d.system.entry.js} +2 -2
- package/dist/ionic/{p-7b44b443.entry.js → p-65374504.entry.js} +1 -1
- package/dist/ionic/{p-f3d6085c.entry.js → p-66596659.entry.js} +1 -1
- package/dist/ionic/p-667290b0.system.js +4 -0
- package/dist/ionic/{p-c3a2e5cc.entry.js → p-66e50777.entry.js} +1 -1
- package/dist/ionic/{p-4a8f173c.system.js → p-67dbcd3b.system.js} +1 -1
- package/dist/ionic/{p-95e14c7b.system.js → p-696db6f4.system.js} +1 -1
- package/dist/ionic/p-69df28fd.entry.js +4 -0
- package/dist/ionic/p-6d0e7669.system.entry.js +4 -0
- package/dist/ionic/p-6d1f5de9.system.entry.js +4 -0
- package/dist/ionic/{p-dcfc297d.system.entry.js → p-6d75fbe8.system.entry.js} +1 -1
- package/dist/ionic/{p-d4d0538c.system.entry.js → p-7162350a.system.entry.js} +1 -1
- package/dist/ionic/p-7200f2da.entry.js +4 -0
- package/dist/ionic/{p-81869a97.system.entry.js → p-739f8b95.system.entry.js} +1 -1
- package/dist/ionic/{p-7a3fa32c.entry.js → p-75addf49.entry.js} +1 -1
- package/dist/ionic/{p-1fa738c4.js → p-78b3da77.js} +1 -1
- package/dist/ionic/{p-03f63663.system.js → p-7c7e495d.system.js} +1 -1
- package/dist/ionic/{p-8ab308e9.js → p-7d4f6f18.js} +1 -1
- package/dist/ionic/{p-5c3991e3.system.entry.js → p-824d44c5.system.entry.js} +2 -2
- package/dist/ionic/{p-ded27993.entry.js → p-8c0b08db.entry.js} +1 -1
- package/dist/ionic/p-8dfe436d.system.js +4 -0
- package/dist/ionic/{p-da83d833.system.entry.js → p-91567c90.system.entry.js} +1 -1
- package/dist/ionic/{p-5a055df4.entry.js → p-95648db9.entry.js} +1 -1
- package/dist/ionic/{p-f71082f7.entry.js → p-9c970454.entry.js} +1 -1
- package/dist/ionic/{p-30892e0c.system.js → p-9e3177a5.system.js} +1 -1
- package/dist/ionic/p-a03c993e.entry.js +4 -0
- package/dist/ionic/{p-8aeed464.system.entry.js → p-a37d4fe9.system.entry.js} +1 -1
- package/dist/ionic/{p-3bac30bf.system.entry.js → p-a43fbe0a.system.entry.js} +1 -1
- package/dist/ionic/{p-1a5ed3fe.system.entry.js → p-a5c33d6b.system.entry.js} +1 -1
- package/dist/ionic/p-a7f788ec.entry.js +4 -0
- package/dist/ionic/{p-1e0a18a1.system.entry.js → p-acd64713.system.entry.js} +1 -1
- package/dist/ionic/{p-eec92f77.system.js → p-af9256a0.system.js} +1 -1
- package/dist/ionic/{p-7541ca9f.system.entry.js → p-b0850af6.system.entry.js} +1 -1
- package/dist/ionic/p-b0d35de4.system.js +4 -0
- package/dist/ionic/p-b996756b.entry.js +4 -0
- package/dist/ionic/p-ba9120fe.system.entry.js +4 -0
- package/dist/ionic/p-bb78b64e.entry.js +4 -0
- package/dist/ionic/{p-97135baa.entry.js → p-bbc4f653.entry.js} +1 -1
- package/dist/ionic/p-c34d1515.js +4 -0
- package/dist/ionic/{p-82f5375e.system.entry.js → p-c4390f10.system.entry.js} +1 -1
- package/dist/ionic/p-c629d22b.system.js +5 -0
- package/dist/ionic/p-c834c535.system.entry.js +4 -0
- package/dist/ionic/{p-ad2b216a.system.entry.js → p-c8675b7b.system.entry.js} +1 -1
- package/dist/ionic/{p-6ef5f4da.entry.js → p-c8f7f923.entry.js} +1 -1
- package/dist/ionic/p-c962e9ea.entry.js +4 -0
- package/dist/ionic/{p-e64277c4.entry.js → p-cada6331.entry.js} +1 -1
- package/dist/ionic/p-cc19ecba.system.entry.js +4 -0
- package/dist/ionic/{p-1ea88de9.system.js → p-ce36d285.system.js} +1 -1
- package/dist/ionic/{p-fd94dd20.system.entry.js → p-d09c9468.system.entry.js} +1 -1
- package/dist/ionic/{p-4523be60.entry.js → p-d10bbab7.entry.js} +1 -1
- package/dist/ionic/p-d268f7e2.system.entry.js +4 -0
- package/dist/ionic/{p-4c2cac66.entry.js → p-d3c1c23f.entry.js} +1 -1
- package/dist/ionic/{p-780ff3b5.system.entry.js → p-d4be0d81.system.entry.js} +1 -1
- package/dist/ionic/p-d5ef3a0a.entry.js +4 -0
- package/dist/ionic/p-d60342e3.js +4 -0
- package/dist/ionic/{p-1ce172db.entry.js → p-d85eebc3.entry.js} +1 -1
- package/dist/ionic/{p-09872ec8.system.entry.js → p-d9dfdbb5.system.entry.js} +1 -1
- package/dist/ionic/{p-25850474.entry.js → p-da5bbd4f.entry.js} +1 -1
- package/dist/ionic/{p-7cc01684.js → p-dad515dc.js} +1 -1
- package/dist/ionic/{p-afcd4f49.entry.js → p-de39f314.entry.js} +1 -1
- package/dist/ionic/{p-ddc4e717.entry.js → p-de4c700f.entry.js} +1 -1
- package/dist/ionic/{p-19f6ac6c.system.js → p-e01ebeba.system.js} +1 -1
- package/dist/ionic/{p-602494c6.entry.js → p-e222fdd1.entry.js} +1 -1
- package/dist/ionic/{p-add93c7a.entry.js → p-e5e492d8.entry.js} +1 -1
- package/dist/ionic/{p-874510e9.system.entry.js → p-e9412fe7.system.entry.js} +1 -1
- package/dist/ionic/{p-3410a9cb.system.js → p-ea5173f9.system.js} +1 -1
- package/dist/ionic/{p-4825e380.entry.js → p-eb546888.entry.js} +1 -1
- package/dist/ionic/{p-65d3f0e9.js → p-eee87ebb.js} +1 -1
- package/dist/ionic/p-f012e8f2.system.entry.js +4 -0
- package/dist/ionic/{p-aaca8dd4.system.entry.js → p-f15b0bbc.system.entry.js} +1 -1
- package/dist/ionic/{p-2b3e0d99.system.entry.js → p-f15f8140.system.entry.js} +1 -1
- package/dist/ionic/{p-a71dc777.system.js → p-f3e8c505.system.js} +1 -1
- package/dist/ionic/{p-760dbd5e.js → p-f5cb9689.js} +1 -1
- package/dist/ionic/p-f687573e.system.js +4 -0
- package/dist/ionic/{p-f6a6b7ef.system.entry.js → p-f6db2e96.system.entry.js} +2 -2
- package/dist/ionic/p-f8502e85.js +5 -0
- package/dist/ionic/{p-cd366840.system.entry.js → p-f8dfae89.system.entry.js} +1 -1
- package/dist/ionic/p-fcec3b7a.system.entry.js +4 -0
- package/dist/ionic/{p-cb0e4100.system.entry.js → p-ff740d68.system.entry.js} +1 -1
- package/dist/types/components/datetime/datetime-interface.d.ts +10 -0
- package/dist/types/components/datetime/datetime.d.ts +9 -1
- package/dist/types/components/datetime/utils/format.d.ts +7 -13
- package/dist/types/components/datetime/utils/validate.d.ts +8 -0
- package/dist/types/components/item/item.d.ts +0 -32
- package/dist/types/components/menu/menu-interface.d.ts +1 -0
- package/dist/types/components/menu/menu.d.ts +2 -2
- package/dist/types/components/range/range.d.ts +29 -0
- package/dist/types/components/searchbar/searchbar.d.ts +38 -0
- package/dist/types/components.d.ts +38 -46
- package/dist/types/utils/forms/index.d.ts +0 -1
- package/dist/types/utils/hardware-back-button.d.ts +1 -1
- package/dist/types/utils/helpers.d.ts +0 -1
- package/hydrate/index.js +499 -349
- package/package.json +1 -1
- package/components/note.js +0 -48
- package/dist/collection/components/item/test/legacy/disabled/item.e2e.js +0 -14
- package/dist/collection/utils/forms/form-controller.js +0 -61
- package/dist/esm-es5/app-globals-cfb6787b.js +0 -4
- package/dist/esm-es5/data-691286f1.js +0 -4
- package/dist/esm-es5/hardware-back-button-3a14f99e.js +0 -4
- package/dist/esm-es5/helpers-ae74b3c9.js +0 -4
- package/dist/esm-es5/index-1f563746.js +0 -4
- package/dist/esm-es5/index-9b6d6df3.js +0 -5
- package/dist/esm-es5/input.utils-482fc893.js +0 -4
- package/dist/esm-es5/md.transition-b4170ef7.js +0 -4
- package/dist/esm-es5/overlays-4ba3b255.js +0 -4
- package/dist/ionic/p-060fdc03.entry.js +0 -4
- package/dist/ionic/p-069388dd.system.js +0 -4
- package/dist/ionic/p-06fccad7.entry.js +0 -4
- package/dist/ionic/p-0ca35c1d.system.entry.js +0 -4
- package/dist/ionic/p-134d4936.system.js +0 -4
- package/dist/ionic/p-19e79fe8.entry.js +0 -4
- package/dist/ionic/p-22d2a891.js +0 -4
- package/dist/ionic/p-239262e4.system.entry.js +0 -4
- package/dist/ionic/p-300b2cf1.entry.js +0 -4
- package/dist/ionic/p-32bd7ed7.entry.js +0 -4
- package/dist/ionic/p-43322b14.js +0 -4
- package/dist/ionic/p-4ad02639.entry.js +0 -4
- package/dist/ionic/p-5289aade.js +0 -4
- package/dist/ionic/p-60efe117.js +0 -5
- package/dist/ionic/p-6657681b.system.entry.js +0 -4
- package/dist/ionic/p-66e6860f.system.js +0 -4
- package/dist/ionic/p-6e5eeb35.entry.js +0 -4
- package/dist/ionic/p-6f6d56f1.entry.js +0 -4
- package/dist/ionic/p-70218e28.system.entry.js +0 -4
- package/dist/ionic/p-72bc2484.system.entry.js +0 -4
- package/dist/ionic/p-82d459c1.js +0 -4
- package/dist/ionic/p-8ba5912c.entry.js +0 -4
- package/dist/ionic/p-8d50220b.system.js +0 -4
- package/dist/ionic/p-8d602214.system.js +0 -5
- package/dist/ionic/p-8e3ee444.system.entry.js +0 -4
- package/dist/ionic/p-9382ebab.entry.js +0 -4
- package/dist/ionic/p-942c19cb.entry.js +0 -4
- package/dist/ionic/p-96391c0e.entry.js +0 -4
- package/dist/ionic/p-9d6f351e.js +0 -4
- package/dist/ionic/p-9e3b3f15.system.js +0 -4
- package/dist/ionic/p-a375c9f6.system.entry.js +0 -4
- package/dist/ionic/p-a58ec401.js +0 -4
- package/dist/ionic/p-b1a9e85a.system.entry.js +0 -4
- package/dist/ionic/p-bcb58446.entry.js +0 -4
- package/dist/ionic/p-c2336a9e.system.entry.js +0 -4
- package/dist/ionic/p-cbc3840e.entry.js +0 -4
- package/dist/ionic/p-cf852615.system.entry.js +0 -4
- package/dist/ionic/p-e15eda82.system.js +0 -4
- package/dist/ionic/p-e470466e.entry.js +0 -4
- package/dist/ionic/p-ef99a759.entry.js +0 -4
- package/dist/ionic/p-fc5ddbf6.entry.js +0 -4
- package/dist/ionic/p-feb66f6f.entry.js +0 -4
- package/dist/types/utils/forms/form-controller.d.ts +0 -15
|
@@ -55,8 +55,14 @@ export class Range {
|
|
|
55
55
|
el: rangeSlider,
|
|
56
56
|
gestureName: 'range',
|
|
57
57
|
gesturePriority: 100,
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
/**
|
|
59
|
+
* Provide a threshold since the drag movement
|
|
60
|
+
* might be a user scrolling the view.
|
|
61
|
+
* If this is true, then the range
|
|
62
|
+
* should not move.
|
|
63
|
+
*/
|
|
64
|
+
threshold: 10,
|
|
65
|
+
onStart: () => this.onStart(),
|
|
60
66
|
onMove: (ev) => this.onMove(ev),
|
|
61
67
|
onEnd: (ev) => this.onEnd(ev),
|
|
62
68
|
});
|
|
@@ -222,33 +228,93 @@ export class Range {
|
|
|
222
228
|
this.value = this.ensureValueInBounds(this.value);
|
|
223
229
|
this.ionChange.emit({ value: this.value });
|
|
224
230
|
}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
231
|
+
/**
|
|
232
|
+
* The value should be updated on touch end or
|
|
233
|
+
* when the component is being dragged.
|
|
234
|
+
* This follows the native behavior of mobile devices.
|
|
235
|
+
*
|
|
236
|
+
* For example: When the user lifts their finger from the
|
|
237
|
+
* screen after tapping the bar or dragging the bar or knob.
|
|
238
|
+
*/
|
|
239
|
+
onStart() {
|
|
240
|
+
this.ionKnobMoveStart.emit({ value: this.ensureValueInBounds(this.value) });
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* The value should be updated while dragging the
|
|
244
|
+
* bar or knob.
|
|
245
|
+
*
|
|
246
|
+
* While the user is dragging, the view
|
|
247
|
+
* should not scroll. This is to prevent the user from
|
|
248
|
+
* feeling disoriented while dragging.
|
|
249
|
+
*
|
|
250
|
+
* The user can scroll on the view if the knob or
|
|
251
|
+
* bar is not being dragged.
|
|
252
|
+
*
|
|
253
|
+
* @param detail The details of the gesture event.
|
|
254
|
+
*/
|
|
255
|
+
onMove(detail) {
|
|
256
|
+
const { contentEl, pressedKnob } = this;
|
|
257
|
+
const currentX = detail.currentX;
|
|
258
|
+
/**
|
|
259
|
+
* Since the user is dragging on the bar or knob, the view should not scroll.
|
|
260
|
+
*
|
|
261
|
+
* This only needs to be done once.
|
|
262
|
+
*/
|
|
263
|
+
if (contentEl && this.initialContentScrollY === undefined) {
|
|
228
264
|
this.initialContentScrollY = disableContentScrollY(contentEl);
|
|
229
265
|
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
266
|
+
/**
|
|
267
|
+
* The `pressedKnob` can be undefined if the user just
|
|
268
|
+
* started dragging the knob.
|
|
269
|
+
*
|
|
270
|
+
* This is necessary to determine which knob the user is dragging,
|
|
271
|
+
* especially when it's a dual knob.
|
|
272
|
+
* Plus, it determines when to apply certain styles.
|
|
273
|
+
*
|
|
274
|
+
* This only needs to be done once since the knob won't change
|
|
275
|
+
* while the user is dragging.
|
|
276
|
+
*/
|
|
277
|
+
if (pressedKnob === undefined) {
|
|
278
|
+
this.setPressedKnob(currentX);
|
|
236
279
|
}
|
|
237
|
-
this.pressedKnob = !this.dualKnobs || Math.abs(this.ratioA - ratio) < Math.abs(this.ratioB - ratio) ? 'A' : 'B';
|
|
238
|
-
this.setFocus(this.pressedKnob);
|
|
239
|
-
// update the active knob's position
|
|
240
280
|
this.update(currentX);
|
|
241
|
-
this.ionKnobMoveStart.emit({ value: this.ensureValueInBounds(this.value) });
|
|
242
|
-
}
|
|
243
|
-
onMove(detail) {
|
|
244
|
-
this.update(detail.currentX);
|
|
245
281
|
}
|
|
282
|
+
/**
|
|
283
|
+
* The value should be updated on touch end:
|
|
284
|
+
* - When the user lifts their finger from the screen after
|
|
285
|
+
* tapping the bar.
|
|
286
|
+
*
|
|
287
|
+
* @param detail The details of the gesture or mouse event.
|
|
288
|
+
*/
|
|
246
289
|
onEnd(detail) {
|
|
247
290
|
const { contentEl, initialContentScrollY } = this;
|
|
248
|
-
|
|
291
|
+
const currentX = detail.currentX || detail.clientX;
|
|
292
|
+
/**
|
|
293
|
+
* The `pressedKnob` can be undefined if the user never
|
|
294
|
+
* dragged the knob. They just tapped on the bar.
|
|
295
|
+
*
|
|
296
|
+
* This is necessary to determine which knob the user is changing,
|
|
297
|
+
* especially when it's a dual knob.
|
|
298
|
+
* Plus, it determines when to apply certain styles.
|
|
299
|
+
*/
|
|
300
|
+
if (this.pressedKnob === undefined) {
|
|
301
|
+
this.setPressedKnob(currentX);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* The user is no longer dragging the bar or
|
|
305
|
+
* knob (if they were dragging it).
|
|
306
|
+
*
|
|
307
|
+
* The user can now scroll on the view in the next gesture event.
|
|
308
|
+
*/
|
|
309
|
+
if (contentEl && initialContentScrollY !== undefined) {
|
|
249
310
|
resetContentScrollY(contentEl, initialContentScrollY);
|
|
250
311
|
}
|
|
251
|
-
|
|
312
|
+
// update the active knob's position
|
|
313
|
+
this.update(currentX);
|
|
314
|
+
/**
|
|
315
|
+
* Reset the pressed knob to undefined since the user
|
|
316
|
+
* may start dragging a different knob in the next gesture event.
|
|
317
|
+
*/
|
|
252
318
|
this.pressedKnob = undefined;
|
|
253
319
|
this.emitValueChange();
|
|
254
320
|
this.ionKnobMoveEnd.emit({ value: this.ensureValueInBounds(this.value) });
|
|
@@ -275,6 +341,16 @@ export class Range {
|
|
|
275
341
|
// Update input value
|
|
276
342
|
this.updateValue();
|
|
277
343
|
}
|
|
344
|
+
setPressedKnob(currentX) {
|
|
345
|
+
const rect = (this.rect = this.rangeSlider.getBoundingClientRect());
|
|
346
|
+
// figure out which knob they started closer to
|
|
347
|
+
let ratio = clamp(0, (currentX - rect.left) / rect.width, 1);
|
|
348
|
+
if (isRTL(this.el)) {
|
|
349
|
+
ratio = 1 - ratio;
|
|
350
|
+
}
|
|
351
|
+
this.pressedKnob = !this.dualKnobs || Math.abs(this.ratioA - ratio) < Math.abs(this.ratioB - ratio) ? 'A' : 'B';
|
|
352
|
+
this.setFocus(this.pressedKnob);
|
|
353
|
+
}
|
|
278
354
|
get valA() {
|
|
279
355
|
return ratioToValue(this.ratioA, this.min, this.max, this.step);
|
|
280
356
|
}
|
|
@@ -418,7 +494,36 @@ export class Range {
|
|
|
418
494
|
if (this.hasLabel) {
|
|
419
495
|
labelledBy = 'range-label';
|
|
420
496
|
}
|
|
421
|
-
return (h("div", { class: "range-slider", ref: (rangeEl) => (this.rangeSlider = rangeEl)
|
|
497
|
+
return (h("div", { class: "range-slider", ref: (rangeEl) => (this.rangeSlider = rangeEl),
|
|
498
|
+
/**
|
|
499
|
+
* Since the gesture has a threshold, the value
|
|
500
|
+
* won't change until the user has dragged past
|
|
501
|
+
* the threshold. This is to prevent the range
|
|
502
|
+
* from moving when the user is scrolling.
|
|
503
|
+
*
|
|
504
|
+
* This results in the value not being updated
|
|
505
|
+
* and the event emitters not being triggered
|
|
506
|
+
* if the user taps on the range. This is why
|
|
507
|
+
* we need to listen for the "pointerUp" event.
|
|
508
|
+
*/
|
|
509
|
+
onPointerUp: (ev) => {
|
|
510
|
+
/**
|
|
511
|
+
* If the user drags the knob on the web
|
|
512
|
+
* version (does not occur on mobile),
|
|
513
|
+
* the "pointerUp" event will be triggered
|
|
514
|
+
* along with the gesture's events.
|
|
515
|
+
* This leads to duplicate events.
|
|
516
|
+
*
|
|
517
|
+
* By checking if the pressedKnob is undefined,
|
|
518
|
+
* we can determine if the "pointerUp" event was
|
|
519
|
+
* triggered by a tap or a drag. If it was
|
|
520
|
+
* dragged, the pressedKnob will be defined.
|
|
521
|
+
*/
|
|
522
|
+
if (this.pressedKnob === undefined) {
|
|
523
|
+
this.onStart();
|
|
524
|
+
this.onEnd(ev);
|
|
525
|
+
}
|
|
526
|
+
} }, ticks.map((tick) => (h("div", { style: tickStyle(tick), role: "presentation", class: {
|
|
422
527
|
'range-tick': true,
|
|
423
528
|
'range-tick-active': tick.active,
|
|
424
529
|
}, part: tick.active ? 'tick-active' : 'tick' }))), h("div", { class: "range-bar-container" }, h("div", { class: "range-bar", role: "presentation", part: "bar" }), h("div", { class: {
|
|
@@ -471,7 +576,7 @@ export class Range {
|
|
|
471
576
|
const needsEndAdjustment = inItem && !hasEndContent;
|
|
472
577
|
const mode = getIonMode(this);
|
|
473
578
|
renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
|
|
474
|
-
return (h(Host, { key: '
|
|
579
|
+
return (h(Host, { key: '576015afd256abb6faa88630dc482b75333c69e0', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses(this.color, {
|
|
475
580
|
[mode]: true,
|
|
476
581
|
'in-item': inItem,
|
|
477
582
|
'range-disabled': disabled,
|
|
@@ -480,10 +585,10 @@ export class Range {
|
|
|
480
585
|
[`range-label-placement-${labelPlacement}`]: true,
|
|
481
586
|
'range-item-start-adjustment': needsStartAdjustment,
|
|
482
587
|
'range-item-end-adjustment': needsEndAdjustment,
|
|
483
|
-
}) }, h("label", { key: '
|
|
588
|
+
}) }, h("label", { key: '45619166eaf5015154ca24aeac8d088fed9606ec', class: "range-wrapper", id: "range-label" }, h("div", { key: 'e5ce095b0b1545dd9d39a04bc0d81fa643ec3739', class: {
|
|
484
589
|
'label-text-wrapper': true,
|
|
485
590
|
'label-text-wrapper-hidden': !hasLabel,
|
|
486
|
-
}, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '
|
|
591
|
+
}, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '9bff70bac89c8439b3a8933c2d4dbf0851a49165', class: "native-wrapper" }, h("slot", { key: '5c62813869cad97aa70a1c766c5df7a8fd279258', name: "start" }), this.renderRangeSlider(), h("slot", { key: '888d5665c12debcda85af5024842f5468b086c70', name: "end" })))));
|
|
487
592
|
}
|
|
488
593
|
static get is() { return "ion-range"; }
|
|
489
594
|
static get encapsulation() { return "shadow"; }
|
|
@@ -54,6 +54,33 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
54
54
|
expect(rangeStart).toHaveReceivedEventDetail({ value: 20 });
|
|
55
55
|
expect(rangeEnd).toHaveReceivedEventDetail({ value: 21 });
|
|
56
56
|
});
|
|
57
|
+
test('should emit end event on tap', async ({ page }, testInfo) => {
|
|
58
|
+
testInfo.annotations.push({
|
|
59
|
+
type: 'issue',
|
|
60
|
+
description: 'https://github.com/ionic-team/ionic-framework/issues/28487',
|
|
61
|
+
});
|
|
62
|
+
await page.setContent(`<ion-range aria-label="Range" value="20"></ion-range>`, config);
|
|
63
|
+
const range = page.locator('ion-range');
|
|
64
|
+
const rangeEndSpy = await page.spyOnEvent('ionKnobMoveEnd');
|
|
65
|
+
const rangeBoundingBox = await range.boundingBox();
|
|
66
|
+
/**
|
|
67
|
+
* Coordinates for the click event.
|
|
68
|
+
* These need to be near the end of the range
|
|
69
|
+
* (or anything that isn't the current value).
|
|
70
|
+
*
|
|
71
|
+
* The number 50 is arbitrary, but it should be
|
|
72
|
+
* less than the width of the range.
|
|
73
|
+
*/
|
|
74
|
+
const x = rangeBoundingBox.width - 50;
|
|
75
|
+
// The y coordinate is the middle of the range.
|
|
76
|
+
const y = rangeBoundingBox.height / 2;
|
|
77
|
+
// Click near the end of the range.
|
|
78
|
+
await range.click({
|
|
79
|
+
position: { x, y },
|
|
80
|
+
});
|
|
81
|
+
await rangeEndSpy.next();
|
|
82
|
+
expect(rangeEndSpy.length).toBe(1);
|
|
83
|
+
});
|
|
57
84
|
// TODO FW-2873
|
|
58
85
|
test.skip('should not scroll when the knob is swiped', async ({ page, skip }) => {
|
|
59
86
|
skip.browser('webkit', 'mouse.wheel is not available in WebKit');
|
|
@@ -594,7 +594,7 @@ export class Refresher {
|
|
|
594
594
|
}
|
|
595
595
|
render() {
|
|
596
596
|
const mode = getIonMode(this);
|
|
597
|
-
return (h(Host, { key: '
|
|
597
|
+
return (h(Host, { key: 'b5f7ccfe964f0f970c46ae813649c36625d82a1d', slot: "fixed", class: {
|
|
598
598
|
[mode]: true,
|
|
599
599
|
// Used internally for styling
|
|
600
600
|
[`refresher-${mode}`]: true,
|
|
@@ -52,7 +52,7 @@ export class RefresherContent {
|
|
|
52
52
|
const pullingIcon = this.pullingIcon;
|
|
53
53
|
const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
|
|
54
54
|
const mode = getIonMode(this);
|
|
55
|
-
return (h(Host, { key: '
|
|
55
|
+
return (h(Host, { key: '14a4ef75a0f56d499ee0e0bb6ba23565626ad442', class: mode }, h("div", { key: 'b738ea69256548d66512744ecaa5cbf651c1f6dd', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (h("div", { class: "refresher-pulling-icon" }, h("div", { class: "spinner-arrow-container" }, h("ion-spinner", { name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (h("div", { class: "arrow-container" }, h("ion-icon", { icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (h("div", { class: "refresher-pulling-icon" }, h("ion-icon", { icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), h("div", { key: '6cbcc1f90df56b53c51a99c5a63e185dba00e9b2', class: "refresher-refreshing" }, this.refreshingSpinner && (h("div", { class: "refresher-refreshing-icon" }, h("ion-spinner", { name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
|
|
56
56
|
}
|
|
57
57
|
static get is() { return "ion-refresher-content"; }
|
|
58
58
|
static get properties() {
|
|
@@ -20,7 +20,7 @@ export class Reorder {
|
|
|
20
20
|
render() {
|
|
21
21
|
const mode = getIonMode(this);
|
|
22
22
|
const reorderIcon = mode === 'ios' ? reorderThreeOutline : reorderTwoSharp;
|
|
23
|
-
return (h(Host, { key: '
|
|
23
|
+
return (h(Host, { key: '068457526894b0f557537d5b85f5596781988bbd', class: mode }, h("slot", { key: '006afcb58b0c8c0e4988e58d2c1441a7f4472de1' }, h("ion-icon", { key: '25e63dd8a8eeee62e6c5095bb39f887af2c82124', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
|
|
24
24
|
}
|
|
25
25
|
static get is() { return "ion-reorder"; }
|
|
26
26
|
static get encapsulation() { return "shadow"; }
|
|
@@ -238,7 +238,7 @@ export class ReorderGroup {
|
|
|
238
238
|
}
|
|
239
239
|
render() {
|
|
240
240
|
const mode = getIonMode(this);
|
|
241
|
-
return (h(Host, { key: '
|
|
241
|
+
return (h(Host, { key: '868762829627e101926293f5e7e9f4bcf54490b1', class: {
|
|
242
242
|
[mode]: true,
|
|
243
243
|
'reorder-enabled': !this.disabled,
|
|
244
244
|
'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
|
|
@@ -59,7 +59,7 @@ export class RippleEffect {
|
|
|
59
59
|
}
|
|
60
60
|
render() {
|
|
61
61
|
const mode = getIonMode(this);
|
|
62
|
-
return (h(Host, { key: '
|
|
62
|
+
return (h(Host, { key: '97bc96ca8dc4bf162302d0cf6980f45534495a3d', role: "presentation", class: {
|
|
63
63
|
[mode]: true,
|
|
64
64
|
unbounded: this.unbounded,
|
|
65
65
|
} }));
|
|
@@ -23,10 +23,10 @@ export class RouterLink {
|
|
|
23
23
|
rel: this.rel,
|
|
24
24
|
target: this.target,
|
|
25
25
|
};
|
|
26
|
-
return (h(Host, { key: '
|
|
26
|
+
return (h(Host, { key: '9dac58d3edaa6b5278c3636e0e245c7ddc2cb888', onClick: this.onClick, class: createColorClasses(this.color, {
|
|
27
27
|
[mode]: true,
|
|
28
28
|
'ion-activatable': true,
|
|
29
|
-
}) }, h("a", Object.assign({ key: '
|
|
29
|
+
}) }, h("a", Object.assign({ key: '81d2ffd44f798703da2cd6f926576c6e96a7c41f' }, attrs), h("slot", { key: '26853d510e4cdb93b436cdf70ebb5a7dca288bfb' }))));
|
|
30
30
|
}
|
|
31
31
|
static get is() { return "ion-router-link"; }
|
|
32
32
|
static get encapsulation() { return "shadow"; }
|
|
@@ -178,7 +178,7 @@ export class RouterOutlet {
|
|
|
178
178
|
return true;
|
|
179
179
|
}
|
|
180
180
|
render() {
|
|
181
|
-
return h("slot", { key: '
|
|
181
|
+
return h("slot", { key: '3425cdea6102946b2a7f4dcb3bb0133b2c7c561c' });
|
|
182
182
|
}
|
|
183
183
|
static get is() { return "ion-router-outlet"; }
|
|
184
184
|
static get encapsulation() { return "shadow"; }
|
|
@@ -5,7 +5,7 @@ import { Host, h } from "@stencil/core";
|
|
|
5
5
|
import { getIonMode } from "../../global/ionic-global";
|
|
6
6
|
export class Row {
|
|
7
7
|
render() {
|
|
8
|
-
return (h(Host, { key: '
|
|
8
|
+
return (h(Host, { key: '8b54835ea837e25c278ffa3e298238e92b095ccc', class: getIonMode(this) }, h("slot", { key: 'cb77d85c8d02fdee29a72b58f3091db8daeaf3b2' })));
|
|
9
9
|
}
|
|
10
10
|
static get is() { return "ion-row"; }
|
|
11
11
|
static get encapsulation() { return "shadow"; }
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { Host, forceUpdate, h } from "@stencil/core";
|
|
5
|
-
import { debounceEvent, raf, componentOnReady } from "../../utils/helpers";
|
|
5
|
+
import { debounceEvent, raf, componentOnReady, inheritAttributes } from "../../utils/helpers";
|
|
6
6
|
import { isRTL } from "../../utils/rtl/index";
|
|
7
7
|
import { createColorClasses } from "../../utils/theme";
|
|
8
8
|
import { arrowBackSharp, closeCircle, closeSharp, searchOutline, searchSharp } from "ionicons/icons";
|
|
@@ -16,6 +16,7 @@ export class Searchbar {
|
|
|
16
16
|
this.isCancelVisible = false;
|
|
17
17
|
this.shouldAlignLeft = true;
|
|
18
18
|
this.inputId = `ion-searchbar-${searchbarIds++}`;
|
|
19
|
+
this.inheritedAttributes = {};
|
|
19
20
|
/**
|
|
20
21
|
* Clears the input field and triggers the control change.
|
|
21
22
|
*/
|
|
@@ -116,6 +117,7 @@ export class Searchbar {
|
|
|
116
117
|
this.noAnimate = true;
|
|
117
118
|
this.color = undefined;
|
|
118
119
|
this.animated = false;
|
|
120
|
+
this.autocapitalize = undefined;
|
|
119
121
|
this.autocomplete = 'off';
|
|
120
122
|
this.autocorrect = 'off';
|
|
121
123
|
this.cancelButtonIcon = config.get('backButtonIcon', arrowBackSharp);
|
|
@@ -125,6 +127,8 @@ export class Searchbar {
|
|
|
125
127
|
this.disabled = false;
|
|
126
128
|
this.inputmode = undefined;
|
|
127
129
|
this.enterkeyhint = undefined;
|
|
130
|
+
this.maxlength = undefined;
|
|
131
|
+
this.minlength = undefined;
|
|
128
132
|
this.name = this.inputId;
|
|
129
133
|
this.placeholder = 'Search';
|
|
130
134
|
this.searchIcon = undefined;
|
|
@@ -134,6 +138,21 @@ export class Searchbar {
|
|
|
134
138
|
this.type = 'search';
|
|
135
139
|
this.value = '';
|
|
136
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* lang and dir are globally enumerated attributes.
|
|
143
|
+
* As a result, creating these as properties
|
|
144
|
+
* can have unintended side effects. Instead, we
|
|
145
|
+
* listen for attribute changes and inherit them
|
|
146
|
+
* to the inner `<input>` element.
|
|
147
|
+
*/
|
|
148
|
+
onLangChanged(newValue) {
|
|
149
|
+
this.inheritedAttributes = Object.assign(Object.assign({}, this.inheritedAttributes), { lang: newValue });
|
|
150
|
+
forceUpdate(this);
|
|
151
|
+
}
|
|
152
|
+
onDirChanged(newValue) {
|
|
153
|
+
this.inheritedAttributes = Object.assign(Object.assign({}, this.inheritedAttributes), { dir: newValue });
|
|
154
|
+
forceUpdate(this);
|
|
155
|
+
}
|
|
137
156
|
debounceChanged() {
|
|
138
157
|
const { ionInput, debounce, originalIonInput } = this;
|
|
139
158
|
/**
|
|
@@ -158,6 +177,9 @@ export class Searchbar {
|
|
|
158
177
|
connectedCallback() {
|
|
159
178
|
this.emitStyle();
|
|
160
179
|
}
|
|
180
|
+
componentWillLoad() {
|
|
181
|
+
this.inheritedAttributes = Object.assign({}, inheritAttributes(this.el, ['lang', 'dir']));
|
|
182
|
+
}
|
|
161
183
|
componentDidLoad() {
|
|
162
184
|
this.originalIonInput = this.ionInput;
|
|
163
185
|
this.positionElements();
|
|
@@ -356,8 +378,8 @@ export class Searchbar {
|
|
|
356
378
|
const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
|
|
357
379
|
const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
|
|
358
380
|
const shouldShowCancelButton = this.shouldShowCancelButton();
|
|
359
|
-
const cancelButton = this.showCancelButton !== 'never' && (h("button", { key: '
|
|
360
|
-
return (h(Host, { key: '
|
|
381
|
+
const cancelButton = this.showCancelButton !== 'never' && (h("button", { key: '66091918b5b97012b4105238b9aa1e0bc2133885', "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" }, h("div", { key: 'bfe5602ce36cd82dae870b632de767bde3de2f8a', "aria-hidden": "true" }, mode === 'md' ? (h("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
|
|
382
|
+
return (h(Host, { key: '8604e83a9e11f5c561c470ce4630bdc5a38f1098', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses(this.color, {
|
|
361
383
|
[mode]: true,
|
|
362
384
|
'searchbar-animated': animated,
|
|
363
385
|
'searchbar-disabled': this.disabled,
|
|
@@ -367,14 +389,14 @@ export class Searchbar {
|
|
|
367
389
|
'searchbar-has-focus': this.focused,
|
|
368
390
|
'searchbar-should-show-clear': this.shouldShowClearButton(),
|
|
369
391
|
'searchbar-should-show-cancel': this.shouldShowCancelButton(),
|
|
370
|
-
}) }, h("div", { key: '
|
|
392
|
+
}) }, h("div", { key: '4d94b664e0bb7c47f094a25f26fc92b210b96ae3', class: "searchbar-input-container" }, h("input", Object.assign({ key: '78a82dcd609fdb0327ff153a49b5904a0290663d', "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: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, h("ion-icon", { key: '4da87bc57573758ed758332789bac63f253b1678', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), h("button", { key: '410d65bac177b3534c0ef7a6ecc1fe6381b46efd', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
|
|
371
393
|
/**
|
|
372
394
|
* This prevents mobile browsers from
|
|
373
395
|
* blurring the input when the clear
|
|
374
396
|
* button is activated.
|
|
375
397
|
*/
|
|
376
398
|
ev.preventDefault();
|
|
377
|
-
}, onClick: () => this.onClearInput(true) }, h("ion-icon", { key: '
|
|
399
|
+
}, onClick: () => this.onClearInput(true) }, h("ion-icon", { key: 'feb89ebe3b4df01402762b9d65c56d26852ca1a6', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
|
|
378
400
|
}
|
|
379
401
|
static get is() { return "ion-searchbar"; }
|
|
380
402
|
static get encapsulation() { return "scoped"; }
|
|
@@ -433,6 +455,23 @@ export class Searchbar {
|
|
|
433
455
|
"reflect": false,
|
|
434
456
|
"defaultValue": "false"
|
|
435
457
|
},
|
|
458
|
+
"autocapitalize": {
|
|
459
|
+
"type": "string",
|
|
460
|
+
"mutable": false,
|
|
461
|
+
"complexType": {
|
|
462
|
+
"original": "string",
|
|
463
|
+
"resolved": "string",
|
|
464
|
+
"references": {}
|
|
465
|
+
},
|
|
466
|
+
"required": true,
|
|
467
|
+
"optional": false,
|
|
468
|
+
"docs": {
|
|
469
|
+
"tags": [],
|
|
470
|
+
"text": "Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.\nAvailable options: `\"off\"`, `\"none\"`, `\"on\"`, `\"sentences\"`, `\"words\"`, `\"characters\"`."
|
|
471
|
+
},
|
|
472
|
+
"attribute": "autocapitalize",
|
|
473
|
+
"reflect": false
|
|
474
|
+
},
|
|
436
475
|
"autocomplete": {
|
|
437
476
|
"type": "string",
|
|
438
477
|
"mutable": false,
|
|
@@ -597,6 +636,40 @@ export class Searchbar {
|
|
|
597
636
|
"attribute": "enterkeyhint",
|
|
598
637
|
"reflect": false
|
|
599
638
|
},
|
|
639
|
+
"maxlength": {
|
|
640
|
+
"type": "number",
|
|
641
|
+
"mutable": false,
|
|
642
|
+
"complexType": {
|
|
643
|
+
"original": "number",
|
|
644
|
+
"resolved": "number | undefined",
|
|
645
|
+
"references": {}
|
|
646
|
+
},
|
|
647
|
+
"required": false,
|
|
648
|
+
"optional": true,
|
|
649
|
+
"docs": {
|
|
650
|
+
"tags": [],
|
|
651
|
+
"text": "This attribute specifies the maximum number of characters that the user can enter."
|
|
652
|
+
},
|
|
653
|
+
"attribute": "maxlength",
|
|
654
|
+
"reflect": false
|
|
655
|
+
},
|
|
656
|
+
"minlength": {
|
|
657
|
+
"type": "number",
|
|
658
|
+
"mutable": false,
|
|
659
|
+
"complexType": {
|
|
660
|
+
"original": "number",
|
|
661
|
+
"resolved": "number | undefined",
|
|
662
|
+
"references": {}
|
|
663
|
+
},
|
|
664
|
+
"required": false,
|
|
665
|
+
"optional": true,
|
|
666
|
+
"docs": {
|
|
667
|
+
"tags": [],
|
|
668
|
+
"text": "This attribute specifies the minimum number of characters that the user can enter."
|
|
669
|
+
},
|
|
670
|
+
"attribute": "minlength",
|
|
671
|
+
"reflect": false
|
|
672
|
+
},
|
|
600
673
|
"name": {
|
|
601
674
|
"type": "string",
|
|
602
675
|
"mutable": false,
|
|
@@ -922,6 +995,12 @@ export class Searchbar {
|
|
|
922
995
|
static get elementRef() { return "el"; }
|
|
923
996
|
static get watchers() {
|
|
924
997
|
return [{
|
|
998
|
+
"propName": "lang",
|
|
999
|
+
"methodName": "onLangChanged"
|
|
1000
|
+
}, {
|
|
1001
|
+
"propName": "dir",
|
|
1002
|
+
"methodName": "onDirChanged"
|
|
1003
|
+
}, {
|
|
925
1004
|
"propName": "debounce",
|
|
926
1005
|
"methodName": "debounceChanged"
|
|
927
1006
|
}, {
|
|
@@ -4,12 +4,30 @@
|
|
|
4
4
|
import { newSpecPage } from "@stencil/core/testing";
|
|
5
5
|
import { Searchbar } from "../searchbar";
|
|
6
6
|
describe('searchbar: rendering', () => {
|
|
7
|
-
it('should inherit
|
|
7
|
+
it('should inherit properties on load', async () => {
|
|
8
8
|
const page = await newSpecPage({
|
|
9
9
|
components: [Searchbar],
|
|
10
|
-
html: '<ion-searchbar name="search"></ion-searchbar>',
|
|
10
|
+
html: '<ion-searchbar autocapitalize="off" maxlength="4" minlength="2" name="search"></ion-searchbar>',
|
|
11
11
|
});
|
|
12
12
|
const nativeEl = page.body.querySelector('ion-searchbar input');
|
|
13
13
|
expect(nativeEl.getAttribute('name')).toBe('search');
|
|
14
|
+
expect(nativeEl.getAttribute('maxlength')).toBe('4');
|
|
15
|
+
expect(nativeEl.getAttribute('minlength')).toBe('2');
|
|
16
|
+
expect(nativeEl.getAttribute('autocapitalize')).toBe('off');
|
|
17
|
+
});
|
|
18
|
+
it('should inherit watched attributes', async () => {
|
|
19
|
+
const page = await newSpecPage({
|
|
20
|
+
components: [Searchbar],
|
|
21
|
+
html: '<ion-searchbar dir="ltr" lang="en-US"></ion-searchbar>',
|
|
22
|
+
});
|
|
23
|
+
const searchbarEl = page.body.querySelector('ion-searchbar');
|
|
24
|
+
const nativeEl = searchbarEl.querySelector('input');
|
|
25
|
+
expect(nativeEl.getAttribute('lang')).toBe('en-US');
|
|
26
|
+
expect(nativeEl.getAttribute('dir')).toBe('ltr');
|
|
27
|
+
searchbarEl.setAttribute('lang', 'es-ES');
|
|
28
|
+
searchbarEl.setAttribute('dir', 'rtl');
|
|
29
|
+
await page.waitForChanges();
|
|
30
|
+
expect(nativeEl.getAttribute('lang')).toBe('es-ES');
|
|
31
|
+
expect(nativeEl.getAttribute('dir')).toBe('rtl');
|
|
14
32
|
});
|
|
15
33
|
});
|
|
@@ -420,14 +420,14 @@ export class Segment {
|
|
|
420
420
|
}
|
|
421
421
|
render() {
|
|
422
422
|
const mode = getIonMode(this);
|
|
423
|
-
return (h(Host, { key: '
|
|
423
|
+
return (h(Host, { key: 'a5268f36524465945e66f838c1fcb7b2ca4980b5', role: "tablist", onClick: this.onClick, class: createColorClasses(this.color, {
|
|
424
424
|
[mode]: true,
|
|
425
425
|
'in-toolbar': hostContext('ion-toolbar', this.el),
|
|
426
426
|
'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
|
|
427
427
|
'segment-activated': this.activated,
|
|
428
428
|
'segment-disabled': this.disabled,
|
|
429
429
|
'segment-scrollable': this.scrollable,
|
|
430
|
-
}) }, h("slot", { key: '
|
|
430
|
+
}) }, h("slot", { key: 'b399f99ec57ab319cdb0635d2bb1efcd74b709bc' })));
|
|
431
431
|
}
|
|
432
432
|
static get is() { return "ion-segment"; }
|
|
433
433
|
static get encapsulation() { return "shadow"; }
|
|
@@ -78,7 +78,7 @@ export class SegmentButton {
|
|
|
78
78
|
const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
|
|
79
79
|
const mode = getIonMode(this);
|
|
80
80
|
const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
|
|
81
|
-
return (h(Host, { key: '
|
|
81
|
+
return (h(Host, { key: 'b2c9b735e7c578e50d7a41cb0c47cf661b83aa49', class: {
|
|
82
82
|
[mode]: true,
|
|
83
83
|
'in-toolbar': hostContext('ion-toolbar', this.el),
|
|
84
84
|
'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
|
|
@@ -94,10 +94,10 @@ export class SegmentButton {
|
|
|
94
94
|
'ion-activatable': true,
|
|
95
95
|
'ion-activatable-instant': true,
|
|
96
96
|
'ion-focusable': true,
|
|
97
|
-
} }, h("button", Object.assign({ key: '
|
|
97
|
+
} }, h("button", Object.assign({ key: '1b6e56709f281be94c754a52dd80d9968d1e6bb1', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), h("span", { key: '3a0508e0d859dffd78dc54dc574cf3ed5c03f110', class: "button-inner" }, h("slot", { key: '05f0eb4f773d2cbd929035087af4550a0f4ab038' })), mode === 'md' && h("ion-ripple-effect", null)), h("div", { key: '75370e50f989a5db5d6b8ffa80894acba1797d85', part: "indicator", class: {
|
|
98
98
|
'segment-button-indicator': true,
|
|
99
99
|
'segment-button-indicator-animated': true,
|
|
100
|
-
} }, h("div", { key: '
|
|
100
|
+
} }, h("div", { key: '8123d414c166d97c5e3dae707b89d4e94f2c6f92', part: "indicator-background", class: "segment-button-indicator-background" }))));
|
|
101
101
|
}
|
|
102
102
|
static get is() { return "ion-segment-button"; }
|
|
103
103
|
static get encapsulation() { return "shadow"; }
|
|
@@ -64,6 +64,7 @@
|
|
|
64
64
|
* @prop --placeholder-color: Color of the select placeholder text
|
|
65
65
|
* @prop --placeholder-opacity: Opacity of the select placeholder text
|
|
66
66
|
*
|
|
67
|
+
* @prop --highlight-height: The height of the highlight on the select. Only applies to md mode.
|
|
67
68
|
* @prop --highlight-color-focused: The color of the highlight on the select when focused
|
|
68
69
|
* @prop --highlight-color-invalid: The color of the highlight on the select when invalid
|
|
69
70
|
* @prop --highlight-color-valid: The color of the highlight on the select when valid
|
|
@@ -682,6 +683,10 @@ button {
|
|
|
682
683
|
* }
|
|
683
684
|
* }
|
|
684
685
|
*/
|
|
686
|
+
:host {
|
|
687
|
+
--highlight-height: 0px;
|
|
688
|
+
}
|
|
689
|
+
|
|
685
690
|
.select-icon {
|
|
686
691
|
width: 1.125rem;
|
|
687
692
|
height: 1.125rem;
|
|
@@ -610,7 +610,7 @@ export class Select {
|
|
|
610
610
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
611
611
|
*/
|
|
612
612
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
|
|
613
|
-
return (h(Host, { key: '
|
|
613
|
+
return (h(Host, { key: '00e3a22ca92044556f50b029d5d52178eedd00ca', onClick: this.onClick, class: createColorClasses(this.color, {
|
|
614
614
|
[mode]: true,
|
|
615
615
|
'in-item': inItem,
|
|
616
616
|
'in-item-color': hostContext('ion-item.ion-color', el),
|
|
@@ -626,7 +626,7 @@ export class Select {
|
|
|
626
626
|
[`select-justify-${justify}`]: justifyEnabled,
|
|
627
627
|
[`select-shape-${shape}`]: shape !== undefined,
|
|
628
628
|
[`select-label-placement-${labelPlacement}`]: true,
|
|
629
|
-
}) }, h("label", { key: '
|
|
629
|
+
}) }, h("label", { key: 'b286c77110501d17e7defa9b3c4f02a1aba620f8', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), h("div", { key: 'e2de491d3cb57678d30c0383a0782cfdd28abba0', class: "select-wrapper-inner" }, h("slot", { key: '7b9054dbcdab00505a9195eb1674d96322741614', name: "start" }), h("div", { key: '874e4da16c1140be0b5043330e0538936d13ac56', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: '64256b876c88e02852c8745f14c10636c48a6a72', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && h("div", { class: "select-highlight" }))));
|
|
630
630
|
}
|
|
631
631
|
static get is() { return "ion-select"; }
|
|
632
632
|
static get encapsulation() { return "shadow"; }
|