breezy 0.18.3 → 0.19.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6fe77e9fce67488c8bc267a8b361143420114b717aaa851a008eeecefde55e04
4
- data.tar.gz: 89d7a053a7c3abf73a9fb597722e2c25f51c01119c8a322c5c820b486fd25d1a
3
+ metadata.gz: 6534cc70e56a3f1eaff8278bf94463f1e4274ff981b106ba921c51393ee834d1
4
+ data.tar.gz: b8de5efd48ed4cd8f9a3fe17897e706e1d3aaff21b9b18792ff012c5e23dafaf
5
5
  SHA512:
6
- metadata.gz: a9faa38373b5360824a89166da6a2e3c5241d69a71e95a88de78e035bd71d6742649ba9ca5b2b8f267c1e8dde4c6814f39eaf3e6061f070a21217a4da1c28b16
7
- data.tar.gz: 755bf5bb424e3bbfd7d6eb8f0df217e4536ff62cb3cad03ccdc1839b81499798edb1c0a123a95e0d41d140c3bc2079391a486a5ef21f0809d3dc24907669fd39
6
+ metadata.gz: b7839c0ab0d0fe69a567d566c2268d26b4666f541550d2f9f1b7aa2f95dd48e4426a760a88ed3a1b960d5f737f1e7ed3889f9a995f5a3e3239fc76df7aa3ab6c
7
+ data.tar.gz: '09ec8c29c88dc42543a5da6a9609db4a1d8064b9397e6a5575d0e3079d360160d36eb03e9880e6dfac6d51ad42df6f3d4c853e06bd5f7eb21af3b7505d6c6dfd'
data/lib/breezy.rb CHANGED
@@ -1,24 +1,14 @@
1
- require 'breezy/xhr_headers'
2
- require 'breezy/xhr_url_for'
3
- require 'breezy/x_domain_blocker'
4
1
  require 'breezy/helpers'
5
2
  require 'breezy/redirection'
6
3
  require 'props_template'
7
4
 
8
5
  module Breezy
9
6
  module Controller
10
- include XHRHeaders, XDomainBlocker, Helpers, Redirection
7
+ include Helpers, Redirection
11
8
 
12
9
  def self.included(base)
13
- if base.respond_to?(:before_action)
14
- base.after_action :abort_xdomain_redirect
15
- else
16
- base.after_filter :abort_xdomain_redirect
17
- end
18
-
19
10
  if base.respond_to?(:helper_method)
20
11
  base.helper_method :param_to_search_path
21
- base.helper_method :props_from_form_with
22
12
  base.helper_method :search_path_to_camelized_param
23
13
  end
24
14
  end
@@ -41,19 +31,6 @@ module Breezy
41
31
  if app.config.breezy.auto_include
42
32
  include Controller
43
33
  end
44
-
45
- ActionDispatch::Request.class_eval do
46
- def referer
47
- self.headers['X-XHR-Referer'] || super
48
- end
49
- alias referrer referer
50
- end
51
-
52
- require 'action_dispatch/routing/redirection'
53
-
54
- (ActionView::RoutingUrlFor rescue ActionView::Helpers::UrlHelper).module_eval do
55
- prepend XHRUrlFor
56
- end
57
34
  end
58
35
  end
59
36
  end
@@ -1,493 +1,5 @@
1
1
  module Breezy
2
2
  module Helpers
