sapo-components-ui-rn 1.0.59 → 1.0.60

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.
@@ -24,6 +24,7 @@ export interface ButtonProps extends TouchableOpacityProps {
24
24
  full?: boolean;
25
25
  theme?: ThemeProp;
26
26
  buttonSize?: "normal" | "small";
27
+ critical?: boolean;
27
28
  }
28
- declare const _default: React.MemoExoticComponent<({ style, title, border, borderColor, isLoading, left, right, margin, textStyle, textProps, onPress, disabled, backgroundColor, textColor, bold, size, medium, mode, transparent, full, theme: themeOverrides, buttonSize, ...props }: ButtonProps) => React.JSX.Element>;
29
+ declare const _default: React.MemoExoticComponent<({ style, title, border, borderColor, isLoading, left, right, margin, textStyle, textProps, onPress, disabled, backgroundColor, textColor, bold, size, medium, mode, transparent, full, theme: themeOverrides, buttonSize, critical, ...props }: ButtonProps) => React.JSX.Element>;
29
30
  export default _default;
@@ -11,6 +11,7 @@ export type Props = React.ComponentPropsWithRef<typeof NativeTextInput> & {
11
11
  textError?: string;
12
12
  maxValue?: number;
13
13
  type?: "integer" | "float";
14
+ formatDecimal?: 1 | 2 | 3;
14
15
  /**
15
16
  * If true, user won't be able to interact with the component.
16
17
  */
@@ -22,6 +22,7 @@ export interface TextInputNumberProps extends TouchableOpacityProps {
22
22
  theme?: ThemeProp;
23
23
  maxValue?: number;
24
24
  type?: "integer" | "float";
25
+ formatDecimal?: 1 | 2 | 3;
25
26
  }
26
- declare const _default: React.MemoExoticComponent<({ style, value, label, textError, borderColor, left, right, textStyle, labelStyle, textProps, onChangeText, disabled, textColor, labelColor, theme: themeOverrides, prefix, clearButton, maxValue, type, ...props }: TextInputNumberProps) => React.JSX.Element>;
27
+ declare const _default: React.MemoExoticComponent<({ style, value, label, textError, borderColor, left, right, textStyle, labelStyle, textProps, onChangeText, disabled, textColor, labelColor, theme: themeOverrides, prefix, clearButton, maxValue, type, formatDecimal, ...props }: TextInputNumberProps) => React.JSX.Element>;
27
28
  export default _default;
package/dist/index.esm.js CHANGED
@@ -5942,7 +5942,7 @@ var containerStyles = StyleSheet.create({
5942
5942
  },
5943
5943
  });
5944
5944
 
