mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-21 07:10:33 +00:00
feat: Quick New Dropdown.
This commit is contained in:
8
client/src/common/quickNewOptions.js
Normal file
8
client/src/common/quickNewOptions.js
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
export default [
|
||||||
|
{ id: 'invoices', name: 'Sale invoice' },
|
||||||
|
{ id: 'Purchase invoice', name: 'Purchase invoice' },
|
||||||
|
{ id: 'manual-journals', name: 'Manual journal' },
|
||||||
|
{ id: 'expenses', name: 'Expense' },
|
||||||
|
{ id: 'customers', name: 'Customer' },
|
||||||
|
{ id: 'vendors', name: 'Vendor' },
|
||||||
|
];
|
||||||
@@ -19,7 +19,7 @@ import { Icon, Hint, If } from 'components';
|
|||||||
import withSearch from 'containers/GeneralSearch/withSearch';
|
import withSearch from 'containers/GeneralSearch/withSearch';
|
||||||
import withDashboardActions from 'containers/Dashboard/withDashboardActions';
|
import withDashboardActions from 'containers/Dashboard/withDashboardActions';
|
||||||
import withDashboard from 'containers/Dashboard/withDashboard';
|
import withDashboard from 'containers/Dashboard/withDashboard';
|
||||||
|
import QuickNewDropdown from 'containers/QuickNewDropdown/QuickNewDropdown';
|
||||||
import { compose } from 'utils';
|
import { compose } from 'utils';
|
||||||
|
|
||||||
function DashboardTopbar({
|
function DashboardTopbar({
|
||||||
@@ -48,6 +48,7 @@ function DashboardTopbar({
|
|||||||
toggleSidebarExpend();
|
toggleSidebarExpend();
|
||||||
recordSidebarPreviousExpand();
|
recordSidebarPreviousExpand();
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div class="dashboard__topbar">
|
<div class="dashboard__topbar">
|
||||||
<div class="dashboard__topbar-left">
|
<div class="dashboard__topbar-left">
|
||||||
@@ -128,11 +129,7 @@ function DashboardTopbar({
|
|||||||
icon={<Icon icon={'search-24'} iconSize={20} />}
|
icon={<Icon icon={'search-24'} iconSize={20} />}
|
||||||
text={<T id={'quick_find'} />}
|
text={<T id={'quick_find'} />}
|
||||||
/>
|
/>
|
||||||
<Button
|
<QuickNewDropdown/>
|
||||||
className={Classes.MINIMAL}
|
|
||||||
icon={<Icon icon={'plus-24'} iconSize={20} />}
|
|
||||||
text={<T id={'quick_new'} />}
|
|
||||||
/>
|
|
||||||
<Tooltip
|
<Tooltip
|
||||||
content={<T id={'notifications'} />}
|
content={<T id={'notifications'} />}
|
||||||
position={Position.BOTTOM}
|
position={Position.BOTTOM}
|
||||||
@@ -165,7 +162,7 @@ export default compose(
|
|||||||
pageTitle,
|
pageTitle,
|
||||||
pageSubtitle,
|
pageSubtitle,
|
||||||
editViewId,
|
editViewId,
|
||||||
sidebarExpended
|
sidebarExpended,
|
||||||
})),
|
})),
|
||||||
withDashboardActions,
|
withDashboardActions,
|
||||||
)(DashboardTopbar);
|
)(DashboardTopbar);
|
||||||
|
|||||||
37
client/src/containers/QuickNewDropdown/QuickNewDropdown.js
Normal file
37
client/src/containers/QuickNewDropdown/QuickNewDropdown.js
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import ListSelect from 'components/ListSelect';
|
||||||
|
import { FormattedMessage as T } from 'react-intl';
|
||||||
|
import { useHistory } from 'react-router-dom';
|
||||||
|
import { Icon } from 'components';
|
||||||
|
import { Position } from '@blueprintjs/core';
|
||||||
|
import quickNewOptions from 'common/quickNewOptions';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Quick New Dropdown.
|
||||||
|
*/
|
||||||
|
function QuickNewDropdown() {
|
||||||
|
const history = useHistory();
|
||||||
|
|
||||||
|
const handleClickQuickNew = ({ id }) => {
|
||||||
|
history.push(`/${id}`);
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<ListSelect
|
||||||
|
items={quickNewOptions}
|
||||||
|
onItemSelect={(type) => handleClickQuickNew(type)}
|
||||||
|
textProp={'name'}
|
||||||
|
filterable={false}
|
||||||
|
popoverProps={{ minimal: false, position: Position.BOTTOM }}
|
||||||
|
defaultText={'Select'}
|
||||||
|
buttonProps={{
|
||||||
|
text: <T id={'quick_new'} />,
|
||||||
|
icon: <Icon icon={'plus-24'} iconSize={20} />,
|
||||||
|
minimal: true,
|
||||||
|
}}
|
||||||
|
className={'form-group-quick-new-downDrop'}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default QuickNewDropdown;
|
||||||
@@ -160,7 +160,7 @@ export default {
|
|||||||
new_conditional: '+ New Conditional',
|
new_conditional: '+ New Conditional',
|
||||||
chart_of_accounts: 'Chart of Accounts',
|
chart_of_accounts: 'Chart of Accounts',
|
||||||
exchange_rate_details: 'Exchange Rate Details',
|
exchange_rate_details: 'Exchange Rate Details',
|
||||||
exchange_rate_list: 'Exchange Rate List',
|
exchange_rates_list: 'Exchange Rates List',
|
||||||
manual_journals: 'Manual Journals',
|
manual_journals: 'Manual Journals',
|
||||||
edit_expense_details: 'Edit Expense Details',
|
edit_expense_details: 'Edit Expense Details',
|
||||||
expenses_list: 'Expenses List',
|
expenses_list: 'Expenses List',
|
||||||
@@ -595,13 +595,13 @@ export default {
|
|||||||
delete_estimate: 'Delete Estimate',
|
delete_estimate: 'Delete Estimate',
|
||||||
new_estimate: 'New Estimate',
|
new_estimate: 'New Estimate',
|
||||||
customer_name_: 'Customer name',
|
customer_name_: 'Customer name',
|
||||||
estimate_date_: 'Estismate date',
|
estimate_date_: 'Estimate date',
|
||||||
expiration_date_: 'Expiration date',
|
expiration_date_: 'Expiration date',
|
||||||
estimate_number_: 'Estimate number',
|
estimate_number_: 'Estimate number',
|
||||||
discount: 'Discount %',
|
discount: 'Discount %',
|
||||||
quantity: 'Quantity',
|
quantity: 'Quantity',
|
||||||
rate: 'Rate',
|
rate: 'Rate',
|
||||||
estimate_list: 'Estimate List',
|
estimates_list: 'Estimates List',
|
||||||
estimate_number: 'Estimate Number',
|
estimate_number: 'Estimate Number',
|
||||||
product_and_service: 'Product/Service',
|
product_and_service: 'Product/Service',
|
||||||
the_estimate_has_been_successfully_edited:
|
the_estimate_has_been_successfully_edited:
|
||||||
@@ -612,7 +612,7 @@ export default {
|
|||||||
'The estimate has been successfully deleted.',
|
'The estimate has been successfully deleted.',
|
||||||
once_delete_this_estimate_you_will_able_to_restore_it: `Once you delete this estimate, you won\'t be able to restore it later. Are you sure you want to delete this estimate?`,
|
once_delete_this_estimate_you_will_able_to_restore_it: `Once you delete this estimate, you won\'t be able to restore it later. Are you sure you want to delete this estimate?`,
|
||||||
cannot_be_zero_or_empty: 'cannot be zero or empty.',
|
cannot_be_zero_or_empty: 'cannot be zero or empty.',
|
||||||
invocies: 'Invoices',
|
invoices: 'Invoices',
|
||||||
invoices_list: 'Invoices List',
|
invoices_list: 'Invoices List',
|
||||||
invoice_date: 'Invoice Date',
|
invoice_date: 'Invoice Date',
|
||||||
due_date: 'Due Date',
|
due_date: 'Due Date',
|
||||||
@@ -638,7 +638,7 @@ export default {
|
|||||||
the_invoice_has_been_successfully_deleted:
|
the_invoice_has_been_successfully_deleted:
|
||||||
'The invoice has been successfully deleted.',
|
'The invoice has been successfully deleted.',
|
||||||
once_delete_this_invoice_you_will_able_to_restore_it: `Once you delete this invoice, you won\'t be able to restore it later. Are you sure you want to delete this invoice?`,
|
once_delete_this_invoice_you_will_able_to_restore_it: `Once you delete this invoice, you won\'t be able to restore it later. Are you sure you want to delete this invoice?`,
|
||||||
receipt_list: 'Receipt List',
|
receipts_list: 'Receipts List',
|
||||||
receipts: 'Receipts',
|
receipts: 'Receipts',
|
||||||
receipt: 'Receipt #',
|
receipt: 'Receipt #',
|
||||||
receipt_date_: 'Receipt date',
|
receipt_date_: 'Receipt date',
|
||||||
@@ -661,7 +661,7 @@ export default {
|
|||||||
'The receipt #{number} has been successfully edited.',
|
'The receipt #{number} has been successfully edited.',
|
||||||
the_receipt_has_been_successfully_deleted:
|
the_receipt_has_been_successfully_deleted:
|
||||||
'The receipt has been successfully deleted.',
|
'The receipt has been successfully deleted.',
|
||||||
bill_list: 'Bill List',
|
bills_list: 'Bills List',
|
||||||
bills: 'Bills',
|
bills: 'Bills',
|
||||||
accept: 'Accept',
|
accept: 'Accept',
|
||||||
vendor_name: 'Vendor Name',
|
vendor_name: 'Vendor Name',
|
||||||
@@ -686,7 +686,7 @@ export default {
|
|||||||
deposit_to: 'Deposit to',
|
deposit_to: 'Deposit to',
|
||||||
edit_payment_receive: 'Edit Payment Receive',
|
edit_payment_receive: 'Edit Payment Receive',
|
||||||
delete_payment_receive: 'Delete Payment Receive',
|
delete_payment_receive: 'Delete Payment Receive',
|
||||||
payment_Receive_list: 'Payment Receive List',
|
payment_Receives_list: 'Payment Receives List',
|
||||||
payment_receive: 'Payment Receive',
|
payment_receive: 'Payment Receive',
|
||||||
new_payment_receive: 'New Payment Receive',
|
new_payment_receive: 'New Payment Receive',
|
||||||
payment_receives: 'Payment Receives',
|
payment_receives: 'Payment Receives',
|
||||||
|
|||||||
@@ -16,7 +16,8 @@
|
|||||||
&-left {
|
&-left {
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
&-actions {}
|
&-actions {
|
||||||
|
}
|
||||||
&-sidebar-toggle {
|
&-sidebar-toggle {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -59,6 +60,15 @@
|
|||||||
.bp3-navbar-divider {
|
.bp3-navbar-divider {
|
||||||
margin: 0 8px;
|
margin: 0 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.form-group-quick-new-downDrop {
|
||||||
|
.bp3-popover-target .bp3-button {
|
||||||
|
color: #1552c8;
|
||||||
|
}
|
||||||
|
.bp3-button::after {
|
||||||
|
content: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&-user {
|
&-user {
|
||||||
@@ -403,7 +413,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.tabs--dashboard-views {
|
.tabs--dashboard-views {
|
||||||
|
|
||||||
.#{$ns}-tab {
|
.#{$ns}-tab {
|
||||||
color: #5b606d;
|
color: #5b606d;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
|
|||||||
Reference in New Issue
Block a user