123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- import { useEvent, useState } from 'functional-mini/component';
- import { mountComponent } from '../../_util/component';
- import { useComponentEvent } from '../../_util/hooks/useComponentEvent';
- import useLayoutEffect from '../../_util/hooks/useLayoutEffect';
- import { hasValue, useMergedState } from '../../_util/hooks/useMergedState';
- import { triggerRefEvent } from '../../_util/hooks/useReportRef';
- var Textarea = function (props) {
- var isControlled = hasValue(props.controlled)
- ? !!props.controlled
- : hasValue(props.value);
- var option = {
- value: props.value,
- };
- if (!isControlled && hasValue(props.value)) {
- option = {
- defaultValue: props.value,
- };
- }
- var _a = useMergedState(props.defaultValue, option), value = _a[0], updateValue = _a[1];
- var _b = useState(false), selfFocus = _b[0], setSelfFocus = _b[1];
- var triggerEvent = useComponentEvent(props).triggerEvent;
- triggerRefEvent();
- useLayoutEffect(function (mount) {
- if (!isControlled && !mount) {
- updateValue(props.value);
- }
- }, [props.value]);
- useEvent('onChange', function (e) {
- var newValue = e.detail.value;
- if (!isControlled) {
- updateValue(newValue);
- }
- else {
- }
- triggerEvent('change', newValue, e);
- }, []);
- useEvent('onFocus', function (e) {
- var newValue = e.detail.value;
- setSelfFocus(true);
- triggerEvent('focus', newValue, e);
- }, []);
- useEvent('onBlur', function (e) {
- var newValue = e.detail.value;
- setSelfFocus(false);
- triggerEvent('blur', newValue, e);
- }, []);
- useEvent('onConfirm', function (e) {
- var newValue = e.detail.value;
- triggerEvent('confirm', newValue, e);
- }, []);
- useEvent('onClear', function (e) {
- if (!isControlled) {
- updateValue('');
- }
- triggerEvent('change', '', e);
- }, []);
- useEvent('update', function (e) {
- if (isControlled) {
- return;
- }
- updateValue(e);
- }, []);
- return {
- state: {
- value: value,
- controlled: isControlled,
- },
- selfFocus: selfFocus,
- };
- };
- mountComponent(Textarea, {
- value: null,
- defaultValue: null,
- placeholder: null,
- placeholderClassName: null,
- placeholderStyle: null,
- autoHeight: null,
- showCount: null,
- allowClear: null,
- controlled: null,
- enableNative: false,
- inputClassName: null,
- disabled: null,
- inputStyle: null,
- focusStyle: null,
- name: null,
- confirmType: null,
- focus: null,
- confirmHold: null,
- });
|