@tipp/ui 2.3.22 → 2.3.24
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 +78 -71
- package/dist/app/platform/coach-question-list.js +26 -26
- package/dist/app/platform/contents-card.js +26 -26
- package/dist/app/platform/curriculum-card.js +2 -2
- 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 +66 -59
- 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 +66 -59
- 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 +67 -60
- package/dist/app/platform/goal-manage-card-read.js +26 -26
- 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 +66 -59
- package/dist/app/platform/report-card.js +26 -26
- 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 +67 -60
- 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 +67 -60
- package/dist/app/platform/session-review-simple-read.js +26 -26
- package/dist/app/platform/userInfos/coaching-customer-info/index.js +28 -28
- package/dist/app/platform/userInfos/coaching-customer-info/large.js +26 -26
- package/dist/app/platform/userInfos/coaching-customer-info/medium.js +26 -26
- package/dist/app/platform/userInfos/coaching-customer-info/small.js +25 -25
- package/dist/app/platform/userInfos/session-user-info-detail.js +25 -25
- package/dist/app/platform/userInfos/utils.js +25 -25
- package/dist/atoms/index.js +60 -60
- 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-3JADWKXT.js +230 -0
- package/dist/chunk-3JADWKXT.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-6UXCNYVO.js +106 -0
- package/dist/chunk-6UXCNYVO.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-77H5BUYO.js +55 -0
- package/dist/chunk-77H5BUYO.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-7FIDFRJL.js +196 -0
- package/dist/chunk-7FIDFRJL.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-ABMGYODX.js +196 -0
- package/dist/chunk-ABMGYODX.js.map +1 -0
- package/dist/chunk-ADLR7QZR.js +69 -0
- package/dist/chunk-ADLR7QZR.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-BP5FU7EO.js +196 -0
- package/dist/chunk-BP5FU7EO.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-E5W5TCRU.js +89 -0
- package/dist/chunk-E5W5TCRU.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-FZ4F7FCO.js +63 -0
- package/dist/chunk-FZ4F7FCO.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-HFVVQEOZ.js +1 -0
- package/dist/chunk-HFVVQEOZ.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-I46BFZL6.js +69 -0
- package/dist/chunk-I46BFZL6.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-JQH27TXL.js +89 -0
- package/dist/chunk-JQH27TXL.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-K7LTEKQS.js +56 -0
- package/dist/chunk-K7LTEKQS.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-SKA66SQI.js +144 -0
- package/dist/chunk-SKA66SQI.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-TQMIIK56.js +230 -0
- package/dist/chunk-TQMIIK56.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-XB2GOVFT.js +69 -0
- package/dist/chunk-XB2GOVFT.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-Y7I4BEAO.js +69 -0
- package/dist/chunk-Y7I4BEAO.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 +1 -1
- package/dist/index.cjs +1832 -411
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +152 -139
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.js +7 -7
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.js +6 -6
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.js +2 -2
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.js +2 -2
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.js +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.js +3 -3
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.js +11 -11
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.js +2 -2
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.js +2 -2
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.js +2 -2
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.js +13 -13
- 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 +17 -17
- package/dist/molecules/curriculumV2/CurriculumSidebar/index.cjs.map +1 -1
- package/dist/molecules/curriculumV2/CurriculumSidebar/index.js +4 -4
- package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.js +1 -1
- 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 +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 +27 -27
- 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 +3 -3
- package/dist/molecules/dynamic-field.cjs +147 -5
- package/dist/molecules/dynamic-field.cjs.map +1 -1
- package/dist/molecules/dynamic-field.js +5 -2
- 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 +63 -29
- package/dist/molecules/dynamic-form-response-item.cjs.map +1 -1
- package/dist/molecules/dynamic-form-response-item.js +2 -1
- package/dist/molecules/dynamic-form.cjs +149 -7
- package/dist/molecules/dynamic-form.cjs.map +1 -1
- package/dist/molecules/dynamic-form.js +6 -3
- package/dist/molecules/expand-table/index.js +1 -1
- package/dist/molecules/index.cjs +1464 -42
- 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 +74 -63
- package/dist/molecules/learning-post.js +2 -2
- package/dist/molecules/stepper.js +2 -2
- package/dist/molecules/tag-selector.js +3 -3
- package/dist/molecules/time-select.cjs +1 -1
- package/dist/molecules/time-select.cjs.map +1 -1
- package/dist/molecules/time-select.js +4 -3
- 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/get-dynamic-form-display-value.cjs +80 -0
- package/dist/utils/get-dynamic-form-display-value.cjs.map +1 -0
- package/dist/utils/get-dynamic-form-display-value.d.cts +5 -0
- package/dist/utils/get-dynamic-form-display-value.d.ts +5 -0
- package/dist/utils/get-dynamic-form-display-value.js +8 -0
- package/dist/utils/get-dynamic-form-display-value.js.map +1 -0
- package/dist/utils/get-dynamic-form-display-value.test.cjs +124 -0
- package/dist/utils/get-dynamic-form-display-value.test.cjs.map +1 -0
- package/dist/utils/get-dynamic-form-display-value.test.d.cts +2 -0
- package/dist/utils/get-dynamic-form-display-value.test.d.ts +2 -0
- package/dist/utils/get-dynamic-form-display-value.test.js +75 -0
- package/dist/utils/get-dynamic-form-display-value.test.js.map +1 -0
- package/dist/utils/index.cjs +55 -1
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.cts +3 -1
- package/dist/utils/index.d.ts +3 -1
- package/dist/utils/index.js +10 -6
- 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 +13 -40
- 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/get-dynamic-form-display-value.test.ts +81 -0
- package/src/utils/get-dynamic-form-display-value.ts +74 -0
- package/src/utils/index.ts +2 -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,
|
|
@@ -276,6 +277,7 @@ __export(index_exports, {
|
|
|
276
277
|
getCalloutIconComponent: () => getCalloutIconComponent,
|
|
277
278
|
getCellAlign: () => getCellAlign,
|
|
278
279
|
getColumnMeta: () => getColumnMeta,
|
|
280
|
+
getDynamicFormDisplayValue: () => getDynamicFormDisplayValue,
|
|
279
281
|
getTimeOption: () => getTimeOption,
|
|
280
282
|
getTimeOptions: () => getTimeOptions,
|
|
281
283
|
oneOnOneNoteTextReplacer: () => oneOnOneNoteTextReplacer,
|
|
@@ -287,7 +289,7 @@ __export(index_exports, {
|
|
|
287
289
|
useDynamicForm: () => useDynamicForm,
|
|
288
290
|
useList: () => useList,
|
|
289
291
|
usePortalContainer: () => usePortalContainer,
|
|
290
|
-
useThemeContext: () =>
|
|
292
|
+
useThemeContext: () => import_themes58.useThemeContext,
|
|
291
293
|
useUIState: () => useUIState
|
|
292
294
|
});
|
|
293
295
|
module.exports = __toCommonJS(index_exports);
|
|
@@ -3628,7 +3630,7 @@ var getTimeOption = (time) => {
|
|
|
3628
3630
|
return `${hour < 10 ? `0${hour}` : hour}:${minute < 10 ? `0${minute}` : minute}`;
|
|
3629
3631
|
};
|
|
3630
3632
|
|
|
3631
|
-
// src/utils/
|
|
3633
|
+
// src/utils/get-callout-icon-component.ts
|
|
3632
3634
|
var DEFAULT_ICON = import_react_icons2.InfoCircledIcon;
|
|
3633
3635
|
var AI_CALLOUT_ICON_OPTIONS = [
|
|
3634
3636
|
{ label: "Info", value: "InfoCircledIcon", Component: import_react_icons2.InfoCircledIcon },
|
|
@@ -3653,6 +3655,58 @@ function getCalloutIconComponent(iconName) {
|
|
|
3653
3655
|
return (_a = iconByName[iconName]) != null ? _a : DEFAULT_ICON;
|
|
3654
3656
|
}
|
|
3655
3657
|
|
|
3658
|
+
// src/utils/get-dynamic-form-display-value.ts
|
|
3659
|
+
function isEmptyDisplayValue(value) {
|
|
3660
|
+
return value === void 0 || value === null || value === "";
|
|
3661
|
+
}
|
|
3662
|
+
function findOptionLabel(options, value) {
|
|
3663
|
+
const valueString = String(value);
|
|
3664
|
+
const found = options.find(
|
|
3665
|
+
(option) => String(option.value) === valueString
|
|
3666
|
+
);
|
|
3667
|
+
return found == null ? void 0 : found.label;
|
|
3668
|
+
}
|
|
3669
|
+
function joinLabelsOrValues(options, values) {
|
|
3670
|
+
const labels = values.map((v) => {
|
|
3671
|
+
const label = findOptionLabel(options, v);
|
|
3672
|
+
return label != null ? label : String(v);
|
|
3673
|
+
});
|
|
3674
|
+
return labels.join(", ");
|
|
3675
|
+
}
|
|
3676
|
+
function getDynamicFormDisplayValue(field, value) {
|
|
3677
|
+
if (isEmptyDisplayValue(value)) return "";
|
|
3678
|
+
switch (field.type) {
|
|
3679
|
+
case "dropdown":
|
|
3680
|
+
case "choice":
|
|
3681
|
+
case "radio_cards": {
|
|
3682
|
+
const label = findOptionLabel(field.options, value);
|
|
3683
|
+
return label != null ? label : String(value);
|
|
3684
|
+
}
|
|
3685
|
+
case "image_radio_card": {
|
|
3686
|
+
const label = findOptionLabel(field.options, value);
|
|
3687
|
+
return label != null ? label : String(value);
|
|
3688
|
+
}
|
|
3689
|
+
case "choices": {
|
|
3690
|
+
if (Array.isArray(value)) {
|
|
3691
|
+
return joinLabelsOrValues(field.options, value);
|
|
3692
|
+
}
|
|
3693
|
+
const label = findOptionLabel(field.options, value);
|
|
3694
|
+
return label != null ? label : String(value);
|
|
3695
|
+
}
|
|
3696
|
+
case "yes_no": {
|
|
3697
|
+
if (value === true || value === "true" || value === "yes") return "\uB3D9\uC758";
|
|
3698
|
+
if (value === false || value === "false" || value === "no") return "\uBE44\uB3D9\uC758";
|
|
3699
|
+
return String(value);
|
|
3700
|
+
}
|
|
3701
|
+
case "short_text":
|
|
3702
|
+
case "long_text":
|
|
3703
|
+
case "number":
|
|
3704
|
+
case "email":
|
|
3705
|
+
default:
|
|
3706
|
+
return String(value);
|
|
3707
|
+
}
|
|
3708
|
+
}
|
|
3709
|
+
|
|
3656
3710
|
// src/molecules/time-select.tsx
|
|
3657
3711
|
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
3658
3712
|
var getOptionValue = (date, timeValue) => {
|
|
@@ -3960,7 +4014,6 @@ function CurriculumProvider(props) {
|
|
|
3960
4014
|
const inBounds = selectedIndexState >= 0 && selectedIndexState < list.length;
|
|
3961
4015
|
if (!inBounds) return;
|
|
3962
4016
|
const item = list[selectedIndexState];
|
|
3963
|
-
if (!item) return;
|
|
3964
4017
|
if (item.type === "sectionTitle") return;
|
|
3965
4018
|
onChangeSelectedContent == null ? void 0 : onChangeSelectedContent(item);
|
|
3966
4019
|
}, [list, onChangeSelectedContent, selectedIndexState]);
|
|
@@ -4116,15 +4169,15 @@ function CurriculumVideo(props) {
|
|
|
4116
4169
|
"iframe",
|
|
4117
4170
|
{
|
|
4118
4171
|
allowFullScreen: true,
|
|
4172
|
+
onError: () => {
|
|
4173
|
+
setIsLoading(false);
|
|
4174
|
+
},
|
|
4119
4175
|
onLoad: () => {
|
|
4120
4176
|
setIsLoading(false);
|
|
4121
4177
|
},
|
|
4122
4178
|
src: `${url}?theme=light`,
|
|
4123
4179
|
style: { width: "100%", height: "100%", border: "none" },
|
|
4124
|
-
title: "Curriculum Video"
|
|
4125
|
-
onError: () => {
|
|
4126
|
-
setIsLoading(false);
|
|
4127
|
-
}
|
|
4180
|
+
title: "Curriculum Video"
|
|
4128
4181
|
}
|
|
4129
4182
|
)
|
|
4130
4183
|
]
|
|
@@ -5648,6 +5701,46 @@ function useDynamicForm() {
|
|
|
5648
5701
|
|
|
5649
5702
|
// src/molecules/dynamic-field.tsx
|
|
5650
5703
|
var import_jsx_runtime88 = require("react/jsx-runtime");
|
|
5704
|
+
function isRecord(value) {
|
|
5705
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
5706
|
+
}
|
|
5707
|
+
function isFieldOption(value) {
|
|
5708
|
+
if (!isRecord(value)) return false;
|
|
5709
|
+
const label = value.label;
|
|
5710
|
+
const optionValue = value.value;
|
|
5711
|
+
return typeof label === "string" && (typeof optionValue === "string" || typeof optionValue === "number");
|
|
5712
|
+
}
|
|
5713
|
+
function isImageFieldOption(value) {
|
|
5714
|
+
if (!isRecord(value)) return false;
|
|
5715
|
+
if (!isFieldOption(value)) return false;
|
|
5716
|
+
const imageSrc = value.imageSrc;
|
|
5717
|
+
const alt = value.alt;
|
|
5718
|
+
return typeof imageSrc === "string" && (alt === void 0 || typeof alt === "string");
|
|
5719
|
+
}
|
|
5720
|
+
function getStringProp(obj, key, fallback) {
|
|
5721
|
+
if (!isRecord(obj)) return fallback;
|
|
5722
|
+
const value = obj[key];
|
|
5723
|
+
return typeof value === "string" ? value : fallback;
|
|
5724
|
+
}
|
|
5725
|
+
function getNumberProp(obj, key, fallback) {
|
|
5726
|
+
if (!isRecord(obj)) return fallback;
|
|
5727
|
+
const value = obj[key];
|
|
5728
|
+
return typeof value === "number" ? value : fallback;
|
|
5729
|
+
}
|
|
5730
|
+
function getOptions(field) {
|
|
5731
|
+
if (!isRecord(field)) return null;
|
|
5732
|
+
const options = field.options;
|
|
5733
|
+
if (!Array.isArray(options)) return null;
|
|
5734
|
+
if (!options.every(isFieldOption)) return null;
|
|
5735
|
+
return options;
|
|
5736
|
+
}
|
|
5737
|
+
function getImageOptions(field) {
|
|
5738
|
+
if (!isRecord(field)) return null;
|
|
5739
|
+
const options = field.options;
|
|
5740
|
+
if (!Array.isArray(options)) return null;
|
|
5741
|
+
if (!options.every(isImageFieldOption)) return null;
|
|
5742
|
+
return options;
|
|
5743
|
+
}
|
|
5651
5744
|
function DynamicFormField({
|
|
5652
5745
|
field
|
|
5653
5746
|
}) {
|
|
@@ -5660,7 +5753,7 @@ function DynamicFormField({
|
|
|
5660
5753
|
handleBlur,
|
|
5661
5754
|
readonly
|
|
5662
5755
|
} = useDynamicForm();
|
|
5663
|
-
const
|
|
5756
|
+
const name = field.name;
|
|
5664
5757
|
const value = getFieldValue(name);
|
|
5665
5758
|
const error = getFieldError(name);
|
|
5666
5759
|
const touched = getFieldTouched(name);
|
|
@@ -5673,14 +5766,22 @@ function DynamicFormField({
|
|
|
5673
5766
|
error: hasError,
|
|
5674
5767
|
disabled: readonly
|
|
5675
5768
|
};
|
|
5676
|
-
|
|
5769
|
+
const selectedValue = typeof value === "string" || typeof value === "number" ? String(value) : "";
|
|
5770
|
+
switch (field.type) {
|
|
5677
5771
|
case "short_text":
|
|
5772
|
+
return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
5773
|
+
TextField.Root,
|
|
5774
|
+
__spreadProps(__spreadValues({}, commonProps), {
|
|
5775
|
+
placeholder: field.placeholder,
|
|
5776
|
+
type: "text"
|
|
5777
|
+
})
|
|
5778
|
+
);
|
|
5678
5779
|
case "email":
|
|
5679
5780
|
return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
5680
5781
|
TextField.Root,
|
|
5681
5782
|
__spreadProps(__spreadValues({}, commonProps), {
|
|
5682
5783
|
placeholder: field.placeholder,
|
|
5683
|
-
type:
|
|
5784
|
+
type: "email"
|
|
5684
5785
|
})
|
|
5685
5786
|
);
|
|
5686
5787
|
case "number":
|
|
@@ -5703,9 +5804,20 @@ function DynamicFormField({
|
|
|
5703
5804
|
onValueChange: readonly ? void 0 : (newValue) => {
|
|
5704
5805
|
void setFieldValue(name, newValue);
|
|
5705
5806
|
},
|
|
5706
|
-
value,
|
|
5807
|
+
value: selectedValue,
|
|
5707
5808
|
children: [
|
|
5708
|
-
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
5809
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
5810
|
+
Select.Trigger,
|
|
5811
|
+
{
|
|
5812
|
+
placeholder: field.placeholder,
|
|
5813
|
+
style: {
|
|
5814
|
+
alignSelf: "flex-start",
|
|
5815
|
+
width: "fit-content",
|
|
5816
|
+
minWidth: "180px",
|
|
5817
|
+
maxWidth: "100%"
|
|
5818
|
+
}
|
|
5819
|
+
}
|
|
5820
|
+
),
|
|
5709
5821
|
/* @__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
5822
|
]
|
|
5711
5823
|
}
|
|
@@ -5723,6 +5835,21 @@ function DynamicFormField({
|
|
|
5723
5835
|
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
5836
|
}
|
|
5725
5837
|
);
|
|
5838
|
+
case "radio_cards": {
|
|
5839
|
+
const options = getOptions(field);
|
|
5840
|
+
if (!options) return null;
|
|
5841
|
+
return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
5842
|
+
import_themes33.RadioCards.Root,
|
|
5843
|
+
{
|
|
5844
|
+
disabled: readonly,
|
|
5845
|
+
onValueChange: readonly ? void 0 : (newValue) => {
|
|
5846
|
+
void setFieldValue(name, newValue);
|
|
5847
|
+
},
|
|
5848
|
+
value: selectedValue,
|
|
5849
|
+
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))
|
|
5850
|
+
}
|
|
5851
|
+
);
|
|
5852
|
+
}
|
|
5726
5853
|
case "choices":
|
|
5727
5854
|
return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
5728
5855
|
CheckboxGroup.Root,
|
|
@@ -5750,6 +5877,65 @@ function DynamicFormField({
|
|
|
5750
5877
|
),
|
|
5751
5878
|
field.description ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Typo, { color: "gray", variant: "caption", children: field.description }) : null
|
|
5752
5879
|
] });
|
|
5880
|
+
case "image_radio_card": {
|
|
5881
|
+
const options = getImageOptions(field);
|
|
5882
|
+
if (!options) return null;
|
|
5883
|
+
const gridColumnsCount = Math.max(1, getNumberProp(field, "gridColumnsCount", 4));
|
|
5884
|
+
const gridColumns = getStringProp(
|
|
5885
|
+
field,
|
|
5886
|
+
"gridColumns",
|
|
5887
|
+
`repeat(${gridColumnsCount}, 1fr)`
|
|
5888
|
+
);
|
|
5889
|
+
const gridItemHeight = getStringProp(field, "gridItemHeight", "100px");
|
|
5890
|
+
const gridRows = getStringProp(field, "gridRows", gridItemHeight);
|
|
5891
|
+
const gridGap = getStringProp(field, "gridGap", "2");
|
|
5892
|
+
const imageFitRaw = getStringProp(field, "imageFit", "cover");
|
|
5893
|
+
const imageFit = imageFitRaw === "contain" ? "contain" : "cover";
|
|
5894
|
+
const handleValueChange = (newValue) => {
|
|
5895
|
+
if (readonly) return;
|
|
5896
|
+
const selectedOption = options.find(
|
|
5897
|
+
(option) => String(option.value) === newValue
|
|
5898
|
+
);
|
|
5899
|
+
if (!selectedOption) return;
|
|
5900
|
+
void setFieldValue(name, selectedOption.value);
|
|
5901
|
+
};
|
|
5902
|
+
return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
5903
|
+
import_themes33.RadioCards.Root,
|
|
5904
|
+
{
|
|
5905
|
+
disabled: readonly,
|
|
5906
|
+
onValueChange: readonly ? void 0 : handleValueChange,
|
|
5907
|
+
value: selectedValue,
|
|
5908
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_themes23.Grid, { columns: gridColumns, gap: gridGap, rows: gridRows, children: options.map((option) => {
|
|
5909
|
+
const optionValue = String(option.value);
|
|
5910
|
+
const altText = option.alt || option.label;
|
|
5911
|
+
return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
5912
|
+
import_themes33.RadioCards.Item,
|
|
5913
|
+
{
|
|
5914
|
+
style: {
|
|
5915
|
+
padding: 0
|
|
5916
|
+
},
|
|
5917
|
+
value: optionValue,
|
|
5918
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_themes25.Inset, { style: { width: "100%", height: "100%", padding: 0 }, children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
5919
|
+
"img",
|
|
5920
|
+
{
|
|
5921
|
+
alt: altText,
|
|
5922
|
+
src: option.imageSrc,
|
|
5923
|
+
style: {
|
|
5924
|
+
width: "100%",
|
|
5925
|
+
height: "100%",
|
|
5926
|
+
display: "block",
|
|
5927
|
+
objectFit: imageFit,
|
|
5928
|
+
opacity: readonly ? 0.7 : 1
|
|
5929
|
+
}
|
|
5930
|
+
}
|
|
5931
|
+
) })
|
|
5932
|
+
},
|
|
5933
|
+
optionValue
|
|
5934
|
+
);
|
|
5935
|
+
}) })
|
|
5936
|
+
}
|
|
5937
|
+
);
|
|
5938
|
+
}
|
|
5753
5939
|
default:
|
|
5754
5940
|
return null;
|
|
5755
5941
|
}
|
|
@@ -5975,56 +6161,36 @@ function createYupValidation(field, validation) {
|
|
|
5975
6161
|
}
|
|
5976
6162
|
|
|
5977
6163
|
// src/molecules/dynamic-form-response-item.tsx
|
|
6164
|
+
function isRecord2(value) {
|
|
6165
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
6166
|
+
}
|
|
5978
6167
|
function DynamicFormResponseItem({
|
|
5979
6168
|
payload,
|
|
5980
6169
|
questionType,
|
|
5981
6170
|
config
|
|
5982
6171
|
}) {
|
|
5983
|
-
|
|
5984
|
-
return String(payload || "\uC751\uB2F5 \uC5C6\uC74C");
|
|
5985
|
-
}
|
|
5986
|
-
const payloadObj = payload;
|
|
5987
|
-
const value = payloadObj.value;
|
|
6172
|
+
const value = isRecord2(payload) && "value" in payload ? payload.value : payload;
|
|
5988
6173
|
if (value === void 0 || value === null || value === "") {
|
|
5989
6174
|
return "\uC751\uB2F5 \uC5C6\uC74C";
|
|
5990
6175
|
}
|
|
5991
|
-
|
|
5992
|
-
|
|
5993
|
-
|
|
5994
|
-
|
|
5995
|
-
}
|
|
5996
|
-
return void 0;
|
|
5997
|
-
};
|
|
5998
|
-
const options = getOptions(config);
|
|
6176
|
+
if (config) {
|
|
6177
|
+
const displayValue = getDynamicFormDisplayValue(config, value);
|
|
6178
|
+
return displayValue === "" ? "\uC751\uB2F5 \uC5C6\uC74C" : displayValue;
|
|
6179
|
+
}
|
|
5999
6180
|
switch (questionType) {
|
|
6000
6181
|
case "text":
|
|
6001
6182
|
case "textarea":
|
|
6002
6183
|
return String(value);
|
|
6003
6184
|
case "radio":
|
|
6004
6185
|
case "select":
|
|
6005
|
-
case "choice":
|
|
6006
|
-
if (options) {
|
|
6007
|
-
const option = options.find((opt) => opt.value === value);
|
|
6008
|
-
return option ? option.label : String(value);
|
|
6009
|
-
}
|
|
6010
6186
|
return String(value);
|
|
6011
6187
|
case "checkbox":
|
|
6012
6188
|
case "choices":
|
|
6013
6189
|
if (Array.isArray(value)) {
|
|
6014
|
-
|
|
6015
|
-
return value.map((val) => {
|
|
6016
|
-
const option = options.find((opt) => opt.value === val);
|
|
6017
|
-
return option ? option.label : String(val);
|
|
6018
|
-
}).join(", ");
|
|
6019
|
-
}
|
|
6020
|
-
return value.join(", ");
|
|
6190
|
+
return value.map((v) => String(v)).join(", ");
|
|
6021
6191
|
}
|
|
6022
6192
|
return String(value);
|
|
6023
6193
|
case "rating":
|
|
6024
|
-
if (options) {
|
|
6025
|
-
const option = options.find((opt) => opt.value === value);
|
|
6026
|
-
return option ? option.label : String(value);
|
|
6027
|
-
}
|
|
6028
6194
|
return String(value);
|
|
6029
6195
|
case "number":
|
|
6030
6196
|
return String(value);
|
|
@@ -6275,105 +6441,1358 @@ function TrainingInfoGuidelineButton({
|
|
|
6275
6441
|
);
|
|
6276
6442
|
}
|
|
6277
6443
|
|
|
6278
|
-
// src/
|
|
6279
|
-
var
|
|
6444
|
+
// src/molecules/dynamic-form-editor.tsx
|
|
6445
|
+
var import_react49 = require("react");
|
|
6280
6446
|
|
|
6281
|
-
// src/
|
|
6282
|
-
|
|
6447
|
+
// src/molecules/dynamic-form-editor-utils.ts
|
|
6448
|
+
function isRecord3(value) {
|
|
6449
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
6450
|
+
}
|
|
6451
|
+
function isNonEmptyTrimmedString(value) {
|
|
6452
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
6453
|
+
}
|
|
6454
|
+
function isFiniteNumber(value) {
|
|
6455
|
+
return typeof value === "number" && Number.isFinite(value);
|
|
6456
|
+
}
|
|
6457
|
+
function canCompileRegExp(pattern) {
|
|
6458
|
+
try {
|
|
6459
|
+
new RegExp(pattern);
|
|
6460
|
+
return true;
|
|
6461
|
+
} catch (e) {
|
|
6462
|
+
return false;
|
|
6463
|
+
}
|
|
6464
|
+
}
|
|
6465
|
+
function getFieldTypes() {
|
|
6466
|
+
return [
|
|
6467
|
+
"short_text",
|
|
6468
|
+
"long_text",
|
|
6469
|
+
"number",
|
|
6470
|
+
"email",
|
|
6471
|
+
"dropdown",
|
|
6472
|
+
"choice",
|
|
6473
|
+
"radio_cards",
|
|
6474
|
+
"image_radio_card",
|
|
6475
|
+
"choices",
|
|
6476
|
+
"yes_no"
|
|
6477
|
+
];
|
|
6478
|
+
}
|
|
6479
|
+
function getFieldTypeLabel(type) {
|
|
6480
|
+
const map = {
|
|
6481
|
+
short_text: "\uC9E7\uC740 \uD14D\uC2A4\uD2B8",
|
|
6482
|
+
long_text: "\uAE34 \uD14D\uC2A4\uD2B8",
|
|
6483
|
+
number: "\uC22B\uC790",
|
|
6484
|
+
email: "\uC774\uBA54\uC77C",
|
|
6485
|
+
dropdown: "\uB4DC\uB86D\uB2E4\uC6B4",
|
|
6486
|
+
choice: "\uB2E8\uC77C \uC120\uD0DD(\uB77C\uB514\uC624)",
|
|
6487
|
+
radio_cards: "\uB77C\uB514\uC624 \uCE74\uB4DC",
|
|
6488
|
+
image_radio_card: "\uC774\uBBF8\uC9C0 \uB77C\uB514\uC624 \uCE74\uB4DC",
|
|
6489
|
+
choices: "\uB2E4\uC911 \uC120\uD0DD(\uCCB4\uD06C)",
|
|
6490
|
+
yes_no: "\uB3D9\uC758(\uCCB4\uD06C)"
|
|
6491
|
+
};
|
|
6492
|
+
return map[type];
|
|
6493
|
+
}
|
|
6494
|
+
function findFieldIndexByName(fields, fieldName) {
|
|
6495
|
+
return fields.findIndex((field) => field.name === fieldName);
|
|
6496
|
+
}
|
|
6497
|
+
function toCamelFromSnake(value) {
|
|
6498
|
+
const parts = value.split("_").filter(Boolean);
|
|
6499
|
+
if (parts.length === 0) return "field";
|
|
6500
|
+
const [first, ...rest] = parts;
|
|
6501
|
+
const firstLower = first.toLowerCase();
|
|
6502
|
+
const restCamel = rest.map((p) => p.length === 0 ? "" : p[0].toUpperCase() + p.slice(1)).join("");
|
|
6503
|
+
return `${firstLower}${restCamel}`;
|
|
6504
|
+
}
|
|
6505
|
+
function createUniqueFieldName(fields, baseName) {
|
|
6506
|
+
const used = new Set(fields.map((f) => f.name));
|
|
6507
|
+
if (!used.has(baseName)) return baseName;
|
|
6508
|
+
let i = 2;
|
|
6509
|
+
while (used.has(`${baseName}${i}`)) i += 1;
|
|
6510
|
+
return `${baseName}${i}`;
|
|
6511
|
+
}
|
|
6512
|
+
function createDefaultField(type, currentFields) {
|
|
6513
|
+
const baseName = toCamelFromSnake(type);
|
|
6514
|
+
const name = createUniqueFieldName(currentFields, baseName);
|
|
6515
|
+
const label = getFieldTypeLabel(type);
|
|
6516
|
+
if (type === "short_text") return { name, type, label, placeholder: "" };
|
|
6517
|
+
if (type === "long_text") return { name, type, label, placeholder: "" };
|
|
6518
|
+
if (type === "number") return { name, type, label, placeholder: "" };
|
|
6519
|
+
if (type === "email") return { name, type, label, placeholder: "" };
|
|
6520
|
+
if (type === "dropdown")
|
|
6521
|
+
return {
|
|
6522
|
+
name,
|
|
6523
|
+
type,
|
|
6524
|
+
label,
|
|
6525
|
+
placeholder: "",
|
|
6526
|
+
options: [{ label: "\uC635\uC158 1", value: "option1" }]
|
|
6527
|
+
};
|
|
6528
|
+
if (type === "choice")
|
|
6529
|
+
return {
|
|
6530
|
+
name,
|
|
6531
|
+
type,
|
|
6532
|
+
label,
|
|
6533
|
+
orientation: "vertical",
|
|
6534
|
+
options: [{ label: "\uC635\uC158 1", value: "option1" }]
|
|
6535
|
+
};
|
|
6536
|
+
if (type === "radio_cards")
|
|
6537
|
+
return { name, type, label, options: [{ label: "\uC635\uC158 1", value: "option1" }] };
|
|
6538
|
+
if (type === "choices")
|
|
6539
|
+
return {
|
|
6540
|
+
name,
|
|
6541
|
+
type,
|
|
6542
|
+
label,
|
|
6543
|
+
orientation: "vertical",
|
|
6544
|
+
options: [{ label: "\uC635\uC158 1", value: "option1" }]
|
|
6545
|
+
};
|
|
6546
|
+
if (type === "yes_no") return { name, type, label, description: "" };
|
|
6547
|
+
return {
|
|
6548
|
+
name,
|
|
6549
|
+
type,
|
|
6550
|
+
label,
|
|
6551
|
+
gridColumnsCount: 4,
|
|
6552
|
+
gridItemHeight: "160px",
|
|
6553
|
+
gridGap: "2",
|
|
6554
|
+
imageFit: "cover",
|
|
6555
|
+
options: [
|
|
6556
|
+
{
|
|
6557
|
+
label: "\uC774\uBBF8\uC9C0 1",
|
|
6558
|
+
value: "option1",
|
|
6559
|
+
imageSrc: "https://placehold.co/300x300/png?text=1"
|
|
6560
|
+
}
|
|
6561
|
+
]
|
|
6562
|
+
};
|
|
6563
|
+
}
|
|
6564
|
+
function normalizeSchema(value) {
|
|
6565
|
+
const fallback = { fields: [] };
|
|
6566
|
+
if (!value) return fallback;
|
|
6567
|
+
if (!Array.isArray(value.fields)) return fallback;
|
|
6568
|
+
return { fields: value.fields };
|
|
6569
|
+
}
|
|
6570
|
+
function validateDynamicFormSchema(schema) {
|
|
6571
|
+
const issues = [];
|
|
6572
|
+
const nameToCount = /* @__PURE__ */ new Map();
|
|
6573
|
+
schema.fields.forEach((field) => {
|
|
6574
|
+
const prev = nameToCount.get(field.name) || 0;
|
|
6575
|
+
nameToCount.set(field.name, prev + 1);
|
|
6576
|
+
});
|
|
6577
|
+
schema.fields.forEach((field, index) => {
|
|
6578
|
+
const fieldKey = `${index}:${field.name}`;
|
|
6579
|
+
if (!isNonEmptyTrimmedString(field.name)) {
|
|
6580
|
+
issues.push({
|
|
6581
|
+
id: `field.name.required.${fieldKey}`,
|
|
6582
|
+
level: "error",
|
|
6583
|
+
message: "\uD544\uB4DC name\uC740 \uD544\uC218\uC785\uB2C8\uB2E4",
|
|
6584
|
+
fieldName: field.name
|
|
6585
|
+
});
|
|
6586
|
+
} else if (field.name.trim() !== field.name) {
|
|
6587
|
+
issues.push({
|
|
6588
|
+
id: `field.name.trim.${fieldKey}`,
|
|
6589
|
+
level: "warning",
|
|
6590
|
+
message: "\uD544\uB4DC name \uC55E/\uB4A4 \uACF5\uBC31\uC740 \uC81C\uAC70\uD558\uB294 \uAC83\uC744 \uAD8C\uC7A5\uD569\uB2C8\uB2E4",
|
|
6591
|
+
fieldName: field.name
|
|
6592
|
+
});
|
|
6593
|
+
}
|
|
6594
|
+
if (isNonEmptyTrimmedString(field.name)) {
|
|
6595
|
+
const count = nameToCount.get(field.name) || 0;
|
|
6596
|
+
if (count > 1) {
|
|
6597
|
+
issues.push({
|
|
6598
|
+
id: `field.name.duplicate.${fieldKey}`,
|
|
6599
|
+
level: "error",
|
|
6600
|
+
message: `\uC911\uBCF5\uB41C name\uC785\uB2C8\uB2E4: ${field.name}`,
|
|
6601
|
+
fieldName: field.name
|
|
6602
|
+
});
|
|
6603
|
+
}
|
|
6604
|
+
}
|
|
6605
|
+
if (!isNonEmptyTrimmedString(field.label)) {
|
|
6606
|
+
issues.push({
|
|
6607
|
+
id: `field.label.required.${fieldKey}`,
|
|
6608
|
+
level: "error",
|
|
6609
|
+
message: "\uD544\uB4DC label\uC740 \uD544\uC218\uC785\uB2C8\uB2E4",
|
|
6610
|
+
fieldName: field.name
|
|
6611
|
+
});
|
|
6612
|
+
}
|
|
6613
|
+
const type = field.type;
|
|
6614
|
+
const isOptionType = type === "dropdown" || type === "choice" || type === "radio_cards" || type === "choices";
|
|
6615
|
+
if (isOptionType) {
|
|
6616
|
+
const optionsRaw = field.options;
|
|
6617
|
+
if (!Array.isArray(optionsRaw) || optionsRaw.length === 0) {
|
|
6618
|
+
issues.push({
|
|
6619
|
+
id: `field.options.required.${fieldKey}`,
|
|
6620
|
+
level: "error",
|
|
6621
|
+
message: "options\uB294 1\uAC1C \uC774\uC0C1 \uD544\uC694\uD569\uB2C8\uB2E4",
|
|
6622
|
+
fieldName: field.name
|
|
6623
|
+
});
|
|
6624
|
+
}
|
|
6625
|
+
}
|
|
6626
|
+
if (type === "image_radio_card") {
|
|
6627
|
+
const optionsRaw = field.options;
|
|
6628
|
+
if (!Array.isArray(optionsRaw) || optionsRaw.length === 0) {
|
|
6629
|
+
issues.push({
|
|
6630
|
+
id: `field.imageOptions.required.${fieldKey}`,
|
|
6631
|
+
level: "error",
|
|
6632
|
+
message: "options\uB294 1\uAC1C \uC774\uC0C1 \uD544\uC694\uD569\uB2C8\uB2E4",
|
|
6633
|
+
fieldName: field.name
|
|
6634
|
+
});
|
|
6635
|
+
} else {
|
|
6636
|
+
optionsRaw.forEach((opt, optIndex) => {
|
|
6637
|
+
const imageSrc = isRecord3(opt) ? opt.imageSrc : void 0;
|
|
6638
|
+
if (!isNonEmptyTrimmedString(imageSrc)) {
|
|
6639
|
+
issues.push({
|
|
6640
|
+
id: `field.imageOptions.imageSrc.required.${fieldKey}.${optIndex}`,
|
|
6641
|
+
level: "error",
|
|
6642
|
+
message: "imageSrc\uB294 \uD544\uC218\uC785\uB2C8\uB2E4",
|
|
6643
|
+
fieldName: field.name
|
|
6644
|
+
});
|
|
6645
|
+
}
|
|
6646
|
+
});
|
|
6647
|
+
}
|
|
6648
|
+
}
|
|
6649
|
+
const validation = field.validation;
|
|
6650
|
+
if (validation) {
|
|
6651
|
+
if (isFiniteNumber(validation.min) && isFiniteNumber(validation.max)) {
|
|
6652
|
+
if (validation.min > validation.max) {
|
|
6653
|
+
issues.push({
|
|
6654
|
+
id: `field.validation.minmax.${fieldKey}`,
|
|
6655
|
+
level: "error",
|
|
6656
|
+
message: "validation.min\uC740 validation.max \uC774\uD558\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4",
|
|
6657
|
+
fieldName: field.name
|
|
6658
|
+
});
|
|
6659
|
+
}
|
|
6660
|
+
}
|
|
6661
|
+
if (isNonEmptyTrimmedString(validation.pattern)) {
|
|
6662
|
+
if (!canCompileRegExp(validation.pattern)) {
|
|
6663
|
+
issues.push({
|
|
6664
|
+
id: `field.validation.pattern.${fieldKey}`,
|
|
6665
|
+
level: "error",
|
|
6666
|
+
message: "validation.pattern\uC774 \uC62C\uBC14\uB978 \uC815\uADDC\uC2DD\uC774 \uC544\uB2D9\uB2C8\uB2E4",
|
|
6667
|
+
fieldName: field.name
|
|
6668
|
+
});
|
|
6669
|
+
}
|
|
6670
|
+
}
|
|
6671
|
+
}
|
|
6672
|
+
});
|
|
6673
|
+
return issues;
|
|
6674
|
+
}
|
|
6675
|
+
function hasErrorIssues(issues) {
|
|
6676
|
+
return issues.some((i) => i.level === "error");
|
|
6677
|
+
}
|
|
6678
|
+
function updateSchemaFields(schema, nextFields) {
|
|
6679
|
+
return { fields: nextFields };
|
|
6680
|
+
}
|
|
6681
|
+
function moveField(fields, fromIndex, toIndex) {
|
|
6682
|
+
if (fromIndex < 0 || fromIndex >= fields.length) return fields;
|
|
6683
|
+
if (toIndex < 0 || toIndex >= fields.length) return fields;
|
|
6684
|
+
if (fromIndex === toIndex) return fields;
|
|
6685
|
+
const next = [...fields];
|
|
6686
|
+
const [item] = next.splice(fromIndex, 1);
|
|
6687
|
+
next.splice(toIndex, 0, item);
|
|
6688
|
+
return next;
|
|
6689
|
+
}
|
|
6690
|
+
function duplicateField(fields, index) {
|
|
6691
|
+
if (index < 0 || index >= fields.length) return fields;
|
|
6692
|
+
const target = fields[index];
|
|
6693
|
+
const nextName = createUniqueFieldName(fields, target.name);
|
|
6694
|
+
const cloned = __spreadProps(__spreadValues({}, target), { name: nextName });
|
|
6695
|
+
const next = [...fields];
|
|
6696
|
+
next.splice(index + 1, 0, cloned);
|
|
6697
|
+
return next;
|
|
6698
|
+
}
|
|
6699
|
+
function updateFieldCommonProps(field, next) {
|
|
6700
|
+
const { name, label, description, required } = next;
|
|
6701
|
+
return __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, field), name !== void 0 ? { name } : {}), label !== void 0 ? { label } : {}), description !== void 0 ? { description } : {}), required !== void 0 ? { required } : {});
|
|
6702
|
+
}
|
|
6703
|
+
function updateFieldValidation(field, next) {
|
|
6704
|
+
if (!next) {
|
|
6705
|
+
const _a = field, { validation: _validation } = _a, rest = __objRest(_a, ["validation"]);
|
|
6706
|
+
return rest;
|
|
6707
|
+
}
|
|
6708
|
+
return __spreadProps(__spreadValues({}, field), { validation: next });
|
|
6709
|
+
}
|
|
6710
|
+
function updateTextPlaceholder(field, placeholder) {
|
|
6711
|
+
const type = field.type;
|
|
6712
|
+
if (type === "short_text" || type === "long_text" || type === "number" || type === "email" || type === "dropdown") {
|
|
6713
|
+
return __spreadProps(__spreadValues({}, field), { placeholder });
|
|
6714
|
+
}
|
|
6715
|
+
return field;
|
|
6716
|
+
}
|
|
6717
|
+
function updateOrientation(field, orientation) {
|
|
6718
|
+
const type = field.type;
|
|
6719
|
+
if (type === "choice" || type === "choices") return __spreadProps(__spreadValues({}, field), { orientation });
|
|
6720
|
+
return field;
|
|
6721
|
+
}
|
|
6722
|
+
function updateOptions(field, options) {
|
|
6723
|
+
const type = field.type;
|
|
6724
|
+
if (type === "dropdown" || type === "choice" || type === "radio_cards" || type === "choices") {
|
|
6725
|
+
return __spreadProps(__spreadValues({}, field), { options });
|
|
6726
|
+
}
|
|
6727
|
+
return field;
|
|
6728
|
+
}
|
|
6729
|
+
function updateImageOptions(field, options) {
|
|
6730
|
+
if (field.type === "image_radio_card") {
|
|
6731
|
+
return __spreadProps(__spreadValues({}, field), { options });
|
|
6732
|
+
}
|
|
6733
|
+
return field;
|
|
6734
|
+
}
|
|
6735
|
+
function updateImageLayout(field, next) {
|
|
6736
|
+
if (field.type !== "image_radio_card") return field;
|
|
6737
|
+
return __spreadValues(__spreadValues({}, field), next);
|
|
6738
|
+
}
|
|
6739
|
+
function resetFieldType(field, nextType, allFields) {
|
|
6740
|
+
const base = createDefaultField(nextType, allFields);
|
|
6741
|
+
return __spreadProps(__spreadValues({}, base), {
|
|
6742
|
+
name: field.name,
|
|
6743
|
+
label: field.label,
|
|
6744
|
+
description: field.description,
|
|
6745
|
+
required: field.required,
|
|
6746
|
+
validation: field.validation
|
|
6747
|
+
});
|
|
6748
|
+
}
|
|
6283
6749
|
|
|
6284
|
-
// src/
|
|
6750
|
+
// src/molecules/dynamic-form-editor-field-editor-panel.tsx
|
|
6751
|
+
var import_react47 = require("react");
|
|
6752
|
+
var import_themes56 = require("@radix-ui/themes");
|
|
6285
6753
|
var import_jsx_runtime93 = require("react/jsx-runtime");
|
|
6286
|
-
function
|
|
6287
|
-
|
|
6288
|
-
|
|
6289
|
-
|
|
6290
|
-
|
|
6291
|
-
|
|
6292
|
-
|
|
6293
|
-
|
|
6294
|
-
|
|
6295
|
-
|
|
6296
|
-
|
|
6297
|
-
|
|
6298
|
-
|
|
6299
|
-
|
|
6300
|
-
|
|
6301
|
-
|
|
6302
|
-
|
|
6754
|
+
function isRecord4(value) {
|
|
6755
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
6756
|
+
}
|
|
6757
|
+
function isFieldType(value, types) {
|
|
6758
|
+
return types.some((t) => t === value);
|
|
6759
|
+
}
|
|
6760
|
+
function parseOptionalNumber(value) {
|
|
6761
|
+
const trimmed = value.trim();
|
|
6762
|
+
if (trimmed.length === 0) return void 0;
|
|
6763
|
+
const num = Number(trimmed);
|
|
6764
|
+
return Number.isFinite(num) ? num : void 0;
|
|
6765
|
+
}
|
|
6766
|
+
function getValidation(field) {
|
|
6767
|
+
return field.validation ? field.validation : {};
|
|
6768
|
+
}
|
|
6769
|
+
function cleanValidation(next) {
|
|
6770
|
+
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;
|
|
6771
|
+
return hasAny ? next : void 0;
|
|
6772
|
+
}
|
|
6773
|
+
function moveItem(items, fromIndex, toIndex) {
|
|
6774
|
+
if (fromIndex < 0 || fromIndex >= items.length) return items;
|
|
6775
|
+
if (toIndex < 0 || toIndex >= items.length) return items;
|
|
6776
|
+
if (fromIndex === toIndex) return items;
|
|
6777
|
+
const next = [...items];
|
|
6778
|
+
const [item] = next.splice(fromIndex, 1);
|
|
6779
|
+
next.splice(toIndex, 0, item);
|
|
6780
|
+
return next;
|
|
6781
|
+
}
|
|
6782
|
+
function getOptionDrafts(field) {
|
|
6783
|
+
const raw = field.options;
|
|
6784
|
+
if (!Array.isArray(raw)) return [];
|
|
6785
|
+
return raw.map((o) => {
|
|
6786
|
+
if (!isRecord4(o)) return null;
|
|
6787
|
+
const label = typeof o.label === "string" ? o.label : "";
|
|
6788
|
+
const valueRaw = o.value;
|
|
6789
|
+
const value = typeof valueRaw === "string" || typeof valueRaw === "number" ? String(valueRaw) : "";
|
|
6790
|
+
return { label, value };
|
|
6791
|
+
}).filter((v) => v !== null);
|
|
6792
|
+
}
|
|
6793
|
+
function getImageOptionDrafts(field) {
|
|
6794
|
+
const raw = field.options;
|
|
6795
|
+
if (!Array.isArray(raw)) return [];
|
|
6796
|
+
return raw.map(
|
|
6797
|
+
(o) => {
|
|
6798
|
+
if (!isRecord4(o)) return null;
|
|
6799
|
+
const label = typeof o.label === "string" ? o.label : "";
|
|
6800
|
+
const valueRaw = o.value;
|
|
6801
|
+
const value = typeof valueRaw === "string" || typeof valueRaw === "number" ? String(valueRaw) : "";
|
|
6802
|
+
const imageSrc = typeof o.imageSrc === "string" ? o.imageSrc : "";
|
|
6803
|
+
const alt = typeof o.alt === "string" ? o.alt : void 0;
|
|
6804
|
+
return __spreadValues({ label, value, imageSrc }, alt ? { alt } : {});
|
|
6303
6805
|
}
|
|
6806
|
+
).filter(
|
|
6807
|
+
(v) => v !== null
|
|
6304
6808
|
);
|
|
6305
6809
|
}
|
|
6306
|
-
|
|
6307
|
-
|
|
6308
|
-
|
|
6309
|
-
|
|
6310
|
-
|
|
6311
|
-
|
|
6312
|
-
|
|
6313
|
-
|
|
6314
|
-
|
|
6315
|
-
|
|
6316
|
-
|
|
6317
|
-
|
|
6318
|
-
|
|
6319
|
-
|
|
6320
|
-
|
|
6321
|
-
|
|
6322
|
-
|
|
6323
|
-
|
|
6324
|
-
|
|
6325
|
-
|
|
6326
|
-
|
|
6327
|
-
|
|
6328
|
-
|
|
6329
|
-
|
|
6330
|
-
|
|
6331
|
-
|
|
6332
|
-
|
|
6333
|
-
|
|
6334
|
-
|
|
6335
|
-
|
|
6336
|
-
|
|
6337
|
-
|
|
6338
|
-
|
|
6339
|
-
|
|
6340
|
-
|
|
6341
|
-
|
|
6342
|
-
|
|
6343
|
-
|
|
6344
|
-
|
|
6345
|
-
|
|
6346
|
-
|
|
6347
|
-
|
|
6348
|
-
|
|
6349
|
-
|
|
6350
|
-
|
|
6351
|
-
|
|
6352
|
-
|
|
6353
|
-
|
|
6354
|
-
|
|
6355
|
-
|
|
6356
|
-
|
|
6357
|
-
|
|
6358
|
-
|
|
6359
|
-
|
|
6360
|
-
|
|
6361
|
-
|
|
6362
|
-
|
|
6363
|
-
|
|
6364
|
-
|
|
6365
|
-
|
|
6366
|
-
|
|
6367
|
-
|
|
6368
|
-
|
|
6369
|
-
|
|
6370
|
-
|
|
6371
|
-
|
|
6372
|
-
|
|
6373
|
-
|
|
6374
|
-
|
|
6375
|
-
|
|
6376
|
-
|
|
6810
|
+
function toFieldOptions(options) {
|
|
6811
|
+
return options.map((o) => ({ label: o.label, value: o.value }));
|
|
6812
|
+
}
|
|
6813
|
+
function toImageFieldOptions(options) {
|
|
6814
|
+
return options.map((o) => __spreadValues({
|
|
6815
|
+
label: o.label,
|
|
6816
|
+
value: o.value,
|
|
6817
|
+
imageSrc: o.imageSrc
|
|
6818
|
+
}, o.alt !== void 0 ? { alt: o.alt } : {}));
|
|
6819
|
+
}
|
|
6820
|
+
function DynamicFormEditorFieldEditorPanel(props) {
|
|
6821
|
+
const {
|
|
6822
|
+
field,
|
|
6823
|
+
fieldIndex,
|
|
6824
|
+
fields,
|
|
6825
|
+
readonly,
|
|
6826
|
+
fieldTypes,
|
|
6827
|
+
onRenameField,
|
|
6828
|
+
onUpdateField,
|
|
6829
|
+
onDeleteField,
|
|
6830
|
+
onMoveField,
|
|
6831
|
+
onDuplicateField
|
|
6832
|
+
} = props;
|
|
6833
|
+
const canMoveUp = fieldIndex > 0;
|
|
6834
|
+
const canMoveDown = fieldIndex >= 0 && fieldIndex < fields.length - 1;
|
|
6835
|
+
const placeholderValue = (0, import_react47.useMemo)(() => {
|
|
6836
|
+
if (!field) return "";
|
|
6837
|
+
return String(field.placeholder || "");
|
|
6838
|
+
}, [field]);
|
|
6839
|
+
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: [
|
|
6840
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
|
|
6841
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "body", children: "\uD544\uB4DC \uD3B8\uC9D1" }),
|
|
6842
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", gap: "1", children: [
|
|
6843
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
6844
|
+
IconButton,
|
|
6845
|
+
{
|
|
6846
|
+
"aria-label": "\uD544\uB4DC \uC704\uB85C",
|
|
6847
|
+
disabled: readonly || !field || !canMoveUp,
|
|
6848
|
+
onClick: () => {
|
|
6849
|
+
onMoveField("up");
|
|
6850
|
+
},
|
|
6851
|
+
variant: "soft",
|
|
6852
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.ChevronUpIcon, {})
|
|
6853
|
+
}
|
|
6854
|
+
),
|
|
6855
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
6856
|
+
IconButton,
|
|
6857
|
+
{
|
|
6858
|
+
"aria-label": "\uD544\uB4DC \uC544\uB798\uB85C",
|
|
6859
|
+
disabled: readonly || !field || !canMoveDown,
|
|
6860
|
+
onClick: () => {
|
|
6861
|
+
onMoveField("down");
|
|
6862
|
+
},
|
|
6863
|
+
variant: "soft",
|
|
6864
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.ChevronDownIcon, {})
|
|
6865
|
+
}
|
|
6866
|
+
),
|
|
6867
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
6868
|
+
IconButton,
|
|
6869
|
+
{
|
|
6870
|
+
"aria-label": "\uD544\uB4DC \uBCF5\uC81C",
|
|
6871
|
+
disabled: readonly || !field,
|
|
6872
|
+
onClick: onDuplicateField,
|
|
6873
|
+
variant: "soft",
|
|
6874
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.CopyIcon, {})
|
|
6875
|
+
}
|
|
6876
|
+
),
|
|
6877
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
6878
|
+
IconButton,
|
|
6879
|
+
{
|
|
6880
|
+
"aria-label": "\uD544\uB4DC \uC0AD\uC81C",
|
|
6881
|
+
disabled: readonly || !field,
|
|
6882
|
+
onClick: onDeleteField,
|
|
6883
|
+
variant: "soft",
|
|
6884
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.TrashIcon, {})
|
|
6885
|
+
}
|
|
6886
|
+
)
|
|
6887
|
+
] })
|
|
6888
|
+
] }),
|
|
6889
|
+
!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: [
|
|
6890
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "end", gap: "2", children: [
|
|
6891
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
6892
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "name" }),
|
|
6893
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
6894
|
+
TextField.Root,
|
|
6895
|
+
{
|
|
6896
|
+
disabled: readonly,
|
|
6897
|
+
onChange: (e) => {
|
|
6898
|
+
onRenameField(e.target.value);
|
|
6899
|
+
},
|
|
6900
|
+
value: field.name
|
|
6901
|
+
}
|
|
6902
|
+
)
|
|
6903
|
+
] }),
|
|
6904
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
6905
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "label" }),
|
|
6906
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
6907
|
+
TextField.Root,
|
|
6908
|
+
{
|
|
6909
|
+
disabled: readonly,
|
|
6910
|
+
onChange: (e) => {
|
|
6911
|
+
onUpdateField(updateFieldCommonProps(field, { label: e.target.value }));
|
|
6912
|
+
},
|
|
6913
|
+
value: field.label
|
|
6914
|
+
}
|
|
6915
|
+
)
|
|
6916
|
+
] })
|
|
6917
|
+
] }),
|
|
6918
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", gap: "2", children: [
|
|
6919
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
|
|
6920
|
+
Select.Root,
|
|
6921
|
+
{
|
|
6922
|
+
disabled: readonly,
|
|
6923
|
+
onValueChange: (v) => {
|
|
6924
|
+
if (!isFieldType(v, fieldTypes)) return;
|
|
6925
|
+
onUpdateField(resetFieldType(field, v, fields));
|
|
6926
|
+
},
|
|
6927
|
+
value: field.type,
|
|
6928
|
+
children: [
|
|
6929
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Trigger, { style: { minWidth: 220 } }),
|
|
6930
|
+
/* @__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)) })
|
|
6931
|
+
]
|
|
6932
|
+
}
|
|
6933
|
+
),
|
|
6934
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", gap: "2", children: [
|
|
6935
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
6936
|
+
Checkbox,
|
|
6937
|
+
{
|
|
6938
|
+
checked: Boolean(field.required),
|
|
6939
|
+
disabled: readonly,
|
|
6940
|
+
onCheckedChange: (checked) => {
|
|
6941
|
+
onUpdateField(updateFieldCommonProps(field, { required: checked }));
|
|
6942
|
+
}
|
|
6943
|
+
}
|
|
6944
|
+
),
|
|
6945
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "\uD544\uC218" })
|
|
6946
|
+
] })
|
|
6947
|
+
] }),
|
|
6948
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
|
|
6949
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "description" }),
|
|
6950
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
6951
|
+
TextArea,
|
|
6952
|
+
{
|
|
6953
|
+
disabled: readonly,
|
|
6954
|
+
onChange: (e) => {
|
|
6955
|
+
onUpdateField(
|
|
6956
|
+
updateFieldCommonProps(field, { description: e.target.value })
|
|
6957
|
+
);
|
|
6958
|
+
},
|
|
6959
|
+
rows: 3,
|
|
6960
|
+
value: field.description || ""
|
|
6961
|
+
}
|
|
6962
|
+
)
|
|
6963
|
+
] }),
|
|
6964
|
+
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: [
|
|
6965
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "placeholder" }),
|
|
6966
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
6967
|
+
TextField.Root,
|
|
6968
|
+
{
|
|
6969
|
+
disabled: readonly,
|
|
6970
|
+
onChange: (e) => {
|
|
6971
|
+
onUpdateField(updateTextPlaceholder(field, e.target.value));
|
|
6972
|
+
},
|
|
6973
|
+
value: placeholderValue
|
|
6974
|
+
}
|
|
6975
|
+
)
|
|
6976
|
+
] }) : null,
|
|
6977
|
+
field.type === "choice" || field.type === "choices" ? /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
|
|
6978
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "orientation" }),
|
|
6979
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
|
|
6980
|
+
Select.Root,
|
|
6981
|
+
{
|
|
6982
|
+
disabled: readonly,
|
|
6983
|
+
onValueChange: (v) => {
|
|
6984
|
+
const nextOrientation = v === "horizontal" ? "horizontal" : "vertical";
|
|
6985
|
+
onUpdateField(updateOrientation(field, nextOrientation));
|
|
6986
|
+
},
|
|
6987
|
+
value: field.orientation || "vertical",
|
|
6988
|
+
children: [
|
|
6989
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Trigger, { style: { minWidth: 220 } }),
|
|
6990
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(Select.Content, { children: [
|
|
6991
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Item, { value: "vertical", children: "vertical" }),
|
|
6992
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Item, { value: "horizontal", children: "horizontal" })
|
|
6993
|
+
] })
|
|
6994
|
+
]
|
|
6995
|
+
}
|
|
6996
|
+
)
|
|
6997
|
+
] }) : null,
|
|
6998
|
+
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: [
|
|
6999
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
|
|
7000
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "options" }),
|
|
7001
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
|
|
7002
|
+
Button,
|
|
7003
|
+
{
|
|
7004
|
+
disabled: readonly,
|
|
7005
|
+
onClick: () => {
|
|
7006
|
+
const drafts = getOptionDrafts(field);
|
|
7007
|
+
const nextDrafts = [
|
|
7008
|
+
...drafts,
|
|
7009
|
+
{
|
|
7010
|
+
label: `\uC635\uC158 ${drafts.length + 1}`,
|
|
7011
|
+
value: `option${drafts.length + 1}`
|
|
7012
|
+
}
|
|
7013
|
+
];
|
|
7014
|
+
onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
|
|
7015
|
+
},
|
|
7016
|
+
size: "small",
|
|
7017
|
+
variant: "soft",
|
|
7018
|
+
children: [
|
|
7019
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.PlusIcon, {}),
|
|
7020
|
+
" \uCD94\uAC00"
|
|
7021
|
+
]
|
|
7022
|
+
}
|
|
7023
|
+
)
|
|
7024
|
+
] }),
|
|
7025
|
+
getOptionDrafts(field).map((opt, i) => /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "end", gap: "2", children: [
|
|
7026
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
7027
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "label" }),
|
|
7028
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7029
|
+
TextField.Root,
|
|
7030
|
+
{
|
|
7031
|
+
disabled: readonly,
|
|
7032
|
+
onChange: (e) => {
|
|
7033
|
+
const drafts = getOptionDrafts(field);
|
|
7034
|
+
const nextDrafts = drafts.map(
|
|
7035
|
+
(d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { label: e.target.value }) : d
|
|
7036
|
+
);
|
|
7037
|
+
onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
|
|
7038
|
+
},
|
|
7039
|
+
value: opt.label
|
|
7040
|
+
}
|
|
7041
|
+
)
|
|
7042
|
+
] }),
|
|
7043
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
7044
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "value" }),
|
|
7045
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7046
|
+
TextField.Root,
|
|
7047
|
+
{
|
|
7048
|
+
disabled: readonly,
|
|
7049
|
+
onChange: (e) => {
|
|
7050
|
+
const drafts = getOptionDrafts(field);
|
|
7051
|
+
const nextDrafts = drafts.map(
|
|
7052
|
+
(d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { value: e.target.value }) : d
|
|
7053
|
+
);
|
|
7054
|
+
onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
|
|
7055
|
+
},
|
|
7056
|
+
value: opt.value
|
|
7057
|
+
}
|
|
7058
|
+
)
|
|
7059
|
+
] }),
|
|
7060
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { gap: "1", children: [
|
|
7061
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7062
|
+
IconButton,
|
|
7063
|
+
{
|
|
7064
|
+
"aria-label": "\uC635\uC158 \uC704\uB85C",
|
|
7065
|
+
disabled: readonly || i === 0,
|
|
7066
|
+
onClick: () => {
|
|
7067
|
+
const drafts = getOptionDrafts(field);
|
|
7068
|
+
const nextDrafts = moveItem(drafts, i, i - 1);
|
|
7069
|
+
onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
|
|
7070
|
+
},
|
|
7071
|
+
variant: "soft",
|
|
7072
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.ChevronUpIcon, {})
|
|
7073
|
+
}
|
|
7074
|
+
),
|
|
7075
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7076
|
+
IconButton,
|
|
7077
|
+
{
|
|
7078
|
+
"aria-label": "\uC635\uC158 \uC544\uB798\uB85C",
|
|
7079
|
+
disabled: readonly || i === getOptionDrafts(field).length - 1,
|
|
7080
|
+
onClick: () => {
|
|
7081
|
+
const drafts = getOptionDrafts(field);
|
|
7082
|
+
const nextDrafts = moveItem(drafts, i, i + 1);
|
|
7083
|
+
onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
|
|
7084
|
+
},
|
|
7085
|
+
variant: "soft",
|
|
7086
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.ChevronDownIcon, {})
|
|
7087
|
+
}
|
|
7088
|
+
),
|
|
7089
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7090
|
+
IconButton,
|
|
7091
|
+
{
|
|
7092
|
+
"aria-label": "\uC635\uC158 \uC0AD\uC81C",
|
|
7093
|
+
disabled: readonly,
|
|
7094
|
+
onClick: () => {
|
|
7095
|
+
const drafts = getOptionDrafts(field);
|
|
7096
|
+
const nextDrafts = drafts.filter((_, idx) => idx !== i);
|
|
7097
|
+
onUpdateField(updateOptions(field, toFieldOptions(nextDrafts)));
|
|
7098
|
+
},
|
|
7099
|
+
variant: "soft",
|
|
7100
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.TrashIcon, {})
|
|
7101
|
+
}
|
|
7102
|
+
)
|
|
7103
|
+
] })
|
|
7104
|
+
] }, `${opt.value}-${opt.label}`))
|
|
7105
|
+
] }) }) : null,
|
|
7106
|
+
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: [
|
|
7107
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
|
|
7108
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "image options" }),
|
|
7109
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
|
|
7110
|
+
Button,
|
|
7111
|
+
{
|
|
7112
|
+
disabled: readonly,
|
|
7113
|
+
onClick: () => {
|
|
7114
|
+
const drafts = getImageOptionDrafts(field);
|
|
7115
|
+
const nextDrafts = [
|
|
7116
|
+
...drafts,
|
|
7117
|
+
{
|
|
7118
|
+
label: `\uC774\uBBF8\uC9C0 ${drafts.length + 1}`,
|
|
7119
|
+
value: `option${drafts.length + 1}`,
|
|
7120
|
+
imageSrc: "https://placehold.co/300x300/png?text=new"
|
|
7121
|
+
}
|
|
7122
|
+
];
|
|
7123
|
+
onUpdateField(updateImageOptions(field, toImageFieldOptions(nextDrafts)));
|
|
7124
|
+
},
|
|
7125
|
+
size: "small",
|
|
7126
|
+
variant: "soft",
|
|
7127
|
+
children: [
|
|
7128
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.PlusIcon, {}),
|
|
7129
|
+
" \uCD94\uAC00"
|
|
7130
|
+
]
|
|
7131
|
+
}
|
|
7132
|
+
)
|
|
7133
|
+
] }),
|
|
7134
|
+
getImageOptionDrafts(field).map((opt, i) => /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7135
|
+
Card,
|
|
7136
|
+
{
|
|
7137
|
+
style: { padding: 10 },
|
|
7138
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { direction: "column", gap: "2", children: [
|
|
7139
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "end", gap: "2", children: [
|
|
7140
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
7141
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "label" }),
|
|
7142
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7143
|
+
TextField.Root,
|
|
7144
|
+
{
|
|
7145
|
+
disabled: readonly,
|
|
7146
|
+
onChange: (e) => {
|
|
7147
|
+
const drafts = getImageOptionDrafts(field);
|
|
7148
|
+
const nextDrafts = drafts.map(
|
|
7149
|
+
(d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { label: e.target.value }) : d
|
|
7150
|
+
);
|
|
7151
|
+
onUpdateField(
|
|
7152
|
+
updateImageOptions(field, toImageFieldOptions(nextDrafts))
|
|
7153
|
+
);
|
|
7154
|
+
},
|
|
7155
|
+
value: opt.label
|
|
7156
|
+
}
|
|
7157
|
+
)
|
|
7158
|
+
] }),
|
|
7159
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
7160
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "value" }),
|
|
7161
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7162
|
+
TextField.Root,
|
|
7163
|
+
{
|
|
7164
|
+
disabled: readonly,
|
|
7165
|
+
onChange: (e) => {
|
|
7166
|
+
const drafts = getImageOptionDrafts(field);
|
|
7167
|
+
const nextDrafts = drafts.map(
|
|
7168
|
+
(d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { value: e.target.value }) : d
|
|
7169
|
+
);
|
|
7170
|
+
onUpdateField(
|
|
7171
|
+
updateImageOptions(field, toImageFieldOptions(nextDrafts))
|
|
7172
|
+
);
|
|
7173
|
+
},
|
|
7174
|
+
value: opt.value
|
|
7175
|
+
}
|
|
7176
|
+
)
|
|
7177
|
+
] })
|
|
7178
|
+
] }),
|
|
7179
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
|
|
7180
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "imageSrc" }),
|
|
7181
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7182
|
+
TextField.Root,
|
|
7183
|
+
{
|
|
7184
|
+
disabled: readonly,
|
|
7185
|
+
onChange: (e) => {
|
|
7186
|
+
const drafts = getImageOptionDrafts(field);
|
|
7187
|
+
const nextDrafts = drafts.map(
|
|
7188
|
+
(d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { imageSrc: e.target.value }) : d
|
|
7189
|
+
);
|
|
7190
|
+
onUpdateField(
|
|
7191
|
+
updateImageOptions(field, toImageFieldOptions(nextDrafts))
|
|
7192
|
+
);
|
|
7193
|
+
},
|
|
7194
|
+
value: opt.imageSrc
|
|
7195
|
+
}
|
|
7196
|
+
)
|
|
7197
|
+
] }),
|
|
7198
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { align: "end", gap: "2", children: [
|
|
7199
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
7200
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "alt" }),
|
|
7201
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7202
|
+
TextField.Root,
|
|
7203
|
+
{
|
|
7204
|
+
disabled: readonly,
|
|
7205
|
+
onChange: (e) => {
|
|
7206
|
+
const drafts = getImageOptionDrafts(field);
|
|
7207
|
+
const nextAlt = e.target.value.trim().length === 0 ? void 0 : e.target.value;
|
|
7208
|
+
const nextDrafts = drafts.map(
|
|
7209
|
+
(d, idx) => idx === i ? __spreadProps(__spreadValues({}, d), { alt: nextAlt }) : d
|
|
7210
|
+
);
|
|
7211
|
+
onUpdateField(
|
|
7212
|
+
updateImageOptions(field, toImageFieldOptions(nextDrafts))
|
|
7213
|
+
);
|
|
7214
|
+
},
|
|
7215
|
+
value: opt.alt || ""
|
|
7216
|
+
}
|
|
7217
|
+
)
|
|
7218
|
+
] }),
|
|
7219
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7220
|
+
IconButton,
|
|
7221
|
+
{
|
|
7222
|
+
"aria-label": "\uC774\uBBF8\uC9C0 \uC635\uC158 \uC0AD\uC81C",
|
|
7223
|
+
disabled: readonly,
|
|
7224
|
+
onClick: () => {
|
|
7225
|
+
const drafts = getImageOptionDrafts(field);
|
|
7226
|
+
const nextDrafts = drafts.filter((_, idx) => idx !== i);
|
|
7227
|
+
onUpdateField(
|
|
7228
|
+
updateImageOptions(field, toImageFieldOptions(nextDrafts))
|
|
7229
|
+
);
|
|
7230
|
+
},
|
|
7231
|
+
variant: "soft",
|
|
7232
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_icons2.TrashIcon, {})
|
|
7233
|
+
}
|
|
7234
|
+
)
|
|
7235
|
+
] })
|
|
7236
|
+
] })
|
|
7237
|
+
},
|
|
7238
|
+
`${opt.value}-${opt.label}-${opt.imageSrc}`
|
|
7239
|
+
)),
|
|
7240
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { gap: "2", children: [
|
|
7241
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
7242
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "gridColumnsCount" }),
|
|
7243
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7244
|
+
TextField.Root,
|
|
7245
|
+
{
|
|
7246
|
+
disabled: readonly,
|
|
7247
|
+
inputMode: "numeric",
|
|
7248
|
+
onChange: (e) => {
|
|
7249
|
+
onUpdateField(
|
|
7250
|
+
updateImageLayout(field, {
|
|
7251
|
+
gridColumnsCount: parseOptionalNumber(e.target.value)
|
|
7252
|
+
})
|
|
7253
|
+
);
|
|
7254
|
+
},
|
|
7255
|
+
value: String(field.gridColumnsCount || "")
|
|
7256
|
+
}
|
|
7257
|
+
)
|
|
7258
|
+
] }),
|
|
7259
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
7260
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "gridItemHeight" }),
|
|
7261
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7262
|
+
TextField.Root,
|
|
7263
|
+
{
|
|
7264
|
+
disabled: readonly,
|
|
7265
|
+
onChange: (e) => {
|
|
7266
|
+
onUpdateField(
|
|
7267
|
+
updateImageLayout(field, { gridItemHeight: e.target.value })
|
|
7268
|
+
);
|
|
7269
|
+
},
|
|
7270
|
+
value: String(field.gridItemHeight || "")
|
|
7271
|
+
}
|
|
7272
|
+
)
|
|
7273
|
+
] }),
|
|
7274
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
7275
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "gridGap" }),
|
|
7276
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7277
|
+
TextField.Root,
|
|
7278
|
+
{
|
|
7279
|
+
disabled: readonly,
|
|
7280
|
+
onChange: (e) => {
|
|
7281
|
+
onUpdateField(updateImageLayout(field, { gridGap: e.target.value }));
|
|
7282
|
+
},
|
|
7283
|
+
value: String(field.gridGap || "")
|
|
7284
|
+
}
|
|
7285
|
+
)
|
|
7286
|
+
] })
|
|
7287
|
+
] }),
|
|
7288
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
|
|
7289
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "imageFit" }),
|
|
7290
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
|
|
7291
|
+
Select.Root,
|
|
7292
|
+
{
|
|
7293
|
+
disabled: readonly,
|
|
7294
|
+
onValueChange: (v) => {
|
|
7295
|
+
const nextFit = v === "contain" ? "contain" : "cover";
|
|
7296
|
+
onUpdateField(updateImageLayout(field, { imageFit: nextFit }));
|
|
7297
|
+
},
|
|
7298
|
+
value: field.imageFit || "cover",
|
|
7299
|
+
children: [
|
|
7300
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Trigger, { style: { minWidth: 220 } }),
|
|
7301
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(Select.Content, { children: [
|
|
7302
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Item, { value: "cover", children: "cover" }),
|
|
7303
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Select.Item, { value: "contain", children: "contain" })
|
|
7304
|
+
] })
|
|
7305
|
+
]
|
|
7306
|
+
}
|
|
7307
|
+
)
|
|
7308
|
+
] })
|
|
7309
|
+
] }) }) : null,
|
|
7310
|
+
/* @__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: [
|
|
7311
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "validation" }),
|
|
7312
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes22.Flex, { gap: "2", children: [
|
|
7313
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
7314
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "min" }),
|
|
7315
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7316
|
+
TextField.Root,
|
|
7317
|
+
{
|
|
7318
|
+
disabled: readonly,
|
|
7319
|
+
inputMode: "numeric",
|
|
7320
|
+
onChange: (e) => {
|
|
7321
|
+
const current = getValidation(field);
|
|
7322
|
+
const next = cleanValidation(__spreadProps(__spreadValues({}, current), {
|
|
7323
|
+
min: parseOptionalNumber(e.target.value)
|
|
7324
|
+
}));
|
|
7325
|
+
onUpdateField(updateFieldValidation(field, next));
|
|
7326
|
+
},
|
|
7327
|
+
value: getValidation(field).min !== void 0 ? String(getValidation(field).min) : ""
|
|
7328
|
+
}
|
|
7329
|
+
)
|
|
7330
|
+
] }),
|
|
7331
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { style: { flex: 1 }, children: [
|
|
7332
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "max" }),
|
|
7333
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7334
|
+
TextField.Root,
|
|
7335
|
+
{
|
|
7336
|
+
disabled: readonly,
|
|
7337
|
+
inputMode: "numeric",
|
|
7338
|
+
onChange: (e) => {
|
|
7339
|
+
const current = getValidation(field);
|
|
7340
|
+
const next = cleanValidation(__spreadProps(__spreadValues({}, current), {
|
|
7341
|
+
max: parseOptionalNumber(e.target.value)
|
|
7342
|
+
}));
|
|
7343
|
+
onUpdateField(updateFieldValidation(field, next));
|
|
7344
|
+
},
|
|
7345
|
+
value: getValidation(field).max !== void 0 ? String(getValidation(field).max) : ""
|
|
7346
|
+
}
|
|
7347
|
+
)
|
|
7348
|
+
] })
|
|
7349
|
+
] }),
|
|
7350
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
|
|
7351
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "pattern" }),
|
|
7352
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7353
|
+
TextField.Root,
|
|
7354
|
+
{
|
|
7355
|
+
disabled: readonly,
|
|
7356
|
+
onChange: (e) => {
|
|
7357
|
+
const current = getValidation(field);
|
|
7358
|
+
const next = cleanValidation(__spreadProps(__spreadValues({}, current), { pattern: e.target.value }));
|
|
7359
|
+
onUpdateField(updateFieldValidation(field, next));
|
|
7360
|
+
},
|
|
7361
|
+
value: String(getValidation(field).pattern || "")
|
|
7362
|
+
}
|
|
7363
|
+
)
|
|
7364
|
+
] }),
|
|
7365
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_themes56.Box, { children: [
|
|
7366
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Typo, { variant: "caption", children: "message" }),
|
|
7367
|
+
/* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
|
|
7368
|
+
TextField.Root,
|
|
7369
|
+
{
|
|
7370
|
+
disabled: readonly,
|
|
7371
|
+
onChange: (e) => {
|
|
7372
|
+
const current = getValidation(field);
|
|
7373
|
+
const next = cleanValidation(__spreadProps(__spreadValues({}, current), { message: e.target.value }));
|
|
7374
|
+
onUpdateField(updateFieldValidation(field, next));
|
|
7375
|
+
},
|
|
7376
|
+
value: String(getValidation(field).message || "")
|
|
7377
|
+
}
|
|
7378
|
+
)
|
|
7379
|
+
] })
|
|
7380
|
+
] }) })
|
|
7381
|
+
] })
|
|
7382
|
+
] }) });
|
|
7383
|
+
}
|
|
7384
|
+
|
|
7385
|
+
// src/molecules/dynamic-form-editor-field-list-panel.tsx
|
|
7386
|
+
var import_react48 = require("react");
|
|
7387
|
+
var import_themes57 = require("@radix-ui/themes");
|
|
7388
|
+
var import_jsx_runtime94 = require("react/jsx-runtime");
|
|
7389
|
+
function isFieldType2(value, types) {
|
|
7390
|
+
return types.some((t) => t === value);
|
|
7391
|
+
}
|
|
7392
|
+
function DynamicFormEditorFieldListPanel(props) {
|
|
7393
|
+
const {
|
|
7394
|
+
fields,
|
|
7395
|
+
selectedFieldName,
|
|
7396
|
+
readonly,
|
|
7397
|
+
fieldTypes,
|
|
7398
|
+
hasFieldError,
|
|
7399
|
+
onSelectFieldName,
|
|
7400
|
+
onAddField
|
|
7401
|
+
} = props;
|
|
7402
|
+
const isEmpty = fields.length === 0;
|
|
7403
|
+
const triggerPlaceholder = (0, import_react48.useMemo)(() => {
|
|
7404
|
+
return readonly ? "\uCD94\uAC00(\uC77D\uAE30 \uC804\uC6A9)" : "\uCD94\uAC00";
|
|
7405
|
+
}, [readonly]);
|
|
7406
|
+
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: [
|
|
7407
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
|
|
7408
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Typo, { variant: "body", children: "\uD544\uB4DC" }),
|
|
7409
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
7410
|
+
Select.Root,
|
|
7411
|
+
{
|
|
7412
|
+
disabled: readonly,
|
|
7413
|
+
onValueChange: (v) => {
|
|
7414
|
+
if (!isFieldType2(v, fieldTypes)) return;
|
|
7415
|
+
onAddField(v);
|
|
7416
|
+
},
|
|
7417
|
+
value: "",
|
|
7418
|
+
children: [
|
|
7419
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Select.Trigger, { placeholder: triggerPlaceholder }),
|
|
7420
|
+
/* @__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)) })
|
|
7421
|
+
]
|
|
7422
|
+
}
|
|
7423
|
+
)
|
|
7424
|
+
] }),
|
|
7425
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_themes22.Flex, { direction: "column", gap: "2", children: [
|
|
7426
|
+
isEmpty ? /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Typo, { color: "gray", variant: "caption", children: "\uC544\uC9C1 \uD544\uB4DC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4." }) : null,
|
|
7427
|
+
fields.map((field) => {
|
|
7428
|
+
const isSelected = field.name === selectedFieldName;
|
|
7429
|
+
const hasError = hasFieldError(field.name);
|
|
7430
|
+
return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
7431
|
+
Card,
|
|
7432
|
+
{
|
|
7433
|
+
error: isSelected ? hasError : void 0,
|
|
7434
|
+
onClick: () => {
|
|
7435
|
+
onSelectFieldName(field.name);
|
|
7436
|
+
},
|
|
7437
|
+
style: {
|
|
7438
|
+
padding: 10,
|
|
7439
|
+
cursor: "pointer",
|
|
7440
|
+
opacity: readonly ? 0.8 : 1,
|
|
7441
|
+
border: isSelected ? "1px solid var(--accent-9)" : "1px solid transparent"
|
|
7442
|
+
},
|
|
7443
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_themes57.Box, { style: { minWidth: 0 }, children: [
|
|
7444
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
|
|
7445
|
+
Typo,
|
|
7446
|
+
{
|
|
7447
|
+
style: {
|
|
7448
|
+
whiteSpace: "nowrap",
|
|
7449
|
+
overflow: "hidden",
|
|
7450
|
+
textOverflow: "ellipsis"
|
|
7451
|
+
},
|
|
7452
|
+
variant: "body",
|
|
7453
|
+
children: field.label
|
|
7454
|
+
}
|
|
7455
|
+
),
|
|
7456
|
+
/* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(Typo, { color: "gray", variant: "caption", children: [
|
|
7457
|
+
field.name,
|
|
7458
|
+
" \xB7 ",
|
|
7459
|
+
field.type,
|
|
7460
|
+
field.required ? " \xB7 required" : ""
|
|
7461
|
+
] })
|
|
7462
|
+
] })
|
|
7463
|
+
},
|
|
7464
|
+
field.name
|
|
7465
|
+
);
|
|
7466
|
+
})
|
|
7467
|
+
] })
|
|
7468
|
+
] }) });
|
|
7469
|
+
}
|
|
7470
|
+
|
|
7471
|
+
// src/molecules/dynamic-form-editor-issues-panel.tsx
|
|
7472
|
+
var import_jsx_runtime95 = require("react/jsx-runtime");
|
|
7473
|
+
function DynamicFormEditorIssuesPanel(props) {
|
|
7474
|
+
const { issues } = props;
|
|
7475
|
+
if (issues.length === 0) return null;
|
|
7476
|
+
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: [
|
|
7477
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Typo, { variant: "caption", children: "\uC2A4\uD0A4\uB9C8 \uC774\uC288" }),
|
|
7478
|
+
issues.map((i) => /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(
|
|
7479
|
+
Typo,
|
|
7480
|
+
{
|
|
7481
|
+
color: i.level === "error" ? "red" : "gray",
|
|
7482
|
+
variant: "caption",
|
|
7483
|
+
children: [
|
|
7484
|
+
"[",
|
|
7485
|
+
i.level,
|
|
7486
|
+
"] ",
|
|
7487
|
+
i.message,
|
|
7488
|
+
i.fieldName ? ` (field: ${i.fieldName})` : ""
|
|
7489
|
+
]
|
|
7490
|
+
},
|
|
7491
|
+
i.id
|
|
7492
|
+
))
|
|
7493
|
+
] }) });
|
|
7494
|
+
}
|
|
7495
|
+
|
|
7496
|
+
// src/molecules/dynamic-form-editor-preview-panel.tsx
|
|
7497
|
+
var import_jsx_runtime96 = require("react/jsx-runtime");
|
|
7498
|
+
function DynamicFormEditorPreviewPanel(props) {
|
|
7499
|
+
const { show, fields } = props;
|
|
7500
|
+
if (!show) return null;
|
|
7501
|
+
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: [
|
|
7502
|
+
/* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Typo, { variant: "body", children: "\uD504\uB9AC\uBDF0" }),
|
|
7503
|
+
/* @__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" }) })
|
|
7504
|
+
] }) });
|
|
7505
|
+
}
|
|
7506
|
+
|
|
7507
|
+
// src/molecules/dynamic-form-editor.tsx
|
|
7508
|
+
var import_jsx_runtime97 = require("react/jsx-runtime");
|
|
7509
|
+
function getInitialSchema(value, defaultValue) {
|
|
7510
|
+
if (value !== void 0) return normalizeSchema(value);
|
|
7511
|
+
return normalizeSchema(defaultValue);
|
|
7512
|
+
}
|
|
7513
|
+
function getSelectedField(schema, selectedFieldName) {
|
|
7514
|
+
if (!selectedFieldName) return { field: null, index: -1 };
|
|
7515
|
+
const index = findFieldIndexByName(schema.fields, selectedFieldName);
|
|
7516
|
+
if (index < 0) return { field: null, index: -1 };
|
|
7517
|
+
return { field: schema.fields[index], index };
|
|
7518
|
+
}
|
|
7519
|
+
function DynamicFormEditor(props) {
|
|
7520
|
+
const {
|
|
7521
|
+
value,
|
|
7522
|
+
defaultValue,
|
|
7523
|
+
onChange,
|
|
7524
|
+
onSave,
|
|
7525
|
+
onCancel,
|
|
7526
|
+
readonly = false,
|
|
7527
|
+
showPreview = false
|
|
7528
|
+
} = props;
|
|
7529
|
+
const isControlled = value !== void 0;
|
|
7530
|
+
const [uncontrolledSchema, setUncontrolledSchema] = (0, import_react49.useState)(
|
|
7531
|
+
() => getInitialSchema(void 0, defaultValue)
|
|
7532
|
+
);
|
|
7533
|
+
const effectiveSchema = (0, import_react49.useMemo)(() => {
|
|
7534
|
+
if (isControlled) return normalizeSchema(value);
|
|
7535
|
+
return uncontrolledSchema;
|
|
7536
|
+
}, [isControlled, uncontrolledSchema, value]);
|
|
7537
|
+
const [selectedFieldName, setSelectedFieldName] = (0, import_react49.useState)(() => {
|
|
7538
|
+
var _a, _b;
|
|
7539
|
+
const initialSchema = getInitialSchema(value, defaultValue);
|
|
7540
|
+
return (_b = (_a = initialSchema.fields[0]) == null ? void 0 : _a.name) != null ? _b : null;
|
|
7541
|
+
});
|
|
7542
|
+
const selected = (0, import_react49.useMemo)(() => {
|
|
7543
|
+
return getSelectedField(effectiveSchema, selectedFieldName);
|
|
7544
|
+
}, [effectiveSchema, selectedFieldName]);
|
|
7545
|
+
const issues = (0, import_react49.useMemo)(() => {
|
|
7546
|
+
return validateDynamicFormSchema(effectiveSchema);
|
|
7547
|
+
}, [effectiveSchema]);
|
|
7548
|
+
const errorFieldNameSet = (0, import_react49.useMemo)(() => {
|
|
7549
|
+
const set = /* @__PURE__ */ new Set();
|
|
7550
|
+
issues.forEach((i) => {
|
|
7551
|
+
if (i.level === "error" && i.fieldName) set.add(i.fieldName);
|
|
7552
|
+
});
|
|
7553
|
+
return set;
|
|
7554
|
+
}, [issues]);
|
|
7555
|
+
const hasFieldError = (0, import_react49.useCallback)(
|
|
7556
|
+
(fieldName) => {
|
|
7557
|
+
return errorFieldNameSet.has(fieldName);
|
|
7558
|
+
},
|
|
7559
|
+
[errorFieldNameSet]
|
|
7560
|
+
);
|
|
7561
|
+
const fieldTypes = (0, import_react49.useMemo)(() => getFieldTypes(), []);
|
|
7562
|
+
(0, import_react49.useEffect)(() => {
|
|
7563
|
+
var _a, _b;
|
|
7564
|
+
if (selectedFieldName && selected.field) return;
|
|
7565
|
+
setSelectedFieldName((_b = (_a = effectiveSchema.fields[0]) == null ? void 0 : _a.name) != null ? _b : null);
|
|
7566
|
+
}, [effectiveSchema.fields, selected.field, selectedFieldName]);
|
|
7567
|
+
(0, import_react49.useEffect)(() => {
|
|
7568
|
+
if (isControlled) return;
|
|
7569
|
+
setUncontrolledSchema(getInitialSchema(void 0, defaultValue));
|
|
7570
|
+
}, [defaultValue, isControlled]);
|
|
7571
|
+
const applySchema = (0, import_react49.useCallback)(
|
|
7572
|
+
(next) => {
|
|
7573
|
+
onChange == null ? void 0 : onChange(next);
|
|
7574
|
+
if (!isControlled) setUncontrolledSchema(next);
|
|
7575
|
+
},
|
|
7576
|
+
[isControlled, onChange]
|
|
7577
|
+
);
|
|
7578
|
+
const handleAddField = (0, import_react49.useCallback)(
|
|
7579
|
+
(type) => {
|
|
7580
|
+
if (readonly) return;
|
|
7581
|
+
const nextField = createDefaultField(type, effectiveSchema.fields);
|
|
7582
|
+
const nextFields = [...effectiveSchema.fields, nextField];
|
|
7583
|
+
applySchema(updateSchemaFields(effectiveSchema, nextFields));
|
|
7584
|
+
setSelectedFieldName(nextField.name);
|
|
7585
|
+
},
|
|
7586
|
+
[applySchema, effectiveSchema, readonly]
|
|
7587
|
+
);
|
|
7588
|
+
const handleUpdateSelectedField = (0, import_react49.useCallback)(
|
|
7589
|
+
(nextField) => {
|
|
7590
|
+
if (readonly) return;
|
|
7591
|
+
if (!selected.field || selected.index < 0) return;
|
|
7592
|
+
const nextFields = effectiveSchema.fields.map(
|
|
7593
|
+
(f, i) => i === selected.index ? nextField : f
|
|
7594
|
+
);
|
|
7595
|
+
applySchema(updateSchemaFields(effectiveSchema, nextFields));
|
|
7596
|
+
},
|
|
7597
|
+
[applySchema, effectiveSchema, readonly, selected.field, selected.index]
|
|
7598
|
+
);
|
|
7599
|
+
const handleRenameSelected = (0, import_react49.useCallback)(
|
|
7600
|
+
(nextName) => {
|
|
7601
|
+
if (readonly) return;
|
|
7602
|
+
const currentField = selected.field;
|
|
7603
|
+
if (!currentField) return;
|
|
7604
|
+
const others = effectiveSchema.fields.filter(
|
|
7605
|
+
(f) => f.name !== currentField.name
|
|
7606
|
+
);
|
|
7607
|
+
const uniqueName = createUniqueFieldName(others, nextName);
|
|
7608
|
+
const nextField = __spreadProps(__spreadValues({}, currentField), { name: uniqueName });
|
|
7609
|
+
handleUpdateSelectedField(nextField);
|
|
7610
|
+
setSelectedFieldName(uniqueName);
|
|
7611
|
+
},
|
|
7612
|
+
[effectiveSchema.fields, handleUpdateSelectedField, readonly, selected.field]
|
|
7613
|
+
);
|
|
7614
|
+
const handleDeleteSelected = (0, import_react49.useCallback)(() => {
|
|
7615
|
+
if (readonly) return;
|
|
7616
|
+
if (!selected.field || selected.index < 0) return;
|
|
7617
|
+
const nextFields = effectiveSchema.fields.filter(
|
|
7618
|
+
(_, i) => i !== selected.index
|
|
7619
|
+
);
|
|
7620
|
+
applySchema(updateSchemaFields(effectiveSchema, nextFields));
|
|
7621
|
+
let nextSelected = null;
|
|
7622
|
+
if (nextFields.length > selected.index) nextSelected = nextFields[selected.index].name;
|
|
7623
|
+
else if (nextFields.length > 0) nextSelected = nextFields[0].name;
|
|
7624
|
+
setSelectedFieldName(nextSelected);
|
|
7625
|
+
}, [applySchema, effectiveSchema, readonly, selected.field, selected.index]);
|
|
7626
|
+
const handleMoveSelected = (0, import_react49.useCallback)(
|
|
7627
|
+
(direction) => {
|
|
7628
|
+
if (readonly) return;
|
|
7629
|
+
if (!selected.field || selected.index < 0) return;
|
|
7630
|
+
const toIndex = direction === "up" ? selected.index - 1 : selected.index + 1;
|
|
7631
|
+
const nextFields = moveField(
|
|
7632
|
+
effectiveSchema.fields,
|
|
7633
|
+
selected.index,
|
|
7634
|
+
toIndex
|
|
7635
|
+
);
|
|
7636
|
+
applySchema(updateSchemaFields(effectiveSchema, nextFields));
|
|
7637
|
+
},
|
|
7638
|
+
[applySchema, effectiveSchema, readonly, selected.field, selected.index]
|
|
7639
|
+
);
|
|
7640
|
+
const handleDuplicateSelected = (0, import_react49.useCallback)(() => {
|
|
7641
|
+
if (readonly) return;
|
|
7642
|
+
if (!selected.field || selected.index < 0) return;
|
|
7643
|
+
const nextFields = duplicateField(
|
|
7644
|
+
effectiveSchema.fields,
|
|
7645
|
+
selected.index
|
|
7646
|
+
);
|
|
7647
|
+
applySchema(updateSchemaFields(effectiveSchema, nextFields));
|
|
7648
|
+
const duplicatedIndex = selected.index + 1;
|
|
7649
|
+
const nextSelected = nextFields.length > duplicatedIndex ? nextFields[duplicatedIndex].name : selected.field.name;
|
|
7650
|
+
setSelectedFieldName(nextSelected);
|
|
7651
|
+
}, [applySchema, effectiveSchema, readonly, selected.field, selected.index]);
|
|
7652
|
+
const handleSave = (0, import_react49.useCallback)(() => {
|
|
7653
|
+
if (!onSave) return;
|
|
7654
|
+
const result = onSave(effectiveSchema);
|
|
7655
|
+
void result;
|
|
7656
|
+
}, [effectiveSchema, onSave]);
|
|
7657
|
+
const disableSave = readonly || !onSave || hasErrorIssues(issues);
|
|
7658
|
+
return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_themes22.Flex, { align: "start", gap: "4", style: { width: "100%" }, children: [
|
|
7659
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
7660
|
+
DynamicFormEditorFieldListPanel,
|
|
7661
|
+
{
|
|
7662
|
+
fieldTypes,
|
|
7663
|
+
fields: effectiveSchema.fields,
|
|
7664
|
+
hasFieldError,
|
|
7665
|
+
onAddField: handleAddField,
|
|
7666
|
+
onSelectFieldName: setSelectedFieldName,
|
|
7667
|
+
readonly,
|
|
7668
|
+
selectedFieldName
|
|
7669
|
+
}
|
|
7670
|
+
),
|
|
7671
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_themes22.Flex, { direction: "column", gap: "3", style: { flex: 1, minWidth: 520 }, children: [
|
|
7672
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
|
|
7673
|
+
DynamicFormEditorFieldEditorPanel,
|
|
7674
|
+
{
|
|
7675
|
+
field: selected.field,
|
|
7676
|
+
fieldIndex: selected.index,
|
|
7677
|
+
fieldTypes,
|
|
7678
|
+
fields: effectiveSchema.fields,
|
|
7679
|
+
onDeleteField: handleDeleteSelected,
|
|
7680
|
+
onDuplicateField: handleDuplicateSelected,
|
|
7681
|
+
onMoveField: handleMoveSelected,
|
|
7682
|
+
onRenameField: handleRenameSelected,
|
|
7683
|
+
onUpdateField: handleUpdateSelectedField,
|
|
7684
|
+
readonly
|
|
7685
|
+
}
|
|
7686
|
+
),
|
|
7687
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(DynamicFormEditorIssuesPanel, { issues }),
|
|
7688
|
+
onSave || onCancel ? /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_themes22.Flex, { gap: "2", justify: "end", children: [
|
|
7689
|
+
onCancel ? /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Button, { disabled: readonly, onClick: onCancel, variant: "soft", children: "\uCDE8\uC18C" }) : null,
|
|
7690
|
+
onSave ? /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Button, { disabled: disableSave, onClick: handleSave, children: "\uC800\uC7A5" }) : null
|
|
7691
|
+
] }) : null
|
|
7692
|
+
] }),
|
|
7693
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)(DynamicFormEditorPreviewPanel, { fields: effectiveSchema.fields, show: showPreview })
|
|
7694
|
+
] });
|
|
7695
|
+
}
|
|
7696
|
+
|
|
7697
|
+
// src/theme/use-theme.tsx
|
|
7698
|
+
var import_themes58 = require("@radix-ui/themes");
|
|
7699
|
+
|
|
7700
|
+
// src/ui-props/index.ts
|
|
7701
|
+
var uiProps = __toESM(require("@radix-ui/themes/dist/cjs/props/index.js"), 1);
|
|
7702
|
+
|
|
7703
|
+
// src/charts/horizontal-bar-chart.tsx
|
|
7704
|
+
var import_jsx_runtime98 = require("react/jsx-runtime");
|
|
7705
|
+
function HorizontalBarChart(props) {
|
|
7706
|
+
const { total, value, backgroundColor, barColor, height } = props;
|
|
7707
|
+
return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
7708
|
+
"div",
|
|
7709
|
+
{
|
|
7710
|
+
className: "tipp_horizontal-bar-chart bar-wrapper",
|
|
7711
|
+
style: { height, backgroundColor },
|
|
7712
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
7713
|
+
"div",
|
|
7714
|
+
{
|
|
7715
|
+
style: {
|
|
7716
|
+
width: `${Math.round(value / total * 100)}%`,
|
|
7717
|
+
height: "100%"
|
|
7718
|
+
},
|
|
7719
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "bar", style: { backgroundColor: barColor } })
|
|
7720
|
+
}
|
|
7721
|
+
)
|
|
7722
|
+
}
|
|
7723
|
+
);
|
|
7724
|
+
}
|
|
7725
|
+
|
|
7726
|
+
// src/charts/chart-theme.json
|
|
7727
|
+
var chart_theme_default = {
|
|
7728
|
+
version: 1,
|
|
7729
|
+
themeName: "customed",
|
|
7730
|
+
theme: {
|
|
7731
|
+
seriesCnt: "5",
|
|
7732
|
+
backgroundColor: "rgba(0,0,0,0)",
|
|
7733
|
+
titleColor: "#1c2024",
|
|
7734
|
+
subtitleColor: "#8d8d8d",
|
|
7735
|
+
textColorShow: false,
|
|
7736
|
+
textColor: "#333",
|
|
7737
|
+
markTextColor: "#ffffff",
|
|
7738
|
+
color: [
|
|
7739
|
+
"#ffe629",
|
|
7740
|
+
"#3e63dd",
|
|
7741
|
+
"#ec9455",
|
|
7742
|
+
"#5bb98b",
|
|
7743
|
+
"#cb1d63",
|
|
7744
|
+
"#3ba272",
|
|
7745
|
+
"#fc8452",
|
|
7746
|
+
"#9a60b4",
|
|
7747
|
+
"#ea7ccc"
|
|
7748
|
+
],
|
|
7749
|
+
borderColor: "#8d8d8d",
|
|
7750
|
+
borderWidth: 0,
|
|
7751
|
+
visualMapColor: ["#bf444c", "#d88273", "#f6efa6"],
|
|
7752
|
+
legendTextColor: "#1c2024",
|
|
7753
|
+
kColor: "#eb5454",
|
|
7754
|
+
kColor0: "#47b262",
|
|
7755
|
+
kBorderColor: "#eb5454",
|
|
7756
|
+
kBorderColor0: "#47b262",
|
|
7757
|
+
kBorderWidth: 1,
|
|
7758
|
+
lineWidth: 2,
|
|
7759
|
+
symbolSize: 4,
|
|
7760
|
+
symbol: "emptyCircle",
|
|
7761
|
+
symbolBorderWidth: 1,
|
|
7762
|
+
lineSmooth: false,
|
|
7763
|
+
graphLineWidth: 1,
|
|
7764
|
+
graphLineColor: "#aaa",
|
|
7765
|
+
mapLabelColor: "#000",
|
|
7766
|
+
mapLabelColorE: "rgb(100,0,0)",
|
|
7767
|
+
mapBorderColor: "#444",
|
|
7768
|
+
mapBorderColorE: "#444",
|
|
7769
|
+
mapBorderWidth: 0.5,
|
|
7770
|
+
mapBorderWidthE: 1,
|
|
7771
|
+
mapAreaColor: "#eee",
|
|
7772
|
+
mapAreaColorE: "rgba(255,215,0,0.8)",
|
|
7773
|
+
axes: [
|
|
7774
|
+
{
|
|
7775
|
+
type: "all",
|
|
7776
|
+
name: "\u901A\u7528\u5750\u6807\u8F74",
|
|
7777
|
+
axisLineShow: true,
|
|
7778
|
+
axisLineColor: "#6E7079",
|
|
7779
|
+
axisTickShow: true,
|
|
7780
|
+
axisTickColor: "#6E7079",
|
|
7781
|
+
axisLabelShow: true,
|
|
7782
|
+
axisLabelColor: "#6E7079",
|
|
7783
|
+
splitLineShow: true,
|
|
7784
|
+
splitLineColor: ["#E0E6F1"],
|
|
7785
|
+
splitAreaShow: false,
|
|
7786
|
+
splitAreaColor: ["rgba(250,250,250,0.2)", "rgba(210,219,238,0.2)"]
|
|
7787
|
+
},
|
|
7788
|
+
{
|
|
7789
|
+
type: "category",
|
|
7790
|
+
name: "\u7C7B\u76EE\u5750\u6807\u8F74",
|
|
7791
|
+
axisLineShow: true,
|
|
7792
|
+
axisLineColor: "#6E7079",
|
|
7793
|
+
axisTickShow: true,
|
|
7794
|
+
axisTickColor: "#6E7079",
|
|
7795
|
+
axisLabelShow: true,
|
|
6377
7796
|
axisLabelColor: "#6E7079",
|
|
6378
7797
|
splitLineShow: false,
|
|
6379
7798
|
splitLineColor: ["#E0E6F1"],
|
|
@@ -6453,23 +7872,23 @@ var EchartDefaultProps = {
|
|
|
6453
7872
|
};
|
|
6454
7873
|
|
|
6455
7874
|
// src/app/platform/userInfos/coaching-customer-info/small.tsx
|
|
6456
|
-
var
|
|
7875
|
+
var import_jsx_runtime99 = require("react/jsx-runtime");
|
|
6457
7876
|
function CoachingCustomerInfoSmall({
|
|
6458
7877
|
customer,
|
|
6459
7878
|
children,
|
|
6460
7879
|
badge
|
|
6461
7880
|
}) {
|
|
6462
|
-
return /* @__PURE__ */ (0,
|
|
7881
|
+
return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
|
|
6463
7882
|
import_themes22.Flex,
|
|
6464
7883
|
{
|
|
6465
7884
|
direction: { initial: "column", xs: "row" },
|
|
6466
7885
|
gap: "3",
|
|
6467
7886
|
justify: "between",
|
|
6468
7887
|
children: [
|
|
6469
|
-
/* @__PURE__ */ (0,
|
|
6470
|
-
/* @__PURE__ */ (0,
|
|
6471
|
-
/* @__PURE__ */ (0,
|
|
6472
|
-
/* @__PURE__ */ (0,
|
|
7888
|
+
/* @__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: [
|
|
7889
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Heading2, { variant: "heading3", children: (customer == null ? void 0 : customer.username) || "\uC774\uB984 \uC5C6\uC74C" }),
|
|
7890
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Typo, { color: "gray", truncate: true, variant: "body", children: customer == null ? void 0 : customer.company }),
|
|
7891
|
+
/* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_themes6.Box, { style: { justifySelf: "end" }, children: badge })
|
|
6473
7892
|
] }) }),
|
|
6474
7893
|
children
|
|
6475
7894
|
]
|
|
@@ -6480,7 +7899,7 @@ function CoachingCustomerInfoSmall({
|
|
|
6480
7899
|
// src/app/platform/userInfos/utils.tsx
|
|
6481
7900
|
var import_date_fns3 = require("date-fns");
|
|
6482
7901
|
var import_react_icons10 = require("@radix-ui/react-icons");
|
|
6483
|
-
var
|
|
7902
|
+
var import_jsx_runtime100 = require("react/jsx-runtime");
|
|
6484
7903
|
var infoList = [
|
|
6485
7904
|
{ label: "\uC774\uB984", getValue: (customer) => customer == null ? void 0 : customer.username },
|
|
6486
7905
|
{ label: "\uC131\uBCC4", getValue: (customer) => customer == null ? void 0 : customer.gender },
|
|
@@ -6540,21 +7959,21 @@ var sessionList = [
|
|
|
6540
7959
|
var renderItem = (args) => {
|
|
6541
7960
|
const { info, data, onClickCopy } = args;
|
|
6542
7961
|
const value = info.getValue(data);
|
|
6543
|
-
return /* @__PURE__ */ (0,
|
|
7962
|
+
return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_jsx_runtime100.Fragment, { children: [
|
|
6544
7963
|
info.render ? info.render(value) : value || "-",
|
|
6545
|
-
info.copyable && value ? /* @__PURE__ */ (0,
|
|
7964
|
+
info.copyable && value ? /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(CopyButton, { onClickCopy, value }) : null
|
|
6546
7965
|
] });
|
|
6547
7966
|
};
|
|
6548
7967
|
var renderDataListItem = (args) => {
|
|
6549
7968
|
const { info, data, onClickCopy } = args;
|
|
6550
|
-
return /* @__PURE__ */ (0,
|
|
6551
|
-
/* @__PURE__ */ (0,
|
|
6552
|
-
/* @__PURE__ */ (0,
|
|
7969
|
+
return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_themes15.DataList.Item, { children: [
|
|
7970
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_themes15.DataList.Label, { children: info.label }),
|
|
7971
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_themes15.DataList.Value, { children: renderItem({ info, data, onClickCopy }) })
|
|
6553
7972
|
] }, info.label);
|
|
6554
7973
|
};
|
|
6555
7974
|
function CopyButton(props) {
|
|
6556
7975
|
const { value, onClickCopy } = props;
|
|
6557
|
-
return /* @__PURE__ */ (0,
|
|
7976
|
+
return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
6558
7977
|
Button,
|
|
6559
7978
|
{
|
|
6560
7979
|
color: "gray",
|
|
@@ -6563,13 +7982,13 @@ function CopyButton(props) {
|
|
|
6563
7982
|
},
|
|
6564
7983
|
style: { marginLeft: "0", marginTop: "0" },
|
|
6565
7984
|
variant: "transparent",
|
|
6566
|
-
children: /* @__PURE__ */ (0,
|
|
7985
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_react_icons10.CopyIcon, {})
|
|
6567
7986
|
}
|
|
6568
7987
|
);
|
|
6569
7988
|
}
|
|
6570
7989
|
|
|
6571
7990
|
// src/app/platform/userInfos/coaching-customer-info/medium.tsx
|
|
6572
|
-
var
|
|
7991
|
+
var import_jsx_runtime101 = require("react/jsx-runtime");
|
|
6573
7992
|
function CoachingCustomerInfoMedium({
|
|
6574
7993
|
customer,
|
|
6575
7994
|
session,
|
|
@@ -6577,28 +7996,28 @@ function CoachingCustomerInfoMedium({
|
|
|
6577
7996
|
badge,
|
|
6578
7997
|
onClickCopy
|
|
6579
7998
|
}) {
|
|
6580
|
-
return /* @__PURE__ */ (0,
|
|
6581
|
-
/* @__PURE__ */ (0,
|
|
6582
|
-
/* @__PURE__ */ (0,
|
|
6583
|
-
/* @__PURE__ */ (0,
|
|
7999
|
+
return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
|
|
8000
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_themes6.Box, { children: [
|
|
8001
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_themes22.Flex, { align: "center", justify: "between", mb: "1", width: "100%", children: [
|
|
8002
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Heading2, { variant: "heading2", children: (customer == null ? void 0 : customer.username) || "\uC774\uB984 \uC5C6\uC74C" }),
|
|
6584
8003
|
badge
|
|
6585
8004
|
] }),
|
|
6586
|
-
/* @__PURE__ */ (0,
|
|
8005
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Heading2, { truncate: true, variant: "heading4", weight: "regular", children: customer == null ? void 0 : customer.company })
|
|
6587
8006
|
] }),
|
|
6588
8007
|
children,
|
|
6589
|
-
/* @__PURE__ */ (0,
|
|
8008
|
+
/* @__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
8009
|
(el) => renderDataListItem({
|
|
6591
8010
|
info: el,
|
|
6592
8011
|
data: session,
|
|
6593
8012
|
onClickCopy
|
|
6594
8013
|
})
|
|
6595
8014
|
) }) }),
|
|
6596
|
-
/* @__PURE__ */ (0,
|
|
6597
|
-
/* @__PURE__ */ (0,
|
|
6598
|
-
/* @__PURE__ */ (0,
|
|
8015
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_themes23.Grid, { align: "center", columns: "auto 1fr", gap: "3", children: [
|
|
8016
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Heading2, { variant: "heading5", children: "\uACE0\uAC1D \uC815\uBCF4" }),
|
|
8017
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_themes39.Separator, { size: "4" })
|
|
6599
8018
|
] }),
|
|
6600
|
-
/* @__PURE__ */ (0,
|
|
6601
|
-
return /* @__PURE__ */ (0,
|
|
8019
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_themes22.Flex, { direction: "column", gap: "4", children: infoList.map((el) => {
|
|
8020
|
+
return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Typo, { children: renderItem({
|
|
6602
8021
|
info: el,
|
|
6603
8022
|
data: customer,
|
|
6604
8023
|
onClickCopy
|
|
@@ -6608,7 +8027,7 @@ function CoachingCustomerInfoMedium({
|
|
|
6608
8027
|
}
|
|
6609
8028
|
|
|
6610
8029
|
// src/app/platform/userInfos/coaching-customer-info/large.tsx
|
|
6611
|
-
var
|
|
8030
|
+
var import_jsx_runtime102 = require("react/jsx-runtime");
|
|
6612
8031
|
function CoachingCustomerInfoLarge({
|
|
6613
8032
|
customer,
|
|
6614
8033
|
session,
|
|
@@ -6616,24 +8035,24 @@ function CoachingCustomerInfoLarge({
|
|
|
6616
8035
|
badge,
|
|
6617
8036
|
onClickCopy
|
|
6618
8037
|
}) {
|
|
6619
|
-
return /* @__PURE__ */ (0,
|
|
6620
|
-
/* @__PURE__ */ (0,
|
|
6621
|
-
/* @__PURE__ */ (0,
|
|
6622
|
-
/* @__PURE__ */ (0,
|
|
8038
|
+
return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
|
|
8039
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(import_themes6.Box, { children: [
|
|
8040
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(import_themes22.Flex, { align: "center", justify: "between", mb: "1", width: "100%", children: [
|
|
8041
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Heading2, { variant: "heading2", children: (customer == null ? void 0 : customer.username) || "\uC774\uB984 \uC5C6\uC74C" }),
|
|
6623
8042
|
badge
|
|
6624
8043
|
] }),
|
|
6625
|
-
/* @__PURE__ */ (0,
|
|
8044
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Heading2, { truncate: true, variant: "heading4", weight: "regular", children: customer == null ? void 0 : customer.company })
|
|
6626
8045
|
] }),
|
|
6627
8046
|
children,
|
|
6628
|
-
/* @__PURE__ */ (0,
|
|
8047
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Card, { size: "2", children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_themes15.DataList.Root, { children: sessionList.map(
|
|
6629
8048
|
(el) => renderDataListItem({
|
|
6630
8049
|
info: el,
|
|
6631
8050
|
data: session,
|
|
6632
8051
|
onClickCopy
|
|
6633
8052
|
})
|
|
6634
8053
|
) }) }),
|
|
6635
|
-
/* @__PURE__ */ (0,
|
|
6636
|
-
/* @__PURE__ */ (0,
|
|
8054
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_themes39.Separator, { size: "4" }),
|
|
8055
|
+
/* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_themes15.DataList.Root, { children: infoList.map(
|
|
6637
8056
|
(info) => renderDataListItem({
|
|
6638
8057
|
info,
|
|
6639
8058
|
data: customer,
|
|
@@ -6644,19 +8063,19 @@ function CoachingCustomerInfoLarge({
|
|
|
6644
8063
|
}
|
|
6645
8064
|
|
|
6646
8065
|
// src/app/platform/userInfos/coaching-customer-info/index.tsx
|
|
6647
|
-
var
|
|
8066
|
+
var import_jsx_runtime103 = require("react/jsx-runtime");
|
|
6648
8067
|
function CoachingCustomerInfo(props) {
|
|
6649
|
-
return /* @__PURE__ */ (0,
|
|
6650
|
-
/* @__PURE__ */ (0,
|
|
6651
|
-
/* @__PURE__ */ (0,
|
|
6652
|
-
/* @__PURE__ */ (0,
|
|
8068
|
+
return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(import_jsx_runtime103.Fragment, { children: [
|
|
8069
|
+
/* @__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)) }),
|
|
8070
|
+
/* @__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)) }),
|
|
8071
|
+
/* @__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
8072
|
] });
|
|
6654
8073
|
}
|
|
6655
8074
|
|
|
6656
8075
|
// src/app/platform/goal-manage-card-read.tsx
|
|
6657
|
-
var
|
|
8076
|
+
var import_react50 = require("react");
|
|
6658
8077
|
var import_date_fns4 = require("date-fns");
|
|
6659
|
-
var
|
|
8078
|
+
var import_jsx_runtime104 = require("react/jsx-runtime");
|
|
6660
8079
|
function GoalManageCardRead(props) {
|
|
6661
8080
|
const {
|
|
6662
8081
|
title,
|
|
@@ -6670,12 +8089,12 @@ function GoalManageCardRead(props) {
|
|
|
6670
8089
|
onClickIncomplete,
|
|
6671
8090
|
onClickComplete
|
|
6672
8091
|
} = props;
|
|
6673
|
-
const [open, setOpen] = (0,
|
|
6674
|
-
const onClickOpen = (0,
|
|
8092
|
+
const [open, setOpen] = (0, import_react50.useState)(Boolean(defaultOpen));
|
|
8093
|
+
const onClickOpen = (0, import_react50.useCallback)(() => {
|
|
6675
8094
|
setOpen((p) => !p);
|
|
6676
8095
|
}, []);
|
|
6677
|
-
const icon = open ? /* @__PURE__ */ (0,
|
|
6678
|
-
const badgeMeta = (0,
|
|
8096
|
+
const icon = open ? /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_react_icons2.ChevronUpIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_react_icons2.ChevronDownIcon, {});
|
|
8097
|
+
const badgeMeta = (0, import_react50.useMemo)(() => {
|
|
6679
8098
|
if (!completed && dueDate) {
|
|
6680
8099
|
if (dueDate >= (0, import_date_fns4.startOfDay)(/* @__PURE__ */ new Date()))
|
|
6681
8100
|
return {
|
|
@@ -6686,41 +8105,41 @@ function GoalManageCardRead(props) {
|
|
|
6686
8105
|
}
|
|
6687
8106
|
return null;
|
|
6688
8107
|
}, [completed, dueDate]);
|
|
6689
|
-
const renderSubTitle = (0,
|
|
6690
|
-
return /* @__PURE__ */ (0,
|
|
8108
|
+
const renderSubTitle = (0, import_react50.useCallback)((subTitle) => {
|
|
8109
|
+
return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Heading2, { mb: "2", variant: "heading5", children: subTitle });
|
|
6691
8110
|
}, []);
|
|
6692
|
-
const renderSubContent = (0,
|
|
6693
|
-
return /* @__PURE__ */ (0,
|
|
8111
|
+
const renderSubContent = (0, import_react50.useCallback)((content) => {
|
|
8112
|
+
return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Typo, { as: "p", color: "gray", children: content });
|
|
6694
8113
|
}, []);
|
|
6695
|
-
const renderCompleteButton = (0,
|
|
8114
|
+
const renderCompleteButton = (0, import_react50.useCallback)(() => {
|
|
6696
8115
|
if (completed) {
|
|
6697
|
-
return /* @__PURE__ */ (0,
|
|
8116
|
+
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
8117
|
}
|
|
6699
|
-
return /* @__PURE__ */ (0,
|
|
6700
|
-
/* @__PURE__ */ (0,
|
|
6701
|
-
/* @__PURE__ */ (0,
|
|
8118
|
+
return /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes29.Popover.Root, { children: [
|
|
8119
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes29.Popover.Trigger, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Button, { size: "small", children: [
|
|
8120
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_react_icons2.RocketIcon, {}),
|
|
6702
8121
|
"\uB2EC\uC131\uD558\uAE30"
|
|
6703
8122
|
] }) }),
|
|
6704
|
-
/* @__PURE__ */ (0,
|
|
6705
|
-
/* @__PURE__ */ (0,
|
|
6706
|
-
/* @__PURE__ */ (0,
|
|
6707
|
-
/* @__PURE__ */ (0,
|
|
6708
|
-
/* @__PURE__ */ (0,
|
|
8123
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes29.Popover.Content, { children: [
|
|
8124
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Typo, { color: "gray", children: "\uBAA9\uD45C\uB97C \uB2EC\uC131\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?" }),
|
|
8125
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", mt: "3", children: [
|
|
8126
|
+
/* @__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" }) }),
|
|
8127
|
+
/* @__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
8128
|
] })
|
|
6710
8129
|
] })
|
|
6711
8130
|
] });
|
|
6712
8131
|
}, [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,
|
|
8132
|
+
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: [
|
|
8133
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(IconButton, { onClick: onClickOpen, variant: "ghost", children: icon }),
|
|
8134
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Heading2, { variant: "heading4", children: title }),
|
|
8135
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { align: "center", gridColumnStart: "2", justify: "between", mt: "2", children: [
|
|
8136
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { align: "center", gap: "3", children: [
|
|
8137
|
+
badgeMeta ? /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Badge, __spreadValues({}, badgeMeta)) : null,
|
|
8138
|
+
/* @__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
8139
|
] }),
|
|
6721
8140
|
renderCompleteButton()
|
|
6722
8141
|
] }),
|
|
6723
|
-
open ? /* @__PURE__ */ (0,
|
|
8142
|
+
open ? /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
|
|
6724
8143
|
import_themes39.Separator,
|
|
6725
8144
|
{
|
|
6726
8145
|
mb: "4",
|
|
@@ -6729,37 +8148,37 @@ function GoalManageCardRead(props) {
|
|
|
6729
8148
|
style: { gridColumnStart: "span 2" }
|
|
6730
8149
|
}
|
|
6731
8150
|
) : null,
|
|
6732
|
-
/* @__PURE__ */ (0,
|
|
6733
|
-
/* @__PURE__ */ (0,
|
|
6734
|
-
/* @__PURE__ */ (0,
|
|
8151
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_themes6.Box, { gridColumnStart: "2", p: "0", children: /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Collapse, { open, children: [
|
|
8152
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
|
|
8153
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes6.Box, { children: [
|
|
6735
8154
|
renderSubTitle(
|
|
6736
8155
|
"\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
8156
|
),
|
|
6738
8157
|
renderSubContent(expectedEffect)
|
|
6739
8158
|
] }),
|
|
6740
|
-
/* @__PURE__ */ (0,
|
|
8159
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes6.Box, { children: [
|
|
6741
8160
|
renderSubTitle(
|
|
6742
8161
|
"\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
8162
|
),
|
|
6744
8163
|
renderSubContent(huddle)
|
|
6745
8164
|
] })
|
|
6746
8165
|
] }),
|
|
6747
|
-
/* @__PURE__ */ (0,
|
|
6748
|
-
/* @__PURE__ */ (0,
|
|
6749
|
-
/* @__PURE__ */ (0,
|
|
6750
|
-
/* @__PURE__ */ (0,
|
|
8166
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { align: "center", gap: "3", justify: "end", mt: "3", children: [
|
|
8167
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes29.Popover.Root, { children: [
|
|
8168
|
+
/* @__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: [
|
|
8169
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_react_icons2.TrashIcon, {}),
|
|
6751
8170
|
"\uC0AD\uC81C\uD558\uAE30"
|
|
6752
8171
|
] }) }),
|
|
6753
|
-
/* @__PURE__ */ (0,
|
|
6754
|
-
/* @__PURE__ */ (0,
|
|
6755
|
-
/* @__PURE__ */ (0,
|
|
6756
|
-
/* @__PURE__ */ (0,
|
|
6757
|
-
/* @__PURE__ */ (0,
|
|
8172
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes29.Popover.Content, { children: [
|
|
8173
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Typo, { color: "gray", children: "\uBAA9\uD45C\uB97C \uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?" }),
|
|
8174
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", mt: "3", children: [
|
|
8175
|
+
/* @__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" }) }),
|
|
8176
|
+
/* @__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
8177
|
] })
|
|
6759
8178
|
] })
|
|
6760
8179
|
] }),
|
|
6761
|
-
/* @__PURE__ */ (0,
|
|
6762
|
-
/* @__PURE__ */ (0,
|
|
8180
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Button, { onClick: onClickEdit, size: "small", variant: "surface", children: [
|
|
8181
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_react_icons2.Pencil1Icon, {}),
|
|
6763
8182
|
"\uC218\uC815\uD558\uAE30"
|
|
6764
8183
|
] })
|
|
6765
8184
|
] })
|
|
@@ -6768,9 +8187,9 @@ function GoalManageCardRead(props) {
|
|
|
6768
8187
|
}
|
|
6769
8188
|
|
|
6770
8189
|
// src/app/platform/goal-manage-card-edit.tsx
|
|
6771
|
-
var
|
|
8190
|
+
var import_react51 = require("react");
|
|
6772
8191
|
var import_date_fns5 = require("date-fns");
|
|
6773
|
-
var
|
|
8192
|
+
var import_jsx_runtime105 = require("react/jsx-runtime");
|
|
6774
8193
|
var initialValues = {
|
|
6775
8194
|
goal: "",
|
|
6776
8195
|
effect: "",
|
|
@@ -6781,8 +8200,8 @@ var dummyFn = () => {
|
|
|
6781
8200
|
};
|
|
6782
8201
|
function GoalManageCardEdit(props) {
|
|
6783
8202
|
const { defaultValues, errors } = props;
|
|
6784
|
-
const [values, setValues] = (0,
|
|
6785
|
-
const onChange = (0,
|
|
8203
|
+
const [values, setValues] = (0, import_react51.useState)(defaultValues || initialValues);
|
|
8204
|
+
const onChange = (0, import_react51.useCallback)(
|
|
6786
8205
|
(v) => {
|
|
6787
8206
|
var _a;
|
|
6788
8207
|
setValues((prev) => __spreadValues(__spreadValues({}, prev), v));
|
|
@@ -6790,20 +8209,20 @@ function GoalManageCardEdit(props) {
|
|
|
6790
8209
|
},
|
|
6791
8210
|
[props]
|
|
6792
8211
|
);
|
|
6793
|
-
const onClickInit = (0,
|
|
8212
|
+
const onClickInit = (0, import_react51.useCallback)(() => {
|
|
6794
8213
|
var _a;
|
|
6795
8214
|
setValues(initialValues);
|
|
6796
8215
|
(_a = props.onChange) == null ? void 0 : _a.call(props, defaultValues || initialValues);
|
|
6797
8216
|
}, [defaultValues, props]);
|
|
6798
|
-
const onClickSubmit = (0,
|
|
8217
|
+
const onClickSubmit = (0, import_react51.useCallback)(() => {
|
|
6799
8218
|
var _a;
|
|
6800
8219
|
(_a = props.onSubmit) == null ? void 0 : _a.call(props, values);
|
|
6801
8220
|
}, [props, values]);
|
|
6802
|
-
return /* @__PURE__ */ (0,
|
|
6803
|
-
/* @__PURE__ */ (0,
|
|
6804
|
-
/* @__PURE__ */ (0,
|
|
6805
|
-
/* @__PURE__ */ (0,
|
|
6806
|
-
/* @__PURE__ */ (0,
|
|
8221
|
+
return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Card, { style: { width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Form.Root, { onSubmit: dummyFn, children: [
|
|
8222
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
|
|
8223
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Form.Field, { name: "title", children: [
|
|
8224
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Label, { children: "\uC774\uBC88 \uCF54\uCE6D\uC758 \uBAA9\uD45C\uB294 \uC544\uB798\uC640 \uAC19\uC2B5\uB2C8\uB2E4" }),
|
|
8225
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
6807
8226
|
TextField.Root,
|
|
6808
8227
|
{
|
|
6809
8228
|
error: Boolean(errors == null ? void 0 : errors.goal),
|
|
@@ -6814,11 +8233,11 @@ function GoalManageCardEdit(props) {
|
|
|
6814
8233
|
value: values.goal
|
|
6815
8234
|
}
|
|
6816
8235
|
),
|
|
6817
|
-
/* @__PURE__ */ (0,
|
|
8236
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.goal), children: errors == null ? void 0 : errors.goal })
|
|
6818
8237
|
] }),
|
|
6819
|
-
/* @__PURE__ */ (0,
|
|
6820
|
-
/* @__PURE__ */ (0,
|
|
6821
|
-
/* @__PURE__ */ (0,
|
|
8238
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Form.Field, { name: "effect", children: [
|
|
8239
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Label, { children: "\uAE30\uB300\uD6A8\uACFC" }),
|
|
8240
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
6822
8241
|
TextArea,
|
|
6823
8242
|
{
|
|
6824
8243
|
error: Boolean(errors == null ? void 0 : errors.effect),
|
|
@@ -6830,11 +8249,11 @@ function GoalManageCardEdit(props) {
|
|
|
6830
8249
|
value: values.effect
|
|
6831
8250
|
}
|
|
6832
8251
|
),
|
|
6833
|
-
/* @__PURE__ */ (0,
|
|
8252
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.effect), children: errors == null ? void 0 : errors.effect })
|
|
6834
8253
|
] }),
|
|
6835
|
-
/* @__PURE__ */ (0,
|
|
6836
|
-
/* @__PURE__ */ (0,
|
|
6837
|
-
/* @__PURE__ */ (0,
|
|
8254
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Form.Field, { name: "huddle", children: [
|
|
8255
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Label, { children: "\uBC29\uD574\uC694\uC18C" }),
|
|
8256
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
6838
8257
|
TextArea,
|
|
6839
8258
|
{
|
|
6840
8259
|
error: Boolean(errors == null ? void 0 : errors.huddle),
|
|
@@ -6848,11 +8267,11 @@ function GoalManageCardEdit(props) {
|
|
|
6848
8267
|
value: values.huddle
|
|
6849
8268
|
}
|
|
6850
8269
|
),
|
|
6851
|
-
/* @__PURE__ */ (0,
|
|
8270
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.huddle), children: errors == null ? void 0 : errors.huddle })
|
|
6852
8271
|
] }),
|
|
6853
|
-
/* @__PURE__ */ (0,
|
|
6854
|
-
/* @__PURE__ */ (0,
|
|
6855
|
-
/* @__PURE__ */ (0,
|
|
8272
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Form.Field, { name: "dueDate", children: [
|
|
8273
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Label, { children: "\uBAA9\uD45C \uB2EC\uC131 \uAE30\uD55C\uC740 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4" }),
|
|
8274
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
6856
8275
|
DatePickerButton,
|
|
6857
8276
|
{
|
|
6858
8277
|
format: (v) => (0, import_date_fns5.format)(v, "yyyy\uB144 MM\uC6D4 dd\uC77C"),
|
|
@@ -6863,11 +8282,11 @@ function GoalManageCardEdit(props) {
|
|
|
6863
8282
|
selected: values.dueDate
|
|
6864
8283
|
}
|
|
6865
8284
|
),
|
|
6866
|
-
/* @__PURE__ */ (0,
|
|
8285
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Form.Message, { forceMatch: Boolean(errors == null ? void 0 : errors.dueDate), children: errors == null ? void 0 : errors.dueDate })
|
|
6867
8286
|
] })
|
|
6868
8287
|
] }),
|
|
6869
|
-
/* @__PURE__ */ (0,
|
|
6870
|
-
/* @__PURE__ */ (0,
|
|
8288
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", width: "100%", children: [
|
|
8289
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
6871
8290
|
Button,
|
|
6872
8291
|
{
|
|
6873
8292
|
color: "gray",
|
|
@@ -6878,18 +8297,18 @@ function GoalManageCardEdit(props) {
|
|
|
6878
8297
|
children: "\uCD08\uAE30\uD654\uD558\uAE30"
|
|
6879
8298
|
}
|
|
6880
8299
|
),
|
|
6881
|
-
/* @__PURE__ */ (0,
|
|
8300
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Button, { onClick: onClickSubmit, size: "small", type: "button", children: "\uC800\uC7A5\uD558\uAE30" })
|
|
6882
8301
|
] })
|
|
6883
8302
|
] }) });
|
|
6884
8303
|
}
|
|
6885
8304
|
|
|
6886
8305
|
// src/app/platform/session-card.tsx
|
|
6887
|
-
var
|
|
8306
|
+
var import_react54 = require("react");
|
|
6888
8307
|
var import_date_fns6 = require("date-fns");
|
|
6889
8308
|
|
|
6890
8309
|
// src/app/platform/edit-coaching-time.tsx
|
|
6891
|
-
var
|
|
6892
|
-
var
|
|
8310
|
+
var import_react52 = require("react");
|
|
8311
|
+
var import_jsx_runtime106 = require("react/jsx-runtime");
|
|
6893
8312
|
var getValueFromDefaultValue = (args) => {
|
|
6894
8313
|
return {
|
|
6895
8314
|
startTime: args.startAt ? getTimeOption(args.startAt) : "00:00",
|
|
@@ -6909,14 +8328,14 @@ var getDateFromValue = (date, time) => {
|
|
|
6909
8328
|
};
|
|
6910
8329
|
function EditCoachingTime(props) {
|
|
6911
8330
|
const { defaultEndAt, defaultStartAt, onClickCancel } = props;
|
|
6912
|
-
const [values, setValues] = (0,
|
|
8331
|
+
const [values, setValues] = (0, import_react52.useState)(() => {
|
|
6913
8332
|
return getValueFromDefaultValue({
|
|
6914
8333
|
startAt: defaultStartAt,
|
|
6915
8334
|
endAt: defaultEndAt
|
|
6916
8335
|
});
|
|
6917
8336
|
});
|
|
6918
|
-
const [timeError, setTimeError] = (0,
|
|
6919
|
-
const checkTimeError = (0,
|
|
8337
|
+
const [timeError, setTimeError] = (0, import_react52.useState)("");
|
|
8338
|
+
const checkTimeError = (0, import_react52.useCallback)(
|
|
6920
8339
|
(startTime, endTime) => {
|
|
6921
8340
|
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
8341
|
if (error) {
|
|
@@ -6927,7 +8346,7 @@ function EditCoachingTime(props) {
|
|
|
6927
8346
|
},
|
|
6928
8347
|
[]
|
|
6929
8348
|
);
|
|
6930
|
-
const onChangeStartTime = (0,
|
|
8349
|
+
const onChangeStartTime = (0, import_react52.useCallback)(
|
|
6931
8350
|
(v) => {
|
|
6932
8351
|
checkTimeError(v, values.endTime);
|
|
6933
8352
|
setValues((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
@@ -6936,7 +8355,7 @@ function EditCoachingTime(props) {
|
|
|
6936
8355
|
},
|
|
6937
8356
|
[checkTimeError, values.endTime]
|
|
6938
8357
|
);
|
|
6939
|
-
const onChangeEndTime = (0,
|
|
8358
|
+
const onChangeEndTime = (0, import_react52.useCallback)(
|
|
6940
8359
|
(v) => {
|
|
6941
8360
|
checkTimeError(values.startTime, v);
|
|
6942
8361
|
setValues((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
@@ -6945,12 +8364,12 @@ function EditCoachingTime(props) {
|
|
|
6945
8364
|
},
|
|
6946
8365
|
[checkTimeError, values.startTime]
|
|
6947
8366
|
);
|
|
6948
|
-
const onChangeDate = (0,
|
|
8367
|
+
const onChangeDate = (0, import_react52.useCallback)((date) => {
|
|
6949
8368
|
date && setValues((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
6950
8369
|
date
|
|
6951
8370
|
}));
|
|
6952
8371
|
}, []);
|
|
6953
|
-
const onClickSave = (0,
|
|
8372
|
+
const onClickSave = (0, import_react52.useCallback)(() => {
|
|
6954
8373
|
if (checkTimeError(values.startTime, values.endTime)) {
|
|
6955
8374
|
const startAt = getDateFromValue(values.date, values.startTime);
|
|
6956
8375
|
const endAt = getDateFromValue(values.date, values.endTime);
|
|
@@ -6959,10 +8378,10 @@ function EditCoachingTime(props) {
|
|
|
6959
8378
|
import_react_toastify2.toast.error("\uC785\uB825 \uAC12\uC774 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.");
|
|
6960
8379
|
}
|
|
6961
8380
|
}, [checkTimeError, props, values.date, values.endTime, values.startTime]);
|
|
6962
|
-
return /* @__PURE__ */ (0,
|
|
6963
|
-
/* @__PURE__ */ (0,
|
|
6964
|
-
/* @__PURE__ */ (0,
|
|
6965
|
-
/* @__PURE__ */ (0,
|
|
8381
|
+
return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_themes6.Box, { width: { initial: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(Form.Root, { children: [
|
|
8382
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(Form.Field, { name: "date", children: [
|
|
8383
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Form.Label, { variant: "caption", children: "\uB0A0\uC9DC" }),
|
|
8384
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
6966
8385
|
DatePickerButton,
|
|
6967
8386
|
{
|
|
6968
8387
|
maxDate: /* @__PURE__ */ new Date(),
|
|
@@ -6972,7 +8391,7 @@ function EditCoachingTime(props) {
|
|
|
6972
8391
|
}
|
|
6973
8392
|
)
|
|
6974
8393
|
] }),
|
|
6975
|
-
/* @__PURE__ */ (0,
|
|
8394
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
|
|
6976
8395
|
import_themes23.Grid,
|
|
6977
8396
|
{
|
|
6978
8397
|
align: "center",
|
|
@@ -6987,10 +8406,10 @@ function EditCoachingTime(props) {
|
|
|
6987
8406
|
mt: "5",
|
|
6988
8407
|
width: "100%",
|
|
6989
8408
|
children: [
|
|
6990
|
-
/* @__PURE__ */ (0,
|
|
6991
|
-
/* @__PURE__ */ (0,
|
|
6992
|
-
/* @__PURE__ */ (0,
|
|
6993
|
-
/* @__PURE__ */ (0,
|
|
8409
|
+
/* @__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" }) }),
|
|
8410
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", {}),
|
|
8411
|
+
/* @__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" }) }),
|
|
8412
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
6994
8413
|
TimeSelect,
|
|
6995
8414
|
{
|
|
6996
8415
|
onValueChange: onChangeStartTime,
|
|
@@ -6998,8 +8417,8 @@ function EditCoachingTime(props) {
|
|
|
6998
8417
|
value: values.startTime
|
|
6999
8418
|
}
|
|
7000
8419
|
),
|
|
7001
|
-
/* @__PURE__ */ (0,
|
|
7002
|
-
/* @__PURE__ */ (0,
|
|
8420
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_themes6.Box, { overflow: "hidden", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_themes39.Separator, {}) }),
|
|
8421
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
7003
8422
|
TimeSelect,
|
|
7004
8423
|
{
|
|
7005
8424
|
onValueChange: onChangeEndTime,
|
|
@@ -7007,36 +8426,36 @@ function EditCoachingTime(props) {
|
|
|
7007
8426
|
value: values.endTime
|
|
7008
8427
|
}
|
|
7009
8428
|
),
|
|
7010
|
-
/* @__PURE__ */ (0,
|
|
8429
|
+
/* @__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
8430
|
]
|
|
7012
8431
|
}
|
|
7013
8432
|
),
|
|
7014
|
-
/* @__PURE__ */ (0,
|
|
7015
|
-
/* @__PURE__ */ (0,
|
|
7016
|
-
/* @__PURE__ */ (0,
|
|
8433
|
+
/* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", children: [
|
|
8434
|
+
/* @__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" }) }),
|
|
8435
|
+
/* @__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
8436
|
] })
|
|
7018
8437
|
] }) });
|
|
7019
8438
|
}
|
|
7020
8439
|
|
|
7021
8440
|
// src/app/platform/edit-service-type.tsx
|
|
7022
|
-
var
|
|
8441
|
+
var import_react53 = require("react");
|
|
7023
8442
|
|
|
7024
8443
|
// src/app/platform/on-offline-radio-card.tsx
|
|
7025
8444
|
var import_react_icons11 = require("@radix-ui/react-icons");
|
|
7026
|
-
var
|
|
8445
|
+
var import_jsx_runtime107 = require("react/jsx-runtime");
|
|
7027
8446
|
var SERVICE_TYPE = {
|
|
7028
8447
|
onlineCoaching: "onlineCoaching",
|
|
7029
8448
|
offlineCoaching: "offlineCoaching"
|
|
7030
8449
|
};
|
|
7031
8450
|
var breakpoint = "sm";
|
|
7032
8451
|
function HideSmallBox(props) {
|
|
7033
|
-
return /* @__PURE__ */ (0,
|
|
8452
|
+
return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(import_themes6.Box, { display: { initial: "none", [breakpoint]: "block" }, children: props.children });
|
|
7034
8453
|
}
|
|
7035
8454
|
function OnOfflineRadioCard(props) {
|
|
7036
8455
|
const Wrapper = props.response ? HideSmallBox : (p) => p.children;
|
|
7037
8456
|
const columns = props.response ? { initial: "2", [breakpoint]: "1" } : "1";
|
|
7038
8457
|
const justify = props.response ? { initial: "center", [breakpoint]: "between" } : "between";
|
|
7039
|
-
return /* @__PURE__ */ (0,
|
|
8458
|
+
return /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
|
|
7040
8459
|
RadioButtonCard.Root,
|
|
7041
8460
|
__spreadProps(__spreadValues({
|
|
7042
8461
|
RadioWrapper: Wrapper,
|
|
@@ -7045,13 +8464,13 @@ function OnOfflineRadioCard(props) {
|
|
|
7045
8464
|
justify
|
|
7046
8465
|
}, props), {
|
|
7047
8466
|
children: [
|
|
7048
|
-
/* @__PURE__ */ (0,
|
|
7049
|
-
/* @__PURE__ */ (0,
|
|
7050
|
-
/* @__PURE__ */ (0,
|
|
8467
|
+
/* @__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: [
|
|
8468
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Wrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(import_react_icons11.GlobeIcon, {}) }),
|
|
8469
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Typo, { children: "\uC628\uB77C\uC778" })
|
|
7051
8470
|
] }) }),
|
|
7052
|
-
/* @__PURE__ */ (0,
|
|
7053
|
-
/* @__PURE__ */ (0,
|
|
7054
|
-
/* @__PURE__ */ (0,
|
|
8471
|
+
/* @__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: [
|
|
8472
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Wrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(import_react_icons11.BackpackIcon, {}) }),
|
|
8473
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Typo, { children: "\uC624\uD504\uB77C\uC778" })
|
|
7055
8474
|
] }) })
|
|
7056
8475
|
]
|
|
7057
8476
|
})
|
|
@@ -7059,18 +8478,18 @@ function OnOfflineRadioCard(props) {
|
|
|
7059
8478
|
}
|
|
7060
8479
|
|
|
7061
8480
|
// src/app/platform/edit-service-type.tsx
|
|
7062
|
-
var
|
|
8481
|
+
var import_jsx_runtime108 = require("react/jsx-runtime");
|
|
7063
8482
|
function EditServiceType(props) {
|
|
7064
8483
|
const { defaultServiceType, onClickCancel } = props;
|
|
7065
|
-
const [sessionType, setSessionType] = (0,
|
|
8484
|
+
const [sessionType, setSessionType] = (0, import_react53.useState)(
|
|
7066
8485
|
defaultServiceType
|
|
7067
8486
|
);
|
|
7068
|
-
const onClickSave = (0,
|
|
8487
|
+
const onClickSave = (0, import_react53.useCallback)(() => {
|
|
7069
8488
|
var _a;
|
|
7070
8489
|
(_a = props.onClickSave) == null ? void 0 : _a.call(props, sessionType);
|
|
7071
8490
|
}, [props, sessionType]);
|
|
7072
|
-
return /* @__PURE__ */ (0,
|
|
7073
|
-
/* @__PURE__ */ (0,
|
|
8491
|
+
return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(import_themes6.Box, { children: [
|
|
8492
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
|
|
7074
8493
|
Typo,
|
|
7075
8494
|
{
|
|
7076
8495
|
as: "p",
|
|
@@ -7080,16 +8499,16 @@ function EditServiceType(props) {
|
|
|
7080
8499
|
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
8500
|
}
|
|
7082
8501
|
),
|
|
7083
|
-
/* @__PURE__ */ (0,
|
|
7084
|
-
/* @__PURE__ */ (0,
|
|
7085
|
-
/* @__PURE__ */ (0,
|
|
7086
|
-
/* @__PURE__ */ (0,
|
|
8502
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)(OnOfflineRadioCard, { onValueChange: setSessionType, value: sessionType }),
|
|
8503
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(import_themes22.Flex, { gap: "3", justify: "end", mt: { initial: "6", xs: "3" }, children: [
|
|
8504
|
+
/* @__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" }) }),
|
|
8505
|
+
/* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Button, { onClick: onClickSave, children: "\uC800\uC7A5\uD558\uAE30" }) })
|
|
7087
8506
|
] })
|
|
7088
8507
|
] });
|
|
7089
8508
|
}
|
|
7090
8509
|
|
|
7091
8510
|
// src/app/platform/session-card.tsx
|
|
7092
|
-
var
|
|
8511
|
+
var import_jsx_runtime109 = require("react/jsx-runtime");
|
|
7093
8512
|
var preventDefault4 = (e) => {
|
|
7094
8513
|
e.preventDefault();
|
|
7095
8514
|
};
|
|
@@ -7119,33 +8538,33 @@ function SessionCard(props) {
|
|
|
7119
8538
|
"endAt",
|
|
7120
8539
|
"sessionType"
|
|
7121
8540
|
]);
|
|
7122
|
-
const renderEditButton = (0,
|
|
7123
|
-
return /* @__PURE__ */ (0,
|
|
8541
|
+
const renderEditButton = (0, import_react54.useCallback)(() => {
|
|
8542
|
+
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
8543
|
}, []);
|
|
7125
|
-
const sessionTimeStr = (0,
|
|
8544
|
+
const sessionTimeStr = (0, import_react54.useMemo)(() => {
|
|
7126
8545
|
if (!startAt || !endAt) return "\uC54C \uC218 \uC5C6\uC74C";
|
|
7127
8546
|
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
8547
|
}, [startAt, endAt]);
|
|
7129
|
-
return /* @__PURE__ */ (0,
|
|
7130
|
-
/* @__PURE__ */ (0,
|
|
7131
|
-
/* @__PURE__ */ (0,
|
|
8548
|
+
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: [
|
|
8549
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes22.Flex, { align: "center", width: "100%", children: [
|
|
8550
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Heading2, { variant: "heading4", children: `${userName || "\uC54C \uC218 \uC5C6\uC74C"}\uB2D8 ${sessionNumber || "-"}\uD68C\uCC28` }),
|
|
7132
8551
|
TitleExtra,
|
|
7133
|
-
error ? /* @__PURE__ */ (0,
|
|
8552
|
+
error ? /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(BulletText, { as: "p", color: "red", variant: "caption", children: error }) : null
|
|
7134
8553
|
] }),
|
|
7135
|
-
/* @__PURE__ */ (0,
|
|
7136
|
-
/* @__PURE__ */ (0,
|
|
7137
|
-
/* @__PURE__ */ (0,
|
|
7138
|
-
/* @__PURE__ */ (0,
|
|
8554
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes15.DataList.Root, { children: [
|
|
8555
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes15.DataList.Item, { children: [
|
|
8556
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_themes15.DataList.Label, { children: "\uCF54\uCE6D \uC77C\uC2DC" }),
|
|
8557
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes15.DataList.Value, { children: [
|
|
7139
8558
|
sessionTimeStr,
|
|
7140
|
-
editable ? /* @__PURE__ */ (0,
|
|
7141
|
-
/* @__PURE__ */ (0,
|
|
7142
|
-
/* @__PURE__ */ (0,
|
|
8559
|
+
editable ? /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(Dialog.Root, { children: [
|
|
8560
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Dialog.Trigger, { children: renderEditButton() }),
|
|
8561
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
|
|
7143
8562
|
Dialog.Content,
|
|
7144
8563
|
{
|
|
7145
8564
|
onOpenAutoFocus: preventDefault4,
|
|
7146
8565
|
style: { overflow: "visible" },
|
|
7147
8566
|
title: `${sessionNumber}\uD68C\uCC28 \uC138\uC158 \uC77C\uC2DC \uBCC0\uACBD\uD558\uAE30`,
|
|
7148
|
-
children: /* @__PURE__ */ (0,
|
|
8567
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
|
|
7149
8568
|
EditCoachingTime,
|
|
7150
8569
|
{
|
|
7151
8570
|
defaultEndAt: endAt,
|
|
@@ -7158,18 +8577,18 @@ function SessionCard(props) {
|
|
|
7158
8577
|
] }) : null
|
|
7159
8578
|
] })
|
|
7160
8579
|
] }),
|
|
7161
|
-
/* @__PURE__ */ (0,
|
|
7162
|
-
/* @__PURE__ */ (0,
|
|
7163
|
-
/* @__PURE__ */ (0,
|
|
7164
|
-
/* @__PURE__ */ (0,
|
|
8580
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes23.Grid, { columns: { initial: "1", xs: "2" }, style: { gap: "inherit" }, children: [
|
|
8581
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes15.DataList.Item, { children: [
|
|
8582
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_themes15.DataList.Label, { children: "\uC138\uC158 \uCC38\uC5EC \uBC29\uC2DD" }),
|
|
8583
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_themes15.DataList.Value, { children: [
|
|
7165
8584
|
sessionType === "offlineCoaching" ? "\uC624\uD504\uB77C\uC778" : "\uC628\uB77C\uC778",
|
|
7166
|
-
editable ? /* @__PURE__ */ (0,
|
|
7167
|
-
/* @__PURE__ */ (0,
|
|
7168
|
-
/* @__PURE__ */ (0,
|
|
8585
|
+
editable ? /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(Dialog.Root, { children: [
|
|
8586
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Dialog.Trigger, { children: renderEditButton() }),
|
|
8587
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
|
|
7169
8588
|
Dialog.Content,
|
|
7170
8589
|
{
|
|
7171
8590
|
title: `${sessionNumber}\uD68C\uCC28 \uC138\uC158 \uC9C4\uD589 \uBC29\uC2DD \uBCC0\uACBD\uD558\uAE30`,
|
|
7172
|
-
children: /* @__PURE__ */ (0,
|
|
8591
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
|
|
7173
8592
|
EditServiceType,
|
|
7174
8593
|
{
|
|
7175
8594
|
defaultServiceType: sessionType,
|
|
@@ -7181,33 +8600,33 @@ function SessionCard(props) {
|
|
|
7181
8600
|
] }) : null
|
|
7182
8601
|
] })
|
|
7183
8602
|
] }),
|
|
7184
|
-
/* @__PURE__ */ (0,
|
|
8603
|
+
/* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_themes22.Flex, { gap: "2", justify: "end", children: ExtraButtons })
|
|
7185
8604
|
] })
|
|
7186
8605
|
] })
|
|
7187
8606
|
] }) }));
|
|
7188
8607
|
}
|
|
7189
8608
|
|
|
7190
8609
|
// src/app/platform/coach-question-list.tsx
|
|
7191
|
-
var
|
|
8610
|
+
var import_jsx_runtime110 = require("react/jsx-runtime");
|
|
7192
8611
|
function QuestionItem({ question, answer }) {
|
|
7193
|
-
return /* @__PURE__ */ (0,
|
|
7194
|
-
/* @__PURE__ */ (0,
|
|
7195
|
-
/* @__PURE__ */ (0,
|
|
8612
|
+
return /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_themes6.Box, { children: [
|
|
8613
|
+
/* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Heading2, { mb: "2", variant: "heading5", children: question }),
|
|
8614
|
+
/* @__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
8615
|
] }, question);
|
|
7197
8616
|
}
|
|
7198
8617
|
function CoachQuestionList({
|
|
7199
8618
|
questions
|
|
7200
8619
|
}) {
|
|
7201
|
-
return /* @__PURE__ */ (0,
|
|
7202
|
-
return /* @__PURE__ */ (0,
|
|
8620
|
+
return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_themes22.Flex, { direction: "column", gap: "8", children: questions.map((question) => {
|
|
8621
|
+
return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(QuestionItem, __spreadValues({}, question), question.question);
|
|
7203
8622
|
}) });
|
|
7204
8623
|
}
|
|
7205
8624
|
|
|
7206
8625
|
// src/app/platform/reservation-card.tsx
|
|
7207
|
-
var
|
|
8626
|
+
var import_react55 = require("react");
|
|
7208
8627
|
var import_date_fns7 = require("date-fns");
|
|
7209
8628
|
var import_locale2 = require("date-fns/locale");
|
|
7210
|
-
var
|
|
8629
|
+
var import_jsx_runtime111 = require("react/jsx-runtime");
|
|
7211
8630
|
function ReservationCard(props) {
|
|
7212
8631
|
const {
|
|
7213
8632
|
sessionNumber,
|
|
@@ -7222,29 +8641,29 @@ function ReservationCard(props) {
|
|
|
7222
8641
|
onClickCancel,
|
|
7223
8642
|
onClickCompleteSession
|
|
7224
8643
|
} = props;
|
|
7225
|
-
const [editValues, setEditValues] = (0,
|
|
8644
|
+
const [editValues, setEditValues] = (0, import_react55.useState)({
|
|
7226
8645
|
date: props.defaultTime,
|
|
7227
8646
|
type: props.defaultType
|
|
7228
8647
|
});
|
|
7229
8648
|
const date = readonly ? defaultTime : editValues.date;
|
|
7230
8649
|
const type = readonly ? defaultType : editValues.type;
|
|
7231
|
-
const onClickSave = (0,
|
|
8650
|
+
const onClickSave = (0, import_react55.useCallback)(() => {
|
|
7232
8651
|
var _a;
|
|
7233
8652
|
(_a = props.onClickSave) == null ? void 0 : _a.call(props, editValues);
|
|
7234
8653
|
}, [editValues, props]);
|
|
7235
|
-
const onClickReset = (0,
|
|
8654
|
+
const onClickReset = (0, import_react55.useCallback)(() => {
|
|
7236
8655
|
setEditValues({
|
|
7237
8656
|
date: defaultTime,
|
|
7238
8657
|
type: defaultType
|
|
7239
8658
|
});
|
|
7240
8659
|
}, [defaultTime, defaultType]);
|
|
7241
|
-
const ActionButtons = (0,
|
|
8660
|
+
const ActionButtons = (0, import_react55.useMemo)(() => {
|
|
7242
8661
|
if (readonly) {
|
|
7243
|
-
return /* @__PURE__ */ (0,
|
|
8662
|
+
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
8663
|
}
|
|
7245
|
-
return /* @__PURE__ */ (0,
|
|
8664
|
+
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
8665
|
}, [defaultTime, defaultType, onClickCancel, onClickReserve, readonly]);
|
|
7247
|
-
const onChangeDate = (0,
|
|
8666
|
+
const onChangeDate = (0, import_react55.useCallback)((newDate) => {
|
|
7248
8667
|
if (!newDate) return;
|
|
7249
8668
|
setEditValues((prev) => {
|
|
7250
8669
|
return __spreadProps(__spreadValues({}, prev), {
|
|
@@ -7252,17 +8671,17 @@ function ReservationCard(props) {
|
|
|
7252
8671
|
});
|
|
7253
8672
|
});
|
|
7254
8673
|
}, []);
|
|
7255
|
-
const onChangeType = (0,
|
|
8674
|
+
const onChangeType = (0, import_react55.useCallback)((newType) => {
|
|
7256
8675
|
setEditValues((prev) => {
|
|
7257
8676
|
return __spreadProps(__spreadValues({}, prev), {
|
|
7258
8677
|
type: newType
|
|
7259
8678
|
});
|
|
7260
8679
|
});
|
|
7261
8680
|
}, []);
|
|
7262
|
-
const formatDate = (0,
|
|
8681
|
+
const formatDate = (0, import_react55.useCallback)((v) => {
|
|
7263
8682
|
return (0, import_date_fns7.format)(v, "yyyy\uB144 MM\uC6D4 dd\uC77C(EEE) aa h:mm", { locale: import_locale2.ko });
|
|
7264
8683
|
}, []);
|
|
7265
|
-
(0,
|
|
8684
|
+
(0, import_react55.useEffect)(() => {
|
|
7266
8685
|
if (!minTime || !editValues.date || readonly) return;
|
|
7267
8686
|
if (editValues.date < minTime) {
|
|
7268
8687
|
import_react_toastify2.toast.warn("\uC120\uD0DD \uAC00\uB2A5\uD55C \uC2DC\uAC04\uB300\uB85C \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4.");
|
|
@@ -7273,7 +8692,7 @@ function ReservationCard(props) {
|
|
|
7273
8692
|
});
|
|
7274
8693
|
}
|
|
7275
8694
|
}, [editValues, minTime, readonly]);
|
|
7276
|
-
(0,
|
|
8695
|
+
(0, import_react55.useEffect)(() => {
|
|
7277
8696
|
if (!maxTime || !editValues.date || readonly) return;
|
|
7278
8697
|
if (editValues.date > maxTime) {
|
|
7279
8698
|
import_react_toastify2.toast.warn("\uC120\uD0DD \uAC00\uB2A5\uD55C \uC2DC\uAC04\uB300\uB85C \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4.");
|
|
@@ -7284,39 +8703,39 @@ function ReservationCard(props) {
|
|
|
7284
8703
|
});
|
|
7285
8704
|
}
|
|
7286
8705
|
}, [editValues, maxTime, readonly]);
|
|
7287
|
-
return /* @__PURE__ */ (0,
|
|
8706
|
+
return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
|
|
7288
8707
|
Card,
|
|
7289
8708
|
{
|
|
7290
8709
|
error: Boolean(error),
|
|
7291
8710
|
size: "3",
|
|
7292
8711
|
style: { overflow: "visible", contain: "initial" },
|
|
7293
8712
|
children: [
|
|
7294
|
-
/* @__PURE__ */ (0,
|
|
7295
|
-
/* @__PURE__ */ (0,
|
|
8713
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { gap: "3", justify: "between", mb: "5", children: [
|
|
8714
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
|
|
7296
8715
|
import_themes23.Grid,
|
|
7297
8716
|
{
|
|
7298
8717
|
align: "center",
|
|
7299
8718
|
columns: { initial: "1", xs: "auto 1fr" },
|
|
7300
8719
|
gapY: "2",
|
|
7301
8720
|
children: [
|
|
7302
|
-
/* @__PURE__ */ (0,
|
|
7303
|
-
/* @__PURE__ */ (0,
|
|
8721
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { align: "center", children: [
|
|
8722
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(Heading2, { variant: "heading4", children: [
|
|
7304
8723
|
customerName || "-",
|
|
7305
8724
|
"\uB2D8 ",
|
|
7306
8725
|
sessionNumber || "-",
|
|
7307
8726
|
"\uD68C\uCC28 \uC138\uC158"
|
|
7308
8727
|
] }),
|
|
7309
|
-
/* @__PURE__ */ (0,
|
|
8728
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Badge, { ml: "2", children: "\uB2E4\uC74C \uC138\uC158" })
|
|
7310
8729
|
] }),
|
|
7311
|
-
error ? /* @__PURE__ */ (0,
|
|
8730
|
+
error ? /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(BulletText, { color: "red", variant: "caption", children: error }) : null
|
|
7312
8731
|
]
|
|
7313
8732
|
}
|
|
7314
8733
|
),
|
|
7315
|
-
/* @__PURE__ */ (0,
|
|
8734
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_themes22.Flex, { children: ActionButtons })
|
|
7316
8735
|
] }),
|
|
7317
|
-
/* @__PURE__ */ (0,
|
|
7318
|
-
/* @__PURE__ */ (0,
|
|
7319
|
-
/* @__PURE__ */ (0,
|
|
8736
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_themes6.Box, { children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { direction: "column", gap: "5", children: [
|
|
8737
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Heading2, { mb: "2", variant: "heading5", weight: "regular", children: "\uC138\uC158 \uC77C\uC790\uC640 \uC2DC\uAC01" }),
|
|
8738
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
7320
8739
|
DatePickerButton,
|
|
7321
8740
|
{
|
|
7322
8741
|
disabled: readonly,
|
|
@@ -7330,8 +8749,8 @@ function ReservationCard(props) {
|
|
|
7330
8749
|
size: "large"
|
|
7331
8750
|
}
|
|
7332
8751
|
),
|
|
7333
|
-
/* @__PURE__ */ (0,
|
|
7334
|
-
/* @__PURE__ */ (0,
|
|
8752
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Heading2, { mb: "2", variant: "heading5", weight: "regular", children: "\uC628/\uC624\uD504\uB77C\uC778 \uC9C4\uD589 \uC5EC\uBD80" }),
|
|
8753
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
7335
8754
|
OnOfflineRadioCard,
|
|
7336
8755
|
{
|
|
7337
8756
|
disabled: readonly,
|
|
@@ -7340,8 +8759,8 @@ function ReservationCard(props) {
|
|
|
7340
8759
|
value: type
|
|
7341
8760
|
}
|
|
7342
8761
|
),
|
|
7343
|
-
readonly ? null : /* @__PURE__ */ (0,
|
|
7344
|
-
/* @__PURE__ */ (0,
|
|
8762
|
+
readonly ? null : /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { align: "center", gap: "3", justify: "end", children: [
|
|
8763
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
7345
8764
|
Button,
|
|
7346
8765
|
{
|
|
7347
8766
|
color: "gray",
|
|
@@ -7351,10 +8770,10 @@ function ReservationCard(props) {
|
|
|
7351
8770
|
children: "\uCD08\uAE30\uD654\uD558\uAE30"
|
|
7352
8771
|
}
|
|
7353
8772
|
),
|
|
7354
|
-
/* @__PURE__ */ (0,
|
|
8773
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Button, { onClick: onClickSave, size: "small", children: "\uC800\uC7A5\uD558\uAE30" })
|
|
7355
8774
|
] })
|
|
7356
8775
|
] }) }),
|
|
7357
|
-
readonly ? /* @__PURE__ */ (0,
|
|
8776
|
+
readonly ? /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_themes25.Inset, { clip: "border-box", side: "bottom", children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
|
|
7358
8777
|
import_themes6.Box,
|
|
7359
8778
|
{
|
|
7360
8779
|
mt: "5",
|
|
@@ -7362,14 +8781,14 @@ function ReservationCard(props) {
|
|
|
7362
8781
|
py: "4",
|
|
7363
8782
|
style: { backgroundColor: "var(--accent-a3)" },
|
|
7364
8783
|
width: "100%",
|
|
7365
|
-
children: /* @__PURE__ */ (0,
|
|
7366
|
-
/* @__PURE__ */ (0,
|
|
8784
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_themes22.Flex, { align: "center", gap: "4", justify: "center", children: [
|
|
8785
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(Typo, { children: [
|
|
7367
8786
|
sessionNumber || "-",
|
|
7368
8787
|
"\uD68C\uCC28 \uC138\uC158\uC744 \uC644\uB8CC\uD558\uC168\uB098\uC694?"
|
|
7369
8788
|
] }),
|
|
7370
|
-
/* @__PURE__ */ (0,
|
|
8789
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(Button, { onClick: onClickCompleteSession, size: "small", children: [
|
|
7371
8790
|
"\uC138\uC158 \uC885\uB8CC\uD558\uAE30",
|
|
7372
|
-
/* @__PURE__ */ (0,
|
|
8791
|
+
/* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_react_icons2.ArrowRightIcon, {})
|
|
7373
8792
|
] })
|
|
7374
8793
|
] })
|
|
7375
8794
|
}
|
|
@@ -7380,22 +8799,22 @@ function ReservationCard(props) {
|
|
|
7380
8799
|
}
|
|
7381
8800
|
|
|
7382
8801
|
// src/app/platform/session-review-simple-read.tsx
|
|
7383
|
-
var
|
|
7384
|
-
var
|
|
8802
|
+
var import_react56 = require("react");
|
|
8803
|
+
var import_jsx_runtime112 = require("react/jsx-runtime");
|
|
7385
8804
|
function SubTitleWrapper({
|
|
7386
8805
|
children,
|
|
7387
8806
|
title
|
|
7388
8807
|
}) {
|
|
7389
|
-
return /* @__PURE__ */ (0,
|
|
7390
|
-
/* @__PURE__ */ (0,
|
|
7391
|
-
/* @__PURE__ */ (0,
|
|
8808
|
+
return /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(import_themes22.Flex, { direction: "column", gap: "2", children: [
|
|
8809
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Heading2, { mb: "2", variant: "heading5", weight: "regular", children: title }),
|
|
8810
|
+
/* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_themes6.Box, { children })
|
|
7392
8811
|
] });
|
|
7393
8812
|
}
|
|
7394
8813
|
function SessionReviewSimpleRead({
|
|
7395
8814
|
helpfulness,
|
|
7396
8815
|
review
|
|
7397
8816
|
}) {
|
|
7398
|
-
const helpfulnessMeta = (0,
|
|
8817
|
+
const helpfulnessMeta = (0, import_react56.useMemo)(() => {
|
|
7399
8818
|
if (helpfulness) {
|
|
7400
8819
|
return {
|
|
7401
8820
|
text: "\uB124",
|
|
@@ -7413,22 +8832,22 @@ function SessionReviewSimpleRead({
|
|
|
7413
8832
|
color: "error"
|
|
7414
8833
|
};
|
|
7415
8834
|
}, [helpfulness]);
|
|
7416
|
-
return /* @__PURE__ */ (0,
|
|
7417
|
-
/* @__PURE__ */ (0,
|
|
7418
|
-
/* @__PURE__ */ (0,
|
|
8835
|
+
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: [
|
|
8836
|
+
/* @__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 }) }),
|
|
8837
|
+
/* @__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
8838
|
] }) });
|
|
7420
8839
|
}
|
|
7421
8840
|
|
|
7422
8841
|
// src/app/platform/userInfos/session-user-info-detail.tsx
|
|
7423
|
-
var
|
|
8842
|
+
var import_jsx_runtime113 = require("react/jsx-runtime");
|
|
7424
8843
|
function SectionWrapper({
|
|
7425
8844
|
title,
|
|
7426
8845
|
children
|
|
7427
8846
|
}) {
|
|
7428
|
-
return /* @__PURE__ */ (0,
|
|
7429
|
-
/* @__PURE__ */ (0,
|
|
7430
|
-
/* @__PURE__ */ (0,
|
|
7431
|
-
/* @__PURE__ */ (0,
|
|
8847
|
+
return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(import_themes6.Box, { children: [
|
|
8848
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(import_themes23.Grid, { align: "center", columns: "auto 1fr", gap: "3", mb: "5", children: [
|
|
8849
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Heading2, { variant: "heading5", children: title }),
|
|
8850
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(import_themes39.Separator, { size: "4" })
|
|
7432
8851
|
] }),
|
|
7433
8852
|
children
|
|
7434
8853
|
] });
|
|
@@ -7438,22 +8857,22 @@ function SessionUserInfoDetail({
|
|
|
7438
8857
|
session,
|
|
7439
8858
|
onClickCopy
|
|
7440
8859
|
}) {
|
|
7441
|
-
return /* @__PURE__ */ (0,
|
|
7442
|
-
/* @__PURE__ */ (0,
|
|
8860
|
+
return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(import_themes22.Flex, { direction: "column", gap: "6", children: [
|
|
8861
|
+
/* @__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
8862
|
(info) => renderDataListItem({ info, data: session, onClickCopy })
|
|
7444
8863
|
) }) }),
|
|
7445
|
-
/* @__PURE__ */ (0,
|
|
8864
|
+
/* @__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
8865
|
(info) => renderDataListItem({ info, data: customer, onClickCopy })
|
|
7447
8866
|
) }) })
|
|
7448
8867
|
] });
|
|
7449
8868
|
}
|
|
7450
8869
|
|
|
7451
8870
|
// src/app/platform/report-card.tsx
|
|
7452
|
-
var
|
|
7453
|
-
var
|
|
8871
|
+
var import_react57 = require("react");
|
|
8872
|
+
var import_jsx_runtime114 = require("react/jsx-runtime");
|
|
7454
8873
|
function ReportCard(props) {
|
|
7455
8874
|
const { title, file, status, subtitle } = props;
|
|
7456
|
-
const onClickDownload = (0,
|
|
8875
|
+
const onClickDownload = (0, import_react57.useCallback)(() => {
|
|
7457
8876
|
if (!file) return;
|
|
7458
8877
|
const { url, fileName } = file;
|
|
7459
8878
|
const link = document.createElement("a");
|
|
@@ -7465,24 +8884,24 @@ function ReportCard(props) {
|
|
|
7465
8884
|
document.body.removeChild(link);
|
|
7466
8885
|
}, [file]);
|
|
7467
8886
|
if (status) {
|
|
7468
|
-
return /* @__PURE__ */ (0,
|
|
7469
|
-
/* @__PURE__ */ (0,
|
|
8887
|
+
return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Card, { children: /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(import_themes22.Flex, { align: "center", justify: "between", children: [
|
|
8888
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Heading2, { variant: "heading4", children: title }),
|
|
7470
8889
|
status
|
|
7471
8890
|
] }) });
|
|
7472
8891
|
}
|
|
7473
|
-
return /* @__PURE__ */ (0,
|
|
8892
|
+
return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Card, { children: /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(
|
|
7474
8893
|
import_themes22.Flex,
|
|
7475
8894
|
{
|
|
7476
8895
|
direction: { initial: "column", xs: "row" },
|
|
7477
8896
|
gapY: "2",
|
|
7478
8897
|
justify: "between",
|
|
7479
8898
|
children: [
|
|
7480
|
-
/* @__PURE__ */ (0,
|
|
7481
|
-
/* @__PURE__ */ (0,
|
|
7482
|
-
subtitle ? /* @__PURE__ */ (0,
|
|
8899
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(import_themes6.Box, { children: [
|
|
8900
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Heading2, { variant: "heading4", children: title }),
|
|
8901
|
+
subtitle ? /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Typo, { color: "gray", children: subtitle }) : null
|
|
7483
8902
|
] }),
|
|
7484
|
-
/* @__PURE__ */ (0,
|
|
7485
|
-
/* @__PURE__ */ (0,
|
|
8903
|
+
/* @__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: [
|
|
8904
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(import_react_icons2.DownloadIcon, {}),
|
|
7486
8905
|
file == null ? void 0 : file.buttonName
|
|
7487
8906
|
] }) }, file == null ? void 0 : file.url)
|
|
7488
8907
|
]
|
|
@@ -7491,9 +8910,9 @@ function ReportCard(props) {
|
|
|
7491
8910
|
}
|
|
7492
8911
|
|
|
7493
8912
|
// src/app/platform/contents-card.tsx
|
|
7494
|
-
var
|
|
7495
|
-
var
|
|
7496
|
-
var ContentsCard = (0,
|
|
8913
|
+
var import_react58 = require("react");
|
|
8914
|
+
var import_jsx_runtime115 = require("react/jsx-runtime");
|
|
8915
|
+
var ContentsCard = (0, import_react58.forwardRef)(
|
|
7497
8916
|
({
|
|
7498
8917
|
title,
|
|
7499
8918
|
description,
|
|
@@ -7503,7 +8922,7 @@ var ContentsCard = (0, import_react55.forwardRef)(
|
|
|
7503
8922
|
onClickCard,
|
|
7504
8923
|
isLoading = false
|
|
7505
8924
|
}, ref) => {
|
|
7506
|
-
return /* @__PURE__ */ (0,
|
|
8925
|
+
return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
|
|
7507
8926
|
Card,
|
|
7508
8927
|
{
|
|
7509
8928
|
onClick: onClickCard,
|
|
@@ -7516,7 +8935,7 @@ var ContentsCard = (0, import_react55.forwardRef)(
|
|
|
7516
8935
|
maxHeight: "450px"
|
|
7517
8936
|
},
|
|
7518
8937
|
children: [
|
|
7519
|
-
/* @__PURE__ */ (0,
|
|
8938
|
+
/* @__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
8939
|
import_themes6.Box,
|
|
7521
8940
|
{
|
|
7522
8941
|
height: "210px",
|
|
@@ -7528,12 +8947,12 @@ var ContentsCard = (0, import_react55.forwardRef)(
|
|
|
7528
8947
|
width: "100%"
|
|
7529
8948
|
}
|
|
7530
8949
|
) }) }),
|
|
7531
|
-
/* @__PURE__ */ (0,
|
|
7532
|
-
/* @__PURE__ */ (0,
|
|
7533
|
-
/* @__PURE__ */ (0,
|
|
7534
|
-
/* @__PURE__ */ (0,
|
|
8950
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(import_themes22.Flex, { direction: "column", p: "4", pb: "3", children: [
|
|
8951
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(import_themes6.Box, { children: [
|
|
8952
|
+
/* @__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 }) }),
|
|
8953
|
+
/* @__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
8954
|
] }),
|
|
7536
|
-
/* @__PURE__ */ (0,
|
|
8955
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
|
|
7537
8956
|
import_themes23.Grid,
|
|
7538
8957
|
{
|
|
7539
8958
|
align: "center",
|
|
@@ -7543,10 +8962,10 @@ var ContentsCard = (0, import_react55.forwardRef)(
|
|
|
7543
8962
|
style: { marginTop: "auto" },
|
|
7544
8963
|
width: "100%",
|
|
7545
8964
|
children: [
|
|
7546
|
-
/* @__PURE__ */ (0,
|
|
7547
|
-
Boolean(dropdownItems == null ? void 0 : dropdownItems.length) && /* @__PURE__ */ (0,
|
|
7548
|
-
/* @__PURE__ */ (0,
|
|
7549
|
-
/* @__PURE__ */ (0,
|
|
8965
|
+
/* @__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 }) }),
|
|
8966
|
+
Boolean(dropdownItems == null ? void 0 : dropdownItems.length) && /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(DropdownMenu.Root, { children: [
|
|
8967
|
+
/* @__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" }) }) }),
|
|
8968
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)(DropdownMenu.Content, { children: dropdownItems == null ? void 0 : dropdownItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
7550
8969
|
DropdownMenu.Item,
|
|
7551
8970
|
{
|
|
7552
8971
|
onClick: (e) => {
|
|
@@ -7570,7 +8989,7 @@ var ContentsCard = (0, import_react55.forwardRef)(
|
|
|
7570
8989
|
ContentsCard.displayName = "ContentsCard";
|
|
7571
8990
|
|
|
7572
8991
|
// src/app/platform/curriculum-card.tsx
|
|
7573
|
-
var
|
|
8992
|
+
var import_jsx_runtime116 = require("react/jsx-runtime");
|
|
7574
8993
|
function CurriculumCard(props) {
|
|
7575
8994
|
const {
|
|
7576
8995
|
title,
|
|
@@ -7581,7 +9000,7 @@ function CurriculumCard(props) {
|
|
|
7581
9000
|
bgColor,
|
|
7582
9001
|
onClick
|
|
7583
9002
|
} = props;
|
|
7584
|
-
return /* @__PURE__ */ (0,
|
|
9003
|
+
return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
|
|
7585
9004
|
import_themes23.Grid,
|
|
7586
9005
|
{
|
|
7587
9006
|
columns: { initial: "1", sm: "275px 1fr" },
|
|
@@ -7590,7 +9009,7 @@ function CurriculumCard(props) {
|
|
|
7590
9009
|
onClick,
|
|
7591
9010
|
style: { cursor: "pointer" },
|
|
7592
9011
|
children: [
|
|
7593
|
-
/* @__PURE__ */ (0,
|
|
9012
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
7594
9013
|
import_themes6.Box,
|
|
7595
9014
|
{
|
|
7596
9015
|
height: "165px",
|
|
@@ -7605,32 +9024,32 @@ function CurriculumCard(props) {
|
|
|
7605
9024
|
backgroundAttachment: "local"
|
|
7606
9025
|
},
|
|
7607
9026
|
width: "100%",
|
|
7608
|
-
children: /* @__PURE__ */ (0,
|
|
9027
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Heading2, { style: { whiteSpace: "break-spaces" }, variant: "heading3", children: imgTitle })
|
|
7609
9028
|
}
|
|
7610
9029
|
),
|
|
7611
|
-
/* @__PURE__ */ (0,
|
|
7612
|
-
/* @__PURE__ */ (0,
|
|
7613
|
-
/* @__PURE__ */ (0,
|
|
7614
|
-
/* @__PURE__ */ (0,
|
|
9030
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(import_themes22.Flex, { direction: "column", gap: "3", children: [
|
|
9031
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(import_themes23.Grid, { columns: { initial: "1", xs: "1fr auto" }, gapY: "3", children: [
|
|
9032
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Heading2, { variant: "heading4", children: title }),
|
|
9033
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
7615
9034
|
Badge,
|
|
7616
9035
|
{
|
|
7617
9036
|
size: "medium",
|
|
7618
9037
|
style: { justifySelf: "flex-start" },
|
|
7619
9038
|
variant: "outline",
|
|
7620
|
-
children: /* @__PURE__ */ (0,
|
|
7621
|
-
/* @__PURE__ */ (0,
|
|
9039
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(import_themes22.Flex, { align: "center", gap: "1", children: [
|
|
9040
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_react_icons2.TimerIcon, {}),
|
|
7622
9041
|
runningTime
|
|
7623
9042
|
] })
|
|
7624
9043
|
}
|
|
7625
9044
|
)
|
|
7626
9045
|
] }),
|
|
7627
|
-
/* @__PURE__ */ (0,
|
|
7628
|
-
return /* @__PURE__ */ (0,
|
|
9046
|
+
/* @__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) => {
|
|
9047
|
+
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
9048
|
}) }) }),
|
|
7630
|
-
/* @__PURE__ */ (0,
|
|
7631
|
-
/* @__PURE__ */ (0,
|
|
7632
|
-
/* @__PURE__ */ (0,
|
|
7633
|
-
/* @__PURE__ */ (0,
|
|
9049
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_themes39.Separator, { size: "4" }),
|
|
9050
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(import_themes22.Flex, { align: "center", gap: "2", justify: "end", children: [
|
|
9051
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Typo, { color: "gray", children: "\uAC15\uC758 \uB4E3\uACE0 \uCF54\uCE58\uB2D8\uACFC \uBB34\uC81C\uD55C Q&A" }),
|
|
9052
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_react_icons2.ArrowRightIcon, { color: "gray" })
|
|
7634
9053
|
] })
|
|
7635
9054
|
] })
|
|
7636
9055
|
]
|
|
@@ -7718,6 +9137,7 @@ function CurriculumCard(props) {
|
|
|
7718
9137
|
Drawer,
|
|
7719
9138
|
DropdownMenu,
|
|
7720
9139
|
DynamicForm,
|
|
9140
|
+
DynamicFormEditor,
|
|
7721
9141
|
DynamicFormField,
|
|
7722
9142
|
DynamicFormProvider,
|
|
7723
9143
|
DynamicFormResponseItem,
|
|
@@ -7836,6 +9256,7 @@ function CurriculumCard(props) {
|
|
|
7836
9256
|
getCalloutIconComponent,
|
|
7837
9257
|
getCellAlign,
|
|
7838
9258
|
getColumnMeta,
|
|
9259
|
+
getDynamicFormDisplayValue,
|
|
7839
9260
|
getTimeOption,
|
|
7840
9261
|
getTimeOptions,
|
|
7841
9262
|
oneOnOneNoteTextReplacer,
|