Skip to content

Commit

Permalink
fix(AccessCodeTable): layout broken on mobile (#574)
Browse files Browse the repository at this point in the history
  • Loading branch information
mikewuu authored Dec 5, 2023
1 parent c4138d4 commit 973e093
Show file tree
Hide file tree
Showing 6 changed files with 122 additions and 10 deletions.
65 changes: 65 additions & 0 deletions src/lib/seam/components/AccessCodeTable/AccessCodeMainIcon.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
import { AccessCodeKeyIcon } from 'lib/icons/AccessCodeKey.js'
import { ExclamationCircleOutlineIcon } from 'lib/icons/ExclamationCircleOutline.js'
import { TriangleWarningOutlineIcon } from 'lib/icons/TriangleWarningOutline.js'
import type { UseAccessCodesData } from 'lib/seam/access-codes/use-access-codes.js'

export interface AccessCodeMainIconProps {
accessCode: UseAccessCodesData[number]
}

export function AccessCodeMainIcon({
accessCode,
}: AccessCodeMainIconProps): JSX.Element {
const errorCount = accessCode.errors.length
const warningCount = accessCode.warnings.length
const isPlural = errorCount === 0 || errorCount > 1
const errorIconTitle = isPlural
? `${errorCount} ${t.codeIssues}`
: `${errorCount} ${t.codeIssue}`
const warningIconTitle = isPlural
? `${warningCount} ${t.codeIssues}`
: `${warningCount} ${t.codeIssue}`

if (errorCount > 0) {
return (
<>
<div
className='seam-issue-icon-wrap seam-md-invisible'
title={errorIconTitle}
>
<ExclamationCircleOutlineIcon />
</div>
<div className='seam-invisible seam-md-flex'>
<AccessCodeKeyIcon />
</div>
</>
)
}

if (errorCount === 0 && warningCount > 0) {
return (
<>
<div
className='seam-issue-icon-wrap seam-md-invisible'
title={warningIconTitle}
>
<TriangleWarningOutlineIcon />
</div>
<div className='seam-invisible seam-md-flex'>
<AccessCodeKeyIcon />
</div>
</>
)
}

return (
<div className='seam-issue-icon-wrap'>
<AccessCodeKeyIcon />
</div>
)
}

const t = {
codeIssue: 'code issue',
codeIssues: 'code issues',
}
16 changes: 10 additions & 6 deletions src/lib/seam/components/AccessCodeTable/AccessCodeRow.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { AccessCodeKeyIcon } from 'lib/icons/AccessCodeKey.js'
import { ExclamationCircleOutlineIcon } from 'lib/icons/ExclamationCircleOutline.js'
import { TriangleWarningOutlineIcon } from 'lib/icons/TriangleWarningOutline.js'
import type { UseAccessCodesData } from 'lib/seam/access-codes/use-access-codes.js'
import { AccessCodeMainIcon } from 'lib/seam/components/AccessCodeTable/AccessCodeMainIcon.js'
import { AccessCodeMenu } from 'lib/seam/components/AccessCodeTable/AccessCodeMenu.js'
import { CodeDetails } from 'lib/seam/components/AccessCodeTable/CodeDetails.js'
import { TableCell } from 'lib/ui/Table/TableCell.js'
Expand Down Expand Up @@ -36,22 +36,26 @@ export function AccessCodeRow({
return (
<TableRow onClick={onClick}>
<TableCell className='seam-icon-cell'>
<div>
<AccessCodeKeyIcon />
</div>
<AccessCodeMainIcon accessCode={accessCode} />
</TableCell>
<TableCell className='seam-name-cell'>
<Title className='seam-truncated-text'>{accessCode.name}</Title>
<CodeDetails accessCode={accessCode} />
</TableCell>
<TableCell className='seam-action-cell'>
{errorCount > 0 && (
<div className='seam-issue-icon-wrap' title={errorIconTitle}>
<div
className='seam-issue-icon-wrap seam-invisible seam-md-flex'
title={errorIconTitle}
>
<ExclamationCircleOutlineIcon />
</div>
)}
{errorCount === 0 && warningCount > 0 && (
<div className='seam-issue-icon-wrap' title={warningIconTitle}>
<div
className='seam-issue-icon-wrap seam-invisible seam-md-flex'
title={warningIconTitle}
>
<TriangleWarningOutlineIcon />
</div>
)}
Expand Down
3 changes: 2 additions & 1 deletion src/lib/seam/components/AccessCodeTable/CodeDetails.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ export function CodeDetails(props: { accessCode: AccessCode }): JSX.Element {
<DotDivider />
<Duration accessCode={accessCode} />
<DotDivider />
{t.code}: {accessCode.code}
<span className='seam-invisible seam-md-block'>{t.code}: </span>
{accessCode.code}
</div>
)
}
Expand Down
2 changes: 2 additions & 0 deletions src/styles/_main.scss
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
@use './alert';
@use './buttons';
@use './layout';
@use './visibility';
@use './loading_toast';
@use './colors';
@use './icons';
Expand Down Expand Up @@ -41,6 +42,7 @@
@include form-field.all;
@include buttons.all;
@include layout.all;
@include visibility.all;
@include loading_toast.all;
@include icons.all;
@include menus.all;
Expand Down
21 changes: 18 additions & 3 deletions src/styles/_seam-table.scss
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,17 @@
justify-content: center;

> div {
width: 40px;
width: 32px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
margin-right: 4px;

@media only screen and (width >= 768px) {
width: 40px;
margin-right: 4px;
}
}
}

Expand All @@ -48,10 +54,15 @@
}

.seam-details {
font-size: 14px;
font-size: 12px;
line-height: 134%;
color: colors.$text-gray-1;
display: flex;
flex-wrap: wrap;

@media only screen and (width >= 768px) {
font-size: 14px;
}

.seam-device-name {
max-width: 190px;
Expand All @@ -66,10 +77,14 @@
}

.seam-action-cell {
margin-right: 12px;
margin-right: 8px;
display: flex;
align-items: center;
justify-content: center;

@media only screen and (width >= 768px) {
margin-right: 12px;
}
}

.seam-issue-icon-wrap {
Expand Down
25 changes: 25 additions & 0 deletions src/styles/_visibility.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
@use './colors';

@mixin all {
.seam-invisible {
display: none !important;
}

.seam-md-flex {
@media only screen and (width >= 768px) {
display: flex !important;
}
}

.seam-md-block {
@media only screen and (width >= 768px) {
display: block !important;
}
}

.seam-md-invisible {
@media only screen and (width >= 768px) {
display: none !important;
}
}
}

0 comments on commit 973e093

Please sign in to comment.