UNPKG

mobile-more

Version:

基于 antd-mobile v5 扩展移动端 UI 组件

71 lines (69 loc) 2.58 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties"; var _excluded = ["showAlpha", "showText", "format", "colorPickerProps", "required", "className"]; import React from 'react'; import { isString } from 'ut2'; import classNames from 'classnames'; import BizFormItem from "../FormItem"; import { useConfig } from "../../BizConfigProvider"; import BizColorPicker from "../../BizColorPicker"; import { formItemPrefixClass } from "../../../config"; var prefixCls = "".concat(formItemPrefixClass, "-color-picker"); /** * 转换颜色值为指定格式 * @param color 颜色值 * @param format 颜色格式 * @returns 转换后的颜色值 * @example * // 颜色值为undefined 或 字符串,直接返回原值 * transformColor(undefined, 'rgb') // undefined * transformColor('', 'rgb') // '' * transformColor('#e60000', 'rgb') // '#e60000' * * // 颜色值为颜色对象,根据格式转换 * const color = { hex: '#e60000', hexa: '#e60000ff', hsva: { ..., a: 1 }, ... }; * transformColor(color, 'hsl') // 'hsl(0, 100%, 45%)' * transformColor(color, 'rgb') // 'rgb(230, 0, 0)' */ function transformColor(color, format) { if (!color || isString(color)) { return color; } if (format === 'rgb') { return BizColorPicker.colorToRgbString(color); } if (format === 'hsl') { return BizColorPicker.colorToHslString(color); } // default hex return color.hsva.a === 1 ? color.hex : color.hexa; } var BizFormItemColorPicker = function BizFormItemColorPicker(_ref) { var showAlpha = _ref.showAlpha, showText = _ref.showText, _ref$format = _ref.format, format = _ref$format === void 0 ? 'hex' : _ref$format, colorPickerProps = _ref.colorPickerProps, required = _ref.required, className = _ref.className, restProps = _objectWithoutProperties(_ref, _excluded); var _useConfig = useConfig(), locale = _useConfig.locale; return /*#__PURE__*/React.createElement(BizFormItem, _extends({ required: required, rules: [{ required: required, message: locale.form.common.selectRequired }], transform: function transform(value) { return transformColor(value, format); }, className: classNames(prefixCls, className) }, restProps), /*#__PURE__*/React.createElement(BizColorPicker, _extends({ showAlpha: showAlpha, showText: showText, format: format }, colorPickerProps))); }; BizFormItemColorPicker.transformColor = transformColor; export default BizFormItemColorPicker;