@itwin/presentation-components
Version:
React components based on iTwin.js Presentation library
36 lines • 1.48 kB
JavaScript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
/** @packageDocumentation
* @module Internal
*/
import { useCallback, useEffect, useState } from "react";
import { SortDirection } from "@itwin/presentation-common";
/** @internal */
export function useTableOptions(props) {
const { columns } = props;
const [options, setOptions] = useState({});
useEffect(() => {
setOptions({});
}, [columns]);
const sort = useCallback((columnName, descending) => {
const field = columns?.find((column) => column.name === columnName)?.field;
if (!field) {
setOptions((prev) => ({ ...prev, sorting: undefined }));
return;
}
setOptions((prev) => ({
...prev,
sorting: {
field: field.getFieldDescriptor(),
direction: descending ? SortDirection.Descending : SortDirection.Ascending,
},
}));
}, [columns]);
const filter = useCallback((filterExpression) => {
setOptions((prev) => ({ ...prev, fieldsFilterExpression: filterExpression }));
}, []);
return { options, sort, filter };
}
//# sourceMappingURL=UseTableOptions.js.map