@etsoo/materialui 1.5.80 → 1.5.81

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.
@@ -23,13 +23,13 @@ jobs:
23
23
  steps:
24
24
  # https://github.com/actions/checkout, This action checks-out your repository under $GITHUB_WORKSPACE
25
25
  # so your workflow can access it.
26
- - uses: actions/checkout@v4
26
+ - uses: actions/checkout@v5
27
27
 
28
28
  # Set up your GitHub Actions workflow with a specific version of node.js
29
29
  # Setup .npmrc file to publish to npm
30
- - uses: actions/setup-node@v4
30
+ - uses: actions/setup-node@v6
31
31
  with:
32
- node-version: "20.x"
32
+ node-version: "24.11"
33
33
  registry-url: "https://registry.npmjs.org"
34
34
 
35
35
  # Named after Continuous Integration, installs dependencies directly from package-lock.json
@@ -8,12 +8,6 @@ import {
8
8
  import React from "react";
9
9
  import { GridMethodRef } from "@etsoo/react";
10
10
 
11
- globalThis.ResizeObserver = vi.fn().mockImplementation(() => ({
12
- observe: vi.fn(),
13
- unobserve: vi.fn(),
14
- disconnect: vi.fn()
15
- }));
16
-
17
11
  type Data = {
18
12
  id: number;
19
13
  name: string;
@@ -12,7 +12,10 @@ const TextField_1 = __importDefault(require("@mui/material/TextField"));
12
12
  */
13
13
  function EmailInput(props) {
14
14
  // Destruct
15
- const { slotProps, ...rest } = props;
15
+ const { slotProps, autoCapitalize = "none", autoCorrect = "off", autoComplete = "email", fullWidth = true, name = "email", ...rest } = props;
16
16
  // Layout
17
- return ((0, jsx_runtime_1.jsx)(TextField_1.default, { type: "email", fullWidth: true, slotProps: { htmlInput: { maxLength: 128 }, ...slotProps }, ...rest }));
17
+ return ((0, jsx_runtime_1.jsx)(TextField_1.default, { type: "email", autoCapitalize: autoCapitalize, autoCorrect: autoCorrect, autoComplete: autoComplete, fullWidth: fullWidth, name: name, slotProps: {
18
+ htmlInput: { inputMode: "email", maxLength: 128 },
19
+ ...slotProps
20
+ }, ...rest }));
18
21
  }
@@ -0,0 +1,10 @@
1
+ import { TextFieldProps } from "@mui/material/TextField";
2
+ /**
3
+ * Mobile input props
4
+ */
5
+ export type MobileInputProps = Omit<TextFieldProps, "type"> & {};
6
+ /**
7
+ * Mobile input
8
+ * @param props Props
9
+ */
10
+ export declare function MobileInput(props: MobileInputProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,21 @@
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.MobileInput = MobileInput;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const TextField_1 = __importDefault(require("@mui/material/TextField"));
9
+ /**
10
+ * Mobile input
11
+ * @param props Props
12
+ */
13
+ function MobileInput(props) {
14
+ // Destruct
15
+ const { slotProps, autoCapitalize = "none", autoCorrect = "off", autoComplete = "mobile", fullWidth = true, name = "mobile", ...rest } = props;
16
+ // Layout
17
+ return ((0, jsx_runtime_1.jsx)(TextField_1.default, { type: "tel", autoCapitalize: autoCapitalize, autoCorrect: autoCorrect, autoComplete: autoComplete, fullWidth: fullWidth, name: name, slotProps: {
18
+ htmlInput: { inputMode: "tel", maxLength: 18 },
19
+ ...slotProps
20
+ }, ...rest }));
21
+ }
@@ -0,0 +1,10 @@
1
+ import { TextFieldProps } from "@mui/material/TextField";
2
+ /**
3
+ * Phone input props
4
+ */
5
+ export type PhoneInputProps = Omit<TextFieldProps, "type"> & {};
6
+ /**
7
+ * Phone input
8
+ * @param props Props
9
+ */
10
+ export declare function PhoInput(props: PhoneInputProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,21 @@
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.PhoInput = PhoInput;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const TextField_1 = __importDefault(require("@mui/material/TextField"));
9
+ /**
10
+ * Phone input
11
+ * @param props Props
12
+ */
13
+ function PhoInput(props) {
14
+ // Destruct
15
+ const { slotProps, autoCapitalize = "none", autoCorrect = "off", autoComplete = "phone", fullWidth = true, name = "phone", ...rest } = props;
16
+ // Layout
17
+ return ((0, jsx_runtime_1.jsx)(TextField_1.default, { type: "tel", autoCapitalize: autoCapitalize, autoCorrect: autoCorrect, autoComplete: autoComplete, fullWidth: fullWidth, name: name, slotProps: {
18
+ htmlInput: { inputMode: "tel", maxLength: 18 },
19
+ ...slotProps
20
+ }, ...rest }));
21
+ }
@@ -60,7 +60,7 @@ const ShowDataComparison = (data, modelTitle, getLabel, equalCheck = true) => {
60
60
  newValue: data.newData[field]
61
61
  }));
62
62
  if (equalCheck)
63
- rows = rows.filter((item) => !shared_1.Utils.equals(item.oldValue, item.newValue));
63
+ rows = rows.filter((item) => !shared_1.DataTypes.isDeepEqual(item.oldValue, item.newValue));
64
64
  const inputs = ((0, jsx_runtime_1.jsxs)(Table_1.default, { children: [(0, jsx_runtime_1.jsx)(TableHead_1.default, { children: (0, jsx_runtime_1.jsxs)(TableRow_1.default, { children: [(0, jsx_runtime_1.jsx)(TableCell_1.default, { width: "18%", children: field }), (0, jsx_runtime_1.jsx)(TableCell_1.default, { width: "41%", align: "right", children: oldValue }), (0, jsx_runtime_1.jsx)(TableCell_1.default, { width: "41%", align: "right", children: newValue })] }) }), (0, jsx_runtime_1.jsx)(TableBody_1.default, { children: rows.map((row) => ((0, jsx_runtime_1.jsxs)(TableRow_1.default, { children: [(0, jsx_runtime_1.jsx)(TableCell_1.default, { children: getLabel(row.field) }), (0, jsx_runtime_1.jsx)(TableCell_1.default, { align: "right", children: formatValue(row.oldValue, app) }), (0, jsx_runtime_1.jsx)(TableCell_1.default, { align: "right", children: formatValue(row.newValue, app) })] }, row.field))) })] }));
65
65
  app.notifier.alert([undefined, modelTitle], undefined, notificationbase_1.NotificationMessageType.Info, { fullScreen: app.smDown, inputs });
66
66
  };
@@ -81,6 +81,7 @@ export * from "./ListMultipler";
81
81
  export * from "./LoadingButton";
82
82
  export * from "./MaskInput";
83
83
  export * from "./MenuButton";
84
+ export * from "./MobileInput";
84
85
  export * from "./MobileListItemRenderer";
85
86
  export * from "./MoneyInputField";
86
87
  export * from "./MoreFab";
@@ -94,6 +95,7 @@ export * from "./OptionGroup";
94
95
  export * from "./OptionGroupFlag";
95
96
  export * from "./PercentCircularProgress";
96
97
  export * from "./PercentLinearProgress";
98
+ export * from "./PhoneInput";
97
99
  export * from "./PList";
98
100
  export * from "./ProgressCount";
99
101
  export * from "./PullToRefreshUI";
package/lib/cjs/index.js CHANGED
@@ -97,6 +97,7 @@ __exportStar(require("./ListMultipler"), exports);
97
97
  __exportStar(require("./LoadingButton"), exports);
98
98
  __exportStar(require("./MaskInput"), exports);
99
99
  __exportStar(require("./MenuButton"), exports);
100
+ __exportStar(require("./MobileInput"), exports);
100
101
  __exportStar(require("./MobileListItemRenderer"), exports);
101
102
  __exportStar(require("./MoneyInputField"), exports);
102
103
  __exportStar(require("./MoreFab"), exports);
@@ -110,6 +111,7 @@ __exportStar(require("./OptionGroup"), exports);
110
111
  __exportStar(require("./OptionGroupFlag"), exports);
111
112
  __exportStar(require("./PercentCircularProgress"), exports);
112
113
  __exportStar(require("./PercentLinearProgress"), exports);
114
+ __exportStar(require("./PhoneInput"), exports);
113
115
  __exportStar(require("./PList"), exports);
114
116
  __exportStar(require("./ProgressCount"), exports);
115
117
  __exportStar(require("./PullToRefreshUI"), exports);
@@ -6,7 +6,10 @@ import TextField from "@mui/material/TextField";
6
6
  */
7
7
  export function EmailInput(props) {
8
8
  // Destruct
9
- const { slotProps, ...rest } = props;
9
+ const { slotProps, autoCapitalize = "none", autoCorrect = "off", autoComplete = "email", fullWidth = true, name = "email", ...rest } = props;
10
10
  // Layout
11
- return (_jsx(TextField, { type: "email", fullWidth: true, slotProps: { htmlInput: { maxLength: 128 }, ...slotProps }, ...rest }));
11
+ return (_jsx(TextField, { type: "email", autoCapitalize: autoCapitalize, autoCorrect: autoCorrect, autoComplete: autoComplete, fullWidth: fullWidth, name: name, slotProps: {
12
+ htmlInput: { inputMode: "email", maxLength: 128 },
13
+ ...slotProps
14
+ }, ...rest }));
12
15
  }
@@ -0,0 +1,10 @@
1
+ import { TextFieldProps } from "@mui/material/TextField";
2
+ /**
3
+ * Mobile input props
4
+ */
5
+ export type MobileInputProps = Omit<TextFieldProps, "type"> & {};
6
+ /**
7
+ * Mobile input
8
+ * @param props Props
9
+ */
10
+ export declare function MobileInput(props: MobileInputProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import TextField from "@mui/material/TextField";
3
+ /**
4
+ * Mobile input
5
+ * @param props Props
6
+ */
7
+ export function MobileInput(props) {
8
+ // Destruct
9
+ const { slotProps, autoCapitalize = "none", autoCorrect = "off", autoComplete = "mobile", fullWidth = true, name = "mobile", ...rest } = props;
10
+ // Layout
11
+ return (_jsx(TextField, { type: "tel", autoCapitalize: autoCapitalize, autoCorrect: autoCorrect, autoComplete: autoComplete, fullWidth: fullWidth, name: name, slotProps: {
12
+ htmlInput: { inputMode: "tel", maxLength: 18 },
13
+ ...slotProps
14
+ }, ...rest }));
15
+ }
@@ -0,0 +1,10 @@
1
+ import { TextFieldProps } from "@mui/material/TextField";
2
+ /**
3
+ * Phone input props
4
+ */
5
+ export type PhoneInputProps = Omit<TextFieldProps, "type"> & {};
6
+ /**
7
+ * Phone input
8
+ * @param props Props
9
+ */
10
+ export declare function PhoInput(props: PhoneInputProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import TextField from "@mui/material/TextField";
3
+ /**
4
+ * Phone input
5
+ * @param props Props
6
+ */
7
+ export function PhoInput(props) {
8
+ // Destruct
9
+ const { slotProps, autoCapitalize = "none", autoCorrect = "off", autoComplete = "phone", fullWidth = true, name = "phone", ...rest } = props;
10
+ // Layout
11
+ return (_jsx(TextField, { type: "tel", autoCapitalize: autoCapitalize, autoCorrect: autoCorrect, autoComplete: autoComplete, fullWidth: fullWidth, name: name, slotProps: {
12
+ htmlInput: { inputMode: "tel", maxLength: 18 },
13
+ ...slotProps
14
+ }, ...rest }));
15
+ }
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { NotificationMessageType } from "@etsoo/notificationbase";
3
- import { Utils } from "@etsoo/shared";
3
+ import { DataTypes, Utils } from "@etsoo/shared";
4
4
  import { useRequiredAppContext } from "./app/ReactApp";
5
5
  import Table from "@mui/material/Table";
6
6
  import TableHead from "@mui/material/TableHead";
@@ -53,7 +53,7 @@ export const ShowDataComparison = (data, modelTitle, getLabel, equalCheck = true
53
53
  newValue: data.newData[field]
54
54
  }));
55
55
  if (equalCheck)
56
- rows = rows.filter((item) => !Utils.equals(item.oldValue, item.newValue));
56
+ rows = rows.filter((item) => !DataTypes.isDeepEqual(item.oldValue, item.newValue));
57
57
  const inputs = (_jsxs(Table, { children: [_jsx(TableHead, { children: _jsxs(TableRow, { children: [_jsx(TableCell, { width: "18%", children: field }), _jsx(TableCell, { width: "41%", align: "right", children: oldValue }), _jsx(TableCell, { width: "41%", align: "right", children: newValue })] }) }), _jsx(TableBody, { children: rows.map((row) => (_jsxs(TableRow, { children: [_jsx(TableCell, { children: getLabel(row.field) }), _jsx(TableCell, { align: "right", children: formatValue(row.oldValue, app) }), _jsx(TableCell, { align: "right", children: formatValue(row.newValue, app) })] }, row.field))) })] }));
58
58
  app.notifier.alert([undefined, modelTitle], undefined, NotificationMessageType.Info, { fullScreen: app.smDown, inputs });
59
59
  };
