Skip to content

Commit bf26956

Browse files
committed
feat(FieldSelect): isVisible and validation
1 parent d485693 commit bf26956

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

src/fields/core/FieldSelect.vue

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ import type { FieldProps, FieldPropRefs, SelectField } from '@/resources/types/f
7272
import {
7373
useFieldAttributes,
7474
useFieldEmits,
75+
useFieldValidate,
7576
useFormModel
7677
} from '@/composables'
7778
import { FieldOption } from '@/resources/types/fieldAttributes'
@@ -82,7 +83,8 @@ const { controlLeft, metaLeft } = useMagicKeys()
8283
8384
const isOpened: Ref<boolean> = ref(false)
8485
const { field, model }: FieldPropRefs<SelectField> = toRefs(props)
85-
const { hint } = useFieldAttributes(model.value, field.value)
86+
const { hint, isVisible } = useFieldAttributes(model.value, field.value)
87+
const { errors, validate } = useFieldValidate(model.value, field.value)
8688
8789
/** Names of the selected values */
8890
const selectedNames: ComputedRef<string[]> = computed(() => {
@@ -126,6 +128,7 @@ function handleClickOutside (event: Event) {
126128
}
127129
128130
function selectOption (option: FieldOption) {
131+
errors.value = []
129132
const optionSelected = isSelected(option)
130133
131134
if (!field.value.multiple) {
@@ -140,10 +143,19 @@ function selectOption (option: FieldOption) {
140143
}
141144
142145
emits('onInput', selectedValues)
143-
if (metaLeft.value || controlLeft.value) return
144146
}
145-
isOpened.value = false
147+
if (!(metaLeft.value || controlLeft.value)) {
148+
isOpened.value = false
149+
}
150+
validate(currentModelValue.value).then(validationErrors => {
151+
emits(
152+
'validated',
153+
validationErrors.length === 0,
154+
validationErrors,
155+
field.value
156+
)
157+
})
146158
}
147159
148-
defineExpose({ hint })
149-
</script>
160+
defineExpose({ hint, isVisible, errors })
161+
</script>

0 commit comments

Comments
 (0)