UNPKG

@ozen-ui/kit

Version:

React component library

66 lines (65 loc) 3.23 kB
import { __assign, __read, __spreadArray } from "tslib"; import { useControlled } from '../../../../hooks/useControlled'; import { isNotNil } from '../../../../utils/isNotNil'; import { isMultipleInternalValue, isMultipleProps, isSingleProps, lastSelectedValue, } from '../../utils'; export var useDataListBaseValue = function (_a) { var _b; var valueProp = _a.value, defaultValue = _a.defaultValue, onChangeProp = _a.onChange, inProps = _a.inProps, multiple = _a.multiple; var _c = __read(useControlled({ value: valueProp === undefined ? undefined : valueProp, defaultValue: defaultValue === undefined ? undefined : defaultValue, name: 'DataListBase', state: 'value', }), 2), valueState = _c[0], setValueState = _c[1]; var onChange = function (event, option, changedOption) { setValueState(option); onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp(event, option, changedOption); }; var setValue = function (event, optionId) { var _a, _b; if (!optionId) { onChange(event, null, null); return; } var params = __assign(__assign({}, inProps), { onChange: onChange }); if (isMultipleProps(params) && isMultipleInternalValue(valueState, multiple)) { var value_1 = valueState !== null && valueState !== void 0 ? valueState : []; var optionIsAlreadySelected_1 = valueState === null || valueState === void 0 ? void 0 : valueState.find(function (selectedOptionId) { return selectedOptionId === optionId; }); var result = (function () { if (optionIsAlreadySelected_1) { var options_1 = []; value_1.forEach(function (selectedOption) { if (selectedOption !== optionId) { options_1.push(selectedOption); } }); return options_1; } if (optionId) { return __spreadArray(__spreadArray([], __read(value_1), false), [optionId], false); } return __spreadArray([], __read(value_1), false); })(); (_a = params.onChange) === null || _a === void 0 ? void 0 : _a.call(params, event, result, optionId); return; } if (isSingleProps(params)) { (_b = params.onChange) === null || _b === void 0 ? void 0 : _b.call(params, event, optionId, optionId); } }; var hasValue = isMultipleInternalValue(valueState, multiple) ? !!valueState && valueState.length > 0 : isNotNil(valueState); var selectedOptionsLength = isMultipleInternalValue(valueState, multiple) ? (_b = valueState === null || valueState === void 0 ? void 0 : valueState.length) !== null && _b !== void 0 ? _b : 0 : 0; var lastSelected = lastSelectedValue(valueState !== null && valueState !== void 0 ? valueState : null); return { value: valueState, setValue: setValue, hasValue: hasValue, selectedOptionsLength: selectedOptionsLength, lastSelected: lastSelected, }; };