@flatbiz/antd
Version:
144 lines (136 loc) • 5.2 kB
JavaScript
/* eslint-disable */
import './../fba-hooks/index.css';
import './index.css';
/*! @flatjs/forge MIT @flatbiz/antd */
import { f as fbaUtils } from '../fba-utils-Dfbczn1S.js';
import { classNames } from '@dimjs/utils/class-names/class-names';
import { extend } from '@dimjs/utils/extend/extend';
import { hooks } from '@wove/react/hooks';
import { a as _slicedToArray, i as _defineProperty } from '../_rollupPluginBabelHelpers-BYm17lo8.js';
import { useMemo } from 'react';
import { fbaHooks } from '../fba-hooks/index.js';
import { createCtx } from '@wove/react/create-ctx';
import { toArray } from '@flatbiz/utils';
import { jsx, jsxs } from 'react/jsx-runtime';
import '@dimjs/lang/is-array';
import '@dimjs/model';
import '../use-responsive-point-Bp3D3lZT.js';
import 'antd';
var _createCtx = createCtx(),
_createCtx2 = _slicedToArray(_createCtx, 2),
useCheckListCtx = _createCtx2[0],
CheckListCtxProvider = _createCtx2[1];
var getValueList = function getValueList(value, multiple) {
if (value !== undefined) {
var valueList = toArray(value);
return multiple ? valueList : valueList.splice(0, 1);
}
return null;
};
var CheckListInner = function CheckListInner(props) {
var _fbaHooks$useArrayCha = fbaHooks.useArrayChange([]),
_fbaHooks$useArrayCha2 = _slicedToArray(_fbaHooks$useArrayCha, 2),
checkedValues = _fbaHooks$useArrayCha2[0],
arrayOperate = _fbaHooks$useArrayCha2[1];
var valueList = useMemo(function () {
return getValueList(props.value, props.multiple);
}, [props.value, props.multiple]);
fbaHooks.useEffectCustom(function () {
var current = valueList || getValueList(props.defaultValue, props.multiple);
arrayOperate.resetList(current || []);
}, []);
hooks.useUpdateEffect(function () {
arrayOperate.resetList(valueList || []);
}, [valueList]);
var onChange = hooks.useCallbackRef(function (value, defaultChange) {
return new Promise(function ($return, $error) {
var targetIndex, _props$onChange, newValues, selectedValue;
if (props.onPreChange) {
return Promise.resolve(props.onPreChange(value)).then(function ($await_2) {
try {
return $If_1.call(this);
} catch ($boundEx) {
return $error($boundEx);
}
}.bind(this), $error);
}
function $If_1() {
targetIndex = checkedValues.findIndex(function (temp) {
return temp === value;
});
if (props.multiple === true) {
if (checkedValues.length === 1 && targetIndex >= 0 && props.required) {
return $return();
}
if (targetIndex >= 0) {
arrayOperate.delete(targetIndex);
} else {
arrayOperate.add(value);
}
} else {
if (targetIndex >= 0 && props.required) {
return $return();
} else {
arrayOperate.resetList(targetIndex >= 0 ? [] : [value]);
}
}
if (!defaultChange) {
newValues = arrayOperate.getList();
if (props.multiple) {
selectedValue = newValues.length > 0 ? extend([], newValues) : undefined;
} else {
selectedValue = newValues.length > 0 ? newValues[0] : undefined;
}
(_props$onChange = props.onChange) === null || _props$onChange === void 0 || _props$onChange.call(props, selectedValue, value);
}
return $return();
}
return $If_1.call(this);
});
});
return /*#__PURE__*/jsx("div", {
className: classNames('check-list', props.className),
style: props.style,
children: /*#__PURE__*/jsxs(CheckListCtxProvider, {
value: {
onChange: onChange,
checkedValues: checkedValues,
stopPropagation: props.stopPropagation
},
children: [props.beforeExtra, props.children, props.afterExtra]
})
});
};
var CheckListItem = function CheckListItem(props) {
var context = useCheckListCtx();
if (context === null) {
console.error('CheckList.Item can only be used inside CheckList.');
return null;
}
var onClick = hooks.useCallbackRef(function (event) {
if (context.stopPropagation) {
event.stopPropagation();
}
if (!props.disabled) {
context === null || context === void 0 || context.onChange(props.value);
}
});
var checked = (context === null || context === void 0 ? void 0 : context.checkedValues.findIndex(function (temp) {
return temp === props.value;
})) >= 0;
var checkedClassPrefix = 'check-list';
var className = classNames("".concat(checkedClassPrefix, "-item"), _defineProperty(_defineProperty(_defineProperty({}, "".concat(checkedClassPrefix, "-disabled"), props.disabled), "".concat(checkedClassPrefix, "-readonly"), props.readonly), "".concat(checkedClassPrefix, "-checked"), checked), props.className);
return props.children({
onClick: onClick,
checked: checked,
disabled: props.disabled,
readonly: props.readonly,
className: className,
style: props.style
});
};
var CheckList = fbaUtils.attachPropertiesToComponent(CheckListInner, {
Item: CheckListItem
});
export { CheckList };
//# sourceMappingURL=index.js.map