5945
- function formatNumberInput(value) {
5945
+ function formatNumberInput(value, formatDecimal) {
5946
5946
  if (!value)
5947
5947
  return "0";
5948
5948
  // Xử lý số âm
@@ -5953,7 +5953,7 @@ function formatNumberInput(value) {
5953
5953
  intPart = intPart.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
5954
5954
  // Giới hạn phần thập phân 3 số
5955
5955
  if (decimalPart)
5956
- decimalPart = decimalPart.slice(0, 3);
5956
+ decimalPart = decimalPart.slice(0, formatDecimal);
5957
5957
  var result = intPart;
5958
5958
  if (decimalPart !== undefined)
5959
5959
  result += "." + decimalPart;
@@ -5962,12 +5962,12 @@ function formatNumberInput(value) {
5962
5962
  return result;
5963
5963
  }
5964
5964
  var TextInputNumber = function (_a) {
5965
- var style = _a.style, _b = _a.value, value = _b === void 0 ? "" : _b, _c = _a.label, label = _c === void 0 ? "" : _c, _d = _a.textError, textError = _d === void 0 ? "" : _d, borderColor = _a.borderColor, left = _a.left, right = _a.right, textStyle = _a.textStyle; _a.labelStyle; var textProps = _a.textProps, onChangeText = _a.onChangeText, _e = _a.disabled, disabled = _e === void 0 ? false : _e, textColor = _a.textColor, labelColor = _a.labelColor; _a.theme; var _f = _a.prefix, prefix = _f === void 0 ? "" : _f, _g = _a.clearButton, clearButton = _g === void 0 ? false : _g, _h = _a.maxValue, maxValue = _h === void 0 ? 9999999999 : _h, _j = _a.type, type = _j === void 0 ? "integer" : _j, props = __rest(_a, ["style", "value", "label", "textError", "borderColor", "left", "right", "textStyle", "labelStyle", "textProps", "onChangeText", "disabled", "textColor", "labelColor", "theme", "prefix", "clearButton", "maxValue", "type"]);
5965
+ var style = _a.style, _b = _a.value, value = _b === void 0 ? "" : _b, _c = _a.label, label = _c === void 0 ? "" : _c, _d = _a.textError, textError = _d === void 0 ? "" : _d, borderColor = _a.borderColor, left = _a.left, right = _a.right, textStyle = _a.textStyle; _a.labelStyle; var textProps = _a.textProps, onChangeText = _a.onChangeText, _e = _a.disabled, disabled = _e === void 0 ? false : _e, textColor = _a.textColor, labelColor = _a.labelColor; _a.theme; var _f = _a.prefix, prefix = _f === void 0 ? "" : _f, _g = _a.clearButton, clearButton = _g === void 0 ? false : _g, _h = _a.maxValue, maxValue = _h === void 0 ? 999999999 : _h, _j = _a.type, type = _j === void 0 ? "integer" : _j, _k = _a.formatDecimal, formatDecimal = _k === void 0 ? 3 : _k, props = __rest(_a, ["style", "value", "label", "textError", "borderColor", "left", "right", "textStyle", "labelStyle", "textProps", "onChangeText", "disabled", "textColor", "labelColor", "theme", "prefix", "clearButton", "maxValue", "type", "formatDecimal"]);
5966
5966
  var theme = useInternalTheme();
5967
5967
  var colors = theme.colors;
5968
- var _k = useState(false), isShowModalKeyboard = _k[0], setIsShowModalKeyboard = _k[1];
5969
- var _l = useState((value === null || value === void 0 ? void 0 : value.toString()) || ""), inputValue = _l[0], setInputValue = _l[1];
5970
- var _m = useState((value === null || value === void 0 ? void 0 : value.toString()) || ""), numberValue = _m[0], setNumberValue = _m[1];
5968
+ var _l = useState(false), isShowModalKeyboard = _l[0], setIsShowModalKeyboard = _l[1];
5969
+ var _m = useState((value === null || value === void 0 ? void 0 : value.toString()) || ""), inputValue = _m[0], setInputValue = _m[1];
5970
+ var _o = useState((value === null || value === void 0 ? void 0 : value.toString()) || ""), numberValue = _o[0], setNumberValue = _o[1];
5971
5971
  var disabledTextStyle = {
5972
5972
  color: colors.textSecondary,
5973
5973
  };
@@ -6098,7 +6098,9 @@ var TextInputNumber = function (_a) {
6098
6098
  !checkValueEmpty() && prefix.toString() !== "" && (React__default.createElement(Text$1, __assign({ numberOfLines: 1, color: colors.textSecondary, style: [disabled && disabledTextStyle, textStyle] }, textProps),
6099
6099
  prefix, " ")),
6100
6100
  React__default.createElement(View, { full: true },
6101
- React__default.createElement(Text$1, __assign({ numberOfLines: 1, color: getColorValue, style: [disabled && disabledTextStyle, textStyle] }, textProps), checkValueEmpty() ? label : formatNumberInput(numberValue))))),
6101
+ React__default.createElement(Text$1, __assign({ numberOfLines: 1, color: getColorValue, style: [disabled && disabledTextStyle, textStyle] }, textProps), checkValueEmpty()
6102
+ ? label
6103
+ : formatNumberInput(numberValue, formatDecimal))))),
6102
6104
  clearButton && !checkValueEmpty() && (React__default.createElement(TouchableOpacity, { activeOpacity: 0.8, onPress: handleClearInput },
6103
6105
  React__default.createElement(Icon$1, { name: "IconClearText", type: "Svg", size: 24 }))),
6104
6106
  right && (React__default.createElement(View, { paddingLeft: SPACE_8, height: "100%" }, right)),
@@ -6111,7 +6113,7 @@ var TextInputNumber = function (_a) {
6111
6113
  React__default.createElement(Text$1, { style: styles$a.modalTitle }, label),
6112
6114
  React__default.createElement(View, { width: "100%" },
6113
6115
  React__default.createElement(View, { paddingHorizontal: SPACE_40 },
6114
- React__default.createElement(Text$1, { numberOfLines: 1, style: styles$a.valueText }, formatNumberInput(inputValue) || "0")),
6116
+ React__default.createElement(Text$1, { numberOfLines: 1, style: styles$a.valueText }, formatNumberInput(inputValue, formatDecimal) || "0")),
6115
6117
  React__default.createElement(TouchableOpacity, { onPress: handleClear, style: styles$a.clearButton },
6116
6118
  React__default.createElement(Icon$1, { name: "IconClearText", type: "Svg", size: 24, color: colors.textSecondary }))),
6117
6119
  React__default.createElement(View, { style: styles$a.keyboardGrid }, [
@@ -6441,7 +6443,7 @@ var TextInput = forwardRef(function (_a, ref) {
6441
6443
  }, onFocus: handleFocus, forceFocus: forceFocus, onBlur: handleBlur, allowFontScaling: false, onChangeText: handleChangeText, onLayoutAnimatedText: handleLayoutAnimatedText, onInputLayout: handleInputContainerLayout, onLabelTextLayout: handleLabelTextLayout, onLeftAffixLayoutChange: onLeftAffixLayoutChange, onRightAffixLayoutChange: onRightAffixLayoutChange, maxFontSizeMultiplier: maxFontSizeMultiplier, contentStyle: contentStyle, scaledLabel: scaledLabel })));
6442
6444
  }
