@tipp/ui 2.3.22 → 2.3.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/index.cjs +217 -195
- package/dist/app/index.cjs.map +1 -1
- package/dist/app/index.js +105 -99
- package/dist/app/platform/coach-question-list.js +31 -31
- package/dist/app/platform/contents-card.js +31 -31
- package/dist/app/platform/curriculum-card.js +5 -5
- package/dist/app/platform/edit-coaching-time.cjs +47 -25
- package/dist/app/platform/edit-coaching-time.cjs.map +1 -1
- package/dist/app/platform/edit-coaching-time.js +83 -77
- package/dist/app/platform/edit-service-type.cjs +42 -20
- package/dist/app/platform/edit-service-type.cjs.map +1 -1
- package/dist/app/platform/edit-service-type.js +84 -78
- package/dist/app/platform/goal-manage-card-edit.cjs +50 -28
- package/dist/app/platform/goal-manage-card-edit.cjs.map +1 -1
- package/dist/app/platform/goal-manage-card-edit.js +83 -77
- package/dist/app/platform/goal-manage-card-read.js +31 -31
- package/dist/app/platform/on-offline-radio-card.cjs +77 -55
- package/dist/app/platform/on-offline-radio-card.cjs.map +1 -1
- package/dist/app/platform/on-offline-radio-card.js +83 -77
- package/dist/app/platform/report-card.js +31 -31
- package/dist/app/platform/reservation-card.cjs +66 -44
- package/dist/app/platform/reservation-card.cjs.map +1 -1
- package/dist/app/platform/reservation-card.js +84 -78
- package/dist/app/platform/session-card.cjs +92 -70
- package/dist/app/platform/session-card.cjs.map +1 -1
- package/dist/app/platform/session-card.js +86 -80
- package/dist/app/platform/session-review-simple-read.js +31 -31
- package/dist/app/platform/userInfos/coaching-customer-info/index.js +34 -34
- package/dist/app/platform/userInfos/coaching-customer-info/large.js +31 -31
- package/dist/app/platform/userInfos/coaching-customer-info/medium.js +31 -31
- package/dist/app/platform/userInfos/coaching-customer-info/small.js +31 -31
- package/dist/app/platform/userInfos/session-user-info-detail.js +31 -31
- package/dist/app/platform/userInfos/utils.js +30 -30
- package/dist/atoms/bullet-text.js +2 -2
- package/dist/atoms/dialog.js +2 -2
- package/dist/atoms/field-error-wrapper.js +2 -2
- package/dist/atoms/index.js +62 -62
- package/dist/atoms/list.js +2 -2
- package/dist/atoms/pagination.js +3 -3
- package/dist/chunk-2KOE33U7.js +245 -0
- package/dist/chunk-2KOE33U7.js.map +1 -0
- package/dist/chunk-2U5YD3BH.js +49 -0
- package/dist/chunk-2U5YD3BH.js.map +1 -0
- package/dist/chunk-2X3I7KDG.js +144 -0
- package/dist/chunk-2X3I7KDG.js.map +1 -0
- package/dist/chunk-2YSYS4AG.js +233 -0
- package/dist/chunk-2YSYS4AG.js.map +1 -0
- package/dist/chunk-35HQHUDU.js +228 -0
- package/dist/chunk-35HQHUDU.js.map +1 -0
- package/dist/chunk-3I55S6EP.js +89 -0
- package/dist/chunk-3I55S6EP.js.map +1 -0
- package/dist/chunk-3JDLAN5T.js +99 -0
- package/dist/chunk-3JDLAN5T.js.map +1 -0
- package/dist/chunk-3O2ARPTO.js +161 -0
- package/dist/chunk-3O2ARPTO.js.map +1 -0
- package/dist/chunk-3OO6ENQ4.js +228 -0
- package/dist/chunk-3OO6ENQ4.js.map +1 -0
- package/dist/chunk-45F3UCHR.js +222 -0
- package/dist/chunk-45F3UCHR.js.map +1 -0
- package/dist/chunk-4LUFF5LX.js +98 -0
- package/dist/chunk-4LUFF5LX.js.map +1 -0
- package/dist/chunk-4VV7VH5L.js +79 -0
- package/dist/chunk-4VV7VH5L.js.map +1 -0
- package/dist/chunk-5JCJ4QJO.js +245 -0
- package/dist/chunk-5JCJ4QJO.js.map +1 -0
- package/dist/chunk-5KZJMQCG.js +89 -0
- package/dist/chunk-5KZJMQCG.js.map +1 -0
- package/dist/chunk-5RAR3DG7.js +117 -0
- package/dist/chunk-5RAR3DG7.js.map +1 -0
- package/dist/chunk-5XOR7OPD.js +196 -0
- package/dist/chunk-5XOR7OPD.js.map +1 -0
- package/dist/chunk-5YESTYFF.js +79 -0
- package/dist/chunk-5YESTYFF.js.map +1 -0
- package/dist/chunk-64A2KJHN.js +276 -0
- package/dist/chunk-64A2KJHN.js.map +1 -0
- package/dist/chunk-6CSUU4L7.js +230 -0
- package/dist/chunk-6CSUU4L7.js.map +1 -0
- package/dist/chunk-6FKXUCHD.js +99 -0
- package/dist/chunk-6FKXUCHD.js.map +1 -0
- package/dist/chunk-6TQGX5ZU.js +98 -0
- package/dist/chunk-6TQGX5ZU.js.map +1 -0
- package/dist/chunk-6YZBHOXQ.js +226 -0
- package/dist/chunk-6YZBHOXQ.js.map +1 -0
- package/dist/chunk-7344ZPUM.js +117 -0
- package/dist/chunk-7344ZPUM.js.map +1 -0
- package/dist/chunk-7ABAJEJA.js +63 -0
- package/dist/chunk-7ABAJEJA.js.map +1 -0
- package/dist/chunk-7B5XAENQ.js +363 -0
- package/dist/chunk-7B5XAENQ.js.map +1 -0
- package/dist/chunk-7CQX7ELH.js +69 -0
- package/dist/chunk-7CQX7ELH.js.map +1 -0
- package/dist/chunk-7CRTGYJE.js +80 -0
- package/dist/chunk-7CRTGYJE.js.map +1 -0
- package/dist/chunk-7ITDAUWI.js +287 -0
- package/dist/chunk-7ITDAUWI.js.map +1 -0
- package/dist/chunk-7PQGETJT.js +69 -0
- package/dist/chunk-7PQGETJT.js.map +1 -0
- package/dist/chunk-7R65MUL6.js +106 -0
- package/dist/chunk-7R65MUL6.js.map +1 -0
- package/dist/chunk-7U5EZJOD.js +89 -0
- package/dist/chunk-7U5EZJOD.js.map +1 -0
- package/dist/chunk-7ZBZBOPI.js +63 -0
- package/dist/chunk-7ZBZBOPI.js.map +1 -0
- package/dist/chunk-A2FXUYSB.js +230 -0
- package/dist/chunk-A2FXUYSB.js.map +1 -0
- package/dist/chunk-A7CT5M2S.js +75 -0
- package/dist/chunk-A7CT5M2S.js.map +1 -0
- package/dist/chunk-A7JBBBBB.js +100 -0
- package/dist/chunk-A7JBBBBB.js.map +1 -0
- package/dist/chunk-AA6OYHCE.js +39 -0
- package/dist/chunk-AA6OYHCE.js.map +1 -0
- package/dist/chunk-ALETVN5F.js +245 -0
- package/dist/chunk-ALETVN5F.js.map +1 -0
- package/dist/chunk-ARJOCJVD.js +174 -0
- package/dist/chunk-ARJOCJVD.js.map +1 -0
- package/dist/chunk-ARVLB4CH.js +29 -0
- package/dist/chunk-ARVLB4CH.js.map +1 -0
- package/dist/chunk-B327EINU.js +43 -0
- package/dist/chunk-B327EINU.js.map +1 -0
- package/dist/chunk-B4TDMB52.js +226 -0
- package/dist/chunk-B4TDMB52.js.map +1 -0
- package/dist/chunk-BJZSGZ7H.js +63 -0
- package/dist/chunk-BJZSGZ7H.js.map +1 -0
- package/dist/chunk-BPMY3CDH.js +106 -0
- package/dist/chunk-BPMY3CDH.js.map +1 -0
- package/dist/chunk-C2ANXVMQ.js +221 -0
- package/dist/chunk-C2ANXVMQ.js.map +1 -0
- package/dist/chunk-C6BHVWJI.js +165 -0
- package/dist/chunk-C6BHVWJI.js.map +1 -0
- package/dist/chunk-CF3NAPUZ.js +196 -0
- package/dist/chunk-CF3NAPUZ.js.map +1 -0
- package/dist/chunk-CWRJOY56.js +245 -0
- package/dist/chunk-CWRJOY56.js.map +1 -0
- package/dist/chunk-D3H7YFTO.js +69 -0
- package/dist/chunk-D3H7YFTO.js.map +1 -0
- package/dist/chunk-DDAZ4IAG.js +689 -0
- package/dist/chunk-DDAZ4IAG.js.map +1 -0
- package/dist/chunk-DDVJMAYN.js +230 -0
- package/dist/chunk-DDVJMAYN.js.map +1 -0
- package/dist/chunk-DJ24574O.js +28 -0
- package/dist/chunk-DJ24574O.js.map +1 -0
- package/dist/chunk-DJCBLRLH.js +69 -0
- package/dist/chunk-DJCBLRLH.js.map +1 -0
- package/dist/chunk-DTHR4ABO.js +69 -0
- package/dist/chunk-DTHR4ABO.js.map +1 -0
- package/dist/chunk-DTK646M6.js +87 -0
- package/dist/chunk-DTK646M6.js.map +1 -0
- package/dist/chunk-DVZKRKWH.js +174 -0
- package/dist/chunk-DVZKRKWH.js.map +1 -0
- package/dist/chunk-E232GTT6.js +69 -0
- package/dist/chunk-E232GTT6.js.map +1 -0
- package/dist/chunk-EGTOU5MK.js +689 -0
- package/dist/chunk-EGTOU5MK.js.map +1 -0
- package/dist/chunk-EJAC46WB.js +39 -0
- package/dist/chunk-EJAC46WB.js.map +1 -0
- package/dist/chunk-F2I4LA63.js +51 -0
- package/dist/chunk-F2I4LA63.js.map +1 -0
- package/dist/chunk-F65P7KZI.js +98 -0
- package/dist/chunk-F65P7KZI.js.map +1 -0
- package/dist/chunk-F76YKHGP.js +245 -0
- package/dist/chunk-F76YKHGP.js.map +1 -0
- package/dist/chunk-FGX6IR4Q.js +68 -0
- package/dist/chunk-FGX6IR4Q.js.map +1 -0
- package/dist/chunk-FN2CUDUP.js +43 -0
- package/dist/chunk-FN2CUDUP.js.map +1 -0
- package/dist/chunk-FQUAFIUO.js +228 -0
- package/dist/chunk-FQUAFIUO.js.map +1 -0
- package/dist/chunk-FYHAKQGB.js +220 -0
- package/dist/chunk-FYHAKQGB.js.map +1 -0
- package/dist/chunk-G6UKOZPL.js +217 -0
- package/dist/chunk-G6UKOZPL.js.map +1 -0
- package/dist/chunk-GAFIOPGJ.js +54 -0
- package/dist/chunk-GAFIOPGJ.js.map +1 -0
- package/dist/chunk-GEMXFVWI.js +37 -0
- package/dist/chunk-GEMXFVWI.js.map +1 -0
- package/dist/chunk-GFBOT2PV.js +101 -0
- package/dist/chunk-GFBOT2PV.js.map +1 -0
- package/dist/chunk-GFURX6GB.js +76 -0
- package/dist/chunk-GFURX6GB.js.map +1 -0
- package/dist/chunk-GMHVMQTV.js +245 -0
- package/dist/chunk-GMHVMQTV.js.map +1 -0
- package/dist/chunk-GTO7GG2K.js +245 -0
- package/dist/chunk-GTO7GG2K.js.map +1 -0
- package/dist/chunk-GWNS3C3A.js +144 -0
- package/dist/chunk-GWNS3C3A.js.map +1 -0
- package/dist/chunk-HNS76MH2.js +69 -0
- package/dist/chunk-HNS76MH2.js.map +1 -0
- package/dist/chunk-HO462CJM.js +29 -0
- package/dist/chunk-HO462CJM.js.map +1 -0
- package/dist/chunk-HPW5EHJX.js +233 -0
- package/dist/chunk-HPW5EHJX.js.map +1 -0
- package/dist/chunk-HQ23GSZM.js +145 -0
- package/dist/chunk-HQ23GSZM.js.map +1 -0
- package/dist/chunk-HTNDVNLQ.js +287 -0
- package/dist/chunk-HTNDVNLQ.js.map +1 -0
- package/dist/chunk-HXOMTUED.js +222 -0
- package/dist/chunk-HXOMTUED.js.map +1 -0
- package/dist/chunk-INE4EFFO.js +70 -0
- package/dist/chunk-INE4EFFO.js.map +1 -0
- package/dist/chunk-IQUJPIZD.js +689 -0
- package/dist/chunk-IQUJPIZD.js.map +1 -0
- package/dist/chunk-ITKUKDDV.js +196 -0
- package/dist/chunk-ITKUKDDV.js.map +1 -0
- package/dist/chunk-J333WVWG.js +145 -0
- package/dist/chunk-J333WVWG.js.map +1 -0
- package/dist/chunk-JADEGHJI.js +101 -0
- package/dist/chunk-JADEGHJI.js.map +1 -0
- package/dist/chunk-JAS77BXB.js +245 -0
- package/dist/chunk-JAS77BXB.js.map +1 -0
- package/dist/chunk-JDBHOE34.js +51 -0
- package/dist/chunk-JDBHOE34.js.map +1 -0
- package/dist/chunk-JG4JIBBV.js +245 -0
- package/dist/chunk-JG4JIBBV.js.map +1 -0
- package/dist/chunk-JHJSR2UT.js +101 -0
- package/dist/chunk-JHJSR2UT.js.map +1 -0
- package/dist/chunk-JJDLCVZV.js +37 -0
- package/dist/chunk-JJDLCVZV.js.map +1 -0
- package/dist/chunk-JKAMW7OV.js +228 -0
- package/dist/chunk-JKAMW7OV.js.map +1 -0
- package/dist/chunk-JRSZNGFD.js +28 -0
- package/dist/chunk-JRSZNGFD.js.map +1 -0
- package/dist/chunk-JZVK4NDF.js +28 -0
- package/dist/chunk-JZVK4NDF.js.map +1 -0
- package/dist/chunk-K255663P.js +144 -0
- package/dist/chunk-K255663P.js.map +1 -0
- package/dist/chunk-K5TTAI44.js +89 -0
- package/dist/chunk-K5TTAI44.js.map +1 -0
- package/dist/chunk-KCAOUZCT.js +245 -0
- package/dist/chunk-KCAOUZCT.js.map +1 -0
- package/dist/chunk-KCCYHT23.js +39 -0
- package/dist/chunk-KCCYHT23.js.map +1 -0
- package/dist/chunk-KFUBWOCN.js +69 -0
- package/dist/chunk-KFUBWOCN.js.map +1 -0
- package/dist/chunk-KOKKR2GO.js +37 -0
- package/dist/chunk-KOKKR2GO.js.map +1 -0
- package/dist/chunk-KV432YFG.js +223 -0
- package/dist/chunk-KV432YFG.js.map +1 -0
- package/dist/chunk-L5SQIVFO.js +68 -0
- package/dist/chunk-L5SQIVFO.js.map +1 -0
- package/dist/chunk-LJDGAKG3.js +196 -0
- package/dist/chunk-LJDGAKG3.js.map +1 -0
- package/dist/chunk-LSUCPRXN.js +89 -0
- package/dist/chunk-LSUCPRXN.js.map +1 -0
- package/dist/chunk-MDSCN4PH.js +144 -0
- package/dist/chunk-MDSCN4PH.js.map +1 -0
- package/dist/chunk-MG2KX3KF.js +69 -0
- package/dist/chunk-MG2KX3KF.js.map +1 -0
- package/dist/chunk-MIATMZDP.js +39 -0
- package/dist/chunk-MIATMZDP.js.map +1 -0
- package/dist/chunk-MIVH7X2Q.js +245 -0
- package/dist/chunk-MIVH7X2Q.js.map +1 -0
- package/dist/chunk-MPZJH3PI.js +287 -0
- package/dist/chunk-MPZJH3PI.js.map +1 -0
- package/dist/chunk-MQ4ZZJXV.js +51 -0
- package/dist/chunk-MQ4ZZJXV.js.map +1 -0
- package/dist/chunk-MRTKFR7V.js +144 -0
- package/dist/chunk-MRTKFR7V.js.map +1 -0
- package/dist/chunk-MTSZUPDJ.js +151 -0
- package/dist/chunk-MTSZUPDJ.js.map +1 -0
- package/dist/chunk-MTU2IQUS.js +689 -0
- package/dist/chunk-MTU2IQUS.js.map +1 -0
- package/dist/chunk-MVA6X35R.js +165 -0
- package/dist/chunk-MVA6X35R.js.map +1 -0
- package/dist/chunk-ND5BRCYV.js +75 -0
- package/dist/chunk-ND5BRCYV.js.map +1 -0
- package/dist/chunk-NE5S2QWA.js +51 -0
- package/dist/chunk-NE5S2QWA.js.map +1 -0
- package/dist/chunk-NHK64BOP.js +69 -0
- package/dist/chunk-NHK64BOP.js.map +1 -0
- package/dist/chunk-NHMDJCXR.js +276 -0
- package/dist/chunk-NHMDJCXR.js.map +1 -0
- package/dist/chunk-NIBZSFZ6.js +196 -0
- package/dist/chunk-NIBZSFZ6.js.map +1 -0
- package/dist/chunk-NJ3LHGC6.js +169 -0
- package/dist/chunk-NJ3LHGC6.js.map +1 -0
- package/dist/chunk-NJKRLSH3.js +287 -0
- package/dist/chunk-NJKRLSH3.js.map +1 -0
- package/dist/chunk-NLTKDXLB.js +113 -0
- package/dist/chunk-NLTKDXLB.js.map +1 -0
- package/dist/chunk-NRWZ6JNA.js +69 -0
- package/dist/chunk-NRWZ6JNA.js.map +1 -0
- package/dist/chunk-NSBBMIXS.js +151 -0
- package/dist/chunk-NSBBMIXS.js.map +1 -0
- package/dist/chunk-O665PURC.js +63 -0
- package/dist/chunk-O665PURC.js.map +1 -0
- package/dist/chunk-O6LH7P6V.js +87 -0
- package/dist/chunk-O6LH7P6V.js.map +1 -0
- package/dist/chunk-OF4RHJCY.js +69 -0
- package/dist/chunk-OF4RHJCY.js.map +1 -0
- package/dist/chunk-ORBEMNBA.js +49 -0
- package/dist/chunk-ORBEMNBA.js.map +1 -0
- package/dist/chunk-OYCRE67S.js +87 -0
- package/dist/chunk-OYCRE67S.js.map +1 -0
- package/dist/chunk-P4KO43AP.js +245 -0
- package/dist/chunk-P4KO43AP.js.map +1 -0
- package/dist/chunk-PJHCOBSQ.js +163 -0
- package/dist/chunk-PJHCOBSQ.js.map +1 -0
- package/dist/chunk-PXPGCDNA.js +106 -0
- package/dist/chunk-PXPGCDNA.js.map +1 -0
- package/dist/chunk-QBVF4BCB.js +245 -0
- package/dist/chunk-QBVF4BCB.js.map +1 -0
- package/dist/chunk-QKP2KBZ5.js +219 -0
- package/dist/chunk-QKP2KBZ5.js.map +1 -0
- package/dist/chunk-QXBRA2T6.js +169 -0
- package/dist/chunk-QXBRA2T6.js.map +1 -0
- package/dist/chunk-RAMPMKQD.js +245 -0
- package/dist/chunk-RAMPMKQD.js.map +1 -0
- package/dist/chunk-REPTW53S.js +98 -0
- package/dist/chunk-REPTW53S.js.map +1 -0
- package/dist/chunk-RMFSOYRW.js +99 -0
- package/dist/chunk-RMFSOYRW.js.map +1 -0
- package/dist/chunk-RXQHKSIV.js +37 -0
- package/dist/chunk-RXQHKSIV.js.map +1 -0
- package/dist/chunk-RZGCNQWE.js +89 -0
- package/dist/chunk-RZGCNQWE.js.map +1 -0
- package/dist/chunk-S3W44IB3.js +151 -0
- package/dist/chunk-S3W44IB3.js.map +1 -0
- package/dist/chunk-SEKCH5XW.js +100 -0
- package/dist/chunk-SEKCH5XW.js.map +1 -0
- package/dist/chunk-SGS3LUQ3.js +196 -0
- package/dist/chunk-SGS3LUQ3.js.map +1 -0
- package/dist/chunk-SLHUNZIR.js +245 -0
- package/dist/chunk-SLHUNZIR.js.map +1 -0
- package/dist/chunk-STCVW5HT.js +49 -0
- package/dist/chunk-STCVW5HT.js.map +1 -0
- package/dist/chunk-SVGGVYY7.js +69 -0
- package/dist/chunk-SVGGVYY7.js.map +1 -0
- package/dist/chunk-T5I3DNHD.js +145 -0
- package/dist/chunk-T5I3DNHD.js.map +1 -0
- package/dist/chunk-TJDCSV5R.js +230 -0
- package/dist/chunk-TJDCSV5R.js.map +1 -0
- package/dist/chunk-TJWFURWT.js +43 -0
- package/dist/chunk-TJWFURWT.js.map +1 -0
- package/dist/chunk-TMO724ZN.js +63 -0
- package/dist/chunk-TMO724ZN.js.map +1 -0
- package/dist/chunk-TP7DOXLP.js +98 -0
- package/dist/chunk-TP7DOXLP.js.map +1 -0
- package/dist/chunk-TQJ3HQ7R.js +87 -0
- package/dist/chunk-TQJ3HQ7R.js.map +1 -0
- package/dist/chunk-TRNLQ7F3.js +245 -0
- package/dist/chunk-TRNLQ7F3.js.map +1 -0
- package/dist/chunk-U6UGFQIT.js +117 -0
- package/dist/chunk-U6UGFQIT.js.map +1 -0
- package/dist/chunk-U7OEYXJQ.js +165 -0
- package/dist/chunk-U7OEYXJQ.js.map +1 -0
- package/dist/chunk-UF6LFXBG.js +230 -0
- package/dist/chunk-UF6LFXBG.js.map +1 -0
- package/dist/chunk-ULZHPTB5.js +70 -0
- package/dist/chunk-ULZHPTB5.js.map +1 -0
- package/dist/chunk-UOCLNOC2.js +145 -0
- package/dist/chunk-UOCLNOC2.js.map +1 -0
- package/dist/chunk-V2RMMVGT.js +51 -0
- package/dist/chunk-V2RMMVGT.js.map +1 -0
- package/dist/chunk-V2UREEFT.js +89 -0
- package/dist/chunk-V2UREEFT.js.map +1 -0
- package/dist/chunk-V4WWIPTK.js +363 -0
- package/dist/chunk-V4WWIPTK.js.map +1 -0
- package/dist/chunk-VEHTXVLY.js +169 -0
- package/dist/chunk-VEHTXVLY.js.map +1 -0
- package/dist/chunk-VIVVHI7F.js +63 -0
- package/dist/chunk-VIVVHI7F.js.map +1 -0
- package/dist/chunk-VQMIOVFO.js +69 -0
- package/dist/chunk-VQMIOVFO.js.map +1 -0
- package/dist/chunk-VU3C3W4S.js +106 -0
- package/dist/chunk-VU3C3W4S.js.map +1 -0
- package/dist/chunk-VYPPQUB5.js +196 -0
- package/dist/chunk-VYPPQUB5.js.map +1 -0
- package/dist/chunk-W2TX267T.js +100 -0
- package/dist/chunk-W2TX267T.js.map +1 -0
- package/dist/chunk-W3EW7K6L.js +51 -0
- package/dist/chunk-W3EW7K6L.js.map +1 -0
- package/dist/chunk-WA5A2GB4.js +192 -0
- package/dist/chunk-WA5A2GB4.js.map +1 -0
- package/dist/chunk-WPAC4HEX.js +87 -0
- package/dist/chunk-WPAC4HEX.js.map +1 -0
- package/dist/chunk-X2OV53JW.js +196 -0
- package/dist/chunk-X2OV53JW.js.map +1 -0
- package/dist/chunk-X6K6AM4D.js +196 -0
- package/dist/chunk-X6K6AM4D.js.map +1 -0
- package/dist/chunk-XIKKYBHO.js +69 -0
- package/dist/chunk-XIKKYBHO.js.map +1 -0
- package/dist/chunk-Y2H4FXGU.js +68 -0
- package/dist/chunk-Y2H4FXGU.js.map +1 -0
- package/dist/chunk-YCRTFH4C.js +79 -0
- package/dist/chunk-YCRTFH4C.js.map +1 -0
- package/dist/chunk-YHGFJ7N6.js +63 -0
- package/dist/chunk-YHGFJ7N6.js.map +1 -0
- package/dist/chunk-YKDT2D43.js +98 -0
- package/dist/chunk-YKDT2D43.js.map +1 -0
- package/dist/chunk-YLTKQZ67.js +228 -0
- package/dist/chunk-YLTKQZ67.js.map +1 -0
- package/dist/chunk-YPGFPLWM.js +69 -0
- package/dist/chunk-YPGFPLWM.js.map +1 -0
- package/dist/chunk-YWYYPYBK.js +1 -0
- package/dist/chunk-YWYYPYBK.js.map +1 -0
- package/dist/chunk-Z7WNKARH.js +331 -0
- package/dist/chunk-Z7WNKARH.js.map +1 -0
- package/dist/chunk-ZA4NYPSW.js +28 -0
- package/dist/chunk-ZA4NYPSW.js.map +1 -0
- package/dist/chunk-ZDY2M7RX.js +113 -0
- package/dist/chunk-ZDY2M7RX.js.map +1 -0
- package/dist/chunk-ZFTQ2XBH.js +76 -0
- package/dist/chunk-ZFTQ2XBH.js.map +1 -0
- package/dist/chunk-ZI7PEVZG.js +89 -0
- package/dist/chunk-ZI7PEVZG.js.map +1 -0
- package/dist/chunk-ZKFNOCWD.js +125 -0
- package/dist/chunk-ZKFNOCWD.js.map +1 -0
- package/dist/chunk-ZOITFRX7.js +70 -0
- package/dist/chunk-ZOITFRX7.js.map +1 -0
- package/dist/chunk-ZPDLTZDJ.js +363 -0
- package/dist/chunk-ZPDLTZDJ.js.map +1 -0
- package/dist/chunk-ZR4G3PU3.js +89 -0
- package/dist/chunk-ZR4G3PU3.js.map +1 -0
- package/dist/context/index.js +5 -5
- package/dist/index.cjs +1704 -308
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +168 -159
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.js +18 -18
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.js +4 -4
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.js +11 -11
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-footer.js +2 -2
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-header.js +3 -3
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-layout.js +2 -2
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.js +6 -6
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.js +5 -5
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.js +5 -5
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.js +5 -5
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.js +4 -4
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.js +21 -21
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.js +6 -6
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.js +4 -4
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.js +4 -4
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.js +24 -24
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-video.cjs +4 -4
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-video.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-video.js +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/index.cjs +4 -4
- package/dist/molecules/curriculumV2/CurriculumContents/index.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/index.js +29 -29
- package/dist/molecules/curriculumV2/CurriculumSidebar/Items/curriculum-item-title.js +2 -2
- package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-item.js +4 -4
- package/dist/molecules/curriculumV2/CurriculumSidebar/index.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumSidebar/index.js +8 -8
- package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.js +5 -5
- package/dist/molecules/curriculumV2/curriculum-context.cjs +0 -1
- package/dist/molecules/curriculumV2/curriculum-context.cjs.map +1 -1
- package/dist/molecules/curriculumV2/curriculum-context.js +1 -1
- package/dist/molecules/curriculumV2/curriculum-sub-nav.cjs.map +1 -1
- package/dist/molecules/curriculumV2/curriculum-sub-nav.js +5 -5
- package/dist/molecules/curriculumV2/curriculum-v2-layout.js +2 -2
- package/dist/molecules/curriculumV2/index.cjs +4 -5
- package/dist/molecules/curriculumV2/index.cjs.map +1 -1
- package/dist/molecules/curriculumV2/index.js +39 -39
- package/dist/molecules/date-picker/date-picker-button.js +6 -6
- package/dist/molecules/date-picker/index.js +5 -5
- package/dist/molecules/description-json-render.cjs +1 -1
- package/dist/molecules/description-json-render.cjs.map +1 -1
- package/dist/molecules/description-json-render.js +6 -6
- package/dist/molecules/download-card.js +2 -2
- package/dist/molecules/dynamic-field.cjs +147 -5
- package/dist/molecules/dynamic-field.cjs.map +1 -1
- package/dist/molecules/dynamic-field.js +9 -6
- package/dist/molecules/dynamic-form-editor-field-editor-panel.cjs +1711 -0
- package/dist/molecules/dynamic-form-editor-field-editor-panel.cjs.map +1 -0
- package/dist/molecules/dynamic-form-editor-field-editor-panel.d.cts +19 -0
- package/dist/molecules/dynamic-form-editor-field-editor-panel.d.ts +19 -0
- package/dist/molecules/dynamic-form-editor-field-editor-panel.js +37 -0
- package/dist/molecules/dynamic-form-editor-field-editor-panel.js.map +1 -0
- package/dist/molecules/dynamic-form-editor-field-list-panel.cjs +298 -0
- package/dist/molecules/dynamic-form-editor-field-list-panel.cjs.map +1 -0
- package/dist/molecules/dynamic-form-editor-field-list-panel.d.cts +16 -0
- package/dist/molecules/dynamic-form-editor-field-list-panel.d.ts +16 -0
- package/dist/molecules/dynamic-form-editor-field-list-panel.js +14 -0
- package/dist/molecules/dynamic-form-editor-field-list-panel.js.map +1 -0
- package/dist/molecules/dynamic-form-editor-issues-panel.cjs +171 -0
- package/dist/molecules/dynamic-form-editor-issues-panel.cjs.map +1 -0
- package/dist/molecules/dynamic-form-editor-issues-panel.d.cts +10 -0
- package/dist/molecules/dynamic-form-editor-issues-panel.d.ts +10 -0
- package/dist/molecules/dynamic-form-editor-issues-panel.js +12 -0
- package/dist/molecules/dynamic-form-editor-issues-panel.js.map +1 -0
- package/dist/molecules/dynamic-form-editor-preview-panel.cjs +1021 -0
- package/dist/molecules/dynamic-form-editor-preview-panel.cjs.map +1 -0
- package/dist/molecules/dynamic-form-editor-preview-panel.d.cts +10 -0
- package/dist/molecules/dynamic-form-editor-preview-panel.d.ts +10 -0
- package/dist/molecules/dynamic-form-editor-preview-panel.js +26 -0
- package/dist/molecules/dynamic-form-editor-preview-panel.js.map +1 -0
- package/dist/molecules/dynamic-form-editor-utils.cjs +396 -0
- package/dist/molecules/dynamic-form-editor-utils.cjs.map +1 -0
- package/dist/molecules/dynamic-form-editor-utils.d.cts +43 -0
- package/dist/molecules/dynamic-form-editor-utils.d.ts +43 -0
- package/dist/molecules/dynamic-form-editor-utils.js +44 -0
- package/dist/molecules/dynamic-form-editor-utils.js.map +1 -0
- package/dist/molecules/dynamic-form-editor.cjs +2925 -0
- package/dist/molecules/dynamic-form-editor.cjs.map +1 -0
- package/dist/molecules/dynamic-form-editor.d.cts +15 -0
- package/dist/molecules/dynamic-form-editor.d.ts +15 -0
- package/dist/molecules/dynamic-form-editor.js +51 -0
- package/dist/molecules/dynamic-form-editor.js.map +1 -0
- package/dist/molecules/dynamic-form-response-item.cjs +21 -12
- package/dist/molecules/dynamic-form-response-item.cjs.map +1 -1
- package/dist/molecules/dynamic-form-response-item.js +1 -1
- package/dist/molecules/dynamic-form.cjs +149 -7
- package/dist/molecules/dynamic-form.cjs.map +1 -1
- package/dist/molecules/dynamic-form.js +10 -7
- package/dist/molecules/expand-table/index.js +5 -5
- package/dist/molecules/force-refresh.js +2 -2
- package/dist/molecules/ghost-post.js +4 -4
- package/dist/molecules/index.cjs +1426 -27
- package/dist/molecules/index.cjs.map +1 -1
- package/dist/molecules/index.d.cts +1 -0
- package/dist/molecules/index.d.ts +1 -0
- package/dist/molecules/index.js +91 -81
- package/dist/molecules/learning-post.js +6 -6
- package/dist/molecules/navigation.js +3 -3
- package/dist/molecules/one-on-one-guide-list.js +3 -3
- package/dist/molecules/stepper.js +4 -4
- package/dist/molecules/tag-selector.js +5 -5
- package/dist/molecules/time-select.cjs +1 -1
- package/dist/molecules/time-select.cjs.map +1 -1
- package/dist/molecules/time-select.js +1 -1
- package/dist/molecules/training-info-guideline.js +7 -7
- package/dist/types/dynamic-form-schema-generated.cjs.map +1 -1
- package/dist/types/dynamic-form-schema-generated.d.cts +30 -2
- package/dist/types/dynamic-form-schema-generated.d.ts +30 -2
- package/dist/types/index.d.cts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.js +1 -1
- package/dist/utils/get-callout-icon-component.cjs +624 -0
- package/dist/utils/get-callout-icon-component.cjs.map +1 -0
- package/dist/utils/get-callout-icon-component.d.cts +11 -0
- package/dist/utils/get-callout-icon-component.d.ts +11 -0
- package/dist/utils/get-callout-icon-component.js +26 -0
- package/dist/utils/get-callout-icon-component.js.map +1 -0
- package/dist/utils/index.cjs +1 -1
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.cts +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js +1 -1
- package/package.json +1 -1
- package/src/app/platform/reservation-card.tsx +0 -1
- package/src/constrant/dynamic-form-schema.json +55 -0
- package/src/molecules/curriculumV2/CurriculumContents/curriculum-video.tsx +3 -3
- package/src/molecules/curriculumV2/curriculum-context.tsx +0 -1
- package/src/molecules/description-json-render.tsx +1 -1
- package/src/molecules/dynamic-field.tsx +183 -7
- package/src/molecules/dynamic-form-editor-field-editor-panel.tsx +688 -0
- package/src/molecules/dynamic-form-editor-field-list-panel.tsx +116 -0
- package/src/molecules/dynamic-form-editor-issues-panel.tsx +35 -0
- package/src/molecules/dynamic-form-editor-preview-panel.tsx +30 -0
- package/src/molecules/dynamic-form-editor-utils.ts +433 -0
- package/src/molecules/dynamic-form-editor.tsx +263 -0
- package/src/molecules/dynamic-form-response-item.tsx +28 -17
- package/src/molecules/dynamic-form.tsx +1 -1
- package/src/molecules/index.ts +2 -1
- package/src/types/dynamic-form-schema-generated.ts +33 -0
- package/src/utils/index.ts +1 -1
- package/src/utils/{getCalloutIconComponent.ts → get-callout-icon-component.ts} +3 -3
package/dist/index.cjs
CHANGED
|
@@ -158,6 +158,7 @@ __export(index_exports, {
|
|
|
158
158
|
Drawer: () => Drawer,
|
|
159
159
|
DropdownMenu: () => DropdownMenu,
|
|
160
160
|
DynamicForm: () => DynamicForm,
|
|
161
|
+
DynamicFormEditor: () => DynamicFormEditor,
|
|
161
162
|
DynamicFormField: () => DynamicFormField,
|
|
162
163
|
DynamicFormProvider: () => DynamicFormProvider,
|
|
163
164
|
DynamicFormResponseItem: () => DynamicFormResponseItem,
|
|
@@ -287,7 +288,7 @@ __export(index_exports, {
|
|
|
287
288
|
useDynamicForm: () => useDynamicForm,
|
|
288
289
|
useList: () => useList,
|
|
289
290
|
usePortalContainer: () => usePortalContainer,
|
|
290
|
-
useThemeContext: () =>
|
|
291
|
+
useThemeContext: () => import_themes58.useThemeContext,
|
|
291
292
|
useUIState: () => useUIState
|
|
292
293
|
});
|
|
293
294
|
module.exports = __toCommonJS(index_exports);
|
|
@@ -3628,7 +3629,7 @@ var getTimeOption = (time) => {
|
|
|
3628
3629
|
return `${hour < 10 ? `0${hour}` : hour}:${minute < 10 ? `0${minute}` : minute}`;
|
|
3629
3630
|
};
|
|
3630
3631
|
|
|
3631
|
-
// src/utils/
|
|
3632
|
+
// src/utils/get-callout-icon-component.ts
|
|
3632
3633
|
var DEFAULT_ICON = import_react_icons2.InfoCircledIcon;
|
|
3633
3634
|
var AI_CALLOUT_ICON_OPTIONS = [
|
|
3634
3635
|
{ label: "Info", value: "InfoCircledIcon", Component: import_react_icons2.InfoCircledIcon },
|
|
@@ -3960,7 +3961,6 @@ function CurriculumProvider(props) {
|
|
|
3960
3961
|
const inBounds = selectedIndexState >= 0 && selectedIndexState < list.length;
|
|
3961
3962
|
if (!inBounds) return;
|
|
3962
3963
|
const item = list[selectedIndexState];
|
|
3963
|
-
if (!item) return;
|
|
3964
3964
|
if (item.type === "sectionTitle") return;
|
|
3965
3965
|
onChangeSelectedContent == null ? void 0 : onChangeSelectedContent(item);
|
|
3966
3966
|
}, [list, onChangeSelectedContent, selectedIndexState]);
|
|
@@ -4116,15 +4116,15 @@ function CurriculumVideo(props) {
|
|
|
4116
4116
|
"iframe",
|
|
4117
4117
|
{
|
|
4118
4118
|
allowFullScreen: true,
|
|
4119
|
+
onError: () => {
|
|
4120
|
+
setIsLoading(false);
|
|
4121
|
+
},
|
|
4119
4122
|
onLoad: () => {
|
|
4120
4123
|
setIsLoading(false);
|
|
4121
4124
|
},
|
|
4122
4125
|
src: `${url}?theme=light`,
|
|
4123
4126
|
style: { width: "100%", height: "100%", border: "none" },
|
|
4124
|
-
title: "Curriculum Video"
|
|
4125
|
-
onError: () => {
|
|
4126
|
-
setIsLoading(false);
|
|
4127
|
-
}
|
|
4127
|
+
title: "Curriculum Video"
|
|
4128
4128
|
}
|
|
4129
4129
|
)
|
|
4130
4130
|
]
|
|
@@ -5648,6 +5648,46 @@ function useDynamicForm() {
|
|
|
5648
5648
|
|
|
5649
5649
|
// src/molecules/dynamic-field.tsx
|
|
5650
5650
|
var import_jsx_runtime88 = require("react/jsx-runtime");
|
|
5651
|
+
function isRecord(value) {
|
|
5652
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
5653
|
+
}
|
|
5654
|
+
function isFieldOption(value) {
|
|
5655
|
+
if (!isRecord(value)) return false;
|
|
5656
|
+
const label = value.label;
|
|
5657
|
+
const optionValue = value.value;
|
|
5658
|
+
return typeof label === "string" && (typeof optionValue === "string" || typeof optionValue === "number");
|
|
5659
|
+
}
|
|
5660
|
+
function isImageFieldOption(value) {
|
|
5661
|
+
if (!isRecord(value)) return false;
|
|
5662
|
+
if (!isFieldOption(value)) return false;
|
|
5663
|
+
const imageSrc = value.imageSrc;
|
|
5664
|
+
const alt = value.alt;
|
|
5665
|
+
return typeof imageSrc === "string" && (alt === void 0 || typeof alt === "string");
|
|
5666
|
+
}
|
|
5667
|
+
function getStringProp(obj, key, fallback) {
|
|
5668
|
+
if (!isRecord(obj)) return fallback;
|
|
5669
|
+
const value = obj[key];
|
|
5670
|
+
return typeof value === "string" ? value : fallback;
|
|
5671
|
+
}
|
|
5672
|
+
function getNumberProp(obj, key, fallback) {
|
|
5673
|
+
if (!isRecord(obj)) return fallback;
|
|
5674
|
+
const value = obj[key];
|
|
5675
|
+
return typeof value === "number" ? value : fallback;
|
|
5676
|
+
}
|
|
5677
|
+
function getOptions(field) {
|
|
5678
|
+
if (!isRecord(field)) return null;
|
|
5679
|
+
const options = field.options;
|
|
5680
|
+
if (!Array.isArray(options)) return null;
|
|
5681
|
+
if (!options.every(isFieldOption)) return null;
|
|
5682
|
+
return options;
|
|
5683
|
+
}
|
|
5684
|
+
function getImageOptions(field) {
|
|
5685
|
+
if (!isRecord(field)) return null;
|
|
5686
|
+
const options = field.options;
|
|
5687
|
+
if (!Array.isArray(options)) return null;
|
|
5688
|
+
if (!options.every(isImageFieldOption)) return null;
|
|
5689
|
+
return options;
|
|
5690
|
+
}
|
|
5651
5691
|
function DynamicFormField({
|
|
5652
5692
|
field
|
|
5653
5693
|
}) {
|
|
@@ -5660,7 +5700,7 @@ function DynamicFormField({
|
|
|
5660
5700
|
handleBlur,
|
|
5661
5701
|
readonly
|
|
5662
5702
|
} = useDynamicForm();
|
|
5663
|
-
const
|
|
5703
|
+
const name = field.name;
|
|
5664
5704
|
const value = getFieldValue(name);
|
|
5665
5705
|
const error = getFieldError(name);
|
|
5666
5706
|
const touched = getFieldTouched(name);
|
|
@@ -5673,14 +5713,22 @@ function DynamicFormField({
|
|
|
5673
5713
|
error: hasError,
|
|
5674
5714
|
disabled: readonly
|
|
5675
5715
|
};
|
|
5676
|
-
|
|
5716
|
+
const selectedValue = typeof value === "string" || typeof value === "number" ? String(value) : "";
|
|
5717
|
+
switch (field.type) {
|
|
5677
5718
|
case "short_text":
|
|
5719
|
+
return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
5720
|
+
TextField.Root,
|
|
5721
|
+
__spreadProps(__spreadValues({}, commonProps), {
|
|
5722
|
+
placeholder: field.placeholder,
|
|
5723
|
+
type: "text"
|
|
5724
|
+
})
|
|
5725
|
+
);
|
|
5678
5726
|
case "email":
|
|
5679
5727
|
return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
5680
5728
|
TextField.Root,
|
|
5681
5729
|
__spreadProps(__spreadValues({}, commonProps), {
|
|
5682
5730
|
placeholder: field.placeholder,
|
|
5683
|
-
type:
|
|
5731
|
+
type: "email"
|
|
5684
5732
|
})
|
|
5685
5733
|
);
|
|
5686
5734
|
case "number":
|
|
@@ -5703,9 +5751,20 @@ function DynamicFormField({
|
|
|
5703
5751
|
onValueChange: readonly ? void 0 : (newValue) => {
|
|
5704
5752
|
void setFieldValue(name, newValue);
|
|
5705
5753
|
},
|
|
5706
|
-
value,
|
|
5754
|
+
value: selectedValue,
|
|
5707
5755
|
children: [
|
|
5708
|
-
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
5756
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
5757
|
+
Select.Trigger,
|
|
5758
|
+
{
|
|
5759
|
+
placeholder: field.placeholder,
|
|
5760
|
+
style: {
|
|
5761
|
+
alignSelf: "flex-start",
|
|
5762
|
+
width: "fit-content",
|
|
5763
|
+
minWidth: "180px",
|
|
5764
|
+
maxWidth: "100%"
|
|
5765
|
+
}
|
|
5766
|
+
}
|
|
5767
|
+
),
|
|
5709
5768
|
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Select.Content, { children: field.options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Select.Item, { value: String(option.value), children: option.label }, option.value)) })
|
|
5710
5769
|
]
|
|
5711
5770
|
}
|
|
@@ -5723,6 +5782,21 @@ function DynamicFormField({
|
|
|
5723
5782
|
children: field.options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_themes34.RadioGroup.Item, { value: String(option.value), children: option.label }, option.value))
|
|
5724
5783
|
}
|
|
5725
5784
|
);
|
|
5785
|
+
case "radio_cards": {
|
|
5786
|
+
const options = getOptions(field);
|
|
5787
|
+
if (!options) return null;
|
|
5788
|
+
return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
5789
|
+
import_themes33.RadioCards.Root,
|
|
5790
|
+
{
|
|
5791
|
+
disabled: readonly,
|
|
5792
|
+
onValueChange: readonly ? void 0 : (newValue) => {
|
|
5793
|
+
void setFieldValue(name, newValue);
|
|
5794
|
+
},
|
|
5795
|
+
value: selectedValue,
|
|
5796
|
+
children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_themes33.RadioCards.Item, { value: String(option.value), children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Typo, { children: option.label }) }, option.value))
|
|
5797
|
+
}
|
|
5798
|
+
);
|
|
5799
|
+
}
|
|
5726
5800
|
case "choices":
|
|
5727
5801
|
return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
5728
5802
|
CheckboxGroup.Root,
|
|
@@ -5750,6 +5824,65 @@ function DynamicFormField({
|
|
|
5750
5824
|
),
|
|
5751
5825
|
field.description ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Typo, { color: "gray", variant: "caption", children: field.description }) : null
|
|
5752
5826
|
] });
|
|
5827
|
+
case "image_radio_card": {
|
|
5828
|
+
const options = getImageOptions(field);
|
|
5829
|
+
if (!options) return null;
|
|
5830
|
+
const gridColumnsCount = Math.max(1, getNumberProp(field, "gridColumnsCount", 4));
|
|
5831
|
+
const gridColumns = getStringProp(
|
|
5832
|
+
field,
|
|
5833
|
+
"gridColumns",
|
|
5834
|
+
`repeat(${gridColumnsCount}, 1fr)`
|
|
5835
|
+
);
|
|
5836
|
+
const gridItemHeight = getStringProp(field, "gridItemHeight", "100px");
|
|
5837
|
+
const gridRows = getStringProp(field, "gridRows", gridItemHeight);
|
|
5838
|
+
const gridGap = getStringProp(field, "gridGap", "2");
|
|
5839
|
+
const imageFitRaw = getStringProp(field, "imageFit", "cover");
|
|
5840
|
+
const imageFit = imageFitRaw === "contain" ? "contain" : "cover";
|
|
5841
|
+
const handleValueChange = (newValue) => {
|
|
5842
|
+
if (readonly) return;
|
|
5843
|
+
const selectedOption = options.find(
|
|
5844
|
+
(option) => String(option.value) === newValue
|
|
5845
|
+
);
|
|
5846
|
+
if (!selectedOption) return;
|
|
5847
|
+
void setFieldValue(name, selectedOption.value);
|
|
5848
|
+
};
|
|
5849
|
+
return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
5850
|
+
import_themes33.RadioCards.Root,
|
|
5851
|
+
{
|
|
5852
|
+
disabled: readonly,
|
|
5853
|
+
onValueChange: readonly ? void 0 : handleValueChange,
|
|
5854
|
+
value: selectedValue,
|
|
5855
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_themes23.Grid, { columns: gridColumns, gap: gridGap, rows: gridRows, children: options.map((option) => {
|
|
5856
|
+
const optionValue = String(option.value);
|
|
5857
|
+
const altText = option.alt || option.label;
|
|
5858
|
+
return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
5859
|
+
import_themes33.RadioCards.Item,
|
|
5860
|
+
{
|
|
5861
|
+
style: {
|
|
5862
|
+
padding: 0
|
|
5863
|
+
},
|
|
5864
|
+
value: optionValue,
|
|
5865
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_themes25.Inset, { style: { width: "100%", height: "100%", padding: 0 }, children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
5866
|
+
"img",
|
|
5867
|
+
{
|
|
5868
|
+
alt: altText,
|
|
5869
|
+
src: option.imageSrc,
|
|
5870
|
+
style: {
|
|
5871
|
+
width: "100%",
|
|
5872
|
+
height: "100%",
|
|
5873
|
+
display: "block",
|
|
5874
|
+
objectFit: imageFit,
|
|
5875
|
+
opacity: readonly ? 0.7 : 1
|
|
5876
|
+
}
|
|
5877
|
+
}
|
|
5878
|
+
) })
|
|
5879
|
+
},
|
|
5880
|
+
optionValue
|
|
5881
|
+
);
|
|
5882
|
+
}) })
|
|
5883
|
+
}
|
|
5884
|
+
);
|
|
5885
|
+
}
|
|
5753
5886
|
default:
|
|
5754
5887
|
return null;
|
|
5755
5888
|
}
|
|
@@ -5975,27 +6108,32 @@ function createYupValidation(field, validation) {
|
|
|
5975
6108
|
}
|
|
5976
6109
|
|
|
5977
6110
|
// src/molecules/dynamic-form-response-item.tsx
|
|
6111
|
+
function isRecord2(value) {
|
|
6112
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
6113
|
+
}
|
|
6114
|
+
function isFieldOption2(value) {
|
|
6115
|
+
if (!isRecord2(value)) return false;
|
|
6116
|
+
const label = value.label;
|
|
6117
|
+
const optionValue = value.value;
|
|
6118
|
+
return typeof label === "string" && (typeof optionValue === "string" || typeof optionValue === "number");
|
|
6119
|
+
}
|
|
5978
6120
|
function DynamicFormResponseItem({
|
|
5979
6121
|
payload,
|
|
5980
6122
|
questionType,
|
|
5981
6123
|
config
|
|
5982
6124
|
}) {
|
|
5983
|
-
|
|
5984
|
-
return String(payload || "\uC751\uB2F5 \uC5C6\uC74C");
|
|
5985
|
-
}
|
|
5986
|
-
const payloadObj = payload;
|
|
5987
|
-
const value = payloadObj.value;
|
|
6125
|
+
const value = isRecord2(payload) && "value" in payload ? payload.value : payload;
|
|
5988
6126
|
if (value === void 0 || value === null || value === "") {
|
|
5989
6127
|
return "\uC751\uB2F5 \uC5C6\uC74C";
|
|
5990
6128
|
}
|
|
5991
|
-
const
|
|
5992
|
-
if (!fieldConfig
|
|
5993
|
-
|
|
5994
|
-
|
|
5995
|
-
|
|
5996
|
-
return
|
|
6129
|
+
const getOptions2 = (fieldConfig) => {
|
|
6130
|
+
if (!isRecord2(fieldConfig)) return void 0;
|
|
6131
|
+
const options2 = fieldConfig.options;
|
|
6132
|
+
if (!Array.isArray(options2)) return void 0;
|
|
6133
|
+
if (!options2.every(isFieldOption2)) return void 0;
|
|
6134
|
+
return options2;
|
|
5997
6135
|
};
|
|
5998
|
-
const options =
|
|
6136
|
+
const options = getOptions2(config);
|
|
5999
6137
|
switch (questionType) {
|
|
6000
6138
|
case "text":
|
|
6001
6139
|
case "textarea":
|
|
@@ -6003,8 +6141,10 @@ function DynamicFormResponseItem({
|
|
|
6003
6141
|
case "radio":
|
|
6004
6142
|
case "select":
|
|
6005
6143
|
case "choice":
|
|
6144
|
+
case "radio_cards":
|
|
6145
|
+
case "image_radio_card":
|
|
6006
6146
|
if (options) {
|
|
6007
|
-
const option = options.find((opt) => opt.value === value);
|
|
6147
|
+
const option = options.find((opt) => String(opt.value) === String(value));
|
|
6008
6148
|
return option ? option.label : String(value);
|
|
6009
6149
|
}
|
|
6010
6150
|
return String(value);
|
|
@@ -6013,7 +6153,9 @@ function DynamicFormResponseItem({
|
|
|
6013
6153
|
if (Array.isArray(value)) {
|
|
6014
6154
|
if (options) {
|
|
6015
6155
|
return value.map((val) => {
|
|
6016
|
-
const option = options.find(
|
|
6156
|
+
const option = options.find(
|
|
6157
|
+
(opt) => String(opt.value) === String(val)
|
|
6158
|
+
);
|
|
6017
6159
|
return option ? option.label : String(val);
|
|
6018
6160
|
}).join(", ");
|
|
6019
6161
|
}
|
|
@@ -6275,29 +6417,1282 @@ function TrainingInfoGuidelineButton({
|
|
|
6275
6417
|
);
|
|
6276
6418
|
}
|
|
6277
6419
|
|
|
6278
|
-
// src/
|
|
6420
|
+
// src/molecules/dynamic-form-editor.tsx
|
|
6421
|
+
var import_react49 = require("react");
|
|
6422
|
+
|
|
6423
|
+
// src/molecules/dynamic-form-editor-utils.ts
|
|
6424
|
+
function isRecord3(value) {
|
|
6425
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
6426
|
+
}
|
|
6427
|
+
function isNonEmptyTrimmedString(value) {
|
|
6428
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
6429
|
+
}
|
|
6430
|
+
function isFiniteNumber(value) {
|
|
6431
|
+
return typeof value === "number" && Number.isFinite(value);
|
|
6432
|
+
}
|
|
6433
|
+
function canCompileRegExp(pattern) {
|
|
6434
|
+
try {
|
|
6435
|
+
new RegExp(pattern);
|
|
6436
|
+
return true;
|
|
6437
|
+
} catch (e) {
|
|
6438
|
+
return false;
|
|
6439
|
+
}
|
|
6440
|
+
}
|
|
6441
|
+
function getFieldTypes() {
|
|
6442
|
+
return [
|
|
6443
|
+
"short_text",
|
|
6444
|
+
"long_text",
|
|
6445
|
+
"number",
|
|
6446
|
+
"email",
|
|
6447
|
+
"dropdown",
|
|
6448
|
+
"choice",
|
|
6449
|
+
"radio_cards",
|
|
6450
|
+
"image_radio_card",
|
|
6451
|
+
"choices",
|
|
6452
|
+
"yes_no"
|
|
6453
|
+
];
|
|
6454
|
+
}
|
|
6455
|
+
function getFieldTypeLabel(type) {
|
|
6456
|
+
const map = {
|
|
6457
|
+
short_text: "\uC9E7\uC740 \uD14D\uC2A4\uD2B8",
|
|
6458
|
+
long_text: "\uAE34 \uD14D\uC2A4\uD2B8",
|
|
6459
|
+
number: "\uC22B\uC790",
|
|
6460
|
+
email: "\uC774\uBA54\uC77C",
|
|
6461
|
+
dropdown: "\uB4DC\uB86D\uB2E4\uC6B4",
|
|
6462
|
+
choice: "\uB2E8\uC77C \uC120\uD0DD(\uB77C\uB514\uC624)",
|
|
6463
|
+
radio_cards: "\uB77C\uB514\uC624 \uCE74\uB4DC",
|
|
6464
|
+
image_radio_card: "\uC774\uBBF8\uC9C0 \uB77C\uB514\uC624 \uCE74\uB4DC",
|
|
6465
|
+
choices: "\uB2E4\uC911 \uC120\uD0DD(\uCCB4\uD06C)",
|
|
6466
|
+
yes_no: "\uB3D9\uC758(\uCCB4\uD06C)"
|
|
6467
|
+
};
|
|
6468
|
+
return map[type];
|
|
6469
|
+
}
|
|
6470
|
+
function findFieldIndexByName(fields, fieldName) {
|
|
6471
|
+
return fields.findIndex((field) => field.name === fieldName);
|
|
6472
|
+
}
|
|
6473
|
+
function toCamelFromSnake(value) {
|
|
6474
|
+
const parts = value.split("_").filter(Boolean);
|
|
6475
|
+
if (parts.length === 0) return "field";
|
|
6476
|
+
const [first, ...rest] = parts;
|
|
6477
|
+
const firstLower = first.toLowerCase();
|
|
6478
|
+
const restCamel = rest.map((p) => p.length === 0 ? "" : p[0].toUpperCase() + p.slice(1)).join("");
|
|
6479
|
+
return `${firstLower}${restCamel}`;
|
|
6480
|
+
}
|
|
6481
|
+
function createUniqueFieldName(fields, baseName) {
|
|
6482
|
+
const used = new Set(fields.map((f) => f.name));
|
|
6483
|
+
if (!used.has(baseName)) return baseName;
|
|
6484
|
+
let i = 2;
|
|
6485
|
+
while (used.has(`${baseName}${i}`)) i += 1;
|
|
6486
|
+
return `${baseName}${i}`;
|
|
6487
|
+
}
|
|
6488
|
+
function createDefaultField(type, currentFields) {
|
|
6489
|
+
const baseName = toCamelFromSnake(type);
|
|
6490
|
+
const name = createUniqueFieldName(currentFields, baseName);
|
|
6491
|
+
const label = getFieldTypeLabel(type);
|
|
6492
|
+
if (type === "short_text") return { name, type, label, placeholder: "" };
|
|
6493
|
+
if (type === "long_text") return { name, type, label, placeholder: "" };
|
|
6494
|
+
if (type === "number") return { name, type, label, placeholder: "" };
|
|
6495
|
+
if (type === "email") return { name, type, label, placeholder: "" };
|
|
6496
|
+
if (type === "dropdown")
|
|
6497
|
+
return {
|
|
6498
|
+
name,
|
|
6499
|
+
type,
|
|
6500
|
+
label,
|
|
6501
|
+
placeholder: "",
|
|
6502
|
+
options: [{ label: "\uC635\uC158 1", value: "option1" }]
|
|
6503
|
+
};
|
|
6504
|
+
if (type === "choice")
|
|
6505
|
+
return {
|
|
6506
|
+
name,
|
|
6507
|
+
type,
|
|
6508
|
+
label,
|
|
6509
|
+
orientation: "vertical",
|
|
6510
|
+
options: [{ label: "\uC635\uC158 1", value: "option1" }]
|
|
6511
|
+
};
|
|
6512
|
+
if (type === "radio_cards")
|
|
6513
|
+
return { name, type, label, options: [{ label: "\uC635\uC158 1", value: "option1" }] };
|
|
6514
|
+
if (type === "choices")
|
|
6515
|
+
return {
|
|
6516
|
+
name,
|
|
6517
|
+
type,
|
|
6518
|
+
label,
|
|
6519
|
+
orientation: "vertical",
|
|
6520
|
+
options: [{ label: "\uC635\uC158 1", value: "option1" }]
|
|
6521
|
+
};
|
|
6522
|
+
if (type === "yes_no") return { name, type, label, description: "" };
|
|
6523
|
+
return {
|
|
6524
|
+
name,
|
|
6525
|
+
type,
|
|
6526
|
+
label,
|
|
6527
|
+
gridColumnsCount: 4,
|
|
6528
|
+
gridItemHeight: "160px",
|
|
6529
|
+
gridGap: "2",
|
|
6530
|
+
imageFit: "cover",
|
|
6531
|
+
options: [
|
|
6532
|
+
{
|
|
6533
|
+
label: "\uC774\uBBF8\uC9C0 1",
|
|
6534
|
+
value: "option1",
|
|
6535
|
+
imageSrc: "https://placehold.co/300x300/png?text=1"
|
|
6536
|
+
}
|
|
6537
|
+
]
|
|
6538
|
+
};
|
|
6539
|
+
}
|
|
6540
|
+
function normalizeSchema(value) {
|
|
6541
|
+
const fallback = { fields: [] };
|
|
6542
|
+
if (!value) return fallback;
|
|
6543
|
+
if (!Array.isArray(value.fields)) return fallback;
|
|
6544
|
+
return { fields: value.fields };
|
|
6545
|
+
}
|
|
6546
|
+
function validateDynamicFormSchema(schema) {
|
|
6547
|
+
const issues = [];
|
|
6548
|
+
const nameToCount = /* @__PURE__ */ new Map();
|
|
6549
|
+
schema.fields.forEach((field) => {
|
|
6550
|
+
const prev = nameToCount.get(field.name) || 0;
|
|
6551
|
+
nameToCount.set(field.name, prev + 1);
|
|
6552
|
+
});
|
|
6553
|
+
schema.fields.forEach((field, index) => {
|
|
6554
|
+
const fieldKey = `${index}:${field.name}`;
|
|
6555
|
+
if (!isNonEmptyTrimmedString(field.name)) {
|
|
6556
|
+
issues.push({
|
|
6557
|
+
id: `field.name.required.${fieldKey}`,
|
|
6558
|
+
level: "error",
|
|
6559
|
+
message: "\uD544\uB4DC name\uC740 \uD544\uC218\uC785\uB2C8\uB2E4",
|
|
6560
|
+
fieldName: field.name
|
|
6561
|
+
});
|
|
6562
|
+
} else if (field.name.trim() !== field.name) {
|
|
6563
|
+
issues.push({
|
|
6564
|
+
id: `field.name.trim.${fieldKey}`,
|
|
6565
|
+
level: "warning",
|
|
6566
|
+
message: "\uD544\uB4DC name \uC55E/\uB4A4 \uACF5\uBC31\uC740 \uC81C\uAC70\uD558\uB294 \uAC83\uC744 \uAD8C\uC7A5\uD569\uB2C8\uB2E4",
|
|
6567
|
+
fieldName: field.name
|
|
6568
|
+
});
|
|
6569
|
+
}
|
|
6570
|
+
if (isNonEmptyTrimmedString(field.name)) {
|
|
6571
|
+
const count = nameToCount.get(field.name) || 0;
|
|
6572
|
+
if (count > 1) {
|
|
6573
|
+
issues.push({
|
|
6574
|
+
id: `field.name.duplicate.${fieldKey}`,
|
|
6575
|
+
level: "error",
|
|
6576
|
+
message: `\uC911\uBCF5\uB41C name\uC785\uB2C8\uB2E4: ${field.name}`,
|
|
6577
|
+
fieldName: field.name
|
|
6578
|
+
});
|
|
6579
|
+
}
|
|
6580
|
+
}
|
|
6581
|
+
if (!isNonEmptyTrimmedString(field.label)) {
|
|
6582
|
+
issues.push({
|
|
6583
|
+
id: `field.label.required.${fieldKey}`,
|
|
6584
|
+
level: "error",
|
|
6585
|
+
message: "\uD544\uB4DC label\uC740 \uD544\uC218\uC785\uB2C8\uB2E4",
|
|
6586
|
+
fieldName: field.name
|
|
6587
|
+
});
|
|
6588
|
+
}
|
|
6589
|
+
const type = field.type;
|
|
6590
|
+
const isOptionType = type === "dropdown" || type === "choice" || type === "radio_cards" || type === "choices";
|
|
6591
|
+
if (isOptionType) {
|
|
6592
|
+
const optionsRaw = field.options;
|
|
6593
|
+
if (!Array.isArray(optionsRaw) || optionsRaw.length === 0) {
|
|
6594
|
+
issues.push({
|
|
6595
|
+
id: `field.options.required.${fieldKey}`,
|
|
6596
|
+
level: "error",
|
|
6597
|
+
message: "options\uB294 1\uAC1C \uC774\uC0C1 \uD544\uC694\uD569\uB2C8\uB2E4",
|
|
6598
|
+
fieldName: field.name
|
|
6599
|
+
});
|
|
6600
|
+
}
|
|
6601
|
+
}
|
|
6602
|
+
if (type === "image_radio_card") {
|
|
6603
|
+
const optionsRaw = field.options;
|
|
6604
|
+
if (!Array.isArray(optionsRaw) || optionsRaw.length === 0) {
|
|
6605
|
+
issues.push({
|
|
6606
|
+
id: `field.imageOptions.required.${fieldKey}`,
|
|
6607
|
+
level: "error",
|
|
6608
|
+
message: "options\uB294 1\uAC1C \uC774\uC0C1 \uD544\uC694\uD569\uB2C8\uB2E4",
|
|
6609
|
+
fieldName: field.name
|
|
6610
|
+
});
|
|
6611
|
+
} else {
|
|
6612
|
+
optionsRaw.forEach((opt, optIndex) => {
|
|
6613
|
+
const imageSrc = isRecord3(opt) ? opt.imageSrc : void 0;
|
|
6614
|
+
if (!isNonEmptyTrimmedString(imageSrc)) {
|
|
6615
|
+
issues.push({
|
|
6616
|
+
id: `field.imageOptions.imageSrc.required.${fieldKey}.${optIndex}`,
|
|
6617
|
+
level: "error",
|
|
6618
|
+
message: "imageSrc\uB294 \uD544\uC218\uC785\uB2C8\uB2E4",
|
|
6619
|
+
fieldName: field.name
|
|
6620
|
+
});
|
|
6621
|
+
}
|
|
6622
|
+
});
|
|
6623
|
+
}
|
|
6624
|
+
}
|
|
6625
|
+
const validation = field.validation;
|
|
6626
|
+
if (validation) {
|
|
6627
|
+
if (isFiniteNumber(validation.min) && isFiniteNumber(validation.max)) {
|
|
6628
|
+
if (validation.min > validation.max) {
|
|
6629
|
+
issues.push({
|
|
6630
|
+
id: `field.validation.minmax.${fieldKey}`,
|
|
6631
|
+
level: "error",
|
|
6632
|
+
message: "validation.min\uC740 validation.max \uC774\uD558\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4",
|
|
6633
|
+
fieldName: field.name
|
|
6634
|
+
});
|
|
6635
|
+
}
|
|
6636
|
+
}
|
|
6637
|
+
if (isNonEmptyTrimmedString(validation.pattern)) {
|
|
6638
|
+
if (!canCompileRegExp(validation.pattern)) {
|
|
6639
|
+
issues.push({
|
|
6640
|
+
id: `field.validation.pattern.${fieldKey}`,
|
|
6641
|
+
level: "error",
|
|
6642
|
+
message: "validation.pattern\uC774 \uC62C\uBC14\uB978 \uC815\uADDC\uC2DD\uC774 \uC544\uB2D9\uB2C8\uB2E4",
|
|
6643
|
+
fieldName: field.name
|
|
6644
|
+
});
|
|
6645
|
+
}
|
|
6646
|
+
}
|
|
6647
|
+
}
|
|
6648
|
+
});
|
|
6649
|
+
return issues;
|
|
6650
|
+
}
|
|
6651
|
+
function hasErrorIssues(issues) {
|
|
6652
|
+
return issues.some((i) => i.level === "error");
|
|
6653
|
+
}
|
|
6654
|
+
function updateSchemaFields(schema, nextFields) {
|
|
6655
|
+
return { fields: nextFields };
|
|
6656
|
+
}
|
|
6657
|
+
function moveField(fields, fromIndex, toIndex) {
|
|
6658
|
+
if (fromIndex < 0 || fromIndex >= fields.length) return fields;
|
|
6659
|
+
if (toIndex < 0 || toIndex >= fields.length) return fields;
|
|
6660
|
+
if (fromIndex === toIndex) return fields;
|
|
6661
|
+
const next = [...fields];
|
|
6662
|
+
const [item] = next.splice(fromIndex, 1);
|
|
6663
|
+
next.splice(toIndex, 0, item);
|
|
6664
|
+
return next;
|
|
6665
|
+
}
|
|
6666
|
+
function duplicateField(fields, index) {
|
|
6667
|
+
if (index < 0 || index >= fields.length) return fields;
|
|
6668
|
+
const target = fields[index];
|
|
6669
|
+
const nextName = createUniqueFieldName(fields, target.name);
|
|
6670
|
+
const cloned = __spreadProps(__spreadValues({}, target), { name: nextName });
|
|
6671
|
+
const next = [...fields];
|
|
6672
|
+
next.splice(index + 1, 0, cloned);
|
|
6673
|
+
return next;
|
|
6674
|
+
}
|
|
6675
|
+
function updateFieldCommonProps(field, next) {
|
|
6676
|
+
const { name, label, description, required } = next;
|
|
6677
|
+
return __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, field), name !== void 0 ? { name } : {}), label !== void 0 ? { label } : {}), description !== void 0 ? { description } : {}), required !== void 0 ? { required } : {});
|
|
6678
|
+
}
|
|
6679
|
+
function updateFieldValidation(field, next) {
|
|
6680
|
+
if (!next) {
|
|
6681
|
+
const _a = field, { validation: _validation } = _a, rest = __objRest(_a, ["validation"]);
|
|
6682
|
+
return rest;
|
|
6683
|
+
}
|
|
6684
|
+
return __spreadProps(__spreadValues({}, field), { validation: next });
|
|
6685
|
+
}
|
|
6686
|
+
function updateTextPlaceholder(field, placeholder) {
|
|
6687
|
+
const type = field.type;
|
|
6688
|
+
if (type === "short_text" || type === "long_text" || type === "number" || type === "email" || type === "dropdown") {
|
|
6689
|
+
return __spreadProps(__spreadValues({}, field), { placeholder });
|
|
6690
|
+
}
|
|
6691
|
+
return field;
|
|
6692
|
+
}
|
|
6693
|
+
function updateOrientation(field, orientation) {
|
|
6694
|
+
const type = field.type;
|
|
6695
|
+
if (type === "choice" || type === "choices") return __spreadProps(__spreadValues({}, field), { orientation });
|
|
6696
|
+
return field;
|
|
6697
|
+
}
|
|
6698
|
+
function updateOptions(field, options) {
|
|
6699
|
+
const type = field.type;
|
|
6700
|
+
if (type === "dropdown" || type === "choice" || type === "radio_cards" || type === "choices") {
|
|
6701
|
+
return __spreadProps(__spreadValues({}, field), { options });
|
|
6702
|
+
}
|
|
6703
|
+
return field;
|
|
6704
|
+
}
|
|
6705
|
+
function updateImageOptions(field, options) {
|
|
6706
|
+
if (field.type === "image_radio_card") {
|
|
6707
|
+
return __spreadProps(__spreadValues({}, field), { options });
|
|
6708
|
+
}
|
|
6709
|
+
return field;
|
|
6710
|
+
}
|
|
6711
|
+
function updateImageLayout(field, next) {
|
|
6712
|
+
if (field.type !== "image_radio_card") return field;
|
|
6713
|
+
return __spreadValues(__spreadValues({}, field), next);
|
|
6714
|
+
}
|
|
6715
|
+
function resetFieldType(field, nextType, allFields) {
|
|
6716
|
+
const base = createDefaultField(nextType, allFields);
|
|
6717
|
+
return __spreadProps(__spreadValues({}, base), {
|
|
6718
|
+
name: field.name,
|
|
6719
|
+
label: field.label,
|
|
6720
|
+
description: field.description,
|
|
6721
|
+
required: field.required,
|
|
6722
|
+
validation: field.validation
|
|
6723
|
+
});
|
|
6724
|
+
}
|
|
6725
|
+
|
|
6726
|
+
// src/molecules/dynamic-form-editor-field-editor-panel.tsx
|
|
6727
|
+
var import_react47 = require("react");
|
|
6279
6728
|
var import_themes56 = require("@radix-ui/themes");
|
|
6729
|
+
var import_jsx_runtime93 = require("react/jsx-runtime");
|
|
6730
|
+
function isRecord4(value) {
|
|
6731
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
6732
|
+
}
|
|
6733
|
+
function isFieldType(value, types) {
|
|
6734
|
+
return types.some((t) => t === value);
|
|
6735
|
+
}
|
|
6736
|
+
function parseOptionalNumber(value) {
|
|
6737
|
+
const trimmed = value.trim();
|
|
6738
|
+
if (trimmed.length === 0) return void 0;
|
|
6739
|
+
const num = Number(trimmed);
|
|
6740
|
+
return Number.isFinite(num) ? num : void 0;
|
|
6741
|
+
}
|
|
6742
|
+
function getValidation(field) {
|
|
6743
|
+
return field.validation ? field.validation : {};
|
|
6744
|
+
}
|
|
6745
|
+
function cleanValidation(next) {
|
|
6746
|
+
const hasAny = next.min !== void 0 || next.max !== void 0 || typeof next.pattern === "string" && next.pattern.trim().length > 0 || typeof next.message === "string" && next.message.trim().length > 0;
|
|
6747
|
+
return hasAny ? next : void 0;
|
|
6748
|
+
}
|
|
6749
|
+
function moveItem(items, fromIndex, toIndex) {
|
|
6750
|
+
if (fromIndex < 0 || fromIndex >= items.length) return items;
|
|
6751
|
+
if (toIndex < 0 || toIndex >= items.length) return items;
|
|
6752
|
+
if (fromIndex === toIndex) return items;
|
|
6753
|
+
const next = [...items];
|
|
6754
|
+
const [item] = next.splice(fromIndex, 1);
|
|
6755
|
+
next.splice(toIndex, 0, item);
|
|
6756
|
+
return next;
|
|
6757
|
+
}
|
|
6758
|
+
function getOptionDrafts(field) {
|
|
6759
|
+
const raw = field.options;
|
|
6760
|
+
if (!Array.isArray(raw)) return [];
|
|
6761
|
+
return raw.map((o) => {
|
|
6762
|
+
if (!isRecord4(o)) return null;
|
|
6763
|
+
const label = typeof o.label === "string" ? o.label : "";
|
|
6764
|
+
const valueRaw = o.value;
|
|
6765
|
+
const value = typeof valueRaw === "string" || typeof valueRaw === "number" ? String(valueRaw) : "";
|
|
6766
|
+
return { label, value };
|
|
6767
|
+
}).filter((v) => v !== null);
|
|
6768
|
+
}
|
|
6769
|
+
function getImageOptionDrafts(field) {
|
|
6770
|
+
const raw = field.options;
|
|
6771
|
+
if (!Array.isArray(raw)) return [];
|
|
6772
|
+
return raw.map(
|
|
6773
|
+
(o) => {
|
|
6774
|
+
if (!isRecord4(o)) return null;
|
|
6775
|
+
const label = typeof o.label === "string" ? o.label : "";
|
|
6776
|
+
const valueRaw = o.value;
|
|
6777
|
+
const value = typeof valueRaw === "string" || typeof valueRaw === "number" ? String(valueRaw) : "";
|
|
6778
|
+
const imageSrc = typeof o.imageSrc === "string" ? o.imageSrc : "";
|
|
6779
|
+
const alt = typeof o.alt === "string" ? o.alt : void 0;
|
|
6780
|
+
return __spreadValues({ label, value, imageSrc }, alt ? { alt } : {});
|
|
6781
|
+
}
|
|
6782
|
+
).filter(
|
|
6783
|
+
(v) => v !== null
|
|
6784
|
+
);
|
|
6785
|
+
}
|
|
6786
|
+
function toFieldOptions(options) {
|
|
6787
|
+
return options.map((o) => ({ label: o.label, value: o.value }));
|
|
6788
|
+
}
|
|
6789
|
+
function toImageFieldOptions(options) {
|
|
6790
|
+
return options.map((o) => __spreadValues({
|
|
6791
|
+
label: o.label,
|
|
6792
|
+
value: o.value,
|
|
6793
|
+
imageSrc: o.imageSrc
|
|
6794
|
+
}, o.alt !== void 0 ? { alt: o.alt } : {}));
|
|
6795
|
+
}
|
|
6796
|
+
function DynamicFormEditorFieldEditorPanel(props) {
|
|
6797
|
+
const {
|
|
6798
|
+
field,
|
|
6799
|
+
fieldIndex,
|
|
6800
|
+
fields,
|
|
6801
|
+
readonly,
|
|
6802
|
+
fieldTypes,
|
|
6803
|
+
onRenameField,
|
|
6804
|
+
onUpdateField,
|
|
6805
|
+
onDeleteField,
|
|
6806
|
+
onMoveField,
|
|
6807
|
+
onDuplicateField
|
|
6808
|
+
} = props;
|
|
6809
|
+
const canMoveUp = fieldIndex > 0;
|
|
6810
|
+
const canMoveDown = fieldIndex >= 0 && fieldIndex < fields.length - 1;
|
|
6811
|
+
const placeholderValue = (0, import_react47.useMemo)(() => {
|
|
6812
|
+
if (!field) return "";
|
|
6813
|
+
return String(field.placeholder || "");
|
|
6814
|
+
}, [field]);
|
|
6815
|
+
return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Card, { style: { flex: 1, minWidth: 520, padding: 12 }, children: /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { direction: "column", gap: "4", children: [
|
|
6816
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
|
|
6817
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "body", children: "\uD544\uB4DC \uD3B8\uC9D1" }),
|
|
6818
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", gap: "1", children: [
|
|
6819
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
6820
|
+
IconButton,
|
|
6821
|
+
{
|
|
6822
|
+
"aria-label": "\uD544\uB4DC \uC704\uB85C",
|
|
6823
|
+
disabled: readonly || !field || !canMoveUp,
|
|
6824
|
+
onClick: () => {
|
|
6825
|
+
onMoveField("up");
|
|
6826
|
+
},
|
|
6827
|
+
variant: "soft",
|
|
6828
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.ChevronUpIcon, {})
|
|
6829
|
+
}
|
|
6830
|
+
),
|
|
6831
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
6832
|
+
IconButton,
|
|
6833
|
+
{
|
|
6834
|
+
"aria-label": "\uD544\uB4DC \uC544\uB798\uB85C",
|
|
6835
|
+
disabled: readonly || !field || !canMoveDown,
|
|
6836
|
+
onClick: () => {
|
|
6837
|
+
onMoveField("down");
|
|
6838
|
+
},
|
|
6839
|
+
variant: "soft",
|
|
6840
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.ChevronDownIcon, {})
|
|
6841
|
+
}
|
|
6842
|
+
),
|
|
6843
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
6844
|
+
IconButton,
|
|
6845
|
+
{
|
|
6846
|
+
"aria-label": "\uD544\uB4DC \uBCF5\uC81C",
|
|
6847
|
+
disabled: readonly || !field,
|
|
6848
|
+
onClick: onDuplicateField,
|
|
6849
|
+
variant: "soft",
|
|
6850
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.CopyIcon, {})
|
|
6851
|
+
}
|
|
6852
|
+
),
|
|
6853
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
6854
|
+
IconButton,
|
|
6855
|
+
{
|
|
6856
|
+
"aria-label": "\uD544\uB4DC \uC0AD\uC81C",
|
|
6857
|
+
disabled: readonly || !field,
|
|
6858
|
+
onClick: onDeleteField,
|
|
6859
|
+
variant: "soft",
|
|
6860
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.TrashIcon, {})
|
|
6861
|
+
}
|
|
6862
|
+
)
|
|
6863
|
+
] })
|
|
6864
|
+
] }),
|
|
6865
|
+
!field ? /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { color: "gray", variant: "caption", children: "\uC67C\uCABD\uC5D0\uC11C \uD544\uB4DC\uB97C \uC120\uD0DD\uD558\uC138\uC694." }) : /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { direction: "column", gap: "3", children: [
|
|
6866
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "end", gap: "2", children: [
|
|
6867
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
6868
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "name" }),
|
|
6869
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
6870
|
+
TextField.Root,
|
|
6871
|
+
{
|
|
6872
|
+
disabled: readonly,
|
|
6873
|
+
onChange: (e) => {
|
|
6874
|
+
onRenameField(e.target.value);
|
|
6875
|
+
},
|
|
6876
|
+
value: field.name
|
|
6877
|
+
}
|
|
6878
|
+
)
|
|
6879
|
+
] }),
|
|
6880
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
6881
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "label" }),
|
|
6882
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
6883
|
+
TextField.Root,
|
|
6884
|
+
{
|
|
6885
|
+
disabled: readonly,
|
|
6886
|
+
onChange: (e) => {
|
|
6887
|
+
onUpdateField(updateFieldCommonProps(field, { label: e.target.value }));
|
|
6888
|
+
},
|
|
6889
|
+
value: field.label
|
|
6890
|
+
}
|
|
6891
|
+
)
|
|
6892
|
+
] })
|
|
6893
|
+
] }),
|
|
6894
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", gap: "2", children: [
|
|
6895
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
|
|
6896
|
+
Select.Root,
|
|
6897
|
+
{
|
|
6898
|
+
disabled: readonly,
|
|
6899
|
+
onValueChange: (v) => {
|
|
6900
|
+
if (!isFieldType(v, fieldTypes)) return;
|
|
6901
|
+
onUpdateField(resetFieldType(field, v, fields));
|
|
6902
|
+
},
|
|
6903
|
+
value: field.type,
|
|
6904
|
+
children: [
|
|
6905
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Trigger, { style: { minWidth: 220 } }),
|
|
6906
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Content, { children: fieldTypes.map((t) => /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Item, { value: t, children: getFieldTypeLabel(t) }, t)) })
|
|
6907
|
+
]
|
|
6908
|
+
}
|
|
6909
|
+
),
|
|
6910
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", gap: "2", children: [
|
|
6911
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
6912
|
+
Checkbox,
|
|
6913
|
+
{
|
|
6914
|
+
checked: Boolean(field.required),
|
|
6915
|
+
disabled: readonly,
|
|
6916
|
+
onCheckedChange: (checked) => {
|
|
6917
|
+
onUpdateField(updateFieldCommonProps(field, { required: checked }));
|
|
6918
|
+
}
|
|
6919
|
+
}
|
|
6920
|
+
),
|
|
6921
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "\uD544\uC218" })
|
|
6922
|
+
] })
|
|
6923
|
+
] }),
|
|
6924
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
|
|
6925
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "description" }),
|
|
6926
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
6927
|
+
TextArea,
|
|
6928
|
+
{
|
|
6929
|
+
disabled: readonly,
|
|
6930
|
+
onChange: (e) => {
|
|
6931
|
+
onUpdateField(
|
|
6932
|
+
updateFieldCommonProps(field, { description: e.target.value })
|
|
6933
|
+
);
|
|
6934
|
+
},
|
|
6935
|
+
rows: 3,
|
|
6936
|
+
value: field.description || ""
|
|
6937
|
+
}
|
|
6938
|
+
)
|
|
6939
|
+
] }),
|
|
6940
|
+
field.type === "short_text" || field.type === "long_text" || field.type === "number" || field.type === "email" || field.type === "dropdown" ? /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
|
|
6941
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "placeholder" }),
|
|
6942
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
6943
|
+
TextField.Root,
|
|
6944
|
+
{
|
|
6945
|
+
disabled: readonly,
|
|
6946
|
+
onChange: (e) => {
|
|
6947
|
+
onUpdateField(updateTextPlaceholder(field, e.target.value));
|
|
6948
|
+
},
|
|
6949
|
+
value: placeholderValue
|
|
6950
|
+
}
|
|
6951
|
+
)
|
|
6952
|
+
] }) : null,
|
|
6953
|
+
field.type === "choice" || field.type === "choices" ? /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
|
|
6954
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "orientation" }),
|
|
6955
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
|
|
6956
|
+
Select.Root,
|
|
6957
|
+
{
|
|
6958
|
+
disabled: readonly,
|
|
6959
|
+
onValueChange: (v) => {
|
|
6960
|
+
const nextOrientation = v === "horizontal" ? "horizontal" : "vertical";
|
|
6961
|
+
onUpdateField(updateOrientation(field, nextOrientation));
|
|
6962
|
+
},
|
|
6963
|
+
value: field.orientation || "vertical",
|
|
6964
|
+
children: [
|
|
6965
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Trigger, { style: { minWidth: 220 } }),
|
|
6966
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(Select.Content, { children: [
|
|
6967
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Item, { value: "vertical", children: "vertical" }),
|
|
6968
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Item, { value: "horizontal", children: "horizontal" })
|
|
6969
|
+
] })
|
|
6970
|
+
]
|
|
6971
|
+
}
|
|
6972
|
+
)
|
|
6973
|
+
] }) : null,
|
|
6974
|
+
field.type === "dropdown" || field.type === "choice" || field.type === "radio_cards" || field.type === "choices" ? /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Card, { style: { padding: 12 }, children: /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { direction: "column", gap: "2", children: [
|
|
6975
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
|
|
6976
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "options" }),
|
|
6977
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
|
|
6978
|
+
Button,
|
|
6979
|
+
{
|
|
6980
|
+
disabled: readonly,
|
|
6981
|
+
onClick: () => {
|
|
6982
|
+
const drafts = getOptionDrafts(field);
|
|
6983
|
+
const nextDrafts = [
|
|
6984
|
+
...drafts,
|
|
6985
|
+
{
|
|
6986
|
+
label: `\uC635\uC158 ${drafts.length + 1}`,
|
|
6987
|
+
value: `option${drafts.length + 1}`
|
|
6988
|
+
}
|
|
6989
|
+
];
|
|
6990
|
+
onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
|
|
6991
|
+
},
|
|
6992
|
+
size: "small",
|
|
6993
|
+
variant: "soft",
|
|
6994
|
+
children: [
|
|
6995
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.PlusIcon, {}),
|
|
6996
|
+
" \uCD94\uAC00"
|
|
6997
|
+
]
|
|
6998
|
+
}
|
|
6999
|
+
)
|
|
7000
|
+
] }),
|
|
7001
|
+
getOptionDrafts(field).map((opt, i) => /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "end", gap: "2", children: [
|
|
7002
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
7003
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "label" }),
|
|
7004
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7005
|
+
TextField.Root,
|
|
7006
|
+
{
|
|
7007
|
+
disabled: readonly,
|
|
7008
|
+
onChange: (e) => {
|
|
7009
|
+
const drafts = getOptionDrafts(field);
|
|
7010
|
+
const nextDrafts = drafts.map(
|
|
7011
|
+
(d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { label: e.target.value }) : d
|
|
7012
|
+
);
|
|
7013
|
+
onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
|
|
7014
|
+
},
|
|
7015
|
+
value: opt.label
|
|
7016
|
+
}
|
|
7017
|
+
)
|
|
7018
|
+
] }),
|
|
7019
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
7020
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "value" }),
|
|
7021
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7022
|
+
TextField.Root,
|
|
7023
|
+
{
|
|
7024
|
+
disabled: readonly,
|
|
7025
|
+
onChange: (e) => {
|
|
7026
|
+
const drafts = getOptionDrafts(field);
|
|
7027
|
+
const nextDrafts = drafts.map(
|
|
7028
|
+
(d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { value: e.target.value }) : d
|
|
7029
|
+
);
|
|
7030
|
+
onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
|
|
7031
|
+
},
|
|
7032
|
+
value: opt.value
|
|
7033
|
+
}
|
|
7034
|
+
)
|
|
7035
|
+
] }),
|
|
7036
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { gap: "1", children: [
|
|
7037
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7038
|
+
IconButton,
|
|
7039
|
+
{
|
|
7040
|
+
"aria-label": "\uC635\uC158 \uC704\uB85C",
|
|
7041
|
+
disabled: readonly || i === 0,
|
|
7042
|
+
onClick: () => {
|
|
7043
|
+
const drafts = getOptionDrafts(field);
|
|
7044
|
+
const nextDrafts = moveItem(drafts, i, i - 1);
|
|
7045
|
+
onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
|
|
7046
|
+
},
|
|
7047
|
+
variant: "soft",
|
|
7048
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.ChevronUpIcon, {})
|
|
7049
|
+
}
|
|
7050
|
+
),
|
|
7051
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7052
|
+
IconButton,
|
|
7053
|
+
{
|
|
7054
|
+
"aria-label": "\uC635\uC158 \uC544\uB798\uB85C",
|
|
7055
|
+
disabled: readonly || i === getOptionDrafts(field).length - 1,
|
|
7056
|
+
onClick: () => {
|
|
7057
|
+
const drafts = getOptionDrafts(field);
|
|
7058
|
+
const nextDrafts = moveItem(drafts, i, i + 1);
|
|
7059
|
+
onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
|
|
7060
|
+
},
|
|
7061
|
+
variant: "soft",
|
|
7062
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.ChevronDownIcon, {})
|
|
7063
|
+
}
|
|
7064
|
+
),
|
|
7065
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7066
|
+
IconButton,
|
|
7067
|
+
{
|
|
7068
|
+
"aria-label": "\uC635\uC158 \uC0AD\uC81C",
|
|
7069
|
+
disabled: readonly,
|
|
7070
|
+
onClick: () => {
|
|
7071
|
+
const drafts = getOptionDrafts(field);
|
|
7072
|
+
const nextDrafts = drafts.filter((_, idx) => idx !== i);
|
|
7073
|
+
onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
|
|
7074
|
+
},
|
|
7075
|
+
variant: "soft",
|
|
7076
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.TrashIcon, {})
|
|
7077
|
+
}
|
|
7078
|
+
)
|
|
7079
|
+
] })
|
|
7080
|
+
] }, `${opt.value}-${opt.label}`))
|
|
7081
|
+
] }) }) : null,
|
|
7082
|
+
field.type === "image_radio_card" ? /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Card, { style: { padding: 12 }, children: /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { direction: "column", gap: "3", children: [
|
|
7083
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
|
|
7084
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "image options" }),
|
|
7085
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
|
|
7086
|
+
Button,
|
|
7087
|
+
{
|
|
7088
|
+
disabled: readonly,
|
|
7089
|
+
onClick: () => {
|
|
7090
|
+
const drafts = getImageOptionDrafts(field);
|
|
7091
|
+
const nextDrafts = [
|
|
7092
|
+
...drafts,
|
|
7093
|
+
{
|
|
7094
|
+
label: `\uC774\uBBF8\uC9C0 ${drafts.length + 1}`,
|
|
7095
|
+
value: `option${drafts.length + 1}`,
|
|
7096
|
+
imageSrc: "https://placehold.co/300x300/png?text=new"
|
|
7097
|
+
}
|
|
7098
|
+
];
|
|
7099
|
+
onUpdateField(updateImageOptions(field, toImageFieldOptions(nextDrafts)));
|
|
7100
|
+
},
|
|
7101
|
+
size: "small",
|
|
7102
|
+
variant: "soft",
|
|
7103
|
+
children: [
|
|
7104
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.PlusIcon, {}),
|
|
7105
|
+
" \uCD94\uAC00"
|
|
7106
|
+
]
|
|
7107
|
+
}
|
|
7108
|
+
)
|
|
7109
|
+
] }),
|
|
7110
|
+
getImageOptionDrafts(field).map((opt, i) => /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7111
|
+
Card,
|
|
7112
|
+
{
|
|
7113
|
+
style: { padding: 10 },
|
|
7114
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { direction: "column", gap: "2", children: [
|
|
7115
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "end", gap: "2", children: [
|
|
7116
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
7117
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "label" }),
|
|
7118
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7119
|
+
TextField.Root,
|
|
7120
|
+
{
|
|
7121
|
+
disabled: readonly,
|
|
7122
|
+
onChange: (e) => {
|
|
7123
|
+
const drafts = getImageOptionDrafts(field);
|
|
7124
|
+
const nextDrafts = drafts.map(
|
|
7125
|
+
(d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { label: e.target.value }) : d
|
|
7126
|
+
);
|
|
7127
|
+
onUpdateField(
|
|
7128
|
+
updateImageOptions(field, toImageFieldOptions(nextDrafts))
|
|
7129
|
+
);
|
|
7130
|
+
},
|
|
7131
|
+
value: opt.label
|
|
7132
|
+
}
|
|
7133
|
+
)
|
|
7134
|
+
] }),
|
|
7135
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
7136
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "value" }),
|
|
7137
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7138
|
+
TextField.Root,
|
|
7139
|
+
{
|
|
7140
|
+
disabled: readonly,
|
|
7141
|
+
onChange: (e) => {
|
|
7142
|
+
const drafts = getImageOptionDrafts(field);
|
|
7143
|
+
const nextDrafts = drafts.map(
|
|
7144
|
+
(d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { value: e.target.value }) : d
|
|
7145
|
+
);
|
|
7146
|
+
onUpdateField(
|
|
7147
|
+
updateImageOptions(field, toImageFieldOptions(nextDrafts))
|
|
7148
|
+
);
|
|
7149
|
+
},
|
|
7150
|
+
value: opt.value
|
|
7151
|
+
}
|
|
7152
|
+
)
|
|
7153
|
+
] })
|
|
7154
|
+
] }),
|
|
7155
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
|
|
7156
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "imageSrc" }),
|
|
7157
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7158
|
+
TextField.Root,
|
|
7159
|
+
{
|
|
7160
|
+
disabled: readonly,
|
|
7161
|
+
onChange: (e) => {
|
|
7162
|
+
const drafts = getImageOptionDrafts(field);
|
|
7163
|
+
const nextDrafts = drafts.map(
|
|
7164
|
+
(d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { imageSrc: e.target.value }) : d
|
|
7165
|
+
);
|
|
7166
|
+
onUpdateField(
|
|
7167
|
+
updateImageOptions(field, toImageFieldOptions(nextDrafts))
|
|
7168
|
+
);
|
|
7169
|
+
},
|
|
7170
|
+
value: opt.imageSrc
|
|
7171
|
+
}
|
|
7172
|
+
)
|
|
7173
|
+
] }),
|
|
7174
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "end", gap: "2", children: [
|
|
7175
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
7176
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "alt" }),
|
|
7177
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7178
|
+
TextField.Root,
|
|
7179
|
+
{
|
|
7180
|
+
disabled: readonly,
|
|
7181
|
+
onChange: (e) => {
|
|
7182
|
+
const drafts = getImageOptionDrafts(field);
|
|
7183
|
+
const nextAlt = e.target.value.trim().length === 0 ? void 0 : e.target.value;
|
|
7184
|
+
const nextDrafts = drafts.map(
|
|
7185
|
+
(d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { alt: nextAlt }) : d
|
|
7186
|
+
);
|
|
7187
|
+
onUpdateField(
|
|
7188
|
+
updateImageOptions(field, toImageFieldOptions(nextDrafts))
|
|
7189
|
+
);
|
|
7190
|
+
},
|
|
7191
|
+
value: opt.alt || ""
|
|
7192
|
+
}
|
|
7193
|
+
)
|
|
7194
|
+
] }),
|
|
7195
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7196
|
+
IconButton,
|
|
7197
|
+
{
|
|
7198
|
+
"aria-label": "\uC774\uBBF8\uC9C0 \uC635\uC158 \uC0AD\uC81C",
|
|
7199
|
+
disabled: readonly,
|
|
7200
|
+
onClick: () => {
|
|
7201
|
+
const drafts = getImageOptionDrafts(field);
|
|
7202
|
+
const nextDrafts = drafts.filter((_, idx) => idx !== i);
|
|
7203
|
+
onUpdateField(
|
|
7204
|
+
updateImageOptions(field, toImageFieldOptions(nextDrafts))
|
|
7205
|
+
);
|
|
7206
|
+
},
|
|
7207
|
+
variant: "soft",
|
|
7208
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.TrashIcon, {})
|
|
7209
|
+
}
|
|
7210
|
+
)
|
|
7211
|
+
] })
|
|
7212
|
+
] })
|
|
7213
|
+
},
|
|
7214
|
+
`${opt.value}-${opt.label}-${opt.imageSrc}`
|
|
7215
|
+
)),
|
|
7216
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { gap: "2", children: [
|
|
7217
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
7218
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "gridColumnsCount" }),
|
|
7219
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7220
|
+
TextField.Root,
|
|
7221
|
+
{
|
|
7222
|
+
disabled: readonly,
|
|
7223
|
+
inputMode: "numeric",
|
|
7224
|
+
onChange: (e) => {
|
|
7225
|
+
onUpdateField(
|
|
7226
|
+
updateImageLayout(field, {
|
|
7227
|
+
gridColumnsCount: parseOptionalNumber(e.target.value)
|
|
7228
|
+
})
|
|
7229
|
+
);
|
|
7230
|
+
},
|
|
7231
|
+
value: String(field.gridColumnsCount || "")
|
|
7232
|
+
}
|
|
7233
|
+
)
|
|
7234
|
+
] }),
|
|
7235
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
7236
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "gridItemHeight" }),
|
|
7237
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7238
|
+
TextField.Root,
|
|
7239
|
+
{
|
|
7240
|
+
disabled: readonly,
|
|
7241
|
+
onChange: (e) => {
|
|
7242
|
+
onUpdateField(
|
|
7243
|
+
updateImageLayout(field, { gridItemHeight: e.target.value })
|
|
7244
|
+
);
|
|
7245
|
+
},
|
|
7246
|
+
value: String(field.gridItemHeight || "")
|
|
7247
|
+
}
|
|
7248
|
+
)
|
|
7249
|
+
] }),
|
|
7250
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
7251
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "gridGap" }),
|
|
7252
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7253
|
+
TextField.Root,
|
|
7254
|
+
{
|
|
7255
|
+
disabled: readonly,
|
|
7256
|
+
onChange: (e) => {
|
|
7257
|
+
onUpdateField(updateImageLayout(field, { gridGap: e.target.value }));
|
|
7258
|
+
},
|
|
7259
|
+
value: String(field.gridGap || "")
|
|
7260
|
+
}
|
|
7261
|
+
)
|
|
7262
|
+
] })
|
|
7263
|
+
] }),
|
|
7264
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
|
|
7265
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "imageFit" }),
|
|
7266
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
|
|
7267
|
+
Select.Root,
|
|
7268
|
+
{
|
|
7269
|
+
disabled: readonly,
|
|
7270
|
+
onValueChange: (v) => {
|
|
7271
|
+
const nextFit = v === "contain" ? "contain" : "cover";
|
|
7272
|
+
onUpdateField(updateImageLayout(field, { imageFit: nextFit }));
|
|
7273
|
+
},
|
|
7274
|
+
value: field.imageFit || "cover",
|
|
7275
|
+
children: [
|
|
7276
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Trigger, { style: { minWidth: 220 } }),
|
|
7277
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(Select.Content, { children: [
|
|
7278
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Item, { value: "cover", children: "cover" }),
|
|
7279
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Item, { value: "contain", children: "contain" })
|
|
7280
|
+
] })
|
|
7281
|
+
]
|
|
7282
|
+
}
|
|
7283
|
+
)
|
|
7284
|
+
] })
|
|
7285
|
+
] }) }) : null,
|
|
7286
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Card, { style: { padding: 12 }, children: /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { direction: "column", gap: "2", children: [
|
|
7287
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "validation" }),
|
|
7288
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { gap: "2", children: [
|
|
7289
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
7290
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "min" }),
|
|
7291
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7292
|
+
TextField.Root,
|
|
7293
|
+
{
|
|
7294
|
+
disabled: readonly,
|
|
7295
|
+
inputMode: "numeric",
|
|
7296
|
+
onChange: (e) => {
|
|
7297
|
+
const current = getValidation(field);
|
|
7298
|
+
const next = cleanValidation(__spreadProps(__spreadValues({}, current), {
|
|
7299
|
+
min: parseOptionalNumber(e.target.value)
|
|
7300
|
+
}));
|
|
7301
|
+
onUpdateField(updateFieldValidation(field, next));
|
|
7302
|
+
},
|
|
7303
|
+
value: getValidation(field).min !== void 0 ? String(getValidation(field).min) : ""
|
|
7304
|
+
}
|
|
7305
|
+
)
|
|
7306
|
+
] }),
|
|
7307
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
7308
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "max" }),
|
|
7309
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7310
|
+
TextField.Root,
|
|
7311
|
+
{
|
|
7312
|
+
disabled: readonly,
|
|
7313
|
+
inputMode: "numeric",
|
|
7314
|
+
onChange: (e) => {
|
|
7315
|
+
const current = getValidation(field);
|
|
7316
|
+
const next = cleanValidation(__spreadProps(__spreadValues({}, current), {
|
|
7317
|
+
max: parseOptionalNumber(e.target.value)
|
|
7318
|
+
}));
|
|
7319
|
+
onUpdateField(updateFieldValidation(field, next));
|
|
7320
|
+
},
|
|
7321
|
+
value: getValidation(field).max !== void 0 ? String(getValidation(field).max) : ""
|
|
7322
|
+
}
|
|
7323
|
+
)
|
|
7324
|
+
] })
|
|
7325
|
+
] }),
|
|
7326
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
|
|
7327
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "pattern" }),
|
|
7328
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7329
|
+
TextField.Root,
|
|
7330
|
+
{
|
|
7331
|
+
disabled: readonly,
|
|
7332
|
+
onChange: (e) => {
|
|
7333
|
+
const current = getValidation(field);
|
|
7334
|
+
const next = cleanValidation(__spreadProps(__spreadValues({}, current), { pattern: e.target.value }));
|
|
7335
|
+
onUpdateField(updateFieldValidation(field, next));
|
|
7336
|
+
},
|
|
7337
|
+
value: String(getValidation(field).pattern || "")
|
|
7338
|
+
}
|
|
7339
|
+
)
|
|
7340
|
+
] }),
|
|
7341
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
|
|
7342
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "message" }),
|
|
7343
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7344
|
+
TextField.Root,
|
|
7345
|
+
{
|
|
7346
|
+
disabled: readonly,
|
|
7347
|
+
onChange: (e) => {
|
|
7348
|
+
const current = getValidation(field);
|
|
7349
|
+
const next = cleanValidation(__spreadProps(__spreadValues({}, current), { message: e.target.value }));
|
|
7350
|
+
onUpdateField(updateFieldValidation(field, next));
|
|
7351
|
+
},
|
|
7352
|
+
value: String(getValidation(field).message || "")
|
|
7353
|
+
}
|
|
7354
|
+
)
|
|
7355
|
+
] })
|
|
7356
|
+
] }) })
|
|
7357
|
+
] })
|
|
7358
|
+
] }) });
|
|
7359
|
+
}
|
|
7360
|
+
|
|
7361
|
+
// src/molecules/dynamic-form-editor-field-list-panel.tsx
|
|
7362
|
+
var import_react48 = require("react");
|
|
7363
|
+
var import_themes57 = require("@radix-ui/themes");
|
|
7364
|
+
var import_jsx_runtime94 = require("react/jsx-runtime");
|
|
7365
|
+
function isFieldType2(value, types) {
|
|
7366
|
+
return types.some((t) => t === value);
|
|
7367
|
+
}
|
|
7368
|
+
function DynamicFormEditorFieldListPanel(props) {
|
|
7369
|
+
const {
|
|
7370
|
+
fields,
|
|
7371
|
+
selectedFieldName,
|
|
7372
|
+
readonly,
|
|
7373
|
+
fieldTypes,
|
|
7374
|
+
hasFieldError,
|
|
7375
|
+
onSelectFieldName,
|
|
7376
|
+
onAddField
|
|
7377
|
+
} = props;
|
|
7378
|
+
const isEmpty = fields.length === 0;
|
|
7379
|
+
const triggerPlaceholder = (0, import_react48.useMemo)(() => {
|
|
7380
|
+
return readonly ? "\uCD94\uAC00(\uC77D\uAE30 \uC804\uC6A9)" : "\uCD94\uAC00";
|
|
7381
|
+
}, [readonly]);
|
|
7382
|
+
return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Card, { style: { width: 340, padding: 12 }, children: /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_themes22.Flex, { direction: "column", gap: "3", children: [
|
|
7383
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
|
|
7384
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Typo, { variant: "body", children: "\uD544\uB4DC" }),
|
|
7385
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
7386
|
+
Select.Root,
|
|
7387
|
+
{
|
|
7388
|
+
disabled: readonly,
|
|
7389
|
+
onValueChange: (v) => {
|
|
7390
|
+
if (!isFieldType2(v, fieldTypes)) return;
|
|
7391
|
+
onAddField(v);
|
|
7392
|
+
},
|
|
7393
|
+
value: "",
|
|
7394
|
+
children: [
|
|
7395
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Select.Trigger, { placeholder: triggerPlaceholder }),
|
|
7396
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Select.Content, { children: fieldTypes.map((t) => /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Select.Item, { value: t, children: getFieldTypeLabel(t) }, t)) })
|
|
7397
|
+
]
|
|
7398
|
+
}
|
|
7399
|
+
)
|
|
7400
|
+
] }),
|
|
7401
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_themes22.Flex, { direction: "column", gap: "2", children: [
|
|
7402
|
+
isEmpty ? /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Typo, { color: "gray", variant: "caption", children: "\uC544\uC9C1 \uD544\uB4DC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4." }) : null,
|
|
7403
|
+
fields.map((field) => {
|
|
7404
|
+
const isSelected = field.name === selectedFieldName;
|
|
7405
|
+
const hasError = hasFieldError(field.name);
|
|
7406
|
+
return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
7407
|
+
Card,
|
|
7408
|
+
{
|
|
7409
|
+
error: isSelected ? hasError : void 0,
|
|
7410
|
+
onClick: () => {
|
|
7411
|
+
onSelectFieldName(field.name);
|
|
7412
|
+
},
|
|
7413
|
+
style: {
|
|
7414
|
+
padding: 10,
|
|
7415
|
+
cursor: "pointer",
|
|
7416
|
+
opacity: readonly ? 0.8 : 1,
|
|
7417
|
+
border: isSelected ? "1px solid var(--accent-9)" : "1px solid transparent"
|
|
7418
|
+
},
|
|
7419
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_themes57.Box, { style: { minWidth: 0 }, children: [
|
|
7420
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
7421
|
+
Typo,
|
|
7422
|
+
{
|
|
7423
|
+
style: {
|
|
7424
|
+
whiteSpace: "nowrap",
|
|
7425
|
+
overflow: "hidden",
|
|
7426
|
+
textOverflow: "ellipsis"
|
|
7427
|
+
},
|
|
7428
|
+
variant: "body",
|
|
7429
|
+
children: field.label
|
|
7430
|
+
}
|
|
7431
|
+
),
|
|
7432
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(Typo, { color: "gray", variant: "caption", children: [
|
|
7433
|
+
field.name,
|
|
7434
|
+
" \xB7 ",
|
|
7435
|
+
field.type,
|
|
7436
|
+
field.required ? " \xB7 required" : ""
|
|
7437
|
+
] })
|
|
7438
|
+
] })
|
|
7439
|
+
},
|
|
7440
|
+
field.name
|
|
7441
|
+
);
|
|
7442
|
+
})
|
|
7443
|
+
] })
|
|
7444
|
+
] }) });
|
|
7445
|
+
}
|
|
7446
|
+
|
|
7447
|
+
// src/molecules/dynamic-form-editor-issues-panel.tsx
|
|
7448
|
+
var import_jsx_runtime95 = require("react/jsx-runtime");
|
|
7449
|
+
function DynamicFormEditorIssuesPanel(props) {
|
|
7450
|
+
const { issues } = props;
|
|
7451
|
+
if (issues.length === 0) return null;
|
|
7452
|
+
return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Card, { style: { padding: 12 }, children: /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_themes22.Flex, { direction: "column", gap: "2", children: [
|
|
7453
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Typo, { variant: "caption", children: "\uC2A4\uD0A4\uB9C8 \uC774\uC288" }),
|
|
7454
|
+
issues.map((i) => /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(
|
|
7455
|
+
Typo,
|
|
7456
|
+
{
|
|
7457
|
+
color: i.level === "error" ? "red" : "gray",
|
|
7458
|
+
variant: "caption",
|
|
7459
|
+
children: [
|
|
7460
|
+
"[",
|
|
7461
|
+
i.level,
|
|
7462
|
+
"] ",
|
|
7463
|
+
i.message,
|
|
7464
|
+
i.fieldName ? ` (field: ${i.fieldName})` : ""
|
|
7465
|
+
]
|
|
7466
|
+
},
|
|
7467
|
+
i.id
|
|
7468
|
+
))
|
|
7469
|
+
] }) });
|
|
7470
|
+
}
|
|
7471
|
+
|
|
7472
|
+
// src/molecules/dynamic-form-editor-preview-panel.tsx
|
|
7473
|
+
var import_jsx_runtime96 = require("react/jsx-runtime");
|
|
7474
|
+
function DynamicFormEditorPreviewPanel(props) {
|
|
7475
|
+
const { show, fields } = props;
|
|
7476
|
+
if (!show) return null;
|
|
7477
|
+
return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Card, { style: { width: 420, padding: 12 }, children: /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(import_themes22.Flex, { direction: "column", gap: "3", children: [
|
|
7478
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Typo, { variant: "body", children: "\uD504\uB9AC\uBDF0" }),
|
|
7479
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)(DynamicForm.Root, { fields, onSubmit: () => void 0, readonly: true, children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(DynamicForm.FieldList, { labelVariant: "body" }) })
|
|
7480
|
+
] }) });
|
|
7481
|
+
}
|
|
7482
|
+
|
|
7483
|
+
// src/molecules/dynamic-form-editor.tsx
|
|
7484
|
+
var import_jsx_runtime97 = require("react/jsx-runtime");
|
|
7485
|
+
function getInitialSchema(value, defaultValue) {
|
|
7486
|
+
if (value !== void 0) return normalizeSchema(value);
|
|
7487
|
+
return normalizeSchema(defaultValue);
|
|
7488
|
+
}
|
|
7489
|
+
function getSelectedField(schema, selectedFieldName) {
|
|
7490
|
+
if (!selectedFieldName) return { field: null, index: -1 };
|
|
7491
|
+
const index = findFieldIndexByName(schema.fields, selectedFieldName);
|
|
7492
|
+
if (index < 0) return { field: null, index: -1 };
|
|
7493
|
+
return { field: schema.fields[index], index };
|
|
7494
|
+
}
|
|
7495
|
+
function DynamicFormEditor(props) {
|
|
7496
|
+
const {
|
|
7497
|
+
value,
|
|
7498
|
+
defaultValue,
|
|
7499
|
+
onChange,
|
|
7500
|
+
onSave,
|
|
7501
|
+
onCancel,
|
|
7502
|
+
readonly = false,
|
|
7503
|
+
showPreview = false
|
|
7504
|
+
} = props;
|
|
7505
|
+
const isControlled = value !== void 0;
|
|
7506
|
+
const [uncontrolledSchema, setUncontrolledSchema] = (0, import_react49.useState)(
|
|
7507
|
+
() => getInitialSchema(void 0, defaultValue)
|
|
7508
|
+
);
|
|
7509
|
+
const effectiveSchema = (0, import_react49.useMemo)(() => {
|
|
7510
|
+
if (isControlled) return normalizeSchema(value);
|
|
7511
|
+
return uncontrolledSchema;
|
|
7512
|
+
}, [isControlled, uncontrolledSchema, value]);
|
|
7513
|
+
const [selectedFieldName, setSelectedFieldName] = (0, import_react49.useState)(() => {
|
|
7514
|
+
var _a, _b;
|
|
7515
|
+
const initialSchema = getInitialSchema(value, defaultValue);
|
|
7516
|
+
return (_b = (_a = initialSchema.fields[0]) == null ? void 0 : _a.name) != null ? _b : null;
|
|
7517
|
+
});
|
|
7518
|
+
const selected = (0, import_react49.useMemo)(() => {
|
|
7519
|
+
return getSelectedField(effectiveSchema, selectedFieldName);
|
|
7520
|
+
}, [effectiveSchema, selectedFieldName]);
|
|
7521
|
+
const issues = (0, import_react49.useMemo)(() => {
|
|
7522
|
+
return validateDynamicFormSchema(effectiveSchema);
|
|
7523
|
+
}, [effectiveSchema]);
|
|
7524
|
+
const errorFieldNameSet = (0, import_react49.useMemo)(() => {
|
|
7525
|
+
const set = /* @__PURE__ */ new Set();
|
|
7526
|
+
issues.forEach((i) => {
|
|
7527
|
+
if (i.level === "error" && i.fieldName) set.add(i.fieldName);
|
|
7528
|
+
});
|
|
7529
|
+
return set;
|
|
7530
|
+
}, [issues]);
|
|
7531
|
+
const hasFieldError = (0, import_react49.useCallback)(
|
|
7532
|
+
(fieldName) => {
|
|
7533
|
+
return errorFieldNameSet.has(fieldName);
|
|
7534
|
+
},
|
|
7535
|
+
[errorFieldNameSet]
|
|
7536
|
+
);
|
|
7537
|
+
const fieldTypes = (0, import_react49.useMemo)(() => getFieldTypes(), []);
|
|
7538
|
+
(0, import_react49.useEffect)(() => {
|
|
7539
|
+
var _a, _b;
|
|
7540
|
+
if (selectedFieldName && selected.field) return;
|
|
7541
|
+
setSelectedFieldName((_b = (_a = effectiveSchema.fields[0]) == null ? void 0 : _a.name) != null ? _b : null);
|
|
7542
|
+
}, [effectiveSchema.fields, selected.field, selectedFieldName]);
|
|
7543
|
+
(0, import_react49.useEffect)(() => {
|
|
7544
|
+
if (isControlled) return;
|
|
7545
|
+
setUncontrolledSchema(getInitialSchema(void 0, defaultValue));
|
|
7546
|
+
}, [defaultValue, isControlled]);
|
|
7547
|
+
const applySchema = (0, import_react49.useCallback)(
|
|
7548
|
+
(next) => {
|
|
7549
|
+
onChange == null ? void 0 : onChange(next);
|
|
7550
|
+
if (!isControlled) setUncontrolledSchema(next);
|
|
7551
|
+
},
|
|
7552
|
+
[isControlled, onChange]
|
|
7553
|
+
);
|
|
7554
|
+
const handleAddField = (0, import_react49.useCallback)(
|
|
7555
|
+
(type) => {
|
|
7556
|
+
if (readonly) return;
|
|
7557
|
+
const nextField = createDefaultField(type, effectiveSchema.fields);
|
|
7558
|
+
const nextFields = [...effectiveSchema.fields, nextField];
|
|
7559
|
+
applySchema(updateSchemaFields(effectiveSchema, nextFields));
|
|
7560
|
+
setSelectedFieldName(nextField.name);
|
|
7561
|
+
},
|
|
7562
|
+
[applySchema, effectiveSchema, readonly]
|
|
7563
|
+
);
|
|
7564
|
+
const handleUpdateSelectedField = (0, import_react49.useCallback)(
|
|
7565
|
+
(nextField) => {
|
|
7566
|
+
if (readonly) return;
|
|
7567
|
+
if (!selected.field || selected.index < 0) return;
|
|
7568
|
+
const nextFields = effectiveSchema.fields.map(
|
|
7569
|
+
(f, i) => i === selected.index ? nextField : f
|
|
7570
|
+
);
|
|
7571
|
+
applySchema(updateSchemaFields(effectiveSchema, nextFields));
|
|
7572
|
+
},
|
|
7573
|
+
[applySchema, effectiveSchema, readonly, selected.field, selected.index]
|
|
7574
|
+
);
|
|
7575
|
+
const handleRenameSelected = (0, import_react49.useCallback)(
|
|
7576
|
+
(nextName) => {
|
|
7577
|
+
if (readonly) return;
|
|
7578
|
+
const currentField = selected.field;
|
|
7579
|
+
if (!currentField) return;
|
|
7580
|
+
const others = effectiveSchema.fields.filter(
|
|
7581
|
+
(f) => f.name !== currentField.name
|
|
7582
|
+
);
|
|
7583
|
+
const uniqueName = createUniqueFieldName(others, nextName);
|
|
7584
|
+
const nextField = __spreadProps(__spreadValues({}, currentField), { name: uniqueName });
|
|
7585
|
+
handleUpdateSelectedField(nextField);
|
|
7586
|
+
setSelectedFieldName(uniqueName);
|
|
7587
|
+
},
|
|
7588
|
+
[effectiveSchema.fields, handleUpdateSelectedField, readonly, selected.field]
|
|
7589
|
+
);
|
|
7590
|
+
const handleDeleteSelected = (0, import_react49.useCallback)(() => {
|
|
7591
|
+
if (readonly) return;
|
|
7592
|
+
if (!selected.field || selected.index < 0) return;
|
|
7593
|
+
const nextFields = effectiveSchema.fields.filter(
|
|
7594
|
+
(_, i) => i !== selected.index
|
|
7595
|
+
);
|
|
7596
|
+
applySchema(updateSchemaFields(effectiveSchema, nextFields));
|
|
7597
|
+
let nextSelected = null;
|
|
7598
|
+
if (nextFields.length > selected.index) nextSelected = nextFields[selected.index].name;
|
|
7599
|
+
else if (nextFields.length > 0) nextSelected = nextFields[0].name;
|
|
7600
|
+
setSelectedFieldName(nextSelected);
|
|
7601
|
+
}, [applySchema, effectiveSchema, readonly, selected.field, selected.index]);
|
|
7602
|
+
const handleMoveSelected = (0, import_react49.useCallback)(
|
|
7603
|
+
(direction) => {
|
|
7604
|
+
if (readonly) return;
|
|
7605
|
+
if (!selected.field || selected.index < 0) return;
|
|
7606
|
+
const toIndex = direction === "up" ? selected.index - 1 : selected.index + 1;
|
|
7607
|
+
const nextFields = moveField(
|
|
7608
|
+
effectiveSchema.fields,
|
|
7609
|
+
selected.index,
|
|
7610
|
+
toIndex
|
|
7611
|
+
);
|
|
7612
|
+
applySchema(updateSchemaFields(effectiveSchema, nextFields));
|
|
7613
|
+
},
|
|
7614
|
+
[applySchema, effectiveSchema, readonly, selected.field, selected.index]
|
|
7615
|
+
);
|
|
7616
|
+
const handleDuplicateSelected = (0, import_react49.useCallback)(() => {
|
|
7617
|
+
if (readonly) return;
|
|
7618
|
+
if (!selected.field || selected.index < 0) return;
|
|
7619
|
+
const nextFields = duplicateField(
|
|
7620
|
+
effectiveSchema.fields,
|
|
7621
|
+
selected.index
|
|
7622
|
+
);
|
|
7623
|
+
applySchema(updateSchemaFields(effectiveSchema, nextFields));
|
|
7624
|
+
const duplicatedIndex = selected.index + 1;
|
|
7625
|
+
const nextSelected = nextFields.length > duplicatedIndex ? nextFields[duplicatedIndex].name : selected.field.name;
|
|
7626
|
+
setSelectedFieldName(nextSelected);
|
|
7627
|
+
}, [applySchema, effectiveSchema, readonly, selected.field, selected.index]);
|
|
7628
|
+
const handleSave = (0, import_react49.useCallback)(() => {
|
|
7629
|
+
if (!onSave) return;
|
|
7630
|
+
const result = onSave(effectiveSchema);
|
|
7631
|
+
void result;
|
|
7632
|
+
}, [effectiveSchema, onSave]);
|
|
7633
|
+
const disableSave = readonly || !onSave || hasErrorIssues(issues);
|
|
7634
|
+
return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_themes22.Flex, { align: "start", gap: "4", style: { width: "100%" }, children: [
|
|
7635
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
7636
|
+
DynamicFormEditorFieldListPanel,
|
|
7637
|
+
{
|
|
7638
|
+
fieldTypes,
|
|
7639
|
+
fields: effectiveSchema.fields,
|
|
7640
|
+
hasFieldError,
|
|
7641
|
+
onAddField: handleAddField,
|
|
7642
|
+
onSelectFieldName: setSelectedFieldName,
|
|
7643
|
+
readonly,
|
|
7644
|
+
selectedFieldName
|
|
7645
|
+
}
|
|
7646
|
+
),
|
|
7647
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_themes22.Flex, { direction: "column", gap: "3", style: { flex: 1, minWidth: 520 }, children: [
|
|
7648
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
7649
|
+
DynamicFormEditorFieldEditorPanel,
|
|
7650
|
+
{
|
|
7651
|
+
field: selected.field,
|
|
7652
|
+
fieldIndex: selected.index,
|
|
7653
|
+
fieldTypes,
|
|
7654
|
+
fields: effectiveSchema.fields,
|
|
7655
|
+
onDeleteField: handleDeleteSelected,
|
|
7656
|
+
onDuplicateField: handleDuplicateSelected,
|
|
7657
|
+
onMoveField: handleMoveSelected,
|
|
7658
|
+
onRenameField: handleRenameSelected,
|
|
7659
|
+
onUpdateField: handleUpdateSelectedField,
|
|
7660
|
+
readonly
|
|
7661
|
+
}
|
|
7662
|
+
),
|
|
7663
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(DynamicFormEditorIssuesPanel, { issues }),
|
|
7664
|
+
onSave || onCancel ? /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_themes22.Flex, { gap: "2", justify: "end", children: [
|
|
7665
|
+
onCancel ? /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Button, { disabled: readonly, onClick: onCancel, variant: "soft", children: "\uCDE8\uC18C" }) : null,
|
|
7666
|
+
onSave ? /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Button, { disabled: disableSave, onClick: handleSave, children: "\uC800\uC7A5" }) : null
|
|
7667
|
+
] }) : null
|
|
7668
|
+
] }),
|
|
7669
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(DynamicFormEditorPreviewPanel, { fields: effectiveSchema.fields, show: showPreview })
|
|
7670
|
+
] });
|
|
7671
|
+
}
|
|
7672
|
+
|
|
7673
|
+
// src/theme/use-theme.tsx
|
|
7674
|
+
var import_themes58 = require("@radix-ui/themes");
|
|
6280
7675
|
|
|
6281
7676
|
// src/ui-props/index.ts
|
|
6282
7677
|
var uiProps = __toESM(require("@radix-ui/themes/dist/cjs/props/index.js"), 1);
|
|
6283
7678
|
|
|
6284
7679
|
// src/charts/horizontal-bar-chart.tsx
|
|
6285
|
-
var
|
|
7680
|
+
var import_jsx_runtime98 = require("react/jsx-runtime");
|
|
6286
7681
|
function HorizontalBarChart(props) {
|
|
6287
7682
|
const { total, value, backgroundColor, barColor, height } = props;
|
|
6288
|
-
return /* @__PURE__ */ (0,
|
|
7683
|
+
return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
6289
7684
|
"div",
|
|
6290
7685
|
{
|
|
6291
7686
|
className: "tipp_horizontal-bar-chart bar-wrapper",
|
|
6292
7687
|
style: { height, backgroundColor },
|
|
6293
|
-
children: /* @__PURE__ */ (0,
|
|
7688
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
6294
7689
|
"div",
|
|
6295
7690
|
{
|
|
6296
7691
|
style: {
|
|
6297
7692
|
width: `${Math.round(value / total * 100)}%`,
|
|
6298
7693
|
height: "100%"
|
|
6299
7694
|
},
|
|
6300
|
-
children: /* @__PURE__ */ (0,
|
|
7695
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "bar", style: { backgroundColor: barColor } })
|
|
6301
7696
|
}
|
|
6302
7697
|
)
|
|
6303
7698
|
}
|
|
@@ -6453,23 +7848,23 @@ var EchartDefaultProps = {
|
|
|
6453
7848
|
};
|
|
6454
7849
|
|
|
6455
7850
|
// src/app/platform/userInfos/coaching-customer-info/small.tsx
|
|
6456
|
-
var
|
|
7851
|
+
var import_jsx_runtime99 = require("react/jsx-runtime");
|
|
6457
7852
|
function CoachingCustomerInfoSmall({
|
|
6458
7853
|
customer,
|
|
6459
7854
|
children,
|
|
6460
7855
|
badge
|
|
6461
7856
|
}) {
|
|
6462
|
-
return /* @__PURE__ */ (0,
|
|
7857
|
+
return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
|
|
6463
7858
|
import_themes22.Flex,
|
|
6464
7859
|
{
|
|
6465
7860
|
direction: { initial: "column", xs: "row" },
|
|
6466
7861
|
gap: "3",
|
|
6467
7862
|
justify: "between",
|
|
6468
7863
|
children: [
|
|
6469
|
-
/* @__PURE__ */ (0,
|
|
6470
|
-
/* @__PURE__ */ (0,
|
|
6471
|
-
/* @__PURE__ */ (0,
|
|
6472
|
-
/* @__PURE__ */ (0,
|
|
7864
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_themes6.Box, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_themes23.Grid, { align: "center", columns: "auto auto 1fr", gapX: "3", children: [
|
|
7865
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Heading2, { variant: "heading3", children: (customer == null ? void 0 : customer.username) || "\uC774\uB984 \uC5C6\uC74C" }),
|
|
7866
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Typo, { color: "gray", truncate: true, variant: "body", children: customer == null ? void 0 : customer.company }),
|
|
7867
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_themes6.Box, { style: { justifySelf: "end" }, children: badge })
|
|
6473
7868
|
] }) }),
|
|
6474
7869
|
children
|
|
6475
7870
|
]
|
|
@@ -6480,7 +7875,7 @@ function CoachingCustomerInfoSmall({
|
|
|
6480
7875
|
// src/app/platform/userInfos/utils.tsx
|
|
6481
7876
|
var import_date_fns3 = require("date-fns");
|
|
6482
7877
|
var import_react_icons10 = require("@radix-ui/react-icons");
|
|
6483
|
-
var
|
|
7878
|
+
var import_jsx_runtime100 = require("react/jsx-runtime");
|
|
6484
7879
|
var infoList = [
|
|
6485
7880
|
{ label: "\uC774\uB984", getValue: (customer) => customer == null ? void 0 : customer.username },
|
|
6486
7881
|
{ label: "\uC131\uBCC4", getValue: (customer) => customer == null ? void 0 : customer.gender },
|
|
@@ -6540,21 +7935,21 @@ var sessionList = [
|
|
|
6540
7935
|
var renderItem = (args) => {
|
|
6541
7936
|
const { info, data, onClickCopy } = args;
|
|
6542
7937
|
const value = info.getValue(data);
|
|
6543
|
-
return /* @__PURE__ */ (0,
|
|
7938
|
+
return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_jsx_runtime100.Fragment, { children: [
|
|
6544
7939
|
info.render ? info.render(value) : value || "-",
|
|
6545
|
-
info.copyable && value ? /* @__PURE__ */ (0,
|
|
7940
|
+
info.copyable && value ? /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(CopyButton, { onClickCopy, value }) : null
|
|
6546
7941
|
] });
|
|
6547
7942
|
};
|
|
6548
7943
|
var renderDataListItem = (args) => {
|
|
6549
7944
|
const { info, data, onClickCopy } = args;
|
|
6550
|
-
return /* @__PURE__ */ (0,
|
|
6551
|
-
/* @__PURE__ */ (0,
|
|
6552
|
-
/* @__PURE__ */ (0,
|
|
7945
|
+
return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_themes15.DataList.Item, { children: [
|
|
7946
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_themes15.DataList.Label, { children: info.label }),
|
|
7947
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_themes15.DataList.Value, { children: renderItem({ info, data, onClickCopy }) })
|
|
6553
7948
|
] }, info.label);
|
|
6554
7949
|
};
|
|
6555
7950
|
function CopyButton(props) {
|
|
6556
7951
|
const { value, onClickCopy } = props;
|
|
6557
|
-
return /* @__PURE__ */ (0,
|
|
7952
|
+
return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
6558
7953
|
Button,
|
|
6559
7954
|
{
|
|
6560
7955
|
color: "gray",
|
|
@@ -6563,13 +7958,13 @@ function CopyButton(props) {
|
|
|
6563
7958
|
},
|
|
6564
7959
|
style: { marginLeft: "0", marginTop: "0" },
|
|
6565
7960
|
variant: "transparent",
|
|
6566
|
-
children: /* @__PURE__ */ (0,
|
|
7961
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_react_icons10.CopyIcon, {})
|
|
6567
7962
|
}
|
|
6568
7963
|
);
|
|
6569
7964
|
}
|
|
6570
7965
|
|
|
6571
7966
|
// src/app/platform/userInfos/coaching-customer-info/medium.tsx
|
|
6572
|
-
var
|
|
7967
|
+
var import_jsx_runtime101 = require("react/jsx-runtime");
|
|
6573
7968
|
function CoachingCustomerInfoMedium({
|
|
6574
7969
|
customer,
|
|
6575
7970
|
session,
|
|
@@ -6577,28 +7972,28 @@ function CoachingCustomerInfoMedium({
|
|
|
6577
7972
|
badge,
|
|
6578
7973
|
onClickCopy
|
|
6579
7974
|
}) {
|
|
6580
|
-
return /* @__PURE__ */ (0,
|
|
6581
|
-
/* @__PURE__ */ (0,
|
|
6582
|
-
/* @__PURE__ */ (0,
|
|
6583
|
-
/* @__PURE__ */ (0,
|
|
7975
|
+
return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
|
|
7976
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_themes6.Box, { children: [
|
|
7977
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_themes22.Flex, { align: "center", justify: "between", mb: "1", width: "100%", children: [
|
|
7978
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Heading2, { variant: "heading2", children: (customer == null ? void 0 : customer.username) || "\uC774\uB984 \uC5C6\uC74C" }),
|
|
6584
7979
|
badge
|
|
6585
7980
|
] }),
|
|
6586
|
-
/* @__PURE__ */ (0,
|
|
7981
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Heading2, { truncate: true, variant: "heading4", weight: "regular", children: customer == null ? void 0 : customer.company })
|
|
6587
7982
|
] }),
|
|
6588
7983
|
children,
|
|
6589
|
-
/* @__PURE__ */ (0,
|
|
7984
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Card, { size: "2", children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_themes15.DataList.Root, { orientation: "vertical", children: sessionList.map(
|
|
6590
7985
|
(el) => renderDataListItem({
|
|
6591
7986
|
info: el,
|
|
6592
7987
|
data: session,
|
|
6593
7988
|
onClickCopy
|
|
6594
7989
|
})
|
|
6595
7990
|
) }) }),
|
|
6596
|
-
/* @__PURE__ */ (0,
|
|
6597
|
-
/* @__PURE__ */ (0,
|
|
6598
|
-
/* @__PURE__ */ (0,
|
|
7991
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_themes23.Grid, { align: "center", columns: "auto 1fr", gap: "3", children: [
|
|
7992
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Heading2, { variant: "heading5", children: "\uACE0\uAC1D \uC815\uBCF4" }),
|
|
7993
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_themes39.Separator, { size: "4" })
|
|
6599
7994
|
] }),
|
|
6600
|
-
/* @__PURE__ */ (0,
|
|
6601
|
-
return /* @__PURE__ */ (0,
|
|
7995
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_themes22.Flex, { direction: "column", gap: "4", children: infoList.map((el) => {
|
|
7996
|
+
return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Typo, { children: renderItem({
|
|
6602
7997
|
info: el,
|
|
6603
7998
|
data: customer,
|
|
6604
7999
|
onClickCopy
|
|
@@ -6608,7 +8003,7 @@ function CoachingCustomerInfoMedium({
|
|
|
6608
8003
|
}
|
|
6609
8004
|
|
|
6610
8005
|
// src/app/platform/userInfos/coaching-customer-info/large.tsx
|
|
6611
|
-
var
|
|
8006
|
+
var import_jsx_runtime102 = require("react/jsx-runtime");
|
|
6612
8007
|
function CoachingCustomerInfoLarge({
|
|
6613
8008
|
customer,
|
|
6614
8009
|
session,
|
|
@@ -6616,24 +8011,24 @@ function CoachingCustomerInfoLarge({
|
|
|
6616
8011
|
badge,
|
|
6617
8012
|
onClickCopy
|
|
6618
8013
|
}) {
|
|
6619
|
-
return /* @__PURE__ */ (0,
|
|
6620
|
-
/* @__PURE__ */ (0,
|
|
6621
|
-
/* @__PURE__ */ (0,
|
|
6622
|
-
/* @__PURE__ */ (0,
|
|
8014
|
+
return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
|
|
8015
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(import_themes6.Box, { children: [
|
|
8016
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(import_themes22.Flex, { align: "center", justify: "between", mb: "1", width: "100%", children: [
|
|
8017
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Heading2, { variant: "heading2", children: (customer == null ? void 0 : customer.username) || "\uC774\uB984 \uC5C6\uC74C" }),
|
|
6623
8018
|
badge
|
|
6624
8019
|
] }),
|
|
6625
|
-
/* @__PURE__ */ (0,
|
|
8020
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Heading2, { truncate: true, variant: "heading4", weight: "regular", children: customer == null ? void 0 : customer.company })
|
|
6626
8021
|
] }),
|
|
6627
8022
|
children,
|
|
6628
|
-
/* @__PURE__ */ (0,
|
|
8023
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Card, { size: "2", children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_themes15.DataList.Root, { children: sessionList.map(
|
|
6629
8024
|
(el) => renderDataListItem({
|
|
6630
8025
|
info: el,
|
|
6631
8026
|
data: session,
|
|
6632
8027
|
onClickCopy
|
|
6633
8028
|
})
|
|
6634
8029
|
) }) }),
|
|
6635
|
-
/* @__PURE__ */ (0,
|
|
6636
|
-
/* @__PURE__ */ (0,
|
|
8030
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_themes39.Separator, { size: "4" }),
|
|
8031
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_themes15.DataList.Root, { children: infoList.map(
|
|
6637
8032
|
(info) => renderDataListItem({
|
|
6638
8033
|
info,
|
|
6639
8034
|
data: customer,
|
|
@@ -6644,19 +8039,19 @@ function CoachingCustomerInfoLarge({
|
|
|
6644
8039
|
}
|
|
6645
8040
|
|
|
6646
8041
|
// src/app/platform/userInfos/coaching-customer-info/index.tsx
|
|
6647
|
-
var
|
|
8042
|
+
var import_jsx_runtime103 = require("react/jsx-runtime");
|
|
6648
8043
|
function CoachingCustomerInfo(props) {
|
|
6649
|
-
return /* @__PURE__ */ (0,
|
|
6650
|
-
/* @__PURE__ */ (0,
|
|
6651
|
-
/* @__PURE__ */ (0,
|
|
6652
|
-
/* @__PURE__ */ (0,
|
|
8044
|
+
return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(import_jsx_runtime103.Fragment, { children: [
|
|
8045
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_themes6.Box, { display: { initial: "block", sm: "none", md: "none" }, children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(CoachingCustomerInfoSmall, __spreadValues({}, props)) }),
|
|
8046
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_themes6.Box, { display: { initial: "none", sm: "block", md: "none" }, children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(CoachingCustomerInfoMedium, __spreadValues({}, props)) }),
|
|
8047
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_themes6.Box, { display: { initial: "none", sm: "none", md: "block" }, children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(CoachingCustomerInfoLarge, __spreadValues({}, props)) })
|
|
6653
8048
|
] });
|
|
6654
8049
|
}
|
|
6655
8050
|
|
|
6656
8051
|
// src/app/platform/goal-manage-card-read.tsx
|
|
6657
|
-
var
|
|
8052
|
+
var import_react50 = require("react");
|
|
6658
8053
|
var import_date_fns4 = require("date-fns");
|
|
6659
|
-
var
|
|
8054
|
+
var import_jsx_runtime104 = require("react/jsx-runtime");
|
|
6660
8055
|
function GoalManageCardRead(props) {
|
|
6661
8056
|
const {
|
|
6662
8057
|
title,
|
|
@@ -6670,12 +8065,12 @@ function GoalManageCardRead(props) {
|
|
|
6670
8065
|
onClickIncomplete,
|
|
6671
8066
|
onClickComplete
|
|
6672
8067
|
} = props;
|
|
6673
|
-
const [open, setOpen] = (0,
|
|
6674
|
-
const onClickOpen = (0,
|
|
8068
|
+
const [open, setOpen] = (0, import_react50.useState)(Boolean(defaultOpen));
|
|
8069
|
+
const onClickOpen = (0, import_react50.useCallback)(() => {
|
|
6675
8070
|
setOpen((p) => !p);
|
|
6676
8071
|
}, []);
|
|
6677
|
-
const icon = open ? /* @__PURE__ */ (0,
|
|
6678
|
-
const badgeMeta = (0,
|
|
8072
|
+
const icon = open ? /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_react_icons2.ChevronUpIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_react_icons2.ChevronDownIcon, {});
|
|
8073
|
+
const badgeMeta = (0, import_react50.useMemo)(() => {
|
|
6679
8074
|
if (!completed && dueDate) {
|
|
6680
8075
|
if (dueDate >= (0, import_date_fns4.startOfDay)(/* @__PURE__ */ new Date()))
|
|
6681
8076
|
return {
|
|
@@ -6686,41 +8081,41 @@ function GoalManageCardRead(props) {
|
|
|
6686
8081
|
}
|
|
6687
8082
|
return null;
|
|
6688
8083
|
}, [completed, dueDate]);
|
|
6689
|
-
const renderSubTitle = (0,
|
|
6690
|
-
return /* @__PURE__ */ (0,
|
|
8084
|
+
const renderSubTitle = (0, import_react50.useCallback)((subTitle) => {
|
|
8085
|
+
return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Heading2, { mb: "2", variant: "heading5", children: subTitle });
|
|
6691
8086
|
}, []);
|
|
6692
|
-
const renderSubContent = (0,
|
|
6693
|
-
return /* @__PURE__ */ (0,
|
|
8087
|
+
const renderSubContent = (0, import_react50.useCallback)((content) => {
|
|
8088
|
+
return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Typo, { as: "p", color: "gray", children: content });
|
|
6694
8089
|
}, []);
|
|
6695
|
-
const renderCompleteButton = (0,
|
|
8090
|
+
const renderCompleteButton = (0, import_react50.useCallback)(() => {
|
|
6696
8091
|
if (completed) {
|
|
6697
|
-
return /* @__PURE__ */ (0,
|
|
8092
|
+
return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Button, { onClick: onClickIncomplete, size: "small", variant: "surface", children: "\uC9C4\uD589\uC911\uC778 \uACFC\uC81C\uB85C \uB3CC\uB824\uB193\uAE30" });
|
|
6698
8093
|
}
|
|
6699
|
-
return /* @__PURE__ */ (0,
|
|
6700
|
-
/* @__PURE__ */ (0,
|
|
6701
|
-
/* @__PURE__ */ (0,
|
|
8094
|
+
return /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes29.Popover.Root, { children: [
|
|
8095
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes29.Popover.Trigger, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Button, { size: "small", children: [
|
|
8096
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_react_icons2.RocketIcon, {}),
|
|
6702
8097
|
"\uB2EC\uC131\uD558\uAE30"
|
|
6703
8098
|
] }) }),
|
|
6704
|
-
/* @__PURE__ */ (0,
|
|
6705
|
-
/* @__PURE__ */ (0,
|
|
6706
|
-
/* @__PURE__ */ (0,
|
|
6707
|
-
/* @__PURE__ */ (0,
|
|
6708
|
-
/* @__PURE__ */ (0,
|
|
8099
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes29.Popover.Content, { children: [
|
|
8100
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Typo, { color: "gray", children: "\uBAA9\uD45C\uB97C \uB2EC\uC131\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?" }),
|
|
8101
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", mt: "3", children: [
|
|
8102
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes29.Popover.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Button, { color: "gray", size: "small", variant: "outline", children: "\uC544\uB2C8\uC694" }) }),
|
|
8103
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes29.Popover.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Button, { onClick: onClickComplete, size: "small", children: "\uC608" }) })
|
|
6709
8104
|
] })
|
|
6710
8105
|
] })
|
|
6711
8106
|
] });
|
|
6712
8107
|
}, [completed, onClickIncomplete, onClickComplete]);
|
|
6713
|
-
return /* @__PURE__ */ (0,
|
|
6714
|
-
/* @__PURE__ */ (0,
|
|
6715
|
-
/* @__PURE__ */ (0,
|
|
6716
|
-
/* @__PURE__ */ (0,
|
|
6717
|
-
/* @__PURE__ */ (0,
|
|
6718
|
-
badgeMeta ? /* @__PURE__ */ (0,
|
|
6719
|
-
/* @__PURE__ */ (0,
|
|
8108
|
+
return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Card, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes23.Grid, { align: "center", columns: "auto 1fr", gapX: "3", children: [
|
|
8109
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(IconButton, { onClick: onClickOpen, variant: "ghost", children: icon }),
|
|
8110
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Heading2, { variant: "heading4", children: title }),
|
|
8111
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { align: "center", gridColumnStart: "2", justify: "between", mt: "2", children: [
|
|
8112
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { align: "center", gap: "3", children: [
|
|
8113
|
+
badgeMeta ? /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Badge, __spreadValues({}, badgeMeta)) : null,
|
|
8114
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Typo, { color: "gray", children: dueDate ? (0, import_date_fns4.format)(dueDate, "yyyy\uB144 MM\uC6D4 dd\uC77C") : null })
|
|
6720
8115
|
] }),
|
|
6721
8116
|
renderCompleteButton()
|
|
6722
8117
|
] }),
|
|
6723
|
-
open ? /* @__PURE__ */ (0,
|
|
8118
|
+
open ? /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
|
|
6724
8119
|
import_themes39.Separator,
|
|
6725
8120
|
{
|
|
6726
8121
|
mb: "4",
|
|
@@ -6729,37 +8124,37 @@ function GoalManageCardRead(props) {
|
|
|
6729
8124
|
style: { gridColumnStart: "span 2" }
|
|
6730
8125
|
}
|
|
6731
8126
|
) : null,
|
|
6732
|
-
/* @__PURE__ */ (0,
|
|
6733
|
-
/* @__PURE__ */ (0,
|
|
6734
|
-
/* @__PURE__ */ (0,
|
|
8127
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes6.Box, { gridColumnStart: "2", p: "0", children: /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Collapse, { open, children: [
|
|
8128
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
|
|
8129
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes6.Box, { children: [
|
|
6735
8130
|
renderSubTitle(
|
|
6736
8131
|
"\uD574\uB2F9 \uBAA9\uD45C\uB97C \uB2EC\uC131\uD558\uBA74, \uC544\uB798\uC640 \uAC19\uC740 \uACB0\uACFC\uB97C \uC5BB\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4"
|
|
6737
8132
|
),
|
|
6738
8133
|
renderSubContent(expectedEffect)
|
|
6739
8134
|
] }),
|
|
6740
|
-
/* @__PURE__ */ (0,
|
|
8135
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes6.Box, { children: [
|
|
6741
8136
|
renderSubTitle(
|
|
6742
8137
|
"\uBAA9\uD45C\uB97C \uC774\uB8E8\uAE30\uAE4C\uC9C0 \uBC29\uD574\uAC00 \uB420 \uC218 \uC788\uB294 \uC694\uC18C\uB4E4\uC740 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4"
|
|
6743
8138
|
),
|
|
6744
8139
|
renderSubContent(huddle)
|
|
6745
8140
|
] })
|
|
6746
8141
|
] }),
|
|
6747
|
-
/* @__PURE__ */ (0,
|
|
6748
|
-
/* @__PURE__ */ (0,
|
|
6749
|
-
/* @__PURE__ */ (0,
|
|
6750
|
-
/* @__PURE__ */ (0,
|
|
8142
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { align: "center", gap: "3", justify: "end", mt: "3", children: [
|
|
8143
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes29.Popover.Root, { children: [
|
|
8144
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes29.Popover.Trigger, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Button, { color: "gray", size: "small", variant: "ghost", children: [
|
|
8145
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_react_icons2.TrashIcon, {}),
|
|
6751
8146
|
"\uC0AD\uC81C\uD558\uAE30"
|
|
6752
8147
|
] }) }),
|
|
6753
|
-
/* @__PURE__ */ (0,
|
|
6754
|
-
/* @__PURE__ */ (0,
|
|
6755
|
-
/* @__PURE__ */ (0,
|
|
6756
|
-
/* @__PURE__ */ (0,
|
|
6757
|
-
/* @__PURE__ */ (0,
|
|
8148
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes29.Popover.Content, { children: [
|
|
8149
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Typo, { color: "gray", children: "\uBAA9\uD45C\uB97C \uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?" }),
|
|
8150
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", mt: "3", children: [
|
|
8151
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes29.Popover.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Button, { color: "gray", size: "small", variant: "outline", children: "\uC544\uB2C8\uC694" }) }),
|
|
8152
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes29.Popover.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Button, { onClick: onClickDelete, size: "small", children: "\uC608" }) })
|
|
6758
8153
|
] })
|
|
6759
8154
|
] })
|
|
6760
8155
|
] }),
|
|
6761
|
-
/* @__PURE__ */ (0,
|
|
6762
|
-
/* @__PURE__ */ (0,
|
|
8156
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Button, { onClick: onClickEdit, size: "small", variant: "surface", children: [
|
|
8157
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_react_icons2.Pencil1Icon, {}),
|
|
6763
8158
|
"\uC218\uC815\uD558\uAE30"
|
|
6764
8159
|
] })
|
|
6765
8160
|
] })
|
|
@@ -6768,9 +8163,9 @@ function GoalManageCardRead(props) {
|
|
|
6768
8163
|
}
|
|
6769
8164
|
|
|
6770
8165
|
// src/app/platform/goal-manage-card-edit.tsx
|
|
6771
|
-
var
|
|
8166
|
+
var import_react51 = require("react");
|
|
6772
8167
|
var import_date_fns5 = require("date-fns");
|
|
6773
|
-
var
|
|
8168
|
+
var import_jsx_runtime105 = require("react/jsx-runtime");
|
|
6774
8169
|
var initialValues = {
|
|
6775
8170
|
goal: "",
|
|
6776
8171
|
effect: "",
|
|
@@ -6781,8 +8176,8 @@ var dummyFn = () => {
|
|
|
6781
8176
|
};
|
|
6782
8177
|
function GoalManageCardEdit(props) {
|
|
6783
8178
|
const { defaultValues, errors } = props;
|
|
6784
|
-
const [values, setValues] = (0,
|
|
6785
|
-
const onChange = (0,
|
|
8179
|
+
const [values, setValues] = (0, import_react51.useState)(defaultValues || initialValues);
|
|
8180
|
+
const onChange = (0, import_react51.useCallback)(
|
|
6786
8181
|
(v) => {
|
|
6787
8182
|
var _a;
|
|
6788
8183
|
setValues((prev) => __spreadValues(__spreadValues({}, prev), v));
|
|
@@ -6790,20 +8185,20 @@ function GoalManageCardEdit(props) {
|
|
|
6790
8185
|
},
|
|
6791
8186
|
[props]
|
|
6792
8187
|
);
|
|
6793
|
-
const onClickInit = (0,
|
|
8188
|
+
const onClickInit = (0, import_react51.useCallback)(() => {
|
|
6794
8189
|
var _a;
|
|
6795
8190
|
setValues(initialValues);
|
|
6796
8191
|
(_a = props.onChange) == null ? void 0 : _a.call(props, defaultValues || initialValues);
|
|
6797
8192
|
}, [defaultValues, props]);
|
|
6798
|
-
const onClickSubmit = (0,
|
|
8193
|
+
const onClickSubmit = (0, import_react51.useCallback)(() => {
|
|
6799
8194
|
var _a;
|
|
6800
8195
|
(_a = props.onSubmit) == null ? void 0 : _a.call(props, values);
|
|
6801
8196
|
}, [props, values]);
|
|
6802
|
-
return /* @__PURE__ */ (0,
|
|
6803
|
-
/* @__PURE__ */ (0,
|
|
6804
|
-
/* @__PURE__ */ (0,
|
|
6805
|
-
/* @__PURE__ */ (0,
|
|
6806
|
-
/* @__PURE__ */ (0,
|
|
8197
|
+
return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Card, { style: { width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Form.Root, { onSubmit: dummyFn, children: [
|
|
8198
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
|
|
8199
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Form.Field, { name: "title", children: [
|
|
8200
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Label, { children: "\uC774\uBC88 \uCF54\uCE6D\uC758 \uBAA9\uD45C\uB294 \uC544\uB798\uC640 \uAC19\uC2B5\uB2C8\uB2E4" }),
|
|
8201
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
6807
8202
|
TextField.Root,
|
|
6808
8203
|
{
|
|
6809
8204
|
error: Boolean(errors == null ? void 0 : errors.goal),
|
|
@@ -6814,11 +8209,11 @@ function GoalManageCardEdit(props) {
|
|
|
6814
8209
|
value: values.goal
|
|
6815
8210
|
}
|
|
6816
8211
|
),
|
|
6817
|
-
/* @__PURE__ */ (0,
|
|
8212
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.goal), children: errors == null ? void 0 : errors.goal })
|
|
6818
8213
|
] }),
|
|
6819
|
-
/* @__PURE__ */ (0,
|
|
6820
|
-
/* @__PURE__ */ (0,
|
|
6821
|
-
/* @__PURE__ */ (0,
|
|
8214
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Form.Field, { name: "effect", children: [
|
|
8215
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Label, { children: "\uAE30\uB300\uD6A8\uACFC" }),
|
|
8216
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
6822
8217
|
TextArea,
|
|
6823
8218
|
{
|
|
6824
8219
|
error: Boolean(errors == null ? void 0 : errors.effect),
|
|
@@ -6830,11 +8225,11 @@ function GoalManageCardEdit(props) {
|
|
|
6830
8225
|
value: values.effect
|
|
6831
8226
|
}
|
|
6832
8227
|
),
|
|
6833
|
-
/* @__PURE__ */ (0,
|
|
8228
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.effect), children: errors == null ? void 0 : errors.effect })
|
|
6834
8229
|
] }),
|
|
6835
|
-
/* @__PURE__ */ (0,
|
|
6836
|
-
/* @__PURE__ */ (0,
|
|
6837
|
-
/* @__PURE__ */ (0,
|
|
8230
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Form.Field, { name: "huddle", children: [
|
|
8231
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Label, { children: "\uBC29\uD574\uC694\uC18C" }),
|
|
8232
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
6838
8233
|
TextArea,
|
|
6839
8234
|
{
|
|
6840
8235
|
error: Boolean(errors == null ? void 0 : errors.huddle),
|
|
@@ -6848,11 +8243,11 @@ function GoalManageCardEdit(props) {
|
|
|
6848
8243
|
value: values.huddle
|
|
6849
8244
|
}
|
|
6850
8245
|
),
|
|
6851
|
-
/* @__PURE__ */ (0,
|
|
8246
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.huddle), children: errors == null ? void 0 : errors.huddle })
|
|
6852
8247
|
] }),
|
|
6853
|
-
/* @__PURE__ */ (0,
|
|
6854
|
-
/* @__PURE__ */ (0,
|
|
6855
|
-
/* @__PURE__ */ (0,
|
|
8248
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Form.Field, { name: "dueDate", children: [
|
|
8249
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Label, { children: "\uBAA9\uD45C \uB2EC\uC131 \uAE30\uD55C\uC740 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4" }),
|
|
8250
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
6856
8251
|
DatePickerButton,
|
|
6857
8252
|
{
|
|
6858
8253
|
format: (v) => (0, import_date_fns5.format)(v, "yyyy\uB144 MM\uC6D4 dd\uC77C"),
|
|
@@ -6863,11 +8258,11 @@ function GoalManageCardEdit(props) {
|
|
|
6863
8258
|
selected: values.dueDate
|
|
6864
8259
|
}
|
|
6865
8260
|
),
|
|
6866
|
-
/* @__PURE__ */ (0,
|
|
8261
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.dueDate), children: errors == null ? void 0 : errors.dueDate })
|
|
6867
8262
|
] })
|
|
6868
8263
|
] }),
|
|
6869
|
-
/* @__PURE__ */ (0,
|
|
6870
|
-
/* @__PURE__ */ (0,
|
|
8264
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", width: "100%", children: [
|
|
8265
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
6871
8266
|
Button,
|
|
6872
8267
|
{
|
|
6873
8268
|
color: "gray",
|
|
@@ -6878,18 +8273,18 @@ function GoalManageCardEdit(props) {
|
|
|
6878
8273
|
children: "\uCD08\uAE30\uD654\uD558\uAE30"
|
|
6879
8274
|
}
|
|
6880
8275
|
),
|
|
6881
|
-
/* @__PURE__ */ (0,
|
|
8276
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Button, { onClick: onClickSubmit, size: "small", type: "button", children: "\uC800\uC7A5\uD558\uAE30" })
|
|
6882
8277
|
] })
|
|
6883
8278
|
] }) });
|
|
6884
8279
|
}
|
|
6885
8280
|
|
|
6886
8281
|
// src/app/platform/session-card.tsx
|
|
6887
|
-
var
|
|
8282
|
+
var import_react54 = require("react");
|
|
6888
8283
|
var import_date_fns6 = require("date-fns");
|
|
6889
8284
|
|
|
6890
8285
|
// src/app/platform/edit-coaching-time.tsx
|
|
6891
|
-
var
|
|
6892
|
-
var
|
|
8286
|
+
var import_react52 = require("react");
|
|
8287
|
+
var import_jsx_runtime106 = require("react/jsx-runtime");
|
|
6893
8288
|
var getValueFromDefaultValue = (args) => {
|
|
6894
8289
|
return {
|
|
6895
8290
|
startTime: args.startAt ? getTimeOption(args.startAt) : "00:00",
|
|
@@ -6909,14 +8304,14 @@ var getDateFromValue = (date, time) => {
|
|
|
6909
8304
|
};
|
|
6910
8305
|
function EditCoachingTime(props) {
|
|
6911
8306
|
const { defaultEndAt, defaultStartAt, onClickCancel } = props;
|
|
6912
|
-
const [values, setValues] = (0,
|
|
8307
|
+
const [values, setValues] = (0, import_react52.useState)(() => {
|
|
6913
8308
|
return getValueFromDefaultValue({
|
|
6914
8309
|
startAt: defaultStartAt,
|
|
6915
8310
|
endAt: defaultEndAt
|
|
6916
8311
|
});
|
|
6917
8312
|
});
|
|
6918
|
-
const [timeError, setTimeError] = (0,
|
|
6919
|
-
const checkTimeError = (0,
|
|
8313
|
+
const [timeError, setTimeError] = (0, import_react52.useState)("");
|
|
8314
|
+
const checkTimeError = (0, import_react52.useCallback)(
|
|
6920
8315
|
(startTime, endTime) => {
|
|
6921
8316
|
const error = startTime >= endTime ? "\uC2DC\uC791\uC2DC\uAC04\uC744 \uC885\uB8CC\uC2DC\uAC04\uBCF4\uB2E4 \uBE60\uB974\uAC8C \uC120\uD0DD\uD574\uC8FC\uC138\uC694." : "";
|
|
6922
8317
|
if (error) {
|
|
@@ -6927,7 +8322,7 @@ function EditCoachingTime(props) {
|
|
|
6927
8322
|
},
|
|
6928
8323
|
[]
|
|
6929
8324
|
);
|
|
6930
|
-
const onChangeStartTime = (0,
|
|
8325
|
+
const onChangeStartTime = (0, import_react52.useCallback)(
|
|
6931
8326
|
(v) => {
|
|
6932
8327
|
checkTimeError(v, values.endTime);
|
|
6933
8328
|
setValues((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
@@ -6936,7 +8331,7 @@ function EditCoachingTime(props) {
|
|
|
6936
8331
|
},
|
|
6937
8332
|
[checkTimeError, values.endTime]
|
|
6938
8333
|
);
|
|
6939
|
-
const onChangeEndTime = (0,
|
|
8334
|
+
const onChangeEndTime = (0, import_react52.useCallback)(
|
|
6940
8335
|
(v) => {
|
|
6941
8336
|
checkTimeError(values.startTime, v);
|
|
6942
8337
|
setValues((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
@@ -6945,12 +8340,12 @@ function EditCoachingTime(props) {
|
|
|
6945
8340
|
},
|
|
6946
8341
|
[checkTimeError, values.startTime]
|
|
6947
8342
|
);
|
|
6948
|
-
const onChangeDate = (0,
|
|
8343
|
+
const onChangeDate = (0, import_react52.useCallback)((date) => {
|
|
6949
8344
|
date && setValues((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
6950
8345
|
date
|
|
6951
8346
|
}));
|
|
6952
8347
|
}, []);
|
|
6953
|
-
const onClickSave = (0,
|
|
8348
|
+
const onClickSave = (0, import_react52.useCallback)(() => {
|
|
6954
8349
|
if (checkTimeError(values.startTime, values.endTime)) {
|
|
6955
8350
|
const startAt = getDateFromValue(values.date, values.startTime);
|
|
6956
8351
|
const endAt = getDateFromValue(values.date, values.endTime);
|
|
@@ -6959,10 +8354,10 @@ function EditCoachingTime(props) {
|
|
|
6959
8354
|
import_react_toastify2.toast.error("\uC785\uB825 \uAC12\uC774 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.");
|
|
6960
8355
|
}
|
|
6961
8356
|
}, [checkTimeError, props, values.date, values.endTime, values.startTime]);
|
|
6962
|
-
return /* @__PURE__ */ (0,
|
|
6963
|
-
/* @__PURE__ */ (0,
|
|
6964
|
-
/* @__PURE__ */ (0,
|
|
6965
|
-
/* @__PURE__ */ (0,
|
|
8357
|
+
return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_themes6.Box, { width: { initial: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(Form.Root, { children: [
|
|
8358
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(Form.Field, { name: "date", children: [
|
|
8359
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Form.Label, { variant: "caption", children: "\uB0A0\uC9DC" }),
|
|
8360
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
6966
8361
|
DatePickerButton,
|
|
6967
8362
|
{
|
|
6968
8363
|
maxDate: /* @__PURE__ */ new Date(),
|
|
@@ -6972,7 +8367,7 @@ function EditCoachingTime(props) {
|
|
|
6972
8367
|
}
|
|
6973
8368
|
)
|
|
6974
8369
|
] }),
|
|
6975
|
-
/* @__PURE__ */ (0,
|
|
8370
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
|
|
6976
8371
|
import_themes23.Grid,
|
|
6977
8372
|
{
|
|
6978
8373
|
align: "center",
|
|
@@ -6987,10 +8382,10 @@ function EditCoachingTime(props) {
|
|
|
6987
8382
|
mt: "5",
|
|
6988
8383
|
width: "100%",
|
|
6989
8384
|
children: [
|
|
6990
|
-
/* @__PURE__ */ (0,
|
|
6991
|
-
/* @__PURE__ */ (0,
|
|
6992
|
-
/* @__PURE__ */ (0,
|
|
6993
|
-
/* @__PURE__ */ (0,
|
|
8385
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Form.Field, { name: "startTime", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Form.Label, { variant: "caption", children: "\uC2DC\uC791 \uC2DC\uAC04" }) }),
|
|
8386
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", {}),
|
|
8387
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Form.Field, { name: "endTime", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Form.Label, { variant: "caption", children: "\uC885\uB8CC \uC2DC\uAC04" }) }),
|
|
8388
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
6994
8389
|
TimeSelect,
|
|
6995
8390
|
{
|
|
6996
8391
|
onValueChange: onChangeStartTime,
|
|
@@ -6998,8 +8393,8 @@ function EditCoachingTime(props) {
|
|
|
6998
8393
|
value: values.startTime
|
|
6999
8394
|
}
|
|
7000
8395
|
),
|
|
7001
|
-
/* @__PURE__ */ (0,
|
|
7002
|
-
/* @__PURE__ */ (0,
|
|
8396
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_themes6.Box, { overflow: "hidden", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_themes39.Separator, {}) }),
|
|
8397
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
7003
8398
|
TimeSelect,
|
|
7004
8399
|
{
|
|
7005
8400
|
onValueChange: onChangeEndTime,
|
|
@@ -7007,36 +8402,36 @@ function EditCoachingTime(props) {
|
|
|
7007
8402
|
value: values.endTime
|
|
7008
8403
|
}
|
|
7009
8404
|
),
|
|
7010
|
-
/* @__PURE__ */ (0,
|
|
8405
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Form.Field, { name: "startEndTime", style: { gridColumn: "1/span 3" }, children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Form.Message, { forceMatch: Boolean(timeError), children: timeError }) })
|
|
7011
8406
|
]
|
|
7012
8407
|
}
|
|
7013
8408
|
),
|
|
7014
|
-
/* @__PURE__ */ (0,
|
|
7015
|
-
/* @__PURE__ */ (0,
|
|
7016
|
-
/* @__PURE__ */ (0,
|
|
8409
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", children: [
|
|
8410
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Button, { onClick: onClickCancel, type: "button", variant: "outline", children: "\uCDE8\uC18C\uD558\uAE30" }) }),
|
|
8411
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Button, { onClick: onClickSave, type: "button", children: "\uC800\uC7A5\uD558\uAE30" }) })
|
|
7017
8412
|
] })
|
|
7018
8413
|
] }) });
|
|
7019
8414
|
}
|
|
7020
8415
|
|
|
7021
8416
|
// src/app/platform/edit-service-type.tsx
|
|
7022
|
-
var
|
|
8417
|
+
var import_react53 = require("react");
|
|
7023
8418
|
|
|
7024
8419
|
// src/app/platform/on-offline-radio-card.tsx
|
|
7025
8420
|
var import_react_icons11 = require("@radix-ui/react-icons");
|
|
7026
|
-
var
|
|
8421
|
+
var import_jsx_runtime107 = require("react/jsx-runtime");
|
|
7027
8422
|
var SERVICE_TYPE = {
|
|
7028
8423
|
onlineCoaching: "onlineCoaching",
|
|
7029
8424
|
offlineCoaching: "offlineCoaching"
|
|
7030
8425
|
};
|
|
7031
8426
|
var breakpoint = "sm";
|
|
7032
8427
|
function HideSmallBox(props) {
|
|
7033
|
-
return /* @__PURE__ */ (0,
|
|
8428
|
+
return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(import_themes6.Box, { display: { initial: "none", [breakpoint]: "block" }, children: props.children });
|
|
7034
8429
|
}
|
|
7035
8430
|
function OnOfflineRadioCard(props) {
|
|
7036
8431
|
const Wrapper = props.response ? HideSmallBox : (p) => p.children;
|
|
7037
8432
|
const columns = props.response ? { initial: "2", [breakpoint]: "1" } : "1";
|
|
7038
8433
|
const justify = props.response ? { initial: "center", [breakpoint]: "between" } : "between";
|
|
7039
|
-
return /* @__PURE__ */ (0,
|
|
8434
|
+
return /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
|
|
7040
8435
|
RadioButtonCard.Root,
|
|
7041
8436
|
__spreadProps(__spreadValues({
|
|
7042
8437
|
RadioWrapper: Wrapper,
|
|
@@ -7045,13 +8440,13 @@ function OnOfflineRadioCard(props) {
|
|
|
7045
8440
|
justify
|
|
7046
8441
|
}, props), {
|
|
7047
8442
|
children: [
|
|
7048
|
-
/* @__PURE__ */ (0,
|
|
7049
|
-
/* @__PURE__ */ (0,
|
|
7050
|
-
/* @__PURE__ */ (0,
|
|
8443
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(RadioButtonCard.Item, { value: SERVICE_TYPE.onlineCoaching, children: /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(import_themes22.Flex, { align: "center", gap: "2", children: [
|
|
8444
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Wrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(import_react_icons11.GlobeIcon, {}) }),
|
|
8445
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Typo, { children: "\uC628\uB77C\uC778" })
|
|
7051
8446
|
] }) }),
|
|
7052
|
-
/* @__PURE__ */ (0,
|
|
7053
|
-
/* @__PURE__ */ (0,
|
|
7054
|
-
/* @__PURE__ */ (0,
|
|
8447
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(RadioButtonCard.Item, { value: SERVICE_TYPE.offlineCoaching, children: /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(import_themes22.Flex, { align: "center", gap: "2", children: [
|
|
8448
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Wrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(import_react_icons11.BackpackIcon, {}) }),
|
|
8449
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Typo, { children: "\uC624\uD504\uB77C\uC778" })
|
|
7055
8450
|
] }) })
|
|
7056
8451
|
]
|
|
7057
8452
|
})
|
|
@@ -7059,18 +8454,18 @@ function OnOfflineRadioCard(props) {
|
|
|
7059
8454
|
}
|
|
7060
8455
|
|
|
7061
8456
|
// src/app/platform/edit-service-type.tsx
|
|
7062
|
-
var
|
|
8457
|
+
var import_jsx_runtime108 = require("react/jsx-runtime");
|
|
7063
8458
|
function EditServiceType(props) {
|
|
7064
8459
|
const { defaultServiceType, onClickCancel } = props;
|
|
7065
|
-
const [sessionType, setSessionType] = (0,
|
|
8460
|
+
const [sessionType, setSessionType] = (0, import_react53.useState)(
|
|
7066
8461
|
defaultServiceType
|
|
7067
8462
|
);
|
|
7068
|
-
const onClickSave = (0,
|
|
8463
|
+
const onClickSave = (0, import_react53.useCallback)(() => {
|
|
7069
8464
|
var _a;
|
|
7070
8465
|
(_a = props.onClickSave) == null ? void 0 : _a.call(props, sessionType);
|
|
7071
8466
|
}, [props, sessionType]);
|
|
7072
|
-
return /* @__PURE__ */ (0,
|
|
7073
|
-
/* @__PURE__ */ (0,
|
|
8467
|
+
return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(import_themes6.Box, { children: [
|
|
8468
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
|
|
7074
8469
|
Typo,
|
|
7075
8470
|
{
|
|
7076
8471
|
as: "p",
|
|
@@ -7080,16 +8475,16 @@ function EditServiceType(props) {
|
|
|
7080
8475
|
children: "\uC138\uC158 \uC720\uD615\uC5D0 \uB530\uB77C \uCC45\uC815\uB418\uB294 \uCF54\uCE6D \uAE08\uC561\uC774 \uB2EC\uB77C\uC9C0\uBBC0\uB85C, \uC815\uD655\uD558\uAC8C \uC120\uD0DD\uD574\uC8FC\uC138\uC694"
|
|
7081
8476
|
}
|
|
7082
8477
|
),
|
|
7083
|
-
/* @__PURE__ */ (0,
|
|
7084
|
-
/* @__PURE__ */ (0,
|
|
7085
|
-
/* @__PURE__ */ (0,
|
|
7086
|
-
/* @__PURE__ */ (0,
|
|
8478
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)(OnOfflineRadioCard, { onValueChange: setSessionType, value: sessionType }),
|
|
8479
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", mt: { initial: "6", xs: "3" }, children: [
|
|
8480
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Button, { color: "gray", onClick: onClickCancel, variant: "outline", children: "\uCDE8\uC18C\uD558\uAE30" }) }),
|
|
8481
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Button, { onClick: onClickSave, children: "\uC800\uC7A5\uD558\uAE30" }) })
|
|
7087
8482
|
] })
|
|
7088
8483
|
] });
|
|
7089
8484
|
}
|
|
7090
8485
|
|
|
7091
8486
|
// src/app/platform/session-card.tsx
|
|
7092
|
-
var
|
|
8487
|
+
var import_jsx_runtime109 = require("react/jsx-runtime");
|
|
7093
8488
|
var preventDefault4 = (e) => {
|
|
7094
8489
|
e.preventDefault();
|
|
7095
8490
|
};
|
|
@@ -7119,33 +8514,33 @@ function SessionCard(props) {
|
|
|
7119
8514
|
"endAt",
|
|
7120
8515
|
"sessionType"
|
|
7121
8516
|
]);
|
|
7122
|
-
const renderEditButton = (0,
|
|
7123
|
-
return /* @__PURE__ */ (0,
|
|
8517
|
+
const renderEditButton = (0, import_react54.useCallback)(() => {
|
|
8518
|
+
return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Button, { color: "gray", ml: "2", variant: "transparent", children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_react_icons2.Pencil1Icon, {}) });
|
|
7124
8519
|
}, []);
|
|
7125
|
-
const sessionTimeStr = (0,
|
|
8520
|
+
const sessionTimeStr = (0, import_react54.useMemo)(() => {
|
|
7126
8521
|
if (!startAt || !endAt) return "\uC54C \uC218 \uC5C6\uC74C";
|
|
7127
8522
|
return `${(0, import_date_fns6.format)(startAt, "yyyy\uB144 MM\uC6D4 dd\uC77C HH\uC2DC mm\uBD84")} ~ ${(0, import_date_fns6.format)(endAt, "HH\uC2DC mm\uBD84")}`;
|
|
7128
8523
|
}, [startAt, endAt]);
|
|
7129
|
-
return /* @__PURE__ */ (0,
|
|
7130
|
-
/* @__PURE__ */ (0,
|
|
7131
|
-
/* @__PURE__ */ (0,
|
|
8524
|
+
return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Card, __spreadProps(__spreadValues({ error: Boolean(error) }, rest), { children: /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes22.Flex, { direction: "column", gap: "3", children: [
|
|
8525
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes22.Flex, { align: "center", width: "100%", children: [
|
|
8526
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Heading2, { variant: "heading4", children: `${userName || "\uC54C \uC218 \uC5C6\uC74C"}\uB2D8 ${sessionNumber || "-"}\uD68C\uCC28` }),
|
|
7132
8527
|
TitleExtra,
|
|
7133
|
-
error ? /* @__PURE__ */ (0,
|
|
8528
|
+
error ? /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(BulletText, { as: "p", color: "red", variant: "caption", children: error }) : null
|
|
7134
8529
|
] }),
|
|
7135
|
-
/* @__PURE__ */ (0,
|
|
7136
|
-
/* @__PURE__ */ (0,
|
|
7137
|
-
/* @__PURE__ */ (0,
|
|
7138
|
-
/* @__PURE__ */ (0,
|
|
8530
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes15.DataList.Root, { children: [
|
|
8531
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes15.DataList.Item, { children: [
|
|
8532
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_themes15.DataList.Label, { children: "\uCF54\uCE6D \uC77C\uC2DC" }),
|
|
8533
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes15.DataList.Value, { children: [
|
|
7139
8534
|
sessionTimeStr,
|
|
7140
|
-
editable ? /* @__PURE__ */ (0,
|
|
7141
|
-
/* @__PURE__ */ (0,
|
|
7142
|
-
/* @__PURE__ */ (0,
|
|
8535
|
+
editable ? /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(Dialog.Root, { children: [
|
|
8536
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Dialog.Trigger, { children: renderEditButton() }),
|
|
8537
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
|
|
7143
8538
|
Dialog.Content,
|
|
7144
8539
|
{
|
|
7145
8540
|
onOpenAutoFocus: preventDefault4,
|
|
7146
8541
|
style: { overflow: "visible" },
|
|
7147
8542
|
title: `${sessionNumber}\uD68C\uCC28 \uC138\uC158 \uC77C\uC2DC \uBCC0\uACBD\uD558\uAE30`,
|
|
7148
|
-
children: /* @__PURE__ */ (0,
|
|
8543
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
|
|
7149
8544
|
EditCoachingTime,
|
|
7150
8545
|
{
|
|
7151
8546
|
defaultEndAt: endAt,
|
|
@@ -7158,18 +8553,18 @@ function SessionCard(props) {
|
|
|
7158
8553
|
] }) : null
|
|
7159
8554
|
] })
|
|
7160
8555
|
] }),
|
|
7161
|
-
/* @__PURE__ */ (0,
|
|
7162
|
-
/* @__PURE__ */ (0,
|
|
7163
|
-
/* @__PURE__ */ (0,
|
|
7164
|
-
/* @__PURE__ */ (0,
|
|
8556
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes23.Grid, { columns: { initial: "1", xs: "2" }, style: { gap: "inherit" }, children: [
|
|
8557
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes15.DataList.Item, { children: [
|
|
8558
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_themes15.DataList.Label, { children: "\uC138\uC158 \uCC38\uC5EC \uBC29\uC2DD" }),
|
|
8559
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes15.DataList.Value, { children: [
|
|
7165
8560
|
sessionType === "offlineCoaching" ? "\uC624\uD504\uB77C\uC778" : "\uC628\uB77C\uC778",
|
|
7166
|
-
editable ? /* @__PURE__ */ (0,
|
|
7167
|
-
/* @__PURE__ */ (0,
|
|
7168
|
-
/* @__PURE__ */ (0,
|
|
8561
|
+
editable ? /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(Dialog.Root, { children: [
|
|
8562
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Dialog.Trigger, { children: renderEditButton() }),
|
|
8563
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
|
|
7169
8564
|
Dialog.Content,
|
|
7170
8565
|
{
|
|
7171
8566
|
title: `${sessionNumber}\uD68C\uCC28 \uC138\uC158 \uC9C4\uD589 \uBC29\uC2DD \uBCC0\uACBD\uD558\uAE30`,
|
|
7172
|
-
children: /* @__PURE__ */ (0,
|
|
8567
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
|
|
7173
8568
|
EditServiceType,
|
|
7174
8569
|
{
|
|
7175
8570
|
defaultServiceType: sessionType,
|
|
@@ -7181,33 +8576,33 @@ function SessionCard(props) {
|
|
|
7181
8576
|
] }) : null
|
|
7182
8577
|
] })
|
|
7183
8578
|
] }),
|
|
7184
|
-
/* @__PURE__ */ (0,
|
|
8579
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_themes22.Flex, { gap: "2", justify: "end", children: ExtraButtons })
|
|
7185
8580
|
] })
|
|
7186
8581
|
] })
|
|
7187
8582
|
] }) }));
|
|
7188
8583
|
}
|
|
7189
8584
|
|
|
7190
8585
|
// src/app/platform/coach-question-list.tsx
|
|
7191
|
-
var
|
|
8586
|
+
var import_jsx_runtime110 = require("react/jsx-runtime");
|
|
7192
8587
|
function QuestionItem({ question, answer }) {
|
|
7193
|
-
return /* @__PURE__ */ (0,
|
|
7194
|
-
/* @__PURE__ */ (0,
|
|
7195
|
-
/* @__PURE__ */ (0,
|
|
8588
|
+
return /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_themes6.Box, { children: [
|
|
8589
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Heading2, { mb: "2", variant: "heading5", children: question }),
|
|
8590
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Card, { children: answer ? /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Typo, { as: "p", children: answer }) : /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Typo, { color: "gray", children: "\uB4F1\uB85D\uB41C \uB2F5\uBCC0\uC774 \uC5C6\uC2B5\uB2C8\uB2E4." }) })
|
|
7196
8591
|
] }, question);
|
|
7197
8592
|
}
|
|
7198
8593
|
function CoachQuestionList({
|
|
7199
8594
|
questions
|
|
7200
8595
|
}) {
|
|
7201
|
-
return /* @__PURE__ */ (0,
|
|
7202
|
-
return /* @__PURE__ */ (0,
|
|
8596
|
+
return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_themes22.Flex, { direction: "column", gap: "8", children: questions.map((question) => {
|
|
8597
|
+
return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(QuestionItem, __spreadValues({}, question), question.question);
|
|
7203
8598
|
}) });
|
|
7204
8599
|
}
|
|
7205
8600
|
|
|
7206
8601
|
// src/app/platform/reservation-card.tsx
|
|
7207
|
-
var
|
|
8602
|
+
var import_react55 = require("react");
|
|
7208
8603
|
var import_date_fns7 = require("date-fns");
|
|
7209
8604
|
var import_locale2 = require("date-fns/locale");
|
|
7210
|
-
var
|
|
8605
|
+
var import_jsx_runtime111 = require("react/jsx-runtime");
|
|
7211
8606
|
function ReservationCard(props) {
|
|
7212
8607
|
const {
|
|
7213
8608
|
sessionNumber,
|
|
@@ -7222,29 +8617,29 @@ function ReservationCard(props) {
|
|
|
7222
8617
|
onClickCancel,
|
|
7223
8618
|
onClickCompleteSession
|
|
7224
8619
|
} = props;
|
|
7225
|
-
const [editValues, setEditValues] = (0,
|
|
8620
|
+
const [editValues, setEditValues] = (0, import_react55.useState)({
|
|
7226
8621
|
date: props.defaultTime,
|
|
7227
8622
|
type: props.defaultType
|
|
7228
8623
|
});
|
|
7229
8624
|
const date = readonly ? defaultTime : editValues.date;
|
|
7230
8625
|
const type = readonly ? defaultType : editValues.type;
|
|
7231
|
-
const onClickSave = (0,
|
|
8626
|
+
const onClickSave = (0, import_react55.useCallback)(() => {
|
|
7232
8627
|
var _a;
|
|
7233
8628
|
(_a = props.onClickSave) == null ? void 0 : _a.call(props, editValues);
|
|
7234
8629
|
}, [editValues, props]);
|
|
7235
|
-
const onClickReset = (0,
|
|
8630
|
+
const onClickReset = (0, import_react55.useCallback)(() => {
|
|
7236
8631
|
setEditValues({
|
|
7237
8632
|
date: defaultTime,
|
|
7238
8633
|
type: defaultType
|
|
7239
8634
|
});
|
|
7240
8635
|
}, [defaultTime, defaultType]);
|
|
7241
|
-
const ActionButtons = (0,
|
|
8636
|
+
const ActionButtons = (0, import_react55.useMemo)(() => {
|
|
7242
8637
|
if (readonly) {
|
|
7243
|
-
return /* @__PURE__ */ (0,
|
|
8638
|
+
return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Button, { onClick: onClickReserve, size: "small", variant: "surface", children: defaultTime && defaultType ? "\uC608\uC57D \uC218\uC815\uD558\uAE30" : "\uC608\uC57D\uD558\uAE30" });
|
|
7244
8639
|
}
|
|
7245
|
-
return /* @__PURE__ */ (0,
|
|
8640
|
+
return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Button, { color: "gray", onClick: onClickCancel, variant: "transparent", children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_react_icons2.Cross1Icon, {}) });
|
|
7246
8641
|
}, [defaultTime, defaultType, onClickCancel, onClickReserve, readonly]);
|
|
7247
|
-
const onChangeDate = (0,
|
|
8642
|
+
const onChangeDate = (0, import_react55.useCallback)((newDate) => {
|
|
7248
8643
|
if (!newDate) return;
|
|
7249
8644
|
setEditValues((prev) => {
|
|
7250
8645
|
return __spreadProps(__spreadValues({}, prev), {
|
|
@@ -7252,17 +8647,17 @@ function ReservationCard(props) {
|
|
|
7252
8647
|
});
|
|
7253
8648
|
});
|
|
7254
8649
|
}, []);
|
|
7255
|
-
const onChangeType = (0,
|
|
8650
|
+
const onChangeType = (0, import_react55.useCallback)((newType) => {
|
|
7256
8651
|
setEditValues((prev) => {
|
|
7257
8652
|
return __spreadProps(__spreadValues({}, prev), {
|
|
7258
8653
|
type: newType
|
|
7259
8654
|
});
|
|
7260
8655
|
});
|
|
7261
8656
|
}, []);
|
|
7262
|
-
const formatDate = (0,
|
|
8657
|
+
const formatDate = (0, import_react55.useCallback)((v) => {
|
|
7263
8658
|
return (0, import_date_fns7.format)(v, "yyyy\uB144 MM\uC6D4 dd\uC77C(EEE) aa h:mm", { locale: import_locale2.ko });
|
|
7264
8659
|
}, []);
|
|
7265
|
-
(0,
|
|
8660
|
+
(0, import_react55.useEffect)(() => {
|
|
7266
8661
|
if (!minTime || !editValues.date || readonly) return;
|
|
7267
8662
|
if (editValues.date < minTime) {
|
|
7268
8663
|
import_react_toastify2.toast.warn("\uC120\uD0DD \uAC00\uB2A5\uD55C \uC2DC\uAC04\uB300\uB85C \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4.");
|
|
@@ -7273,7 +8668,7 @@ function ReservationCard(props) {
|
|
|
7273
8668
|
});
|
|
7274
8669
|
}
|
|
7275
8670
|
}, [editValues, minTime, readonly]);
|
|
7276
|
-
(0,
|
|
8671
|
+
(0, import_react55.useEffect)(() => {
|
|
7277
8672
|
if (!maxTime || !editValues.date || readonly) return;
|
|
7278
8673
|
if (editValues.date > maxTime) {
|
|
7279
8674
|
import_react_toastify2.toast.warn("\uC120\uD0DD \uAC00\uB2A5\uD55C \uC2DC\uAC04\uB300\uB85C \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4.");
|
|
@@ -7284,39 +8679,39 @@ function ReservationCard(props) {
|
|
|
7284
8679
|
});
|
|
7285
8680
|
}
|
|
7286
8681
|
}, [editValues, maxTime, readonly]);
|
|
7287
|
-
return /* @__PURE__ */ (0,
|
|
8682
|
+
return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
|
|
7288
8683
|
Card,
|
|
7289
8684
|
{
|
|
7290
8685
|
error: Boolean(error),
|
|
7291
8686
|
size: "3",
|
|
7292
8687
|
style: { overflow: "visible", contain: "initial" },
|
|
7293
8688
|
children: [
|
|
7294
|
-
/* @__PURE__ */ (0,
|
|
7295
|
-
/* @__PURE__ */ (0,
|
|
8689
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { gap: "3", justify: "between", mb: "5", children: [
|
|
8690
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
|
|
7296
8691
|
import_themes23.Grid,
|
|
7297
8692
|
{
|
|
7298
8693
|
align: "center",
|
|
7299
8694
|
columns: { initial: "1", xs: "auto 1fr" },
|
|
7300
8695
|
gapY: "2",
|
|
7301
8696
|
children: [
|
|
7302
|
-
/* @__PURE__ */ (0,
|
|
7303
|
-
/* @__PURE__ */ (0,
|
|
8697
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { align: "center", children: [
|
|
8698
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(Heading2, { variant: "heading4", children: [
|
|
7304
8699
|
customerName || "-",
|
|
7305
8700
|
"\uB2D8 ",
|
|
7306
8701
|
sessionNumber || "-",
|
|
7307
8702
|
"\uD68C\uCC28 \uC138\uC158"
|
|
7308
8703
|
] }),
|
|
7309
|
-
/* @__PURE__ */ (0,
|
|
8704
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Badge, { ml: "2", children: "\uB2E4\uC74C \uC138\uC158" })
|
|
7310
8705
|
] }),
|
|
7311
|
-
error ? /* @__PURE__ */ (0,
|
|
8706
|
+
error ? /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(BulletText, { color: "red", variant: "caption", children: error }) : null
|
|
7312
8707
|
]
|
|
7313
8708
|
}
|
|
7314
8709
|
),
|
|
7315
|
-
/* @__PURE__ */ (0,
|
|
8710
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_themes22.Flex, { children: ActionButtons })
|
|
7316
8711
|
] }),
|
|
7317
|
-
/* @__PURE__ */ (0,
|
|
7318
|
-
/* @__PURE__ */ (0,
|
|
7319
|
-
/* @__PURE__ */ (0,
|
|
8712
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_themes6.Box, { children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
|
|
8713
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Heading2, { mb: "2", variant: "heading5", weight: "regular", children: "\uC138\uC158 \uC77C\uC790\uC640 \uC2DC\uAC01" }),
|
|
8714
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
7320
8715
|
DatePickerButton,
|
|
7321
8716
|
{
|
|
7322
8717
|
disabled: readonly,
|
|
@@ -7330,8 +8725,8 @@ function ReservationCard(props) {
|
|
|
7330
8725
|
size: "large"
|
|
7331
8726
|
}
|
|
7332
8727
|
),
|
|
7333
|
-
/* @__PURE__ */ (0,
|
|
7334
|
-
/* @__PURE__ */ (0,
|
|
8728
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Heading2, { mb: "2", variant: "heading5", weight: "regular", children: "\uC628/\uC624\uD504\uB77C\uC778 \uC9C4\uD589 \uC5EC\uBD80" }),
|
|
8729
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
7335
8730
|
OnOfflineRadioCard,
|
|
7336
8731
|
{
|
|
7337
8732
|
disabled: readonly,
|
|
@@ -7340,8 +8735,8 @@ function ReservationCard(props) {
|
|
|
7340
8735
|
value: type
|
|
7341
8736
|
}
|
|
7342
8737
|
),
|
|
7343
|
-
readonly ? null : /* @__PURE__ */ (0,
|
|
7344
|
-
/* @__PURE__ */ (0,
|
|
8738
|
+
readonly ? null : /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { align: "center", gap: "3", justify: "end", children: [
|
|
8739
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
7345
8740
|
Button,
|
|
7346
8741
|
{
|
|
7347
8742
|
color: "gray",
|
|
@@ -7351,10 +8746,10 @@ function ReservationCard(props) {
|
|
|
7351
8746
|
children: "\uCD08\uAE30\uD654\uD558\uAE30"
|
|
7352
8747
|
}
|
|
7353
8748
|
),
|
|
7354
|
-
/* @__PURE__ */ (0,
|
|
8749
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Button, { onClick: onClickSave, size: "small", children: "\uC800\uC7A5\uD558\uAE30" })
|
|
7355
8750
|
] })
|
|
7356
8751
|
] }) }),
|
|
7357
|
-
readonly ? /* @__PURE__ */ (0,
|
|
8752
|
+
readonly ? /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_themes25.Inset, { clip: "border-box", side: "bottom", children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
7358
8753
|
import_themes6.Box,
|
|
7359
8754
|
{
|
|
7360
8755
|
mt: "5",
|
|
@@ -7362,14 +8757,14 @@ function ReservationCard(props) {
|
|
|
7362
8757
|
py: "4",
|
|
7363
8758
|
style: { backgroundColor: "var(--accent-a3)" },
|
|
7364
8759
|
width: "100%",
|
|
7365
|
-
children: /* @__PURE__ */ (0,
|
|
7366
|
-
/* @__PURE__ */ (0,
|
|
8760
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { align: "center", gap: "4", justify: "center", children: [
|
|
8761
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(Typo, { children: [
|
|
7367
8762
|
sessionNumber || "-",
|
|
7368
8763
|
"\uD68C\uCC28 \uC138\uC158\uC744 \uC644\uB8CC\uD558\uC168\uB098\uC694?"
|
|
7369
8764
|
] }),
|
|
7370
|
-
/* @__PURE__ */ (0,
|
|
8765
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(Button, { onClick: onClickCompleteSession, size: "small", children: [
|
|
7371
8766
|
"\uC138\uC158 \uC885\uB8CC\uD558\uAE30",
|
|
7372
|
-
/* @__PURE__ */ (0,
|
|
8767
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_react_icons2.ArrowRightIcon, {})
|
|
7373
8768
|
] })
|
|
7374
8769
|
] })
|
|
7375
8770
|
}
|
|
@@ -7380,22 +8775,22 @@ function ReservationCard(props) {
|
|
|
7380
8775
|
}
|
|
7381
8776
|
|
|
7382
8777
|
// src/app/platform/session-review-simple-read.tsx
|
|
7383
|
-
var
|
|
7384
|
-
var
|
|
8778
|
+
var import_react56 = require("react");
|
|
8779
|
+
var import_jsx_runtime112 = require("react/jsx-runtime");
|
|
7385
8780
|
function SubTitleWrapper({
|
|
7386
8781
|
children,
|
|
7387
8782
|
title
|
|
7388
8783
|
}) {
|
|
7389
|
-
return /* @__PURE__ */ (0,
|
|
7390
|
-
/* @__PURE__ */ (0,
|
|
7391
|
-
/* @__PURE__ */ (0,
|
|
8784
|
+
return /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(import_themes22.Flex, { direction: "column", gap: "2", children: [
|
|
8785
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Heading2, { mb: "2", variant: "heading5", weight: "regular", children: title }),
|
|
8786
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_themes6.Box, { children })
|
|
7392
8787
|
] });
|
|
7393
8788
|
}
|
|
7394
8789
|
function SessionReviewSimpleRead({
|
|
7395
8790
|
helpfulness,
|
|
7396
8791
|
review
|
|
7397
8792
|
}) {
|
|
7398
|
-
const helpfulnessMeta = (0,
|
|
8793
|
+
const helpfulnessMeta = (0, import_react56.useMemo)(() => {
|
|
7399
8794
|
if (helpfulness) {
|
|
7400
8795
|
return {
|
|
7401
8796
|
text: "\uB124",
|
|
@@ -7413,22 +8808,22 @@ function SessionReviewSimpleRead({
|
|
|
7413
8808
|
color: "error"
|
|
7414
8809
|
};
|
|
7415
8810
|
}, [helpfulness]);
|
|
7416
|
-
return /* @__PURE__ */ (0,
|
|
7417
|
-
/* @__PURE__ */ (0,
|
|
7418
|
-
/* @__PURE__ */ (0,
|
|
8811
|
+
return /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_themes6.Box, { children: /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
|
|
8812
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)(SubTitleWrapper, { title: "\uC774\uBC88 \uCF54\uCE6D\uC774 \uBAA9\uD45C \uB2EC\uC131\uC5D0 \uB3C4\uC6C0\uC774 \uB418\uC5C8\uB098\uC694?", children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Badge, { color: helpfulnessMeta.color, children: helpfulnessMeta.text }) }),
|
|
8813
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)(SubTitleWrapper, { title: "\uC138\uC158 \uD6C4\uAE30", children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Card, { children: review ? /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Typo, { as: "p", children: review }) : /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Typo, { color: "gray", children: "\uC785\uB825\uB41C \uD6C4\uAE30\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4." }) }) })
|
|
7419
8814
|
] }) });
|
|
7420
8815
|
}
|
|
7421
8816
|
|
|
7422
8817
|
// src/app/platform/userInfos/session-user-info-detail.tsx
|
|
7423
|
-
var
|
|
8818
|
+
var import_jsx_runtime113 = require("react/jsx-runtime");
|
|
7424
8819
|
function SectionWrapper({
|
|
7425
8820
|
title,
|
|
7426
8821
|
children
|
|
7427
8822
|
}) {
|
|
7428
|
-
return /* @__PURE__ */ (0,
|
|
7429
|
-
/* @__PURE__ */ (0,
|
|
7430
|
-
/* @__PURE__ */ (0,
|
|
7431
|
-
/* @__PURE__ */ (0,
|
|
8823
|
+
return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(import_themes6.Box, { children: [
|
|
8824
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(import_themes23.Grid, { align: "center", columns: "auto 1fr", gap: "3", mb: "5", children: [
|
|
8825
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Heading2, { variant: "heading5", children: title }),
|
|
8826
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(import_themes39.Separator, { size: "4" })
|
|
7432
8827
|
] }),
|
|
7433
8828
|
children
|
|
7434
8829
|
] });
|
|
@@ -7438,22 +8833,22 @@ function SessionUserInfoDetail({
|
|
|
7438
8833
|
session,
|
|
7439
8834
|
onClickCopy
|
|
7440
8835
|
}) {
|
|
7441
|
-
return /* @__PURE__ */ (0,
|
|
7442
|
-
/* @__PURE__ */ (0,
|
|
8836
|
+
return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(import_themes22.Flex, { direction: "column", gap: "6", children: [
|
|
8837
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(SectionWrapper, { title: "\uC138\uC158 \uC815\uBCF4", children: /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(import_themes15.DataList.Root, { children: sessionList.map(
|
|
7443
8838
|
(info) => renderDataListItem({ info, data: session, onClickCopy })
|
|
7444
8839
|
) }) }),
|
|
7445
|
-
/* @__PURE__ */ (0,
|
|
8840
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(SectionWrapper, { title: "\uD68C\uC6D0 \uC815\uBCF4", children: /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(import_themes15.DataList.Root, { children: infoList.map(
|
|
7446
8841
|
(info) => renderDataListItem({ info, data: customer, onClickCopy })
|
|
7447
8842
|
) }) })
|
|
7448
8843
|
] });
|
|
7449
8844
|
}
|
|
7450
8845
|
|
|
7451
8846
|
// src/app/platform/report-card.tsx
|
|
7452
|
-
var
|
|
7453
|
-
var
|
|
8847
|
+
var import_react57 = require("react");
|
|
8848
|
+
var import_jsx_runtime114 = require("react/jsx-runtime");
|
|
7454
8849
|
function ReportCard(props) {
|
|
7455
8850
|
const { title, file, status, subtitle } = props;
|
|
7456
|
-
const onClickDownload = (0,
|
|
8851
|
+
const onClickDownload = (0, import_react57.useCallback)(() => {
|
|
7457
8852
|
if (!file) return;
|
|
7458
8853
|
const { url, fileName } = file;
|
|
7459
8854
|
const link = document.createElement("a");
|
|
@@ -7465,24 +8860,24 @@ function ReportCard(props) {
|
|
|
7465
8860
|
document.body.removeChild(link);
|
|
7466
8861
|
}, [file]);
|
|
7467
8862
|
if (status) {
|
|
7468
|
-
return /* @__PURE__ */ (0,
|
|
7469
|
-
/* @__PURE__ */ (0,
|
|
8863
|
+
return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Card, { children: /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
|
|
8864
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Heading2, { variant: "heading4", children: title }),
|
|
7470
8865
|
status
|
|
7471
8866
|
] }) });
|
|
7472
8867
|
}
|
|
7473
|
-
return /* @__PURE__ */ (0,
|
|
8868
|
+
return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Card, { children: /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(
|
|
7474
8869
|
import_themes22.Flex,
|
|
7475
8870
|
{
|
|
7476
8871
|
direction: { initial: "column", xs: "row" },
|
|
7477
8872
|
gapY: "2",
|
|
7478
8873
|
justify: "between",
|
|
7479
8874
|
children: [
|
|
7480
|
-
/* @__PURE__ */ (0,
|
|
7481
|
-
/* @__PURE__ */ (0,
|
|
7482
|
-
subtitle ? /* @__PURE__ */ (0,
|
|
8875
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(import_themes6.Box, { children: [
|
|
8876
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Heading2, { variant: "heading4", children: title }),
|
|
8877
|
+
subtitle ? /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Typo, { color: "gray", children: subtitle }) : null
|
|
7483
8878
|
] }),
|
|
7484
|
-
/* @__PURE__ */ (0,
|
|
7485
|
-
/* @__PURE__ */ (0,
|
|
8879
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Button, { onClick: onClickDownload, variant: "surface", children: /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(import_themes22.Flex, { gap: "2", width: "100%", children: [
|
|
8880
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(import_react_icons2.DownloadIcon, {}),
|
|
7486
8881
|
file == null ? void 0 : file.buttonName
|
|
7487
8882
|
] }) }, file == null ? void 0 : file.url)
|
|
7488
8883
|
]
|
|
@@ -7491,9 +8886,9 @@ function ReportCard(props) {
|
|
|
7491
8886
|
}
|
|
7492
8887
|
|
|
7493
8888
|
// src/app/platform/contents-card.tsx
|
|
7494
|
-
var
|
|
7495
|
-
var
|
|
7496
|
-
var ContentsCard = (0,
|
|
8889
|
+
var import_react58 = require("react");
|
|
8890
|
+
var import_jsx_runtime115 = require("react/jsx-runtime");
|
|
8891
|
+
var ContentsCard = (0, import_react58.forwardRef)(
|
|
7497
8892
|
({
|
|
7498
8893
|
title,
|
|
7499
8894
|
description,
|
|
@@ -7503,7 +8898,7 @@ var ContentsCard = (0, import_react55.forwardRef)(
|
|
|
7503
8898
|
onClickCard,
|
|
7504
8899
|
isLoading = false
|
|
7505
8900
|
}, ref) => {
|
|
7506
|
-
return /* @__PURE__ */ (0,
|
|
8901
|
+
return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
|
|
7507
8902
|
Card,
|
|
7508
8903
|
{
|
|
7509
8904
|
onClick: onClickCard,
|
|
@@ -7516,7 +8911,7 @@ var ContentsCard = (0, import_react55.forwardRef)(
|
|
|
7516
8911
|
maxHeight: "450px"
|
|
7517
8912
|
},
|
|
7518
8913
|
children: [
|
|
7519
|
-
/* @__PURE__ */ (0,
|
|
8914
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_themes25.Inset, { clip: "padding-box", pb: "0", side: "top", children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_themes40.Skeleton, { loading: isLoading, children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
7520
8915
|
import_themes6.Box,
|
|
7521
8916
|
{
|
|
7522
8917
|
height: "210px",
|
|
@@ -7528,12 +8923,12 @@ var ContentsCard = (0, import_react55.forwardRef)(
|
|
|
7528
8923
|
width: "100%"
|
|
7529
8924
|
}
|
|
7530
8925
|
) }) }),
|
|
7531
|
-
/* @__PURE__ */ (0,
|
|
7532
|
-
/* @__PURE__ */ (0,
|
|
7533
|
-
/* @__PURE__ */ (0,
|
|
7534
|
-
/* @__PURE__ */ (0,
|
|
8926
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(import_themes22.Flex, { direction: "column", p: "4", pb: "3", children: [
|
|
8927
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(import_themes6.Box, { children: [
|
|
8928
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_themes40.Skeleton, { loading: isLoading, children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(Heading2, { mb: "3", variant: "heading5", children: title }) }),
|
|
8929
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_themes40.Skeleton, { loading: isLoading, children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(Typo, { as: "p", variant: "caption", children: description }) })
|
|
7535
8930
|
] }),
|
|
7536
|
-
/* @__PURE__ */ (0,
|
|
8931
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
|
|
7537
8932
|
import_themes23.Grid,
|
|
7538
8933
|
{
|
|
7539
8934
|
align: "center",
|
|
@@ -7543,10 +8938,10 @@ var ContentsCard = (0, import_react55.forwardRef)(
|
|
|
7543
8938
|
style: { marginTop: "auto" },
|
|
7544
8939
|
width: "100%",
|
|
7545
8940
|
children: [
|
|
7546
|
-
/* @__PURE__ */ (0,
|
|
7547
|
-
Boolean(dropdownItems == null ? void 0 : dropdownItems.length) && /* @__PURE__ */ (0,
|
|
7548
|
-
/* @__PURE__ */ (0,
|
|
7549
|
-
/* @__PURE__ */ (0,
|
|
8941
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_themes40.Skeleton, { loading: isLoading, children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_themes22.Flex, { gap: "3", overflow: "hidden", children: footer }) }),
|
|
8942
|
+
Boolean(dropdownItems == null ? void 0 : dropdownItems.length) && /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(DropdownMenu.Root, { children: [
|
|
8943
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(DropdownMenu.Trigger, { children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(Button, { size: "large", variant: "transparent", children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_react_icons2.DotsVerticalIcon, { color: "gray", height: "20px", width: "20px" }) }) }),
|
|
8944
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(DropdownMenu.Content, { children: dropdownItems == null ? void 0 : dropdownItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
7550
8945
|
DropdownMenu.Item,
|
|
7551
8946
|
{
|
|
7552
8947
|
onClick: (e) => {
|
|
@@ -7570,7 +8965,7 @@ var ContentsCard = (0, import_react55.forwardRef)(
|
|
|
7570
8965
|
ContentsCard.displayName = "ContentsCard";
|
|
7571
8966
|
|
|
7572
8967
|
// src/app/platform/curriculum-card.tsx
|
|
7573
|
-
var
|
|
8968
|
+
var import_jsx_runtime116 = require("react/jsx-runtime");
|
|
7574
8969
|
function CurriculumCard(props) {
|
|
7575
8970
|
const {
|
|
7576
8971
|
title,
|
|
@@ -7581,7 +8976,7 @@ function CurriculumCard(props) {
|
|
|
7581
8976
|
bgColor,
|
|
7582
8977
|
onClick
|
|
7583
8978
|
} = props;
|
|
7584
|
-
return /* @__PURE__ */ (0,
|
|
8979
|
+
return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
|
|
7585
8980
|
import_themes23.Grid,
|
|
7586
8981
|
{
|
|
7587
8982
|
columns: { initial: "1", sm: "275px 1fr" },
|
|
@@ -7590,7 +8985,7 @@ function CurriculumCard(props) {
|
|
|
7590
8985
|
onClick,
|
|
7591
8986
|
style: { cursor: "pointer" },
|
|
7592
8987
|
children: [
|
|
7593
|
-
/* @__PURE__ */ (0,
|
|
8988
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
7594
8989
|
import_themes6.Box,
|
|
7595
8990
|
{
|
|
7596
8991
|
height: "165px",
|
|
@@ -7605,32 +9000,32 @@ function CurriculumCard(props) {
|
|
|
7605
9000
|
backgroundAttachment: "local"
|
|
7606
9001
|
},
|
|
7607
9002
|
width: "100%",
|
|
7608
|
-
children: /* @__PURE__ */ (0,
|
|
9003
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Heading2, { style: { whiteSpace: "break-spaces" }, variant: "heading3", children: imgTitle })
|
|
7609
9004
|
}
|
|
7610
9005
|
),
|
|
7611
|
-
/* @__PURE__ */ (0,
|
|
7612
|
-
/* @__PURE__ */ (0,
|
|
7613
|
-
/* @__PURE__ */ (0,
|
|
7614
|
-
/* @__PURE__ */ (0,
|
|
9006
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(import_themes22.Flex, { direction: "column", gap: "3", children: [
|
|
9007
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(import_themes23.Grid, { columns: { initial: "1", xs: "1fr auto" }, gapY: "3", children: [
|
|
9008
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Heading2, { variant: "heading4", children: title }),
|
|
9009
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
7615
9010
|
Badge,
|
|
7616
9011
|
{
|
|
7617
9012
|
size: "medium",
|
|
7618
9013
|
style: { justifySelf: "flex-start" },
|
|
7619
9014
|
variant: "outline",
|
|
7620
|
-
children: /* @__PURE__ */ (0,
|
|
7621
|
-
/* @__PURE__ */ (0,
|
|
9015
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(import_themes22.Flex, { align: "center", gap: "1", children: [
|
|
9016
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_react_icons2.TimerIcon, {}),
|
|
7622
9017
|
runningTime
|
|
7623
9018
|
] })
|
|
7624
9019
|
}
|
|
7625
9020
|
)
|
|
7626
9021
|
] }),
|
|
7627
|
-
/* @__PURE__ */ (0,
|
|
7628
|
-
return /* @__PURE__ */ (0,
|
|
9022
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_themes6.Box, { style: { marginBottom: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("ul", { style: { margin: 0, paddingLeft: 20 }, children: description == null ? void 0 : description.map((el) => {
|
|
9023
|
+
return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("li", { style: { marginBottom: 8 }, children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Heading2, { truncate: true, variant: "heading5", weight: "regular", children: el }) }, el);
|
|
7629
9024
|
}) }) }),
|
|
7630
|
-
/* @__PURE__ */ (0,
|
|
7631
|
-
/* @__PURE__ */ (0,
|
|
7632
|
-
/* @__PURE__ */ (0,
|
|
7633
|
-
/* @__PURE__ */ (0,
|
|
9025
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_themes39.Separator, { size: "4" }),
|
|
9026
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(import_themes22.Flex, { align: "center", gap: "2", justify: "end", children: [
|
|
9027
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Typo, { color: "gray", children: "\uAC15\uC758 \uB4E3\uACE0 \uCF54\uCE58\uB2D8\uACFC \uBB34\uC81C\uD55C Q&A" }),
|
|
9028
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_react_icons2.ArrowRightIcon, { color: "gray" })
|
|
7634
9029
|
] })
|
|
7635
9030
|
] })
|
|
7636
9031
|
]
|
|
@@ -7718,6 +9113,7 @@ function CurriculumCard(props) {
|
|
|
7718
9113
|
Drawer,
|
|
7719
9114
|
DropdownMenu,
|
|
7720
9115
|
DynamicForm,
|
|
9116
|
+
DynamicFormEditor,
|
|
7721
9117
|
DynamicFormField,
|
|
7722
9118
|
DynamicFormProvider,
|
|
7723
9119
|
DynamicFormResponseItem,
|