solidus_json_api 0.3.0

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.
Files changed (140) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/.rspec +2 -0
  4. data/CHANGELOG.md +224 -0
  5. data/Gemfile +6 -0
  6. data/LICENSE +26 -0
  7. data/README.md +94 -0
  8. data/Rakefile +38 -0
  9. data/app/controllers/concerns/spree/api/v2/renderable.rb +63 -0
  10. data/app/controllers/spree/api/v2/base_controller.rb +9 -0
  11. data/app/controllers/spree/api/v2/children_controller.rb +29 -0
  12. data/app/controllers/spree/api/v2/countries_controller.rb +21 -0
  13. data/app/controllers/spree/api/v2/images_controller.rb +29 -0
  14. data/app/controllers/spree/api/v2/line_items_controller.rb +36 -0
  15. data/app/controllers/spree/api/v2/option_types_controller.rb +31 -0
  16. data/app/controllers/spree/api/v2/option_values_controller.rb +29 -0
  17. data/app/controllers/spree/api/v2/orders_controller.rb +21 -0
  18. data/app/controllers/spree/api/v2/prices_controller.rb +27 -0
  19. data/app/controllers/spree/api/v2/products_controller.rb +37 -0
  20. data/app/controllers/spree/api/v2/states_controller.rb +29 -0
  21. data/app/controllers/spree/api/v2/taxonomies_controller.rb +21 -0
  22. data/app/controllers/spree/api/v2/taxons_controller.rb +40 -0
  23. data/app/controllers/spree/api/v2/variants_controller.rb +35 -0
  24. data/app/models/spree/base_decorator.rb +5 -0
  25. data/app/models/spree/image_decorator.rb +3 -0
  26. data/app/models/spree/line_item_decorator.rb +3 -0
  27. data/app/models/spree/order_decorator.rb +3 -0
  28. data/app/models/spree/price_decorator.rb +3 -0
  29. data/app/models/spree/state_decorator.rb +3 -0
  30. data/app/serializers/spree/address_serializer.rb +9 -0
  31. data/app/serializers/spree/base_serializer.rb +13 -0
  32. data/app/serializers/spree/country_serializer.rb +7 -0
  33. data/app/serializers/spree/error_serializer.rb +55 -0
  34. data/app/serializers/spree/image_serializer.rb +13 -0
  35. data/app/serializers/spree/line_item_serializer.rb +13 -0
  36. data/app/serializers/spree/option_type_serializer.rb +8 -0
  37. data/app/serializers/spree/option_value_serializer.rb +8 -0
  38. data/app/serializers/spree/order_serializer.rb +20 -0
  39. data/app/serializers/spree/price_serializer.rb +7 -0
  40. data/app/serializers/spree/product_serializer.rb +12 -0
  41. data/app/serializers/spree/role_serializer.rb +5 -0
  42. data/app/serializers/spree/state_serializer.rb +7 -0
  43. data/app/serializers/spree/store_serializer.rb +6 -0
  44. data/app/serializers/spree/taxon_serializer.rb +16 -0
  45. data/app/serializers/spree/taxonomy_serializer.rb +7 -0
  46. data/app/serializers/spree/user_serializer.rb +5 -0
  47. data/app/serializers/spree/variant_serializer.rb +12 -0
  48. data/circle.yml +12 -0
  49. data/config/locales/en.yml +25 -0
  50. data/config/routes.rb +53 -0
  51. data/docs/.nojekyll +0 -0
  52. data/docs/Dockerfile +12 -0
  53. data/docs/Gemfile +14 -0
  54. data/docs/README.md +12 -0
  55. data/docs/Rakefile +9 -0
  56. data/docs/config.rb +39 -0
  57. data/docs/font-selection.json +148 -0
  58. data/docs/source/CNAME +1 -0
  59. data/docs/source/fonts/slate.eot +0 -0
  60. data/docs/source/fonts/slate.svg +14 -0
  61. data/docs/source/fonts/slate.ttf +0 -0
  62. data/docs/source/fonts/slate.woff +0 -0
  63. data/docs/source/fonts/slate.woff2 +0 -0
  64. data/docs/source/images/favicon.ico +0 -0
  65. data/docs/source/images/navbar.png +0 -0
  66. data/docs/source/includes/_countries.md +133 -0
  67. data/docs/source/includes/_errors.md +17 -0
  68. data/docs/source/includes/_filtering.md +11 -0
  69. data/docs/source/includes/_images.md +201 -0
  70. data/docs/source/includes/_line_items.md +143 -0
  71. data/docs/source/includes/_option_types.md +267 -0
  72. data/docs/source/includes/_option_values.md +227 -0
  73. data/docs/source/includes/_orders.md +150 -0
  74. data/docs/source/includes/_pagination.md +10 -0
  75. data/docs/source/includes/_prices.md +188 -0
  76. data/docs/source/includes/_products.md +407 -0
  77. data/docs/source/includes/_states.md +96 -0
  78. data/docs/source/includes/_taxonomies.md +325 -0
  79. data/docs/source/includes/_taxons.md +414 -0
  80. data/docs/source/includes/_variants.md +430 -0
  81. data/docs/source/index.md +51 -0
  82. data/docs/source/javascripts/all.js +4 -0
  83. data/docs/source/javascripts/all_nosearch.js +3 -0
  84. data/docs/source/javascripts/app/_lang.js +162 -0
  85. data/docs/source/javascripts/app/_search.js +74 -0
  86. data/docs/source/javascripts/app/_toc.js +55 -0
  87. data/docs/source/javascripts/lib/_energize.js +169 -0
  88. data/docs/source/javascripts/lib/_imagesloaded.min.js +7 -0
  89. data/docs/source/javascripts/lib/_jquery.highlight.js +108 -0
  90. data/docs/source/javascripts/lib/_jquery.tocify.js +1042 -0
  91. data/docs/source/javascripts/lib/_jquery_ui.js +566 -0
  92. data/docs/source/javascripts/lib/_lunr.js +1910 -0
  93. data/docs/source/layouts/layout.erb +110 -0
  94. data/docs/source/stylesheets/_icon-font.scss +38 -0
  95. data/docs/source/stylesheets/_normalize.css +427 -0
  96. data/docs/source/stylesheets/_syntax.scss.erb +27 -0
  97. data/docs/source/stylesheets/_variables.scss +109 -0
  98. data/docs/source/stylesheets/print.css.scss +142 -0
  99. data/docs/source/stylesheets/screen.css.scss +622 -0
  100. data/lib/solidus_json_api/config.rb +8 -0
  101. data/lib/solidus_json_api/engine.rb +21 -0
  102. data/lib/solidus_json_api.rb +5 -0
  103. data/solidus_json_api.gemspec +36 -0
  104. data/spec/controllers/spree/api/v2/base_controller_spec.rb +46 -0
  105. data/spec/controllers/spree/api/v2/children_controller_spec.rb +28 -0
  106. data/spec/controllers/spree/api/v2/countries_controller_spec.rb +25 -0
  107. data/spec/controllers/spree/api/v2/images_controller_spec.rb +91 -0
  108. data/spec/controllers/spree/api/v2/line_items_controller_spec.rb +101 -0
  109. data/spec/controllers/spree/api/v2/option_types_controller_spec.rb +71 -0
  110. data/spec/controllers/spree/api/v2/option_values_controller_spec.rb +88 -0
  111. data/spec/controllers/spree/api/v2/orders_controller_spec.rb +61 -0
  112. data/spec/controllers/spree/api/v2/prices_controller_spec.rb +55 -0
  113. data/spec/controllers/spree/api/v2/products_controller_spec.rb +99 -0
  114. data/spec/controllers/spree/api/v2/states_controller_spec.rb +42 -0
  115. data/spec/controllers/spree/api/v2/taxonomies_controller_spec.rb +31 -0
  116. data/spec/controllers/spree/api/v2/taxons_controller_spec.rb +54 -0
  117. data/spec/controllers/spree/api/v2/variants_controller_spec.rb +106 -0
  118. data/spec/lib/solidus_json_api/config_spec.rb +10 -0
  119. data/spec/models/spree/base_decorator_spec.rb +9 -0
  120. data/spec/models/spree/price_decorator_spec.rb +3 -0
  121. data/spec/serializers/spree/address_serializer_spec.rb +35 -0
  122. data/spec/serializers/spree/country_serializer_spec.rb +27 -0
  123. data/spec/serializers/spree/error_serializer_spec.rb +141 -0
  124. data/spec/serializers/spree/image_serializer_spec.rb +30 -0
  125. data/spec/serializers/spree/line_item_serializer_spec.rb +40 -0
  126. data/spec/serializers/spree/option_type_serializer_spec.rb +27 -0
  127. data/spec/serializers/spree/option_value_serializer_spec.rb +29 -0
  128. data/spec/serializers/spree/order_serializer_spec.rb +68 -0
  129. data/spec/serializers/spree/price_serializer_spec.rb +28 -0
  130. data/spec/serializers/spree/product_serializer_spec.rb +47 -0
  131. data/spec/serializers/spree/role_serializer_spec.rb +17 -0
  132. data/spec/serializers/spree/state_serializer_spec.rb +25 -0
  133. data/spec/serializers/spree/store_serializer_spec.rb +25 -0
  134. data/spec/serializers/spree/taxon_serializer_spec.rb +44 -0
  135. data/spec/serializers/spree/taxonomy_serializer_spec.rb +27 -0
  136. data/spec/serializers/spree/user_serializer_spec.rb +17 -0
  137. data/spec/serializers/spree/variant_serializer_spec.rb +55 -0
  138. data/spec/spec_helper.rb +57 -0
  139. data/spec/support/shoulda_matchers.rb +6 -0
  140. metadata +442 -0
