UNPKG

@itwin/presentation-components

Version:

React components based on iTwin.js Presentation library

36 lines 1.48 kB
/*--------------------------------------------------------------------------------------------- * 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