breezy 0.17.1 → 0.18.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/generators/rails/templates/web/edit.jsx +25 -34
- data/lib/generators/rails/templates/web/index.jsx +43 -53
- data/lib/generators/rails/templates/web/new.jsx +23 -31
- data/lib/generators/rails/templates/web/show.jsx +25 -24
- data/lib/install/templates/web/application.js +57 -133
- data/lib/install/templates/web/application_visit.js +3 -8
- data/lib/install/web.rb +1 -1
- data/lib/tasks/install.rake +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6fe77e9fce67488c8bc267a8b361143420114b717aaa851a008eeecefde55e04
|
4
|
+
data.tar.gz: 89d7a053a7c3abf73a9fb597722e2c25f51c01119c8a322c5c820b486fd25d1a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a9faa38373b5360824a89166da6a2e3c5241d69a71e95a88de78e035bd71d6742649ba9ca5b2b8f267c1e8dde4c6814f39eaf3e6061f070a21217a4da1c28b16
|
7
|
+
data.tar.gz: 755bf5bb424e3bbfd7d6eb8f0df217e4536ff62cb3cad03ccdc1839b81499798edb1c0a123a95e0d41d140c3bc2079391a486a5ef21f0809d3dc24907669fd39
|
@@ -1,40 +1,31 @@
|
|
1
1
|
import React from 'react'
|
2
|
-
import {mapStateToProps, mapDispatchToProps} from '@jho406/breezy'
|
3
|
-
import {connect} from 'react-redux'
|
4
2
|
import RailsTag from '@jho406/breezy/components/RailsTag'
|
5
|
-
import * as
|
3
|
+
// import * as actionCreators from 'javascript/packs/action_creators'
|
4
|
+
// import {useDispatch} from 'react-redux'
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
6
|
+
export default function <%= plural_table_name.camelize %>Edit ({
|
7
|
+
// visit,
|
8
|
+
// remote,
|
9
|
+
form,
|
10
|
+
flash,
|
11
|
+
<%= singular_table_name.camelize(:lower) %>Path,
|
12
|
+
<%= plural_table_name.camelize(:lower) %>Path,
|
13
|
+
}) {
|
14
|
+
const error = flash.form_error
|
16
15
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
16
|
+
const messagesEl = error && (
|
17
|
+
<div id="error_explanation">
|
18
|
+
<h2>{ error.explanation }</h2>
|
19
|
+
<ul>{ error.messages.map(({body})=> <li key={body}>{body}</li>) }</ul>
|
20
|
+
</div>
|
21
|
+
)
|
23
22
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
}
|
23
|
+
return (
|
24
|
+
<div>
|
25
|
+
{messagesEl}
|
26
|
+
<RailsTag {...form} data-bz-visit={true}/>
|
27
|
+
<a href={<%= singular_table_name.camelize(:lower) %>Path} data-bz-visit={true}>Show</a>
|
28
|
+
<a href={<%= plural_table_name.camelize(:lower) %>Path} data-bz-visit={true}>Back</a>
|
29
|
+
</div>
|
30
|
+
)
|
33
31
|
}
|
34
|
-
|
35
|
-
export default connect(
|
36
|
-
mapStateToProps,
|
37
|
-
{...mapDispatchToProps, ...applicationActionCreators}
|
38
|
-
)(<%= plural_table_name.camelize %>Edit)
|
39
|
-
|
40
|
-
|
@@ -1,59 +1,49 @@
|
|
1
1
|
import React from 'react'
|
2
|
-
import
|
3
|
-
import {
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
new<%= singular_table_name.camelize %>Path,
|
14
|
-
} = this.props
|
15
|
-
const <%= singular_table_name.camelize(:lower) %>Items = this.props.<%= plural_table_name.camelize(:lower) %>.map((<%= singular_table_name.camelize(:lower) %>, key) => {
|
16
|
-
return (
|
17
|
-
<tr key={<%= singular_table_name.camelize(:lower) %>.id}>
|
18
|
-
<%- attributes_list.select{|attr| attr != :id }.each do |attr| -%>
|
19
|
-
<td>{<%=singular_table_name.camelize(:lower)%>.<%=attr.camelize(:lower)%>}</td>
|
20
|
-
<%- end -%>
|
21
|
-
<td><a href={ <%=singular_table_name%>.<%=singular_table_name.camelize(:lower)%>Path } data-bz-visit={true}>Show</a></td>
|
22
|
-
<td><a href={ <%=singular_table_name%>.edit<%=singular_table_name.camelize%>Path } data-bz-visit={true}>Edit</a></td>
|
23
|
-
<td><a href={ <%=singular_table_name%>.delete<%=singular_table_name.camelize%>Path }data-bz-visit={true} data-bz-method={"DELETE"}>Delete</a></td>
|
24
|
-
</tr>
|
25
|
-
)
|
26
|
-
})
|
27
|
-
|
2
|
+
// import * as actionCreators from 'javascript/packs/action_creators'
|
3
|
+
// import {useDispatch} from 'react-redux'
|
4
|
+
|
5
|
+
export default function <%= plural_table_name.camelize %>Index({
|
6
|
+
// visit,
|
7
|
+
// remote,
|
8
|
+
flash,
|
9
|
+
new<%= singular_table_name.camelize %>Path,
|
10
|
+
<%= plural_table_name.camelize(:lower) %> = [],
|
11
|
+
}) {
|
12
|
+
const <%= singular_table_name.camelize(:lower) %>Items = <%= plural_table_name.camelize(:lower) %>.map((<%= singular_table_name.camelize(:lower) %>, key) => {
|
28
13
|
return (
|
29
|
-
<
|
30
|
-
|
14
|
+
<tr key={<%= singular_table_name.camelize(:lower) %>.id}>
|
15
|
+
<%- attributes_list.select{|attr| attr != :id }.each do |attr| -%>
|
16
|
+
<td>{<%=singular_table_name.camelize(:lower)%>.<%=attr.camelize(:lower)%>}</td>
|
17
|
+
<%- end -%>
|
18
|
+
<td><a href={ <%=singular_table_name%>.<%=singular_table_name.camelize(:lower)%>Path } data-bz-visit={true}>Show</a></td>
|
19
|
+
<td><a href={ <%=singular_table_name%>.edit<%=singular_table_name.camelize%>Path } data-bz-visit={true}>Edit</a></td>
|
20
|
+
<td><a href={ <%=singular_table_name%>.delete<%=singular_table_name.camelize%>Path }data-bz-visit={true} data-bz-method={"DELETE"}>Delete</a></td>
|
21
|
+
</tr>
|
22
|
+
)
|
23
|
+
})
|
31
24
|
|
32
|
-
|
25
|
+
return (
|
26
|
+
<div>
|
27
|
+
<p id="notice">{flash.notice}</p>
|
33
28
|
|
34
|
-
|
35
|
-
<thead>
|
36
|
-
<%- attributes_list.select{|attr| attr != :id }.each do |attr| -%>
|
37
|
-
<tr><th><%=attr.capitalize%></th></tr>
|
38
|
-
<%- end -%>
|
39
|
-
<tr>
|
40
|
-
<th colSpan="3"></th>
|
41
|
-
</tr>
|
42
|
-
</thead>
|
29
|
+
<h1><%= plural_table_name.capitalize %></h1>
|
43
30
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
31
|
+
<table>
|
32
|
+
<thead>
|
33
|
+
<%- attributes_list.select{|attr| attr != :id }.each do |attr| -%>
|
34
|
+
<tr><th><%=attr.capitalize%></th></tr>
|
35
|
+
<%- end -%>
|
36
|
+
<tr>
|
37
|
+
<th colSpan="3"></th>
|
38
|
+
</tr>
|
39
|
+
</thead>
|
40
|
+
|
41
|
+
<tbody>
|
42
|
+
{<%= singular_table_name %>Items}
|
43
|
+
</tbody>
|
44
|
+
</table>
|
45
|
+
<br />
|
46
|
+
<a href={new<%= singular_table_name.camelize %>Path} data-bz-visit={true}>New <%= singular_table_name.capitalize %></a>
|
47
|
+
</div>
|
48
|
+
)
|
53
49
|
}
|
54
|
-
|
55
|
-
export default connect(
|
56
|
-
mapStateToProps,
|
57
|
-
mapDispatchToProps
|
58
|
-
)(<%= plural_table_name.camelize %>Index)
|
59
|
-
|
@@ -1,37 +1,29 @@
|
|
1
1
|
import React from 'react'
|
2
|
-
import {mapStateToProps, mapDispatchToProps} from '@jho406/breezy'
|
3
|
-
import {connect} from 'react-redux'
|
4
2
|
import RailsTag from '@jho406/breezy/components/RailsTag'
|
5
|
-
import * as
|
3
|
+
// import * as actionCreators from 'javascript/packs/action_creators'
|
4
|
+
// import { useDispatch } from 'react-redux'
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
6
|
+
export default function <%= plural_table_name.camelize %>New({
|
7
|
+
// visit,
|
8
|
+
// remote
|
9
|
+
form,
|
10
|
+
flash,
|
11
|
+
<%= plural_table_name.camelize(:lower) %>Path,
|
12
|
+
}) {
|
13
|
+
const error = flash.form_error
|
15
14
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
15
|
+
const messagesEl = error && (
|
16
|
+
<div id="error_explanation">
|
17
|
+
<h2>{ error.explanation }</h2>
|
18
|
+
<ul>{ error.messages.map(({body})=> <li key={body}>{body}</li>) }</ul>
|
19
|
+
</div>
|
20
|
+
)
|
22
21
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
}
|
22
|
+
return (
|
23
|
+
<div>
|
24
|
+
{messagesEl}
|
25
|
+
<RailsTag {...form} data-bz-visit={true}/>
|
26
|
+
<a href={<%= plural_table_name.camelize(:lower) %>Path} data-bz-visit={true}>Back</a>
|
27
|
+
</div>
|
28
|
+
)
|
31
29
|
}
|
32
|
-
|
33
|
-
export default connect(
|
34
|
-
mapStateToProps,
|
35
|
-
{...mapDispatchToProps, ...applicationActionCreators}
|
36
|
-
)(<%= plural_table_name.camelize %>New)
|
37
|
-
|
@@ -1,27 +1,28 @@
|
|
1
1
|
import React from 'react'
|
2
|
-
import
|
3
|
-
import {
|
2
|
+
// import * as actionCreators from 'javascript/packs/action_creators'
|
3
|
+
// import {useDispatch} from 'react-redux'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
5
|
+
export default function <%= plural_table_name.camelize %>Show({
|
6
|
+
// visit,
|
7
|
+
// remote,
|
8
|
+
flash,
|
9
|
+
<%- attributes_list_with_timestamps.select{|attr| attr != :id }.each do |attr| -%>
|
10
|
+
<%=attr.camelize(:lower)%>,
|
11
|
+
<%- end -%>
|
12
|
+
edit<%= singular_table_name.camelize %>Path,
|
13
|
+
<%= plural_table_name.camelize(:lower) %>Path
|
14
|
+
}) {
|
15
|
+
return (
|
16
|
+
<div>
|
17
|
+
<p id="notice">{flash && flash.notice}</p>
|
18
|
+
<%- attributes_list_with_timestamps.select{|attr| attr != :id }.each do |attr| -%>
|
19
|
+
<p>
|
20
|
+
<strong><%= attr.capitalize %>:</strong>
|
21
|
+
{<%=attr.camelize(:lower)%>}
|
22
|
+
</p>
|
23
|
+
<%- end -%>
|
24
|
+
<a href={ edit<%= singular_table_name.camelize %>Path } data-bz-visit={true}>Edit</a>
|
25
|
+
<a href={ <%= plural_table_name.camelize(:lower) %>Path } data-bz-visit={true}>Back</a>
|
26
|
+
</div>
|
27
|
+
)
|
21
28
|
}
|
22
|
-
|
23
|
-
export default connect(
|
24
|
-
mapStateToProps,
|
25
|
-
mapDispatchToProps
|
26
|
-
)(<%= plural_table_name.camelize %>Show)
|
27
|
-
|
@@ -1,115 +1,63 @@
|
|
1
|
-
import React from 'react'
|
2
|
-
import {combineReducers, createStore, applyMiddleware, compose} from 'redux'
|
3
|
-
import reduceReducers from 'reduce-reducers'
|
4
|
-
import thunk from 'redux-thunk'
|
5
|
-
import { Provider } from 'react-redux'
|
6
|
-
import { render } from 'react-dom'
|
7
|
-
import {
|
8
|
-
import {
|
9
|
-
import
|
10
|
-
import {
|
11
|
-
import {
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
1
|
+
import React from 'react';
|
2
|
+
import { combineReducers, createStore, applyMiddleware, compose } from 'redux';
|
3
|
+
import reduceReducers from 'reduce-reducers';
|
4
|
+
import thunk from 'redux-thunk';
|
5
|
+
import { Provider } from 'react-redux';
|
6
|
+
import { render } from 'react-dom';
|
7
|
+
import { ApplicationBase } from '@jho406/breezy';
|
8
|
+
import { persistStore, persistReducer } from 'redux-persist';
|
9
|
+
import storage from 'redux-persist/lib/storage';
|
10
|
+
import { applicationRootReducer, applicationPagesReducer } from './reducer';
|
11
|
+
import { buildVisitAndRemote } from './application_visit';
|
12
|
+
|
13
|
+
// Mapping between your props template to Component, you must add to this
|
14
|
+
// to register any new page level component you create. If you are using the
|
15
|
+
// scaffold, it will auto append the identifers for you.
|
16
|
+
//
|
17
|
+
// e.g {'posts/new': PostNew}
|
18
|
+
const identifierToComponentMapping = {
|
19
|
+
};
|
20
|
+
|
21
|
+
if (typeof window !== "undefined") {
|
22
|
+
document.addEventListener("DOMContentLoaded", function () {
|
23
|
+
const appEl = document.getElementById("app");
|
24
|
+
const location = window.location;
|
20
25
|
|
21
26
|
if (appEl) {
|
22
27
|
render(
|
23
28
|
<Application
|
24
29
|
appEl={appEl}
|
25
|
-
// The base url
|
30
|
+
// The base url prefixed to all calls made by the `visit`
|
26
31
|
// and `remote` thunks.
|
27
|
-
baseUrl={
|
32
|
+
baseUrl={location.origin}
|
28
33
|
// The global var BREEZY_INITIAL_PAGE_STATE is set by your erb
|
29
34
|
// template, e.g., index.html.erb
|
30
35
|
initialPage={window.BREEZY_INITIAL_PAGE_STATE}
|
31
36
|
// The initial path of the page, e.g., /foobar
|
32
37
|
path={location.pathname + location.search + location.hash}
|
33
|
-
|
38
|
+
buildVisitAndRemote={buildVisitAndRemote}
|
39
|
+
/>,
|
40
|
+
appEl
|
41
|
+
);
|
34
42
|
}
|
35
|
-
|
43
|
+
});
|
36
44
|
}
|
37
45
|
|
38
|
-
export default class Application extends
|
39
|
-
|
40
|
-
|
41
|
-
this.hasWindow = typeof window !== 'undefined'
|
42
|
-
|
43
|
-
// Mapping between your props template to Component, you must add to this
|
44
|
-
// to register any new page level component you create. If you are using the
|
45
|
-
// scaffold, it will auto append the identifers for you.
|
46
|
-
//
|
47
|
-
// e.g {'posts/new': PostNew}
|
48
|
-
this.identifierToComponentMapping = {
|
49
|
-
}
|
50
|
-
|
51
|
-
// Create a navigator Ref for UJS attributes and to enhance the base `visit`
|
52
|
-
// and `visit` thunks
|
53
|
-
this.navigatorRef = React.createRef()
|
54
|
-
|
55
|
-
// Start Breezy and return an object to prepare the Redux store
|
56
|
-
const breezy = start({
|
57
|
-
initialPage: this.props.initialPage,
|
58
|
-
baseUrl: this.props.baseUrl,
|
59
|
-
path: this.props.path,
|
60
|
-
fetch: this.hasWindow ? window.fetch : undefined,
|
61
|
-
})
|
62
|
-
this.breezy = breezy
|
63
|
-
|
64
|
-
// Build the store and pass Breezy's provided reducer to be combined with
|
65
|
-
// your reducers located at `application_reducer.js`
|
66
|
-
const {initialState, reducer} = breezy
|
67
|
-
this.store = this.buildStore(initialState, reducer)
|
68
|
-
|
69
|
-
// Fire initial events and populate the store
|
70
|
-
breezy.prepareStore(this.store)
|
71
|
-
|
72
|
-
// Build visit and remote thunks
|
73
|
-
// Your modified `visit` and `remote` will get passed below to the
|
74
|
-
// NavComponent then to your components through the provided
|
75
|
-
// mapDispatchToProps.
|
76
|
-
//
|
77
|
-
// You can access them via `this.props.visit` or `this.props.remote`. In
|
78
|
-
// your page components
|
79
|
-
const {visit, remote} = buildVisitAndRemote(this.navigatorRef, this.store)
|
80
|
-
this.visit = visit
|
81
|
-
this.remote = remote
|
82
|
-
}
|
83
|
-
|
84
|
-
componentDidMount() {
|
85
|
-
const { appEl } = this.props
|
86
|
-
// Create the ujs event handlers. You can change the ujsAttributePrefix
|
87
|
-
// in the event the data attribute conflicts with another.
|
88
|
-
this.ujsHandlers = ujsHandlers({
|
89
|
-
visit: this.visit,
|
90
|
-
remote: this.remote,
|
91
|
-
store: this.store,
|
92
|
-
ujsAttributePrefix: 'data-bz'
|
93
|
-
})
|
94
|
-
const {onClick, onSubmit} = this.ujsHandlers
|
95
|
-
|
96
|
-
appEl.addEventListener('click', onClick)
|
97
|
-
appEl.addEventListener('submit', onSubmit)
|
46
|
+
export default class Application extends ApplicationBase {
|
47
|
+
mapping() {
|
48
|
+
return identifierToComponentMapping;
|
98
49
|
}
|
99
50
|
|
100
|
-
|
101
|
-
|
102
|
-
const {onClick, onSubmit} = this.ujsHandlers
|
103
|
-
|
104
|
-
appEl.removeEventListener('click', onClick)
|
105
|
-
appEl.removeEventListener('submit', onSubmit)
|
106
|
-
this.breezy.stop()
|
51
|
+
visitAndRemote(navRef, store) {
|
52
|
+
return buildVisitAndRemote(navRef, store);
|
107
53
|
}
|
108
54
|
|
109
|
-
buildStore(initialState, {breezy: breezyReducer, pages: pagesReducer}) {
|
55
|
+
buildStore(initialState, { breezy: breezyReducer, pages: pagesReducer }) {
|
110
56
|
// Create the store
|
111
57
|
// See `./reducer.js` for an explaination of the two included reducers
|
112
|
-
const composeEnhancers =
|
58
|
+
const composeEnhancers =
|
59
|
+
(this.hasWindow && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) ||
|
60
|
+
compose;
|
113
61
|
const reducer = this.wrapWithPersistReducer(
|
114
62
|
reduceReducers(
|
115
63
|
combineReducers({
|
@@ -118,19 +66,19 @@ export default class Application extends React.Component {
|
|
118
66
|
}),
|
119
67
|
applicationRootReducer
|
120
68
|
)
|
121
|
-
)
|
69
|
+
);
|
122
70
|
const store = createStore(
|
123
71
|
reducer,
|
124
72
|
initialState,
|
125
73
|
composeEnhancers(applyMiddleware(thunk))
|
126
|
-
)
|
74
|
+
);
|
127
75
|
|
128
|
-
if(this.hasWindow) {
|
76
|
+
if (this.hasWindow) {
|
129
77
|
// Persist the store using Redux-Persist
|
130
|
-
persistStore(store)
|
78
|
+
persistStore(store);
|
131
79
|
}
|
132
80
|
|
133
|
-
return store
|
81
|
+
return store;
|
134
82
|
}
|
135
83
|
|
136
84
|
wrapWithPersistReducer(reducers) {
|
@@ -138,53 +86,29 @@ export default class Application extends React.Component {
|
|
138
86
|
// The key is set to the stringified JS asset path to remove the need for
|
139
87
|
// migrations when hydrating.
|
140
88
|
if (!this.hasWindow) {
|
141
|
-
return reducers
|
89
|
+
return reducers;
|
142
90
|
}
|
143
|
-
const prefix =
|
144
|
-
const persistKey =
|
91
|
+
const prefix = "breezy";
|
92
|
+
const persistKey =
|
93
|
+
prefix +
|
94
|
+
this.props.initialPage.assets
|
95
|
+
.filter((asset) => asset.endsWith(".js"))
|
96
|
+
.join(",");
|
145
97
|
const persistConfig = {
|
146
98
|
key: persistKey,
|
147
99
|
storage,
|
148
|
-
}
|
100
|
+
};
|
149
101
|
|
150
102
|
// Remove older storage items that were used by previous JS assets
|
151
103
|
if (this.hasWindow) {
|
152
|
-
const storedKeys = Object.keys(localStorage)
|
104
|
+
const storedKeys = Object.keys(localStorage);
|
153
105
|
storedKeys.forEach((key) => {
|
154
106
|
if (key.startsWith(`persist:${prefix}`) && key !== persistKey) {
|
155
|
-
localStorage.removeItem(key)
|
107
|
+
localStorage.removeItem(key);
|
156
108
|
}
|
157
|
-
})
|
158
|
-
}
|
159
|
-
|
160
|
-
return persistReducer(persistConfig, reducers)
|
161
|
-
}
|
162
|
-
|
163
|
-
createHistory() {
|
164
|
-
if(this.hasWindow) {
|
165
|
-
// This is used for client side rendering
|
166
|
-
return createBrowserHistory({})
|
167
|
-
} else {
|
168
|
-
// This is used for server side rendering
|
169
|
-
return createMemoryHistory({})
|
109
|
+
});
|
170
110
|
}
|
171
|
-
}
|
172
|
-
|
173
|
-
render() {
|
174
|
-
const history = this.createHistory()
|
175
111
|
|
176
|
-
|
177
|
-
// behavior or replaced with your own.
|
178
|
-
return <Provider store={this.store}>
|
179
|
-
<Nav
|
180
|
-
store={this.store}
|
181
|
-
ref={this.navigatorRef}
|
182
|
-
visit={this.visit}
|
183
|
-
remote={this.remote}
|
184
|
-
mapping={this.identifierToComponentMapping}
|
185
|
-
history={history}
|
186
|
-
initialPageKey={this.breezy.initialPageKey}
|
187
|
-
/>
|
188
|
-
</Provider>
|
112
|
+
return persistReducer(persistConfig, reducers);
|
189
113
|
}
|
190
114
|
}
|
@@ -19,14 +19,9 @@ export function buildVisitAndRemote(ref, store) {
|
|
19
19
|
return
|
20
20
|
}
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
if (meta.canNavigate) {
|
26
|
-
ref.current.navigateTo(meta.pageKey, {
|
27
|
-
action: meta.suggestedAction,
|
28
|
-
})
|
29
|
-
}
|
22
|
+
ref.current.navigateTo(meta.pageKey, {
|
23
|
+
action: meta.suggestedAction,
|
24
|
+
})
|
30
25
|
})
|
31
26
|
.finally(() => {
|
32
27
|
// Do something after
|
data/lib/install/web.rb
CHANGED
@@ -59,7 +59,7 @@ say "Installing React, Redux, and Breezy"
|
|
59
59
|
run "yarn add babel-plugin-module-resolver history@\"^4\" html-react-parser@\"^0.13\" react-redux redux-thunk redux redux-persist reduce-reducers immer @jho406/breezy --save"
|
60
60
|
|
61
61
|
say "Updating webpack config to include .jsx file extension and resolved_paths"
|
62
|
-
insert_into_file Webpacker.config.config_path, " - .jsx\n", after:
|
62
|
+
insert_into_file Webpacker.config.config_path, " - .jsx\n", after: /\bextensions:\n/
|
63
63
|
# For newer webpacker
|
64
64
|
insert_into_file Webpacker.config.config_path, "'app/views', 'app/components'", after: /additional_paths: \[/
|
65
65
|
# For older webpacker
|
data/lib/tasks/install.rake
CHANGED
@@ -15,7 +15,7 @@ namespace :breezy do
|
|
15
15
|
package_json = JSON.parse(File.read(Rails.root.join("package.json")))
|
16
16
|
|
17
17
|
if package_json['dependencies']['react'].nil?
|
18
|
-
$stderr.puts "React not installed. Did you
|
18
|
+
$stderr.puts "React not installed. Did you install React? https://github.com/rails/webpacker#react"
|
19
19
|
$stderr.puts "Exiting!" && exit!
|
20
20
|
end
|
21
21
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: breezy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.18.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Johny Ho
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-07-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionpack
|
@@ -28,16 +28,16 @@ dependencies:
|
|
28
28
|
name: props_template
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.20.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.20.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: webpacker
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|