From 4718f63c949047885ec13b6f8e6d563e6f841e5b Mon Sep 17 00:00:00 2001 From: Ahmed Bouhuolia Date: Wed, 1 Jul 2020 12:51:12 +0200 Subject: [PATCH] - feat: Update react-query package to V 2.1.1. - feat: Favicon setup. - feat: Fix accounts inactivate/activate 1 account. - feat: Seed accounts, expenses and manual journals resource fields. - feat: Validate make journal receivable/payable without contact. - feat: Validate make journal contact without receivable or payable. - feat: More components abstractions. - feat: Use reselect.js to memorize components properties. - fix: Journal type of manual journal. - fix: Sidebar style optimization. - fix: Data-table check-box style optimization. - fix: Data-table spinner style dimensions. - fix: Submit journal with contact_id and contact_type. --- client/package.json | 4 +- client/public/favicon.ico | Bin 3150 -> 0 bytes client/public/favicons/favicon-32.ico | Bin 0 -> 105329 bytes client/public/index.html | 10 +- client/src/components/AccountsSelectList.js | 18 ++ client/src/components/App.js | 6 +- client/src/components/ContactsListField.js | 2 +- client/src/components/CurrenciesSelectList.js | 19 +- .../components/Dashboard/DashboardTopbar.js | 90 ++++---- .../Dashboard/DashboardViewsTabs.js | 3 +- client/src/components/DataTable.js | 17 +- .../DataTableCells/ContactsListFieldCell.js | 7 +- client/src/components/DialogReduxConnect.js | 23 +- client/src/components/DialogsContainer.js | 8 +- .../DynamicFilter/DynamicFilterValueField.js | 2 +- client/src/components/FieldHint.js | 7 +- client/src/components/FieldRequiredHint.js | 3 +- client/src/components/ListSelect.js | 8 + client/src/components/index.js | 11 +- client/src/config/sidebarMenu.js | 4 +- .../Accounting/MakeJournalEntriesForm.js | 84 ++++++-- .../Accounting/MakeJournalEntriesHeader.js | 147 ++++++++----- .../Accounting/MakeJournalEntriesPage.js | 37 ++-- .../Accounting/MakeJournalEntriesTable.js | 47 ++-- .../Accounting/ManualJournalActionsBar.js | 13 +- .../Accounting/ManualJournalsDataTable.js | 194 ++++++++--------- .../Accounting/ManualJournalsList.js | 15 +- .../Accounting/ManualJournalsViewTabs.js | 118 +++++----- .../Accounting/withManualJournals.js | 32 +-- .../Accounting/withManualJournalsActions.js | 6 +- .../src/containers/Accounts/AccountsChart.js | 41 ++-- .../containers/Accounts/AccountsDataTable.js | 144 +++++++------ .../containers/Accounts/AccountsViewsTabs.js | 14 +- .../containers/Accounts/withAccountDetail.js | 6 +- .../Dialogs/AccountFormDialog.container.js | 18 +- .../containers/Dialogs/AccountFormDialog.js | 71 +++--- .../src/containers/Dialogs/CurrencyDialog.js | 20 +- .../Dialogs/ExchangeRateDialog.container.js | 18 +- .../containers/Dialogs/ExchangeRateDialog.js | 33 +-- .../containers/Dialogs/ItemCategoryDialog.js | 35 ++- .../ExchangeRates/withExchangeRates.js | 3 +- .../containers/Expenses/ExpenseActionsBar.js | 32 ++- .../containers/Expenses/ExpenseDataTable.js | 24 ++- client/src/containers/Expenses/ExpenseForm.js | 7 +- .../containers/Expenses/ExpenseFormHeader.js | 26 +-- .../containers/Expenses/ExpenseViewTabs.js | 120 +++++------ .../src/containers/Expenses/ExpensesList.js | 28 ++- .../containers/Expenses/withExpenseDetail.js | 13 +- .../src/containers/Expenses/withExpenses.js | 18 +- .../Expenses/withExpensesActions.js | 2 +- .../BalanceSheet/BalanceSheetActionsBar.js | 7 +- .../FinancialStatements/FinancialReports.js | 28 +-- .../FinancialStatementDateRange.js | 11 +- .../GeneralLedger/GeneralLedgerActionsBar.js | 8 - .../Journal/JournalActionsBar.js | 9 +- .../ReceivableAgingSummaryActionsBar.js | 8 - .../containers/Items/withItemCategories.js | 8 +- .../Items/withItemCategoryDetail.js | 18 +- .../src/containers/Views/withViewDetails.js | 17 +- client/src/lang/en/index.js | 20 +- .../store/ExchangeRate/exchange.selector.js | 10 + .../src/store/accounts/accounts.selectors.js | 11 +- .../customViews/customViews.selectors.js | 32 +-- .../store/dashboard/dashboard.selectors.js | 13 +- client/src/store/expenses/expenses.actions.js | 8 + client/src/store/expenses/expenses.reducer.js | 37 +++- .../src/store/expenses/expenses.selectors.js | 58 +++-- client/src/store/expenses/expenses.types.js | 1 + .../ItemsCategories.selectors.js | 18 ++ .../manualJournals/manualJournals.actions.js | 14 +- .../manualJournals/manualJournals.reducers.js | 18 +- .../manualJournals.selectors.js | 51 ++++- client/src/store/selectors.js | 16 +- client/src/style/App.scss | 41 +++- client/src/style/components/data-table.scss | 29 ++- client/src/style/objects/form.scss | 7 - client/src/style/pages/dashboard.scss | 17 +- client/src/style/pages/expense-form.scss | 5 +- .../src/style/pages/make-journal-entries.scss | 10 +- client/src/style/views/Sidebar.scss | 26 ++- server/src/data/ResourceFieldsKeys.js | 75 +++++-- .../20190822214304_create_accounts_table.js | 4 +- ...0105195823_create_manual_journals_table.js | 2 +- .../database/seeds/seed_resources_fields.js | 202 ++++++++++++++---- server/src/database/seeds/seed_views.js | 5 + server/src/database/seeds/seed_views_roles.js | 9 +- server/src/http/controllers/Accounting.js | 109 +++++++--- server/src/http/controllers/Accounts.js | 4 +- server/src/http/controllers/Expenses.js | 16 +- .../lib/DynamicFilter/DynamicFilterSortBy.js | 13 +- server/src/lib/ViewRolesBuilder/index.js | 2 - server/src/models/ManualJournal.js | 2 +- server/src/models/Model.js | 2 +- server/tests/routes/accounting.test.js | 98 ++++++++- 94 files changed, 1706 insertions(+), 1001 deletions(-) delete mode 100644 client/public/favicon.ico create mode 100644 client/public/favicons/favicon-32.ico create mode 100644 client/src/store/ExchangeRate/exchange.selector.js create mode 100644 client/src/store/itemCategories/ItemsCategories.selectors.js diff --git a/client/package.json b/client/package.json index e7d8b7964..861134a8d 100644 --- a/client/package.json +++ b/client/package.json @@ -73,7 +73,7 @@ "react-hook-form": "^4.9.4", "react-intl": "^3.12.0", "react-loadable": "^5.5.0", - "react-query": "^1.3.3", + "react-query": "^2.4.6", "react-redux": "^7.1.3", "react-router-breadcrumbs-hoc": "^3.2.10", "react-router-dom": "^5.1.2", @@ -128,7 +128,7 @@ "devDependencies": { "@babel/preset-flow": "^7.9.0", "http-proxy-middleware": "^1.0.0", - "react-query-devtools": "^1.1.5", + "react-query-devtools": "^2.1.1", "redux-devtools": "^3.5.0" }, "jest": { diff --git a/client/public/favicon.ico b/client/public/favicon.ico deleted file mode 100644 index bcd5dfd67cd0361b78123e95c2dd96031f27f743..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3150 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 MDeX2GIKR{Qf5okjU;qFB diff --git a/client/public/favicons/favicon-32.ico b/client/public/favicons/favicon-32.ico new file mode 100644 index 0000000000000000000000000000000000000000..cff6d272014fa95368c6173ce36cb06e38e2452e GIT binary patch literal 105329 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 literal 0 HcmV?d00001 diff --git a/client/public/index.html b/client/public/index.html index 68c21886a..abbfd9917 100644 --- a/client/public/index.html +++ b/client/public/index.html @@ -2,14 +2,14 @@ - + - + - React App + Bigcapital @@ -41,7 +41,7 @@ To create a production bundle, use `npm run build` or `yarn build`. --> - + diff --git a/client/src/components/AccountsSelectList.js b/client/src/components/AccountsSelectList.js index 374010f77..e037a7aad 100644 --- a/client/src/components/AccountsSelectList.js +++ b/client/src/components/AccountsSelectList.js @@ -27,11 +27,29 @@ export default function AccountsSelectList({ onAccountSelected && onAccountSelected(account); }, [setSelectedAccount, onAccountSelected]); + // Filters accounts items. + const filterAccountsPredicater = useCallback( + (query, account, _index, exactMatch) => { + const normalizedTitle = account.name.toLowerCase(); + const normalizedQuery = query.toLowerCase(); + + if (exactMatch) { + return normalizedTitle === normalizedQuery; + } else { + return ( + `${account.code} ${normalizedTitle}`.indexOf(normalizedQuery) >= 0 + ); + } + }, + [], + ); + return (