voyager-ionic-core 8.3.4 → 8.4.0
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/alert.js +7 -5
- package/components/backdrop.js +1 -1
- package/components/button.js +2 -2
- package/components/buttons.js +2 -2
- package/components/checkbox.js +7 -5
- package/components/content.js +446 -0
- package/components/header.js +356 -0
- package/components/index4.js +2 -2
- package/components/ion-app.js +1 -1
- 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 +4 -4
- 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 +1 -441
- package/components/ion-datetime-button.js +2 -2
- package/components/ion-datetime.js +2 -2
- 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 +1 -351
- 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-password-toggle.js +3 -3
- package/components/ion-input.js +3 -3
- 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 +19 -19
- package/components/ion-modal.js +1 -1737
- package/components/ion-nav-link.js +1 -1
- package/components/ion-nav.js +1 -1
- package/components/ion-note.js +2 -2
- package/components/ion-picker-legacy.js +2 -2
- package/components/ion-progress-bar.js +1 -1
- package/components/ion-range.js +3 -3
- 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 +4 -4
- package/components/ion-segment-button.js +24 -5
- package/components/ion-segment-content.d.ts +11 -0
- package/components/ion-segment-content.js +37 -0
- package/components/ion-segment-view.d.ts +11 -0
- package/components/ion-segment-view.js +140 -0
- package/components/ion-segment.js +110 -15
- package/components/ion-select-modal.d.ts +11 -0
- package/components/ion-select-modal.js +9 -0
- package/components/ion-select-option.js +1 -1
- package/components/ion-select.js +114 -41
- 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 +2 -2
- package/components/ion-thumbnail.js +1 -1
- package/components/ion-title.js +1 -70
- package/components/ion-toast.js +2 -2
- package/components/ion-toggle.js +3 -3
- package/components/ion-toolbar.js +1 -88
- package/components/label.js +2 -2
- package/components/list-header.js +2 -2
- package/components/list.js +1 -1
- package/components/modal.js +1742 -0
- 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 +5 -3
- package/components/radio.js +7 -5
- package/components/ripple-effect.js +1 -1
- package/components/select-modal.js +197 -0
- package/components/select-popover.js +1 -1
- package/components/spinner.js +1 -1
- package/components/title.js +75 -0
- package/components/toolbar.js +93 -0
- package/dist/cjs/{index-9cd00dc3.js → index-8e789962.js} +2 -2
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/ion-alert.cjs.entry.js +7 -5
- package/dist/cjs/ion-app_8.cjs.entry.js +15 -15
- package/dist/cjs/ion-avatar_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
- package/dist/cjs/ion-backdrop.cjs.entry.js +1 -1
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-card_5.cjs.entry.js +8 -8
- package/dist/cjs/ion-checkbox.cjs.entry.js +5 -4
- package/dist/cjs/ion-chip.cjs.entry.js +2 -2
- package/dist/cjs/ion-col_3.cjs.entry.js +5 -5
- package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime_3.cjs.entry.js +6 -6
- package/dist/cjs/ion-fab_3.cjs.entry.js +6 -6
- package/dist/cjs/ion-img.cjs.entry.js +1 -1
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +3 -3
- package/dist/cjs/ion-input.cjs.entry.js +3 -3
- package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-item_8.cjs.entry.js +12 -12
- package/dist/cjs/ion-loading.cjs.entry.js +2 -2
- package/dist/cjs/ion-menu_3.cjs.entry.js +23 -23
- package/dist/cjs/ion-modal.cjs.entry.js +4 -4
- package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
- 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 +2 -2
- package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
- package/dist/cjs/ion-radio_2.cjs.entry.js +12 -8
- package/dist/cjs/ion-range.cjs.entry.js +3 -3
- package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
- package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
- package/dist/cjs/ion-searchbar.cjs.entry.js +4 -4
- package/dist/cjs/ion-segment-content.cjs.entry.js +23 -0
- package/dist/cjs/ion-segment-view.cjs.entry.js +122 -0
- package/dist/cjs/ion-segment_2.cjs.entry.js +132 -19
- package/dist/cjs/ion-select-modal.cjs.entry.js +111 -0
- package/dist/cjs/ion-select_3.cjs.entry.js +39 -14
- package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
- package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
- 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 +2 -2
- package/dist/cjs/ion-toast.cjs.entry.js +2 -2
- package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +3 -0
- package/dist/collection/components/alert/alert.js +7 -5
- package/dist/collection/components/app/app.js +1 -1
- 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 +4 -4
- 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 +29 -4
- 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 +2 -2
- package/dist/collection/components/datetime-button/datetime-button.js +2 -2
- 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.js +3 -3
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +3 -3
- 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.js +2 -2
- 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 +47 -27
- 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 +4 -4
- 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 +9 -7
- package/dist/collection/components/radio-group/radio-group.js +5 -3
- package/dist/collection/components/range/range.js +3 -3
- 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 +4 -4
- package/dist/collection/components/segment/segment.js +115 -14
- package/dist/collection/components/segment-button/segment-button.js +40 -5
- package/dist/collection/components/segment-content/segment-content.css +6 -0
- package/dist/collection/components/segment-content/segment-content.js +21 -0
- package/dist/collection/components/segment-view/segment-view-interface.js +1 -0
- package/dist/collection/components/segment-view/segment-view.ios.css +83 -0
- package/dist/collection/components/segment-view/segment-view.js +227 -0
- package/dist/collection/components/segment-view/segment-view.md.css +83 -0
- package/dist/collection/components/select/select.js +61 -16
- package/dist/collection/components/select-modal/select-modal-interface.js +1 -0
- package/dist/collection/components/select-modal/select-modal.ios.css +3 -0
- package/dist/collection/components/select-modal/select-modal.js +159 -0
- package/dist/collection/components/select-modal/select-modal.md.css +110 -0
- package/dist/collection/components/select-modal/test/fixtures.js +48 -0
- 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/textarea.js +2 -2
- 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/menu-controller/index.js +2 -2
- package/dist/docs.json +426 -29
- package/dist/esm/{index-fe1782b1.js → index-24b48b06.js} +2 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/ion-alert.entry.js +7 -5
- package/dist/esm/ion-app_8.entry.js +15 -15
- package/dist/esm/ion-avatar_3.entry.js +4 -4
- package/dist/esm/ion-back-button.entry.js +2 -2
- package/dist/esm/ion-backdrop.entry.js +1 -1
- package/dist/esm/ion-breadcrumb_2.entry.js +6 -6
- package/dist/esm/ion-button_2.entry.js +2 -2
- package/dist/esm/ion-card_5.entry.js +8 -8
- package/dist/esm/ion-checkbox.entry.js +5 -4
- package/dist/esm/ion-chip.entry.js +2 -2
- package/dist/esm/ion-col_3.entry.js +5 -5
- package/dist/esm/ion-datetime-button.entry.js +2 -2
- package/dist/esm/ion-datetime_3.entry.js +6 -6
- package/dist/esm/ion-fab_3.entry.js +6 -6
- package/dist/esm/ion-img.entry.js +1 -1
- package/dist/esm/ion-infinite-scroll_2.entry.js +3 -3
- package/dist/esm/ion-input-password-toggle.entry.js +3 -3
- package/dist/esm/ion-input.entry.js +3 -3
- package/dist/esm/ion-item-option_3.entry.js +4 -4
- package/dist/esm/ion-item_8.entry.js +12 -12
- package/dist/esm/ion-loading.entry.js +2 -2
- package/dist/esm/ion-menu_3.entry.js +24 -24
- package/dist/esm/ion-modal.entry.js +4 -4
- package/dist/esm/ion-nav_2.entry.js +2 -2
- package/dist/esm/ion-picker-column-option.entry.js +2 -2
- 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 +2 -2
- package/dist/esm/ion-progress-bar.entry.js +1 -1
- package/dist/esm/ion-radio_2.entry.js +12 -8
- package/dist/esm/ion-range.entry.js +3 -3
- package/dist/esm/ion-refresher_2.entry.js +2 -2
- package/dist/esm/ion-reorder_2.entry.js +2 -2
- package/dist/esm/ion-ripple-effect.entry.js +1 -1
- package/dist/esm/ion-route_4.entry.js +2 -2
- package/dist/esm/ion-searchbar.entry.js +4 -4
- package/dist/esm/ion-segment-content.entry.js +19 -0
- package/dist/esm/ion-segment-view.entry.js +118 -0
- package/dist/esm/ion-segment_2.entry.js +132 -19
- package/dist/esm/ion-select-modal.entry.js +107 -0
- package/dist/esm/ion-select_3.entry.js +40 -15
- package/dist/esm/ion-spinner.entry.js +1 -1
- package/dist/esm/ion-split-pane.entry.js +2 -2
- package/dist/esm/ion-tab-bar_2.entry.js +4 -4
- 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 +2 -2
- package/dist/esm/ion-toast.entry.js +2 -2
- package/dist/esm/ion-toggle.entry.js +3 -3
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm-es5/{index-fe1782b1.js → index-24b48b06.js} +1 -1
- package/dist/esm-es5/index.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 +2 -2
- package/dist/esm-es5/ion-chip.entry.js +1 -1
- package/dist/esm-es5/ion-col_3.entry.js +1 -1
- package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
- package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
- package/dist/esm-es5/ion-fab_3.entry.js +1 -1
- package/dist/esm-es5/ion-img.entry.js +1 -1
- package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
- package/dist/esm-es5/ion-input-password-toggle.entry.js +1 -1
- package/dist/esm-es5/ion-input.entry.js +1 -1
- package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
- package/dist/esm-es5/ion-item_8.entry.js +1 -1
- package/dist/esm-es5/ion-loading.entry.js +1 -1
- package/dist/esm-es5/ion-menu_3.entry.js +1 -1
- package/dist/esm-es5/ion-modal.entry.js +1 -1
- package/dist/esm-es5/ion-nav_2.entry.js +1 -1
- package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
- package/dist/esm-es5/ion-picker-column.entry.js +1 -1
- package/dist/esm-es5/ion-picker.entry.js +1 -1
- package/dist/esm-es5/ion-popover.entry.js +1 -1
- package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
- package/dist/esm-es5/ion-radio_2.entry.js +1 -1
- package/dist/esm-es5/ion-range.entry.js +1 -1
- package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
- package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
- package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
- package/dist/esm-es5/ion-route_4.entry.js +1 -1
- package/dist/esm-es5/ion-searchbar.entry.js +1 -1
- package/dist/esm-es5/ion-segment-content.entry.js +4 -0
- package/dist/esm-es5/ion-segment-view.entry.js +4 -0
- package/dist/esm-es5/ion-segment_2.entry.js +1 -1
- package/dist/esm-es5/ion-select-modal.entry.js +4 -0
- 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.js +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/html.html-data.json +65 -2
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-313ccc01.system.entry.js → p-01186920.system.entry.js} +1 -1
- package/dist/ionic/{p-0790b342.system.entry.js → p-0161caf9.system.entry.js} +1 -1
- package/dist/ionic/p-0437ace4.system.entry.js +4 -0
- package/dist/ionic/{p-e3e1e3de.entry.js → p-081a4ce4.entry.js} +1 -1
- package/dist/ionic/p-09cf2394.entry.js +4 -0
- package/dist/ionic/p-14be4015.entry.js +4 -0
- package/dist/ionic/p-15e76dd1.entry.js +4 -0
- package/dist/ionic/{p-003eecb9.entry.js → p-16188af7.entry.js} +1 -1
- package/dist/ionic/p-16799667.system.entry.js +4 -0
- package/dist/ionic/p-16bfb979.system.entry.js +4 -0
- package/dist/ionic/{p-b54fc1ae.entry.js → p-19ec4f42.entry.js} +1 -1
- package/dist/ionic/p-1b7605a7.system.entry.js +4 -0
- package/dist/ionic/p-1c1b8e1f.entry.js +4 -0
- package/dist/ionic/{p-8b6232a6.system.entry.js → p-1e010627.system.entry.js} +2 -2
- package/dist/ionic/{p-d754c709.system.entry.js → p-1e41f2aa.system.entry.js} +1 -1
- package/dist/ionic/{p-cdb11938.system.entry.js → p-1e67b266.system.entry.js} +1 -1
- package/dist/ionic/{p-bd25d639.system.entry.js → p-1ebd1e27.system.entry.js} +1 -1
- package/dist/ionic/{p-836d39d4.system.entry.js → p-2172893e.system.entry.js} +1 -1
- package/dist/ionic/{p-4a0a4204.system.entry.js → p-2507278c.system.entry.js} +1 -1
- package/dist/ionic/{p-75c0dc65.system.entry.js → p-2799c6d3.system.entry.js} +1 -1
- package/dist/ionic/{p-a879ecb7.system.entry.js → p-2abae1cc.system.entry.js} +1 -1
- package/dist/ionic/{p-293ed6ac.system.entry.js → p-2b838f86.system.entry.js} +1 -1
- package/dist/ionic/{p-4a82bd1c.system.entry.js → p-2e46590d.system.entry.js} +1 -1
- package/dist/ionic/{p-148b8abb.entry.js → p-2fc0dafe.entry.js} +1 -1
- package/dist/ionic/p-322c5fb4.system.js +2 -2
- package/dist/ionic/{p-60cc7986.entry.js → p-33a8a71b.entry.js} +1 -1
- package/dist/ionic/{p-18105026.system.entry.js → p-37cb43bd.system.entry.js} +1 -1
- package/dist/ionic/{p-ad9b5007.system.entry.js → p-3b419d79.system.entry.js} +1 -1
- package/dist/ionic/p-424eb140.system.entry.js +4 -0
- package/dist/ionic/{p-b7657e8d.entry.js → p-4439fc2a.entry.js} +1 -1
- package/dist/ionic/{p-be71fe0f.system.entry.js → p-4561cd09.system.entry.js} +1 -1
- package/dist/ionic/{p-c34659b9.entry.js → p-45693d7e.entry.js} +1 -1
- package/dist/ionic/p-49a0e74c.entry.js +4 -0
- package/dist/ionic/{p-6d50faff.entry.js → p-4a274c89.entry.js} +1 -1
- package/dist/ionic/{p-41c89b8d.entry.js → p-4b000207.entry.js} +1 -1
- package/dist/ionic/{p-fd0cb4ef.entry.js → p-4ec778aa.entry.js} +1 -1
- package/dist/ionic/{p-f559ac5b.entry.js → p-51796b2d.entry.js} +1 -1
- package/dist/ionic/{p-9ece8dcf.entry.js → p-52d7a191.entry.js} +1 -1
- package/dist/ionic/{p-79e7be3a.system.entry.js → p-5393e8bb.system.entry.js} +1 -1
- package/dist/ionic/{p-ce705aac.system.entry.js → p-567de071.system.entry.js} +1 -1
- package/dist/ionic/{p-95823c62.system.entry.js → p-5823babc.system.entry.js} +2 -2
- package/dist/ionic/{p-baffaf8d.system.entry.js → p-58d5df0c.system.entry.js} +1 -1
- package/dist/ionic/{p-521eca2e.entry.js → p-5ab1b709.entry.js} +1 -1
- package/dist/ionic/{p-c71f301f.system.entry.js → p-5b5c1505.system.entry.js} +1 -1
- package/dist/ionic/{p-8d44cf1f.entry.js → p-5b932840.entry.js} +1 -1
- package/dist/ionic/{p-f0ab13a8.system.entry.js → p-5bd39e5e.system.entry.js} +2 -2
- package/dist/ionic/{p-5800e441.entry.js → p-5f79d8c5.entry.js} +1 -1
- package/dist/ionic/{p-53add985.system.entry.js → p-5fce0c0b.system.entry.js} +1 -1
- package/dist/ionic/{p-233e6c93.entry.js → p-62af944c.entry.js} +1 -1
- package/dist/ionic/{p-00b01a55.system.entry.js → p-63b0abde.system.entry.js} +1 -1
- package/dist/ionic/p-6734db42.system.entry.js +4 -0
- package/dist/ionic/p-69666e8a.system.entry.js +4 -0
- package/dist/ionic/{p-5e842258.entry.js → p-6d32975a.entry.js} +1 -1
- package/dist/ionic/p-73dc4950.entry.js +4 -0
- package/dist/ionic/{p-fcd71204.system.entry.js → p-7458862e.system.entry.js} +1 -1
- package/dist/ionic/{p-a3711608.system.entry.js → p-797eeea8.system.entry.js} +1 -1
- package/dist/ionic/{p-f8c8b9ba.entry.js → p-7b9a2b23.entry.js} +1 -1
- package/dist/ionic/{p-6817cf42.system.entry.js → p-7ed1657c.system.entry.js} +1 -1
- package/dist/ionic/{p-79b12fda.system.js → p-8f05ba3b.system.js} +1 -1
- package/dist/ionic/p-908d6080.entry.js +4 -0
- package/dist/ionic/{p-af999a31.entry.js → p-937a7e21.entry.js} +1 -1
- package/dist/ionic/{p-4c8fceb0.entry.js → p-95775830.entry.js} +1 -1
- package/dist/ionic/{p-973f0b15.system.entry.js → p-98231c01.system.entry.js} +1 -1
- package/dist/ionic/{p-25928b83.system.entry.js → p-985a7e17.system.entry.js} +1 -1
- package/dist/ionic/{p-e3a5da9d.entry.js → p-98ff6b32.entry.js} +1 -1
- package/dist/ionic/{p-6e85e450.entry.js → p-9df2c6fb.entry.js} +1 -1
- package/dist/ionic/{p-7251fed5.entry.js → p-9ee1e8a6.entry.js} +1 -1
- package/dist/ionic/{p-da263d8e.entry.js → p-9fa07aec.entry.js} +1 -1
- package/dist/ionic/{p-d58f21d2.entry.js → p-a1051806.entry.js} +1 -1
- package/dist/ionic/{p-6ceb04b5.entry.js → p-a1b9a163.entry.js} +1 -1
- package/dist/ionic/p-a34b4d94.entry.js +4 -0
- package/dist/ionic/{p-8836d0eb.system.entry.js → p-a49378bb.system.entry.js} +1 -1
- package/dist/ionic/{p-6b8893dd.entry.js → p-a61cba41.entry.js} +1 -1
- package/dist/ionic/p-adbc4bdf.entry.js +4 -0
- package/dist/ionic/{p-49bc6544.entry.js → p-afecb188.entry.js} +1 -1
- package/dist/ionic/{p-be715dd3.system.entry.js → p-b335ffed.system.entry.js} +1 -1
- package/dist/ionic/{p-e3f13b08.js → p-b82d4cab.js} +1 -1
- package/dist/ionic/{p-68c4df55.entry.js → p-b9d7015f.entry.js} +1 -1
- package/dist/ionic/{p-7243df6f.entry.js → p-bb0db172.entry.js} +1 -1
- package/dist/ionic/{p-df83e308.system.entry.js → p-bc36ad98.system.entry.js} +1 -1
- package/dist/ionic/{p-773d118d.entry.js → p-bdad26e3.entry.js} +1 -1
- package/dist/ionic/p-c29f8157.system.entry.js +4 -0
- package/dist/ionic/p-c2b74d92.system.entry.js +4 -0
- package/dist/ionic/{p-176b372f.entry.js → p-c41ac815.entry.js} +1 -1
- package/dist/ionic/{p-5417b9bb.entry.js → p-c9f3a539.entry.js} +1 -1
- package/dist/ionic/{p-2ea1ca4f.system.entry.js → p-ca065903.system.entry.js} +1 -1
- package/dist/ionic/{p-2ca6eac2.system.entry.js → p-cac0e0b3.system.entry.js} +1 -1
- package/dist/ionic/{p-3c968c7f.system.entry.js → p-d18ab582.system.entry.js} +2 -2
- package/dist/ionic/{p-92d7a3d1.entry.js → p-d7aa6b00.entry.js} +1 -1
- package/dist/ionic/{p-21cfd4de.entry.js → p-da074ff7.entry.js} +1 -1
- package/dist/ionic/{p-9e208825.entry.js → p-db0c8e7d.entry.js} +1 -1
- package/dist/ionic/{p-89a0a446.entry.js → p-de930745.entry.js} +1 -1
- package/dist/ionic/p-e2252ad6.entry.js +4 -0
- package/dist/ionic/{p-960803fc.system.entry.js → p-e4ee80be.system.entry.js} +1 -1
- package/dist/ionic/{p-dda5c73d.entry.js → p-e563a35c.entry.js} +1 -1
- package/dist/ionic/{p-7740e32c.system.js → p-e7ed4a7f.system.js} +1 -1
- package/dist/ionic/{p-0373d924.system.entry.js → p-ebf042e0.system.entry.js} +1 -1
- package/dist/ionic/{p-9b6c6302.system.entry.js → p-ed75fcfb.system.entry.js} +1 -1
- package/dist/ionic/p-f10b70a1.entry.js +4 -0
- package/dist/ionic/{p-01503bbd.system.entry.js → p-f3102647.system.entry.js} +1 -1
- package/dist/ionic/{p-6562e0a9.system.entry.js → p-fca6ef5f.system.entry.js} +1 -1
- package/dist/ionic/{p-b0180ce1.system.entry.js → p-ffd131f9.system.entry.js} +1 -1
- package/dist/types/components/checkbox/checkbox.d.ts +2 -1
- package/dist/types/components/menu/menu-interface.d.ts +5 -2
- package/dist/types/components/menu/menu.d.ts +6 -6
- package/dist/types/components/radio/radio.d.ts +1 -1
- package/dist/types/components/segment/segment.d.ts +21 -1
- package/dist/types/components/segment-button/segment-button.d.ts +4 -0
- package/dist/types/components/segment-content/segment-content.d.ts +4 -0
- package/dist/types/components/segment-view/segment-view-interface.d.ts +4 -0
- package/dist/types/components/segment-view/segment-view.d.ts +55 -0
- package/dist/types/components/select/select-interface.d.ts +1 -1
- package/dist/types/components/select/select.d.ts +5 -4
- package/dist/types/components/select-modal/select-modal-interface.d.ts +10 -0
- package/dist/types/components/select-modal/select-modal.d.ts +16 -0
- package/dist/types/components/select-modal/test/fixtures.d.ts +16 -0
- package/dist/types/components.d.ts +103 -13
- package/dist/types/utils/overlays-interface.d.ts +1 -1
- package/hydrate/index.js +610 -212
- package/hydrate/index.mjs +610 -212
- package/package.json +1 -1
- package/dist/ionic/p-110e03be.system.entry.js +0 -4
- package/dist/ionic/p-2200e26b.entry.js +0 -4
- package/dist/ionic/p-44d1539c.system.entry.js +0 -4
- package/dist/ionic/p-53854390.entry.js +0 -4
- package/dist/ionic/p-63d65dbc.system.entry.js +0 -4
- package/dist/ionic/p-72ffd137.system.entry.js +0 -4
- package/dist/ionic/p-82ab7ccb.entry.js +0 -4
- package/dist/ionic/p-87a4407b.entry.js +0 -4
- package/dist/ionic/p-9172535c.entry.js +0 -4
- package/dist/ionic/p-93f37ceb.system.entry.js +0 -4
- package/dist/ionic/p-9895e7f3.entry.js +0 -4
- package/dist/ionic/p-a0c88dc2.system.entry.js +0 -4
- package/dist/ionic/p-a89dac49.entry.js +0 -4
- package/dist/ionic/p-f88ebc36.entry.js +0 -4
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: flex;
|
|
3
|
+
height: 100%;
|
|
4
|
+
overflow-x: scroll;
|
|
5
|
+
scroll-snap-type: x mandatory;
|
|
6
|
+
/* Hide scrollbar in Firefox */
|
|
7
|
+
scrollbar-width: none;
|
|
8
|
+
/* Hide scrollbar in IE and Edge */
|
|
9
|
+
-ms-overflow-style: none;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/* Hide scrollbar in webkit */
|
|
13
|
+
:host::-webkit-scrollbar {
|
|
14
|
+
display: none;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
:host(.segment-view-disabled) {
|
|
18
|
+
touch-action: none;
|
|
19
|
+
overflow-x: hidden;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
:host(.segment-view-scroll-disabled) {
|
|
23
|
+
pointer-events: none;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Convert a font size to a dynamic font size.
|
|
28
|
+
* Fonts that participate in Dynamic Type should use
|
|
29
|
+
* dynamic font sizes.
|
|
30
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
31
|
+
* @param unit (optional) - The unit to convert to. Use this if you want to
|
|
32
|
+
* convert to a unit other than $baselineUnit.
|
|
33
|
+
*/
|
|
34
|
+
/**
|
|
35
|
+
* Convert a font size to a dynamic font size but impose
|
|
36
|
+
* a maximum font size.
|
|
37
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
38
|
+
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
39
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
40
|
+
* convert to a unit other than $baselineUnit.
|
|
41
|
+
*/
|
|
42
|
+
/**
|
|
43
|
+
* Convert a font size to a dynamic font size but impose
|
|
44
|
+
* a minimum font size.
|
|
45
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
46
|
+
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
47
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
48
|
+
* convert to a unit other than $baselineUnit.
|
|
49
|
+
*/
|
|
50
|
+
/**
|
|
51
|
+
* Convert a font size to a dynamic font size but impose
|
|
52
|
+
* maximum and minimum font sizes.
|
|
53
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
54
|
+
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
55
|
+
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
56
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
57
|
+
* convert to a unit other than $baselineUnit.
|
|
58
|
+
*/
|
|
59
|
+
/**
|
|
60
|
+
* A heuristic that applies CSS to tablet
|
|
61
|
+
* viewports.
|
|
62
|
+
*
|
|
63
|
+
* Usage:
|
|
64
|
+
* @include tablet-viewport() {
|
|
65
|
+
* :host {
|
|
66
|
+
* background-color: green;
|
|
67
|
+
* }
|
|
68
|
+
* }
|
|
69
|
+
*/
|
|
70
|
+
/**
|
|
71
|
+
* A heuristic that applies CSS to mobile
|
|
72
|
+
* viewports (i.e. phones, not tablets).
|
|
73
|
+
*
|
|
74
|
+
* Usage:
|
|
75
|
+
* @include mobile-viewport() {
|
|
76
|
+
* :host {
|
|
77
|
+
* background-color: blue;
|
|
78
|
+
* }
|
|
79
|
+
* }
|
|
80
|
+
*/
|
|
81
|
+
:host(.segment-view-disabled) {
|
|
82
|
+
opacity: 0.3;
|
|
83
|
+
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { Host, h, forceUpdate } from "@stencil/core";
|
|
5
5
|
import { compareOptions, createNotchController, isOptionSelected } from "../../utils/forms/index";
|
|
6
6
|
import { focusVisibleElement, renderHiddenInput, inheritAttributes } from "../../utils/helpers";
|
|
7
|
-
import { actionSheetController, alertController, popoverController } from "../../utils/overlays";
|
|
7
|
+
import { actionSheetController, alertController, popoverController, modalController } from "../../utils/overlays";
|
|
8
8
|
import { isRTL } from "../../utils/rtl/index";
|
|
9
9
|
import { createColorClasses, hostContext } from "../../utils/theme";
|
|
10
10
|
import { watchForOptions } from "../../utils/watch-options";
|
|
@@ -160,13 +160,12 @@ export class Select {
|
|
|
160
160
|
this.setFocus();
|
|
161
161
|
});
|
|
162
162
|
await overlay.present();
|
|
163
|
-
// focus selected option for popovers
|
|
164
|
-
if (this.interface === 'popover') {
|
|
165
|
-
const indexOfSelected = this.childOpts.
|
|
163
|
+
// focus selected option for popovers and modals
|
|
164
|
+
if (this.interface === 'popover' || this.interface === 'modal') {
|
|
165
|
+
const indexOfSelected = this.childOpts.findIndex((o) => o.value === this.value);
|
|
166
166
|
if (indexOfSelected > -1) {
|
|
167
167
|
const selectedItem = overlay.querySelector(`.select-interface-option:nth-child(${indexOfSelected + 1})`);
|
|
168
168
|
if (selectedItem) {
|
|
169
|
-
focusVisibleElement(selectedItem);
|
|
170
169
|
/**
|
|
171
170
|
* Browsers such as Firefox do not
|
|
172
171
|
* correctly delegate focus when manually
|
|
@@ -180,8 +179,11 @@ export class Select {
|
|
|
180
179
|
*/
|
|
181
180
|
const interactiveEl = selectedItem.querySelector('ion-radio, ion-checkbox');
|
|
182
181
|
if (interactiveEl) {
|
|
183
|
-
|
|
182
|
+
// Needs to be called before `focusVisibleElement` to prevent issue with focus event bubbling
|
|
183
|
+
// and removing `ion-focused` style
|
|
184
|
+
interactiveEl.setFocus();
|
|
184
185
|
}
|
|
186
|
+
focusVisibleElement(selectedItem);
|
|
185
187
|
}
|
|
186
188
|
}
|
|
187
189
|
else {
|
|
@@ -190,11 +192,14 @@ export class Select {
|
|
|
190
192
|
*/
|
|
191
193
|
const firstEnabledOption = overlay.querySelector('ion-radio:not(.radio-disabled), ion-checkbox:not(.checkbox-disabled)');
|
|
192
194
|
if (firstEnabledOption) {
|
|
193
|
-
focusVisibleElement(firstEnabledOption.closest('ion-item'));
|
|
194
195
|
/**
|
|
195
196
|
* Focus the option for the same reason as we do above.
|
|
197
|
+
*
|
|
198
|
+
* Needs to be called before `focusVisibleElement` to prevent issue with focus event bubbling
|
|
199
|
+
* and removing `ion-focused` style
|
|
196
200
|
*/
|
|
197
|
-
firstEnabledOption.
|
|
201
|
+
firstEnabledOption.setFocus();
|
|
202
|
+
focusVisibleElement(firstEnabledOption.closest('ion-item'));
|
|
198
203
|
}
|
|
199
204
|
}
|
|
200
205
|
}
|
|
@@ -216,6 +221,9 @@ export class Select {
|
|
|
216
221
|
if (selectInterface === 'popover') {
|
|
217
222
|
return this.openPopover(ev);
|
|
218
223
|
}
|
|
224
|
+
if (selectInterface === 'modal') {
|
|
225
|
+
return this.openModal();
|
|
226
|
+
}
|
|
219
227
|
return this.openAlert();
|
|
220
228
|
}
|
|
221
229
|
updateOverlayOptions() {
|
|
@@ -232,7 +240,13 @@ export class Select {
|
|
|
232
240
|
case 'popover':
|
|
233
241
|
const popover = overlay.querySelector('ion-select-popover');
|
|
234
242
|
if (popover) {
|
|
235
|
-
popover.options = this.
|
|
243
|
+
popover.options = this.createOverlaySelectOptions(childOpts, value);
|
|
244
|
+
}
|
|
245
|
+
break;
|
|
246
|
+
case 'modal':
|
|
247
|
+
const modal = overlay.querySelector('ion-select-modal');
|
|
248
|
+
if (modal) {
|
|
249
|
+
modal.options = this.createOverlaySelectOptions(childOpts, value);
|
|
236
250
|
}
|
|
237
251
|
break;
|
|
238
252
|
case 'alert':
|
|
@@ -287,7 +301,7 @@ export class Select {
|
|
|
287
301
|
});
|
|
288
302
|
return alertInputs;
|
|
289
303
|
}
|
|
290
|
-
|
|
304
|
+
createOverlaySelectOptions(data, selectValue) {
|
|
291
305
|
const popoverOptions = data.map((option) => {
|
|
292
306
|
const value = getOptionValue(option);
|
|
293
307
|
// Remove hydrated before copying over classes
|
|
@@ -347,7 +361,7 @@ export class Select {
|
|
|
347
361
|
message: interfaceOptions.message,
|
|
348
362
|
multiple,
|
|
349
363
|
value,
|
|
350
|
-
options: this.
|
|
364
|
+
options: this.createOverlaySelectOptions(this.childOpts, value),
|
|
351
365
|
} });
|
|
352
366
|
/**
|
|
353
367
|
* Workaround for Stencil to autodefine
|
|
@@ -416,6 +430,29 @@ export class Select {
|
|
|
416
430
|
}
|
|
417
431
|
return alertController.create(alertOpts);
|
|
418
432
|
}
|
|
433
|
+
openModal() {
|
|
434
|
+
const { multiple, value, interfaceOptions } = this;
|
|
435
|
+
const mode = getIonMode(this);
|
|
436
|
+
const modalOpts = Object.assign(Object.assign({}, interfaceOptions), { mode, cssClass: ['select-modal', interfaceOptions.cssClass], component: 'ion-select-modal', componentProps: {
|
|
437
|
+
header: interfaceOptions.header,
|
|
438
|
+
multiple,
|
|
439
|
+
value,
|
|
440
|
+
options: this.createOverlaySelectOptions(this.childOpts, value),
|
|
441
|
+
} });
|
|
442
|
+
/**
|
|
443
|
+
* Workaround for Stencil to autodefine
|
|
444
|
+
* ion-select-modal and ion-modal when
|
|
445
|
+
* using Custom Elements build.
|
|
446
|
+
*/
|
|
447
|
+
// eslint-disable-next-line
|
|
448
|
+
if (false) {
|
|
449
|
+
// eslint-disable-next-line
|
|
450
|
+
// @ts-ignore
|
|
451
|
+
document.createElement('ion-select-modal');
|
|
452
|
+
document.createElement('ion-modal');
|
|
453
|
+
}
|
|
454
|
+
return modalController.create(modalOpts);
|
|
455
|
+
}
|
|
419
456
|
/**
|
|
420
457
|
* Close the select interface.
|
|
421
458
|
*/
|
|
@@ -623,7 +660,7 @@ export class Select {
|
|
|
623
660
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
624
661
|
*/
|
|
625
662
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
|
|
626
|
-
return (h(Host, { key: '
|
|
663
|
+
return (h(Host, { key: '144dfa5c49549a74fe516c65b9b8104a477ac789', onClick: this.onClick, class: createColorClasses(this.color, {
|
|
627
664
|
[mode]: true,
|
|
628
665
|
'in-item': inItem,
|
|
629
666
|
'in-item-color': hostContext('ion-item.ion-color', el),
|
|
@@ -639,7 +676,7 @@ export class Select {
|
|
|
639
676
|
[`select-justify-${justify}`]: justifyEnabled,
|
|
640
677
|
[`select-shape-${shape}`]: shape !== undefined,
|
|
641
678
|
[`select-label-placement-${labelPlacement}`]: true,
|
|
642
|
-
}) }, h("label", { key: '
|
|
679
|
+
}) }, h("label", { key: '0edcfcbac575a9dccc77991531b6980d1caebf42', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), h("div", { key: '348151d90cb093f5d21c7d4a834264ac4a312c40', class: "select-wrapper-inner" }, h("slot", { key: '8b7708c7f81217435c58276da0c08bba766d9500', name: "start" }), h("div", { key: '10c520a335da0a0d1cf40f9365597beb244d3b48', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: '0f15c40a5495e98e29d2a21ba21e0bc6f1c0125a', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: 'c87faad2e5ebf7f9453397d7ede43abd64d21294', class: "select-highlight" }))));
|
|
643
680
|
}
|
|
644
681
|
static get is() { return "ion-select"; }
|
|
645
682
|
static get encapsulation() { return "shadow"; }
|
|
@@ -761,7 +798,7 @@ export class Select {
|
|
|
761
798
|
"mutable": false,
|
|
762
799
|
"complexType": {
|
|
763
800
|
"original": "SelectInterface",
|
|
764
|
-
"resolved": "\"action-sheet\" | \"alert\" | \"popover\"",
|
|
801
|
+
"resolved": "\"action-sheet\" | \"alert\" | \"modal\" | \"popover\"",
|
|
765
802
|
"references": {
|
|
766
803
|
"SelectInterface": {
|
|
767
804
|
"location": "import",
|
|
@@ -774,7 +811,7 @@ export class Select {
|
|
|
774
811
|
"optional": false,
|
|
775
812
|
"docs": {
|
|
776
813
|
"tags": [],
|
|
777
|
-
"text": "The interface the select should use: `action-sheet`, `popover` or `
|
|
814
|
+
"text": "The interface the select should use: `action-sheet`, `popover`, `alert`, or `modal`."
|
|
778
815
|
},
|
|
779
816
|
"attribute": "interface",
|
|
780
817
|
"reflect": false,
|
|
@@ -792,7 +829,7 @@ export class Select {
|
|
|
792
829
|
"optional": false,
|
|
793
830
|
"docs": {
|
|
794
831
|
"tags": [],
|
|
795
|
-
"text": "Any additional options that the `alert`, `action-sheet` or `popover` interface\ncan take. See the [ion-alert docs](./alert), the\n[ion-action-sheet docs](./action-sheet)
|
|
832
|
+
"text": "Any additional options that the `alert`, `action-sheet` or `popover` interface\ncan take. See the [ion-alert docs](./alert), the\n[ion-action-sheet docs](./action-sheet), the\n[ion-popover docs](./popover), and the [ion-modal docs](./modal) for the\ncreate options for each interface.\n\nNote: `interfaceOptions` will not override `inputs` or `buttons` with the `alert` interface."
|
|
796
833
|
},
|
|
797
834
|
"attribute": "interface-options",
|
|
798
835
|
"reflect": false,
|
|
@@ -1143,6 +1180,14 @@ export class Select {
|
|
|
1143
1180
|
"HTMLElement": {
|
|
1144
1181
|
"location": "global",
|
|
1145
1182
|
"id": "global::HTMLElement"
|
|
1183
|
+
},
|
|
1184
|
+
"HTMLIonRadioElement": {
|
|
1185
|
+
"location": "global",
|
|
1186
|
+
"id": "global::HTMLIonRadioElement"
|
|
1187
|
+
},
|
|
1188
|
+
"HTMLIonCheckboxElement": {
|
|
1189
|
+
"location": "global",
|
|
1190
|
+
"id": "global::HTMLIonCheckboxElement"
|
|
1146
1191
|
}
|
|
1147
1192
|
},
|
|
1148
1193
|
"return": "Promise<any>"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { getIonMode } from "../../global/ionic-global";
|
|
5
|
+
import { Host, forceUpdate, h } from "@stencil/core";
|
|
6
|
+
import { safeCall } from "../../utils/overlays";
|
|
7
|
+
import { getClassMap } from "../../utils/theme";
|
|
8
|
+
export class SelectModal {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.header = undefined;
|
|
11
|
+
this.multiple = undefined;
|
|
12
|
+
this.options = [];
|
|
13
|
+
}
|
|
14
|
+
closeModal() {
|
|
15
|
+
const modal = this.el.closest('ion-modal');
|
|
16
|
+
if (modal) {
|
|
17
|
+
modal.dismiss();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
findOptionFromEvent(ev) {
|
|
21
|
+
const { options } = this;
|
|
22
|
+
return options.find((o) => o.value === ev.target.value);
|
|
23
|
+
}
|
|
24
|
+
getValues(ev) {
|
|
25
|
+
const { multiple, options } = this;
|
|
26
|
+
if (multiple) {
|
|
27
|
+
// this is a modal with checkboxes (multiple value select)
|
|
28
|
+
// return an array of all the checked values
|
|
29
|
+
return options.filter((o) => o.checked).map((o) => o.value);
|
|
30
|
+
}
|
|
31
|
+
// this is a modal with radio buttons (single value select)
|
|
32
|
+
// return the value that was clicked, otherwise undefined
|
|
33
|
+
const option = ev ? this.findOptionFromEvent(ev) : null;
|
|
34
|
+
return option ? option.value : undefined;
|
|
35
|
+
}
|
|
36
|
+
callOptionHandler(ev) {
|
|
37
|
+
const option = this.findOptionFromEvent(ev);
|
|
38
|
+
const values = this.getValues(ev);
|
|
39
|
+
if (option === null || option === void 0 ? void 0 : option.handler) {
|
|
40
|
+
safeCall(option.handler, values);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
setChecked(ev) {
|
|
44
|
+
const { multiple } = this;
|
|
45
|
+
const option = this.findOptionFromEvent(ev);
|
|
46
|
+
// this is a modal with checkboxes (multiple value select)
|
|
47
|
+
// we need to set the checked value for this option
|
|
48
|
+
if (multiple && option) {
|
|
49
|
+
option.checked = ev.detail.checked;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
renderRadioOptions() {
|
|
53
|
+
const checked = this.options.filter((o) => o.checked).map((o) => o.value)[0];
|
|
54
|
+
return (h("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, this.options.map((option) => (h("ion-item", { class: Object.assign({
|
|
55
|
+
// TODO FW-4784
|
|
56
|
+
'item-radio-checked': option.value === checked
|
|
57
|
+
}, getClassMap(option.cssClass)) }, h("ion-radio", { value: option.value, disabled: option.disabled, justify: "start", labelPlacement: "end", onClick: () => this.closeModal(), onKeyUp: (ev) => {
|
|
58
|
+
if (ev.key === ' ') {
|
|
59
|
+
/**
|
|
60
|
+
* Selecting a radio option with keyboard navigation,
|
|
61
|
+
* either through the Enter or Space keys, should
|
|
62
|
+
* dismiss the modal.
|
|
63
|
+
*/
|
|
64
|
+
this.closeModal();
|
|
65
|
+
}
|
|
66
|
+
} }, option.text))))));
|
|
67
|
+
}
|
|
68
|
+
renderCheckboxOptions() {
|
|
69
|
+
return this.options.map((option) => (h("ion-item", { class: Object.assign({
|
|
70
|
+
// TODO FW-4784
|
|
71
|
+
'item-checkbox-checked': option.checked
|
|
72
|
+
}, getClassMap(option.cssClass)) }, h("ion-checkbox", { value: option.value, disabled: option.disabled, checked: option.checked, justify: "start", labelPlacement: "end", onIonChange: (ev) => {
|
|
73
|
+
this.setChecked(ev);
|
|
74
|
+
this.callOptionHandler(ev);
|
|
75
|
+
// TODO FW-4784
|
|
76
|
+
forceUpdate(this);
|
|
77
|
+
} }, option.text))));
|
|
78
|
+
}
|
|
79
|
+
render() {
|
|
80
|
+
return (h(Host, { key: 'f4b92f4fc3d646f9a327e43a9622abaf69659c28', class: getIonMode(this) }, h("ion-header", { key: '11232ef496e7abd69e55cef988963a4869a7b01e' }, h("ion-toolbar", { key: 'e7c41878691a504d44c658db02807867df542588' }, this.header !== undefined && h("ion-title", { key: 'fcf9d33e0f3e0076ff14805de68848f9ef199cca' }, this.header), h("ion-buttons", { key: '748a967ae0ce68bc2fd018a6b9ebe0e4b810f6ac', slot: "end" }, h("ion-button", { key: 'f5e60791870b5085a31b7af70ed4bb3fb83eb185', onClick: () => this.closeModal() }, "Close")))), h("ion-content", { key: '159797957b6f788a9b393d91864c18db34481c68' }, h("ion-list", { key: '4124554fe8b2411637cbf02f08e50e0d8f804175' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
|
|
81
|
+
}
|
|
82
|
+
static get is() { return "ion-select-modal"; }
|
|
83
|
+
static get encapsulation() { return "scoped"; }
|
|
84
|
+
static get originalStyleUrls() {
|
|
85
|
+
return {
|
|
86
|
+
"ios": ["select-modal.ios.scss"],
|
|
87
|
+
"md": ["select-modal.md.scss"],
|
|
88
|
+
"ionic": ["select-modal.md.scss"]
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
static get styleUrls() {
|
|
92
|
+
return {
|
|
93
|
+
"ios": ["select-modal.ios.css"],
|
|
94
|
+
"md": ["select-modal.md.css"],
|
|
95
|
+
"ionic": ["select-modal.md.css"]
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
static get properties() {
|
|
99
|
+
return {
|
|
100
|
+
"header": {
|
|
101
|
+
"type": "string",
|
|
102
|
+
"mutable": false,
|
|
103
|
+
"complexType": {
|
|
104
|
+
"original": "string",
|
|
105
|
+
"resolved": "string | undefined",
|
|
106
|
+
"references": {}
|
|
107
|
+
},
|
|
108
|
+
"required": false,
|
|
109
|
+
"optional": true,
|
|
110
|
+
"docs": {
|
|
111
|
+
"tags": [],
|
|
112
|
+
"text": ""
|
|
113
|
+
},
|
|
114
|
+
"attribute": "header",
|
|
115
|
+
"reflect": false
|
|
116
|
+
},
|
|
117
|
+
"multiple": {
|
|
118
|
+
"type": "boolean",
|
|
119
|
+
"mutable": false,
|
|
120
|
+
"complexType": {
|
|
121
|
+
"original": "boolean",
|
|
122
|
+
"resolved": "boolean | undefined",
|
|
123
|
+
"references": {}
|
|
124
|
+
},
|
|
125
|
+
"required": false,
|
|
126
|
+
"optional": true,
|
|
127
|
+
"docs": {
|
|
128
|
+
"tags": [],
|
|
129
|
+
"text": ""
|
|
130
|
+
},
|
|
131
|
+
"attribute": "multiple",
|
|
132
|
+
"reflect": false
|
|
133
|
+
},
|
|
134
|
+
"options": {
|
|
135
|
+
"type": "unknown",
|
|
136
|
+
"mutable": false,
|
|
137
|
+
"complexType": {
|
|
138
|
+
"original": "SelectModalOption[]",
|
|
139
|
+
"resolved": "SelectModalOption[]",
|
|
140
|
+
"references": {
|
|
141
|
+
"SelectModalOption": {
|
|
142
|
+
"location": "import",
|
|
143
|
+
"path": "./select-modal-interface",
|
|
144
|
+
"id": "src/components/select-modal/select-modal-interface.ts::SelectModalOption"
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
"required": false,
|
|
149
|
+
"optional": false,
|
|
150
|
+
"docs": {
|
|
151
|
+
"tags": [],
|
|
152
|
+
"text": ""
|
|
153
|
+
},
|
|
154
|
+
"defaultValue": "[]"
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
static get elementRef() { return "el"; }
|
|
159
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
height: 100%;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* A heuristic that applies CSS to tablet
|
|
7
|
+
* viewports.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* @include tablet-viewport() {
|
|
11
|
+
* :host {
|
|
12
|
+
* background-color: green;
|
|
13
|
+
* }
|
|
14
|
+
* }
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* A heuristic that applies CSS to mobile
|
|
18
|
+
* viewports (i.e. phones, not tablets).
|
|
19
|
+
*
|
|
20
|
+
* Usage:
|
|
21
|
+
* @include mobile-viewport() {
|
|
22
|
+
* :host {
|
|
23
|
+
* background-color: blue;
|
|
24
|
+
* }
|
|
25
|
+
* }
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* Convert a font size to a dynamic font size.
|
|
29
|
+
* Fonts that participate in Dynamic Type should use
|
|
30
|
+
* dynamic font sizes.
|
|
31
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
32
|
+
* @param unit (optional) - The unit to convert to. Use this if you want to
|
|
33
|
+
* convert to a unit other than $baselineUnit.
|
|
34
|
+
*/
|
|
35
|
+
/**
|
|
36
|
+
* Convert a font size to a dynamic font size but impose
|
|
37
|
+
* a maximum font size.
|
|
38
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
39
|
+
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
40
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
41
|
+
* convert to a unit other than $baselineUnit.
|
|
42
|
+
*/
|
|
43
|
+
/**
|
|
44
|
+
* Convert a font size to a dynamic font size but impose
|
|
45
|
+
* a minimum font size.
|
|
46
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
47
|
+
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
48
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
49
|
+
* convert to a unit other than $baselineUnit.
|
|
50
|
+
*/
|
|
51
|
+
/**
|
|
52
|
+
* Convert a font size to a dynamic font size but impose
|
|
53
|
+
* maximum and minimum font sizes.
|
|
54
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
55
|
+
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
56
|
+
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
57
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
58
|
+
* convert to a unit other than $baselineUnit.
|
|
59
|
+
*/
|
|
60
|
+
/**
|
|
61
|
+
* A heuristic that applies CSS to tablet
|
|
62
|
+
* viewports.
|
|
63
|
+
*
|
|
64
|
+
* Usage:
|
|
65
|
+
* @include tablet-viewport() {
|
|
66
|
+
* :host {
|
|
67
|
+
* background-color: green;
|
|
68
|
+
* }
|
|
69
|
+
* }
|
|
70
|
+
*/
|
|
71
|
+
/**
|
|
72
|
+
* A heuristic that applies CSS to mobile
|
|
73
|
+
* viewports (i.e. phones, not tablets).
|
|
74
|
+
*
|
|
75
|
+
* Usage:
|
|
76
|
+
* @include mobile-viewport() {
|
|
77
|
+
* :host {
|
|
78
|
+
* background-color: blue;
|
|
79
|
+
* }
|
|
80
|
+
* }
|
|
81
|
+
*/
|
|
82
|
+
ion-list ion-radio::part(container) {
|
|
83
|
+
display: none;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
ion-list ion-radio::part(label) {
|
|
87
|
+
margin-left: 0;
|
|
88
|
+
margin-right: 0;
|
|
89
|
+
margin-top: 0;
|
|
90
|
+
margin-bottom: 0;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
ion-item {
|
|
94
|
+
--inner-border-width: 0;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.item-radio-checked {
|
|
98
|
+
--background: rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.08);
|
|
99
|
+
--background-focused: var(--ion-color-primary, #0054e9);
|
|
100
|
+
--background-focused-opacity: 0.2;
|
|
101
|
+
--background-hover: var(--ion-color-primary, #0054e9);
|
|
102
|
+
--background-hover-opacity: 0.12;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.item-checkbox-checked {
|
|
106
|
+
--background-activated: var(--ion-item-color, var(--ion-text-color, #000));
|
|
107
|
+
--background-focused: var(--ion-item-color, var(--ion-text-color, #000));
|
|
108
|
+
--background-hover: var(--ion-item-color, var(--ion-text-color, #000));
|
|
109
|
+
--color: var(--ion-color-primary, #0054e9);
|
|
110
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { expect } from "@playwright/test";
|
|
5
|
+
export class SelectModalPage {
|
|
6
|
+
constructor(page) {
|
|
7
|
+
this.options = [];
|
|
8
|
+
this.page = page;
|
|
9
|
+
}
|
|
10
|
+
async setup(config, options, multiple = false) {
|
|
11
|
+
const { page } = this;
|
|
12
|
+
await page.setContent(`
|
|
13
|
+
<ion-modal>
|
|
14
|
+
<ion-select-modal></ion-select-modal>
|
|
15
|
+
</ion-modal>
|
|
16
|
+
<script>
|
|
17
|
+
const selectModal = document.querySelector('ion-select-modal');
|
|
18
|
+
selectModal.options = ${JSON.stringify(options)};
|
|
19
|
+
selectModal.multiple = ${multiple};
|
|
20
|
+
</script>
|
|
21
|
+
`, config);
|
|
22
|
+
const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent');
|
|
23
|
+
this.ionModalDidDismiss = await page.spyOnEvent('ionModalDidDismiss');
|
|
24
|
+
this.modal = page.locator('ion-modal');
|
|
25
|
+
this.selectModal = page.locator('ion-select-modal');
|
|
26
|
+
this.multiple = multiple;
|
|
27
|
+
this.options = options;
|
|
28
|
+
await this.modal.evaluate((modal) => modal.present());
|
|
29
|
+
await ionModalDidPresent.next();
|
|
30
|
+
}
|
|
31
|
+
async screenshot(screenshot, name) {
|
|
32
|
+
await expect(this.selectModal).toHaveScreenshot(screenshot(name));
|
|
33
|
+
}
|
|
34
|
+
async clickOption(value) {
|
|
35
|
+
const option = this.getOption(value);
|
|
36
|
+
await option.click();
|
|
37
|
+
}
|
|
38
|
+
async pressSpaceOnOption(value) {
|
|
39
|
+
const option = this.getOption(value);
|
|
40
|
+
await option.press('Space');
|
|
41
|
+
}
|
|
42
|
+
getOption(value) {
|
|
43
|
+
const { multiple, selectModal } = this;
|
|
44
|
+
const selector = multiple ? 'ion-checkbox' : 'ion-radio';
|
|
45
|
+
const index = this.options.findIndex((o) => o.value === value);
|
|
46
|
+
return selectModal.locator(selector).nth(index);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -10,7 +10,7 @@ export class SelectOption {
|
|
|
10
10
|
this.value = undefined;
|
|
11
11
|
}
|
|
12
12
|
render() {
|
|
13
|
-
return h(Host, { key: '
|
|
13
|
+
return h(Host, { key: '2e6fa159464f04f6d8720f960141f67918bc7534', role: "option", id: this.inputId, class: getIonMode(this) });
|
|
14
14
|
}
|
|
15
15
|
static get is() { return "ion-select-option"; }
|
|
16
16
|
static get encapsulation() { return "shadow"; }
|
|
@@ -102,7 +102,7 @@ export class SelectPopover {
|
|
|
102
102
|
render() {
|
|
103
103
|
const { header, message, options, subHeader } = this;
|
|
104
104
|
const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
|
|
105
|
-
return (h(Host, { key: '
|
|
105
|
+
return (h(Host, { key: 'dd0990db4de4f175b176b27f35501dd1604ca400', class: getIonMode(this) }, h("ion-list", { key: 'cea2bc3687b8b2490a2a9ff4a1e16cd34169558e' }, header !== undefined && h("ion-list-header", { key: '194aebb53453c43f913daae45a1a3066a1708c4c' }, header), hasSubHeaderOrMessage && (h("ion-item", { key: 'b706b07a3c63ad8104d2db413e210c735ec1bec9' }, h("ion-label", { key: '6e52b5b4cf6b04ff3dd5671d64264233de4190d5', class: "ion-text-wrap" }, subHeader !== undefined && h("h3", { key: '6ef4440d17f5db8c96c63b9aa5073f4fe4b8ad62' }, subHeader), message !== undefined && h("p", { key: 'c7b3b76c30ecd606c0e985a0258c13d3a75756e7' }, message)))), this.renderOptions(options))));
|
|
106
106
|
}
|
|
107
107
|
static get is() { return "ion-select-popover"; }
|
|
108
108
|
static get encapsulation() { return "scoped"; }
|
|
@@ -25,11 +25,11 @@ export class SkeletonText {
|
|
|
25
25
|
const animated = this.animated && config.getBoolean('animated', true);
|
|
26
26
|
const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
|
|
27
27
|
const mode = getIonMode(this);
|
|
28
|
-
return (h(Host, { key: '
|
|
28
|
+
return (h(Host, { key: 'fdfabf9364caf507450239b62be24f08873bd650', class: {
|
|
29
29
|
[mode]: true,
|
|
30
30
|
'skeleton-text-animated': animated,
|
|
31
31
|
'in-media': inMedia,
|
|
32
|
-
} }, h("span", { key: '
|
|
32
|
+
} }, h("span", { key: '3482c88dcc177547185ce87972afa064a542367d' }, "\u00A0")));
|
|
33
33
|
}
|
|
34
34
|
static get is() { return "ion-skeleton-text"; }
|
|
35
35
|
static get encapsulation() { return "shadow"; }
|
|
@@ -39,7 +39,7 @@ export class Spinner {
|
|
|
39
39
|
svgs.push(buildLine(spinner, duration, i, spinner.lines));
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
return (h(Host, { key: '
|
|
42
|
+
return (h(Host, { key: '9d30ee9f5aa0dd0e220da07e75d05b8b2435224d', class: createColorClasses(self.color, {
|
|
43
43
|
[mode]: true,
|
|
44
44
|
[`spinner-${spinnerName}`]: true,
|
|
45
45
|
'spinner-paused': self.paused || config.getBoolean('_testing'),
|
|
@@ -118,12 +118,12 @@ export class SplitPane {
|
|
|
118
118
|
}
|
|
119
119
|
render() {
|
|
120
120
|
const mode = getIonMode(this);
|
|
121
|
-
return (h(Host, { key: '
|
|
121
|
+
return (h(Host, { key: '1ca0b0299d03605bb358112ca56cbafbe58f00f5', class: {
|
|
122
122
|
[mode]: true,
|
|
123
123
|
// Used internally for styling
|
|
124
124
|
[`split-pane-${mode}`]: true,
|
|
125
125
|
'split-pane-visible': this.visible,
|
|
126
|
-
} }, h("slot", { key: '
|
|
126
|
+
} }, h("slot", { key: 'abe231361727ae7fc63edd592a4490caac1909fb' })));
|
|
127
127
|
}
|
|
128
128
|
static get is() { return "ion-split-pane"; }
|
|
129
129
|
static get encapsulation() { return "shadow"; }
|