@rws-air/utils
Version:
Utilities for rws-air libraries and applications
41 lines • 1.35 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.stableTableSort = void 0;
const lodash_orderby_1 = __importDefault(require("lodash.orderby"));
/**
* Stabily sorts an array of objects using lodash.orderby
* @param array Array of objects to order
* @param orderBy Key to order by
* @param order Order ascending or descending
* @param headerMapping Mapping of table headers for sorting on nested properties
* @example
* ```typescript
* interface ArrType {
* key: string;
* prop: string;
* }
*
* const arr: ArrType[] = [
* { key: '1', prop: '2' },
* { key: '4', prop: '4' }
* ];
*
* const mappings: Map<keyof ArrType, string> = new Map(
* [
* [ 'key', ((type: ArrType) => type.key.toString()) as unknown as string ],
* [ 'prop', ((type: ArrType) => type.prop) as unknown as string ]
* ]
* );
*
* stableTableSort(arr, 'key', 'asc', mappings);
* ```
*/
function stableTableSort(array, orderBy, order, headerMapping) {
const orderValue = headerMapping.get(orderBy);
return (0, lodash_orderby_1.default)(array, [orderValue], [order]);
}
exports.stableTableSort = stableTableSort;
//# sourceMappingURL=StableTableSort.js.map