kwikid-forms
Version:
KwikID's JSON Configuration based Forms Renderer and Builder
27 lines • 4.2 kB
JavaScript
import _ from "lodash";
export const removeField = (fields, fieldKey) => {
fields = fields.filter((row) => {
return row.key !== fieldKey;
});
return fields;
};
export const getFieldIndex = (fields, identifier) => {
return fields.findIndex((row) => row.key === identifier);
};
export const findModifiedKeys = (defaultJson, modifiedJson, currentPath = "") => {
return _.reduce(modifiedJson, (result, value, key) => {
const path = currentPath ? `${currentPath}.${key}` : key;
const defaultValue = defaultJson[key];
if (_.isObject(value) && _.isObject(defaultValue)) {
const nestedResult = findModifiedKeys(defaultValue, value, path);
if (!_.isEmpty(nestedResult)) {
result[key] = nestedResult;
}
}
else if (!_.isEqual(value, defaultValue)) {
result[key] = value;
}
return result;
}, {});
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci1mb3JtLWVkaXRvci5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9idWlsZGVyL2J1aWxkZXItZm9ybS1lZGl0b3IvYnVpbGRlci1mb3JtLWVkaXRvci5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRXZCLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQWEsRUFBRSxRQUFnQixFQUFPLEVBQUU7SUFDbEUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUM3QixPQUFPLEdBQUcsQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFDO0lBQzlCLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBYSxFQUFFLFVBQWUsRUFBVSxFQUFFO0lBQ3RFLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxVQUFVLENBQUMsQ0FBQztBQUMzRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUM5QixXQUFnQixFQUNoQixZQUFpQixFQUNqQixXQUFXLEdBQUcsRUFBRSxFQUNYLEVBQUU7SUFDUCxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQ2IsWUFBWSxFQUNaLENBQUMsTUFBVyxFQUFFLEtBQVUsRUFBRSxHQUFXLEVBQUUsRUFBRTtRQUN2QyxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDekQsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXRDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ2pELE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQzVCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUM7YUFDNUI7U0FDRjthQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsRUFBRTtZQUMxQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQ3JCO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxFQUNELEVBQUUsQ0FDSCxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSBcImxvZGFzaFwiO1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlRmllbGQgPSAoZmllbGRzOiBhbnlbXSwgZmllbGRLZXk6IHN0cmluZyk6IGFueSA9PiB7XG4gIGZpZWxkcyA9IGZpZWxkcy5maWx0ZXIoKHJvdykgPT4ge1xuICAgIHJldHVybiByb3cua2V5ICE9PSBmaWVsZEtleTtcbiAgfSk7XG5cbiAgcmV0dXJuIGZpZWxkcztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZEluZGV4ID0gKGZpZWxkczogYW55W10sIGlkZW50aWZpZXI6IGFueSk6IG51bWJlciA9PiB7XG4gIHJldHVybiBmaWVsZHMuZmluZEluZGV4KChyb3cpID0+IHJvdy5rZXkgPT09IGlkZW50aWZpZXIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRNb2RpZmllZEtleXMgPSAoXG4gIGRlZmF1bHRKc29uOiBhbnksXG4gIG1vZGlmaWVkSnNvbjogYW55LFxuICBjdXJyZW50UGF0aCA9IFwiXCJcbik6IGFueSA9PiB7XG4gIHJldHVybiBfLnJlZHVjZShcbiAgICBtb2RpZmllZEpzb24sXG4gICAgKHJlc3VsdDogYW55LCB2YWx1ZTogYW55LCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcGF0aCA9IGN1cnJlbnRQYXRoID8gYCR7Y3VycmVudFBhdGh9LiR7a2V5fWAgOiBrZXk7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBkZWZhdWx0SnNvbltrZXldO1xuXG4gICAgICBpZiAoXy5pc09iamVjdCh2YWx1ZSkgJiYgXy5pc09iamVjdChkZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IG5lc3RlZFJlc3VsdCA9IGZpbmRNb2RpZmllZEtleXMoZGVmYXVsdFZhbHVlLCB2YWx1ZSwgcGF0aCk7XG4gICAgICAgIGlmICghXy5pc0VtcHR5KG5lc3RlZFJlc3VsdCkpIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IG5lc3RlZFJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghXy5pc0VxdWFsKHZhbHVlLCBkZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSxcbiAgICB7fVxuICApO1xufTtcbiJdfQ==