49 lines
2.0 KiB
JavaScript
49 lines
2.0 KiB
JavaScript
// Generated, do not edit. sha256:3da7d727d9cd395ad6f678ed5763ee67308c18ed602c6296f49806e3a2cada5f
|
|
export function initialState(cfg) {
|
|
const columnExists = key => !!key && cfg.columns.some(c => c.key === key);
|
|
const groupable = key => !!key && cfg.columns.some(c => c.key === key && c.group);
|
|
const usableSort = s => ((s && columnExists(s.key)) ? { ...s } : null);
|
|
return {
|
|
sort: usableSort(cfg.sort) || usableSort(cfg.defaultSort),
|
|
groupKey: groupable(cfg.group) ? cfg.group : null,
|
|
groupKey2: groupable(cfg.group2) ? cfg.group2 : null,
|
|
groupKey3: groupable(cfg.group3) ? cfg.group3 : null,
|
|
groupFilter: cfg.groupFilter ? { ...cfg.groupFilter } : {},
|
|
groupCollapsed: cfg.groupCollapsed ? { ...cfg.groupCollapsed } : {},
|
|
sticky: cfg.sticky ? { ...cfg.sticky } : null,
|
|
};
|
|
}
|
|
|
|
export function chooseGroup(keys, level, value) {
|
|
let { groupKey, groupKey2, groupKey3 } = keys;
|
|
const v = value || null;
|
|
if (level === 1) {
|
|
groupKey = v;
|
|
if (!groupKey) { groupKey2 = null; groupKey3 = null; }
|
|
else { if (groupKey2 === groupKey) groupKey2 = null; if (groupKey3 === groupKey) groupKey3 = null; }
|
|
} else if (level === 2) {
|
|
groupKey2 = v;
|
|
if (!groupKey2) groupKey3 = null;
|
|
else if (groupKey3 === groupKey2) groupKey3 = null;
|
|
} else if (level === 3) {
|
|
groupKey3 = v;
|
|
}
|
|
return { groupKey, groupKey2, groupKey3 };
|
|
}
|
|
|
|
export function revealGroup({ groupKey, groupFilter, groupCollapsed }, token) {
|
|
if (!groupKey) return { groupFilter, groupCollapsed, changed: false };
|
|
let changed = false;
|
|
const hidden = groupFilter[groupKey] || [];
|
|
if (hidden.includes(token)) {
|
|
groupFilter = { ...groupFilter, [groupKey]: hidden.filter(t => t !== token) };
|
|
changed = true;
|
|
}
|
|
const collapsed = groupCollapsed[groupKey] || [];
|
|
if (collapsed.includes(token)) {
|
|
groupCollapsed = { ...groupCollapsed, [groupKey]: collapsed.filter(t => t !== token) };
|
|
changed = true;
|
|
}
|
|
return { groupFilter, groupCollapsed, changed };
|
|
}
|