@skyux/icon 10.32.0 → 10.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/documentation.json +26 -26
- package/esm2022/lib/icon/icon-svg-resolver.service.mjs +84 -0
- package/esm2022/lib/icon/icon-svg.component.mjs +43 -0
- package/esm2022/lib/icon/icon.component.mjs +7 -4
- package/esm2022/lib/icon/icon.module.mjs +8 -4
- package/fesm2022/skyux-icon.mjs +130 -7
- package/fesm2022/skyux-icon.mjs.map +1 -1
- package/lib/icon/icon-svg-resolver.service.d.ts +12 -0
- package/lib/icon/icon-svg.component.d.ts +14 -0
- package/lib/icon/icon.component.d.ts +6 -1
- package/lib/icon/icon.module.d.ts +2 -1
- package/package.json +3 -3
package/documentation.json
CHANGED
|
@@ -30,16 +30,16 @@
|
|
|
30
30
|
"sources": [
|
|
31
31
|
{
|
|
32
32
|
"fileName": "projects/icon/src/icon/icon.module.ts",
|
|
33
|
-
"line":
|
|
33
|
+
"line": 17,
|
|
34
34
|
"character": 13,
|
|
35
|
-
"url": "https://github.com/blackbaud/skyux/blob/
|
|
35
|
+
"url": "https://github.com/blackbaud/skyux/blob/febfde3/libs/components/icon/src/lib/icon/icon.module.ts#L17"
|
|
36
36
|
}
|
|
37
37
|
],
|
|
38
38
|
"decorators": [
|
|
39
39
|
{
|
|
40
40
|
"name": "NgModule",
|
|
41
41
|
"arguments": {
|
|
42
|
-
"obj": "@NgModule({\n declarations: [SkyIconClassListPipe, SkyIconComponent, SkyIconStackComponent],\n imports: [CommonModule],\n exports: [SkyIconComponent, SkyIconStackComponent],\n})"
|
|
42
|
+
"obj": "@NgModule({\n declarations: [SkyIconClassListPipe, SkyIconComponent, SkyIconStackComponent],\n imports: [CommonModule, SkyIconSvgComponent],\n exports: [SkyIconComponent, SkyIconStackComponent],\n providers: [provideHttpClient(withFetch()), SkyIconSvgResolverService],\n})"
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
]
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"flags": {},
|
|
53
53
|
"children": [
|
|
54
54
|
{
|
|
55
|
-
"id":
|
|
55
|
+
"id": 16,
|
|
56
56
|
"name": "fixedWidth",
|
|
57
57
|
"variant": "declaration",
|
|
58
58
|
"kind": 1024,
|
|
@@ -81,9 +81,9 @@
|
|
|
81
81
|
"sources": [
|
|
82
82
|
{
|
|
83
83
|
"fileName": "projects/icon/src/icon/icon.component.ts",
|
|
84
|
-
"line":
|
|
84
|
+
"line": 59,
|
|
85
85
|
"character": 9,
|
|
86
|
-
"url": "https://github.com/blackbaud/skyux/blob/
|
|
86
|
+
"url": "https://github.com/blackbaud/skyux/blob/febfde3/libs/components/icon/src/lib/icon/icon.component.ts#L59"
|
|
87
87
|
}
|
|
88
88
|
],
|
|
89
89
|
"type": {
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
"fileName": "projects/icon/src/icon/icon.component.ts",
|
|
132
132
|
"line": 26,
|
|
133
133
|
"character": 9,
|
|
134
|
-
"url": "https://github.com/blackbaud/skyux/blob/
|
|
134
|
+
"url": "https://github.com/blackbaud/skyux/blob/febfde3/libs/components/icon/src/lib/icon/icon.component.ts#L26"
|
|
135
135
|
}
|
|
136
136
|
],
|
|
137
137
|
"type": {
|
|
@@ -145,7 +145,7 @@
|
|
|
145
145
|
]
|
|
146
146
|
},
|
|
147
147
|
{
|
|
148
|
-
"id":
|
|
148
|
+
"id": 14,
|
|
149
149
|
"name": "iconType",
|
|
150
150
|
"variant": "declaration",
|
|
151
151
|
"kind": 1024,
|
|
@@ -199,9 +199,9 @@
|
|
|
199
199
|
"sources": [
|
|
200
200
|
{
|
|
201
201
|
"fileName": "projects/icon/src/icon/icon.component.ts",
|
|
202
|
-
"line":
|
|
202
|
+
"line": 43,
|
|
203
203
|
"character": 9,
|
|
204
|
-
"url": "https://github.com/blackbaud/skyux/blob/
|
|
204
|
+
"url": "https://github.com/blackbaud/skyux/blob/febfde3/libs/components/icon/src/lib/icon/icon.component.ts#L43"
|
|
205
205
|
}
|
|
206
206
|
],
|
|
207
207
|
"type": {
|
|
@@ -217,7 +217,7 @@
|
|
|
217
217
|
]
|
|
218
218
|
},
|
|
219
219
|
{
|
|
220
|
-
"id":
|
|
220
|
+
"id": 15,
|
|
221
221
|
"name": "size",
|
|
222
222
|
"variant": "declaration",
|
|
223
223
|
"kind": 1024,
|
|
@@ -243,9 +243,9 @@
|
|
|
243
243
|
"sources": [
|
|
244
244
|
{
|
|
245
245
|
"fileName": "projects/icon/src/icon/icon.component.ts",
|
|
246
|
-
"line":
|
|
246
|
+
"line": 50,
|
|
247
247
|
"character": 9,
|
|
248
|
-
"url": "https://github.com/blackbaud/skyux/blob/
|
|
248
|
+
"url": "https://github.com/blackbaud/skyux/blob/febfde3/libs/components/icon/src/lib/icon/icon.component.ts#L50"
|
|
249
249
|
}
|
|
250
250
|
],
|
|
251
251
|
"type": {
|
|
@@ -259,7 +259,7 @@
|
|
|
259
259
|
]
|
|
260
260
|
},
|
|
261
261
|
{
|
|
262
|
-
"id":
|
|
262
|
+
"id": 17,
|
|
263
263
|
"name": "variant",
|
|
264
264
|
"variant": "declaration",
|
|
265
265
|
"kind": 1024,
|
|
@@ -277,9 +277,9 @@
|
|
|
277
277
|
"sources": [
|
|
278
278
|
{
|
|
279
279
|
"fileName": "projects/icon/src/icon/icon.component.ts",
|
|
280
|
-
"line":
|
|
280
|
+
"line": 66,
|
|
281
281
|
"character": 9,
|
|
282
|
-
"url": "https://github.com/blackbaud/skyux/blob/
|
|
282
|
+
"url": "https://github.com/blackbaud/skyux/blob/febfde3/libs/components/icon/src/lib/icon/icon.component.ts#L66"
|
|
283
283
|
}
|
|
284
284
|
],
|
|
285
285
|
"type": {
|
|
@@ -305,11 +305,11 @@
|
|
|
305
305
|
{
|
|
306
306
|
"title": "Properties",
|
|
307
307
|
"children": [
|
|
308
|
-
|
|
308
|
+
16,
|
|
309
309
|
12,
|
|
310
|
-
13,
|
|
311
310
|
14,
|
|
312
|
-
|
|
311
|
+
15,
|
|
312
|
+
17
|
|
313
313
|
]
|
|
314
314
|
}
|
|
315
315
|
],
|
|
@@ -318,7 +318,7 @@
|
|
|
318
318
|
"fileName": "projects/icon/src/icon/icon.component.ts",
|
|
319
319
|
"line": 18,
|
|
320
320
|
"character": 13,
|
|
321
|
-
"url": "https://github.com/blackbaud/skyux/blob/
|
|
321
|
+
"url": "https://github.com/blackbaud/skyux/blob/febfde3/libs/components/icon/src/lib/icon/icon.component.ts#L18"
|
|
322
322
|
}
|
|
323
323
|
],
|
|
324
324
|
"decorators": [
|
|
@@ -350,7 +350,7 @@
|
|
|
350
350
|
"fileName": "projects/icon/src/icon/types/icon-type.ts",
|
|
351
351
|
"line": 4,
|
|
352
352
|
"character": 12,
|
|
353
|
-
"url": "https://github.com/blackbaud/skyux/blob/
|
|
353
|
+
"url": "https://github.com/blackbaud/skyux/blob/febfde3/libs/components/icon/src/lib/icon/types/icon-type.ts#L4"
|
|
354
354
|
}
|
|
355
355
|
],
|
|
356
356
|
"type": {
|
|
@@ -378,7 +378,7 @@
|
|
|
378
378
|
"fileName": "projects/icon/src/icon/types/icon-variant-type.ts",
|
|
379
379
|
"line": 1,
|
|
380
380
|
"character": 12,
|
|
381
|
-
"url": "https://github.com/blackbaud/skyux/blob/
|
|
381
|
+
"url": "https://github.com/blackbaud/skyux/blob/febfde3/libs/components/icon/src/lib/icon/types/icon-variant-type.ts#L1"
|
|
382
382
|
}
|
|
383
383
|
],
|
|
384
384
|
"type": {
|
|
@@ -444,19 +444,19 @@
|
|
|
444
444
|
"sourceFileName": "libs/components/icon/src/lib/icon/icon.component.ts",
|
|
445
445
|
"qualifiedName": "SkyIconComponent.icon"
|
|
446
446
|
},
|
|
447
|
-
"
|
|
447
|
+
"14": {
|
|
448
448
|
"sourceFileName": "libs/components/icon/src/lib/icon/icon.component.ts",
|
|
449
449
|
"qualifiedName": "SkyIconComponent.iconType"
|
|
450
450
|
},
|
|
451
|
-
"
|
|
451
|
+
"15": {
|
|
452
452
|
"sourceFileName": "libs/components/icon/src/lib/icon/icon.component.ts",
|
|
453
453
|
"qualifiedName": "SkyIconComponent.size"
|
|
454
454
|
},
|
|
455
|
-
"
|
|
455
|
+
"16": {
|
|
456
456
|
"sourceFileName": "libs/components/icon/src/lib/icon/icon.component.ts",
|
|
457
457
|
"qualifiedName": "SkyIconComponent.fixedWidth"
|
|
458
458
|
},
|
|
459
|
-
"
|
|
459
|
+
"17": {
|
|
460
460
|
"sourceFileName": "libs/components/icon/src/lib/icon/icon.component.ts",
|
|
461
461
|
"qualifiedName": "SkyIconComponent.variant"
|
|
462
462
|
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { Injectable, inject } from '@angular/core';
|
|
3
|
+
import { map, shareReplay, tap } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
function insertSprite(markup) {
|
|
6
|
+
document.body.insertAdjacentHTML('afterbegin', markup);
|
|
7
|
+
}
|
|
8
|
+
function getIconsSizes() {
|
|
9
|
+
const iconsSizes = Array.from(document.querySelectorAll('#sky-icon-svg-sprite symbol')).reduce((map, el) => {
|
|
10
|
+
const idParts = el.id.split('-');
|
|
11
|
+
// Construct the icon name by removing `sky-i-` from the beginning
|
|
12
|
+
// and `-<size>-<variant>` from the end.
|
|
13
|
+
const name = idParts.slice(2, idParts.length - 2).join('-');
|
|
14
|
+
let sizes = map.get(name);
|
|
15
|
+
if (!sizes) {
|
|
16
|
+
sizes = [];
|
|
17
|
+
map.set(name, sizes);
|
|
18
|
+
}
|
|
19
|
+
// The penultimate segment is the size for which the icon has
|
|
20
|
+
// been optimized.
|
|
21
|
+
sizes.push(+idParts[idParts.length - 2]);
|
|
22
|
+
return map;
|
|
23
|
+
}, new Map());
|
|
24
|
+
// Sort all the sizes for later comparison.
|
|
25
|
+
for (const id of iconsSizes.keys()) {
|
|
26
|
+
// Dedupe and sort the icon sizes.
|
|
27
|
+
iconsSizes.set(id, [...new Set(iconsSizes.get(id))].sort());
|
|
28
|
+
}
|
|
29
|
+
return iconsSizes;
|
|
30
|
+
}
|
|
31
|
+
function getNearestSize(iconsSizes, name, pixelSize) {
|
|
32
|
+
const sizes = iconsSizes.get(name);
|
|
33
|
+
if (sizes) {
|
|
34
|
+
let nearestSizeUnder = -Infinity;
|
|
35
|
+
let nearestSizeOver = Infinity;
|
|
36
|
+
for (const availableSize of sizes) {
|
|
37
|
+
if (availableSize === pixelSize) {
|
|
38
|
+
return pixelSize;
|
|
39
|
+
}
|
|
40
|
+
else if (availableSize < pixelSize) {
|
|
41
|
+
nearestSizeUnder = availableSize;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
nearestSizeOver = availableSize;
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const underDiff = Math.abs(pixelSize - nearestSizeUnder);
|
|
49
|
+
const overDiff = Math.abs(pixelSize - nearestSizeOver);
|
|
50
|
+
return isNaN(overDiff) || underDiff < overDiff
|
|
51
|
+
? nearestSizeUnder
|
|
52
|
+
: nearestSizeOver;
|
|
53
|
+
}
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
export class SkyIconSvgResolverService {
|
|
60
|
+
#http = inject(HttpClient);
|
|
61
|
+
#spriteObs = this.#http
|
|
62
|
+
.get(`https://sky.blackbaudcdn.net/static/skyux-icons/7/assets/svg/skyux-icons.svg`, {
|
|
63
|
+
responseType: 'text',
|
|
64
|
+
})
|
|
65
|
+
.pipe(tap(insertSprite), map(getIconsSizes), shareReplay(1));
|
|
66
|
+
resolveHref(name, pixelSize = 16, variant = 'line') {
|
|
67
|
+
return this.#spriteObs.pipe(map((iconsSizes) => {
|
|
68
|
+
let href = `#sky-i-${name}`;
|
|
69
|
+
// Find the icon with the optimal size nearest to the requested size.
|
|
70
|
+
const nearestSize = getNearestSize(iconsSizes, name, pixelSize);
|
|
71
|
+
if (!nearestSize) {
|
|
72
|
+
throw new Error(`Icon with name '${name}' was not found.`);
|
|
73
|
+
}
|
|
74
|
+
href = `${href}-${nearestSize}-${variant}`;
|
|
75
|
+
return href;
|
|
76
|
+
}));
|
|
77
|
+
}
|
|
78
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconSvgResolverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
79
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconSvgResolverService }); }
|
|
80
|
+
}
|
|
81
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconSvgResolverService, decorators: [{
|
|
82
|
+
type: Injectable
|
|
83
|
+
}] });
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1zdmctcmVzb2x2ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pY29uL3NyYy9saWIvaWNvbi9pY29uLXN2Zy1yZXNvbHZlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQWMsR0FBRyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSXpELFNBQVMsWUFBWSxDQUFDLE1BQWM7SUFDbEMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDekQsQ0FBQztBQUVELFNBQVMsYUFBYTtJQUNwQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUMzQixRQUFRLENBQUMsZ0JBQWdCLENBQUMsNkJBQTZCLENBQUMsQ0FDekQsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDbkIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFakMsa0VBQWtFO1FBQ2xFLHdDQUF3QztRQUN4QyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU1RCxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTFCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLEtBQUssR0FBRyxFQUFFLENBQUM7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Q0FBQztZQUM3RCxDQUFDO1lBRUQsSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLFdBQVcsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUUzQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzhHQWpDVSx5QkFBeUI7a0hBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgbWFwLCBzaGFyZVJlcGxheSwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreUljb25WYXJpYW50VHlwZSB9IGZyb20gJy4vdHlwZXMvaWNvbi12YXJpYW50LXR5cGUnO1xuXG5mdW5jdGlvbiBpbnNlcnRTcHJpdGUobWFya3VwOiBzdHJpbmcpOiB2b2lkIHtcbiAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyYmVnaW4nLCBtYXJrdXApO1xufVxuXG5mdW5jdGlvbiBnZXRJY29uc1NpemVzKCk6IE1hcDxzdHJpbmcsIG51bWJlcltdPiB7XG4gIGNvbnN0IGljb25zU2l6ZXMgPSBBcnJheS5mcm9tPFNWR1N5bWJvbEVsZW1lbnQ+KFxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNza3ktaWNvbi1zdmctc3ByaXRlIHN5bWJvbCcpLFxuICApLnJlZHVjZSgobWFwLCBlbCkgPT4ge1xuICAgIGNvbnN0IGlkUGFydHMgPSBlbC5pZC5zcGxpdCgnLScpO1xuXG4gICAgLy8gQ29uc3RydWN0IHRoZSBpY29uIG5hbWUgYnkgcmVtb3ZpbmcgYHNreS1pLWAgZnJvbSB0aGUgYmVnaW5uaW5nXG4gICAgLy8gYW5kIGAtPHNpemU+LTx2YXJpYW50PmAgZnJvbSB0aGUgZW5kLlxuICAgIGNvbnN0IG5hbWUgPSBpZFBhcnRzLnNsaWNlKDIsIGlkUGFydHMubGVuZ3RoIC0gMikuam9pbignLScpO1xuXG4gICAgbGV0IHNpemVzID0gbWFwLmdldChuYW1lKTtcblxuICAgIGlmICghc2l6ZXMpIHtcbiAgICAgIHNpemVzID0gW107XG4gICAgICBtYXAuc2V0KG5hbWUsIHNpemVzKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgcGVudWx0aW1hdGUgc2VnbWVudCBpcyB0aGUgc2l6ZSBmb3Igd2hpY2ggdGhlIGljb24gaGFzXG4gICAgLy8gYmVlbiBvcHRpbWl6ZWQuXG4gICAgc2l6ZXMucHVzaCgraWRQYXJ0c1tpZFBhcnRzLmxlbmd0aCAtIDJdKTtcblxuICAgIHJldHVybiBtYXA7XG4gIH0sIG5ldyBNYXA8c3RyaW5nLCBudW1iZXJbXT4oKSk7XG5cbiAgLy8gU29ydCBhbGwgdGhlIHNpemVzIGZvciBsYXRlciBjb21wYXJpc29uLlxuICBmb3IgKGNvbnN0IGlkIG9mIGljb25zU2l6ZXMua2V5cygpKSB7XG4gICAgLy8gRGVkdXBlIGFuZCBzb3J0IHRoZSBpY29uIHNpemVzLlxuICAgIGljb25zU2l6ZXMuc2V0KGlkLCBbLi4ubmV3IFNldChpY29uc1NpemVzLmdldChpZCkpXS5zb3J0KCkpO1xuICB9XG5cbiAgcmV0dXJuIGljb25zU2l6ZXM7XG59XG5cbmZ1bmN0aW9uIGdldE5lYXJlc3RTaXplKFxuICBpY29uc1NpemVzOiBNYXA8c3RyaW5nLCBudW1iZXJbXT4sXG4gIG5hbWU6IHN0cmluZyxcbiAgcGl4ZWxTaXplOiBudW1iZXIsXG4pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCBzaXplcyA9IGljb25zU2l6ZXMuZ2V0KG5hbWUpO1xuXG4gIGlmIChzaXplcykge1xuICAgIGxldCBuZWFyZXN0U2l6ZVVuZGVyID0gLUluZmluaXR5O1xuICAgIGxldCBuZWFyZXN0U2l6ZU92ZXIgPSBJbmZpbml0eTtcblxuICAgIGZvciAoY29uc3QgYXZhaWxhYmxlU2l6ZSBvZiBzaXplcykge1xuICAgICAgaWYgKGF2YWlsYWJsZVNpemUgPT09IHBpeGVsU2l6ZSkge1xuICAgICAgICByZXR1cm4gcGl4ZWxTaXplO1xuICAgICAgfSBlbHNlIGlmIChhdmFpbGFibGVTaXplIDwgcGl4ZWxTaXplKSB7XG4gICAgICAgIG5lYXJlc3RTaXplVW5kZXIgPSBhdmFpbGFibGVTaXplO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmVhcmVzdFNpemVPdmVyID0gYXZhaWxhYmxlU2l6ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdW5kZXJEaWZmID0gTWF0aC5hYnMocGl4ZWxTaXplIC0gbmVhcmVzdFNpemVVbmRlcik7XG4gICAgY29uc3Qgb3ZlckRpZmYgPSBNYXRoLmFicyhwaXhlbFNpemUgLSBuZWFyZXN0U2l6ZU92ZXIpO1xuXG4gICAgcmV0dXJuIGlzTmFOKG92ZXJEaWZmKSB8fCB1bmRlckRpZmYgPCBvdmVyRGlmZlxuICAgICAgPyBuZWFyZXN0U2l6ZVVuZGVyXG4gICAgICA6IG5lYXJlc3RTaXplT3ZlcjtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lJY29uU3ZnUmVzb2x2ZXJTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgI2h0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG5cbiAgcmVhZG9ubHkgI3Nwcml0ZU9icyA9IHRoaXMuI2h0dHBcbiAgICAuZ2V0KFxuICAgICAgYGh0dHBzOi8vc2t5LmJsYWNrYmF1ZGNkbi5uZXQvc3RhdGljL3NreXV4LWljb25zLzcvYXNzZXRzL3N2Zy9za3l1eC1pY29ucy5zdmdgLFxuICAgICAge1xuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgIH0sXG4gICAgKVxuICAgIC5waXBlKHRhcChpbnNlcnRTcHJpdGUpLCBtYXAoZ2V0SWNvbnNTaXplcyksIHNoYXJlUmVwbGF5KDEpKTtcblxuICBwdWJsaWMgcmVzb2x2ZUhyZWYoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHBpeGVsU2l6ZSA9IDE2LFxuICAgIHZhcmlhbnQ6IFNreUljb25WYXJpYW50VHlwZSA9ICdsaW5lJyxcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy4jc3ByaXRlT2JzLnBpcGUoXG4gICAgICBtYXAoKGljb25zU2l6ZXMpID0+IHtcbiAgICAgICAgbGV0IGhyZWYgPSBgI3NreS1pLSR7bmFtZX1gO1xuXG4gICAgICAgIC8vIEZpbmQgdGhlIGljb24gd2l0aCB0aGUgb3B0aW1hbCBzaXplIG5lYXJlc3QgdG8gdGhlIHJlcXVlc3RlZCBzaXplLlxuICAgICAgICBjb25zdCBuZWFyZXN0U2l6ZSA9IGdldE5lYXJlc3RTaXplKGljb25zU2l6ZXMsIG5hbWUsIHBpeGVsU2l6ZSk7XG5cbiAgICAgICAgaWYgKCFuZWFyZXN0U2l6ZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSWNvbiB3aXRoIG5hbWUgJyR7bmFtZX0nIHdhcyBub3QgZm91bmQuYCk7XG4gICAgICAgIH1cblxuICAgICAgICBocmVmID0gYCR7aHJlZn0tJHtuZWFyZXN0U2l6ZX0tJHt2YXJpYW50fWA7XG5cbiAgICAgICAgcmV0dXJuIGhyZWY7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { NgClass, NgStyle } from '@angular/common';
|
|
2
|
+
import { Component, computed, inject, input } from '@angular/core';
|
|
3
|
+
import { toObservable, toSignal } from '@angular/core/rxjs-interop';
|
|
4
|
+
import { catchError, of, switchMap } from 'rxjs';
|
|
5
|
+
import { SkyIconSvgResolverService } from './icon-svg-resolver.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
const SIZE_BASE = 16;
|
|
8
|
+
const SIZES = new Map([
|
|
9
|
+
['', SIZE_BASE],
|
|
10
|
+
['lg', 21.333 /* SIZE_BASE * (4/3) */],
|
|
11
|
+
['2x', 32 /* SIZE_BASE * 2 */],
|
|
12
|
+
['3x', 48 /* SIZE_BASE * 3 */],
|
|
13
|
+
['4x', 64 /* SIZE_BASE * 4 */],
|
|
14
|
+
['5x', 80 /* SIZE_BASE * 5 */],
|
|
15
|
+
]);
|
|
16
|
+
/**
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
export class SkyIconSvgComponent {
|
|
20
|
+
constructor() {
|
|
21
|
+
this.#resolverSvc = inject(SkyIconSvgResolverService);
|
|
22
|
+
this.iconName = input.required();
|
|
23
|
+
this.iconSize = input();
|
|
24
|
+
this.iconVariant = input();
|
|
25
|
+
this.#iconInfo = computed(() => {
|
|
26
|
+
return {
|
|
27
|
+
src: this.iconName(),
|
|
28
|
+
size: this.iconSize(),
|
|
29
|
+
variant: this.iconVariant(),
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
this.iconHref = toSignal(toObservable(this.#iconInfo).pipe(switchMap((info) => this.#resolverSvc.resolveHref(info.src, SIZES.get(info.size ?? ''), info.variant)), catchError(() => of(''))));
|
|
33
|
+
}
|
|
34
|
+
#resolverSvc;
|
|
35
|
+
#iconInfo;
|
|
36
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconSvgComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.4", type: SkyIconSvgComponent, isStandalone: true, selector: "sky-icon-svg", inputs: { iconName: { classPropertyName: "iconName", publicName: "iconName", isSignal: true, isRequired: true, transformFunction: null }, iconSize: { classPropertyName: "iconSize", publicName: "iconSize", isSignal: true, isRequired: false, transformFunction: null }, iconVariant: { classPropertyName: "iconVariant", publicName: "iconVariant", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<svg\n aria-hidden=\"true\"\n class=\"sky-icon-svg-img\"\n [ngClass]=\"iconSize() && 'sky-icon-svg-img-' + iconSize()\"\n>\n <use [attr.xlink:href]=\"iconHref()\"></use>\n</svg>\n", styles: [":host{display:inline-block;--sky-icon-svg-img-size: 1em;--sky-icon-svg-img-top: .15em}.sky-icon-svg-img{display:inline-block;fill:var(--sky-icon-svg-color-input, currentColor);height:var(--sky-icon-svg-img-size);width:var(--sky-icon-svg-img-size);text-align:center;position:relative;top:var(--sky-icon-svg-img-top)}.sky-icon-svg-img-lg{--sky-icon-svg-img-size: 1.333em;--sky-icon-svg-img-top: .2em}.sky-icon-svg-img-2x{--sky-icon-svg-img-size: 2em;--sky-icon-svg-img-top: .3em}.sky-icon-svg-img-3x{--sky-icon-svg-img-size: 3em;--sky-icon-svg-img-top: .45em}.sky-icon-svg-img-4x{--sky-icon-svg-img-size: 4em;--sky-icon-svg-img-top: .6em}.sky-icon-svg-img-5x{--sky-icon-svg-img-size: 5em;--sky-icon-svg-img-top: .75em}\n", ":host{display:inline-block;--sky-icon-svg-img-size: 1em;--sky-icon-svg-img-top: .15em}.sky-icon-svg-img{display:inline-block;fill:var(--sky-icon-svg-color-input, currentColor);height:var(--sky-icon-svg-img-size);width:var(--sky-icon-svg-img-size);text-align:center;position:relative;top:var(--sky-icon-svg-img-top)}.sky-icon-svg-img-lg{--sky-icon-svg-img-size: 1.333em;--sky-icon-svg-img-top: .2em}.sky-icon-svg-img-2x{--sky-icon-svg-img-size: 2em;--sky-icon-svg-img-top: .3em}.sky-icon-svg-img-3x{--sky-icon-svg-img-size: 3em;--sky-icon-svg-img-top: .45em}.sky-icon-svg-img-4x{--sky-icon-svg-img-size: 4em;--sky-icon-svg-img-top: .6em}.sky-icon-svg-img-5x{--sky-icon-svg-img-size: 5em;--sky-icon-svg-img-top: .75em}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
38
|
+
}
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconSvgComponent, decorators: [{
|
|
40
|
+
type: Component,
|
|
41
|
+
args: [{ selector: 'sky-icon-svg', standalone: true, imports: [NgClass, NgStyle], template: "<svg\n aria-hidden=\"true\"\n class=\"sky-icon-svg-img\"\n [ngClass]=\"iconSize() && 'sky-icon-svg-img-' + iconSize()\"\n>\n <use [attr.xlink:href]=\"iconHref()\"></use>\n</svg>\n", styles: [":host{display:inline-block;--sky-icon-svg-img-size: 1em;--sky-icon-svg-img-top: .15em}.sky-icon-svg-img{display:inline-block;fill:var(--sky-icon-svg-color-input, currentColor);height:var(--sky-icon-svg-img-size);width:var(--sky-icon-svg-img-size);text-align:center;position:relative;top:var(--sky-icon-svg-img-top)}.sky-icon-svg-img-lg{--sky-icon-svg-img-size: 1.333em;--sky-icon-svg-img-top: .2em}.sky-icon-svg-img-2x{--sky-icon-svg-img-size: 2em;--sky-icon-svg-img-top: .3em}.sky-icon-svg-img-3x{--sky-icon-svg-img-size: 3em;--sky-icon-svg-img-top: .45em}.sky-icon-svg-img-4x{--sky-icon-svg-img-size: 4em;--sky-icon-svg-img-top: .6em}.sky-icon-svg-img-5x{--sky-icon-svg-img-size: 5em;--sky-icon-svg-img-top: .75em}\n", ":host{display:inline-block;--sky-icon-svg-img-size: 1em;--sky-icon-svg-img-top: .15em}.sky-icon-svg-img{display:inline-block;fill:var(--sky-icon-svg-color-input, currentColor);height:var(--sky-icon-svg-img-size);width:var(--sky-icon-svg-img-size);text-align:center;position:relative;top:var(--sky-icon-svg-img-top)}.sky-icon-svg-img-lg{--sky-icon-svg-img-size: 1.333em;--sky-icon-svg-img-top: .2em}.sky-icon-svg-img-2x{--sky-icon-svg-img-size: 2em;--sky-icon-svg-img-top: .3em}.sky-icon-svg-img-3x{--sky-icon-svg-img-size: 3em;--sky-icon-svg-img-top: .45em}.sky-icon-svg-img-4x{--sky-icon-svg-img-size: 4em;--sky-icon-svg-img-top: .6em}.sky-icon-svg-img-5x{--sky-icon-svg-img-size: 5em;--sky-icon-svg-img-top: .75em}\n"] }]
|
|
42
|
+
}] });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1zdmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2ljb24vc3JjL2xpYi9pY29uL2ljb24tc3ZnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pY29uL3NyYy9saWIvaWNvbi9pY29uLXN2Zy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBR3hFLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUVyQixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNwQixDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUM7SUFDZixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsdUJBQXVCLENBQUM7SUFDdEMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLG1CQUFtQixDQUFDO0lBQzlCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztJQUM5QixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUM7SUFDOUIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLG1CQUFtQixDQUFDO0NBQy9CLENBQUMsQ0FBQztBQUVIOztHQUVHO0FBV0gsTUFBTSxPQUFPLG1CQUFtQjtJQVZoQztRQVdXLGlCQUFZLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFMUMsYUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNwQyxhQUFRLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDM0IsZ0JBQVcsR0FBRyxLQUFLLEVBQXNCLENBQUM7UUFFakQsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDakMsT0FBTztnQkFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDcEIsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3JCLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFO2FBQzVCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVnQixhQUFRLEdBQUcsUUFBUSxDQUNwQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FDL0IsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQzNCLElBQUksQ0FBQyxHQUFHLEVBQ1IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxFQUMxQixJQUFJLENBQUMsT0FBTyxDQUNiLENBQ0YsRUFDRCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ3pCLENBQ0YsQ0FBQztLQUNIO0lBMUJVLFlBQVksQ0FBcUM7SUFNakQsU0FBUyxDQU1mOzhHQWJRLG1CQUFtQjtrR0FBbkIsbUJBQW1CLCtkQ2pDaEMseUxBT0EsMDlDRG1CWSxPQUFPOzsyRkFPTixtQkFBbUI7a0JBVi9CLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzLCBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmltcG9ydCB7IGNhdGNoRXJyb3IsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5SWNvblN2Z1Jlc29sdmVyU2VydmljZSB9IGZyb20gJy4vaWNvbi1zdmctcmVzb2x2ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lJY29uVmFyaWFudFR5cGUgfSBmcm9tICcuL3R5cGVzL2ljb24tdmFyaWFudC10eXBlJztcblxuY29uc3QgU0laRV9CQVNFID0gMTY7XG5cbmNvbnN0IFNJWkVTID0gbmV3IE1hcChbXG4gIFsnJywgU0laRV9CQVNFXSxcbiAgWydsZycsIDIxLjMzMyAvKiBTSVpFX0JBU0UgKiAoNC8zKSAqL10sXG4gIFsnMngnLCAzMiAvKiBTSVpFX0JBU0UgKiAyICovXSxcbiAgWyczeCcsIDQ4IC8qIFNJWkVfQkFTRSAqIDMgKi9dLFxuICBbJzR4JywgNjQgLyogU0laRV9CQVNFICogNCAqL10sXG4gIFsnNXgnLCA4MCAvKiBTSVpFX0JBU0UgKiA1ICovXSxcbl0pO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktaWNvbi1zdmcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdDbGFzcywgTmdTdHlsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9pY29uLXN2Zy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW1xuICAgICcuL2ljb24tc3ZnLmRlZmF1bHQuY29tcG9uZW50LnNjc3MnLFxuICAgICcuL2ljb24tc3ZnLm1vZGVybi5jb21wb25lbnQuc2NzcycsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreUljb25TdmdDb21wb25lbnQge1xuICByZWFkb25seSAjcmVzb2x2ZXJTdmMgPSBpbmplY3QoU2t5SWNvblN2Z1Jlc29sdmVyU2VydmljZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGljb25OYW1lID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgaWNvblNpemUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHB1YmxpYyByZWFkb25seSBpY29uVmFyaWFudCA9IGlucHV0PFNreUljb25WYXJpYW50VHlwZT4oKTtcblxuICByZWFkb25seSAjaWNvbkluZm8gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNyYzogdGhpcy5pY29uTmFtZSgpLFxuICAgICAgc2l6ZTogdGhpcy5pY29uU2l6ZSgpLFxuICAgICAgdmFyaWFudDogdGhpcy5pY29uVmFyaWFudCgpLFxuICAgIH07XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpY29uSHJlZiA9IHRvU2lnbmFsKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLiNpY29uSW5mbykucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoaW5mbykgPT5cbiAgICAgICAgdGhpcy4jcmVzb2x2ZXJTdmMucmVzb2x2ZUhyZWYoXG4gICAgICAgICAgaW5mby5zcmMsXG4gICAgICAgICAgU0laRVMuZ2V0KGluZm8uc2l6ZSA/PyAnJyksXG4gICAgICAgICAgaW5mby52YXJpYW50LFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoJycpKSxcbiAgICApLFxuICApO1xufVxuIiwiPHN2Z1xuICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICBjbGFzcz1cInNreS1pY29uLXN2Zy1pbWdcIlxuICBbbmdDbGFzc109XCJpY29uU2l6ZSgpICYmICdza3ktaWNvbi1zdmctaW1nLScgKyBpY29uU2l6ZSgpXCJcbj5cbiAgPHVzZSBbYXR0ci54bGluazpocmVmXT1cImljb25IcmVmKClcIj48L3VzZT5cbjwvc3ZnPlxuIl19
|
|
@@ -2,19 +2,22 @@ import { ChangeDetectionStrategy, Component, Input, inject, } from '@angular/cor
|
|
|
2
2
|
import { SkyThemeService } from '@skyux/theme';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/common";
|
|
5
|
-
import * as i2 from "./icon-
|
|
5
|
+
import * as i2 from "./icon-svg.component";
|
|
6
|
+
import * as i3 from "./icon-class-list.pipe";
|
|
6
7
|
export class SkyIconComponent {
|
|
7
8
|
constructor() {
|
|
8
9
|
this.themeSvc = inject(SkyThemeService, { optional: true });
|
|
9
10
|
}
|
|
10
11
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
12
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: SkyIconComponent, selector: "sky-icon", inputs: { icon: "icon", iconName: "iconName", iconType: "iconType", size: "size", fixedWidth: "fixedWidth", variant: "variant" }, ngImport: i0, template: "@if (iconName) {\n <sky-icon-svg [iconName]=\"iconName\" [iconSize]=\"size\" />\n} @else {\n <i\n *ngIf=\"icon\"\n aria-hidden=\"true\"\n class=\"sky-icon\"\n [attr.data-sky-icon]=\"icon\"\n [attr.data-sky-icon-type]=\"iconType\"\n [attr.data-sky-icon-variant]=\"variant\"\n [ngClass]=\"\n icon\n | skyIconClassList\n : (themeSvc?.settingsChange | async)?.currentSettings\n : size\n : fixedWidth\n : variant\n \"\n ></i>\n}\n", styles: [":host{display:inline-block}i{display:inherit}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.SkyIconSvgComponent, selector: "sky-icon-svg", inputs: ["iconName", "iconSize", "iconVariant"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.SkyIconClassListPipe, name: "skyIconClassList" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
12
13
|
}
|
|
13
14
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconComponent, decorators: [{
|
|
14
15
|
type: Component,
|
|
15
|
-
args: [{ selector: 'sky-icon', changeDetection: ChangeDetectionStrategy.OnPush, template: "<i\n
|
|
16
|
+
args: [{ selector: 'sky-icon', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (iconName) {\n <sky-icon-svg [iconName]=\"iconName\" [iconSize]=\"size\" />\n} @else {\n <i\n *ngIf=\"icon\"\n aria-hidden=\"true\"\n class=\"sky-icon\"\n [attr.data-sky-icon]=\"icon\"\n [attr.data-sky-icon-type]=\"iconType\"\n [attr.data-sky-icon-variant]=\"variant\"\n [ngClass]=\"\n icon\n | skyIconClassList\n : (themeSvc?.settingsChange | async)?.currentSettings\n : size\n : fixedWidth\n : variant\n \"\n ></i>\n}\n", styles: [":host{display:inline-block}i{display:inherit}\n"] }]
|
|
16
17
|
}], propDecorators: { icon: [{
|
|
17
18
|
type: Input
|
|
19
|
+
}], iconName: [{
|
|
20
|
+
type: Input
|
|
18
21
|
}], iconType: [{
|
|
19
22
|
type: Input
|
|
20
23
|
}], size: [{
|
|
@@ -24,4 +27,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
24
27
|
}], variant: [{
|
|
25
28
|
type: Input
|
|
26
29
|
}] } });
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaWNvbi9zcmMvbGliL2ljb24vaWNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaWNvbi9zcmMvbGliL2ljb24vaWNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7O0FBVy9DLE1BQU0sT0FBTyxnQkFBZ0I7SUFON0I7UUF3RFksYUFBUSxHQUFHLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztLQUNsRTs4R0FuRFksZ0JBQWdCO2tHQUFoQixnQkFBZ0Isa0xDakI3QixzZkFvQkE7OzJGREhhLGdCQUFnQjtrQkFONUIsU0FBUzsrQkFDRSxVQUFVLG1CQUdILHVCQUF1QixDQUFDLE1BQU07OEJBVXhDLElBQUk7c0JBRFYsS0FBSztnQkFRQyxRQUFRO3NCQURkLEtBQUs7Z0JBV0MsUUFBUTtzQkFEZCxLQUFLO2dCQVFDLElBQUk7c0JBRFYsS0FBSztnQkFVQyxVQUFVO3NCQURoQixLQUFLO2dCQVFDLE9BQU87c0JBRGIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5VGhlbWVTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L3RoZW1lJztcblxuaW1wb3J0IHsgU2t5SWNvblR5cGUgfSBmcm9tICcuL3R5cGVzL2ljb24tdHlwZSc7XG5pbXBvcnQgeyBTa3lJY29uVmFyaWFudFR5cGUgfSBmcm9tICcuL3R5cGVzL2ljb24tdmFyaWFudC10eXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWljb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vaWNvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ljb24uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreUljb25Db21wb25lbnQge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2ZcbiAgICogW3RoZSBGb250IEF3ZXNvbWUgNC43IGljb25dKGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tL3Y0LjcvaWNvbnMvKSBvciB0aGUgU0tZIFVYIGljb24gdG9cbiAgICogZGlzcGxheS4gV2hlbiBzcGVjaWZ5aW5nIGEgRm9udCBBd2Vzb21lIGljb24sIGRvIG5vdCBwcmVmaXggdGhlIG5hbWUgd2l0aCBgZmEtYC5cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaWNvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgQmxhY2tiYXVkIFNWRyBpY29uIHRvIGRpc3BsYXkuIEZvciBpbnRlcm5hbCB1c2Ugb25seS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaWNvbk5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgaWNvbiB0byBkaXNwbGF5LiBTcGVjaWZ5aW5nIGBcImZhXCJgIGRpc3BsYXlzIGEgRm9udCBBd2Vzb21lIGljb24sXG4gICAqIHdoaWxlIHNwZWNpZnlpbmcgYFwic2t5dXhcImAgZGlzcGxheXMgYW4gaWNvbiBmcm9tIHRoZSBjdXN0b20gU0tZIFVYIGljb24gZm9udC4gTm90ZSB0aGF0XG4gICAqIHRoZSBjdXN0b20gU0tZIFVYIGljb24gZm9udCBpcyBjdXJyZW50bHkgaW4gYmV0YS5cbiAgICogQGRlZmF1bHQgXCJmYVwiXG4gICAqIEBkZXByZWNhdGVkIFRoZSBpY29uIGNvbXBvbmVudCBub3cgYXV0b21hdGljYWxseSBpbmZlcnMgd2hpY2ggdHlwZSBvZiBpY29uIHRvIHVzZSBiYXNlZCBvbiB0aGUgY3VycmVudCB0aGVtZS4gVGhpcyBpbnB1dCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpY29uVHlwZTogU2t5SWNvblR5cGUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBpY29uIHVzaW5nXG4gICAqIFtGb250IEF3ZXNvbWUgc2l6ZXNdKGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tL3Y0L2V4YW1wbGVzLykuIERvIG5vdCBwcmVmaXggdGhlIHNpemUgd2l0aCBgZmEtYC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaXplOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW5mb3JjZSBhIGZpeGVkIHdpZHRoIGJhc2VkIG9uIGljb24gc2l6ZS4gQnkgZGVmYXVsdCwgaWNvbnMgb2YgYSBzcGVjaWZpZWQgc2l6ZSBzaGFyZSBhXG4gICAqIGNvbnNpc3RlbnQgaGVpZ2h0LCBidXQgdGhlaXIgd2lkdGhzIHZhcnkgYW5kIGNhbiB0aHJvdyBvZmYgdmVydGljYWwgYWxpZ25tZW50LiBVc2UgYSBmaXhlZCB3aWR0aCB3aGVuXG4gICAqIHlvdSBzdGFjayBpY29ucyB2ZXJ0aWNhbGx5LCBzdWNoIGFzIGluIGxpc3RzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGZpeGVkV2lkdGg6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpY29uIHZhcmlhbnQuIElmIHRoZSB2YXJpYW50IGRvZXNuJ3QgZXhpc3QgZm9yIHRoZVxuICAgKiBzcGVjaWZpZWQgaWNvbiwgdGhlIG5vcm1hbCBpY29uIGlzIGRpc3BsYXllZC4gVGhpcyBwcm9wZXJ0eSBvbmx5IGFwcGxpZXMgd2hlbiB1c2luZyBTS1kgVVggaWNvbnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdmFyaWFudDogU2t5SWNvblZhcmlhbnRUeXBlIHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCB0aGVtZVN2YyA9IGluamVjdChTa3lUaGVtZVNlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG59XG4iLCJAaWYgKGljb25OYW1lKSB7XG4gIDxza3ktaWNvbi1zdmcgW2ljb25OYW1lXT1cImljb25OYW1lXCIgW2ljb25TaXplXT1cInNpemVcIiAvPlxufSBAZWxzZSB7XG4gIDxpXG4gICAgKm5nSWY9XCJpY29uXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGNsYXNzPVwic2t5LWljb25cIlxuICAgIFthdHRyLmRhdGEtc2t5LWljb25dPVwiaWNvblwiXG4gICAgW2F0dHIuZGF0YS1za3ktaWNvbi10eXBlXT1cImljb25UeXBlXCJcbiAgICBbYXR0ci5kYXRhLXNreS1pY29uLXZhcmlhbnRdPVwidmFyaWFudFwiXG4gICAgW25nQ2xhc3NdPVwiXG4gICAgICBpY29uXG4gICAgICAgIHwgc2t5SWNvbkNsYXNzTGlzdFxuICAgICAgICAgIDogKHRoZW1lU3ZjPy5zZXR0aW5nc0NoYW5nZSB8IGFzeW5jKT8uY3VycmVudFNldHRpbmdzXG4gICAgICAgICAgOiBzaXplXG4gICAgICAgICAgOiBmaXhlZFdpZHRoXG4gICAgICAgICAgOiB2YXJpYW50XG4gICAgXCJcbiAgPjwvaT5cbn1cbiJdfQ==
|
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { provideHttpClient, withFetch } from '@angular/common/http';
|
|
2
3
|
import { NgModule } from '@angular/core';
|
|
3
4
|
import { SkyIconClassListPipe } from './icon-class-list.pipe';
|
|
4
5
|
import { SkyIconStackComponent } from './icon-stack.component';
|
|
6
|
+
import { SkyIconSvgResolverService } from './icon-svg-resolver.service';
|
|
7
|
+
import { SkyIconSvgComponent } from './icon-svg.component';
|
|
5
8
|
import { SkyIconComponent } from './icon.component';
|
|
6
9
|
import * as i0 from "@angular/core";
|
|
7
10
|
export class SkyIconModule {
|
|
8
11
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
9
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.4", ngImport: i0, type: SkyIconModule, declarations: [SkyIconClassListPipe, SkyIconComponent, SkyIconStackComponent], imports: [CommonModule], exports: [SkyIconComponent, SkyIconStackComponent] }); }
|
|
10
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconModule, imports: [CommonModule] }); }
|
|
12
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.4", ngImport: i0, type: SkyIconModule, declarations: [SkyIconClassListPipe, SkyIconComponent, SkyIconStackComponent], imports: [CommonModule, SkyIconSvgComponent], exports: [SkyIconComponent, SkyIconStackComponent] }); }
|
|
13
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconModule, providers: [provideHttpClient(withFetch()), SkyIconSvgResolverService], imports: [CommonModule] }); }
|
|
11
14
|
}
|
|
12
15
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconModule, decorators: [{
|
|
13
16
|
type: NgModule,
|
|
14
17
|
args: [{
|
|
15
18
|
declarations: [SkyIconClassListPipe, SkyIconComponent, SkyIconStackComponent],
|
|
16
|
-
imports: [CommonModule],
|
|
19
|
+
imports: [CommonModule, SkyIconSvgComponent],
|
|
17
20
|
exports: [SkyIconComponent, SkyIconStackComponent],
|
|
21
|
+
providers: [provideHttpClient(withFetch()), SkyIconSvgResolverService],
|
|
18
22
|
}]
|
|
19
23
|
}] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaWNvbi9zcmMvbGliL2ljb24vaWNvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQVFwRCxNQUFNLE9BQU8sYUFBYTs4R0FBYixhQUFhOytHQUFiLGFBQWEsaUJBTFQsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLGFBQ2xFLFlBQVksRUFBRSxtQkFBbUIsYUFDakMsZ0JBQWdCLEVBQUUscUJBQXFCOytHQUd0QyxhQUFhLGFBRmIsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLHlCQUF5QixDQUFDLFlBRjVELFlBQVk7OzJGQUlYLGFBQWE7a0JBTnpCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLENBQUM7b0JBQzdFLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxtQkFBbUIsQ0FBQztvQkFDNUMsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUscUJBQXFCLENBQUM7b0JBQ2xELFNBQVMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUseUJBQXlCLENBQUM7aUJBQ3ZFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IHByb3ZpZGVIdHRwQ2xpZW50LCB3aXRoRmV0Y2ggfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lJY29uQ2xhc3NMaXN0UGlwZSB9IGZyb20gJy4vaWNvbi1jbGFzcy1saXN0LnBpcGUnO1xuaW1wb3J0IHsgU2t5SWNvblN0YWNrQ29tcG9uZW50IH0gZnJvbSAnLi9pY29uLXN0YWNrLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lJY29uU3ZnUmVzb2x2ZXJTZXJ2aWNlIH0gZnJvbSAnLi9pY29uLXN2Zy1yZXNvbHZlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreUljb25TdmdDb21wb25lbnQgfSBmcm9tICcuL2ljb24tc3ZnLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lJY29uQ29tcG9uZW50IH0gZnJvbSAnLi9pY29uLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1NreUljb25DbGFzc0xpc3RQaXBlLCBTa3lJY29uQ29tcG9uZW50LCBTa3lJY29uU3RhY2tDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTa3lJY29uU3ZnQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW1NreUljb25Db21wb25lbnQsIFNreUljb25TdGFja0NvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW3Byb3ZpZGVIdHRwQ2xpZW50KHdpdGhGZXRjaCgpKSwgU2t5SWNvblN2Z1Jlc29sdmVyU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNreUljb25Nb2R1bGUge31cbiJdfQ==
|
package/fesm2022/skyux-icon.mjs
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import * as i1 from '@angular/common';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgClass, NgStyle, CommonModule } from '@angular/common';
|
|
3
|
+
import { HttpClient, provideHttpClient, withFetch } from '@angular/common/http';
|
|
3
4
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { inject, Injectable, Pipe, Component, Input, ChangeDetectionStrategy, NgModule } from '@angular/core';
|
|
5
|
+
import { inject, Injectable, Pipe, Component, Input, input, computed, ChangeDetectionStrategy, NgModule } from '@angular/core';
|
|
5
6
|
import { SkyThemeIconManifestService, SkyThemeService } from '@skyux/theme';
|
|
7
|
+
import { tap, map, shareReplay, switchMap, catchError, of } from 'rxjs';
|
|
8
|
+
import { toSignal, toObservable } from '@angular/core/rxjs-interop';
|
|
6
9
|
|
|
7
10
|
/**
|
|
8
11
|
* @internal
|
|
@@ -133,18 +136,137 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
133
136
|
type: Input
|
|
134
137
|
}] } });
|
|
135
138
|
|
|
139
|
+
function insertSprite(markup) {
|
|
140
|
+
document.body.insertAdjacentHTML('afterbegin', markup);
|
|
141
|
+
}
|
|
142
|
+
function getIconsSizes() {
|
|
143
|
+
const iconsSizes = Array.from(document.querySelectorAll('#sky-icon-svg-sprite symbol')).reduce((map, el) => {
|
|
144
|
+
const idParts = el.id.split('-');
|
|
145
|
+
// Construct the icon name by removing `sky-i-` from the beginning
|
|
146
|
+
// and `-<size>-<variant>` from the end.
|
|
147
|
+
const name = idParts.slice(2, idParts.length - 2).join('-');
|
|
148
|
+
let sizes = map.get(name);
|
|
149
|
+
if (!sizes) {
|
|
150
|
+
sizes = [];
|
|
151
|
+
map.set(name, sizes);
|
|
152
|
+
}
|
|
153
|
+
// The penultimate segment is the size for which the icon has
|
|
154
|
+
// been optimized.
|
|
155
|
+
sizes.push(+idParts[idParts.length - 2]);
|
|
156
|
+
return map;
|
|
157
|
+
}, new Map());
|
|
158
|
+
// Sort all the sizes for later comparison.
|
|
159
|
+
for (const id of iconsSizes.keys()) {
|
|
160
|
+
// Dedupe and sort the icon sizes.
|
|
161
|
+
iconsSizes.set(id, [...new Set(iconsSizes.get(id))].sort());
|
|
162
|
+
}
|
|
163
|
+
return iconsSizes;
|
|
164
|
+
}
|
|
165
|
+
function getNearestSize(iconsSizes, name, pixelSize) {
|
|
166
|
+
const sizes = iconsSizes.get(name);
|
|
167
|
+
if (sizes) {
|
|
168
|
+
let nearestSizeUnder = -Infinity;
|
|
169
|
+
let nearestSizeOver = Infinity;
|
|
170
|
+
for (const availableSize of sizes) {
|
|
171
|
+
if (availableSize === pixelSize) {
|
|
172
|
+
return pixelSize;
|
|
173
|
+
}
|
|
174
|
+
else if (availableSize < pixelSize) {
|
|
175
|
+
nearestSizeUnder = availableSize;
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
nearestSizeOver = availableSize;
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
const underDiff = Math.abs(pixelSize - nearestSizeUnder);
|
|
183
|
+
const overDiff = Math.abs(pixelSize - nearestSizeOver);
|
|
184
|
+
return isNaN(overDiff) || underDiff < overDiff
|
|
185
|
+
? nearestSizeUnder
|
|
186
|
+
: nearestSizeOver;
|
|
187
|
+
}
|
|
188
|
+
return undefined;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* @internal
|
|
192
|
+
*/
|
|
193
|
+
class SkyIconSvgResolverService {
|
|
194
|
+
#http = inject(HttpClient);
|
|
195
|
+
#spriteObs = this.#http
|
|
196
|
+
.get(`https://sky.blackbaudcdn.net/static/skyux-icons/7/assets/svg/skyux-icons.svg`, {
|
|
197
|
+
responseType: 'text',
|
|
198
|
+
})
|
|
199
|
+
.pipe(tap(insertSprite), map(getIconsSizes), shareReplay(1));
|
|
200
|
+
resolveHref(name, pixelSize = 16, variant = 'line') {
|
|
201
|
+
return this.#spriteObs.pipe(map((iconsSizes) => {
|
|
202
|
+
let href = `#sky-i-${name}`;
|
|
203
|
+
// Find the icon with the optimal size nearest to the requested size.
|
|
204
|
+
const nearestSize = getNearestSize(iconsSizes, name, pixelSize);
|
|
205
|
+
if (!nearestSize) {
|
|
206
|
+
throw new Error(`Icon with name '${name}' was not found.`);
|
|
207
|
+
}
|
|
208
|
+
href = `${href}-${nearestSize}-${variant}`;
|
|
209
|
+
return href;
|
|
210
|
+
}));
|
|
211
|
+
}
|
|
212
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconSvgResolverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
213
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconSvgResolverService }); }
|
|
214
|
+
}
|
|
215
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconSvgResolverService, decorators: [{
|
|
216
|
+
type: Injectable
|
|
217
|
+
}] });
|
|
218
|
+
|
|
219
|
+
const SIZE_BASE = 16;
|
|
220
|
+
const SIZES = new Map([
|
|
221
|
+
['', SIZE_BASE],
|
|
222
|
+
['lg', 21.333 /* SIZE_BASE * (4/3) */],
|
|
223
|
+
['2x', 32 /* SIZE_BASE * 2 */],
|
|
224
|
+
['3x', 48 /* SIZE_BASE * 3 */],
|
|
225
|
+
['4x', 64 /* SIZE_BASE * 4 */],
|
|
226
|
+
['5x', 80 /* SIZE_BASE * 5 */],
|
|
227
|
+
]);
|
|
228
|
+
/**
|
|
229
|
+
* @internal
|
|
230
|
+
*/
|
|
231
|
+
class SkyIconSvgComponent {
|
|
232
|
+
constructor() {
|
|
233
|
+
this.#resolverSvc = inject(SkyIconSvgResolverService);
|
|
234
|
+
this.iconName = input.required();
|
|
235
|
+
this.iconSize = input();
|
|
236
|
+
this.iconVariant = input();
|
|
237
|
+
this.#iconInfo = computed(() => {
|
|
238
|
+
return {
|
|
239
|
+
src: this.iconName(),
|
|
240
|
+
size: this.iconSize(),
|
|
241
|
+
variant: this.iconVariant(),
|
|
242
|
+
};
|
|
243
|
+
});
|
|
244
|
+
this.iconHref = toSignal(toObservable(this.#iconInfo).pipe(switchMap((info) => this.#resolverSvc.resolveHref(info.src, SIZES.get(info.size ?? ''), info.variant)), catchError(() => of(''))));
|
|
245
|
+
}
|
|
246
|
+
#resolverSvc;
|
|
247
|
+
#iconInfo;
|
|
248
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconSvgComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
249
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.4", type: SkyIconSvgComponent, isStandalone: true, selector: "sky-icon-svg", inputs: { iconName: { classPropertyName: "iconName", publicName: "iconName", isSignal: true, isRequired: true, transformFunction: null }, iconSize: { classPropertyName: "iconSize", publicName: "iconSize", isSignal: true, isRequired: false, transformFunction: null }, iconVariant: { classPropertyName: "iconVariant", publicName: "iconVariant", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<svg\n aria-hidden=\"true\"\n class=\"sky-icon-svg-img\"\n [ngClass]=\"iconSize() && 'sky-icon-svg-img-' + iconSize()\"\n>\n <use [attr.xlink:href]=\"iconHref()\"></use>\n</svg>\n", styles: [":host{display:inline-block;--sky-icon-svg-img-size: 1em;--sky-icon-svg-img-top: .15em}.sky-icon-svg-img{display:inline-block;fill:var(--sky-icon-svg-color-input, currentColor);height:var(--sky-icon-svg-img-size);width:var(--sky-icon-svg-img-size);text-align:center;position:relative;top:var(--sky-icon-svg-img-top)}.sky-icon-svg-img-lg{--sky-icon-svg-img-size: 1.333em;--sky-icon-svg-img-top: .2em}.sky-icon-svg-img-2x{--sky-icon-svg-img-size: 2em;--sky-icon-svg-img-top: .3em}.sky-icon-svg-img-3x{--sky-icon-svg-img-size: 3em;--sky-icon-svg-img-top: .45em}.sky-icon-svg-img-4x{--sky-icon-svg-img-size: 4em;--sky-icon-svg-img-top: .6em}.sky-icon-svg-img-5x{--sky-icon-svg-img-size: 5em;--sky-icon-svg-img-top: .75em}\n", ":host{display:inline-block;--sky-icon-svg-img-size: 1em;--sky-icon-svg-img-top: .15em}.sky-icon-svg-img{display:inline-block;fill:var(--sky-icon-svg-color-input, currentColor);height:var(--sky-icon-svg-img-size);width:var(--sky-icon-svg-img-size);text-align:center;position:relative;top:var(--sky-icon-svg-img-top)}.sky-icon-svg-img-lg{--sky-icon-svg-img-size: 1.333em;--sky-icon-svg-img-top: .2em}.sky-icon-svg-img-2x{--sky-icon-svg-img-size: 2em;--sky-icon-svg-img-top: .3em}.sky-icon-svg-img-3x{--sky-icon-svg-img-size: 3em;--sky-icon-svg-img-top: .45em}.sky-icon-svg-img-4x{--sky-icon-svg-img-size: 4em;--sky-icon-svg-img-top: .6em}.sky-icon-svg-img-5x{--sky-icon-svg-img-size: 5em;--sky-icon-svg-img-top: .75em}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
250
|
+
}
|
|
251
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconSvgComponent, decorators: [{
|
|
252
|
+
type: Component,
|
|
253
|
+
args: [{ selector: 'sky-icon-svg', standalone: true, imports: [NgClass, NgStyle], template: "<svg\n aria-hidden=\"true\"\n class=\"sky-icon-svg-img\"\n [ngClass]=\"iconSize() && 'sky-icon-svg-img-' + iconSize()\"\n>\n <use [attr.xlink:href]=\"iconHref()\"></use>\n</svg>\n", styles: [":host{display:inline-block;--sky-icon-svg-img-size: 1em;--sky-icon-svg-img-top: .15em}.sky-icon-svg-img{display:inline-block;fill:var(--sky-icon-svg-color-input, currentColor);height:var(--sky-icon-svg-img-size);width:var(--sky-icon-svg-img-size);text-align:center;position:relative;top:var(--sky-icon-svg-img-top)}.sky-icon-svg-img-lg{--sky-icon-svg-img-size: 1.333em;--sky-icon-svg-img-top: .2em}.sky-icon-svg-img-2x{--sky-icon-svg-img-size: 2em;--sky-icon-svg-img-top: .3em}.sky-icon-svg-img-3x{--sky-icon-svg-img-size: 3em;--sky-icon-svg-img-top: .45em}.sky-icon-svg-img-4x{--sky-icon-svg-img-size: 4em;--sky-icon-svg-img-top: .6em}.sky-icon-svg-img-5x{--sky-icon-svg-img-size: 5em;--sky-icon-svg-img-top: .75em}\n", ":host{display:inline-block;--sky-icon-svg-img-size: 1em;--sky-icon-svg-img-top: .15em}.sky-icon-svg-img{display:inline-block;fill:var(--sky-icon-svg-color-input, currentColor);height:var(--sky-icon-svg-img-size);width:var(--sky-icon-svg-img-size);text-align:center;position:relative;top:var(--sky-icon-svg-img-top)}.sky-icon-svg-img-lg{--sky-icon-svg-img-size: 1.333em;--sky-icon-svg-img-top: .2em}.sky-icon-svg-img-2x{--sky-icon-svg-img-size: 2em;--sky-icon-svg-img-top: .3em}.sky-icon-svg-img-3x{--sky-icon-svg-img-size: 3em;--sky-icon-svg-img-top: .45em}.sky-icon-svg-img-4x{--sky-icon-svg-img-size: 4em;--sky-icon-svg-img-top: .6em}.sky-icon-svg-img-5x{--sky-icon-svg-img-size: 5em;--sky-icon-svg-img-top: .75em}\n"] }]
|
|
254
|
+
}] });
|
|
255
|
+
|
|
136
256
|
class SkyIconComponent {
|
|
137
257
|
constructor() {
|
|
138
258
|
this.themeSvc = inject(SkyThemeService, { optional: true });
|
|
139
259
|
}
|
|
140
260
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
141
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
261
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: SkyIconComponent, selector: "sky-icon", inputs: { icon: "icon", iconName: "iconName", iconType: "iconType", size: "size", fixedWidth: "fixedWidth", variant: "variant" }, ngImport: i0, template: "@if (iconName) {\n <sky-icon-svg [iconName]=\"iconName\" [iconSize]=\"size\" />\n} @else {\n <i\n *ngIf=\"icon\"\n aria-hidden=\"true\"\n class=\"sky-icon\"\n [attr.data-sky-icon]=\"icon\"\n [attr.data-sky-icon-type]=\"iconType\"\n [attr.data-sky-icon-variant]=\"variant\"\n [ngClass]=\"\n icon\n | skyIconClassList\n : (themeSvc?.settingsChange | async)?.currentSettings\n : size\n : fixedWidth\n : variant\n \"\n ></i>\n}\n", styles: [":host{display:inline-block}i{display:inherit}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SkyIconSvgComponent, selector: "sky-icon-svg", inputs: ["iconName", "iconSize", "iconVariant"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: SkyIconClassListPipe, name: "skyIconClassList" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
142
262
|
}
|
|
143
263
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconComponent, decorators: [{
|
|
144
264
|
type: Component,
|
|
145
|
-
args: [{ selector: 'sky-icon', changeDetection: ChangeDetectionStrategy.OnPush, template: "<i\n
|
|
265
|
+
args: [{ selector: 'sky-icon', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (iconName) {\n <sky-icon-svg [iconName]=\"iconName\" [iconSize]=\"size\" />\n} @else {\n <i\n *ngIf=\"icon\"\n aria-hidden=\"true\"\n class=\"sky-icon\"\n [attr.data-sky-icon]=\"icon\"\n [attr.data-sky-icon-type]=\"iconType\"\n [attr.data-sky-icon-variant]=\"variant\"\n [ngClass]=\"\n icon\n | skyIconClassList\n : (themeSvc?.settingsChange | async)?.currentSettings\n : size\n : fixedWidth\n : variant\n \"\n ></i>\n}\n", styles: [":host{display:inline-block}i{display:inherit}\n"] }]
|
|
146
266
|
}], propDecorators: { icon: [{
|
|
147
267
|
type: Input
|
|
268
|
+
}], iconName: [{
|
|
269
|
+
type: Input
|
|
148
270
|
}], iconType: [{
|
|
149
271
|
type: Input
|
|
150
272
|
}], size: [{
|
|
@@ -157,15 +279,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
157
279
|
|
|
158
280
|
class SkyIconModule {
|
|
159
281
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
160
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.4", ngImport: i0, type: SkyIconModule, declarations: [SkyIconClassListPipe, SkyIconComponent, SkyIconStackComponent], imports: [CommonModule], exports: [SkyIconComponent, SkyIconStackComponent] }); }
|
|
161
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconModule, imports: [CommonModule] }); }
|
|
282
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.4", ngImport: i0, type: SkyIconModule, declarations: [SkyIconClassListPipe, SkyIconComponent, SkyIconStackComponent], imports: [CommonModule, SkyIconSvgComponent], exports: [SkyIconComponent, SkyIconStackComponent] }); }
|
|
283
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconModule, providers: [provideHttpClient(withFetch()), SkyIconSvgResolverService], imports: [CommonModule] }); }
|
|
162
284
|
}
|
|
163
285
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyIconModule, decorators: [{
|
|
164
286
|
type: NgModule,
|
|
165
287
|
args: [{
|
|
166
288
|
declarations: [SkyIconClassListPipe, SkyIconComponent, SkyIconStackComponent],
|
|
167
|
-
imports: [CommonModule],
|
|
289
|
+
imports: [CommonModule, SkyIconSvgComponent],
|
|
168
290
|
exports: [SkyIconComponent, SkyIconStackComponent],
|
|
291
|
+
providers: [provideHttpClient(withFetch()), SkyIconSvgResolverService],
|
|
169
292
|
}]
|
|
170
293
|
}] });
|
|
171
294
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skyux-icon.mjs","sources":["../../../../../libs/components/icon/src/lib/icon/icon-resolver.service.ts","../../../../../libs/components/icon/src/lib/icon/icon-class-list.pipe.ts","../../../../../libs/components/icon/src/lib/icon/icon-stack.component.ts","../../../../../libs/components/icon/src/lib/icon/icon-stack.component.html","../../../../../libs/components/icon/src/lib/icon/icon.component.ts","../../../../../libs/components/icon/src/lib/icon/icon.component.html","../../../../../libs/components/icon/src/lib/icon/icon.module.ts","../../../../../libs/components/icon/src/skyux-icon.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport {\n SkyThemeIconManifestGlyph,\n SkyThemeIconManifestService,\n SkyThemeSettings,\n} from '@skyux/theme';\n\nimport { SkyIconResolved } from './types/icon-resolved';\nimport type { SkyIconVariantType } from './types/icon-variant-type';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyIconResolverService {\n #glyphMap = new Map<string, SkyThemeIconManifestGlyph>();\n\n #manifestSvc = inject(SkyThemeIconManifestService);\n\n constructor() {\n // Map the icons by name for more efficient lookup.\n for (const glyph of this.#manifestSvc.getManifest().glyphs) {\n // TODO: keep this until `faName` is removed just in case any icons get added with the wrong shape\n if (glyph.faName && !glyph.faNames) {\n glyph.faNames = [glyph.faName];\n }\n this.#glyphMap.set(glyph.name, glyph);\n }\n }\n\n public resolveIcon(\n icon: string,\n variant?: SkyIconVariantType,\n themeSettings?: SkyThemeSettings,\n ): SkyIconResolved {\n let iconType = 'fa';\n const variantIcon = variant && `${icon}-${variant}`;\n const lineIcon = `${icon}-line`;\n\n // Get the specified variant, or fall back to the icon name.\n // If the pure icon name doesn't exist, try the line variant.\n let glyph =\n this.#glyphMap.get(variantIcon as string) ??\n this.#glyphMap.get(icon) ??\n this.#glyphMap.get(lineIcon) ??\n Array.from(this.#glyphMap.values()).find(\n (glyph) =>\n glyph.aliases?.includes(variantIcon as string) ||\n glyph.aliases?.includes(lineIcon) ||\n glyph.aliases?.includes(icon),\n );\n\n // If still no icon is found, search through the icons that match the FA name.\n if (!glyph) {\n let glyphs = Array.from(this.#glyphMap.values()).filter((g) =>\n g.faNames?.includes(icon),\n );\n if (glyphs.length) {\n if (glyphs.length > 1) {\n // If multiples are found, make sure we select the correct variant, if requested.\n // The icons are ordered such that the \"default\" variant will be the first one.\n if (variant) {\n const variantGlyph = glyphs.find((g) => g.name.endsWith(variant));\n if (variantGlyph) {\n glyphs = [variantGlyph];\n }\n }\n }\n glyph = glyphs[0];\n }\n // If none of the above works, no matching icon was found\n }\n\n if (glyph) {\n // If a glyph is found, use it for modern theme or if no FA fallback exists.\n if (themeSettings?.theme.name === 'modern' || !glyph.faNames?.length) {\n icon = glyph.name;\n iconType = 'skyux';\n } else {\n // For default theme, use a known FA fallback.\n // If the icon name requested is already a FA icon, just use it. Otherwise use the first one.\n if (!glyph.faNames?.includes(icon)) {\n icon = glyph.faNames[0];\n }\n }\n }\n\n // If no SKY UX glyph is found, assume icon is part of FA and pass it along.\n return {\n icon,\n iconType,\n };\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { SkyThemeSettings } from '@skyux/theme';\n\nimport { SkyIconResolverService } from './icon-resolver.service';\nimport { SkyIconVariantType } from './types/icon-variant-type';\n\n/**\n * @internal\n */\n@Pipe({\n name: 'skyIconClassList',\n})\nexport class SkyIconClassListPipe implements PipeTransform {\n #resolver = inject(SkyIconResolverService);\n\n public transform(\n icon: string,\n themeSettings?: SkyThemeSettings,\n size?: string,\n fixedWidth?: boolean,\n variant?: SkyIconVariantType,\n ): string[] {\n let classList: string[];\n\n const { icon: resolvedIcon, iconType: resolvedIconType } =\n this.#resolver.resolveIcon(icon, variant, themeSettings);\n\n if (resolvedIconType === 'skyux') {\n classList = ['sky-i-' + resolvedIcon];\n } else {\n classList = ['fa', 'fa-' + resolvedIcon];\n }\n\n if (size) {\n classList.push('fa-' + size);\n }\n\n if (fixedWidth) {\n classList.push('fa-fw');\n }\n\n return classList;\n }\n}\n","import { Component, Input, inject } from '@angular/core';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport { SkyIconStackItem } from './icon-stack-item';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-icon-stack',\n templateUrl: './icon-stack.component.html',\n styleUrls: ['./icon-stack.component.scss'],\n})\nexport class SkyIconStackComponent {\n /**\n * The size of the icon using\n * [Font Awesome sizes](https://fontawesome.com/v4/examples/).\n */\n @Input()\n public size: string | undefined;\n\n /**\n * The icon to display at the bottom of the stack.\n */\n @Input()\n public baseIcon: SkyIconStackItem | undefined;\n\n /**\n * The icon to display at the top of the stack.\n */\n @Input()\n public topIcon: SkyIconStackItem | undefined;\n\n protected themeSvc = inject(SkyThemeService, { optional: true });\n}\n","<span\n aria-hidden=\"true\"\n class=\"sky-icon-stack fa-stack\"\n [ngClass]=\"size ? 'fa-' + size + ' sky-icon-stack-size-' + size : ''\"\n>\n <i\n *ngIf=\"baseIcon\"\n class=\"sky-icon fa-stack-2x\"\n [ngClass]=\"\n baseIcon.icon\n | skyIconClassList: (themeSvc?.settingsChange | async)?.currentSettings\n \"\n ></i>\n <i\n *ngIf=\"topIcon\"\n class=\"sky-icon fa-stack-1x fa-inverse sky-icon-inverse\"\n [ngClass]=\"\n topIcon.icon\n | skyIconClassList: (themeSvc?.settingsChange | async)?.currentSettings\n \"\n ></i>\n</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n inject,\n} from '@angular/core';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport { SkyIconType } from './types/icon-type';\nimport { SkyIconVariantType } from './types/icon-variant-type';\n\n@Component({\n selector: 'sky-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyIconComponent {\n /**\n * The name of\n * [the Font Awesome 4.7 icon](https://fontawesome.com/v4.7/icons/) or the SKY UX icon to\n * display. When specifying a Font Awesome icon, do not prefix the name with `fa-`.\n * @required\n */\n @Input()\n public icon: string | undefined;\n\n /**\n * The type of icon to display. Specifying `\"fa\"` displays a Font Awesome icon,\n * while specifying `\"skyux\"` displays an icon from the custom SKY UX icon font. Note that\n * the custom SKY UX icon font is currently in beta.\n * @default \"fa\"\n * @deprecated The icon component now automatically infers which type of icon to use based on the current theme. This input will be removed in a future version.\n */\n @Input()\n public iconType: SkyIconType | undefined;\n\n /**\n * The size of the icon using\n * [Font Awesome sizes](https://fontawesome.com/v4/examples/). Do not prefix the size with `fa-`.\n */\n @Input()\n public size: string | undefined;\n\n /**\n * Whether to enforce a fixed width based on icon size. By default, icons of a specified size share a\n * consistent height, but their widths vary and can throw off vertical alignment. Use a fixed width when\n * you stack icons vertically, such as in lists.\n * @default false\n */\n @Input()\n public fixedWidth: boolean | undefined;\n\n /**\n * The icon variant. If the variant doesn't exist for the\n * specified icon, the normal icon is displayed. This property only applies when using SKY UX icons.\n */\n @Input()\n public variant: SkyIconVariantType | undefined;\n\n protected themeSvc = inject(SkyThemeService, { optional: true });\n}\n","<i\n *ngIf=\"icon\"\n aria-hidden=\"true\"\n class=\"sky-icon\"\n [attr.data-sky-icon]=\"icon\"\n [attr.data-sky-icon-type]=\"iconType\"\n [attr.data-sky-icon-variant]=\"variant\"\n [ngClass]=\"\n icon\n | skyIconClassList\n : (themeSvc?.settingsChange | async)?.currentSettings\n : size\n : fixedWidth\n : variant\n \"\n></i>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SkyIconClassListPipe } from './icon-class-list.pipe';\nimport { SkyIconStackComponent } from './icon-stack.component';\nimport { SkyIconComponent } from './icon.component';\n\n@NgModule({\n declarations: [SkyIconClassListPipe, SkyIconComponent, SkyIconStackComponent],\n imports: [CommonModule],\n exports: [SkyIconComponent, SkyIconStackComponent],\n})\nexport class SkyIconModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.SkyIconClassListPipe"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skyux-icon.mjs","sources":["../../../../../libs/components/icon/src/lib/icon/icon-resolver.service.ts","../../../../../libs/components/icon/src/lib/icon/icon-class-list.pipe.ts","../../../../../libs/components/icon/src/lib/icon/icon-stack.component.ts","../../../../../libs/components/icon/src/lib/icon/icon-stack.component.html","../../../../../libs/components/icon/src/lib/icon/icon-svg-resolver.service.ts","../../../../../libs/components/icon/src/lib/icon/icon-svg.component.ts","../../../../../libs/components/icon/src/lib/icon/icon-svg.component.html","../../../../../libs/components/icon/src/lib/icon/icon.component.ts","../../../../../libs/components/icon/src/lib/icon/icon.component.html","../../../../../libs/components/icon/src/lib/icon/icon.module.ts","../../../../../libs/components/icon/src/skyux-icon.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport {\n SkyThemeIconManifestGlyph,\n SkyThemeIconManifestService,\n SkyThemeSettings,\n} from '@skyux/theme';\n\nimport { SkyIconResolved } from './types/icon-resolved';\nimport type { SkyIconVariantType } from './types/icon-variant-type';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyIconResolverService {\n #glyphMap = new Map<string, SkyThemeIconManifestGlyph>();\n\n #manifestSvc = inject(SkyThemeIconManifestService);\n\n constructor() {\n // Map the icons by name for more efficient lookup.\n for (const glyph of this.#manifestSvc.getManifest().glyphs) {\n // TODO: keep this until `faName` is removed just in case any icons get added with the wrong shape\n if (glyph.faName && !glyph.faNames) {\n glyph.faNames = [glyph.faName];\n }\n this.#glyphMap.set(glyph.name, glyph);\n }\n }\n\n public resolveIcon(\n icon: string,\n variant?: SkyIconVariantType,\n themeSettings?: SkyThemeSettings,\n ): SkyIconResolved {\n let iconType = 'fa';\n const variantIcon = variant && `${icon}-${variant}`;\n const lineIcon = `${icon}-line`;\n\n // Get the specified variant, or fall back to the icon name.\n // If the pure icon name doesn't exist, try the line variant.\n let glyph =\n this.#glyphMap.get(variantIcon as string) ??\n this.#glyphMap.get(icon) ??\n this.#glyphMap.get(lineIcon) ??\n Array.from(this.#glyphMap.values()).find(\n (glyph) =>\n glyph.aliases?.includes(variantIcon as string) ||\n glyph.aliases?.includes(lineIcon) ||\n glyph.aliases?.includes(icon),\n );\n\n // If still no icon is found, search through the icons that match the FA name.\n if (!glyph) {\n let glyphs = Array.from(this.#glyphMap.values()).filter((g) =>\n g.faNames?.includes(icon),\n );\n if (glyphs.length) {\n if (glyphs.length > 1) {\n // If multiples are found, make sure we select the correct variant, if requested.\n // The icons are ordered such that the \"default\" variant will be the first one.\n if (variant) {\n const variantGlyph = glyphs.find((g) => g.name.endsWith(variant));\n if (variantGlyph) {\n glyphs = [variantGlyph];\n }\n }\n }\n glyph = glyphs[0];\n }\n // If none of the above works, no matching icon was found\n }\n\n if (glyph) {\n // If a glyph is found, use it for modern theme or if no FA fallback exists.\n if (themeSettings?.theme.name === 'modern' || !glyph.faNames?.length) {\n icon = glyph.name;\n iconType = 'skyux';\n } else {\n // For default theme, use a known FA fallback.\n // If the icon name requested is already a FA icon, just use it. Otherwise use the first one.\n if (!glyph.faNames?.includes(icon)) {\n icon = glyph.faNames[0];\n }\n }\n }\n\n // If no SKY UX glyph is found, assume icon is part of FA and pass it along.\n return {\n icon,\n iconType,\n };\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { SkyThemeSettings } from '@skyux/theme';\n\nimport { SkyIconResolverService } from './icon-resolver.service';\nimport { SkyIconVariantType } from './types/icon-variant-type';\n\n/**\n * @internal\n */\n@Pipe({\n name: 'skyIconClassList',\n})\nexport class SkyIconClassListPipe implements PipeTransform {\n #resolver = inject(SkyIconResolverService);\n\n public transform(\n icon: string,\n themeSettings?: SkyThemeSettings,\n size?: string,\n fixedWidth?: boolean,\n variant?: SkyIconVariantType,\n ): string[] {\n let classList: string[];\n\n const { icon: resolvedIcon, iconType: resolvedIconType } =\n this.#resolver.resolveIcon(icon, variant, themeSettings);\n\n if (resolvedIconType === 'skyux') {\n classList = ['sky-i-' + resolvedIcon];\n } else {\n classList = ['fa', 'fa-' + resolvedIcon];\n }\n\n if (size) {\n classList.push('fa-' + size);\n }\n\n if (fixedWidth) {\n classList.push('fa-fw');\n }\n\n return classList;\n }\n}\n","import { Component, Input, inject } from '@angular/core';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport { SkyIconStackItem } from './icon-stack-item';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-icon-stack',\n templateUrl: './icon-stack.component.html',\n styleUrls: ['./icon-stack.component.scss'],\n})\nexport class SkyIconStackComponent {\n /**\n * The size of the icon using\n * [Font Awesome sizes](https://fontawesome.com/v4/examples/).\n */\n @Input()\n public size: string | undefined;\n\n /**\n * The icon to display at the bottom of the stack.\n */\n @Input()\n public baseIcon: SkyIconStackItem | undefined;\n\n /**\n * The icon to display at the top of the stack.\n */\n @Input()\n public topIcon: SkyIconStackItem | undefined;\n\n protected themeSvc = inject(SkyThemeService, { optional: true });\n}\n","<span\n aria-hidden=\"true\"\n class=\"sky-icon-stack fa-stack\"\n [ngClass]=\"size ? 'fa-' + size + ' sky-icon-stack-size-' + size : ''\"\n>\n <i\n *ngIf=\"baseIcon\"\n class=\"sky-icon fa-stack-2x\"\n [ngClass]=\"\n baseIcon.icon\n | skyIconClassList: (themeSvc?.settingsChange | async)?.currentSettings\n \"\n ></i>\n <i\n *ngIf=\"topIcon\"\n class=\"sky-icon fa-stack-1x fa-inverse sky-icon-inverse\"\n [ngClass]=\"\n topIcon.icon\n | skyIconClassList: (themeSvc?.settingsChange | async)?.currentSettings\n \"\n ></i>\n</span>\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { Observable, map, shareReplay, tap } from 'rxjs';\n\nimport { SkyIconVariantType } from './types/icon-variant-type';\n\nfunction insertSprite(markup: string): void {\n document.body.insertAdjacentHTML('afterbegin', markup);\n}\n\nfunction getIconsSizes(): Map<string, number[]> {\n const iconsSizes = Array.from<SVGSymbolElement>(\n document.querySelectorAll('#sky-icon-svg-sprite symbol'),\n ).reduce((map, el) => {\n const idParts = el.id.split('-');\n\n // Construct the icon name by removing `sky-i-` from the beginning\n // and `-<size>-<variant>` from the end.\n const name = idParts.slice(2, idParts.length - 2).join('-');\n\n let sizes = map.get(name);\n\n if (!sizes) {\n sizes = [];\n map.set(name, sizes);\n }\n\n // The penultimate segment is the size for which the icon has\n // been optimized.\n sizes.push(+idParts[idParts.length - 2]);\n\n return map;\n }, new Map<string, number[]>());\n\n // Sort all the sizes for later comparison.\n for (const id of iconsSizes.keys()) {\n // Dedupe and sort the icon sizes.\n iconsSizes.set(id, [...new Set(iconsSizes.get(id))].sort());\n }\n\n return iconsSizes;\n}\n\nfunction getNearestSize(\n iconsSizes: Map<string, number[]>,\n name: string,\n pixelSize: number,\n): number | undefined {\n const sizes = iconsSizes.get(name);\n\n if (sizes) {\n let nearestSizeUnder = -Infinity;\n let nearestSizeOver = Infinity;\n\n for (const availableSize of sizes) {\n if (availableSize === pixelSize) {\n return pixelSize;\n } else if (availableSize < pixelSize) {\n nearestSizeUnder = availableSize;\n } else {\n nearestSizeOver = availableSize;\n break;\n }\n }\n\n const underDiff = Math.abs(pixelSize - nearestSizeUnder);\n const overDiff = Math.abs(pixelSize - nearestSizeOver);\n\n return isNaN(overDiff) || underDiff < overDiff\n ? nearestSizeUnder\n : nearestSizeOver;\n }\n\n return undefined;\n}\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyIconSvgResolverService {\n readonly #http = inject(HttpClient);\n\n readonly #spriteObs = this.#http\n .get(\n `https://sky.blackbaudcdn.net/static/skyux-icons/7/assets/svg/skyux-icons.svg`,\n {\n responseType: 'text',\n },\n )\n .pipe(tap(insertSprite), map(getIconsSizes), shareReplay(1));\n\n public resolveHref(\n name: string,\n pixelSize = 16,\n variant: SkyIconVariantType = 'line',\n ): Observable<string> {\n return this.#spriteObs.pipe(\n map((iconsSizes) => {\n let href = `#sky-i-${name}`;\n\n // Find the icon with the optimal size nearest to the requested size.\n const nearestSize = getNearestSize(iconsSizes, name, pixelSize);\n\n if (!nearestSize) {\n throw new Error(`Icon with name '${name}' was not found.`);\n }\n\n href = `${href}-${nearestSize}-${variant}`;\n\n return href;\n }),\n );\n }\n}\n","import { NgClass, NgStyle } from '@angular/common';\nimport { Component, computed, inject, input } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\n\nimport { catchError, of, switchMap } from 'rxjs';\n\nimport { SkyIconSvgResolverService } from './icon-svg-resolver.service';\nimport { SkyIconVariantType } from './types/icon-variant-type';\n\nconst SIZE_BASE = 16;\n\nconst SIZES = new Map([\n ['', SIZE_BASE],\n ['lg', 21.333 /* SIZE_BASE * (4/3) */],\n ['2x', 32 /* SIZE_BASE * 2 */],\n ['3x', 48 /* SIZE_BASE * 3 */],\n ['4x', 64 /* SIZE_BASE * 4 */],\n ['5x', 80 /* SIZE_BASE * 5 */],\n]);\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-icon-svg',\n standalone: true,\n imports: [NgClass, NgStyle],\n templateUrl: './icon-svg.component.html',\n styleUrls: [\n './icon-svg.default.component.scss',\n './icon-svg.modern.component.scss',\n ],\n})\nexport class SkyIconSvgComponent {\n readonly #resolverSvc = inject(SkyIconSvgResolverService);\n\n public readonly iconName = input.required<string>();\n public readonly iconSize = input<string>();\n public readonly iconVariant = input<SkyIconVariantType>();\n\n readonly #iconInfo = computed(() => {\n return {\n src: this.iconName(),\n size: this.iconSize(),\n variant: this.iconVariant(),\n };\n });\n\n protected readonly iconHref = toSignal(\n toObservable(this.#iconInfo).pipe(\n switchMap((info) =>\n this.#resolverSvc.resolveHref(\n info.src,\n SIZES.get(info.size ?? ''),\n info.variant,\n ),\n ),\n catchError(() => of('')),\n ),\n );\n}\n","<svg\n aria-hidden=\"true\"\n class=\"sky-icon-svg-img\"\n [ngClass]=\"iconSize() && 'sky-icon-svg-img-' + iconSize()\"\n>\n <use [attr.xlink:href]=\"iconHref()\"></use>\n</svg>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n inject,\n} from '@angular/core';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport { SkyIconType } from './types/icon-type';\nimport { SkyIconVariantType } from './types/icon-variant-type';\n\n@Component({\n selector: 'sky-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyIconComponent {\n /**\n * The name of\n * [the Font Awesome 4.7 icon](https://fontawesome.com/v4.7/icons/) or the SKY UX icon to\n * display. When specifying a Font Awesome icon, do not prefix the name with `fa-`.\n * @required\n */\n @Input()\n public icon: string | undefined;\n\n /**\n * The name of the Blackbaud SVG icon to display. For internal use only.\n * @internal\n */\n @Input()\n public iconName: string | undefined;\n\n /**\n * The type of icon to display. Specifying `\"fa\"` displays a Font Awesome icon,\n * while specifying `\"skyux\"` displays an icon from the custom SKY UX icon font. Note that\n * the custom SKY UX icon font is currently in beta.\n * @default \"fa\"\n * @deprecated The icon component now automatically infers which type of icon to use based on the current theme. This input will be removed in a future version.\n */\n @Input()\n public iconType: SkyIconType | undefined;\n\n /**\n * The size of the icon using\n * [Font Awesome sizes](https://fontawesome.com/v4/examples/). Do not prefix the size with `fa-`.\n */\n @Input()\n public size: string | undefined;\n\n /**\n * Whether to enforce a fixed width based on icon size. By default, icons of a specified size share a\n * consistent height, but their widths vary and can throw off vertical alignment. Use a fixed width when\n * you stack icons vertically, such as in lists.\n * @default false\n */\n @Input()\n public fixedWidth: boolean | undefined;\n\n /**\n * The icon variant. If the variant doesn't exist for the\n * specified icon, the normal icon is displayed. This property only applies when using SKY UX icons.\n */\n @Input()\n public variant: SkyIconVariantType | undefined;\n\n protected themeSvc = inject(SkyThemeService, { optional: true });\n}\n","@if (iconName) {\n <sky-icon-svg [iconName]=\"iconName\" [iconSize]=\"size\" />\n} @else {\n <i\n *ngIf=\"icon\"\n aria-hidden=\"true\"\n class=\"sky-icon\"\n [attr.data-sky-icon]=\"icon\"\n [attr.data-sky-icon-type]=\"iconType\"\n [attr.data-sky-icon-variant]=\"variant\"\n [ngClass]=\"\n icon\n | skyIconClassList\n : (themeSvc?.settingsChange | async)?.currentSettings\n : size\n : fixedWidth\n : variant\n \"\n ></i>\n}\n","import { CommonModule } from '@angular/common';\nimport { provideHttpClient, withFetch } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\n\nimport { SkyIconClassListPipe } from './icon-class-list.pipe';\nimport { SkyIconStackComponent } from './icon-stack.component';\nimport { SkyIconSvgResolverService } from './icon-svg-resolver.service';\nimport { SkyIconSvgComponent } from './icon-svg.component';\nimport { SkyIconComponent } from './icon.component';\n\n@NgModule({\n declarations: [SkyIconClassListPipe, SkyIconComponent, SkyIconStackComponent],\n imports: [CommonModule, SkyIconSvgComponent],\n exports: [SkyIconComponent, SkyIconStackComponent],\n providers: [provideHttpClient(withFetch()), SkyIconSvgResolverService],\n})\nexport class SkyIconModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.SkyIconClassListPipe","i2.SkyIconSvgComponent","i3.SkyIconClassListPipe"],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { SkyIconVariantType } from './types/icon-variant-type';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export declare class SkyIconSvgResolverService {
|
|
8
|
+
#private;
|
|
9
|
+
resolveHref(name: string, pixelSize?: number, variant?: SkyIconVariantType): Observable<string>;
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SkyIconSvgResolverService, never>;
|
|
11
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SkyIconSvgResolverService>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SkyIconVariantType } from './types/icon-variant-type';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export declare class SkyIconSvgComponent {
|
|
7
|
+
#private;
|
|
8
|
+
readonly iconName: import("@angular/core").InputSignal<string>;
|
|
9
|
+
readonly iconSize: import("@angular/core").InputSignal<string | undefined>;
|
|
10
|
+
readonly iconVariant: import("@angular/core").InputSignal<SkyIconVariantType | undefined>;
|
|
11
|
+
protected readonly iconHref: import("@angular/core").Signal<string | undefined>;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SkyIconSvgComponent, never>;
|
|
13
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SkyIconSvgComponent, "sky-icon-svg", never, { "iconName": { "alias": "iconName"; "required": true; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; "iconVariant": { "alias": "iconVariant"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
14
|
+
}
|
|
@@ -10,6 +10,11 @@ export declare class SkyIconComponent {
|
|
|
10
10
|
* @required
|
|
11
11
|
*/
|
|
12
12
|
icon: string | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* The name of the Blackbaud SVG icon to display. For internal use only.
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
iconName: string | undefined;
|
|
13
18
|
/**
|
|
14
19
|
* The type of icon to display. Specifying `"fa"` displays a Font Awesome icon,
|
|
15
20
|
* while specifying `"skyux"` displays an icon from the custom SKY UX icon font. Note that
|
|
@@ -37,5 +42,5 @@ export declare class SkyIconComponent {
|
|
|
37
42
|
variant: SkyIconVariantType | undefined;
|
|
38
43
|
protected themeSvc: SkyThemeService | null;
|
|
39
44
|
static ɵfac: i0.ɵɵFactoryDeclaration<SkyIconComponent, never>;
|
|
40
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SkyIconComponent, "sky-icon", never, { "icon": { "alias": "icon"; "required": false; }; "iconType": { "alias": "iconType"; "required": false; }; "size": { "alias": "size"; "required": false; }; "fixedWidth": { "alias": "fixedWidth"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; }, {}, never, never, false, never>;
|
|
45
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SkyIconComponent, "sky-icon", never, { "icon": { "alias": "icon"; "required": false; }; "iconName": { "alias": "iconName"; "required": false; }; "iconType": { "alias": "iconType"; "required": false; }; "size": { "alias": "size"; "required": false; }; "fixedWidth": { "alias": "fixedWidth"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; }, {}, never, never, false, never>;
|
|
41
46
|
}
|
|
@@ -3,8 +3,9 @@ import * as i1 from "./icon-class-list.pipe";
|
|
|
3
3
|
import * as i2 from "./icon.component";
|
|
4
4
|
import * as i3 from "./icon-stack.component";
|
|
5
5
|
import * as i4 from "@angular/common";
|
|
6
|
+
import * as i5 from "./icon-svg.component";
|
|
6
7
|
export declare class SkyIconModule {
|
|
7
8
|
static ɵfac: i0.ɵɵFactoryDeclaration<SkyIconModule, never>;
|
|
8
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<SkyIconModule, [typeof i1.SkyIconClassListPipe, typeof i2.SkyIconComponent, typeof i3.SkyIconStackComponent], [typeof i4.CommonModule], [typeof i2.SkyIconComponent, typeof i3.SkyIconStackComponent]>;
|
|
9
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<SkyIconModule, [typeof i1.SkyIconClassListPipe, typeof i2.SkyIconComponent, typeof i3.SkyIconStackComponent], [typeof i4.CommonModule, typeof i5.SkyIconSvgComponent], [typeof i2.SkyIconComponent, typeof i3.SkyIconStackComponent]>;
|
|
9
10
|
static ɵinj: i0.ɵɵInjectorDeclaration<SkyIconModule>;
|
|
10
11
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skyux/icon",
|
|
3
|
-
"version": "10.
|
|
3
|
+
"version": "10.34.0",
|
|
4
4
|
"author": "Blackbaud, Inc.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"blackbaud",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"@angular/cdk": "^17.3.4",
|
|
40
40
|
"@angular/common": "^17.3.4",
|
|
41
41
|
"@angular/core": "^17.3.4",
|
|
42
|
-
"@skyux/core": "10.
|
|
43
|
-
"@skyux/theme": "10.
|
|
42
|
+
"@skyux/core": "10.34.0",
|
|
43
|
+
"@skyux/theme": "10.34.0"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"tslib": "^2.6.2"
|