context.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. "use client";
  2. import * as React from 'react';
  3. import { FormProvider as RcFormProvider } from 'rc-field-form';
  4. import omit from "rc-util/es/omit";
  5. export const FormContext = /*#__PURE__*/React.createContext({
  6. labelAlign: 'right',
  7. layout: 'horizontal',
  8. itemRef: () => {}
  9. });
  10. export const NoStyleItemContext = /*#__PURE__*/React.createContext(null);
  11. export const FormProvider = props => {
  12. const providerProps = omit(props, ['prefixCls']);
  13. return /*#__PURE__*/React.createElement(RcFormProvider, Object.assign({}, providerProps));
  14. };
  15. export const FormItemPrefixContext = /*#__PURE__*/React.createContext({
  16. prefixCls: ''
  17. });
  18. export const FormItemInputContext = /*#__PURE__*/React.createContext({});
  19. if (process.env.NODE_ENV !== 'production') {
  20. FormItemInputContext.displayName = 'FormItemInputContext';
  21. }
  22. export const NoFormStyle = ({
  23. children,
  24. status,
  25. override
  26. }) => {
  27. const formItemInputContext = React.useContext(FormItemInputContext);
  28. const newFormItemInputContext = React.useMemo(() => {
  29. const newContext = Object.assign({}, formItemInputContext);
  30. if (override) {
  31. delete newContext.isFormItemInput;
  32. }
  33. if (status) {
  34. delete newContext.status;
  35. delete newContext.hasFeedback;
  36. delete newContext.feedbackIcon;
  37. }
  38. return newContext;
  39. }, [status, override, formItemInputContext]);
  40. return /*#__PURE__*/React.createElement(FormItemInputContext.Provider, {
  41. value: newFormItemInputContext
  42. }, children);
  43. };
  44. export const VariantContext = /*#__PURE__*/React.createContext(undefined);