From 88aeb8adbbb91136896a525ff20252aec684d9cd Mon Sep 17 00:00:00 2001 From: Nikita Alexov Date: Sat, 8 Mar 2025 11:45:11 +0400 Subject: [PATCH 1/2] feat(Tabs): add before-change event --- .../examples/TabsExampleBeforeChange.vue | 28 +++++++++++++++++++ docs/content/2.components/tabs.md | 14 ++++++++++ src/runtime/components/navigation/Tabs.vue | 14 ++++++++-- 3 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 docs/components/content/examples/TabsExampleBeforeChange.vue diff --git a/docs/components/content/examples/TabsExampleBeforeChange.vue b/docs/components/content/examples/TabsExampleBeforeChange.vue new file mode 100644 index 0000000000..c41f3401dc --- /dev/null +++ b/docs/components/content/examples/TabsExampleBeforeChange.vue @@ -0,0 +1,28 @@ + + + diff --git a/docs/content/2.components/tabs.md b/docs/content/2.components/tabs.md index 400edd059d..630f1c3ac6 100644 --- a/docs/content/2.components/tabs.md +++ b/docs/content/2.components/tabs.md @@ -66,6 +66,20 @@ componentProps: You can use the `content` prop and set it to `false` to avoid the rendering of the HTML content if you don't need it. +#### Listen to @before-change event + +You can execute code before the `@change` event is triggered by using the `@before-change` event. This event emits the index of the previously selected item and provides a second `next()` argument, which you can use to continue handling the `@change` event. + +::component-example +--- +component: 'tabs-example-before-change' +componentProps: + class: 'w-full' +--- +:: + +This event is useful when you need to validate data before switching tabs or display a confirmation window with a relevant message to users. + ### Control the selected index Use a `v-model` to control the selected index. diff --git a/src/runtime/components/navigation/Tabs.vue b/src/runtime/components/navigation/Tabs.vue index c19fc9a7b5..e19b251d2a 100644 --- a/src/runtime/components/navigation/Tabs.vue +++ b/src/runtime/components/navigation/Tabs.vue @@ -53,7 +53,7 @@