UNPKG

@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
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