Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions docs/api/tabs.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,13 @@ Ionic has guides on best practices for routing patterns with tabs. Check out the

:::

## Programmatically Selecting Tabs

Tabs can be selected programmatically using the `select` method. This is useful when tab changes need to be triggered from application logic, such as in response to a button click or after completing a form. The following example demonstrates using a button to call the `select` method to navigate to a different tab.

import SelectMethod from '@site/static/usage/v8/tabs/select-method/index.md';

<SelectMethod />

## Interfaces

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
```html
<ion-tabs>
<ion-tab tab="home">
<div id="home-page">
<div id="home-page" class="ion-page">
<ion-header>
<ion-toolbar>
<ion-title>Listen now</ion-title>
Expand All @@ -13,7 +13,7 @@
</div>
</ion-tab>
<ion-tab tab="radio">
<div id="radio-page">
<div id="radio-page" class="ion-page">
<ion-header>
<ion-toolbar>
<ion-title>Radio</ion-title>
Expand All @@ -25,7 +25,7 @@
</div>
</ion-tab>
<ion-tab tab="library">
<div id="library-page">
<div id="library-page" class="ion-page">
<ion-header>
<ion-toolbar>
<ion-title>Library</ion-title>
Expand All @@ -37,7 +37,7 @@
</div>
</ion-tab>
<ion-tab tab="search">
<div id="search-page">
<div id="search-page" class="ion-page">
<ion-header>
<ion-toolbar>
<ion-title>Search</ion-title>
Expand Down
8 changes: 4 additions & 4 deletions static/usage/v8/tabs/basic/demo.html
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
<ion-app>
<ion-tabs>
<ion-tab tab="home">
<div id="home-page">
<div id="home-page" class="ion-page">
<ion-header>
<ion-toolbar>
<ion-title>Listen now</ion-title>
Expand All @@ -34,7 +34,7 @@
</div>
</ion-tab>
<ion-tab tab="radio">
<div id="radio-page">
<div id="radio-page" class="ion-page">
<ion-header>
<ion-toolbar>
<ion-title>Radio</ion-title>
Expand All @@ -46,7 +46,7 @@
</div>
</ion-tab>
<ion-tab tab="library">
<div id="library-page">
<div id="library-page" class="ion-page">
<ion-header>
<ion-toolbar>
<ion-title>Library</ion-title>
Expand All @@ -58,7 +58,7 @@
</div>
</ion-tab>
<ion-tab tab="search">
<div id="search-page">
<div id="search-page" class="ion-page">
<ion-header>
<ion-toolbar>
<ion-title>Search</ion-title>
Expand Down
8 changes: 4 additions & 4 deletions static/usage/v8/tabs/basic/javascript/index_html.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
```html
<ion-tabs>
<ion-tab tab="home">
<div id="home-page">
<div id="home-page" class="ion-page">
<ion-header>
<ion-toolbar>
<ion-title>Listen now</ion-title>
Expand All @@ -13,7 +13,7 @@
</div>
</ion-tab>
<ion-tab tab="radio">
<div id="radio-page">
<div id="radio-page" class="ion-page">
<ion-header>
<ion-toolbar>
<ion-title>Radio</ion-title>
Expand All @@ -25,7 +25,7 @@
</div>
</ion-tab>
<ion-tab tab="library">
<div id="library-page">
<div id="library-page" class="ion-page">
<ion-header>
<ion-toolbar>
<ion-title>Library</ion-title>
Expand All @@ -37,7 +37,7 @@
</div>
</ion-tab>
<ion-tab tab="search">
<div id="search-page">
<div id="search-page" class="ion-page">
<ion-header>
<ion-toolbar>
<ion-title>Search</ion-title>
Expand Down
27 changes: 14 additions & 13 deletions static/usage/v8/tabs/basic/react/main_tsx.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
```tsx
import React from 'react';
import {
IonTabs,
IonContent,
IonIcon,
IonHeader,
IonTab,
IonToolbar,
IonTabs,
IonTabBar,
IonTabButton,
IonHeader,
IonTitle,
IonContent,
IonIcon,
IonToolbar,
IonPage,
} from '@ionic/react';

import { playCircle, radio, library, search } from 'ionicons/icons';
Expand All @@ -20,7 +21,7 @@ function Example() {
return (
<IonTabs>
<IonTab tab="home">
<div id="home-page">
<IonPage id="home-page">
<IonHeader>
<IonToolbar>
<IonTitle>Listen now</IonTitle>
Expand All @@ -29,10 +30,10 @@ function Example() {
<IonContent>
<div className="example-content">Listen now content</div>
</IonContent>
</div>
</IonPage>
</IonTab>
<IonTab tab="radio">
<div id="radio-page">
<IonPage id="radio-page">
<IonHeader>
<IonToolbar>
<IonTitle>Radio</IonTitle>
Expand All @@ -41,10 +42,10 @@ function Example() {
<IonContent>
<div className="example-content">Radio content</div>
</IonContent>
</div>
</IonPage>
</IonTab>
<IonTab tab="library">
<div id="library-page">
<IonPage id="library-page">
<IonHeader>
<IonToolbar>
<IonTitle>Library</IonTitle>
Expand All @@ -53,10 +54,10 @@ function Example() {
<IonContent>
<div className="example-content">Library content</div>
</IonContent>
</div>
</IonPage>
</IonTab>
<IonTab tab="search">
<div id="search-page">
<IonPage id="search-page">
<IonHeader>
<IonToolbar>
<IonTitle>Search</IonTitle>
Expand All @@ -65,7 +66,7 @@ function Example() {
<IonContent>
<div className="example-content">Search content</div>
</IonContent>
</div>
</IonPage>
</IonTab>

<IonTabBar slot="bottom">
Expand Down
50 changes: 27 additions & 23 deletions static/usage/v8/tabs/basic/vue.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,8 @@
```html
<style scoped>
/* This style is for demonstration purposes only. */
/* It's not required for the tabs to function. */
.example-content {
display: flex;
align-items: center;
justify-content: center;
height: 100%;
}
</style>
<template>
<ion-tabs>
<ion-tab tab="home">
<div id="home-page">
<ion-page id="home-page">
<ion-header>
<ion-toolbar>
<ion-title>Listen now</ion-title>
Expand All @@ -21,10 +11,10 @@
<ion-content>
<div class="example-content">Listen now content</div>
</ion-content>
</div>
</ion-page>
</ion-tab>
<ion-tab tab="radio">
<div id="radio-page">
<ion-page id="radio-page">
<ion-header>
<ion-toolbar>
<ion-title>Radio</ion-title>
Expand All @@ -33,10 +23,11 @@
<ion-content>
<div class="example-content">Radio content</div>
</ion-content>
</div>
</ion-page>
</ion-tab>
<ion-tab tab="library">
<div id="library-page">
<ion-page id="library-page"
>>
<ion-header>
<ion-toolbar>
<ion-title>Library</ion-title>
Expand All @@ -45,10 +36,11 @@
<ion-content>
<div class="example-content">Library content</div>
</ion-content>
</div>
</ion-page>
</ion-tab>
<ion-tab tab="search">
<div id="search-page">
<ion-page id="search-page"
>>
<ion-header>
<ion-toolbar>
<ion-title>Search</ion-title>
Expand All @@ -57,7 +49,7 @@
<ion-content>
<div class="example-content">Search content</div>
</ion-content>
</div>
</ion-page>
</ion-tab>

