@uxf/data-grid 11.1.1 → 11.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_generator/cli.js +5 -4
- package/_generator/index.js +83 -3
- package/package.json +3 -1
- package/use-data-grid-control/use-data-grid-control.d.ts +2 -3
- package/use-data-grid-fetching/loader.d.ts +2 -0
- package/use-data-grid-fetching/loader.js +8 -0
- package/use-data-grid-fetching/use-data-grid-fetching.d.ts +3 -3
- package/use-data-grid-fetching/use-data-grid-fetching.js +2 -1
package/_generator/cli.js
CHANGED
|
@@ -8,20 +8,21 @@ Usage:
|
|
|
8
8
|
uxf-data-grid-generator [options]
|
|
9
9
|
`);
|
|
10
10
|
})
|
|
11
|
-
.option("s", { alias: "schemaDirectory" })
|
|
12
|
-
.option("o", { alias: "outputDirectory" })
|
|
11
|
+
.option("s", { alias: "schemaDirectory", type: "string" })
|
|
12
|
+
.option("o", { alias: "outputDirectory", type: "string" })
|
|
13
|
+
.option("l", { alias: "requiredLoader", type: "boolean" })
|
|
13
14
|
.option("h", { alias: "help", group: "Options" })
|
|
14
15
|
.strict(false)
|
|
15
16
|
.exitProcess(false);
|
|
16
17
|
|
|
17
18
|
try {
|
|
18
|
-
const { help, schemaDirectory, outputDirectory } = cli.parse(argv.slice(2));
|
|
19
|
+
const { help, schemaDirectory, outputDirectory, requiredLoader } = cli.parse(argv.slice(2));
|
|
19
20
|
|
|
20
21
|
if (Boolean(help)) {
|
|
21
22
|
return 0;
|
|
22
23
|
}
|
|
23
24
|
|
|
24
|
-
await require("./index")(schemaDirectory, outputDirectory);
|
|
25
|
+
await require("./index")(schemaDirectory, outputDirectory, requiredLoader);
|
|
25
26
|
} catch (e) {
|
|
26
27
|
console.error(e);
|
|
27
28
|
return 1;
|
package/_generator/index.js
CHANGED
|
@@ -21,7 +21,83 @@ import json from "${schemaRelativeImport}";
|
|
|
21
21
|
export const dataGridSchema_${camelize(gridName)}: Schema<any> = json as any;`;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
function
|
|
24
|
+
function generateUseDataGridControl(gridName) {
|
|
25
|
+
return `import { useDataGridControl, UseDataGridControlConfig } from "@uxf/data-grid/use-data-grid-control";
|
|
26
|
+
import { dataGridSchema_${camelize(gridName)} as schema } from "./schema";
|
|
27
|
+
|
|
28
|
+
export function useDataGridControl_${camelize(gridName)}(config: Omit<UseDataGridControlConfig, "schema">) {
|
|
29
|
+
return useDataGridControl({
|
|
30
|
+
schema,
|
|
31
|
+
...config,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
`;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function generateUseDataGridFetching(gridName, isLoaderRequired) {
|
|
38
|
+
return `import { Loader } from "@uxf/data-grid/types/core";
|
|
39
|
+
import { useDataGridFetching, UseDataGridFetchingConfig } from "@uxf/data-grid/use-data-grid-fetching";
|
|
40
|
+
import { dataGridSchema_${camelize(gridName)} as schema } from "./schema";
|
|
41
|
+
|
|
42
|
+
export function useDataGridFetching_${camelize(gridName)}(
|
|
43
|
+
config: Omit<UseDataGridFetchingConfig, "gridName" | "loader" | "schema"> & { loader${
|
|
44
|
+
isLoaderRequired ? "" : "?"
|
|
45
|
+
}: Loader },
|
|
46
|
+
) {
|
|
47
|
+
return useDataGridFetching({ gridName: "${gridName}", schema, ...config });
|
|
48
|
+
}
|
|
49
|
+
`;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function generateDataGridFile(gridName, isLoaderRequired) {
|
|
53
|
+
return `import { Nullish } from "@uxf/core/types";
|
|
54
|
+
import { DataGrid, DataGridProps, DataGridUserConfig, Loader, Request } from "@uxf/data-grid";
|
|
55
|
+
import { useDataGridControl } from "@uxf/data-grid/use-data-grid-control";
|
|
56
|
+
import { useDataGridFetching } from "@uxf/data-grid/use-data-grid-fetching";
|
|
57
|
+
import React from "react";
|
|
58
|
+
import { dataGridSchema_${camelize(gridName)} as schema } from "./schema";
|
|
59
|
+
|
|
60
|
+
type Props = Omit<
|
|
61
|
+
DataGridProps<any, any>,
|
|
62
|
+
"gridName" | "schema" | "state" | "actions" | "data" | "isLoading" | "onReload"
|
|
63
|
+
> & {
|
|
64
|
+
loader${isLoaderRequired ? "" : "?"}: Loader;
|
|
65
|
+
initialUserConfig?: DataGridUserConfig | Nullish;
|
|
66
|
+
initialState?: Request | string | Nullish;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export function DataGrid_${camelize(gridName)}(props: Props) {
|
|
70
|
+
const { state, actions } = useDataGridControl({
|
|
71
|
+
schema,
|
|
72
|
+
initialState: props.initialState,
|
|
73
|
+
initialUserConfig: props.initialUserConfig,
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
const { data, error, onReload, isLoading } = useDataGridFetching({
|
|
77
|
+
gridName: "${gridName}",
|
|
78
|
+
schema,
|
|
79
|
+
state,
|
|
80
|
+
loader: props.loader,
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
return (
|
|
84
|
+
<DataGrid<any>
|
|
85
|
+
state={state}
|
|
86
|
+
actions={actions}
|
|
87
|
+
data={data}
|
|
88
|
+
isLoading={isLoading}
|
|
89
|
+
error={error}
|
|
90
|
+
onReload={onReload}
|
|
91
|
+
{...props}
|
|
92
|
+
gridName="admin-club"
|
|
93
|
+
schema={schema}
|
|
94
|
+
/>
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
`;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function generate(jsonSchema, filename, outputDirectory, isLoaderRequired) {
|
|
25
101
|
const gridName = parse(filename).name;
|
|
26
102
|
const generatedPath = join(process.cwd(), outputDirectory, gridName);
|
|
27
103
|
|
|
@@ -31,10 +107,14 @@ function generate(jsonSchema, filename, outputDirectory) {
|
|
|
31
107
|
generatedSchemaFilename,
|
|
32
108
|
generateSchemaFile(gridName, relative(dirname(generatedSchemaFilename), filename)),
|
|
33
109
|
);
|
|
110
|
+
|
|
111
|
+
writeFile(`${generatedPath}/data-grid.tsx`, generateDataGridFile(gridName, isLoaderRequired));
|
|
112
|
+
writeFile(`${generatedPath}/use-data-grid-control.ts`, generateUseDataGridControl(gridName));
|
|
113
|
+
writeFile(`${generatedPath}/use-data-grid-fetching.ts`, generateUseDataGridFetching(gridName, isLoaderRequired));
|
|
34
114
|
}
|
|
35
115
|
|
|
36
|
-
module.exports = (schemaDirectory, outputDirectory) => {
|
|
116
|
+
module.exports = (schemaDirectory, outputDirectory, requiredLoader) => {
|
|
37
117
|
globSync(schemaDirectory + "/*.json")
|
|
38
118
|
.map((path) => process.cwd() + "/" + path)
|
|
39
|
-
.forEach((filename) => generate(readFileSync(filename), filename, outputDirectory));
|
|
119
|
+
.forEach((filename) => generate(readFileSync(filename), filename, outputDirectory, requiredLoader));
|
|
40
120
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uxf/data-grid",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.2.3",
|
|
4
4
|
"description": "UXF DataGrid",
|
|
5
5
|
"homepage": "https://gitlab.com/uxf-npm/data-grid#readme",
|
|
6
6
|
"main": "index.js",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"dev": "next dev",
|
|
26
26
|
"build": "tsc -P tsconfig.json",
|
|
27
27
|
"gen:icons": "icons-gen",
|
|
28
|
+
"gen:data-grid": "node bin/uxf-data-grid-generator.js -s _generator/test/data-grid-schema -o _generator/test/data-grid --requiredLoader",
|
|
28
29
|
"lint": "./node_modules/.bin/eslint -c .eslintrc.js \"./**/*.ts*\"",
|
|
29
30
|
"test": "npm run-script typecheck",
|
|
30
31
|
"typecheck": "tsc --noEmit --skipLibCheck"
|
|
@@ -33,6 +34,7 @@
|
|
|
33
34
|
"@uxf/ui": "11.1.0",
|
|
34
35
|
"dayjs": "1.11.10",
|
|
35
36
|
"fast-glob": "^3.3.2",
|
|
37
|
+
"qs": "6.11.2",
|
|
36
38
|
"react-data-grid": "7.0.0-beta.39",
|
|
37
39
|
"yargs": "^17.7.2"
|
|
38
40
|
},
|
|
@@ -2,13 +2,13 @@ import { Nullish } from "@uxf/core/types";
|
|
|
2
2
|
import { Request } from "../types/api";
|
|
3
3
|
import { Schema } from "../types/schema";
|
|
4
4
|
import { DataGridUserConfig } from "../types/state";
|
|
5
|
-
interface
|
|
5
|
+
export interface UseDataGridControlConfig {
|
|
6
6
|
schema: Schema<any>;
|
|
7
7
|
initialState?: Request | string | Nullish;
|
|
8
8
|
isDebug?: boolean;
|
|
9
9
|
initialUserConfig?: DataGridUserConfig | Nullish;
|
|
10
10
|
}
|
|
11
|
-
export declare function useDataGridControl(config:
|
|
11
|
+
export declare function useDataGridControl(config: UseDataGridControlConfig): {
|
|
12
12
|
state: import("../types/state").DataGridState;
|
|
13
13
|
actions: {
|
|
14
14
|
changePage: (page: number) => void;
|
|
@@ -24,4 +24,3 @@ export declare function useDataGridControl(config: Config): {
|
|
|
24
24
|
};
|
|
25
25
|
};
|
|
26
26
|
export type DataGridControl = ReturnType<typeof useDataGridControl>;
|
|
27
|
-
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dataGridLoader = void 0;
|
|
4
|
+
const qs_1 = require("qs");
|
|
5
|
+
const dataGridLoader = (gridName, request) => {
|
|
6
|
+
return fetch(`/api/cms/datagrid/${gridName}?${(0, qs_1.stringify)(request)}`).then((response) => response.json());
|
|
7
|
+
};
|
|
8
|
+
exports.dataGridLoader = dataGridLoader;
|
|
@@ -12,11 +12,11 @@ export interface DataGridFetchingResult<Row> {
|
|
|
12
12
|
data: Response<Row> | null;
|
|
13
13
|
onReload: () => void;
|
|
14
14
|
}
|
|
15
|
-
interface
|
|
16
|
-
loader
|
|
15
|
+
export interface UseDataGridFetchingConfig {
|
|
16
|
+
loader?: Loader;
|
|
17
17
|
schema: Schema<any>;
|
|
18
18
|
gridName: string;
|
|
19
19
|
state: DataGridControl["state"];
|
|
20
20
|
}
|
|
21
|
-
export declare function useDataGridFetching(config:
|
|
21
|
+
export declare function useDataGridFetching(config: UseDataGridFetchingConfig): DataGridFetchingResult<any>;
|
|
22
22
|
export {};
|
|
@@ -3,8 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.useDataGridFetching = void 0;
|
|
4
4
|
const react_1 = require("react");
|
|
5
5
|
const utils_1 = require("../utils");
|
|
6
|
+
const loader_1 = require("./loader");
|
|
6
7
|
function useDataGridFetching(config) {
|
|
7
|
-
const { state, schema, loader, gridName } = config;
|
|
8
|
+
const { state, schema, loader = loader_1.dataGridLoader, gridName } = config;
|
|
8
9
|
const [isLoading, setIsLoading] = (0, react_1.useState)(false);
|
|
9
10
|
const [error, setError] = (0, react_1.useState)(null);
|
|
10
11
|
const [data, setData] = (0, react_1.useState)(null);
|