Skip to content

Commit 9f181f3

Browse files
committed
fix(StyleUrlResolver): add support for media query in import rules
1 parent 4d8d17c commit 9f181f3

File tree

2 files changed

+48
-14
lines changed

2 files changed

+48
-14
lines changed

modules/angular2/src/core/compiler/style_url_resolver.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,5 @@ export class StyleUrlResolver {
3434
}
3535

3636
var _cssUrlRe = RegExpWrapper.create('(url\\()([^)]*)(\\))');
37-
// TODO(vicb): handle the media query part
38-
var _cssImportRe = RegExpWrapper.create('(@import[\\s]+(?!url\\())([^;]*)(;)');
37+
var _cssImportRe = RegExpWrapper.create('(@import[\\s]+(?!url\\())[\'"]([^\'"]*)[\'"](.*;)');
3938
var _quoteRe = RegExpWrapper.create('[\'"]');

modules/angular2/test/core/compiler/style_url_resolver_spec.js

Lines changed: 47 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,32 +5,67 @@ import {UrlResolver} from 'angular2/src/core/compiler/url_resolver';
55

66
export function main() {
77
describe('StyleUrlResolver', () => {
8-
it('should resolve urls', () => {
8+
it('should resolve "url()" urls', () => {
99
var styleUrlResolver = new StyleUrlResolver(new FakeUrlResolver());
1010
var css = `
11-
@import '1.css';
12-
@import "2.css";
13-
@import url('3.css');
14-
@import url("4.css");
15-
@import url(5.css);
16-
1711
.foo {
1812
background-image: url("double.jpg");
1913
background-image: url('simple.jpg');
2014
background-image: url(noquote.jpg);
2115
}`;
2216
var expectedCss = `
17+
.foo {
18+
background-image: url('base/double.jpg');
19+
background-image: url('base/simple.jpg');
20+
background-image: url('base/noquote.jpg');
21+
}`;
22+
23+
var resolvedCss = styleUrlResolver.resolveUrls(css, 'base');
24+
expect(resolvedCss).toEqual(expectedCss);
25+
});
26+
27+
it('should resolve "@import" urls', () => {
28+
var styleUrlResolver = new StyleUrlResolver(new FakeUrlResolver());
29+
var css = `
30+
@import '1.css';
31+
@import "2.css";
32+
`;
33+
var expectedCss = `
2334
@import 'base/1.css';
2435
@import 'base/2.css';
36+
`;
37+
38+
var resolvedCss = styleUrlResolver.resolveUrls(css, 'base');
39+
expect(resolvedCss).toEqual(expectedCss);
40+
});
41+
42+
it('should resolve "@import url()" urls', () => {
43+
var styleUrlResolver = new StyleUrlResolver(new FakeUrlResolver());
44+
var css = `
45+
@import url('3.css');
46+
@import url("4.css");
47+
@import url(5.css);
48+
`;
49+
var expectedCss = `
2550
@import url('base/3.css');
2651
@import url('base/4.css');
2752
@import url('base/5.css');
53+
`;
2854

29-
.foo {
30-
background-image: url('base/double.jpg');
31-
background-image: url('base/simple.jpg');
32-
background-image: url('base/noquote.jpg');
33-
}`;
55+
var resolvedCss = styleUrlResolver.resolveUrls(css, 'base');
56+
expect(resolvedCss).toEqual(expectedCss);
57+
});
58+
59+
it('should support media query in "@import"', () => {
60+
var styleUrlResolver = new StyleUrlResolver(new FakeUrlResolver());
61+
var css = `
62+
@import 'print.css' print;
63+
@import url(print.css) print;
64+
`;
65+
var expectedCss = `
66+
@import 'base/print.css' print;
67+
@import url('base/print.css') print;
68+
`;
3469

3570
var resolvedCss = styleUrlResolver.resolveUrls(css, 'base');
3671
expect(resolvedCss).toEqual(expectedCss);

0 commit comments

Comments
 (0)