Skip to content

Commit 432e97e

Browse files
committed
Fixed selectors starting by '>' and '+'
1 parent dd193fc commit 432e97e

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@ulyssear/css-in-js-in-html",
3-
"version": "0.1.3",
3+
"version": "0.1.4",
44
"description": "",
55
"main": "index.js",
66
"scripts": {

src/index.js

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@ function apply_custom_class(element, className) {
269269
}
270270

271271
function do_apply(element, selectors, classes, events, media_query, original_class) {
272+
// console.log({element,selectors,classes,original_class})
272273
if (media_query) {
273274
if ('(' !== media_query[0]) {
274275
media_query = `(${media_query})`;
@@ -288,7 +289,7 @@ function do_apply(element, selectors, classes, events, media_query, original_cla
288289
for (let j = 0; j < selectors.length; j++) {
289290
const selector = selectors[j];
290291
if (typeof selector === 'object') {
291-
const { tag } = selector;
292+
const { tag, selectors: _selectors } = selector;
292293
if (tag === 'lookout') {
293294
let before_to_apply = [];
294295
let after_to_apply = [];
@@ -318,13 +319,25 @@ function do_apply(element, selectors, classes, events, media_query, original_cla
318319
}
319320
}
320321
}
321-
if ('>' === tag && selector.selectors) {
322-
const { selectors } = selector;
322+
// For each children within children of element matching selector
323+
if ('>' === tag && _selectors) {
324+
// console.log({tag, _selectors, children: element.children})
323325
for (let k = 0; k < element.children.length; k++) {
324326
const child = element.children[k];
325-
do_apply(child, selectors, classes, events, media_query);
327+
if (!child.matches(_selectors)) continue;
328+
// if ('>' === tag) console.log({_selectors, child, classes})
329+
do_apply(child, null, classes, events, media_query);
326330
}
327331
}
332+
//
333+
// Next sibling of element matching selector
334+
if ('+' === tag && _selectors) {
335+
const { selectors } = selector;
336+
const { nextElementSibling } = element;
337+
if (!nextElementSibling) continue;
338+
if (!nextElementSibling.matches(selectors)) continue;
339+
do_apply(nextElementSibling, null, classes, events, media_query);
340+
}
328341
continue;
329342
}
330343
const elements = element.querySelectorAll(selector);
@@ -376,7 +389,7 @@ function do_apply(element, selectors, classes, events, media_query, original_cla
376389
}
377390

378391
function init(document, event = undefined) {
379-
const tag_console = `init : ${event ? `(${event.type})` : ''}`;
392+
// const tag_console = `init : ${event ? `(${event.type})` : ''}`;
380393
// console.time(tag_console);
381394
// console.log(event?.type);
382395

@@ -401,6 +414,13 @@ function init(document, event = undefined) {
401414

402415
// console.timeEnd(tag_console);
403416

417+
for (let i = 0; i < elements.length; i++) {
418+
const element = elements[i];
419+
if (0 === element.className.length) {
420+
element.removeAttribute('class');
421+
}
422+
}
423+
404424
document.documentElement.removeAttribute('aria-busy');
405425
}
406426

0 commit comments

Comments
 (0)