@@ -81,6 +81,7 @@ export * from "./ListMultipler";
81
81
  export * from "./LoadingButton";
82
82
  export * from "./MaskInput";
83
83
  export * from "./MenuButton";
84
+ export * from "./MobileInput";
84
85
  export * from "./MobileListItemRenderer";
85
86
  export * from "./MoneyInputField";
86
87
  export * from "./MoreFab";
@@ -94,6 +95,7 @@ export * from "./OptionGroup";
94
95
  export * from "./OptionGroupFlag";
95
96
  export * from "./PercentCircularProgress";
96
97
  export * from "./PercentLinearProgress";
98
+ export * from "./PhoneInput";
97
99
  export * from "./PList";
98
100
  export * from "./ProgressCount";
99
101
  export * from "./PullToRefreshUI";
package/lib/mjs/index.js CHANGED
@@ -81,6 +81,7 @@ export * from "./ListMultipler";
81
81
  export * from "./LoadingButton";
82
82
  export * from "./MaskInput";
83
83
  export * from "./MenuButton";
84
+ export * from "./MobileInput";
84
85
  export * from "./MobileListItemRenderer";
85
86
  export * from "./MoneyInputField";
86
87
  export * from "./MoreFab";
@@ -94,6 +95,7 @@ export * from "./OptionGroup";
94
95
  export * from "./OptionGroupFlag";
