@material-ui/icons#ArrowDownward TypeScript Examples
The following examples show how to use
@material-ui/icons#ArrowDownward.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: index.tsx From aqualink-app with MIT License | 6 votes |
MOBILE_SELECT_MENU_ITEMS = Object.values(OrderKeys)
.filter((key) => DEFAULT_ITEMS.includes(key))
.reduce<ReactNode[]>(
(elements, val) => [
...elements,
...times(2, (i) => {
const itemOrder: Order = i % 2 === 0 ? "asc" : "desc";
return (
<MenuItem value={`${val}-${itemOrder}`} key={val + i}>
<Typography color="primary" variant="h4">
{getOrderKeysFriendlyString(val)}
{" "}
{itemOrder === "asc" ? (
<ArrowDownward fontSize="small" />
) : (
<ArrowUpward fontSize="small" />
)}
</Typography>
</MenuItem>
);
}),
],
[]
)
Example #2
Source File: index.tsx From frontegg-react with MIT License | 6 votes |
iconMap: { [K in IconNames]: any } = {
'down-arrow': KeyboardArrowDownRounded,
'left-arrow': KeyboardArrowLeftRounded,
'person-add': PersonAddRounded,
'right-arrow': KeyboardArrowRightRounded,
'sort-arrows-asc': ArrowUpward,
'sort-arrows-desc': ArrowDownward,
'sort-arrows': DeleteRounded,
'up-arrow': KeyboardArrowUpRounded,
'vertical-dots': MoreVertRounded,
'visibility-off': VisibilityOff,
back: ArrowBackRounded,
checkmark: CheckRounded,
copy: FileCopyRounded,
delete: DeleteRounded,
edit: Edit,
filters: FilterList,
image: ImageRounded,
indeterminate: IndeterminateCheckBoxRounded,
search: Search,
send: SendRounded,
refresh: Cached,
'calendar-today': CalendarToday,
flash: FlashOn,
pdf: PictureAsPdf,
csv: GridOn,
visibility: Visibility,
warning: WarningRounded,
list: Subject,
exit: ExitToAppRounded,
swap: CachedRounded,
profile: FaceRounded,
globe: Language,
close: Close,
}
Example #3
Source File: CustomTable.tsx From interface-v2 with GNU General Public License v3.0 | 5 votes |
CustomTable: React.FC<CustomTableProps<any>> = ({
rowsPerPage = 5,
showPagination = true,
emptyMessage,
headCells,
data,
defaultOrderBy,
defaultOrder,
mobileHTML,
desktopHTML,
}) => {
const theme = useTheme();
const mobileWindowSize = useMediaQuery(theme.breakpoints.down('xs'));
const classes = useStyles();
return (
<Box className={classes.tableContainer}>
{mobileWindowSize ? (
<>
{data.map((item: any, index: number) => {
return mobileHTML(item, index);
})}
</>
) : (
<DataTable
defaultOrderBy={defaultOrderBy}
defaultOrder={defaultOrder}
emptyMesage={emptyMessage}
showPagination={showPagination}
headCells={headCells}
data={data}
rowPerPage={rowsPerPage}
sortUpIcon={<ArrowUpward />}
sortDownIcon={<ArrowDownward />}
showEmptyRows={false}
renderRow={(item, index, page, rowsPerPage) => {
return (
<TableRow key={index}>
{desktopHTML(item, index, page, rowsPerPage).map(
(cellItem: any, ind: number) => (
<TableCell
key={ind}
className={cellItem.button ? 'buttonCell' : ''}
>
{cellItem.html}
</TableCell>
),
)}
</TableRow>
);
}}
/>
)}
</Box>
);
}
Example #4
Source File: SortBar.tsx From crossfeed with Creative Commons Zero v1.0 Universal | 5 votes |
SortBar: React.FC<Props> = (props) => {
const {
sortField,
sortDirection,
setSort,
saveSearch,
children,
existingSavedSearch
} = props;
const classes = useStyles(props);
const toggleDirection = () => {
setSort(sortField, sortDirection === 'asc' ? 'desc' : 'asc');
};
const onSetSortField: SelectProps['onChange'] = (e) => {
setSort(e.target.value as string, 'asc');
};
return (
<div className={classes.root}>
<div className={classes.sortMenu}>
<button className={classes.toggleDirection} onClick={toggleDirection}>
{!sortDirection || sortDirection === 'desc' ? (
<ArrowDownward />
) : (
<ArrowUpward />
)}
</button>
<span id="sort-by-label">Sort by: </span>
<FormControl className={classes.openFields}>
<Select
disableUnderline
labelId="sort-by-label"
value={sortField}
onChange={onSetSortField}
classes={{ root: classes.selectInp }}
>
<MenuItem classes={{ root: classes.option }} value="name">
Domain Name
</MenuItem>
<MenuItem classes={{ root: classes.option }} value="ip">
IP
</MenuItem>
<MenuItem classes={{ root: classes.option }} value="updatedAt">
Last Seen
</MenuItem>
<MenuItem classes={{ root: classes.option }} value="createdAt">
First Seen
</MenuItem>
</Select>
</FormControl>
</div>
{children}
<div>
{saveSearch && (
<button onClick={saveSearch}>
{existingSavedSearch ? 'Update Saved Search' : 'Save Search'}
</button>
)}
</div>
</div>
);
}
Example #5
Source File: App.tsx From react-final-table with MIT License | 4 votes |
function App() {
const [searchString, setSearchString] = useState('');
const {
headers,
rows,
selectRow,
selectedRows,
originalRows,
toggleSort,
toggleAll,
} = useTable<DataType>(columns, data, {
selectable: true,
filter: useCallback(
(rows: RowType<DataType>[]) => {
return rows.filter(row => {
return (
row.cells.filter(cell => {
if (cell.value.toLowerCase().includes(searchString)) {
return true;
}
return false;
}).length > 0
);
});
},
[searchString]
),
});
return (
<Grid container>
<Grid item>
<TableContainer>
<Table>
<TableHead>
<TableRow>
<TableCell>
<Checkbox
indeterminate={
selectedRows.length > 0 &&
selectedRows.length !== rows.length
}
checked={selectedRows.length === rows.length}
onClick={() => toggleAll()}
/>
</TableCell>
{headers.map(column => (
<TableCell onClick={() => toggleSort(column.name)}>
{column.render()}{' '}
{column.sorted.on ? (
<>
{column.sorted.asc ? (
<ArrowUpward />
) : (
<ArrowDownward />
)}
</>
) : null}
</TableCell>
))}
</TableRow>
</TableHead>
<TableBody>
{rows.map(row => (
<TableRow>
<TableCell>
<Checkbox
checked={row.selected}
onChange={() => selectRow(row.id)}
/>
</TableCell>
{row.cells.map(cell => (
<TableCell>{cell.render()}</TableCell>
))}
</TableRow>
))}
</TableBody>
</Table>
</TableContainer>
<TableContainer>
<TableHead>
<TableRow>
{headers.map(column => (
<TableCell>{column.label}</TableCell>
))}
</TableRow>
</TableHead>
<TableBody>
{selectedRows.map(row => {
return (
<TableRow>
<TableCell>
<Button onClick={() => selectRow(row.id)}>
Deselect Row
</Button>
</TableCell>
{row.cells.map(cell => {
return <TableCell>{cell.render()}</TableCell>;
})}
</TableRow>
);
})}
</TableBody>
</TableContainer>
<TextField
variant="outlined"
label="Search..."
value={searchString}
onChange={e => setSearchString(e.target.value)}
/>
<pre>
<code>
{JSON.stringify({ selectedRows, originalRows, rows }, null, 2)}
</code>
</pre>
</Grid>
</Grid>
);
}
Example #6
Source File: ConvertQUICKPage.tsx From interface-v2 with GNU General Public License v3.0 | 4 votes |
ConvertQUICKPage: React.FC = () => {
const classes = useStyles();
const { t } = useTranslation();
const { account, library } = useActiveWeb3React();
const [quickAmount, setQUICKAmount] = useState('');
const [quickV2Amount, setQUICKV2Amount] = useState('');
const [approving, setApproving] = useState(false);
const [attemptConverting, setAttemptConverting] = useState(false);
const [showConfirm, setShowConfirm] = useState(false);
const [txPending, setTxPending] = useState(false);
const [txHash, setTxHash] = useState('');
const [txError, setTxError] = useState('');
const quickToken = returnTokenFromKey('QUICK');
const quickBalance = useTokenBalance(account ?? undefined, quickToken);
const quickConvertContract = useQUICKConversionContract();
const parsedAmount = tryParseAmount(quickAmount, quickToken);
const [approval, approveCallback] = useApproveCallback(
parsedAmount,
quickConvertContract?.address,
);
const quickConvertingText = t('convertingQUICKtoQUICKV2', {
quickAmount,
quickV2Amount,
});
const quickConvertedText = t('convertedQUICKtoQUICKV2', {
quickAmount,
quickV2Amount,
});
const txSubmittedQuickConvertText = t('submittedTxQUICKConvert', {
quickAmount,
quickV2Amount,
});
const successQuickConvertedText = t('successConvertedQUICKtoQUICKV2', {
quickAmount,
quickV2Amount,
});
const isInsufficientQUICK =
Number(quickAmount) > Number(quickBalance?.toExact() ?? 0);
const buttonText = useMemo(() => {
if (!quickAmount || !Number(quickAmount)) {
return t('enterAmount');
} else if (approval !== ApprovalState.APPROVED) {
return t('approve');
} else if (isInsufficientQUICK) {
return t('insufficientBalance');
} else {
return t('convert');
}
}, [isInsufficientQUICK, quickAmount, t, approval]);
const addTransaction = useTransactionAdder();
const finalizedTransaction = useTransactionFinalizer();
const handleDismissConfirmation = () => {
setShowConfirm(false);
};
const attemptToApprove = async () => {
setApproving(true);
try {
await approveCallback();
setApproving(false);
} catch (e) {
setApproving(false);
}
};
const convertQUICK = async () => {
if (quickConvertContract && library && parsedAmount) {
setAttemptConverting(true);
setShowConfirm(true);
await quickConvertContract
.quickToQuickX(parsedAmount.raw.toString(), {
gasLimit: 300000,
})
.then(async (response: TransactionResponse) => {
setAttemptConverting(false);
setTxPending(true);
setTxError('');
setTxHash('');
addTransaction(response, {
summary: quickConvertingText,
});
try {
const tx = await response.wait();
finalizedTransaction(tx, {
summary: quickConvertedText,
});
setTxPending(false);
setTxHash(tx.transactionHash);
} catch (err) {
setTxPending(false);
setTxError(t('errorInTx'));
}
})
.catch(() => {
setAttemptConverting(false);
setTxPending(false);
setTxHash('');
setTxError(t('txRejected'));
});
}
};
return (
<Box width='100%' maxWidth={488} id='convertQUICKPage'>
<Typography variant='h4'>{t('convert')} QUICK</Typography>
<Box className={classes.wrapper}>
<Box display='flex' alignItems='center' mb={3}>
<Box className={classes.iconWrapper}>
<img src={QUICKIcon} alt='QUICK' />
</Box>
<Typography variant='h6'>QUICK(OLD)</Typography>
<Box mx={1.5} className={classes.convertArrow}>
<ArrowForward />
</Box>
<Box className={classes.iconWrapper}>
<QUICKV2Icon />
</Box>
<Typography variant='h6'>QUICK(NEW)</Typography>
</Box>
<Typography variant='body2' color='textSecondary'>
<Trans i18nKey='convertQuick'>
Convert your QUICK(OLD) to QUICK(NEW). Read more about QUICK token
split{' '}
<a
href='https://quickswap-layer2.medium.com/you-voted-for-a-1-1000-token-split-to-make-quick-more-appealing-9c25c2a2dd7e'
rel='noreferrer'
target='_blank'
>
here
</a>
</Trans>
</Typography>
<Box className={classes.conversionRate}>
<Typography variant='caption'>
{t('conversionRate')}: 1 QUICK(OLD) ={' '}
{GlobalConst.utils.QUICK_CONVERSION_RATE} QUICK(NEW)
</Typography>
</Box>
<Box mt={4} mb={2}>
<Typography variant='body2' color='textSecondary'>
{t('yourbalance')}: {formatTokenAmount(quickBalance)}
</Typography>
<Box
className={cx(
classes.currencyInput,
isInsufficientQUICK && classes.errorInput,
)}
>
<NumericalInput
placeholder='0.00'
value={quickAmount}
fontSize={18}
onUserInput={(value) => {
const digits =
value.indexOf('.') > -1 ? value.split('.')[1].length : 0;
let fixedVal = value;
if (digits > quickToken.decimals) {
fixedVal = Number(value).toFixed(quickToken.decimals);
}
setQUICKAmount(fixedVal);
setQUICKV2Amount(
(
Number(fixedVal) * GlobalConst.utils.QUICK_CONVERSION_RATE
).toLocaleString('fullwide', {
useGrouping: false,
maximumFractionDigits: quickToken.decimals,
}),
);
}}
/>
<Box
mr={1}
className={classes.maxButton}
onClick={() => {
if (quickBalance) {
setQUICKAmount(quickBalance.toExact());
setQUICKV2Amount(
(
Number(quickBalance.toExact()) *
GlobalConst.utils.QUICK_CONVERSION_RATE
).toString(),
);
}
}}
>
{t('max')}
</Box>
<Typography variant='h6'>QUICK(OLD)</Typography>
</Box>
{isInsufficientQUICK && (
<Typography variant='body2' className={classes.errorText}>
{t('insufficientBalance', { symbol: 'QUICK' })}
</Typography>
)}
</Box>
<Box ml={2} className={classes.convertArrow}>
<ArrowDownward />
</Box>
<Box mt={2} mb={4}>
<Typography variant='body2' color='textSecondary'>
{t('youwillreceive')}:
</Typography>
<Box className={classes.currencyInput}>
<NumericalInput
placeholder='0.00'
value={quickV2Amount}
fontSize={18}
onUserInput={(value) => {
setQUICKV2Amount(value);
const quickAmount = (
Number(value) / GlobalConst.utils.QUICK_CONVERSION_RATE
).toLocaleString('fullwide', {
useGrouping: false,
maximumFractionDigits: quickToken.decimals,
});
setQUICKAmount(quickAmount);
}}
/>
<Typography variant='h6'>QUICK(NEW)</Typography>
</Box>
</Box>
<Box display='flex' justifyContent='center'>
<Button
disabled={
approving ||
attemptConverting ||
isInsufficientQUICK ||
!quickAmount ||
!Number(quickAmount)
}
className={classes.convertButton}
onClick={() => {
if (approval === ApprovalState.APPROVED) {
convertQUICK();
} else {
attemptToApprove();
}
}}
>
{buttonText}
</Button>
</Box>
</Box>
{showConfirm && (
<TransactionConfirmationModal
isOpen={showConfirm}
onDismiss={handleDismissConfirmation}
attemptingTxn={attemptConverting}
txPending={txPending}
hash={txHash}
content={() =>
txError ? (
<TransactionErrorContent
onDismiss={handleDismissConfirmation}
message={txError}
/>
) : (
<ConfirmationModalContent
title={t('convertingQUICK')}
onDismiss={handleDismissConfirmation}
content={() => (
<Box textAlign='center'>
<Box mt={6} mb={5}>
<CircularProgress size={80} />
</Box>
<Typography variant='body1'>
{quickConvertingText}
</Typography>
</Box>
)}
/>
)
}
pendingText={quickConvertingText}
modalContent={
txPending ? txSubmittedQuickConvertText : successQuickConvertedText
}
/>
)}
</Box>
);
}