@draftbit/core 46.4.4-131f72.2 → 46.4.4-1a94b9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/Checkbox/CheckboxRow.js +6 -24
- package/lib/commonjs/components/DatePicker/DatePicker.js +18 -8
- package/lib/commonjs/components/Picker/Picker.js +5 -5
- package/lib/commonjs/components/Stepper.js +8 -3
- package/lib/commonjs/components/Surface.js +1 -2
- package/lib/commonjs/mappings/DatePicker.js +13 -0
- package/lib/commonjs/mappings/Stepper.js +1 -1
- package/lib/commonjs/mappings/TextField.js +1 -1
- package/lib/commonjs/mappings/TextInput.js +1 -1
- package/lib/module/components/DatePicker/DatePicker.js +17 -8
- package/lib/module/components/Picker/Picker.js +2 -2
- package/lib/module/components/Stepper.js +7 -3
- package/lib/module/components/Surface.js +1 -1
- package/lib/module/mappings/DatePicker.js +14 -1
- package/lib/module/mappings/Stepper.js +2 -2
- package/lib/module/mappings/TextField.js +1 -1
- package/lib/module/mappings/TextInput.js +1 -1
- package/lib/typescript/src/components/DatePicker/DatePicker.d.ts +4 -0
- package/lib/typescript/src/components/Stepper.d.ts +1 -2
- package/lib/typescript/src/mappings/DatePicker.d.ts +42 -0
- package/lib/typescript/src/mappings/TextField.d.ts +2 -2
- package/lib/typescript/src/mappings/TextInput.d.ts +1 -1
- package/package.json +3 -3
- package/src/components/DatePicker/DatePicker.js +14 -8
- package/src/components/DatePicker/DatePicker.tsx +23 -7
- package/src/components/Picker/Picker.js +1 -1
- package/src/components/Picker/Picker.tsx +2 -2
- package/src/components/Stepper.js +5 -3
- package/src/components/Stepper.tsx +5 -5
- package/src/components/Surface.js +0 -1
- package/src/components/Surface.tsx +0 -1
- package/src/mappings/DatePicker.js +21 -1
- package/src/mappings/DatePicker.ts +23 -0
- package/src/mappings/Stepper.js +5 -2
- package/src/mappings/Stepper.ts +5 -1
- package/src/mappings/TextField.js +1 -1
- package/src/mappings/TextField.ts +1 -1
- package/src/mappings/TextInput.js +1 -1
- package/src/mappings/TextInput.ts +1 -1
|
@@ -27,7 +27,9 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
27
27
|
|
|
28
28
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
29
29
|
|
|
30
|
-
var
|
|
30
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
31
|
+
|
|
32
|
+
let Direction;
|
|
31
33
|
exports.Direction = Direction;
|
|
32
34
|
|
|
33
35
|
(function (Direction) {
|
|
@@ -100,14 +102,13 @@ const CheckboxRow = _ref => {
|
|
|
100
102
|
textStyles,
|
|
101
103
|
viewStyles
|
|
102
104
|
} = (0, _utilities.extractStyles)(style);
|
|
103
|
-
return /*#__PURE__*/React.createElement(_Touchable.default, {
|
|
105
|
+
return /*#__PURE__*/React.createElement(_Touchable.default, _extends({
|
|
104
106
|
onPress: handlePress,
|
|
105
107
|
style: [viewStyles, styles.mainParent, {
|
|
106
108
|
flexDirection: direction
|
|
107
109
|
}],
|
|
108
|
-
disabled: disabled
|
|
109
|
-
|
|
110
|
-
}, /*#__PURE__*/React.createElement(_reactNative.View, {
|
|
110
|
+
disabled: disabled
|
|
111
|
+
}, rest), /*#__PURE__*/React.createElement(_reactNative.View, {
|
|
111
112
|
style: [styles.label, {
|
|
112
113
|
alignItems: direction === Direction.Row ? "flex-start" : "flex-end"
|
|
113
114
|
}, labelContainerStyle]
|
|
@@ -145,24 +146,5 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
145
146
|
}
|
|
146
147
|
});
|
|
147
148
|
|
|
148
|
-
var _default = CheckboxRow;
|
|
149
|
-
exports.default = _default;ms: "center",
|
|
150
|
-
justifyContent: "space-around",
|
|
151
|
-
paddingStart: 20,
|
|
152
|
-
minHeight: 50,
|
|
153
|
-
paddingEnd: 20,
|
|
154
|
-
display: "flex",
|
|
155
|
-
..._reactNative.Platform.select({
|
|
156
|
-
web: {
|
|
157
|
-
cursor: "pointer",
|
|
158
|
-
userSelect: "none"
|
|
159
|
-
}
|
|
160
|
-
})
|
|
161
|
-
},
|
|
162
|
-
label: {
|
|
163
|
-
flex: 3
|
|
164
|
-
}
|
|
165
|
-
});
|
|
166
|
-
|
|
167
149
|
var _default = CheckboxRow;
|
|
168
150
|
exports.default = _default;
|
|
@@ -21,6 +21,8 @@ var _Touchable = _interopRequireDefault(require("../Touchable"));
|
|
|
21
21
|
|
|
22
22
|
var _DatePickerComponent = _interopRequireDefault(require("./DatePickerComponent"));
|
|
23
23
|
|
|
24
|
+
var _utilities = require("../../utilities");
|
|
25
|
+
|
|
24
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
27
|
|
|
26
28
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -57,7 +59,11 @@ const DatePicker = _ref => {
|
|
|
57
59
|
rightIconName,
|
|
58
60
|
leftIconMode = "inset",
|
|
59
61
|
label,
|
|
62
|
+
labelSize,
|
|
63
|
+
labelColor,
|
|
60
64
|
placeholder,
|
|
65
|
+
borderColor: inputBorderColor,
|
|
66
|
+
borderColorActive: inputBorderColorActive,
|
|
61
67
|
...props
|
|
62
68
|
} = _ref;
|
|
63
69
|
const [value, setValue] = React.useState(date || defaultValue);
|
|
@@ -74,6 +80,9 @@ const DatePicker = _ref => {
|
|
|
74
80
|
measured: false,
|
|
75
81
|
width: 0
|
|
76
82
|
});
|
|
83
|
+
const {
|
|
84
|
+
textStyles
|
|
85
|
+
} = (0, _utilities.extractStyles)(style);
|
|
77
86
|
|
|
78
87
|
const getValidDate = () => {
|
|
79
88
|
if (!value) {
|
|
@@ -175,8 +184,8 @@ const DatePicker = _ref => {
|
|
|
175
184
|
|
|
176
185
|
const MINIMIZED_LABEL_Y_OFFSET = -(typography.caption.lineHeight + 4);
|
|
177
186
|
const OUTLINE_MINIMIZED_LABEL_Y_OFFSET = -(16 * 0.5 + 4);
|
|
178
|
-
const MAXIMIZED_LABEL_FONT_SIZE = typography.subtitle1.fontSize;
|
|
179
|
-
const MINIMIZED_LABEL_FONT_SIZE = typography.caption.fontSize;
|
|
187
|
+
const MAXIMIZED_LABEL_FONT_SIZE = (textStyles === null || textStyles === void 0 ? void 0 : textStyles.fontSize) || typography.subtitle1.fontSize;
|
|
188
|
+
const MINIMIZED_LABEL_FONT_SIZE = labelSize ? labelSize : typography.caption.fontSize;
|
|
180
189
|
const hasActiveOutline = focused;
|
|
181
190
|
let inputTextColor, activeColor, underlineColor, borderColor, placeholderColor, containerStyle, backgroundColor, inputStyle;
|
|
182
191
|
inputTextColor = colors.strong;
|
|
@@ -188,9 +197,9 @@ const DatePicker = _ref => {
|
|
|
188
197
|
underlineColor = "transparent";
|
|
189
198
|
backgroundColor = colors.divider;
|
|
190
199
|
} else {
|
|
191
|
-
activeColor = colors.primary;
|
|
192
|
-
placeholderColor = borderColor = colors.light;
|
|
193
|
-
underlineColor = colors.light;
|
|
200
|
+
activeColor = inputBorderColorActive || colors.primary;
|
|
201
|
+
placeholderColor = borderColor = inputBorderColor || colors.light;
|
|
202
|
+
underlineColor = inputBorderColor || colors.light;
|
|
194
203
|
backgroundColor = colors.background;
|
|
195
204
|
}
|
|
196
205
|
|
|
@@ -250,6 +259,7 @@ const DatePicker = _ref => {
|
|
|
250
259
|
};
|
|
251
260
|
const labelStyle = { ...typography.subtitle1,
|
|
252
261
|
top: type === "solid" ? 16 : 0,
|
|
262
|
+
fontFamily: textStyles === null || textStyles === void 0 ? void 0 : textStyles.fontFamily,
|
|
253
263
|
left: leftIconName && leftIconMode === "inset" ? ICON_SIZE + (type === "solid" ? 16 : 12) : 0,
|
|
254
264
|
transform: [{
|
|
255
265
|
// Move label to top
|
|
@@ -273,7 +283,7 @@ const DatePicker = _ref => {
|
|
|
273
283
|
};
|
|
274
284
|
const inputStyles = [styles.input, inputStyle, type === "solid" ? {
|
|
275
285
|
marginHorizontal: 12
|
|
276
|
-
} : {}]; // const render = (props) => <NativeTextInput {...props} />;
|
|
286
|
+
} : {}, textStyles]; // const render = (props) => <NativeTextInput {...props} />;
|
|
277
287
|
|
|
278
288
|
return /*#__PURE__*/React.createElement(_reactNative.View, {
|
|
279
289
|
style: [styles.container, style]
|
|
@@ -319,7 +329,7 @@ const DatePicker = _ref => {
|
|
|
319
329
|
style: [styles.placeholder, type === "solid" ? {
|
|
320
330
|
paddingHorizontal: 12
|
|
321
331
|
} : {}, labelStyle, {
|
|
322
|
-
color: colors.light,
|
|
332
|
+
color: labelColor || colors.light,
|
|
323
333
|
opacity: labeled.interpolate({
|
|
324
334
|
inputRange: [0, 1],
|
|
325
335
|
outputRange: [hasActiveOutline ? 1 : 0, 0]
|
|
@@ -330,7 +340,7 @@ const DatePicker = _ref => {
|
|
|
330
340
|
style: [styles.placeholder, type === "solid" ? {
|
|
331
341
|
paddingHorizontal: 12
|
|
332
342
|
} : {}, labelStyle, {
|
|
333
|
-
color:
|
|
343
|
+
color: labelColor || placeholder,
|
|
334
344
|
opacity: hasActiveOutline ? labeled : 1
|
|
335
345
|
}],
|
|
336
346
|
numberOfLines: 1
|
|
@@ -284,10 +284,6 @@ const Picker = _ref => {
|
|
|
284
284
|
);
|
|
285
285
|
};
|
|
286
286
|
|
|
287
|
-
var _default = (0, _theming.withTheme)(Picker);
|
|
288
|
-
|
|
289
|
-
exports.default = _default;
|
|
290
|
-
|
|
291
287
|
const styles = _reactNative.StyleSheet.create({
|
|
292
288
|
marginsContainer: {
|
|
293
289
|
alignSelf: "stretch",
|
|
@@ -357,4 +353,8 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
357
353
|
maxWidth: deviceWidth,
|
|
358
354
|
maxHeight: deviceHeight
|
|
359
355
|
}
|
|
360
|
-
});
|
|
356
|
+
});
|
|
357
|
+
|
|
358
|
+
var _default = (0, _theming.withTheme)(Picker);
|
|
359
|
+
|
|
360
|
+
exports.default = _default;
|
|
@@ -15,6 +15,8 @@ var _theming = require("../theming");
|
|
|
15
15
|
|
|
16
16
|
var _IconButton = _interopRequireDefault(require("./IconButton"));
|
|
17
17
|
|
|
18
|
+
var _utilities = require("../utilities");
|
|
19
|
+
|
|
18
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
21
|
|
|
20
22
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -28,7 +30,6 @@ const Stepper = _ref => {
|
|
|
28
30
|
value: valueProp,
|
|
29
31
|
defaultValue,
|
|
30
32
|
style,
|
|
31
|
-
typeStyle,
|
|
32
33
|
iconSize = 24,
|
|
33
34
|
iconColor,
|
|
34
35
|
onChange,
|
|
@@ -38,6 +39,10 @@ const Stepper = _ref => {
|
|
|
38
39
|
},
|
|
39
40
|
Icon
|
|
40
41
|
} = _ref;
|
|
42
|
+
const {
|
|
43
|
+
viewStyles,
|
|
44
|
+
textStyles
|
|
45
|
+
} = (0, _utilities.extractStyles)(style);
|
|
41
46
|
const [value, setValue] = (0, _react.useState)(defaultValue !== null && defaultValue !== void 0 ? defaultValue : 0);
|
|
42
47
|
|
|
43
48
|
const isValidValue = valueArg => valueArg >= min && valueArg <= max;
|
|
@@ -60,7 +65,7 @@ const Stepper = _ref => {
|
|
|
60
65
|
return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
61
66
|
style: [{
|
|
62
67
|
flexDirection: "row"
|
|
63
|
-
},
|
|
68
|
+
}, viewStyles]
|
|
64
69
|
}, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
65
70
|
Icon: Icon,
|
|
66
71
|
icon: "MaterialIcons/remove",
|
|
@@ -77,7 +82,7 @@ const Stepper = _ref => {
|
|
|
77
82
|
alignSelf: "center",
|
|
78
83
|
color: colors.medium,
|
|
79
84
|
marginHorizontal: 8
|
|
80
|
-
},
|
|
85
|
+
}, textStyles]
|
|
81
86
|
}, value), /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
82
87
|
Icon: Icon,
|
|
83
88
|
icon: "MaterialIcons/add",
|
|
@@ -18,6 +18,12 @@ const SEED_DATA_PROPS = {
|
|
|
18
18
|
required: true,
|
|
19
19
|
group: _types.GROUPS.data
|
|
20
20
|
},
|
|
21
|
+
labelSize: (0, _types.createNumberProp)({
|
|
22
|
+
label: "Label Size"
|
|
23
|
+
}),
|
|
24
|
+
labelColor: (0, _types.createColorProp)({
|
|
25
|
+
label: "Label Color"
|
|
26
|
+
}),
|
|
21
27
|
mode: {
|
|
22
28
|
label: "Mode",
|
|
23
29
|
description: "Choose between date, time and datetime",
|
|
@@ -29,6 +35,12 @@ const SEED_DATA_PROPS = {
|
|
|
29
35
|
options: ["date", "time", "datetime"],
|
|
30
36
|
group: _types.GROUPS.basic
|
|
31
37
|
},
|
|
38
|
+
borderColor: (0, _types.createColorProp)({
|
|
39
|
+
label: "Border Color"
|
|
40
|
+
}),
|
|
41
|
+
borderColorActive: (0, _types.createColorProp)({
|
|
42
|
+
label: "Border Color"
|
|
43
|
+
}),
|
|
32
44
|
format: {
|
|
33
45
|
label: "Format",
|
|
34
46
|
description: "Create an output format for the date.",
|
|
@@ -145,6 +157,7 @@ const SEED_DATA = [{
|
|
|
145
157
|
category: _types.COMPONENT_TYPES.input,
|
|
146
158
|
layout: null,
|
|
147
159
|
triggers: [_types.Triggers.OnDateChange],
|
|
160
|
+
StylesPanelSections: [_types.StylesPanelSections.Background, _types.StylesPanelSections.Borders, _types.StylesPanelSections.MarginsAndPaddings, _types.StylesPanelSections.Position, _types.StylesPanelSections.Size, _types.StylesPanelSections.Typography],
|
|
148
161
|
props: { ...SEED_DATA_PROPS,
|
|
149
162
|
type: {
|
|
150
163
|
label: "Appearance",
|
|
@@ -12,7 +12,7 @@ const SEED_DATA = [{
|
|
|
12
12
|
tag: "Stepper",
|
|
13
13
|
description: "A component used to control the quantity of something",
|
|
14
14
|
category: _types.COMPONENT_TYPES.control,
|
|
15
|
-
stylesPanelSections: _types.BLOCK_STYLES_SECTIONS,
|
|
15
|
+
stylesPanelSections: [_types.StylesPanelSections.Typography, ..._types.BLOCK_STYLES_SECTIONS],
|
|
16
16
|
layout: {},
|
|
17
17
|
triggers: [_types.Triggers.OnChange],
|
|
18
18
|
props: {
|
|
@@ -24,7 +24,7 @@ const SEED_DATA_PROPS = {
|
|
|
24
24
|
description: "Can automatically capitalize sentences, words, and characters (Default: none).",
|
|
25
25
|
editable: true,
|
|
26
26
|
required: false,
|
|
27
|
-
defaultValue:
|
|
27
|
+
defaultValue: "none",
|
|
28
28
|
options: ["none", "sentences", "words", "characters"],
|
|
29
29
|
formType: _types.FORM_TYPES.flatArray,
|
|
30
30
|
propType: _types.PROP_TYPES.STRING
|
|
@@ -103,7 +103,7 @@ const SEED_DATA = [{
|
|
|
103
103
|
description: "Can automatically capitalize sentences, words, and characters (Default: none).",
|
|
104
104
|
editable: true,
|
|
105
105
|
required: false,
|
|
106
|
-
defaultValue:
|
|
106
|
+
defaultValue: "none",
|
|
107
107
|
options: ["none", "sentences", "words", "characters"],
|
|
108
108
|
formType: _types.FORM_TYPES.flatArray,
|
|
109
109
|
propType: _types.PROP_TYPES.STRING
|
|
@@ -8,6 +8,7 @@ import { withTheme } from "../../theming";
|
|
|
8
8
|
import Portal from "../Portal/Portal";
|
|
9
9
|
import Touchable from "../Touchable";
|
|
10
10
|
import DateTimePicker from "./DatePickerComponent";
|
|
11
|
+
import { extractStyles } from "../../utilities";
|
|
11
12
|
const AnimatedText = Animated.createAnimatedComponent(Text);
|
|
12
13
|
const FOCUS_ANIMATION_DURATION = 150;
|
|
13
14
|
const BLUR_ANIMATION_DURATION = 180;
|
|
@@ -35,7 +36,11 @@ const DatePicker = _ref => {
|
|
|
35
36
|
rightIconName,
|
|
36
37
|
leftIconMode = "inset",
|
|
37
38
|
label,
|
|
39
|
+
labelSize,
|
|
40
|
+
labelColor,
|
|
38
41
|
placeholder,
|
|
42
|
+
borderColor: inputBorderColor,
|
|
43
|
+
borderColorActive: inputBorderColorActive,
|
|
39
44
|
...props
|
|
40
45
|
} = _ref;
|
|
41
46
|
const [value, setValue] = React.useState(date || defaultValue);
|
|
@@ -52,6 +57,9 @@ const DatePicker = _ref => {
|
|
|
52
57
|
measured: false,
|
|
53
58
|
width: 0
|
|
54
59
|
});
|
|
60
|
+
const {
|
|
61
|
+
textStyles
|
|
62
|
+
} = extractStyles(style);
|
|
55
63
|
|
|
56
64
|
const getValidDate = () => {
|
|
57
65
|
if (!value) {
|
|
@@ -153,8 +161,8 @@ const DatePicker = _ref => {
|
|
|
153
161
|
|
|
154
162
|
const MINIMIZED_LABEL_Y_OFFSET = -(typography.caption.lineHeight + 4);
|
|
155
163
|
const OUTLINE_MINIMIZED_LABEL_Y_OFFSET = -(16 * 0.5 + 4);
|
|
156
|
-
const MAXIMIZED_LABEL_FONT_SIZE = typography.subtitle1.fontSize;
|
|
157
|
-
const MINIMIZED_LABEL_FONT_SIZE = typography.caption.fontSize;
|
|
164
|
+
const MAXIMIZED_LABEL_FONT_SIZE = (textStyles === null || textStyles === void 0 ? void 0 : textStyles.fontSize) || typography.subtitle1.fontSize;
|
|
165
|
+
const MINIMIZED_LABEL_FONT_SIZE = labelSize ? labelSize : typography.caption.fontSize;
|
|
158
166
|
const hasActiveOutline = focused;
|
|
159
167
|
let inputTextColor, activeColor, underlineColor, borderColor, placeholderColor, containerStyle, backgroundColor, inputStyle;
|
|
160
168
|
inputTextColor = colors.strong;
|
|
@@ -166,9 +174,9 @@ const DatePicker = _ref => {
|
|
|
166
174
|
underlineColor = "transparent";
|
|
167
175
|
backgroundColor = colors.divider;
|
|
168
176
|
} else {
|
|
169
|
-
activeColor = colors.primary;
|
|
170
|
-
placeholderColor = borderColor = colors.light;
|
|
171
|
-
underlineColor = colors.light;
|
|
177
|
+
activeColor = inputBorderColorActive || colors.primary;
|
|
178
|
+
placeholderColor = borderColor = inputBorderColor || colors.light;
|
|
179
|
+
underlineColor = inputBorderColor || colors.light;
|
|
172
180
|
backgroundColor = colors.background;
|
|
173
181
|
}
|
|
174
182
|
|
|
@@ -228,6 +236,7 @@ const DatePicker = _ref => {
|
|
|
228
236
|
};
|
|
229
237
|
const labelStyle = { ...typography.subtitle1,
|
|
230
238
|
top: type === "solid" ? 16 : 0,
|
|
239
|
+
fontFamily: textStyles === null || textStyles === void 0 ? void 0 : textStyles.fontFamily,
|
|
231
240
|
left: leftIconName && leftIconMode === "inset" ? ICON_SIZE + (type === "solid" ? 16 : 12) : 0,
|
|
232
241
|
transform: [{
|
|
233
242
|
// Move label to top
|
|
@@ -251,7 +260,7 @@ const DatePicker = _ref => {
|
|
|
251
260
|
};
|
|
252
261
|
const inputStyles = [styles.input, inputStyle, type === "solid" ? {
|
|
253
262
|
marginHorizontal: 12
|
|
254
|
-
} : {}]; // const render = (props) => <NativeTextInput {...props} />;
|
|
263
|
+
} : {}, textStyles]; // const render = (props) => <NativeTextInput {...props} />;
|
|
255
264
|
|
|
256
265
|
return /*#__PURE__*/React.createElement(View, {
|
|
257
266
|
style: [styles.container, style]
|
|
@@ -297,7 +306,7 @@ const DatePicker = _ref => {
|
|
|
297
306
|
style: [styles.placeholder, type === "solid" ? {
|
|
298
307
|
paddingHorizontal: 12
|
|
299
308
|
} : {}, labelStyle, {
|
|
300
|
-
color: colors.light,
|
|
309
|
+
color: labelColor || colors.light,
|
|
301
310
|
opacity: labeled.interpolate({
|
|
302
311
|
inputRange: [0, 1],
|
|
303
312
|
outputRange: [hasActiveOutline ? 1 : 0, 0]
|
|
@@ -308,7 +317,7 @@ const DatePicker = _ref => {
|
|
|
308
317
|
style: [styles.placeholder, type === "solid" ? {
|
|
309
318
|
paddingHorizontal: 12
|
|
310
319
|
} : {}, labelStyle, {
|
|
311
|
-
color:
|
|
320
|
+
color: labelColor || placeholder,
|
|
312
321
|
opacity: hasActiveOutline ? labeled : 1
|
|
313
322
|
}],
|
|
314
323
|
numberOfLines: 1
|
|
@@ -261,7 +261,6 @@ const Picker = _ref => {
|
|
|
261
261
|
);
|
|
262
262
|
};
|
|
263
263
|
|
|
264
|
-
export default withTheme(Picker);
|
|
265
264
|
const styles = StyleSheet.create({
|
|
266
265
|
marginsContainer: {
|
|
267
266
|
alignSelf: "stretch",
|
|
@@ -331,4 +330,5 @@ const styles = StyleSheet.create({
|
|
|
331
330
|
maxWidth: deviceWidth,
|
|
332
331
|
maxHeight: deviceHeight
|
|
333
332
|
}
|
|
334
|
-
});
|
|
333
|
+
});
|
|
334
|
+
export default withTheme(Picker);
|
|
@@ -3,6 +3,7 @@ import { View, Text } from "react-native";
|
|
|
3
3
|
import { isNumber } from "lodash";
|
|
4
4
|
import { withTheme } from "../theming";
|
|
5
5
|
import IconButton from "./IconButton";
|
|
6
|
+
import { extractStyles } from "../utilities";
|
|
6
7
|
|
|
7
8
|
const Stepper = _ref => {
|
|
8
9
|
let {
|
|
@@ -11,7 +12,6 @@ const Stepper = _ref => {
|
|
|
11
12
|
value: valueProp,
|
|
12
13
|
defaultValue,
|
|
13
14
|
style,
|
|
14
|
-
typeStyle,
|
|
15
15
|
iconSize = 24,
|
|
16
16
|
iconColor,
|
|
17
17
|
onChange,
|
|
@@ -21,6 +21,10 @@ const Stepper = _ref => {
|
|
|
21
21
|
},
|
|
22
22
|
Icon
|
|
23
23
|
} = _ref;
|
|
24
|
+
const {
|
|
25
|
+
viewStyles,
|
|
26
|
+
textStyles
|
|
27
|
+
} = extractStyles(style);
|
|
24
28
|
const [value, setValue] = useState(defaultValue !== null && defaultValue !== void 0 ? defaultValue : 0);
|
|
25
29
|
|
|
26
30
|
const isValidValue = valueArg => valueArg >= min && valueArg <= max;
|
|
@@ -43,7 +47,7 @@ const Stepper = _ref => {
|
|
|
43
47
|
return /*#__PURE__*/React.createElement(View, {
|
|
44
48
|
style: [{
|
|
45
49
|
flexDirection: "row"
|
|
46
|
-
},
|
|
50
|
+
}, viewStyles]
|
|
47
51
|
}, /*#__PURE__*/React.createElement(IconButton, {
|
|
48
52
|
Icon: Icon,
|
|
49
53
|
icon: "MaterialIcons/remove",
|
|
@@ -60,7 +64,7 @@ const Stepper = _ref => {
|
|
|
60
64
|
alignSelf: "center",
|
|
61
65
|
color: colors.medium,
|
|
62
66
|
marginHorizontal: 8
|
|
63
|
-
},
|
|
67
|
+
}, textStyles]
|
|
64
68
|
}, value), /*#__PURE__*/React.createElement(IconButton, {
|
|
65
69
|
Icon: Icon,
|
|
66
70
|
icon: "MaterialIcons/add",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { COMPONENT_TYPES, FORM_TYPES, PROP_TYPES, FIELD_NAME, GROUPS, Triggers } from "@draftbit/types";
|
|
1
|
+
import { COMPONENT_TYPES, FORM_TYPES, PROP_TYPES, FIELD_NAME, GROUPS, Triggers, StylesPanelSections, createNumberProp, createColorProp } from "@draftbit/types";
|
|
2
2
|
const SEED_DATA_PROPS = {
|
|
3
3
|
label: {
|
|
4
4
|
label: "Label",
|
|
@@ -10,6 +10,12 @@ const SEED_DATA_PROPS = {
|
|
|
10
10
|
required: true,
|
|
11
11
|
group: GROUPS.data
|
|
12
12
|
},
|
|
13
|
+
labelSize: createNumberProp({
|
|
14
|
+
label: "Label Size"
|
|
15
|
+
}),
|
|
16
|
+
labelColor: createColorProp({
|
|
17
|
+
label: "Label Color"
|
|
18
|
+
}),
|
|
13
19
|
mode: {
|
|
14
20
|
label: "Mode",
|
|
15
21
|
description: "Choose between date, time and datetime",
|
|
@@ -21,6 +27,12 @@ const SEED_DATA_PROPS = {
|
|
|
21
27
|
options: ["date", "time", "datetime"],
|
|
22
28
|
group: GROUPS.basic
|
|
23
29
|
},
|
|
30
|
+
borderColor: createColorProp({
|
|
31
|
+
label: "Border Color"
|
|
32
|
+
}),
|
|
33
|
+
borderColorActive: createColorProp({
|
|
34
|
+
label: "Border Color"
|
|
35
|
+
}),
|
|
24
36
|
format: {
|
|
25
37
|
label: "Format",
|
|
26
38
|
description: "Create an output format for the date.",
|
|
@@ -137,6 +149,7 @@ export const SEED_DATA = [{
|
|
|
137
149
|
category: COMPONENT_TYPES.input,
|
|
138
150
|
layout: null,
|
|
139
151
|
triggers: [Triggers.OnDateChange],
|
|
152
|
+
StylesPanelSections: [StylesPanelSections.Background, StylesPanelSections.Borders, StylesPanelSections.MarginsAndPaddings, StylesPanelSections.Position, StylesPanelSections.Size, StylesPanelSections.Typography],
|
|
140
153
|
props: { ...SEED_DATA_PROPS,
|
|
141
154
|
type: {
|
|
142
155
|
label: "Appearance",
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { COMPONENT_TYPES, createIconSizeProp, createColorProp, createFieldNameProp, createStaticNumberProp, Triggers, BLOCK_STYLES_SECTIONS } from "@draftbit/types";
|
|
1
|
+
import { COMPONENT_TYPES, createIconSizeProp, createColorProp, createFieldNameProp, createStaticNumberProp, Triggers, BLOCK_STYLES_SECTIONS, StylesPanelSections } from "@draftbit/types";
|
|
2
2
|
export const SEED_DATA = [{
|
|
3
3
|
name: "Stepper",
|
|
4
4
|
tag: "Stepper",
|
|
5
5
|
description: "A component used to control the quantity of something",
|
|
6
6
|
category: COMPONENT_TYPES.control,
|
|
7
|
-
stylesPanelSections: BLOCK_STYLES_SECTIONS,
|
|
7
|
+
stylesPanelSections: [StylesPanelSections.Typography, ...BLOCK_STYLES_SECTIONS],
|
|
8
8
|
layout: {},
|
|
9
9
|
triggers: [Triggers.OnChange],
|
|
10
10
|
props: {
|
|
@@ -16,7 +16,7 @@ const SEED_DATA_PROPS = {
|
|
|
16
16
|
description: "Can automatically capitalize sentences, words, and characters (Default: none).",
|
|
17
17
|
editable: true,
|
|
18
18
|
required: false,
|
|
19
|
-
defaultValue:
|
|
19
|
+
defaultValue: "none",
|
|
20
20
|
options: ["none", "sentences", "words", "characters"],
|
|
21
21
|
formType: FORM_TYPES.flatArray,
|
|
22
22
|
propType: PROP_TYPES.STRING
|
|
@@ -94,7 +94,7 @@ export const SEED_DATA = [{
|
|
|
94
94
|
description: "Can automatically capitalize sentences, words, and characters (Default: none).",
|
|
95
95
|
editable: true,
|
|
96
96
|
required: false,
|
|
97
|
-
defaultValue:
|
|
97
|
+
defaultValue: "none",
|
|
98
98
|
options: ["none", "sentences", "words", "characters"],
|
|
99
99
|
formType: FORM_TYPES.flatArray,
|
|
100
100
|
propType: PROP_TYPES.STRING
|
|
@@ -15,10 +15,14 @@ declare type Props = {
|
|
|
15
15
|
mode?: "date" | "time" | "datetime";
|
|
16
16
|
type?: "solid" | "underline";
|
|
17
17
|
label?: string;
|
|
18
|
+
labelSize?: number;
|
|
19
|
+
labelColor: string;
|
|
18
20
|
placeholder?: string;
|
|
19
21
|
leftIconName?: string;
|
|
20
22
|
leftIconMode?: "outset" | "inset";
|
|
21
23
|
rightIconName?: string;
|
|
24
|
+
borderColor?: string;
|
|
25
|
+
borderColorActive?: string;
|
|
22
26
|
} & IconSlot & TextInputProps;
|
|
23
27
|
declare const _default: React.ComponentType<import("@draftbit/react-theme-provider").$Without<React.PropsWithChildren<Props>, "theme"> & {
|
|
24
28
|
theme?: import("@draftbit/react-theme-provider").$DeepPartial<any> | undefined;
|
|
@@ -7,8 +7,7 @@ declare type Props = {
|
|
|
7
7
|
max: number;
|
|
8
8
|
value?: number;
|
|
9
9
|
defaultValue?: number;
|
|
10
|
-
style?: StyleProp<ViewStyle>;
|
|
11
|
-
typeStyle?: StyleProp<TextStyle>;
|
|
10
|
+
style?: StyleProp<ViewStyle | TextStyle>;
|
|
12
11
|
iconSize: number;
|
|
13
12
|
iconColor?: string;
|
|
14
13
|
onChange?: (value: number) => void;
|
|
@@ -5,6 +5,7 @@ export declare const SEED_DATA: {
|
|
|
5
5
|
category: string;
|
|
6
6
|
layout: null;
|
|
7
7
|
triggers: string[];
|
|
8
|
+
StylesPanelSections: string[];
|
|
8
9
|
props: {
|
|
9
10
|
type: {
|
|
10
11
|
label: string;
|
|
@@ -27,6 +28,27 @@ export declare const SEED_DATA: {
|
|
|
27
28
|
required: boolean;
|
|
28
29
|
group: string;
|
|
29
30
|
};
|
|
31
|
+
labelSize: {
|
|
32
|
+
label: string;
|
|
33
|
+
description: string;
|
|
34
|
+
formType: string;
|
|
35
|
+
propType: string;
|
|
36
|
+
group: string;
|
|
37
|
+
defaultValue: null;
|
|
38
|
+
editable: boolean;
|
|
39
|
+
required: boolean;
|
|
40
|
+
step: number;
|
|
41
|
+
};
|
|
42
|
+
labelColor: {
|
|
43
|
+
group: string;
|
|
44
|
+
label: string;
|
|
45
|
+
description: string;
|
|
46
|
+
editable: boolean;
|
|
47
|
+
required: boolean;
|
|
48
|
+
defaultValue: null;
|
|
49
|
+
formType: string;
|
|
50
|
+
propType: string;
|
|
51
|
+
};
|
|
30
52
|
mode: {
|
|
31
53
|
label: string;
|
|
32
54
|
description: string;
|
|
@@ -38,6 +60,26 @@ export declare const SEED_DATA: {
|
|
|
38
60
|
options: string[];
|
|
39
61
|
group: string;
|
|
40
62
|
};
|
|
63
|
+
borderColor: {
|
|
64
|
+
group: string;
|
|
65
|
+
label: string;
|
|
66
|
+
description: string;
|
|
67
|
+
editable: boolean;
|
|
68
|
+
required: boolean;
|
|
69
|
+
defaultValue: null;
|
|
70
|
+
formType: string;
|
|
71
|
+
propType: string;
|
|
72
|
+
};
|
|
73
|
+
borderColorActive: {
|
|
74
|
+
group: string;
|
|
75
|
+
label: string;
|
|
76
|
+
description: string;
|
|
77
|
+
editable: boolean;
|
|
78
|
+
required: boolean;
|
|
79
|
+
defaultValue: null;
|
|
80
|
+
formType: string;
|
|
81
|
+
propType: string;
|
|
82
|
+
};
|
|
41
83
|
format: {
|
|
42
84
|
label: string;
|
|
43
85
|
description: string;
|
|
@@ -64,7 +64,7 @@ export declare const SEED_DATA: ({
|
|
|
64
64
|
description: string;
|
|
65
65
|
editable: boolean;
|
|
66
66
|
required: boolean;
|
|
67
|
-
defaultValue:
|
|
67
|
+
defaultValue: string;
|
|
68
68
|
options: string[];
|
|
69
69
|
formType: string;
|
|
70
70
|
propType: string;
|
|
@@ -371,7 +371,7 @@ export declare const SEED_DATA: ({
|
|
|
371
371
|
description: string;
|
|
372
372
|
editable: boolean;
|
|
373
373
|
required: boolean;
|
|
374
|
-
defaultValue:
|
|
374
|
+
defaultValue: string;
|
|
375
375
|
options: string[];
|
|
376
376
|
formType: string;
|
|
377
377
|
propType: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@draftbit/core",
|
|
3
|
-
"version": "46.4.4-
|
|
3
|
+
"version": "46.4.4-1a94b9.2+1a94b98",
|
|
4
4
|
"description": "Core (non-native) Components",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@date-io/date-fns": "^1.3.13",
|
|
43
43
|
"@draftbit/react-theme-provider": "^2.1.1",
|
|
44
|
-
"@draftbit/types": "^46.4.4-
|
|
44
|
+
"@draftbit/types": "^46.4.4-1a94b9.2+1a94b98",
|
|
45
45
|
"@material-ui/core": "^4.11.0",
|
|
46
46
|
"@material-ui/pickers": "^3.2.10",
|
|
47
47
|
"@react-native-community/slider": "4.2.3",
|
|
@@ -81,5 +81,5 @@
|
|
|
81
81
|
]
|
|
82
82
|
]
|
|
83
83
|
},
|
|
84
|
-
"gitHead": "
|
|
84
|
+
"gitHead": "1a94b98f4a05267640e0d5c28bcff83686d98626"
|
|
85
85
|
}
|
|
@@ -6,6 +6,7 @@ import { withTheme } from "../../theming";
|
|
|
6
6
|
import Portal from "../Portal/Portal";
|
|
7
7
|
import Touchable from "../Touchable";
|
|
8
8
|
import DateTimePicker from "./DatePickerComponent";
|
|
9
|
+
import { extractStyles } from "../../utilities";
|
|
9
10
|
const AnimatedText = Animated.createAnimatedComponent(Text);
|
|
10
11
|
const FOCUS_ANIMATION_DURATION = 150;
|
|
11
12
|
const BLUR_ANIMATION_DURATION = 180;
|
|
@@ -24,7 +25,7 @@ const MONTHS = [
|
|
|
24
25
|
"November",
|
|
25
26
|
"December",
|
|
26
27
|
];
|
|
27
|
-
const DatePicker = ({ Icon, style, theme: { colors, typography, roundness, disabledOpacity }, date, onDateChange = () => { }, defaultValue, disabled = false, mode = "date", format, type = "underline", leftIconName, rightIconName, leftIconMode = "inset", label, placeholder, ...props }) => {
|
|
28
|
+
const DatePicker = ({ Icon, style, theme: { colors, typography, roundness, disabledOpacity }, date, onDateChange = () => { }, defaultValue, disabled = false, mode = "date", format, type = "underline", leftIconName, rightIconName, leftIconMode = "inset", label, labelSize, labelColor, placeholder, borderColor: inputBorderColor, borderColorActive: inputBorderColorActive, ...props }) => {
|
|
28
29
|
const [value, setValue] = React.useState(date || defaultValue);
|
|
29
30
|
React.useEffect(() => {
|
|
30
31
|
if (defaultValue != null) {
|
|
@@ -36,6 +37,7 @@ const DatePicker = ({ Icon, style, theme: { colors, typography, roundness, disab
|
|
|
36
37
|
const [placeholder1, setPlaceholder1] = React.useState("");
|
|
37
38
|
const [focused, setFocused] = React.useState(false);
|
|
38
39
|
const [labelLayout, setLabelLayout] = React.useState({ measured: false, width: 0 });
|
|
40
|
+
const { textStyles } = extractStyles(style);
|
|
39
41
|
const getValidDate = () => {
|
|
40
42
|
if (!value) {
|
|
41
43
|
return new Date();
|
|
@@ -125,8 +127,10 @@ const DatePicker = ({ Icon, style, theme: { colors, typography, roundness, disab
|
|
|
125
127
|
};
|
|
126
128
|
const MINIMIZED_LABEL_Y_OFFSET = -(typography.caption.lineHeight + 4);
|
|
127
129
|
const OUTLINE_MINIMIZED_LABEL_Y_OFFSET = -(16 * 0.5 + 4);
|
|
128
|
-
const MAXIMIZED_LABEL_FONT_SIZE = typography.subtitle1.fontSize;
|
|
129
|
-
const MINIMIZED_LABEL_FONT_SIZE =
|
|
130
|
+
const MAXIMIZED_LABEL_FONT_SIZE = (textStyles === null || textStyles === void 0 ? void 0 : textStyles.fontSize) || typography.subtitle1.fontSize;
|
|
131
|
+
const MINIMIZED_LABEL_FONT_SIZE = labelSize
|
|
132
|
+
? labelSize
|
|
133
|
+
: typography.caption.fontSize;
|
|
130
134
|
const hasActiveOutline = focused;
|
|
131
135
|
let inputTextColor, activeColor, underlineColor, borderColor, placeholderColor, containerStyle, backgroundColor, inputStyle;
|
|
132
136
|
inputTextColor = colors.strong;
|
|
@@ -138,9 +142,9 @@ const DatePicker = ({ Icon, style, theme: { colors, typography, roundness, disab
|
|
|
138
142
|
backgroundColor = colors.divider;
|
|
139
143
|
}
|
|
140
144
|
else {
|
|
141
|
-
activeColor = colors.primary;
|
|
142
|
-
placeholderColor = borderColor = colors.light;
|
|
143
|
-
underlineColor = colors.light;
|
|
145
|
+
activeColor = inputBorderColorActive || colors.primary;
|
|
146
|
+
placeholderColor = borderColor = inputBorderColor || colors.light;
|
|
147
|
+
underlineColor = inputBorderColor || colors.light;
|
|
144
148
|
backgroundColor = colors.background;
|
|
145
149
|
}
|
|
146
150
|
const { lineHeight, ...subtitle1 } = typography.subtitle1;
|
|
@@ -202,6 +206,7 @@ const DatePicker = ({ Icon, style, theme: { colors, typography, roundness, disab
|
|
|
202
206
|
const labelStyle = {
|
|
203
207
|
...typography.subtitle1,
|
|
204
208
|
top: type === "solid" ? 16 : 0,
|
|
209
|
+
fontFamily: textStyles === null || textStyles === void 0 ? void 0 : textStyles.fontFamily,
|
|
205
210
|
left: leftIconName && leftIconMode === "inset"
|
|
206
211
|
? ICON_SIZE + (type === "solid" ? 16 : 12)
|
|
207
212
|
: 0,
|
|
@@ -245,6 +250,7 @@ const DatePicker = ({ Icon, style, theme: { colors, typography, roundness, disab
|
|
|
245
250
|
styles.input,
|
|
246
251
|
inputStyle,
|
|
247
252
|
type === "solid" ? { marginHorizontal: 12 } : {},
|
|
253
|
+
textStyles,
|
|
248
254
|
];
|
|
249
255
|
// const render = (props) => <NativeTextInput {...props} />;
|
|
250
256
|
return (React.createElement(View, { style: [styles.container, style] },
|
|
@@ -282,7 +288,7 @@ const DatePicker = ({ Icon, style, theme: { colors, typography, roundness, disab
|
|
|
282
288
|
type === "solid" ? { paddingHorizontal: 12 } : {},
|
|
283
289
|
labelStyle,
|
|
284
290
|
{
|
|
285
|
-
color: colors.light,
|
|
291
|
+
color: labelColor || colors.light,
|
|
286
292
|
opacity: labeled.interpolate({
|
|
287
293
|
inputRange: [0, 1],
|
|
288
294
|
outputRange: [hasActiveOutline ? 1 : 0, 0],
|
|
@@ -294,7 +300,7 @@ const DatePicker = ({ Icon, style, theme: { colors, typography, roundness, disab
|
|
|
294
300
|
type === "solid" ? { paddingHorizontal: 12 } : {},
|
|
295
301
|
labelStyle,
|
|
296
302
|
{
|
|
297
|
-
color:
|
|
303
|
+
color: labelColor || placeholder,
|
|
298
304
|
opacity: hasActiveOutline ? labeled : 1,
|
|
299
305
|
},
|
|
300
306
|
], numberOfLines: 1 }, label))) : null,
|
|
@@ -23,6 +23,7 @@ import DateTimePicker from "./DatePickerComponent";
|
|
|
23
23
|
|
|
24
24
|
import type { Theme } from "../../styles/DefaultTheme";
|
|
25
25
|
import type { IconSlot } from "../../interfaces/Icon";
|
|
26
|
+
import { extractStyles } from "../../utilities";
|
|
26
27
|
|
|
27
28
|
const AnimatedText = Animated.createAnimatedComponent(Text);
|
|
28
29
|
|
|
@@ -47,10 +48,14 @@ type Props = {
|
|
|
47
48
|
mode?: "date" | "time" | "datetime";
|
|
48
49
|
type?: "solid" | "underline";
|
|
49
50
|
label?: string;
|
|
51
|
+
labelSize?: number;
|
|
52
|
+
labelColor: string;
|
|
50
53
|
placeholder?: string;
|
|
51
54
|
leftIconName?: string;
|
|
52
55
|
leftIconMode?: "outset" | "inset";
|
|
53
56
|
rightIconName?: string;
|
|
57
|
+
borderColor?: string;
|
|
58
|
+
borderColorActive?: string;
|
|
54
59
|
} & IconSlot &
|
|
55
60
|
TextInputProps;
|
|
56
61
|
|
|
@@ -84,7 +89,11 @@ const DatePicker: React.FC<React.PropsWithChildren<Props>> = ({
|
|
|
84
89
|
rightIconName,
|
|
85
90
|
leftIconMode = "inset",
|
|
86
91
|
label,
|
|
92
|
+
labelSize,
|
|
93
|
+
labelColor,
|
|
87
94
|
placeholder,
|
|
95
|
+
borderColor: inputBorderColor,
|
|
96
|
+
borderColorActive: inputBorderColorActive,
|
|
88
97
|
...props
|
|
89
98
|
}) => {
|
|
90
99
|
const [value, setValue] = React.useState<any>(date || defaultValue);
|
|
@@ -106,6 +115,8 @@ const DatePicker: React.FC<React.PropsWithChildren<Props>> = ({
|
|
|
106
115
|
width: number;
|
|
107
116
|
}>({ measured: false, width: 0 });
|
|
108
117
|
|
|
118
|
+
const { textStyles } = extractStyles(style);
|
|
119
|
+
|
|
109
120
|
const getValidDate = (): Date => {
|
|
110
121
|
if (!value) {
|
|
111
122
|
return new Date();
|
|
@@ -211,8 +222,11 @@ const DatePicker: React.FC<React.PropsWithChildren<Props>> = ({
|
|
|
211
222
|
|
|
212
223
|
const MINIMIZED_LABEL_Y_OFFSET = -(typography.caption.lineHeight + 4);
|
|
213
224
|
const OUTLINE_MINIMIZED_LABEL_Y_OFFSET = -(16 * 0.5 + 4);
|
|
214
|
-
const MAXIMIZED_LABEL_FONT_SIZE =
|
|
215
|
-
|
|
225
|
+
const MAXIMIZED_LABEL_FONT_SIZE =
|
|
226
|
+
textStyles?.fontSize || typography.subtitle1.fontSize;
|
|
227
|
+
const MINIMIZED_LABEL_FONT_SIZE = labelSize
|
|
228
|
+
? labelSize
|
|
229
|
+
: typography.caption.fontSize;
|
|
216
230
|
|
|
217
231
|
const hasActiveOutline = focused;
|
|
218
232
|
|
|
@@ -233,9 +247,9 @@ const DatePicker: React.FC<React.PropsWithChildren<Props>> = ({
|
|
|
233
247
|
underlineColor = "transparent";
|
|
234
248
|
backgroundColor = colors.divider;
|
|
235
249
|
} else {
|
|
236
|
-
activeColor = colors.primary;
|
|
237
|
-
placeholderColor = borderColor = colors.light;
|
|
238
|
-
underlineColor = colors.light;
|
|
250
|
+
activeColor = inputBorderColorActive || colors.primary;
|
|
251
|
+
placeholderColor = borderColor = inputBorderColor || colors.light;
|
|
252
|
+
underlineColor = inputBorderColor || colors.light;
|
|
239
253
|
backgroundColor = colors.background;
|
|
240
254
|
}
|
|
241
255
|
|
|
@@ -306,6 +320,7 @@ const DatePicker: React.FC<React.PropsWithChildren<Props>> = ({
|
|
|
306
320
|
const labelStyle = {
|
|
307
321
|
...typography.subtitle1,
|
|
308
322
|
top: type === "solid" ? 16 : 0,
|
|
323
|
+
fontFamily: textStyles?.fontFamily,
|
|
309
324
|
left:
|
|
310
325
|
leftIconName && leftIconMode === "inset"
|
|
311
326
|
? ICON_SIZE + (type === "solid" ? 16 : 12)
|
|
@@ -351,6 +366,7 @@ const DatePicker: React.FC<React.PropsWithChildren<Props>> = ({
|
|
|
351
366
|
styles.input,
|
|
352
367
|
inputStyle,
|
|
353
368
|
type === "solid" ? { marginHorizontal: 12 } : {},
|
|
369
|
+
textStyles,
|
|
354
370
|
];
|
|
355
371
|
|
|
356
372
|
// const render = (props) => <NativeTextInput {...props} />;
|
|
@@ -406,7 +422,7 @@ const DatePicker: React.FC<React.PropsWithChildren<Props>> = ({
|
|
|
406
422
|
type === "solid" ? { paddingHorizontal: 12 } : {},
|
|
407
423
|
labelStyle,
|
|
408
424
|
{
|
|
409
|
-
color: colors.light,
|
|
425
|
+
color: labelColor || colors.light,
|
|
410
426
|
opacity: labeled.interpolate({
|
|
411
427
|
inputRange: [0, 1],
|
|
412
428
|
outputRange: [hasActiveOutline ? 1 : 0, 0],
|
|
@@ -423,7 +439,7 @@ const DatePicker: React.FC<React.PropsWithChildren<Props>> = ({
|
|
|
423
439
|
type === "solid" ? { paddingHorizontal: 12 } : {},
|
|
424
440
|
labelStyle,
|
|
425
441
|
{
|
|
426
|
-
color:
|
|
442
|
+
color: labelColor || placeholder,
|
|
427
443
|
opacity: hasActiveOutline ? labeled : 1,
|
|
428
444
|
},
|
|
429
445
|
]}
|
|
@@ -194,7 +194,6 @@ const Picker = ({ error, options = [], onValueChange, defaultValue, Icon, style,
|
|
|
194
194
|
React.createElement(NativePicker, { style: styles.iosNativePicker, selectedValue: internalValue, onValueChange: handleValueChange }, pickerOptions.map((option) => (React.createElement(NativePicker.Item, { label: option.label, value: option.value, key: option.value })))))))) : null,
|
|
195
195
|
!isIos && pickerVisible ? (React.createElement(NativePicker, { enabled: pickerVisible, selectedValue: internalValue, onValueChange: handleValueChange, style: styles.nonIosPicker, ref: androidPickerRef, onBlur: () => setPickerVisible(false) }, pickerOptions.map((option) => (React.createElement(NativePicker.Item, { label: option.label, value: option.value, key: option.value }))))) : null));
|
|
196
196
|
};
|
|
197
|
-
export default withTheme(Picker);
|
|
198
197
|
const styles = StyleSheet.create({
|
|
199
198
|
marginsContainer: {
|
|
200
199
|
alignSelf: "stretch",
|
|
@@ -265,3 +264,4 @@ const styles = StyleSheet.create({
|
|
|
265
264
|
maxHeight: deviceHeight,
|
|
266
265
|
},
|
|
267
266
|
});
|
|
267
|
+
export default withTheme(Picker);
|
|
@@ -406,8 +406,6 @@ const Picker: React.FC<PickerProps> = ({
|
|
|
406
406
|
);
|
|
407
407
|
};
|
|
408
408
|
|
|
409
|
-
export default withTheme(Picker);
|
|
410
|
-
|
|
411
409
|
const styles = StyleSheet.create({
|
|
412
410
|
marginsContainer: {
|
|
413
411
|
alignSelf: "stretch",
|
|
@@ -478,3 +476,5 @@ const styles = StyleSheet.create({
|
|
|
478
476
|
maxHeight: deviceHeight,
|
|
479
477
|
},
|
|
480
478
|
});
|
|
479
|
+
|
|
480
|
+
export default withTheme(Picker);
|
|
@@ -3,7 +3,9 @@ import { View, Text } from "react-native";
|
|
|
3
3
|
import { isNumber } from "lodash";
|
|
4
4
|
import { withTheme } from "../theming";
|
|
5
5
|
import IconButton from "./IconButton";
|
|
6
|
-
|
|
6
|
+
import { extractStyles } from "../utilities";
|
|
7
|
+
const Stepper = ({ min = -Infinity, max = Infinity, value: valueProp, defaultValue, style, iconSize = 24, iconColor, onChange, theme: { colors, typography }, Icon, }) => {
|
|
8
|
+
const { viewStyles, textStyles } = extractStyles(style);
|
|
7
9
|
const [value, setValue] = useState(defaultValue !== null && defaultValue !== void 0 ? defaultValue : 0);
|
|
8
10
|
const isValidValue = (valueArg) => valueArg >= min && valueArg <= max;
|
|
9
11
|
const handlePlusOrMinus = (type) => {
|
|
@@ -22,7 +24,7 @@ const Stepper = ({ min = -Infinity, max = Infinity, value: valueProp, defaultVal
|
|
|
22
24
|
}
|
|
23
25
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
24
26
|
}, [valueProp]);
|
|
25
|
-
return (React.createElement(View, { style: [{ flexDirection: "row" },
|
|
27
|
+
return (React.createElement(View, { style: [{ flexDirection: "row" }, viewStyles] },
|
|
26
28
|
React.createElement(IconButton, { Icon: Icon, icon: "MaterialIcons/remove", onPress: () => handlePlusOrMinus("minus"), size: iconSize, color: iconColor, disabled: value === min, style: { opacity: value === min ? 0.5 : 1 } }),
|
|
27
29
|
React.createElement(Text, { style: [
|
|
28
30
|
typography.body1,
|
|
@@ -32,7 +34,7 @@ const Stepper = ({ min = -Infinity, max = Infinity, value: valueProp, defaultVal
|
|
|
32
34
|
color: colors.medium,
|
|
33
35
|
marginHorizontal: 8,
|
|
34
36
|
},
|
|
35
|
-
|
|
37
|
+
textStyles,
|
|
36
38
|
] }, value),
|
|
37
39
|
React.createElement(IconButton, { Icon: Icon, icon: "MaterialIcons/add", onPress: () => handlePlusOrMinus("plus"), size: iconSize, color: iconColor, disabled: value === max, style: { opacity: value === max ? 0.5 : 1 } })));
|
|
38
40
|
};
|
|
@@ -6,14 +6,14 @@ import { withTheme } from "../theming";
|
|
|
6
6
|
import type { Theme } from "../styles/DefaultTheme";
|
|
7
7
|
import type { IconSlot } from "../interfaces/Icon";
|
|
8
8
|
import IconButton from "./IconButton";
|
|
9
|
+
import { extractStyles } from "../utilities";
|
|
9
10
|
|
|
10
11
|
type Props = {
|
|
11
12
|
min: number;
|
|
12
13
|
max: number;
|
|
13
14
|
value?: number;
|
|
14
15
|
defaultValue?: number;
|
|
15
|
-
style?: StyleProp<ViewStyle>;
|
|
16
|
-
typeStyle?: StyleProp<TextStyle>;
|
|
16
|
+
style?: StyleProp<ViewStyle | TextStyle>;
|
|
17
17
|
iconSize: number;
|
|
18
18
|
iconColor?: string;
|
|
19
19
|
onChange?: (value: number) => void;
|
|
@@ -26,13 +26,13 @@ const Stepper: FC<Props> = ({
|
|
|
26
26
|
value: valueProp,
|
|
27
27
|
defaultValue,
|
|
28
28
|
style,
|
|
29
|
-
typeStyle,
|
|
30
29
|
iconSize = 24,
|
|
31
30
|
iconColor,
|
|
32
31
|
onChange,
|
|
33
32
|
theme: { colors, typography },
|
|
34
33
|
Icon,
|
|
35
34
|
}) => {
|
|
35
|
+
const { viewStyles, textStyles } = extractStyles(style);
|
|
36
36
|
const [value, setValue] = useState(defaultValue ?? 0);
|
|
37
37
|
|
|
38
38
|
const isValidValue = (valueArg: number) => valueArg >= min && valueArg <= max;
|
|
@@ -59,7 +59,7 @@ const Stepper: FC<Props> = ({
|
|
|
59
59
|
}, [valueProp]);
|
|
60
60
|
|
|
61
61
|
return (
|
|
62
|
-
<View style={[{ flexDirection: "row" },
|
|
62
|
+
<View style={[{ flexDirection: "row" }, viewStyles]}>
|
|
63
63
|
<IconButton
|
|
64
64
|
Icon={Icon}
|
|
65
65
|
icon="MaterialIcons/remove"
|
|
@@ -79,7 +79,7 @@ const Stepper: FC<Props> = ({
|
|
|
79
79
|
color: colors.medium,
|
|
80
80
|
marginHorizontal: 8,
|
|
81
81
|
},
|
|
82
|
-
|
|
82
|
+
textStyles,
|
|
83
83
|
]}
|
|
84
84
|
>
|
|
85
85
|
{value}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { COMPONENT_TYPES, FORM_TYPES, PROP_TYPES, FIELD_NAME, GROUPS, Triggers, } from "@draftbit/types";
|
|
1
|
+
import { COMPONENT_TYPES, FORM_TYPES, PROP_TYPES, FIELD_NAME, GROUPS, Triggers, StylesPanelSections, createNumberProp, createColorProp, } from "@draftbit/types";
|
|
2
2
|
const SEED_DATA_PROPS = {
|
|
3
3
|
label: {
|
|
4
4
|
label: "Label",
|
|
@@ -10,6 +10,12 @@ const SEED_DATA_PROPS = {
|
|
|
10
10
|
required: true,
|
|
11
11
|
group: GROUPS.data,
|
|
12
12
|
},
|
|
13
|
+
labelSize: createNumberProp({
|
|
14
|
+
label: "Label Size",
|
|
15
|
+
}),
|
|
16
|
+
labelColor: createColorProp({
|
|
17
|
+
label: "Label Color",
|
|
18
|
+
}),
|
|
13
19
|
mode: {
|
|
14
20
|
label: "Mode",
|
|
15
21
|
description: "Choose between date, time and datetime",
|
|
@@ -21,6 +27,12 @@ const SEED_DATA_PROPS = {
|
|
|
21
27
|
options: ["date", "time", "datetime"],
|
|
22
28
|
group: GROUPS.basic,
|
|
23
29
|
},
|
|
30
|
+
borderColor: createColorProp({
|
|
31
|
+
label: "Border Color",
|
|
32
|
+
}),
|
|
33
|
+
borderColorActive: createColorProp({
|
|
34
|
+
label: "Border Color",
|
|
35
|
+
}),
|
|
24
36
|
format: {
|
|
25
37
|
label: "Format",
|
|
26
38
|
description: "Create an output format for the date.",
|
|
@@ -139,6 +151,14 @@ export const SEED_DATA = [
|
|
|
139
151
|
category: COMPONENT_TYPES.input,
|
|
140
152
|
layout: null,
|
|
141
153
|
triggers: [Triggers.OnDateChange],
|
|
154
|
+
StylesPanelSections: [
|
|
155
|
+
StylesPanelSections.Background,
|
|
156
|
+
StylesPanelSections.Borders,
|
|
157
|
+
StylesPanelSections.MarginsAndPaddings,
|
|
158
|
+
StylesPanelSections.Position,
|
|
159
|
+
StylesPanelSections.Size,
|
|
160
|
+
StylesPanelSections.Typography,
|
|
161
|
+
],
|
|
142
162
|
props: {
|
|
143
163
|
...SEED_DATA_PROPS,
|
|
144
164
|
type: {
|
|
@@ -5,6 +5,9 @@ import {
|
|
|
5
5
|
FIELD_NAME,
|
|
6
6
|
GROUPS,
|
|
7
7
|
Triggers,
|
|
8
|
+
StylesPanelSections,
|
|
9
|
+
createNumberProp,
|
|
10
|
+
createColorProp,
|
|
8
11
|
} from "@draftbit/types";
|
|
9
12
|
|
|
10
13
|
const SEED_DATA_PROPS = {
|
|
@@ -18,6 +21,12 @@ const SEED_DATA_PROPS = {
|
|
|
18
21
|
required: true,
|
|
19
22
|
group: GROUPS.data,
|
|
20
23
|
},
|
|
24
|
+
labelSize: createNumberProp({
|
|
25
|
+
label: "Label Size",
|
|
26
|
+
}),
|
|
27
|
+
labelColor: createColorProp({
|
|
28
|
+
label: "Label Color",
|
|
29
|
+
}),
|
|
21
30
|
mode: {
|
|
22
31
|
label: "Mode",
|
|
23
32
|
description: "Choose between date, time and datetime",
|
|
@@ -29,6 +38,12 @@ const SEED_DATA_PROPS = {
|
|
|
29
38
|
options: ["date", "time", "datetime"],
|
|
30
39
|
group: GROUPS.basic,
|
|
31
40
|
},
|
|
41
|
+
borderColor: createColorProp({
|
|
42
|
+
label: "Border Color",
|
|
43
|
+
}),
|
|
44
|
+
borderColorActive: createColorProp({
|
|
45
|
+
label: "Border Color",
|
|
46
|
+
}),
|
|
32
47
|
format: {
|
|
33
48
|
label: "Format",
|
|
34
49
|
description: "Create an output format for the date.",
|
|
@@ -150,6 +165,14 @@ export const SEED_DATA = [
|
|
|
150
165
|
category: COMPONENT_TYPES.input,
|
|
151
166
|
layout: null,
|
|
152
167
|
triggers: [Triggers.OnDateChange],
|
|
168
|
+
StylesPanelSections: [
|
|
169
|
+
StylesPanelSections.Background,
|
|
170
|
+
StylesPanelSections.Borders,
|
|
171
|
+
StylesPanelSections.MarginsAndPaddings,
|
|
172
|
+
StylesPanelSections.Position,
|
|
173
|
+
StylesPanelSections.Size,
|
|
174
|
+
StylesPanelSections.Typography,
|
|
175
|
+
],
|
|
153
176
|
props: {
|
|
154
177
|
...SEED_DATA_PROPS,
|
|
155
178
|
type: {
|
package/src/mappings/Stepper.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import { COMPONENT_TYPES, createIconSizeProp, createColorProp, createFieldNameProp, createStaticNumberProp, Triggers, BLOCK_STYLES_SECTIONS, } from "@draftbit/types";
|
|
1
|
+
import { COMPONENT_TYPES, createIconSizeProp, createColorProp, createFieldNameProp, createStaticNumberProp, Triggers, BLOCK_STYLES_SECTIONS, StylesPanelSections, } from "@draftbit/types";
|
|
2
2
|
export const SEED_DATA = [
|
|
3
3
|
{
|
|
4
4
|
name: "Stepper",
|
|
5
5
|
tag: "Stepper",
|
|
6
6
|
description: "A component used to control the quantity of something",
|
|
7
7
|
category: COMPONENT_TYPES.control,
|
|
8
|
-
stylesPanelSections:
|
|
8
|
+
stylesPanelSections: [
|
|
9
|
+
StylesPanelSections.Typography,
|
|
10
|
+
...BLOCK_STYLES_SECTIONS,
|
|
11
|
+
],
|
|
9
12
|
layout: {},
|
|
10
13
|
triggers: [Triggers.OnChange],
|
|
11
14
|
props: {
|
package/src/mappings/Stepper.ts
CHANGED
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
createStaticNumberProp,
|
|
7
7
|
Triggers,
|
|
8
8
|
BLOCK_STYLES_SECTIONS,
|
|
9
|
+
StylesPanelSections,
|
|
9
10
|
} from "@draftbit/types";
|
|
10
11
|
|
|
11
12
|
export const SEED_DATA = [
|
|
@@ -14,7 +15,10 @@ export const SEED_DATA = [
|
|
|
14
15
|
tag: "Stepper",
|
|
15
16
|
description: "A component used to control the quantity of something",
|
|
16
17
|
category: COMPONENT_TYPES.control,
|
|
17
|
-
stylesPanelSections:
|
|
18
|
+
stylesPanelSections: [
|
|
19
|
+
StylesPanelSections.Typography,
|
|
20
|
+
...BLOCK_STYLES_SECTIONS,
|
|
21
|
+
],
|
|
18
22
|
layout: {},
|
|
19
23
|
triggers: [Triggers.OnChange],
|
|
20
24
|
props: {
|
|
@@ -16,7 +16,7 @@ const SEED_DATA_PROPS = {
|
|
|
16
16
|
description: "Can automatically capitalize sentences, words, and characters (Default: none).",
|
|
17
17
|
editable: true,
|
|
18
18
|
required: false,
|
|
19
|
-
defaultValue:
|
|
19
|
+
defaultValue: "none",
|
|
20
20
|
options: ["none", "sentences", "words", "characters"],
|
|
21
21
|
formType: FORM_TYPES.flatArray,
|
|
22
22
|
propType: PROP_TYPES.STRING,
|
|
@@ -30,7 +30,7 @@ const SEED_DATA_PROPS = {
|
|
|
30
30
|
"Can automatically capitalize sentences, words, and characters (Default: none).",
|
|
31
31
|
editable: true,
|
|
32
32
|
required: false,
|
|
33
|
-
defaultValue:
|
|
33
|
+
defaultValue: "none",
|
|
34
34
|
options: ["none", "sentences", "words", "characters"],
|
|
35
35
|
formType: FORM_TYPES.flatArray,
|
|
36
36
|
propType: PROP_TYPES.STRING,
|
|
@@ -104,7 +104,7 @@ export const SEED_DATA = [
|
|
|
104
104
|
description: "Can automatically capitalize sentences, words, and characters (Default: none).",
|
|
105
105
|
editable: true,
|
|
106
106
|
required: false,
|
|
107
|
-
defaultValue:
|
|
107
|
+
defaultValue: "none",
|
|
108
108
|
options: ["none", "sentences", "words", "characters"],
|
|
109
109
|
formType: FORM_TYPES.flatArray,
|
|
110
110
|
propType: PROP_TYPES.STRING,
|
|
@@ -121,7 +121,7 @@ export const SEED_DATA = [
|
|
|
121
121
|
"Can automatically capitalize sentences, words, and characters (Default: none).",
|
|
122
122
|
editable: true,
|
|
123
123
|
required: false,
|
|
124
|
-
defaultValue:
|
|
124
|
+
defaultValue: "none",
|
|
125
125
|
options: ["none", "sentences", "words", "characters"],
|
|
126
126
|
formType: FORM_TYPES.flatArray,
|
|
127
127
|
propType: PROP_TYPES.STRING,
|