FormItemContext.js 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.useProvideFormItemContext = exports.useInjectFormItemContext = exports.default = void 0;
  7. var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
  8. var _vue = require("vue");
  9. var _devWarning = _interopRequireDefault(require("../vc-util/devWarning"));
  10. var ContextKey = Symbol('ContextProps');
  11. var InternalContextKey = Symbol('InternalContextProps');
  12. var useProvideFormItemContext = function useProvideFormItemContext(props) {
  13. var useValidation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, _vue.computed)(function () {
  14. return true;
  15. });
  16. var formItemFields = (0, _vue.ref)(new Map());
  17. var addFormItemField = function addFormItemField(key, type) {
  18. formItemFields.value.set(key, type);
  19. formItemFields.value = new Map(formItemFields.value);
  20. };
  21. var removeFormItemField = function removeFormItemField(key) {
  22. formItemFields.value.delete(key);
  23. formItemFields.value = new Map(formItemFields.value);
  24. };
  25. var instance = (0, _vue.getCurrentInstance)();
  26. (0, _vue.watch)([useValidation, formItemFields], function () {
  27. if (process.env.NODE_ENV !== 'production') {
  28. if (useValidation.value && formItemFields.value.size > 1) {
  29. (0, _devWarning.default)(false, 'Form.Item', "FormItem can only collect one field item, you haved set ".concat((0, _toConsumableArray2.default)(formItemFields.value.values()).map(function (v) {
  30. return "`".concat(v.name, "`");
  31. }).join(', '), " ").concat(formItemFields.value.size, " field items.\n You can set not need to be collected fields into `a-form-item-rest`"));
  32. var cur = instance;
  33. while (cur.parent) {
  34. console.warn('at', cur.type);
  35. cur = cur.parent;
  36. }
  37. }
  38. }
  39. });
  40. (0, _vue.provide)(ContextKey, props);
  41. (0, _vue.provide)(InternalContextKey, {
  42. addFormItemField: addFormItemField,
  43. removeFormItemField: removeFormItemField
  44. });
  45. };
  46. exports.useProvideFormItemContext = useProvideFormItemContext;
  47. var defaultContext = {
  48. id: (0, _vue.computed)(function () {
  49. return undefined;
  50. }),
  51. onFieldBlur: function onFieldBlur() {},
  52. onFieldChange: function onFieldChange() {},
  53. clearValidate: function clearValidate() {}
  54. };
  55. var defaultInternalContext = {
  56. addFormItemField: function addFormItemField() {},
  57. removeFormItemField: function removeFormItemField() {}
  58. };
  59. var useInjectFormItemContext = function useInjectFormItemContext() {
  60. var internalContext = (0, _vue.inject)(InternalContextKey, defaultInternalContext);
  61. var formItemFieldKey = Symbol('FormItemFieldKey');
  62. var instance = (0, _vue.getCurrentInstance)();
  63. internalContext.addFormItemField(formItemFieldKey, instance.type);
  64. (0, _vue.onBeforeUnmount)(function () {
  65. internalContext.removeFormItemField(formItemFieldKey);
  66. });
  67. // We should prevent the passing of context for children
  68. (0, _vue.provide)(InternalContextKey, defaultInternalContext);
  69. (0, _vue.provide)(ContextKey, defaultContext);
  70. return (0, _vue.inject)(ContextKey, defaultContext);
  71. };
  72. exports.useInjectFormItemContext = useInjectFormItemContext;
  73. var _default = (0, _vue.defineComponent)({
  74. compatConfig: {
  75. MODE: 3
  76. },
  77. name: 'AFormItemRest',
  78. setup: function setup(_, _ref) {
  79. var slots = _ref.slots;
  80. (0, _vue.provide)(InternalContextKey, defaultInternalContext);
  81. (0, _vue.provide)(ContextKey, defaultContext);
  82. return function () {
  83. var _slots$default;
  84. return (_slots$default = slots.default) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
  85. };
  86. }
  87. });
  88. exports.default = _default;