feat(captcha): add provider configuration tabs

This commit is contained in:
2026-09-02 16:55:57 +08:00
parent ff4ec1eb43
commit 0985d0cb0a
4 changed files with 57 additions and 41 deletions
@@ -53,7 +53,7 @@
:collapsible="!!group.collapsible"
:default-collapsed="resolveGroupCollapsed(group)"
>
<template v-if="group.fields">
<template v-if="group.fields && !hasGroupSlot(group)">
<template v-for="field in group.fields" :key="field.key">
<template v-if="isFieldVisible(field)">
<slot
@@ -127,7 +127,7 @@
* - Dependency-based field visibility
* - Loading and error states
*/
import { ref, computed } from 'vue'
import { ref, computed, useSlots } from 'vue'
import FaIcon from './FaIcon.vue'
import AksFieldGroup from './AksFieldGroup.vue'
import AksField from './AksField.vue'
@@ -162,6 +162,7 @@ const props = defineProps({
})
const emit = defineEmits(['update:formData', 'save', 'reload'])
const slots = useSlots()
const searchQuery = ref('')
@@ -202,6 +203,10 @@ function matchDependsOn(dependsOn) {
return true
}
function hasGroupSlot(group) {
return !!slots[`group-${group.key}`]
}
/** Check if a field should be visible based on its dependsOn rule */
function isFieldVisible(field) {
return matchDependsOn(field.dependsOn)