From a20fa1dbb6750156bf16677ed7583153666b86b2 Mon Sep 17 00:00:00 2001 From: Akshat Jawne <69530774+AkshatJawne@users.noreply.github.com> Date: Wed, 25 Sep 2024 10:47:52 -0400 Subject: [PATCH 1/2] feat: checkbox_group re-export (#2212) Resolves #2211 Needed for changes in plugins PR: https://github.com/deephaven/deephaven-plugins/pull/813 --- .../src/styleguide/CheckboxGroups.tsx | 46 ++++++++++++++++++ .../code-studio/src/styleguide/StyleGuide.tsx | 2 + .../components/src/spectrum/CheckboxGroup.tsx | 43 ++++++++++++++++ packages/components/src/spectrum/forms.ts | 2 - packages/components/src/spectrum/index.ts | 1 + tests/styleguide.spec.ts | 1 + .../checkbox-groups-chromium-linux.png | Bin 0 -> 15803 bytes .../checkbox-groups-firefox-linux.png | Bin 0 -> 27179 bytes .../checkbox-groups-webkit-linux.png | Bin 0 -> 4978 bytes 9 files changed, 93 insertions(+), 2 deletions(-) create mode 100644 packages/code-studio/src/styleguide/CheckboxGroups.tsx create mode 100644 packages/components/src/spectrum/CheckboxGroup.tsx create mode 100644 tests/styleguide.spec.ts-snapshots/checkbox-groups-chromium-linux.png create mode 100644 tests/styleguide.spec.ts-snapshots/checkbox-groups-firefox-linux.png create mode 100644 tests/styleguide.spec.ts-snapshots/checkbox-groups-webkit-linux.png diff --git a/packages/code-studio/src/styleguide/CheckboxGroups.tsx b/packages/code-studio/src/styleguide/CheckboxGroups.tsx new file mode 100644 index 0000000000..ebe8cd3c9e --- /dev/null +++ b/packages/code-studio/src/styleguide/CheckboxGroups.tsx @@ -0,0 +1,46 @@ +import React from 'react'; +import { CheckboxGroup, Flex, Text } from '@deephaven/components'; +// eslint-disable-next-line no-restricted-imports +import { Checkbox } from '@adobe/react-spectrum'; +import SampleSection from './SampleSection'; + +export function CheckboxGroups(): JSX.Element { + return ( + +

Checkbox Groups

+ + + Single Child + + Aaa + + + + + Multiple Children + + Aaa + Bbb + Ccc + + + + + Mixed Children Types + + {/* eslint-disable react/jsx-curly-brace-presence */} + {'String 1'} + {'String 2'} + {444} + {999} + {true} + {false} + Aaa + + + +
+ ); +} + +export default CheckboxGroups; diff --git a/packages/code-studio/src/styleguide/StyleGuide.tsx b/packages/code-studio/src/styleguide/StyleGuide.tsx index c2a24bfb31..89e396f75f 100644 --- a/packages/code-studio/src/styleguide/StyleGuide.tsx +++ b/packages/code-studio/src/styleguide/StyleGuide.tsx @@ -39,6 +39,7 @@ import SpectrumComparison from './SpectrumComparison'; import Pickers from './Pickers'; import ListViews from './ListViews'; import ErrorViews from './ErrorViews'; +import CheckboxGroups from './CheckboxGroups'; const stickyProps = { position: 'sticky', @@ -117,6 +118,7 @@ function StyleGuide(): React.ReactElement { + diff --git a/packages/components/src/spectrum/CheckboxGroup.tsx b/packages/components/src/spectrum/CheckboxGroup.tsx new file mode 100644 index 0000000000..2cfd701c8c --- /dev/null +++ b/packages/components/src/spectrum/CheckboxGroup.tsx @@ -0,0 +1,43 @@ +/* eslint-disable react/no-array-index-key */ +import { isElementOfType } from '@deephaven/react-hooks'; +import React, { type ReactNode, useMemo } from 'react'; +import { + Checkbox, + CheckboxGroup as SpectrumCheckboxGroup, + type SpectrumCheckboxGroupProps, +} from '@adobe/react-spectrum'; +import { ensureArray } from '@deephaven/utils'; + +export type CheckboxGroupProps = { + children: ReactNode; +} & Omit; + +/** + * Augmented version of the Spectrum CheckboxGroup component that supports + * primitive item children. + */ +export function CheckboxGroup({ + children, + ...props +}: CheckboxGroupProps): JSX.Element { + const wrappedChildren = useMemo( + () => + ensureArray(children).map(child => + isElementOfType(child, Checkbox) ? ( + child + ) : ( + + {String(child)} + + ) + ), + [children] + ); + + return ( + // eslint-disable-next-line react/jsx-props-no-spreading + {wrappedChildren} + ); +} + +export default CheckboxGroup; diff --git a/packages/components/src/spectrum/forms.ts b/packages/components/src/spectrum/forms.ts index 584ff2bc9d..3663bd47b2 100644 --- a/packages/components/src/spectrum/forms.ts +++ b/packages/components/src/spectrum/forms.ts @@ -1,8 +1,6 @@ export { Checkbox as SpectrumCheckbox, type SpectrumCheckboxProps, - CheckboxGroup, - type SpectrumCheckboxGroupProps as CheckboxGroupProps, Form, type SpectrumFormProps as FormProps, NumberField, diff --git a/packages/components/src/spectrum/index.ts b/packages/components/src/spectrum/index.ts index 28630b2da9..6b4f5a84f2 100644 --- a/packages/components/src/spectrum/index.ts +++ b/packages/components/src/spectrum/index.ts @@ -26,6 +26,7 @@ export * from './picker'; export * from './Heading'; export * from './Text'; export * from './View'; +export * from './CheckboxGroup'; /** * Custom DH spectrum utils diff --git a/tests/styleguide.spec.ts b/tests/styleguide.spec.ts index 6b9ed4d958..b444f4d3ef 100644 --- a/tests/styleguide.spec.ts +++ b/tests/styleguide.spec.ts @@ -47,6 +47,7 @@ const sampleSectionIds: string[] = [ 'sample-section-spectrum-overlays', 'sample-section-spectrum-well', 'sample-section-error-views', + 'sample-section-checkbox-groups', ]; const buttonSectionIds: string[] = [ 'sample-section-buttons-regular', diff --git a/tests/styleguide.spec.ts-snapshots/checkbox-groups-chromium-linux.png b/tests/styleguide.spec.ts-snapshots/checkbox-groups-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..6e8e7e9e03c13bddee90b248276f07ecc60fe0aa GIT binary patch literal 15803 zcmch;XIN9)+BMAHs9*s>K?DShNNb3(@>Ikg z-IO>3Azqhj*S?E_W|Y;7H(oHAZ3{%tBvT>4G+jtQ|Qrs0hd zH)Ja3H`i&o<3(pGpaB<#tkjLmY`xk-Xm|6)iMO6j;I?Y0tE;Pa7}Fy!vzd3QGtqKS zN=eDn8PA^`=|x%;T!X&9b#2iJ&Hwx7CPz1)+1gIjt957hCdZaMo|%{smzIVscgDCZ z@t>ev^gTU2rD?eYn3*?>=xN>X6XAZB@vz0c@e_Uu(3q#f3Hqi^ zo-=aX#WL2J-@>}Ax;kH{P7B!;SC3n+e}0&cCQQV!$aTpDUt!BuNBq+4X!-Ws*4Fl! zjb?e4cDEj%<5aB}VKv~7$Uk?g8!y7^BqK`aSIMn)^xBNM+(G3Nutmyh3D zXsSetZ%9dF7MGWEN8}gm@;2{FNHowEBuI#fU4W<~#4BK9%mlL2POeUMbv8!f{grQJ zCYV9Twh$X~C}{k13XIynr?+>>N2+^pP*9p5-h7~xAYkHECiO(p`@niO9q+bMf1G+h z4iVQhM025S%Bv!aW)DBOFiDtt_ML{|iu>W41Ndi!irax#3dLZM)kMLf zCA`CJIH*~o0pHsih;C6JoZ2O*=X8Isv)1gUWRj>nC^hW-z^2x#+5&CiPsL4_;Y&Iq zSr}Oca|PsG30W{(+m+$Ydp_z1S(Eu(+4KjP*MSsLBMjJ~t(=aCwC|PAhIW@;B{6pm z4wgGKh-gvB6@^H{_Sbfh1(P-FwJ@CHgt(}~jJ1;!9V6pp1q_j!o3LuxYb=x^Y!yiL zvqmjttnjo`u@|fZc*z6|`kwUoa<uEp=U(SE6B^c+mDTZ8GtWaJz5#w{zfyz zYrKPxSocGXa^A+1?J-HZMp1pz4vJ(=m&=;2B+QxG+3{??3tH?;PiT7m{%gd##N_wy zdzi7~ckJORv7F4bNbD}E_Ek$Z#~Tg7c#}z#drqXdPJyXfrY6Vj+vm=lNtN>5-$c9T zq!E|?T#+{zdHAp?IrY`64Y0BFv5DEiLFcx7mVBL}TPQxgMuSQBqUmY7%MABr3r4cn z4Xf>w*k%RzO&e=7kVaTszOG-1Zc6;Te5A(M`1tr?gT<`!xa!Z9#g&!CiS10vt4+yk zurHzo-pMuAqxhH&=zA>Mz9;c*YMRL+T&lrf`}yGH2c+`;3SKF*okAhvKyVrdhxmtv zcGt}Eslqy9V~8K^RS~|iVnf_ycCXevn2+vw-W2r9^tiZ@&ksrC;WetZqQb&>`vWS7 z?B~qa;0Z#~;U*1k*PvNhS%t#M34#`OcB^yN=;sTOlo9({-QkQirXDm-%@getBfV~z z^0s|SfeWQIHFiVQx-snG=odv8$xS%Z5!_6{M5Yza%Y`m| zPwa3J3r3KnBg z+ixnRS7KzhY-ypZqx>)f@~l9wxXEqRU9ic><$H-1G9)HPJyqygNJd3KK-(Zo zlZ&hCH;ikF$f^6UtpWdo+8tVM*UbSnZB>``m8!xJ5a`xgJLdzaI3f@Rgx$a}CizGv zT6$_RyY|%8v62FZ5!BJ1{b*wz7}H-|S34q86038N$c1v2rV5Wz4MoN8rSO>k;F$B< zuV{I6Z%Dc-);U{9Gm6~i73w*jgXC582Wu-t-mse}RO(P)_c*Czy*XD#^$8YPtgfz} zmzOuodop@ZI59r1B=gdB{-`%c1JN{kauE`%yl`-SzOXQqKNY>)9B@%Yr1~Z+W0dtwH2k{Iww~Rm>#pfwFSQa7B}q3D?=_I$x{x zWVg#K(n6v9|=WQVnNK&EqA7BEU-YJu7HZ_N`$oamUCAi_ntcT4a7+|Z5 zp=|G+(1uzyrqfs0lxtzb>XSu;&+xWTIt^uI2JB%%U_s;Q@g{m}D@Qw9&31X@qt=45 zhvRJY#PR;-`ttHk{{#1d52VMGis8?mX=otC&CShY5)%_`*hWY7b{G4rN=s|~W(lix z7X{a^GGCKEsfZpJ7#Ku}-plE)F6TA^&pk@Va_i@%y01T<`*=Ed)ZSQkF@j0TG51H; zLII-){`uxp8Ry~mnFD8V7H}CG=ErY(74@X@JFPf~p z0zGp^QY7mpDObyjtjC;|J;|nBbvmxDd$GaVKj(kmTiH2J3nUBSZ>|p* zRoQa+*WzYG|mYKGvt^?-+`U~X;> zWCsf)B_p;qWkrEotha`$YYs~5`Z4AR;KBRLxUUs@@>y96k@F#%&-8Wc#?VPxC8C{9%FHoU5G9fn(LaNYhu z_57r@MBLS$!{4BCtD*3gq0yqHfYw7*Rn>|8jz3B~dHuiq@QZw5-!snX%xLGF3N(9#7C4l+y|U8Vy3 zuJ?;9n!@SI$3bF``{D-9droP_Fm#yykp!>61TV;#%3iJv>6Fd)T$Rv*G zgkL1*U8*Tp9NR=zS^w~0gyY9YM&!uL{AS^-m)#V3AV1^`1aE6~PB##$oQ9OVrOZc% z>#-}AZvMtK8=%YEoX&DkDAd)pvZ$y?K2t;}UCehM*J}*Jp0>8NS)4X|frXU7Zz_p# zIr?5UKdux8=H!8+<^@Q)v@biVtg6bFajCQ#9^NwXz42h?21`OzugTlD?~pmvKHnJII!>atpILu8|G$z9^Bt`^WT^zmU=c@gM#@8ZQ!*OXhVtd|mIl9DZJJ}fUAU;=sx z2*U8N&N^Wk+bJIr_2EP3=#9u*HMiMsUx4(S`qdj(J;yG!C@@KQOG--vY?r@H7M`P; zQt7+I!X#1Ur(!|eF7$c+RF|10qh?}x%=R5pALYQd(_n{}c_^8;`YJV?%cV`MTwI3i znF$$$mN=PWhI@{#NrDzl*QHh_ovxwvyySR8$RVFH%}l4_qPA|mqvd)YuS6gerPx$q zoD3MY4_^XY_Wip7SoD{TMR3xdTWd-BW^=f?)6hc?7Z=~6uJCR!uAyGkE)dx#fe&EV zuBrn4;-sXck$jWgckC=a-^=U5!+Q^c&GK~e(#&T=z}!czkl3dW3?W#BjH z>AC!0dXyAB<}5dBd?m&x=U7%+8FlS?OG~rhdQ@zz>&Dul+(q>IEN&=q`8q_F@CSZI zo(=T(fxG~-O{r7AG{hfddxbQK#UrtesY4C#2NhP2`t{wLe2)h9qOWfiEcG1yr zf2-!K?Q!%bQg59u^03Ks`$NX|#x!h@j|ap2C;xWt?x(x!^EX0hxCCu>JOiMwKu%Sm z6W}Aj16+@L=OFLOwcEe=H6pEQg&jt3r^KPPDCMI+eBegixrg`bepOvvjoC2sMjBO_ zo*X)6d*wdOew%*g@aRYx-EL=Lfi_T4)Hv-;=OEaLVrJGI!ZUb&)IY{2GU>x1dqHtz_aGHLLAg0zj(S06z5ozOEf z@z~Y>nrxl1Y$ZB$m@AJplC6%TkPvFOt?NZ~#eETU#rX zmS^;1#!?p7)p}R__mSR(uRqKO9WA=!ql+I*qBkE{FB2N}^SnYW9UY7N5giVbM>${` z(+CsQb`F-7db1VjNTfw;g_SZgxS&9#Vc#LUKhbCswJ&o_==?t3U67%k6B#mSWJp_N znt5c^612B6?LufG<>KN>8l|G4d0{wQZiKbnr`*4Q-1#(%bRE&lHE1%b%K!00BL>?^ z%M*{d@8yGK7zv>ATc2|KdOTa1Sqos=sz?zpFE4|)*NUrmkx0EFb;ZO+Rd#RU%GwiU z^1D`}QyqW2(OR+{nLV~`z8?T3Qb`V9b=3XlUWqhu51l+6-F%(#8V|INi(a}+iF#}A4ogqfI_SXtAN z*&*c%U15weqnQy6R6h}~(X;oiOqretd~ zqopG1(aqvq=X1DHJ20QqpSn0_JzHg*P&{3qwVpGE*__4cbJ7e(wlo$; zMMZU9&FM3{-w$G^RS7eIzlsgm_Hbjc(it4DDo-BnYPQI*2v2>}&KVjh)ZJ}9yl9wa z-MfMSAw)M%tE~y|eSB!z7`ymZ6w*2|vU-k!K5;{Ac&RTPgl4z;d0Bbc2o{O$$<3w# znxU+Mhb2P-N0wzjxX3LnEn{+2b-3dokPI}Ty6qd^{rd;~GS#?^$pW7MXDOKP&T95- zmp6gx-Gl%ai8AYlT0^_L;1Qiq%H)bpgYB zx_pS8It0Yd#kp&zxQJ2I5vT?A4h^F=j83!lc>Lfdg_D|^8tbiFy4u zPf*V5#}?gYcCN%&7J)~bRW>>=*lwo#PFCAZ*DB2eBw=W1*w)r|mh3D-!s8jPcsc`; zG>c7F1FRY|lBp31D6YtsD>o)rD=$4z2IYL%HG?`XF|CU)bJ^55+Fu@@u6XFn!J!ZU zrDnL|y)hL4g1z_iJzT(^I6gJWWei_F+C2FDsE3R6m}1nnDo_oLuOA;9DKQOk4W6w4D2c4A<7i7{n%q;Y8|UI>nK(4Eo}QZUxy0`rDtI9-u}73*ONIGoRKZ6)A7uBb8k0qW#d_OtEi@)~SydAlRhY@0L>Fp}D3k23R|{d5XR z6B84Adk3(ZK~i_$M8lT)P42&H=3p1cZ^k!ii6}hV>TPb*NIz3$Gdc0)3xu70aiYpD z#c$escd=L8ZTg`6ZE z7vd9|jjU{|3|V8z zle*;C#Ms$|-#=>8o+o~PrA%o5PdEQtTmO5PaymM)@G)ZZBwoszDBJLpV&XGMc4+dwBNhCtYNZIkg9-MEzXSc3t)v2#G#&0lkK)|*i=o2%MZsvCpr^P;&c0pl)K z5zNQP?dEdvG1$nAgzGPaDtf0$jFq&fFAKH18>1$6`WlI?C*@j;IR_^D3BbuZ#adp! z=vcY+i(?ZLJ@d|o%z;(PQO^ouw)1!=HlKKS#T>|jx#Q4 zsd9`{^_jhSN_A1TYRU=DtfA@HJ#Tnt-6M1bHj01#D-l2oi``4U$JkfyuT1Ya{jeL` z7vHgf&wS&_5fxqHu6RQeqGXKgPF9ZNK{_a@sW}W(>S}3eIi`cYkq{7rUHQu&EJE=t z2e@_NrzhW)xa0C|cG<=5N7dDNA(d%m7)4}}TBwaC-2y#4{BV%4aVq-aTj{o$nvkgI zJ(NHTsoh%q@xGG*nhWSCCe*C*6cVqdtN^G+)(mC$2-yqX)r?@? zl}m9i8cG*(cxD5{!3e~i>Q^!C5XiHR2xi#A+(>oxQa{3JxHcNd9rGQL1-dW+L2hn# zcKJ+A6{h&pt!WftqsX8MFv|v~lEvN>U-73eCs^$#%SJjoHOYSf2J+S`bboUa;W&80 zav*VkLeybYh@0EC^QVPXf2sWKlnSbPy-0mq}n&QHRuF9-JX;QIt z(?@AU^-tQx7Lkr8B_)+&942_5rk?srQ(U^#W9wYL8^q5WbB*!%33+su$`vSJKsHrI zkk(Ia7ZEak(y+xRdHp}xX3vlX`QX+E3#By;)rJA=#coV?kG3zK;>j3Cog_W>8>7*5 zVEGnuk}^w0M22oomLyb#S8W#qZTH%h8&f6yuR#YRPo8H{eF7TWMY>*zS0}Q#Vnh$Y z`&qfEjMvX$kfkeO6fAcO0gG%2j7Su5lMjvWm2h8)+9(wf5fQf4k#XOX&E{|z+*i7pfwIz@zbc3BHii>eg>J89^>gWq(m`YcE-du+ z_SQI#U%SQte@c)6Lqx&gojomQk-zdSV>%GaNXmQ`ywdSzT7$Ix_^s(@>r8937v!w1 zt+P3#{5G27X9?uz&tt{5e`d*7+DxthSYlS^jQv7Npp_|xFU&bOi~yvYChePTimHdc z7k8WLM@Zz1$QM*F`9FUSV9#xov|+)>irY~bQ(vm|?pU7*AabLHN1g5M+10S#O5=-t zC(Eu!6li;&D+jVRpMQbar;q;Z3J1|vT=Cvw*_3L)Su72M7$69O z=9Bw=846?RZmT0Ulf~GdY@zT|OajHKsKpw?)vK&1MRj#O&RFPsG93Qu)vGBr*40j% za3F8#jp{|R$f!4{08yTgmv50TF(vr}xBnf@Bw1P6Y>C3=Wz-T-0|qamOa;<}co@Rv zi}a3DJe?7?C08@=ZB zr26Ycon{L4(S6_nZsKW`T=N{<1r=sZu7}If<^_I67}$?bxG(R58ZTS@H4fW9znlY{ z0t5yL*y7YuX0taIQ}?Q+Wc>V><|?Z9A<-0b|C;Op`elw6%$(D#RC z0<~_teFXJb`1oxhAt7Pmk%569Ky!8yyy9CfopRXmSaXG=aY z%+q5CeiMW*tN=l+$($`P++CF6JucHejx?^aZUDRnQyu6Zxa=wpWQr)l`HQgRVhy16 zVeLevtp^V%}FekUIa!?J^BY$-?JRT{%a(mjNctn0OUsx+B z_ScJ+iMKY_G+MeX_nh6`^^)@cBt>L7@V?%SN&8Tai5p7M3yN3|p%V~s?>UGsGH%i@ z%8ynqzZV4-@HuG?b-g?zr2V*{V==##I->Xcm#tty`2I1DxzG?l6vCok1q4FZA!_ha z{#0G@MMj0D4WEFrOr~&bRAq-6Zy=y{%p zhXfXhH)<>nkQ~_bkxY9lImycE5x^Nk1;9Ul_EyFXuFy}N#AwF3Gn!H znzR=^>ex?87vdF~8tHB8?9B5C*rD(LIg}tIZHh$ zsKuPPIBxw*l$4#GQLAH)VR+{!3*5S+_;O1OZuWeD;Qib8Q_f~djnyOIO}JTnTtR|H zvfwjw%Nj8xsM!=e=FDX<3@-{Fw(4Hw)6>&y*k3zw-pegAuD0+V z1i?vOGIXla3qJ=zSW0$JOL#P3myf#J5o_z~R;p=yzE}C?hzrV;OJd0G&huYeb06ox zU{OO)Di@aoExKG!Yh(UeRrhT$2dVcBOW;y0h!`8jdtkV{_rFCw21~t71#N=HSOHnl zM%&8Lmm4gqaZQ~PBi0TH32|`{eXaV_m1J_oUBAzPw7)RndAYDJdBhiJ%J} z{Llv44h#HAy%la|q+l%DVd*NE+$iIj<-z;Jq6t!qlO}MM64ccn6vHxUAtX+Z_E{#$ z0jfyt9NnBE3ge#}{BIH~@eka8SAR)f1pU6eO~93qkTBU0y#W9AU;nF19gD8`{jIIX zcEj@Ga&q!OIRmI7F(?4#R?g%(^A(4|JNM-JANUIw_<1vuk%31)%K@^J=&6G)s6pgT zOHJ+OXGz|ge6tkpgD@o{Q-F~L)wsR{eWY>c4wq;3H>iJ+6s>OF9uZ%U`jD50nIUZe zBD#1bo>N*{8n@Ep`};Xk@8?%v&AOL76~DaGZ>bkM!^v5xUJuP==O zNgKizgTtbn1SBQXq_4DX>%NRfvGK7>@eLv!Jo}J;mKBuar37zjF(R?K^U)0o{BtiP zwrYC+Gio1X2feMD5Siy!Mh>>N{;KMG?&xR=S>Y|mW~@Exf%WES@O!v2-2XW41i2zSlC1@d}v1MIIM3CFHr zORNNz$5H+9y~a(+cSdKL{I~a;6{|`8Cja~wH0w68|L?$&PuP8B>Mkc|t;Xi*n@G|j zrkoCrY3SQ`$5{H8gc*FaSr`qJhR4+Y$0skKJuJ^)V?d%+9bM(nNVQdb2z?J!o8IKR z9D;&^8s~uL<+Ws7%EM)pt!}SsZ?Oq#aS7HrJX|RsZmV^?ppxJ;(@4+Edyfh8PuffL;{r|w`lwm`DAn1`g&L}p`*>z*%4ap+;aSEHvV8*3MTb6SSfxi^ z1|xUKDk>0eH~e+AC#eEJGVr16Gqe7l`(vS7KY&Wu4kh#SDPhoJikFW!P8pep35~HF zFR4*U)4^zPk(RjeW3=?k-p#a=&y{dvfyAF*Z|6XTLc zbjHy9S+_4YRiOC}hT8yDWsW(`2f!`BIOcTjjO4!UFWMV4y#CgMm1UWk^R*@Iz&a4i zqpwaLtqaRwCB~co20GX*aQthw7L%y`7aSp3bCDRs-o)GSK*1*FKQdLGbjJK-E0L%0 zo2>K#0F_mqQlC2xxMS*GY?oh77P zE^Vh@5+|}gj;d+0LIHOP5K4hrK$(*A6y)W0jq8)h$qwlIj~oxX<4<1#o6!_AQ6ai; zt8LA&LYSeK=U7f&-f^~?RYSRp)uh2Adg=47{1=3&f&y8ZI$>@69)?Ueh>~$CtCP$` z+@n9?Ik-8hBNpBSH!2$S%*p-ADPx9i{c>KH*shVb^htjxbM z7n~NXpVyMvxu#X}K(P8nT4f{!|M?wY4q!=Ym+g2`=j=ApB@776P6N?X_3P~4iqVhl zUU2!3MDxGOCjTWX{r~&1&Y{VJCNAyj%AlYiqfC)O4sOA&v9U42mzEm{xjY@v?bdeb ze#>JCR;TQ-_W~VZ%I`G{Dvok$Uj3DPc1)<9iFr!cE8*99yj7&mL|QDn4HYO#I#PB`@v#N0QlW#0u>b-off#`Kq2>&^MZ14a4_H=#wce8PtRJaPflp*KK{Ooi+nw{kJK!N<~)tE8y(0`Gm zybsMtfgQm1Tj^=mdF`M}43Xjs=ysiE1|(7{iw@w|X!Y$bAQi zYH^}#%}1TZ7#K-TeUF#=QhY%g(CR}PRa(!WXLB9}QigGpI8MF z_Fkhq6eo__SG7X&1$Ly?c(w`Sy?Yg*bOQ7Yz$#box~)uTLP&eg$=LO&wmg^9TUX?n z8<;<+Jpcs_!%2f22Nt2HTc^H+R2h#Z-xT$knHeqfoIa*^Z{Hs8ZLl2Nzcc;H+h>sP z_WfEj#2+9xvmCZ5LS%ueevLobb4S3#7Rn4GbF1zyB6&|VzlVoPYkgB_<=WH7(H{J20*Z60(` zT-PQJsRYz;;jlLP;PJ^T#7A738nf34cJ*+Tr{q+zj%>Crj)?K$e41DLaKs0(_-}+QJ7011<>2r#AltM^L%W;OJS45YkPTJ?&I8ARCF*_8x9y%H;q(pFLc9b5VV{n z)B@bgVPeaep8}v-lEX-tzq7&zex>?+ZV>tb4XJls_W`U9PJ zaD`Q$uQYd|J|dk_^d#A44&;?_8B0&k1JR4u)DU70C#|o%QSj*rLMdo@N7IXsF4s3ERE{wecv+xn{{bQuX_3A6OVpz(~mmP;^U7mZJumAPRg}+Z~)2@ zFwlH#3+e?tP0-$UFsn>I^ITtFpII0)J)nnJKeN0FTLmLN<0=D`yPR)-J#f8M*^aGD zqQ{gFF@s$i2G)SJh5}<9aJRU)za%4rSuJTPUqym_++MU#={^g`^|Bb(93GlhRuMl7 zZ?1tpY+lj>BiL)SxhYl31K8;8+k0c-XvgXD-crogj}{iU4V?n_B9L9xlJ57G?nLQI z41#4>Z(rvO9C2ke6+`lNku1B04cpxV>{|PB3mn>)c*{x>OAOvDOKd&=5(AUR*>((uF2*{)lm}53Ws9vZS=|v*$S6db(gQyCG z4*lXMCRNUA-(o(V6cfweUT=OAr3dc6U^X|vHOcs`|5!@;KUr1zx0;JCoG!|#E0%Bl z#}7c9!uNth!gjD&tl!q1%d6fBcTk{HoL_%6-1@cg!|}wfo(fu|*#N6u(v{n!$p+Fg z$=M{38-y6bsh(p#SjZoR(MuSu>?@Dtqeb^BzQh&ijIQok^`)9@&*#6lqOQ}o{}IzL z#N(eR==QVPVG`KNWURtLD-Vo7V(gOp@9GmCnwvD2FXPyIll_CFdJS2@9Z?a)oHX!W zvqk*|&hWHF8M9u=bq`6$9cO#6gs8He7Gz^vSi@Az3K*ZBcshX@>W7mq`Rkg%>JS{(PloJ6; z>Zaf2lSW5h5yr_XOzse72lhMKyd;M@af^!|9aS;12-*060&L|vBm*LzR_uxy94nc= zGegcwxhC@xgzLR}lVcIJWcVHUR90f*@_dK-i=1d0K=NO!Qu{l9>7p%wAG{i0$_(5D z1nrYzG{1=i0Y8?WBI>j;Q&r=Ho;f`|1+pFmgQw&1yaq}gQ5HSvALe-~*|(*GT3)`M zrp|KZ%B?D^ioZuQ_9Ae>-QDkg^)8TdV^327rS7-$3o{q>6w;ckYsbgi12{_7*ebAB z+S%ApGagG0wV(WktTzQhR&?!tc~Bf?+Tr*a!WZMFfsw1mX)>CF7NwnN3I>|y1v{lX z<)O)=)Ax~)0;ZolfdMS+_d?&rhK7W7wbaj0s|tW0UJwMRgNTEp_}~h}T=060${&1z zD(%Dn%a^%34J3^z|INN6F5NRcP*3A2sj2Xsn-G7aOn2PN{(=xoCmuxIrxGvFc9WewTVjGA0!-Vi;IF}_h0s_7)-=m^xWAFsfcL&U zRc|plw!0L|t1EaMerO^Mn!UjJmg+(!P(t&CS9E#CfPT*M-DB<)b0QqfU%+*I10~oEI(+@X? zCjdhG`p>S`FA)S`g$);6E}#E>*kWO{bb2~AfC^}P44A8QbhtgtkU-N7G3&26z$L<^ zMgx?1X}29$5k}x(I=OZZu&CG2$ei|!kCQbX1VHTgczHt%5}ok#xX>oLf4s2D{A2Rl zpmxZ?p^nytJH>2Ku1ugp ze@vrbgkke4E&amMYJxs3ajglI-TF&AGoU8U>p#z~Jo>LkS^noQ^H2CmHnRmSRA8Q- zxx%)rzMpPo`uO_dStNT}>Os#)zJyTCT=Tf>G0#Ob`u-)d-2#7~W7G5B(z6y~fV2*> zb%*WI-*c}V?yYUYAKh=bFOXPsNB<%*a1@r^@_*a+Wx%wky7zmr4!4@B>P{x{ej0Bu zu-23A_Un6^9RLsdsq-7<3VU}@CfF^-q8!-bREMW<$|!?E8*e$y{_HnDu9qVmtn;%U{jPa$F zi8W6hZI$z>nq@7nP*W!bodr|=`%zl}JGM(?-OeG0Ec&75Mtda$jI>P4h#=ubz)di2 z2R}8Goy(z|S!3Dxbcm&>Z&YdOR#sLXLccuIhly$|G!O=sZa_d_Lw((SF|oLk$I|no zpFe+eUg*96QBHWZ`mGE#oI8f`*qoSb&=3IW6cC^z?51`Jd|Fa~h(6BJf$ck;J`Dqh zNE{~`;agD}_W)}13I&$RVkrsq4JlioLj~>w-$SajuXkVLxEa|U{{cTBDQ^iO zrmBCMX#NM0&%Xhozb`cxJpS+$jpH(&XlZ#=q{)aOZr0V+Rl?k};?y$WMBt7i62Rgc zM4GxOLR|T^uv$iqhfwk=`Spz-r(KT>4Gesw{Hk$iGWU%ma5`bSuwE_gZkBzO zxa&m_aTGw!lDy2dQ;^lSJ&cLZ?Ow5Okh^Za9^Umc)xCQ|rKMX>_=qf0P>u@v(8|gQ z2Q0b8K?Y`OV$>l;MJ(Y8^dMEb+O}+}-eF|GDzHD6mHRmp|X#$8f&}_>h9NDEc zv-+?UWB?L)SA^9F^i4jP9dI;3k5D;?YnI!5M+Pik*PyYyhJ(QVHuJVFk1G#Kel<=> zR`!K7G3o<8c+@rXz|Vjgvdj2dA36J;-6B87zV961Bt?6rA#j;F4178SfoP;i z-(zO#?7!4*BZm3dzeCDR@{BuqTF88GU?*gu;OG2&oU%Ec`wSY`wNYeWAQ1C* zIPr|$Z%77c+J^PlZOOvlAe#mUZaq(V;TlxPX5#z6z^f^Jb3n4Y;&?b5lvNdZO&fvl zS-00n82BX{pVSGmsfdph=yQM|2ZE1j&MeB#X;T^{DLDle%nDc}s3XHu5gzb%GhT(D z1zAz+S=MR0sQFT;7&W1aVWbl zR=m)(u6=6C6@&sVu1kBk1>gEG4||J-uq z{!e0`WFav!Qx%f`aCimey!5yJRJP$0(=AdZ++cr_m_C;ycM6ctq=xdEl=mni?wTv8 zOq+tLf$QcQ6LxlXrU^I=3kw2f0e<`-+khGhnfuoY(QFlHW6tDr2-Sr@O5{y*)YAp; zi4q0&CI86b@1U?e>R>!RISEb$Iy^z!0GDX{BoRrF0(kW%&@{cmvWHKr)qWx@PZQg5Jf39+CJ30( zLWc{nr?21ORT5rRRF(plZFaVRbdO;b*a9Tyd=z9KE`jP)Xo1S^wO)TJW#mq03SkbQsMWkc=%_+wpdZEbxWCB2ZUw=Fm}H?mU21D@dG z!sGDlSs6G0dvM^1+*zPa2j1!4O5%$thB}3Cerse9uJzcQ0sitona`d9c^bHn9(*T){<1xh=7fHK;`_@uKZMOXU8)sL0<)?|%{l?)u4cb{sQj+Sq`;kSNKi%N9eQ HzWsjyq8d9h literal 0 HcmV?d00001 diff --git a/tests/styleguide.spec.ts-snapshots/checkbox-groups-firefox-linux.png b/tests/styleguide.spec.ts-snapshots/checkbox-groups-firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..8759cf8fe6eb011cb5c22ca6886b59f2e3cf3dec GIT binary patch literal 27179 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 literal 0 HcmV?d00001 diff --git a/tests/styleguide.spec.ts-snapshots/checkbox-groups-webkit-linux.png b/tests/styleguide.spec.ts-snapshots/checkbox-groups-webkit-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..cbfacc3df7fe8586ca80469be1d61c4c6532083a GIT binary patch literal 4978 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 literal 0 HcmV?d00001 From a6def70cc076124064449c9177694f6451cf0dd4 Mon Sep 17 00:00:00 2001 From: dgodinez-dh <77981300+dgodinez-dh@users.noreply.github.com> Date: Wed, 24 Jul 2024 10:15:53 -0600 Subject: [PATCH 2/2] feat: Export Internationalized Date Types for DatePicker (#2170) --- package-lock.json | 14 +++++++------ packages/components/package.json | 1 + .../components/src/spectrum/dateAndTime.ts | 20 +++++++++++++++++++ 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2622b62b4e..73ad2e10d2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2749,9 +2749,9 @@ } }, "node_modules/@internationalized/date": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.4.tgz", - "integrity": "sha512-qoVJVro+O0rBaw+8HPjUB1iH8Ihf8oziEnqMnvhJUSuVIrHOuZ6eNLHNvzXJKUvAtaDiqMnRlg8Z2mgh09BlUw==", + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.5.tgz", + "integrity": "sha512-H+CfYvOZ0LTJeeLOqm19E3uj/4YjrmOFtBufDHPfvtI80hFAMqtrp7oCACpe4Cil5l8S0Qu/9dYfZc/5lY8WQQ==", "dependencies": { "@swc/helpers": "^0.5.0" } @@ -29206,6 +29206,7 @@ "@deephaven/utils": "file:../utils", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/react-fontawesome": "^0.2.0", + "@internationalized/date": "^3.5.5", "@react-spectrum/theme-default": "^3.5.1", "@react-spectrum/utils": "^3.11.5", "@react-types/radio": "^3.8.1", @@ -31652,6 +31653,7 @@ "@deephaven/utils": "file:../utils", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/react-fontawesome": "^0.2.0", + "@internationalized/date": "*", "@react-spectrum/theme-default": "^3.5.1", "@react-spectrum/utils": "^3.11.5", "@react-types/radio": "^3.8.1", @@ -32662,9 +32664,9 @@ "dev": true }, "@internationalized/date": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.4.tgz", - "integrity": "sha512-qoVJVro+O0rBaw+8HPjUB1iH8Ihf8oziEnqMnvhJUSuVIrHOuZ6eNLHNvzXJKUvAtaDiqMnRlg8Z2mgh09BlUw==", + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.5.tgz", + "integrity": "sha512-H+CfYvOZ0LTJeeLOqm19E3uj/4YjrmOFtBufDHPfvtI80hFAMqtrp7oCACpe4Cil5l8S0Qu/9dYfZc/5lY8WQQ==", "requires": { "@swc/helpers": "^0.5.0" } diff --git a/packages/components/package.json b/packages/components/package.json index 65b10b928d..8c8fee305d 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -31,6 +31,7 @@ "@deephaven/utils": "file:../utils", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/react-fontawesome": "^0.2.0", + "@internationalized/date": "^3.5.5", "@react-spectrum/theme-default": "^3.5.1", "@react-spectrum/utils": "^3.11.5", "@react-types/radio": "^3.8.1", diff --git a/packages/components/src/spectrum/dateAndTime.ts b/packages/components/src/spectrum/dateAndTime.ts index c866dc4486..4e4c164be7 100644 --- a/packages/components/src/spectrum/dateAndTime.ts +++ b/packages/components/src/spectrum/dateAndTime.ts @@ -1,3 +1,9 @@ +import { + CalendarDate, + CalendarDateTime, + ZonedDateTime, +} from '@internationalized/date'; + export { Calendar, type SpectrumCalendarProps as CalendarProps, @@ -12,3 +18,17 @@ export { TimeField, type SpectrumTimeFieldProps as TimeFieldProps, } from '@adobe/react-spectrum'; + +export type { CalendarDate, CalendarDateTime, ZonedDateTime }; + +// This is the type for the DatePicker value +export type DateValue = CalendarDate | CalendarDateTime | ZonedDateTime; + +// This is the type for DatePicker onChange +export type MappedDateValue = T extends ZonedDateTime + ? ZonedDateTime + : T extends CalendarDateTime + ? CalendarDateTime + : T extends CalendarDate + ? CalendarDate + : never;