@ui5/create-webcomponents-package 0.0.0-7c7170d4a → 0.0.0-7d8c57f70
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/CHANGELOG.md +3 -266
- package/README.md +2 -0
- package/create-package.js +61 -4
- package/package.json +1 -1
- package/template/.eslintignore +1 -0
- package/template/gitignore +1 -0
- package/template/package-scripts.js +1 -0
- package/template/src/Assets.js +5 -0
- package/template/src/MyFirstComponent.js +82 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
## [1.24.7](https://github.com/SAP/ui5-webcomponents/compare/v1.24.6...v1.24.7) (2024-07-08)
|
|
7
7
|
|
|
8
8
|
**Note:** Version bump only for package @ui5/create-webcomponents-package
|
|
9
9
|
|
|
@@ -11,7 +11,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
## [1.24.6](https://github.com/SAP/ui5-webcomponents/compare/v1.24.5...v1.24.6) (2024-07-01)
|
|
15
15
|
|
|
16
16
|
**Note:** Version bump only for package @ui5/create-webcomponents-package
|
|
17
17
|
|
|
@@ -19,7 +19,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
## [1.24.3](https://github.com/SAP/ui5-webcomponents/compare/v1.24.2...v1.24.3) (2024-05-14)
|
|
23
23
|
|
|
24
24
|
**Note:** Version bump only for package @ui5/create-webcomponents-package
|
|
25
25
|
|
|
@@ -27,269 +27,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
|
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
# [2.0.0-rc.0](https://github.com/SAP/ui5-webcomponents/compare/v1.24.0...v2.0.0-rc.0) (2024-04-09)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
### chore
|
|
34
|
-
|
|
35
|
-
* bring release-2.0 to main ([#8651](https://github.com/SAP/ui5-webcomponents/issues/8651)) ([69271c9](https://github.com/SAP/ui5-webcomponents/commit/69271c9468c7dd54f90710fc4613ae0a79f85cef)), closes [#8494](https://github.com/SAP/ui5-webcomponents/issues/8494) [#8496](https://github.com/SAP/ui5-webcomponents/issues/8496) [#8461](https://github.com/SAP/ui5-webcomponents/issues/8461) [#8497](https://github.com/SAP/ui5-webcomponents/issues/8497) [#8461](https://github.com/SAP/ui5-webcomponents/issues/8461) [#8504](https://github.com/SAP/ui5-webcomponents/issues/8504) [#8509](https://github.com/SAP/ui5-webcomponents/issues/8509) [#8507](https://github.com/SAP/ui5-webcomponents/issues/8507) [#8511](https://github.com/SAP/ui5-webcomponents/issues/8511) [#8501](https://github.com/SAP/ui5-webcomponents/issues/8501) [#8461](https://github.com/SAP/ui5-webcomponents/issues/8461) [#8503](https://github.com/SAP/ui5-webcomponents/issues/8503) [#8461](https://github.com/SAP/ui5-webcomponents/issues/8461) [#8506](https://github.com/SAP/ui5-webcomponents/issues/8506) [#8502](https://github.com/SAP/ui5-webcomponents/issues/8502) [#8524](https://github.com/SAP/ui5-webcomponents/issues/8524) [#8461](https://github.com/SAP/ui5-webcomponents/issues/8461) [#8525](https://github.com/SAP/ui5-webcomponents/issues/8525) [#8461](https://github.com/SAP/ui5-webcomponents/issues/8461) [#8518](https://github.com/SAP/ui5-webcomponents/issues/8518) [#8461](https://github.com/SAP/ui5-webcomponents/issues/8461) [#8526](https://github.com/SAP/ui5-webcomponents/issues/8526) [#8529](https://github.com/SAP/ui5-webcomponents/issues/8529) [#8528](https://github.com/SAP/ui5-webcomponents/issues/8528) [#8531](https://github.com/SAP/ui5-webcomponents/issues/8531) [#8532](https://github.com/SAP/ui5-webcomponents/issues/8532) [#8534](https://github.com/SAP/ui5-webcomponents/issues/8534) [#8163](https://github.com/SAP/ui5-webcomponents/issues/8163) [#8527](https://github.com/SAP/ui5-webcomponents/issues/8527) [#8538](https://github.com/SAP/ui5-webcomponents/issues/8538) [#8521](https://github.com/SAP/ui5-webcomponents/issues/8521) [#8461](https://github.com/SAP/ui5-webcomponents/issues/8461) [#8542](https://github.com/SAP/ui5-webcomponents/issues/8542) [#8461](https://github.com/SAP/ui5-webcomponents/issues/8461) [#8548](https://github.com/SAP/ui5-webcomponents/issues/8548) [#8555](https://github.com/SAP/ui5-webcomponents/issues/8555) [#8559](https://github.com/SAP/ui5-webcomponents/issues/8559) [#8565](https://github.com/SAP/ui5-webcomponents/issues/8565) [#8570](https://github.com/SAP/ui5-webcomponents/issues/8570) [#8558](https://github.com/SAP/ui5-webcomponents/issues/8558) [#8568](https://github.com/SAP/ui5-webcomponents/issues/8568) [#8596](https://github.com/SAP/ui5-webcomponents/issues/8596) [#8192](https://github.com/SAP/ui5-webcomponents/issues/8192) [#8606](https://github.com/SAP/ui5-webcomponents/issues/8606) [#8605](https://github.com/SAP/ui5-webcomponents/issues/8605) [#8600](https://github.com/SAP/ui5-webcomponents/issues/8600) [#8602](https://github.com/SAP/ui5-webcomponents/issues/8602) [#8593](https://github.com/SAP/ui5-webcomponents/issues/8593)
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
### BREAKING CHANGES
|
|
39
|
-
|
|
40
|
-
* "Device#isIE" method has been removed and no longer available
|
|
41
|
-
|
|
42
|
-
Related to https://github.com/SAP/ui5-webcomponents/issues/8461
|
|
43
|
-
* Removed the `CSP.js` module and the creation of `<style>` and `<link>` tags, as all browsers now support adoptedStyleSheets. The following APIs are not available any more and should not be used:
|
|
44
|
-
```ts
|
|
45
|
-
import { setUseLinks } from "@ui5/webcomponents-base/dist/CSP.js"
|
|
46
|
-
import { setPackageCSSRoot } from "@ui5/webcomponents-base/dist/CSP.js"
|
|
47
|
-
import { setPreloadLinks } from "@ui5/webcomponents-base/dist/CSP.js"
|
|
48
|
-
```
|
|
49
|
-
* Removed the `ICardHeader` interface. If you previously used the interface
|
|
50
|
-
```ts
|
|
51
|
-
import type { ICardHeader } from "@ui5/webcomponents-base/dist/Card.js"
|
|
52
|
-
```
|
|
53
|
-
Use the CardHeader type instead:
|
|
54
|
-
```ts
|
|
55
|
-
import type CardHeader from "@ui5/webcomponents-base/dist/CardHeader.js"
|
|
56
|
-
```
|
|
57
|
-
* Removed the `IUploadCollectionItem` interface. If you previously used the interface:
|
|
58
|
-
```js
|
|
59
|
-
import type { IUploadCollectionItem} from "@ui5/webcomponents-fiori/dist/UploadCollection.js"
|
|
60
|
-
```
|
|
61
|
-
Use the `UploadCollectionItem` type instead:
|
|
62
|
-
```js
|
|
63
|
-
import type UploadCollectionItem from "@ui5/webcomponents-fiori/dist/UploadCollectionItem.js"
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
Related to https://github.com/SAP/ui5-webcomponents/issues/8461
|
|
67
|
-
* The `size` property now accepts different values. If you previously used it like:
|
|
68
|
-
```html
|
|
69
|
-
<ui5-busy-indicator size="Small"></ui5-busy-indicator>
|
|
70
|
-
```
|
|
71
|
-
Now use the new values instead:
|
|
72
|
-
```html
|
|
73
|
-
<ui5-busy-indicator size="S"></ui5-busy-indicator>
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
Related to https://github.com/SAP/ui5-webcomponents/issues/8461
|
|
77
|
-
* The `status` property and its shadow part have been renamed. If you previously used them:
|
|
78
|
-
```html
|
|
79
|
-
<style>
|
|
80
|
-
.cardHeader::part(status) { ... }
|
|
81
|
-
</style>
|
|
82
|
-
<ui5-card-header status="3 of 10"></ui5-popover>
|
|
83
|
-
```
|
|
84
|
-
Now use `additionalText` instead:
|
|
85
|
-
```html
|
|
86
|
-
<style>
|
|
87
|
-
.cardHeader::part(additional-text) { ... }
|
|
88
|
-
</style>
|
|
89
|
-
<ui5-card-header class="cardHeader" additional-text="3 of 10"></ui5-card-header>
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
Related to https://github.com/SAP/ui5-webcomponents/issues/8461
|
|
93
|
-
* The `pageIndicatorStyle` no longer exists. If you previously used it like:
|
|
94
|
-
```html
|
|
95
|
-
<ui5-carousel page-indicator-style="Numeric"></ui5-carousel>
|
|
96
|
-
```
|
|
97
|
-
Now you should use `pageIndicatorType` instead:
|
|
98
|
-
```html
|
|
99
|
-
<ui5-carousel page-indicator-type="Numeric"></ui5-carousel>
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
Related to https://github.com/SAP/ui5-webcomponents/issues/8461
|
|
103
|
-
* Removed `UI5Element#render` method in favour of `UI5Element#renderer`. If you previously used "render"
|
|
104
|
-
```js
|
|
105
|
-
class MyClass extends UI5Element {
|
|
106
|
-
static get render() {
|
|
107
|
-
return litRenderer;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
```
|
|
111
|
-
start using "renderer"
|
|
112
|
-
```ts
|
|
113
|
-
class MyClass extends UI5Element {
|
|
114
|
-
static get renderer() {
|
|
115
|
-
return litRenderer;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
```
|
|
119
|
-
* Remove JavaScript template option from @ui5/create-webcomponents-package
|
|
120
|
-
Previously `npm init @ui5/webcomponents-package` used to create JS-based project, however now it will be TypeScript-based project.
|
|
121
|
-
If you previously used `npm init @ui5/webcomponents-package --enable-typescript` to create TypeScript-based project, now it's by default, e.g `npm init @ui5/webcomponents-package` and `--enable-typescript` is removed.
|
|
122
|
-
* The `Left` and `Right` options option have been renamed. If you previously used them to set the placement or the alignment of the popover:
|
|
123
|
-
```html
|
|
124
|
-
<ui5-popover horizontal-align="Left" placement-type="Left"></ui5-popover>
|
|
125
|
-
```
|
|
126
|
-
Now use `Start` or `End` instead:
|
|
127
|
-
```html
|
|
128
|
-
<ui5-popover horizontal-align="Start" placement-type="Start"></ui5-popover>
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
Related to https://github.com/SAP/ui5-webcomponents/issues/8461
|
|
132
|
-
|
|
133
|
-
* docs: deploy v2 preview
|
|
134
|
-
* Remove `soccor` icon. Use `soccer` instead.
|
|
135
|
-
* Remove `add-polygone` icon. Use `add-polygon` instead.
|
|
136
|
-
* The JSDoc plugin has been removed, and the generation of api.json has stopped. If you previously relied on the `ui5-package/dist/api.json file`, you can now use `ui5-package/dist/custom-elements.json`
|
|
137
|
-
* All Assets-static.js modules are removed. If you previously imported any Assets-static.js module from any package:
|
|
138
|
-
```ts
|
|
139
|
-
import "@ui5/webcomponents/dist/Assets-static.js";
|
|
140
|
-
import "@ui5/webcomponents-icons/dist/Assets-static.js"
|
|
141
|
-
```
|
|
142
|
-
use the dynamic equivalent of it:
|
|
143
|
-
```ts
|
|
144
|
-
import "@ui5/webcomponents/dist/Assets.js";
|
|
145
|
-
import "@ui5/webcomponents-icons/dist/Assets.js"
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
Related to: https://github.com/SAP/ui5-webcomponents/issues/8461
|
|
149
|
-
* The event `selected-dates-change ` is renamed to `selection-change`. In addition the event details
|
|
150
|
-
`values` and `dates` are renamed to `selectedValues` and `selectedDateValues`. If you previously used the Calendar event as follows:
|
|
151
|
-
```ts
|
|
152
|
-
myCalendar.addEventListener("selected-dates-change", () => {
|
|
153
|
-
const values = e.detail.values;
|
|
154
|
-
const dates = e.detail.dates;
|
|
155
|
-
})
|
|
156
|
-
```
|
|
157
|
-
Now you have to use the new event name and details:
|
|
158
|
-
```ts
|
|
159
|
-
myCalendar.addEventListener("selection-change", () => {
|
|
160
|
-
const values = event.detail.selectedValues;
|
|
161
|
-
const dates = event.detail.selectedDateValues;
|
|
162
|
-
})
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
Related to: https://github.com/SAP/ui5-webcomponents/issues/8461
|
|
166
|
-
* The property `color` is renamed to `value`. If you previously used the change event of the ColorPicker as follows:
|
|
167
|
-
```html
|
|
168
|
-
<ui5-color-picker color="red"></ui5-color-picker>
|
|
169
|
-
```
|
|
170
|
-
Now you have to use it like this:
|
|
171
|
-
```html
|
|
172
|
-
<ui5-color-picker value="red"></ui5-color-picker>
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
Related to: https://github.com/SAP/ui5-webcomponents/issues/8461
|
|
176
|
-
* JavaScript projects may not function properly with the tools package.
|
|
177
|
-
* The `openPopover` and `showAt` methods are removed in favor of `open` and `opener` properties. If you previously used the imperative API:
|
|
178
|
-
```js
|
|
179
|
-
button.addEventListener("click", function(event) {
|
|
180
|
-
colorPalettePopover.showAt(this);
|
|
181
|
-
});
|
|
182
|
-
```
|
|
183
|
-
Now the declarative API should be used instead:
|
|
184
|
-
```html
|
|
185
|
-
<ui5-button id="opener">Open</ui5-button>
|
|
186
|
-
<ui5-color-palette-popover opener="opener">
|
|
187
|
-
```
|
|
188
|
-
```js
|
|
189
|
-
button.addEventListener("click", function(event) {
|
|
190
|
-
colorPalettePopover.open = !colorPalettePopover.open;
|
|
191
|
-
});
|
|
192
|
-
```
|
|
193
|
-
* The `ui5-bar` component is now in `main` library. If you previously imported the `ui5-bar` from `fiori`:
|
|
194
|
-
```ts
|
|
195
|
-
import "@ui5/webcomponents-fiori/dist/Bar.js;
|
|
196
|
-
```
|
|
197
|
-
Now, import the `ui5-bar` from `main`:
|
|
198
|
-
```ts
|
|
199
|
-
import "@ui5/webcomponents/dist/Bar.js";
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
Related to: https://github.com/SAP/ui5-webcomponents/issues/8461
|
|
203
|
-
* If you have previously used:
|
|
204
|
-
```html
|
|
205
|
-
<ui5-tab id="nestedTab" slot="subTabs"></ui5-tab>
|
|
206
|
-
```
|
|
207
|
-
Now use:
|
|
208
|
-
```html
|
|
209
|
-
<ui5-tab id="nestedTab" slot="items"></ui5-tab>
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
Relates to https://github.com/SAP/ui5-webcomponents/issues/8461
|
|
213
|
-
* If you have previously used:
|
|
214
|
-
```html
|
|
215
|
-
<ui5-tabcontainer tabs-overflow-mode="StartAndEnd"></ui5-tabcontainer>
|
|
216
|
-
```
|
|
217
|
-
Now use:
|
|
218
|
-
```html
|
|
219
|
-
<ui5-tabcontainer overflow-mode="StartAndEnd"></ui5-tabcontainer>
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
Relates to https://github.com/SAP/ui5-webcomponents/issues/8461
|
|
223
|
-
* If you previously imported `TabContainerBackgroundDesign`, use `BackgroundDesign` instead.
|
|
224
|
-
|
|
225
|
-
Relates to https://github.com/SAP/ui5-webcomponents/issues/8461
|
|
226
|
-
* The showOverflow property is removed. If previously you have used:
|
|
227
|
-
```html
|
|
228
|
-
<ui5-tabcontainer show-overflow></ui5-tabcontainer>
|
|
229
|
-
```
|
|
230
|
-
now use the overflowButton slot:
|
|
231
|
-
```html
|
|
232
|
-
<ui5-tabcontainer>
|
|
233
|
-
<ui5-button slot="startOverflowButton" id="startOverflowButton">Start</ui5-button>
|
|
234
|
-
<ui5-button slot="overflowButton" id="endOverflowButton">End</ui5-button>
|
|
235
|
-
</ui5-tabcontainer>
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
Relates to https://github.com/SAP/ui5-webcomponents/issues/8461
|
|
239
|
-
* The `placementType` property and the `PopoverPlacementType` enum have been renamed.
|
|
240
|
-
If you have previously used the `placementType` property and the `PopoverPlacementType`
|
|
241
|
-
```html
|
|
242
|
-
<ui5-popover placement-type="Bottom"></ui5-popover>
|
|
243
|
-
```
|
|
244
|
-
```js
|
|
245
|
-
import PopoverPlacementType from "@ui5/webcomponents/dist/types/PopoverPlacementType.js";
|
|
246
|
-
```
|
|
247
|
-
Now use `placement` instead:
|
|
248
|
-
```html
|
|
249
|
-
<ui5-placement="Bottom"></ui5-popover>
|
|
250
|
-
```
|
|
251
|
-
```js
|
|
252
|
-
import PopoverPlacementType from "@ui5/webcomponents/dist/types/PopoverPlacement.js";
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
Related to https://github.com/SAP/ui5-webcomponents/issues/8461
|
|
256
|
-
* The `size` property of the `ui5--illustrated-message` is renamed to `design`.
|
|
257
|
-
If you have previously used the `size` property:
|
|
258
|
-
```html
|
|
259
|
-
<ui5-illustrated-message size="Dialog">
|
|
260
|
-
```
|
|
261
|
-
Now use `design` instead:
|
|
262
|
-
```html
|
|
263
|
-
<ui5-illustrated-message design="Dialog">
|
|
264
|
-
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
Related to https://github.com/SAP/ui5-webcomponents/issues/8461, https://github.com/SAP/ui5-webcomponents/issues/7887
|
|
268
|
-
* The `separator-style` property is renamed to `separators` and the `BreadcrumbsSeparatorStyle` enum is renamed to `BreadcrumbsSeparator`.
|
|
269
|
-
If you have previously used the `separator-style` property:
|
|
270
|
-
```html
|
|
271
|
-
<ui5-breadcrumbs separator-style="Slash">
|
|
272
|
-
```
|
|
273
|
-
Now use `separators` instead:
|
|
274
|
-
```html
|
|
275
|
-
<ui5-breadcrumbs separators="Slash">
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
Related to https://github.com/SAP/ui5-webcomponents/issues/8461, https://github.com/SAP/ui5-webcomponents/issues/7887
|
|
279
|
-
* The `disabled` property of the `ui5-option` is removed.
|
|
280
|
-
If you have previously used the `disabled` property:
|
|
281
|
-
```html
|
|
282
|
-
<ui5-option disabled>Option</ui5-option>
|
|
283
|
-
```
|
|
284
|
-
it will no longer work for the component.
|
|
285
|
-
|
|
286
|
-
Related to https://github.com/SAP/ui5-webcomponents/issues/8461, https://github.com/SAP/ui5-webcomponents/issues/7887
|
|
287
|
-
* You can no longer import and implement the `ITab` interface. TabContainer is designed to work only with Tab and TabSeparator classes, so the interface was obsolete.
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
30
|
# [1.24.0](https://github.com/SAP/ui5-webcomponents/compare/v1.24.0-rc.4...v1.24.0) (2024-04-04)
|
|
294
31
|
|
|
295
32
|
**Note:** Version bump only for package @ui5/create-webcomponents-package
|
package/README.md
CHANGED
|
@@ -21,6 +21,7 @@ Options:
|
|
|
21
21
|
--name <string> - defines the package name
|
|
22
22
|
--component-name <string> - defines the component class name that will be created in your new package
|
|
23
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.
|
|
24
|
+
--enable-typescript - enables TypeScript support for the package
|
|
24
25
|
--skip - skips configuration and generates package with a default value for each parameter that wasn't passed
|
|
25
26
|
```
|
|
26
27
|
|
|
@@ -36,6 +37,7 @@ Options:
|
|
|
36
37
|
--name <string> - defines the package name
|
|
37
38
|
--component-name <string> - defines the component class name that will be created in your new package
|
|
38
39
|
--tag <string> - defines the tag name of the sample web component that will be created in your new package
|
|
40
|
+
--enable-typescript - enables TypeScript support for the package
|
|
39
41
|
--skip - skips configuration and generates package with a default value for each parameter that wasn't passed
|
|
40
42
|
```
|
|
41
43
|
|
package/create-package.js
CHANGED
|
@@ -15,6 +15,13 @@ 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 isTSRelatedFile = sourcePath => {
|
|
20
|
+
return ["Assets.ts", "MyFirstComponent.ts", "tsconfig.json", "global.d.ts"].some(fileName => sourcePath.includes(fileName));
|
|
21
|
+
};
|
|
22
|
+
const isJSRelatedFile = sourcePath => {
|
|
23
|
+
return ["Assets.js", "MyFirstComponent.js"].some(fileName => sourcePath.includes(fileName));
|
|
24
|
+
};
|
|
18
25
|
const isGitIgnore = sourcePath => {
|
|
19
26
|
return sourcePath.includes("gitignore");
|
|
20
27
|
};
|
|
@@ -27,8 +34,10 @@ const isNPMRC = sourcePath => {
|
|
|
27
34
|
|
|
28
35
|
// Validation of user input
|
|
29
36
|
const ComponentNamePattern = /^[A-Z][A-Za-z0-9]+$/;
|
|
37
|
+
const NamespacePattern = /^[a-z][a-z0-9\.\-]+$/;
|
|
30
38
|
const isPackageNameValid = name => typeof name === "string" && name.match(/^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/);
|
|
31
39
|
const isComponentNameValid = name => typeof name === "string" && ComponentNamePattern.test(name);
|
|
40
|
+
const isNamespaceValid = name => typeof name === "string" && NamespacePattern.test(name);
|
|
32
41
|
const isTagValid = tag => typeof tag === "string" && tag.match(/^[a-z0-9]+?-[a-zA-Z0-9\-_]+?[a-z0-9]$/);
|
|
33
42
|
|
|
34
43
|
/**
|
|
@@ -56,6 +65,13 @@ const replaceVarsInFileName = (vars, fileName) => {
|
|
|
56
65
|
};
|
|
57
66
|
|
|
58
67
|
const copyFile = (vars, sourcePath, destPath) => {
|
|
68
|
+
const ignoreJsRelated = vars.INIT_PACKAGE_VAR_TYPESCRIPT && isJSRelatedFile(sourcePath);
|
|
69
|
+
const ignoreTsRelated = !vars.INIT_PACKAGE_VAR_TYPESCRIPT && isTSRelatedFile(sourcePath);
|
|
70
|
+
|
|
71
|
+
if (ignoreJsRelated || ignoreTsRelated) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
59
75
|
if (isLogo(sourcePath)) {
|
|
60
76
|
fs.copyFileSync(sourcePath, destPath);
|
|
61
77
|
return;
|
|
@@ -92,14 +108,16 @@ const copyFiles = (vars, sourcePath, destPath) => {
|
|
|
92
108
|
}
|
|
93
109
|
};
|
|
94
110
|
|
|
95
|
-
const generateFilesContent = (packageName, componentName, skipSubfolder) => {
|
|
111
|
+
const generateFilesContent = (packageName, componentName, namespace, typescript, skipSubfolder) => {
|
|
96
112
|
const tagName = argv.tag || hyphaneteComponentName(componentName);
|
|
97
113
|
|
|
98
114
|
// All variables that will be replaced in the content of the resources/
|
|
99
115
|
const vars = {
|
|
116
|
+
INIT_PACKAGE_VAR_NAMESPACE: namespace, // namespace must be replaced before name
|
|
100
117
|
INIT_PACKAGE_VAR_NAME: packageName,
|
|
101
118
|
INIT_PACKAGE_VAR_TAG: tagName,
|
|
102
119
|
INIT_PACKAGE_VAR_CLASS_NAME: componentName,
|
|
120
|
+
INIT_PACKAGE_VAR_TYPESCRIPT: typescript,
|
|
103
121
|
};
|
|
104
122
|
|
|
105
123
|
const packageContent = {
|
|
@@ -132,10 +150,13 @@ const generateFilesContent = (packageName, componentName, skipSubfolder) => {
|
|
|
132
150
|
"devDependencies": {
|
|
133
151
|
"@ui5/webcomponents-tools": version,
|
|
134
152
|
"chromedriver": "*",
|
|
135
|
-
"typescript": "^5.2.2"
|
|
136
153
|
},
|
|
137
154
|
};
|
|
138
155
|
|
|
156
|
+
if (typescript) {
|
|
157
|
+
packageContent.devDependencies.typescript = "5.2.2";
|
|
158
|
+
}
|
|
159
|
+
|
|
139
160
|
// Update package.json
|
|
140
161
|
let destDir = packageName.includes("@") ? packageName.slice(packageName.lastIndexOf("/") + 1) : packageName;
|
|
141
162
|
|
|
@@ -175,16 +196,22 @@ const createWebcomponentsPackage = async () => {
|
|
|
175
196
|
throw new Error("The component name should be a string, starting with a capital letter [A-Z][a-z], for example: Button, MyButton, etc.");
|
|
176
197
|
}
|
|
177
198
|
|
|
199
|
+
if (argv.namespace && !isNamespaceValid(argv.namespace)) {
|
|
200
|
+
throw new Error("The JSDoc namespace must start with a letter and can only contain small-case letters, numbers, dots and dashes.");
|
|
201
|
+
}
|
|
202
|
+
|
|
178
203
|
if (argv.tag && !isTagValid(argv.tag) ) {
|
|
179
204
|
throw new Error("The tag should be in kebab-case (f.e my-component) and it can't be a single word.");
|
|
180
205
|
}
|
|
181
206
|
|
|
182
207
|
let packageName = argv.name || "my-package";
|
|
183
208
|
let componentName = argv.componentName || "MyComponent";
|
|
209
|
+
let namespace = argv.namespace || "demo.components";
|
|
210
|
+
let typescriptSupport = !!argv.enableTypescript;
|
|
184
211
|
const skipSubfolder = !!argv.skipSubfolder;
|
|
185
212
|
|
|
186
213
|
if (argv.skip) {
|
|
187
|
-
return generateFilesContent(packageName, componentName, skipSubfolder);
|
|
214
|
+
return generateFilesContent(packageName, componentName, namespace, typescriptSupport, skipSubfolder);
|
|
188
215
|
}
|
|
189
216
|
|
|
190
217
|
if (!argv.name) {
|
|
@@ -197,6 +224,25 @@ const createWebcomponentsPackage = async () => {
|
|
|
197
224
|
packageName = response.name;
|
|
198
225
|
}
|
|
199
226
|
|
|
227
|
+
if (!typescriptSupport) {
|
|
228
|
+
response = await prompts({
|
|
229
|
+
type: "select",
|
|
230
|
+
name: "language",
|
|
231
|
+
message: "Project type:",
|
|
232
|
+
choices: [
|
|
233
|
+
{
|
|
234
|
+
title: "JavaScript",
|
|
235
|
+
value: false,
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
title: "TypeScript",
|
|
239
|
+
value: true,
|
|
240
|
+
},
|
|
241
|
+
],
|
|
242
|
+
});
|
|
243
|
+
typescriptSupport = response.language;
|
|
244
|
+
}
|
|
245
|
+
|
|
200
246
|
if (!argv.componentName) {
|
|
201
247
|
response = await prompts({
|
|
202
248
|
type: "text",
|
|
@@ -208,7 +254,18 @@ const createWebcomponentsPackage = async () => {
|
|
|
208
254
|
componentName = response.componentName;
|
|
209
255
|
}
|
|
210
256
|
|
|
211
|
-
|
|
257
|
+
if (!argv.namespace) {
|
|
258
|
+
response = await prompts({
|
|
259
|
+
type: "text",
|
|
260
|
+
name: "namespace",
|
|
261
|
+
message: "JSDoc namespace:",
|
|
262
|
+
initial: "demo.components",
|
|
263
|
+
validate: (value) => isNamespaceValid(value) ? true : "The JSDoc namespace must start with a letter and can only contain small-case letters, numbers, dots and dashes.",
|
|
264
|
+
});
|
|
265
|
+
namespace = response.namespace;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
return generateFilesContent(packageName, componentName, namespace, typescriptSupport, skipSubfolder);
|
|
212
269
|
};
|
|
213
270
|
|
|
214
271
|
createWebcomponentsPackage();
|
package/package.json
CHANGED
package/template/.eslintignore
CHANGED
package/template/gitignore
CHANGED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
2
|
+
import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
|
|
3
|
+
import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
4
|
+
import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
|
|
5
|
+
|
|
6
|
+
// Template
|
|
7
|
+
import INIT_PACKAGE_VAR_CLASS_NAMETemplate from "./generated/templates/INIT_PACKAGE_VAR_CLASS_NAMETemplate.lit.js";
|
|
8
|
+
|
|
9
|
+
// Styles
|
|
10
|
+
import INIT_PACKAGE_VAR_CLASS_NAMECss from "./generated/themes/INIT_PACKAGE_VAR_CLASS_NAME.css.js";
|
|
11
|
+
|
|
12
|
+
import { COUNT } from "./generated/i18n/i18n-defaults.js";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @public
|
|
16
|
+
*/
|
|
17
|
+
const metadata = {
|
|
18
|
+
tag: "INIT_PACKAGE_VAR_TAG",
|
|
19
|
+
properties: /** @lends INIT_PACKAGE_VAR_NAMESPACE.INIT_PACKAGE_VAR_CLASS_NAME.prototype */ {
|
|
20
|
+
/**
|
|
21
|
+
* Defines the count of the component.
|
|
22
|
+
* @type { sap.ui.webc.base.types.Integer }
|
|
23
|
+
* @defaultvalue 0
|
|
24
|
+
* @public
|
|
25
|
+
*/
|
|
26
|
+
count: {
|
|
27
|
+
type: Integer,
|
|
28
|
+
defaultValue: 0,
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
slots: {
|
|
32
|
+
},
|
|
33
|
+
events: {
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @class
|
|
39
|
+
*
|
|
40
|
+
* <h3 class="comment-api-title">Overview</h3>
|
|
41
|
+
*
|
|
42
|
+
* The <code>INIT_PACKAGE_VAR_TAG</code> component is a demo component that displays some text.
|
|
43
|
+
*
|
|
44
|
+
* @constructor
|
|
45
|
+
* @alias INIT_PACKAGE_VAR_NAMESPACE.INIT_PACKAGE_VAR_CLASS_NAME
|
|
46
|
+
* @extends sap.ui.webc.base.UI5Element
|
|
47
|
+
* @tagname INIT_PACKAGE_VAR_TAG
|
|
48
|
+
* @public
|
|
49
|
+
*/
|
|
50
|
+
class INIT_PACKAGE_VAR_CLASS_NAME extends UI5Element {
|
|
51
|
+
static get metadata() {
|
|
52
|
+
return metadata;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
static get render() {
|
|
56
|
+
return litRender;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
static get template() {
|
|
60
|
+
return INIT_PACKAGE_VAR_CLASS_NAMETemplate;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
static get styles() {
|
|
64
|
+
return INIT_PACKAGE_VAR_CLASS_NAMECss;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
static async onDefine() {
|
|
68
|
+
INIT_PACKAGE_VAR_CLASS_NAME.i18nBundle = await getI18nBundle("INIT_PACKAGE_VAR_NAME");
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
onClick() {
|
|
72
|
+
this.count++;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
get counterText() {
|
|
76
|
+
return INIT_PACKAGE_VAR_CLASS_NAME.i18nBundle.getText(COUNT);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
INIT_PACKAGE_VAR_CLASS_NAME.define();
|
|
81
|
+
|
|
82
|
+
export default INIT_PACKAGE_VAR_CLASS_NAME;
|