Skip to content

Commit 63529c6

Browse files
committed
support special case for custom pseudo element selector
1 parent 8187632 commit 63529c6

File tree

3 files changed

+7
-3
lines changed

3 files changed

+7
-3
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## Unreleased
44

5+
- Added support of special case for custom pseudo element selector.
6+
57
## v2.11.4
68

79
- Fixed parsing unclosed attribute selector (such as `a[href`).

parser.d.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ type GetLastTag<I> = I extends `${string}${Combinators}${infer Right}`
1212
: GetLastTag<Right>
1313
: I
1414

15-
type PseudoClassesFirstChar =
15+
type PseudoPrefix =
1616
| 'a'
1717
| 'b'
1818
| 'c'
@@ -31,6 +31,7 @@ type PseudoClassesFirstChar =
3131
| 'u'
3232
| 'v'
3333
| 'w'
34+
| ':-'
3435

3536
type Split<S> = S extends `${string},` // invalid selector
3637
? unknown
@@ -108,9 +109,9 @@ type PostprocessEachUnchecked<I> =
108109
? PostprocessEachUnchecked<`${Tag}&${Rest}`>
109110
: I extends `${infer Tag}#${string}`
110111
? PostprocessEachUnchecked<Tag>
111-
: I extends `${infer Tag}:${PseudoClassesFirstChar}${string}&${infer Rest}`
112+
: I extends `${infer Tag}:${PseudoPrefix}${string}&${infer Rest}`
112113
? PostprocessEachUnchecked<`${Tag}&${Rest}`>
113-
: I extends `${infer Tag}:${PseudoClassesFirstChar}${string}`
114+
: I extends `${infer Tag}:${PseudoPrefix}${string}`
114115
? PostprocessEachUnchecked<Tag>
115116
: I extends `${string}|${infer Tag}` // namespace prefix
116117
? PostprocessEachUnchecked<Tag>

parser.test.ts

+1
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,7 @@ type _Tests = [
357357
>,
358358
Expect<Equal<ParseSelector<':func(arg)'>, Element>>,
359359
Expect<Equal<ParseSelector<'::func(arg)'>, Element>>,
360+
Expect<Equal<ParseSelector<'a::-p-text(Hello)'>, HTMLAnchorElement>>,
360361
]
361362

362363
declare function delegate<

0 commit comments

Comments
 (0)