95
96
  export * from "./PercentCircularProgress";
96
97
  export * from "./PercentLinearProgress";
98
+ export * from "./PhoneInput";
97
99
  export * from "./PList";
98
100
  export * from "./ProgressCount";
99
101
  export * from "./PullToRefreshUI";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etsoo/materialui",
3
- "version": "1.5.80",
3
+ "version": "1.5.81",
4
4
  "description": "TypeScript Material-UI Implementation",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/mjs/index.js",
@@ -40,13 +40,13 @@
40
40
  "@dnd-kit/sortable": "^10.0.0",
41
41
  "@emotion/react": "^11.14.0",
42
42
  "@emotion/styled": "^11.14.1",
43
- "@etsoo/appscript": "^1.6.45",
44
- "@etsoo/notificationbase": "^1.1.64",
45
- "@etsoo/react": "^1.8.60",
46
- "@etsoo/shared": "^1.2.76",
47
- "@mui/icons-material": "^7.3.4",
48
- "@mui/material": "^7.3.4",
49
- "@mui/x-data-grid": "^8.14.1",
43
+ "@etsoo/appscript": "^1.6.47",
44
+ "@etsoo/notificationbase": "^1.1.66",
45
+ "@etsoo/react": "^1.8.62",
46
+ "@etsoo/shared": "^1.2.79",
47
+ "@mui/icons-material": "^7.3.5",
48
+ "@mui/material": "^7.3.5",
49
+ "@mui/x-data-grid": "^8.16.0",
50
50
  "chart.js": "^4.5.1",
