index.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import { useEvent, useRef, useEffect } from 'functional-mini/component';
  2. import { mountComponent } from '../../_util/component';
  3. import { useComponentEvent } from '../../_util/hooks/useComponentEvent';
  4. import { useHandleCustomEvent } from '../../_util/hooks/useHandleCustomEvent';
  5. import { useFormItem } from '../use-form-item';
  6. import { FormImageUploadDefaultProps } from './props';
  7. var FormImageUpload = function (props) {
  8. var _a = useFormItem(props), formData = _a.formData, emit = _a.emit;
  9. var triggerEvent = useComponentEvent(props).triggerEvent;
  10. var imageUploadRef = useRef();
  11. useHandleCustomEvent('handleRef', function (imageUpload) {
  12. imageUploadRef.current = imageUpload;
  13. });
  14. useEffect(function () {
  15. if (imageUploadRef.current) {
  16. imageUploadRef.current.update(formData.value);
  17. }
  18. }, [formData.value]);
  19. useHandleCustomEvent('onChange', function (value) {
  20. emit('onChange', value);
  21. triggerEvent('change', value);
  22. });
  23. useEvent('handleUpload', function (localFile) {
  24. if (!props.onUpload) {
  25. throw new Error('need props onUpload');
  26. }
  27. return props.onUpload(localFile);
  28. }, {
  29. handleResult: true,
  30. });
  31. useEvent('handleRemove', function (file) {
  32. if (props.onRemove) {
  33. return props.onRemove(file);
  34. }
  35. }, {
  36. handleResult: true,
  37. });
  38. useHandleCustomEvent('onPreview', function (file, e) {
  39. triggerEvent('preview', file, e);
  40. });
  41. useEvent('handleBeforeUpload', function (localFileList) {
  42. if (props.onBeforeUpload) {
  43. return props.onBeforeUpload(localFileList);
  44. }
  45. }, {
  46. handleResult: true,
  47. });
  48. useHandleCustomEvent('onChooseImageError', function (err, e) {
  49. triggerEvent('chooseImageError', err, e);
  50. });
  51. return {
  52. formData: formData,
  53. };
  54. };
  55. mountComponent(FormImageUpload, FormImageUploadDefaultProps);