@@ -14,19 +14,21 @@ const logger = logging.getLogger("pat-validation");
14
14
15
15
export const parser = new Parser ( "validation" ) ;
16
16
parser . addArgument ( "disable-selector" , "[type=submit], button:not([type=button])" ) ; // Elements which must be disabled if there are errors
17
- parser . addArgument ( "message-date" , "" ) ; // "This value must be a valid date");
18
- parser . addArgument ( "message-datetime" , "" ) ; // "This value must be a valid date and time");
19
- parser . addArgument ( "message-email" , "" ) ; // "This value must be a valid email address");
20
- parser . addArgument ( "message-max" , "" ) ; // "This value must be less than or equal to %{count}");
21
- parser . addArgument ( "message-min" , "" ) ; // "This value must be greater than or equal to %{count}"); // prettier-ignore
22
- parser . addArgument ( "message-number" , "" ) ; // "This value must be a number");
23
- parser . addArgument ( "message-required" , "" ) ; // "This field is required");
17
+ parser . addArgument ( "message-date" , "" ) ; // "This value must be a valid date"
18
+ parser . addArgument ( "message-datetime" , "" ) ; // "This value must be a valid date and time"
19
+ parser . addArgument ( "message-email" , "" ) ; // "This value must be a valid email address"
20
+ parser . addArgument ( "message-max" , "" ) ; // "This value must be less than or equal to %{count}"
21
+ parser . addArgument ( "message-min" , "" ) ; // "This value must be greater than or equal to %{count}"
22
+ parser . addArgument ( "message-number" , "" ) ; // "This value must be a number"
23
+ parser . addArgument ( "message-required" , "" ) ; // "This field is required"
24
24
parser . addArgument ( "message-equality" , "is not equal to %{attribute}." ) ;
25
+ parser . addArgument ( "message-min-values" , "You need to select at least ${min} item(s)." ) ;
26
+ parser . addArgument ( "message-max-values" , "You need to select at most ${max} item(s)." ) ;
25
27
parser . addArgument ( "not-after" , null ) ;
26
28
parser . addArgument ( "not-before" , null ) ;
27
29
parser . addArgument ( "equality" , null ) ;
28
- parser . addArgument ( "min-selection " , null ) ;
29
- parser . addArgument ( "max-selection " , null ) ;
30
+ parser . addArgument ( "min-values " , null ) ;
31
+ parser . addArgument ( "max-values " , null ) ;
30
32
parser . addArgument ( "delay" , 100 ) ; // Delay before validation is done to avoid validating while typing.
31
33
32
34
// BBB
@@ -257,7 +259,11 @@ class Pattern extends BasePattern {
257
259
logger . debug ( "Check `no-before` input." , not_after_el ) ;
258
260
this . check_input ( { input : not_before_el , stop : true } ) ;
259
261
}
260
- } else if ( input_options . minSelection || input_options . maxSelection )
262
+ } else if ( input_options . minValues || input_options . maxValues ) {
263
+
264
+ const min_values = input_options . minValues !== null && parseInt ( input_options . minValues , 10 )
265
+ const max_values = input_options . maxValues !== null && parseInt ( input_options . maxValues , 10 )
266
+
261
267
// This makes only sense for inputs with the same name.
262
268
const valued_siblings = [ ...this . el . elements ] . filter ( ( el ) => {
263
269
// Filter for siblings with same name.
@@ -274,16 +280,18 @@ class Pattern extends BasePattern {
274
280
return el . value !== undefined ;
275
281
} ) ;
276
282
277
- if ( valued_siblings > input_options . maxSelection ) {
283
+ if ( max_values !== null && valued_siblings . length > max_values ) {
278
284
this . set_error ( {
279
285
input : input ,
280
- msg : "You have exceeded the maximum number of selections."
286
+ msg : input_options . message [ "max-values" ] ,
287
+ max : max_values ,
281
288
} )
282
289
}
283
- if ( valued_siblings < input_options . minSelection ) {
290
+ if ( min_values !== null && valued_siblings . length < min_values ) {
284
291
this . set_error ( {
285
292
input : input ,
286
- msg : "You need to select at least..."
293
+ msg : input_options . message [ "min-values" ] ,
294
+ min : min_values ,
287
295
} )
288
296
}
289
297
}
0 commit comments