4
4
* Released under the MIT license
5
5
* https://github.com/CoCreate-app/CoCreate-conditional-logic/blob/master/LICENSE
6
6
*/
7
-
7
+ /*globals CustomEvent, CoCreate*/
8
8
import observer from '@cocreate/observer'
9
9
10
10
function init ( ) {
@@ -20,12 +20,19 @@ function initElements(elements) {
20
20
function initElement ( el ) {
21
21
if ( el . tagName . toLowerCase ( ) == "option" )
22
22
el = el . closest ( 'select' ) ;
23
+ let actions = el . getAttribute ( 'actions' ) ;
24
+ if ( actions && actions . includes ( 'validate' ) ) {
25
+ el . removeEventListener ( 'change' , selectShowHideEle ) ;
23
26
24
- el . removeEventListener ( 'change' , selectShowHideEle ) ;
25
- el . removeEventListener ( "click" , clickShowHideEle ) ;
26
-
27
- el . addEventListener ( "change" , selectShowHideEle ) ;
28
- el . addEventListener ( "click" , clickShowHideEle ) ;
27
+ el . addEventListener ( "change" , selectShowHideEle ) ;
28
+ }
29
+ else {
30
+ el . removeEventListener ( 'change' , selectShowHideEle ) ;
31
+ el . removeEventListener ( "click" , clickShowHideEle ) ;
32
+
33
+ el . addEventListener ( "change" , selectShowHideEle ) ;
34
+ el . addEventListener ( "click" , clickShowHideEle ) ;
35
+ }
29
36
}
30
37
31
38
function selectShowHideEle ( e ) {
@@ -50,12 +57,15 @@ function selectShowHideEle(e) {
50
57
}
51
58
52
59
function clickShowHideEle ( e ) {
53
- var show = this . getAttribute ( 'show' ) ;
54
- var hide = this . getAttribute ( 'hide' ) ;
55
- let tagName = this . tagName . toLowerCase ( ) ;
56
-
57
- if ( tagName == 'input' && this . getAttribute ( "type" ) . toLowerCase ( ) == 'radio' ) {
58
- let name = this . getAttribute ( "name" ) ;
60
+ let element = e . currentTarget ;
61
+ if ( ! element )
62
+ element = e ;
63
+ var show = element . getAttribute ( 'show' ) ;
64
+ var hide = element . getAttribute ( 'hide' ) ;
65
+ let tagName = element . tagName . toLowerCase ( ) ;
66
+
67
+ if ( tagName == 'input' && element . getAttribute ( "type" ) . toLowerCase ( ) == 'radio' ) {
68
+ let name = element . getAttribute ( "name" ) ;
59
69
let radios = document . querySelectorAll ( tagName + '[name="' + name + '"]' ) ;
60
70
for ( let radio of radios ) {
61
71
@@ -93,6 +103,11 @@ function clickShowHideEle(e) {
93
103
if ( ! existEqual ) el . classList . add ( 'hidden' ) ;
94
104
}
95
105
}
106
+
107
+ document . dispatchEvent ( new CustomEvent ( 'showHide' , {
108
+ detail : { }
109
+ } ) ) ;
110
+
96
111
}
97
112
98
113
document . addEventListener ( 'fetchedTemplate' , ( ) => {
@@ -110,5 +125,14 @@ observer.init({
110
125
}
111
126
} ) ;
112
127
128
+ CoCreate . action . init ( {
129
+ action : "showHide" ,
130
+ endEvent : "showHide" ,
131
+ callback : ( btn , data ) => {
132
+ clickShowHideEle ( btn ) ;
133
+ }
134
+ } ) ;
135
+
136
+
113
137
const CoCreateConditionalLogic = { initElements, selectShowHideEle, clickShowHideEle } ;
114
138
export default CoCreateConditionalLogic ;
0 commit comments