infinity-forge
Version:
64 lines • 3.81 kB
JavaScript
;
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