@vonage/vivid-react 0.0.1 → 2.10.56
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/.storybook/main.js +11 -0
- package/.storybook/preview.js +3 -0
- package/README.md +183 -0
- package/babel.config.js +38 -0
- package/package.json +135 -7
- package/rollup.config.js +30 -0
- package/scripts/cli.js +28 -0
- package/scripts/generateWrappers/consts.js +226 -0
- package/scripts/generateWrappers/generator.js +130 -0
- package/scripts/generateWrappers/helpers/generator.js +18 -0
- package/scripts/generateWrappers/helpers/generator.test.js +56 -0
- package/scripts/generateWrappers/index.js +0 -0
- package/scripts/generateWrappers/prop.types.js +86 -0
- package/scripts/generateWrappers/templates/js/index.tmpl +2 -0
- package/scripts/generateWrappers/templates/js/react-component.tmpl +30 -0
- package/scripts/generateWrappers/templates/js/stories.tmpl +18 -0
- package/scripts/generateWrappers/templates/templates.js +36 -0
- package/scripts/generateWrappers/templates/ts/index.tmpl +2 -0
- package/scripts/generateWrappers/templates/ts/react-component.tmpl +28 -0
- package/scripts/generateWrappers/utils.js +226 -0
- package/scripts/generateWrappers/utils.test.js +71 -0
- package/scripts/updateDocs.js +42 -0
- package/scripts/updateVividPackages.js +81 -0
- package/src/dataGrid/index.js +15 -0
- package/src/index.js +3 -0
- package/src/initialization/initVivid.js +24 -0
- package/src/patches/VwcCard/index.js +2 -0
- package/src/patches/VwcCard/vwcCardHeadingCrop.js +28 -0
- package/src/patches/VwcCard/vwcCardWithMenu.js +14 -0
- package/src/patches/index.js +6 -0
- package/src/patches/vwcDataGrid.js +26 -0
- package/src/patches/vwcNoteContentOverflow.js +20 -0
- package/src/patches/vwcSetAttributeValue.js +12 -0
- package/src/patches/vwcSnackBarHtmlMessage.js +21 -0
- package/src/patches/vwcTooltip.js +46 -0
- package/stories/VwcAccordion/VwcAccordion.stories.jsx +18 -0
- package/stories/VwcActionGroup/VwcActionGroup.stories.jsx +18 -0
- package/stories/VwcBadge/VwcBadge.stories.jsx +18 -0
- package/stories/VwcBanner/VwcBanner.stories.jsx +18 -0
- package/stories/VwcButton/VwcButton.stories.jsx +18 -0
- package/stories/VwcButtonToggleGroup/VwcButtonToggleGroup.stories.jsx +47 -0
- package/stories/VwcCalendar/VwcCalendar.stories.jsx +18 -0
- package/stories/VwcCalendarEvent/VwcCalendarEvent.stories.jsx +18 -0
- package/stories/VwcCard/VwcCard.stories.jsx +90 -0
- package/stories/VwcCarousel/VwcCarousel.stories.jsx +18 -0
- package/stories/VwcCarouselItem/VwcCarouselItem.stories.jsx +18 -0
- package/stories/VwcCheckListItem/VwcCheckListItem.stories.jsx +18 -0
- package/stories/VwcCheckbox/VwcCheckbox.stories.jsx +18 -0
- package/stories/VwcChip/VwcChip.stories.jsx +18 -0
- package/stories/VwcChipSet/VwcChipSet.stories.jsx +38 -0
- package/stories/VwcCircularProgress/VwcCircularProgress.stories.jsx +18 -0
- package/stories/VwcDataGrid/VwcDataGrid.stories.jsx +109 -0
- package/stories/VwcDataGridColumn/VwcDataGridColumn.stories.jsx +18 -0
- package/stories/VwcDatepicker/VwcDatepicker.stories.jsx +18 -0
- package/stories/VwcDialog/VwcDialog.stories.jsx +18 -0
- package/stories/VwcDrawer/VwcDrawer.stories.jsx +18 -0
- package/stories/VwcDropdown/VwcDropdown.stories.jsx +18 -0
- package/stories/VwcElevation/VwcElevation.stories.jsx +18 -0
- package/stories/VwcEmptyState/VwcEmptyState.stories.jsx +18 -0
- package/stories/VwcExpansionPanel/VwcExpansionPanel.stories.jsx +18 -0
- package/stories/VwcFab/VwcFab.stories.jsx +18 -0
- package/stories/VwcFilePicker/VwcFilePicker.stories.jsx +18 -0
- package/stories/VwcFormfield/VwcFormfield.stories.jsx +18 -0
- package/stories/VwcHelperMessage/VwcHelperMessage.stories.jsx +18 -0
- package/stories/VwcIcon/VwcIcon.stories.jsx +18 -0
- package/stories/VwcIconButton/VwcIconButton.stories.jsx +18 -0
- package/stories/VwcIconButtonToggle/VwcIconButtonToggle.stories.jsx +18 -0
- package/stories/VwcKeypad/VwcKeypad.stories.jsx +18 -0
- package/stories/VwcLayout/VwcLayout.stories.jsx +63 -0
- package/stories/VwcLinearProgress/VwcLinearProgress.stories.jsx +18 -0
- package/stories/VwcList/VwcList.stories.jsx +25 -0
- package/stories/VwcListExpansionPanel/VwcListExpansionPanel.stories.jsx +18 -0
- package/stories/VwcListItem/VwcListItem.stories.jsx +18 -0
- package/stories/VwcMenu/VwcMenu.stories.jsx +41 -0
- package/stories/VwcNotchedOutline/VwcNotchedOutline.stories.jsx +18 -0
- package/stories/VwcNote/VwcNote.stories.jsx +18 -0
- package/stories/VwcPagination/VwcPagination.stories.jsx +18 -0
- package/stories/VwcPopup/VwcPopup.stories.jsx +18 -0
- package/stories/VwcRadio/VwcRadio.stories.jsx +18 -0
- package/stories/VwcRadioListItem/VwcRadioListItem.stories.jsx +18 -0
- package/stories/VwcSchemeSelect/VwcSchemeSelect.stories.jsx +18 -0
- package/stories/VwcSelect/VwcSelect.stories.jsx +18 -0
- package/stories/VwcSideDrawer/VwcSideDrawer.stories.jsx +18 -0
- package/stories/VwcSlider/VwcSlider.stories.jsx +18 -0
- package/stories/VwcSnackbar/VwcSnackbar.stories.jsx +18 -0
- package/stories/VwcSurface/VwcSurface.stories.jsx +18 -0
- package/stories/VwcSwitch/VwcSwitch.stories.jsx +18 -0
- package/stories/VwcTab/VwcTab.stories.jsx +18 -0
- package/stories/VwcTabBar/VwcTabBar.stories.jsx +63 -0
- package/stories/VwcTag/VwcTag.stories.jsx +18 -0
- package/stories/VwcText/VwcText.stories.jsx +18 -0
- package/stories/VwcTextarea/VwcTextarea.stories.jsx +24 -0
- package/stories/VwcTextfield/VwcTextfield.stories.jsx +47 -0
- package/stories/VwcThemeSwitch/VwcThemeSwitch.stories.jsx +18 -0
- package/stories/VwcTooltip/VwcTooltip.stories.jsx +41 -0
- package/stories/VwcTopAppBar/VwcTopAppBar.stories.jsx +18 -0
- package/stories/VwcTopAppBarFixed/VwcTopAppBarFixed.stories.jsx +18 -0
- package/stories/patches/patches.stories.jsx +94 -0
- package/testing/component.mock.js +3 -0
- package/tsconfig.json +70 -0
- package/types/index.d.ts +2 -0
package/README.md
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# @vonage/vivid-react
|
|
2
|
+
|
|
3
|
+
Vivid-react is a script allowing you to generate `Vivid-React` components for the newest version of `Vivid` components stored as a package with all necessary dependencies and available through Artifactory npm registry.
|
|
4
|
+
|
|
5
|
+
The main goal of output package is to provide a better developer experience when using `Vivid` inside of `React` typescript applications. We still use regular `Vivid` web components, so be sure to target a recent browser.
|
|
6
|
+
|
|
7
|
+
Goals:
|
|
8
|
+
* wrap adding handlers for events like `change` which natively doesn't work in the environment
|
|
9
|
+
* mocks for Jest
|
|
10
|
+
* typing support (prop-types or typescript)
|
|
11
|
+
* a handy interface for initialisation (eg. fonts)
|
|
12
|
+
* getting advantages of JSX/TSX (eg. composed components*)
|
|
13
|
+
* all components within one package**
|
|
14
|
+
* storybook acting as developer sandbox for presenting quick examples
|
|
15
|
+
* one place for all future vivid-related code to use with React
|
|
16
|
+
|
|
17
|
+
*may provide a cut off at props inherited from MWC source.
|
|
18
|
+
|
|
19
|
+
**now also implemented in _raw_ Vivid.
|
|
20
|
+
|
|
21
|
+
# Similar strongly typed wrappers for other frameworks?
|
|
22
|
+
* https://github.com/Vonage/vivid-vue
|
|
23
|
+
|
|
24
|
+
# Why is this repository exists?
|
|
25
|
+
|
|
26
|
+
[](https://www.youtube.com/watch?v=o1dMXrIv3Q8)
|
|
27
|
+
|
|
28
|
+
## Supported components
|
|
29
|
+
Here's the list of all available wrappers, with the `Vivid` package name and version used to generate each one.
|
|
30
|
+
If you need to use a different version of a `Vivid` component, simply add it to your application's `package.json`.
|
|
31
|
+
Adding the `resolutions` field when using `yarn` might help get the correct version installed.
|
|
32
|
+
|
|
33
|
+
| Component Name | Package Name | Package Version |
|
|
34
|
+
|----------------|--------------|-----------------|
|
|
35
|
+
| VwcAccordion | @vonage/vwc-accordion | 2.42.0 |
|
|
36
|
+
| VwcActionGroup | @vonage/vwc-action-group | 2.42.0 |
|
|
37
|
+
| VwcBadge | @vonage/vwc-badge | 2.42.0 |
|
|
38
|
+
| VwcBanner | @vonage/vwc-banner | 2.42.0 |
|
|
39
|
+
| VwcButton | @vonage/vwc-button | 2.42.0 |
|
|
40
|
+
| VwcButtonToggleGroup | @vonage/vwc-button-toggle-group | 2.42.0 |
|
|
41
|
+
| VwcCalendar | @vonage/vwc-calendar | 2.42.0 |
|
|
42
|
+
| VwcCard | @vonage/vwc-card | 2.42.0 |
|
|
43
|
+
| VwcCarousel | @vonage/vwc-carousel | 2.42.0 |
|
|
44
|
+
| VwcCheckbox | @vonage/vwc-checkbox | 2.42.0 |
|
|
45
|
+
| VwcChips | @vonage/vwc-chips | 2.42.0 |
|
|
46
|
+
| VwcCircularProgress | @vonage/vwc-circular-progress | 2.42.0 |
|
|
47
|
+
| VwcDataGrid | @vonage/vwc-data-grid | 2.42.0 |
|
|
48
|
+
| VwcDatepicker | @vonage/vwc-datepicker | 2.42.0 |
|
|
49
|
+
| VwcDialog | @vonage/vwc-dialog | 2.42.0 |
|
|
50
|
+
| VwcDrawer | @vonage/vwc-drawer | 2.42.0 |
|
|
51
|
+
| VwcDropdown | @vonage/vwc-dropdown | 2.42.0 |
|
|
52
|
+
| VwcElevation | @vonage/vwc-elevation | 2.42.0 |
|
|
53
|
+
| VwcEmptyState | @vonage/vwc-empty-state | 2.42.0 |
|
|
54
|
+
| VwcExpansionPanel | @vonage/vwc-expansion-panel | 2.42.0 |
|
|
55
|
+
| VwcFab | @vonage/vwc-fab | 2.42.0 |
|
|
56
|
+
| VwcFilePicker | @vonage/vwc-file-picker | 2.42.0 |
|
|
57
|
+
| VwcFormfield | @vonage/vwc-formfield | 2.42.0 |
|
|
58
|
+
| VwcHelperMessage | @vonage/vwc-helper-message | 2.42.0 |
|
|
59
|
+
| VwcIcon | @vonage/vwc-icon | 2.42.0 |
|
|
60
|
+
| VwcIconButton | @vonage/vwc-icon-button | 2.42.0 |
|
|
61
|
+
| VwcIconButtonToggle | @vonage/vwc-icon-button-toggle | 2.42.0 |
|
|
62
|
+
| VwcKeypad | @vonage/vwc-keypad | 2.42.0 |
|
|
63
|
+
| VwcLayout | @vonage/vwc-layout | 2.42.0 |
|
|
64
|
+
| VwcLinearProgress | @vonage/vwc-linear-progress | 2.42.0 |
|
|
65
|
+
| VwcList | @vonage/vwc-list | 2.42.0 |
|
|
66
|
+
| VwcMenu | @vonage/vwc-menu | 2.42.0 |
|
|
67
|
+
| VwcNotchedOutline | @vonage/vwc-notched-outline | 2.42.0 |
|
|
68
|
+
| VwcNote | @vonage/vwc-note | 2.42.0 |
|
|
69
|
+
| VwcPagination | @vonage/vwc-pagination | 2.42.0 |
|
|
70
|
+
| VwcPopup | @vonage/vwc-popup | 2.42.0 |
|
|
71
|
+
| VwcRadio | @vonage/vwc-radio | 2.42.0 |
|
|
72
|
+
| VwcSchemeSelect | @vonage/vwc-scheme-select | 2.42.0 |
|
|
73
|
+
| VwcSelect | @vonage/vwc-select | 2.42.0 |
|
|
74
|
+
| VwcSideDrawer | @vonage/vwc-side-drawer | 2.42.0 |
|
|
75
|
+
| VwcSlider | @vonage/vwc-slider | 2.42.0 |
|
|
76
|
+
| VwcSnackbar | @vonage/vwc-snackbar | 2.42.0 |
|
|
77
|
+
| VwcSurface | @vonage/vwc-surface | 2.42.0 |
|
|
78
|
+
| VwcSwitch | @vonage/vwc-switch | 2.42.0 |
|
|
79
|
+
| VwcTabBar | @vonage/vwc-tab-bar | 2.42.0 |
|
|
80
|
+
| VwcTags | @vonage/vwc-tags | 2.42.0 |
|
|
81
|
+
| VwcText | @vonage/vwc-text | 2.42.0 |
|
|
82
|
+
| VwcTextarea | @vonage/vwc-textarea | 2.42.0 |
|
|
83
|
+
| VwcTextfield | @vonage/vwc-textfield | 2.42.0 |
|
|
84
|
+
| VwcThemeSwitch | @vonage/vwc-theme-switch | 2.42.0 |
|
|
85
|
+
| VwcTooltip | @vonage/vwc-tooltip | 2.42.0 |
|
|
86
|
+
| VwcTopAppBar | @vonage/vwc-top-app-bar | 2.42.0 |
|
|
87
|
+
| VwcTopAppBarFixed | @vonage/vwc-top-app-bar-fixed | 2.42.0 |
|
|
88
|
+
|
|
89
|
+
If the one you're looking for is missing, just [add a new one](#adding-a-component), so everyone can access them.
|
|
90
|
+
|
|
91
|
+
# Usage
|
|
92
|
+
|
|
93
|
+
## Artifactory
|
|
94
|
+
To use this package, you need to have Artifactory setup for your project. See how to do it [here](https://confluence.vonage.com/pages/viewpage.action?pageId=123601806) and [here](https://github.com/newvoicemedia/vonage-cli/blob/master/pipeline-guide/how-to/NODEJS-NPM-DEVELOPMENT.md).
|
|
95
|
+
|
|
96
|
+
## Installation
|
|
97
|
+
Once you have Artifactory configured, just run:
|
|
98
|
+
```shell
|
|
99
|
+
$ yarn add @vonage/vivid-react
|
|
100
|
+
```
|
|
101
|
+
No need for importing `vivid` directly. The dependencies will be installed for you.
|
|
102
|
+
|
|
103
|
+
## Initialization
|
|
104
|
+
|
|
105
|
+
```javascript
|
|
106
|
+
// Function
|
|
107
|
+
import ReactDOM from 'react-dom'
|
|
108
|
+
import { initVivid } from '@vonage/vivid-react'
|
|
109
|
+
const rootElement = document.getElementById('react-root')
|
|
110
|
+
const renderApp = () => {
|
|
111
|
+
// do some more initialization before rendering the main App
|
|
112
|
+
ReactDOM.render(
|
|
113
|
+
<App />,
|
|
114
|
+
rootElement
|
|
115
|
+
)
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
initVivid(rootElement).then(renderApp)
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Importing
|
|
122
|
+
Instead of importing each `vivid` component from `@vonage/vwc-*`, import them from `@vonage/vivid-react` instead.
|
|
123
|
+
```javascript
|
|
124
|
+
import VwcCheckbox from '@vonage/vivid-react/VwcCheckbox'
|
|
125
|
+
import VwcSlider from '@vonage/vivid-react/VwcSlider'
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Bundling
|
|
129
|
+
This package is an ES module, so you might need to add some configuration to your bundling process.
|
|
130
|
+
|
|
131
|
+
## Testing
|
|
132
|
+
If you have problems rendering `vivid` when using Jest/Enzyme combo, you can add this to your `package.json` to replace all `Vivid` wrapped components with an empty React component.
|
|
133
|
+
It'll work also for _raw_ `vivid` components used in project, since js-dom doesn't support shadow DOM.
|
|
134
|
+
|
|
135
|
+
```json
|
|
136
|
+
{
|
|
137
|
+
"jest": {
|
|
138
|
+
"moduleNameMapper": {
|
|
139
|
+
"@vonage\/vwc": "@vonage/vivid-react/testing/component.mock.js"
|
|
140
|
+
},
|
|
141
|
+
"transformIgnorePatterns": [
|
|
142
|
+
"node_modules/(?!(@cct|@vonage|@lit|lit-html|lit-element)/)"
|
|
143
|
+
]
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
# Development
|
|
149
|
+
|
|
150
|
+
## Adding a component
|
|
151
|
+
Follow the steps:
|
|
152
|
+
* clone this repo
|
|
153
|
+
* create a branch
|
|
154
|
+
* add the missing vivid component as a `dependency` in `package.json`
|
|
155
|
+
* create a new PR and get it merged to `master`
|
|
156
|
+
* [publish](#publishing-a-new-version) new version
|
|
157
|
+
* install the new package in your application
|
|
158
|
+
|
|
159
|
+
## Publishing a new version
|
|
160
|
+
When you want to release the latest changes, checkout the latest `master` branch and run:
|
|
161
|
+
|
|
162
|
+
```shell
|
|
163
|
+
$ yarn version --new-version {minor/major/patch}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Selecting new version number:
|
|
167
|
+
- `patch` - fixing some small issue, without new functionality
|
|
168
|
+
- `minor` - after adding support for a new component, or adding a new awesome feature
|
|
169
|
+
- `major` - after breaking or major package changes
|
|
170
|
+
|
|
171
|
+
## Storybook
|
|
172
|
+
|
|
173
|
+
For test/development storybook is in game. Stories are generated automatically per component
|
|
174
|
+
with no arguments/properties, fill them before using component.
|
|
175
|
+
|
|
176
|
+
## Compound Components
|
|
177
|
+
|
|
178
|
+
In the `scripts/generateWrappers/consts.js` you can define sets of compound components. All they do is filling default props. They are accessible after a dot:
|
|
179
|
+
```javascript
|
|
180
|
+
<VwcButton.Alert />
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
*This is the end*
|
package/babel.config.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
// ••••••••••••••••••••••••••••••••••
|
|
3
|
+
presets: [
|
|
4
|
+
'@babel/preset-react',
|
|
5
|
+
[
|
|
6
|
+
'@babel/preset-env',
|
|
7
|
+
{
|
|
8
|
+
modules: false,
|
|
9
|
+
corejs: '3',
|
|
10
|
+
useBuiltIns: 'entry'
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
],
|
|
14
|
+
|
|
15
|
+
// ••••••••••••••••••••••••••••••••••
|
|
16
|
+
plugins: [
|
|
17
|
+
'@babel/plugin-transform-runtime'
|
|
18
|
+
],
|
|
19
|
+
|
|
20
|
+
// ••••••••••••••••••••••••••••••••••
|
|
21
|
+
env: {
|
|
22
|
+
// --------------------------------
|
|
23
|
+
test: {
|
|
24
|
+
presets: [
|
|
25
|
+
[
|
|
26
|
+
'@babel/preset-env',
|
|
27
|
+
{
|
|
28
|
+
targets: {
|
|
29
|
+
node: 'current'
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
],
|
|
34
|
+
sourceMaps: true,
|
|
35
|
+
retainLines: true
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,140 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vonage/vivid-react",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "",
|
|
3
|
+
"version": "2.10.56",
|
|
4
|
+
"description": "Vivid wrapped for easy React usage & IDE autocomplete support & typescript typings",
|
|
5
5
|
"main": "index.js",
|
|
6
|
+
"types": "types/index.d.ts",
|
|
7
|
+
"license": "MIT",
|
|
6
8
|
"scripts": {
|
|
7
|
-
"
|
|
9
|
+
"build": "yarn generateWrappers && rollup -c",
|
|
10
|
+
"generateWrappers": "node scripts/cli.js",
|
|
11
|
+
"test": "jest",
|
|
12
|
+
"test:watch": "jest --watch",
|
|
13
|
+
"preversion": "yarn updateDocs && git add README.md",
|
|
14
|
+
"postversion": "git push --follow-tags",
|
|
15
|
+
"storybook": "start-storybook -p 6006",
|
|
16
|
+
"prestorybook": "yarn generateWrappers",
|
|
17
|
+
"updateDocs": "node scripts/updateDocs.js",
|
|
18
|
+
"updateVividPackages": "node scripts/updateVividPackages.js"
|
|
8
19
|
},
|
|
9
|
-
"keywords": [
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
20
|
+
"keywords": [
|
|
21
|
+
"Vivid",
|
|
22
|
+
"React",
|
|
23
|
+
"Custom Element",
|
|
24
|
+
"Wrapper",
|
|
25
|
+
"Utility",
|
|
26
|
+
"Generator",
|
|
27
|
+
"CLI"
|
|
28
|
+
],
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@vonage/vivid-react-wrapper": "1.2.9",
|
|
31
|
+
"@vonage/vvd-context": "2.42.0",
|
|
32
|
+
"@vonage/vvd-core": "2.42.0",
|
|
33
|
+
"@vonage/vvd-fonts": "2.42.0",
|
|
34
|
+
"@vonage/vwc-accordion": "2.42.0",
|
|
35
|
+
"@vonage/vwc-action-group": "2.42.0",
|
|
36
|
+
"@vonage/vwc-badge": "2.42.0",
|
|
37
|
+
"@vonage/vwc-banner": "2.42.0",
|
|
38
|
+
"@vonage/vwc-button": "2.42.0",
|
|
39
|
+
"@vonage/vwc-button-toggle-group": "2.42.0",
|
|
40
|
+
"@vonage/vwc-calendar": "2.42.0",
|
|
41
|
+
"@vonage/vwc-card": "2.42.0",
|
|
42
|
+
"@vonage/vwc-carousel": "2.42.0",
|
|
43
|
+
"@vonage/vwc-checkbox": "2.42.0",
|
|
44
|
+
"@vonage/vwc-chips": "2.42.0",
|
|
45
|
+
"@vonage/vwc-circular-progress": "2.42.0",
|
|
46
|
+
"@vonage/vwc-data-grid": "2.42.0",
|
|
47
|
+
"@vonage/vwc-datepicker": "2.42.0",
|
|
48
|
+
"@vonage/vwc-dialog": "2.42.0",
|
|
49
|
+
"@vonage/vwc-drawer": "2.42.0",
|
|
50
|
+
"@vonage/vwc-dropdown": "2.42.0",
|
|
51
|
+
"@vonage/vwc-elevation": "2.42.0",
|
|
52
|
+
"@vonage/vwc-empty-state": "2.42.0",
|
|
53
|
+
"@vonage/vwc-expansion-panel": "2.42.0",
|
|
54
|
+
"@vonage/vwc-fab": "2.42.0",
|
|
55
|
+
"@vonage/vwc-file-picker": "2.42.0",
|
|
56
|
+
"@vonage/vwc-formfield": "2.42.0",
|
|
57
|
+
"@vonage/vwc-helper-message": "2.42.0",
|
|
58
|
+
"@vonage/vwc-icon": "2.42.0",
|
|
59
|
+
"@vonage/vwc-icon-button": "2.42.0",
|
|
60
|
+
"@vonage/vwc-icon-button-toggle": "2.42.0",
|
|
61
|
+
"@vonage/vwc-keypad": "2.42.0",
|
|
62
|
+
"@vonage/vwc-layout": "2.42.0",
|
|
63
|
+
"@vonage/vwc-linear-progress": "2.42.0",
|
|
64
|
+
"@vonage/vwc-list": "2.42.0",
|
|
65
|
+
"@vonage/vwc-menu": "2.42.0",
|
|
66
|
+
"@vonage/vwc-notched-outline": "2.42.0",
|
|
67
|
+
"@vonage/vwc-note": "2.42.0",
|
|
68
|
+
"@vonage/vwc-pagination": "2.42.0",
|
|
69
|
+
"@vonage/vwc-popup": "2.42.0",
|
|
70
|
+
"@vonage/vwc-radio": "2.42.0",
|
|
71
|
+
"@vonage/vwc-scheme-select": "2.42.0",
|
|
72
|
+
"@vonage/vwc-select": "2.42.0",
|
|
73
|
+
"@vonage/vwc-side-drawer": "2.42.0",
|
|
74
|
+
"@vonage/vwc-slider": "2.42.0",
|
|
75
|
+
"@vonage/vwc-snackbar": "2.42.0",
|
|
76
|
+
"@vonage/vwc-surface": "2.42.0",
|
|
77
|
+
"@vonage/vwc-switch": "2.42.0",
|
|
78
|
+
"@vonage/vwc-tab-bar": "2.42.0",
|
|
79
|
+
"@vonage/vwc-tags": "2.42.0",
|
|
80
|
+
"@vonage/vwc-text": "2.42.0",
|
|
81
|
+
"@vonage/vwc-textarea": "2.42.0",
|
|
82
|
+
"@vonage/vwc-textfield": "2.42.0",
|
|
83
|
+
"@vonage/vwc-theme-switch": "2.42.0",
|
|
84
|
+
"@vonage/vwc-tooltip": "2.42.0",
|
|
85
|
+
"@vonage/vwc-top-app-bar": "2.42.0",
|
|
86
|
+
"@vonage/vwc-top-app-bar-fixed": "2.42.0"
|
|
87
|
+
},
|
|
88
|
+
"devDependencies": {
|
|
89
|
+
"@babel/core": "^7.15.5",
|
|
90
|
+
"@babel/plugin-transform-runtime": "^7.15.0",
|
|
91
|
+
"@babel/preset-env": "^7.15.6",
|
|
92
|
+
"@babel/preset-react": "^7.14.5",
|
|
93
|
+
"@babel/runtime": "^7.13.17",
|
|
94
|
+
"@material-ui/core": "^4.11.1",
|
|
95
|
+
"@octokit/core": "^3.1.2",
|
|
96
|
+
"@rollup/plugin-babel": "^5.2.2",
|
|
97
|
+
"@rollup/plugin-commonjs": "^17.0.0",
|
|
98
|
+
"@rollup/plugin-node-resolve": "^11.0.0",
|
|
99
|
+
"@storybook/addon-actions": "6.5.13",
|
|
100
|
+
"@storybook/addon-controls": "6.5.13",
|
|
101
|
+
"@storybook/addon-essentials": "6.5.13",
|
|
102
|
+
"@storybook/addon-links": "6.5.13",
|
|
103
|
+
"@storybook/addons": "6.5.13",
|
|
104
|
+
"@storybook/react": "6.5.13",
|
|
105
|
+
"@types/react": "16.9.49",
|
|
106
|
+
"@webcomponents/webcomponentsjs": "^2.5.0",
|
|
107
|
+
"babel-jest": "^26.6.1",
|
|
108
|
+
"babel-loader": "^8.2.2",
|
|
109
|
+
"extract-zip": "2.0.1",
|
|
110
|
+
"fs-extra": "^9.0.1",
|
|
111
|
+
"jest": "^26.6.1",
|
|
112
|
+
"lodash": "^4.17.20",
|
|
113
|
+
"mkdirp": "1.0.4",
|
|
114
|
+
"ora": "^5.1.0",
|
|
115
|
+
"react": ">=16.8",
|
|
116
|
+
"react-dom": ">=16.8",
|
|
117
|
+
"rollup": "^2.35.0",
|
|
118
|
+
"rollup-plugin-auto-external": "^2.0.0",
|
|
119
|
+
"standard": "^16.0.4",
|
|
120
|
+
"typescript": "4.3.5",
|
|
121
|
+
"web-component-analyzer": "2.0.0-next.4"
|
|
122
|
+
},
|
|
123
|
+
"resolutions": {
|
|
124
|
+
"glob-parent": "^5.1.2",
|
|
125
|
+
"trim": "^0.0.3",
|
|
126
|
+
"trim-newlines": "^3.0.1",
|
|
127
|
+
"terser": "^5.14.2",
|
|
128
|
+
"loader-utils": "2.0.4"
|
|
129
|
+
},
|
|
130
|
+
"peerDependencies": {
|
|
131
|
+
"react": ">=16.8",
|
|
132
|
+
"react-dom": ">=16.8"
|
|
133
|
+
},
|
|
134
|
+
"engines": {
|
|
135
|
+
"node": ">=14.0.0"
|
|
136
|
+
},
|
|
137
|
+
"optionalDependencies": {
|
|
138
|
+
"prop-types": "^15.7.2"
|
|
139
|
+
}
|
|
140
|
+
}
|
package/rollup.config.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import babel from '@rollup/plugin-babel'
|
|
2
|
+
import commonjs from '@rollup/plugin-commonjs'
|
|
3
|
+
import autoExternal from 'rollup-plugin-auto-external'
|
|
4
|
+
import resolve from '@rollup/plugin-node-resolve'
|
|
5
|
+
|
|
6
|
+
const OUTPUT_DIR = './dist'
|
|
7
|
+
|
|
8
|
+
export default {
|
|
9
|
+
input: 'src/index.js',
|
|
10
|
+
output: [
|
|
11
|
+
{
|
|
12
|
+
file: `${OUTPUT_DIR}/index.js`,
|
|
13
|
+
format: 'cjs',
|
|
14
|
+
exports: 'auto'
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
plugins: [
|
|
18
|
+
resolve({
|
|
19
|
+
extensions: ['.js', '.json', '.node']
|
|
20
|
+
}),
|
|
21
|
+
babel({
|
|
22
|
+
babelHelpers: 'runtime',
|
|
23
|
+
exclude: /node_modules/
|
|
24
|
+
}),
|
|
25
|
+
commonjs({
|
|
26
|
+
include: /node_modules/
|
|
27
|
+
}),
|
|
28
|
+
autoExternal()
|
|
29
|
+
]
|
|
30
|
+
}
|
package/scripts/cli.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const { OutputLanguage, CLIArgument, WCAConfigAll, FileName, Assets } = require('./generateWrappers/consts')
|
|
2
|
+
const { generateWrappers } = require('./generateWrappers/generator')
|
|
3
|
+
const {
|
|
4
|
+
isFileExists,
|
|
5
|
+
getParsedJson,
|
|
6
|
+
getVividPackageNames,
|
|
7
|
+
getInputArgument,
|
|
8
|
+
getVividLatestRelease,
|
|
9
|
+
getCustomElementTagsDefinitionsList,
|
|
10
|
+
copyStaticAssets
|
|
11
|
+
} = require('./generateWrappers/utils')
|
|
12
|
+
|
|
13
|
+
const outputDir = getInputArgument(CLIArgument.Output, FileName.defaultOutputDirectory)
|
|
14
|
+
const language = getInputArgument(CLIArgument.Language, OutputLanguage.JavaScript)
|
|
15
|
+
const staticAssets = getInputArgument(CLIArgument.Assets, Assets)
|
|
16
|
+
const cleanTemp = getInputArgument(CLIArgument.CleanTemp, true) !== 'false'
|
|
17
|
+
|
|
18
|
+
getInputArgument(CLIArgument.All)
|
|
19
|
+
? getVividLatestRelease()
|
|
20
|
+
.then(getCustomElementTagsDefinitionsList(WCAConfigAll))
|
|
21
|
+
.then(generateWrappers(outputDir, language, cleanTemp))
|
|
22
|
+
.then(copyStaticAssets(outputDir, staticAssets))
|
|
23
|
+
: isFileExists(FileName.packageJson)
|
|
24
|
+
.then(getParsedJson)
|
|
25
|
+
.then(getVividPackageNames)
|
|
26
|
+
.then(getCustomElementTagsDefinitionsList())
|
|
27
|
+
.then(generateWrappers(outputDir, language, cleanTemp))
|
|
28
|
+
.then(copyStaticAssets(outputDir, staticAssets))
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
const FileName = {
|
|
2
|
+
packageJson: 'package.json',
|
|
3
|
+
tempFolder: 'temp',
|
|
4
|
+
tempFileName: 'analyzerOutput.json',
|
|
5
|
+
tempTsFolder: 'ts',
|
|
6
|
+
tempVividZipball: 'vivid.zip',
|
|
7
|
+
defaultOutputDirectory: 'dist',
|
|
8
|
+
storyOutputDir: 'stories',
|
|
9
|
+
readme: 'README.md',
|
|
10
|
+
testing: 'testing',
|
|
11
|
+
types: 'types'
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const Assets = [
|
|
15
|
+
FileName.packageJson,
|
|
16
|
+
FileName.readme,
|
|
17
|
+
FileName.testing,
|
|
18
|
+
FileName.types
|
|
19
|
+
].join(',')
|
|
20
|
+
|
|
21
|
+
const VividRepo = 'Vonage/vivid'
|
|
22
|
+
|
|
23
|
+
const WCAConfig = {
|
|
24
|
+
tempFolder: FileName.tempFolder,
|
|
25
|
+
tempFileName: FileName.tempFileName,
|
|
26
|
+
nodeArgumentsFactory: (packageNames, analyzerOutputFile) => [
|
|
27
|
+
'./node_modules/web-component-analyzer/cli.js',
|
|
28
|
+
'analyze',
|
|
29
|
+
`node_modules/{${packageNames.join(',')}}/{src/,}*.?s`,
|
|
30
|
+
'--discoverNodeModules',
|
|
31
|
+
'--format', 'json',
|
|
32
|
+
'--outFile', analyzerOutputFile
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const WCAConfigAll = {
|
|
37
|
+
tempFolder: FileName.tempFolder,
|
|
38
|
+
tempFileName: FileName.tempFileName,
|
|
39
|
+
nodeArgumentsFactory: (targetFolder, analyzerOutputFile) => [
|
|
40
|
+
'./node_modules/web-component-analyzer/cli.js',
|
|
41
|
+
'analyze',
|
|
42
|
+
`${targetFolder}/{src/,}*.?s`,
|
|
43
|
+
'--format', 'json',
|
|
44
|
+
'--outFile', analyzerOutputFile
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const CLIArgument = {
|
|
49
|
+
Assets: 'assets', // static assets to be copied to output folder
|
|
50
|
+
Output: 'output', // output folder
|
|
51
|
+
Language: 'language', // language js,ts
|
|
52
|
+
CleanTemp: 'clean', // clean up temp folder after CLI run
|
|
53
|
+
All: 'all' // ignore local package.json and produce wrappers for *all* Vivid components
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const OutputLanguage = {
|
|
57
|
+
JavaScript: 'js',
|
|
58
|
+
TypeScript: 'ts'
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// TODO: this can be removed when JSDocs for each component will be updated in Vivid repository
|
|
62
|
+
const ComponentsEventsMap = {
|
|
63
|
+
VwcButtonToggleGroup: ['selected'],
|
|
64
|
+
VwcButton: ['click'],
|
|
65
|
+
VwcCard: ['click'],
|
|
66
|
+
VwcCheckbox: ['change'],
|
|
67
|
+
VwcChipSet: [{ name: 'MDCChip:selection', propName: 'onSelection' }],
|
|
68
|
+
VwcDataGrid: [{ name: 'selected-items-changed', propName: 'onSelectedItemsChange' }],
|
|
69
|
+
VwcDialog: ['opening', 'opened', 'closing', 'closed'],
|
|
70
|
+
VwcIconButton: ['click'],
|
|
71
|
+
VwcIconButtonToggle: [{ name: 'MDCIconButtonToggle:change', propName: 'onChange' }],
|
|
72
|
+
VwcListExpansionPanel: ['closed', 'opened'],
|
|
73
|
+
VwcListItem: ['click', { name: 'request-selected', propName: 'onRequestSelected' }],
|
|
74
|
+
VwcCheckListItem: [{ name: 'request-selected', propName: 'onRequestSelected' }],
|
|
75
|
+
VwcPagination: ['change'],
|
|
76
|
+
VwcRadio: ['change'],
|
|
77
|
+
VwcSlider: ['change'],
|
|
78
|
+
VwcSnackbar: ['opening', 'opened', 'closing', 'closed'],
|
|
79
|
+
VwcSwitch: ['change'],
|
|
80
|
+
VwcTab: [{ name: 'MDCTab:interacted', propName: 'onInteracted' }],
|
|
81
|
+
VwcTabBar: [{ name: 'MDCTabBar:activated', propName: 'onActivated' }],
|
|
82
|
+
VwcTextfield: ['input', 'blur', 'focus'],
|
|
83
|
+
VwcTextarea: ['input', 'blur', 'focus']
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const ComponentsReadOnlyPropertiesMap = {
|
|
87
|
+
VwcAccordion: ['styles'],
|
|
88
|
+
VwcActionGroup: ['styles'],
|
|
89
|
+
VwcAudio: ['styles', 'floatingLabelFoundation', 'lineRippleFoundation'],
|
|
90
|
+
VwcListExpansionPanel: ['styles', 'headerNodes'],
|
|
91
|
+
VwcExpansionPanel: ['styles'],
|
|
92
|
+
VwcBadge: ['styles'],
|
|
93
|
+
VwcBanner: ['styles'],
|
|
94
|
+
VwcDrawer: ['styles'],
|
|
95
|
+
VwcNotchedOutline: ['styles'],
|
|
96
|
+
VwcSurface: ['styles'],
|
|
97
|
+
VwcFilePicker: ['styles'],
|
|
98
|
+
VwcFormfield: ['styles'],
|
|
99
|
+
VwcHelperMessage: ['styles'],
|
|
100
|
+
VwcLinearProgress: ['styles'],
|
|
101
|
+
VwcThemeSwitch: ['styles'],
|
|
102
|
+
VwcTopAppBar: ['styles'],
|
|
103
|
+
VwcChip: ['styles'],
|
|
104
|
+
VwcCircularProgress: ['styles'],
|
|
105
|
+
VwcTopAppBarFixed: ['styles'],
|
|
106
|
+
VwcMediaController: ['floatingLabelFoundation', 'lineRippleFoundation'],
|
|
107
|
+
VwcRelativeTime: ['floatingLabelFoundation', 'lineRippleFoundation'],
|
|
108
|
+
VwcCarouselItem: ['floatingLabelFoundation', 'lineRippleFoundation'],
|
|
109
|
+
VwcList: ['styles', 'items', 'selected', 'index', 'layout', 'debouncedLayout'],
|
|
110
|
+
VwcListItem: ['styles', 'ripple', 'text'],
|
|
111
|
+
VwcLayout: ['styles'],
|
|
112
|
+
VwcSwitch: ['styles', 'ripple'],
|
|
113
|
+
VwcTab: ['styles', 'active', 'ripple', 'isRippleActive'],
|
|
114
|
+
VwcFab: ['styles', 'ripple'],
|
|
115
|
+
VwcTabBar: ['styles', 'active'],
|
|
116
|
+
VwcText: ['styles'],
|
|
117
|
+
VwcTextarea: ['styles', 'validity', 'ripple'],
|
|
118
|
+
VwcTextfield: ['styles', 'validity', 'willValidate', 'selectionStart', 'selectionEnd', 'ripple'],
|
|
119
|
+
VwcMenu: ['styles', 'slotElement', 'items', 'index', 'selected', 'mdcRoot'],
|
|
120
|
+
VwcRadio: ['styles', 'ripple', 'isRippleActive'],
|
|
121
|
+
VwcRadioListItem: ['styles', 'ripple'],
|
|
122
|
+
VwcSelect: ['styles', 'items', 'ripple'],
|
|
123
|
+
VwcCheckbox: ['styles', 'isRippleActive', 'ripple'],
|
|
124
|
+
VwcChipSet: ['styles', 'chips'],
|
|
125
|
+
VwcCheckListItem: ['styles', 'ripple'],
|
|
126
|
+
VwcDialog: ['styles'],
|
|
127
|
+
VwcDropdown: ['styles', 'items', 'selected'],
|
|
128
|
+
VwcButton: ['styles', 'buttonElement', 'ripple'],
|
|
129
|
+
VwcButtonToggleGroup: ['items', 'selected'],
|
|
130
|
+
VwcKeypad: ['styles', 'digitsDisplay'],
|
|
131
|
+
VwcIconButton: ['styles', 'buttonElement', 'ripple'],
|
|
132
|
+
VwcIconButtonToggle: ['styles', 'ripple'],
|
|
133
|
+
VwcDataGrid: ['styles', 'selectedItems'],
|
|
134
|
+
VwcSlider: ['styles', 'ripple']
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Properties reflected as attributes having different name
|
|
138
|
+
const RenamedReflectedAttributesPropertiesMap = {
|
|
139
|
+
VwcText: ['fontFace'], // font-face attribute
|
|
140
|
+
VwcLayout: ['columnBasis', 'columnSpacing', 'autoSizing']
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Bindable means property has complex type: (Function, Object, Array, etc.) OR properties reflected as attributes having different name
|
|
144
|
+
// Those properties needs to be binded directly to the underlying web element "as is"
|
|
145
|
+
// w/o toString => fromString transformations via HTML attributes
|
|
146
|
+
const ComponentsBindablePropertiesMap = {
|
|
147
|
+
VwcButton: ['form'],
|
|
148
|
+
VwcTextarea: ['form'],
|
|
149
|
+
VwcTextfield: ['form'],
|
|
150
|
+
VwcDataGrid: ['rowDetailsRenderer'],
|
|
151
|
+
VwcDataGridColumn: ['headerRenderer', 'footerRenderer', 'cellRenderer'],
|
|
152
|
+
VwcDialog: ['closeButton'],
|
|
153
|
+
VwcMenu: ['anchor'],
|
|
154
|
+
...RenamedReflectedAttributesPropertiesMap
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// Extra properties to be exposed for element
|
|
158
|
+
const ComponentsExtraPropertiesMap = {
|
|
159
|
+
VwcIconButton: [
|
|
160
|
+
{
|
|
161
|
+
"name": "value",
|
|
162
|
+
"type": "string"
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
const CompoundComponentsMap = {
|
|
168
|
+
VwcButton: {
|
|
169
|
+
CallToAction: {
|
|
170
|
+
unelevated: true,
|
|
171
|
+
connotation: 'cta',
|
|
172
|
+
type: 'button',
|
|
173
|
+
layout: 'filled'
|
|
174
|
+
},
|
|
175
|
+
Alert: {
|
|
176
|
+
unelevated: true,
|
|
177
|
+
connotation: 'alert',
|
|
178
|
+
type: 'button',
|
|
179
|
+
layout: 'filled'
|
|
180
|
+
},
|
|
181
|
+
Outlined: {
|
|
182
|
+
unelevated: true,
|
|
183
|
+
layout: 'outlined',
|
|
184
|
+
type: 'button'
|
|
185
|
+
},
|
|
186
|
+
Success: {
|
|
187
|
+
unelevated: true,
|
|
188
|
+
connotation: 'success',
|
|
189
|
+
type: 'button',
|
|
190
|
+
layout: 'filled'
|
|
191
|
+
},
|
|
192
|
+
Info: {
|
|
193
|
+
unelevated: true,
|
|
194
|
+
connotation: 'info',
|
|
195
|
+
type: 'button',
|
|
196
|
+
layout: 'filled'
|
|
197
|
+
},
|
|
198
|
+
Primary: {
|
|
199
|
+
unelevated: true,
|
|
200
|
+
connotation: 'primary',
|
|
201
|
+
type: 'button',
|
|
202
|
+
layout: 'filled'
|
|
203
|
+
},
|
|
204
|
+
Announcement: {
|
|
205
|
+
unelevated: true,
|
|
206
|
+
connotation: 'announcement',
|
|
207
|
+
type: 'button',
|
|
208
|
+
layout: 'filled'
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
module.exports = {
|
|
214
|
+
ComponentsEventsMap,
|
|
215
|
+
ComponentsReadOnlyPropertiesMap,
|
|
216
|
+
ComponentsBindablePropertiesMap,
|
|
217
|
+
ComponentsExtraPropertiesMap,
|
|
218
|
+
CompoundComponentsMap,
|
|
219
|
+
FileName,
|
|
220
|
+
Assets,
|
|
221
|
+
OutputLanguage,
|
|
222
|
+
WCAConfig,
|
|
223
|
+
WCAConfigAll,
|
|
224
|
+
CLIArgument,
|
|
225
|
+
VividRepo
|
|
226
|
+
}
|