3
- POSSIBLE_STANDARD_NAMES = {
4
- # HTML
5
- accept: 'accept',
6
- acceptcharset: 'acceptCharset',
7
- 'accept-charset': 'acceptCharset',
8
- accesskey: 'accessKey',
9
- action: 'action',
10
- allowfullscreen: 'allowFullScreen',
11
- alt: 'alt',
12
- as: 'as',
13
- async: 'async',
14
- autocapitalize: 'autoCapitalize',
15
- autocomplete: 'autoComplete',
16
- autocorrect: 'autoCorrect',
17
- autofocus: 'autoFocus',
18
- autoplay: 'autoPlay',
19
- autosave: 'autoSave',
20
- capture: 'capture',
21
- cellpadding: 'cellPadding',
22
- cellspacing: 'cellSpacing',
23
- challenge: 'challenge',
24
- charset: 'charSet',
25
- checked: 'checked',
26
- children: 'children',
27
- cite: 'cite',
28
- class: 'className',
29
- classid: 'classID',
30
- classname: 'className',
31
- cols: 'cols',
32
- colspan: 'colSpan',
33
- content: 'content',
34
- contenteditable: 'contentEditable',
35
- contextmenu: 'contextMenu',
36
- controls: 'controls',
37
- controlslist: 'controlsList',
38
- coords: 'coords',
39
- crossorigin: 'crossOrigin',
40
- dangerouslysetinnerhtml: 'dangerouslySetInnerHTML',
41
- data: 'data',
42
- datetime: 'dateTime',
43
- default: 'default',
44
- defaultchecked: 'defaultChecked',
45
- defaultvalue: 'defaultValue',
46
- defer: 'defer',
47
- dir: 'dir',
48
- disabled: 'disabled',
49
- disablepictureinpicture: 'disablePictureInPicture',
50
- disableremoteplayback: 'disableRemotePlayback',
51
- download: 'download',
52
- draggable: 'draggable',
53
- enctype: 'encType',
54
- for: 'htmlFor',
55
- form: 'form',
56
- formmethod: 'formMethod',
57
- formaction: 'formAction',
58
- formenctype: 'formEncType',
59
- formnovalidate: 'formNoValidate',
60
- formtarget: 'formTarget',
61
- frameborder: 'frameBorder',
62
- headers: 'headers',
63
- height: 'height',
64
- hidden: 'hidden',
65
- high: 'high',
66
- href: 'href',
67
- hreflang: 'hrefLang',
68
- htmlfor: 'htmlFor',
69
- httpequiv: 'httpEquiv',
70
- 'http-equiv': 'httpEquiv',
71
- icon: 'icon',
72
- id: 'id',
73
- innerhtml: 'innerHTML',
74
- inputmode: 'inputMode',
75
- integrity: 'integrity',
76
- is: 'is',
77
- itemid: 'itemID',
78
- itemprop: 'itemProp',
79
- itemref: 'itemRef',
80
- itemscope: 'itemScope',
81
- itemtype: 'itemType',
82
- keyparams: 'keyParams',
83
- keytype: 'keyType',
84
- kind: 'kind',
85
- label: 'label',
86
- lang: 'lang',
87
- list: 'list',
88
- loop: 'loop',
89
- low: 'low',
90
- manifest: 'manifest',
91
- marginwidth: 'marginWidth',
92
- marginheight: 'marginHeight',
93
- max: 'max',
94
- maxlength: 'maxLength',
95
- media: 'media',
96
- mediagroup: 'mediaGroup',
97
- method: 'method',
98
- min: 'min',
99
- minlength: 'minLength',
100
- multiple: 'multiple',
101
- muted: 'muted',
102
- name: 'name',
103
- nomodule: 'noModule',
104
- nonce: 'nonce',
105
- novalidate: 'noValidate',
106
- open: 'open',
107
- optimum: 'optimum',
108
- pattern: 'pattern',
109
- placeholder: 'placeholder',
110
- playsinline: 'playsInline',
111
- poster: 'poster',
112
- preload: 'preload',
113
- profile: 'profile',
114
- radiogroup: 'radioGroup',
115
- readonly: 'readOnly',
116
- referrerpolicy: 'referrerPolicy',
117
- rel: 'rel',
118
- required: 'required',
119
- reversed: 'reversed',
120
- role: 'role',
121
- rows: 'rows',
122
- rowspan: 'rowSpan',
123
- sandbox: 'sandbox',
124
- scope: 'scope',
125
- scoped: 'scoped',
126
- scrolling: 'scrolling',
127
- seamless: 'seamless',
128
- selected: 'selected',
129
- shape: 'shape',
130
- size: 'size',
131
- sizes: 'sizes',
132
- span: 'span',
133
- spellcheck: 'spellCheck',
134
- src: 'src',
135
- srcdoc: 'srcDoc',
136
- srclang: 'srcLang',
137
- srcset: 'srcSet',
138
- start: 'start',
139
- step: 'step',
140
- style: 'style',
141
- summary: 'summary',
142
- tabindex: 'tabIndex',
143
- target: 'target',
144
- title: 'title',
145
- type: 'type',
146
- usemap: 'useMap',
147
- value: 'value',
148
- width: 'width',
149
- wmode: 'wmode',
150
- wrap: 'wrap',
151
-
152
- # SVG
153
- about: 'about',
154
- accentheight: 'accentHeight',
155
- 'accent-height': 'accentHeight',
156
- accumulate: 'accumulate',
157
- additive: 'additive',
158
- alignmentbaseline: 'alignmentBaseline',
159
- 'alignment-baseline': 'alignmentBaseline',
160
- allowreorder: 'allowReorder',
161
- alphabetic: 'alphabetic',
162
- amplitude: 'amplitude',
163
- arabicform: 'arabicForm',
164
- 'arabic-form': 'arabicForm',
165
- ascent: 'ascent',
166
- attributename: 'attributeName',
167
- attributetype: 'attributeType',
168
- autoreverse: 'autoReverse',
169
- azimuth: 'azimuth',
170
- basefrequency: 'baseFrequency',
171
- baselineshift: 'baselineShift',
172
- 'baseline-shift': 'baselineShift',
173
- baseprofile: 'baseProfile',
174
- bbox: 'bbox',
175
- begin: 'begin',
176
- bias: 'bias',
177
- by: 'by',
178
- calcmode: 'calcMode',
179
- capheight: 'capHeight',
180
- 'cap-height': 'capHeight',
181
- clip: 'clip',
182
- clippath: 'clipPath',
183
- 'clip-path': 'clipPath',
184
- clippathunits: 'clipPathUnits',
185
- cliprule: 'clipRule',
186
- 'clip-rule': 'clipRule',
187
- color: 'color',
188
- colorinterpolation: 'colorInterpolation',
189
- 'color-interpolation': 'colorInterpolation',
190
- colorinterpolationfilters: 'colorInterpolationFilters',
191
- 'color-interpolation-filters': 'colorInterpolationFilters',
192
- colorprofile: 'colorProfile',
193
- 'color-profile': 'colorProfile',
194
- colorrendering: 'colorRendering',
195
- 'color-rendering': 'colorRendering',
196
- contentscripttype: 'contentScriptType',
197
- contentstyletype: 'contentStyleType',
198
- cursor: 'cursor',
199
- cx: 'cx',
200
- cy: 'cy',
201
- d: 'd',
202
- datatype: 'datatype',
203
- decelerate: 'decelerate',
204
- descent: 'descent',
205
- diffuseconstant: 'diffuseConstant',
206
- direction: 'direction',
207
- display: 'display',
208
- divisor: 'divisor',
209
- dominantbaseline: 'dominantBaseline',
210
- 'dominant-baseline': 'dominantBaseline',
211
- dur: 'dur',
212
- dx: 'dx',
213
- dy: 'dy',
214
- edgemode: 'edgeMode',
215
- elevation: 'elevation',
216
- enablebackground: 'enableBackground',
217
- 'enable-background': 'enableBackground',
218
- end: 'end',
219
- exponent: 'exponent',
220
- externalresourcesrequired: 'externalResourcesRequired',
221
- fill: 'fill',
222
- fillopacity: 'fillOpacity',
223
- 'fill-opacity': 'fillOpacity',
224
- fillrule: 'fillRule',
225
- 'fill-rule': 'fillRule',
226
- filter: 'filter',
227
- filterres: 'filterRes',
228
- filterunits: 'filterUnits',
229
- floodopacity: 'floodOpacity',
230
- 'flood-opacity': 'floodOpacity',
231
- floodcolor: 'floodColor',
232
- 'flood-color': 'floodColor',
233
- focusable: 'focusable',
234
- fontfamily: 'fontFamily',
235
- 'font-family': 'fontFamily',
236
- fontsize: 'fontSize',
237
- 'font-size': 'fontSize',
238
- fontsizeadjust: 'fontSizeAdjust',
239
- 'font-size-adjust': 'fontSizeAdjust',
240
- fontstretch: 'fontStretch',
241
- 'font-stretch': 'fontStretch',
242
- fontstyle: 'fontStyle',
243
- 'font-style': 'fontStyle',
244
- fontvariant: 'fontVariant',
245
- 'font-variant': 'fontVariant',
246
- fontweight: 'fontWeight',
247
- 'font-weight': 'fontWeight',
248
- format: 'format',
249
- from: 'from',
250
- fx: 'fx',
251
- fy: 'fy',
252
- g1: 'g1',
253
- g2: 'g2',
254
- glyphname: 'glyphName',
255
- 'glyph-name': 'glyphName',
256
- glyphorientationhorizontal: 'glyphOrientationHorizontal',
257
- 'glyph-orientation-horizontal': 'glyphOrientationHorizontal',
258
- glyphorientationvertical: 'glyphOrientationVertical',
259
- 'glyph-orientation-vertical': 'glyphOrientationVertical',
260
- glyphref: 'glyphRef',
261
- gradienttransform: 'gradientTransform',
262
- gradientunits: 'gradientUnits',
263
- hanging: 'hanging',
264
- horizadvx: 'horizAdvX',
265
- 'horiz-adv-x': 'horizAdvX',
266
- horizoriginx: 'horizOriginX',
267
- 'horiz-origin-x': 'horizOriginX',
268
- ideographic: 'ideographic',
269
- imagerendering: 'imageRendering',
270
- 'image-rendering': 'imageRendering',
271
- in2: 'in2',
272
- in: 'in',
273
- inlist: 'inlist',
274
- intercept: 'intercept',
275
- k1: 'k1',
276
- k2: 'k2',
277
- k3: 'k3',
278
- k4: 'k4',
279
- k: 'k',
280
- kernelmatrix: 'kernelMatrix',
281
- kernelunitlength: 'kernelUnitLength',
282
- kerning: 'kerning',
283
- keypoints: 'keyPoints',
284
- keysplines: 'keySplines',
285
- keytimes: 'keyTimes',
286
- lengthadjust: 'lengthAdjust',
287
- letterspacing: 'letterSpacing',
288
- 'letter-spacing': 'letterSpacing',
289
- lightingcolor: 'lightingColor',
290
- 'lighting-color': 'lightingColor',
291
- limitingconeangle: 'limitingConeAngle',
292
- local: 'local',
293
- markerend: 'markerEnd',
294
- 'marker-end': 'markerEnd',
295
- markerheight: 'markerHeight',
296
- markermid: 'markerMid',
297
- 'marker-mid': 'markerMid',
298
- markerstart: 'markerStart',
299
- 'marker-start': 'markerStart',
300
- markerunits: 'markerUnits',
301
- markerwidth: 'markerWidth',
302
- mask: 'mask',
303
- maskcontentunits: 'maskContentUnits',
304
- maskunits: 'maskUnits',
305
- mathematical: 'mathematical',
306
- mode: 'mode',
307
- numoctaves: 'numOctaves',
308
- offset: 'offset',
309
- opacity: 'opacity',
310
- operator: 'operator',
311
- order: 'order',
312
- orient: 'orient',
313
- orientation: 'orientation',
314
- origin: 'origin',
315
- overflow: 'overflow',
316
- overlineposition: 'overlinePosition',
317
- 'overline-position': 'overlinePosition',
318
- overlinethickness: 'overlineThickness',
319
- 'overline-thickness': 'overlineThickness',
320
- paintorder: 'paintOrder',
321
- 'paint-order': 'paintOrder',
322
- panose1: 'panose1',
323
- 'panose-1': 'panose1',
324
- pathlength: 'pathLength',
325
- patterncontentunits: 'patternContentUnits',
326
- patterntransform: 'patternTransform',
327
- patternunits: 'patternUnits',
328
- pointerevents: 'pointerEvents',
329
- 'pointer-events': 'pointerEvents',
330
- points: 'points',
331
- pointsatx: 'pointsAtX',
332
- pointsaty: 'pointsAtY',
333
- pointsatz: 'pointsAtZ',
334
- prefix: 'prefix',
335
- preservealpha: 'preserveAlpha',
336
- preserveaspectratio: 'preserveAspectRatio',
337
- primitiveunits: 'primitiveUnits',
338
- property: 'property',
339
- r: 'r',
340
- radius: 'radius',
341
- refx: 'refX',
342
- refy: 'refY',
343
- renderingintent: 'renderingIntent',
344
- 'rendering-intent': 'renderingIntent',
345
- repeatcount: 'repeatCount',
346
- repeatdur: 'repeatDur',
347
- requiredextensions: 'requiredExtensions',
348
- requiredfeatures: 'requiredFeatures',
349
- resource: 'resource',
350
- restart: 'restart',
351
- result: 'result',
352
- results: 'results',
353
- rotate: 'rotate',
354
- rx: 'rx',
355
- ry: 'ry',
356
- scale: 'scale',
357
- security: 'security',
358
- seed: 'seed',
359
- shaperendering: 'shapeRendering',
360
- 'shape-rendering': 'shapeRendering',
361
- slope: 'slope',
362
- spacing: 'spacing',
363
- specularconstant: 'specularConstant',
364
- specularexponent: 'specularExponent',
365
- speed: 'speed',
366
- spreadmethod: 'spreadMethod',
367
- startoffset: 'startOffset',
368
- stddeviation: 'stdDeviation',
369
- stemh: 'stemh',
370
- stemv: 'stemv',
371
- stitchtiles: 'stitchTiles',
372
- stopcolor: 'stopColor',
373
- 'stop-color': 'stopColor',
374
- stopopacity: 'stopOpacity',
375
- 'stop-opacity': 'stopOpacity',
376
- strikethroughposition: 'strikethroughPosition',
377
- 'strikethrough-position': 'strikethroughPosition',
378
- strikethroughthickness: 'strikethroughThickness',
379
- 'strikethrough-thickness': 'strikethroughThickness',
380
- string: 'string',
381
- stroke: 'stroke',
382
- strokedasharray: 'strokeDasharray',
383
- 'stroke-dasharray': 'strokeDasharray',
384
- strokedashoffset: 'strokeDashoffset',
385
- 'stroke-dashoffset': 'strokeDashoffset',
386
- strokelinecap: 'strokeLinecap',
387
- 'stroke-linecap': 'strokeLinecap',
388
- strokelinejoin: 'strokeLinejoin',
389
- 'stroke-linejoin': 'strokeLinejoin',
390
- strokemiterlimit: 'strokeMiterlimit',
391
- 'stroke-miterlimit': 'strokeMiterlimit',
392
- strokewidth: 'strokeWidth',
393
- 'stroke-width': 'strokeWidth',
394
- strokeopacity: 'strokeOpacity',
395
- 'stroke-opacity': 'strokeOpacity',
396
- suppresscontenteditablewarning: 'suppressContentEditableWarning',
397
- suppresshydrationwarning: 'suppressHydrationWarning',
398
- surfacescale: 'surfaceScale',
399
- systemlanguage: 'systemLanguage',
400
- tablevalues: 'tableValues',
401
- targetx: 'targetX',
402
- targety: 'targetY',
403
- textanchor: 'textAnchor',
404
- 'text-anchor': 'textAnchor',
405
- textdecoration: 'textDecoration',
406
- 'text-decoration': 'textDecoration',
407
- textlength: 'textLength',
408
- textrendering: 'textRendering',
409
- 'text-rendering': 'textRendering',
410
- to: 'to',
411
- transform: 'transform',
412
- typeof: 'typeof',
413
- u1: 'u1',
414
- u2: 'u2',
415
- underlineposition: 'underlinePosition',
416
- 'underline-position': 'underlinePosition',
417
- underlinethickness: 'underlineThickness',
418
- 'underline-thickness': 'underlineThickness',
419
- unicode: 'unicode',
420
- unicodebidi: 'unicodeBidi',
421
- 'unicode-bidi': 'unicodeBidi',
422
- unicoderange: 'unicodeRange',
423
- 'unicode-range': 'unicodeRange',
424
- unitsperem: 'unitsPerEm',
425
- 'units-per-em': 'unitsPerEm',
426
- unselectable: 'unselectable',
427
- valphabetic: 'vAlphabetic',
428
- 'v-alphabetic': 'vAlphabetic',
429
- values: 'values',
430
- vectoreffect: 'vectorEffect',
431
- 'vector-effect': 'vectorEffect',
432
- version: 'version',
433
- vertadvy: 'vertAdvY',
434
- 'vert-adv-y': 'vertAdvY',
435
- vertoriginx: 'vertOriginX',
436
- 'vert-origin-x': 'vertOriginX',
437
- vertoriginy: 'vertOriginY',
438
- 'vert-origin-y': 'vertOriginY',
439
- vhanging: 'vHanging',
440
- 'v-hanging': 'vHanging',
441
- videographic: 'vIdeographic',
442
- 'v-ideographic': 'vIdeographic',
443
- viewbox: 'viewBox',
444
- viewtarget: 'viewTarget',
445
- visibility: 'visibility',
446
- vmathematical: 'vMathematical',
447
- 'v-mathematical': 'vMathematical',
448
- vocab: 'vocab',
449
- widths: 'widths',
450
- wordspacing: 'wordSpacing',
451
- 'word-spacing': 'wordSpacing',
452
- writingmode: 'writingMode',
453
- 'writing-mode': 'writingMode',
454
- x1: 'x1',
455
- x2: 'x2',
456
- x: 'x',
457
- xchannelselector: 'xChannelSelector',
458
- xheight: 'xHeight',
459
- 'x-height': 'xHeight',
460
- xlinkactuate: 'xlinkActuate',
461
- 'xlink:actuate': 'xlinkActuate',
462
- xlinkarcrole: 'xlinkArcrole',
463
- 'xlink:arcrole': 'xlinkArcrole',
464
- xlinkhref: 'xlinkHref',
465
- 'xlink:href': 'xlinkHref',
466
- xlinkrole: 'xlinkRole',
467
- 'xlink:role': 'xlinkRole',
468
- xlinkshow: 'xlinkShow',
469
- 'xlink:show': 'xlinkShow',
470
- xlinktitle: 'xlinkTitle',
471
- 'xlink:title': 'xlinkTitle',
472
- xlinktype: 'xlinkType',
473
- 'xlink:type': 'xlinkType',
474
- xmlbase: 'xmlBase',
475
- 'xml:base': 'xmlBase',
476
- xmllang: 'xmlLang',
477
- 'xml:lang': 'xmlLang',
478
- xmlns: 'xmlns',
479
- 'xml:space': 'xmlSpace',
480
- xmlnsxlink: 'xmlnsXlink',
481
- 'xmlns:xlink': 'xmlnsXlink',
482
- xmlspace: 'xmlSpace',
483
- y1: 'y1',
484
- y2: 'y2',
485
- y: 'y',
486
- ychannelselector: 'yChannelSelector',
487
- z: 'z',
488
- zoomandpan: 'zoomAndPan'
489
- }
490
-
491
3
  def redirect_back_with_bzq(opts)
