diff --git a/files/import/import-doctors-04-11-2026.csv b/files/import/import-doctors-04-11-2026.csv index edc41e9..84b49d6 100644 --- a/files/import/import-doctors-04-11-2026.csv +++ b/files/import/import-doctors-04-11-2026.csv @@ -205,7 +205,7 @@ Sr NO,TASKFORCE,ZBM Name,RBM Name,ABM Name,HQ,TM ID,TM Name,HCP NAME,LEGACY_CODE 204,Respiratory 2,Shaikh Mohseen Ahmed,Prashant Gakkhar,SURAJ RAWAT,AJMER,162115,HIMANSHU GARG,Dr.PRAMOD DADHICH,CLX0013432,11743902,Chest Physician,A+,100028825,Dr.PRAMOD DADHICH,dadhichrashmi@gmail.com,9829083879 205,Respiratory 2,Shaikh Mohseen Ahmed,Prashant Gakkhar,SURAJ RAWAT,AJMER,162115,HIMANSHU GARG,DR NEERAJ GUPTA,CIR21066,10280704,Chest Physician,A+,100116917,DR NEERAJ GUPTA,drneerajajmer@yahoo.com,9829101942 206,Respiratory 2,Shaikh Mohseen Ahmed,Prashant Gakkhar,SURAJ RAWAT,S MADHOPUR,168610,VIPUL SHARMA,Dr.Umesh Kumar Jatav,CLX0384426,10255366,Chest Physician,A+,100075453,Dr.Umesh Kumar Jatav,jahaji28@gmail.com,9602158647 -207,Respiratory 2,Shaikh Mohseen Ahmed,Prashant Gakkhar,SURAJ RAWAT,S MADHOPUR,168610,VIPUL SHARMA,Dr.Prem raj Singh,CIP610172,7659526,Chest Physician,A+,100037592,Dr.Prem raj Singh,drpremrajsingh@gmail.com,9929460655 &6350474968 +207,Respiratory 2,Shaikh Mohseen Ahmed,Prashant Gakkhar,SURAJ RAWAT,S MADHOPUR,168610,VIPUL SHARMA,Dr.Prem raj Singh,CIP610172,7659526,Chest Physician,A+,100037592,Dr.Prem raj Singh,drpremrajsingh@gmail.com,9929460655 208,Respiratory 2,Amandeep sharma,Umesh garg,Abhinav Sharma,TM-Jalandhar 17089,150541,Ishant Setia,PUNEET SINGH PERHAR,CLX1239048,12632335,Chest Physician,A+,100041086,PUNEET SINGH PERHAR,puneetperhar@yahoo.com,9779149838 209,Respiratory 2,Amandeep sharma,Umesh garg,Abhinav Sharma,TM-AMRITSAR 7465,171383,Arun Kumar,Mandeep Singh,CLX1650772,11311299,Chest Physician,A+,100056055,Mandeep Singh,mandeepsingh27@gmail.com,9811660365 210,Respiratory 2,Amandeep sharma,Umesh garg,Abhinav Sharma,TM-AMRITSAR 23513,171358,Ankush Kapoor,naresh chawla,CIP1067150,15023224,Chest Physician,A,100087159,naresh chawla,dr.nareshchawla@gmail.com,9814104155 diff --git a/frontend/src/index.css b/frontend/src/index.css index 7e8aa27..40aec09 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -729,6 +729,14 @@ a:focus-visible { .survey-grid-input input { flex: 1; min-width: 0; + -moz-appearance: textfield; + appearance: textfield; +} + +.survey-grid-input input::-webkit-outer-spin-button, +.survey-grid-input input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; } .survey-grid-suffix { @@ -737,6 +745,38 @@ a:focus-visible { color: var(--text-muted); } +.percent-input { + position: relative; + display: block; + flex: 1; + min-width: 0; +} + +.site .percent-input input { + padding-right: 2rem; + -moz-appearance: textfield; + appearance: textfield; +} + +.percent-input input::-webkit-outer-spin-button, +.percent-input input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} + +.percent-unit { + position: absolute; + top: 50%; + right: 0.75rem; + transform: translateY(-50%); + color: var(--text-muted); + pointer-events: none; +} + +.survey-grid-percent .survey-grid-value { + width: 7.5rem; +} + .survey-grid td.survey-grid-choice { text-align: center; vertical-align: middle; @@ -880,6 +920,10 @@ a:focus-visible { font-size: 1.25rem; } + .survey-grid-percent .survey-grid-value { + width: auto; + } + .flow-steps li { font-size: 0.68rem; } diff --git a/frontend/src/pages/SurveyPage.jsx b/frontend/src/pages/SurveyPage.jsx index 09cdcdd..27dee7b 100644 --- a/frontend/src/pages/SurveyPage.jsx +++ b/frontend/src/pages/SurveyPage.jsx @@ -126,6 +126,18 @@ function blurOnWheel(event) { event.currentTarget.blur(); } +/** Show a "%" inside a percentage input; the saved value stays a plain number. */ +function PercentInput({ children }) { + return ( + + {children} + + + ); +} + /** * @param {{ messages: string[] }} props */ @@ -213,27 +225,30 @@ function QuestionField({ } if (question.type === 'number' || question.type === 'percentage') { + const input = ( + { + const raw = event.target.value; + if (!inRange(question, raw)) { + return; + } + onChange(raw === '' ? '' : Number(raw)); + }} + /> + ); return (