@ihk-gfi/lux-components-update 13.2.0 → 14.0.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/README.md +2 -2
- package/package.json +10 -8
- package/src/add-lux-components/files/app/app-routing.module.ts +2 -0
- package/src/add-lux-components/files/app/app.component.html +7 -2
- package/src/add-lux-components/files/app/app.component.ts +9 -1
- package/src/add-lux-components/files/app/app.module.ts +6 -1
- package/src/add-lux-components/files/app/base/license-hint/license-hint.component.html +7 -0
- package/src/add-lux-components/files/app/base/license-hint/license-hint.component.ts +18 -0
- package/src/add-lux-components/files/app/home/home.component.scss +3 -0
- package/src/add-lux-components/files/assets/svg/Example.svg +6 -0
- package/src/add-lux-components/files/assets/svg/android.svg +2 -0
- package/src/add-lux-components/files/assets/svg/box.svg +690 -0
- package/src/add-lux-components/files/assets/svg/demoAppLogo.svg +1 -0
- package/src/add-lux-components/files/assets/svg/red_power_button.svg +67 -0
- package/src/add-lux-components/files/assets/svg/svg2009.svg +57457 -0
- package/src/add-lux-components/files/environments/environment.ts +2 -2
- package/src/add-lux-components/files/locale/messages.en.xlf +544 -373
- package/src/add-lux-components/files/locale/messages.xlf +517 -352
- package/src/add-lux-components/files/src/polyfills.ts +29 -39
- package/src/add-lux-components/index.d.ts +1 -1
- package/src/add-lux-components/index.js +47 -26
- package/src/add-lux-components/index.js.map +1 -1
- package/src/add-lux-components/index.ts +50 -31
- package/src/add-lux-components/index_spec.js +3 -3
- package/src/add-lux-components/index_spec.ts +1 -1
- package/src/collection.json +13 -14
- package/src/theme/change-theme-to-authentic/index.d.ts +4 -0
- package/src/theme/change-theme-to-authentic/index.js +129 -0
- package/src/theme/change-theme-to-authentic/index.js.map +1 -0
- package/src/theme/change-theme-to-authentic/index.ts +131 -0
- package/src/{updates/update130000 → theme/change-theme-to-authentic}/index_spec.d.ts +0 -0
- package/src/theme/change-theme-to-authentic/index_spec.js +300 -0
- package/src/theme/change-theme-to-authentic/index_spec.js.map +1 -0
- package/src/theme/change-theme-to-authentic/index_spec.ts +321 -0
- package/src/{updates/update130100 → theme/change-theme-to-authentic}/schema.json +3 -3
- package/src/theme/change-to-lux-icons/index.d.ts +7 -0
- package/src/theme/change-to-lux-icons/index.js +395 -0
- package/src/theme/change-to-lux-icons/index.js.map +1 -0
- package/src/theme/change-to-lux-icons/index.ts +406 -0
- package/src/{updates/update130100 → theme/change-to-lux-icons}/index_spec.d.ts +0 -0
- package/src/theme/change-to-lux-icons/index_spec.js +214 -0
- package/src/theme/change-to-lux-icons/index_spec.js.map +1 -0
- package/src/theme/change-to-lux-icons/index_spec.ts +220 -0
- package/src/{updates/update130200 → theme/change-to-lux-icons}/schema.json +3 -3
- package/src/update-dependencies/index.d.ts +0 -3
- package/src/update-dependencies/index.js +68 -116
- package/src/update-dependencies/index.js.map +1 -1
- package/src/update-dependencies/index.ts +73 -122
- package/src/update-en-messages/index.js +18 -15
- package/src/update-en-messages/index.js.map +1 -1
- package/src/update-en-messages/index.ts +22 -16
- package/src/updates/update140000/files/src/polyfills.ts +70 -0
- package/src/updates/update140000/index.d.ts +8 -0
- package/src/updates/update140000/index.js +83 -0
- package/src/updates/update140000/index.js.map +1 -0
- package/src/updates/update140000/index.ts +97 -0
- package/src/updates/{update130200 → update140000}/index_spec.d.ts +0 -0
- package/src/updates/update140000/index_spec.js +77 -0
- package/src/updates/update140000/index_spec.js.map +1 -0
- package/src/updates/update140000/index_spec.ts +79 -0
- package/src/updates/{update130000 → update140000}/schema.json +0 -0
- package/src/utility/files.d.ts +2 -2
- package/src/utility/files.js +5 -5
- package/src/utility/files.js.map +1 -1
- package/src/utility/files.ts +5 -5
- package/src/utility/html/hit.d.ts +21 -0
- package/src/utility/html/hit.js +27 -0
- package/src/utility/html/hit.js.map +1 -0
- package/src/utility/html/hit.ts +28 -0
- package/src/utility/html/html-manipulator.d.ts +71 -0
- package/src/utility/html/html-manipulator.js +136 -0
- package/src/utility/html/html-manipulator.js.map +1 -0
- package/src/utility/html/html-manipulator.ts +156 -0
- package/src/utility/{html_spec.d.ts → html/html_spec.d.ts} +0 -0
- package/src/utility/{html_spec.js → html/html_spec.js} +232 -100
- package/src/utility/html/html_spec.js.map +1 -0
- package/src/utility/{html_spec.ts → html/html_spec.ts} +282 -106
- package/src/utility/html/manipulator-functions.d.ts +99 -0
- package/src/utility/html/manipulator-functions.js +147 -0
- package/src/utility/html/manipulator-functions.js.map +1 -0
- package/src/utility/html/manipulator-functions.ts +149 -0
- package/src/utility/json.d.ts +2 -2
- package/src/utility/json.js +11 -7
- package/src/utility/json.js.map +1 -1
- package/src/utility/json.ts +42 -26
- package/src/utility/json_spec.js +18 -18
- package/src/utility/json_spec.js.map +1 -1
- package/src/utility/json_spec.ts +136 -66
- package/src/utility/typescript.d.ts +3 -3
- package/src/utility/typescript.js +2 -2
- package/src/utility/typescript.js.map +1 -1
- package/src/utility/typescript.ts +3 -3
- package/src/utility/typescript_spec.js +0 -1
- package/src/utility/typescript_spec.js.map +1 -1
- package/src/utility/typescript_spec.ts +0 -2
- package/src/utility/util.d.ts +7 -6
- package/src/utility/util.js +12 -8
- package/src/utility/util.js.map +1 -1
- package/src/utility/util.ts +13 -10
- package/src/utility/validation.d.ts +2 -3
- package/src/utility/validation.js +2 -3
- package/src/utility/validation.js.map +1 -1
- package/src/utility/validation.ts +2 -3
- package/tsconfig.json +5 -7
- package/src/add-lux-components/files/scripts/.browserslistrc +0 -20
- package/src/updates/update130000/files/root/.browserslistrc +0 -20
- package/src/updates/update130000/index.d.ts +0 -27
- package/src/updates/update130000/index.js +0 -310
- package/src/updates/update130000/index.js.map +0 -1
- package/src/updates/update130000/index.ts +0 -362
- package/src/updates/update130000/index_spec.js +0 -584
- package/src/updates/update130000/index_spec.js.map +0 -1
- package/src/updates/update130000/index_spec.ts +0 -675
- package/src/updates/update130100/index.d.ts +0 -2
- package/src/updates/update130100/index.js +0 -27
- package/src/updates/update130100/index.js.map +0 -1
- package/src/updates/update130100/index.ts +0 -27
- package/src/updates/update130100/index_spec.js +0 -65
- package/src/updates/update130100/index_spec.js.map +0 -1
- package/src/updates/update130100/index_spec.ts +0 -69
- package/src/updates/update130200/index.d.ts +0 -2
- package/src/updates/update130200/index.js +0 -43
- package/src/updates/update130200/index.js.map +0 -1
- package/src/updates/update130200/index.ts +0 -41
- package/src/updates/update130200/index_spec.js +0 -106
- package/src/updates/update130200/index_spec.js.map +0 -1
- package/src/updates/update130200/index_spec.ts +0 -110
- package/src/utility/html.d.ts +0 -49
- package/src/utility/html.js +0 -246
- package/src/utility/html.js.map +0 -1
- package/src/utility/html.ts +0 -288
- package/src/utility/html_spec.js.map +0 -1
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { JSDOM } from 'jsdom';
|
|
2
|
+
import { replaceFirst } from '../util';
|
|
3
|
+
import { Hit } from './hit';
|
|
4
|
+
import { ManipulatorFn } from './manipulator-functions';
|
|
5
|
+
|
|
6
|
+
export const ATTR_NOT_PROCESSED = 'data-lux-not-processed';
|
|
7
|
+
export const PLACEHOLDER = `@@@element@@@`;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Der {@link HtmlManipulator} ist für die Manipulation der HTML-Templates zuständig.
|
|
11
|
+
*
|
|
12
|
+
* Warum verwendet der {@link HtmlManipulator} eigene Funktionen, um den HTML-Inhalt anzupassen,
|
|
13
|
+
* anstatt die bereitgestellten Methoden von JSDOm (serialize()) bzw. Cheerio (xml() oder html() zu verwenden?
|
|
14
|
+
*
|
|
15
|
+
* Die serialize-Methode von JSDOM wandelt alle Attribute in Kleinschrift um, sodass die Angular-Attribute nicht mehr
|
|
16
|
+
* funktionieren. Cheerio kann konfiguriert werden, sodass die Camel-Case-Namen erhalten bleiben,
|
|
17
|
+
* aber dort werden z.B. die leeren Ent-Tags ersetzt. Zusätzlich bricht Cheerio manchmal in komplexeren Templates an Stellen um,
|
|
18
|
+
* sodass das Template im Anschluss nicht mehr kompiliert.
|
|
19
|
+
*
|
|
20
|
+
* @example JSDOM
|
|
21
|
+
* Input: <lux-input luxLabel="Lorem ipsum"></lux-input>
|
|
22
|
+
* Output: <lux-input luxlabel="Lorem ipsum"></lux-input>
|
|
23
|
+
*
|
|
24
|
+
* @example Cheerio
|
|
25
|
+
* Input: <lux-input></lux-input>
|
|
26
|
+
* Output: <lux-input/>
|
|
27
|
+
*/
|
|
28
|
+
export class HtmlManipulator {
|
|
29
|
+
private htmlContent: string;
|
|
30
|
+
private readonly selector: string;
|
|
31
|
+
private readonly manipulatorFNs: ManipulatorFn[];
|
|
32
|
+
|
|
33
|
+
private constructor(htmlContent: string, selector: string, manipulatorFns: ManipulatorFn[]) {
|
|
34
|
+
this.htmlContent = htmlContent;
|
|
35
|
+
this.selector = selector;
|
|
36
|
+
this.manipulatorFNs = manipulatorFns ?? [];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Diese Methode ermittelt alle betroffenen HTML-Elemente anhand des übergebenen Selektors und versieht diese mit dem temporären
|
|
41
|
+
* {@link ATTR_NOT_PROCESSED}-Attribut.
|
|
42
|
+
*
|
|
43
|
+
* @example Selektor - lux-card
|
|
44
|
+
* <div>
|
|
45
|
+
* <lux-card luxTitle="Test">
|
|
46
|
+
* <lux-card-content>
|
|
47
|
+
* <p>Lorem ipsum</p>
|
|
48
|
+
* </lux-card-content>
|
|
49
|
+
* </lux-card>
|
|
50
|
+
* </div>
|
|
51
|
+
*
|
|
52
|
+
* <div>
|
|
53
|
+
* <lux-card data-lux-not-processed luxTitle="Test">
|
|
54
|
+
* <lux-card-content>
|
|
55
|
+
* <p>Lorem ipsum</p>
|
|
56
|
+
* </lux-card-content>
|
|
57
|
+
* </lux-card>
|
|
58
|
+
* </div>
|
|
59
|
+
*
|
|
60
|
+
* @param htmlContent Der HTML-Inhalt.
|
|
61
|
+
* @param selector Der CSS-Selektor.
|
|
62
|
+
*/
|
|
63
|
+
static prepare(htmlContent: string, selector: string): string {
|
|
64
|
+
const dom = new JSDOM(htmlContent, { includeNodeLocations: true });
|
|
65
|
+
const elements = dom.window.document.querySelectorAll(selector);
|
|
66
|
+
|
|
67
|
+
let counter = 0;
|
|
68
|
+
elements.forEach((el) => {
|
|
69
|
+
const location = dom.nodeLocation(el);
|
|
70
|
+
const startIndex = location?.startOffset ?? -1;
|
|
71
|
+
const endIndex = location?.endOffset ?? -1;
|
|
72
|
+
|
|
73
|
+
htmlContent = this.addUnprocessedAttr(htmlContent, el.tagName, startIndex, endIndex, counter++);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
return htmlContent;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Diese Methode transformiert den übergebenen HTML-Inhalt mit den Manipulator-Funktionen.
|
|
81
|
+
*
|
|
82
|
+
* @param htmlContent Der HTML-Inhalt.
|
|
83
|
+
* @param selector Der CSS-Selektor.
|
|
84
|
+
* @param manipulatorFns Die Funktionen manipulieren den HTML-Inhalt.
|
|
85
|
+
*/
|
|
86
|
+
static transform(htmlContent: string, selector: string, ...manipulatorFns: ManipulatorFn[]): string {
|
|
87
|
+
return new HtmlManipulator(htmlContent, selector, manipulatorFns).do();
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Diese Methode liefert die Anzahl der mit dem Selektor gefundenen Elemente zurück.
|
|
92
|
+
*
|
|
93
|
+
* @param htmlContent Der HTML-Inhalt.
|
|
94
|
+
* @param selector Der CSS-Selektor.
|
|
95
|
+
*/
|
|
96
|
+
static count(htmlContent: string, selector: string): number {
|
|
97
|
+
return new JSDOM(htmlContent, { includeNodeLocations: false }).window.document.querySelectorAll(selector).length;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
private do(): string {
|
|
101
|
+
this.htmlContent = HtmlManipulator.prepare(this.htmlContent, this.selector);
|
|
102
|
+
|
|
103
|
+
// Hier wird der erste Treffer gesetzt. Zusätzlich wird im Ergebnis-HTML anstelle des Elements ein Platzhalter eingesetzt.
|
|
104
|
+
// Dieser Platzhalter wird im Nachgang wieder durch das manipulierte HTML des Elements ersetzt.
|
|
105
|
+
let hit = this.next();
|
|
106
|
+
while (hit) {
|
|
107
|
+
// Hier wird der HTML-Inhalt des Elements über die Manipulator-Funktionen angepasst.
|
|
108
|
+
this.manipulatorFNs.forEach((fn) => fn(hit!));
|
|
109
|
+
|
|
110
|
+
// Jetzt muss das unprocessed-Attribut, das in der prepare-Methode gesetzt wurde, wieder entfernt werden.
|
|
111
|
+
const updatedHtml = replaceFirst(hit.elementContent, ' ' + ATTR_NOT_PROCESSED, '');
|
|
112
|
+
|
|
113
|
+
// Zum Schluss muss der veränderte HTML-Inhalt des Elements wieder an die Stelle des Platzhalters im Ergebnis-HTML eingesetzt werden.
|
|
114
|
+
// Der Platzhalter im Ergebnis wird durch die next-Methode gesetzt.
|
|
115
|
+
this.htmlContent = this.htmlContent.replace(hit.placeholder, updatedHtml);
|
|
116
|
+
|
|
117
|
+
// Hier wird der nächste Treffer gesetzt.
|
|
118
|
+
// Details siehe den next()-Aufruf weiter oben.
|
|
119
|
+
hit = this.next();
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return this.htmlContent;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
private next(): Hit | null {
|
|
126
|
+
const dom = new JSDOM(this.htmlContent, { includeNodeLocations: true });
|
|
127
|
+
const element = dom.window.document.querySelector(`*[${ATTR_NOT_PROCESSED}]`);
|
|
128
|
+
|
|
129
|
+
if (element) {
|
|
130
|
+
const location = dom.nodeLocation(element);
|
|
131
|
+
if (location && location.startOffset >= 0 && location.endOffset >= 0) {
|
|
132
|
+
const start = location.startOffset;
|
|
133
|
+
const end = location.endOffset;
|
|
134
|
+
|
|
135
|
+
// Der Hit auf denen die Manipulator-Funktionen arbeiten, bekommen nur den HTML-Inhalt des Elements und
|
|
136
|
+
// nicht den gesamten Inhalt.
|
|
137
|
+
const hitContent = this.htmlContent.slice(start, end);
|
|
138
|
+
|
|
139
|
+
// Für das HTML des Elements wird der Platzhalter eingesetzt.
|
|
140
|
+
this.htmlContent = this.htmlContent.slice(0, start) + PLACEHOLDER + this.htmlContent.slice(end, this.htmlContent.length);
|
|
141
|
+
|
|
142
|
+
return new Hit(PLACEHOLDER, this.selector, hitContent, element, location.startLine);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
private static addUnprocessedAttr(htmlContent: string, tagName: string, startIndex: number, endIndex: number, counter: number) {
|
|
150
|
+
if (startIndex >= 0 && endIndex >= 0) {
|
|
151
|
+
const position = startIndex + (tagName.length + 1) + counter * (ATTR_NOT_PROCESSED.length + 1); /* +1 für die Leerzeichen */
|
|
152
|
+
htmlContent = [htmlContent.slice(0, position), ' ' + ATTR_NOT_PROCESSED, htmlContent.slice(position)].join('');
|
|
153
|
+
}
|
|
154
|
+
return htmlContent;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
File without changes
|
|
@@ -1,122 +1,212 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
3
|
+
const html_manipulator_1 = require("./html-manipulator");
|
|
4
|
+
const manipulator_functions_1 = require("./manipulator-functions");
|
|
4
5
|
describe('html', () => {
|
|
6
|
+
describe('Not-Processed-Attribut', () => {
|
|
7
|
+
it('Sollte das Not-Processed-Attribut setzen', () => {
|
|
8
|
+
let content = templateNotProcessedAttr001;
|
|
9
|
+
content = html_manipulator_1.HtmlManipulator.prepare(content, 'lux-card');
|
|
10
|
+
expect(content).toEqual(resultNotProcessedAttr001);
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
describe('Count', () => {
|
|
14
|
+
it('Sollte die korrekte Anzahl zurückliefern', () => {
|
|
15
|
+
const content = templateCount001;
|
|
16
|
+
expect(html_manipulator_1.HtmlManipulator.count(content, 'lux-card')).toEqual(3);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
describe('renameSelector', () => {
|
|
20
|
+
it('Sollte den Selector gelöscht haben', () => {
|
|
21
|
+
let content = '<div><lux-app-header></lux-app-header></div>';
|
|
22
|
+
content = html_manipulator_1.HtmlManipulator.transform(content, 'lux-app-header', manipulator_functions_1.removeElementFn);
|
|
23
|
+
content = html_manipulator_1.HtmlManipulator.transform(content, 'div', manipulator_functions_1.removeElementFn);
|
|
24
|
+
expect(content).toEqual('');
|
|
25
|
+
});
|
|
26
|
+
it('Sollte keinen Subselector löschen', () => {
|
|
27
|
+
let content = '<div><lux-app-header></lux-app-header><lux-app-header-ac></lux-app-header-ac></div>';
|
|
28
|
+
content = html_manipulator_1.HtmlManipulator.transform(content, 'lux-app-header', manipulator_functions_1.removeElementFn);
|
|
29
|
+
expect(content).toEqual('<div><lux-app-header-ac></lux-app-header-ac></div>');
|
|
30
|
+
});
|
|
31
|
+
it('Sollte den Selector ersetzen - Alles in einer Zeile - Ohne Attribute', () => {
|
|
32
|
+
let content = '<lux-app-header></lux-app-header>';
|
|
33
|
+
content = html_manipulator_1.HtmlManipulator.transform(content, 'lux-app-header', (0, manipulator_functions_1.renameElementFn)('lux-app-header-ac'));
|
|
34
|
+
expect(content).toEqual('<lux-app-header-ac></lux-app-header-ac>');
|
|
35
|
+
});
|
|
36
|
+
it('Sollte keine Subselectoren ersetzen', () => {
|
|
37
|
+
let content = '<lux-app-header></lux-app-header>';
|
|
38
|
+
content = html_manipulator_1.HtmlManipulator.transform(content, 'lux-app', (0, manipulator_functions_1.renameElementFn)('lux-app'));
|
|
39
|
+
expect(content).toEqual('<lux-app-header></lux-app-header>');
|
|
40
|
+
});
|
|
41
|
+
it('Sollte den Selector ersetzen - Alles in einer Zeile - Mit Attribut', () => {
|
|
42
|
+
let content = '<lux-app-header luxTitle="Lorem ipsum"></lux-app-header>';
|
|
43
|
+
content = html_manipulator_1.HtmlManipulator.transform(content, 'lux-app-header', (0, manipulator_functions_1.renameElementFn)('lux-app-header-ac'));
|
|
44
|
+
expect(content).toEqual('<lux-app-header-ac luxTitle="Lorem ipsum"></lux-app-header-ac>');
|
|
45
|
+
});
|
|
46
|
+
it('Sollte den Selector ersetzen - Alles in einer Zeile - Mit Leerzeichen', () => {
|
|
47
|
+
let content = '<lux-app-header ></lux-app-header >';
|
|
48
|
+
content = html_manipulator_1.HtmlManipulator.transform(content, 'lux-app-header', (0, manipulator_functions_1.renameElementFn)('lux-app-header-ac'));
|
|
49
|
+
expect(content).toEqual('<lux-app-header-ac ></lux-app-header-ac >');
|
|
50
|
+
});
|
|
51
|
+
it('Sollte den Selector ersetzen - Mehrere Zeilen - Ohne Leerzeichen', () => {
|
|
52
|
+
let content = `<lux-app-header
|
|
53
|
+
></lux-app-header>`;
|
|
54
|
+
content = html_manipulator_1.HtmlManipulator.transform(content, 'lux-app-header', (0, manipulator_functions_1.renameElementFn)('lux-app-header-ac'));
|
|
55
|
+
expect(content).toEqual(`<lux-app-header-ac
|
|
56
|
+
></lux-app-header-ac>`);
|
|
57
|
+
});
|
|
58
|
+
it('Sollte den Selector ersetzen - 2 Zeilen - Mit Leerzeichen', () => {
|
|
59
|
+
let content = `<lux-app-header
|
|
60
|
+
></lux-app-header>`;
|
|
61
|
+
content = html_manipulator_1.HtmlManipulator.transform(content, 'lux-app-header', (0, manipulator_functions_1.renameElementFn)('lux-app-header-ac'));
|
|
62
|
+
expect(content).toEqual(`<lux-app-header-ac
|
|
63
|
+
></lux-app-header-ac>`);
|
|
64
|
+
});
|
|
65
|
+
it('Sollte den Selector ersetzen - 3 Zeilen - Ohne Leerzeichen', () => {
|
|
66
|
+
let content = `<lux-app-header
|
|
67
|
+
>
|
|
68
|
+
</lux-app-header>`;
|
|
69
|
+
content = html_manipulator_1.HtmlManipulator.transform(content, 'lux-app-header', (0, manipulator_functions_1.renameElementFn)('lux-app-header-ac'));
|
|
70
|
+
expect(content).toEqual(`<lux-app-header-ac
|
|
71
|
+
>
|
|
72
|
+
</lux-app-header-ac>`);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
5
75
|
describe('addAttribute', () => {
|
|
6
76
|
it('Sollte sollte das Attribut luxTest1..5 hinzufügen', () => {
|
|
7
|
-
let result =
|
|
8
|
-
result =
|
|
9
|
-
result =
|
|
10
|
-
result =
|
|
11
|
-
result =
|
|
12
|
-
|
|
13
|
-
expect(result
|
|
14
|
-
expect(result
|
|
15
|
-
expect(result
|
|
16
|
-
expect(result
|
|
17
|
-
expect(result
|
|
18
|
-
expect(result
|
|
19
|
-
expect(result
|
|
20
|
-
expect(result
|
|
21
|
-
expect(result
|
|
77
|
+
let result = templateAdd001;
|
|
78
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-table', (0, manipulator_functions_1.addAttrFn)('luxTest1', '123'));
|
|
79
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-table', (0, manipulator_functions_1.addAttrFn)('[luxTest2]', '123'));
|
|
80
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-table', (0, manipulator_functions_1.addAttrFn)('(luxTest3)', '123'));
|
|
81
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-table', (0, manipulator_functions_1.addAttrFn)('[(luxTest4)]', '123'));
|
|
82
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-table', (0, manipulator_functions_1.addAttrFn)('luxTest5', ''));
|
|
83
|
+
expect(result).toContain('luxTest1="123"');
|
|
84
|
+
expect(result).toContain('[luxTest2]="123"');
|
|
85
|
+
expect(result).toContain('(luxTest3)="123"');
|
|
86
|
+
expect(result).toContain('[(luxTest4)]="123"');
|
|
87
|
+
expect(result).toContain('luxTest5=""');
|
|
88
|
+
expect(result).not.toContain('let-element=""');
|
|
89
|
+
expect(result).toContain('#testId\n');
|
|
90
|
+
expect(result).not.toContain('#testId=""');
|
|
91
|
+
expect(result).toContain('testDirective\n');
|
|
92
|
+
expect(result).not.toContain('testDirective=""');
|
|
22
93
|
});
|
|
23
94
|
});
|
|
24
95
|
describe('updateAttribute', () => {
|
|
25
96
|
it('Sollte sollte das Attribut luxTest1..5 updaten', () => {
|
|
26
|
-
let result =
|
|
27
|
-
result =
|
|
28
|
-
result =
|
|
29
|
-
result =
|
|
30
|
-
result =
|
|
31
|
-
|
|
32
|
-
expect(result
|
|
33
|
-
expect(result
|
|
34
|
-
expect(result
|
|
35
|
-
expect(result
|
|
36
|
-
expect(result
|
|
37
|
-
expect(result
|
|
38
|
-
expect(result
|
|
39
|
-
expect(result
|
|
40
|
-
expect(result
|
|
97
|
+
let result = templateUpdate001;
|
|
98
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-file-list', (0, manipulator_functions_1.updateAttrFn)('luxTest1', 'abc'));
|
|
99
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-file-list', (0, manipulator_functions_1.updateAttrFn)('luxTest2', 'true'));
|
|
100
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-file-list', (0, manipulator_functions_1.updateAttrFn)('luxTest3', 'onNewClick($event, param1)'));
|
|
101
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-file-list', (0, manipulator_functions_1.updateAttrFn)('luxTest4', 'newValue4'));
|
|
102
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-file-list', (0, manipulator_functions_1.updateAttrFn)('luxTest5', ''));
|
|
103
|
+
expect(result).toContain('luxTest1="abc"');
|
|
104
|
+
expect(result).toContain('[luxTest2]="true"');
|
|
105
|
+
expect(result).toContain('(luxTest3)="onNewClick($event, param1)"');
|
|
106
|
+
expect(result).toContain('[(luxTest4)]="newValue4"');
|
|
107
|
+
expect(result).toContain('[(luxTest5)]=""');
|
|
108
|
+
expect(result).not.toContain('let-element=""');
|
|
109
|
+
expect(result).toContain('#testId\n');
|
|
110
|
+
expect(result).not.toContain('#testId=""');
|
|
111
|
+
expect(result).toContain('testDirective\n');
|
|
112
|
+
expect(result).not.toContain('testDirective=""');
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
describe('updateIfAttribute', () => {
|
|
116
|
+
it('Sollte sollte das Attribut luxTest1..5 updaten', () => {
|
|
117
|
+
let result = templateUpdate002;
|
|
118
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, '*[luxIconName]', (0, manipulator_functions_1.updateAttrIfFn)('luxIconName', 'fas fa-user', 'lux-interface-user-single'));
|
|
119
|
+
expect(result).toContain('luxIconName="lux-interface-user-single"');
|
|
120
|
+
expect(result).not.toContain('luxIconName="fas fa-user"');
|
|
121
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, '*[luxIconName]', (0, manipulator_functions_1.updateAttrIfFn)('luxIconName', 'lux-interface-user-single', 'fas fa-user'));
|
|
122
|
+
expect(result).toEqual(templateUpdate002);
|
|
123
|
+
});
|
|
124
|
+
it('Sollte die Attribute von geschachtelten Elemente ersetzen ', () => {
|
|
125
|
+
let result = templateUpdate003;
|
|
126
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, '*[luxIconName]', (0, manipulator_functions_1.updateAttrIfFn)('luxIconName', 'fas fa-user', 'lux-interface-user-single'));
|
|
127
|
+
expect(result).toEqual('<lux-icon luxIconName="lux-interface-user-single"><lux-icon luxIconName="lux-interface-user-single"></lux-icon></lux-icon>');
|
|
41
128
|
});
|
|
42
129
|
});
|
|
43
130
|
describe('appendAttribute', () => {
|
|
44
131
|
it('Sollte sollte das Attribut luxTest1..5 ergänzen', () => {
|
|
45
|
-
let result =
|
|
46
|
-
result =
|
|
47
|
-
result =
|
|
48
|
-
result =
|
|
49
|
-
result =
|
|
50
|
-
|
|
51
|
-
expect(result
|
|
52
|
-
expect(result
|
|
53
|
-
expect(result
|
|
54
|
-
expect(result
|
|
55
|
-
expect(result
|
|
56
|
-
expect(result
|
|
57
|
-
expect(result
|
|
58
|
-
expect(result
|
|
59
|
-
expect(result
|
|
132
|
+
let result = templateAppend001;
|
|
133
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-file-list', (0, manipulator_functions_1.appendAttrFn)('luxTest1', '_suffix'));
|
|
134
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-file-list', (0, manipulator_functions_1.appendAttrFn)('luxTest2', '_suffix'));
|
|
135
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-file-list', (0, manipulator_functions_1.appendAttrFn)('luxTest3', '_suffix'));
|
|
136
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-file-list', (0, manipulator_functions_1.appendAttrFn)('luxTest4', '_suffix'));
|
|
137
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-file-list', (0, manipulator_functions_1.appendAttrFn)('luxTest5', '_suffix'));
|
|
138
|
+
expect(result).toContain('luxTest1="value1_suffix"');
|
|
139
|
+
expect(result).toContain('[luxTest2]="value2_suffix"');
|
|
140
|
+
expect(result).toContain('(luxTest3)="value3_suffix"');
|
|
141
|
+
expect(result).toContain('[(luxTest4)]="value4_suffix"');
|
|
142
|
+
expect(result).toContain('[(luxTest5)]="_suffix"');
|
|
143
|
+
expect(result).not.toContain('let-element=""');
|
|
144
|
+
expect(result).toContain('#testId\n');
|
|
145
|
+
expect(result).not.toContain('#testId=""');
|
|
146
|
+
expect(result).toContain('testDirective\n');
|
|
147
|
+
expect(result).not.toContain('testDirective=""');
|
|
60
148
|
});
|
|
61
149
|
});
|
|
62
150
|
describe('renameAttribute', () => {
|
|
63
151
|
it('Sollte sollte das Attribut luxTest1..5 umbenennen', () => {
|
|
64
|
-
let result =
|
|
65
|
-
result =
|
|
66
|
-
result =
|
|
67
|
-
result =
|
|
68
|
-
result =
|
|
69
|
-
|
|
70
|
-
expect(result
|
|
71
|
-
expect(result
|
|
72
|
-
expect(result
|
|
73
|
-
expect(result
|
|
74
|
-
expect(result
|
|
75
|
-
expect(result
|
|
76
|
-
expect(result
|
|
77
|
-
expect(result
|
|
78
|
-
expect(result
|
|
79
|
-
expect(result
|
|
80
|
-
expect(result
|
|
81
|
-
expect(result
|
|
82
|
-
expect(result
|
|
83
|
-
expect(result
|
|
152
|
+
let result = templateRename001;
|
|
153
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'mat-chip-list', (0, manipulator_functions_1.renameAttrFn)('luxTest1', 'luxTestNeu1'));
|
|
154
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'mat-chip-list', (0, manipulator_functions_1.renameAttrFn)('luxTest2', 'luxTestNeu2'));
|
|
155
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'mat-chip-list', (0, manipulator_functions_1.renameAttrFn)('luxTest3', 'luxTestNeu3'));
|
|
156
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'mat-chip-list', (0, manipulator_functions_1.renameAttrFn)('luxTest4', 'luxTestNeu4'));
|
|
157
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'mat-chip-list', (0, manipulator_functions_1.renameAttrFn)('luxTest5', 'luxTestNeu5'));
|
|
158
|
+
expect(result).toContain('luxTestNeu1="123"');
|
|
159
|
+
expect(result).not.toContain('luxTest1="123"');
|
|
160
|
+
expect(result).toContain('[luxTestNeu2]="123"');
|
|
161
|
+
expect(result).not.toContain('luxTest2="123"');
|
|
162
|
+
expect(result).toContain('(luxTestNeu3)="123"');
|
|
163
|
+
expect(result).not.toContain('luxTest3="123"');
|
|
164
|
+
expect(result).toContain('[(luxTestNeu4)]="123"');
|
|
165
|
+
expect(result).not.toContain('luxTest4="123"');
|
|
166
|
+
expect(result).toContain('[(luxTestNeu5)]=""');
|
|
167
|
+
expect(result).not.toContain('luxTest5=""');
|
|
168
|
+
expect(result).toContain('#testId\n');
|
|
169
|
+
expect(result).not.toContain('#testId=""');
|
|
170
|
+
expect(result).toContain('testDirective\n');
|
|
171
|
+
expect(result).not.toContain('testDirective=""');
|
|
172
|
+
expect(result).not.toContain('></input>');
|
|
84
173
|
});
|
|
85
174
|
it('Sollte sollte keine End-Tags für Void-Elements hinzufügen', () => {
|
|
86
|
-
const result =
|
|
87
|
-
expect(result
|
|
88
|
-
expect(result
|
|
89
|
-
expect(result
|
|
90
|
-
expect(result
|
|
91
|
-
expect(result
|
|
92
|
-
expect(result
|
|
93
|
-
expect(result
|
|
94
|
-
expect(result
|
|
95
|
-
expect(result
|
|
96
|
-
expect(result
|
|
97
|
-
expect(result
|
|
98
|
-
expect(result
|
|
99
|
-
expect(result
|
|
100
|
-
expect(result
|
|
175
|
+
const result = html_manipulator_1.HtmlManipulator.transform(templateRename002, 'input', (0, manipulator_functions_1.renameAttrFn)('typeWrong', 'type'));
|
|
176
|
+
expect(result).not.toContain('></input>');
|
|
177
|
+
expect(result).not.toContain('></area>');
|
|
178
|
+
expect(result).not.toContain('></base>');
|
|
179
|
+
expect(result).not.toContain('></br>');
|
|
180
|
+
expect(result).not.toContain('></col>');
|
|
181
|
+
expect(result).not.toContain('></embed>');
|
|
182
|
+
expect(result).not.toContain('></hr>');
|
|
183
|
+
expect(result).not.toContain('></img>');
|
|
184
|
+
expect(result).not.toContain('></link>');
|
|
185
|
+
expect(result).not.toContain('></meta>');
|
|
186
|
+
expect(result).not.toContain('></param>');
|
|
187
|
+
expect(result).not.toContain('></source>');
|
|
188
|
+
expect(result).not.toContain('></track>');
|
|
189
|
+
expect(result).not.toContain('></wbr>');
|
|
101
190
|
});
|
|
102
191
|
});
|
|
103
192
|
describe('removeAttribute', () => {
|
|
104
193
|
it('Sollte sollte das Attribut luxTest1..5 entfernen', () => {
|
|
105
|
-
let result =
|
|
106
|
-
result =
|
|
107
|
-
result =
|
|
108
|
-
result =
|
|
109
|
-
result =
|
|
110
|
-
|
|
111
|
-
expect(result
|
|
112
|
-
expect(result
|
|
113
|
-
expect(result
|
|
114
|
-
expect(result
|
|
115
|
-
expect(result
|
|
116
|
-
expect(result
|
|
117
|
-
expect(result
|
|
118
|
-
expect(result
|
|
119
|
-
expect(result
|
|
194
|
+
let result = templateRemove001;
|
|
195
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-file-list', (0, manipulator_functions_1.removeAttrFn)('luxTest1'));
|
|
196
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-file-list', (0, manipulator_functions_1.removeAttrFn)('luxTest2'));
|
|
197
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-file-list', (0, manipulator_functions_1.removeAttrFn)('luxTest3'));
|
|
198
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-file-list', (0, manipulator_functions_1.removeAttrFn)('luxTest4'));
|
|
199
|
+
result = html_manipulator_1.HtmlManipulator.transform(result, 'lux-file-list', (0, manipulator_functions_1.removeAttrFn)('luxTest5'));
|
|
200
|
+
expect(result).not.toContain('luxTest1');
|
|
201
|
+
expect(result).not.toContain('luxTest2');
|
|
202
|
+
expect(result).not.toContain('luxTest3');
|
|
203
|
+
expect(result).not.toContain('luxTest4');
|
|
204
|
+
expect(result).not.toContain('luxTest5');
|
|
205
|
+
expect(result).toContain('testDirective\n');
|
|
206
|
+
expect(result).not.toContain('testDirective=""');
|
|
207
|
+
expect(result).toContain('#filelistexamplewithoutform\n');
|
|
208
|
+
expect(result).not.toContain('#filelistexamplewithoutform=""');
|
|
209
|
+
expect(result).toContain('[luxHint]=""');
|
|
120
210
|
});
|
|
121
211
|
});
|
|
122
212
|
});
|
|
@@ -503,7 +593,7 @@ const templateUpdate001 = `
|
|
|
503
593
|
<div fxFlex="auto" fxLayout="column">
|
|
504
594
|
<h3>Ohne ReactiveForm</h3>
|
|
505
595
|
<lux-file-list
|
|
506
|
-
testDirective
|
|
596
|
+
testDirective
|
|
507
597
|
[luxLabel]="label"
|
|
508
598
|
[luxDownloadActionConfig]="downloadActionConfig"
|
|
509
599
|
[luxMaximumExtended]="maximumExtended"
|
|
@@ -523,16 +613,28 @@ const templateUpdate001 = `
|
|
|
523
613
|
[(luxTest5)]="value5"
|
|
524
614
|
(luxFocusIn)="log(showOutputEvents, 'luxFocusIn', $event)"
|
|
525
615
|
(luxFocusOut)="log(showOutputEvents, 'luxFocusOut', $event)"
|
|
526
|
-
#testId
|
|
616
|
+
#testId
|
|
527
617
|
>
|
|
528
618
|
</lux-file-list>
|
|
529
619
|
</div>
|
|
530
620
|
`;
|
|
621
|
+
const templateUpdate002 = `
|
|
622
|
+
<lux-icon
|
|
623
|
+
luxIconName="fas fa-user"
|
|
624
|
+
[luxIconSize]="iconSize"
|
|
625
|
+
[luxPadding]="padding"
|
|
626
|
+
[luxMargin]="margin"
|
|
627
|
+
[luxRounded]="rounded"
|
|
628
|
+
[luxColor]="color"
|
|
629
|
+
>
|
|
630
|
+
</lux-icon>
|
|
631
|
+
`;
|
|
632
|
+
const templateUpdate003 = `<lux-icon luxIconName="fas fa-user"><lux-icon luxIconName="fas fa-user"></lux-icon></lux-icon>`;
|
|
531
633
|
const templateAppend001 = `
|
|
532
634
|
<div fxFlex="auto" fxLayout="column">
|
|
533
635
|
<h3>Ohne ReactiveForm</h3>
|
|
534
636
|
<lux-file-list
|
|
535
|
-
testDirective
|
|
637
|
+
testDirective
|
|
536
638
|
[luxLabel]="label"
|
|
537
639
|
[luxDownloadActionConfig]="downloadActionConfig"
|
|
538
640
|
[luxMaximumExtended]="maximumExtended"
|
|
@@ -552,9 +654,39 @@ const templateAppend001 = `
|
|
|
552
654
|
[(luxTest5)]=""
|
|
553
655
|
(luxFocusIn)="log(showOutputEvents, 'luxFocusIn', $event)"
|
|
554
656
|
(luxFocusOut)="log(showOutputEvents, 'luxFocusOut', $event)"
|
|
555
|
-
#testId
|
|
657
|
+
#testId
|
|
556
658
|
>
|
|
557
659
|
</lux-file-list>
|
|
558
660
|
</div>
|
|
559
661
|
`;
|
|
662
|
+
const templateNotProcessedAttr001 = `
|
|
663
|
+
<div><lux-card><lux-card-content>Lorem ipsum</lux-card-content></lux-card>
|
|
664
|
+
<lux-card luxTitle="Test">
|
|
665
|
+
<lux-card-content>
|
|
666
|
+
<p>Lorem ipsum</p>
|
|
667
|
+
<lux-card><lux-card-content>Lorem ipsum</lux-card-content></lux-card>
|
|
668
|
+
</lux-card-content>
|
|
669
|
+
</lux-card>
|
|
670
|
+
</div>
|
|
671
|
+
`;
|
|
672
|
+
const resultNotProcessedAttr001 = `
|
|
673
|
+
<div><lux-card ${html_manipulator_1.ATTR_NOT_PROCESSED}><lux-card-content>Lorem ipsum</lux-card-content></lux-card>
|
|
674
|
+
<lux-card ${html_manipulator_1.ATTR_NOT_PROCESSED} luxTitle="Test">
|
|
675
|
+
<lux-card-content>
|
|
676
|
+
<p>Lorem ipsum</p>
|
|
677
|
+
<lux-card ${html_manipulator_1.ATTR_NOT_PROCESSED}><lux-card-content>Lorem ipsum</lux-card-content></lux-card>
|
|
678
|
+
</lux-card-content>
|
|
679
|
+
</lux-card>
|
|
680
|
+
</div>
|
|
681
|
+
`;
|
|
682
|
+
const templateCount001 = `
|
|
683
|
+
<div><lux-card><lux-card-content>Lorem ipsum</lux-card-content></lux-card>
|
|
684
|
+
<lux-card luxTitle="Test">
|
|
685
|
+
<lux-card-content>
|
|
686
|
+
<p>Lorem ipsum</p>
|
|
687
|
+
<lux-card><lux-card-content>Lorem ipsum</lux-card-content></lux-card>
|
|
688
|
+
</lux-card-content>
|
|
689
|
+
</lux-card>
|
|
690
|
+
</div>
|
|
691
|
+
`;
|
|
560
692
|
//# sourceMappingURL=html_spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html_spec.js","sourceRoot":"","sources":["html_spec.ts"],"names":[],"mappings":"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"}
|