@@ -43,6 +43,46 @@ ClientSideValidations.formBuilders['SimpleForm::FormBuilder'] = {
4343 wrapper . removeClass ( settings . wrapper_error_class ) ;
4444 return errorElement . remove ( ) ;
4545 }
46+ } ,
47+
48+ get horizontal_multi_select ( ) {
49+ return this . multi_select ;
50+ } ,
51+
52+ get vertical_multi_select ( ) {
53+ return this . multi_select ;
54+ } ,
55+
56+ multi_select : {
57+ add : function add ( element , settings , message ) {
58+ var wrapperElement = element . closest ( settings . wrapper_tag + '.' + settings . wrapper_class . replace ( / / g, '.' ) ) ;
59+ var parentElement = element . parent ( ) ;
60+ var errorElement = wrapperElement . find ( settings . error_tag + '.invalid-feedback' ) ;
61+
62+ if ( ! errorElement . length ) {
63+ errorElement = $ ( '<' + settings . error_tag + '>' , {
64+ "class" : 'invalid-feedback d-block' ,
65+ text : message
66+ } ) ;
67+ parentElement . after ( errorElement ) ;
68+ }
69+
70+ wrapperElement . addClass ( settings . wrapper_error_class ) ;
71+ element . addClass ( 'is-invalid' ) ;
72+ errorElement . text ( message ) ;
73+ } ,
74+ remove : function remove ( element , settings ) {
75+ var wrapperElement = element . closest ( settings . wrapper_tag + '.' + settings . wrapper_class . replace ( / / g, '.' ) ) ;
76+ var errorElement = wrapperElement . find ( settings . error_tag + '.invalid-feedback' ) ;
77+ var invalidSiblingExists = element . siblings ( '.is-invalid' ) . length ;
78+
79+ if ( ! invalidSiblingExists ) {
80+ wrapperElement . removeClass ( settings . wrapper_error_class ) ;
81+ errorElement . remove ( ) ;
82+ }
83+
84+ element . removeClass ( 'is-invalid' ) ;
85+ }
4686 }
4787 }
4888} ;
0 commit comments