@ozen-ui/kit
Version:
React component library
70 lines (69 loc) • 3.48 kB
JavaScript
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;
;