@ui5/create-webcomponents-package 0.0.0-d4d43327a → 0.0.0-da0d3eb88

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.
Files changed (37) hide show
  1. package/CHANGELOG.md +918 -0
  2. package/README.md +5 -4
  3. package/create-package.js +64 -57
  4. package/package.json +1 -1
  5. package/template/.eslintignore +1 -1
  6. package/template/.eslintrc.js +5 -0
  7. package/template/bundle.esm.js +0 -2
  8. package/template/gitignore +3 -0
  9. package/template/npmrc +2 -0
  10. package/template/package-scripts.js +0 -1
  11. package/template/src/MyFirstComponent.hbs +6 -1
  12. package/template/src/MyFirstComponent.ts +23 -18
  13. package/template/src/i18n/messagebundle.properties +3 -2
  14. package/template/src/i18n/messagebundle_de.properties +1 -1
  15. package/template/src/i18n/messagebundle_en.properties +1 -1
  16. package/template/src/i18n/messagebundle_es.properties +1 -1
  17. package/template/src/i18n/messagebundle_fr.properties +1 -1
  18. package/template/src/themes/MyFirstComponent.css +16 -10
  19. package/template/src/themes/sap_fiori_3/parameters-bundle.css +1 -1
  20. package/template/src/themes/sap_horizon_dark/parameters-bundle.css +3 -0
  21. package/template/src/themes/sap_horizon_hcb/parameters-bundle.css +3 -0
  22. package/template/test/pages/css/index.css +36 -0
  23. package/template/test/pages/img/logo.png +0 -0
  24. package/template/test/pages/index.html +35 -30
  25. package/template/test/specs/Demo.spec.js +3 -2
  26. package/template/tsconfig.json +2 -0
  27. package/template/config/postcss.components/postcss.config.js +0 -1
  28. package/template/config/postcss.themes/postcss.config.js +0 -1
  29. package/template/global.d.ts +0 -12
  30. package/template/src/Assets.js +0 -5
  31. package/template/src/MyFirstComponent.js +0 -67
  32. package/template/src/themes/sap_belize_hcw/parameters-bundle.css +0 -3
  33. package/template/src/themes/sap_fiori_3_dark/parameters-bundle.css +0 -3
  34. package/template/src/themes/sap_fiori_3_hcb/parameters-bundle.css +0 -3
  35. package/template/src/themes/sap_fiori_3_hcw/parameters-bundle.css +0 -3
  36. /package/template/src/themes/{sap_belize → sap_horizon}/parameters-bundle.css +0 -0
  37. /package/template/src/themes/{sap_belize_hcb → sap_horizon_hcw}/parameters-bundle.css +0 -0
