@cntwg/html-helper 0.0.27 → 0.1.1
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/CHANGELOG.md +14 -244
- package/LICENSE +1 -1
- package/README.md +17 -21
- package/doc/html-helper-lib.md +3 -3
- package/index.js +4 -41
- package/lib/html-helper-lib.js +3 -11
- package/package.json +6 -16
- package/doc/html-ctrls-btn.md +0 -263
- package/doc/html-ctrls-fields.md +0 -195
- package/doc/html-ctrls-list.md +0 -876
- package/lib/html-ctrls/buttons.js +0 -386
- package/lib/html-ctrls/fields.js +0 -521
- package/lib/html-ctrls/list.js +0 -1108
- package/lib/html-ctrls/lists-btn.js +0 -210
- package/lib/html-ctrls/lists-stubs.js +0 -297
- package/lib/html-ctrls/mod-hfunc.js +0 -60
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
// [v0.1.056-20250827]
|
|
2
|
-
|
|
3
|
-
// === module init block ===
|
|
4
|
-
|
|
5
|
-
const {
|
|
6
|
-
isPlainObject,
|
|
7
|
-
} = require('@ygracs/bsfoc-lib-js');
|
|
8
|
-
|
|
9
|
-
const {
|
|
10
|
-
isHTMLButton,
|
|
11
|
-
CSS_CLASS_STRING,
|
|
12
|
-
} = require('../html-helper-lib.js');
|
|
13
|
-
|
|
14
|
-
const {
|
|
15
|
-
THtmlButtonsSet,
|
|
16
|
-
} = require('./buttons.js');
|
|
17
|
-
|
|
18
|
-
const {
|
|
19
|
-
pushEventHandler, triggerEventHandler,
|
|
20
|
-
readOnClickEventInfo,
|
|
21
|
-
} = require('./mod-hfunc.js');
|
|
22
|
-
|
|
23
|
-
const {
|
|
24
|
-
CSS_CLASS_DISABLED,
|
|
25
|
-
} = CSS_CLASS_STRING;
|
|
26
|
-
|
|
27
|
-
// === module extra block (function definitions) ===
|
|
28
|
-
|
|
29
|
-
// === module main block ===
|
|
30
|
-
|
|
31
|
-
/***
|
|
32
|
-
* (* constant definitions *)
|
|
33
|
-
*/
|
|
34
|
-
|
|
35
|
-
const BTS_DEF_GROUP_NAME = 'all';
|
|
36
|
-
|
|
37
|
-
/***
|
|
38
|
-
* (* function definitions *)
|
|
39
|
-
*/
|
|
40
|
-
|
|
41
|
-
/***
|
|
42
|
-
* (* class definitions *)
|
|
43
|
-
*/
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* A description for list buttons set.
|
|
47
|
-
* @typedef {Object} listButtonsSetDesc
|
|
48
|
-
* @property {?HTMLElement} btnFirst - button 'move to first'
|
|
49
|
-
* @property {?HTMLElement} btnPrev - button 'move to previous'
|
|
50
|
-
* @property {?HTMLElement} btnNext - button 'move to next'
|
|
51
|
-
* @property {?HTMLElement} btnLast - button 'move to last'
|
|
52
|
-
*/
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* @classdesc This class implements an interface of a pre-defined
|
|
56
|
-
* buttons set that is used in pair with a list elements.
|
|
57
|
-
* A set provide a buttons: <next>, <previous>, <first> and <last>.
|
|
58
|
-
*/
|
|
59
|
-
class THtmlListButtonsController {
|
|
60
|
-
/** @type {THtmlButtonsSet} */
|
|
61
|
-
#_btnSet;
|
|
62
|
-
/** @type {Map<string, Function>} */
|
|
63
|
-
#_events;
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Creates an instance of a buttons set.
|
|
67
|
-
* @param {listButtonsSetDesc} [opt] - an options
|
|
68
|
-
*/
|
|
69
|
-
constructor(opt) {
|
|
70
|
-
// load controls
|
|
71
|
-
/** @type {listButtonsSetDesc} */
|
|
72
|
-
let {
|
|
73
|
-
btnFirst,
|
|
74
|
-
btnPrev,
|
|
75
|
-
btnNext,
|
|
76
|
-
btnLast,
|
|
77
|
-
} = isPlainObject(opt) ? opt : {};
|
|
78
|
-
if (!isHTMLButton(btnFirst)) btnFirst = null;
|
|
79
|
-
if (!isHTMLButton(btnPrev)) btnPrev = null;
|
|
80
|
-
if (!isHTMLButton(btnNext)) btnNext = null;
|
|
81
|
-
if (!isHTMLButton(btnLast)) btnLast = null;
|
|
82
|
-
// init buttons set
|
|
83
|
-
const _btnSet = new THtmlButtonsSet();
|
|
84
|
-
this.#_btnSet = _btnSet;
|
|
85
|
-
_btnSet.addGroup('move_frwd');
|
|
86
|
-
_btnSet.addGroup('move_bkwd');
|
|
87
|
-
_btnSet.addGroup('dsbl_ctrls');
|
|
88
|
-
if (btnFirst && btnLast) {
|
|
89
|
-
_btnSet.addItem('btn_frst', btnFirst, 'move_bkwd');
|
|
90
|
-
_btnSet.addItem('btn_last', btnLast, 'move_frwd');
|
|
91
|
-
btnFirst.addEventListener('click', e => this.#_on_btn_pressed(e, 'first'));
|
|
92
|
-
btnLast.addEventListener('click', e => this.#_on_btn_pressed(e, 'last'));
|
|
93
|
-
} else {
|
|
94
|
-
_btnSet.addItem('btn_frst', btnFirst, 'dsbl_ctrls');
|
|
95
|
-
_btnSet.addItem('btn_last', btnLast, 'dsbl_ctrls');
|
|
96
|
-
};
|
|
97
|
-
if (btnPrev && btnNext) {
|
|
98
|
-
_btnSet.addItem('btn_prev', btnPrev, 'move_bkwd');
|
|
99
|
-
_btnSet.addItem('btn_next', btnNext, 'move_frwd');
|
|
100
|
-
btnPrev.addEventListener('click', e => this.#_on_btn_pressed(e, 'prev'));
|
|
101
|
-
btnNext.addEventListener('click', e => this.#_on_btn_pressed(e, 'next'));
|
|
102
|
-
} else {
|
|
103
|
-
_btnSet.addItem('btn_prev', btnPrev, 'dsbl_ctrls');
|
|
104
|
-
_btnSet.addItem('btn_next', btnNext, 'dsbl_ctrls');
|
|
105
|
-
};
|
|
106
|
-
_btnSet.disableGroup('move_frwd');
|
|
107
|
-
_btnSet.disableGroup('move_bkwd');
|
|
108
|
-
_btnSet.disableGroup('dsbl_ctrls');
|
|
109
|
-
// init events controller
|
|
110
|
-
this.#_events = new Map();
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* @param {object} e - event
|
|
115
|
-
* @param {string} key - button ID
|
|
116
|
-
* @returns {void}
|
|
117
|
-
* @private
|
|
118
|
-
*/
|
|
119
|
-
#_on_btn_pressed = (e, key) => {
|
|
120
|
-
//console.log(`THtmlListButtonsController._on_btn_pressed().key(${key}) ==> was called...`);
|
|
121
|
-
//e.preventDefault(); /* need to reconsider reason for use */
|
|
122
|
-
const { item, onClickNum } = readOnClickEventInfo(e);
|
|
123
|
-
if (
|
|
124
|
-
item instanceof HTMLElement
|
|
125
|
-
&& (onClickNum === 0 || onClickNum === 1)
|
|
126
|
-
&& !item.classList.contains(CSS_CLASS_DISABLED)
|
|
127
|
-
) {
|
|
128
|
-
this.#_triggerEvent(`btn-${key}-pressed`, e);
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* @param {string} name - event name
|
|
134
|
-
* @param {...any} args
|
|
135
|
-
* @returns {void}
|
|
136
|
-
* @private
|
|
137
|
-
* @see triggerEventHandler
|
|
138
|
-
*/
|
|
139
|
-
#_triggerEvent = (name, ...args) => {
|
|
140
|
-
triggerEventHandler(this.#_events, name, ...args);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Disables all buttons.
|
|
145
|
-
* @returns {void}
|
|
146
|
-
*/
|
|
147
|
-
disableAll() {
|
|
148
|
-
const _btnSet = this.#_btnSet;
|
|
149
|
-
_btnSet.disableGroup('move_bkwd');
|
|
150
|
-
_btnSet.disableGroup('move_frwd');
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* Disables all buttons in 'move_bkwd' group.
|
|
155
|
-
* @returns {void}
|
|
156
|
-
*/
|
|
157
|
-
disableBkwd() {
|
|
158
|
-
this.#_btnSet.disableGroup('move_bkwd');
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Disables all buttons in 'move_frwd' group.
|
|
163
|
-
* @returns {void}
|
|
164
|
-
*/
|
|
165
|
-
disableFrwd() {
|
|
166
|
-
this.#_btnSet.disableGroup('move_frwd');
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* Enables all buttons.
|
|
171
|
-
* @returns {void}
|
|
172
|
-
*/
|
|
173
|
-
enableAll() {
|
|
174
|
-
const _btnSet = this.#_btnSet;
|
|
175
|
-
_btnSet.enableGroup('move_bkwd');
|
|
176
|
-
_btnSet.enableGroup('move_frwd');
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
/**
|
|
180
|
-
* Enables all buttons in 'move_bkwd' group.
|
|
181
|
-
* @returns {void}
|
|
182
|
-
*/
|
|
183
|
-
enableBkwd() {
|
|
184
|
-
this.#_btnSet.enableGroup('move_bkwd');
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
/**
|
|
188
|
-
* Enables all buttons in 'move_frwd' group.
|
|
189
|
-
* @returns {void}
|
|
190
|
-
*/
|
|
191
|
-
enableFrwd() {
|
|
192
|
-
this.#_btnSet.enableGroup('move_frwd');
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
/**
|
|
196
|
-
* Sets a callback function to handle event.
|
|
197
|
-
* @param {string} name - event name
|
|
198
|
-
* @param {func} evnt - callback function
|
|
199
|
-
* @returns {void}
|
|
200
|
-
*/
|
|
201
|
-
on(name, evnt) {
|
|
202
|
-
pushEventHandler(this.#_events, name, evnt);
|
|
203
|
-
}
|
|
204
|
-
};
|
|
205
|
-
|
|
206
|
-
// === module exports block ===
|
|
207
|
-
|
|
208
|
-
exports.THtmlListButtonsController = THtmlListButtonsController;
|
|
209
|
-
|
|
210
|
-
exports.BTS_DEF_GROUP_NAME = BTS_DEF_GROUP_NAME;
|
|
@@ -1,297 +0,0 @@
|
|
|
1
|
-
// [v0.1.050-20250827]
|
|
2
|
-
|
|
3
|
-
// === module init block ===
|
|
4
|
-
|
|
5
|
-
const {
|
|
6
|
-
isArray, isObject, isPlainObject,
|
|
7
|
-
} = require('@ygracs/bsfoc-lib-js');
|
|
8
|
-
|
|
9
|
-
const {
|
|
10
|
-
isHTMLElement,
|
|
11
|
-
} = require('../html-helper-lib.js');
|
|
12
|
-
|
|
13
|
-
// === module extra block (helper functions) ===
|
|
14
|
-
|
|
15
|
-
// === module main block ===
|
|
16
|
-
|
|
17
|
-
/***
|
|
18
|
-
* (* constant definitions *)
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
/***
|
|
22
|
-
* (* function definitions *)
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
/***
|
|
26
|
-
* (* class definitions *)
|
|
27
|
-
*/
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* A settings to load a stub-elements.
|
|
31
|
-
* @typedef {Object} OPT_ldstubs
|
|
32
|
-
* @property {string} [defaultItem] - <*deprecated*> a default element name
|
|
33
|
-
* @property {boolean} [useClear=true] - to clear before load an elements
|
|
34
|
-
* @property {boolean} [force=false] - run in a force mode
|
|
35
|
-
* @todo [since v0.0.26] `defaultItem`-option deprecated
|
|
36
|
-
*/
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* A stub-elements description list.
|
|
40
|
-
* @typedef {Object} OBJ_stubEList
|
|
41
|
-
* @property {Array} items - array of `name`-`element` pairs
|
|
42
|
-
* @property {string} [defaultItem] - a default element name
|
|
43
|
-
*/
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* A an options set for a `THtmlStubItemsSet`-class constructor
|
|
47
|
-
* @typedef {Object} OPT_stubconsett
|
|
48
|
-
* @property {(any[])} items - array of `name`-`element` pairs
|
|
49
|
-
* @property {string} [defaultItem] - a default element name
|
|
50
|
-
* @property {boolean} [force=false] - run in a force mode
|
|
51
|
-
*/
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* @classdesc This class implements an interface of a stub-items set
|
|
55
|
-
*/
|
|
56
|
-
class THtmlStubItemsSet {
|
|
57
|
-
/** @type {?HTMLElement} */
|
|
58
|
-
#_host;
|
|
59
|
-
/** @type {Map<string, HTMLElement>} */
|
|
60
|
-
#_items;
|
|
61
|
-
/** @type {string} */
|
|
62
|
-
#_defItem;
|
|
63
|
-
#_shownItem = null;
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Creates an instance of a stub-items set
|
|
67
|
-
* @param {HTMLElement} host - host element
|
|
68
|
-
* @param {(array|OPT_stubconsett|OBJ_stubEList)} [opt] - options
|
|
69
|
-
* @todo [since v0.0.26] use of an `array`-type as a value of an `opt` is deprecated
|
|
70
|
-
*/
|
|
71
|
-
constructor(host, opt) {
|
|
72
|
-
this.#_host = isHTMLElement(host) ? host : null;
|
|
73
|
-
this.#_items = new Map();
|
|
74
|
-
this.#_defItem = '';
|
|
75
|
-
this.#_shownItem = null;
|
|
76
|
-
if (isObject(opt)) {
|
|
77
|
-
/** @type {(OPT_stubconsett|OBJ_stubEList)} */
|
|
78
|
-
const obj = isArray(opt) ? { items: opt } : opt;
|
|
79
|
-
const { items, defaultItem, force } = obj;
|
|
80
|
-
this.loadItems({
|
|
81
|
-
items,
|
|
82
|
-
defaultItem,
|
|
83
|
-
}, {
|
|
84
|
-
force,
|
|
85
|
-
});
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Defines a default element name
|
|
91
|
-
* @type {string}
|
|
92
|
-
*/
|
|
93
|
-
get defItem() {
|
|
94
|
-
return this.#_defItem;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
set defItem(name) {
|
|
98
|
-
this.setDefItem(name);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Contains a Qty of an elements
|
|
103
|
-
* @type {number}
|
|
104
|
-
* @readonly
|
|
105
|
-
*/
|
|
106
|
-
get count() {
|
|
107
|
-
return this.#_items.size;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Clears an instance content.
|
|
112
|
-
* @returns {void}
|
|
113
|
-
*/
|
|
114
|
-
clear() {
|
|
115
|
-
// // TODO: check if any item is shown
|
|
116
|
-
this.#_items.clear();
|
|
117
|
-
this.#_defItem = '';
|
|
118
|
-
this.#_shownItem = null;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Sets a default item.
|
|
123
|
-
* @param {string} name - an element name
|
|
124
|
-
* @returns {boolean}
|
|
125
|
-
*/
|
|
126
|
-
setDefItem(name) {
|
|
127
|
-
let isACCEPTED = false;
|
|
128
|
-
if (typeof name === 'string') {
|
|
129
|
-
const _name = name.trim();
|
|
130
|
-
isACCEPTED = this.#_items.has(_name);
|
|
131
|
-
if (isACCEPTED) this.#_defItem = _name;
|
|
132
|
-
};
|
|
133
|
-
return isACCEPTED;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Resets a default item.
|
|
138
|
-
* @returns {void}
|
|
139
|
-
*/
|
|
140
|
-
rstDefItem() {
|
|
141
|
-
// // TODO: check if item is shown
|
|
142
|
-
this.#_defItem = '';
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Checks if an item exists.
|
|
147
|
-
* @param {string} name - an element name
|
|
148
|
-
* @returns {boolean}
|
|
149
|
-
*/
|
|
150
|
-
hasItem(name) {
|
|
151
|
-
const _name = typeof name === 'string' ? name.trim() : '';
|
|
152
|
-
return this.#_items.has(_name);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Checks if any items exists.
|
|
157
|
-
* @returns {boolean}
|
|
158
|
-
*/
|
|
159
|
-
hasItems() {
|
|
160
|
-
return this.#_items.size > 0;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Returns an item by its name.
|
|
165
|
-
* @param {string} name - an element name
|
|
166
|
-
* @returns {?HTMLElement}
|
|
167
|
-
*/
|
|
168
|
-
getItem(name) {
|
|
169
|
-
const _name = typeof name === 'string' ? name.trim() : '';
|
|
170
|
-
const item = this.#_items.has(_name) ? this.#_items.get(_name) : null;
|
|
171
|
-
return isHTMLElement(item) ? item : null;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Adds an item to an instance members.
|
|
176
|
-
* @param {string} name - an element name
|
|
177
|
-
* @param {HTMLElement} item - an element
|
|
178
|
-
* @param {boolean} [opt=false] - flag indicating a force mode
|
|
179
|
-
* @returns {boolean}
|
|
180
|
-
*/
|
|
181
|
-
addItem(name, item, opt) {
|
|
182
|
-
const _name = typeof name === 'string' ? name.trim() : '';
|
|
183
|
-
let isSUCCEED = false;
|
|
184
|
-
if (_name !== '' && isHTMLElement(item)) {
|
|
185
|
-
const force = typeof opt === 'boolean' ? opt : false;
|
|
186
|
-
if (force || !this.#_items.has(_name)) {
|
|
187
|
-
this.#_items.set(_name, item);
|
|
188
|
-
isSUCCEED = true;
|
|
189
|
-
};
|
|
190
|
-
};
|
|
191
|
-
return isSUCCEED;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* Deletes an item from an instance members.
|
|
196
|
-
* @param {string} name - an element name
|
|
197
|
-
* @returns {boolean}
|
|
198
|
-
*/
|
|
199
|
-
delItem(name) {
|
|
200
|
-
let _name = '';
|
|
201
|
-
let isSUCCEED = (
|
|
202
|
-
typeof name === 'string'
|
|
203
|
-
&& ((_name = name.trim()) !== '')
|
|
204
|
-
);
|
|
205
|
-
if (isSUCCEED) {
|
|
206
|
-
this.#_items.delete(_name);
|
|
207
|
-
// // TODO: check if item is shown
|
|
208
|
-
};
|
|
209
|
-
return isSUCCEED;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* Shows an item.
|
|
214
|
-
* @param {string} name - an element name
|
|
215
|
-
* @returns {boolean}
|
|
216
|
-
*/
|
|
217
|
-
showItem(name) {
|
|
218
|
-
const item = this.getItem(name);
|
|
219
|
-
const isSUCCEED = this.#_host && item ? true : false;
|
|
220
|
-
if (isSUCCEED) this.#_host.append(item);
|
|
221
|
-
return isSUCCEED;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
/**
|
|
225
|
-
* Shows a default item.
|
|
226
|
-
* @returns {boolean}
|
|
227
|
-
*/
|
|
228
|
-
showDefItem() {
|
|
229
|
-
return this.showItem(this.#_defItem);
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
/**
|
|
233
|
-
* Hides an item.
|
|
234
|
-
* @param {string} name - an element name
|
|
235
|
-
* @returns {boolean}
|
|
236
|
-
*/
|
|
237
|
-
hideItem(name) {
|
|
238
|
-
const item = this.getItem(name);
|
|
239
|
-
const isSUCCEED = this.#_host && item ? true : false;
|
|
240
|
-
if (isSUCCEED && this.#_host.contains(item)) item.remove();
|
|
241
|
-
return isSUCCEED;
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
/**
|
|
245
|
-
* Hides a default item.
|
|
246
|
-
* @returns {boolean}
|
|
247
|
-
*/
|
|
248
|
-
hideDefItem() {
|
|
249
|
-
return this.hideItem(this.#_defItem);
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
/**
|
|
253
|
-
* Adds an items to an instance members.
|
|
254
|
-
* @param {(Array|OBJ_stubEList)} data - an array of entries or special object
|
|
255
|
-
* @param {(boolean|OPT_ldstubs)} [opt] - an options
|
|
256
|
-
* @returns {number}
|
|
257
|
-
* @todo [since 0.0.25] deprecate use of `opt` as `boolean`
|
|
258
|
-
* @todo [since v0.0.26] for `OPT_ldstubs` a `defaultItem`-option deprecated
|
|
259
|
-
*/
|
|
260
|
-
loadItems(data, opt) {
|
|
261
|
-
/** @type {OBJ_stubEList} */
|
|
262
|
-
let {
|
|
263
|
-
items,
|
|
264
|
-
defaultItem,
|
|
265
|
-
} = isPlainObject(data) ? data : { items: data };
|
|
266
|
-
/** @type {OPT_ldstubs} */
|
|
267
|
-
let _options = isPlainObject(opt) ? opt : { useClear: opt };
|
|
268
|
-
let {
|
|
269
|
-
useClear,
|
|
270
|
-
force,
|
|
271
|
-
} = _options;
|
|
272
|
-
if (typeof useClear !== 'boolean') useClear = true;
|
|
273
|
-
if (typeof force !== 'boolean') force = false;
|
|
274
|
-
if (defaultItem === undefined) defaultItem = _options.defaultItem; /* deprecated */
|
|
275
|
-
const setDefs = defaultItem !== undefined;
|
|
276
|
-
let count = 0;
|
|
277
|
-
if (isArray(items)) {
|
|
278
|
-
if (useClear) this.clear();
|
|
279
|
-
items.forEach((obj) => {
|
|
280
|
-
if (isArray(obj)) {
|
|
281
|
-
const [ name, item ] = obj;
|
|
282
|
-
if (this.addItem(name, item, force)) count++;
|
|
283
|
-
} else if (isPlainObject(obj)) {
|
|
284
|
-
const { name, item } = obj;
|
|
285
|
-
if (this.addItem(name, item, force)) count++;
|
|
286
|
-
};
|
|
287
|
-
});
|
|
288
|
-
};
|
|
289
|
-
if (setDefs && count > 0) this.setDefItem(defaultItem);
|
|
290
|
-
return count;
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
};
|
|
294
|
-
|
|
295
|
-
// === module exports block ===
|
|
296
|
-
|
|
297
|
-
exports.THtmlStubItemsSet = THtmlStubItemsSet;
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
// [v0.1.063-20250220]
|
|
2
|
-
|
|
3
|
-
// === module init block ===
|
|
4
|
-
|
|
5
|
-
const {
|
|
6
|
-
pushEventHandler, triggerEventHandler,
|
|
7
|
-
} = require('../event-hfunc.js');
|
|
8
|
-
|
|
9
|
-
// === module extra block (helper functions) ===
|
|
10
|
-
|
|
11
|
-
// === module main block ===
|
|
12
|
-
|
|
13
|
-
/***
|
|
14
|
-
* (* constant definitions *)
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
/***
|
|
18
|
-
* (* function definitions *)
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* @function readOnClickEventInfo
|
|
23
|
-
* @param {object}
|
|
24
|
-
* @returns {object}
|
|
25
|
-
* @inner
|
|
26
|
-
*/
|
|
27
|
-
function readOnClickEventInfo(e) {
|
|
28
|
-
let item = null;
|
|
29
|
-
const { eventPhase, detail: onClickNum } = e;
|
|
30
|
-
//console.log('CHECK: e => ditail:['+onClickNum+']');
|
|
31
|
-
//console.log('CHECK: e => phase:['+eventPhase+']');
|
|
32
|
-
switch (eventPhase) {
|
|
33
|
-
//*case 1:
|
|
34
|
-
//* // NOTE: currently on eventPhase = 2 and 3
|
|
35
|
-
case 2: {
|
|
36
|
-
/**/// capturing stage
|
|
37
|
-
item = e.target;
|
|
38
|
-
break;
|
|
39
|
-
}
|
|
40
|
-
case 3: {
|
|
41
|
-
/**/// bubblig stage
|
|
42
|
-
item = e.currentTarget;
|
|
43
|
-
break;
|
|
44
|
-
}
|
|
45
|
-
default: {}
|
|
46
|
-
};
|
|
47
|
-
return { item, onClickNum };
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
/***
|
|
51
|
-
* (* class definitions *)
|
|
52
|
-
*/
|
|
53
|
-
|
|
54
|
-
// === module exports block ===
|
|
55
|
-
|
|
56
|
-
exports.readOnClickEventInfo = readOnClickEventInfo;
|
|
57
|
-
|
|
58
|
-
// re-exported
|
|
59
|
-
exports.pushEventHandler = pushEventHandler;
|
|
60
|
-
exports.triggerEventHandler = triggerEventHandler;
|