@iimm/formily-taro-vantui
Version:
form field components based on @antmjs/vantui and @formily/react
98 lines • 6.97 kB
JavaScript
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
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); }
import { useField } from "@formily/react";
import { isVoidField } from "@formily/core";
import { useFormLayout } from "../layout";
export function useFormilyFieldProps(props, config) {
var formatProps = _objectSpread({}, props || {});
var formLayout = useFormLayout();
if ((formLayout === null || formLayout === void 0 ? void 0 : formLayout.alwaysShowFeedback) !== undefined) {
var _props$alwaysShowFeed;
formatProps.alwaysShowFeedback = (_props$alwaysShowFeed = props === null || props === void 0 ? void 0 : props.alwaysShowFeedback) !== null && _props$alwaysShowFeed !== void 0 ? _props$alwaysShowFeed : formLayout.alwaysShowFeedback;
}
if ((formLayout === null || formLayout === void 0 ? void 0 : formLayout.showFeedback) !== undefined) {
var _props$showFeedback;
formatProps.showFeedback = (_props$showFeedback = props === null || props === void 0 ? void 0 : props.showFeedback) !== null && _props$showFeedback !== void 0 ? _props$showFeedback : formLayout.showFeedback;
}
if ((formLayout === null || formLayout === void 0 ? void 0 : formLayout.withFormItem) !== undefined) {
var _props$withFormItem;
formatProps.withFormItem = (_props$withFormItem = props === null || props === void 0 ? void 0 : props.withFormItem) !== null && _props$withFormItem !== void 0 ? _props$withFormItem : formLayout === null || formLayout === void 0 ? void 0 : formLayout.withFormItem;
}
var field = useField();
if (!field || isVoidField(field)) return formatProps;
var _ref = config || {},
_ref$title = _ref.title,
title = _ref$title === void 0 ? true : _ref$title,
_ref$readOnly = _ref.readOnly,
readOnly = _ref$readOnly === void 0 ? true : _ref$readOnly,
_ref$required = _ref.required,
required = _ref$required === void 0 ? true : _ref$required,
options = _ref.options,
_ref$defaultValue = _ref.defaultValue,
defaultValue = _ref$defaultValue === void 0 ? true : _ref$defaultValue,
_ref$disabled = _ref.disabled,
disabled = _ref$disabled === void 0 ? true : _ref$disabled,
_ref$feedback = _ref.feedback,
feedback = _ref$feedback === void 0 ? true : _ref$feedback,
_ref$description = _ref.description,
description = _ref$description === void 0 ? true : _ref$description;
if (defaultValue) {
var _props$defaultValue;
formatProps.defaultValue = (_props$defaultValue = props.defaultValue) !== null && _props$defaultValue !== void 0 ? _props$defaultValue : field === null || field === void 0 ? void 0 : field.initialValue;
}
if (title) {
var _props$title;
formatProps.title = (_props$title = props === null || props === void 0 ? void 0 : props.title) !== null && _props$title !== void 0 ? _props$title : field === null || field === void 0 ? void 0 : field.title;
}
if (disabled) {
var _props$disabled;
formatProps.disabled = (_props$disabled = props.disabled) !== null && _props$disabled !== void 0 ? _props$disabled : field === null || field === void 0 ? void 0 : field.disabled;
}
if (readOnly) {
var _props$readOnly;
formatProps.readOnly = (_props$readOnly = props === null || props === void 0 ? void 0 : props.readOnly) !== null && _props$readOnly !== void 0 ? _props$readOnly : field === null || field === void 0 ? void 0 : field.readOnly;
}
if (required) {
var takeRequired = function takeRequired() {
if (field.required && field.pattern !== "readPretty") {
return true;
}
if ("required" in props) {
return props.required;
}
return false;
};
formatProps.required = takeRequired();
}
if (options) {
var _props$options;
formatProps.options = (_props$options = props === null || props === void 0 ? void 0 : props.options) !== null && _props$options !== void 0 ? _props$options : field === null || field === void 0 ? void 0 : field.dataSource;
}
if (description) {
var _props$description;
formatProps.description = (_props$description = props === null || props === void 0 ? void 0 : props.description) !== null && _props$description !== void 0 ? _props$description : field === null || field === void 0 ? void 0 : field.description;
}
if (feedback) {
var _props$error;
formatProps.error = (_props$error = props.error) !== null && _props$error !== void 0 ? _props$error : field === null || field === void 0 ? void 0 : field.selfInvalid;
var takeMessage = function takeMessage() {
if (field.validating) return;
if (props.feedback) return props.feedback;
var split = function split(messages) {
return messages.reduce(function (buf, text, index) {
if (!text) return buf;
return index < messages.length - 1 ? buf.concat([text, ", "]) : buf.concat([text]);
}, []);
};
if (field.selfErrors.length) return split(field.selfErrors);
if (field.selfWarnings.length) return split(field.selfWarnings);
if (field.selfSuccesses.length) return split(field.selfSuccesses);
};
formatProps.feedback = takeMessage();
}
return formatProps;
}