6443
6445
  if (mode === "number") {
6444
- return (React__default.createElement(TextInputNumber$1, { textError: textError, disabled: disabled, prefix: prefix, value: value, label: rest.label, clearButton: clearButton, onChangeText: handleChangeText, maxValue: maxValue, type: type }));
6446
+ return (React__default.createElement(TextInputNumber$1, { textError: textError, disabled: disabled, prefix: prefix, value: value, label: rest.label, clearButton: clearButton, onChangeText: handleChangeText, maxValue: maxValue, formatDecimal: rest.formatDecimal, type: type }));
6445
6447
  }
6446
6448
  return (React__default.createElement(TextInputFlat, __assign({ dense: dense, disabled: disabled, error: errorProp, editable: editable, clearButton: clearButton, render: render }, rest, { theme: theme, value: value, parentState: {
6447
6449
  labeled: labeled,
@@ -6464,18 +6466,32 @@ var TextInput = forwardRef(function (_a, ref) {
6464
6466
  TextInput.Affix = TextInputAffix;
6465
6467
 
6466
6468
  var Button = function (_a) {
6467
- var style = _a.style, title = _a.title; _a.border; var borderColor = _a.borderColor, isLoading = _a.isLoading, left = _a.left, right = _a.right; _a.margin; var textStyle = _a.textStyle, textProps = _a.textProps, onPress = _a.onPress, disabled = _a.disabled, backgroundColor = _a.backgroundColor, textColor = _a.textColor, _b = _a.bold, bold = _b === void 0 ? true : _b, _c = _a.size, size = _c === void 0 ? 16 : _c, _d = _a.medium, medium = _d === void 0 ? false : _d, _e = _a.mode, mode = _e === void 0 ? "contained" : _e; _a.transparent; var _g = _a.full, full = _g === void 0 ? false : _g; _a.theme; var _h = _a.buttonSize, buttonSize = _h === void 0 ? "normal" : _h, props = __rest(_a, ["style", "title", "border", "borderColor", "isLoading", "left", "right", "margin", "textStyle", "textProps", "onPress", "disabled", "backgroundColor", "textColor", "bold", "size", "medium", "mode", "transparent", "full", "theme", "buttonSize"]);
6469
+ var style = _a.style, title = _a.title; _a.border; var borderColor = _a.borderColor, isLoading = _a.isLoading, left = _a.left, right = _a.right; _a.margin; var textStyle = _a.textStyle, textProps = _a.textProps, onPress = _a.onPress, disabled = _a.disabled, backgroundColor = _a.backgroundColor, textColor = _a.textColor, _b = _a.bold, bold = _b === void 0 ? true : _b, _c = _a.size, size = _c === void 0 ? 16 : _c, _d = _a.medium, medium = _d === void 0 ? false : _d, _e = _a.mode, mode = _e === void 0 ? "contained" : _e; _a.transparent; var _g = _a.full, full = _g === void 0 ? false : _g; _a.theme; var _h = _a.buttonSize, buttonSize = _h === void 0 ? "normal" : _h, _j = _a.critical, critical = _j === void 0 ? false : _j, props = __rest(_a, ["style", "title", "border", "borderColor", "isLoading", "left", "right", "margin", "textStyle", "textProps", "onPress", "disabled", "backgroundColor", "textColor", "bold", "size", "medium", "mode", "transparent", "full", "theme", "buttonSize", "critical"]);
6468
6470
  var theme = useInternalTheme();
6469
6471
  var colors = theme.colors;
6470
6472
  var disabledTextStyle = {
6471
- color: colors.textBrandDisabled,
6473
+ color: colors.textDisabled,
6472
6474
  };
6473
6475
  var renderButtonStyle = function () {
6474
6476
  switch (mode) {
6475
6477
  case "outlined":
6476
- return [styles$9.border, { borderColor: colors.borderBrandDefault }];
6478
+ return [
6479
+ styles$9.border,
6480
+ { borderColor: colors.borderBrandDefault },
6481
+ critical && {
6482
+ backgroundColor: colors.surfacePrimaryDefault,
6483
+ borderColor: colors.borderCriticalDefault,
6484
+ borderWidth: CONSTANTS.BORDER_WIDTH_1,
6485
+ },
6486
+ ];
6477
6487
  case "contained":
6478
- return [{ backgroundColor: colors.surfaceBrandDefault }];
6488
+ return [
6489
+ {
6490
+ backgroundColor: critical
6491
+ ? colors.surfaceCriticalDefault
6492
+ : colors.surfaceBrandDefault,
6493
+ },
6494
+ ];
6479
6495
  case "transparent":
6480
6496
  return [
6481
6497
  { borderColor: colors.borderBrandDefault },
@@ -6486,10 +6502,16 @@ var Button = function (_a) {
6486
6502
  var renderTextColor = function () {
6487
6503
  switch (mode) {
6488
6504
  case "outlined":
6505
+ if (critical) {
6506
+ return colors.textCriticalDefault;
6507
+ }
6489
6508
  return colors.textBrandDefault;
6490
6509
  case "contained":
6491
6510
  return colors.textOnFillDefault;
6492
6511
  case "transparent":
6512
+ if (critical) {
6513
+ return colors.textCriticalDefault;
6514
+ }
6493
6515
  return colors.textBrandDefault;
6494
6516
  }
6495
6517
  };