From 52b941c74a32042b64935158732db49dc8b87570 Mon Sep 17 00:00:00 2001
From: EthanD1998 <1998ethand@gmail.com>
Date: Wed, 31 Jul 2024 08:36:37 -0700
Subject: [PATCH 1/3] Added FilterLabel and OperatorLabel packages
Added the filter label and operator label packages to the turbo repo.
Includes jest testing and correct eslint for both packages
---
.idea/discvr-components.iml | 9 +
.idea/inspectionProfiles/Project_Default.xml | 6 +
.idea/misc.xml | 6 +
.idea/modules.xml | 8 +
.idea/vcs.xml | 6 +
.idea/workspace.xml | 57 +++++
package-lock.json | 222 +++++++++++-------
packages/field-label-component/.babelrc | 7 +
packages/field-label-component/.eslintrc.js | 3 +
.../__snapshots__/field-label.test.tsx.snap | 59 +++++
.../field-label.test.tsx | 81 +++++++
.../field-label-component/field-label.tsx | 73 ++++++
packages/field-label-component/package.json | 32 +++
packages/field-label-component/tsconfig.json | 5 +
packages/operator-label-component/.babelrc | 7 +
.../operator-label-component/.eslintrc.js | 3 +
.../operator-label.test.tsx | 84 +++++++
.../operator-label.tsx | 83 +++++++
.../operator-label-component/package.json | 32 +++
.../operator-label-component/tsconfig.json | 5 +
20 files changed, 706 insertions(+), 82 deletions(-)
create mode 100644 .idea/discvr-components.iml
create mode 100644 .idea/inspectionProfiles/Project_Default.xml
create mode 100644 .idea/misc.xml
create mode 100644 .idea/modules.xml
create mode 100644 .idea/vcs.xml
create mode 100644 .idea/workspace.xml
create mode 100644 packages/field-label-component/.babelrc
create mode 100644 packages/field-label-component/.eslintrc.js
create mode 100644 packages/field-label-component/__snapshots__/field-label.test.tsx.snap
create mode 100644 packages/field-label-component/field-label.test.tsx
create mode 100644 packages/field-label-component/field-label.tsx
create mode 100644 packages/field-label-component/package.json
create mode 100644 packages/field-label-component/tsconfig.json
create mode 100644 packages/operator-label-component/.babelrc
create mode 100644 packages/operator-label-component/.eslintrc.js
create mode 100644 packages/operator-label-component/operator-label.test.tsx
create mode 100644 packages/operator-label-component/operator-label.tsx
create mode 100644 packages/operator-label-component/package.json
create mode 100644 packages/operator-label-component/tsconfig.json
diff --git a/.idea/discvr-components.iml b/.idea/discvr-components.iml
new file mode 100644
index 0000000..d6ebd48
--- /dev/null
+++ b/.idea/discvr-components.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..03d9549
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..07115cd
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..c61594a
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..6fae15d
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1718636855350
+
+
+ 1718636855350
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 9f0519b..df52134 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -26,7 +26,7 @@
"eslint": "^8.48.0",
"prettier": "^3.0.3",
"tsconfig": "*",
- "turbo": "*"
+ "turbo": "latest"
}
},
"apps/docs": {
@@ -7742,6 +7742,10 @@
"bser": "2.1.1"
}
},
+ "node_modules/field-label-component": {
+ "resolved": "packages/field-label-component",
+ "link": true
+ },
"node_modules/file-entry-cache": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@@ -10297,6 +10301,10 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/operator-label-component": {
+ "resolved": "packages/operator-label-component",
+ "link": true
+ },
"node_modules/optionator": {
"version": "0.9.3",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
@@ -10820,15 +10828,6 @@
"react": "17.0.2"
}
},
- "node_modules/react-dom/node_modules/scheduler": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
- "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
- "dependencies": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1"
- }
- },
"node_modules/react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
@@ -10867,6 +10866,27 @@
"react": "^16.0.0 || ^17.0.0 || ^18.0.0"
}
},
+ "node_modules/react-test-renderer": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz",
+ "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==",
+ "dev": true,
+ "dependencies": {
+ "object-assign": "^4.1.1",
+ "react-is": "^17.0.2",
+ "react-shallow-renderer": "^16.13.1",
+ "scheduler": "^0.20.2"
+ },
+ "peerDependencies": {
+ "react": "17.0.2"
+ }
+ },
+ "node_modules/react-test-renderer/node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true
+ },
"node_modules/react-transition-group": {
"version": "4.4.5",
"resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
@@ -11390,6 +11410,15 @@
"node": ">=v12.22.7"
}
},
+ "node_modules/scheduler": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
+ "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1"
+ }
+ },
"node_modules/semver": {
"version": "7.5.4",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
@@ -13207,37 +13236,6 @@
"react-test-renderer": "^17.0.0"
}
},
- "packages/discvr-ui-components/node_modules/react-is": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
- "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
- "dev": true
- },
- "packages/discvr-ui-components/node_modules/react-test-renderer": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz",
- "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==",
- "dev": true,
- "dependencies": {
- "object-assign": "^4.1.1",
- "react-is": "^17.0.2",
- "react-shallow-renderer": "^16.13.1",
- "scheduler": "^0.20.2"
- },
- "peerDependencies": {
- "react": "17.0.2"
- }
- },
- "packages/discvr-ui-components/node_modules/scheduler": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
- "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
- "dev": true,
- "dependencies": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1"
- }
- },
"packages/discvr-utils": {
"version": "0.0.0",
"dependencies": {
@@ -13253,6 +13251,44 @@
"typescript": "^4.5.3"
}
},
+ "packages/field-label-component": {
+ "version": "0.0.0",
+ "dependencies": {
+ "@mui/icons-material": "^5.14.16",
+ "@mui/material": "^5.0.0",
+ "@mui/x-data-grid": "^6.0.1",
+ "eslint-config-custom": "*",
+ "jest-environment-jsdom": "^29.7.0",
+ "react": "^17.0.0",
+ "react-select": "^5.7.4"
+ },
+ "devDependencies": {
+ "@babel/preset-env": "^7.23.3",
+ "@babel/preset-react": "^7.23.3",
+ "babel-jest": "^29.7.0",
+ "jest": "^29.7.0",
+ "react-test-renderer": "^17.0.0"
+ }
+ },
+ "packages/operator-label-component": {
+ "version": "0.0.0",
+ "dependencies": {
+ "@mui/icons-material": "^5.14.16",
+ "@mui/material": "^5.0.0",
+ "@mui/x-data-grid": "^6.0.1",
+ "eslint-config-custom": "*",
+ "jest-environment-jsdom": "^29.7.0",
+ "react": "^17.0.0",
+ "react-select": "^5.7.4"
+ },
+ "devDependencies": {
+ "@babel/preset-env": "^7.23.3",
+ "@babel/preset-react": "^7.23.3",
+ "babel-jest": "^29.7.0",
+ "jest": "^29.7.0",
+ "react-test-renderer": "^17.0.0"
+ }
+ },
"packages/tsconfig": {
"version": "0.0.0",
"license": "MIT"
@@ -17790,36 +17826,6 @@
"react": "^17.0.0",
"react-select": "^5.7.4",
"react-test-renderer": "^17.0.0"
- },
- "dependencies": {
- "react-is": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
- "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
- "dev": true
- },
- "react-test-renderer": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz",
- "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==",
- "dev": true,
- "requires": {
- "object-assign": "^4.1.1",
- "react-is": "^17.0.2",
- "react-shallow-renderer": "^16.13.1",
- "scheduler": "^0.20.2"
- }
- },
- "scheduler": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
- "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
- "dev": true,
- "requires": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1"
- }
- }
}
},
"discvr-utils": {
@@ -18748,6 +18754,23 @@
"bser": "2.1.1"
}
},
+ "field-label-component": {
+ "version": "file:packages/field-label-component",
+ "requires": {
+ "@babel/preset-env": "^7.23.3",
+ "@babel/preset-react": "^7.23.3",
+ "@mui/icons-material": "^5.14.16",
+ "@mui/material": "^5.0.0",
+ "@mui/x-data-grid": "^6.0.1",
+ "babel-jest": "^29.7.0",
+ "eslint-config-custom": "*",
+ "jest": "^29.7.0",
+ "jest-environment-jsdom": "^29.7.0",
+ "react": "^17.0.0",
+ "react-select": "^5.7.4",
+ "react-test-renderer": "^17.0.0"
+ }
+ },
"file-entry-cache": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@@ -20593,6 +20616,23 @@
"is-wsl": "^2.2.0"
}
},
+ "operator-label-component": {
+ "version": "file:packages/operator-label-component",
+ "requires": {
+ "@babel/preset-env": "^7.23.3",
+ "@babel/preset-react": "^7.23.3",
+ "@mui/icons-material": "^5.14.16",
+ "@mui/material": "^5.0.0",
+ "@mui/x-data-grid": "^6.0.1",
+ "babel-jest": "^29.7.0",
+ "eslint-config-custom": "*",
+ "jest": "^29.7.0",
+ "jest-environment-jsdom": "^29.7.0",
+ "react": "^17.0.0",
+ "react-select": "^5.7.4",
+ "react-test-renderer": "^17.0.0"
+ }
+ },
"optionator": {
"version": "0.9.3",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
@@ -20930,17 +20970,6 @@
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
"scheduler": "^0.20.2"
- },
- "dependencies": {
- "scheduler": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
- "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
- "requires": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1"
- }
- }
}
},
"react-is": {
@@ -20974,6 +21003,26 @@
"react-is": "^16.12.0 || ^17.0.0 || ^18.0.0"
}
},
+ "react-test-renderer": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz",
+ "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.1.1",
+ "react-is": "^17.0.2",
+ "react-shallow-renderer": "^16.13.1",
+ "scheduler": "^0.20.2"
+ },
+ "dependencies": {
+ "react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true
+ }
+ }
+ },
"react-transition-group": {
"version": "4.4.5",
"resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
@@ -21355,6 +21404,15 @@
"xmlchars": "^2.2.0"
}
},
+ "scheduler": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
+ "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1"
+ }
+ },
"semver": {
"version": "7.5.4",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
diff --git a/packages/field-label-component/.babelrc b/packages/field-label-component/.babelrc
new file mode 100644
index 0000000..0342bcb
--- /dev/null
+++ b/packages/field-label-component/.babelrc
@@ -0,0 +1,7 @@
+{
+ "presets": [
+ "@babel/preset-env",
+ ["@babel/preset-react", {"runtime": "automatic"}],
+ "@babel/preset-typescript"
+ ]
+}
diff --git a/packages/field-label-component/.eslintrc.js b/packages/field-label-component/.eslintrc.js
new file mode 100644
index 0000000..056bb6e
--- /dev/null
+++ b/packages/field-label-component/.eslintrc.js
@@ -0,0 +1,3 @@
+module.exports = {
+ extends: ["custom/react-internal"],
+ };
\ No newline at end of file
diff --git a/packages/field-label-component/__snapshots__/field-label.test.tsx.snap b/packages/field-label-component/__snapshots__/field-label.test.tsx.snap
new file mode 100644
index 0000000..4f70b8a
--- /dev/null
+++ b/packages/field-label-component/__snapshots__/field-label.test.tsx.snap
@@ -0,0 +1,59 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`FieldLabel test 1`] = `
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/field-label-component/field-label.test.tsx b/packages/field-label-component/field-label.test.tsx
new file mode 100644
index 0000000..bde0146
--- /dev/null
+++ b/packages/field-label-component/field-label.test.tsx
@@ -0,0 +1,81 @@
+import React from 'react';
+import {create} from 'react-test-renderer';
+import { FieldLabel } from './field-label';
+
+
+export declare interface FieldModel {
+ name: string
+ label: string | undefined
+ description: string
+ type: string
+ isInDefaultColumns: boolean
+ isMultiValued: boolean
+ isHidden: boolean
+ colWidth: number
+ formatString: string
+ orderKey: number
+ allowableValues: string[]
+ category: string
+ url: string
+ flex: number
+ supportsFilter: boolean
+}
+
+export declare interface FilterModel {
+ field: string;
+ operator: string;
+ value: string;
+}
+
+it('FieldLabel test', () => {
+ const fieldTypeInfo:FieldModel[] = [{
+ name: '',
+ label: '',
+ description: '',
+ type: '',
+ isInDefaultColumns: false,
+ isMultiValued: false,
+ isHidden: false,
+ colWidth: 0,
+ formatString: '',
+ orderKey: 0,
+ allowableValues: [],
+ category: '',
+ url: '',
+ flex: 0,
+ supportsFilter: false
+ },
+ {
+ name: '',
+ label: '',
+ description: '',
+ type: '',
+ isInDefaultColumns: false,
+ isMultiValued: false,
+ isHidden: false,
+ colWidth: 0,
+ formatString: '',
+ orderKey: 0,
+ allowableValues: [],
+ category: '',
+ url: '',
+ flex: 0,
+ supportsFilter: false
+ }]
+
+ const filter:FilterModel = {
+ field: '',
+ operator: '',
+ value: ''
+ }
+
+ const component = create(
+ ({ field: "", operator: "", value: "" })}
+ index={0}
+ />
+ );
+ expect(component.toJSON()).toMatchSnapshot();
+})
\ No newline at end of file
diff --git a/packages/field-label-component/field-label.tsx b/packages/field-label-component/field-label.tsx
new file mode 100644
index 0000000..9f61e4b
--- /dev/null
+++ b/packages/field-label-component/field-label.tsx
@@ -0,0 +1,73 @@
+import React from 'react';
+import Select from '@mui/material/Select';
+import MenuItem from '@mui/material/MenuItem';
+
+
+interface FieldModel {
+ name: string;
+ label: string | undefined;
+ description: string;
+ type: string;
+ isInDefaultColumns: boolean;
+ isMultiValued: boolean;
+ isHidden: boolean;
+ colWidth: number;
+ formatString: string;
+ orderKey: number;
+ allowableValues: string[];
+ category: string;
+ url: string;
+ flex: number;
+ supportsFilter: boolean;
+}
+
+
+interface FilterType {
+ field: string;
+ operator: string;
+ value: string;
+}
+
+
+type HandleFilterChangeFunction = (
+ index: number,
+ key: string,
+ value: string | undefined,
+) => FilterType;
+
+
+interface FieldLabelProps {
+ filter: FilterType;
+ index: number;
+ handleFilterChange: HandleFilterChangeFunction;
+ fieldTypeInfo: FieldModel[];
+}
+
+
+function FieldLabel(props: FieldLabelProps): React.ReactElement | null {
+
+ const {filter, index, handleFilterChange, fieldTypeInfo} = props
+
+ return (
+
+ );
+
+}
+
+export {FieldLabel}
\ No newline at end of file
diff --git a/packages/field-label-component/package.json b/packages/field-label-component/package.json
new file mode 100644
index 0000000..738d42b
--- /dev/null
+++ b/packages/field-label-component/package.json
@@ -0,0 +1,32 @@
+{
+ "name": "field-label-component",
+ "version": "0.0.0",
+ "main": "./dist/field-label.js",
+ "module": "./dist/field-label.mjs",
+ "types": "./dist/field-label.d.tsx",
+ "scripts": {
+ "test": "jest",
+ "lint": "eslint .",
+ "build": "tsup field-label.tsx --format cjs,esm --dts",
+ "dev": "npm run build -- --watch"
+ },
+ "jest": {
+ "testEnvironment": "jsdom"
+ },
+ "dependencies": {
+ "@mui/icons-material": "^5.14.16",
+ "@mui/material": "^5.0.0",
+ "@mui/x-data-grid": "^6.0.1",
+ "eslint-config-custom": "*",
+ "jest-environment-jsdom": "^29.7.0",
+ "react": "^17.0.0",
+ "react-select": "^5.7.4"
+ },
+ "devDependencies": {
+ "@babel/preset-env": "^7.23.3",
+ "@babel/preset-react": "^7.23.3",
+ "babel-jest": "^29.7.0",
+ "jest": "^29.7.0",
+ "react-test-renderer": "^17.0.0"
+ }
+}
\ No newline at end of file
diff --git a/packages/field-label-component/tsconfig.json b/packages/field-label-component/tsconfig.json
new file mode 100644
index 0000000..a134774
--- /dev/null
+++ b/packages/field-label-component/tsconfig.json
@@ -0,0 +1,5 @@
+{
+ "extends": "tsconfig/react-library.json",
+ "include": ["."],
+ "exclude": ["dist", "build", "node_modules"]
+}
\ No newline at end of file
diff --git a/packages/operator-label-component/.babelrc b/packages/operator-label-component/.babelrc
new file mode 100644
index 0000000..0342bcb
--- /dev/null
+++ b/packages/operator-label-component/.babelrc
@@ -0,0 +1,7 @@
+{
+ "presets": [
+ "@babel/preset-env",
+ ["@babel/preset-react", {"runtime": "automatic"}],
+ "@babel/preset-typescript"
+ ]
+}
diff --git a/packages/operator-label-component/.eslintrc.js b/packages/operator-label-component/.eslintrc.js
new file mode 100644
index 0000000..056bb6e
--- /dev/null
+++ b/packages/operator-label-component/.eslintrc.js
@@ -0,0 +1,3 @@
+module.exports = {
+ extends: ["custom/react-internal"],
+ };
\ No newline at end of file
diff --git a/packages/operator-label-component/operator-label.test.tsx b/packages/operator-label-component/operator-label.test.tsx
new file mode 100644
index 0000000..bd52ed2
--- /dev/null
+++ b/packages/operator-label-component/operator-label.test.tsx
@@ -0,0 +1,84 @@
+import React from 'react';
+import {create} from 'react-test-renderer';
+import { OperatorLabel } from './operator-label';
+
+
+export declare interface FieldModel {
+ name: string
+ label: string | undefined
+ description: string
+ type: string
+ isInDefaultColumns: boolean
+ isMultiValued: boolean
+ isHidden: boolean
+ colWidth: number
+ formatString: string
+ orderKey: number
+ allowableValues: string[]
+ category: string
+ url: string
+ flex: number
+ supportsFilter: boolean
+}
+
+export declare interface FilterModel {
+ field: string;
+ operator: string;
+ value: string;
+}
+
+it('OperatorLabel test', () => {
+ const fieldTypeInfo:FieldModel[] = [{
+ name: '',
+ label: '',
+ description: '',
+ type: '',
+ isInDefaultColumns: false,
+ isMultiValued: false,
+ isHidden: false,
+ colWidth: 0,
+ formatString: '',
+ orderKey: 0,
+ allowableValues: [],
+ category: '',
+ url: '',
+ flex: 0,
+ supportsFilter: false
+ },
+ {
+ name: '',
+ label: '',
+ description: '',
+ type: '',
+ isInDefaultColumns: false,
+ isMultiValued: false,
+ isHidden: false,
+ colWidth: 0,
+ formatString: '',
+ orderKey: 0,
+ allowableValues: [],
+ category: '',
+ url: '',
+ flex: 0,
+ supportsFilter: false
+ }]
+
+ const filter:FilterModel = {
+ field: '',
+ operator: '',
+ value: ''
+ }
+
+const component = create(
+
+ (["",""])}
+ handleFilterChange={(_index: number, _key: string, _value: string | undefined) => ({ field: "", operator: "", value: "" })}
+ index={0}
+ />
+
+)
+expect(component.toJSON()).toMatchSnapshot();
+})
\ No newline at end of file
diff --git a/packages/operator-label-component/operator-label.tsx b/packages/operator-label-component/operator-label.tsx
new file mode 100644
index 0000000..eaecf75
--- /dev/null
+++ b/packages/operator-label-component/operator-label.tsx
@@ -0,0 +1,83 @@
+import React from 'react';
+import Select from '@mui/material/Select';
+import MenuItem from '@mui/material/MenuItem';
+
+interface FieldModel {
+ name: string;
+ label: string | undefined;
+ description: string;
+ type: string;
+ isInDefaultColumns: boolean;
+ isMultiValued: boolean;
+ isHidden: boolean;
+ colWidth: number;
+ formatString: string;
+ orderKey: number;
+ allowableValues: string[];
+ category: string;
+ url: string;
+ flex: number;
+ supportsFilter: boolean;
+}
+
+interface FilterType {
+ field: string;
+ operator: string;
+ value: string;
+}
+
+
+type HandleFilterChangeFunction = (
+ index: number,
+ key: string,
+ value: string | undefined,
+) => FilterType;
+
+
+type GetOperatorsForFieldFunction = (
+ fieldTypeInfo: FieldModel | undefined
+) => string[] | undefined
+
+
+interface OperatorLabelProps {
+ filter: FilterType;
+ index: number;
+ handleFilterChange: HandleFilterChangeFunction;
+ fieldTypeInfo: FieldModel[];
+ getOperatorsForField: GetOperatorsForFieldFunction;
+}
+
+function OperatorLabel(props: OperatorLabelProps): React.ReactElement | null {
+
+ const {filter, index, getOperatorsForField, handleFilterChange, fieldTypeInfo} = props
+
+
+ return (
+
+ );
+}
+
+export {OperatorLabel}
\ No newline at end of file
diff --git a/packages/operator-label-component/package.json b/packages/operator-label-component/package.json
new file mode 100644
index 0000000..ecde15f
--- /dev/null
+++ b/packages/operator-label-component/package.json
@@ -0,0 +1,32 @@
+{
+ "name": "operator-label-component",
+ "version": "0.0.0",
+ "main": "./dist/operator-label.js",
+ "module": "./dist/operator-label.mjs",
+ "types": "./dist/operator-label.d.tsx",
+ "scripts": {
+ "test": "jest",
+ "lint": "eslint .",
+ "build": "tsup operator-label.tsx --format cjs,esm --dts",
+ "dev": "npm run build -- --watch"
+ },
+ "jest": {
+ "testEnvironment": "jsdom"
+ },
+ "dependencies": {
+ "@mui/icons-material": "^5.14.16",
+ "@mui/material": "^5.0.0",
+ "@mui/x-data-grid": "^6.0.1",
+ "eslint-config-custom": "*",
+ "jest-environment-jsdom": "^29.7.0",
+ "react": "^17.0.0",
+ "react-select": "^5.7.4"
+ },
+ "devDependencies": {
+ "@babel/preset-env": "^7.23.3",
+ "@babel/preset-react": "^7.23.3",
+ "babel-jest": "^29.7.0",
+ "jest": "^29.7.0",
+ "react-test-renderer": "^17.0.0"
+ }
+}
\ No newline at end of file
diff --git a/packages/operator-label-component/tsconfig.json b/packages/operator-label-component/tsconfig.json
new file mode 100644
index 0000000..a134774
--- /dev/null
+++ b/packages/operator-label-component/tsconfig.json
@@ -0,0 +1,5 @@
+{
+ "extends": "tsconfig/react-library.json",
+ "include": ["."],
+ "exclude": ["dist", "build", "node_modules"]
+}
\ No newline at end of file
From 0e9c081ccfff4045501240fe8493d83701b45b54 Mon Sep 17 00:00:00 2001
From: EthanD1998 <1998ethand@gmail.com>
Date: Wed, 31 Jul 2024 08:41:00 -0700
Subject: [PATCH 2/3] Added OperatorLabel snapshot
Reran jest Tests to create the new snapshots
---
.../operator-label.test.tsx.snap | 59 +++++++++++++++++++
1 file changed, 59 insertions(+)
create mode 100644 packages/operator-label-component/__snapshots__/operator-label.test.tsx.snap
diff --git a/packages/operator-label-component/__snapshots__/operator-label.test.tsx.snap b/packages/operator-label-component/__snapshots__/operator-label.test.tsx.snap
new file mode 100644
index 0000000..cac10a7
--- /dev/null
+++ b/packages/operator-label-component/__snapshots__/operator-label.test.tsx.snap
@@ -0,0 +1,59 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`OperatorLabel test 1`] = `
+
+
+
+
+
+
+
+
+
+
+`;
From ff6d3b14b3e8eb367c5dce4bcf2ddb96202d3951 Mon Sep 17 00:00:00 2001
From: EthanD1998 <1998ethand@gmail.com>
Date: Fri, 30 Aug 2024 11:15:10 -0700
Subject: [PATCH 3/3] gitignore fix and combine packages
added .idea to the gitignore
combined the packages into ui
setup the tests and src folders to run with all the scripts
---
.gitignore | 5 ++-
packages/discvr-ui-components/package.json | 2 +-
.../src}/field-label.tsx | 0
.../{ => src}/field-type-info.tsx | 0
.../src}/operator-label.tsx | 2 +-
.../__snapshots__/field-label.test.tsx.snap | 0
.../field-type-info.test.tsx.snap | 0
.../operator-label.test.tsx.snap | 0
.../tests}/field-label.test.tsx | 2 +-
.../{ => tests}/field-type-info.test.tsx | 2 +-
.../tests}/operator-label.test.tsx | 2 +-
packages/field-label-component/.babelrc | 7 ----
packages/field-label-component/.eslintrc.js | 3 --
packages/field-label-component/package.json | 32 -------------------
packages/field-label-component/tsconfig.json | 5 ---
packages/operator-label-component/.babelrc | 7 ----
.../operator-label-component/.eslintrc.js | 3 --
.../operator-label-component/package.json | 32 -------------------
.../operator-label-component/tsconfig.json | 5 ---
19 files changed, 9 insertions(+), 100 deletions(-)
rename packages/{field-label-component => discvr-ui-components/src}/field-label.tsx (100%)
rename packages/discvr-ui-components/{ => src}/field-type-info.tsx (100%)
rename packages/{operator-label-component => discvr-ui-components/src}/operator-label.tsx (99%)
rename packages/{field-label-component => discvr-ui-components/tests}/__snapshots__/field-label.test.tsx.snap (100%)
rename packages/discvr-ui-components/{ => tests}/__snapshots__/field-type-info.test.tsx.snap (100%)
rename packages/{operator-label-component => discvr-ui-components/tests}/__snapshots__/operator-label.test.tsx.snap (100%)
rename packages/{field-label-component => discvr-ui-components/tests}/field-label.test.tsx (97%)
rename packages/discvr-ui-components/{ => tests}/field-type-info.test.tsx (97%)
rename packages/{operator-label-component => discvr-ui-components/tests}/operator-label.test.tsx (97%)
delete mode 100644 packages/field-label-component/.babelrc
delete mode 100644 packages/field-label-component/.eslintrc.js
delete mode 100644 packages/field-label-component/package.json
delete mode 100644 packages/field-label-component/tsconfig.json
delete mode 100644 packages/operator-label-component/.babelrc
delete mode 100644 packages/operator-label-component/.eslintrc.js
delete mode 100644 packages/operator-label-component/package.json
delete mode 100644 packages/operator-label-component/tsconfig.json
diff --git a/.gitignore b/.gitignore
index 50ea1ba..b4b9e23 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,4 +36,7 @@ yarn-error.log*
.vercel
# tsup
-dist
\ No newline at end of file
+dist
+
+# idea
+.idea
\ No newline at end of file
diff --git a/packages/discvr-ui-components/package.json b/packages/discvr-ui-components/package.json
index 3dfe561..d4c60ab 100644
--- a/packages/discvr-ui-components/package.json
+++ b/packages/discvr-ui-components/package.json
@@ -7,7 +7,7 @@
"scripts": {
"test": "jest",
"lint": "eslint .",
- "build": "tsup field-type-info.tsx --format cjs,esm --dts",
+ "build": "tsup src/*.tsx --format cjs,esm --dts",
"dev": "npm run build -- --watch"
},
"jest": {
diff --git a/packages/field-label-component/field-label.tsx b/packages/discvr-ui-components/src/field-label.tsx
similarity index 100%
rename from packages/field-label-component/field-label.tsx
rename to packages/discvr-ui-components/src/field-label.tsx
diff --git a/packages/discvr-ui-components/field-type-info.tsx b/packages/discvr-ui-components/src/field-type-info.tsx
similarity index 100%
rename from packages/discvr-ui-components/field-type-info.tsx
rename to packages/discvr-ui-components/src/field-type-info.tsx
diff --git a/packages/operator-label-component/operator-label.tsx b/packages/discvr-ui-components/src/operator-label.tsx
similarity index 99%
rename from packages/operator-label-component/operator-label.tsx
rename to packages/discvr-ui-components/src/operator-label.tsx
index eaecf75..15bbb42 100644
--- a/packages/operator-label-component/operator-label.tsx
+++ b/packages/discvr-ui-components/src/operator-label.tsx
@@ -56,7 +56,7 @@ function OperatorLabel(props: OperatorLabelProps): React.ReactElement | null {