import React from 'react'; import styled from 'styled-components'; import intl from 'react-intl-universal'; import { Button, Position, MenuItem, Menu, Intent, Divider, Classes, } from '@blueprintjs/core'; import { Popover2 } from '@blueprintjs/popover2'; import { Hint, Icon, If, FormattedMessage as T } from 'components'; import { useTransactionsLockingContext } from './TransactionsLockingProvider'; import { safeInvoke } from 'utils'; /** * Transaction locking module item. * @returns {React.JSX} */ export function TransactionsLockingItemModule({ module, ...rest }) { return ( ); } /** * Transactions locking items modules list. * @returns {React.JSX} */ export function TransactionsLockingList({ ...rest }) { const { transactionsLocking: { modules }, } = useTransactionsLockingContext(); return modules.map((module) => ( )); } /** * Transactions locking full module item. * @returns {React.JSX} */ export function TransactionsLockingFull({ ...rest }) { const { transactionsLocking: { all }, } = useTransactionsLockingContext(); return ; } /** * Transactions locking skeleton list. * @returns {React.JSX} */ export function TransactionLockingSkeletonList() { return ( <> ); } /** * Transactions locking skeleton item. * @returns {React.JSX} */ export const TransactionLockingItemSkeleton = ({}) => { return ( XXXX Lorem ipsum dolor sit amet, consectetur adipisicing elit. ); }; const TransactionsLockingItemContext = React.createContext(); const useTransactionsLockingItemContext = () => React.useContext(TransactionsLockingItemContext); /** * Transactions locking item. * @returns {React.JSX} */ export const TransactionLockingContent = (props) => { const { name, description, module, isEnabled, lockToDate, lockReason, // Unlock props. isPartialUnlock, unlockToDate, unlockFromDate, unlockReason, onLock, onCancelLock, onEditLock, onUnlockPartial, onCancelUnlockPartial, } = props; return ( ); }; /** * Transactions locking item content. */ function TransactionsLockingItemContent() { const { name, description, isEnabled, lockToDate, lockReason, // Unlock props. isPartialUnlock, unlockToDate, unlockFromDate, unlockReason, } = useTransactionsLockingItemContext(); return ( {name} {intl.formatHTMLMessage( { id: 'transactions_locking.of_the_module_locked_to' }, { value: lockToDate, }, )} {intl.formatHTMLMessage( { id: 'transactions_locking.lock_reason' }, { value: lockReason }, )} {intl.formatHTMLMessage( { id: 'transactions_locking.partial_unlocked_from' }, { fromDate: unlockFromDate, toDate: unlockToDate, }, )} {intl.formatHTMLMessage( { id: 'transactions_locking.unlock_reason' }, { value: unlockReason }, )} ); } /** * Transactions locking item actions. */ function TransactionsLockingItemActions() { const { module, isEnabled, // Unlock props. isPartialUnlock, onLock, onCancelLock, onEditLock, onUnlockPartial, onCancelUnlockPartial, } = useTransactionsLockingItemContext(); const handleLockClick = (event) => { safeInvoke(onLock, module, event); }; const handleEditBtn = (event) => { safeInvoke(onEditLock, module, isEnabled, event); }; const handleUnlockPartial = (event) => { safeInvoke(onUnlockPartial, module, event); }; const handleUnlockFull = (event) => { safeInvoke(onCancelLock, module, event); }; const handleCancelPartialUnlock = (event) => { safeInvoke(onCancelUnlockPartial, module, event); }; return ( } onClick={handleUnlockFull} /> } onClick={handleUnlockPartial} /> } onClick={handleCancelPartialUnlock} /> } placement={'bottom-start'} minimal={true} > ); } const TransactionLockingWrapp = styled.div` display: flex; align-items: center; border-radius: 6px; border: 1px solid #c4d2d7; padding: 16px 18px; margin-bottom: 25px; background: #fff; box-shadow: 0 4px 20px -5px rgb(0 8 36 / 5%); ${(props) => props.isEnabled && ` border-color: #fc8483; ${TransLockingIcon} { color: #ef6d6d; } `} `; const TransLockingInner = styled.div` display: flex; align-items: center; flex: 1 1 0; `; const TransLockingItemTitle = styled.h1` font-size: 18px; margin: 0 0 8px; line-height: 1; font-weight: 600; `; const TransLockingItemDesc = styled.p` margin-bottom: 0; opacity: 0.9; `; const TransLockingIcon = styled.div` border: 1px solid #d2dde2; height: 45px; width: 45px; text-align: center; line-height: 45px; border-radius: 8px; color: #93a1ba; .bp3-icon { position: relative; top: 1px; } `; export const TransLockingActions = styled.div` display: flex; .bp3-divider { margin: 2px; } `; export const TransLockingContent = styled.div` flex: 1 1 0; margin-left: 20px; width: 100%; padding-right: 10px; `; export const TransLockingReason = styled.div` font-size: 13px; strong { color: #777; } `; const TransUnlockWrap = styled.div` padding-top: 10px; border-top: 1px solid #ddd; margin-top: 10px; ${TransLockingReason} { margin-top: 8px; } ${TransLockingItemDesc} { font-size: 13px; } `; const TransLockWrap = styled.div` ${TransLockingReason} { margin-top: 10px; } `;