silverstripe-framework/package.json
Ingo Schommer 5b31a40593 Use redux-form instead of custom actions/reducers (fixes #5524)
- Removed custom form reducers in favour of redux-form (updateField(), addForm(), etc)
- Storing 'state' in schema reducer to avoid a separate forms reducer tree (no longer needed for other use cases). This means 'state' is only the "initial state", any form edits will be handled by redux-form internally in the 'reduxForm' reducer namespace
- Removed componentWillUnmount() from <Form> since there's no more reducer state to clean up (removed formReducer.js), and redux-form handles that internally
- Removed isFetching state from <FormBuilder> since there's now a props.submitting coming from redux-form
- Improved passing of "clicked button" (submittingAction), using component state rather than reducer and passing it into action handlers (no need for components to inspect it any other way)
- Hacky duplication of this.submittingAction and this.state.submittingAction to avoid re-render of <FormBuilder> *during* a submission (see https://github.com/erikras/redux-form/issues/1944)
- Inlined handleSubmit() XHR (rather than using a redux action). There's other ways for form consumers to listen to form evens (e.g. onSubmitSuccess passed through <FormBuilder> into reduxForm()).
- Adapting checkbox/radio fields to redux-forms
  Need to send onChange event with values rather than the original event,
  see http://redux-form.com/6.1.1/docs/api/Field.md/#-input-onchange-eventorvalue-function-
- Using reduxForm() within render() causes DOM to get thrown away,
  and has weird side effects like https://github.com/erikras/redux-form/issues/1944.
  See https://github.com/erikras/redux-form/issues/603#issuecomment-176397728
- Refactored <FormBuilderLoader> as a separate container component which connects to redux and redux-form. This keeps the <FormBuilder> component dependency free and easy to test. It'll also be an advantage if we switch to a GraphQL backed component, in which case the async loading routines will look very different from the current <FormBuilderLoader> implementation
- Refactoring out the redux-form dependency from FormBuilder to make it more testable (through baseFormComponent and baseFieldComponent)
- Passing through 'form' to allow custom identifiers (which is important because currently the schema "id" contains the record identifier, making the form identifier non-deterministic - which means you can't use it with the redux-form selector API)
2016-10-20 21:49:06 +13:00

121 lines
3.5 KiB
JSON

{
"name": "silverstripe-framework",
"version": "4.0.0",
"description": "The SilverStripe framework",
"directories": {
"doc": "docs",
"test": "tests"
},
"engines": {
"node": "^4.2.0"
},
"scripts": {
"build": "webpack",
"watch": "webpack --config ./webpack-dev.config.js --watch",
"css": "WEBPACK_CHILD=css webpack",
"lock": "npm-shrinkwrap --dev",
"test": "NODE_PATH=\"./client/src:./admin/client/src\" jest",
"coverage": "NODE_PATH=\"./client/src:./admin/client/src\" jest --coverage",
"lint": "eslint client/src & eslint admin/client/src & sass-lint -v"
},
"repository": {
"type": "git",
"url": "git://github.com/silverstripe/silverstripe-framework.git"
},
"keywords": [
"silverstripe",
"framework"
],
"author": "SilverStripe Ltd",
"license": "BSD-3-Clause",
"bugs": {
"url": "https://github.com/silverstripe/silverstripe-framework/issues"
},
"homepage": "https://github.com/silverstripe/silverstripe-framework#readme",
"dependencies": {
"babel-polyfill": "^6.7.4",
"blueimp-file-upload": "6.0.3",
"blueimp-load-image": "1.1.3",
"blueimp-tmpl": "1.0.2",
"bootstrap": "4.0.0-alpha.2",
"chosen-js": "^1.5.1",
"deep-equal": "^1.0.1",
"deep-freeze-strict": "^1.1.1",
"es6-promise": "^3.1.2",
"history": "^2.1.2",
"isomorphic-fetch": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
"jquery-sizes": "^0.33.0",
"json-js": "^1.1.2",
"merge": "^1.2.0",
"page.js": "^4.13.3",
"qs": "^6.1.0",
"query-string": "^3.0.3",
"react": "^15.3.1",
"react-addons-css-transition-group": "^15.3.1",
"react-bootstrap-ss": "^0.30.5",
"react-dom": "^15.3.1",
"react-redux": "^4.4.1",
"react-router": "^2.4.1",
"react-router-redux": "^4.0.5",
"redux": "https://registry.npmjs.org/redux/-/redux-3.0.5.tgz",
"redux-form": "^6.0.2",
"redux-thunk": "^2.1.0",
"tether": "^1.3.2",
"url": "^0.11.0"
},
"devDependencies": {
"autoprefixer": "^6.4.0",
"babel-core": "^6.7.4",
"babel-jest": "^9.0.3",
"babel-loader": "^6.2.5",
"babel-plugin-transform-es2015-modules-umd": "^6.6.5",
"babel-plugin-transform-object-assign": "^6.5.0",
"babel-plugin-transform-object-rest-spread": "^6.8.0",
"babel-preset-es2015": "^6.6.0",
"babel-preset-react": "^6.5.0",
"css-loader": "^0.23.1",
"eslint": "^2.5.3",
"eslint-config-airbnb": "^6.2.0",
"eslint-plugin-react": "^4.2.3",
"expose-loader": "^0.7.1",
"extract-text-webpack-plugin": "^1.0.1",
"file-loader": "^0.9.0",
"imports-loader": "^0.6.5",
"jest-cli": "^0.9.2",
"node-sass": "^3.8.0",
"npm-shrinkwrap": "^6.0.1",
"postcss-loader": "^0.10.1",
"react-addons-test-utils": "^15.3.1",
"redux-logger": "^2.6.1",
"resolve-url-loader": "^1.6.0",
"sass-lint": "^1.9.1",
"sass-loader": "^4.0.0",
"script-loader": "^0.7.0",
"semver": "^5.1.0",
"url-loader": "^0.5.7",
"webpack": "^1.13.2"
},
"jest": {
"scriptPreprocessor": "<rootDir>/node_modules/babel-jest",
"testPathDirs": [
"admin/client/src",
"client/src"
],
"testDirectoryName": "tests",
"mocksPattern": "mocks",
"unmockedModulePathPatterns": [
"<rootDir>/node_modules/react",
"<rootDir>/node_modules/qs",
"<rootDir>/node_modules/redux-form"
],
"bail": true,
"testRunner": "<rootDir>/node_modules/jest-cli/src/testRunners/jasmine/jasmine2.js"
},
"babel": {
"presets": [
"react",
"es2015"
]
}
}