Skip to content

Commit 6f94dbf

Browse files
authored
Merge pull request #660 from hack4impact-uiuc/add-dropdown-support
support dropdown fields
2 parents 9da92e0 + d458da0 commit 6f94dbf

18 files changed

Lines changed: 97 additions & 46 deletions

File tree

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
- name: Set up Node
1919
uses: actions/setup-node@v4
2020
with:
21-
node-version: 20
21+
node-version: 24
2222

2323
- name: Set up pnpm
2424
uses: pnpm/action-setup@v4

Dockerfile

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# -----------------------------------------------
22
# Base Image with Doppler
33
# -----------------------------------------------
4-
FROM node:22-alpine AS doppler
4+
FROM node:24-alpine AS doppler
55

66
# Install Doppler CLI
77
RUN wget -q -t3 'https://packages.doppler.com/public/cli/rsa.8004D9FF50437357.key' -O /etc/apk/keys/cli@doppler-8004D9FF50437357.rsa.pub && \
@@ -52,9 +52,12 @@ RUN pnpm run build:${PROJECT_NAME}
5252
# -----------------------------------------------
5353
FROM doppler AS runtime
5454

55+
# Install native build tools needed by sharp, gifsicle, mozjpeg, etc.
56+
RUN apk add --no-cache python3 make g++ autoconf automake libtool nasm
57+
5558
# Install the prod dependencies
5659
WORKDIR /build
57-
COPY apps/backend/package.json .
60+
COPY ./apps/backend/package.json ./
5861
COPY pnpm-lock.yaml ./
5962
COPY pnpm-workspace.yaml ./
6063
COPY apps/backend/package.json ./apps/backend/package.json

apps/backend/src/utils/initDb.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ export const generateFieldSchema = (field: Field): SchemaDefinitionProperty | nu
158158
return getDateSchema()
159159
case FieldType.PHONE:
160160
return getStringSchema()
161+
case FieldType.DROPDOWN:
161162
case FieldType.RADIO_BUTTON:
162163
return getRadioButtonSchema(field)
163164
case FieldType.FILE:

apps/frontend/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,16 @@
1515
},
1616
"dependencies": {
1717
"@3dp4me/types": "workspace:*",
18+
"@emotion/react": "^11.14.0",
19+
"@emotion/styled": "^11.14.1",
1820
"@mui/icons-material": "^6.4.5",
1921
"@mui/material": "^6.4.5",
2022
"@sweetalert/with-react": "^0.1.1",
2123
"@tanstack/react-query": "^5.17.19",
2224
"@vis.gl/react-google-maps": "^1.4.2",
25+
"Chip": "link:@mui/material/Chip",
2326
"aws-amplify": "4.2.11",
2427
"axios": "^1.6.0",
25-
"Chip": "link:@mui/material/Chip",
2628
"date-fns": "^3.3.0",
2729
"js-file-download": "^0.4.12",
2830
"lodash": "^4.17.21",

apps/frontend/src/components/CreateFieldModal/CreateFieldModal.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ const CreateFieldModal = ({
165165
/>
166166
</div>
167167
)
168+
case FieldType.DROPDOWN:
168169
case FieldType.RADIO_BUTTON:
169170
return (
170171
<div className="create-field-div">

apps/frontend/src/components/EditFieldModal/EditFieldModal.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ const EditFieldModal = ({
157157
/>
158158
</div>
159159
)
160+
case FieldType.DROPDOWN:
160161
case FieldType.RADIO_BUTTON:
161162
return (
162163
<div className="edit-field-div">

apps/frontend/src/components/Fields/DropdownField.tsx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,7 @@ const DropdownField = <T extends string>({
3030
if (shouldHideOption(option)) return null
3131

3232
return (
33-
<option
34-
value={option._id}
35-
disabled={isDisabled}
36-
key={option._id}
37-
>
33+
<option value={option._id} disabled={isDisabled} key={option._id}>
3834
{option.Question[selectedLang]}
3935
</option>
4036
)

apps/frontend/src/components/Fields/FieldGroup/FieldGroupHelpers.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ function canFieldBeDisplayedInTable(metadata: Field) {
2929
case FieldType.DATE:
3030
case FieldType.PHONE:
3131
case FieldType.RADIO_BUTTON:
32+
case FieldType.DROPDOWN:
3233
return true
3334
default:
3435
return false

apps/frontend/src/components/Fields/FieldGroup/FieldGroupTable.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import styled from 'styled-components'
88

99
import XIcon from '../../../assets/x-icon.png'
1010
import { useTranslations } from '../../../hooks/useTranslations'
11-
import { DisplayFieldType } from '../../../utils/constants'
1211
import {
1312
ColumnMetadata,
1413
defaultTableHeaderRenderer,
@@ -152,9 +151,10 @@ const FieldGroupTable = ({
152151
field.id
153152
)}`
154153

155-
let fieldType = metadata.subFields[i].fieldType as FieldType | DisplayFieldType
154+
// Radio buttons don't display well in tables, use dropdown instead
155+
let { fieldType } = metadata.subFields[i]
156156
if (fieldType === FieldType.RADIO_BUTTON) {
157-
fieldType = DisplayFieldType.DROPDOWN
157+
fieldType = FieldType.DROPDOWN
158158
}
159159

160160
return (
@@ -202,7 +202,10 @@ const FieldGroupTable = ({
202202
const itemDataCopy = { ...itemData }
203203

204204
rowData.forEach((field, i) => {
205-
if (field.dataType === FieldType.RADIO_BUTTON) {
205+
if (
206+
field.dataType === FieldType.RADIO_BUTTON ||
207+
field.dataType === FieldType.DROPDOWN
208+
) {
206209
const fieldMeta = metadata.subFields[i]
207210
const selectedOption = fieldMeta.options.find(
208211
(option) => option._id === itemData[field.id]

apps/frontend/src/components/StepField/StepField.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ const StepField = ({
132132
onChange={handleSimpleUpdate}
133133
/>
134134
)
135-
case DisplayFieldType.DROPDOWN:
135+
case FieldType.DROPDOWN:
136136
return (
137137
<DropdownField
138138
fieldId={metadata.key}

0 commit comments

Comments
 (0)