apollo-form
Version:
Form state manager
50 lines (49 loc) • 1.56 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const useField_1 = __importDefault(require("./useField"));
const isProd = process.env.NODE_ENV === 'production';
function useFieldArray(props) {
const field = useField_1.default({
name: props.name,
validate: props.validate,
});
if (!Array.isArray(field.value) && isProd) {
console.warn(props.name + ' is not array');
}
const push = (...args) => {
field.setFieldValue([...field.value, ...args]);
};
const removeAt = (index) => {
const newArr = [...field.value];
newArr.splice(index, 1);
field.setFieldValue(newArr);
};
const insertAt = (index, ...args) => {
const newArr = [...field.value];
newArr.splice(index, 0, ...args);
field.setFieldValue(newArr);
};
const pop = () => {
const newArr = [...field.value];
newArr.pop();
field.setFieldValue(newArr);
};
const swap = (index1, index2) => {
const newArr = [...field.value];
[newArr[index1], newArr[index2]] = [newArr[index2], newArr[index1]];
field.setFieldValue(newArr);
};
const clear = () => {
field.setFieldValue([]);
};
return Object.assign(Object.assign({}, field), { push,
removeAt,
insertAt,
pop,
swap,
clear });
}
exports.default = useFieldArray;