@itwin/presentation-components
Version:
React components based on iTwin.js Presentation library
39 lines • 1.68 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
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.useTableOptions = useTableOptions;
const react_1 = require("react");
const presentation_common_1 = require("@itwin/presentation-common");
/** @internal */
function useTableOptions(props) {
const { columns } = props;
const [options, setOptions] = (0, react_1.useState)({});
(0, react_1.useEffect)(() => {
setOptions({});
}, [columns]);
const sort = (0, react_1.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 ? presentation_common_1.SortDirection.Descending : presentation_common_1.SortDirection.Ascending,
},
}));
}, [columns]);
const filter = (0, react_1.useCallback)((filterExpression) => {
setOptions((prev) => ({ ...prev, fieldsFilterExpression: filterExpression }));
}, []);
return { options, sort, filter };
}
//# sourceMappingURL=UseTableOptions.js.map