UNPKG

infinity-forge

Version:
64 lines 3.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.selectState = selectState; var react_1 = require("react"); function selectState(_a) { var _b; var selectPropsInfinityForge = _a.selectPropsInfinityForge, field = _a.field, options = _a.options, utils = _a.utils, state = _a.state, setOptions = _a.setOptions; var valueExternalSelect = selectPropsInfinityForge.value !== undefined ? selectPropsInfinityForge.value : undefined; var isMultiple = !selectPropsInfinityForge.onlyOneValue; var fieldValue = isMultiple ? Array.isArray(field.value) ? field.value : field.value !== undefined && field.value !== null ? [field.value] : [] : (_b = field.value) !== null && _b !== void 0 ? _b : null; (0, react_1.useEffect)(function () { if (valueExternalSelect) { utils.setValue(valueExternalSelect); } }, [valueExternalSelect]); (0, react_1.useEffect)(function () { var _a, _b; if (selectPropsInfinityForge.controlledInitialValue) { utils.setValue((_a = selectPropsInfinityForge.controlledInitialValue) === null || _a === void 0 ? void 0 : _a.value); selectPropsInfinityForge.onChangeInput && selectPropsInfinityForge.onChangeInput((_b = selectPropsInfinityForge.controlledInitialValue) === null || _b === void 0 ? void 0 : _b.value, function () { var _a; return utils.setValue((_a = selectPropsInfinityForge.controlledInitialValue) === null || _a === void 0 ? void 0 : _a.value); }, { state: state, utils: utils }); } }, [selectPropsInfinityForge.controlledInitialValue]); (0, react_1.useEffect)(function () { var _a; if (selectPropsInfinityForge.options && selectPropsInfinityForge.options.length > 0) { setOptions(selectPropsInfinityForge.options); var allOptionValues_1 = selectPropsInfinityForge.isGroup ? selectPropsInfinityForge.options.flatMap(function (group) { return group.options.map(function (o) { return o.value; }); }) : selectPropsInfinityForge.options.map(function (o) { return o.value; }); var currentValues = Array.isArray(field.value) ? field.value : field.value !== undefined && field.value !== null ? [field.value] : []; var filteredValues = currentValues.filter(function (val) { return allOptionValues_1.includes(val); }); if (filteredValues.length !== currentValues.length) { var newValue = selectPropsInfinityForge.onlyOneValue ? (_a = filteredValues[0]) !== null && _a !== void 0 ? _a : null : filteredValues; utils.setValue(newValue); } } }, [selectPropsInfinityForge.options]); var value; if (isMultiple) { value = selectPropsInfinityForge.isGroup ? fieldValue.map(function (defaultValueForm) { var _a, _b; return (_b = (_a = options .find(function (option) { var _a; return (_a = option.options) === null || _a === void 0 ? void 0 : _a.some(function (o) { return o.value === defaultValueForm; }); })) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.find(function (opt) { return opt.value === defaultValueForm; }); }) : fieldValue.map(function (valueForm) { return options.find(function (option) { return option.value === valueForm; }); }); } else { value = [options.find(function (option) { return option.value === fieldValue; }) || null]; } return { value: value, valueExternalSelect: valueExternalSelect }; } //# sourceMappingURL=use-select-state.js.map