FormItemInput.js 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  2. import { resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from "vue";
  3. import LoadingOutlined from "@ant-design/icons-vue/es/icons/LoadingOutlined";
  4. import CloseCircleFilled from "@ant-design/icons-vue/es/icons/CloseCircleFilled";
  5. import CheckCircleFilled from "@ant-design/icons-vue/es/icons/CheckCircleFilled";
  6. import ExclamationCircleFilled from "@ant-design/icons-vue/es/icons/ExclamationCircleFilled";
  7. import Col from '../grid/Col';
  8. import { useProvideForm, useInjectForm, useProvideFormItemPrefix } from './context';
  9. import ErrorList from './ErrorList';
  10. import classNames from '../_util/classNames';
  11. import { computed, defineComponent } from 'vue';
  12. var iconMap = {
  13. success: CheckCircleFilled,
  14. warning: ExclamationCircleFilled,
  15. error: CloseCircleFilled,
  16. validating: LoadingOutlined
  17. };
  18. var FormItemInput = defineComponent({
  19. compatConfig: {
  20. MODE: 3
  21. },
  22. slots: ['help', 'extra', 'errors'],
  23. inheritAttrs: false,
  24. props: ['prefixCls', 'errors', 'hasFeedback', 'onDomErrorVisibleChange', 'wrapperCol', 'help', 'extra', 'status'],
  25. setup: function setup(props, _ref) {
  26. var slots = _ref.slots;
  27. var formContext = useInjectForm();
  28. var contextWrapperCol = formContext.wrapperCol;
  29. // Pass to sub FormItem should not with col info
  30. var subFormContext = _objectSpread({}, formContext);
  31. delete subFormContext.labelCol;
  32. delete subFormContext.wrapperCol;
  33. useProvideForm(subFormContext);
  34. useProvideFormItemPrefix({
  35. prefixCls: computed(function () {
  36. return props.prefixCls;
  37. }),
  38. status: computed(function () {
  39. return props.status;
  40. })
  41. });
  42. return function () {
  43. var _slots$help, _slots$errors, _slots$extra;
  44. var prefixCls = props.prefixCls,
  45. wrapperCol = props.wrapperCol,
  46. _props$help = props.help,
  47. help = _props$help === void 0 ? (_slots$help = slots.help) === null || _slots$help === void 0 ? void 0 : _slots$help.call(slots) : _props$help,
  48. _props$errors = props.errors,
  49. errors = _props$errors === void 0 ? (_slots$errors = slots.errors) === null || _slots$errors === void 0 ? void 0 : _slots$errors.call(slots) : _props$errors,
  50. hasFeedback = props.hasFeedback,
  51. status = props.status,
  52. _props$extra = props.extra,
  53. extra = _props$extra === void 0 ? (_slots$extra = slots.extra) === null || _slots$extra === void 0 ? void 0 : _slots$extra.call(slots) : _props$extra;
  54. var baseClassName = "".concat(prefixCls, "-item");
  55. var mergedWrapperCol = wrapperCol || (contextWrapperCol === null || contextWrapperCol === void 0 ? void 0 : contextWrapperCol.value) || {};
  56. var className = classNames("".concat(baseClassName, "-control"), mergedWrapperCol.class);
  57. // Should provides additional icon if `hasFeedback`
  58. var IconNode = status && iconMap[status];
  59. return _createVNode(Col, _objectSpread(_objectSpread({}, mergedWrapperCol), {}, {
  60. "class": className
  61. }), {
  62. default: function _default() {
  63. var _slots$default;
  64. return _createVNode(_Fragment, null, [_createVNode("div", {
  65. "class": "".concat(baseClassName, "-control-input")
  66. }, [_createVNode("div", {
  67. "class": "".concat(baseClassName, "-control-input-content")
  68. }, [(_slots$default = slots.default) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)]), hasFeedback && IconNode ? _createVNode("span", {
  69. "class": "".concat(baseClassName, "-children-icon")
  70. }, [_createVNode(IconNode, null, null)]) : null]), _createVNode(ErrorList, {
  71. "errors": errors,
  72. "help": help,
  73. "class": "".concat(baseClassName, "-explain-connected")
  74. }, null), extra ? _createVNode("div", {
  75. "class": "".concat(baseClassName, "-extra")
  76. }, [extra]) : null]);
  77. }
  78. });
  79. };
  80. }
  81. });
  82. export default FormItemInput;