1
0
Fork 0
mirror of https://github.com/muerwre/vault-frontend.git synced 2025-04-24 20:36:40 +07:00

added react fast reload

This commit is contained in:
Fedor Katurov 2020-11-29 10:51:04 +07:00
parent 25dade6c67
commit 6a6985c39b
4 changed files with 45 additions and 37 deletions

View file

@ -1,4 +1,5 @@
const CracoAlias = require('craco-alias'); const CracoAlias = require('craco-alias');
const fastRefreshCracoPlugin = require('craco-fast-refresh');
module.exports = { module.exports = {
webpack: { webpack: {
@ -14,27 +15,28 @@ module.exports = {
mode: 'file', mode: 'file',
}, },
jest: { jest: {
setupTestFrameworkScriptFile: "<rootDir>/src/setupTests.js", setupTestFrameworkScriptFile: '<rootDir>/src/setupTests.js',
configure: { configure: {
moduleNameMapper: { moduleNameMapper: {
"^~/(.*)$": "<rootDir>/src/$1", '^~/(.*)$': '<rootDir>/src/$1',
"^.+\\.scss$": "identity-obj-proxy" '^.+\\.scss$': 'identity-obj-proxy',
}, },
snapshotSerializers: ["enzyme-to-json/serializer"], snapshotSerializers: ['enzyme-to-json/serializer'],
moduleFileExtensions: ["js", "json", "ts", "tsx", "jsx", "node"], moduleFileExtensions: ['js', 'json', 'ts', 'tsx', 'jsx', 'node'],
verbose: true, verbose: true,
roots: ["<rootDir>/src"], roots: ['<rootDir>/src'],
transform: { transform: {
"^.+\\.tsx?$": "ts-jest", '^.+\\.tsx?$': 'ts-jest',
"^.+\\.ts?$": "babel-jest", '^.+\\.ts?$': 'babel-jest',
"^.+\\.js?$": "ts-jest", '^.+\\.js?$': 'ts-jest',
"^.+\\.jsx?$": "babel-jest" '^.+\\.jsx?$': 'babel-jest',
},
preset: 'ts-jest/presets/js-with-ts',
testEnvironment: 'node',
}, },
preset: "ts-jest/presets/js-with-ts",
testEnvironment: "node"
}
}, },
plugins: [ plugins: [
{ plugin: fastRefreshCracoPlugin },
{ {
plugin: CracoAlias, plugin: CracoAlias,
options: { options: {

View file

@ -44,8 +44,7 @@
}, },
"eslintConfig": { "eslintConfig": {
"extends": [ "extends": [
"react-app", "react-app"
"react-app/jest"
] ]
}, },
"browserslist": { "browserslist": {
@ -61,12 +60,13 @@
] ]
}, },
"devDependencies": { "devDependencies": {
"@craco/craco": "5.8.0",
"@types/classnames": "^2.2.7", "@types/classnames": "^2.2.7",
"@types/node": "^11.13.22", "@types/node": "^11.13.22",
"@types/ramda": "^0.26.33", "@types/ramda": "^0.26.33",
"@types/react-redux": "^7.1.11", "@types/react-redux": "^7.1.11",
"@craco/craco": "5.8.0",
"craco-alias": "^2.1.1", "craco-alias": "^2.1.1",
"craco-fast-refresh": "^1.0.2",
"prettier": "^1.18.2" "prettier": "^1.18.2"
} }
} }

View file

@ -1,9 +1,9 @@
import React, { FC, ChangeEvent, useCallback, useState, useEffect, LegacyRef } from 'react'; import React, {ChangeEvent, FC, useCallback, useEffect, useState} from 'react';
import classNames from 'classnames'; import classNames from 'classnames';
import styles from '~/styles/common/inputs.module.scss'; import styles from '~/styles/common/inputs.module.scss';
import { Icon } from '~/components/input/Icon'; import {Icon} from '~/components/input/Icon';
import { IInputTextProps } from '~/redux/types'; import {IInputTextProps} from '~/redux/types';
import { LoaderCircle } from '~/components/input/LoaderCircle'; import {LoaderCircle} from '~/components/input/LoaderCircle';
const InputText: FC<IInputTextProps> = ({ const InputText: FC<IInputTextProps> = ({
wrapperClassName, wrapperClassName,

View file

@ -1,21 +1,21 @@
import React, { createElement, FC, FormEvent, useCallback, useEffect, useState } from 'react'; import React, {createElement, FC, FormEvent, useCallback, useEffect, useState} from 'react';
import { connect } from 'react-redux'; import {connect} from 'react-redux';
import { IDialogProps } from '~/redux/modal/constants'; import {IDialogProps} from '~/redux/modal/constants';
import { useCloseOnEscape } from '~/utils/hooks'; import {useCloseOnEscape} from '~/utils/hooks';
import { Group } from '~/components/containers/Group'; import {Group} from '~/components/containers/Group';
import { InputText } from '~/components/input/InputText'; import {InputText} from '~/components/input/InputText';
import { Button } from '~/components/input/Button'; import {Button} from '~/components/input/Button';
import { Padder } from '~/components/containers/Padder'; import {Padder} from '~/components/containers/Padder';
import styles from './styles.module.scss'; import styles from './styles.module.scss';
import { selectNode } from '~/redux/node/selectors'; import {selectNode} from '~/redux/node/selectors';
import { EditorPanel } from '~/components/editors/EditorPanel'; import {EditorPanel} from '~/components/editors/EditorPanel';
import * as NODE_ACTIONS from '~/redux/node/actions'; import * as NODE_ACTIONS from '~/redux/node/actions';
import { selectUploads } from '~/redux/uploads/selectors'; import {selectUploads} from '~/redux/uploads/selectors';
import { ERROR_LITERAL } from '~/constants/errors'; import {ERROR_LITERAL} from '~/constants/errors';
import { EMPTY_NODE, NODE_EDITORS } from '~/redux/node/constants'; import {EMPTY_NODE, NODE_EDITORS} from '~/redux/node/constants';
import { BetterScrollDialog } from '../BetterScrollDialog'; import {BetterScrollDialog} from '../BetterScrollDialog';
import { CoverBackdrop } from '~/components/containers/CoverBackdrop'; import {CoverBackdrop} from '~/components/containers/CoverBackdrop';
import { IEditorComponentProps } from '~/redux/node/types'; import {IEditorComponentProps} from '~/redux/node/types';
const mapStateToProps = state => { const mapStateToProps = state => {
const { editor, errors } = selectNode(state); const { editor, errors } = selectNode(state);
@ -78,7 +78,13 @@ const EditorDialogUnconnected: FC<IProps> = ({
<EditorPanel data={data} setData={setData} temp={temp} setTemp={setTemp} /> <EditorPanel data={data} setData={setData} temp={temp} setTemp={setTemp} />
<Group horizontal> <Group horizontal>
<InputText title="Название" value={data.title} handler={setTitle} autoFocus /> <InputText
title="Название"
value={data.title}
handler={setTitle}
autoFocus
maxLength={256}
/>
<Button title="Сохранить" iconRight="check" /> <Button title="Сохранить" iconRight="check" />
</Group> </Group>