UNPKG

@ithinkdt/core

Version:

iThinkDT Core

32 lines (31 loc) 960 B
import { unref } from 'vue' const requiredRuleSymbol = Symbol() function required(message, { required = true, trigger = ['blur', 'change', 'input'] } = {}) { return { [requiredRuleSymbol]: true, message, trigger, validator: (value) => { if (!unref(required)) return if (value === undefined || value === null) { return false } if (typeof value === 'string') { return value.trim() !== '' } if (typeof value === 'number' || typeof value === 'bigint') { return true } if (typeof value === 'boolean') { return value === true } if (Array.isArray(value)) { return value.length > 0 } }, } } function isRequiredRule(rule) { return rule?.[requiredRuleSymbol] === true } export { required, isRequiredRule }