redux-devtools/packages/redux-devtools-app-core/src/components/Settings/StateTree.tsx
Matt Oakes 96ac1f291a
Move the logic from @redux-devtools/app into @redux-devtools/app-core (#1655)
This change splits out the main logic from the Redux Devtools App into a new
core package but keeps the socket connection management in @redux-devtools/app.
The aim is to allow for easier reuse of the rest of the app in other envioronments
with their own transport methods, such as React Native or Electron.
2024-06-12 09:18:46 -04:00

53 lines
1.4 KiB
TypeScript

import React, { Component } from 'react';
import { connect, ResolveThunks } from 'react-redux';
import { Container, Form } from '@redux-devtools/ui';
import { changeStateTreeSettings } from '../../actions';
import { CoreStoreState } from '../../reducers';
type StateProps = ReturnType<typeof mapStateToProps>;
type DispatchProps = ResolveThunks<typeof actionCreators>;
type Props = StateProps & DispatchProps;
export class StateTree extends Component<Props> {
render() {
const stateTree = this.props.theme;
const formData = {
sortAlphabetically: stateTree.sortAlphabetically,
disableCollection: stateTree.disableCollection,
};
return (
<Container>
<Form
schema={{
type: 'object',
properties: {
sortAlphabetically: {
title: 'Sort Alphabetically',
type: 'boolean',
},
disableCollection: {
title: 'Disable collapsing of nodes',
type: 'boolean',
},
},
}}
formData={formData}
noSubmit
onChange={this.props.changeStateTreeSettings}
/>
</Container>
);
}
}
const mapStateToProps = (state: CoreStoreState) => ({
theme: state.stateTreeSettings,
});
const actionCreators = {
changeStateTreeSettings,
};
export default connect(mapStateToProps, actionCreators)(StateTree);