Skip to content

Commit 64a82d4

Browse files
authored
fix(validation): return aliases when called without arguments (#21868)
1 parent 02737db commit 64a82d4

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

packages/vuetify/src/labs/rules/rules.ts

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,10 @@ export type RulesOptions = {
3434
type ValidationRuleParams = [any, string?]
3535
export type ValidationAlias = string | [string, ...ValidationRuleParams]
3636

37-
export type RulesInstance = (fn: () => ValidationProps['rules']) => Readonly<Ref<any[]>>
37+
export type RulesInstance = {
38+
resolve: (fn: () => ValidationProps['rules']) => Readonly<Ref<any[]>>
39+
aliases: RuleAliases
40+
}
3841

3942
export function createRules (options: RulesOptions | undefined, locale: LocaleInstance) {
4043
const { t } = locale
@@ -86,7 +89,7 @@ export function createRules (options: RulesOptions | undefined, locale: LocaleIn
8689
...options?.aliases,
8790
}
8891

89-
function resolveRules (fn: () => ValidationProps['rules']) {
92+
function resolve (fn: () => ValidationProps['rules']) {
9093
return computed(() => fn().map(rule => {
9194
let ruleName: string | null = null
9295
let ruleParams: ValidationRuleParams = [undefined]
@@ -109,15 +112,26 @@ export function createRules (options: RulesOptions | undefined, locale: LocaleIn
109112
}))
110113
}
111114

112-
return resolveRules
115+
return {
116+
resolve,
117+
aliases,
118+
}
113119
}
114120

115121
export const RulesSymbol: InjectionKey<RulesInstance> = Symbol.for('vuetify:rules')
116122

117-
export function useRules (fn: () => ValidationProps['rules']) {
118-
const resolveRules = inject(RulesSymbol, null)
123+
export function useRules (): RuleAliases
124+
export function useRules (fn: () => ValidationProps['rules']): Readonly<Ref<ValidationProps['rules']>> | Readonly<Ref<ValidationRule[]>>
119125

120-
if (!resolveRules) return toRef(fn)
126+
export function useRules (fn?: () => ValidationProps['rules']) {
127+
const rules = inject(RulesSymbol, null)
128+
129+
if (!fn) {
130+
if (!rules) {
131+
throw new Error('Could not find Vuetify rules injection')
132+
}
133+
return rules.aliases
134+
}
121135

122-
return resolveRules(fn)
136+
return rules?.resolve(fn) ?? toRef(fn)
123137
}

0 commit comments

Comments
 (0)