@wavemaker/app-rn-runtime 11.6.0-next.139413 → 11.6.0-next.140456
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.
- app-rn-runtime/components/advanced/carousel/carousel.component.js +9 -7
- app-rn-runtime/components/advanced/carousel/carousel.component.js.map +1 -1
- app-rn-runtime/components/advanced/webview/webview.component.js +27 -11
- app-rn-runtime/components/advanced/webview/webview.component.js.map +1 -1
- app-rn-runtime/components/advanced/webview/webview.props.js +0 -1
- app-rn-runtime/components/advanced/webview/webview.props.js.map +1 -1
- app-rn-runtime/components/basic/button/button.component.js +13 -1
- app-rn-runtime/components/basic/button/button.component.js.map +1 -1
- app-rn-runtime/components/basic/button/button.styles.js +3 -3
- app-rn-runtime/components/basic/button/button.styles.js.map +1 -1
- app-rn-runtime/components/basic/buttongroup/buttongroup.styles.js +9 -4
- app-rn-runtime/components/basic/buttongroup/buttongroup.styles.js.map +1 -1
- app-rn-runtime/components/basic/icon/icon.styles.js +2 -1
- app-rn-runtime/components/basic/icon/icon.styles.js.map +1 -1
- app-rn-runtime/components/basic/label/label.component.js +33 -26
- app-rn-runtime/components/basic/label/label.component.js.map +1 -1
- app-rn-runtime/components/basic/label/label.styles.js +1 -4
- app-rn-runtime/components/basic/label/label.styles.js.map +1 -1
- app-rn-runtime/components/chart/area-chart/area-chart.component.js +2 -2
- app-rn-runtime/components/chart/area-chart/area-chart.component.js.map +1 -1
- app-rn-runtime/components/chart/bar-chart/bar-chart.component.js +7 -1
- app-rn-runtime/components/chart/bar-chart/bar-chart.component.js.map +1 -1
- app-rn-runtime/components/chart/bar-chart/bar-chart.props.js +0 -2
- app-rn-runtime/components/chart/bar-chart/bar-chart.props.js.map +1 -1
- app-rn-runtime/components/chart/basechart.component.js +19 -6
- app-rn-runtime/components/chart/basechart.component.js.map +1 -1
- app-rn-runtime/components/chart/basechart.props.js +4 -2
- app-rn-runtime/components/chart/basechart.props.js.map +1 -1
- app-rn-runtime/components/chart/basechart.styles.js +7 -1
- app-rn-runtime/components/chart/basechart.styles.js.map +1 -1
- app-rn-runtime/components/chart/line-chart/line-chart.component.js +3 -3
- app-rn-runtime/components/chart/line-chart/line-chart.component.js.map +1 -1
- app-rn-runtime/components/chart/pie-chart/pie-chart.component.js +1 -1
- app-rn-runtime/components/chart/pie-chart/pie-chart.component.js.map +1 -1
- app-rn-runtime/components/chart/stack-chart/stack-chart.component.js +28 -7
- app-rn-runtime/components/chart/stack-chart/stack-chart.component.js.map +1 -1
- app-rn-runtime/components/chart/stack-chart/stack-chart.props.js +1 -0
- app-rn-runtime/components/chart/stack-chart/stack-chart.props.js.map +1 -1
- app-rn-runtime/components/container/container.component.js +11 -2
- app-rn-runtime/components/container/container.component.js.map +1 -1
- app-rn-runtime/components/container/container.props.js +1 -0
- app-rn-runtime/components/container/container.props.js.map +1 -1
- app-rn-runtime/components/container/wizard/wizard.component.js +11 -8
- app-rn-runtime/components/container/wizard/wizard.component.js.map +1 -1
- app-rn-runtime/components/container/wizard/wizardstep/wizardstep.component.js +21 -2
- app-rn-runtime/components/container/wizard/wizardstep/wizardstep.component.js.map +1 -1
- app-rn-runtime/components/container/wizard/wizardstep/wizardstep.props.js +3 -0
- app-rn-runtime/components/container/wizard/wizardstep/wizardstep.props.js.map +1 -1
- app-rn-runtime/components/data/list/list.component.js +53 -1
- app-rn-runtime/components/data/list/list.component.js.map +1 -1
- app-rn-runtime/components/dialogs/dialog/dialog.styles.js +10 -2
- app-rn-runtime/components/dialogs/dialog/dialog.styles.js.map +1 -1
- app-rn-runtime/components/input/basenumber/basenumber.component.js +12 -6
- app-rn-runtime/components/input/basenumber/basenumber.component.js.map +1 -1
- app-rn-runtime/components/input/composite/composite.component.js +1 -1
- app-rn-runtime/components/input/composite/composite.component.js.map +1 -1
- app-rn-runtime/components/input/composite/composite.props.js +1 -1
- app-rn-runtime/components/input/composite/composite.props.js.map +1 -1
- app-rn-runtime/components/input/currency/currency.component.js +17 -2
- app-rn-runtime/components/input/currency/currency.component.js.map +1 -1
- app-rn-runtime/components/input/currency/currency.props.js +1 -0
- app-rn-runtime/components/input/currency/currency.props.js.map +1 -1
- app-rn-runtime/components/input/currency/currency.styles.js +19 -1
- app-rn-runtime/components/input/currency/currency.styles.js.map +1 -1
- app-rn-runtime/components/input/epoch/base-datetime.component.js +13 -5
- app-rn-runtime/components/input/epoch/base-datetime.component.js.map +1 -1
- app-rn-runtime/components/input/epoch/date/date.component.js +8 -0
- app-rn-runtime/components/input/epoch/date/date.component.js.map +1 -1
- app-rn-runtime/components/input/epoch/date/date.styles.js +16 -0
- app-rn-runtime/components/input/epoch/date/date.styles.js.map +1 -1
- app-rn-runtime/components/input/epoch/datetime/datetime.component.js +8 -0
- app-rn-runtime/components/input/epoch/datetime/datetime.component.js.map +1 -1
- app-rn-runtime/components/input/epoch/datetime/datetime.props.js +1 -0
- app-rn-runtime/components/input/epoch/datetime/datetime.props.js.map +1 -1
- app-rn-runtime/components/input/epoch/datetime/datetime.styles.js +21 -1
- app-rn-runtime/components/input/epoch/datetime/datetime.styles.js.map +1 -1
- app-rn-runtime/components/input/epoch/time/time.component.js +8 -0
- app-rn-runtime/components/input/epoch/time/time.component.js.map +1 -1
- app-rn-runtime/components/input/epoch/time/time.styles.js +16 -0
- app-rn-runtime/components/input/epoch/time/time.styles.js.map +1 -1
- app-rn-runtime/components/input/number/number.component.js +11 -0
- app-rn-runtime/components/input/number/number.component.js.map +1 -1
- app-rn-runtime/components/input/number/number.props.js +1 -0
- app-rn-runtime/components/input/number/number.props.js.map +1 -1
- app-rn-runtime/components/input/number/number.styles.js +17 -0
- app-rn-runtime/components/input/number/number.styles.js.map +1 -1
- app-rn-runtime/components/input/slider/slider.styles.js +3 -3
- app-rn-runtime/components/input/slider/slider.styles.js.map +1 -1
- app-rn-runtime/components/input/switch/switch.component.js +3 -0
- app-rn-runtime/components/input/switch/switch.component.js.map +1 -1
- app-rn-runtime/components/input/switch/switch.styles.js +8 -5
- app-rn-runtime/components/input/switch/switch.styles.js.map +1 -1
- app-rn-runtime/components/input/text/text.component.js +11 -0
- app-rn-runtime/components/input/text/text.component.js.map +1 -1
- app-rn-runtime/components/input/text/text.props.js +1 -0
- app-rn-runtime/components/input/text/text.props.js.map +1 -1
- app-rn-runtime/components/input/text/text.styles.js +17 -0
- app-rn-runtime/components/input/text/text.styles.js.map +1 -1
- app-rn-runtime/components/input/textarea/textarea.component.js +11 -0
- app-rn-runtime/components/input/textarea/textarea.component.js.map +1 -1
- app-rn-runtime/components/input/textarea/textarea.props.js +1 -0
- app-rn-runtime/components/input/textarea/textarea.props.js.map +1 -1
- app-rn-runtime/components/input/textarea/textarea.styles.js +17 -0
- app-rn-runtime/components/input/textarea/textarea.styles.js.map +1 -1
- app-rn-runtime/components/input/toggle/toggle.component.js +43 -5
- app-rn-runtime/components/input/toggle/toggle.component.js.map +1 -1
- app-rn-runtime/components/input/toggle/toggle.styles.js +5 -12
- app-rn-runtime/components/input/toggle/toggle.styles.js.map +1 -1
- app-rn-runtime/components/page/tabbar/curve.js +84 -0
- app-rn-runtime/components/page/tabbar/curve.js.map +1 -0
- app-rn-runtime/components/page/tabbar/tabbar.component.js +43 -9
- app-rn-runtime/components/page/tabbar/tabbar.component.js.map +1 -1
- app-rn-runtime/components/page/tabbar/tabbar.styles.js +54 -1
- app-rn-runtime/components/page/tabbar/tabbar.styles.js.map +1 -1
- app-rn-runtime/core/base.component.js +5 -1
- app-rn-runtime/core/base.component.js.map +1 -1
- app-rn-runtime/core/components/floatinglabel.component.js +45 -0
- app-rn-runtime/core/components/floatinglabel.component.js.map +1 -0
- app-rn-runtime/core/components/textinput.component.js +25 -2
- app-rn-runtime/core/components/textinput.component.js.map +1 -1
- app-rn-runtime/core/tappable.component.js +36 -9
- app-rn-runtime/core/tappable.component.js.map +1 -1
- app-rn-runtime/package.json +8 -3
- app-rn-runtime/runtime/services/webprocess.service.js +0 -1
- app-rn-runtime/runtime/services/webprocess.service.js.map +1 -1
- app-rn-runtime/styles/theme.js +36 -0
- app-rn-runtime/styles/theme.js.map +1 -1
- app-rn-runtime/styles/theme.variables.js +7 -0
- app-rn-runtime/styles/theme.variables.js.map +1 -1
- app-rn-runtime/variables/model-variable.js +2 -1
- app-rn-runtime/variables/model-variable.js.map +1 -1
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import * as d3Shape from "d3-shape";
|
|
2
|
+
// import { scale } from "react-native-size-scaling";
|
|
3
|
+
const scale = n => n;
|
|
4
|
+
//** Path Line */
|
|
5
|
+
const line = (width, height) => {
|
|
6
|
+
const path = d3Shape.line().x(d => d.x).y(d => d.y)([{
|
|
7
|
+
x: width / 2,
|
|
8
|
+
y: 0
|
|
9
|
+
}, {
|
|
10
|
+
x: width,
|
|
11
|
+
y: 0
|
|
12
|
+
}, {
|
|
13
|
+
x: width,
|
|
14
|
+
y: height
|
|
15
|
+
}, {
|
|
16
|
+
x: 0,
|
|
17
|
+
y: height
|
|
18
|
+
}, {
|
|
19
|
+
x: 0,
|
|
20
|
+
y: 0
|
|
21
|
+
}, {
|
|
22
|
+
x: width / 2,
|
|
23
|
+
y: 0
|
|
24
|
+
}]);
|
|
25
|
+
return path;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
//** Path Curved*/
|
|
29
|
+
const lineCurvedDown = (iPosition, height, circle) => {
|
|
30
|
+
const position = iPosition;
|
|
31
|
+
const circleWidth = circle + position;
|
|
32
|
+
const trim = (position + circleWidth) / 2;
|
|
33
|
+
const curved = d3Shape.line().x(d => d.x).y(d => d.y).curve(d3Shape.curveBasis)([{
|
|
34
|
+
x: position - scale(20),
|
|
35
|
+
y: 0
|
|
36
|
+
},
|
|
37
|
+
// border center left
|
|
38
|
+
{
|
|
39
|
+
x: position - scale(10),
|
|
40
|
+
y: scale(2)
|
|
41
|
+
}, {
|
|
42
|
+
x: position - scale(2),
|
|
43
|
+
y: scale(10)
|
|
44
|
+
}, {
|
|
45
|
+
x: position,
|
|
46
|
+
y: scale(17)
|
|
47
|
+
}, {
|
|
48
|
+
x: trim - scale(25),
|
|
49
|
+
y: height / 2 + scale(2)
|
|
50
|
+
}, {
|
|
51
|
+
x: trim - scale(10),
|
|
52
|
+
y: height / 2 + scale(10)
|
|
53
|
+
}, {
|
|
54
|
+
x: trim,
|
|
55
|
+
y: height / 2 + scale(10)
|
|
56
|
+
}, {
|
|
57
|
+
x: trim + scale(10),
|
|
58
|
+
y: height / 2 + scale(10)
|
|
59
|
+
}, {
|
|
60
|
+
x: trim + scale(25),
|
|
61
|
+
y: height / 2 + scale(2)
|
|
62
|
+
}, {
|
|
63
|
+
x: circleWidth,
|
|
64
|
+
y: scale(17)
|
|
65
|
+
},
|
|
66
|
+
// border center right
|
|
67
|
+
{
|
|
68
|
+
x: circleWidth + scale(2),
|
|
69
|
+
y: scale(10)
|
|
70
|
+
}, {
|
|
71
|
+
x: circleWidth + scale(10),
|
|
72
|
+
y: 0
|
|
73
|
+
}, {
|
|
74
|
+
x: circleWidth + scale(20),
|
|
75
|
+
y: 0
|
|
76
|
+
}]);
|
|
77
|
+
return curved;
|
|
78
|
+
};
|
|
79
|
+
export const getPathDown = (width, iHeight, centerWidth, clippedTabbarHeight) => {
|
|
80
|
+
const height = scale(iHeight);
|
|
81
|
+
const circleWidth = scale(centerWidth) + scale(16);
|
|
82
|
+
return `${line(width, clippedTabbarHeight)} ${lineCurvedDown(width / 2 - circleWidth / 2, height, circleWidth)}`;
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=curve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["d3Shape","scale","n","line","width","height","path","x","d","y","lineCurvedDown","iPosition","circle","position","circleWidth","trim","curved","curve","curveBasis","getPathDown","iHeight","centerWidth","clippedTabbarHeight"],"sources":["curve.tsx"],"sourcesContent":["import * as d3Shape from \"d3-shape\";\n// import { scale } from \"react-native-size-scaling\";\nconst scale = (n: number) => n;\n\ninterface LineDatum {\n x: number;\n y: number;\n missing?: boolean;\n}\n\n//** Path Line */\nconst line = (width : number, height: number) => {\n const path: any = d3Shape\n .line<LineDatum>()\n .x((d) => d.x)\n .y((d) => d.y)([\n { x: width / 2, y: 0 },\n { x: width, y: 0 },\n { x: width, y: height },\n { x: 0, y: height},\n { x: 0, y: 0 },\n { x: width / 2, y: 0 },\n ]);\n \nreturn path;\n};\n\n//** Path Curved*/\nconst lineCurvedDown = (iPosition: number, height: number, circle: number) => {\n const position = iPosition;\n const circleWidth = circle + position;\n const trim = (position + circleWidth) / 2;\n \n const curved: any = d3Shape\n .line<LineDatum>()\n .x((d) => d.x)\n .y((d) => d.y)\n .curve(d3Shape.curveBasis)([\n { x: position - scale(20), y: 0 }, // border center left\n { x: position - scale(10), y: scale(2) },\n { x: position - scale(2), y: scale(10) },\n { x: position, y: scale(17) },\n \n { x: trim - scale(25), y: height / 2 + scale(2) },\n { x: trim - scale(10), y: height / 2 + scale(10) },\n { x: trim, y: height / 2 + scale(10) },\n { x: trim + scale(10), y: height / 2 + scale(10) },\n { x: trim + scale(25), y: height / 2 + scale(2) },\n \n { x: circleWidth, y: scale(17) }, // border center right\n { x: circleWidth + scale(2), y: scale(10) },\n { x: circleWidth + scale(10), y: 0 },\n { x: circleWidth + scale(20), y: 0 },\n ]);\n return curved;\n};\n\nexport const getPathDown = (width: number, iHeight: number, centerWidth: number, clippedTabbarHeight: number) => {\n const height = scale(iHeight);\n const circleWidth = scale(centerWidth) + scale(16);\n return `${line(width, clippedTabbarHeight)} ${lineCurvedDown(\n width / 2 - circleWidth / 2,\n height,\n circleWidth\n )}`;\n};\n"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
3
3
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
4
4
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
5
5
|
import React from 'react';
|
|
6
|
-
import { Text, View, TouchableOpacity } from 'react-native';
|
|
6
|
+
import { Text, View, TouchableOpacity, Dimensions } from 'react-native';
|
|
7
7
|
import { ThemeProvider } from '@wavemaker/app-rn-runtime/styles/theme';
|
|
8
8
|
import { ModalConsumer } from '@wavemaker/app-rn-runtime/core/modal.service';
|
|
9
9
|
import WmIcon from '@wavemaker/app-rn-runtime/components/basic/icon/icon.component';
|
|
@@ -11,32 +11,47 @@ import { NavigationServiceConsumer } from '@wavemaker/app-rn-runtime/core/naviga
|
|
|
11
11
|
import { BaseNavComponent, BaseNavState } from '@wavemaker/app-rn-runtime/components/navigation/basenav/basenav.component';
|
|
12
12
|
import WmTabbarProps from './tabbar.props';
|
|
13
13
|
import { DEFAULT_CLASS } from './tabbar.styles';
|
|
14
|
+
import Svg, { Path } from 'react-native-svg';
|
|
15
|
+
import { getPathDown } from './curve';
|
|
16
|
+
// import { scale } from 'react-native-size-scaling';
|
|
17
|
+
import ThemeVariables from '@wavemaker/app-rn-runtime/styles/theme.variables';
|
|
18
|
+
const scale = n => n;
|
|
14
19
|
class WmTabbarState extends BaseNavState {
|
|
15
20
|
constructor() {
|
|
16
21
|
super(...arguments);
|
|
17
22
|
_defineProperty(this, "showMore", false);
|
|
18
23
|
_defineProperty(this, "modalOptions", {});
|
|
24
|
+
_defineProperty(this, "dataItems", []);
|
|
19
25
|
}
|
|
20
26
|
}
|
|
21
27
|
export default class WmTabbar extends BaseNavComponent {
|
|
22
28
|
constructor(props) {
|
|
23
29
|
super(props, DEFAULT_CLASS, new WmTabbarProps(), new WmTabbarState());
|
|
24
30
|
_defineProperty(this, "tabbarHeight", 0);
|
|
31
|
+
_defineProperty(this, "maxWidth", Dimensions.get("window").width);
|
|
32
|
+
_defineProperty(this, "returnpathDown", void 0);
|
|
25
33
|
}
|
|
26
34
|
renderTabItem(item, testId, props, onSelect) {
|
|
35
|
+
let floating = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
|
27
36
|
const isActive = props.isActive && props.isActive(item);
|
|
28
37
|
const getDisplayLabel = this.props.getDisplayExpression || (label => label);
|
|
29
|
-
|
|
38
|
+
let increasedGap = Number(testId) === (item === null || item === void 0 ? void 0 : item.indexBeforeMid) && this.state.dataItems.length % 2 != 0 && (props.classname || '').indexOf('clipped-tabbar') >= 0 ? [this.styles.tabItem, {
|
|
39
|
+
paddingRight: 70
|
|
40
|
+
}] : [this.styles.tabItem];
|
|
41
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
42
|
+
style: [increasedGap, floating ? this.styles.centerHubItem : {}],
|
|
43
|
+
key: `${item.label}_${testId}`
|
|
44
|
+
}, /*#__PURE__*/React.createElement(TouchableOpacity, _extends({}, this.getTestPropsForAction('item' + testId), {
|
|
30
45
|
onPress: () => onSelect && onSelect(),
|
|
31
46
|
key: item.key
|
|
32
47
|
}), /*#__PURE__*/React.createElement(View, {
|
|
33
|
-
style: [
|
|
48
|
+
style: [isActive && !floating ? this.styles.activeTabItem : {}]
|
|
34
49
|
}, /*#__PURE__*/React.createElement(WmIcon, {
|
|
35
|
-
styles: this.theme.mergeStyle({}, this.styles.tabIcon, isActive ? this.styles.activeTabIcon : {}),
|
|
50
|
+
styles: this.theme.mergeStyle({}, this.styles.tabIcon, floating ? this.styles.centerHubIcon : {}, isActive && !floating ? this.styles.activeTabIcon : {}),
|
|
36
51
|
iconclass: item.icon
|
|
37
52
|
}), /*#__PURE__*/React.createElement(Text, {
|
|
38
|
-
style: [this.styles.tabLabel, isActive ? this.styles.activeTabLabel : {}]
|
|
39
|
-
}, getDisplayLabel(item.label))));
|
|
53
|
+
style: [this.styles.tabLabel, floating ? this.styles.centerHubLabel : {}, isActive && !floating ? this.styles.activeTabLabel : {}]
|
|
54
|
+
}, getDisplayLabel(item.label)))));
|
|
40
55
|
}
|
|
41
56
|
onItemSelect(item, navigationService) {
|
|
42
57
|
item.link && navigationService.openUrl(item.link);
|
|
@@ -54,6 +69,14 @@ export default class WmTabbar extends BaseNavComponent {
|
|
|
54
69
|
renderWidget(props) {
|
|
55
70
|
let max = 5;
|
|
56
71
|
const tabItems = this.state.dataItems;
|
|
72
|
+
const tabItemsLength = tabItems.length;
|
|
73
|
+
const isClippedTabbar = (props.classname || '').indexOf('clipped-tabbar') >= 0 && tabItemsLength % 2 !== 0;
|
|
74
|
+
if (tabItemsLength % 2 !== 0) {
|
|
75
|
+
const middleIndex = Math.floor(tabItemsLength / 2);
|
|
76
|
+
tabItems[middleIndex]['floating'] = true;
|
|
77
|
+
tabItems[middleIndex - 1]['indexBeforeMid'] = middleIndex - 1;
|
|
78
|
+
}
|
|
79
|
+
this.returnpathDown = getPathDown(this.maxWidth, 65, 60, this.styles.root.height);
|
|
57
80
|
const moreItems = [];
|
|
58
81
|
if (tabItems.length > max) {
|
|
59
82
|
const moreItemsCount = Math.ceil((tabItems.length + 1 - max) / max) * max;
|
|
@@ -71,7 +94,18 @@ export default class WmTabbar extends BaseNavComponent {
|
|
|
71
94
|
}
|
|
72
95
|
return /*#__PURE__*/React.createElement(NavigationServiceConsumer, null, navigationService => /*#__PURE__*/React.createElement(View, {
|
|
73
96
|
style: this.styles.root
|
|
74
|
-
}, /*#__PURE__*/React.createElement(
|
|
97
|
+
}, isClippedTabbar ? /*#__PURE__*/React.createElement(Svg, {
|
|
98
|
+
width: this.maxWidth,
|
|
99
|
+
height: scale(this.styles.root.height),
|
|
100
|
+
style: {
|
|
101
|
+
zIndex: -1,
|
|
102
|
+
position: 'absolute',
|
|
103
|
+
backgroundColor: ThemeVariables.INSTANCE.transparent
|
|
104
|
+
}
|
|
105
|
+
}, /*#__PURE__*/React.createElement(Path, {
|
|
106
|
+
fill: ThemeVariables.INSTANCE.tabbarBackgroundColor,
|
|
107
|
+
d: this.returnpathDown
|
|
108
|
+
})) : /*#__PURE__*/React.createElement(React.Fragment, null), /*#__PURE__*/React.createElement(ModalConsumer, null, modalService => {
|
|
75
109
|
if (this.state.showMore) {
|
|
76
110
|
modalService.showModal(this.prepareModalOptions( /*#__PURE__*/React.createElement(ThemeProvider, {
|
|
77
111
|
value: this.theme
|
|
@@ -80,7 +114,7 @@ export default class WmTabbar extends BaseNavComponent {
|
|
|
80
114
|
}, moreItems.map((a, i) => /*#__PURE__*/React.createElement(View, {
|
|
81
115
|
key: i,
|
|
82
116
|
style: this.styles.moreMenuRow
|
|
83
|
-
}, a.map(item => this.renderTabItem(item, i + '', props, () => this.onItemSelect(item, navigationService)))))))));
|
|
117
|
+
}, a.map((item, index) => this.renderTabItem(item, i + '', props, () => this.onItemSelect(item, navigationService)))))))));
|
|
84
118
|
} else {
|
|
85
119
|
modalService.hideModal(this.state.modalOptions);
|
|
86
120
|
}
|
|
@@ -90,7 +124,7 @@ export default class WmTabbar extends BaseNavComponent {
|
|
|
90
124
|
onLayout: e => {
|
|
91
125
|
this.tabbarHeight = e.nativeEvent.layout.height;
|
|
92
126
|
}
|
|
93
|
-
}, tabItems.filter((item, i) => i < max).map((item, i) => this.renderTabItem(item, i + '', props, () => this.onItemSelect(item, navigationService))), tabItems.length > max && this.renderTabItem({
|
|
127
|
+
}, tabItems.filter((item, i) => i < max).map((item, i) => this.renderTabItem(item, i + '', props, () => this.onItemSelect(item, navigationService), item.floating)), tabItems.length > max && this.renderTabItem({
|
|
94
128
|
label: props.morebuttonlabel,
|
|
95
129
|
icon: props.morebuttoniconclass
|
|
96
130
|
}, 6666 + '', props, () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Text","View","TouchableOpacity","ThemeProvider","ModalConsumer","WmIcon","NavigationServiceConsumer","BaseNavComponent","BaseNavState","WmTabbarProps","DEFAULT_CLASS","WmTabbarState","constructor","arguments","_defineProperty","WmTabbar","props","renderTabItem","item","testId","onSelect","isActive","getDisplayLabel","getDisplayExpression","label","createElement","_extends","getTestPropsForAction","onPress","key","style","styles","tabItem","activeTabItem","theme","mergeStyle","tabIcon","activeTabIcon","iconclass","icon","tabLabel","activeTabLabel","onItemSelect","navigationService","link","openUrl","invokeEventCallback","proxy","prepareModalOptions","content","o","state","modalOptions","modalStyle","bottom","tabbarHeight","contentStyle","modalContent","renderWidget","max","tabItems","dataItems","moreItems","length","moreItemsCount","Math","ceil","j","i","row","push","root","modalService","showMore","showModal","value","moreMenu","map","a","moreMenuRow","hideModal","menu","onLayout","e","nativeEvent","layout","height","filter","morebuttonlabel","morebuttoniconclass","updateState"],"sources":["tabbar.component.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport { Text, View, TouchableOpacity } from 'react-native';\n\nimport { ThemeProvider } from '@wavemaker/app-rn-runtime/styles/theme';\nimport { ModalConsumer, ModalOptions, ModalService } from '@wavemaker/app-rn-runtime/core/modal.service';\nimport WmIcon from '@wavemaker/app-rn-runtime/components/basic/icon/icon.component';\nimport NavigationService, { NavigationServiceConsumer } from '@wavemaker/app-rn-runtime/core/navigation.service';\nimport { BaseNavProps } from '@wavemaker/app-rn-runtime/components/navigation/basenav/basenav.props';\nimport { BaseNavComponent, BaseNavState, NavigationDataItem } from '@wavemaker/app-rn-runtime/components/navigation/basenav/basenav.component';\n\nimport WmTabbarProps from './tabbar.props';\nimport { DEFAULT_CLASS, WmTabbarStyles } from './tabbar.styles';\n\nclass WmTabbarState<T extends BaseNavProps> extends BaseNavState<T>{\n showMore = false;\n modalOptions = {} as ModalOptions;\n}\n\nexport default class WmTabbar extends BaseNavComponent<WmTabbarProps, WmTabbarState<WmTabbarProps>, WmTabbarStyles> {\n\n private tabbarHeight = 0;\n\n constructor(props: WmTabbarProps) {\n super(props, DEFAULT_CLASS, new WmTabbarProps(), new WmTabbarState());\n }\n\n renderTabItem(item: NavigationDataItem, testId: string, props: WmTabbarProps, onSelect: Function) {\n const isActive = props.isActive && props.isActive(item);\n const getDisplayLabel = this.props.getDisplayExpression || ((label: string) => label);\n return (\n <TouchableOpacity {...this.getTestPropsForAction('item' + testId)} onPress={() => onSelect && onSelect()} key={item.key}>\n <View style={[this.styles.tabItem, isActive ? this.styles.activeTabItem: {}]}>\n <WmIcon styles={this.theme.mergeStyle({}, this.styles.tabIcon, isActive ? this.styles.activeTabIcon: {})} iconclass={item.icon}></WmIcon>\n <Text style={[this.styles.tabLabel, isActive ? this.styles.activeTabLabel: {}]}>{getDisplayLabel(item.label)}</Text>\n </View>\n </TouchableOpacity>\n );\n }\n\n onItemSelect(item: NavigationDataItem, navigationService: NavigationService) {\n item.link && navigationService.openUrl(item.link);\n this.invokeEventCallback('onSelect', [null, this.proxy, item]);\n }\n\n prepareModalOptions(content: ReactNode) {\n const o = this.state.modalOptions;\n o.content = content;\n o.modalStyle = {\n bottom: this.tabbarHeight\n };\n o.contentStyle = this.styles.modalContent; \n return o;\n }\n\n renderWidget(props: WmTabbarProps) {\n let max = 5;\n const tabItems = this.state.dataItems;\n const moreItems = [] as any[][];\n if (tabItems.length > max) {\n const moreItemsCount = Math.ceil((tabItems.length + 1 - max)/ max) * max;\n let j = 0;\n for (let i = max-1; i < moreItemsCount;) {\n const row = [];\n for (let j = 0; j < max; j++) {\n row[j] = tabItems[i++] || {key: 'tabItem' + i} as NavigationDataItem;\n }\n moreItems.push(row);\n }\n max = max - 1;\n }\n return (\n <NavigationServiceConsumer>\n {(navigationService) =>\n (<View style={this.styles.root}>\n <ModalConsumer>\n {(modalService: ModalService) => {\n if (this.state.showMore) {\n modalService.showModal(this.prepareModalOptions((\n <ThemeProvider value={this.theme} >\n <View style={this.styles.moreMenu}>\n {moreItems.map((a, i) =>\n (<View key={i} style={this.styles.moreMenuRow}>\n {a.map(item => this.renderTabItem(item, i + '', props, () => this.onItemSelect(item, navigationService)))}\n </View>)\n )}\n </View>\n </ThemeProvider>)));\n } else {\n modalService.hideModal(this.state.modalOptions);\n }\n return null;\n }}\n </ModalConsumer>\n <View style={this.styles.menu}\n onLayout={e => { this.tabbarHeight = e.nativeEvent.layout.height}}>\n {tabItems.filter((item, i) => i < max)\n .map((item, i) => this.renderTabItem(item, i + '', props, () => this.onItemSelect(item, navigationService)))}\n {tabItems.length > max && (\n this.renderTabItem({\n label: props.morebuttonlabel,\n icon: props.morebuttoniconclass\n } as NavigationDataItem, 6666 +'', props, () => {\n this.updateState({showMore: !this.state.showMore} as WmTabbarState<WmTabbarProps>);\n })\n )}\n </View>\n </View>)}\n </NavigationServiceConsumer>\n );\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","Text","View","TouchableOpacity","Dimensions","ThemeProvider","ModalConsumer","WmIcon","NavigationServiceConsumer","BaseNavComponent","BaseNavState","WmTabbarProps","DEFAULT_CLASS","Svg","Path","getPathDown","ThemeVariables","scale","n","WmTabbarState","constructor","arguments","_defineProperty","WmTabbar","props","get","width","renderTabItem","item","testId","onSelect","floating","length","undefined","isActive","getDisplayLabel","getDisplayExpression","label","increasedGap","Number","indexBeforeMid","state","dataItems","classname","indexOf","styles","tabItem","paddingRight","createElement","style","centerHubItem","key","_extends","getTestPropsForAction","onPress","activeTabItem","theme","mergeStyle","tabIcon","centerHubIcon","activeTabIcon","iconclass","icon","tabLabel","centerHubLabel","activeTabLabel","onItemSelect","navigationService","link","openUrl","invokeEventCallback","proxy","prepareModalOptions","content","o","modalOptions","modalStyle","bottom","tabbarHeight","contentStyle","modalContent","renderWidget","max","tabItems","tabItemsLength","isClippedTabbar","middleIndex","Math","floor","returnpathDown","maxWidth","root","height","moreItems","moreItemsCount","ceil","j","i","row","push","zIndex","position","backgroundColor","INSTANCE","transparent","fill","tabbarBackgroundColor","d","Fragment","modalService","showMore","showModal","value","moreMenu","map","a","moreMenuRow","index","hideModal","menu","onLayout","e","nativeEvent","layout","filter","morebuttonlabel","morebuttoniconclass","updateState"],"sources":["tabbar.component.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport { Text, View, TouchableOpacity, Dimensions } from 'react-native';\n\nimport { ThemeProvider } from '@wavemaker/app-rn-runtime/styles/theme';\nimport { ModalConsumer, ModalOptions, ModalService } from '@wavemaker/app-rn-runtime/core/modal.service';\nimport WmIcon from '@wavemaker/app-rn-runtime/components/basic/icon/icon.component';\nimport NavigationService, { NavigationServiceConsumer } from '@wavemaker/app-rn-runtime/core/navigation.service';\nimport { BaseNavProps } from '@wavemaker/app-rn-runtime/components/navigation/basenav/basenav.props';\nimport { BaseNavComponent, BaseNavState, NavigationDataItem } from '@wavemaker/app-rn-runtime/components/navigation/basenav/basenav.component';\n\nimport WmTabbarProps from './tabbar.props';\nimport { DEFAULT_CLASS, WmTabbarStyles } from './tabbar.styles';\nimport Svg, { Path } from 'react-native-svg';\nimport { getPathDown } from './curve';\n// import { scale } from 'react-native-size-scaling';\nimport ThemeVariables from '@wavemaker/app-rn-runtime/styles/theme.variables';\n\ninterface TabDataItem extends NavigationDataItem {\n floating: boolean;\n indexBeforeMid: number;\n}\n\nconst scale = (n: number) => n;\n\nclass WmTabbarState<T extends BaseNavProps> extends BaseNavState<T> {\n showMore = false;\n modalOptions = {} as ModalOptions;\n dataItems: TabDataItem[] = [];\n}\n\nexport default class WmTabbar extends BaseNavComponent<WmTabbarProps, WmTabbarState<WmTabbarProps>, WmTabbarStyles> {\n\n private tabbarHeight = 0;\n\n constructor(props: WmTabbarProps) {\n super(props, DEFAULT_CLASS, new WmTabbarProps(), new WmTabbarState());\n }\n\n private maxWidth = Dimensions.get(\"window\").width; \n private returnpathDown: any;\n\n renderTabItem(item: TabDataItem, testId: string, props: WmTabbarProps, onSelect: Function, floating = false) {\n\n const isActive = props.isActive && props.isActive(item);\n const getDisplayLabel = this.props.getDisplayExpression || ((label: string) => label);\n let increasedGap = Number(testId) === item?.indexBeforeMid && (this.state.dataItems.length % 2!=0) && ((props.classname || '').indexOf('clipped-tabbar') >= 0)\n ? [this.styles.tabItem, { paddingRight: 70 }]\n : [this.styles.tabItem];\n \n return (\n <View style={[increasedGap, floating? this.styles.centerHubItem: {}]} key={`${item.label}_${testId}`}>\n <TouchableOpacity {...this.getTestPropsForAction('item' + testId)} onPress={() => onSelect && onSelect()} key={item.key}>\n <View style={[isActive && !floating ? this.styles.activeTabItem : {}]}>\n <WmIcon styles={this.theme.mergeStyle({}, this.styles.tabIcon ,floating? this.styles.centerHubIcon: {}, isActive && !floating ? this.styles.activeTabIcon : {})}\n iconclass={item.icon}></WmIcon>\n <Text style={[this.styles.tabLabel,floating? this.styles.centerHubLabel: {}, isActive && !floating ? this.styles.activeTabLabel: {}]}>{getDisplayLabel(item.label)}</Text>\n </View>\n </TouchableOpacity>\n </View>\n );\n}\n\n onItemSelect(item: TabDataItem, navigationService: NavigationService) {\n item.link && navigationService.openUrl(item.link);\n this.invokeEventCallback('onSelect', [null, this.proxy, item]);\n }\n\n prepareModalOptions(content: ReactNode) {\n const o = this.state.modalOptions;\n o.content = content;\n o.modalStyle = {\n bottom: this.tabbarHeight\n };\n o.contentStyle = this.styles.modalContent; \n return o;\n }\n\n renderWidget(props: WmTabbarProps) {\n let max = 5;\n const tabItems = this.state.dataItems;\n const tabItemsLength = tabItems.length;\n const isClippedTabbar = ((props.classname || '').indexOf('clipped-tabbar') >= 0) && (tabItemsLength % 2 !== 0);\n if (tabItemsLength % 2 !== 0) {\n const middleIndex = Math.floor(tabItemsLength / 2);\n tabItems[middleIndex]['floating'] = true;\n tabItems[middleIndex - 1]['indexBeforeMid'] = middleIndex-1;\n }\n this.returnpathDown = getPathDown(this.maxWidth, 65 ,60,this.styles.root.height as number);\n const moreItems = [] as any[][];\n if (tabItems.length > max) {\n const moreItemsCount = Math.ceil((tabItems.length + 1 - max)/ max) * max;\n let j = 0;\n for (let i = max-1; i < moreItemsCount;) {\n const row = [];\n for (let j = 0; j < max; j++) {\n row[j] = tabItems[i++] || {key: 'tabItem' + i} as TabDataItem;\n }\n moreItems.push(row);\n }\n max = max - 1;\n }\n return (\n <NavigationServiceConsumer>\n {(navigationService) =>\n (<View style={this.styles.root}>\n {isClippedTabbar ? (\n <Svg width={this.maxWidth} height={scale(this.styles.root.height as number)} style={{zIndex: -1,position: 'absolute',backgroundColor: ThemeVariables.INSTANCE.transparent}}>\n <Path fill={ThemeVariables.INSTANCE.tabbarBackgroundColor} {...{ d: this.returnpathDown }}/>\n </Svg>\n ): <></>} \n <ModalConsumer>\n {(modalService: ModalService) => {\n if (this.state.showMore) {\n modalService.showModal(this.prepareModalOptions((\n <ThemeProvider value={this.theme} >\n <View style={this.styles.moreMenu}>\n {moreItems.map((a, i) =>\n (<View key={i} style={this.styles.moreMenuRow}>\n {a.map((item, index) => this.renderTabItem(item, i + '', props, () => this.onItemSelect(item, navigationService)))}\n </View>)\n )}\n </View>\n </ThemeProvider>)));\n } else {\n modalService.hideModal(this.state.modalOptions);\n }\n return null;\n }}\n </ModalConsumer>\n <View style={this.styles.menu}\n onLayout={e => { this.tabbarHeight = e.nativeEvent.layout.height}}> \n {tabItems.filter((item, i) => i < max)\n .map((item, i) => this.renderTabItem(item, i + '', props, () => this.onItemSelect(item, navigationService), item.floating))}\n {tabItems.length > max && (\n this.renderTabItem({\n label: props.morebuttonlabel,\n icon: props.morebuttoniconclass\n } as TabDataItem, 6666 +'', props, () => {\n this.updateState({showMore: !this.state.showMore} as WmTabbarState<WmTabbarProps>);\n })\n )}\n </View>\n </View>)}\n </NavigationServiceConsumer>\n );\n }\n}\n"],"mappings":"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"}
|
|
@@ -71,9 +71,17 @@ BASE_THEME.registerStyle((themeVariables, addStyle) => {
|
|
|
71
71
|
marginTop: -32,
|
|
72
72
|
paddingBottom: 14
|
|
73
73
|
},
|
|
74
|
-
activeTabLabel: {}
|
|
74
|
+
activeTabLabel: {},
|
|
75
|
+
centerHubItem: {},
|
|
76
|
+
centerHubIcon: {},
|
|
77
|
+
centerHubLabel: {}
|
|
75
78
|
});
|
|
76
79
|
addStyle(DEFAULT_CLASS, '', defaultStyles);
|
|
80
|
+
addStyle('tabbar-spacer', '', {
|
|
81
|
+
root: {
|
|
82
|
+
height: 96
|
|
83
|
+
}
|
|
84
|
+
});
|
|
77
85
|
addStyle(DEFAULT_CLASS + '-1', '', {
|
|
78
86
|
root: {
|
|
79
87
|
height: undefined
|
|
@@ -96,5 +104,50 @@ BASE_THEME.registerStyle((themeVariables, addStyle) => {
|
|
|
96
104
|
marginTop: 0
|
|
97
105
|
}
|
|
98
106
|
});
|
|
107
|
+
addStyle('clipped-tabbar', '', {
|
|
108
|
+
root: {
|
|
109
|
+
backgroundColor: themeVariables.transparent,
|
|
110
|
+
marginTop: -88
|
|
111
|
+
},
|
|
112
|
+
menu: {
|
|
113
|
+
backgroundColor: themeVariables.transparent
|
|
114
|
+
},
|
|
115
|
+
centerHubItem: {
|
|
116
|
+
width: 70,
|
|
117
|
+
height: 70,
|
|
118
|
+
shadowColor: 'grey',
|
|
119
|
+
shadowOpacity: 0.1,
|
|
120
|
+
opacity: 1,
|
|
121
|
+
shadowOffset: {
|
|
122
|
+
width: 2,
|
|
123
|
+
height: 0
|
|
124
|
+
},
|
|
125
|
+
shadowRadius: 2,
|
|
126
|
+
borderRadius: 35,
|
|
127
|
+
position: 'absolute',
|
|
128
|
+
bottom: 53,
|
|
129
|
+
alignItems: 'center',
|
|
130
|
+
justifyContent: 'center',
|
|
131
|
+
backgroundColor: themeVariables.centerHubItemColor,
|
|
132
|
+
left: themeVariables.maxWidth / 2 - 35
|
|
133
|
+
},
|
|
134
|
+
centerHubIcon: {
|
|
135
|
+
root: {
|
|
136
|
+
alignSelf: 'center',
|
|
137
|
+
paddingBottom: 0,
|
|
138
|
+
borderBottomColor: themeVariables.transparent,
|
|
139
|
+
borderBottomWidth: 0
|
|
140
|
+
},
|
|
141
|
+
icon: {
|
|
142
|
+
fontSize: 24,
|
|
143
|
+
color: themeVariables.centerHubIconColor
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
centerHubLabel: {
|
|
147
|
+
color: themeVariables.centerHubLabelColor,
|
|
148
|
+
marginTop: 0,
|
|
149
|
+
paddingBottom: 4
|
|
150
|
+
}
|
|
151
|
+
});
|
|
99
152
|
});
|
|
100
153
|
//# sourceMappingURL=tabbar.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BASE_THEME","defineStyles","DEFAULT_CLASS","registerStyle","themeVariables","addStyle","defaultStyles","root","height","text","menu","flexDirection","backgroundColor","tabbarBackgroundColor","justifyContent","alignItems","modalContent","moreMenu","width","getStyle","shadowOffset","shadowOpacity","shadowRadius","moreMenuRow","paddingTop","paddingBottom","tabItem","minWidth","opacity","activeTabItem","tabIcon","alignSelf","borderBottomColor","transparent","borderBottomWidth","icon","fontSize","color","tabbarIconColor","activeTabIcon","tabLabel","fontWeight","textAlign","fontFamily","baseFont","marginTop","activeTabLabel","undefined","borderTopWidth","borderTopColor"],"sources":["tabbar.styles.ts"],"sourcesContent":["import BASE_THEME, { AllStyle } from '@wavemaker/app-rn-runtime/styles/theme';\nimport { BaseStyles, defineStyles } from '@wavemaker/app-rn-runtime/core/base.component';\nimport { WmIconStyles } from '../../basic/icon/icon.styles';\n\nexport type WmTabbarStyles = BaseStyles & {\n menu: AllStyle,\n modalContent: AllStyle,\n moreMenu: AllStyle,\n moreMenuRow: AllStyle,\n tabItem: AllStyle,\n activeTabItem: AllStyle,\n tabIcon: WmIconStyles,\n activeTabIcon: WmIconStyles,\n tabLabel: AllStyle,\n activeTabLabel: AllStyle\n};\n\nexport const DEFAULT_CLASS = 'app-tabbar';\n BASE_THEME.registerStyle((themeVariables, addStyle) => {\n const defaultStyles: WmTabbarStyles = defineStyles<WmTabbarStyles>({\n root: {\n height: 88\n },\n text: {},\n menu: {\n height: '100%',\n flexDirection: 'row',\n backgroundColor: themeVariables.tabbarBackgroundColor,\n justifyContent: 'space-around',\n alignItems: 'flex-end',\n },\n modalContent: {},\n moreMenu: {\n width: '100%',\n flexDirection: 'column-reverse',\n justifyContent: 'flex-end',\n backgroundColor: themeVariables.tabbarBackgroundColor,\n ...BASE_THEME.getStyle('elevate1').root,\n shadowOffset: {\n width: 0,\n height: -6\n },\n shadowOpacity: 0.3,\n shadowRadius: 6\n },\n moreMenuRow: {\n flexDirection: 'row-reverse',\n justifyContent: 'space-around',\n width: '100%',\n paddingTop: 4,\n paddingBottom: 4\n },\n tabItem: {\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n minWidth: 60,\n opacity: 0.4\n },\n activeTabItem: {\n opacity: 1\n },\n tabIcon: {\n root: {\n alignSelf: 'center',\n paddingBottom: 32,\n borderBottomColor: themeVariables.transparent,\n borderBottomWidth: 4\n },\n icon: {\n fontSize: 36,\n color: themeVariables.tabbarIconColor\n }\n } as WmIconStyles,\n activeTabIcon: {\n root: {\n borderBottomColor: themeVariables.tabbarIconColor,\n }\n } as WmIconStyles,\n tabLabel: {\n fontSize: 14,\n fontWeight: '500',\n color: themeVariables.tabbarIconColor,\n textAlign: 'center',\n fontFamily: themeVariables.baseFont,\n marginTop: -32,\n paddingBottom: 14\n },\n activeTabLabel: {}\n });\n\n addStyle(DEFAULT_CLASS, '', defaultStyles);\n addStyle(DEFAULT_CLASS+ '-1', '', {\n root: {\n height: undefined\n },\n tabItem: {\n justifyContent: 'space-between' \n },\n activeTabItem: {\n borderTopWidth: 4,\n borderTopColor: themeVariables.tabbarIconColor\n },\n tabIcon: {\n root: {\n paddingTop: 8,\n paddingBottom: 8,\n borderBottomWidth: 0\n }\n },\n tabLabel: {\n marginTop: 0\n }\n } as WmTabbarStyles);\n});"],"mappings":"AAAA,OAAOA,UAAU,MAAoB,wCAAwC;AAC7E,SAAqBC,YAAY,QAAQ,+CAA+C;
|
|
1
|
+
{"version":3,"names":["BASE_THEME","defineStyles","DEFAULT_CLASS","registerStyle","themeVariables","addStyle","defaultStyles","root","height","text","menu","flexDirection","backgroundColor","tabbarBackgroundColor","justifyContent","alignItems","modalContent","moreMenu","width","getStyle","shadowOffset","shadowOpacity","shadowRadius","moreMenuRow","paddingTop","paddingBottom","tabItem","minWidth","opacity","activeTabItem","tabIcon","alignSelf","borderBottomColor","transparent","borderBottomWidth","icon","fontSize","color","tabbarIconColor","activeTabIcon","tabLabel","fontWeight","textAlign","fontFamily","baseFont","marginTop","activeTabLabel","centerHubItem","centerHubIcon","centerHubLabel","undefined","borderTopWidth","borderTopColor","shadowColor","borderRadius","position","bottom","centerHubItemColor","left","maxWidth","centerHubIconColor","centerHubLabelColor"],"sources":["tabbar.styles.ts"],"sourcesContent":["import BASE_THEME, { AllStyle } from '@wavemaker/app-rn-runtime/styles/theme';\nimport { BaseStyles, defineStyles } from '@wavemaker/app-rn-runtime/core/base.component';\nimport { WmIconStyles } from '../../basic/icon/icon.styles';\n\nexport type WmTabbarStyles = BaseStyles & {\n menu: AllStyle,\n modalContent: AllStyle,\n moreMenu: AllStyle,\n moreMenuRow: AllStyle,\n tabItem: AllStyle,\n activeTabItem: AllStyle,\n tabIcon: WmIconStyles,\n activeTabIcon: WmIconStyles,\n tabLabel: AllStyle,\n activeTabLabel: AllStyle,\n centerHubItem: AllStyle,\n centerHubIcon: WmIconStyles,\n centerHubLabel: AllStyle\n};\n\nexport const DEFAULT_CLASS = 'app-tabbar';\n BASE_THEME.registerStyle((themeVariables, addStyle) => {\n const defaultStyles: WmTabbarStyles = defineStyles<WmTabbarStyles>({\n root: {\n height: 88\n },\n text: {},\n menu: {\n height: '100%',\n flexDirection: 'row',\n backgroundColor: themeVariables.tabbarBackgroundColor,\n justifyContent: 'space-around',\n alignItems: 'flex-end',\n },\n modalContent: {},\n moreMenu: {\n width: '100%',\n flexDirection: 'column-reverse',\n justifyContent: 'flex-end',\n backgroundColor: themeVariables.tabbarBackgroundColor,\n ...BASE_THEME.getStyle('elevate1').root,\n shadowOffset: {\n width: 0,\n height: -6\n },\n shadowOpacity: 0.3,\n shadowRadius: 6\n },\n moreMenuRow: {\n flexDirection: 'row-reverse',\n justifyContent: 'space-around',\n width: '100%',\n paddingTop: 4,\n paddingBottom: 4\n },\n tabItem: {\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n minWidth: 60,\n opacity: 0.4\n },\n activeTabItem: {\n opacity: 1\n },\n tabIcon: {\n root: {\n alignSelf: 'center',\n paddingBottom: 32,\n borderBottomColor: themeVariables.transparent,\n borderBottomWidth: 4\n },\n icon: {\n fontSize: 36,\n color: themeVariables.tabbarIconColor\n }\n } as WmIconStyles,\n activeTabIcon: {\n root: {\n borderBottomColor: themeVariables.tabbarIconColor,\n }\n } as WmIconStyles,\n tabLabel: {\n fontSize: 14,\n fontWeight: '500',\n color: themeVariables.tabbarIconColor,\n textAlign: 'center',\n fontFamily: themeVariables.baseFont,\n marginTop: -32,\n paddingBottom: 14\n },\n activeTabLabel: {},\n centerHubItem: {},\n centerHubIcon: {} as WmIconStyles, \n centerHubLabel:{}\n });\n\n addStyle(DEFAULT_CLASS, '', defaultStyles);\n addStyle('tabbar-spacer', '', {\n root: {\n height: 96\n }\n });\n addStyle(DEFAULT_CLASS+ '-1', '', {\n root: {\n height: undefined\n },\n tabItem: {\n justifyContent: 'space-between' \n },\n activeTabItem: {\n borderTopWidth: 4,\n borderTopColor: themeVariables.tabbarIconColor\n },\n tabIcon: {\n root: {\n paddingTop: 8,\n paddingBottom: 8,\n borderBottomWidth: 0\n }\n },\n tabLabel: {\n marginTop: 0\n }\n } as WmTabbarStyles);\n addStyle('clipped-tabbar', '', {\n root:{\n backgroundColor: themeVariables.transparent,\n marginTop: -88\n },\n menu: {\n backgroundColor: themeVariables.transparent\n },\n centerHubItem: {\n width: 70,\n height: 70,\n shadowColor: 'grey',\n shadowOpacity: 0.1,\n opacity: 1,\n shadowOffset: { width: 2, height: 0 },\n shadowRadius: 2,\n borderRadius: 35,\n position: 'absolute',\n bottom: 53,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: themeVariables.centerHubItemColor,\n left: (themeVariables.maxWidth/2) - 35\n },\n centerHubIcon: {\n root: {\n alignSelf: 'center',\n paddingBottom: 0,\n borderBottomColor: themeVariables.transparent,\n borderBottomWidth: 0 \n },\n icon: {\n fontSize: 24,\n color: themeVariables.centerHubIconColor\n }\n } as WmIconStyles, \n centerHubLabel:{\n color: themeVariables.centerHubLabelColor,\n marginTop: 0,\n paddingBottom: 4\n }\n })\n});"],"mappings":"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"}
|
|
@@ -357,6 +357,9 @@ export class BaseComponent extends React.Component {
|
|
|
357
357
|
testID: id
|
|
358
358
|
};
|
|
359
359
|
}
|
|
360
|
+
getStyleClassName() {
|
|
361
|
+
return this.state.props.classname;
|
|
362
|
+
}
|
|
360
363
|
getTestPropsForInput(suffix) {
|
|
361
364
|
return this.getTestProps(suffix || 'i');
|
|
362
365
|
}
|
|
@@ -394,11 +397,12 @@ export class BaseComponent extends React.Component {
|
|
|
394
397
|
const selectedLocale = this.i18nService.getSelectedLocale();
|
|
395
398
|
return this.getDependenciesFromContext(() => {
|
|
396
399
|
WIDGET_LOGGER.info(() => `${this.props.name || this.constructor.name} is rendering.`);
|
|
400
|
+
const classname = this.getStyleClassName();
|
|
397
401
|
this.styles = this.theme.mergeStyle(this.getDefaultStyles(), {
|
|
398
402
|
text: this.theme.getStyle('app-' + selectedLocale)
|
|
399
403
|
}, {
|
|
400
404
|
text: this.theme.getStyle(this.defaultClass + '-' + selectedLocale)
|
|
401
|
-
}, props.disabled ? this.theme.getStyle(this.defaultClass + '-disabled') : null, this.isRTL ? this.theme.getStyle(this.defaultClass + '-rtl') : null,
|
|
405
|
+
}, props.disabled ? this.theme.getStyle(this.defaultClass + '-disabled') : null, this.isRTL ? this.theme.getStyle(this.defaultClass + '-rtl') : null, classname && this.theme.getStyle(classname), props.showindevice && this.theme.getStyle('d-all-none ' + props.showindevice.map(d => `d-${d}-flex`).join(' ')), this.props.styles, {
|
|
402
406
|
root: this.styleOverrides,
|
|
403
407
|
text: this.styleOverrides
|
|
404
408
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["assign","isUndefined","isNil","React","Platform","Animatable","ThemeVariables","StyleProps","getStyleName","BackgroundComponent","injector","ROOT_LOGGER","deepCopy","BASE_THEME","ThemeConsumer","ThemeEvent","EventNotifier","PropsProvider","assignIn","HideMode","AssetConsumer","FixedView","TextIdPrefixConsumer","WIDGET_LOGGER","extend","ParentContext","createContext","BaseComponentState","constructor","_defineProperty","undefined","defineStyles","styles","text","fontFamily","INSTANCE","baseFont","userSelect","BaseProps","arguments","BaseComponent","Component","markupProps","defaultClass","defaultProps","defaultState","ADD_TO_DOM","createElement","Fragment","I18nService","get","state","propertyProvider","show","name","$new","$old","debug","props","initialized","styleName","styleOverrides","cleanRefresh","onPropertyChange","check","proxy","Proxy","target","prop","receiver","propName","toString","has","Reflect","set","value","updateState","cleanup","push","updateStateTimeouts","forEach","v","clearTimeout","theme","subscribe","CHANGE","forceUpdate","destroyParentListeners","event","fn","notifier","isRTL","i18nService","isRTLLocale","animate","setState","animationId","Date","now","animatableProps","setProp","setPropDefault","setDefault","getDefaultStyles","getStyle","reset","newPartialState","callback","destroyed","stateFn","oldState","oldProps","newState","Object","keys","k","onUpdateState","_this$props$listener","_this$props$listener2","listener","onComponentChange","timeoutId","setTimeout","splice","indexOf","shouldComponentUpdate","nextProps","nextState","nextContext","key","componentDidMount","onComponentInit","componentWillAttach","isFixed","hide","componentWillDetach","componentWillUnmount","onComponentDestroy","f","notify","componentDidUpdate","prevProps","prevState","snapshot","invokeEventCallback","eventName","args","callBack","map","a","apply","e","console","error","isVisible","refresh","renderSkeleton","parentListenerDestroyers","setParent","parent","copyStyles","property","from","to","renderFixedContainer","style","rootStyle","left","top","bottom","right","width","height","root","mergeStyle","addAnimation","renderWidget","n","View","_extends","setBackground","bgStyle","_background","image","backgroundImage","position","backgroundPosition","size","backgroundSize","repeat","backgroundRepeat","resizeMode","backgroundResizeMode","borderRadius","getTestId","suffix","id","testIdPrefix","getTestProps","OS","accessibilityLabel","testID","accessible","getTestPropsForInput","getTestPropsForAction","getTestPropsForLabel","getDependenciesFromContext","loadAsset","Consumer","_this$parent","_showSkeleton","showskeleton","Provider","render","hideMode","DONOT_ADD_TO_DOM","selectedLocale","getSelectedLocale","info","disabled","classname","showindevice","d","join","hasOwnProperty","backgroundColor","eleToRender"],"sources":["base.component.tsx"],"sourcesContent":["import { assign, isUndefined, isNil } from 'lodash';\nimport React, { ReactNode } from 'react';\nimport { I18nManager, Platform, TextStyle, ViewStyle } from 'react-native';\nimport * as Application from 'expo-application';\nimport { AnimatableProperties } from 'react-native-animatable';\nimport * as Animatable from 'react-native-animatable';\nimport ThemeVariables from '@wavemaker/app-rn-runtime/styles/theme.variables';\nimport { StyleProps, getStyleName } from '@wavemaker/app-rn-runtime/styles/style-props';\nimport { BackgroundComponent } from '@wavemaker/app-rn-runtime/styles/background.component';\nimport injector from '@wavemaker/app-rn-runtime/core/injector';\nimport { ROOT_LOGGER } from '@wavemaker/app-rn-runtime/core/logger';\nimport { deepCopy, isWebPreviewMode } from '@wavemaker/app-rn-runtime/core/utils';\nimport BASE_THEME, { NamedStyles, AllStyle, ThemeConsumer, ThemeEvent, Theme } from '../styles/theme';\nimport EventNotifier from './event-notifier';\nimport { PropsProvider } from './props.provider';\nimport { assignIn } from 'lodash-es';\nimport { HideMode } from './if.component';\nimport { AssetConsumer } from './asset.provider';\nimport { FixedView } from './fixed-view.component';\nimport { TextIdPrefixConsumer } from './testid.provider';\n\nexport const WIDGET_LOGGER = ROOT_LOGGER.extend('widget');\n\nexport const ParentContext = React.createContext(null as any);\n\nexport class BaseComponentState<T extends BaseProps> {\n public animationId?: number = 0;\n public animatableProps?: AnimatableProperties<ViewStyle> = undefined;\n public props = {} as T;\n public hide? = false;\n}\n\nexport type BaseStyles = NamedStyles<any> & {\n root: AllStyle,\n text: TextStyle & {userSelect?: 'none'| 'text'}\n}\n\nexport function defineStyles<T>(styles: T): T {\n return deepCopy({\n text: {\n fontFamily: ThemeVariables.INSTANCE.baseFont,\n userSelect: 'text'\n }\n }, styles);\n}\n\nexport interface LifecycleListener {\n onComponentChange?: (c: BaseComponent<any, any, any>) => void;\n onComponentInit?: (c: BaseComponent<any, any, any>) => void;\n onComponentDestroy?: (c: BaseComponent<any, any, any>) => void;\n}\n\nexport class BaseProps extends StyleProps {\n id?: string = null as any;\n name?: string = null as any;\n key?: any = null as any;\n disabled? = false;\n show? = true as Boolean | String | Number;\n styles?: any = null;\n classname?: string = null as any;\n listener?: LifecycleListener = null as any;\n showindevice?: ('xs'|'sm'|'md'|'lg'|'xl'|'xxl')[] = null as any;\n showskeleton?: boolean = false;\n}\n\nexport abstract class BaseComponent<T extends BaseProps, S extends BaseComponentState<T>, L extends BaseStyles> extends React.Component<T, S> {\n public styles: L = null as any;\n public hideMode = HideMode.ADD_TO_DOM;\n private propertyProvider: PropsProvider<T>;\n public proxy: BaseComponent<T, S, L>;\n public initialized = false;\n public cleanup = [] as Function[];\n public theme = BASE_THEME;\n public updateStateTimeouts= [] as NodeJS.Timeout[];\n public parent: BaseComponent<any, any, any> = null as any;\n public destroyed = false;\n public _showSkeleton = false;\n public isFixed = false;\n private notifier = new EventNotifier();\n private parentListenerDestroyers = [] as Function[];\n public _background = <></>;\n private styleOverrides = {} as any;\n public loadAsset: (path: string) => number | string = null as any;\n private i18nService = injector.I18nService.get();\n public testIdPrefix = '';\n\n constructor(markupProps: T, public defaultClass: string, defaultProps?: T, defaultState?: S) {\n super(markupProps);\n this.state = (defaultState || {} as S);\n this.propertyProvider = new PropsProvider<T>(\n assign({show: true}, defaultProps),\n assign({}, markupProps),\n (name: string, $new: any, $old: any) => {\n WIDGET_LOGGER.debug(() => `${this.props.name || this.constructor.name}: ${name} changed from ${$old} to ${$new}`);\n if (this.initialized) {\n const styleName = getStyleName(name);\n if (styleName) {\n if ($new === undefined) {\n delete this.styleOverrides[styleName];\n } else {\n this.styleOverrides[styleName] = $new;\n }\n }\n }\n if (name === 'showskeleton' && this.initialized) {\n this.cleanRefresh();\n }\n this.onPropertyChange(name, $new, $old);\n });\n //@ts-ignore\n this.state.props =this.propertyProvider.get();\n this.propertyProvider.check();\n //@ts-ignore\n this.proxy = (new Proxy(this, {\n get: (target, prop, receiver): any => {\n const propName = prop.toString();\n if (this.propertyProvider.has(propName)) {\n //@ts-ignore\n return this.state.props[propName];\n }\n return Reflect.get(target, prop, receiver);\n },\n set: (target: any, prop, value: any): any => {\n const propName = prop.toString();\n if (this.propertyProvider.has(propName)) {\n // @ts-ignore\n const props = {} as any;\n props[propName] = value;\n this.updateState({\n props: props\n } as S);\n return true;\n } else {\n return Reflect.set(target, prop, value);\n }\n }\n }));\n this.cleanup.push(() => {\n this.updateStateTimeouts.forEach(v => clearTimeout(v));\n });\n this.cleanup.push(this.theme.subscribe(ThemeEvent.CHANGE, () => {\n this.forceUpdate();\n }));\n this.cleanup.push(() => {\n this.destroyParentListeners();\n });\n }\n\n public subscribe(event: string, fn: Function) {\n return this.notifier.subscribe(event, fn);\n }\n\n public get isRTL(){\n return this.i18nService.isRTLLocale();\n }\n\n public animate(props: AnimatableProperties<ViewStyle>) {\n this.setState({\n animationId: Date.now(),\n animatableProps: props\n });\n }\n\n setProp(propName: string, value: any) {\n this.propertyProvider.set(propName, value);\n this.updateState({props:{}} as S);\n }\n\n setPropDefault(propName: string, value: any) {\n this.propertyProvider.setDefault(propName, value);\n }\n \n onPropertyChange(name: string, $new: any, $old: any) { \n }\n \n getDefaultStyles() {\n return this.theme.getStyle(this.defaultClass);\n }\n\n reset() {\n\n }\n\n updateState(newPartialState: S, callback?: ()=>void) {\n if (this.destroyed) {\n return;\n }\n const stateFn = (oldState: S) => {\n const oldProps = oldState.props;\n const newState = this.initialized ? assignIn({}, oldState, newPartialState) : assignIn(oldState, newPartialState);\n if (newPartialState.props) {\n Object.keys(newPartialState.props).forEach((k) => {\n //@ts-ignore\n oldProps[k] = newState.props[k];\n });\n newState.props = oldProps;\n }\n return newState;\n };\n const onUpdateState = () => {\n callback && callback();\n this.props.listener?.onComponentChange\n && this.props.listener?.onComponentChange(this);\n }\n if (!this.initialized) {\n this.state = stateFn(this.state);\n onUpdateState();\n } else {\n const timeoutId = setTimeout(() => {\n this.setState(stateFn, onUpdateState);\n this.updateStateTimeouts.splice(this.updateStateTimeouts.indexOf(timeoutId), 1);\n });\n this.updateStateTimeouts.push(timeoutId);\n }\n }\n\n shouldComponentUpdate(nextProps: T, nextState: S, nextContext: any) {\n if (this.propertyProvider.check(nextProps)) {\n return true;\n }\n for(let key in nextState) {\n if(key !== 'props' && (!(key in this.state) || nextState[key] !== this.state[key])) {\n return true;\n }\n }\n\n for(let key in this.state) {\n if(key !== 'props' && (!(key in nextState) || this.state[key] !== nextState[key])) {\n return true;\n }\n }\n return false;\n }\n\n componentDidMount() {\n if (this.props.listener && this.props.listener.onComponentInit) {\n this.props.listener.onComponentInit(this.proxy);\n }\n this.initialized = true;\n }\n\n componentWillAttach() {\n if (this.isFixed) {\n this.setState({hide: false});\n }\n }\n\n componentWillDetach() {\n if (this.isFixed) {\n this.setState({hide: true});\n }\n }\n\n componentWillUnmount() {\n this.destroyed = true;\n if (this.props.listener && this.props.listener.onComponentDestroy) {\n this.props.listener.onComponentDestroy(this.proxy);\n }\n this.cleanup.forEach(f => f && f());\n this.notifier.notify('destroy', []);\n }\n \n componentDidUpdate(prevProps: Readonly<T>, prevState: Readonly<S>, snapshot?: any): void {\n if (this.propertyProvider.check(this.props)) {\n this.forceUpdate();\n }\n }\n\n invokeEventCallback(eventName: string, args: any[]) {\n //@ts-ignore\n const callBack: Function = this.props[eventName];\n args = args && args.map(a => (a === this) ? this.proxy : a)\n if (callBack) {\n try {\n return callBack.apply(this.proxy, args);\n } catch(e) {\n console.error(e);\n }\n }\n }\n\n isVisible() {\n const show = this.state.props.show;\n return show !== false && show !== 'false' && show !== '0' && !isNil(show);\n }\n\n protected abstract renderWidget(props: T): ReactNode;\n\n public refresh() {\n this.forceUpdate();\n }\n\n public cleanRefresh() {\n this.forceUpdate(() => this.notifier.notify('forceUpdate', []));\n }\n \n public renderSkeleton (props: T): ReactNode {\n return null;\n }\n\n public destroyParentListeners() {\n this.parentListenerDestroyers.map(fn => fn());\n }\n\n private setParent(parent: BaseComponent<any, any, any>) {\n if (parent && this.parent !== parent) {\n this.parent = parent;\n this.parentListenerDestroyers = [\n this.parent.subscribe('forceUpdate', () => {\n this.cleanRefresh();\n }),\n this.parent.subscribe('destroy', () => {\n this.destroyParentListeners();\n })\n ];\n }\n }\n\n copyStyles(property: string, from: any, to: any) {\n if (!isUndefined(from[property])) {\n to[property] = from[property];\n }\n }\n\n renderFixedContainer(props: T) {\n const style = {} as ViewStyle;\n const rootStyle = {\n left: 0,\n top: 0,\n bottom: 0,\n right: 0,\n width: \"100%\",\n height: \"100%\"\n } as ViewStyle;\n this.copyStyles('left', this.styles.root, style);\n this.copyStyles('top', this.styles.root, style);\n this.copyStyles('right', this.styles.root, style);\n this.copyStyles('bottom', this.styles.root, style);\n this.copyStyles('width', this.styles.root, style);\n this.copyStyles('height', this.styles.root, style);\n this.styles = this.theme.mergeStyle(this.styles, {root: rootStyle});\n return (<FixedView style={style} theme={this.theme}>{this.addAnimation(this.renderWidget(props))}</FixedView>);\n }\n\n private addAnimation(n: ReactNode) {\n if (!this.state.animatableProps) {\n return n;\n }\n return (<Animatable.View key={this.state.animationId} {...this.state.animatableProps}>{n}</Animatable.View>);\n }\n \n private setBackground() {\n const bgStyle = this.styles.root as any;\n this._background = (\n <BackgroundComponent \n image={bgStyle.backgroundImage}\n position={bgStyle.backgroundPosition}\n size={bgStyle.backgroundSize}\n repeat={bgStyle.backgroundRepeat}\n resizeMode={bgStyle.backgroundResizeMode}\n style={{borderRadius: this.styles.root.borderRadius}}>\n </BackgroundComponent>\n );\n delete (this.styles.root as any)['backgroundImage'];\n delete (this.styles.root as any)['backgroundPosition'];\n delete (this.styles.root as any)['backgroundResizeMode'];\n delete (this.styles.root as any)['backgroundSize'];\n delete (this.styles.root as any)['backgroundRepeat'];\n }\n\n public getTestId(suffix?: string) {\n let id = this.props.id || this.props.name;\n if (this.testIdPrefix) {\n id = this.testIdPrefix + '_' + id;\n }\n if (suffix) {\n id = id + '_' + suffix;\n }\n return id;\n }\n\n public getTestProps(suffix?: string) {\n let id = this.getTestId(suffix);\n if (Platform.OS === 'android' || Platform.OS === 'web') {\n return {\n accessibilityLabel: id,\n testID: id\n };\n }\n return {\n accessible: false,\n testID: id\n };\n }\n\n public getTestPropsForInput(suffix?: string) {\n return this.getTestProps(suffix || 'i');\n }\n\n public getTestPropsForAction(suffix?: string) {\n return this.getTestProps(suffix || 'a');\n }\n\n public getTestPropsForLabel(suffix?: string) {\n return this.getTestProps(suffix || 'l');\n }\n\n private getDependenciesFromContext(fn: () => ReactNode) {\n return (\n <TextIdPrefixConsumer>\n {(testIdPrefix) => {\n this.testIdPrefix = testIdPrefix || '';\n return (<AssetConsumer>\n {(loadAsset) => {\n this.loadAsset = loadAsset;\n return (<ParentContext.Consumer>\n {(parent) => {\n this.setParent(parent);\n this._showSkeleton = this.parent?._showSkeleton \n || !!this.state.props.showskeleton;\n return (\n <ParentContext.Provider value={this}>\n <ThemeConsumer>\n {(theme) => { \n this.theme = theme || BASE_THEME;\n return fn();\n }}\n </ThemeConsumer>\n </ParentContext.Provider>);\n }} \n </ParentContext.Consumer>);\n }}\n </AssetConsumer>);\n }}\n </TextIdPrefixConsumer>); \n }\n \n public render(): ReactNode {\n const props = this.state.props;\n if (this.state.hide || (!this.isVisible() && this.hideMode === HideMode.DONOT_ADD_TO_DOM)) {\n return null;\n }\n this.isFixed = false;\n const selectedLocale = this.i18nService.getSelectedLocale();\n return this.getDependenciesFromContext(() => {\n WIDGET_LOGGER.info(() => `${this.props.name || this.constructor.name} is rendering.`);\n this.styles = this.theme.mergeStyle(\n this.getDefaultStyles(),\n {text: this.theme.getStyle('app-' + selectedLocale)},\n {text: this.theme.getStyle(this.defaultClass + '-' + selectedLocale)},\n props.disabled ? this.theme.getStyle(this.defaultClass + '-disabled') : null,\n this.isRTL ? this.theme.getStyle(this.defaultClass + '-rtl') : null,\n props.classname && this.theme.getStyle(props.classname),\n props.showindevice && this.theme.getStyle('d-all-none ' + props.showindevice.map(d => `d-${d}-flex`).join(' ')),\n this.props.styles,\n {\n root: this.styleOverrides,\n text: this.styleOverrides\n });\n if (this.styles.root.hasOwnProperty('_background')) {\n delete this.styles.root.backgroundColor;\n }\n if (!this.isVisible()) {\n assign(this.styles, this.theme.getStyle('hidden'))\n }\n let eleToRender = (this._showSkeleton && this.renderSkeleton(props));\n if (eleToRender) {\n return eleToRender;\n }\n this.setBackground();\n this.isFixed = (this.styles.root.position as any) === 'fixed';\n if (this.isFixed) {\n this.styles.root.position = undefined;\n return this.renderFixedContainer(props);\n }\n return this.addAnimation(this.renderWidget(this.state.props)); \n });\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["assign","isUndefined","isNil","React","Platform","Animatable","ThemeVariables","StyleProps","getStyleName","BackgroundComponent","injector","ROOT_LOGGER","deepCopy","BASE_THEME","ThemeConsumer","ThemeEvent","EventNotifier","PropsProvider","assignIn","HideMode","AssetConsumer","FixedView","TextIdPrefixConsumer","WIDGET_LOGGER","extend","ParentContext","createContext","BaseComponentState","constructor","_defineProperty","undefined","defineStyles","styles","text","fontFamily","INSTANCE","baseFont","userSelect","BaseProps","arguments","BaseComponent","Component","markupProps","defaultClass","defaultProps","defaultState","ADD_TO_DOM","createElement","Fragment","I18nService","get","state","propertyProvider","show","name","$new","$old","debug","props","initialized","styleName","styleOverrides","cleanRefresh","onPropertyChange","check","proxy","Proxy","target","prop","receiver","propName","toString","has","Reflect","set","value","updateState","cleanup","push","updateStateTimeouts","forEach","v","clearTimeout","theme","subscribe","CHANGE","forceUpdate","destroyParentListeners","event","fn","notifier","isRTL","i18nService","isRTLLocale","animate","setState","animationId","Date","now","animatableProps","setProp","setPropDefault","setDefault","getDefaultStyles","getStyle","reset","newPartialState","callback","destroyed","stateFn","oldState","oldProps","newState","Object","keys","k","onUpdateState","_this$props$listener","_this$props$listener2","listener","onComponentChange","timeoutId","setTimeout","splice","indexOf","shouldComponentUpdate","nextProps","nextState","nextContext","key","componentDidMount","onComponentInit","componentWillAttach","isFixed","hide","componentWillDetach","componentWillUnmount","onComponentDestroy","f","notify","componentDidUpdate","prevProps","prevState","snapshot","invokeEventCallback","eventName","args","callBack","map","a","apply","e","console","error","isVisible","refresh","renderSkeleton","parentListenerDestroyers","setParent","parent","copyStyles","property","from","to","renderFixedContainer","style","rootStyle","left","top","bottom","right","width","height","root","mergeStyle","addAnimation","renderWidget","n","View","_extends","setBackground","bgStyle","_background","image","backgroundImage","position","backgroundPosition","size","backgroundSize","repeat","backgroundRepeat","resizeMode","backgroundResizeMode","borderRadius","getTestId","suffix","id","testIdPrefix","getTestProps","OS","accessibilityLabel","testID","accessible","getStyleClassName","classname","getTestPropsForInput","getTestPropsForAction","getTestPropsForLabel","getDependenciesFromContext","loadAsset","Consumer","_this$parent","_showSkeleton","showskeleton","Provider","render","hideMode","DONOT_ADD_TO_DOM","selectedLocale","getSelectedLocale","info","disabled","showindevice","d","join","hasOwnProperty","backgroundColor","eleToRender"],"sources":["base.component.tsx"],"sourcesContent":["import { assign, isUndefined, isNil } from 'lodash';\nimport React, { ReactNode } from 'react';\nimport { I18nManager, Platform, TextStyle, ViewStyle } from 'react-native';\nimport * as Application from 'expo-application';\nimport { AnimatableProperties } from 'react-native-animatable';\nimport * as Animatable from 'react-native-animatable';\nimport ThemeVariables from '@wavemaker/app-rn-runtime/styles/theme.variables';\nimport { StyleProps, getStyleName } from '@wavemaker/app-rn-runtime/styles/style-props';\nimport { BackgroundComponent } from '@wavemaker/app-rn-runtime/styles/background.component';\nimport injector from '@wavemaker/app-rn-runtime/core/injector';\nimport { ROOT_LOGGER } from '@wavemaker/app-rn-runtime/core/logger';\nimport { deepCopy, isWebPreviewMode } from '@wavemaker/app-rn-runtime/core/utils';\nimport BASE_THEME, { NamedStyles, AllStyle, ThemeConsumer, ThemeEvent, Theme } from '../styles/theme';\nimport EventNotifier from './event-notifier';\nimport { PropsProvider } from './props.provider';\nimport { assignIn } from 'lodash-es';\nimport { HideMode } from './if.component';\nimport { AssetConsumer } from './asset.provider';\nimport { FixedView } from './fixed-view.component';\nimport { TextIdPrefixConsumer } from './testid.provider';\n\nexport const WIDGET_LOGGER = ROOT_LOGGER.extend('widget');\n\nexport const ParentContext = React.createContext(null as any);\n\nexport class BaseComponentState<T extends BaseProps> {\n public animationId?: number = 0;\n public animatableProps?: AnimatableProperties<ViewStyle> = undefined;\n public props = {} as T;\n public hide? = false;\n}\n\nexport type BaseStyles = NamedStyles<any> & {\n root: AllStyle,\n text: TextStyle & {userSelect?: 'none'| 'text'}\n}\n\nexport function defineStyles<T>(styles: T): T {\n return deepCopy({\n text: {\n fontFamily: ThemeVariables.INSTANCE.baseFont,\n userSelect: 'text'\n }\n }, styles);\n}\n\nexport interface LifecycleListener {\n onComponentChange?: (c: BaseComponent<any, any, any>) => void;\n onComponentInit?: (c: BaseComponent<any, any, any>) => void;\n onComponentDestroy?: (c: BaseComponent<any, any, any>) => void;\n}\n\nexport class BaseProps extends StyleProps {\n id?: string = null as any;\n name?: string = null as any;\n key?: any = null as any;\n disabled? = false;\n show? = true as Boolean | String | Number;\n styles?: any = null;\n classname?: string = null as any;\n listener?: LifecycleListener = null as any;\n showindevice?: ('xs'|'sm'|'md'|'lg'|'xl'|'xxl')[] = null as any;\n showskeleton?: boolean = false;\n}\n\nexport abstract class BaseComponent<T extends BaseProps, S extends BaseComponentState<T>, L extends BaseStyles> extends React.Component<T, S> {\n public styles: L = null as any;\n public hideMode = HideMode.ADD_TO_DOM;\n private propertyProvider: PropsProvider<T>;\n public proxy: BaseComponent<T, S, L>;\n public initialized = false;\n public cleanup = [] as Function[];\n public theme = BASE_THEME;\n public updateStateTimeouts= [] as NodeJS.Timeout[];\n public parent: BaseComponent<any, any, any> = null as any;\n public destroyed = false;\n public _showSkeleton = false;\n public isFixed = false;\n private notifier = new EventNotifier();\n private parentListenerDestroyers = [] as Function[];\n public _background = <></>;\n private styleOverrides = {} as any;\n public loadAsset: (path: string) => number | string = null as any;\n private i18nService = injector.I18nService.get();\n public testIdPrefix = '';\n\n constructor(markupProps: T, public defaultClass: string, defaultProps?: T, defaultState?: S) {\n super(markupProps);\n this.state = (defaultState || {} as S);\n this.propertyProvider = new PropsProvider<T>(\n assign({show: true}, defaultProps),\n assign({}, markupProps),\n (name: string, $new: any, $old: any) => {\n WIDGET_LOGGER.debug(() => `${this.props.name || this.constructor.name}: ${name} changed from ${$old} to ${$new}`);\n if (this.initialized) {\n const styleName = getStyleName(name);\n if (styleName) {\n if ($new === undefined) {\n delete this.styleOverrides[styleName];\n } else {\n this.styleOverrides[styleName] = $new;\n }\n }\n }\n if (name === 'showskeleton' && this.initialized) {\n this.cleanRefresh();\n }\n this.onPropertyChange(name, $new, $old);\n });\n //@ts-ignore\n this.state.props =this.propertyProvider.get();\n this.propertyProvider.check();\n //@ts-ignore\n this.proxy = (new Proxy(this, {\n get: (target, prop, receiver): any => {\n const propName = prop.toString();\n if (this.propertyProvider.has(propName)) {\n //@ts-ignore\n return this.state.props[propName];\n }\n return Reflect.get(target, prop, receiver);\n },\n set: (target: any, prop, value: any): any => {\n const propName = prop.toString();\n if (this.propertyProvider.has(propName)) {\n // @ts-ignore\n const props = {} as any;\n props[propName] = value;\n this.updateState({\n props: props\n } as S);\n return true;\n } else {\n return Reflect.set(target, prop, value);\n }\n }\n }));\n this.cleanup.push(() => {\n this.updateStateTimeouts.forEach(v => clearTimeout(v));\n });\n this.cleanup.push(this.theme.subscribe(ThemeEvent.CHANGE, () => {\n this.forceUpdate();\n }));\n this.cleanup.push(() => {\n this.destroyParentListeners();\n });\n }\n\n public subscribe(event: string, fn: Function) {\n return this.notifier.subscribe(event, fn);\n }\n\n public get isRTL(){\n return this.i18nService.isRTLLocale();\n }\n\n public animate(props: AnimatableProperties<ViewStyle>) {\n this.setState({\n animationId: Date.now(),\n animatableProps: props\n });\n }\n\n setProp(propName: string, value: any) {\n this.propertyProvider.set(propName, value);\n this.updateState({props:{}} as S);\n }\n\n setPropDefault(propName: string, value: any) {\n this.propertyProvider.setDefault(propName, value);\n }\n \n onPropertyChange(name: string, $new: any, $old: any) { \n }\n \n getDefaultStyles() {\n return this.theme.getStyle(this.defaultClass);\n }\n\n reset() {\n\n }\n\n updateState(newPartialState: S, callback?: ()=>void) {\n if (this.destroyed) {\n return;\n }\n const stateFn = (oldState: S) => {\n const oldProps = oldState.props;\n const newState = this.initialized ? assignIn({}, oldState, newPartialState) : assignIn(oldState, newPartialState);\n if (newPartialState.props) {\n Object.keys(newPartialState.props).forEach((k) => {\n //@ts-ignore\n oldProps[k] = newState.props[k];\n });\n newState.props = oldProps;\n }\n return newState;\n };\n const onUpdateState = () => {\n callback && callback();\n this.props.listener?.onComponentChange\n && this.props.listener?.onComponentChange(this);\n }\n if (!this.initialized) {\n this.state = stateFn(this.state);\n onUpdateState();\n } else {\n const timeoutId = setTimeout(() => {\n this.setState(stateFn, onUpdateState);\n this.updateStateTimeouts.splice(this.updateStateTimeouts.indexOf(timeoutId), 1);\n });\n this.updateStateTimeouts.push(timeoutId);\n }\n }\n\n shouldComponentUpdate(nextProps: T, nextState: S, nextContext: any) {\n if (this.propertyProvider.check(nextProps)) {\n return true;\n }\n for(let key in nextState) {\n if(key !== 'props' && (!(key in this.state) || nextState[key] !== this.state[key])) {\n return true;\n }\n }\n\n for(let key in this.state) {\n if(key !== 'props' && (!(key in nextState) || this.state[key] !== nextState[key])) {\n return true;\n }\n }\n return false;\n }\n\n componentDidMount() {\n if (this.props.listener && this.props.listener.onComponentInit) {\n this.props.listener.onComponentInit(this.proxy);\n }\n this.initialized = true;\n }\n\n componentWillAttach() {\n if (this.isFixed) {\n this.setState({hide: false});\n }\n }\n\n componentWillDetach() {\n if (this.isFixed) {\n this.setState({hide: true});\n }\n }\n\n componentWillUnmount() {\n this.destroyed = true;\n if (this.props.listener && this.props.listener.onComponentDestroy) {\n this.props.listener.onComponentDestroy(this.proxy);\n }\n this.cleanup.forEach(f => f && f());\n this.notifier.notify('destroy', []);\n }\n \n componentDidUpdate(prevProps: Readonly<T>, prevState: Readonly<S>, snapshot?: any): void {\n if (this.propertyProvider.check(this.props)) {\n this.forceUpdate();\n }\n }\n\n invokeEventCallback(eventName: string, args: any[]) {\n //@ts-ignore\n const callBack: Function = this.props[eventName];\n args = args && args.map(a => (a === this) ? this.proxy : a)\n if (callBack) {\n try {\n return callBack.apply(this.proxy, args);\n } catch(e) {\n console.error(e);\n }\n }\n }\n\n isVisible() {\n const show = this.state.props.show;\n return show !== false && show !== 'false' && show !== '0' && !isNil(show);\n }\n\n protected abstract renderWidget(props: T): ReactNode;\n\n public refresh() {\n this.forceUpdate();\n }\n\n public cleanRefresh() {\n this.forceUpdate(() => this.notifier.notify('forceUpdate', []));\n }\n \n public renderSkeleton (props: T): ReactNode {\n return null;\n }\n\n public destroyParentListeners() {\n this.parentListenerDestroyers.map(fn => fn());\n }\n\n private setParent(parent: BaseComponent<any, any, any>) {\n if (parent && this.parent !== parent) {\n this.parent = parent;\n this.parentListenerDestroyers = [\n this.parent.subscribe('forceUpdate', () => {\n this.cleanRefresh();\n }),\n this.parent.subscribe('destroy', () => {\n this.destroyParentListeners();\n })\n ];\n }\n }\n\n copyStyles(property: string, from: any, to: any) {\n if (!isUndefined(from[property])) {\n to[property] = from[property];\n }\n }\n\n renderFixedContainer(props: T) {\n const style = {} as ViewStyle;\n const rootStyle = {\n left: 0,\n top: 0,\n bottom: 0,\n right: 0,\n width: \"100%\",\n height: \"100%\"\n } as ViewStyle;\n this.copyStyles('left', this.styles.root, style);\n this.copyStyles('top', this.styles.root, style);\n this.copyStyles('right', this.styles.root, style);\n this.copyStyles('bottom', this.styles.root, style);\n this.copyStyles('width', this.styles.root, style);\n this.copyStyles('height', this.styles.root, style);\n this.styles = this.theme.mergeStyle(this.styles, {root: rootStyle});\n return (<FixedView style={style} theme={this.theme}>{this.addAnimation(this.renderWidget(props))}</FixedView>);\n }\n\n private addAnimation(n: ReactNode) {\n if (!this.state.animatableProps) {\n return n;\n }\n return (<Animatable.View key={this.state.animationId} {...this.state.animatableProps}>{n}</Animatable.View>);\n }\n \n private setBackground() {\n const bgStyle = this.styles.root as any;\n this._background = (\n <BackgroundComponent \n image={bgStyle.backgroundImage}\n position={bgStyle.backgroundPosition}\n size={bgStyle.backgroundSize}\n repeat={bgStyle.backgroundRepeat}\n resizeMode={bgStyle.backgroundResizeMode}\n style={{borderRadius: this.styles.root.borderRadius}}>\n </BackgroundComponent>\n );\n delete (this.styles.root as any)['backgroundImage'];\n delete (this.styles.root as any)['backgroundPosition'];\n delete (this.styles.root as any)['backgroundResizeMode'];\n delete (this.styles.root as any)['backgroundSize'];\n delete (this.styles.root as any)['backgroundRepeat'];\n }\n\n public getTestId(suffix?: string) {\n let id = this.props.id || this.props.name;\n if (this.testIdPrefix) {\n id = this.testIdPrefix + '_' + id;\n }\n if (suffix) {\n id = id + '_' + suffix;\n }\n return id;\n }\n\n public getTestProps(suffix?: string) {\n let id = this.getTestId(suffix);\n if (Platform.OS === 'android' || Platform.OS === 'web') {\n return {\n accessibilityLabel: id,\n testID: id\n };\n }\n return {\n accessible: false,\n testID: id\n };\n }\n\n public getStyleClassName() {\n return this.state.props.classname;\n }\n\n public getTestPropsForInput(suffix?: string) {\n return this.getTestProps(suffix || 'i');\n }\n\n public getTestPropsForAction(suffix?: string) {\n return this.getTestProps(suffix || 'a');\n }\n\n public getTestPropsForLabel(suffix?: string) {\n return this.getTestProps(suffix || 'l');\n }\n\n private getDependenciesFromContext(fn: () => ReactNode) {\n return (\n <TextIdPrefixConsumer>\n {(testIdPrefix) => {\n this.testIdPrefix = testIdPrefix || '';\n return (<AssetConsumer>\n {(loadAsset) => {\n this.loadAsset = loadAsset;\n return (<ParentContext.Consumer>\n {(parent) => {\n this.setParent(parent);\n this._showSkeleton = this.parent?._showSkeleton \n || !!this.state.props.showskeleton;\n return (\n <ParentContext.Provider value={this}>\n <ThemeConsumer>\n {(theme) => { \n this.theme = theme || BASE_THEME;\n return fn();\n }}\n </ThemeConsumer>\n </ParentContext.Provider>);\n }} \n </ParentContext.Consumer>);\n }}\n </AssetConsumer>);\n }}\n </TextIdPrefixConsumer>); \n }\n \n public render(): ReactNode {\n const props = this.state.props;\n if (this.state.hide || (!this.isVisible() && this.hideMode === HideMode.DONOT_ADD_TO_DOM)) {\n return null;\n }\n this.isFixed = false;\n const selectedLocale = this.i18nService.getSelectedLocale();\n return this.getDependenciesFromContext(() => {\n WIDGET_LOGGER.info(() => `${this.props.name || this.constructor.name} is rendering.`);\n const classname = this.getStyleClassName();\n this.styles = this.theme.mergeStyle(\n this.getDefaultStyles(),\n {text: this.theme.getStyle('app-' + selectedLocale)},\n {text: this.theme.getStyle(this.defaultClass + '-' + selectedLocale)},\n props.disabled ? this.theme.getStyle(this.defaultClass + '-disabled') : null,\n this.isRTL ? this.theme.getStyle(this.defaultClass + '-rtl') : null,\n classname && this.theme.getStyle(classname),\n props.showindevice && this.theme.getStyle('d-all-none ' + props.showindevice.map(d => `d-${d}-flex`).join(' ')),\n this.props.styles,\n {\n root: this.styleOverrides,\n text: this.styleOverrides\n });\n if (this.styles.root.hasOwnProperty('_background')) {\n delete this.styles.root.backgroundColor;\n }\n if (!this.isVisible()) {\n assign(this.styles, this.theme.getStyle('hidden'))\n }\n let eleToRender = (this._showSkeleton && this.renderSkeleton(props));\n if (eleToRender) {\n return eleToRender;\n }\n this.setBackground();\n this.isFixed = (this.styles.root.position as any) === 'fixed';\n if (this.isFixed) {\n this.styles.root.position = undefined;\n return this.renderFixedContainer(props);\n }\n return this.addAnimation(this.renderWidget(this.state.props)); \n });\n }\n}\n"],"mappings":"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"}
|