package/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  ![UI5 icon](https://raw.githubusercontent.com/SAP/ui5-webcomponents/main/docs/images/UI5_logo_wide.png)
2
2
 
3
+
3
4
  # UI5 Web Components - Create Package
4
5
 
5
6
  [![npm Package Version](https://badge.fury.io/js/%40ui5%2Fwebcomponents.svg)](https://www.npmjs.com/package/@ui5/webcomponents)
@@ -18,8 +19,8 @@ Usage:
18
19
 
19
20
  Options:
20
21
  --name <string> - defines the package name
21
- --tag <string> - defines the tag name of the sample web component that will be created in your new package
22
- --enable-typescript - enables TypeScript support for the package
22
+ --component-name <string> - defines the component class name that will be created in your new package
23
+ --tag <string> - defines the tag name of the sample web component that will be created in your new package. The tag will be derived from the component name if not provided.
23
24
  --skip - skips configuration and generates package with a default value for each parameter that wasn't passed
24
25
  ```
25
26
 
@@ -33,8 +34,8 @@ Usage:
33
34
  yarn create @ui5/webcomponents-package [OPTIONS]
34
35
  Options:
35
36
  --name <string> - defines the package name
37
+ --component-name <string> - defines the component class name that will be created in your new package
36
38
  --tag <string> - defines the tag name of the sample web component that will be created in your new package
37
- --enable-typescript - enables TypeScript support for the package
38
39
  --skip - skips configuration and generates package with a default value for each parameter that wasn't passed
39
40
  ```
40
41
 
@@ -47,7 +48,7 @@ components package.
47
48
  - [UI5 Web Components - Playground and API Reference](https://sap.github.io/ui5-webcomponents/playground/)
48
49
 
49
50
  ## Support
50
- We welcome all comments, suggestions, questions, and bug reports. Please follow our [Support Guidelines](https://github.com/SAP/ui5-webcomponents/blob/main/SUPPORT.md#-content) on how to report an issue, or chat with us in the `#webcomponents` channel of the [OpenUI5 Community Slack](https://join-ui5-slack.herokuapp.com/).
51
+ We welcome all comments, suggestions, questions, and bug reports. Please follow our [Support Guidelines](https://github.com/SAP/ui5-webcomponents/blob/main/SUPPORT.md#-content) on how to report an issue, or chat with us in the `#webcomponents` channel of the [OpenUI5 Community Slack](https://ui5-slack-invite.cfapps.eu10.hana.ondemand.com/).
51
52
 
52
53
  ## Contribute
53
54
  Please check our [Contribution Guidelines](https://github.com/SAP/ui5-webcomponents/blob/main/docs/6-contributing/02-conventions-and-guidelines.md).
package/create-package.js CHANGED
@@ -15,22 +15,33 @@ const version = JSON.parse(fs.readFileSync(path.join(__dirname, "package.json"))
15
15
  // from where all the files will be copied
16
16
  const TEMPLATE_DIR = path.join(`${__dirname}`, `template/`);
17
17
 
18
- // String utils
19
- const capitalizeFirst = str => str.substr(0,1).toUpperCase() + str.substr(1);
20
- const kebabToCamelCase = string => toCamelCase(string.split("-"));
21
- const toCamelCase = parts => {
22
- return parts.map((string, index) => {
23
- return index === 0 ? string.toLowerCase() : string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();
24
- }).join("");
18
+ const isGitIgnore = sourcePath => {
19
+ return sourcePath.includes("gitignore");
25
20
  };
26
- const isTypescriptRelatedFile = sourcePath => {
27
- return ["Assets.ts", "MyFirstComponent.ts", "tsconfig.json", "global.d.ts"].some(fileName => sourcePath.includes(fileName));
21
+ const isLogo = sourcePath => {
22
+ return sourcePath.includes("logo");
23
+ };
24
+ const isNPMRC = sourcePath => {
25
+ return sourcePath.includes("npmrc");
28
26
  };
29
27
 
30
28
  // Validation of user input
31
- const isNameValid = name => typeof name === "string" && name.match(/^[a-zA-Z0-9\-_]+$/);
29
+ const ComponentNamePattern = /^[A-Z][A-Za-z0-9]+$/;
30
+ const isPackageNameValid = name => typeof name === "string" && name.match(/^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/);
31
+ const isComponentNameValid = name => typeof name === "string" && ComponentNamePattern.test(name);
32
32
  const isTagValid = tag => typeof tag === "string" && tag.match(/^[a-z0-9]+?-[a-zA-Z0-9\-_]+?[a-z0-9]$/);
33
33
 
34
+ /**
35
+ * Hyphanates the given PascalCase string, f.e.:
36
+ * Foo -> "my-foo" (adds preffix)
37
+ * FooBar -> "foo-bar"
38
+ */
39
+ const hyphaneteComponentName = (componentName) => {
40
+ const result = componentName.replace(/([a-z])([A-Z])/g, '$1-$2' ).toLowerCase();
41
+
42
+ return result.includes("-") ? result : `my-${result}`;
43
+ };
44
+
34
45
  // Utils for building the file structure
35
46
  const replaceVarsInFileContent = (vars, content) => {
36
47
  for (let key in vars) {
@@ -45,17 +56,26 @@ const replaceVarsInFileName = (vars, fileName) => {
45
56
  };
46
57
 
47
58
  const copyFile = (vars, sourcePath, destPath) => {
48
- const ignoreJsRelated = vars.INIT_PACKAGE_VAR_TYPESCRIPT && sourcePath.includes("MyFirstComponent.js");
49
- const ignoreTsRelated = !vars.INIT_PACKAGE_VAR_TYPESCRIPT && isTypescriptRelatedFile(sourcePath);
50
-
51
- if (ignoreJsRelated || ignoreTsRelated) {
59
+ if (isLogo(sourcePath)) {
60
+ fs.copyFileSync(sourcePath, destPath);
52
61
  return;
53
62
  }
54
63
 
55
64
  let content = fs.readFileSync(sourcePath, { encoding: "UTF-8" });
56
65
  content = replaceVarsInFileContent(vars, content);
57
66
  destPath = replaceVarsInFileName(vars, destPath);
67
+
58
68
  fs.writeFileSync(destPath, content);
69
+
70
+ // Rename "gitignore" to ".gitignore" (npm init won't include ".gitignore", so we add it as "gitignore" and rename it later)
71
+ if (isGitIgnore(sourcePath)) {
72
+ fs.renameSync(destPath, destPath.replace("gitignore", ".gitignore"))
73
+ }
74
+
75
+ // Rename "npmrc" to ".npmrc" (npm init won't include ".npmrc", so we add it as "npmrc" and rename it later)
76
+ if (isNPMRC(sourcePath)) {
77
+ fs.renameSync(destPath, destPath.replace("npmrc", ".npmrc"));
78
+ }
59
79
  };
60
80
 
61
81
  const copyFiles = (vars, sourcePath, destPath) => {
@@ -72,19 +92,18 @@ const copyFiles = (vars, sourcePath, destPath) => {
72
92
  }
73
93
  };
74
94
 
75
- const generateFilesContent = (name, tag, typescript) => {
76
- const className = capitalizeFirst(kebabToCamelCase(tag));
95
+ const generateFilesContent = (packageName, componentName, skipSubfolder) => {
96
+ const tagName = argv.tag || hyphaneteComponentName(componentName);
77
97
 
78
98
  // All variables that will be replaced in the content of the resources/
79
99
  const vars = {
80
- INIT_PACKAGE_VAR_NAME: name,
81
- INIT_PACKAGE_VAR_TAG: tag,
82
- INIT_PACKAGE_VAR_CLASS_NAME: className,
83
- INIT_PACKAGE_VAR_TYPESCRIPT: typescript,
100
+ INIT_PACKAGE_VAR_NAME: packageName,
101
+ INIT_PACKAGE_VAR_TAG: tagName,
102
+ INIT_PACKAGE_VAR_CLASS_NAME: componentName,
84
103
  };
85
104
 
86
105
  const packageContent = {
87
- name,
106
+ name: packageName,
88
107
  version: "0.0.1",
89
108
  ui5: {
90
109
  webComponentsPackage: true,
@@ -113,18 +132,21 @@ const generateFilesContent = (name, tag, typescript) => {
113
132
  "devDependencies": {
114
133
  "@ui5/webcomponents-tools": version,
115
134
  "chromedriver": "*",
135
+ "typescript": "^5.2.2"
116
136
  },
117
137
  };
118
138
 
119
139
  // Update package.json
120
- const destDir = path.join(`./`, name);
140
+ let destDir = packageName.includes("@") ? packageName.slice(packageName.lastIndexOf("/") + 1) : packageName;
141
+
142
+ destDir = skipSubfolder ? path.join("./") : path.join("./", destDir);
121
143
  mkdirp.sync(destDir);
122
144
  fs.writeFileSync(path.join(destDir, "package.json"), JSON.stringify(packageContent, null, 2));
123
145
  // Copy files
124
146
  copyFiles(vars, TEMPLATE_DIR, destDir);
125
147
 
126
148
  console.log("\nPackage successfully created!\nNext steps:\n");
127
- console.log(`$ cd ${name}`);
149
+ console.log(`$ cd ${destDir}`);
128
150
 
129
151
  let userAgentInfo;
130
152
  try {
@@ -145,20 +167,24 @@ const generateFilesContent = (name, tag, typescript) => {
145
167
  // Main function
146
168
  const createWebcomponentsPackage = async () => {
147
169
  let response;
148
- if (argv.name && !isNameValid(argv.name)) {
149
- throw new Error("The package name should be a string (a-z, A-Z, 0-9).");
170
+ if (argv.name && !isPackageNameValid(argv.name)) {
171
+ throw new Error("The package name should be a string, starting with letter and containing the following symbols [a-z, A-Z, 0-9].");
172
+ }
173
+
174
+ if (argv.componentName && !isComponentNameValid(argv.componentName)) {
175
+ throw new Error("The component name should be a string, starting with a capital letter [A-Z][a-z], for example: Button, MyButton, etc.");
150
176
  }
151
177
 
152
178
  if (argv.tag && !isTagValid(argv.tag) ) {
153
- throw new Error("The tag should be in kebab-case (my-first-component f.e) and it can't be a single word.");
179
+ throw new Error("The tag should be in kebab-case (f.e my-component) and it can't be a single word.");
154
180
  }
155
181
 
156
- let name = argv.name || "my-package";
157
- let tag = argv.tag || "my-first-component";
158
- let typescriptSupport = !!argv.enableTypescript;
182
+ let packageName = argv.name || "my-package";
183
+ let componentName = argv.componentName || "MyComponent";
184
+ const skipSubfolder = !!argv.skipSubfolder;
159
185
 
160
186
  if (argv.skip) {
161
- return generateFilesContent(name, tag, typescriptSupport);
187
+ return generateFilesContent(packageName, componentName, skipSubfolder);
162
188
  }
163
189
 
164
190
  if (!argv.name) {
@@ -166,42 +192,23 @@ const createWebcomponentsPackage = async () => {
166
192
  type: "text",
167
193
  name: "name",
168
194
  message: "Package name:",
169
- validate: isNameValid,
170
- });
171
- name = response.name;
172
- }
173
-
174
- if (!typescriptSupport) {
175
- response = await prompts({
176
- type: "select",
177
- name: "language",
178
- message: "Project type:",
179
- choices: [
180
- {
181
- title: "JavaScript",
182
- value: false,
183
- },
184
- {
185
- title: "TypeScript",
186
- value: true,
187
- },
188
- ],
195
+ validate: (value) => isPackageNameValid(value) ? true : "Package name should be a string, starting with a letter and containing the following symbols [a-z, A-Z ,0-9, _, -].",
189
196
  });
190
- typescriptSupport = response.language;
197
+ packageName = response.name;
191
198
  }
192
199
 
193
- if (!argv.tag) {
200
+ if (!argv.componentName) {
194
201
  response = await prompts({
195
202
  type: "text",
196
- name: "tag",
203
+ name: "componentName",
197
204
  message: "Component name:",
198
- initial: "my-first-component",
199
- validate: isTagValid,
205
+ initial: "MyComponent",
206
+ validate: (value) => isComponentNameValid(value) ? true : "Component name should follow PascalCase naming convention (f.e. Button, MyButton, etc.).",
200
207
  });
201
- tag = response.tag;
208
+ componentName = response.componentName;
202
209
  }
203
210
 
204
- return generateFilesContent(name, tag, typescriptSupport);
211
+ return generateFilesContent(packageName, componentName, skipSubfolder);
205
212
  };
206
213
 
207
214
  createWebcomponentsPackage();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ui5/create-webcomponents-package",
3
- "version": "0.0.0-d4d43327a",
3
+ "version": "0.0.0-da0d3eb88",
4
4
  "description": "UI5 Web Components: create package",
5
5
  "author": "SAP SE (https://www.sap.com)",
6
6
  "license": "Apache-2.0",
@@ -2,4 +2,4 @@
2
2
  dist
3
3
  test
4
4
  src/generated
5
- jsdoc-dist
5
+ .eslintrc.js
@@ -0,0 +1,5 @@
1
+ const config = require("@ui5/webcomponents-tools/components-package/eslint.js");
2
+
3
+ // This eslint config is defined @ui5/webcomponents-tools,
4
+ // Feel free to override part of the configuration or provide entirely new config to fit your dev requirements.
5
+ module.exports = config;
@@ -6,7 +6,6 @@ import { getLanguage } from "@ui5/webcomponents-base/dist/config/Language.js";
6
6
  import { getCalendarType } from "@ui5/webcomponents-base/dist/config/CalendarType.js";
7
7
  import { getTheme, setTheme } from "@ui5/webcomponents-base/dist/config/Theme.js";
8
8
  import { getNoConflict, setNoConflict } from "@ui5/webcomponents-base/dist/config/NoConflict.js";
9
- import { getRTL } from "@ui5/webcomponents-base/dist/config/RTL.js";
10
9
  import { getFirstDayOfWeek } from "@ui5/webcomponents-base/dist/config/FormatSettings.js";
11
10
 
12
11
  // Enable additional themes and i18n texts
@@ -25,7 +24,6 @@ window["sap-ui-webcomponents-bundle"] = {
25
24
  getNoConflict,
26
25
  setNoConflict,
27
26
  getCalendarType,
28
- getRTL,
29
27
  getFirstDayOfWeek,
30
28
  },
31
29
  };
@@ -0,0 +1,3 @@
1
+ node_modules
2
+ dist
3
+ src/generated
package/template/npmrc ADDED
@@ -0,0 +1,2 @@
1
+ # Auto detect the chromedriver version
2
+ detect_chromedriver_version=true
@@ -2,7 +2,6 @@ const getScripts = require("@ui5/webcomponents-tools/components-package/nps.js")
2
2
 
3
3
  const options = {
4
4
  port: 8080,
5
- typescript: INIT_PACKAGE_VAR_TYPESCRIPT,
6
5
  };
7
6
 
8
7
  const scripts = getScripts(options);
@@ -1 +1,6 @@
1
- <div>This is: INIT_PACKAGE_VAR_TAG. {{pleaseWaitText}}</div>
1
+ <div
2
+ class="root"
3
+ @click="{{onClick}}"
4
+ >
5
+ {{counterText}} :: {{count}}
6
+ </div>
@@ -1,8 +1,10 @@
1
1
  import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
2
  import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
3
+ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
3
4
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
4
5
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
5
6
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
7
+ import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
6
8
 
7
9
  // Template
8
10
  import INIT_PACKAGE_VAR_CLASS_NAMETemplate from "./generated/templates/INIT_PACKAGE_VAR_CLASS_NAMETemplate.lit.js";
@@ -10,7 +12,7 @@ import INIT_PACKAGE_VAR_CLASS_NAMETemplate from "./generated/templates/INIT_PACK
10
12
  // Styles
11
13
  import INIT_PACKAGE_VAR_CLASS_NAMECss from "./generated/themes/INIT_PACKAGE_VAR_CLASS_NAME.css.js";
12
14
 
13
- import { PLEASE_WAIT } from "./generated/i18n/i18n-defaults.js";
15
+ import { COUNT } from "./generated/i18n/i18n-defaults.js";
14
16
 
15
17
  /**
16
18
  * @class
@@ -20,33 +22,36 @@ import { PLEASE_WAIT } from "./generated/i18n/i18n-defaults.js";
20
22
  * The <code>INIT_PACKAGE_VAR_TAG</code> component is a demo component that displays some text.
21
23
  *
22
24
  * @constructor
23
- * @alias demo.components.INIT_PACKAGE_VAR_CLASS_NAME
24
- * @extends sap.ui.webc.base.UI5Element
25
- * @tagname INIT_PACKAGE_VAR_TAG
25
+ * @extends UI5Element
26
26
  * @public
27
27
  */
28
- @customElement("INIT_PACKAGE_VAR_TAG")
28
+ @customElement({
29
+ tag: "INIT_PACKAGE_VAR_TAG",
30
+ renderer: litRender,
31
+ styles: INIT_PACKAGE_VAR_CLASS_NAMECss,
32
+ template: INIT_PACKAGE_VAR_CLASS_NAMETemplate,
33
+ })
29
34
  class INIT_PACKAGE_VAR_CLASS_NAME extends UI5Element {
30
35
  static i18nBundle: I18nBundle;
31
36
 
32
- static get render() {
33
- return litRender;
37
+ static async onDefine() {
38
+ INIT_PACKAGE_VAR_CLASS_NAME.i18nBundle = await getI18nBundle("INIT_PACKAGE_VAR_NAME");
34
39
  }
35
40
 
36
- static get template() {
37
- return INIT_PACKAGE_VAR_CLASS_NAMETemplate;
38
- }
41
+ /**
42
+ * Defines the component count.
43
+ * @default 0
44
+ * @public
45
+ */
46
+ @property({ validator: Integer, defaultValue: 0 })
47
+ count!: number;
39
48
 
40
- static get styles() {
41
- return INIT_PACKAGE_VAR_CLASS_NAMECss;
42
- }
43
-
44
- static async onDefine() {
45
- INIT_PACKAGE_VAR_CLASS_NAME.i18nBundle = await getI18nBundle("INIT_PACKAGE_VAR_NAME");
49
+ onClick() {
50
+ this.count++;
46
51
  }
47
52
 
48
- get pleaseWaitText() {
49
- return INIT_PACKAGE_VAR_CLASS_NAME.i18nBundle.getText(PLEASE_WAIT);
53
+ get counterText() {
54
+ return INIT_PACKAGE_VAR_CLASS_NAME.i18nBundle.getText(COUNT);
50
55
  }
51
56
  }
52
57
 
@@ -1,2 +1,3 @@
1
- #please wait text for the sample component
2
- PLEASE_WAIT=wait
1
+ # the "counter" text for the sample component
2
+ COUNT=Count
3
+
@@ -1 +1 @@
1
- PLEASE_WAIT=Bitte warten
1
+ COUNT=Zählung
@@ -1 +1 @@
1
- PLEASE_WAIT=Please wait
1
+ COUNT=Count
@@ -1 +1 @@
1
- PLEASE_WAIT=Espere
1
+ COUNT=Cuenta
@@ -1 +1 @@
1
- PLEASE_WAIT=Patientez.
1
+ COUNT=Comte
@@ -1,11 +1,17 @@
1
- :host {
2
- border: 2px solid var(--my-component-border-color);
3
- background-color: var(--sapBackgroundColor);
4
- color: var(--sapTextColor);
5
- display: block;
6
- width: 24rem;
7
- height: 3rem;
8
- text-align: center;
9
- vertical-align: middle;
10
- line-height: 3rem;
1
+ .root {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ flex-direction: column;
6
+ padding: 0 2rem;
7
+ color: var(--sapAvatar_6_TextColor);
8
+ background-color: var(--sapAvatar_6_Background);
9
+ border: 2px solid var(--my-component-border-color);
10
+ border-radius: 0.5rem;
11
+ box-shadow: var(--sapContent_Shadow0);
12
+ text-align: center;
13
+ line-height: 3rem;
14
+ font-size: 1.25rem;
15
+ user-select: none;
16
+ cursor: pointer;
11
17
  }
@@ -1,3 +1,3 @@
1
1
  :root {
2
- --my-component-border-color: green;
2
+ --my-component-border-color: blue;
3
3
  }
@@ -0,0 +1,3 @@
1
+ :root {
2
+ --my-component-border-color: darkblue;
3
+ }
@@ -0,0 +1,3 @@
1
+ :root {
2
+ --my-component-border-color: white;
3
+ }
@@ -0,0 +1,36 @@
1
+ body {
2
+ color: var(--sapTextColor);
3
+ background-color: var(--sapBackgroundColor);
4
+ font-size: var(--sapFontSize);
5
+ font-family: var(--sapFontFamily);
6
+ }
7
+
8
+ h1 {
9
+ font-size: var(--sapFontHeader2Size);
10
+ margin-bottom: 0.5rem;
11
+ }
12
+
13
+ h2 {
14
+ font-size: var(--sapFontHeader3Size);
15
+ margin-bottom: 0.5rem;
16
+ }
17
+
18
+ .app, .app-settings, .app-docs, .app-first-component {
19
+ display: flex;
20
+ align-items: center;
21
+ justify-content: center;
22
+ flex-direction: column;
23
+ }
24
+
25
+ .app-first-component {
26
+ margin-bottom: 3rem;
27
+ }
28
+
29
+ .app-docs {
30
+ margin-top: 3rem;
31
+ }
32
+
33
+ a {
34
+ margin: 0.25rem;
35
+ color: var(--sapLinkColor);
36
+ }
Binary file
@@ -10,43 +10,48 @@
10
10
 
11
11
  <script data-ui5-config type="application/json">
12
12
  {
13
+ "theme": "sap_horizon_dark",
13
14
  "language": "EN"
14
15
  }
15
16
  </script>
16
17
 
18
+ <link rel="stylesheet" type="text/css" href="./css/index.css">
17
19
  <script src="../../bundle.esm.js" type="module"></script>
18
-
19
- <style>
20
- code { color: blue; font-size: small; }
21
- </style>
22
-
23
20
  </head>
24
21
 
25
22
  <body>
26
- <ul>
27
- <li><a href="?sap-ui-theme=sap_fiori_3">Fiori 3</a></li>
28
- <li><a href="?sap-ui-theme=sap_fiori_3_dark">Fiori 3 Dark</a></li>
29
- <li><a href="?sap-ui-theme=sap_fiori_3_hcb">Fiori 3 High Contrast Black</a></li>
30
- <li><a href="?sap-ui-theme=sap_fiori_3_hcw">Fiori 3 High Contrast White</a></li>
31
- <li><a href="?sap-ui-theme=sap_belize">Belize</a></li>
32
- <li><a href="?sap-ui-theme=sap_belize_hcb">Belize High Contrast Black</a></li>
33
- <li><a href="?sap-ui-theme=sap_belize_hcw">Belize High Contrast White</a></li>
34
- </ul>
35
- <br>
36
- <span>or in the browser console, for example:</span>
37
- <code>window['sap-ui-webcomponents-bundle'].configuration.setTheme("sap_belize_hcb")</code>
38
-
39
- <br><br>
40
-
41
- <a href="?sap-ui-language=en">English</a> |
42
- <a href="?sap-ui-language=de">German</a> |
43
- <a href="?sap-ui-language=es">Spanish</a> |
44
- <a href="?sap-ui-language=fr">French</a>
45
-
46
- <br><br>
47
-
48
- <h1>Test your web components here</h1>
49
- <INIT_PACKAGE_VAR_TAG id="myFirstComponent"></INIT_PACKAGE_VAR_TAG>
23
+ <div class="app">
24
+ <a href="https://sap.github.io/ui5-webcomponents/playground/?path=/docs/docs-getting-started-first-steps--docs" target="_blank"><img src="./img/logo.png" alt="logo"/></a>
25
+
26
+ <div class="app-first-component">
27
+ <h1>Hooray! It's Your First Web Component!</h1>
28
+ <div> <pre>&lt;INIT_PACKAGE_VAR_TAG>&lt;/INIT_PACKAGE_VAR_TAG> </pre></div>
29
+ <INIT_PACKAGE_VAR_TAG id="myFirstComponent"></INIT_PACKAGE_VAR_TAG>
30
+ </div>
31
+
32
+ <div class="app-settings">
33
+
34
+ <h2>Switch themes</h2>
35
+ <div style="display: flex; flex-direction: row;">
36
+ <a class="link" href="?sap-ui-theme=sap_horizon">Horizon</a>
37
+ <a class="link" href="?sap-ui-theme=sap_horizon_dark">Horizon Dark</a>
38
+ <a class="link" href="?sap-ui-theme=sap_horizon_hcb">Horizon High Contrast Black</a>
39
+ <a class="link" href="?sap-ui-theme=sap_horizon_hcw">Horizon High Contrast White</a>
40
+ </div>
41
+
42
+ <h2>Switch language</h2>
43
+ <div>
44
+ <a class="link" href="?sap-ui-language=en">English</a>
45
+ <a class="link" href="?sap-ui-language=de">German</a>
46
+ <a class="link" href="?sap-ui-language=es">Spanish</a>
47
+ <a class="link" href="?sap-ui-language=fr">French</a>
48
+ </div>
49
+ </div>
50
+
51
+ <div class="app-docs">
52
+ <h2>Documentation</h2>
53
+ <a class="link" href="https://sap.github.io/ui5-webcomponents/playground/?path=/docs/docs-development-custom-ui5-web-components-packages--docs">Custom Component Development</a>
54
+ </div>
55
+ </div>
50
56
  </body>
51
-
52
57
  </html>
@@ -1,10 +1,11 @@
1
1
  const assert = require("assert");
2
2
 
3
3
  describe("INIT_PACKAGE_VAR_TAG rendering", async () => {
4
- await browser.url("test/pages/index.html");
4
+ before(async () => {
5
+ await browser.url("test/pages/index.html");
6
+ });
5
7
 
6
8
  it("tests if web component is correctly rendered", async () => {
7
-
8
9
  const innerContent = await browser.$("#myFirstComponent").shadow$("div");
9
10
 
10
11
  assert.ok(innerContent, "content rendered");
@@ -2,11 +2,13 @@
2
2
  "include": ["src/**/*", "global.d.ts"],
3
3
  "compilerOptions": {
4
4
  "target": "ES2021",
5
+ "lib": ["DOM", "DOM.Iterable", "ES2023"],
5
6
  // Generate d.ts files
6
7
  "declaration": true,
7
8
  "outDir": "dist",
8
9
  "skipLibCheck": true,
9
10
  "sourceMap": true,
11
+ "inlineSources": true,
10
12
  "strict": true,
11
13
  "moduleResolution": "node",
12
14
  "experimentalDecorators": true,
@@ -1 +0,0 @@
1
- module.exports = require("@ui5/webcomponents-tools/components-package/postcss.components.js"); // eslint-disable-line
@@ -1 +0,0 @@
1
- module.exports = require("@ui5/webcomponents-tools/components-package/postcss.themes.js"); // eslint-disable-line
@@ -1,12 +0,0 @@
1
- // eslint-disable-next-line
2
- import "@ui5/webcomponents-base/dist/global";
3
- import { TemplateFunction } from "@ui5/webcomponents-base/dist/renderer/executeTemplate.js";
4
-
5
- export {};
6
-
7
- declare global {
8
- module "*.lit.js" {
9
- const content: TemplateFunction;
10
- export default content;
11
- }
12
- }
@@ -1,5 +0,0 @@
1
- import "@ui5/webcomponents-theming/dist/Assets.js"; // Theming
2
-
3
- // own INIT_PACKAGE_VAR_NAME package assets
4
- import "./generated/json-imports/Themes.js";
5
- import "./generated/json-imports/i18n.js";