@@ -34,7 +34,10 @@ export type RulesOptions = {
34
34
type ValidationRuleParams = [ any , string ?]
35
35
export type ValidationAlias = string | [ string , ...ValidationRuleParams ]
36
36
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
+ }
38
41
39
42
export function createRules ( options : RulesOptions | undefined , locale : LocaleInstance ) {
40
43
const { t } = locale
@@ -86,7 +89,7 @@ export function createRules (options: RulesOptions | undefined, locale: LocaleIn
86
89
...options ?. aliases ,
87
90
}
88
91
89
- function resolveRules ( fn : ( ) => ValidationProps [ 'rules' ] ) {
92
+ function resolve ( fn : ( ) => ValidationProps [ 'rules' ] ) {
90
93
return computed ( ( ) => fn ( ) . map ( rule => {
91
94
let ruleName : string | null = null
92
95
let ruleParams : ValidationRuleParams = [ undefined ]
@@ -109,15 +112,26 @@ export function createRules (options: RulesOptions | undefined, locale: LocaleIn
109
112
} ) )
110
113
}
111
114
112
- return resolveRules
115
+ return {
116
+ resolve,
117
+ aliases,
118
+ }
113
119
}
114
120
115
121
export const RulesSymbol : InjectionKey < RulesInstance > = Symbol . for ( 'vuetify:rules' )
116
122
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 [ ] > >
119
125
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
+ }
121
135
122
- return resolveRules ( fn )
136
+ return rules ?. resolve ( fn ) ?? toRef ( fn )
123
137
}
0 commit comments