492
4
  if request.referrer && params[:bzq]
493
5
  referrer_url = URI.parse(request.referrer)
@@ -502,27 +14,6 @@ module Breezy
502
14
  end
503
15
  end
504
16
 
505
- def props_from_form_with(model: nil, scope: nil, url: nil, format: nil, **options)
506
- options[:allow_method_names_outside_object] = true
507
- options[:skip_default_ids] = !helpers.send(:form_with_generates_ids)
508
-
509
- if model
510
- url ||= helpers.send(:polymorphic_path, model, format: format)
511
-
512
- model = model.last if model.is_a?(Array)
513
- scope ||= helpers.send(:model_name_from_record_or_class, model).param_key
514
- end
515
-
516
- html_options = helpers.send(:html_options_for_form_with, url, model, options)
517
- html_options.delete("authenticity_token")
518
- html_options.delete("enforce_utf8")
519
-
520
- key_vals = html_options.map { |k, v|
521
- [POSSIBLE_STANDARD_NAMES[k.to_sym] || k.camelize(:lower), v]
522
- }
523
- Hash[key_vals]
524
- end
525
-
526
17
  def param_to_search_path(param)
527
18
  if param
528
19
  param.gsub(/[^\da-zA-Z\_\=\.]+/, '')
@@ -25,7 +25,7 @@ module Rails
25
25
 
