UNPKG

@ozen-ui/kit

Version:

React component library

70 lines (69 loc) 3.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useDataListBaseValue = void 0; var tslib_1 = require("tslib"); var useControlled_1 = require("../../../../hooks/useControlled"); var isNotNil_1 = require("../../../../utils/isNotNil"); var utils_1 = require("../../utils"); var useDataListBaseValue = function (_a) { var _b; var valueProp = _a.value, defaultValue = _a.defaultValue, onChangeProp = _a.onChange, inProps = _a.inProps, multiple = _a.multiple; var _c = tslib_1.__read((0, useControlled_1.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 = tslib_1.__assign(tslib_1.__assign({}, inProps), { onChange: onChange }); if ((0, utils_1.isMultipleProps)(params) && (0, utils_1.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 tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(value_1), false), [optionId], false); } return tslib_1.__spreadArray([], tslib_1.__read(value_1), false); })(); (_a = params.onChange) === null || _a === void 0 ? void 0 : _a.call(params, event, result, optionId); return; } if ((0, utils_1.isSingleProps)(params)) { (_b = params.onChange) === null || _b === void 0 ? void 0 : _b.call(params, event, optionId, optionId); } }; var hasValue = (0, utils_1.isMultipleInternalValue)(valueState, multiple) ? !!valueState && valueState.length > 0 : (0, isNotNil_1.isNotNil)(valueState); var selectedOptionsLength = (0, utils_1.isMultipleInternalValue)(valueState, multiple) ? (_b = valueState === null || valueState === void 0 ? void 0 : valueState.length) !== null && _b !== void 0 ? _b : 0 : 0; var lastSelected = (0, utils_1.lastSelectedValue)(valueState !== null && valueState !== void 0 ? valueState : null); return { value: valueState, setValue: setValue, hasValue: hasValue, selectedOptionsLength: selectedOptionsLength, lastSelected: lastSelected, }; }; exports.useDataListBaseValue = useDataListBaseValue;