Skip to content

Commit 19b26dd

Browse files
committed
Update to 1.7.4
1 parent c436ff2 commit 19b26dd

File tree

11 files changed

+231
-90
lines changed

11 files changed

+231
-90
lines changed

CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,22 @@
22

33
Все заметные изменения задокументированы в этом файле.
44

5+
[1.7.4]: https://github.com/digikid/gulp-project/releases/tag/1.7.4
6+
7+
## [1.7.4] - 2022-03-23
8+
9+
### Добавлено
10+
- Параметр `config.context` для расширения контекста fileInclude
11+
- Поддержка аттрибута `multiple` в компоненте Select
12+
- Метод `initHandlers` доступен для всех компонентов
13+
14+
### Исправлено
15+
- Отображение чекбоксов в компоненте Select
16+
- Ошибка сборки rollup при импорте CommonJS модулей
17+
18+
### Обновлено
19+
- Обновление списка зависимостей и устранение уязвимостей
20+
521
[1.7.3]: https://github.com/digikid/gulp-project/releases/tag/1.7.3
622

723
## [1.7.3] - 2022-03-16

gulp/boilerplate/js/components/component.js

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,14 @@ export default class Component {
1616

1717
const options = mergeDeep({}, defaults, params);
1818
const target = this.getTarget(selector);
19+
const handlers = {};
1920

2021
this.title = title;
2122
this.selector = selector;
2223
this.defaults = defaults;
2324
this.params = params;
2425
this.options = options;
26+
this.handlers = handlers;
2527
this.target = target;
2628
this.warning = warning;
2729
};
@@ -92,7 +94,33 @@ export default class Component {
9294
});
9395
};
9496

95-
getTarget(selector) {
97+
initHandlers() {
98+
const _that = this;
99+
100+
const { parseDataSelector, handlers } = this;
101+
102+
const outside = ['document', 'body', 'html', 'outside'];
103+
104+
Object.entries(handlers).forEach(([type, handlers]) => {
105+
Object.entries(handlers).forEach(([id, handler]) => {
106+
if (typeof handler !== 'function') {
107+
return;
108+
};
109+
110+
const { selector } = parseDataSelector(id);
111+
112+
const cb = async function(e) {
113+
await handler.call(_that, e);
114+
};
115+
116+
const params = outside.includes(id) ? [type, cb] : [type, selector, cb];
117+
118+
$(document).on(...params);
119+
});
120+
});
121+
};
122+
123+
getTarget = selector => {
96124
if (typeof selector === 'string') {
97125
return Array.from(document.querySelectorAll(selector));
98126
};
@@ -112,9 +140,20 @@ export default class Component {
112140
return [];
113141
};
114142

143+
getDataSelector = selector => {
144+
const { getTarget } = this;
145+
146+
const target = getTarget(selector);
147+
const dataKeys = Object.keys(target[0].dataset);
148+
const data = dataKeys.length ? `[data-${dataKeys[0]}]` : null;
149+
150+
return data;
151+
};
152+
115153
parseDataSelector = id => {
116-
const { selector: s } = this;
154+
const { selector: _selector, getDataSelector } = this;
117155

156+
const s = (typeof _selector === 'string') ? _selector : getDataSelector(_selector);
118157
const reg = /\[|\]|data-/gi;
119158

120159
if ((typeof s === 'string') && reg.test(s)) {

0 commit comments

Comments
 (0)