26
26
  %w(index show new edit).each do |view|
27
27
  @action_name = view
28
- filename = filename_with_jsx_extensions(view)
28
+ filename = filename_with_js_extensions(view)
29
29
  template 'web/' + filename, File.join('app/views', controller_file_path, filename)
30
30
  end
31
31
 
@@ -68,8 +68,8 @@ module Rails
68
68
  [name, :json, :props] * '.'
69
69
  end
70
70
 
71
- def filename_with_jsx_extensions(name)
72
- [name, :jsx] * '.'
71
+ def filename_with_js_extensions(name)
72
+ [name, :js] * '.'
73
73
  end
74
74
 
75
75
  def filename_with_html_extensions(name)
@@ -4,4 +4,9 @@
4
4
  window.BREEZY_INITIAL_PAGE_STATE=<%%= initial_state.html_safe %>;
5
5
  </script>
6
6
 
7
- <div id="app"></div>
7
+ <div id="app">
8
+ <%%# If you need SSR follow instructions at %>
9
+ <%%# https://github.com/thoughtbot/breezy/blob/main/docs/recipes.md#server-side-rendering %>
10
+ <%%# and uncomment the following line %>
11
+ <%%#= Humid.render(initial_state).html_safe %>
12
+ </div>
@@ -5,7 +5,7 @@
5
5
  // } from './actions'
