index.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import { useEffect, useRef } 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 { FormTextareaDefaultProps } from './props';
  7. var FormTextarea = function (props) {
  8. var _a = useFormItem(props), formData = _a.formData, emit = _a.emit;
  9. var triggerEvent = useComponentEvent(props).triggerEvent;
  10. var inputRef = useRef();
  11. useHandleCustomEvent('handleRef', function (input) {
  12. inputRef.current = input;
  13. });
  14. useEffect(function () {
  15. if (inputRef.current) {
  16. inputRef.current.update(formData.value);
  17. }
  18. }, [formData]);
  19. useHandleCustomEvent('onChange', function (value, e) {
  20. emit('onChange', value);
  21. triggerEvent('change', value, e);
  22. });
  23. useHandleCustomEvent('onBlur', function (value, e) {
  24. triggerEvent('blur', value, e);
  25. });
  26. useHandleCustomEvent('onFocus', function (value, e) {
  27. triggerEvent('focus', value, e);
  28. });
  29. useHandleCustomEvent('onConfirm', function (value, e) {
  30. triggerEvent('confirm', value, e);
  31. });
  32. return {
  33. formData: formData,
  34. };
  35. };
  36. mountComponent(FormTextarea, FormTextareaDefaultProps);