diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 9fc624b3..c71b1a4f 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -14,6 +14,7 @@ "chart.js": "^4.4.0", "d3": "^7.8.5", "leaflet": "^1.9.4", + "multiselect-react-dropdown": "^2.0.25", "react": "^18.2.0", "react-chartjs-2": "^5.2.0", "react-datepicker": "^4.19.0", @@ -13795,6 +13796,14 @@ "multicast-dns": "cli.js" } }, + "node_modules/multiselect-react-dropdown": { + "version": "2.0.25", + "resolved": "https://registry.npmjs.org/multiselect-react-dropdown/-/multiselect-react-dropdown-2.0.25.tgz", + "integrity": "sha512-z8kUSyBNOuV7vn4Dk35snzXWtIfTdSEEXhgDdLMvOmR+xJFx35vc1voUlSuOvrk3khb+hXC219Qs9szOvNm25Q==", + "peerDependencies": { + "react": "^16.7.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", diff --git a/frontend/package.json b/frontend/package.json index a86a7c21..83ef736e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -9,6 +9,7 @@ "chart.js": "^4.4.0", "d3": "^7.8.5", "leaflet": "^1.9.4", + "multiselect-react-dropdown": "^2.0.25", "react": "^18.2.0", "react-chartjs-2": "^5.2.0", "react-datepicker": "^4.19.0", diff --git a/frontend/src/Components/Conditions/ConditionsMap.tsx b/frontend/src/Components/Conditions/ConditionsMap.tsx index 3282c5c6..6b007894 100644 --- a/frontend/src/Components/Conditions/ConditionsMap.tsx +++ b/frontend/src/Components/Conditions/ConditionsMap.tsx @@ -4,8 +4,10 @@ import { GeoJSON } from 'react-leaflet'; import { Layer, PathOptions } from 'leaflet'; import { Feature, FeatureCollection } from 'geojson'; -import Search from '../Map/Search'; -import MonthFilter from '../Map/MonthFilter'; +import Search from '../Map/Inputs/Search'; +import MonthFilter from '../Map/Inputs/MonthFilter'; +// import MultiSelector from '../Map/Inputs/MultiSelector'; + import MapWrapper from '../Map/MapWrapper'; import Selector from '../Map/Inputs/Selector'; diff --git a/frontend/src/Components/Map/MonthFilter.tsx b/frontend/src/Components/Map/Inputs/MonthFilter.tsx similarity index 97% rename from frontend/src/Components/Map/MonthFilter.tsx rename to frontend/src/Components/Map/Inputs/MonthFilter.tsx index e1d9a0b8..ed05d908 100644 --- a/frontend/src/Components/Map/MonthFilter.tsx +++ b/frontend/src/Components/Map/Inputs/MonthFilter.tsx @@ -1,6 +1,6 @@ import React, { useState } from 'react'; import DatePicker from 'react-datepicker'; -import '../../css/month_filter.css'; +import '../../../css/month_filter.css'; interface Props { /** function taking argument "date" for Start Date **/ diff --git a/frontend/src/Components/Map/Inputs/MultiSelector.tsx b/frontend/src/Components/Map/Inputs/MultiSelector.tsx new file mode 100644 index 00000000..c99f1c2d --- /dev/null +++ b/frontend/src/Components/Map/Inputs/MultiSelector.tsx @@ -0,0 +1,41 @@ +// import React, { useState } from 'react'; + +// import Multiselect from 'multiselect-react-dropdown'; + +// // FIGURE THIS OUT + +// interface Props { +// /** +// * value: text input in the search bar +// * onPlaceSelect: function taking argument "value" +// */ + +// options: any[]; +// onOptionChange: (value: any) => void; +// } + +// // options formatting: +// // options = [{key: "ALL", key: "KPI", .... }] + +// /** +// * Component rendering Search bar +// */ + +// const MultiSelect: React.FC = ({ options, onOptionChange }) => { +// const [selectedOptions, setOptions] = useState([]); + +// function onChange(selectedList) {} + +// return ( +// setOptions(options)} +// onSelect={(onOptionChange, onChange)} // Function will trigger on select event +// onRemove={onOptionChange} // Function will trigger on remove event +// showCheckbox +// /> +// ); +// }; + +// export default MultiSelect; diff --git a/frontend/src/Components/Map/Search.tsx b/frontend/src/Components/Map/Inputs/Search.tsx similarity index 98% rename from frontend/src/Components/Map/Search.tsx rename to frontend/src/Components/Map/Inputs/Search.tsx index 694cc3fd..d9dfdcb9 100644 --- a/frontend/src/Components/Map/Search.tsx +++ b/frontend/src/Components/Map/Inputs/Search.tsx @@ -5,7 +5,7 @@ import { GeoapifyContext, } from '@geoapify/react-geocoder-autocomplete'; import '@geoapify/geocoder-autocomplete/styles/minimal.css'; -import '../../css/search.css'; +import '../../../css/search.css'; interface Props { /** diff --git a/frontend/src/css/search.css b/frontend/src/css/search.css index 415a9b06..2bbaff64 100644 --- a/frontend/src/css/search.css +++ b/frontend/src/css/search.css @@ -13,9 +13,9 @@ .geoapify-autocomplete-items { position: absolute; - left: 20px; /* This need to be improve later to align with the left side of search input box*/ + left: 0%; /* This need to be improve later to align with the left side of search input box*/ top: calc(100% + 2px); - width: 280px; + width: 100%; background-color: #ddddddbd; border: 1px solid rgba(0, 0, 0, 0.1); border-radius: 5px; @@ -90,7 +90,7 @@ .geoapify-close-button { position: absolute; - right: 8px; + right: 0%; width: 30px; top: 0px; height: 100%;