51
51
  "chartjs-plugin-datalabels": "^2.2.0",
52
52
  "dompurify": "^3.3.0",
@@ -55,7 +55,7 @@
55
55
  "pulltorefreshjs": "^0.1.22",
56
56
  "react": "^19.2.0",
57
57
  "react-avatar-editor": "^13.0.2",
58
- "react-chartjs-2": "^5.3.0",
58
+ "react-chartjs-2": "^5.3.1",
59
59
  "react-dom": "^19.2.0",
60
60
  "react-draggable": "^4.5.0",
61
61
  "react-imask": "7.6.1"
@@ -67,11 +67,11 @@
67
67
  },
68
68
  "devDependencies": {
69
69
  "@babel/cli": "^7.28.3",
70
- "@babel/core": "^7.28.4",
71
- "@babel/plugin-transform-runtime": "^7.28.3",
72
- "@babel/preset-env": "^7.28.3",
73
- "@babel/preset-react": "^7.27.1",
74
- "@babel/preset-typescript": "^7.27.1",
70
+ "@babel/core": "^7.28.5",
71
+ "@babel/plugin-transform-runtime": "^7.28.5",
72
+ "@babel/preset-env": "^7.28.5",
73
+ "@babel/preset-react": "^7.28.5",
74
+ "@babel/preset-typescript": "^7.28.5",
75
75
  "@babel/runtime-corejs3": "^7.28.4",
76
76
  "@testing-library/react": "^16.3.0",
77
77
  "@types/pica": "^9.0.5",
@@ -80,9 +80,9 @@
80
80
  "@types/react-avatar-editor": "^13.0.4",
81
81
  "@types/react-dom": "^19.2.2",
82
82
  "@types/react-input-mask": "^3.0.6",
83
- "@vitejs/plugin-react": "^5.0.4",
84
- "jsdom": "^27.0.1",
83
+ "@vitejs/plugin-react": "^5.1.0",
84
+ "jsdom": "^27.1.0",
85
85
  "typescript": "^5.9.3",
86
- "vitest": "^3.2.4"
86
+ "vitest": "^4.0.7"
87
87
  }
