@dmsi/wedgekit-react 0.0.5 → 0.0.7
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/{chunk-25Y2OMTD.js → chunk-6ZY524ID.js} +8 -4
- package/dist/{chunk-UGXT677T.js → chunk-BWRHL2AG.js} +4 -2
- package/dist/{chunk-VFWFORJJ.js → chunk-DKKYR6DS.js} +1 -0
- package/dist/{chunk-TBHTISFW.js → chunk-GTCSRHPF.js} +1 -1
- package/dist/chunk-I2UVVKQI.js +12 -0
- package/dist/{chunk-CABAANHQ.js → chunk-L4UM372R.js} +5 -1
- package/dist/chunk-Q3FKEKIN.js +23 -0
- package/dist/{chunk-YD462QK7.js → chunk-TAW5ZZ4Z.js} +4 -4
- package/dist/{chunk-UEN5BURK.js → chunk-TRUPPHBQ.js} +14 -11
- package/dist/{chunk-2B7WUAOV.js → chunk-TU55CHXU.js} +4 -2
- package/dist/{chunk-PMQOPIJZ.js → chunk-U42SKNR6.js} +45 -16
- package/dist/{chunk-SPQH4CSJ.js → chunk-XUIPGYP5.js} +11 -3
- package/dist/components/Checkbox.cjs +1 -0
- package/dist/components/Checkbox.js +1 -1
- package/dist/components/DataGrid.cjs +145 -17
- package/dist/components/DataGrid.js +138 -19
- package/dist/components/DataGridCell.cjs +4 -2
- package/dist/components/DataGridCell.js +4 -4
- package/dist/components/DateInput.cjs +4 -2
- package/dist/components/DateInput.js +1 -1
- package/dist/components/DateRangeInput.cjs +4 -2
- package/dist/components/DateRangeInput.js +1 -1
- package/dist/components/FilterGroup.cjs +559 -31
- package/dist/components/FilterGroup.js +21 -3
- package/dist/components/Input.cjs +4 -2
- package/dist/components/Input.js +1 -1
- package/dist/components/MainBar.cjs +2 -1
- package/dist/components/MainBar.js +2 -1
- package/dist/components/Menu.js +1 -1
- package/dist/components/MobileDataGrid.cjs +658 -0
- package/dist/components/MobileDataGrid.js +125 -0
- package/dist/components/Modal.cjs +147 -52
- package/dist/components/Modal.js +80 -30
- package/dist/components/ModalButtons.cjs +7 -3
- package/dist/components/ModalButtons.js +1 -1
- package/dist/components/ModalContent.cjs +25 -2
- package/dist/components/ModalContent.js +1 -1
- package/dist/components/ModalHeader.cjs +11 -3
- package/dist/components/ModalHeader.js +1 -1
- package/dist/components/ModalScrim.cjs +5 -6
- package/dist/components/ModalScrim.js +1 -1
- package/dist/components/Notification.cjs +137 -26
- package/dist/components/Notification.js +29 -16
- package/dist/components/Password.cjs +4 -2
- package/dist/components/Password.js +1 -1
- package/dist/components/Search.cjs +4 -2
- package/dist/components/Search.js +2 -2
- package/dist/components/Select.cjs +15 -7
- package/dist/components/Select.js +2 -2
- package/dist/components/SideMenuGroup.cjs +45 -16
- package/dist/components/SideMenuGroup.js +1 -1
- package/dist/components/SideMenuItem.cjs +45 -16
- package/dist/components/SideMenuItem.js +1 -1
- package/dist/components/Stack.cjs +45 -16
- package/dist/components/Stack.js +1 -1
- package/dist/components/Stepper.cjs +4 -2
- package/dist/components/Stepper.js +1 -1
- package/dist/components/Surface.cjs +4 -4
- package/dist/components/Surface.js +36 -3
- package/dist/components/Swatch.cjs +971 -22
- package/dist/components/Swatch.js +928 -7
- package/dist/components/Theme.js +3 -9
- package/dist/components/Time.cjs +150 -91
- package/dist/components/Time.js +48 -60
- package/dist/components/Toast.cjs +1 -1
- package/dist/components/Toast.js +1 -1
- package/dist/fonts.css +2 -0
- package/dist/index.css +371 -19
- package/package.json +1 -1
- package/src/brand.css +16 -1
- package/src/components/Checkbox.tsx +1 -0
- package/src/components/DataGrid.tsx +132 -3
- package/src/components/FilterGroup.tsx +25 -2
- package/src/components/Input.tsx +4 -1
- package/src/components/MainBar.tsx +2 -1
- package/src/components/Menu.tsx +11 -4
- package/src/components/MobileDataGrid.tsx +135 -0
- package/src/components/Modal.tsx +73 -13
- package/src/components/ModalButtons.tsx +26 -17
- package/src/components/ModalContent.tsx +20 -2
- package/src/components/ModalHeader.tsx +24 -13
- package/src/components/ModalScrim.tsx +4 -3
- package/src/components/Notification.tsx +21 -14
- package/src/components/Select.tsx +7 -9
- package/src/components/Stack.tsx +85 -20
- package/src/components/Surface.tsx +4 -5
- package/src/components/Swatch.tsx +779 -6
- package/src/components/Time.tsx +51 -70
- package/src/components/Toast.tsx +1 -1
- package/src/darkmode.css +18 -3
- package/src/fonts.css +2 -0
- package/src/index.css +23 -3
- package/dist/acc.css +0 -3
- package/dist/agility.css +0 -7
- package/dist/chunk-22YZ6LFN.js +0 -322
- package/dist/chunk-27OSC5OM.js +0 -68
- package/dist/chunk-2EHJFFX4.js +0 -124
- package/dist/chunk-2GC2SPSS.js +0 -130
- package/dist/chunk-2KLCMD2M.js +0 -106
- package/dist/chunk-2TLQVCQQ.js +0 -130
- package/dist/chunk-2Y6GPKXR.js +0 -263
- package/dist/chunk-322ATVWD.js +0 -298
- package/dist/chunk-35DCQU2F.js +0 -127
- package/dist/chunk-3B7FAEF7.js +0 -38
- package/dist/chunk-3FLOLZYP.js +0 -21
- package/dist/chunk-3IZWY2C7.js +0 -221
- package/dist/chunk-3NGYDV56.js +0 -38
- package/dist/chunk-3NLKVKFR.js +0 -72
- package/dist/chunk-3R7YVBRL.js +0 -135
- package/dist/chunk-3RDFNEVD.js +0 -91
- package/dist/chunk-3TPGMRVY.js +0 -123
- package/dist/chunk-42X2EOOI.js +0 -129
- package/dist/chunk-47GJZWOH.js +0 -103
- package/dist/chunk-4BUU5MTT.js +0 -263
- package/dist/chunk-4IZG2UCW.js +0 -31
- package/dist/chunk-4M7CJVTZ.js +0 -136
- package/dist/chunk-4NZBVXM3.js +0 -53
- package/dist/chunk-4S4WZ3MQ.js +0 -103
- package/dist/chunk-4SV7MJMP.js +0 -340
- package/dist/chunk-4TH2SUHQ.js +0 -145
- package/dist/chunk-56ORPWGF.js +0 -148
- package/dist/chunk-5HIUW5CM.js +0 -128
- package/dist/chunk-5K3U4IUW.js +0 -34
- package/dist/chunk-5KOZKEEM.js +0 -91
- package/dist/chunk-5OIRPFRD.js +0 -114
- package/dist/chunk-5QW5SJNW.js +0 -31
- package/dist/chunk-5QZO37QK.js +0 -263
- package/dist/chunk-5ROMJJRK.js +0 -135
- package/dist/chunk-5VHYVTZI.js +0 -123
- package/dist/chunk-6277DY3K.js +0 -437
- package/dist/chunk-6C5NOV6D.js +0 -263
- package/dist/chunk-6CDVHKTS.js +0 -103
- package/dist/chunk-6E4OJA7E.js +0 -263
- package/dist/chunk-6GBZFWQ4.js +0 -105
- package/dist/chunk-6GGLA6DI.js +0 -263
- package/dist/chunk-6HKVN4QK.js +0 -340
- package/dist/chunk-6HLJFPGY.js +0 -284
- package/dist/chunk-6KUUK27D.js +0 -31
- package/dist/chunk-6Q5NNY5V.js +0 -135
- package/dist/chunk-6VAZR5GK.js +0 -122
- package/dist/chunk-6XDXJ3Z3.js +0 -131
- package/dist/chunk-6XIXUFSA.js +0 -114
- package/dist/chunk-7CG4GVU7.js +0 -21
- package/dist/chunk-7DNCGSXK.js +0 -284
- package/dist/chunk-7GFGBJCU.js +0 -287
- package/dist/chunk-7VA3AERB.js +0 -31
- package/dist/chunk-7YJLGGIR.js +0 -83
- package/dist/chunk-7ZCBQXHR.js +0 -272
- package/dist/chunk-A4BGWCF6.js +0 -221
- package/dist/chunk-A6RDEIAN.js +0 -254
- package/dist/chunk-AE7SZPWF.js +0 -121
- package/dist/chunk-AEQYZFXI.js +0 -50
- package/dist/chunk-AFEIB2Y7.js +0 -213
- package/dist/chunk-AGQML5BM.js +0 -340
- package/dist/chunk-AHBE63RV.js +0 -263
- package/dist/chunk-AHHXD4EH.js +0 -31
- package/dist/chunk-AILPQXDY.js +0 -47
- package/dist/chunk-AKTL6JU5.js +0 -25
- package/dist/chunk-AMZFEIAM.js +0 -114
- package/dist/chunk-ANI7PKSV.js +0 -38
- package/dist/chunk-AO6WGDPJ.js +0 -105
- package/dist/chunk-ASDN5OZ3.js +0 -318
- package/dist/chunk-ASSOOV4N.js +0 -53
- package/dist/chunk-AWSUZLRR.js +0 -79
- package/dist/chunk-B6A3BOGW.js +0 -31
- package/dist/chunk-B6NMINKX.js +0 -72
- package/dist/chunk-B7UOXS2S.js +0 -221
- package/dist/chunk-BDN7SDV5.js +0 -31
- package/dist/chunk-BDPJYJD2.js +0 -218
- package/dist/chunk-BDYWCYRG.js +0 -263
- package/dist/chunk-BENTHNAQ.js +0 -51
- package/dist/chunk-BGPBLXQ5.js +0 -131
- package/dist/chunk-BKC5DNOX.js +0 -162
- package/dist/chunk-BMGYSXYW.js +0 -50
- package/dist/chunk-BNOE4DGB.js +0 -79
- package/dist/chunk-BQMI4NKT.js +0 -103
- package/dist/chunk-BSBXTPTA.js +0 -84
- package/dist/chunk-BYNATA7V.js +0 -114
- package/dist/chunk-BZFVPEG3.js +0 -98
- package/dist/chunk-C2GYWE4S.js +0 -263
- package/dist/chunk-C5NNFQ4B.js +0 -114
- package/dist/chunk-C7ALJGJG.js +0 -322
- package/dist/chunk-C7S6DKZ6.js +0 -31
- package/dist/chunk-CA4BW655.js +0 -50
- package/dist/chunk-CELC37U6.js +0 -38
- package/dist/chunk-CIWOBFZ4.js +0 -340
- package/dist/chunk-CKB4S3O3.js +0 -284
- package/dist/chunk-CL6RYGIT.js +0 -263
- package/dist/chunk-CLB4OQS5.js +0 -84
- package/dist/chunk-CMBMFSP4.js +0 -340
- package/dist/chunk-CTHHLBRT.js +0 -90
- package/dist/chunk-DDQ4KWHW.js +0 -74
- package/dist/chunk-DHWXCPF2.js +0 -56
- package/dist/chunk-DV3IMUO6.js +0 -50
- package/dist/chunk-DZHPNWUL.js +0 -70
- package/dist/chunk-DZLUR2I7.js +0 -34
- package/dist/chunk-E7H6GJIB.js +0 -31
- package/dist/chunk-EAJ37R7R.js +0 -31
- package/dist/chunk-EDMIKY4Q.js +0 -50
- package/dist/chunk-EE4GUGFX.js +0 -31
- package/dist/chunk-EHCD3FVZ.js +0 -50
- package/dist/chunk-EHOMG5B4.js +0 -31
- package/dist/chunk-EM7ODK2O.js +0 -53
- package/dist/chunk-ER3HQRPL.js +0 -105
- package/dist/chunk-ER6TD3DA.js +0 -30
- package/dist/chunk-ESK7AT3B.js +0 -38
- package/dist/chunk-ETWMDEUU.js +0 -114
- package/dist/chunk-EWX2EDF5.js +0 -236
- package/dist/chunk-EXJKOP3Y.js +0 -236
- package/dist/chunk-F2YQE6G5.js +0 -145
- package/dist/chunk-F3U3RHIB.js +0 -131
- package/dist/chunk-F433MJII.js +0 -91
- package/dist/chunk-F4JE6AD2.js +0 -160
- package/dist/chunk-FCYGYC7R.js +0 -30
- package/dist/chunk-FEEMBYZR.js +0 -98
- package/dist/chunk-FKQ63FLW.js +0 -91
- package/dist/chunk-FNFDOS7L.js +0 -263
- package/dist/chunk-FNLYAP3I.js +0 -135
- package/dist/chunk-FQVCRL3Z.js +0 -145
- package/dist/chunk-FZ6I2KRT.js +0 -263
- package/dist/chunk-FZLYFJ53.js +0 -26
- package/dist/chunk-G3AYBQ2Y.js +0 -221
- package/dist/chunk-G4V7WZAV.js +0 -72
- package/dist/chunk-GDAY5XPY.js +0 -47
- package/dist/chunk-GELM4Z36.js +0 -263
- package/dist/chunk-GGR5UY3Q.js +0 -83
- package/dist/chunk-GK556OXV.js +0 -263
- package/dist/chunk-GOB3NB3Q.js +0 -130
- package/dist/chunk-GPIG2QUB.js +0 -437
- package/dist/chunk-GV63QYC5.js +0 -130
- package/dist/chunk-GWNDXZUZ.js +0 -263
- package/dist/chunk-H3INEB6H.js +0 -296
- package/dist/chunk-H3VQYL46.js +0 -50
- package/dist/chunk-H53EBFHV.js +0 -114
- package/dist/chunk-HBD6NLMB.js +0 -51
- package/dist/chunk-HBTQFVPW.js +0 -121
- package/dist/chunk-HCDYAZGJ.js +0 -91
- package/dist/chunk-HE3XKR3P.js +0 -130
- package/dist/chunk-HK3NQMPY.js +0 -51
- package/dist/chunk-HK54SJNM.js +0 -103
- package/dist/chunk-HL2IYNCS.js +0 -50
- package/dist/chunk-I5A3SU35.js +0 -282
- package/dist/chunk-I5HKQSF2.js +0 -59
- package/dist/chunk-I7LXSGQA.js +0 -10
- package/dist/chunk-IDAZ53A4.js +0 -261
- package/dist/chunk-II6HWGH6.js +0 -295
- package/dist/chunk-IIDPTJCI.js +0 -31
- package/dist/chunk-IJ6AAL4W.js +0 -59
- package/dist/chunk-IKZQIIV3.js +0 -123
- package/dist/chunk-ISKELMPI.js +0 -67
- package/dist/chunk-IWUZ6NSN.js +0 -218
- package/dist/chunk-IYDKL3OH.js +0 -130
- package/dist/chunk-IZ75D7KD.js +0 -30
- package/dist/chunk-JCLVMFRY.js +0 -122
- package/dist/chunk-JDHZQIFC.js +0 -135
- package/dist/chunk-JFMZU3WS.js +0 -123
- package/dist/chunk-JI54AM6E.js +0 -105
- package/dist/chunk-JM4DMO5V.js +0 -91
- package/dist/chunk-JNLDVEK3.js +0 -221
- package/dist/chunk-JU3RVFK5.js +0 -114
- package/dist/chunk-JU4PINK3.js +0 -282
- package/dist/chunk-K2YPB4SV.js +0 -38
- package/dist/chunk-K5EXR7F7.js +0 -253
- package/dist/chunk-K7CWFWAA.js +0 -263
- package/dist/chunk-KGCFZ3ZY.js +0 -263
- package/dist/chunk-KJEU2OLC.js +0 -263
- package/dist/chunk-KNZWZVWO.js +0 -50
- package/dist/chunk-KVQDUSDT.js +0 -33
- package/dist/chunk-KXFCVFX7.js +0 -50
- package/dist/chunk-KXWYWY7O.js +0 -135
- package/dist/chunk-KYJFCVGO.js +0 -53
- package/dist/chunk-L4SK5HYC.js +0 -114
- package/dist/chunk-L5OMTPWT.js +0 -130
- package/dist/chunk-LBL6VQ5F.js +0 -51
- package/dist/chunk-LCJKAY5H.js +0 -122
- package/dist/chunk-LEPHUIU3.js +0 -263
- package/dist/chunk-LFNCUQNK.js +0 -103
- package/dist/chunk-LIQIMUDD.js +0 -270
- package/dist/chunk-LJ2W2FEG.js +0 -134
- package/dist/chunk-LJGUNBDS.js +0 -238
- package/dist/chunk-LK6UNOMX.js +0 -24
- package/dist/chunk-LQLPGMGP.js +0 -238
- package/dist/chunk-LRNZOITG.js +0 -318
- package/dist/chunk-LSDPH4GX.js +0 -38
- package/dist/chunk-LXYDGV6K.js +0 -437
- package/dist/chunk-MFNBBTWX.js +0 -177
- package/dist/chunk-MGJ3GO6Z.js +0 -284
- package/dist/chunk-MIMYQH75.js +0 -91
- package/dist/chunk-MKIVQLZW.js +0 -122
- package/dist/chunk-MLQQU3ZN.js +0 -31
- package/dist/chunk-MLTOT73W.js +0 -38
- package/dist/chunk-MM2YBW7A.js +0 -31
- package/dist/chunk-MMHTKJ7Z.js +0 -50
- package/dist/chunk-MNZUBPVB.js +0 -263
- package/dist/chunk-MRXJRTKP.js +0 -62
- package/dist/chunk-MSM2B2VT.js +0 -106
- package/dist/chunk-MTJDLHR6.js +0 -218
- package/dist/chunk-MU4ZBPUT.js +0 -263
- package/dist/chunk-MUQHKNFV.js +0 -158
- package/dist/chunk-N2XNU5PP.js +0 -91
- package/dist/chunk-N4NGR36H.js +0 -263
- package/dist/chunk-NA4H2JQX.js +0 -145
- package/dist/chunk-NBV3Y6UB.js +0 -315
- package/dist/chunk-NEBYCDGE.js +0 -284
- package/dist/chunk-NS2KPONF.js +0 -263
- package/dist/chunk-O2KOOPL4.js +0 -148
- package/dist/chunk-OEIQDS7X.js +0 -50
- package/dist/chunk-OJ4PX3ZG.js +0 -59
- package/dist/chunk-OOIM4AHV.js +0 -106
- package/dist/chunk-OQ2SDHRA.js +0 -267
- package/dist/chunk-OQAOAEH5.js +0 -114
- package/dist/chunk-OQWOF5CI.js +0 -322
- package/dist/chunk-ORW5CX24.js +0 -316
- package/dist/chunk-OUHI4UBN.js +0 -38
- package/dist/chunk-OULD24TE.js +0 -98
- package/dist/chunk-P66A67NV.js +0 -30
- package/dist/chunk-PC5JSEHD.js +0 -269
- package/dist/chunk-PLCJ56FF.js +0 -72
- package/dist/chunk-PMNRGAPH.js +0 -191
- package/dist/chunk-PPU6PK34.js +0 -263
- package/dist/chunk-PQEWSSM5.js +0 -31
- package/dist/chunk-PY6MF2II.js +0 -51
- package/dist/chunk-QBXVAKCM.js +0 -59
- package/dist/chunk-QDAFX66E.js +0 -55
- package/dist/chunk-QEXYUSGH.js +0 -201
- package/dist/chunk-QFEYPU44.js +0 -91
- package/dist/chunk-QJWVR7FR.js +0 -387
- package/dist/chunk-QKKRKHFR.js +0 -38
- package/dist/chunk-QKQ4M6UK.js +0 -263
- package/dist/chunk-QTKPVQAY.js +0 -66
- package/dist/chunk-R3IEEDQ6.js +0 -284
- package/dist/chunk-R4UZI5WE.js +0 -171
- package/dist/chunk-RBXILAST.js +0 -437
- package/dist/chunk-RENGWIST.js +0 -263
- package/dist/chunk-REZ33AJK.js +0 -172
- package/dist/chunk-RGI3V47F.js +0 -216
- package/dist/chunk-RMIQDOJV.js +0 -287
- package/dist/chunk-ROYYCT4A.js +0 -31
- package/dist/chunk-RWVJ2YAO.js +0 -131
- package/dist/chunk-RZLSOKZB.js +0 -123
- package/dist/chunk-S3POCSOH.js +0 -31
- package/dist/chunk-S4IHG5J6.js +0 -54
- package/dist/chunk-SHQVFIVR.js +0 -122
- package/dist/chunk-SPV52UKB.js +0 -50
- package/dist/chunk-SSBZHFHQ.js +0 -123
- package/dist/chunk-STVC6SBJ.js +0 -91
- package/dist/chunk-T23U4LBM.js +0 -148
- package/dist/chunk-TC5ACZ3X.js +0 -263
- package/dist/chunk-TD5JMMNX.js +0 -72
- package/dist/chunk-TDEEN7O7.js +0 -50
- package/dist/chunk-TKRAU33B.js +0 -53
- package/dist/chunk-TMLPJ27P.js +0 -126
- package/dist/chunk-TTKSTVEF.js +0 -41
- package/dist/chunk-TVYKK7ZX.js +0 -123
- package/dist/chunk-TZCA2T5D.js +0 -282
- package/dist/chunk-U2CMWI75.js +0 -250
- package/dist/chunk-UA7N4NQJ.js +0 -30
- package/dist/chunk-ULCNZZBV.js +0 -38
- package/dist/chunk-UO4T3RQ7.js +0 -62
- package/dist/chunk-US3SPKKB.js +0 -266
- package/dist/chunk-UUNHTQDU.js +0 -79
- package/dist/chunk-UUZXVVJY.js +0 -161
- package/dist/chunk-UZJMB6V7.js +0 -26
- package/dist/chunk-V3HXUE6V.js +0 -221
- package/dist/chunk-V6UMVJGA.js +0 -53
- package/dist/chunk-V7C6DTJ6.js +0 -72
- package/dist/chunk-VHWB6H64.js +0 -75
- package/dist/chunk-VI62SXXU.js +0 -284
- package/dist/chunk-VK3FB67Z.js +0 -31
- package/dist/chunk-VKC7QT46.js +0 -83
- package/dist/chunk-VVTY2NT4.js +0 -105
- package/dist/chunk-VWEOVI4O.js +0 -123
- package/dist/chunk-WOCMJF6O.js +0 -221
- package/dist/chunk-WPDU5H5L.js +0 -114
- package/dist/chunk-WQMFGEAF.js +0 -235
- package/dist/chunk-WTAZ6P6T.js +0 -263
- package/dist/chunk-WUJFEG3H.js +0 -118
- package/dist/chunk-WUTFZGXS.js +0 -50
- package/dist/chunk-X65IBJJM.js +0 -436
- package/dist/chunk-XATMLZOP.js +0 -263
- package/dist/chunk-XFCRKJRI.js +0 -261
- package/dist/chunk-XGKHSZ6E.js +0 -38
- package/dist/chunk-XJAQVF2E.js +0 -83
- package/dist/chunk-XQX7HSL5.js +0 -38
- package/dist/chunk-XTP3ODBD.js +0 -56
- package/dist/chunk-XWF3ZJCZ.js +0 -97
- package/dist/chunk-XX3GHFG5.js +0 -121
- package/dist/chunk-XZ6AMNDQ.js +0 -290
- package/dist/chunk-Y2LOHSZL.js +0 -72
- package/dist/chunk-Y66VCVZZ.js +0 -122
- package/dist/chunk-YELD6VJI.js +0 -68
- package/dist/chunk-YHPZ5T3W.js +0 -91
- package/dist/chunk-YJV7JCIC.js +0 -38
- package/dist/chunk-YMZUZ5HX.js +0 -263
- package/dist/chunk-YN7MUHAZ.js +0 -218
- package/dist/chunk-YOCKCBUA.js +0 -72
- package/dist/chunk-YPFUW2PT.js +0 -306
- package/dist/chunk-YRLRIQNP.js +0 -284
- package/dist/chunk-YRTR6KJN.js +0 -210
- package/dist/chunk-YSSJHCRC.js +0 -221
- package/dist/chunk-YWLJJNJY.js +0 -259
- package/dist/chunk-YYRH2SGW.js +0 -114
- package/dist/chunk-YZRIJ4AP.js +0 -263
- package/dist/chunk-Z64CLA4J.js +0 -53
- package/dist/chunk-ZCFOYW2U.js +0 -296
- package/dist/chunk-ZEYZVUG5.js +0 -53
- package/dist/chunk-ZHRZMJA3.js +0 -31
- package/dist/chunk-ZJQAMKIP.js +0 -113
- package/dist/chunk-ZRQZOT6X.js +0 -141
- package/dist/chunk-ZUTAZW53.js +0 -306
- package/dist/chunk-ZVJ2T3DC.js +0 -79
- package/dist/chunk-ZWJZHUKU.js +0 -50
- package/dist/chunk-ZXQKFHBO.js +0 -221
- package/dist/components/Calendar.cjs +0 -219
- package/dist/components/Calendar.js +0 -10
- package/dist/components/CalendarRange.stories.cjs +0 -1
- package/dist/components/CalendarRange.stories.js +0 -0
- package/dist/components/Display1.cjs +0 -223
- package/dist/components/Display1.js +0 -8
- package/dist/components/Display2.cjs +0 -220
- package/dist/components/Display2.js +0 -46
- package/dist/components/Heading1.cjs +0 -223
- package/dist/components/Heading1.js +0 -49
- package/dist/components/Heading2.cjs +0 -223
- package/dist/components/Heading2.js +0 -8
- package/dist/components/Heading3.cjs +0 -223
- package/dist/components/Heading3.js +0 -8
- package/dist/icons-light-QXLRBPC4.woff2 +0 -0
- package/dist/icons-normal-MJATZ73K.woff2 +0 -0
- package/dist/millwork.css +0 -4
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import React, { ReactNode, useId, useState } from "react";
|
|
3
|
+
import React, { ReactNode, useCallback, useId, useRef, useState } from "react";
|
|
4
4
|
|
|
5
5
|
// TanStack Table
|
|
6
6
|
import {
|
|
7
|
+
Column,
|
|
7
8
|
ColumnDef,
|
|
8
9
|
ColumnFiltersState,
|
|
9
10
|
FilterFn,
|
|
@@ -115,6 +116,7 @@ export interface DataGridProps<T extends Record<string, unknown>> {
|
|
|
115
116
|
totalRowCount: number;
|
|
116
117
|
hideStatusBar?: boolean;
|
|
117
118
|
centerHeader?: boolean;
|
|
119
|
+
enableColumnSelector?: boolean;
|
|
118
120
|
}
|
|
119
121
|
|
|
120
122
|
export function DataGrid<T extends Record<string, unknown>>({
|
|
@@ -136,6 +138,7 @@ export function DataGrid<T extends Record<string, unknown>>({
|
|
|
136
138
|
totalRowCount,
|
|
137
139
|
hideStatusBar,
|
|
138
140
|
centerHeader,
|
|
141
|
+
enableColumnSelector,
|
|
139
142
|
}: DataGridProps<T>) {
|
|
140
143
|
const [columnOrder, setColumnOrder] = useState<string[]>(() =>
|
|
141
144
|
columns.map((c) => c.id!),
|
|
@@ -205,6 +208,37 @@ export function DataGrid<T extends Record<string, unknown>>({
|
|
|
205
208
|
const id = useId();
|
|
206
209
|
const containerRef = React.useRef<HTMLDivElement>(null);
|
|
207
210
|
|
|
211
|
+
const [columnVisibility, setColumnVisibility] = useState<
|
|
212
|
+
Record<string, boolean>
|
|
213
|
+
>(() => {
|
|
214
|
+
const initialVisibility: Record<string, boolean> = {};
|
|
215
|
+
columns.forEach((column) => {
|
|
216
|
+
if (column.id) {
|
|
217
|
+
initialVisibility[column.id] = column.meta?.visible ?? true;
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
return initialVisibility;
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
const toggleColumnVisibility = useCallback(
|
|
224
|
+
(id: string, isVisible: boolean) => {
|
|
225
|
+
setColumnVisibility((prev) => ({ ...prev, [id]: isVisible }));
|
|
226
|
+
},
|
|
227
|
+
[setColumnVisibility],
|
|
228
|
+
);
|
|
229
|
+
|
|
230
|
+
const resetColumnVisibility = useCallback(() => {
|
|
231
|
+
setColumnVisibility(() => {
|
|
232
|
+
const initialVisibility: Record<string, boolean> = {};
|
|
233
|
+
columns.forEach((column) => {
|
|
234
|
+
if (column.id) {
|
|
235
|
+
initialVisibility[column.id] = column.meta?.visible ?? true;
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
return initialVisibility;
|
|
239
|
+
});
|
|
240
|
+
}, [columns]);
|
|
241
|
+
|
|
208
242
|
const table = useReactTable<T>({
|
|
209
243
|
columns,
|
|
210
244
|
data,
|
|
@@ -218,6 +252,7 @@ export function DataGrid<T extends Record<string, unknown>>({
|
|
|
218
252
|
sorting: sortingState,
|
|
219
253
|
columnFilters: columnFilterState,
|
|
220
254
|
rowSelection,
|
|
255
|
+
columnVisibility,
|
|
221
256
|
},
|
|
222
257
|
onColumnOrderChange: setColumnOrder,
|
|
223
258
|
onSortingChange: adaptTableStateSetter(setSortingState),
|
|
@@ -326,9 +361,9 @@ export function DataGrid<T extends Record<string, unknown>>({
|
|
|
326
361
|
items={columnOrder}
|
|
327
362
|
strategy={horizontalListSortingStrategy}
|
|
328
363
|
>
|
|
329
|
-
<div className="flex flex-col flex-1
|
|
364
|
+
<div className="flex flex-col flex-1 h-full w-full rounded border border-border-primary-normal overflow-hidden text-text-primary-normal">
|
|
330
365
|
<div
|
|
331
|
-
className="overflow-auto scrollbar-thin
|
|
366
|
+
className="overflow-auto scrollbar-thin h-full relative contain-paint will-change-transform"
|
|
332
367
|
ref={containerRef}
|
|
333
368
|
>
|
|
334
369
|
<table className="min-w-full grid">
|
|
@@ -432,6 +467,13 @@ export function DataGrid<T extends Record<string, unknown>>({
|
|
|
432
467
|
style={{ display: "flex", width: virtualPaddingRight }}
|
|
433
468
|
/>
|
|
434
469
|
) : null}
|
|
470
|
+
{enableColumnSelector && (
|
|
471
|
+
<ColumnSelectorHeaderCell
|
|
472
|
+
table={table}
|
|
473
|
+
toggleColumnVisibility={toggleColumnVisibility}
|
|
474
|
+
resetColumnVisibility={resetColumnVisibility}
|
|
475
|
+
/>
|
|
476
|
+
)}
|
|
435
477
|
</tr>
|
|
436
478
|
))}
|
|
437
479
|
</thead>
|
|
@@ -446,6 +488,7 @@ export function DataGrid<T extends Record<string, unknown>>({
|
|
|
446
488
|
isLoadingMore={isLoadingMore}
|
|
447
489
|
hasMore={hasMore}
|
|
448
490
|
showFilterRow={showFilterRow}
|
|
491
|
+
enableColumnSelector={enableColumnSelector}
|
|
449
492
|
/>
|
|
450
493
|
</table>
|
|
451
494
|
</div>
|
|
@@ -551,6 +594,7 @@ interface TableBodyProps<TData extends RowData> {
|
|
|
551
594
|
isLoadingMore: boolean;
|
|
552
595
|
hasMore: boolean;
|
|
553
596
|
showFilterRow: boolean;
|
|
597
|
+
enableColumnSelector?: boolean;
|
|
554
598
|
}
|
|
555
599
|
|
|
556
600
|
// Helpers
|
|
@@ -565,6 +609,7 @@ function TableBody<T>({
|
|
|
565
609
|
isLoadingMore,
|
|
566
610
|
hasMore,
|
|
567
611
|
showFilterRow,
|
|
612
|
+
enableColumnSelector = false,
|
|
568
613
|
}: TableBodyProps<T>) {
|
|
569
614
|
const { rows } = table.getRowModel();
|
|
570
615
|
|
|
@@ -639,6 +684,7 @@ function TableBody<T>({
|
|
|
639
684
|
virtualPaddingRight={virtualPaddingRight}
|
|
640
685
|
virtualRow={virtualRow}
|
|
641
686
|
showFilterRow={showFilterRow}
|
|
687
|
+
enableColumnSelector={enableColumnSelector}
|
|
642
688
|
/>
|
|
643
689
|
);
|
|
644
690
|
})}
|
|
@@ -670,6 +716,7 @@ interface TableBodyRowProps<T> {
|
|
|
670
716
|
virtualPaddingRight: number | undefined;
|
|
671
717
|
virtualRow: VirtualItem;
|
|
672
718
|
showFilterRow: boolean;
|
|
719
|
+
enableColumnSelector?: boolean;
|
|
673
720
|
}
|
|
674
721
|
|
|
675
722
|
function TableBodyRow<T>({
|
|
@@ -680,6 +727,7 @@ function TableBodyRow<T>({
|
|
|
680
727
|
virtualPaddingRight,
|
|
681
728
|
virtualRow,
|
|
682
729
|
showFilterRow,
|
|
730
|
+
enableColumnSelector = false,
|
|
683
731
|
}: TableBodyRowProps<T>) {
|
|
684
732
|
const visibleCells = row.getVisibleCells();
|
|
685
733
|
const virtualColumns = columnVirtualizer.getVirtualItems();
|
|
@@ -738,6 +786,8 @@ function TableBodyRow<T>({
|
|
|
738
786
|
// fake empty column to the right for virtualization scroll padding
|
|
739
787
|
<td style={{ display: "flex", width: virtualPaddingRight }} />
|
|
740
788
|
) : null}
|
|
789
|
+
|
|
790
|
+
{enableColumnSelector && <td></td>}
|
|
741
791
|
</tr>
|
|
742
792
|
);
|
|
743
793
|
}
|
|
@@ -773,6 +823,84 @@ const LoadingCell = <T extends RowData>({
|
|
|
773
823
|
);
|
|
774
824
|
};
|
|
775
825
|
|
|
826
|
+
function ColumnSelectorHeaderCell<T>({
|
|
827
|
+
table,
|
|
828
|
+
toggleColumnVisibility,
|
|
829
|
+
resetColumnVisibility,
|
|
830
|
+
}: {
|
|
831
|
+
table: Table<T>;
|
|
832
|
+
toggleColumnVisibility: (id: string, isVisible: boolean) => void;
|
|
833
|
+
resetColumnVisibility: () => void;
|
|
834
|
+
}) {
|
|
835
|
+
const ref = useRef<HTMLElement>(null);
|
|
836
|
+
const [show, setShow] = useState(false);
|
|
837
|
+
|
|
838
|
+
return (
|
|
839
|
+
<DataGridCell
|
|
840
|
+
width="48"
|
|
841
|
+
type="header"
|
|
842
|
+
color="text-secondary-normal"
|
|
843
|
+
ref={ref}
|
|
844
|
+
>
|
|
845
|
+
<Button
|
|
846
|
+
onClick={() => setShow((prev) => !prev)}
|
|
847
|
+
variant="navigation"
|
|
848
|
+
iconOnly
|
|
849
|
+
leftIcon={<Icon name="tune" />}
|
|
850
|
+
></Button>
|
|
851
|
+
<Menu
|
|
852
|
+
positionTo={ref}
|
|
853
|
+
position="bottom-right"
|
|
854
|
+
show={show}
|
|
855
|
+
setShow={setShow}
|
|
856
|
+
>
|
|
857
|
+
<Button
|
|
858
|
+
variant="tertiary"
|
|
859
|
+
onClick={() => {
|
|
860
|
+
resetColumnVisibility();
|
|
861
|
+
setShow(false);
|
|
862
|
+
}}
|
|
863
|
+
>
|
|
864
|
+
Reset to default
|
|
865
|
+
</Button>
|
|
866
|
+
{table.getAllColumns().map((column) => (
|
|
867
|
+
<ColumnSelectorMenuOption
|
|
868
|
+
key={column.id}
|
|
869
|
+
column={column}
|
|
870
|
+
toggleColumnVisibility={toggleColumnVisibility}
|
|
871
|
+
/>
|
|
872
|
+
))}
|
|
873
|
+
</Menu>
|
|
874
|
+
</DataGridCell>
|
|
875
|
+
);
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
function ColumnSelectorMenuOption<T>({
|
|
879
|
+
column,
|
|
880
|
+
toggleColumnVisibility,
|
|
881
|
+
}: {
|
|
882
|
+
column: Column<T, unknown>;
|
|
883
|
+
toggleColumnVisibility: (id: string, isVisible: boolean) => void;
|
|
884
|
+
}) {
|
|
885
|
+
const [isVisible, setIsVisible] = useState(column.getIsVisible());
|
|
886
|
+
const label =
|
|
887
|
+
typeof column.columnDef.header === "string"
|
|
888
|
+
? column.columnDef.header
|
|
889
|
+
: null;
|
|
890
|
+
return (
|
|
891
|
+
<MenuOption selected={isVisible} defaultChecked={isVisible}>
|
|
892
|
+
<Checkbox
|
|
893
|
+
label={label ?? "Unknown"}
|
|
894
|
+
checked={isVisible}
|
|
895
|
+
onChange={(e) => {
|
|
896
|
+
setIsVisible(e.target.checked);
|
|
897
|
+
toggleColumnVisibility(column.id, e.target.checked);
|
|
898
|
+
}}
|
|
899
|
+
/>
|
|
900
|
+
</MenuOption>
|
|
901
|
+
);
|
|
902
|
+
}
|
|
903
|
+
|
|
776
904
|
function getSortIcon(sort: SortDirection | false, nextSort = false) {
|
|
777
905
|
const iconClassName = clsx(
|
|
778
906
|
"text-icon-on-action-primary-normal",
|
|
@@ -807,6 +935,7 @@ declare module "@tanstack/react-table" {
|
|
|
807
935
|
locked?: boolean;
|
|
808
936
|
checkbox?: boolean;
|
|
809
937
|
headerWidth?: string;
|
|
938
|
+
visible?: boolean;
|
|
810
939
|
filterRowCell?: ({
|
|
811
940
|
header,
|
|
812
941
|
table,
|
|
@@ -7,6 +7,7 @@ import { Checkbox } from "./Checkbox";
|
|
|
7
7
|
import { OptionPill } from "./OptionPill";
|
|
8
8
|
import clsx from "clsx";
|
|
9
9
|
import { Link } from "./Link";
|
|
10
|
+
import { Search } from "./Search";
|
|
10
11
|
import {
|
|
11
12
|
baseTransition,
|
|
12
13
|
componentGap,
|
|
@@ -23,8 +24,19 @@ type FilterGroupProps = {
|
|
|
23
24
|
showMore?: boolean;
|
|
24
25
|
type?: "link" | "checkbox" | "summary";
|
|
25
26
|
onShowMore?: () => void;
|
|
26
|
-
onClearAll?: () => void;
|
|
27
|
-
}
|
|
27
|
+
onClearAll?: () => void;
|
|
28
|
+
} & (
|
|
29
|
+
| {
|
|
30
|
+
showSearchField: true;
|
|
31
|
+
searchValue: string;
|
|
32
|
+
onSearchChange: React.ChangeEventHandler<HTMLInputElement>;
|
|
33
|
+
}
|
|
34
|
+
| {
|
|
35
|
+
showSearchField?: false | undefined;
|
|
36
|
+
searchValue?: string;
|
|
37
|
+
onSearchChange?: React.ChangeEventHandler<HTMLInputElement>;
|
|
38
|
+
}
|
|
39
|
+
);
|
|
28
40
|
|
|
29
41
|
export const FilterGroup = ({
|
|
30
42
|
label,
|
|
@@ -34,6 +46,9 @@ export const FilterGroup = ({
|
|
|
34
46
|
onShowMore,
|
|
35
47
|
onClearAll,
|
|
36
48
|
children,
|
|
49
|
+
showSearchField = false,
|
|
50
|
+
searchValue,
|
|
51
|
+
onSearchChange,
|
|
37
52
|
...props
|
|
38
53
|
}: ComponentProps<"div"> & FilterGroupProps) => {
|
|
39
54
|
const isSummary = type === "summary";
|
|
@@ -110,6 +125,14 @@ export const FilterGroup = ({
|
|
|
110
125
|
"mt-mobile-component-gap desktop:mt-desktop-component-gap compact:mt-desktop-compact-component-gap",
|
|
111
126
|
)}
|
|
112
127
|
>
|
|
128
|
+
{!isSummary && showSearchField && (
|
|
129
|
+
<Search
|
|
130
|
+
style={{ marginBottom: '2px' }}
|
|
131
|
+
onChange={onSearchChange}
|
|
132
|
+
value={searchValue}
|
|
133
|
+
/>
|
|
134
|
+
)}
|
|
135
|
+
|
|
113
136
|
<div className={clsx(isSummary && `flex flex-col ${componentGap}`)}>
|
|
114
137
|
{visibleChildren}
|
|
115
138
|
</div>
|
package/src/components/Input.tsx
CHANGED
|
@@ -251,6 +251,7 @@ export const Input = ({
|
|
|
251
251
|
const baseProps = {
|
|
252
252
|
...props,
|
|
253
253
|
...getDecimalPlaceholder(decimals),
|
|
254
|
+
value: propValue
|
|
254
255
|
};
|
|
255
256
|
|
|
256
257
|
switch (variant) {
|
|
@@ -329,7 +330,9 @@ export const Input = ({
|
|
|
329
330
|
|
|
330
331
|
case "uom":
|
|
331
332
|
return uom ? (
|
|
332
|
-
|
|
333
|
+
<span className="text-text-secondary-normal uppercase">
|
|
334
|
+
{uom.slice(0, 4)}
|
|
335
|
+
</span>
|
|
333
336
|
) : null;
|
|
334
337
|
|
|
335
338
|
case "percentage":
|
|
@@ -32,8 +32,9 @@ export const MainBar = ({
|
|
|
32
32
|
return (
|
|
33
33
|
<div
|
|
34
34
|
className={clsx(
|
|
35
|
+
"min-h-mobile-container-padding",
|
|
35
36
|
"bg-background-brand-normal items-center justify-between",
|
|
36
|
-
|
|
37
|
+
"flex",
|
|
37
38
|
layoutGroupGap,
|
|
38
39
|
containerPaddingX,
|
|
39
40
|
footer ? containerPaddingY : componentPaddingYUsingComponentGap,
|
package/src/components/Menu.tsx
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import clsx from "clsx";
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
ComponentProps,
|
|
6
|
+
ReactNode,
|
|
7
|
+
RefObject,
|
|
8
|
+
useEffect,
|
|
9
|
+
useRef,
|
|
10
|
+
useState,
|
|
11
|
+
} from "react";
|
|
5
12
|
import { createPortal } from "react-dom";
|
|
6
13
|
import { useMenuPosition } from "./useMenuSystem";
|
|
7
14
|
import { findDocumentRoot } from "../utils";
|
|
@@ -53,7 +60,7 @@ export const Menu = ({
|
|
|
53
60
|
isOpen: show,
|
|
54
61
|
setIsOpen: setShow,
|
|
55
62
|
menuRef: internalRef,
|
|
56
|
-
topOffset
|
|
63
|
+
topOffset,
|
|
57
64
|
},
|
|
58
65
|
);
|
|
59
66
|
|
|
@@ -131,7 +138,7 @@ export const Menu = ({
|
|
|
131
138
|
...props.style,
|
|
132
139
|
maxHeight: customMaxHeight || maxHeight,
|
|
133
140
|
...menuPosition,
|
|
134
|
-
minWidth: useDefaultMinWidth ?
|
|
141
|
+
minWidth: useDefaultMinWidth ? "212px" : menuPosition.minWidth,
|
|
135
142
|
}}
|
|
136
143
|
onKeyDown={handleKeydown}
|
|
137
144
|
onMouseDown={stopPropagation}
|
|
@@ -247,7 +254,7 @@ export const Menu = ({
|
|
|
247
254
|
block: "nearest",
|
|
248
255
|
behavior: "instant",
|
|
249
256
|
});
|
|
250
|
-
|
|
257
|
+
|
|
251
258
|
if (autoFocusOff) {
|
|
252
259
|
return;
|
|
253
260
|
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import clsx from "clsx";
|
|
2
|
+
import { Icon } from "./Icon";
|
|
3
|
+
import { ComponentProps } from "react";
|
|
4
|
+
import { Stack } from "./Stack";
|
|
5
|
+
import { Button } from "./Button";
|
|
6
|
+
import { Theme } from "./Theme";
|
|
7
|
+
import { Heading3 } from "./Heading";
|
|
8
|
+
import { Paragraph } from "./Paragraph";
|
|
9
|
+
|
|
10
|
+
export type RowData = Record<string, unknown>;
|
|
11
|
+
|
|
12
|
+
export type MobileColumnDef<T extends RowData> = {
|
|
13
|
+
header: string;
|
|
14
|
+
accessorKey: keyof T;
|
|
15
|
+
show?: boolean;
|
|
16
|
+
|
|
17
|
+
cell?: (info: { row: T }) => React.ReactNode;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export function MobileDataGrid<T extends RowData>({
|
|
21
|
+
columns,
|
|
22
|
+
data,
|
|
23
|
+
header,
|
|
24
|
+
getId,
|
|
25
|
+
renderLink,
|
|
26
|
+
renderChevron,
|
|
27
|
+
}: {
|
|
28
|
+
columns: MobileColumnDef<T>[];
|
|
29
|
+
data: T[];
|
|
30
|
+
header: string;
|
|
31
|
+
getId: (data: T) => string | number | undefined;
|
|
32
|
+
renderLink?: (data: T) => React.ReactNode;
|
|
33
|
+
renderChevron?: (data: T) => React.ReactNode;
|
|
34
|
+
} & ComponentProps<"div">) {
|
|
35
|
+
return (
|
|
36
|
+
<div
|
|
37
|
+
className={clsx(
|
|
38
|
+
"rounded",
|
|
39
|
+
"overflow-hidden",
|
|
40
|
+
"divide-y divide-border-primary-normal",
|
|
41
|
+
"border border-border-primary-normal",
|
|
42
|
+
"overflow-y-scroll scrollbar-thin",
|
|
43
|
+
)}
|
|
44
|
+
>
|
|
45
|
+
<MobileDataGridHeader header={header} />
|
|
46
|
+
{data.map((item) => (
|
|
47
|
+
<MobileDataGridCard
|
|
48
|
+
data={item}
|
|
49
|
+
key={getId(item)}
|
|
50
|
+
columns={columns}
|
|
51
|
+
renderLink={renderLink}
|
|
52
|
+
renderChevron={renderChevron}
|
|
53
|
+
/>
|
|
54
|
+
))}
|
|
55
|
+
</div>
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function MobileDataGridHeader({ header }: { header: string }) {
|
|
60
|
+
return (
|
|
61
|
+
<div className="sticky top-0">
|
|
62
|
+
<Theme theme="brand">
|
|
63
|
+
<Stack
|
|
64
|
+
horizontal
|
|
65
|
+
items="start"
|
|
66
|
+
justify="center"
|
|
67
|
+
backgroundColor="background-primary-normal"
|
|
68
|
+
padding
|
|
69
|
+
sizing="component"
|
|
70
|
+
>
|
|
71
|
+
<Heading3 as="span" color="text-primary-normal">
|
|
72
|
+
{header}
|
|
73
|
+
</Heading3>
|
|
74
|
+
</Stack>
|
|
75
|
+
</Theme>
|
|
76
|
+
</div>
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function MobileDataGridCard<T extends RowData>({
|
|
81
|
+
data,
|
|
82
|
+
columns,
|
|
83
|
+
renderLink,
|
|
84
|
+
renderChevron,
|
|
85
|
+
}: {
|
|
86
|
+
data: T;
|
|
87
|
+
columns: MobileColumnDef<T>[];
|
|
88
|
+
renderLink?: (data: T) => React.ReactNode;
|
|
89
|
+
renderChevron?: (data: T) => React.ReactNode;
|
|
90
|
+
}) {
|
|
91
|
+
return (
|
|
92
|
+
<div>
|
|
93
|
+
<Stack sizing="component" padding>
|
|
94
|
+
<Stack horizontal horizontalMobile items="center" justify="between">
|
|
95
|
+
{renderLink && renderLink(data)}
|
|
96
|
+
<Stack horizontal horizontalMobile items="center" justify="end">
|
|
97
|
+
<Button
|
|
98
|
+
iconOnly
|
|
99
|
+
variant="tertiary"
|
|
100
|
+
onClick={() => console.log("Edit", data.id)}
|
|
101
|
+
leftIcon={<Icon name="docs" />}
|
|
102
|
+
></Button>
|
|
103
|
+
<Button
|
|
104
|
+
iconOnly
|
|
105
|
+
variant="tertiary"
|
|
106
|
+
onClick={() => console.log("Edit", data.id)}
|
|
107
|
+
leftIcon={<Icon name="swap_vert" />}
|
|
108
|
+
></Button>
|
|
109
|
+
</Stack>
|
|
110
|
+
</Stack>
|
|
111
|
+
|
|
112
|
+
{columns
|
|
113
|
+
.filter((x) => x.show)
|
|
114
|
+
.map((column) => (
|
|
115
|
+
<div
|
|
116
|
+
key={String(column.accessorKey)}
|
|
117
|
+
className="mb-2 grid grid-cols-2"
|
|
118
|
+
>
|
|
119
|
+
<Paragraph color="text-secondary-normal" className="text-left">
|
|
120
|
+
{column.header}:
|
|
121
|
+
</Paragraph>{" "}
|
|
122
|
+
{column.cell
|
|
123
|
+
? column.cell({ row: data })
|
|
124
|
+
: String(data[column.accessorKey])}
|
|
125
|
+
</div>
|
|
126
|
+
))}
|
|
127
|
+
</Stack>
|
|
128
|
+
{renderChevron && (
|
|
129
|
+
<Stack items="center" justify="center" horizontal horizontalMobile>
|
|
130
|
+
{renderChevron(data)}
|
|
131
|
+
</Stack>
|
|
132
|
+
)}
|
|
133
|
+
</div>
|
|
134
|
+
);
|
|
135
|
+
}
|
package/src/components/Modal.tsx
CHANGED
|
@@ -9,6 +9,7 @@ import { ModalScrim } from "./ModalScrim";
|
|
|
9
9
|
import { createPortal } from "react-dom";
|
|
10
10
|
import { findDocumentRoot } from "../utils";
|
|
11
11
|
import { usePrevious } from "react-use";
|
|
12
|
+
import { useMatchesMobile } from "./useMatchesMedia";
|
|
12
13
|
import { useMounted } from "./useMounted";
|
|
13
14
|
|
|
14
15
|
type ModalProps = PropsWithChildren<{
|
|
@@ -20,6 +21,10 @@ type ModalProps = PropsWithChildren<{
|
|
|
20
21
|
onContinue?: () => void;
|
|
21
22
|
closeOnBackdropClick?: boolean;
|
|
22
23
|
showButtons?: boolean;
|
|
24
|
+
hideCloseIcon?: boolean;
|
|
25
|
+
headerIcon?: React.ReactNode;
|
|
26
|
+
fixedHeightScrolling?: boolean;
|
|
27
|
+
customActions?: React.ReactNode;
|
|
23
28
|
}>;
|
|
24
29
|
|
|
25
30
|
const fadeInScale = (element: HTMLElement, duration = 300) =>
|
|
@@ -80,16 +85,19 @@ const whenAllAnimationsFinish = (
|
|
|
80
85
|
|
|
81
86
|
const sizes = {
|
|
82
87
|
small: {
|
|
83
|
-
sizeClass: "max-w-120",
|
|
88
|
+
sizeClass: "max-h-screen desktop:max-w-120 rounded-sm",
|
|
84
89
|
},
|
|
85
90
|
medium: {
|
|
86
|
-
sizeClass:
|
|
91
|
+
sizeClass:
|
|
92
|
+
"desktop:max-w-180 w-screen desktop:h-fit h-screen desktop:w-full max-w-240",
|
|
87
93
|
},
|
|
88
94
|
large: {
|
|
89
|
-
sizeClass:
|
|
95
|
+
sizeClass:
|
|
96
|
+
"desktop:max-w-240 w-screen desktop:h-fit h-screen desktop:w-full max-w-240",
|
|
90
97
|
},
|
|
91
98
|
"x-large": {
|
|
92
|
-
sizeClass:
|
|
99
|
+
sizeClass:
|
|
100
|
+
"desktop:max-w-300 w-screen desktop:h-fit h-screen desktop:w-full max-w-240",
|
|
93
101
|
},
|
|
94
102
|
};
|
|
95
103
|
|
|
@@ -103,6 +111,10 @@ export const Modal = ({
|
|
|
103
111
|
onContinue,
|
|
104
112
|
closeOnBackdropClick = true,
|
|
105
113
|
showButtons = false,
|
|
114
|
+
hideCloseIcon = false,
|
|
115
|
+
headerIcon,
|
|
116
|
+
fixedHeightScrolling = false,
|
|
117
|
+
customActions,
|
|
106
118
|
}: ModalProps) => {
|
|
107
119
|
const mounted = useMounted();
|
|
108
120
|
|
|
@@ -111,8 +123,11 @@ export const Modal = ({
|
|
|
111
123
|
|
|
112
124
|
const wasOpen = usePrevious(open);
|
|
113
125
|
|
|
126
|
+
const isMobile = useMatchesMobile();
|
|
127
|
+
|
|
128
|
+
const computedFixedHeightScrolling = isMobile || fixedHeightScrolling;
|
|
129
|
+
|
|
114
130
|
useEffect(() => {
|
|
115
|
-
console.log("was open", wasOpen, open);
|
|
116
131
|
if (!mounted) return;
|
|
117
132
|
if (!modalRef.current || !bgRef.current) {
|
|
118
133
|
console.error("Modal or background reference is not set.");
|
|
@@ -120,7 +135,6 @@ export const Modal = ({
|
|
|
120
135
|
}
|
|
121
136
|
if (wasOpen === undefined) return;
|
|
122
137
|
if (wasOpen && !open) {
|
|
123
|
-
console.log('"Closing modal"');
|
|
124
138
|
const modalAnimation = fadeOutScale(modalRef.current);
|
|
125
139
|
const bgAnimation = bgFadeOut(bgRef.current);
|
|
126
140
|
whenAllAnimationsFinish([modalAnimation, bgAnimation], () => {
|
|
@@ -129,7 +143,6 @@ export const Modal = ({
|
|
|
129
143
|
}
|
|
130
144
|
});
|
|
131
145
|
} else if (!wasOpen && open) {
|
|
132
|
-
console.log('"Opening modal"');
|
|
133
146
|
fadeInScale(modalRef.current);
|
|
134
147
|
bgFadeIn(bgRef.current);
|
|
135
148
|
}
|
|
@@ -163,13 +176,40 @@ export const Modal = ({
|
|
|
163
176
|
};
|
|
164
177
|
}, [open, handleKeyDown]);
|
|
165
178
|
|
|
179
|
+
// Effect to lock scroll when modal is open
|
|
180
|
+
useEffect(() => {
|
|
181
|
+
if (!open) return;
|
|
182
|
+
|
|
183
|
+
const scrollY = window.scrollY;
|
|
184
|
+
const body = document.body;
|
|
185
|
+
|
|
186
|
+
// Lock scroll
|
|
187
|
+
body.style.position = "fixed";
|
|
188
|
+
body.style.top = `-${scrollY}px`;
|
|
189
|
+
body.style.left = "0";
|
|
190
|
+
body.style.right = "0";
|
|
191
|
+
body.style.overflow = "hidden";
|
|
192
|
+
body.style.width = "100%";
|
|
193
|
+
|
|
194
|
+
return () => {
|
|
195
|
+
// Restore scroll
|
|
196
|
+
body.style.position = "";
|
|
197
|
+
body.style.top = "";
|
|
198
|
+
body.style.left = "";
|
|
199
|
+
body.style.right = "";
|
|
200
|
+
body.style.overflow = "";
|
|
201
|
+
body.style.width = "";
|
|
202
|
+
|
|
203
|
+
window.scrollTo(0, scrollY);
|
|
204
|
+
};
|
|
205
|
+
}, [open]);
|
|
206
|
+
|
|
166
207
|
const { sizeClass } = sizes[size] ?? sizes.small;
|
|
167
208
|
|
|
168
209
|
const backgroundClickHandler = useCallback(
|
|
169
210
|
(e: React.MouseEvent<HTMLElement>) => {
|
|
170
211
|
const target = e.target as HTMLElement;
|
|
171
212
|
const currentTarget = e.currentTarget as HTMLElement;
|
|
172
|
-
console.log(currentTarget, target, currentTarget.contains(target));
|
|
173
213
|
if (currentTarget.contains(target) && currentTarget !== target) {
|
|
174
214
|
e.stopPropagation();
|
|
175
215
|
return;
|
|
@@ -187,20 +227,40 @@ export const Modal = ({
|
|
|
187
227
|
}
|
|
188
228
|
|
|
189
229
|
return createPortal(
|
|
190
|
-
<ModalScrim
|
|
230
|
+
<ModalScrim
|
|
231
|
+
size={size}
|
|
232
|
+
ref={bgRef}
|
|
233
|
+
show={open}
|
|
234
|
+
onClick={backgroundClickHandler}
|
|
235
|
+
>
|
|
191
236
|
<div
|
|
192
237
|
ref={modalRef}
|
|
193
238
|
className={clsx(
|
|
194
|
-
"bg-white shadow-md rounded-sm flex flex-col overflow-hidden
|
|
239
|
+
"bg-white shadow-md rounded-sm flex flex-col overflow-hidden w-full opacity-0 h-fit",
|
|
240
|
+
computedFixedHeightScrolling &&
|
|
241
|
+
"desktop:max-h-[calc(100vh-32px)] desktop:h-auto",
|
|
195
242
|
className,
|
|
196
243
|
sizeClass,
|
|
197
244
|
)}
|
|
198
245
|
onClick={(e) => e.stopPropagation()}
|
|
199
246
|
>
|
|
200
|
-
<ModalHeader
|
|
201
|
-
|
|
247
|
+
<ModalHeader
|
|
248
|
+
title={title}
|
|
249
|
+
onClose={handleClose}
|
|
250
|
+
hideCloseIcon={hideCloseIcon}
|
|
251
|
+
headerIcon={headerIcon}
|
|
252
|
+
/>
|
|
253
|
+
{children && (
|
|
254
|
+
<ModalContent fixedHeightScrolling={computedFixedHeightScrolling}>
|
|
255
|
+
{children}
|
|
256
|
+
</ModalContent>
|
|
257
|
+
)}
|
|
202
258
|
{showButtons && (
|
|
203
|
-
<ModalButtons
|
|
259
|
+
<ModalButtons
|
|
260
|
+
onClose={handleClose}
|
|
261
|
+
onContinue={onContinue}
|
|
262
|
+
customActions={customActions}
|
|
263
|
+
/>
|
|
204
264
|
)}
|
|
205
265
|
</div>
|
|
206
266
|
</ModalScrim>,
|