@twobirds/microcomponents 0.0.82 → 0.0.83
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/documentation/MC.md +0 -1
- package/dist/MC.d.ts +3 -3
- package/dist/MC.d.ts.map +1 -1
- package/dist/MC.js +43 -74
- package/dist/MC.min.js +43 -74
- package/dist/MC.ts +67 -143
- package/dist/elements.d.ts +1 -1
- package/dist/elements.d.ts.map +1 -1
- package/dist/elements.js +16 -2
- package/dist/elements.min.js +1 -1
- package/dist/elements.ts +33 -3
- package/dist/formValues.min.js +1 -1
- package/dist/microcomponents.min.js +1 -1
- package/dist/observables.d.ts.map +1 -1
- package/dist/observables.js +40 -47
- package/dist/observables.min.js +1 -1
- package/dist/observables.ts +54 -59
- package/dist/selectors.d.ts +2 -4
- package/dist/selectors.d.ts.map +1 -1
- package/dist/selectors.js +2 -214
- package/dist/selectors.min.js +1 -1
- package/dist/selectors.ts +2 -367
- package/package.json +6 -5
- package/public/MC.d.ts +3 -3
- package/public/MC.d.ts.map +1 -1
- package/public/MC.js +43 -74
- package/public/MC.js.map +1 -1
- package/public/MC.min.js +43 -74
- package/public/MC.ts +67 -143
- package/public/documentation/MC.md +0 -1
- package/public/elements.d.ts +1 -1
- package/public/elements.d.ts.map +1 -1
- package/public/elements.js +16 -2
- package/public/elements.js.map +1 -1
- package/public/elements.min.js +1 -1
- package/public/elements.ts +33 -3
- package/public/formValues.min.js +1 -1
- package/public/microcomponents.min.js +1 -1
- package/public/observables.d.ts.map +1 -1
- package/public/observables.js +40 -47
- package/public/observables.js.map +1 -1
- package/public/observables.min.js +1 -1
- package/public/observables.ts +54 -59
- package/public/selectors.d.ts +2 -4
- package/public/selectors.d.ts.map +1 -1
- package/public/selectors.js +2 -214
- package/public/selectors.js.map +1 -1
- package/public/selectors.min.js +1 -1
- package/public/selectors.ts +2 -367
- package/public/src/MC.d.ts +36 -0
- package/public/src/MC.d.ts.map +1 -0
- package/public/src/MC.js +348 -0
- package/public/src/MC.js.map +1 -0
- package/public/src/MC.ts +67 -143
- package/public/src/McEvent.d.ts +15 -0
- package/public/src/McEvent.d.ts.map +1 -0
- package/public/src/McEvent.js +71 -0
- package/public/src/elements.d.ts +5 -0
- package/public/src/elements.d.ts.map +1 -0
- package/public/src/elements.js +62 -0
- package/public/src/elements.js.map +1 -0
- package/public/src/elements.ts +33 -3
- package/public/src/formValues.d.ts +3 -0
- package/public/src/formValues.d.ts.map +1 -0
- package/public/src/formValues.js +162 -0
- package/public/src/helpers.d.ts +14 -0
- package/public/src/helpers.d.ts.map +1 -0
- package/public/src/helpers.js +113 -0
- package/public/src/microcomponents.d.ts +7 -0
- package/public/src/microcomponents.d.ts.map +1 -0
- package/public/src/microcomponents.js +8 -0
- package/public/src/observables.d.ts +11 -0
- package/public/src/observables.d.ts.map +1 -0
- package/public/src/observables.js +242 -0
- package/public/src/observables.js.map +1 -0
- package/public/src/observables.ts +54 -59
- package/public/src/selectors.d.ts +106 -0
- package/public/src/selectors.d.ts.map +1 -0
- package/public/src/selectors.js +759 -0
- package/public/src/selectors.js.map +1 -0
- package/public/src/selectors.ts +2 -367
- package/public/src/test/grandparent.css +11 -0
- package/public/src/test/test/child.d.ts +2 -0
- package/public/src/test/test/child.d.ts.map +1 -0
- package/public/src/test/test/child.js +15 -0
- package/public/src/test/test/child.js.map +1 -0
- package/public/src/test/test/child.ts +21 -0
- package/public/src/test/test/grandchild.d.ts +2 -0
- package/public/src/test/test/grandchild.d.ts.map +1 -0
- package/public/src/test/test/grandchild.js +15 -0
- package/public/src/test/test/grandchild.js.map +1 -0
- package/public/src/test/test/grandchild.ts +21 -0
- package/public/src/test/test/grandparent.d.ts +2 -0
- package/public/src/test/test/grandparent.d.ts.map +1 -0
- package/public/src/test/test/grandparent.js +1 -0
- package/public/src/test/test/grandparent.js.map +1 -0
- package/public/src/test/test/grandparent.ts +21 -0
- package/public/src/test/test/greatgrandchild.d.ts +2 -0
- package/public/src/test/test/greatgrandchild.d.ts.map +1 -0
- package/public/src/test/test/greatgrandchild.js +29 -0
- package/public/src/test/test/greatgrandchild.js.map +1 -0
- package/public/src/test/test/greatgrandchild.ts +42 -0
- package/public/src/test/test/parent.d.ts +2 -0
- package/public/src/test/test/parent.d.ts.map +1 -0
- package/public/src/test/test/parent.js +15 -0
- package/public/src/test/test/parent.js.map +1 -0
- package/public/src/test/test/parent.ts +21 -0
- package/public/src/test/test/testform.d.ts +2 -0
- package/public/src/test/test/testform.d.ts.map +1 -0
- package/public/src/test/test/testform.js +1 -0
- package/public/src/test/test/testform.js.map +1 -0
- package/public/src/test/test/testform.ts +155 -0
- package/public/src/test/test/testfunction.d.ts +3 -0
- package/public/src/test/test/testfunction.d.ts.map +1 -0
- package/public/src/test/test/testfunction.js +7 -0
- package/public/src/test/test/testfunction.js.map +1 -0
- package/public/src/test/test/testfunction.ts +12 -0
- package/public/src/test/test/testmc.d.ts +3 -0
- package/public/src/test/test/testmc.d.ts.map +1 -0
- package/public/src/test/test/testmc.js +10 -0
- package/public/src/test/test/testmc.js.map +1 -0
- package/public/src/test/test/testmc.ts +16 -0
- package/public/src/test/test/testsimpleclass.d.ts +3 -0
- package/public/src/test/test/testsimpleclass.d.ts.map +1 -0
- package/public/src/test/test/testsimpleclass.js +9 -0
- package/public/src/test/test/testsimpleclass.js.map +1 -0
- package/public/src/test/test/testsimpleclass.ts +15 -0
- package/public/src/test/test.d.ts +2 -0
- package/public/src/test/test.d.ts.map +1 -0
- package/public/src/test/test.js +79 -0
- package/public/src/test/test.js.map +1 -0
- package/public/src/test/test.ts +188 -0
- package/public/src/test/testform.css +47 -0
- package/public/src/test/testform.html +56 -0
- package/public/src/test/testform.json +27 -0
- package/public/test/MC.d.ts +3 -3
- package/public/test/MC.d.ts.map +1 -1
- package/public/test/MC.js +43 -74
- package/public/test/MC.min.js +485 -0
- package/public/test/MC.ts +67 -143
- package/public/test/elements.d.ts +1 -1
- package/public/test/elements.d.ts.map +1 -1
- package/public/test/elements.js +16 -2
- package/public/test/elements.min.js +1 -0
- package/public/test/elements.ts +33 -3
- package/public/test/formValues.min.js +1 -0
- package/public/test/grandparent.css +1 -3
- package/public/test/microcomponents.min.js +1 -1
- package/public/test/observables.d.ts.map +1 -1
- package/public/test/observables.js +40 -47
- package/public/test/observables.min.js +1 -0
- package/public/test/observables.ts +54 -59
- package/public/test/selectors.d.ts +2 -4
- package/public/test/selectors.d.ts.map +1 -1
- package/public/test/selectors.js +2 -214
- package/public/test/selectors.min.js +1 -0
- package/public/test/selectors.ts +2 -367
- package/public/test/test/child.ts +21 -0
- package/public/test/test/grandchild.ts +21 -0
- package/public/test/test/grandparent.js +1 -1
- package/public/test/test/grandparent.ts +21 -0
- package/public/test/test/greatgrandchild.ts +42 -0
- package/public/test/test/parent.ts +21 -0
- package/public/test/test/testform.js +1 -1
- package/public/test/test/testform.js.map +1 -1
- package/public/test/test/testform.ts +155 -0
- package/public/test/test/testfunction.d.ts +3 -0
- package/public/test/test/testfunction.d.ts.map +1 -0
- package/public/test/test/testfunction.js +7 -0
- package/public/test/test/testfunction.js.map +1 -0
- package/public/test/test/testfunction.ts +12 -0
- package/public/test/test/testmc.d.ts +2 -5
- package/public/test/test/testmc.d.ts.map +1 -1
- package/public/test/test/testmc.js +4 -4
- package/public/test/test/testmc.js.map +1 -1
- package/public/test/test/testmc.ts +16 -0
- package/public/test/test/testsimpleclass.d.ts +3 -0
- package/public/test/test/testsimpleclass.d.ts.map +1 -0
- package/public/test/test/testsimpleclass.js +9 -0
- package/public/test/test/testsimpleclass.js.map +1 -0
- package/public/test/test/testsimpleclass.ts +15 -0
- package/public/test/test.js +0 -2
- package/public/test/test.js.map +1 -1
- package/public/test/test.ts +188 -0
- package/public/test/testform.css +47 -0
- package/public/test/testform.html +56 -0
- package/public/test/testform.json +3 -3
- package/public/typedoc/assets/navigation.js +1 -1
- package/public/typedoc/assets/search.js +1 -1
- package/public/typedoc/classes/MC.DC.html +5 -5
- package/public/typedoc/classes/MC.MC.html +5 -5
- package/public/typedoc/classes/MC.McBase.html +4 -3
- package/public/typedoc/classes/MC.McEvent.html +2 -2
- package/public/typedoc/functions/MC.addListener.html +1 -1
- package/public/typedoc/functions/MC.autoload.html +1 -1
- package/public/typedoc/functions/MC.removeListener.html +1 -1
- package/public/typedoc/functions/elements.defineCE.html +1 -1
- package/public/typedoc/functions/elements.getCE.html +1 -1
- package/public/typedoc/functions/formValues.formValues.html +1 -1
- package/public/typedoc/functions/observables.observe.html +1 -1
- package/public/typedoc/functions/selectors._d.html +1 -0
- package/public/typedoc/functions/selectors._t.html +1 -0
- package/public/typedoc/interfaces/MC.HTMLMcElement.html +2 -2
- package/public/typedoc/interfaces/selectors.DSelector.html +48 -0
- package/public/typedoc/interfaces/selectors.TSelector.html +34 -0
- package/public/typedoc/modules/MC.html +1 -1
- package/public/typedoc/modules/elements.html +1 -1
- package/public/typedoc/modules/formValues.html +1 -1
- package/public/typedoc/modules/observables.html +1 -1
- package/public/typedoc/modules/selectors.html +7 -0
- package/public/typedoc/modules.html +1 -0
- package/public/typedoc/types/observables.Observable.html +1 -1
- package/public/typedoc/types/selectors.selection.html +1 -0
- package/public/typedoc/types/selectors.singleSelector.html +1 -0
- package/src/MC.ts +67 -143
- package/src/elements.ts +33 -3
- package/src/observables.ts +54 -59
- package/src/selectors.ts +2 -367
- package/src/test/test/testform.ts +7 -3
- package/src/test/test/testfunction.ts +12 -0
- package/src/test/test/testmc.ts +13 -9
- package/src/test/test/testsimpleclass.ts +15 -0
- package/src/test/test.ts +0 -12
- package/tasks.md +36 -0
- package/typedoc.json +1 -1
- package/public/test/MC.js.map +0 -1
- package/public/test/elements.js.map +0 -1
- package/public/test/observables.js.map +0 -1
- package/public/test/selectors.js.map +0 -1
- /package/public/{test → src}/McEvent.js.map +0 -0
- /package/public/{test → src}/formValues.js.map +0 -0
- /package/public/{test → src}/helpers.js.map +0 -0
- /package/public/{test → src}/microcomponents.js.map +0 -0
package/public/test/selectors.js
CHANGED
|
@@ -15,167 +15,6 @@ const words = (classes) => {
|
|
|
15
15
|
classes = Array.from(classSet);
|
|
16
16
|
return classes;
|
|
17
17
|
};
|
|
18
|
-
const getInputName = (e) => {
|
|
19
|
-
let ret = e instanceof HTMLInputElement
|
|
20
|
-
? 'input'
|
|
21
|
-
: e instanceof HTMLSelectElement
|
|
22
|
-
? 'select'
|
|
23
|
-
: e instanceof HTMLTextAreaElement
|
|
24
|
-
? 'textarea'
|
|
25
|
-
: '';
|
|
26
|
-
return ret;
|
|
27
|
-
};
|
|
28
|
-
const getInputHandlers = (e) => {
|
|
29
|
-
let inputList = $d('input,select,textarea', e).array, handlers = {};
|
|
30
|
-
inputList.forEach((i) => {
|
|
31
|
-
const name = i.getAttribute('name') || 'undefined';
|
|
32
|
-
if (name) {
|
|
33
|
-
let h;
|
|
34
|
-
switch (getInputName(i)) {
|
|
35
|
-
case 'input':
|
|
36
|
-
h = new InputHandler(i, e);
|
|
37
|
-
Object.defineProperty(handlers, name, {
|
|
38
|
-
enumerable: true,
|
|
39
|
-
configurable: true,
|
|
40
|
-
get: () => { return h.val; },
|
|
41
|
-
set: (value) => { h.val = value; }
|
|
42
|
-
});
|
|
43
|
-
break;
|
|
44
|
-
case 'select':
|
|
45
|
-
h = new SelectHandler(i);
|
|
46
|
-
Object.defineProperty(handlers, name, {
|
|
47
|
-
enumerable: true,
|
|
48
|
-
configurable: true,
|
|
49
|
-
get: () => { return h.val; },
|
|
50
|
-
set: (value) => { h.val = value; }
|
|
51
|
-
});
|
|
52
|
-
break;
|
|
53
|
-
case 'textarea':
|
|
54
|
-
h = new TextAreaHandler(i);
|
|
55
|
-
Object.defineProperty(handlers, name, {
|
|
56
|
-
enumerable: true,
|
|
57
|
-
configurable: true,
|
|
58
|
-
get: () => { return h.val; },
|
|
59
|
-
set: (value) => { h.val = value; }
|
|
60
|
-
});
|
|
61
|
-
break;
|
|
62
|
-
default:
|
|
63
|
-
console.warn('handler missing:', name, 'for', i);
|
|
64
|
-
break;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
return handlers;
|
|
69
|
-
};
|
|
70
|
-
class InputBase {
|
|
71
|
-
constructor(e) {
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
class InputHandler extends InputBase {
|
|
75
|
-
#e;
|
|
76
|
-
#type;
|
|
77
|
-
#radioBase;
|
|
78
|
-
constructor(e, radioBase) {
|
|
79
|
-
super(e);
|
|
80
|
-
this.#e = e;
|
|
81
|
-
this.#type = e.type;
|
|
82
|
-
this.#radioBase = radioBase;
|
|
83
|
-
}
|
|
84
|
-
get val() {
|
|
85
|
-
let that = this, type = that.#type, ret;
|
|
86
|
-
switch (type) {
|
|
87
|
-
case 'radio':
|
|
88
|
-
const check = $d(`input[type="radio"][name="${this.#e.getAttribute('name')}"]`, this.#radioBase)
|
|
89
|
-
.filter(e => e.checked);
|
|
90
|
-
if (!check.length)
|
|
91
|
-
return '';
|
|
92
|
-
ret = check.array[0];
|
|
93
|
-
return ret.value;
|
|
94
|
-
case 'checkbox':
|
|
95
|
-
return that.#e.checked;
|
|
96
|
-
default:
|
|
97
|
-
return that.#e.value;
|
|
98
|
-
break;
|
|
99
|
-
}
|
|
100
|
-
return '';
|
|
101
|
-
}
|
|
102
|
-
set val(value) {
|
|
103
|
-
let that = this, type = that.#type, ret;
|
|
104
|
-
switch (type) {
|
|
105
|
-
case 'radio':
|
|
106
|
-
const selection = `input[type="radio"][name="${this.#e.getAttribute('name')}"]`, radios = $d(selection, this.#radioBase);
|
|
107
|
-
if (!radios.length)
|
|
108
|
-
return;
|
|
109
|
-
if (value === '') {
|
|
110
|
-
radios.forEach(r => { if (r.checked)
|
|
111
|
-
r.checked = false; });
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
const setRadioElement = radios.filter(r => r.getAttribute('value') === value);
|
|
115
|
-
if (!setRadioElement.length)
|
|
116
|
-
return;
|
|
117
|
-
setRadioElement.array[0].checked = true;
|
|
118
|
-
return;
|
|
119
|
-
break;
|
|
120
|
-
case 'checkbox':
|
|
121
|
-
that.#e.checked = value;
|
|
122
|
-
break;
|
|
123
|
-
default:
|
|
124
|
-
that.#e.value = value;
|
|
125
|
-
break;
|
|
126
|
-
}
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
class SelectHandler extends InputBase {
|
|
131
|
-
#e;
|
|
132
|
-
#multi = false;
|
|
133
|
-
constructor(e) {
|
|
134
|
-
super(e);
|
|
135
|
-
this.#e = e;
|
|
136
|
-
this.#multi = e.type === 'select-multiple';
|
|
137
|
-
}
|
|
138
|
-
get val() {
|
|
139
|
-
const that = this, ret = [];
|
|
140
|
-
const options = $d(that.#e.querySelectorAll('option'))
|
|
141
|
-
.filter(o => o.selected)
|
|
142
|
-
.forEach(o => { if (o.selected)
|
|
143
|
-
ret.push(o.value); });
|
|
144
|
-
if (this.#multi)
|
|
145
|
-
return ret;
|
|
146
|
-
return ret.length ? ret[0] : '';
|
|
147
|
-
}
|
|
148
|
-
set val(value) {
|
|
149
|
-
const that = this;
|
|
150
|
-
value = typeof value === 'string' ? [value] : value;
|
|
151
|
-
const options = $d(that.#e.querySelectorAll('option'))
|
|
152
|
-
.forEach(o => {
|
|
153
|
-
if (value.indexOf(o.value) > -1) {
|
|
154
|
-
o.setAttribute('selected', true);
|
|
155
|
-
o.selected = true;
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
o.removeAttribute('selected');
|
|
159
|
-
o.selected = false;
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
class TextAreaHandler extends InputBase {
|
|
166
|
-
#e;
|
|
167
|
-
constructor(e) {
|
|
168
|
-
super(e);
|
|
169
|
-
this.#e = e;
|
|
170
|
-
}
|
|
171
|
-
get val() {
|
|
172
|
-
return this.#e.value;
|
|
173
|
-
}
|
|
174
|
-
set val(value) {
|
|
175
|
-
this.#e.value = value;
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
18
|
class DomSelector {
|
|
180
19
|
#set = new Set();
|
|
181
20
|
get set() {
|
|
@@ -473,7 +312,7 @@ class DomSelector {
|
|
|
473
312
|
}
|
|
474
313
|
return that;
|
|
475
314
|
}
|
|
476
|
-
|
|
315
|
+
ancestors(selection, rootNode) {
|
|
477
316
|
let that = this, set = new Set();
|
|
478
317
|
that.#set.forEach((e) => {
|
|
479
318
|
let current = e;
|
|
@@ -560,57 +399,6 @@ class DomSelector {
|
|
|
560
399
|
});
|
|
561
400
|
return that;
|
|
562
401
|
}
|
|
563
|
-
val(p1, p2) {
|
|
564
|
-
if (!this.length)
|
|
565
|
-
return this;
|
|
566
|
-
const that = this;
|
|
567
|
-
let result, handlers = getInputHandlers(that.array[0]);
|
|
568
|
-
if (!p1) {
|
|
569
|
-
result = Object.assign({}, handlers);
|
|
570
|
-
}
|
|
571
|
-
else {
|
|
572
|
-
if (isObject(p1)) {
|
|
573
|
-
Object.assign(handlers, p1);
|
|
574
|
-
result = that;
|
|
575
|
-
}
|
|
576
|
-
else if (typeof p1 === 'string') {
|
|
577
|
-
if (p2 === undefined) {
|
|
578
|
-
result = handlers[p1];
|
|
579
|
-
}
|
|
580
|
-
else {
|
|
581
|
-
handlers[p1] = p2;
|
|
582
|
-
result = that;
|
|
583
|
-
}
|
|
584
|
-
}
|
|
585
|
-
}
|
|
586
|
-
return result;
|
|
587
|
-
}
|
|
588
|
-
values(values) {
|
|
589
|
-
const that = this, holder = {};
|
|
590
|
-
let data = {};
|
|
591
|
-
if (!that.length) {
|
|
592
|
-
console.warn('no dom selection to search inputs in');
|
|
593
|
-
return {};
|
|
594
|
-
}
|
|
595
|
-
let handlers = getInputHandlers(that.array[0]);
|
|
596
|
-
Object.keys(handlers).forEach((key) => {
|
|
597
|
-
data[key] = handlers[key];
|
|
598
|
-
});
|
|
599
|
-
if (Object.keys(data).length === 0) {
|
|
600
|
-
console.warn('no inputs in this dom selection', that.array[0], data);
|
|
601
|
-
}
|
|
602
|
-
if (values) {
|
|
603
|
-
Object
|
|
604
|
-
.keys(values)
|
|
605
|
-
.forEach(key => {
|
|
606
|
-
if (handlers.hasOwnProperty(key)) {
|
|
607
|
-
console.log('key found', key);
|
|
608
|
-
handlers[key] = values[key];
|
|
609
|
-
}
|
|
610
|
-
});
|
|
611
|
-
}
|
|
612
|
-
return structuredClone(Object.assign(handlers));
|
|
613
|
-
}
|
|
614
402
|
at(index) {
|
|
615
403
|
return $d(this.array.at(index));
|
|
616
404
|
}
|
|
@@ -851,7 +639,7 @@ class TbSelector {
|
|
|
851
639
|
that.#set = set;
|
|
852
640
|
return that;
|
|
853
641
|
}
|
|
854
|
-
|
|
642
|
+
ancestors(nameSpace) {
|
|
855
643
|
let that = this, set = new Set();
|
|
856
644
|
that.#set.forEach((e) => {
|
|
857
645
|
e.parents(nameSpace).forEach((tb) => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.selectors=t():e.selectors=t()}(this,(()=>(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{$d:()=>f,$t:()=>d});var r=new Function("try {return this===window;}catch(e){ return false;}");let n=new Set;r()&&Object.keys(HTMLElement.prototype).filter((e=>/^on/.test(e))).forEach((e=>n.add(e)));var a=new Function("try {return this===window;}catch(e){ return false;}");let s=new Set;function i(e,t,r,n=!1,a=!1){let s={once:!1};n&&(s.capture=n),a&&(s.once=a),e.addEventListener(t,r,s)}function o(e,t,r){e.removeEventListener(t,r)}a()&&Object.keys(HTMLElement.prototype).filter((e=>/^on/.test(e))).forEach((e=>s.add(e))),new Set;const h=e=>{let t=new Set;return e.forEach((e=>{(e=e.trim()).split(" ").forEach((e=>{""!==e&&t.add(e)}))})),Array.from(t)};class c{#e=new Set;get set(){return this.#e}get array(){return Array.from(this.#e)}set set(e){this.#e=e}get length(){return this.#e.size}constructor(e,t=document.body){if(new Set,!e)return this}$t(e){let t=new l;return this.#e.forEach((e=>{e._mc&&Object.values(e._mc).forEach((e=>{t.set.add(e)}))})),e&&t.filter((t=>t.nameSpace===e)),t}add(e,t){let r=this;return f(e,t).forEach((e=>{r.#e.add(e)})),r}addClass(...e){return e=h(e),this.forEach((t=>{t.classList.add(...e)})),this}after(e,t){let r=this,n=f(e,t);return n.length?(n.first().forEach((e=>{r.array.reverse().forEach((t=>{t.after(e)}))})),r):r}append(e,t){let r=this.array[0],n=f(e,t);return r&&n.forEach((e=>{r.append(e)})),this}appendTo(e,t){let r=f(e,t).array[0];return r&&this.forEach((e=>{r.append(e)})),this}attr(e,t){let r=this,n={};return r.length?arguments.length?"string"==typeof e?void 0===t?[...r.set][0].getAttribute(e):null===t?([...r.set].forEach((t=>{t.removeAttribute(e)})),r):("object"==typeof t&&(t=JSON.stringify(t)),[...r.set].forEach((r=>{r.setAttribute(e,t)})),r):"object"==typeof e?([...r.set].forEach((t=>{Object.keys(e).forEach((r=>{f(t).attr(r,e.key)}))})),r):r:(Array.from([...r.set][0].attributes).forEach((e=>{n[e.name]=e.value})),n):r}before(e,t){let r=this,n=f(e,t);return n.length?(n.first().forEach((e=>{r.forEach((t=>{t.before(e)}))})),r):r}children(e,t){let r=this,n=new Set;if(r.#e.forEach((e=>{Array.from(e.children).forEach((e=>{n.add(e)}))})),r=f([...n]),e){let n=f(e,t);r.filter((e=>n.has(e)))}return r}descendants(e,t){let r=this,n=new Set;if(r.#e.forEach((e=>{e.querySelectorAll("*").forEach((e=>{n.add(e)}))})),r=f([...n]),e){let n=f(e,t);r.filter((e=>n.has(e)))}return r}empty(){return this.filter((e=>!1))}first(e,t){let r=this,n=new Set,a=!1;return e&&(a=f(e,t)),r.#e.forEach((e=>{e.parentNode&&n.add(e.parentNode.children[0])})),r=f([...n]),e&&r.filter((e=>a.has(e))),r}has(e){return this.#e.has(e)}hasClass(...e){return e=h(e),this.every((e=>Array.from(e.classList).every((t=>e.contains(t)))))}html(e){let t=this;return e?(t.forEach((t=>{t.parentNode?t.innerHTML=e:(()=>{console.warn("Cannot access the .innerHTML of a HTMLElement that hasnt been inserted yet",t),console.trace(t,this),console.info("If you called this from inside a Web Component constructor, consider using the %c[connected] event callback!","color: blue;")})()})),t):t.array[0].innerHTML}last(e,t){let r=this,n=new Set;if(r.#e.forEach((e=>{let t=e.parentNode?.children;t&&n.add(Array.from(t).at(-1))})),r=f([...n]),e){let n=f(e,t);r.filter((e=>n.has(e)))}return r}next(e,t){let r=this,n=new Set;if(r.#e.forEach((e=>{let t=e.parentNode?.children;if(t){let r=Array.from(t),a=r.indexOf(e)+1;a<r.length&&n.add(r.at(a))}})),r=f([...n]),e){let n=f(e,t);r.filter((e=>n.has(e)))}return r}normalize(){return this.#e.forEach((e=>{e.normalize()})),this}off(e,t){let r=e.indexOf(" ")>-1?e.split(" "):[e];return this.array.forEach((e=>{r.forEach((function(r){o(e,r,t)}))})),this}on(e,t,r=!1,n=!1){let a=this,s=e.indexOf(" ")>-1?e.split(" ").filter((e=>""!==e)):[e];function o(){o.cb.apply(a,Array.from(arguments))}return o.cb=t,a.forEach((e=>{s.forEach((function(t){i(e,t,o,r,n)}))})),o}one(e,t,r=!1){let n=this,a=e.indexOf(" ")>-1?e.split(" ").filter((e=>""!==e)):[e];function s(){s.cb.apply(n,Array.from(arguments))}return s.cb=t,n.forEach((e=>{a.forEach((function(t){i(e,t,s,r,!0)}))})),s}parent(e,t){let r=this,n=new Set;if(r.#e.forEach((e=>{e.parentNode&&"HTML"!==e.parentNode.tagName&&n.add(e.parentNode)})),r=f([...n]),e){let n=f(e,t);r.filter((e=>n.has(e)))}return r}ancestors(e,t){let r=this,n=new Set;if(r.#e.forEach((e=>{let t=e;for(;t.parentNode&&"HTML"!==t.parentNode.tagName;)t=t.parentNode,n.add(t)})),r=f([...n]),e){let n=f(e,t);r.filter((e=>n.has(e)))}return r}prepend(e,t){let r=this.array[0],n=f(e,t);return r&&n.forEach((e=>{r.prepend(e)})),this}prev(e,t){let r=this,n=new Set;if(r.#e.forEach((e=>{let t=e.parentNode?.children;if(t){let r=Array.from(t),a=r.indexOf(e)-1;a>-1&&n.add(r.at(a))}})),r=f([...n]),e){let n=f(e,t);r.filter((e=>n.has(e)))}return r}removeClass(...e){return e=h(e),this.forEach((t=>{t.classList.remove(...e)})),this}text(e){let t=this;return e?(t.forEach((t=>{t.parentNode?t.innerText=e:(()=>{console.warn("Cannot access the .textContent of a HTMLElement that hasnt been inserted yet",t),console.trace(t,this),console.info("If you called this from inside a Web Component constructor, consider using the %c[connected] event callback!","color: blue;")})()})),t):t.array[0].innerText??""}toggleClass(...e){return e=h(e),this.forEach((t=>{t.classList.toggle(...e)})),this}trigger(e,t={},r=!1,n=!1,a=!1){let s,i={bubbles:r,cancelable:n,composed:a},o=e.indexOf(" ")>-1?e.split(" "):[e];return this.#e.forEach((e=>{o.forEach((function(r){s=new Event(r,i),s.data=t,e.dispatchEvent(s)}))})),this}at(e){return f(this.array.at(e))}concat(e){let t=this;return(e instanceof c?e.array:e).forEach((e=>{t.#e.add(e)})),t}entries(){return this.array.entries()}every(e,t){return this.array.every(e,t)}filter(e,t){return this.#e=new Set(this.array.filter(e,t)),this}forEach(e,t){return this.array.forEach(e,t),this}includes(e){return-1!==this.array.indexOf(e,0)}indexOf(e,t){return this.array.indexOf(e,t)}map(e,t){return this.array.map(e,t)}pop(){return this.array.pop()}push(...e){return e.forEach((e=>{this.#e.add(e)})),this}shift(){let e=this,t=e.#e.size?e.array[0]:void 0;return t&&e.#e.delete(t),t}slice(e,t){return f(this.array.slice(e,t))}some(e,t){return this.array.some(e,t)}splice(e,t,...r){let n=this.array;return n.splice(e,t,...r),f(n)}}class l{#e=new Set;get set(){return this.#e}get array(){return Array.from(this.#e)}set set(e){this.#e=e}get length(){return this.#e.size}set length(e){}constructor(e,t=document.body){if(!e)return this;f(e,t).forEach((e=>{d(e).forEach((e=>{this.#e.add(e)}))}))}$d(e,t=document.body){let r=new c,n=new Set,a=!!e||!1,s=new Set;return a&&(s=f(e,t).set),this.#e.forEach((e=>{a&&!s.has(e._tg)||n.add(e._tg)})),r.set=n,r}children(e){let t=this,r=new Set;return t.#e.forEach((t=>{t.children(e).forEach((e=>{r.add(e)}))})),t.#e=r,t}descendants(e){let t=this,r=new Set;return t.#e.forEach((t=>{t.descendants(e).forEach((e=>{r.add(e)}))})),t.#e=r,t}first(e){let t=this,r=new Set;return t.#e.forEach((e=>{e.parent().children().$d().first().$t().forEach((e=>{r.add(e)}))})),t.#e=r,e&&t.filter((t=>t.nameSpace=e)),t}has(e){return this.#e.has(e)}last(e){let t=this,r=new Set;return t.#e.forEach((e=>{e.parent().children().$d().last().$t().forEach((e=>{r.add(e)}))})),t.#e=r,e&&t.filter((t=>t.nameSpace=e)),t}next(e){let t=this,r=new Set;return t.#e.forEach((e=>{let t,n=new Set;for(t=e._tg;null!==t.nextElementSibling;)t=t.nextElementSibling,n.add(t);d([...n]).$d().first().$t().forEach((e=>{r.add(e)}))})),t.#e=r,e&&t.filter((t=>t.nameSpace=e)),t}ns(e){return this.filter((t=>t.nameSpace===e))}off(e,t){let r=e.indexOf(" ")>-1?e.split(" ").filter((e=>""!==e)):[e];return this.$d().array.forEach((e=>{r.forEach((function(r){o(e,`[TB]${r}`,t)}))})),this}on(e,t,r=!1){let n=this,a=e.indexOf(" ")>-1?e.split(" ").filter((e=>""!==e)):[e];function s(){s.cb.apply(n,Array.from(arguments))}return s.cb=t,n.forEach((e=>{a.forEach((function(t){i(e._tg,`[TB]${t}`,s,!1,r)}))})),s}one(e,t){let r=this,n=e.indexOf(" ")>-1?e.split(" ").filter((e=>""!==e)):[e];function a(){a.cb.apply(r,Array.from(arguments))}return a.cb=t,r.forEach((e=>{n.forEach((function(t){i(e._tg,`[TB]${t}`,a,!1,!0)}))})),a}parent(e){let t=this,r=new Set;return t.#e.forEach((t=>{t.parent(e).forEach((e=>{r.add(e)}))})),t.#e=r,t}ancestors(e){let t=this,r=new Set;return t.#e.forEach((t=>{t.parents(e).forEach((e=>{r.add(e)}))})),t.#e=r,t}prev(e){let t=this,r=new Set;return t.#e.forEach((e=>{let t,n=new Set;for(t=e._tg;null!==t.previousElementSibling;)t=t.previousElementSibling,n.add(t);d([...n]).$d().last().$t().forEach((e=>{r.add(e)}))})),t.#e=r,e&&t.filter((t=>t.nameSpace=e)),t}trigger(e,t={},r="l"){return this.forEach((n=>{n.trigger(e,t,r)})),this}at(e){return d(this.array.at(e))}concat(e){let t=this;return e.forEach((e=>{t.#e.add(e)})),t}entries(){return this.array.entries()}every(e,t){return this.array.every(e,t)}filter(e,t){return d(this.array.filter(e,t))}forEach(e,t){return this.array.forEach(e,t),this}includes(e){return-1!==this.array.indexOf(e)}indexOf(e,t){return this.array.indexOf(e,t)}map(e,t){return this.array.map(e,t)}pop(){let e=this.array,t=e.pop();return this.#e=new Set(e),t}push(e){return this.#e.add(e),this}shift(){let e=this.array.shift();return this.#e.delete(e),e}slice(e,t){return d(this.array.slice(e,t))}some(e,t){return this.array.some(e,t)}splice(e,t,...r){let n=this.array.splice(e,t,...r);return d(n)}}const f=(e,t=document)=>{let r=new Set;return e instanceof Array?(e.forEach((e=>{f(e,t).forEach((e=>{r.add(e)}))})),new c([...r])):new c(e,t)},d=(e,t=document)=>f(e,t).$t();return t})()));
|
package/public/test/selectors.ts
CHANGED
|
@@ -29,249 +29,6 @@ const words = ( classes: Array<string> ): Array<string> => {
|
|
|
29
29
|
return classes;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
type inputTypes = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;
|
|
33
|
-
|
|
34
|
-
const getInputName = ( e: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement ): string => {
|
|
35
|
-
|
|
36
|
-
let ret = e instanceof HTMLInputElement
|
|
37
|
-
? 'input'
|
|
38
|
-
: e instanceof HTMLSelectElement
|
|
39
|
-
? 'select'
|
|
40
|
-
: e instanceof HTMLTextAreaElement
|
|
41
|
-
? 'textarea'
|
|
42
|
-
: ''
|
|
43
|
-
;
|
|
44
|
-
|
|
45
|
-
return ret;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const getInputHandlers = ( e: HTMLElement | ShadowRoot ): LooseObject => {
|
|
50
|
-
|
|
51
|
-
let
|
|
52
|
-
//inputList = ( Array.from( e.querySelectorAll('*') ) as HTMLElement[] ).filter( i => isInputElement(i) ),
|
|
53
|
-
inputList = $d('input,select,textarea', e).array,
|
|
54
|
-
handlers: LooseObject = {};
|
|
55
|
-
|
|
56
|
-
inputList.forEach( (i) => {
|
|
57
|
-
const
|
|
58
|
-
name: string = ( i as inputTypes ).getAttribute('name') || 'undefined';
|
|
59
|
-
|
|
60
|
-
if ( name ){
|
|
61
|
-
let h: InputBase;
|
|
62
|
-
switch ( getInputName( i as inputTypes ) ){
|
|
63
|
-
case 'input':
|
|
64
|
-
//console.log( i, 'is HTMLInputElement');
|
|
65
|
-
h = new InputHandler( i as HTMLInputElement, e ); // e = element to search radios in = radioBase
|
|
66
|
-
Object.defineProperty( handlers, name, {
|
|
67
|
-
enumerable: true,
|
|
68
|
-
configurable: true,
|
|
69
|
-
get: (): any => { return h.val },
|
|
70
|
-
set: ( value: any ) => { h.val = value }
|
|
71
|
-
});
|
|
72
|
-
break;
|
|
73
|
-
case 'select':
|
|
74
|
-
//console.log( i, 'is HTMLSelectElement');
|
|
75
|
-
h = new SelectHandler( i as HTMLSelectElement );
|
|
76
|
-
Object.defineProperty( handlers, name, {
|
|
77
|
-
enumerable: true,
|
|
78
|
-
configurable: true,
|
|
79
|
-
get: (): any => { return h.val },
|
|
80
|
-
set: ( value: any ) => { h.val = value }
|
|
81
|
-
});
|
|
82
|
-
break;
|
|
83
|
-
case 'textarea':
|
|
84
|
-
//console.log( i, 'is HTMLTextAreaElement');
|
|
85
|
-
h = new TextAreaHandler( i as HTMLTextAreaElement );
|
|
86
|
-
Object.defineProperty( handlers, name, {
|
|
87
|
-
enumerable: true,
|
|
88
|
-
configurable: true,
|
|
89
|
-
get: (): any => { return h.val },
|
|
90
|
-
set: ( value: any ) => { h.val = value }
|
|
91
|
-
});
|
|
92
|
-
break;
|
|
93
|
-
default:
|
|
94
|
-
console.warn('handler missing:', name, 'for', i);
|
|
95
|
-
break;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
return handlers;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
abstract class InputBase{
|
|
104
|
-
constructor( e: any ){
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
abstract get val(): any;
|
|
108
|
-
|
|
109
|
-
abstract set val( value: any );
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
class InputHandler extends InputBase {
|
|
114
|
-
|
|
115
|
-
#e: HTMLInputElement;
|
|
116
|
-
#type: string;
|
|
117
|
-
#radioBase: any;
|
|
118
|
-
|
|
119
|
-
constructor( e: HTMLInputElement, radioBase?: HTMLElement | ShadowRoot ){
|
|
120
|
-
super( e );
|
|
121
|
-
this.#e = e;
|
|
122
|
-
this.#type = e.type;
|
|
123
|
-
this.#radioBase = radioBase;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
get val(): any{
|
|
127
|
-
let that = this,
|
|
128
|
-
type = that.#type,
|
|
129
|
-
ret: any;
|
|
130
|
-
|
|
131
|
-
switch (type){
|
|
132
|
-
case 'radio':
|
|
133
|
-
const check = $d( `input[type="radio"][name="${ this.#e.getAttribute('name') }"]`, this.#radioBase )
|
|
134
|
-
.filter( e => e.checked );
|
|
135
|
-
if ( !check.length ) return '';
|
|
136
|
-
ret = check.array[0];
|
|
137
|
-
return ret.value;
|
|
138
|
-
case 'checkbox':
|
|
139
|
-
return that.#e.checked;
|
|
140
|
-
default:
|
|
141
|
-
return that.#e.value;
|
|
142
|
-
break;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
return '';
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
set val( value: any ){
|
|
149
|
-
let that = this,
|
|
150
|
-
type = that.#type,
|
|
151
|
-
ret: any;
|
|
152
|
-
|
|
153
|
-
switch (type){
|
|
154
|
-
case 'radio':
|
|
155
|
-
const
|
|
156
|
-
selection = `input[type="radio"][name="${ this.#e.getAttribute('name') }"]`,
|
|
157
|
-
radios = $d( selection, this.#radioBase );
|
|
158
|
-
|
|
159
|
-
// console.log('set radios', selection, this.#radioBase, radios.array );
|
|
160
|
-
|
|
161
|
-
if ( !radios.length ) return;
|
|
162
|
-
|
|
163
|
-
if ( value === '' ){ // uncheck all
|
|
164
|
-
radios.forEach( r => { if (r.checked) r.checked = false } );
|
|
165
|
-
//console.log('unset all radios', radios.array );
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
const setRadioElement = radios.filter( r => r.getAttribute('value') === value );
|
|
170
|
-
|
|
171
|
-
if ( !setRadioElement.length ) return;
|
|
172
|
-
|
|
173
|
-
// console.log('set this radio', setRadioElement.array );
|
|
174
|
-
|
|
175
|
-
(setRadioElement.array[0] as HTMLInputElement).checked = true;
|
|
176
|
-
|
|
177
|
-
// console.log('done', setRadioElement.array );
|
|
178
|
-
return;
|
|
179
|
-
break;
|
|
180
|
-
case 'checkbox':
|
|
181
|
-
that.#e.checked = value;
|
|
182
|
-
break;
|
|
183
|
-
default:
|
|
184
|
-
that.#e.value = value;
|
|
185
|
-
break;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
return;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
class SelectHandler extends InputBase {
|
|
194
|
-
|
|
195
|
-
#e: HTMLSelectElement;
|
|
196
|
-
#multi: boolean = false;
|
|
197
|
-
|
|
198
|
-
constructor( e: HTMLSelectElement ){
|
|
199
|
-
super( e );
|
|
200
|
-
this.#e = e;
|
|
201
|
-
this.#multi = e.type === 'select-multiple';
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
get val(): string[] | string{
|
|
205
|
-
const
|
|
206
|
-
that = this,
|
|
207
|
-
ret: string[] = [];
|
|
208
|
-
|
|
209
|
-
// get all options
|
|
210
|
-
const options = $d( that.#e.querySelectorAll('option') )
|
|
211
|
-
.filter( o => o.selected )
|
|
212
|
-
.forEach( o => { if ( o.selected ) ret.push( o.value ) } );
|
|
213
|
-
|
|
214
|
-
if ( this.#multi ) return ret;
|
|
215
|
-
return ret.length ? ret[0] : '';
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
set val( value: string[] | string ){
|
|
219
|
-
const
|
|
220
|
-
that = this;
|
|
221
|
-
|
|
222
|
-
value = typeof value === 'string' ? [ value ] : value;
|
|
223
|
-
|
|
224
|
-
//console.log('set values', value );
|
|
225
|
-
|
|
226
|
-
// set all options
|
|
227
|
-
const options = $d( that.#e.querySelectorAll('option') )
|
|
228
|
-
.forEach( o => {
|
|
229
|
-
if ( value.indexOf( o.value ) > -1 ) {
|
|
230
|
-
o.setAttribute( 'selected', true )
|
|
231
|
-
o.selected = true;
|
|
232
|
-
} else {
|
|
233
|
-
o.removeAttribute( 'selected' )
|
|
234
|
-
o.selected = false;
|
|
235
|
-
}
|
|
236
|
-
});
|
|
237
|
-
|
|
238
|
-
/*
|
|
239
|
-
if (pOption.selected) {
|
|
240
|
-
if (
|
|
241
|
-
!pOption.disabled &&
|
|
242
|
-
(!pOption.parentNode.disabled ||
|
|
243
|
-
pOption.parentNode.nodeName !==
|
|
244
|
-
'optgroup')
|
|
245
|
-
) {
|
|
246
|
-
var value = pOption.value;
|
|
247
|
-
|
|
248
|
-
ret.push(value);
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
*/
|
|
252
|
-
return;
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
class TextAreaHandler extends InputBase {
|
|
258
|
-
#e: HTMLTextAreaElement
|
|
259
|
-
constructor( e: HTMLTextAreaElement ){
|
|
260
|
-
super(e);
|
|
261
|
-
this.#e = e;
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
get val(): string{
|
|
265
|
-
return this.#e.value;
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
set val( value: string ){
|
|
269
|
-
this.#e.value = value;
|
|
270
|
-
return;
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
}
|
|
274
|
-
|
|
275
32
|
/*
|
|
276
33
|
selector classes
|
|
277
34
|
*/
|
|
@@ -303,28 +60,9 @@ class DomSelector{
|
|
|
303
60
|
that = this,
|
|
304
61
|
undefinedTags: Set<any> = new Set();
|
|
305
62
|
|
|
306
|
-
// // console.log('DomSelector constructor', ...arguments);
|
|
307
|
-
|
|
308
63
|
if ( !selection ) {
|
|
309
64
|
return that;
|
|
310
65
|
}
|
|
311
|
-
|
|
312
|
-
/* autoloading disabled !
|
|
313
|
-
if ( selection instanceof Array ){
|
|
314
|
-
selection.forEach( (select) => {
|
|
315
|
-
_getElementList( select, element ).forEach( (e) => {
|
|
316
|
-
if ( e.localName?.indexOf('-') !== -1 || e.getAttribute?.('is') ) _loadRequirements( e );
|
|
317
|
-
that.#set.add( e );
|
|
318
|
-
});
|
|
319
|
-
});
|
|
320
|
-
} else {
|
|
321
|
-
_getElementList( selection, element ).forEach( (e) => {
|
|
322
|
-
if ( e.localName?.indexOf('-') !== -1 || e.getAttribute?.('is') ) _loadRequirements( e );
|
|
323
|
-
that.#set.add( e );
|
|
324
|
-
});
|
|
325
|
-
}
|
|
326
|
-
*/
|
|
327
|
-
|
|
328
66
|
}
|
|
329
67
|
|
|
330
68
|
$t( nameSpace?: string ): TSelector {
|
|
@@ -652,20 +390,6 @@ class DomSelector{
|
|
|
652
390
|
return that;
|
|
653
391
|
}
|
|
654
392
|
|
|
655
|
-
/*
|
|
656
|
-
load(): DSelector{
|
|
657
|
-
let that = this;
|
|
658
|
-
|
|
659
|
-
if( !that.length ){
|
|
660
|
-
that.add( document.body );
|
|
661
|
-
}
|
|
662
|
-
|
|
663
|
-
that.forEach( e => _loadRequirements( e ) );
|
|
664
|
-
|
|
665
|
-
return that;
|
|
666
|
-
}
|
|
667
|
-
*/
|
|
668
|
-
|
|
669
393
|
next( selection?: selection, rootNode?: HTMLElement ): DSelector{
|
|
670
394
|
let
|
|
671
395
|
that: DomSelector = this,
|
|
@@ -805,7 +529,7 @@ class DomSelector{
|
|
|
805
529
|
return that;
|
|
806
530
|
}
|
|
807
531
|
|
|
808
|
-
|
|
532
|
+
ancestors( selection?: selection, rootNode?: HTMLElement ): DSelector {
|
|
809
533
|
let
|
|
810
534
|
that: DomSelector = this,
|
|
811
535
|
set: Set<HTMLElement> = new Set()
|
|
@@ -948,95 +672,6 @@ class DomSelector{
|
|
|
948
672
|
return that;
|
|
949
673
|
}
|
|
950
674
|
|
|
951
|
-
// INFO:
|
|
952
|
-
// val(): LooseObject; // no param: get all as LooseObject
|
|
953
|
-
// val( p1: string ): Array<string> | number | string; // get from input name
|
|
954
|
-
// val( p1: object ): DomSelector; // set from object
|
|
955
|
-
// val( p1: string, p2: any ): DomSelector; // set from name and value
|
|
956
|
-
val( p1?: any, p2?: any ): any {
|
|
957
|
-
|
|
958
|
-
if ( !this.length ) return this;
|
|
959
|
-
|
|
960
|
-
const
|
|
961
|
-
that = this
|
|
962
|
-
;
|
|
963
|
-
|
|
964
|
-
let result: any,
|
|
965
|
-
handlers: LooseObject = getInputHandlers( that.array[0] );
|
|
966
|
-
|
|
967
|
-
// work with it
|
|
968
|
-
if ( !p1 ){ // get all inputs as LooseObject
|
|
969
|
-
result = Object.assign( {}, handlers );
|
|
970
|
-
// Object.keys( handlers ).forEach( ( key ) => result[key] = handlers.hasOwnProperty(key) ? handlers[key].val : undefined );
|
|
971
|
-
} else {
|
|
972
|
-
if ( isObject(p1) ){ // set inputs from Object
|
|
973
|
-
Object.assign( handlers, p1 );
|
|
974
|
-
// Object.keys( p1 ).forEach( ( key ) => !!handlers[key] ? handlers[key].val = p1[key] : false );
|
|
975
|
-
result = that;
|
|
976
|
-
} else if ( typeof p1 === 'string' ){
|
|
977
|
-
if ( p2 === undefined ){ // get a single input
|
|
978
|
-
result = handlers[p1];
|
|
979
|
-
} else { // set a single input
|
|
980
|
-
handlers[p1] = p2;
|
|
981
|
-
result = that;
|
|
982
|
-
}
|
|
983
|
-
}
|
|
984
|
-
}
|
|
985
|
-
|
|
986
|
-
return result;
|
|
987
|
-
}
|
|
988
|
-
|
|
989
|
-
values( values?: LooseObject ): LooseObject {
|
|
990
|
-
const
|
|
991
|
-
that = this,
|
|
992
|
-
holder: LooseObject = {};
|
|
993
|
-
|
|
994
|
-
let
|
|
995
|
-
data: LooseObject = {};
|
|
996
|
-
|
|
997
|
-
//console.log( '$d().values()', values );
|
|
998
|
-
|
|
999
|
-
if ( !that.length ) {
|
|
1000
|
-
console.warn('no dom selection to search inputs in');
|
|
1001
|
-
return {};
|
|
1002
|
-
}
|
|
1003
|
-
|
|
1004
|
-
let handlers = getInputHandlers( that.array[0] );
|
|
1005
|
-
|
|
1006
|
-
//console.log( 'handlers', Object.keys(handlers), handlers['cb1'] );
|
|
1007
|
-
|
|
1008
|
-
// let values = that.val();
|
|
1009
|
-
|
|
1010
|
-
// console.log( 'values', values );
|
|
1011
|
-
|
|
1012
|
-
Object.keys( handlers ).forEach( (key: string) => {
|
|
1013
|
-
//console.log(key);
|
|
1014
|
-
data[key] = handlers[key];
|
|
1015
|
-
});
|
|
1016
|
-
|
|
1017
|
-
// data = Object.assign( {}, that.val() )
|
|
1018
|
-
//console.log( 'data', that.array[0], data, Object.keys( data ) );
|
|
1019
|
-
|
|
1020
|
-
if ( Object.keys( data ).length === 0 ) {
|
|
1021
|
-
console.warn('no inputs in this dom selection', that.array[0], data );
|
|
1022
|
-
}
|
|
1023
|
-
|
|
1024
|
-
//console.log( '$d val()', data );
|
|
1025
|
-
if (values) {
|
|
1026
|
-
Object
|
|
1027
|
-
.keys( values )
|
|
1028
|
-
.forEach( key => {
|
|
1029
|
-
if ( handlers.hasOwnProperty(key) ) {
|
|
1030
|
-
console.log( 'key found', key );
|
|
1031
|
-
handlers[key] = values[key];
|
|
1032
|
-
}
|
|
1033
|
-
});
|
|
1034
|
-
// .forEach( key => handlers[key] = values[key] )
|
|
1035
|
-
}
|
|
1036
|
-
|
|
1037
|
-
return structuredClone( Object.assign( handlers ) );
|
|
1038
|
-
}
|
|
1039
|
-
|
|
1040
675
|
/*
|
|
1041
676
|
array method mapping
|
|
1042
677
|
*/
|
|
@@ -1434,7 +1069,7 @@ class TbSelector{
|
|
|
1434
1069
|
return that;
|
|
1435
1070
|
}
|
|
1436
1071
|
|
|
1437
|
-
|
|
1072
|
+
ancestors( nameSpace?: string ): TSelector {
|
|
1438
1073
|
|
|
1439
1074
|
let
|
|
1440
1075
|
that: TbSelector = this,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DC, defineCE, getCE } from './../../microcomponents.js';
|
|
2
|
+
import { Grandchild } from './grandchild.js';
|
|
3
|
+
defineCE(
|
|
4
|
+
'test-child',
|
|
5
|
+
|
|
6
|
+
class TestChild extends DC {
|
|
7
|
+
constructor(target: HTMLElement) {
|
|
8
|
+
super(target);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
onConnected() {
|
|
12
|
+
let that = this;
|
|
13
|
+
|
|
14
|
+
for (let x = 0; x < 10; x++) {
|
|
15
|
+
that.target.append(new Grandchild!());
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
export const Child = getCE('test-child');
|