<ion-tab-bar slot="bottom">
Expand All @@ -83,16 +75,28 @@

<script setup lang="ts">
import {
IonTabs,
IonContent,
IonHeader,
IonIcon,
IonPage,
IonTab,
IonToolbar,
IonTabs,
IonTabBar,
IonTabButton,
IonContent,
IonHeader,
IonTitle,
IonIcon,
IonToolbar,
} from '@ionic/vue';
import { playCircle, radio, library, search } from 'ionicons/icons';
</script>

<style scoped>
/* This style is for demonstration purposes only. */
/* It's not required for the tabs to function. */
.example-content {
display: flex;
align-items: center;
justify-content: center;
height: 100%;
}
</style>
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
```css
/* This style is for demonstration purposes only. */
/* It's not required for the tabs to function. */
.example-content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100%;
gap: 10px;
}
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
```html
<ion-tabs #tabs>
<ion-tab tab="home">
<div id="home-page" class="ion-page">
<ion-header>
<ion-toolbar>
<ion-title>Listen now</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<div class="example-content">
Listen now content
<ion-button (click)="selectRadio()">Go to Radio</ion-button>
</div>
</ion-content>
</div>
</ion-tab>
<ion-tab tab="radio">
<div id="radio-page" class="ion-page">
<ion-header>
<ion-toolbar>
<ion-title>Radio</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<div class="example-content">Radio content</div>
</ion-content>
</div>
</ion-tab>
<ion-tab tab="library">
<div id="library-page" class="ion-page">
<ion-header>
<ion-toolbar>
<ion-title>Library</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<div class="example-content">Library content</div>
</ion-content>
</div>
</ion-tab>
<ion-tab tab="search">
<div id="search-page" class="ion-page">
<ion-header>
<ion-toolbar>
<ion-title>Search</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<div class="example-content">Search content</div>
</ion-content>
</div>
</ion-tab>

<ion-tab-bar slot="bottom">
<ion-tab-button tab="home">
<ion-icon name="play-circle"></ion-icon>
Listen Now
</ion-tab-button>
<ion-tab-button tab="radio">
<ion-icon name="radio"></ion-icon>
Radio
</ion-tab-button>
<ion-tab-button tab="library">
<ion-icon name="library"></ion-icon>
Library
</ion-tab-button>
<ion-tab-button tab="search">
<ion-icon name="search"></ion-icon>
Search
</ion-tab-button>
</ion-tab-bar>
</ion-tabs>
```
Loading