@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
36 lines (35 loc) • 1.26 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const isItemSelected = (item, newItem) => {
const selectionKey = item?.id ? "id" : "label";
const selectionElement = item?.[selectionKey];
return newItem[selectionKey] === selectionElement;
};
const parseList = (item, props, selectAll, list = []) => {
const { multiSelect, selectable, singleSelectionToggle } = props || {};
let anySelected = false;
const newList = list.map((elem) => {
const newItem = { ...elem };
if (!multiSelect) {
newItem.selected = false;
}
const selectItem = item ? isItemSelected(item, newItem) : elem?.selected;
if (selectItem && selectable) {
let selectionState;
if (multiSelect) {
selectionState = item ? !elem?.selected : true;
} else {
selectionState = !anySelected && (item && singleSelectionToggle ? !elem?.selected : true);
}
newItem.selected = selectionState;
anySelected = true;
}
if (typeof selectAll === "boolean" && !elem?.disabled)
newItem.selected = selectAll;
if (!newItem?.selected) newItem.selected = false;
return newItem;
});
return newList;
};
exports.isItemSelected = isItemSelected;
exports.parseList = parseList;