diff --git a/client/jsconfig.json b/client/jsconfig.json
deleted file mode 100644
index ee1b584ef..000000000
--- a/client/jsconfig.json
+++ /dev/null
@@ -1,8 +0,0 @@
-
-{
- "compilerOptions": {
- "jsx": "react",
- "baseUrl": "src"
- },
- "include": ["src"]
-}
\ No newline at end of file
diff --git a/client/package.json b/client/package.json
index 56d99a20e..976cf75fa 100644
--- a/client/package.json
+++ b/client/package.json
@@ -131,10 +131,15 @@
},
"devDependencies": {
"@babel/preset-flow": "^7.9.0",
+ "@types/jest": "^26.0.15",
+ "@types/node": "^14.14.9",
+ "@types/react": "^17.0.0",
+ "@types/react-dom": "^17.0.0",
"@welldone-software/why-did-you-render": "^6.0.0-rc.1",
"http-proxy-middleware": "^1.0.0",
"react-query-devtools": "^2.1.1",
- "redux-devtools": "^3.5.0"
+ "redux-devtools": "^3.5.0",
+ "typescript": "^4.1.2"
},
"jest": {
"roots": [
diff --git a/client/src/common/classes.js b/client/src/common/classes.js
index fed98ed41..e1102405b 100644
--- a/client/src/common/classes.js
+++ b/client/src/common/classes.js
@@ -8,6 +8,7 @@ const CLASSES = {
DATATABLE_EDITOR: 'datatable-editor',
DATATABLE_EDITOR_ACTIONS: 'datatable-editor__actions',
DATATABLE_EDITOR_ITEMS_ENTRIES: 'items-entries-table',
+ DATATABLE_EDITOR_HAS_TOTAL_ROW: 'has-total-row',
PAGE_FORM: 'page-form',
PAGE_FORM_HEADER: 'page-form__header',
@@ -16,6 +17,7 @@ const CLASSES = {
PAGE_FORM_HEADER_BIG_NUMBERS: 'page-form__big-numbers',
PAGE_FORM_TABS: 'page-form__tabs',
PAGE_FORM_BODY: 'page-form__body',
+ PAGE_FORM_STRIP_STYLE: 'page-form--strip',
PAGE_FORM_FOOTER: 'page-form__footer',
PAGE_FORM_FLOATING_ACTIONS: 'page-form__floating-actions',
@@ -29,6 +31,8 @@ const CLASSES = {
PAGE_FORM_CUSTOMER: 'page-form--customer',
PAGE_FORM_VENDOR: 'page-form--customer',
PAGE_FORM_ITEM: 'page-form--item',
+ PAGE_FORM_MAKE_JOURNAL: 'page-form--make-journal-entries',
+ PAGE_FORM_EXPENSE: 'page-form--expense',
FORM_GROUP_LIST_SELECT: 'form-group--select-list',
diff --git a/client/src/components/AccountsSelectList.js b/client/src/components/AccountsSelectList.js
index 5eae83ea0..585d96b01 100644
--- a/client/src/components/AccountsSelectList.js
+++ b/client/src/components/AccountsSelectList.js
@@ -16,7 +16,8 @@ export default function AccountsSelectList({
popoverFill = false,
filterByRootTypes = [],
filterByTypes = [],
- filterByNormal
+ filterByNormal,
+ buttonProps = {}
}) {
// Filters accounts based on filter props.
const filteredAccounts = useMemo(() => {
@@ -113,6 +114,7 @@ export default function AccountsSelectList({
);
diff --git a/client/src/components/CurrencySelectList.js b/client/src/components/CurrencySelectList.js
index dbcf8a43f..03cb8cce9 100644
--- a/client/src/components/CurrencySelectList.js
+++ b/client/src/components/CurrencySelectList.js
@@ -1,5 +1,6 @@
-import React, { useCallback, useState, useEffect, useMemo } from 'react';
+import React, { useCallback, useState } from 'react';
import { FormattedMessage as T } from 'react-intl';
+import classNames from 'classnames';
import { ListSelect } from 'components';
import { MenuItem } from '@blueprintjs/core';
@@ -8,6 +9,7 @@ export default function CurrencySelectList({
selectedCurrencyCode,
defaultSelectText = ,
onCurrencySelected,
+ className,
...restProps
}) {
const [selectedCurrency, setSelectedCurrency] = useState(null);
@@ -54,6 +56,7 @@ export default function CurrencySelectList({
itemPredicate={filterCurrencies}
itemRenderer={currencyCodeRenderer}
popoverProps={{ minimal: true }}
+ className={classNames('form-group--select-list', className)}
{...restProps}
/>
);
diff --git a/client/src/components/Dashboard/Dashboard.js b/client/src/components/Dashboard/Dashboard.js
index 047374735..dbfcdc9d9 100644
--- a/client/src/components/Dashboard/Dashboard.js
+++ b/client/src/components/Dashboard/Dashboard.js
@@ -12,47 +12,39 @@ import PreferencesSidebar from 'components/Preferences/PreferencesSidebar';
import Search from 'containers/GeneralSearch/Search';
import DashboardSplitPane from 'components/Dashboard/DashboardSplitePane';
-
import withSettingsActions from 'containers/Settings/withSettingsActions';
import { compose } from 'utils';
-
function Dashboard({
// #withSettings
requestFetchOptions,
}) {
- const fetchOptions = useQuery(
- ['options'], () => requestFetchOptions(),
- );
+ const fetchOptions = useQuery(['options'], () => requestFetchOptions());
return (
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
);
}
-export default compose(
- withSettingsActions,
-)(Dashboard);
\ No newline at end of file
+export default compose(withSettingsActions)(Dashboard);
diff --git a/client/src/components/Dashboard/DashboardSplitePane.js b/client/src/components/Dashboard/DashboardSplitePane.js
index 6a73d01c9..a6a2445e4 100644
--- a/client/src/components/Dashboard/DashboardSplitePane.js
+++ b/client/src/components/Dashboard/DashboardSplitePane.js
@@ -27,7 +27,7 @@ function DashboardSplitPane({
{
toggleSidebarExpend();
+ recordSidebarPreviousExpand();
};
return (