@wavemaker/rn-codegen 11.6.2-next.1417103 → 11.6.2-next.1417107
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.
- rn-codegen/command.js +12 -1
- rn-codegen/command.js.map +1 -1
- rn-codegen/index.js +1 -28
- rn-codegen/index.js.map +1 -1
- rn-codegen/package.json +1 -1
- rn-codegen/src/app.generator.js +40 -16
- rn-codegen/src/app.generator.js.map +1 -1
- rn-codegen/src/increment-builder.js +3 -0
- rn-codegen/src/increment-builder.js.map +1 -1
- rn-codegen/src/project.service.js +14 -0
- rn-codegen/src/project.service.js.map +1 -1
- rn-codegen/src/templates/app.template +22 -2
- rn-codegen/src/templates/app.theme.template +9 -2
- rn-codegen/src/templates/bootstrap.template +7 -0
- rn-codegen/src/templates/component/component.template +1 -1
- rn-codegen/src/templates/package.web.json +7 -3
- rn-codegen/src/templates/project/component/dynamic/component-generator.js +77 -0
- rn-codegen/src/templates/project/component/dynamic/form.generator.js +45 -0
- rn-codegen/src/templates/project/esbuild/esbuild.script.js +5 -1
- rn-codegen/src/templates/project/esbuild/jsconfig.json +2 -1
- rn-codegen/src/templates/project/package.json +8 -4
- rn-codegen/src/templates/project/revert-to-1.0.styles.js +433 -0
- rn-codegen/src/templates/theme/wavemaker/assets/fonts/font.config.js.hbs +4 -1
- rn-codegen/src/templates/theme/wavemaker/variables.less.template +1 -1
- rn-codegen/src/theme/components/basic/buttongroup.styledef.js +2 -2
- rn-codegen/src/theme/components/basic/buttongroup.styledef.js.map +1 -1
- rn-codegen/src/theme/components/chart/area-chart.styledef.js +15 -1
- rn-codegen/src/theme/components/chart/area-chart.styledef.js.map +1 -1
- rn-codegen/src/theme/components/chart/bar-chart.styledef.js +23 -1
- rn-codegen/src/theme/components/chart/bar-chart.styledef.js.map +1 -1
- rn-codegen/src/theme/components/chart/bubble-chart.styledef.js +16 -1
- rn-codegen/src/theme/components/chart/bubble-chart.styledef.js.map +1 -1
- rn-codegen/src/theme/components/chart/column-chart.styledef.js +15 -1
- rn-codegen/src/theme/components/chart/column-chart.styledef.js.map +1 -1
- rn-codegen/src/theme/components/chart/line-chart.styledef.js +16 -1
- rn-codegen/src/theme/components/chart/line-chart.styledef.js.map +1 -1
- rn-codegen/src/theme/components/data/list.styledef.js +13 -1
- rn-codegen/src/theme/components/data/list.styledef.js.map +1 -1
- rn-codegen/src/theme/components/input/checkbox.styledef.js +12 -1
- rn-codegen/src/theme/components/input/checkbox.styledef.js.map +1 -1
- rn-codegen/src/theme/components/input/checkboxset.styledef.js +14 -9
- rn-codegen/src/theme/components/input/checkboxset.styledef.js.map +1 -1
- rn-codegen/src/theme/components/input/currency.styledef.js +8 -0
- rn-codegen/src/theme/components/input/currency.styledef.js.map +1 -1
- rn-codegen/src/theme/components/input/epoch/datetime.styledef.js +25 -1
- rn-codegen/src/theme/components/input/epoch/datetime.styledef.js.map +1 -1
- rn-codegen/src/theme/components/input/number.styledef.js +8 -0
- rn-codegen/src/theme/components/input/number.styledef.js.map +1 -1
- rn-codegen/src/theme/components/input/radioset.styledef.js +10 -0
- rn-codegen/src/theme/components/input/radioset.styledef.js.map +1 -1
- rn-codegen/src/theme/components/input/text.styledef.js +13 -0
- rn-codegen/src/theme/components/input/text.styledef.js.map +1 -1
- rn-codegen/src/theme/components/input/textarea.styledef.js +13 -0
- rn-codegen/src/theme/components/input/textarea.styledef.js.map +1 -1
- rn-codegen/src/theme/components/navigation/appnavbar.styledef.js +7 -0
- rn-codegen/src/theme/components/navigation/appnavbar.styledef.js.map +1 -1
- rn-codegen/src/theme/components/page/tabbar.styledef.js +12 -0
- rn-codegen/src/theme/components/page/tabbar.styledef.js.map +1 -1
- rn-codegen/src/theme/font-stylesheet.transpiler.js +3 -0
- rn-codegen/src/theme/font-stylesheet.transpiler.js.map +1 -1
- rn-codegen/src/theme/rn-stylesheet.transpiler.js +15 -1
- rn-codegen/src/theme/rn-stylesheet.transpiler.js.map +1 -1
- rn-codegen/src/theme/theme.service.js +34 -4
- rn-codegen/src/theme/theme.service.js.map +1 -1
- rn-codegen/src/theme/variables.js +38 -14
- rn-codegen/src/theme/variables.js.map +1 -1
- rn-codegen/src/transpile/components/basic/buttongroup.transformer.js +5 -2
- rn-codegen/src/transpile/components/basic/buttongroup.transformer.js.map +1 -1
- rn-codegen/src/transpile/components/basic/search.transformer.js +1 -0
- rn-codegen/src/transpile/components/basic/search.transformer.js.map +1 -1
- rn-codegen/src/transpile/components/container/wizard/wizardstep.transformer.js +7 -1
- rn-codegen/src/transpile/components/container/wizard/wizardstep.transformer.js.map +1 -1
- rn-codegen/src/transpile/components/data/form/form-action.transformer.js +5 -5
- rn-codegen/src/transpile/components/data/form/form-action.transformer.js.map +1 -1
- rn-codegen/src/transpile/components/data/form/form-field.transformer.js +36 -8
- rn-codegen/src/transpile/components/data/form/form-field.transformer.js.map +1 -1
- rn-codegen/src/transpile/components/data/form.transformer.js +14 -1
- rn-codegen/src/transpile/components/data/form.transformer.js.map +1 -1
- rn-codegen/src/transpile/components/data/list.transformer.js +10 -6
- rn-codegen/src/transpile/components/data/list.transformer.js.map +1 -1
- rn-codegen/src/transpile/components/input/checkboxset.transformer.js +1 -1
- rn-codegen/src/transpile/components/input/checkboxset.transformer.js.map +1 -1
- rn-codegen/src/transpile/components/input/radioset.transformer.js +1 -1
- rn-codegen/src/transpile/components/input/radioset.transformer.js.map +1 -1
- rn-codegen/src/transpile/components/page/page.transformer.js +23 -1
- rn-codegen/src/transpile/components/page/page.transformer.js.map +1 -1
- rn-codegen/src/transpile/components/utils.js +10 -2
- rn-codegen/src/transpile/components/utils.js.map +1 -1
- rn-codegen/src/transpile/property/property-parser.js +24 -2
- rn-codegen/src/transpile/property/property-parser.js.map +1 -1
- rn-codegen/src/transpile/transpile.js +30 -8
- rn-codegen/src/transpile/transpile.js.map +1 -1
- rn-codegen/src/utils.js +4 -3
- rn-codegen/src/utils.js.map +1 -1
|
@@ -29,6 +29,7 @@ import WM from '@wavemaker/app-rn-runtime/runtime/platform.api';
|
|
|
29
29
|
import { getThemes, getSelectedTheme, hasAppTheme, setAppTheme, resolveThemeAsset } from './app.theme';
|
|
30
30
|
import styles from './app.style';
|
|
31
31
|
import fontConfig from './font.config';
|
|
32
|
+
import { resetTheme } from './revert-to-1.0.styles';
|
|
32
33
|
import LocaleResolver from './src/resolve/locale.resolver';
|
|
33
34
|
import ResourceResolver from './src/resolve/resource.resolver';
|
|
34
35
|
import WM_CUSTOM_FORMATTERS from './src/extensions/formatters';
|
|
@@ -108,6 +109,10 @@ class App extends BaseApp {
|
|
|
108
109
|
loadFonts() {
|
|
109
110
|
fontConfig.fonts.map((f) => f.path = ResourceResolver.resolve(f.path, this.baseUrl));
|
|
110
111
|
const fonts = [...themeVariables.INSTANCE.fontConfig?.fonts, ...fontConfig.fonts];
|
|
112
|
+
themeVariables.INSTANCE.fontConfig?.fonts.filter((f) => f.csspath).map((f) => {
|
|
113
|
+
const iconStyle = f.csspath?.default;
|
|
114
|
+
Object.keys(iconStyle).forEach((s) => this.appConfig.theme.addStyle(s, null, iconStyle[s]));
|
|
115
|
+
});
|
|
111
116
|
fontConfig.fonts.filter((f) => f.csspath).map((f) => {
|
|
112
117
|
f.csspath = f.csspath.replace('.css', '.js');
|
|
113
118
|
const iconStyle = ResourceResolver.resolve(f.csspath, this.baseUrl)?.default;
|
|
@@ -131,9 +136,17 @@ class App extends BaseApp {
|
|
|
131
136
|
return getSelectedTheme();
|
|
132
137
|
}
|
|
133
138
|
|
|
134
|
-
setTheme(name) {
|
|
139
|
+
setTheme(name, variables) {
|
|
135
140
|
StorageService.setItem('activeTheme', name);
|
|
136
|
-
setAppTheme(name).then(() => this.refresh());
|
|
141
|
+
setAppTheme(name, variables).then(() => this.refresh());
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
setThemeVariables(variables) {
|
|
145
|
+
this.setTheme(this.activeTheme, variables);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
resetThemeVariables() {
|
|
149
|
+
this.setTheme(this.activeTheme);
|
|
137
150
|
}
|
|
138
151
|
|
|
139
152
|
getTheme() {
|
|
@@ -147,6 +160,13 @@ class App extends BaseApp {
|
|
|
147
160
|
loadTheme() {
|
|
148
161
|
return this.getTheme()
|
|
149
162
|
.then((theme) => setAppTheme(theme))
|
|
163
|
+
.then((theme) => {
|
|
164
|
+
if (appConfig.preferences?.appStyle && appConfig.preferences?.appStyle === "1.0" ) {
|
|
165
|
+
// reset theme
|
|
166
|
+
resetTheme(this.appConfig.theme);
|
|
167
|
+
}
|
|
168
|
+
return theme;
|
|
169
|
+
})
|
|
150
170
|
}
|
|
151
171
|
|
|
152
172
|
get appLocale() {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { isIos} from '@wavemaker/app-rn-runtime/core/utils';
|
|
2
2
|
import themeVariables from '@wavemaker/app-rn-runtime/styles/theme.variables';
|
|
3
3
|
import BASE_THEME from '@wavemaker/app-rn-runtime/styles/theme';
|
|
4
|
+
import { clone } from 'lodash-es';
|
|
4
5
|
import fontConfig from './font.config';
|
|
5
6
|
|
|
6
7
|
const themes = {
|
|
@@ -24,12 +25,18 @@ let selectedTheme = null;
|
|
|
24
25
|
let selectedThemeName = null;
|
|
25
26
|
let getAsset = null;
|
|
26
27
|
const appTheme = BASE_THEME.$new('app-theme', {});
|
|
27
|
-
|
|
28
|
+
const defaultVariables = clone(themeVariables.INSTANCE);
|
|
29
|
+
export const setAppTheme = (themeName, variables) => {
|
|
28
30
|
return Promise.resolve().then(() => {
|
|
29
31
|
selectedTheme = (themes[themeName]||{})[isIos() ? 'ios': 'android'];
|
|
30
32
|
if (selectedTheme) {
|
|
31
33
|
selectedThemeName = themeName;
|
|
32
|
-
|
|
34
|
+
const styles = selectedTheme.style();
|
|
35
|
+
themeVariables.INSTANCE = Object.assign({},
|
|
36
|
+
defaultVariables,
|
|
37
|
+
selectedTheme.variables(),
|
|
38
|
+
styles['theme-variables'],
|
|
39
|
+
variables);
|
|
33
40
|
getAsset = selectedTheme.getAsset();
|
|
34
41
|
if (fontConfig.baseFont) {
|
|
35
42
|
themeVariables.baseFont = fontConfig.baseFont;
|
|
@@ -15,6 +15,7 @@ import * as config from './wm_rn_config.json';
|
|
|
15
15
|
export const appConfig = {
|
|
16
16
|
url : config.serverPath !== 'http://NOSERVERREQUIRED.com' ? config.serverPath : null,
|
|
17
17
|
theme: appTheme,
|
|
18
|
+
preferences: config.preferences,
|
|
18
19
|
splash: {animationSrc: config.splash.animationSrc, src: config.splash.src},
|
|
19
20
|
spinner: {loader: config.loader, json:{}},
|
|
20
21
|
refresh: () => {},
|
|
@@ -29,6 +30,7 @@ appConfig.url = location.href.split('/rn-bundle')[0];
|
|
|
29
30
|
injector.set('APP_CONFIG', appConfig);
|
|
30
31
|
injector.I18nService.set(AppI18nService);
|
|
31
32
|
|
|
33
|
+
LogBox.ignoreLogs(['VirtualizedLists should never be nested']);
|
|
32
34
|
global.wm = WM;
|
|
33
35
|
{{#if enableLogs}}
|
|
34
36
|
{{else}}
|
|
@@ -37,6 +39,11 @@ LogBox.ignoreAllLogs();
|
|
|
37
39
|
axios.defaults.withCredentials = true;
|
|
38
40
|
StorageService.target = config.id;
|
|
39
41
|
|
|
42
|
+
if(config.initScript){
|
|
43
|
+
const initScript = ResourceResolver.resolve(config.initScript, appConfig.url);
|
|
44
|
+
initScript.default && initScript.default();
|
|
45
|
+
}
|
|
46
|
+
|
|
40
47
|
const bootstrap = () => {
|
|
41
48
|
Logger.init();
|
|
42
49
|
injector.set('AppConfig', appConfig);
|
|
@@ -55,7 +55,6 @@ export default class {{name}}{{typeLabel}} extends Base{{typeLabel}} {
|
|
|
55
55
|
this.pageParams = this.state.props;
|
|
56
56
|
{{/ifEquals}}
|
|
57
57
|
const _this = this.proxy;
|
|
58
|
-
add{{typeLabel}}Script(this.App, this.proxy);
|
|
59
58
|
this.theme = (props.themeToUse || this.appConfig.theme);
|
|
60
59
|
const styleOverrides = this.theme.getStyle(props.classname);
|
|
61
60
|
this.theme = this.theme.$new('{{name}}-styles', styles);
|
|
@@ -82,6 +81,7 @@ export default class {{name}}{{typeLabel}} extends Base{{typeLabel}} {
|
|
|
82
81
|
this.startUpVariables = [{{#each startUpVariables}}'{{this}}',{{/each}}];
|
|
83
82
|
this.startUpActions = [{{#each startUpActions}}'{{this}}',{{/each}}];
|
|
84
83
|
this.autoUpdateVariables = [{{#each autoUpdateVariables}}'{{this}}',{{/each}}];
|
|
84
|
+
add{{typeLabel}}Script(this.App, this.proxy);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
provideAsset = (path) => this.handleUrl(path);
|
|
@@ -10,8 +10,9 @@
|
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@unimodules/react-native-adapter": "6.3.9",
|
|
13
|
-
"@wavemaker/app-rn-runtime": "11.6.2-next.
|
|
14
|
-
"@wavemaker/variables": "11.6.2-next.
|
|
13
|
+
"@wavemaker/app-rn-runtime": "11.6.2-next.1417107",
|
|
14
|
+
"@wavemaker/variables": "11.6.2-next.1417107",
|
|
15
|
+
"@wavemaker/rn-codegen": "11.6.2-next.1417107",
|
|
15
16
|
"axios": "^1.4.0",
|
|
16
17
|
"css-mediaquery": "^0.1.2",
|
|
17
18
|
"deprecated-react-native-prop-types": "~4.1.0",
|
|
@@ -34,6 +35,7 @@
|
|
|
34
35
|
"expo-constants": "14.4.2",
|
|
35
36
|
"@react-native/assets": "1.0.0",
|
|
36
37
|
"hermes-engine": "0.11.0",
|
|
38
|
+
"imask": "^7.5.0",
|
|
37
39
|
"react": "18.2.0",
|
|
38
40
|
"react-dom": "18.2.0",
|
|
39
41
|
"react-native": "0.72.4",
|
|
@@ -66,6 +68,8 @@
|
|
|
66
68
|
"react-native-restart": "0.0.27",
|
|
67
69
|
"@expo/webpack-config": "18.0.1",
|
|
68
70
|
"@babel/core": "7.20.2",
|
|
71
|
+
"@babel/standalone": "^7.23.10",
|
|
72
|
+
"@babel/plugin-syntax-jsx": "7.21.4",
|
|
69
73
|
"victory": "^36.5.3"
|
|
70
74
|
},
|
|
71
75
|
"devDependencies": {
|
|
@@ -79,7 +83,7 @@
|
|
|
79
83
|
"babel-plugin-transform-remove-console": "6.9.4",
|
|
80
84
|
"@babel/plugin-proposal-optional-chaining": "7.21.0",
|
|
81
85
|
"@babel/plugin-proposal-nullish-coalescing-operator": "7.18.6",
|
|
82
|
-
"@
|
|
86
|
+
"@types/babel__standalone": "^7.1.7"
|
|
83
87
|
},
|
|
84
88
|
"resolutions": {
|
|
85
89
|
"react-error-overlay": "6.0.9",
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import WmText from "@wavemaker/app-rn-runtime/components/input/text/text.component";
|
|
2
|
+
import WmTextarea from '@wavemaker/app-rn-runtime/components/input/textarea/textarea.component';
|
|
3
|
+
import WmNumber from "@wavemaker/app-rn-runtime/components/input/number/number.component";
|
|
4
|
+
import WmCurrency from '@wavemaker/app-rn-runtime/components/input/currency/currency.component';
|
|
5
|
+
import WmSelect from '@wavemaker/app-rn-runtime/components/input/select/select.component';
|
|
6
|
+
import WmSearch from '@wavemaker/app-rn-runtime/components/basic/search/search.component';
|
|
7
|
+
import WmChips from '@wavemaker/app-rn-runtime/components/input/chips/chips.component';
|
|
8
|
+
import WmCheckbox from '@wavemaker/app-rn-runtime/components/input/checkbox/checkbox.component';
|
|
9
|
+
import WmCheckboxset from '@wavemaker/app-rn-runtime/components/input/checkboxset/checkboxset.component';
|
|
10
|
+
import WmToggle from '@wavemaker/app-rn-runtime/components/input/toggle/toggle.component';
|
|
11
|
+
import WmSwitch from '@wavemaker/app-rn-runtime/components/input/switch/switch.component';
|
|
12
|
+
import WmRadioset from '@wavemaker/app-rn-runtime/components/input/radioset/radioset.component';
|
|
13
|
+
import WmDate from '@wavemaker/app-rn-runtime/components/input/epoch/date/date.component';
|
|
14
|
+
import WmDatetime from '@wavemaker/app-rn-runtime/components/input/epoch/datetime/datetime.component';
|
|
15
|
+
import WmTime from '@wavemaker/app-rn-runtime/components/input/epoch/time/time.component';
|
|
16
|
+
import WmSlider from '@wavemaker/app-rn-runtime/components/input/slider/slider.component';
|
|
17
|
+
import WmRating from '@wavemaker/app-rn-runtime/components/input/rating/rating.component';
|
|
18
|
+
import WmLayoutgrid from '@wavemaker/app-rn-runtime/components/container/layoutgrid/layoutgrid.component';
|
|
19
|
+
import WmGridrow from '@wavemaker/app-rn-runtime/components/container/layoutgrid/gridrow/gridrow.component';
|
|
20
|
+
import WmGridcolumn from '@wavemaker/app-rn-runtime/components/container/layoutgrid/gridcolumn/gridcolumn.component';
|
|
21
|
+
import registerTransformers from '@wavemaker/rn-codegen/src/transpile/components/transform-register';
|
|
22
|
+
import WmFormField from '@wavemaker/app-rn-runtime/components/data/form/form-field/form-field.component';
|
|
23
|
+
import WmLabel from '@wavemaker/app-rn-runtime/components/basic/label/label.component';
|
|
24
|
+
|
|
25
|
+
import {transpileMarkup} from '@wavemaker/rn-codegen/src/transpile/transpile';
|
|
26
|
+
import {transform} from '@babel/standalone';
|
|
27
|
+
import React from "react";
|
|
28
|
+
|
|
29
|
+
// this is to avoid tree shaking
|
|
30
|
+
export const components = {WmText};
|
|
31
|
+
|
|
32
|
+
registerTransformers();
|
|
33
|
+
|
|
34
|
+
export const generate = (wavemakerMarkup, fragment) => {
|
|
35
|
+
// transpile wavemaker markup into react markup
|
|
36
|
+
const transpiledComponents = transpileMarkup(wavemakerMarkup, false, false);
|
|
37
|
+
try {
|
|
38
|
+
// use babel library convert it into React.creatElement
|
|
39
|
+
const transformedCode = transform(transpiledComponents.markup, {
|
|
40
|
+
presets: ['react']
|
|
41
|
+
}).code;
|
|
42
|
+
|
|
43
|
+
const importedComponents = {
|
|
44
|
+
'WmText': WmText,
|
|
45
|
+
'WmTextarea': WmTextarea,
|
|
46
|
+
'WmNumber': WmNumber,
|
|
47
|
+
'WmCurrency': WmCurrency,
|
|
48
|
+
'WmSelect': WmSelect,
|
|
49
|
+
'WmSearch': WmSearch,
|
|
50
|
+
'WmChips': WmChips,
|
|
51
|
+
'WmCheckbox': WmCheckbox,
|
|
52
|
+
'WmCheckboxset': WmCheckboxset,
|
|
53
|
+
'WmToggle': WmToggle,
|
|
54
|
+
'WmSwitch': WmSwitch,
|
|
55
|
+
'WmRadioset': WmRadioset,
|
|
56
|
+
'WmDate': WmDate,
|
|
57
|
+
'WmDatetime': WmDatetime,
|
|
58
|
+
'WmTime': WmTime,
|
|
59
|
+
'WmSlider': WmSlider,
|
|
60
|
+
'WmRating': WmRating,
|
|
61
|
+
'WmLayoutgrid': WmLayoutgrid,
|
|
62
|
+
'WmGridrow': WmGridrow,
|
|
63
|
+
'WmGridcolumn': WmGridcolumn,
|
|
64
|
+
'WmFormField': WmFormField,
|
|
65
|
+
'WmLabel': WmLabel
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Evaluate the transformed code synchronously
|
|
69
|
+
const dynamicComponentFunction = new Function(['React, fragment', ...Object.keys(importedComponents)].join(', '), `return ${transformedCode}`);
|
|
70
|
+
const dynamicComponent = dynamicComponentFunction(React, fragment, ...Object.values(importedComponents));
|
|
71
|
+
return dynamicComponent;
|
|
72
|
+
} catch (error) {
|
|
73
|
+
console.error('Error generating component:', error);
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import {generate} from './component-generator';
|
|
2
|
+
import {forEach, isArray} from "lodash";
|
|
3
|
+
|
|
4
|
+
// Generate the form field with given field definition. Add a grid column wrapper around the form field.
|
|
5
|
+
const setMarkupForFormField = (field, columnWidth) => {
|
|
6
|
+
let propsTmpl = '';
|
|
7
|
+
forEach(field, (value, key) => {
|
|
8
|
+
propsTmpl = `${propsTmpl} ${key}="${value}"`;
|
|
9
|
+
});
|
|
10
|
+
return `<wm-gridcolumn columnwidth="${columnWidth}"><wm-form-field ${propsTmpl}></wm-form-field></wm-gridcolumn>`;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
// Function to generate and compile the form fields from the metadata
|
|
14
|
+
const generateFormFields = (metadata, formName) => {
|
|
15
|
+
let noOfColumns = 1;
|
|
16
|
+
const columnWidth = 12 / noOfColumns;
|
|
17
|
+
let fieldTemplate = '';
|
|
18
|
+
let colCount = 0;
|
|
19
|
+
let fields = metadata;
|
|
20
|
+
|
|
21
|
+
if (!isArray(fields)) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
while (fields[colCount]) {
|
|
26
|
+
let colTmpl = '';
|
|
27
|
+
if (fields[colCount]) {
|
|
28
|
+
colTmpl += setMarkupForFormField(fields[colCount], columnWidth);
|
|
29
|
+
}
|
|
30
|
+
colCount++;
|
|
31
|
+
fieldTemplate += `<wm-gridrow>${colTmpl}</wm-gridrow>`;
|
|
32
|
+
}
|
|
33
|
+
fieldTemplate = `<wm-layoutgrid type="dynamic" dynamicForm = "${formName}">${fieldTemplate}</wm-layoutgrid>`;
|
|
34
|
+
|
|
35
|
+
return fieldTemplate;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
export const dynamicForm = (metadata, formName, fragment) => {
|
|
40
|
+
// convert metadata into wavemaker markup
|
|
41
|
+
const wmMarkup = generateFormFields(metadata, formName);
|
|
42
|
+
|
|
43
|
+
// using component generator transform wavemaker markup into react elements
|
|
44
|
+
return generate(wmMarkup, fragment);
|
|
45
|
+
}
|
|
@@ -46,6 +46,7 @@ class EsBuilder {
|
|
|
46
46
|
const _package = fs.readJSONSync(packageFile);
|
|
47
47
|
console.log('patch applied on package at.. ', packageFile);
|
|
48
48
|
delete _package['module'];
|
|
49
|
+
delete _package['type'];
|
|
49
50
|
fs.writeFileSync(packageFile, JSON.stringify(_package, null, 4));
|
|
50
51
|
}
|
|
51
52
|
});
|
|
@@ -173,7 +174,10 @@ class EsBuilder {
|
|
|
173
174
|
return p.build && p.build(destPath);
|
|
174
175
|
});
|
|
175
176
|
return Promise.all(promises)
|
|
176
|
-
.then(() => this.patchPackageLib(['@koale/useworker', 'victory'
|
|
177
|
+
.then(() => this.patchPackageLib(['@koale/useworker', 'victory',
|
|
178
|
+
'd3-array', 'd3-color', 'd3-ease', 'd3-format', 'd3-interpolate',
|
|
179
|
+
'd3-path', 'd3-scale', 'd3-shape', 'd3-time', 'd3-time-format',
|
|
180
|
+
'd3-timer', 'd3-voronoi']))
|
|
177
181
|
.then(() => this.patchWithDevTools('expo/build/launch/withDevTools.js'))
|
|
178
182
|
.then(() => this.patchReactNativeWeb())
|
|
179
183
|
.then(() => this.patchReactNativeAssets())
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
"react-native": ["../node_modules/react-native-web"],
|
|
8
8
|
"react-native-web/src/*": ["../node_modules/react-native-web/dist/*"],
|
|
9
9
|
"@wavemaker/app-rn-runtime/*": ["../node_modules/@wavemaker/app-rn-runtime/*"],
|
|
10
|
-
"@wavemaker/variables/*": ["../node_modules/@wavemaker/variables/*"]
|
|
10
|
+
"@wavemaker/variables/*": ["../node_modules/@wavemaker/variables/*"],
|
|
11
|
+
"@wavemaker/rn-codegen/*": ["../node_modules/@wavemaker/rn-codegen/*"]
|
|
11
12
|
}
|
|
12
13
|
}
|
|
13
14
|
}
|
|
@@ -10,8 +10,9 @@
|
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@unimodules/react-native-adapter": "6.3.9",
|
|
13
|
-
"@wavemaker/app-rn-runtime": "11.6.2-next.
|
|
14
|
-
"@wavemaker/variables": "11.6.2-next.
|
|
13
|
+
"@wavemaker/app-rn-runtime": "11.6.2-next.1417107",
|
|
14
|
+
"@wavemaker/variables": "11.6.2-next.1417107",
|
|
15
|
+
"@wavemaker/rn-codegen": "11.6.2-next.1417107",
|
|
15
16
|
"axios": "^1.4.0",
|
|
16
17
|
"css-mediaquery": "^0.1.2",
|
|
17
18
|
"deprecated-react-native-prop-types": "~4.1.0",
|
|
@@ -34,6 +35,7 @@
|
|
|
34
35
|
"expo-constants": "14.4.2",
|
|
35
36
|
"@react-native/assets": "1.0.0",
|
|
36
37
|
"hermes-engine": "0.11.0",
|
|
38
|
+
"imask": "^7.5.0",
|
|
37
39
|
"react": "18.2.0",
|
|
38
40
|
"react-dom": "18.2.0",
|
|
39
41
|
"react-native": "0.72.4",
|
|
@@ -65,7 +67,9 @@
|
|
|
65
67
|
"setimmediate": "1.0.5",
|
|
66
68
|
"react-native-restart": "0.0.27",
|
|
67
69
|
"@expo/webpack-config": "18.0.1",
|
|
68
|
-
"@babel/core": "7.20.2"
|
|
70
|
+
"@babel/core": "7.20.2",
|
|
71
|
+
"@babel/standalone": "^7.23.10",
|
|
72
|
+
"@babel/plugin-syntax-jsx": "7.21.4"
|
|
69
73
|
},
|
|
70
74
|
"devDependencies": {
|
|
71
75
|
"webpack-dev-middleware": "6.1.1",
|
|
@@ -78,7 +82,7 @@
|
|
|
78
82
|
"babel-plugin-transform-remove-console": "6.9.4",
|
|
79
83
|
"@babel/plugin-proposal-optional-chaining": "7.21.0",
|
|
80
84
|
"@babel/plugin-proposal-nullish-coalescing-operator": "7.18.6",
|
|
81
|
-
"@
|
|
85
|
+
"@types/babel__standalone": "^7.1.7"
|
|
82
86
|
},
|
|
83
87
|
"resolutions": {
|
|
84
88
|
"react-error-overlay": "6.0.9",
|