6
6
  // import produce from "immer"
7
7
  //
8
- // export default function (state = {}, action) {
8
+ // export const applicationPagesReducer = (state = {}, action) => {
9
9
  // switch(action.type) {
10
10
  // case CLEAR_FORM_ERRORS: {
11
11
  // const {pageKey} = action.payload
data/lib/install/web.rb CHANGED
@@ -58,8 +58,6 @@ add_member_methods
58
58
  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
- say "Updating webpack config to include .jsx file extension and resolved_paths"
62
- insert_into_file Webpacker.config.config_path, " - .jsx\n", after: /\bextensions:\n/
63
61
  # For newer webpacker
64
62
  insert_into_file Webpacker.config.config_path, "'app/views', 'app/components'", after: /additional_paths: \[/
65
63
  # For older webpacker
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.18.3
4
+ version: 0.19.0
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-07-17 00:00:00.000000000 Z
11
+ date: 2021-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -159,9 +159,6 @@ files:
159
159
  - lib/breezy.rb
160
160
  - lib/breezy/helpers.rb
161
161
  - lib/breezy/redirection.rb
162
- - lib/breezy/x_domain_blocker.rb
163
- - lib/breezy/xhr_headers.rb
164
- - lib/breezy/xhr_url_for.rb
165
162
  - lib/generators/rails/breezy_generator.rb
166
163
  - lib/generators/rails/scaffold_controller_generator.rb
167
164
  - lib/generators/rails/templates/_form.json.props
@@ -171,13 +168,13 @@ files:
171
168
  - lib/generators/rails/templates/new.json.props
172
169
  - lib/generators/rails/templates/show.json.props
173
170
  - lib/generators/rails/templates/web/edit.html.erb
174
- - lib/generators/rails/templates/web/edit.jsx
171
+ - lib/generators/rails/templates/web/edit.js
175
172
  - lib/generators/rails/templates/web/index.html.erb
176
- - lib/generators/rails/templates/web/index.jsx
173
+ - lib/generators/rails/templates/web/index.js
177
174
  - lib/generators/rails/templates/web/new.html.erb
178
- - lib/generators/rails/templates/web/new.jsx
175
+ - lib/generators/rails/templates/web/new.js
179
176
  - lib/generators/rails/templates/web/show.html.erb
180
- - lib/generators/rails/templates/web/show.jsx
177
+ - lib/generators/rails/templates/web/show.js
181
178
  - lib/install/templates/web/action_creators.js
182
179
  - lib/install/templates/web/actions.js
183
180
  - lib/install/templates/web/application.js
@@ -210,7 +207,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
210
207
  - !ruby/object:Gem::Version
211
208
  version: '0'
212
209
  requirements: []
213
- rubygems_version: 3.1.2
210
+ rubygems_version: 3.0.3
214
211
  signing_key:
215
212
  specification_version: 4
216
213
  summary: Rails integration for BreezyJS
@@ -1,22 +0,0 @@
1
- module Breezy
2
- # Changes the response status to 403 Forbidden if all of these conditions are true:
3
- # - The current request originated from Breezy
4
- # - The request is being redirected to a different domain
5
- module XDomainBlocker
6
- private
7
- def same_origin?(a, b)
8
- a = URI.parse URI.escape(a)
9
- b = URI.parse URI.escape(b)
10
- [a.scheme, a.host, a.port] == [b.scheme, b.host, b.port]
11
- end
12
-
13
- def abort_xdomain_redirect
14
- to_uri = response.headers['Location']
15
- current = request.headers['X-XHR-Referer']
16
- unless to_uri.blank? || current.blank? || same_origin?(current, to_uri)
17
- self.status = 403
18
- end
19
- rescue URI::InvalidURIError
20
- end
21
- end
22
- end
@@ -1,23 +0,0 @@
1
- module Breezy
2
- module XHRHeaders
3
- def redirect_back(fallback_location:, **args)
4
- if referer = request.headers["X-XHR-Referer"]
5
- redirect_to referer, **args
6
- else
7
- super
8
- end
9
- end
10
-
11
- def _compute_redirect_to_location(request, options)
12
- url = begin
13
- if options == :back && request.headers["X-XHR-Referer"]
14
- super(request, request.headers["X-XHR-Referer"])
15
- else
16
- super
17
- end
18
- end
19
-
20
- url
21
- end
22
- end
23
- end
@@ -1,11 +0,0 @@
1
- module Breezy
2
- # Corrects the behavior of url_for (and link_to, which uses url_for) with the :back
3
- # option by using the X-XHR-Referer request header instead of the standard Referer
4
- # request header.
5
- module XHRUrlFor
6
- def url_for(options = {})
7
- options = (controller.request.headers["X-XHR-Referer"] || options) if options == :back
8
- super
9
- end
10
- end
11
- end