@veracity/vui
Version:
Veracity UI is a React component library crafted for use within Veracity applications and pages. Based on Styled Components and @xstyled.
41 lines (39 loc) • 1.01 kB
JavaScript
import { useCallbackRef, useControlled } from "../utils/react.js";
//#region src/table/useTable.ts
const sortOrders = [
"asc",
"desc",
null
];
const defaultSortOrder = sortOrders[0];
function getNextOrder(order) {
const next = sortOrders.indexOf(order) + 1;
return sortOrders[next] !== void 0 ? sortOrders[next] : defaultSortOrder;
}
/** Handles controlled/uncontrolled sort of the Table rows. */
function useTable(props) {
const { defaultSort = {
key: "",
order: defaultSortOrder
}, onSortChange: onSortChangeProp, sort: value } = props;
const [sort, onChange, { isControlled }] = useControlled({
defaultValue: defaultSort,
onChange: onSortChangeProp,
value
});
return {
isControlled,
onSortChange: useCallbackRef((key) => {
const order = sort.key === key ? getNextOrder(sort.order) : defaultSortOrder;
onChange({
key,
order
});
}),
sort
};
}
//#endregion
export { useTable as default };
globalThis.__vuiVersion__ = "5.3.1"
//# sourceMappingURL=useTable.js.map