From a555d591539bf6f6623fb305d9e485d2eed9bdf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aldo=20Rom=C3=A1n?= Date: Tue, 10 Oct 2023 15:06:48 +0200 Subject: [PATCH 1/6] fix(tracker): Correctly extract pathname --- src/tracker/index.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/tracker/index.js b/src/tracker/index.js index 491eef7d..4189abf6 100644 --- a/src/tracker/index.js +++ b/src/tracker/index.js @@ -43,10 +43,7 @@ }; const getPath = url => { - if (url.substring(0, 4) === 'http') { - return '/' + url.split('/').splice(3).join('/'); - } - return url; + new URL(url).pathname; }; const getPayload = () => ({ From c9a0e23036bdef86097b442cae32b9d6422bff23 Mon Sep 17 00:00:00 2001 From: Francis Cao Date: Tue, 10 Oct 2023 10:21:05 -0700 Subject: [PATCH 2/6] add windows-mobile.png --- public/images/os/windows-mobile.png | Bin 0 -> 2427 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/images/os/windows-mobile.png diff --git a/public/images/os/windows-mobile.png b/public/images/os/windows-mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..4a899a30f8ae88d3cca51b71c3d7d82887c14882 GIT binary patch literal 2427 zcmZ{mX*ARiAH{z&jBSv8>;{EMW(H*|OJglUhKUhljLE(KlfECjrEeKiXvA&FEv~1e?v)a+i~Up91n*sKK5q7zsL>zXTdHD zb?>?~Rih18LW%DY3jG)f=GY*C9V^S=eQ_x%U1jBX810Lou!uTAMYzlP?%)=0$B)Zi z9dmGB@-wH6B$+)X!GK*Z;Qd9KP(ve~H$8~9JsruU;i<+$9@sQj<@!ZNab(hWpBH}k zR#Bj(sQL_)5dPNaOlyJD#@AlEbjpn)k+aozhS$2dOgtx!^$q`_w3RzgE;LNb^e-wV zMN;C^M_P7jb5vK^11Y7~f*x96seMO)HYh;<=U4%rxGN!LQ)V~R0ado!JQvk_Nj2;Y zj-_Qs%)5z*@_7#04)#}%oS9Blo(ZoFsi7vgmabXPN}Zea6$uQEOTQ9FoveSRvd*)S zP>?331wJ?}#$0Nb%%zl`IE1R zIQu{fD1W}+orSg&;jCs~r?U@{cQazyES9q1Mk|(n)N_=rxHC1 z01!JS-ypXkv$}7U?frjX{qKBowaDG#+(Sd^%hNN)7jID zMtZnR?iId68xo37iN5Pm=wiJAj>et2&B?4JoH~Fpn;0*i5YhUUedpIUKCbcF{Yzon zUHO%HgLz@ox4t_4Y4Nhc91j!s9zMYhMrdC&4Da=l)_yC)%Q!p#0Kxwp{5y(YVM(Mr z9!_c}i+nEoRTsXB#Iec=4{!?Ta5ng*`X{x>`iUdJFB~nk$1DEj(QdCWyhqorO&Cg0 zUe&u~(2lvKw@Y}`;4?ay@LJ)Zx_SO^q27o+S?_$X^>1)ja+UeADOht-Q+Y?qJ<`(U0l#S9(0j7#=!w-2k6Wv=MHD3>V$~a3^X zl5V`u7CkY=9gHGJpKa;}LwmPFI>dU!zqDnJafFUc(9pReK}(Ft#&AX zSbw!=!Ae?CaE*-H4NNC*qZkCr78)NWQpbVkqWZ|Lvx?y)HGaUY-d#zDl}UX2y_d51 zWdGyw!@`U$c{lgE?=vje!Z$TyWcj@%QrLSs;GdxMr~XHkUrm3B zGa~kLDW=^w5|x4_z&F`s_d4%mRcD}VJF!mODYfY)Nsz_y4%Ezmtnq^-wC1cQpH90j z?Um0eQZR=Lci+Wk-Tx8O*(WMO_Tla4V+s?{U6EHG2kT`D-Qy!@0#27`5lq}${O@Ws zoTp^stFL#qSPZvZh8PzObxw6Q2&HG*`D-NOyLq-wxk^8c`@XKmJBU?Huj*q=VC1V? zkPfi?gZrsAwTNA~S6=|nD%b#mfMKKS0H6RO{Na4;>}n9xzm5h589zQ$N7wi!)~h&> z#?*P!MA0MGOqE91ON!~Q#}vHL-D@Bm$T+tj*&9XltZ#zGta7Rxquf3ZwzXfw#_CEFC$1ZTcjP9=J?!dh5KyvPXg&ivjwQtI&) zcLn9F;rWM=J!O6Tx%QkK|2w=7k-ZR58+>8LFWDmu(L0@lw$wXq*xxg4UyFg z{)71J(qPUg@+Ucg#oYi2*-{r8J!>K!ETc_tK1xg)EB43@7rqY@3y%*ACMO5J(Rkq| zsrPc;GdAGD$8GnsCDm%7pn_DD3o(2mj0H<(zX95|hGadWEj~b?8QWGzj3Tf(txi; rQ%hA%34zc;AT*&@+yAHF?d$69M*aT<6WbloNdYi5v_QWwaE|^jyBtzr literal 0 HcmV?d00001 From e8da04bebebc79492871556898ca752d23d544a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aldo=20Rom=C3=A1n?= Date: Wed, 11 Oct 2023 15:09:07 +0200 Subject: [PATCH 3/6] fix(tracker): Correctly extract pathname --- src/tracker/index.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/tracker/index.js b/src/tracker/index.js index 4189abf6..dd125c82 100644 --- a/src/tracker/index.js +++ b/src/tracker/index.js @@ -42,9 +42,7 @@ }; }; - const getPath = url => { - new URL(url).pathname; - }; + const getPath = url => new URL(url).pathname; const getPayload = () => ({ website, From a79183cd13f2e45ac54f933d18dd221726d076a7 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Wed, 11 Oct 2023 10:02:32 -0700 Subject: [PATCH 4/6] Layout fixes for DataTable. --- src/app/(main)/settings/layout.module.css | 6 +- .../(main)/settings/websites/WebsitesTable.js | 66 ++++++++++--------- src/components/common/DataTable.module.css | 2 + 3 files changed, 41 insertions(+), 33 deletions(-) diff --git a/src/app/(main)/settings/layout.module.css b/src/app/(main)/settings/layout.module.css index c56ec8bb..19162ef5 100644 --- a/src/app/(main)/settings/layout.module.css +++ b/src/app/(main)/settings/layout.module.css @@ -16,7 +16,11 @@ min-height: 50vh; } -@media only screen and (max-width: 768px) { +@media only screen and (max-width: 992px) { + .layout { + grid-template-columns: 1fr; + } + .menu { display: none; } diff --git a/src/app/(main)/settings/websites/WebsitesTable.js b/src/app/(main)/settings/websites/WebsitesTable.js index 3c0cbc46..f8b12923 100644 --- a/src/app/(main)/settings/websites/WebsitesTable.js +++ b/src/app/(main)/settings/websites/WebsitesTable.js @@ -28,39 +28,41 @@ export function WebsitesTable({ {row => row.user.username} )} - - {row => { - const { - id, - user: { id: ownerId }, - } = row; + {showActions && ( + + {row => { + const { + id, + user: { id: ownerId }, + } = row; - return ( - <> - {showActions && allowEdit && (!showTeam || ownerId === user.id) && ( - - - - )} - {showActions && allowView && ( - - - - )} - - ); - }} - + return ( + <> + {allowEdit && (!showTeam || ownerId === user.id) && ( + + + + )} + {allowView && ( + + + + )} + + ); + }} + + )} {children} ); diff --git a/src/components/common/DataTable.module.css b/src/components/common/DataTable.module.css index 4ca52b74..6e925bc0 100644 --- a/src/components/common/DataTable.module.css +++ b/src/components/common/DataTable.module.css @@ -20,6 +20,7 @@ .body { display: flex; position: relative; + overflow-x: auto; } .body td { @@ -27,6 +28,7 @@ gap: 10px; min-height: 70px; align-items: center; + min-width: min-content; } .pager { From aef4b23cce3baa5b896dddd2f6c208ef9bda4246 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aldo=20Rom=C3=A1n?= Date: Thu, 12 Oct 2023 00:41:58 +0200 Subject: [PATCH 5/6] fix(tracker): Correctly extract pathname --- src/tracker/index.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/tracker/index.js b/src/tracker/index.js index dd125c82..d5278b21 100644 --- a/src/tracker/index.js +++ b/src/tracker/index.js @@ -42,7 +42,13 @@ }; }; - const getPath = url => new URL(url).pathname; + const getPath = url => { + try { + return new URL(url).pathname; + } catch (e) { + return url; + } + }; const getPayload = () => ({ website, From a15fb89c906e01d8ca903881fd85470538826680 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Thu, 12 Oct 2023 00:03:10 -0700 Subject: [PATCH 6/6] Added card mode to DataTable. --- package.json | 2 +- .../settings/websites/WebsitesDataTable.tsx | 3 + .../(main)/settings/websites/WebsitesTable.js | 3 +- src/components/common/DataTable.module.css | 6 ++ src/components/input/ThemeButton.js | 2 +- src/components/metrics/ListTable.js | 2 +- src/components/metrics/MetricCard.js | 2 +- yarn.lock | 66 ++----------------- 8 files changed, 22 insertions(+), 64 deletions(-) diff --git a/package.json b/package.json index 5b2ef173..7a3f34c3 100644 --- a/package.json +++ b/package.json @@ -97,7 +97,7 @@ "node-fetch": "^3.2.8", "npm-run-all": "^4.1.5", "react": "^18.2.0", - "react-basics": "^0.100.0", + "react-basics": "^0.102.0", "react-beautiful-dnd": "^13.1.0", "react-dom": "^18.2.0", "react-error-boundary": "^4.0.4", diff --git a/src/app/(main)/settings/websites/WebsitesDataTable.tsx b/src/app/(main)/settings/websites/WebsitesDataTable.tsx index 6e716291..cfdf147a 100644 --- a/src/app/(main)/settings/websites/WebsitesDataTable.tsx +++ b/src/app/(main)/settings/websites/WebsitesDataTable.tsx @@ -6,6 +6,7 @@ import useApi from 'components/hooks/useApi'; import DataTable from 'components/common/DataTable'; import useFilterQuery from 'components/hooks/useFilterQuery'; import useCache from 'store/cache'; +import { useBreakpoint } from 'react-basics'; export interface WebsitesDataTableProps { allowEdit?: boolean; @@ -45,6 +46,7 @@ export function WebsitesDataTable({ children, }: WebsitesDataTableProps) { const queryResult = useWebsites({ includeTeams, onlyTeams }); + const breakpoint = useBreakpoint(); return ( @@ -55,6 +57,7 @@ export function WebsitesDataTable({ showActions={showActions} allowEdit={allowEdit} allowView={allowView} + cardMode={['xs', 'sm', 'md'].includes(breakpoint)} > {children} diff --git a/src/app/(main)/settings/websites/WebsitesTable.js b/src/app/(main)/settings/websites/WebsitesTable.js index f8b12923..ed663f6f 100644 --- a/src/app/(main)/settings/websites/WebsitesTable.js +++ b/src/app/(main)/settings/websites/WebsitesTable.js @@ -9,13 +9,14 @@ export function WebsitesTable({ showActions, allowEdit, allowView, + cardMode, children, }) { const { formatMessage, labels } = useMessages(); const { user } = useUser(); return ( - + {showTeam && ( diff --git a/src/components/common/DataTable.module.css b/src/components/common/DataTable.module.css index 6e925bc0..c7cab642 100644 --- a/src/components/common/DataTable.module.css +++ b/src/components/common/DataTable.module.css @@ -19,6 +19,7 @@ .body { display: flex; + flex-direction: column; position: relative; overflow-x: auto; } @@ -31,6 +32,11 @@ min-width: min-content; } +.body > div > div > div { + display: flex; + gap: 10px; +} + .pager { margin: 20px 0; } diff --git a/src/components/input/ThemeButton.js b/src/components/input/ThemeButton.js index 3a6a9d14..76d1b370 100644 --- a/src/components/input/ThemeButton.js +++ b/src/components/input/ThemeButton.js @@ -1,4 +1,4 @@ -import { useTransition, animated } from 'react-spring'; +import { useTransition, animated } from '@react-spring/web'; import { Button, Icon } from 'react-basics'; import useTheme from 'components/hooks/useTheme'; import Icons from 'components/icons'; diff --git a/src/components/metrics/ListTable.js b/src/components/metrics/ListTable.js index 38ea40eb..e4ea5ea8 100644 --- a/src/components/metrics/ListTable.js +++ b/src/components/metrics/ListTable.js @@ -1,6 +1,6 @@ import useMeasure from 'react-use-measure'; import { FixedSizeList } from 'react-window'; -import { useSpring, animated, config } from 'react-spring'; +import { useSpring, animated, config } from '@react-spring/web'; import classNames from 'classnames'; import Empty from 'components/common/Empty'; import { formatLongNumber } from 'lib/format'; diff --git a/src/components/metrics/MetricCard.js b/src/components/metrics/MetricCard.js index e32ec3a1..5fff3960 100644 --- a/src/components/metrics/MetricCard.js +++ b/src/components/metrics/MetricCard.js @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import { useSpring, animated } from 'react-spring'; +import { useSpring, animated } from '@react-spring/web'; import { formatNumber } from 'lib/format'; import styles from './MetricCard.module.css'; diff --git a/yarn.lock b/yarn.lock index 97b2f95e..5d64e01c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2027,7 +2027,7 @@ "@react-spring/shared" "~9.7.3" "@react-spring/types" "~9.7.3" -"@react-spring/core@~9.7.1", "@react-spring/core@~9.7.3": +"@react-spring/core@~9.7.3": version "9.7.3" resolved "https://registry.yarnpkg.com/@react-spring/core/-/core-9.7.3.tgz#60056bcb397f2c4f371c6c9a5f882db77ae90095" integrity sha512-IqFdPVf3ZOC1Cx7+M0cXf4odNLxDC+n7IN3MDcVCTIOSBfqEcBebSv+vlY5AhM0zw05PDbjKrNmBpzv/AqpjnQ== @@ -2036,26 +2036,6 @@ "@react-spring/shared" "~9.7.3" "@react-spring/types" "~9.7.3" -"@react-spring/konva@~9.7.1": - version "9.7.3" - resolved "https://registry.yarnpkg.com/@react-spring/konva/-/konva-9.7.3.tgz#16bd29dd4860a99e960a72987c8bcfc828b22119" - integrity sha512-R9sY6SiPGYqz1383P5qppg5z57YfChVknOC1UxxaGxpw+WiZa8fZ4zmZobslrw+os3/+HAXZv8O+EvU/nQpf7g== - dependencies: - "@react-spring/animated" "~9.7.3" - "@react-spring/core" "~9.7.3" - "@react-spring/shared" "~9.7.3" - "@react-spring/types" "~9.7.3" - -"@react-spring/native@~9.7.1": - version "9.7.3" - resolved "https://registry.yarnpkg.com/@react-spring/native/-/native-9.7.3.tgz#ee38d7c23482cfb4916c9b3c021de2995a4f553a" - integrity sha512-4mpxX3FuEBCUT6ae2fjhxcJW6bhr2FBwFf274eXB7n+U30Gdg8Wo2qYwcUnmiAA0S3dvP8vLTazx3+CYWFShnA== - dependencies: - "@react-spring/animated" "~9.7.3" - "@react-spring/core" "~9.7.3" - "@react-spring/shared" "~9.7.3" - "@react-spring/types" "~9.7.3" - "@react-spring/shared@~9.7.3": version "9.7.3" resolved "https://registry.yarnpkg.com/@react-spring/shared/-/shared-9.7.3.tgz#4cf29797847c689912aec4e62e34c99a4d5d9e53" @@ -2063,22 +2043,12 @@ dependencies: "@react-spring/types" "~9.7.3" -"@react-spring/three@~9.7.1": - version "9.7.3" - resolved "https://registry.yarnpkg.com/@react-spring/three/-/three-9.7.3.tgz#4358a0c4640efe2972c4f7d0f7cd4efe927471c1" - integrity sha512-Q1p512CqUlmMK8UMBF/Rj79qndhOWq4XUTayxMP9S892jiXzWQuj+xC3Xvm59DP/D4JXusXpxxqfgoH+hmOktA== - dependencies: - "@react-spring/animated" "~9.7.3" - "@react-spring/core" "~9.7.3" - "@react-spring/shared" "~9.7.3" - "@react-spring/types" "~9.7.3" - "@react-spring/types@~9.7.3": version "9.7.3" resolved "https://registry.yarnpkg.com/@react-spring/types/-/types-9.7.3.tgz#ea78fd447cbc2612c1f5d55852e3c331e8172a0b" integrity sha512-Kpx/fQ/ZFX31OtlqVEFfgaD1ACzul4NksrvIgYfIFq9JpDHFwQkMVZ10tbo0FU/grje4rcL4EIrjekl3kYwgWw== -"@react-spring/web@^9.7.3", "@react-spring/web@~9.7.1": +"@react-spring/web@^9.7.3": version "9.7.3" resolved "https://registry.yarnpkg.com/@react-spring/web/-/web-9.7.3.tgz#d9f4e17fec259f1d65495a19502ada4f5b57fa3d" integrity sha512-BXt6BpS9aJL/QdVqEIX9YoUy8CE6TJrU0mNCqSoxdXlIeNcEBWOfIyE6B14ENNsyQKS3wOWkiJfco0tCr/9tUg== @@ -2088,16 +2058,6 @@ "@react-spring/shared" "~9.7.3" "@react-spring/types" "~9.7.3" -"@react-spring/zdog@~9.7.1": - version "9.7.3" - resolved "https://registry.yarnpkg.com/@react-spring/zdog/-/zdog-9.7.3.tgz#8ccc7316f6d3460ed244d9e3f60de9b4c4a848ac" - integrity sha512-L+yK/1PvNi9n8cldiJ309k4LdxcPkeWE0W18l1zrP1IBIyd5NB5EPA8DMsGr9gtNnnIujtEzZk+4JIOjT8u/tw== - dependencies: - "@react-spring/animated" "~9.7.3" - "@react-spring/core" "~9.7.3" - "@react-spring/shared" "~9.7.3" - "@react-spring/types" "~9.7.3" - "@redis/bloom@1.1.0": version "1.1.0" resolved "https://registry.npmjs.org/@redis/bloom/-/bloom-1.1.0.tgz" @@ -7606,15 +7566,15 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-basics@^0.100.0: - version "0.100.0" - resolved "https://registry.yarnpkg.com/react-basics/-/react-basics-0.100.0.tgz#14a36769af89f3e01641997f897e4073f16f5035" - integrity sha512-ET6DX/FYAcjGRauBE4jwqwVpd/hKmA2Nu/fi1dakwsv17hkyV5FEAhdWhQAxJX3VnaCH//QysN8+ae12KuNA9g== +react-basics@^0.102.0: + version "0.102.0" + resolved "https://registry.yarnpkg.com/react-basics/-/react-basics-0.102.0.tgz#61dbc837963facb2d409044046eb55f7c689411e" + integrity sha512-MhLHgjVnOwdm1YX1Lwkyg37kPCTOk+b3NXWGORlh4dJThq/qq/s0lF09yqEq09Gye5yyTDbeNDPXlkXIPtadog== dependencies: + "@react-spring/web" "^9.7.3" classnames "^2.3.1" date-fns "^2.29.3" react-hook-form "^7.34.2" - react-spring "^9.5.5" react-window "^1.8.6" react-beautiful-dnd@^13.1.0: @@ -7698,18 +7658,6 @@ react-simple-maps@^2.3.0: d3-zoom "^2.0.0" topojson-client "^3.1.0" -react-spring@^9.5.5: - version "9.7.1" - resolved "https://registry.yarnpkg.com/react-spring/-/react-spring-9.7.1.tgz#8acfed700823490a4d9d4cf131c5fea12d1aaa93" - integrity sha512-o2+r2DNQDVEuefiz33ZF76DPd/gLq3kbdObJmllGF2IUfv2W6x+ZP0gR97QYCSR4QLbmOl1mPKUBbI+FJdys2Q== - dependencies: - "@react-spring/core" "~9.7.1" - "@react-spring/konva" "~9.7.1" - "@react-spring/native" "~9.7.1" - "@react-spring/three" "~9.7.1" - "@react-spring/web" "~9.7.1" - "@react-spring/zdog" "~9.7.1" - react-use-measure@^2.0.4: version "2.1.1" resolved "https://registry.npmjs.org/react-use-measure/-/react-use-measure-2.1.1.tgz"