88
88
  }
package/setupTests.ts CHANGED
@@ -1,26 +1,10 @@
1
+ import { MockResizeObserver, NodeStorage } from "@etsoo/shared";
1
2
  import { vi } from "vitest";
2
3
 
3
4
  (globalThis as any).IS_REACT_ACT_ENVIRONMENT = true;
4
5
 
5
- vi.mock("localStorage", () => {
6
- let store = {} as Storage;
7
- return {
8
- default: {
9
- getItem(key: string) {
10
- return store[key];
11
- },
6
+ // Stub the global ResizeObserver
7
+ vi.stubGlobal("ResizeObserver", MockResizeObserver);
12
8
 
13
- setItem(key: string, value: string) {
14
- store[key] = value;
15
- },
16
-
17
- removeItem(key: string) {
18
- delete store[key];
19
- },
20
-
21
- clear() {
22
- store = {} as Storage;
23
- }
24
- }
25
- };
26
- });
9
+ // Mock localStorage
10
+ vi.mock("localStorage", () => new NodeStorage());
@@ -11,14 +11,29 @@ export type EmailInputProps = Omit<TextFieldProps, "type"> & {};
11
11
  */
12
12
  export function EmailInput(props: EmailInputProps) {
13
13
  // Destruct
14
- const { slotProps, ...rest } = props;
14
+ const {
15
+ slotProps,
16
+ autoCapitalize = "none",
17
+ autoCorrect = "off",
18
+ autoComplete = "email",
19
+ fullWidth = true,
20
+ name = "email",
21
+ ...rest
22
+ } = props;
15
23
 
16
24
  // Layout
17
25
  return (
18
26
  <TextField
19
27
  type="email"
20
- fullWidth
21
- slotProps={{ htmlInput: { maxLength: 128 }, ...slotProps }}
28
+ autoCapitalize={autoCapitalize}
29
+ autoCorrect={autoCorrect}
30
+ autoComplete={autoComplete}
31
+ fullWidth={fullWidth}
32
+ name={name}
33
+ slotProps={{
34
+ htmlInput: { inputMode: "email", maxLength: 128 },
35
+ ...slotProps
36
+ }}
22
37
  {...rest}
23
38
  />
24
39
  );
@@ -0,0 +1,40 @@
1
+ import TextField, { TextFieldProps } from "@mui/material/TextField";
2
+
3
+ /**
4
+ * Mobile input props
5
+ */
6
+ export type MobileInputProps = Omit<TextFieldProps, "type"> & {};
7
+
8
+ /**
9
+ * Mobile input
10
+ * @param props Props
11
+ */
12
+ export function MobileInput(props: MobileInputProps) {
13
+ // Destruct
14
+ const {
15
+ slotProps,
16
+ autoCapitalize = "none",
17
+ autoCorrect = "off",
18
+ autoComplete = "mobile",
19
+ fullWidth = true,
20
+ name = "mobile",
21
+ ...rest
22
+ } = props;
23
+
24
+ // Layout
25
+ return (
26
+ <TextField
27
+ type="tel"
28
+ autoCapitalize={autoCapitalize}
29
+ autoCorrect={autoCorrect}
30
+ autoComplete={autoComplete}
31
+ fullWidth={fullWidth}
32
+ name={name}
33
+ slotProps={{
34
+ htmlInput: { inputMode: "tel", maxLength: 18 },
35
+ ...slotProps
36
+ }}
37
+ {...rest}
38
+ />
39
+ );
40
+ }
@@ -0,0 +1,40 @@
1
+ import TextField, { TextFieldProps } from "@mui/material/TextField";
2
+
3
+ /**
4
+ * Phone input props
5
+ */
6
+ export type PhoneInputProps = Omit<TextFieldProps, "type"> & {};
7
+
8
+ /**
9
+ * Phone input
10
+ * @param props Props
11
+ */
12
+ export function PhoInput(props: PhoneInputProps) {
13
+ // Destruct
14
+ const {
15
+ slotProps,
16
+ autoCapitalize = "none",
17
+ autoCorrect = "off",
18
+ autoComplete = "phone",
19
+ fullWidth = true,
20
+ name = "phone",
21
+ ...rest
22
+ } = props;
23
+
24
+ // Layout
25
+ return (
26
+ <TextField
27
+ type="tel"
28
+ autoCapitalize={autoCapitalize}
29
+ autoCorrect={autoCorrect}
30
+ autoComplete={autoComplete}
31
+ fullWidth={fullWidth}
32
+ name={name}
33
+ slotProps={{
34
+ htmlInput: { inputMode: "tel", maxLength: 18 },
35
+ ...slotProps
36
+ }}
37
+ {...rest}
38
+ />
39
+ );
40
+ }
@@ -1,6 +1,6 @@
1
1
  import { AuditLineChangesDto, IApp } from "@etsoo/appscript";
2
2
  import { NotificationMessageType } from "@etsoo/notificationbase";
3
- import { Utils } from "@etsoo/shared";
3
+ import { DataTypes, Utils } from "@etsoo/shared";
4
4
  import { useRequiredAppContext } from "./app/ReactApp";
5
5
  import Table from "@mui/material/Table";
6
6
  import TableHead from "@mui/material/TableHead";
@@ -71,7 +71,9 @@ export const ShowDataComparison = (
71
71
  }));
72
72
 
73
73
  if (equalCheck)
74
- rows = rows.filter((item) => !Utils.equals(item.oldValue, item.newValue));
74
+ rows = rows.filter(
75
+ (item) => !DataTypes.isDeepEqual(item.oldValue, item.newValue)
76
+ );
75
77
 
76
78
  const inputs = (
77
79
  <Table>
package/src/index.ts CHANGED
@@ -87,6 +87,7 @@ export * from "./ListMultipler";
87
87
  export * from "./LoadingButton";
88
88
  export * from "./MaskInput";
89
89
  export * from "./MenuButton";
90
+ export * from "./MobileInput";
90
91
  export * from "./MobileListItemRenderer";
91
92
  export * from "./MoneyInputField";
92
93
  export * from "./MoreFab";
@@ -100,6 +101,7 @@ export * from "./OptionGroup";
100
101
  export * from "./OptionGroupFlag";
101
102
  export * from "./PercentCircularProgress";
102
103
  export * from "./PercentLinearProgress";
104
+ export * from "./PhoneInput";
103
105
  export * from "./PList";
104
106
  export * from "./ProgressCount";
105
107
  export * from "./PullToRefreshUI";