@etsoo/materialui 1.5.62 → 1.5.63

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.
@@ -0,0 +1,11 @@
1
+ import { InputFieldProps } from "./InputField";
2
+ /**
3
+ * JSON data input component properties
4
+ */
5
+ export type JsonDataInputProps = Omit<InputFieldProps, "multiple">;
6
+ /**
7
+ * JSON data input component
8
+ * @param props - Component properties
9
+ * @returns JSX Element
10
+ */
11
+ export declare function JsonDataInput(props: JsonDataInputProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.JsonDataInput = JsonDataInput;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const react_1 = __importDefault(require("react"));
9
+ const InputField_1 = require("./InputField");
10
+ const ReactApp_1 = require("./app/ReactApp");
11
+ /**
12
+ * JSON data input component
13
+ * @param props - Component properties
14
+ * @returns JSX Element
15
+ */
16
+ function JsonDataInput(props) {
17
+ // Destruct
18
+ const { onChange, rows = 3, ...rest } = props;
19
+ // Global app
20
+ const app = (0, ReactApp_1.useRequiredAppContext)();
21
+ const jsonError = app.get("jsonDataError") ?? "JSON format error";
22
+ // Error message
23
+ const [error, setError] = react_1.default.useState();
24
+ // Layout
25
+ return ((0, jsx_runtime_1.jsx)(InputField_1.InputField, { multiline: true, rows: rows, ...rest, error: !!error, helperText: error, onChange: (e) => {
26
+ if (onChange) {
27
+ onChange(e);
28
+ if (e.isDefaultPrevented())
29
+ return;
30
+ }
31
+ const json = e.target.value;
32
+ if (json) {
33
+ try {
34
+ JSON.parse(json);
35
+ }
36
+ catch (e) {
37
+ setError(`${jsonError}: ${e instanceof Error ? e.message : String(e)}`);
38
+ return;
39
+ }
40
+ }
41
+ setError(undefined);
42
+ } }));
43
+ }
@@ -70,6 +70,7 @@ export * from "./InputField";
70
70
  export * from "./InputTipField";
71
71
  export * from "./IntInputField";
72
72
  export * from "./ItemList";
73
+ export * from "./JsonDataInput";
73
74
  export * from "./LineChart";
74
75
  export * from "./LinkEx";
75
76
  export * from "./ListChooser";
package/lib/cjs/index.js CHANGED
@@ -86,6 +86,7 @@ __exportStar(require("./InputField"), exports);
86
86
  __exportStar(require("./InputTipField"), exports);
87
87
  __exportStar(require("./IntInputField"), exports);
88
88
  __exportStar(require("./ItemList"), exports);
89
+ __exportStar(require("./JsonDataInput"), exports);
89
90
  __exportStar(require("./LineChart"), exports);
90
91
  __exportStar(require("./LinkEx"), exports);
91
92
  __exportStar(require("./ListChooser"), exports);
@@ -0,0 +1,11 @@
1
+ import { InputFieldProps } from "./InputField";
2
+ /**
3
+ * JSON data input component properties
4
+ */
5
+ export type JsonDataInputProps = Omit<InputFieldProps, "multiple">;
6
+ /**
7
+ * JSON data input component
8
+ * @param props - Component properties
9
+ * @returns JSX Element
10
+ */
11
+ export declare function JsonDataInput(props: JsonDataInputProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,37 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { InputField } from "./InputField";
4
+ import { useRequiredAppContext } from "./app/ReactApp";
5
+ /**
6
+ * JSON data input component
7
+ * @param props - Component properties
8
+ * @returns JSX Element
9
+ */
10
+ export function JsonDataInput(props) {
11
+ // Destruct
12
+ const { onChange, rows = 3, ...rest } = props;
13
+ // Global app
14
+ const app = useRequiredAppContext();
15
+ const jsonError = app.get("jsonDataError") ?? "JSON format error";
16
+ // Error message
17
+ const [error, setError] = React.useState();
18
+ // Layout
19
+ return (_jsx(InputField, { multiline: true, rows: rows, ...rest, error: !!error, helperText: error, onChange: (e) => {
20
+ if (onChange) {
21
+ onChange(e);
22
+ if (e.isDefaultPrevented())
23
+ return;
24
+ }
25
+ const json = e.target.value;
26
+ if (json) {
27
+ try {
28
+ JSON.parse(json);
29
+ }
30
+ catch (e) {
31
+ setError(`${jsonError}: ${e instanceof Error ? e.message : String(e)}`);
32
+ return;
33
+ }
34
+ }
35
+ setError(undefined);
36
+ } }));
37
+ }
@@ -70,6 +70,7 @@ export * from "./InputField";
70
70
  export * from "./InputTipField";
71
71
  export * from "./IntInputField";
72
72
  export * from "./ItemList";
73
+ export * from "./JsonDataInput";
73
74
  export * from "./LineChart";
74
75
  export * from "./LinkEx";
75
76
  export * from "./ListChooser";
package/lib/mjs/index.js CHANGED
@@ -70,6 +70,7 @@ export * from "./InputField";
70
70
  export * from "./InputTipField";
71
71
  export * from "./IntInputField";
72
72
  export * from "./ItemList";
73
+ export * from "./JsonDataInput";
73
74
  export * from "./LineChart";
74
75
  export * from "./LinkEx";
75
76
  export * from "./ListChooser";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etsoo/materialui",
3
- "version": "1.5.62",
3
+ "version": "1.5.63",
4
4
  "description": "TypeScript Material-UI Implementation",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/mjs/index.js",
@@ -40,14 +40,14 @@
40
40
  "@dnd-kit/sortable": "^10.0.0",
41
41
  "@emotion/react": "^11.14.0",
42
42
  "@emotion/styled": "^11.14.0",
43
- "@etsoo/appscript": "^1.6.39",
43
+ "@etsoo/appscript": "^1.6.41",
44
44
  "@etsoo/notificationbase": "^1.1.63",
45
45
  "@etsoo/react": "^1.8.49",
46
46
  "@etsoo/shared": "^1.2.75",
47
- "@mui/icons-material": "^7.1.1",
48
- "@mui/material": "^7.1.1",
49
- "@mui/x-data-grid": "^8.5.1",
50
- "chart.js": "^4.4.9",
47
+ "@mui/icons-material": "^7.1.2",
48
+ "@mui/material": "^7.1.2",
49
+ "@mui/x-data-grid": "^8.5.3",
50
+ "chart.js": "^4.5.0",
51
51
  "chartjs-plugin-datalabels": "^2.2.0",
52
52
  "dompurify": "^3.2.6",
53
53
  "eventemitter3": "^5.0.1",
@@ -84,6 +84,6 @@
84
84
  "@vitejs/plugin-react": "^4.5.2",
85
85
  "jsdom": "^26.1.0",
86
86
  "typescript": "^5.8.3",
87
- "vitest": "^3.2.3"
87
+ "vitest": "^3.2.4"
88
88
  }
89
89
  }
