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 + + + + + + \ 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`] = ` +
+ + + + + +
+ + + Field + + +
+
+`; 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`] = ` +
+ + + + + +
+ + + Operator + + +
+
+`; 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 {