@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 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;
@@ -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 generate(jsonSchema, filename, outputDirectory) {
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.1.1",
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 Config {
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: 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,2 @@
1
+ import { Loader } from "../types/core";
2
+ export declare const dataGridLoader: Loader;
@@ -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 Config {
16
- loader: 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: Config): DataGridFetchingResult<any>;
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);