@@ -0,0 +1,56 @@
1
+ import React from "react";
2
+ import { InputField, InputFieldProps } from "./InputField";
3
+ import { useRequiredAppContext } from "./app/ReactApp";
4
+
5
+ /**
6
+ * JSON data input component properties
7
+ */
8
+ export type JsonDataInputProps = Omit<InputFieldProps, "multiple">;
9
+
10
+ /**
11
+ * JSON data input component
12
+ * @param props - Component properties
13
+ * @returns JSX Element
14
+ */
15
+ export function JsonDataInput(props: JsonDataInputProps) {
16
+ // Destruct
17
+ const { onChange, rows = 3, ...rest } = props;
18
+
19
+ // Global app
20
+ const app = useRequiredAppContext();
21
+ const jsonError = app.get("jsonDataError") ?? "JSON format error";
22
+
23
+ // Error message
24
+ const [error, setError] = React.useState<string>();
25
+
26
+ // Layout
27
+ return (
28
+ <InputField
29
+ multiline
30
+ rows={rows}
31
+ {...rest}
32
+ error={!!error}
33
+ helperText={error}
34
+ onChange={(e) => {
35
+ if (onChange) {
36
+ onChange(e);
37
+ if (e.isDefaultPrevented()) return;
38
+ }
39
+
40
+ const json = e.target.value;
41
+ if (json) {
42
+ try {
43
+ JSON.parse(json);
44
+ } catch (e) {
45
+ setError(
46
+ `${jsonError}: ${e instanceof Error ? e.message : String(e)}`
47
+ );
48
+ return;
49
+ }
50
+ }
51
+
52
+ setError(undefined);
53
+ }}
54
+ />
55
+ );
56
+ }
package/src/index.ts CHANGED
@@ -76,6 +76,7 @@ export * from "./InputField";
76
76
  export * from "./InputTipField";
77
77
  export * from "./IntInputField";
78
78
  export * from "./ItemList";
79
+ export * from "./JsonDataInput";
79
80
  export * from "./LineChart";
80
81
  export * from "./LinkEx";
81
82
  export * from "./ListChooser";