Merge branch 'master' into i18n
* master: Sort import in alphabetical order (#238) Separate external, monorepo and internal imports (#237) Allow `enter` to create new transaction when focused on `cleared` column (#234) Enforce linting in loot-design (#233) style: run linter (#232) refactor: create index.js for aql directory (#68) Revert "build: update yarn.lock" (#230) Fix handling of -0 in budget summary (#229) Update bug-report.yml (#228)
This commit is contained in:
commit
11186c9374
363 changed files with 1899 additions and 1233 deletions
33
.eslintrc.js
33
.eslintrc.js
|
@ -1,10 +1,39 @@
|
|||
module.exports = {
|
||||
plugins: ['prettier'],
|
||||
plugins: ['prettier', 'import'],
|
||||
extends: ['react-app'],
|
||||
rules: {
|
||||
'prettier/prettier': 'error',
|
||||
'no-unused-vars': 'off',
|
||||
'no-loop-func': 'off',
|
||||
'no-restricted-globals': 'off'
|
||||
'no-restricted-globals': 'off',
|
||||
|
||||
'import/no-useless-path-segments': 'error',
|
||||
'import/order': [
|
||||
'error',
|
||||
{
|
||||
alphabetize: {
|
||||
caseInsensitive: true,
|
||||
order: 'asc'
|
||||
},
|
||||
groups: [
|
||||
'builtin', // Built-in types are first
|
||||
'external',
|
||||
['sibling', 'parent'], // Then sibling and parent types. They can be mingled together
|
||||
'index' // Then the index file
|
||||
],
|
||||
'newlines-between': 'always',
|
||||
pathGroups: [
|
||||
// Enforce that React (and react-related packages) is the first import
|
||||
{ group: 'builtin', pattern: 'react?(-*)', position: 'before' },
|
||||
// Separate imports from Actual from "real" external imports
|
||||
{
|
||||
group: 'external',
|
||||
pattern: 'loot-{core,design}/**/*',
|
||||
position: 'after'
|
||||
}
|
||||
],
|
||||
pathGroupsExcludedImportTypes: ['react']
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
|
|
3
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
3
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
|
@ -65,10 +65,11 @@ body:
|
|||
id: operating-system
|
||||
attributes:
|
||||
label: Operating System
|
||||
description: What version of our software are you running?
|
||||
description: What operating system are you using?
|
||||
options:
|
||||
- Windows 11
|
||||
- Windows 10
|
||||
- Mac OSX
|
||||
- Linux
|
||||
- Mobile Device
|
||||
- Other
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
"eslint-config-react-app": "3.0.5",
|
||||
"eslint-loader": "2.1.1",
|
||||
"eslint-plugin-flowtype": "2.50.1",
|
||||
"eslint-plugin-import": "2.14.0",
|
||||
"eslint-plugin-import": "^2.26.0",
|
||||
"eslint-plugin-jsx-a11y": "6.1.2",
|
||||
"eslint-plugin-prettier": "^3.1.4",
|
||||
"eslint-plugin-react": "7.11.1",
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
import React from 'react';
|
||||
|
||||
import { css } from 'glamor';
|
||||
|
||||
import { View } from 'loot-design/src/components/common';
|
||||
import Refresh from 'loot-design/src/svg/v1/Refresh';
|
||||
|
||||
|
|
|
@ -1,19 +1,22 @@
|
|||
import React from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import { css } from 'glamor';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import {
|
||||
init as initConnection,
|
||||
send
|
||||
} from 'loot-core/src/platform/client/fetch';
|
||||
import { styles, hasHiddenScrollbars } from 'loot-design/src/style';
|
||||
|
||||
import installPolyfills from '../polyfills';
|
||||
import FatalError from './FatalError';
|
||||
import ManagementApp from './manager/ManagementApp';
|
||||
import FinancesApp from './FinancesApp';
|
||||
import AppBackground from './AppBackground';
|
||||
import UpdateNotification from './UpdateNotification';
|
||||
import FatalError from './FatalError';
|
||||
import FinancesApp from './FinancesApp';
|
||||
import ManagementApp from './manager/ManagementApp';
|
||||
import MobileWebMessage from './MobileWebMessage';
|
||||
import UpdateNotification from './UpdateNotification';
|
||||
|
||||
class App extends React.Component {
|
||||
state = {
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
import React from 'react';
|
||||
import { View, Block } from 'loot-design/src/components/common';
|
||||
|
||||
import { css } from 'glamor';
|
||||
import AnimatedLoading from 'loot-design/src/svg/v1/AnimatedLoading';
|
||||
|
||||
import { View, Block } from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import AnimatedLoading from 'loot-design/src/svg/v1/AnimatedLoading';
|
||||
|
||||
import Background from './Background';
|
||||
|
||||
function AppBackground({ initializing, loadingText }) {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import React from 'react';
|
||||
|
||||
import { css } from 'glamor';
|
||||
|
||||
import BG from './manager/bg.svg';
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
import React from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import { useTransition, animated } from 'react-spring';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import { View, Text } from 'loot-design/src/components/common';
|
||||
import { colors, styles } from 'loot-design/src/style';
|
||||
|
||||
import AnimatedRefresh from './AnimatedRefresh';
|
||||
|
||||
function BankSyncStatus({ accountsSyncing }) {
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
import React from 'react';
|
||||
|
||||
import CodeMirror from 'codemirror';
|
||||
|
||||
import * as spreadsheet from 'loot-core/src/client/sheetql/spreadsheet';
|
||||
import {
|
||||
send,
|
||||
init as initConnection
|
||||
} from 'loot-core/src/platform/client/fetch';
|
||||
import * as spreadsheet from 'loot-core/src/client/sheetql/spreadsheet';
|
||||
import CodeMirror from 'codemirror';
|
||||
import {
|
||||
View,
|
||||
Button,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import React from 'react';
|
||||
|
||||
import {
|
||||
View,
|
||||
Stack,
|
||||
|
|
|
@ -1,40 +1,41 @@
|
|||
import React, { useMemo } from 'react';
|
||||
import { Router, Route, Redirect, Switch, useLocation } from 'react-router-dom';
|
||||
import { createBrowserHistory } from 'history';
|
||||
import { connect } from 'react-redux';
|
||||
import { DndProvider } from 'react-dnd';
|
||||
import Backend from 'react-dnd-html5-backend';
|
||||
import { connect } from 'react-redux';
|
||||
import { Router, Route, Redirect, Switch, useLocation } from 'react-router-dom';
|
||||
|
||||
import { createBrowserHistory } from 'history';
|
||||
import hotkeys from 'hotkeys-js';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import { AccountsProvider } from 'loot-core/src/client/data-hooks/accounts';
|
||||
import { PayeesProvider } from 'loot-core/src/client/data-hooks/payees';
|
||||
import { SpreadsheetProvider } from 'loot-core/src/client/SpreadsheetProvider';
|
||||
import checkForUpgradeNotifications from 'loot-core/src/client/upgrade-notifications';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import { View } from 'loot-design/src/components/common';
|
||||
import { BudgetMonthCountProvider } from 'loot-design/src/components/budget/BudgetMonthCountContext';
|
||||
import * as undo from 'loot-core/src/platform/client/undo';
|
||||
import { PayeesProvider } from 'loot-core/src/client/data-hooks/payees';
|
||||
import { AccountsProvider } from 'loot-core/src/client/data-hooks/accounts';
|
||||
import { getLocationState } from '../util/location-state';
|
||||
import { makeLocationState } from '../util/location-state';
|
||||
import { PageTypeProvider } from './Page';
|
||||
import { BudgetMonthCountProvider } from 'loot-design/src/components/budget/BudgetMonthCountContext';
|
||||
import { View } from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
|
||||
import { getLocationState, makeLocationState } from '../util/location-state';
|
||||
import Account from './accounts/Account';
|
||||
import { ActiveLocationProvider } from './ActiveLocation';
|
||||
import BankSyncStatus from './BankSyncStatus';
|
||||
|
||||
import Titlebar, { TitlebarProvider } from './Titlebar';
|
||||
import FloatableSidebar, { SidebarProvider } from './FloatableSidebar';
|
||||
import Account from './accounts/Account';
|
||||
import Budget from './budget';
|
||||
import Reports from './reports';
|
||||
import Schedules from './schedules';
|
||||
import EditSchedule from './schedules/EditSchedule';
|
||||
import LinkSchedule from './schedules/LinkSchedule';
|
||||
import DiscoverSchedules from './schedules/DiscoverSchedules';
|
||||
import PostsOfflineNotification from './schedules/PostsOfflineNotification';
|
||||
import FixSplitsTool from './tools/FixSplitsTool';
|
||||
import Settings from './Settings';
|
||||
import FloatableSidebar, { SidebarProvider } from './FloatableSidebar';
|
||||
import GlobalKeys from './GlobalKeys';
|
||||
import Modals from './Modals';
|
||||
import Notifications from './Notifications';
|
||||
import GlobalKeys from './GlobalKeys';
|
||||
import { PageTypeProvider } from './Page';
|
||||
import Reports from './reports';
|
||||
import Schedules from './schedules';
|
||||
import DiscoverSchedules from './schedules/DiscoverSchedules';
|
||||
import EditSchedule from './schedules/EditSchedule';
|
||||
import LinkSchedule from './schedules/LinkSchedule';
|
||||
import PostsOfflineNotification from './schedules/PostsOfflineNotification';
|
||||
import Settings from './Settings';
|
||||
import Titlebar, { TitlebarProvider } from './Titlebar';
|
||||
import FixSplitsTool from './tools/FixSplitsTool';
|
||||
// import Debugger from './Debugger';
|
||||
|
||||
function URLBar() {
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
import React, { useState, useEffect, useContext } from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import { withRouter } from 'react-router-dom';
|
||||
|
||||
import mitt from 'mitt';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import { View } from 'loot-design/src/components/common';
|
||||
import { SIDEBAR_WIDTH } from 'loot-design/src/components/sidebar';
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import React from 'react';
|
||||
import { withRouter } from 'react-router-dom';
|
||||
|
||||
import Platform from 'loot-core/src/client/platform';
|
||||
|
||||
class GlobalKeys extends React.Component {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import React, { useState, useEffect } from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import { withRouter } from 'react-router';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import {
|
||||
View,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import React, { useState } from 'react';
|
||||
|
||||
import {
|
||||
View,
|
||||
Text,
|
||||
|
|
|
@ -1,29 +1,31 @@
|
|||
import React from 'react';
|
||||
import { bindActionCreators } from 'redux';
|
||||
import { connect } from 'react-redux';
|
||||
import { Route, Switch } from 'react-router-dom';
|
||||
import { createLocation } from 'history';
|
||||
|
||||
import Component from '@reactions/component';
|
||||
import { createLocation } from 'history';
|
||||
import { bindActionCreators } from 'redux';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import { send, listen, unlisten } from 'loot-core/src/platform/client/fetch';
|
||||
|
||||
import CreateLocalAccount from 'loot-design/src/components/modals/CreateLocalAccount';
|
||||
import CloseAccount from 'loot-design/src/components/modals/CloseAccount';
|
||||
import SelectLinkedAccounts from 'loot-design/src/components/modals/SelectLinkedAccounts';
|
||||
import ConfigureLinkedAccounts from 'loot-design/src/components/modals/ConfigureLinkedAccounts';
|
||||
import CreateLocalAccount from 'loot-design/src/components/modals/CreateLocalAccount';
|
||||
import EditField from 'loot-design/src/components/modals/EditField';
|
||||
import ImportTransactions from 'loot-design/src/components/modals/ImportTransactions';
|
||||
import LoadBackup from 'loot-design/src/components/modals/LoadBackup';
|
||||
import PlaidExternalMsg from 'loot-design/src/components/modals/PlaidExternalMsg';
|
||||
import ImportTransactions from 'loot-design/src/components/modals/ImportTransactions';
|
||||
import EditField from 'loot-design/src/components/modals/EditField';
|
||||
import CreateAccount from './modals/CreateAccount';
|
||||
import ManagePayeesWithData from './payees/ManagePayeesWithData';
|
||||
import ManageRules from './modals/ManageRules';
|
||||
import EditRule from './modals/EditRule';
|
||||
import MergeUnusedPayees from './modals/MergeUnusedPayees';
|
||||
import SelectLinkedAccounts from 'loot-design/src/components/modals/SelectLinkedAccounts';
|
||||
|
||||
import ConfirmCategoryDelete from './modals/ConfirmCategoryDelete';
|
||||
import WelcomeScreen from './modals/WelcomeScreen';
|
||||
import CreateAccount from './modals/CreateAccount';
|
||||
import CreateEncryptionKey from './modals/CreateEncryptionKey';
|
||||
import EditRule from './modals/EditRule';
|
||||
import FixEncryptionKey from './modals/FixEncryptionKey';
|
||||
import ManageRules from './modals/ManageRules';
|
||||
import MergeUnusedPayees from './modals/MergeUnusedPayees';
|
||||
import WelcomeScreen from './modals/WelcomeScreen';
|
||||
import ManagePayeesWithData from './payees/ManagePayeesWithData';
|
||||
|
||||
function Modals({
|
||||
history,
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
import React, { useState, useEffect, useMemo } from 'react';
|
||||
import { bindActionCreators } from 'redux';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import { bindActionCreators } from 'redux';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import {
|
||||
View,
|
||||
|
@ -10,9 +12,9 @@ import {
|
|||
Stack,
|
||||
ExternalLink
|
||||
} from 'loot-design/src/components/common';
|
||||
import { styles, colors } from 'loot-design/src/style';
|
||||
import Delete from 'loot-design/src/svg/Delete';
|
||||
import Loading from 'loot-design/src/svg/v1/AnimatedLoading';
|
||||
import { styles, colors } from 'loot-design/src/style';
|
||||
|
||||
function compileMessage(message, actions, setLoading, onRemove) {
|
||||
return (
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import React from 'react';
|
||||
import { useHistory } from 'react-router-dom';
|
||||
|
||||
import { Modal, View, Text } from 'loot-design/src/components/common';
|
||||
import { styles } from 'loot-design/src/style';
|
||||
|
||||
|
|
|
@ -1,8 +1,14 @@
|
|||
import React, { useState, useEffect, useRef } from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import { css } from 'glamor';
|
||||
import { Route, Switch, Redirect } from 'react-router-dom';
|
||||
|
||||
import { css } from 'glamor';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import Platform from 'loot-core/src/client/platform';
|
||||
import { send, listen } from 'loot-core/src/platform/client/fetch';
|
||||
import { numberFormats } from 'loot-core/src/shared/util';
|
||||
import { Information } from 'loot-design/src/components/alerts';
|
||||
import {
|
||||
View,
|
||||
Text,
|
||||
|
@ -10,12 +16,8 @@ import {
|
|||
ButtonWithLoading,
|
||||
AnchorLink
|
||||
} from 'loot-design/src/components/common';
|
||||
import { send, listen } from 'loot-core/src/platform/client/fetch';
|
||||
import { numberFormats } from 'loot-core/src/shared/util';
|
||||
import { styles, colors } from 'loot-design/src/style';
|
||||
import { Information } from 'loot-design/src/components/alerts';
|
||||
import ExpandArrow from 'loot-design/src/svg/ExpandArrow';
|
||||
import Platform from 'loot-core/src/client/platform';
|
||||
|
||||
import useServerVersion from '../hooks/useServerVersion';
|
||||
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
import React, { useState, useEffect } from 'react';
|
||||
import { bindActionCreators } from 'redux';
|
||||
import { connect } from 'react-redux';
|
||||
import { withRouter } from 'react-router-dom';
|
||||
|
||||
import { bindActionCreators } from 'redux';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import * as queries from 'loot-core/src/client/queries';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { styles, colors } from 'loot-design/src/style';
|
||||
import {
|
||||
Button,
|
||||
Input,
|
||||
|
@ -11,8 +14,7 @@ import {
|
|||
Text
|
||||
} from 'loot-design/src/components/common';
|
||||
import { Sidebar } from 'loot-design/src/components/sidebar';
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import * as queries from 'loot-core/src/client/queries';
|
||||
import { styles, colors } from 'loot-design/src/style';
|
||||
|
||||
function EditableBudgetName({ prefs, savePrefs }) {
|
||||
const [editing, setEditing] = useState(false);
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import React from 'react';
|
||||
import Cell from 'loot-design/src/components/spreadsheet/Cell';
|
||||
|
||||
import { View } from 'loot-design/src/components/common';
|
||||
import Cell from 'loot-design/src/components/spreadsheet/Cell';
|
||||
|
||||
function SpreadsheetInterface() {
|
||||
return (
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
import React, { useState, useEffect, useRef, useContext } from 'react';
|
||||
import { Switch, Route, withRouter } from 'react-router-dom';
|
||||
import { connect } from 'react-redux';
|
||||
import { Switch, Route, withRouter } from 'react-router-dom';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import Platform from 'loot-core/src/client/platform';
|
||||
import * as queries from 'loot-core/src/client/queries';
|
||||
import { listen } from 'loot-core/src/platform/client/fetch';
|
||||
import Platform from 'loot-core/src/client/platform';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import {
|
||||
View,
|
||||
Text,
|
||||
|
@ -16,15 +16,17 @@ import {
|
|||
P
|
||||
} from 'loot-design/src/components/common';
|
||||
import SheetValue from 'loot-design/src/components/spreadsheet/SheetValue';
|
||||
import ArrowButtonRight1 from 'loot-design/src/svg/v2/ArrowButtonRight1';
|
||||
import NavigationMenu from 'loot-design/src/svg/v2/NavigationMenu';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import ArrowLeft from 'loot-design/src/svg/v1/ArrowLeft';
|
||||
import AlertTriangle from 'loot-design/src/svg/v2/AlertTriangle';
|
||||
import { MonthCountSelector } from './budget/MonthCountSelector';
|
||||
import ArrowButtonRight1 from 'loot-design/src/svg/v2/ArrowButtonRight1';
|
||||
import NavigationMenu from 'loot-design/src/svg/v2/NavigationMenu';
|
||||
|
||||
import AccountSyncCheck from './accounts/AccountSyncCheck';
|
||||
import LoggedInUser from './LoggedInUser';
|
||||
import AnimatedRefresh from './AnimatedRefresh';
|
||||
import { MonthCountSelector } from './budget/MonthCountSelector';
|
||||
import { useSidebar } from './FloatableSidebar';
|
||||
import LoggedInUser from './LoggedInUser';
|
||||
|
||||
export let TitlebarContext = React.createContext();
|
||||
|
||||
|
|
|
@ -1,20 +1,23 @@
|
|||
import React from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import PropTypes from 'prop-types';
|
||||
import { bindActionCreators } from 'redux';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import Intro from './tutorial/Intro';
|
||||
import BudgetSummary from './tutorial/BudgetSummary';
|
||||
|
||||
import BudgetCategories from './tutorial/BudgetCategories';
|
||||
import BudgetInitial from './tutorial/BudgetInitial';
|
||||
import BudgetNewIncome from './tutorial/BudgetNewIncome';
|
||||
import BudgetNextMonth from './tutorial/BudgetNextMonth';
|
||||
import BudgetSummary from './tutorial/BudgetSummary';
|
||||
import CategoryBalance from './tutorial/CategoryBalance';
|
||||
import Final from './tutorial/Final';
|
||||
import Intro from './tutorial/Intro';
|
||||
import Overspending from './tutorial/Overspending';
|
||||
import TransactionAdd from './tutorial/TransactionAdd';
|
||||
import TransactionEnter from './tutorial/TransactionEnter';
|
||||
import BudgetNewIncome from './tutorial/BudgetNewIncome';
|
||||
import CategoryBalance from './tutorial/CategoryBalance';
|
||||
import Overspending from './tutorial/Overspending';
|
||||
import BudgetNextMonth from './tutorial/BudgetNextMonth';
|
||||
import Final from './tutorial/Final';
|
||||
|
||||
function generatePath(innerRect, outerRect) {
|
||||
const i = innerRect;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import React from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import PropTypes from 'prop-types';
|
||||
|
||||
class Tutorial extends React.Component {
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
import React from 'react';
|
||||
import { bindActionCreators } from 'redux';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import { bindActionCreators } from 'redux';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import { View, Text, Link, Button } from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
|
|
|
@ -1,11 +1,29 @@
|
|||
import React, { useState, useEffect, useRef, useMemo } from 'react';
|
||||
import { Trans, useTranslation } from 'react-i18next';
|
||||
import { bindActionCreators } from 'redux';
|
||||
import { useSelector, useDispatch } from 'react-redux';
|
||||
import { Redirect, useParams, useHistory, useLocation } from 'react-router-dom';
|
||||
|
||||
import { debounce } from 'debounce';
|
||||
import { send, listen } from 'loot-core/src/platform/client/fetch';
|
||||
import { bindActionCreators } from 'redux';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import {
|
||||
SchedulesProvider,
|
||||
useCachedSchedules
|
||||
} from 'loot-core/src/client/data-hooks/schedules';
|
||||
import * as queries from 'loot-core/src/client/queries';
|
||||
import q, { runQuery, pagedQuery } from 'loot-core/src/client/query-helpers';
|
||||
import { send, listen } from 'loot-core/src/platform/client/fetch';
|
||||
import {
|
||||
deleteTransaction,
|
||||
updateTransaction,
|
||||
ungroupTransactions
|
||||
} from 'loot-core/src/shared/transactions';
|
||||
import {
|
||||
currencyToInteger,
|
||||
applyChanges,
|
||||
groupById
|
||||
} from 'loot-core/src/shared/util';
|
||||
import {
|
||||
View,
|
||||
Text,
|
||||
|
@ -17,45 +35,30 @@ import {
|
|||
Menu,
|
||||
Stack
|
||||
} from 'loot-design/src/components/common';
|
||||
import {
|
||||
currencyToInteger,
|
||||
applyChanges,
|
||||
groupById
|
||||
} from 'loot-core/src/shared/util';
|
||||
import DotsHorizontalTriple from 'loot-design/src/svg/v1/DotsHorizontalTriple';
|
||||
import Pencil1 from 'loot-design/src/svg/v2/Pencil1';
|
||||
import SearchAlternate from 'loot-design/src/svg/v2/SearchAlternate';
|
||||
import DownloadThickBottom from 'loot-design/src/svg/v2/DownloadThickBottom';
|
||||
import Add from 'loot-design/src/svg/v1/Add';
|
||||
import { KeyHandlers } from 'loot-design/src/components/KeyHandlers';
|
||||
import CellValue from 'loot-design/src/components/spreadsheet/CellValue';
|
||||
import format from 'loot-design/src/components/spreadsheet/format';
|
||||
import useSheetValue from 'loot-design/src/components/spreadsheet/useSheetValue';
|
||||
import CellValue from 'loot-design/src/components/spreadsheet/CellValue';
|
||||
import ArrowButtonRight1 from 'loot-design/src/svg/v2/ArrowButtonRight1';
|
||||
import CheckCircle1 from 'loot-design/src/svg/v2/CheckCircle1';
|
||||
import Loading from 'loot-design/src/svg/v1/AnimatedLoading';
|
||||
import ArrowsExpand3 from 'loot-design/src/svg/v2/ArrowsExpand3';
|
||||
import ArrowsShrink3 from 'loot-design/src/svg/v2/ArrowsShrink3';
|
||||
import * as queries from 'loot-core/src/client/queries';
|
||||
import q, { runQuery, pagedQuery } from 'loot-core/src/client/query-helpers';
|
||||
import { SelectedItemsButton } from 'loot-design/src/components/table';
|
||||
import {
|
||||
deleteTransaction,
|
||||
updateTransaction,
|
||||
ungroupTransactions
|
||||
} from 'loot-core/src/shared/transactions';
|
||||
import { styles, colors } from 'loot-design/src/style';
|
||||
import {
|
||||
SelectedProviderWithItems,
|
||||
useSelectedItems
|
||||
} from 'loot-design/src/components/useSelected';
|
||||
import { KeyHandlers } from 'loot-design/src/components/KeyHandlers';
|
||||
import {
|
||||
SchedulesProvider,
|
||||
useCachedSchedules
|
||||
} from 'loot-core/src/client/data-hooks/schedules';
|
||||
import { styles, colors } from 'loot-design/src/style';
|
||||
import Add from 'loot-design/src/svg/v1/Add';
|
||||
import Loading from 'loot-design/src/svg/v1/AnimatedLoading';
|
||||
import DotsHorizontalTriple from 'loot-design/src/svg/v1/DotsHorizontalTriple';
|
||||
import ArrowButtonRight1 from 'loot-design/src/svg/v2/ArrowButtonRight1';
|
||||
import ArrowsExpand3 from 'loot-design/src/svg/v2/ArrowsExpand3';
|
||||
import ArrowsShrink3 from 'loot-design/src/svg/v2/ArrowsShrink3';
|
||||
import CheckCircle1 from 'loot-design/src/svg/v2/CheckCircle1';
|
||||
import DownloadThickBottom from 'loot-design/src/svg/v2/DownloadThickBottom';
|
||||
import Pencil1 from 'loot-design/src/svg/v2/Pencil1';
|
||||
import SearchAlternate from 'loot-design/src/svg/v2/SearchAlternate';
|
||||
|
||||
import { authorizeBank } from '../../plaid';
|
||||
import AnimatedRefresh from '../AnimatedRefresh';
|
||||
import { useActiveLocation } from '../ActiveLocation';
|
||||
import AnimatedRefresh from '../AnimatedRefresh';
|
||||
import { FilterButton, AppliedFilters } from './Filters';
|
||||
import TransactionList from './TransactionList';
|
||||
import {
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
import React, { useState } from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import { View, Button, Tooltip } from 'loot-design/src/components/common';
|
||||
import ExclamationOutline from 'loot-design/src/svg/v1/ExclamationOutline';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import ExclamationOutline from 'loot-design/src/svg/v1/ExclamationOutline';
|
||||
|
||||
import { reauthorizeBank } from '../../plaid';
|
||||
|
||||
function getErrorMessage(type, code) {
|
||||
|
|
|
@ -1,23 +1,15 @@
|
|||
import React, { useState, useRef, useEffect, useReducer } from 'react';
|
||||
import { useSelector } from 'react-redux';
|
||||
import scopeTab from 'react-modal/lib/helpers/scopeTab';
|
||||
|
||||
import {
|
||||
parse as parseDate,
|
||||
format as formatDate,
|
||||
isValid as isDateValid
|
||||
} from 'date-fns';
|
||||
import scopeTab from 'react-modal/lib/helpers/scopeTab';
|
||||
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { getMonthYearFormat } from 'loot-core/src/shared/months';
|
||||
import { titleFirst } from 'loot-core/src/shared/util';
|
||||
import {
|
||||
View,
|
||||
Text,
|
||||
Tooltip,
|
||||
Stack,
|
||||
Button,
|
||||
Menu,
|
||||
CustomSelect
|
||||
} from 'loot-design/src/components/common';
|
||||
import {
|
||||
mapField,
|
||||
friendlyOp,
|
||||
|
@ -28,11 +20,22 @@ import {
|
|||
FIELD_TYPES,
|
||||
TYPE_INFO
|
||||
} from 'loot-core/src/shared/rules';
|
||||
import { titleFirst } from 'loot-core/src/shared/util';
|
||||
import {
|
||||
View,
|
||||
Text,
|
||||
Tooltip,
|
||||
Stack,
|
||||
Button,
|
||||
Menu,
|
||||
CustomSelect
|
||||
} from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import DeleteIcon from 'loot-design/src/svg/Delete';
|
||||
import SettingsSliderAlternate from 'loot-design/src/svg/v2/SettingsSliderAlternate';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import GenericInput from '../util/GenericInput';
|
||||
|
||||
import { Value } from '../modals/ManageRules';
|
||||
import GenericInput from '../util/GenericInput';
|
||||
|
||||
let filterFields = [
|
||||
'date',
|
||||
|
|
|
@ -1,10 +1,17 @@
|
|||
import React, { useMemo, useCallback } from 'react';
|
||||
import { useSelector } from 'react-redux';
|
||||
|
||||
import {
|
||||
format as formatDate,
|
||||
parseISO,
|
||||
isValid as isDateValid
|
||||
} from 'date-fns';
|
||||
|
||||
import {
|
||||
getAccountsById,
|
||||
getCategoriesById
|
||||
} from 'loot-core/src/client/reducers/queries';
|
||||
import { integerToCurrency } from 'loot-core/src/shared/util';
|
||||
import {
|
||||
Table,
|
||||
Row,
|
||||
|
@ -16,13 +23,9 @@ import {
|
|||
useSelectedItems,
|
||||
useSelectedDispatch
|
||||
} from 'loot-design/src/components/useSelected';
|
||||
import { integerToCurrency } from 'loot-core/src/shared/util';
|
||||
import {
|
||||
getAccountsById,
|
||||
getCategoriesById
|
||||
} from 'loot-core/src/client/reducers/queries';
|
||||
import ArrowsSynchronize from 'loot-design/src/svg/v2/ArrowsSynchronize';
|
||||
import { styles } from 'loot-design/src/style';
|
||||
import ArrowsSynchronize from 'loot-design/src/svg/v2/ArrowsSynchronize';
|
||||
|
||||
import DisplayId from '../util/DisplayId';
|
||||
|
||||
function serializeTransaction(transaction, dateFormat) {
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
import React, { useRef, useEffect, useCallback, useLayoutEffect } from 'react';
|
||||
import { useDispatch } from 'react-redux';
|
||||
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import {
|
||||
splitTransaction,
|
||||
updateTransaction,
|
||||
|
@ -7,9 +9,10 @@ import {
|
|||
realizeTempTransactions,
|
||||
applyTransactionDiff
|
||||
} from 'loot-core/src/shared/transactions';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { getChangedValues, applyChanges } from 'loot-core/src/shared/util';
|
||||
|
||||
import { TransactionTable } from './TransactionsTable';
|
||||
|
||||
const uuid = require('loot-core/src/platform/uuid');
|
||||
|
||||
// When data changes, there are two ways to update the UI:
|
||||
|
|
|
@ -9,41 +9,38 @@ import React, {
|
|||
useReducer
|
||||
} from 'react';
|
||||
import { useSelector, useDispatch } from 'react-redux';
|
||||
|
||||
import {
|
||||
format as formatDate,
|
||||
parseISO,
|
||||
isValid as isDateValid
|
||||
} from 'date-fns';
|
||||
import { View, Text, Tooltip, Button } from 'loot-design/src/components/common';
|
||||
import CategoryAutocomplete from 'loot-design/src/components/CategorySelect';
|
||||
import PayeeAutocomplete from 'loot-design/src/components/PayeeAutocomplete';
|
||||
import AccountAutocomplete from 'loot-design/src/components/AccountAutocomplete';
|
||||
import DateSelect from 'loot-design/src/components/DateSelect';
|
||||
import RightArrow2 from 'loot-design/src/svg/RightArrow2';
|
||||
import LeftArrow2 from 'loot-design/src/svg/LeftArrow2';
|
||||
import Hyperlink2 from 'loot-design/src/svg/v2/Hyperlink2';
|
||||
import CheveronDown from 'loot-design/src/svg/v1/CheveronDown';
|
||||
import CalendarIcon from 'loot-design/src/svg/v2/Calendar';
|
||||
import ArrowsSynchronize from 'loot-design/src/svg/v2/ArrowsSynchronize';
|
||||
import {
|
||||
integerToCurrency,
|
||||
amountToInteger,
|
||||
titleFirst
|
||||
} from 'loot-core/src/shared/util';
|
||||
import evalArithmetic from 'loot-core/src/shared/arithmetic';
|
||||
|
||||
import { useCachedSchedules } from 'loot-core/src/client/data-hooks/schedules';
|
||||
import {
|
||||
getAccountsById,
|
||||
getPayeesById,
|
||||
getCategoriesById
|
||||
} from 'loot-core/src/client/reducers/queries';
|
||||
import evalArithmetic from 'loot-core/src/shared/arithmetic';
|
||||
import { currentDay } from 'loot-core/src/shared/months';
|
||||
import { getScheduledAmount } from 'loot-core/src/shared/schedules';
|
||||
import {
|
||||
splitTransaction,
|
||||
updateTransaction,
|
||||
deleteTransaction,
|
||||
addSplitTransaction
|
||||
} from 'loot-core/src/shared/transactions';
|
||||
import { styles, colors } from 'loot-design/src/style';
|
||||
import {
|
||||
integerToCurrency,
|
||||
amountToInteger,
|
||||
titleFirst
|
||||
} from 'loot-core/src/shared/util';
|
||||
import AccountAutocomplete from 'loot-design/src/components/AccountAutocomplete';
|
||||
import CategoryAutocomplete from 'loot-design/src/components/CategorySelect';
|
||||
import { View, Text, Tooltip, Button } from 'loot-design/src/components/common';
|
||||
import DateSelect from 'loot-design/src/components/DateSelect';
|
||||
import PayeeAutocomplete from 'loot-design/src/components/PayeeAutocomplete';
|
||||
import {
|
||||
Cell,
|
||||
Field,
|
||||
|
@ -56,13 +53,19 @@ import {
|
|||
useTableNavigator,
|
||||
Table
|
||||
} from 'loot-design/src/components/table';
|
||||
import { useMergedRefs } from 'loot-design/src/components/useMergedRefs';
|
||||
import {
|
||||
useSelectedDispatch,
|
||||
useSelectedItems
|
||||
} from 'loot-design/src/components/useSelected';
|
||||
import { useMergedRefs } from 'loot-design/src/components/useMergedRefs';
|
||||
import { useCachedSchedules } from 'loot-core/src/client/data-hooks/schedules';
|
||||
import { getScheduledAmount } from 'loot-core/src/shared/schedules';
|
||||
import { styles, colors } from 'loot-design/src/style';
|
||||
import LeftArrow2 from 'loot-design/src/svg/LeftArrow2';
|
||||
import RightArrow2 from 'loot-design/src/svg/RightArrow2';
|
||||
import CheveronDown from 'loot-design/src/svg/v1/CheveronDown';
|
||||
import ArrowsSynchronize from 'loot-design/src/svg/v2/ArrowsSynchronize';
|
||||
import CalendarIcon from 'loot-design/src/svg/v2/Calendar';
|
||||
import Hyperlink2 from 'loot-design/src/svg/v2/Hyperlink2';
|
||||
|
||||
import { getStatusProps } from '../schedules/StatusBadge';
|
||||
|
||||
let TABLE_BACKGROUND_COLOR = colors.n11;
|
||||
|
@ -1634,7 +1637,8 @@ export let TransactionTable = React.forwardRef((props, ref) => {
|
|||
onAddSplit(lastTransaction.id);
|
||||
} else if (
|
||||
(newNavigator.focusedField === 'debit' ||
|
||||
newNavigator.focusedField === 'credit') &&
|
||||
newNavigator.focusedField === 'credit' ||
|
||||
newNavigator.focusedField === 'cleared') &&
|
||||
newNavigator.editingId === lastTransaction.id &&
|
||||
(!isSplit || !lastTransaction.error)
|
||||
) {
|
||||
|
|
|
@ -1,23 +1,27 @@
|
|||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
|
||||
import { render, fireEvent } from '@testing-library/react';
|
||||
import { format as formatDate, parse as parseDate } from 'date-fns';
|
||||
import { integerToCurrency } from 'loot-core/src/shared/util';
|
||||
import { initServer } from 'loot-core/src/platform/client/fetch';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
|
||||
import {
|
||||
generateTransaction,
|
||||
generateAccount,
|
||||
generateCategoryGroups,
|
||||
TestProvider
|
||||
} from 'loot-core/src/mocks';
|
||||
import { initServer } from 'loot-core/src/platform/client/fetch';
|
||||
import {
|
||||
addSplitTransaction,
|
||||
realizeTempTransactions,
|
||||
splitTransaction,
|
||||
updateTransaction
|
||||
} from 'loot-core/src/shared';
|
||||
import { integerToCurrency } from 'loot-core/src/shared/util';
|
||||
import { SelectedProviderWithItems } from 'loot-design/src/components';
|
||||
|
||||
import { SplitsExpandedProvider, TransactionTable } from './TransactionsTable';
|
||||
|
||||
const uuid = require('loot-core/src/platform/uuid');
|
||||
|
||||
const accounts = [generateAccount('Bank of America')];
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
import React from 'react';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import { View } from 'loot-design/src/components/common';
|
||||
|
||||
import { useBudgetMonthCount } from 'loot-design/src/components/budget/BudgetMonthCountContext';
|
||||
import { View } from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import CalendarIcon from 'loot-design/src/svg/v2/Calendar';
|
||||
|
||||
function Calendar({ color, onClick }) {
|
||||
|
|
|
@ -1,20 +1,8 @@
|
|||
import React, { useContext, useMemo } from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import { send, listen } from 'loot-core/src/platform/client/fetch';
|
||||
import * as monthUtils from 'loot-core/src/shared/months';
|
||||
import { getValidMonthBounds } from 'loot-design/src/components/budget/MonthsContext';
|
||||
|
||||
import * as rollover from 'loot-design/src/components/budget/rollover/rollover-components';
|
||||
import { RolloverContext } from 'loot-design/src/components/budget/rollover/RolloverContext';
|
||||
|
||||
import * as report from 'loot-design/src/components/budget/report/components';
|
||||
import { ReportProvider } from 'loot-design/src/components/budget/report/ReportContext';
|
||||
|
||||
import DynamicBudgetTable from 'loot-design/src/components/budget/DynamicBudgetTable';
|
||||
import SpreadsheetContext from 'loot-design/src/components/spreadsheet/SpreadsheetContext';
|
||||
import { View } from 'loot-design/src/components/common';
|
||||
import { styles } from 'loot-design/src/style';
|
||||
import {
|
||||
addCategory,
|
||||
updateCategory,
|
||||
|
@ -25,6 +13,17 @@ import {
|
|||
updateGroup,
|
||||
deleteGroup
|
||||
} from 'loot-core/src/shared/categories.js';
|
||||
import * as monthUtils from 'loot-core/src/shared/months';
|
||||
import DynamicBudgetTable from 'loot-design/src/components/budget/DynamicBudgetTable';
|
||||
import { getValidMonthBounds } from 'loot-design/src/components/budget/MonthsContext';
|
||||
import * as report from 'loot-design/src/components/budget/report/components';
|
||||
import { ReportProvider } from 'loot-design/src/components/budget/report/ReportContext';
|
||||
import * as rollover from 'loot-design/src/components/budget/rollover/rollover-components';
|
||||
import { RolloverContext } from 'loot-design/src/components/budget/rollover/RolloverContext';
|
||||
import { View } from 'loot-design/src/components/common';
|
||||
import SpreadsheetContext from 'loot-design/src/components/spreadsheet/SpreadsheetContext';
|
||||
import { styles } from 'loot-design/src/style';
|
||||
|
||||
import { TitlebarContext } from '../Titlebar';
|
||||
|
||||
let _initialBudgetMonth = null;
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
import React from 'react';
|
||||
|
||||
import styled from 'styled-components';
|
||||
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
|
||||
const Container = styled.div`
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
import React, { useState, useEffect } from 'react';
|
||||
import { useDispatch } from 'react-redux';
|
||||
import { useHistory } from 'react-router-dom';
|
||||
|
||||
import { signOut, loggedIn } from 'loot-core/src/client/actions/user';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import {
|
||||
View,
|
||||
Text,
|
||||
|
@ -8,8 +11,7 @@ import {
|
|||
ButtonWithLoading
|
||||
} from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import { signOut, loggedIn } from 'loot-core/src/client/actions/user';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
|
||||
import { Title, Input } from './subscribe/common';
|
||||
|
||||
export default function ConfigServer() {
|
||||
|
|
|
@ -1,21 +1,23 @@
|
|||
import React from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import { createBrowserHistory } from 'history';
|
||||
import { Switch, Redirect, Router, Route } from 'react-router-dom';
|
||||
|
||||
import { createBrowserHistory } from 'history';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import { View, Text } from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
|
||||
import useServerVersion from '../../hooks/useServerVersion';
|
||||
import LoggedInUser from '../LoggedInUser';
|
||||
import Notifications from '../Notifications';
|
||||
import useServerVersion from '../../hooks/useServerVersion';
|
||||
import ServerURL from './ServerURL';
|
||||
|
||||
import Modals from './Modals';
|
||||
import Login from './subscribe/Login';
|
||||
import Bootstrap from './subscribe/Bootstrap';
|
||||
import Error from './subscribe/Error';
|
||||
import ChangePassword from './subscribe/ChangePassword';
|
||||
import ConfigServer from './ConfigServer';
|
||||
import Modals from './Modals';
|
||||
import ServerURL from './ServerURL';
|
||||
import Bootstrap from './subscribe/Bootstrap';
|
||||
import ChangePassword from './subscribe/ChangePassword';
|
||||
import Error from './subscribe/Error';
|
||||
import Login from './subscribe/Login';
|
||||
|
||||
function Version() {
|
||||
const version = useServerVersion();
|
||||
|
|
|
@ -1,17 +1,20 @@
|
|||
import React from 'react';
|
||||
import { bindActionCreators } from 'redux';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import Component from '@reactions/component';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { bindActionCreators } from 'redux';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { View } from 'loot-design/src/components/common';
|
||||
import BudgetList from 'loot-design/src/components/manager/BudgetList';
|
||||
import LoadBackup from 'loot-design/src/components/modals/LoadBackup';
|
||||
import DeleteFile from 'loot-design/src/components/manager/DeleteFile';
|
||||
import Import from 'loot-design/src/components/manager/Import';
|
||||
import ImportActual from 'loot-design/src/components/manager/ImportActual';
|
||||
import ImportYNAB4 from 'loot-design/src/components/manager/ImportYNAB4';
|
||||
import ImportYNAB5 from 'loot-design/src/components/manager/ImportYNAB5';
|
||||
import ImportActual from 'loot-design/src/components/manager/ImportActual';
|
||||
import DeleteFile from 'loot-design/src/components/manager/DeleteFile';
|
||||
import LoadBackup from 'loot-design/src/components/modals/LoadBackup';
|
||||
|
||||
import CreateEncryptionKey from '../modals/CreateEncryptionKey';
|
||||
import FixEncryptionKey from '../modals/FixEncryptionKey';
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import React, { useState, useEffect } from 'react';
|
||||
import { View, Text, AnchorLink } from 'loot-design/src/components/common';
|
||||
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { View, Text, AnchorLink } from 'loot-design/src/components/common';
|
||||
|
||||
export default function ServerURL() {
|
||||
let [url, setUrl] = useState(null);
|
||||
|
|
|
@ -1,14 +1,16 @@
|
|||
import React, { useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useDispatch } from 'react-redux';
|
||||
import { useHistory } from 'react-router-dom';
|
||||
|
||||
import { createBudget } from 'loot-core/src/client/actions/budgets';
|
||||
import { loggedIn } from 'loot-core/src/client/actions/user';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { View, Text, Button } from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import { loggedIn } from 'loot-core/src/client/actions/user';
|
||||
import { createBudget } from 'loot-core/src/client/actions/budgets';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { ConfirmPasswordForm } from './ConfirmPasswordForm';
|
||||
|
||||
import { useBootstrapped, Title } from './common';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfirmPasswordForm } from './ConfirmPasswordForm';
|
||||
|
||||
export default function Bootstrap() {
|
||||
const { t } = useTranslation();
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
import React, { useState } from 'react';
|
||||
import { useDispatch } from 'react-redux';
|
||||
import { useHistory } from 'react-router-dom';
|
||||
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { View, Text, Button } from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { ConfirmPasswordForm } from './ConfirmPasswordForm';
|
||||
|
||||
import { Title } from './common';
|
||||
import { ConfirmPasswordForm } from './ConfirmPasswordForm';
|
||||
|
||||
export default function ChangePassword() {
|
||||
let dispatch = useDispatch();
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
import React, { useState } from 'react';
|
||||
|
||||
import { View, ButtonWithLoading } from 'loot-design/src/components/common';
|
||||
|
||||
import { Input } from './common';
|
||||
|
||||
export function ConfirmPasswordForm({ buttons, onSetPassword, onError }) {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import React from 'react';
|
||||
import { useHistory, useLocation } from 'react-router-dom';
|
||||
|
||||
import { View, Text, Button } from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
import React, { useState } from 'react';
|
||||
import { useDispatch } from 'react-redux';
|
||||
import { useHistory } from 'react-router-dom';
|
||||
|
||||
import { createBudget } from 'loot-core/src/client/actions/budgets';
|
||||
import { loggedIn } from 'loot-core/src/client/actions/user';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import {
|
||||
View,
|
||||
Text,
|
||||
|
@ -8,9 +12,7 @@ import {
|
|||
ButtonWithLoading
|
||||
} from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import { loggedIn } from 'loot-core/src/client/actions/user';
|
||||
import { createBudget } from 'loot-core/src/client/actions/budgets';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
|
||||
import { useBootstrapped, Title, Input } from './common';
|
||||
|
||||
export default function Login() {
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
import React, { useEffect, useState } from 'react';
|
||||
import { useHistory, useLocation } from 'react-router-dom';
|
||||
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import {
|
||||
Text,
|
||||
Button,
|
||||
Input as BaseInput
|
||||
} from 'loot-design/src/components/common';
|
||||
import { colors, styles } from 'loot-design/src/style';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
|
||||
// There are two URLs that dance with each other: `/login` and
|
||||
// `/bootstrap`. Both of these URLs check the state of the the server
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
import React from 'react';
|
||||
|
||||
import { NativeCategorySelect } from 'loot-design/src/components/CategorySelect';
|
||||
import {
|
||||
View,
|
||||
Text,
|
||||
|
@ -7,7 +9,6 @@ import {
|
|||
Button
|
||||
} from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import { NativeCategorySelect } from 'loot-design/src/components/CategorySelect';
|
||||
|
||||
class ConfirmCategoryDelete extends React.Component {
|
||||
state = { transferCategory: null, error: null };
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
import React from 'react';
|
||||
import { bindActionCreators } from 'redux';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import { bindActionCreators } from 'redux';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import { View, Text, Modal, Button } from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
|
||||
import { authorizeBank } from '../../plaid';
|
||||
|
||||
class CreateAccount extends React.Component {
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
import React, { useState } from 'react';
|
||||
|
||||
import { css } from 'glamor';
|
||||
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { getCreateKeyError } from 'loot-core/src/shared/errors';
|
||||
import {
|
||||
View,
|
||||
Text,
|
||||
|
@ -11,9 +15,7 @@ import {
|
|||
Input,
|
||||
InitialFocus
|
||||
} from 'loot-design/src/components/common';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import { getCreateKeyError } from 'loot-core/src/shared/errors';
|
||||
|
||||
export default function CreateEncryptionKey({
|
||||
modalProps,
|
||||
|
|
|
@ -1,24 +1,14 @@
|
|||
import React, { useState, useEffect, useRef, useCallback } from 'react';
|
||||
import { useDispatch, useSelector } from 'react-redux';
|
||||
|
||||
import {
|
||||
initiallyLoadPayees,
|
||||
setUndoEnabled
|
||||
} from 'loot-core/src/client/actions/queries';
|
||||
import { useSchedules } from 'loot-core/src/client/data-hooks/schedules';
|
||||
import q, { runQuery } from 'loot-core/src/client/query-helpers';
|
||||
import {
|
||||
View,
|
||||
Text,
|
||||
Modal,
|
||||
Button,
|
||||
Stack,
|
||||
CustomSelect,
|
||||
Tooltip
|
||||
} from 'loot-design/src/components/common';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import SubtractIcon from 'loot-design/src/svg/Subtract';
|
||||
import AddIcon from 'loot-design/src/svg/Add';
|
||||
import InformationOutline from 'loot-design/src/svg/v1/InformationOutline';
|
||||
import * as monthUtils from 'loot-core/src/shared/months';
|
||||
import {
|
||||
mapField,
|
||||
friendlyOp,
|
||||
|
@ -29,21 +19,33 @@ import {
|
|||
FIELD_TYPES,
|
||||
TYPE_INFO
|
||||
} from 'loot-core/src/shared/rules';
|
||||
import useSelected, {
|
||||
SelectedProvider
|
||||
} from 'loot-design/src/components/useSelected';
|
||||
import { useSchedules } from 'loot-core/src/client/data-hooks/schedules';
|
||||
import {
|
||||
integerToCurrency,
|
||||
integerToAmount,
|
||||
amountToInteger
|
||||
} from 'loot-core/src/shared/util';
|
||||
import * as monthUtils from 'loot-core/src/shared/months';
|
||||
import {
|
||||
View,
|
||||
Text,
|
||||
Modal,
|
||||
Button,
|
||||
Stack,
|
||||
CustomSelect,
|
||||
Tooltip
|
||||
} from 'loot-design/src/components/common';
|
||||
import useSelected, {
|
||||
SelectedProvider
|
||||
} from 'loot-design/src/components/useSelected';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import AddIcon from 'loot-design/src/svg/Add';
|
||||
import SubtractIcon from 'loot-design/src/svg/Subtract';
|
||||
import InformationOutline from 'loot-design/src/svg/v1/InformationOutline';
|
||||
|
||||
import SimpleTransactionsTable from '../accounts/SimpleTransactionsTable';
|
||||
import { StatusBadge } from '../schedules/StatusBadge';
|
||||
import { BetweenAmountInput } from '../util/AmountInput';
|
||||
import DisplayId from '../util/DisplayId';
|
||||
import GenericInput from '../util/GenericInput';
|
||||
import { BetweenAmountInput } from '../util/AmountInput';
|
||||
|
||||
function updateValue(array, value, update) {
|
||||
return array.map(v => (v === value ? update() : v));
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
import React, { useState } from 'react';
|
||||
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { getTestKeyError } from 'loot-core/src/shared/errors';
|
||||
import {
|
||||
View,
|
||||
Text,
|
||||
|
@ -11,9 +14,7 @@ import {
|
|||
InitialFocus,
|
||||
ExternalLink
|
||||
} from 'loot-design/src/components/common';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import { getTestKeyError } from 'loot-core/src/shared/errors';
|
||||
|
||||
export default function FixEncryptionKey({
|
||||
modalProps,
|
||||
|
|
|
@ -1,11 +1,23 @@
|
|||
import React, { useState, useEffect, useRef, useCallback } from 'react';
|
||||
import { useDispatch, useSelector } from 'react-redux';
|
||||
import { css } from 'glamor';
|
||||
|
||||
import { format as formatDate, parseISO } from 'date-fns';
|
||||
import * as undo from 'loot-core/src/platform/client/undo';
|
||||
import { css } from 'glamor';
|
||||
|
||||
import { pushModal } from 'loot-core/src/client/actions/modals';
|
||||
import { initiallyLoadPayees } from 'loot-core/src/client/actions/queries';
|
||||
import q from 'loot-core/src/client/query-helpers';
|
||||
import { liveQueryContext } from 'loot-core/src/client/query-hooks';
|
||||
import { getPayeesById } from 'loot-core/src/client/reducers/queries';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import * as undo from 'loot-core/src/platform/client/undo';
|
||||
import { getMonthYearFormat } from 'loot-core/src/shared/months';
|
||||
import { mapField, friendlyOp } from 'loot-core/src/shared/rules';
|
||||
import {
|
||||
extractScheduleConds,
|
||||
getRecurringDescription
|
||||
} from 'loot-core/src/shared/schedules';
|
||||
import { integerToCurrency } from 'loot-core/src/shared/util';
|
||||
import {
|
||||
View,
|
||||
Text,
|
||||
|
@ -28,18 +40,8 @@ import useSelected, {
|
|||
useSelectedItems,
|
||||
SelectedProvider
|
||||
} from 'loot-design/src/components/useSelected';
|
||||
import { integerToCurrency } from 'loot-core/src/shared/util';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { pushModal } from 'loot-core/src/client/actions/modals';
|
||||
import { mapField, friendlyOp } from 'loot-core/src/shared/rules';
|
||||
import ArrowRight from 'loot-design/src/svg/RightArrow2';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import { getMonthYearFormat } from 'loot-core/src/shared/months';
|
||||
import {
|
||||
extractScheduleConds,
|
||||
getRecurringDescription
|
||||
} from 'loot-core/src/shared/schedules';
|
||||
import { getPayeesById } from 'loot-core/src/client/reducers/queries';
|
||||
import ArrowRight from 'loot-design/src/svg/RightArrow2';
|
||||
|
||||
let SchedulesQuery = liveQueryContext(q('schedules').select('*'));
|
||||
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
import React, { useState, useRef, useEffect } from 'react';
|
||||
import { useDispatch, useSelector } from 'react-redux';
|
||||
|
||||
import { replaceModal } from 'loot-core/src/client/actions/modals';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { Information } from 'loot-design/src/components/alerts';
|
||||
import {
|
||||
View,
|
||||
Text,
|
||||
|
@ -8,10 +12,7 @@ import {
|
|||
Button,
|
||||
P
|
||||
} from 'loot-design/src/components/common';
|
||||
import { Information } from 'loot-design/src/components/alerts';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { replaceModal } from 'loot-core/src/client/actions/modals';
|
||||
|
||||
let highlightStyle = { color: colors.p5 };
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import React from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import {
|
||||
View,
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
import React, { useState, useEffect, useRef } from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import * as undo from 'loot-core/src/platform/client/undo';
|
||||
import { send, listen } from 'loot-core/src/platform/client/fetch';
|
||||
import { ManagePayees } from 'loot-design/src/components/payees';
|
||||
import * as undo from 'loot-core/src/platform/client/undo';
|
||||
import { applyChanges } from 'loot-core/src/shared/util';
|
||||
import { ManagePayees } from 'loot-design/src/components/payees';
|
||||
|
||||
function ManagePayeesWithData({
|
||||
history,
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
import React, { useState, useEffect } from 'react';
|
||||
|
||||
import * as d from 'date-fns';
|
||||
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import * as monthUtils from 'loot-core/src/shared/months';
|
||||
import { integerToCurrency } from 'loot-core/src/shared/util';
|
||||
import {
|
||||
View,
|
||||
Text,
|
||||
|
@ -7,15 +12,12 @@ import {
|
|||
P,
|
||||
AlignedText
|
||||
} from 'loot-design/src/components/common';
|
||||
import { styles } from 'loot-design/src/style';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import * as monthUtils from 'loot-core/src/shared/months';
|
||||
import { integerToCurrency } from 'loot-core/src/shared/util';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import Header from './Header';
|
||||
import { colors, styles } from 'loot-design/src/style';
|
||||
|
||||
import Change from './Change';
|
||||
import CashFlowGraph from './graphs/CashFlowGraph';
|
||||
import { cashFlowByDate } from './graphs/cash-flow-spreadsheet';
|
||||
import CashFlowGraph from './graphs/CashFlowGraph';
|
||||
import Header from './Header';
|
||||
import useReport from './useReport';
|
||||
import { useArgsMemo } from './util';
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import React from 'react';
|
||||
import { styles } from 'loot-design/src/style';
|
||||
|
||||
import { integerToCurrency } from 'loot-core/src/shared/util';
|
||||
import { Block } from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import { colors, styles } from 'loot-design/src/style';
|
||||
|
||||
function Change({ amount, style }) {
|
||||
return (
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
import React from 'react';
|
||||
import { View } from 'loot-design/src/components/common';
|
||||
import AutoSizer from 'react-virtualized-auto-sizer';
|
||||
|
||||
import { View } from 'loot-design/src/components/common';
|
||||
|
||||
class Container extends React.Component {
|
||||
render() {
|
||||
const { style, children } = this.props;
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
import React from 'react';
|
||||
|
||||
import * as d from 'date-fns';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
|
||||
import { Block } from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
|
||||
function DateRange({ start, end }) {
|
||||
start = d.parseISO(start);
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
import React from 'react';
|
||||
import { styles } from 'loot-design/src/style';
|
||||
|
||||
import * as monthUtils from 'loot-core/src/shared/months';
|
||||
import {
|
||||
View,
|
||||
Select,
|
||||
Button,
|
||||
ButtonLink
|
||||
} from 'loot-design/src/components/common';
|
||||
import * as monthUtils from 'loot-core/src/shared/months';
|
||||
import { styles } from 'loot-design/src/style';
|
||||
import ArrowLeft from 'loot-design/src/svg/v1/ArrowLeft';
|
||||
|
||||
function validateStart(allMonths, start, end) {
|
||||
|
|
|
@ -1,20 +1,22 @@
|
|||
import React, { useState, useEffect } from 'react';
|
||||
import { bindActionCreators } from 'redux';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import * as d from 'date-fns';
|
||||
import { bindActionCreators } from 'redux';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import { View, P } from 'loot-design/src/components/common';
|
||||
import { styles } from 'loot-design/src/style';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import * as monthUtils from 'loot-core/src/shared/months';
|
||||
import { integerToCurrency } from 'loot-core/src/shared/util';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import Header from './Header';
|
||||
import { fromDateRepr } from './util';
|
||||
import useReport from './useReport';
|
||||
import { View, P } from 'loot-design/src/components/common';
|
||||
import { styles } from 'loot-design/src/style';
|
||||
|
||||
import Change from './Change';
|
||||
import netWorthSpreadsheet from './graphs/net-worth-spreadsheet';
|
||||
import NetWorthGraph from './graphs/NetWorthGraph';
|
||||
import Change from './Change';
|
||||
import { useArgsMemo } from './util';
|
||||
import Header from './Header';
|
||||
import useReport from './useReport';
|
||||
import { fromDateRepr, useArgsMemo } from './util';
|
||||
|
||||
function NetWorth({ accounts }) {
|
||||
const [earliestMonth, setEarliestMonth] = useState(null);
|
||||
|
|
|
@ -1,22 +1,25 @@
|
|||
import React from 'react';
|
||||
import { bindActionCreators } from 'redux';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import { bindActionCreators } from 'redux';
|
||||
import { VictoryBar, VictoryGroup, VictoryVoronoiContainer } from 'victory';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import { View, Block, AnchorLink } from 'loot-design/src/components/common';
|
||||
import { colors, styles } from 'loot-design/src/style';
|
||||
import * as monthUtils from 'loot-core/src/shared/months';
|
||||
import { integerToCurrency } from 'loot-core/src/shared/util';
|
||||
import { useArgsMemo } from './util';
|
||||
import { View, Block, AnchorLink } from 'loot-design/src/components/common';
|
||||
import { colors, styles } from 'loot-design/src/style';
|
||||
|
||||
import Change from './Change';
|
||||
import theme from './chart-theme';
|
||||
import Container from './Container';
|
||||
import DateRange from './DateRange';
|
||||
import { simpleCashFlow } from './graphs/cash-flow-spreadsheet';
|
||||
import netWorthSpreadsheet from './graphs/net-worth-spreadsheet';
|
||||
import NetWorthGraph from './graphs/NetWorthGraph';
|
||||
import Tooltip from './Tooltip';
|
||||
import useReport from './useReport';
|
||||
import netWorthSpreadsheet from './graphs/net-worth-spreadsheet';
|
||||
import { simpleCashFlow } from './graphs/cash-flow-spreadsheet';
|
||||
import NetWorthGraph from './graphs/NetWorthGraph';
|
||||
import Change from './Change';
|
||||
import DateRange from './DateRange';
|
||||
import { useArgsMemo } from './util';
|
||||
|
||||
function Card({ flex, to, style, children }) {
|
||||
const containerProps = { flex, margin: 15 };
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
import React from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
import { VictoryTooltip } from 'victory';
|
||||
|
||||
import { css, before } from 'glamor';
|
||||
import { VictoryTooltip } from 'victory';
|
||||
|
||||
import { colors } from 'loot-design/src/style';
|
||||
|
||||
class Tooltip extends React.Component {
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
import React from 'react';
|
||||
|
||||
import * as d from 'date-fns';
|
||||
import {
|
||||
VictoryChart,
|
||||
VictoryBar,
|
||||
|
@ -7,11 +9,12 @@ import {
|
|||
VictoryVoronoiContainer,
|
||||
VictoryGroup
|
||||
} from 'victory';
|
||||
import * as d from 'date-fns';
|
||||
|
||||
import { colors } from 'loot-design/src/style';
|
||||
|
||||
import theme from '../chart-theme';
|
||||
import Container from '../Container';
|
||||
import Tooltip from '../Tooltip';
|
||||
import theme from '../chart-theme';
|
||||
|
||||
function CashFlowGraph({ style, start, end, graphData, isConcise, compact }) {
|
||||
return (
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
import React from 'react';
|
||||
|
||||
import * as d from 'date-fns';
|
||||
import {
|
||||
VictoryChart,
|
||||
VictoryBar,
|
||||
|
@ -7,10 +9,10 @@ import {
|
|||
VictoryVoronoiContainer,
|
||||
VictoryGroup
|
||||
} from 'victory';
|
||||
import * as d from 'date-fns';
|
||||
|
||||
import theme from '../chart-theme';
|
||||
import Container from '../Container';
|
||||
import Tooltip from '../Tooltip';
|
||||
import theme from '../chart-theme';
|
||||
|
||||
function Area({ start, end, data, style, scale, range }) {
|
||||
const zero = scale.y(0);
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
import React from 'react';
|
||||
import * as monthUtils from 'loot-core/src/shared/months';
|
||||
|
||||
import * as d from 'date-fns';
|
||||
import { AlignedText } from 'loot-design/src/components/common';
|
||||
import { integerToCurrency, integerToAmount } from 'loot-core/src/shared/util';
|
||||
|
||||
import q from 'loot-core/src/client/query-helpers';
|
||||
import * as monthUtils from 'loot-core/src/shared/months';
|
||||
import { integerToCurrency, integerToAmount } from 'loot-core/src/shared/util';
|
||||
import { AlignedText } from 'loot-design/src/components/common';
|
||||
|
||||
import { fromDateRepr, fromDateReprToDay, runAll, index } from '../util';
|
||||
|
||||
export function simpleCashFlow(start, end) {
|
||||
|
|
|
@ -1,13 +1,16 @@
|
|||
import React from 'react';
|
||||
import * as monthUtils from 'loot-core/src/shared/months';
|
||||
|
||||
import * as d from 'date-fns';
|
||||
import { AlignedText } from 'loot-design/src/components/common';
|
||||
|
||||
import q, { runQuery } from 'loot-core/src/client/query-helpers';
|
||||
import * as monthUtils from 'loot-core/src/shared/months';
|
||||
import {
|
||||
integerToCurrency,
|
||||
integerToAmount,
|
||||
amountToInteger
|
||||
} from 'loot-core/src/shared/util';
|
||||
import { AlignedText } from 'loot-design/src/components/common';
|
||||
|
||||
import { index } from '../util';
|
||||
|
||||
export default function createSpreadsheet(start, end, accounts) {
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
import React from 'react';
|
||||
import { Route } from 'react-router-dom';
|
||||
|
||||
import { View } from 'loot-design/src/components/common';
|
||||
import Overview from './Overview';
|
||||
import NetWorth from './NetWorth';
|
||||
|
||||
import CashFlow from './CashFlow';
|
||||
import NetWorth from './NetWorth';
|
||||
import Overview from './Overview';
|
||||
|
||||
class Reports extends React.Component {
|
||||
render() {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { useMemo } from 'react';
|
||||
|
||||
import { runQuery } from 'loot-core/src/client/query-helpers';
|
||||
|
||||
export function useArgsMemo(func) {
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
import React, { useState, useEffect } from 'react';
|
||||
import { useLocation, useHistory } from 'react-router-dom';
|
||||
import q, { runQuery } from 'loot-core/src/client/query-helpers';
|
||||
|
||||
import Platform from 'loot-core/src/client/platform';
|
||||
import q, { runQuery } from 'loot-core/src/client/query-helpers';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { getRecurringDescription } from 'loot-core/src/shared/schedules';
|
||||
import {
|
||||
View,
|
||||
Stack,
|
||||
|
@ -17,13 +19,13 @@ import {
|
|||
Field,
|
||||
SelectCell
|
||||
} from 'loot-design/src/components/table';
|
||||
import { getRecurringDescription } from 'loot-core/src/shared/schedules';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import useSelected, {
|
||||
useSelectedDispatch,
|
||||
useSelectedItems,
|
||||
SelectedProvider
|
||||
} from 'loot-design/src/components/useSelected';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
|
||||
import { Page } from '../Page';
|
||||
import DisplayId from '../util/DisplayId';
|
||||
import { ScheduleAmountCell } from './SchedulesTable';
|
||||
|
|
|
@ -1,31 +1,32 @@
|
|||
import React, { useEffect, useReducer } from 'react';
|
||||
import { useParams, useHistory } from 'react-router-dom';
|
||||
import { useDispatch, useSelector } from 'react-redux';
|
||||
import { useParams, useHistory } from 'react-router-dom';
|
||||
|
||||
import { pushModal } from 'loot-core/src/client/actions/modals';
|
||||
import { send, sendCatch } from 'loot-core/src/platform/client/fetch';
|
||||
import q, { runQuery, liveQuery } from 'loot-core/src/client/query-helpers';
|
||||
import { extractScheduleConds } from 'loot-core/src/shared/schedules';
|
||||
import * as monthUtils from 'loot-core/src/shared/months';
|
||||
import { useCachedPayees } from 'loot-core/src/client/data-hooks/payees';
|
||||
import q, { runQuery, liveQuery } from 'loot-core/src/client/query-helpers';
|
||||
import { send, sendCatch } from 'loot-core/src/platform/client/fetch';
|
||||
import * as monthUtils from 'loot-core/src/shared/months';
|
||||
import { extractScheduleConds } from 'loot-core/src/shared/schedules';
|
||||
import AccountAutocomplete from 'loot-design/src/components/AccountAutocomplete';
|
||||
import { Stack, View, Text, Button } from 'loot-design/src/components/common';
|
||||
import DateSelect from 'loot-design/src/components/DateSelect';
|
||||
import {
|
||||
FormField,
|
||||
FormLabel,
|
||||
Checkbox
|
||||
} from 'loot-design/src/components/forms';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import PayeeAutocomplete from 'loot-design/src/components/PayeeAutocomplete';
|
||||
import AccountAutocomplete from 'loot-design/src/components/AccountAutocomplete';
|
||||
import { Stack, View, Text, Button } from 'loot-design/src/components/common';
|
||||
import DateSelect from 'loot-design/src/components/DateSelect';
|
||||
import RecurringSchedulePicker from 'loot-design/src/components/RecurringSchedulePicker';
|
||||
import { SelectedItemsButton } from 'loot-design/src/components/table';
|
||||
import useSelected, {
|
||||
SelectedProvider
|
||||
} from 'loot-design/src/components/useSelected';
|
||||
import RecurringSchedulePicker from 'loot-design/src/components/RecurringSchedulePicker';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
|
||||
import SimpleTransactionsTable from '../accounts/SimpleTransactionsTable';
|
||||
import { usePageType } from '../Page';
|
||||
import { Page } from '../Page';
|
||||
import { OpSelect } from '../modals/EditRule';
|
||||
import { Page, usePageType } from '../Page';
|
||||
import { AmountInput, BetweenAmountInput } from '../util/AmountInput';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
import React, { useCallback } from 'react';
|
||||
import { useSelector } from 'react-redux';
|
||||
import { useLocation, useHistory } from 'react-router-dom';
|
||||
|
||||
import { useSchedules } from 'loot-core/src/client/data-hooks/schedules';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { Text } from 'loot-design/src/components/common';
|
||||
|
||||
import { Page } from '../Page';
|
||||
import { SchedulesTable } from './SchedulesTable';
|
||||
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
import React from 'react';
|
||||
import { useLocation, useHistory } from 'react-router-dom';
|
||||
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { Text, P, Button, Stack } from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
|
||||
import { Page } from '../Page';
|
||||
import DisplayId from '../util/DisplayId';
|
||||
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
import React, { useState, useMemo } from 'react';
|
||||
import { useSelector } from 'react-redux';
|
||||
|
||||
import * as monthUtils from 'loot-core/src/shared/months';
|
||||
import { getScheduledAmount } from 'loot-core/src/shared/schedules';
|
||||
import { integerToCurrency } from 'loot-core/src/shared/util';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import {
|
||||
View,
|
||||
Text,
|
||||
|
@ -16,10 +18,10 @@ import {
|
|||
Field,
|
||||
Cell
|
||||
} from 'loot-design/src/components/table';
|
||||
import * as monthUtils from 'loot-core/src/shared/months';
|
||||
import { getScheduledAmount } from 'loot-core/src/shared/schedules';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import DotsHorizontalTriple from 'loot-design/src/svg/v1/DotsHorizontalTriple';
|
||||
import Check from 'loot-design/src/svg/v2/Check';
|
||||
|
||||
import DisplayId from '../util/DisplayId';
|
||||
import { StatusBadge } from './StatusBadge';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
import React from 'react';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import { View, Text } from 'loot-design/src/components/common';
|
||||
import { titleFirst } from 'loot-core/src/shared/util';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import EditSkull1 from 'loot-design/src/svg/v2/EditSkull1';
|
||||
import { titleFirst } from 'loot-core/src/shared/util';
|
||||
import { View, Text } from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import AlertTriangle from 'loot-design/src/svg/v2/AlertTriangle';
|
||||
import CalendarIcon from 'loot-design/src/svg/v2/Calendar';
|
||||
import ValidationCheck from 'loot-design/src/svg/v2/ValidationCheck';
|
||||
import FavoriteStar from 'loot-design/src/svg/v2/FavoriteStar';
|
||||
import CheckCircle1 from 'loot-design/src/svg/v2/CheckCircle1';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import EditSkull1 from 'loot-design/src/svg/v2/EditSkull1';
|
||||
import FavoriteStar from 'loot-design/src/svg/v2/FavoriteStar';
|
||||
import ValidationCheck from 'loot-design/src/svg/v2/ValidationCheck';
|
||||
|
||||
export function getStatusProps(status) {
|
||||
let color, backgroundColor, Icon, title;
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
import React from 'react';
|
||||
import { useHistory } from 'react-router-dom';
|
||||
import { View, Button } from 'loot-design/src/components/common';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
|
||||
import { useSchedules } from 'loot-core/src/client/data-hooks/schedules';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { View, Button } from 'loot-design/src/components/common';
|
||||
|
||||
import { Page } from '../Page';
|
||||
import { SchedulesTable, ROW_HEIGHT } from './SchedulesTable';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
import React, { useState } from 'react';
|
||||
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import { View, P, ButtonWithLoading } from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
|
||||
import { Page } from '../Page';
|
||||
|
||||
function renderResults(results) {
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
import React from 'react';
|
||||
|
||||
import { Tooltip, Pointer, P } from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import Navigation from './Navigation';
|
||||
|
||||
import { Title } from './common';
|
||||
import Navigation from './Navigation';
|
||||
|
||||
function BudgetInitial({ targetRect, navigationProps }) {
|
||||
return (
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
import React from 'react';
|
||||
import { bindActionCreators } from 'redux';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import { bindActionCreators } from 'redux';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import { P, Button } from 'loot-design/src/components/common';
|
||||
|
||||
import { Title, Standalone, useMinimized } from './common';
|
||||
import Navigation from './Navigation';
|
||||
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
import React from 'react';
|
||||
|
||||
import { Tooltip, Pointer, P } from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import Navigation from './Navigation';
|
||||
|
||||
import { Title } from './common';
|
||||
import Navigation from './Navigation';
|
||||
|
||||
function BudgetSummary({ targetRect, navigationProps }) {
|
||||
return (
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
import React from 'react';
|
||||
import { bindActionCreators } from 'redux';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import { bindActionCreators } from 'redux';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import { View, P, Button } from 'loot-design/src/components/common';
|
||||
import Navigation from './Navigation';
|
||||
|
||||
import { Standalone, Title, useMinimized } from './common';
|
||||
import Navigation from './Navigation';
|
||||
|
||||
function BudgetNextMonth({ stepTwo, navigationProps }) {
|
||||
let [minimized, toggle] = useMinimized();
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
import React from 'react';
|
||||
|
||||
import { Tooltip, Pointer, P } from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import Navigation from './Navigation';
|
||||
|
||||
import { Title } from './common';
|
||||
import Navigation from './Navigation';
|
||||
|
||||
function BudgetSummary({ fromYNAB, targetRect, navigationProps }) {
|
||||
return (
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
import React from 'react';
|
||||
|
||||
import { P, Button } from 'loot-design/src/components/common';
|
||||
import Navigation from './Navigation';
|
||||
|
||||
import { Standalone, Title, useMinimized } from './common';
|
||||
import Navigation from './Navigation';
|
||||
|
||||
function CategoryBalance({ targetRect, navigationProps }) {
|
||||
let [minimized, toggle] = useMinimized();
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
import React from 'react';
|
||||
|
||||
import { P } from 'loot-design/src/components/common';
|
||||
import Navigation from './Navigation';
|
||||
|
||||
import { Standalone, Title } from './common';
|
||||
import Navigation from './Navigation';
|
||||
|
||||
function DeleteTransactions({ targetRect, navigationProps }) {
|
||||
return (
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
import React from 'react';
|
||||
|
||||
import { P, ModalButtons, Button } from 'loot-design/src/components/common';
|
||||
|
||||
import { Standalone, Title, ExternalLink } from './common';
|
||||
|
||||
function Final({ targetRect, navigationProps }) {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import React from 'react';
|
||||
|
||||
import {
|
||||
View,
|
||||
Text,
|
||||
|
@ -6,6 +7,7 @@ import {
|
|||
ModalButtons,
|
||||
Button
|
||||
} from 'loot-design/src/components/common';
|
||||
|
||||
import { Standalone, Title, ExternalLink } from './common';
|
||||
|
||||
function Intro({ fromYNAB, nextTutorialStage, closeTutorial }) {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import React from 'react';
|
||||
|
||||
import { Button, ModalButtons } from 'loot-design/src/components/common';
|
||||
|
||||
function Navigation({
|
||||
|
|
|
@ -1,14 +1,17 @@
|
|||
import React from 'react';
|
||||
import { bindActionCreators } from 'redux';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import { bindActionCreators } from 'redux';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import SheetValue from 'loot-design/src/components/spreadsheet/SheetValue';
|
||||
import NamespaceContext from 'loot-design/src/components/spreadsheet/NamespaceContext';
|
||||
import { P, View, Text, Button } from 'loot-design/src/components/common';
|
||||
import * as monthUtils from 'loot-core/src/shared/months';
|
||||
import { integerToCurrency } from 'loot-core/src/shared/util';
|
||||
import Navigation from './Navigation';
|
||||
import { P, View, Text, Button } from 'loot-design/src/components/common';
|
||||
import NamespaceContext from 'loot-design/src/components/spreadsheet/NamespaceContext';
|
||||
import SheetValue from 'loot-design/src/components/spreadsheet/SheetValue';
|
||||
|
||||
import { Standalone, Title, useMinimized } from './common';
|
||||
import Navigation from './Navigation';
|
||||
|
||||
function Overspending({ navigationProps, stepTwo }) {
|
||||
let currentMonth = monthUtils.currentMonth();
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
import React from 'react';
|
||||
|
||||
import { Tooltip, Pointer, P } from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
import Navigation from './Navigation';
|
||||
|
||||
import { Title } from './common';
|
||||
import Navigation from './Navigation';
|
||||
|
||||
function TransactionAdd({ targetRect, navigationProps }) {
|
||||
return (
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
import React from 'react';
|
||||
import { P } from 'loot-design/src/components/common';
|
||||
|
||||
import * as monthUtils from 'loot-core/src/shared/months';
|
||||
import Navigation from './Navigation';
|
||||
import { P } from 'loot-design/src/components/common';
|
||||
|
||||
import { Standalone, Title } from './common';
|
||||
import Navigation from './Navigation';
|
||||
|
||||
function TransactionEnter({ fromYNAB, navigationProps }) {
|
||||
const currentDay = monthUtils.currentDay();
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
import React from 'react';
|
||||
import { P } from 'loot-design/src/components/common';
|
||||
|
||||
import { css } from 'glamor';
|
||||
import Navigation from './Navigation';
|
||||
|
||||
import { P } from 'loot-design/src/components/common';
|
||||
|
||||
import { Standalone } from './common';
|
||||
import Navigation from './Navigation';
|
||||
|
||||
function TransactionFinalize({ navigationProps }) {
|
||||
return (
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
import React, { useState } from 'react';
|
||||
|
||||
import { View, AnchorLink } from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
|
||||
import AnimateIn from './AnimateIn';
|
||||
|
||||
export function Title({ children }) {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import React, { useState } from 'react';
|
||||
|
||||
import {
|
||||
integerToCurrency,
|
||||
currencyToInteger
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import React from 'react';
|
||||
import { CachedPayees } from 'loot-core/src/client/data-hooks/payees';
|
||||
|
||||
import { CachedAccounts } from 'loot-core/src/client/data-hooks/accounts';
|
||||
import { CachedPayees } from 'loot-core/src/client/data-hooks/payees';
|
||||
import { Text } from 'loot-design/src/components/common';
|
||||
import { colors } from 'loot-design/src/style';
|
||||
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
import React from 'react';
|
||||
import { useSelector } from 'react-redux';
|
||||
|
||||
import { getMonthYearFormat } from 'loot-core/src/shared/months';
|
||||
import { View, Input } from 'loot-design/src/components/common';
|
||||
import PayeeAutocomplete from 'loot-design/src/components/PayeeAutocomplete';
|
||||
import AccountAutocomplete from 'loot-design/src/components/AccountAutocomplete';
|
||||
import Autocomplete from 'loot-design/src/components/Autocomplete';
|
||||
import CategoryAutocomplete from 'loot-design/src/components/CategorySelect';
|
||||
import { View, Input } from 'loot-design/src/components/common';
|
||||
import DateSelect from 'loot-design/src/components/DateSelect';
|
||||
import PayeeAutocomplete from 'loot-design/src/components/PayeeAutocomplete';
|
||||
import RecurringSchedulePicker from 'loot-design/src/components/RecurringSchedulePicker';
|
||||
|
||||
export default function GenericInput({
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import * as sharedListeners from 'loot-core/src/client/shared-listeners';
|
||||
import { send, listen } from 'loot-core/src/platform/client/fetch';
|
||||
import * as undo from 'loot-core/src/platform/client/undo';
|
||||
import * as sharedListeners from 'loot-core/src/client/shared-listeners';
|
||||
|
||||
export function handleGlobalEvents(actions, store) {
|
||||
global.Actual.onEventFromMain('update-downloaded', (event, info) => {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { useState, useEffect } from 'react';
|
||||
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
|
||||
function useServerVersion() {
|
||||
|
|
|
@ -5,25 +5,28 @@ import './browser-preload';
|
|||
// A hack for now: this makes sure it's appended before glamor
|
||||
import '@reach/listbox/styles.css';
|
||||
|
||||
import './locales';
|
||||
import React from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
import { Provider } from 'react-redux';
|
||||
|
||||
import {
|
||||
createStore,
|
||||
combineReducers,
|
||||
applyMiddleware,
|
||||
bindActionCreators
|
||||
} from 'redux';
|
||||
import { Provider } from 'react-redux';
|
||||
import constants from 'loot-core/src/client/constants';
|
||||
import reducers from 'loot-core/src/client/reducers';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
import q, { runQuery } from 'loot-core/src/client/query-helpers';
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import thunk from 'redux-thunk';
|
||||
|
||||
import * as actions from 'loot-core/src/client/actions';
|
||||
import constants from 'loot-core/src/client/constants';
|
||||
import q, { runQuery } from 'loot-core/src/client/query-helpers';
|
||||
import reducers from 'loot-core/src/client/reducers';
|
||||
import { initialState as initialAppState } from 'loot-core/src/client/reducers/app';
|
||||
import { handleGlobalEvents } from './global-events';
|
||||
import './locales';
|
||||
import { send } from 'loot-core/src/platform/client/fetch';
|
||||
|
||||
import App from './components/App';
|
||||
import { handleGlobalEvents } from './global-events';
|
||||
|
||||
// See https://github.com/WICG/focus-visible. Only makes the blue
|
||||
// focus outline appear from keyboard events.
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
"electron-is-dev": "2.0.0",
|
||||
"electron-log": "4.3.2",
|
||||
"electron-updater": "4.3.8",
|
||||
"loot-core": "workspace:*",
|
||||
"loot-core": "*",
|
||||
"node-fetch": "^1.6.3",
|
||||
"node-ipc": "9.1.4"
|
||||
},
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
"bin": "./index.js",
|
||||
"homepage": "https://github.com/actualbudget/actual/tree/master/packages/import-ynab4#readme",
|
||||
"dependencies": {
|
||||
"@actual-app/api": "workspace:*",
|
||||
"@actual-app/api": "^1.0.0",
|
||||
"adm-zip": "^0.5.9",
|
||||
"date-fns": "2.0.0-alpha.27",
|
||||
"slash": "3.0.0",
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
"bin": "./index.js",
|
||||
"homepage": "https://github.com/actualbudget/actual/tree/master/packages/import-ynab5#readme",
|
||||
"dependencies": {
|
||||
"@actual-app/api": "workspace:*",
|
||||
"@actual-app/api": "^1.0.0",
|
||||
"date-fns": "2.0.0-alpha.27",
|
||||
"uuid": "3.3.2"
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue