UNPKG

@ozen-ui/kit

Version:

React component library

94 lines (93 loc) 4.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useAutocompleteBaseValue = void 0; var tslib_1 = require("tslib"); var useControlled_1 = require("../../../../hooks/useControlled"); var array_1 = require("../../../../utils/array"); var isNotNil_1 = require("../../../../utils/isNotNil"); var utils_1 = require("../../utils"); var useAutocompleteBaseValue = function (_a) { var _b; var valueProp = _a.value, options = _a.options, defaultValue = _a.defaultValue, onChangeProp = _a.onChange, inProps = _a.inProps, prepareOption = _a.prepareOption, searchControl = _a.searchControl, multiple = _a.multiple, inputControl = _a.inputControl; var prepareValue = function (value) { if (!value) { return null; } if ((0, array_1.isArray)(value)) { return value.map(function (value) { return prepareOption(value); }); } return prepareOption(value); }; var _c = tslib_1.__read((0, useControlled_1.useControlled)({ value: valueProp === undefined ? undefined : prepareValue(valueProp), defaultValue: defaultValue === undefined ? undefined : prepareValue(defaultValue), name: 'AutocompleteBase', state: 'value', }), 2), valueState = _c[0], setValueState = _c[1]; var onChange = function (event, option, params) { setValueState(prepareValue(option)); onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp(event, option, params); }; var setValue = function (event, optionId, paramsProp) { var _a, _b, _c, _d; var source = paramsProp.source; var option = optionId === null ? null : options.find(function (option) { return option.id === optionId; }); if (option === undefined) { return; } var inputValue = ''; var params = tslib_1.__assign(tslib_1.__assign({}, inProps), { onChange: onChange }); if ((0, utils_1.isMultipleProps)(params) && (0, utils_1.isMultipleInternalValue)(valueState, multiple)) { if (option === null) { onChange === null || onChange === void 0 ? void 0 : onChange(event, null, { source: source }); } else { var value_1 = valueState !== null && valueState !== void 0 ? valueState : []; var optionIsSelected_1 = value_1.find(function (item) { return item.id === optionId; }); var result = (function () { if (optionIsSelected_1) { var options_1 = []; value_1.forEach(function (option) { if (option.id !== optionId) { options_1.push(option.raw); } }); return options_1; } if (option) { return tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(value_1.map(function (option) { return option.raw; })), false), [option.raw], false); } return value_1.map(function (option) { return option.raw; }); })(); (_a = params.onChange) === null || _a === void 0 ? void 0 : _a.call(params, event, result, { source: source }); } searchControl.deactivate(); } else if ((0, utils_1.isSingleProps)(params)) { inputValue = (_b = option === null || option === void 0 ? void 0 : option.label) !== null && _b !== void 0 ? _b : ''; (_c = params.onChange) === null || _c === void 0 ? void 0 : _c.call(params, event, (_d = option === null || option === void 0 ? void 0 : option.raw) !== null && _d !== void 0 ? _d : null, { source: source }); if (option) { searchControl.deactivate(); } } inputControl.setValue(null, inputValue); }; 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; return { value: valueState, setValue: setValue, hasValue: hasValue, selectedOptionsLength: selectedOptionsLength, }; }; exports.useAutocompleteBaseValue = useAutocompleteBaseValue;