docs(vue): add revised overlay examples (#22173)

This commit is contained in:
Liam DeBeasi
2020-09-25 10:27:27 -04:00
committed by GitHub
parent cc45ad815c
commit aeda33d8ae
12 changed files with 484 additions and 10 deletions

View File

@ -286,6 +286,7 @@ export class ActionSheetExample {
<script> <script>
import { IonButton, actionSheetController } from '@ionic/vue'; import { IonButton, actionSheetController } from '@ionic/vue';
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { caretForwardCircle, close, heart, trash, share } from 'ionicons/icons';
export default defineComponent({ export default defineComponent({
components: { IonButton }, components: { IonButton },
@ -299,35 +300,35 @@ export default defineComponent({
{ {
text: 'Delete', text: 'Delete',
role: 'destructive', role: 'destructive',
icon: 'trash', icon: trash,
handler: () => { handler: () => {
console.log('Delete clicked') console.log('Delete clicked')
}, },
}, },
{ {
text: 'Share', text: 'Share',
icon: 'share', icon: share,
handler: () => { handler: () => {
console.log('Share clicked') console.log('Share clicked')
}, },
}, },
{ {
text: 'Play (open modal)', text: 'Play (open modal)',
icon: 'caret-forward-circle', icon: caretForwardCircle,
handler: () => { handler: () => {
console.log('Play clicked') console.log('Play clicked')
}, },
}, },
{ {
text: 'Favorite', text: 'Favorite',
icon: 'heart', icon: heart,
handler: () => { handler: () => {
console.log('Favorite clicked') console.log('Favorite clicked')
}, },
}, },
{ {
text: 'Cancel', text: 'Cancel',
icon: 'close', icon: close,
role: 'cancel', role: 'cancel',
handler: () => { handler: () => {
console.log('Cancel clicked') console.log('Cancel clicked')
@ -342,6 +343,77 @@ export default defineComponent({
</script> </script>
``` ```
Developers can also use this component directly in their template:
```html
<template>
<ion-button @click="setOpen(true)">Show Action Sheet</ion-button>
<ion-action-sheet
:is-open="isOpenRef"
header="Albums"
css-class="my-custom-class"
:buttons="buttons"
@onDidDismiss="setOpen(false)"
>
</ion-action-sheet>
</template>
<script>
import { IonActionSheet, IonButton } from '@ionic/vue';
import { defineComponent, ref } from 'vue';
import { caretForwardCircle, close, heart, trash, share } from 'ionicons/icons';
export default defineComponent({
components: { IonActionSheet, IonButton },
setup() {
const isOpenRef = ref(false);
const setOpen = (state: boolean) => isOpenRef.value = state;
const buttons = [
{
text: 'Delete',
role: 'destructive',
icon: trash,
handler: () => {
console.log('Delete clicked')
},
},
{
text: 'Share',
icon: share,
handler: () => {
console.log('Share clicked')
},
},
{
text: 'Play (open modal)',
icon: caretForwardCircle,
handler: () => {
console.log('Play clicked')
},
},
{
text: 'Favorite',
icon: heart,
handler: () => {
console.log('Favorite clicked')
},
},
{
text: 'Cancel',
icon: close,
role: 'cancel',
handler: () => {
console.log('Cancel clicked')
},
},
];
return { buttons, isOpenRef, setOpen }
}
});
</script>
```
## Properties ## Properties

View File

@ -6,6 +6,7 @@
<script> <script>
import { IonButton, actionSheetController } from '@ionic/vue'; import { IonButton, actionSheetController } from '@ionic/vue';
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { caretForwardCircle, close, heart, trash, share } from 'ionicons/icons';
export default defineComponent({ export default defineComponent({
components: { IonButton }, components: { IonButton },
@ -19,35 +20,35 @@ export default defineComponent({
{ {
text: 'Delete', text: 'Delete',
role: 'destructive', role: 'destructive',
icon: 'trash', icon: trash,
handler: () => { handler: () => {
console.log('Delete clicked') console.log('Delete clicked')
}, },
}, },
{ {
text: 'Share', text: 'Share',
icon: 'share', icon: share,
handler: () => { handler: () => {
console.log('Share clicked') console.log('Share clicked')
}, },
}, },
{ {
text: 'Play (open modal)', text: 'Play (open modal)',
icon: 'caret-forward-circle', icon: caretForwardCircle,
handler: () => { handler: () => {
console.log('Play clicked') console.log('Play clicked')
}, },
}, },
{ {
text: 'Favorite', text: 'Favorite',
icon: 'heart', icon: heart,
handler: () => { handler: () => {
console.log('Favorite clicked') console.log('Favorite clicked')
}, },
}, },
{ {
text: 'Cancel', text: 'Cancel',
icon: 'close', icon: close,
role: 'cancel', role: 'cancel',
handler: () => { handler: () => {
console.log('Cancel clicked') console.log('Cancel clicked')
@ -61,3 +62,74 @@ export default defineComponent({
}); });
</script> </script>
``` ```
Developers can also use this component directly in their template:
```html
<template>
<ion-button @click="setOpen(true)">Show Action Sheet</ion-button>
<ion-action-sheet
:is-open="isOpenRef"
header="Albums"
css-class="my-custom-class"
:buttons="buttons"
@onDidDismiss="setOpen(false)"
>
</ion-action-sheet>
</template>
<script>
import { IonActionSheet, IonButton } from '@ionic/vue';
import { defineComponent, ref } from 'vue';
import { caretForwardCircle, close, heart, trash, share } from 'ionicons/icons';
export default defineComponent({
components: { IonActionSheet, IonButton },
setup() {
const isOpenRef = ref(false);
const setOpen = (state: boolean) => isOpenRef.value = state;
const buttons = [
{
text: 'Delete',
role: 'destructive',
icon: trash,
handler: () => {
console.log('Delete clicked')
},
},
{
text: 'Share',
icon: share,
handler: () => {
console.log('Share clicked')
},
},
{
text: 'Play (open modal)',
icon: caretForwardCircle,
handler: () => {
console.log('Play clicked')
},
},
{
text: 'Favorite',
icon: heart,
handler: () => {
console.log('Favorite clicked')
},
},
{
text: 'Cancel',
icon: close,
role: 'cancel',
handler: () => {
console.log('Cancel clicked')
},
},
];
return { buttons, isOpenRef, setOpen }
}
});
</script>
```

View File

@ -1419,6 +1419,40 @@ export default defineComponent({
</script> </script>
``` ```
Developers can also use this component directly in their template:
```html
<template>
<ion-button @click="setOpen(true)">Show Alert</ion-button>
<ion-alert
:is-open="isOpenRef"
header="Alert"
sub-header="Subtitle"
message="This is an alert message."
css-class="my-custom-class"
:buttons="buttons"
@onDidDismiss="setOpen(false)"
>
</ion-alert>
</template>
<script>
import { IonAlert, IonButton } from '@ionic/vue';
import { defineComponent, ref } from 'vue';
export default defineComponent({
components: { IonAlert, IonButton },
setup() {
const isOpenRef = ref(false);
const setOpen = (state: boolean) => isOpenRef.value = state;
const buttons = ['Ok'];
return { buttons, isOpenRef, setOpen }
}
});
</script>
```
## Properties ## Properties

View File

@ -263,3 +263,37 @@ export default defineComponent({
}); });
</script> </script>
``` ```
Developers can also use this component directly in their template:
```html
<template>
<ion-button @click="setOpen(true)">Show Alert</ion-button>
<ion-alert
:is-open="isOpenRef"
header="Alert"
sub-header="Subtitle"
message="This is an alert message."
css-class="my-custom-class"
:buttons="buttons"
@onDidDismiss="setOpen(false)"
>
</ion-alert>
</template>
<script>
import { IonAlert, IonButton } from '@ionic/vue';
import { defineComponent, ref } from 'vue';
export default defineComponent({
components: { IonAlert, IonButton },
setup() {
const isOpenRef = ref(false);
const setOpen = (state: boolean) => isOpenRef.value = state;
const buttons = ['Ok'];
return { buttons, isOpenRef, setOpen }
}
});
</script>
```

View File

@ -265,6 +265,40 @@ export default defineComponent({
</script> </script>
``` ```
Developers can also use this component directly in their template:
```html
<template>
<ion-button @click="setOpen(true)">Show Loading</ion-button>
<ion-loading
:is-open="isOpenRef"
cssClass="my-custom-class"
message="Please wait..."
:duration="timeout"
@onDidDismiss="setOpen(false)"
>
</ion-loading>
</template>
<script>
import { IonLoading, IonButton } from '@ionic/vue';
import { defineComponent, ref } from 'vue';
export default defineComponent({
props: {
timeout: { type: Number, default: 1000 },
},
components: { IonLoading, IonButton },
setup() {
const isOpenRef = ref(false);
const setOpen = (state: boolean) => isOpenRef.value = state;
return { isOpenRef, setOpen }
}
});
</script>
```
## Properties ## Properties

View File

@ -52,3 +52,37 @@ export default defineComponent({
}); });
</script> </script>
``` ```
Developers can also use this component directly in their template:
```html
<template>
<ion-button @click="setOpen(true)">Show Loading</ion-button>
<ion-loading
:is-open="isOpenRef"
cssClass="my-custom-class"
message="Please wait..."
:duration="timeout"
@onDidDismiss="setOpen(false)"
>
</ion-loading>
</template>
<script>
import { IonLoading, IonButton } from '@ionic/vue';
import { defineComponent, ref } from 'vue';
export default defineComponent({
props: {
timeout: { type: Number, default: 1000 },
},
components: { IonLoading, IonButton },
setup() {
const isOpenRef = ref(false);
const setOpen = (state: boolean) => isOpenRef.value = state;
return { isOpenRef, setOpen }
}
});
</script>
```

View File

@ -646,6 +646,37 @@ export default {
</script> </script>
``` ```
Developers can also use this component directly in their template:
```html
<template>
<ion-button @click="setOpen(true)">Show Modal</ion-button>
<ion-modal
:is-open="isOpenRef"
css-class="my-custom-class"
@onDidDismiss="setOpen(false)"
>
<Modal :data="data"></Modal>
</ion-modal>
</template>
<script>
import { IonModal, IonButton } from '@ionic/vue';
import { defineComponent, ref } from 'vue';
import Modal from './modal.vue'
export default defineComponent({
components: { IonModal, IonButton, Modal },
setup() {
const isOpenRef = ref(false);
const setOpen = (state: boolean) => isOpenRef.value = state;
const data = { content: 'New Content' };
return { isOpenRef, setOpen, data }
}
});
</script>
```
## Properties ## Properties

View File

@ -67,3 +67,34 @@ export default {
} }
</script> </script>
``` ```
Developers can also use this component directly in their template:
```html
<template>
<ion-button @click="setOpen(true)">Show Modal</ion-button>
<ion-modal
:is-open="isOpenRef"
css-class="my-custom-class"
@onDidDismiss="setOpen(false)"
>
<Modal :data="data"></Modal>
</ion-modal>
</template>
<script>
import { IonModal, IonButton } from '@ionic/vue';
import { defineComponent, ref } from 'vue';
import Modal from './modal.vue'
export default defineComponent({
components: { IonModal, IonButton, Modal },
setup() {
const isOpenRef = ref(false);
const setOpen = (state: boolean) => isOpenRef.value = state;
const data = { content: 'New Content' };
return { isOpenRef, setOpen, data }
}
});
</script>
```

View File

@ -224,6 +224,42 @@ export default {
</script> </script>
``` ```
Developers can also use this component directly in their template:
```html
<template>
<ion-button @click="setOpen(true, $event)">Show Popover</ion-button>
<ion-popover
:is-open="isOpenRef"
css-class="my-custom-class"
:event="event"
:translucent="true"
@onDidDismiss="setOpen(false)"
>
<Popover></Popover>
</ion-popover>
</template>
<script>
import { IonButton, IonPopover } from '@ionic/vue';
import { defineComponent, ref } from 'vue';
import Popver from './popover.vue'
export default defineComponent({
components: { IonButton, IonPopover, Popover },
setup() {
const isOpenRef = ref(false);
const event = ref();
const setOpen = (state: boolean, event?: Event) => {
event.value = event;
isOpenRef.value = state;
}
return { isOpenRef, setOpen, event }
}
});
</script>
```
## Properties ## Properties

View File

@ -46,3 +46,39 @@ export default {
} }
</script> </script>
``` ```
Developers can also use this component directly in their template:
```html
<template>
<ion-button @click="setOpen(true, $event)">Show Popover</ion-button>
<ion-popover
:is-open="isOpenRef"
css-class="my-custom-class"
:event="event"
:translucent="true"
@onDidDismiss="setOpen(false)"
>
<Popover></Popover>
</ion-popover>
</template>
<script>
import { IonButton, IonPopover } from '@ionic/vue';
import { defineComponent, ref } from 'vue';
import Popver from './popover.vue'
export default defineComponent({
components: { IonButton, IonPopover, Popover },
setup() {
const isOpenRef = ref(false);
const event = ref();
const setOpen = (state: boolean, event?: Event) => {
event.value = event;
isOpenRef.value = state;
}
return { isOpenRef, setOpen, event }
}
});
</script>
```

View File

@ -271,6 +271,36 @@ export default {
</script> </script>
``` ```
Developers can also use this component directly in their template:
```html
<template>
<ion-button @click="setOpen(true)">Show Toast</ion-button>
<ion-toast
:is-open="isOpenRef"
message="Your settings have been saved."
:duration="2000"
@onDidDismiss="setOpen(false)"
>
</ion-toast>
</template>
<script>
import { IonToast, IonButton } from '@ionic/vue';
import { defineComponent, ref } from 'vue';
export default defineComponent({
components: { IonToast, IonButton },
setup() {
const isOpenRef = ref(false);
const setOpen = (state: boolean) => isOpenRef.value = state;
return { isOpenRef, setOpen }
}
});
</script>
```
## Properties ## Properties

View File

@ -51,3 +51,33 @@ export default {
} }
</script> </script>
``` ```
Developers can also use this component directly in their template:
```html
<template>
<ion-button @click="setOpen(true)">Show Toast</ion-button>
<ion-toast
:is-open="isOpenRef"
message="Your settings have been saved."
:duration="2000"
@onDidDismiss="setOpen(false)"
>
</ion-toast>
</template>
<script>
import { IonToast, IonButton } from '@ionic/vue';
import { defineComponent, ref } from 'vue';
export default defineComponent({
components: { IonToast, IonButton },
setup() {
const isOpenRef = ref(false);
const setOpen = (state: boolean) => isOpenRef.value = state;
return { isOpenRef, setOpen }
}
});
</script>
```