Skip to content

Commit 0f2dfc4

Browse files
authored
add container query lengths (#366)
1 parent 4d74676 commit 0f2dfc4

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

src/parser/cssParser.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1873,6 +1873,7 @@ export class Parser {
18731873
this.peek(TokenType.Angle) ||
18741874
this.peek(TokenType.Time) ||
18751875
this.peek(TokenType.Dimension) ||
1876+
this.peek(TokenType.ContainerQueryLength) ||
18761877
this.peek(TokenType.Freq)) {
18771878
const node = this.create(nodes.NumericValue);
18781879
this.consumeToken();

src/parser/cssScanner.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ export enum TokenType {
4747
Comment,
4848
SingleLineComment,
4949
EOF,
50-
CustomToken
50+
CustomToken,
51+
ContainerQueryLength
5152
}
5253

5354
export interface IToken {
@@ -212,6 +213,12 @@ staticUnitTable['%'] = TokenType.Percentage;
212213
staticUnitTable['fr'] = TokenType.Percentage;
213214
staticUnitTable['dpi'] = TokenType.Resolution;
214215
staticUnitTable['dpcm'] = TokenType.Resolution;
216+
staticUnitTable['cqw'] = TokenType.ContainerQueryLength;
217+
staticUnitTable['cqh'] = TokenType.ContainerQueryLength;
218+
staticUnitTable['cqi'] = TokenType.ContainerQueryLength;
219+
staticUnitTable['cqb'] = TokenType.ContainerQueryLength;
220+
staticUnitTable['cqmin'] = TokenType.ContainerQueryLength;
221+
staticUnitTable['cqmax'] = TokenType.ContainerQueryLength;
215222

216223
export class Scanner {
217224

src/test/css/parser.test.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,11 @@ suite('CSS - Parser', () => {
177177
assertNode(`@container card (inline-size > 30em) { @container style(--responsive: true) {} }`, parser, parser._parseStylesheet.bind(parser));
178178
});
179179

180+
test('@container query length units', function () {
181+
const parser = new Parser();
182+
assertNode(`@container (min-width: 700px) { .card h2 { font-size: max(1.5em, 1.23em + 2cqi); } }`, parser, parser._parseStylesheet.bind(parser));
183+
});
184+
180185
test('@import', function () {
181186
const parser = new Parser();
182187
assertNode('@import "asdasdsa"', parser, parser._parseImport.bind(parser));

0 commit comments

Comments
 (0)