Skip to content

Commit 5afc8a3

Browse files
committed
feat: supports using as a action. action name is showHide
1 parent 40531bd commit 5afc8a3

File tree

1 file changed

+36
-12
lines changed

1 file changed

+36
-12
lines changed

src/index.js

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* Released under the MIT license
55
* https://github.com/CoCreate-app/CoCreate-conditional-logic/blob/master/LICENSE
66
*/
7-
7+
/*globals CustomEvent, CoCreate*/
88
import observer from '@cocreate/observer'
99

1010
function init() {
@@ -20,12 +20,19 @@ function initElements(elements) {
2020
function initElement(el) {
2121
if (el.tagName.toLowerCase() == "option")
2222
el = el.closest('select');
23+
let actions = el.getAttribute('actions');
24+
if (actions && actions.includes('validate')){
25+
el.removeEventListener('change', selectShowHideEle);
2326

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+
}
2936
}
3037

3138
function selectShowHideEle(e) {
@@ -50,12 +57,15 @@ function selectShowHideEle(e) {
5057
}
5158

5259
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");
5969
let radios = document.querySelectorAll(tagName + '[name="' + name + '"]');
6070
for (let radio of radios) {
6171

@@ -93,6 +103,11 @@ function clickShowHideEle(e) {
93103
if (!existEqual) el.classList.add('hidden');
94104
}
95105
}
106+
107+
document.dispatchEvent(new CustomEvent('showHide', {
108+
detail: {}
109+
}));
110+
96111
}
97112

98113
document.addEventListener('fetchedTemplate', () => {
@@ -110,5 +125,14 @@ observer.init({
110125
}
111126
});
112127

128+
CoCreate.action.init({
129+
action: "showHide",
130+
endEvent: "showHide",
131+
callback: (btn, data) => {
132+
clickShowHideEle(btn);
133+
}
134+
});
135+
136+
113137
const CoCreateConditionalLogic = { initElements, selectShowHideEle, clickShowHideEle };
114138
export default CoCreateConditionalLogic;

0 commit comments

Comments
 (0)