UNPKG

@sparklink-pro/apant

Version:

Apollo & Antd tools

44 lines 2.07 kB
import { __awaiter, __rest } from "tslib"; import { useEffect, useState } from 'react'; import { isFunction } from 'lodash-es'; import { useConfiguration } from './useConfiguration'; import { useRegistry } from './useRegistry'; import { useTypeAdminConfiguration } from './useTypeAdminConfiguration'; /** * Columns can have async filters definition */ const initializeColumns = (cols, params) => __awaiter(void 0, void 0, void 0, function* () { const columns = isFunction(cols) ? yield cols(params) : cols; return Promise.all(columns.map((column) => __awaiter(void 0, void 0, void 0, function* () { let { filters } = column; if (isFunction(filters)) { filters = yield filters(params); } return Object.assign(Object.assign({}, column), { filters }); }))); }); // This hook returns the admin config for the given type. export function useTypeAdmin({ type, context }) { var _a; const registry = useRegistry(); const admin = useTypeAdminConfiguration({ type }); const columnTitleCallback = (_a = useConfiguration().admin) === null || _a === void 0 ? void 0 : _a.columnTitleCallback; const [loading, setLoading] = useState(true); const [columns, setColumns] = useState([]); const params = { type, registry, context }; const loadColumns = () => __awaiter(this, void 0, void 0, function* () { setLoading(true); const cols = (admin === null || admin === void 0 ? void 0 : admin.columns) ? yield initializeColumns(admin.columns, params) : []; setColumns(cols.map((_a) => { var { title } = _a, col = __rest(_a, ["title"]); return (Object.assign(Object.assign({}, col), { title: columnTitleCallback && title ? columnTitleCallback(type, title) : title })); })); setLoading(false); }); useEffect(() => { loadColumns(); }, [type, context]); return Object.assign(Object.assign({}, admin), { loading, columns: loading ? [] : columns }); } export default useTypeAdmin; //# sourceMappingURL=useTypeAdmin.js.map