@@ -0,0 +1,622 @@
1
+ @charset "utf-8";
2
+ @import 'normalize';
3
+ @import 'compass';
4
+ @import 'variables';
5
+ @import 'syntax';
6
+ @import 'icon-font';
7
+
8
+ /*
9
+ Copyright 2008-2013 Concur Technologies, Inc.
10
+
11
+ Licensed under the Apache License, Version 2.0 (the "License"); you may
12
+ not use this file except in compliance with the License. You may obtain
13
+ a copy of the License at
14
+
15
+ http://www.apache.org/licenses/LICENSE-2.0
16
+
17
+ Unless required by applicable law or agreed to in writing, software
18
+ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
19
+ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
20
+ License for the specific language governing permissions and limitations
21
+ under the License.
22
+ */
23
+
24
+ ////////////////////////////////////////////////////////////////////////////////
25
+ // GENERAL STUFF
26
+ ////////////////////////////////////////////////////////////////////////////////
27
+
28
+ html, body {
29
+ color: $main-text;
30
+ padding: 0;
31
+ margin: 0;
32
+ -webkit-font-smoothing: antialiased;
33
+ -moz-osx-font-smoothing: grayscale;
34
+ @extend %default-font;
35
+ background-color: $main-bg;
36
+ height: 100%;
37
+ -webkit-text-size-adjust: none; /* Never autoresize text */
38
+ }
39
+
40
+ ////////////////////////////////////////////////////////////////////////////////
41
+ // TABLE OF CONTENTS
42
+ ////////////////////////////////////////////////////////////////////////////////
43
+
44
+ #toc > ul > li > a > span {
45
+ float: right;
46
+ background-color: #2484FF;
47
+ border-radius: 40px;
48
+ width: 20px;
49
+ }
50
+
51
+ @mixin embossed-bg {
52
+ background:
53
+ linear-gradient(to bottom, rgba(#000, 0.2), rgba(#000, 0) 8px),
54
+ linear-gradient(to top, rgba(#000, 0.2), rgba(#000, 0) 8px),
55
+ linear-gradient(to bottom, rgba($nav-embossed-border-top, 1), rgba($nav-embossed-border-top, 0) 1.5px),
56
+ linear-gradient(to top, rgba($nav-embossed-border-bottom, 1), rgba($nav-embossed-border-bottom, 0) 1.5px),
57
+ $nav-subitem-bg;
58
+ }
59
+
60
+ .tocify-wrapper {
61
+ transition: left 0.3s ease-in-out;
62
+
63
+ overflow-y: auto;
64
+ overflow-x: hidden;
65
+ position: fixed;
66
+ z-index: 30;
67
+ top: 0;
68
+ left: 0;
69
+ bottom: 0;
70
+ width: $nav-width;
71
+ background-color: $nav-bg;
72
+ font-size: 13px;
73
+ font-weight: bold;
74
+
75
+ // language selector for mobile devices
76
+ .lang-selector {
77
+ display: none;
78
+ a {
79
+ padding-top: 0.5em;
80
+ padding-bottom: 0.5em;
81
+ }
82
+ }
83
+
84
+ // This is the logo at the top of the ToC
85
+ &>img {
86
+ display: block;
87
+ width: 90%;
88
+ padding: 5%;
89
+ }
90
+
91
+ &>.search {
92
+ position: relative;
93
+
94
+ input {
95
+ background: $nav-bg;
96
+ border-width: 0 0 1px 0;
97
+ border-color: $search-box-border-color;
98
+ padding: 6px 0 6px 20px;
99
+ box-sizing: border-box;
100
+ margin: $nav-v-padding $nav-padding;
101
+ width: $nav-width - 30;
102
+ outline: none;
103
+ color: $nav-text;
104
+ border-radius: 0; /* ios has a default border radius */
105
+ }
106
+
107
+ &:before {
108
+ position: absolute;
109
+ top: 17px;
110
+ left: $nav-padding;
111
+ color: $nav-text;
112
+ @extend %icon-search;
113
+ }
114
+ }
115
+
116
+ img+.tocify {
117
+ margin-top: $logo-margin;
118
+ }
119
+
120
+ .search-results {
121
+ margin-top: 0;
122
+ box-sizing: border-box;
123
+ height: 0;
124
+ overflow-y: auto;
125
+ overflow-x: hidden;
126
+ transition-property: height, margin;
127
+ transition-duration: 180ms;
128
+ transition-timing-function: ease-in-out;
129
+ &.visible {
130
+ height: 30%;
131
+ margin-bottom: 1em;
132
+ }
133
+
134
+ @include embossed-bg;
135
+
136
+ li {
137
+ margin: 1em $nav-padding;
138
+ line-height: 1;
139
+ }
140
+
141
+ a {
142
+ color: $nav-text;
143
+ text-decoration: none;
144
+
145
+ &:hover {
146
+ text-decoration: underline;
147
+ }
148
+ }
149
+ }
150
+
151
+
152
+ .tocify-item>a, .toc-footer li {
153
+ padding: 0 $nav-padding 0 $nav-padding;
154
+ display: block;
155
+ overflow-x: hidden;
156
+ white-space: nowrap;
157
+ text-overflow: ellipsis;
158
+ }
159
+
160
+ // The Table of Contents is composed of multiple nested
161
+ // unordered lists. These styles remove the default
162
+ // styling of an unordered list because it is ugly.
163
+ ul, li {
164
+ list-style: none;
165
+ margin: 0;
166
+ padding: 0;
167
+ line-height: 28px;
168
+ }
169
+
170
+ li {
171
+ color: $nav-text;
172
+ transition-property: background;
173
+ transition-timing-function: linear;
174
+ transition-duration: 230ms;
175
+ }
176
+
177
+ // This is the currently selected ToC entry
178
+ .tocify-focus {
179
+ box-shadow: 0px 1px 0px $nav-active-shadow;
180
+ background-color: $nav-active-bg;
181
+ color: $nav-active-text;
182
+ }
183
+
184
+ // Subheaders are the submenus that slide open
185
+ // in the table of contents.
186
+ .tocify-subheader {
187
+ display: none; // tocify will override this when needed
188
+ background-color: $nav-subitem-bg;
189
+ font-weight: 500;
190
+ .tocify-item>a {
191
+ padding-left: $nav-padding + $nav-indent;
192
+ font-size: 12px;
193
+ }
194
+
195
+ // for embossed look:
196
+ @include embossed-bg;
197
+ &>li:last-child {
198
+ box-shadow: none; // otherwise it'll overflow out of the subheader
199
+ }
200
+ }
201
+
202
+ .toc-footer {
203
+ padding: 1em 0;
204
+ margin-top: 1em;
205
+ border-top: 1px dashed $nav-footer-border-color;
206
+
207
+ li,a {
208
+ color: $nav-text;
209
+ text-decoration: none;
210
+ }
211
+
212
+ a:hover {
213
+ text-decoration: underline;
214
+ }
215
+
216
+ li {
217
+ font-size: 0.8em;
218
+ line-height: 1.7;
219
+ text-decoration: none;
220
+ }
221
+ }
222
+
223
+ }
224
+
225
+ // button to show navigation on mobile devices
226
+ #nav-button {
227
+ span {
228
+ display: block;
229
+ $side-pad: $main-padding / 2 - 8px;
230
+ padding: $side-pad $side-pad $side-pad;
231
+ background-color: rgba($main-bg, 0.7);
232
+ transform-origin: 0 0;
233
+ transform: rotate(-90deg) translate(-100%, 0);
234
+ border-radius: 0 0 0 5px;
235
+ }
236
+ padding: 0 1.5em 5em 0; // increase touch size area
237
+ display: none;
238
+ position: fixed;
239
+ top: 0;
240
+ left: 0;
241
+ z-index: 100;
242
+ color: #000;
243
+ text-decoration: none;
244
+ font-weight: bold;
245
+ opacity: 0.7;
246
+ line-height: 16px;
247
+ img {
248
+ height: 16px;
249
+ vertical-align: bottom;
250
+ }
251
+
252
+ transition: left 0.3s ease-in-out;
253
+
254
+ &:hover { opacity: 1; }
255
+ &.open {left: $nav-width}
256
+ }
257
+
258
+
259
+ ////////////////////////////////////////////////////////////////////////////////
260
+ // PAGE LAYOUT AND CODE SAMPLE BACKGROUND
261
+ ////////////////////////////////////////////////////////////////////////////////
262
+
263
+ .page-wrapper {
264
+ margin-left: $nav-width;
265
+ position: relative;
266
+ z-index: 10;
267
+ background-color: $main-bg;
268
+ min-height: 100%;
269
+
270
+ padding-bottom: 1px; // prevent margin overflow
271
+
272
+ // The dark box is what gives the code samples their dark background.
273
+ // It sits essentially under the actual content block, which has a
274
+ // transparent background.
275
+ // I know, it's hackish, but it's the simplist way to make the left
276
+ // half of the content always this background color.
277
+ .dark-box {
278
+ width: $examples-width;
279
+ background-color: $examples-bg;
280
+ position: absolute;
281
+ right: 0;
282
+ top: 0;
283
+ bottom: 0;
284
+ }
285
+
286
+ .lang-selector {
287
+ position: fixed;
288
+ z-index: 50;
289
+ border-bottom: 5px solid $lang-select-active-bg;
290
+ }
291
+ }
292
+
293
+ .lang-selector {
294
+ background-color: $lang-select-bg;
295
+ width: 100%;
296
+ font-weight: bold;
297
+ a {
298
+ display: block;
299
+ float:left;
300
+ color: $lang-select-text;
301
+ text-decoration: none;
302
+ padding: 0 10px;
303
+ line-height: 30px;
304
+ outline: 0;
305
+
306
+ &:active, &:focus {
307
+ background-color: $lang-select-pressed-bg;
308
+ color: $lang-select-pressed-text;
309
+ }
310
+
311
+ &.active {
312
+ background-color: $lang-select-active-bg;
313
+ color: $lang-select-active-text;
314
+ }
315
+ }
316
+
317
+ &:after {
318
+ content: '';
319
+ clear: both;
320
+ display: block;
321
+ }
322
+ }
323
+
324
+ ////////////////////////////////////////////////////////////////////////////////
325
+ // CONTENT STYLES
326
+ ////////////////////////////////////////////////////////////////////////////////
327
+ // This is all the stuff with the light background in the left half of the page
328
+
329
+ .content {
330
+ // to place content above the dark box
331
+ position: relative;
332
+ z-index: 30;
333
+
334
+ &:after {
335
+ content: '';
336
+ display: block;
337
+ clear: both;
338
+ }
339
+
340
+ &>h1, &>h2, &>h3, &>h4, &>h5, &>h6, &>p, &>table, &>ul, &>ol, &>aside, &>dl {
341
+ margin-right: $examples-width;
342
+ padding: 0 $main-padding;
343
+ box-sizing: border-box;
344
+ display: block;
345
+ @include text-shadow($main-embossed-text-shadow);
346
+
347
+ @extend %left-col;
348
+ }
349
+
350
+ &>ul, &>ol {
351
+ padding-left: $main-padding + 15px;
352
+ }
353
+
354
+ // the div is the tocify hidden div for placeholding stuff
355
+ &>h1, &>h2, &>div {
356
+ clear:both;
357
+ }
358
+
359
+ h1 {
360
+ @extend %header-font;
361
+ font-size: 30px;
362
+ padding-top: 0.5em;
363
+ padding-bottom: 0.5em;
364
+ border-bottom: 1px solid #ccc;
365
+ margin-bottom: $h1-margin-bottom;
366
+ margin-top: 2em;
367
+ border-top: 1px solid #ddd;
368
+ background-image: linear-gradient(to bottom, #fff, #f9f9f9);
369
+ }
370
+
371
+ h1:first-child, div:first-child + h1 {
372
+ border-top-width: 0;
373
+ margin-top: 0;
374
+ }
375
+
376
+ h2 {
377
+ @extend %header-font;
378
+ font-size: 20px;
379
+ margin-top: 4em;
380
+ margin-bottom: 0;
381
+ border-top: 1px solid #ccc;
382
+ padding-top: 1.2em;
383
+ padding-bottom: 1.2em;
384
+ background-image: linear-gradient(to bottom, rgba(#fff, 0.4), rgba(#fff, 0));
385
+ }
386
+
387
+ // h2s right after h1s should bump right up
388
+ // against the h1s.
389
+ h1 + h2, h1 + div + h2 {
390
+ margin-top: $h1-margin-bottom * -1;
391
+ border-top: none;
392
+ }
393
+
394
+ h3, h4, h5, h6 {
395
+ @extend %header-font;
396
+ font-size: 15px;
397
+ margin-top: 2.5em;
398
+ margin-bottom: 0.8em;
399
+ }
400
+
401
+ h4, h5, h6 {
402
+ font-size: 10px;
403
+ }
404
+
405
+ hr {
406
+ margin: 2em 0;
407
+ border-top: 2px solid $examples-bg;
408
+ border-bottom: 2px solid $main-bg;
409
+ }
410
+
411
+ table {
412
+ margin-bottom: 1em;
413
+ overflow: auto;
414
+ th,td {
415
+ text-align: left;
416
+ vertical-align: top;
417
+ line-height: 1.6;
418
+ }
419
+
420
+ th {
421
+ padding: 5px 10px;
422
+ border-bottom: 1px solid #ccc;
423
+ vertical-align: bottom;
424
+ }
425
+
426
+ td {
427
+ padding: 10px;
428
+ }
429
+
430
+ tr:last-child {
431
+ border-bottom: 1px solid #ccc;
432
+ }
433
+
434
+ tr:nth-child(odd)>td {
435
+ background-color: lighten($main-bg,4.2%);
436
+ }
437
+
438
+ tr:nth-child(even)>td {
439
+ background-color: lighten($main-bg,2.4%);
440
+ }
441
+ }
442
+
443
+ dt {
444
+ font-weight: bold;
445
+ }
446
+
447
+ dd {
448
+ margin-left: 15px;
449
+ }
450
+
451
+ p, li, dt, dd {
452
+ line-height: 1.6;
453
+ margin-top: 0;
454
+ }
455
+
456
+ img {
457
+ max-width: 100%;
458
+ }
459
+
460
+ code {
461
+ background-color: rgba(0,0,0,0.05);
462
+ padding: 3px;
463
+ border-radius: 3px;
464
+ @extend %break-words;
465
+ @extend %code-font;
466
+ }
467
+
468
+ pre>code {
469
+ background-color: transparent;
470
+ padding: 0;
471
+ }
472
+
473
+ aside {
474
+ padding-top: 1em;
475
+ padding-bottom: 1em;
476
+ @include text-shadow(0 1px 0 lighten($aside-notice-bg, 15%));
477
+ margin-top: 1.5em;
478
+ margin-bottom: 1.5em;
479
+ background: $aside-notice-bg;
480
+ line-height: 1.6;
481
+
482
+ &.warning {
483
+ background-color: $aside-warning-bg;
484
+ @include text-shadow(0 1px 0 lighten($aside-warning-bg, 15%));
485
+ }
486
+
487
+ &.success {
488
+ background-color: $aside-success-bg;
489
+ @include text-shadow(0 1px 0 lighten($aside-success-bg, 15%));
490
+ }
491
+ }
492
+
493
+ aside:before {
494
+ vertical-align: middle;
495
+ padding-right: 0.5em;
496
+ font-size: 14px;
497
+ }
498
+
499
+ aside.notice:before {
500
+ @extend %icon-info-sign;
501
+ }
502
+
503
+ aside.warning:before {
504
+ @extend %icon-exclamation-sign;
505
+ }
506
+
507
+ aside.success:before {
508
+ @extend %icon-ok-sign;
509
+ }
510
+
511
+ .search-highlight {
512
+ padding: 2px;
513
+ margin: -2px;
514
+ border-radius: 4px;
515
+ border: 1px solid #F7E633;
516
+ @include text-shadow(1px 1px 0 #666);
517
+ background: linear-gradient(to top left, #F7E633 0%, #F1D32F 100%);
518
+ }
519
+ }
520
+
521
+ ////////////////////////////////////////////////////////////////////////////////
522
+ // CODE SAMPLE STYLES
523
+ ////////////////////////////////////////////////////////////////////////////////
524
+ // This is all the stuff that appears in the right half of the page
525
+
526
+ .content {
527
+ pre, blockquote {
528
+ background-color: $code-bg;
529
+ color: #fff;
530
+
531
+ padding: 2em $main-padding;
532
+ margin: 0;
533
+ width: $examples-width;
534
+
535
+ float:right;
536
+ clear:right;
537
+
538
+ box-sizing: border-box;
539
+ @include text-shadow(0px 1px 2px rgba(0,0,0,0.4));
540
+
541
+ @extend %right-col;
542
+
543
+ &>p { margin: 0; }
544
+
545
+ a {
546
+ color: #fff;
547
+ text-decoration: none;
548
+ border-bottom: dashed 1px #ccc;
549
+ }
550
+ }
551
+
552
+ pre {
553
+ @extend %code-font;
554
+ }
555
+
556
+ blockquote {
557
+ &>p {
558
+ background-color: $code-annotation-bg;
559
+ border-radius: 5px;
560
+ padding: $code-annotation-padding;
561
+ color: #ccc;
562
+ border-top: 1px solid #000;
563
+ border-bottom: 1px solid #404040;
564
+ }
565
+ }
566
+ }
567
+
568
+ ////////////////////////////////////////////////////////////////////////////////
569
+ // RESPONSIVE DESIGN
570
+ ////////////////////////////////////////////////////////////////////////////////
571
+ // These are the styles for phones and tablets
572
+ // There are also a couple styles disperesed
573
+
574
+ @media (max-width: $tablet-width) {
575
+ .tocify-wrapper {
576
+ left: -$nav-width;
577
+
578
+ &.open {
579
+ left: 0;
580
+ }
581
+ }
582
+
583
+ .page-wrapper {
584
+ margin-left: 0;
585
+ }
586
+
587
+ #nav-button {
588
+ display: block;
589
+ }
590
+
591
+ .tocify-wrapper .tocify-item > a {
592
+ padding-top: 0.3em;
593
+ padding-bottom: 0.3em;
594
+ }
595
+ }
596
+
597
+ @media (max-width: $phone-width) {
598
+ .dark-box {
599
+ display: none;
600
+ }
601
+
602
+ %left-col {
603
+ margin-right: 0;
604
+ }
605
+
606
+ .tocify-wrapper .lang-selector {
607
+ display: block;
608
+ }
609
+
610
+ .page-wrapper .lang-selector {
611
+ display: none;
612
+ }
613
+
614
+ %right-col {
615
+ width: auto;
616
+ float: none;
617
+ }
618
+
619
+ %right-col + %left-col {
620
+ margin-top: $main-padding;
621
+ }
622
+ }
@@ -0,0 +1,8 @@
1
+ module SolidusJsonApi
2
+ mattr_accessor :parent_serializer
3
+ @@parent_serializer = ActiveModel::Serializer
4
+
5
+ def self.setup
6
+ yield self
7
+ end
8
+ end
@@ -0,0 +1,21 @@
1
+ module SolidusJsonApi
2
+ class Engine < Rails::Engine
3
+ require 'spree/core'
4
+
5
+ isolate_namespace Spree
6
+ engine_name 'solidus_json_api'
7
+
8
+ # use rspec for tests
9
+ config.generators do |g|
10
+ g.test_framework :rspec
11
+ end
12
+
13
+ def self.activate
14
+ Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c|
15
+ Rails.configuration.cache_classes ? require(c) : load(c)
16
+ end
17
+ end
18
+
19
+ config.to_prepare &method(:activate).to_proc
20
+ end
21
+ end
@@ -0,0 +1,5 @@
1
+ require 'solidus_core'
2
+ require 'active_model_serializers'
3
+
4
+ require 'solidus_json_api/config'
5
+ require 'solidus_json_api/engine'
@@ -0,0 +1,36 @@
1
+ # encoding: UTF-8
2
+ Gem::Specification.new do |s|
3
+ s.platform = Gem::Platform::RUBY
4
+ s.name = 'solidus_json_api'
5
+ s.version = '0.3.0'
6
+ s.summary = 'A JSON API for Solidus.'
7
+ s.description = 'Adds an assortment of new api endpoints that are JSON API compatible.'
8
+ s.required_ruby_version = '>= 2.0.0'
9
+
10
+ s.author = 'Ben A. Morgan'
11
+ s.email = 'ben@benmorgan.io'
12
+ s.homepage = 'http://solidusapi.wildcardlabs.com'
13
+
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ s.require_path = 'lib'
17
+ s.requirements << 'none'
18
+
19
+ s.add_dependency 'solidus_api', '~> 1.0'
20
+ s.add_dependency 'active_model_serializers', '= 0.10.0.rc2'
21
+
22
+ s.add_development_dependency 'coffee-rails'
23
+ s.add_development_dependency 'coveralls'
24
+ s.add_development_dependency 'database_cleaner'
25
+ s.add_development_dependency 'factory_girl', '~> 4.5'
26
+ s.add_development_dependency 'ffaker'
27
+ s.add_development_dependency 'rspec-rails', '~> 3.3'
28
+ s.add_development_dependency 'rspec-its'
29
+ s.add_development_dependency 'sass-rails', '~> 5.0.0.beta1'
30
+ s.add_development_dependency 'simplecov'
31
+ s.add_development_dependency 'sqlite3'
32
+ s.add_development_dependency 'pg'
33
+ s.add_development_dependency 'pry'
34
+ s.add_development_dependency 'json_spec', '~> 1.1.4'
35
+ s.add_development_dependency 'shoulda-matchers', '~> 3.0.0'
36
+ end