wallaby 5.0.1 → 5.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (350) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +1 -3
  3. data/app/assets/images/wallaby/404.png +0 -0
  4. data/app/assets/images/wallaby/422.png +0 -0
  5. data/app/assets/images/wallaby/500.png +0 -0
  6. data/app/assets/javascripts/wallaby/application.js +1 -15
  7. data/app/assets/javascripts/wallaby/auto_select.js +77 -0
  8. data/app/assets/javascripts/wallaby/base.js +17 -0
  9. data/app/assets/javascripts/wallaby/setup.js.erb +60 -0
  10. data/app/assets/stylesheets/wallaby/application.scss +1 -51
  11. data/app/assets/stylesheets/wallaby/base/_layout.scss +257 -9
  12. data/app/assets/stylesheets/wallaby/base/_layout_desktop.scss +53 -0
  13. data/app/assets/stylesheets/wallaby/base/_mixins.scss +119 -0
  14. data/app/assets/stylesheets/wallaby/base/_override.scss +10 -0
  15. data/app/assets/stylesheets/wallaby/base/_vars.scss +72 -2
  16. data/app/assets/stylesheets/wallaby/base.scss +27 -0
  17. data/app/assets/stylesheets/wallaby/components/_auto_select.scss +119 -0
  18. data/app/assets/stylesheets/wallaby/components/_auto_select_desktop.scss +7 -0
  19. data/app/assets/stylesheets/wallaby/components/_color_square.scss +8 -0
  20. data/app/assets/stylesheets/wallaby/components/_filters.scss +14 -0
  21. data/app/assets/stylesheets/wallaby/components/_links.scss +25 -0
  22. data/app/assets/stylesheets/wallaby/components/_pagination.scss +35 -91
  23. data/app/assets/stylesheets/wallaby/components/_query.scss +101 -0
  24. data/app/assets/stylesheets/wallaby/components/_text.scss +6 -6
  25. data/app/assets/stylesheets/wallaby/pages/_error.scss +108 -0
  26. data/app/assets/stylesheets/wallaby/pages/_form.scss +40 -0
  27. data/app/assets/stylesheets/wallaby/pages/_index.scss +193 -0
  28. data/app/assets/stylesheets/wallaby/pages/_index_desktop.scss +22 -0
  29. data/app/assets/stylesheets/wallaby/pages/_show.scss +21 -0
  30. data/app/controllers/wallaby/abstract_resources_controller.rb +334 -0
  31. data/app/controllers/wallaby/application_controller.rb +45 -15
  32. data/app/controllers/wallaby/base_controller.rb +30 -0
  33. data/app/controllers/wallaby/resources_controller.rb +2 -131
  34. data/app/controllers/wallaby/secure_controller.rb +38 -24
  35. data/app/routes/wallaby/resources_router.rb +40 -43
  36. data/app/security/ability.rb +4 -28
  37. data/app/views/layouts/wallaby/application.html.erb +11 -6
  38. data/app/views/layouts/wallaby/error.html.erb +26 -4
  39. data/app/views/wallaby/error.html.erb +11 -0
  40. data/app/views/wallaby/error.json.jbuilder +8 -0
  41. data/app/views/wallaby/{shared → resources}/_flash_messages.html.erb +0 -0
  42. data/app/views/wallaby/resources/_footer.html.erb +1 -0
  43. data/app/views/wallaby/resources/_form.html.erb +2 -2
  44. data/app/views/wallaby/resources/_header.html.erb +38 -0
  45. data/app/views/wallaby/resources/_imodal.html.erb +13 -0
  46. data/app/views/wallaby/resources/_index_actions.html.erb +4 -1
  47. data/app/views/wallaby/resources/_index_filters.html.erb +23 -0
  48. data/app/views/wallaby/resources/_index_pagination.html.erb +63 -0
  49. data/app/views/wallaby/resources/_index_query.html.erb +23 -0
  50. data/app/views/wallaby/resources/_logo.html.erb +1 -0
  51. data/app/views/wallaby/resources/_navs.html.erb +9 -0
  52. data/app/views/wallaby/resources/_resource_actions.html.erb +3 -3
  53. data/app/views/wallaby/resources/{shared/_resource_nav.html.erb → _resource_navs.html.erb} +6 -6
  54. data/app/views/wallaby/resources/_title.html.erb +1 -0
  55. data/app/views/wallaby/resources/_user_menu.html.erb +5 -0
  56. data/app/views/wallaby/resources/bad_request.json.jbuilder +7 -0
  57. data/app/views/wallaby/resources/edit.html.erb +16 -12
  58. data/app/views/wallaby/resources/form/_belongs_to.html.erb +63 -12
  59. data/app/views/wallaby/resources/form/_bigint.html.erb +10 -1
  60. data/app/views/wallaby/resources/form/_bigserial.html.erb +18 -0
  61. data/app/views/wallaby/resources/form/_binary.html.erb +11 -2
  62. data/app/views/wallaby/resources/form/_bit.html.erb +10 -1
  63. data/app/views/wallaby/resources/form/_bit_varying.html.erb +10 -1
  64. data/app/views/wallaby/resources/form/_blob.html.erb +21 -0
  65. data/app/views/wallaby/resources/form/_boolean.html.erb +9 -0
  66. data/app/views/wallaby/resources/form/_box.html.erb +21 -0
  67. data/app/views/wallaby/resources/form/_cidr.html.erb +13 -1
  68. data/app/views/wallaby/resources/form/_circle.html.erb +21 -0
  69. data/app/views/wallaby/resources/form/_citext.html.erb +11 -2
  70. data/app/views/wallaby/resources/form/_color.html.erb +11 -2
  71. data/app/views/wallaby/resources/form/_date.html.erb +12 -3
  72. data/app/views/wallaby/resources/form/_daterange.html.erb +14 -5
  73. data/app/views/wallaby/resources/form/_datetime.html.erb +12 -3
  74. data/app/views/wallaby/resources/form/_decimal.html.erb +10 -1
  75. data/app/views/wallaby/resources/form/_dropdown.html.erb +18 -0
  76. data/app/views/wallaby/resources/form/_email.html.erb +9 -0
  77. data/app/views/wallaby/resources/form/_file.html.erb +21 -0
  78. data/app/views/wallaby/resources/form/_float.html.erb +10 -1
  79. data/app/views/wallaby/resources/form/_has_and_belongs_to_many.html.erb +53 -7
  80. data/app/views/wallaby/resources/form/_has_many.html.erb +52 -7
  81. data/app/views/wallaby/resources/form/_has_one.html.erb +10 -2
  82. data/app/views/wallaby/resources/form/_hstore.html.erb +12 -5
  83. data/app/views/wallaby/resources/form/_inet.html.erb +13 -1
  84. data/app/views/wallaby/resources/form/_int4range.html.erb +11 -2
  85. data/app/views/wallaby/resources/form/_int8range.html.erb +11 -2
  86. data/app/views/wallaby/resources/form/_integer.html.erb +10 -1
  87. data/app/views/wallaby/resources/form/_json.html.erb +13 -6
  88. data/app/views/wallaby/resources/form/_jsonb.html.erb +13 -6
  89. data/app/views/wallaby/resources/form/_line.html.erb +21 -0
  90. data/app/views/wallaby/resources/form/_longblob.html.erb +21 -0
  91. data/app/views/wallaby/resources/form/_longtext.html.erb +30 -0
  92. data/app/views/wallaby/resources/form/_lseg.html.erb +21 -0
  93. data/app/views/wallaby/resources/form/_ltree.html.erb +17 -1
  94. data/app/views/wallaby/resources/form/_macaddr.html.erb +13 -1
  95. data/app/views/wallaby/resources/form/_markdown.html.erb +29 -0
  96. data/app/views/wallaby/resources/form/_mediumblob.html.erb +21 -0
  97. data/app/views/wallaby/resources/form/_mediumtext.html.erb +30 -0
  98. data/app/views/wallaby/resources/form/_money.html.erb +10 -1
  99. data/app/views/wallaby/resources/form/_numrange.html.erb +11 -2
  100. data/app/views/wallaby/resources/form/_password.html.erb +14 -1
  101. data/app/views/wallaby/resources/form/_path.html.erb +17 -0
  102. data/app/views/wallaby/resources/form/_point.html.erb +11 -2
  103. data/app/views/wallaby/resources/form/_polygon.html.erb +17 -0
  104. data/app/views/wallaby/resources/form/_serial.html.erb +18 -0
  105. data/app/views/wallaby/resources/form/_sti.html.erb +18 -0
  106. data/app/views/wallaby/resources/form/_string.html.erb +14 -1
  107. data/app/views/wallaby/resources/form/_text.html.erb +11 -2
  108. data/app/views/wallaby/resources/form/_time.html.erb +12 -3
  109. data/app/views/wallaby/resources/form/_tinyblob.html.erb +21 -0
  110. data/app/views/wallaby/resources/form/_tinytext.html.erb +30 -0
  111. data/app/views/wallaby/resources/form/_tsrange.html.erb +14 -5
  112. data/app/views/wallaby/resources/form/_tstzrange.html.erb +14 -5
  113. data/app/views/wallaby/resources/form/_tsvector.html.erb +9 -0
  114. data/app/views/wallaby/resources/form/_unsigned_bigint.html.erb +18 -0
  115. data/app/views/wallaby/resources/form/_unsigned_decimal.html.erb +18 -0
  116. data/app/views/wallaby/resources/form/_unsigned_float.html.erb +18 -0
  117. data/app/views/wallaby/resources/form/_unsigned_integer.html.erb +18 -0
  118. data/app/views/wallaby/resources/form/_uuid.html.erb +10 -1
  119. data/app/views/wallaby/resources/form/_xml.html.erb +11 -5
  120. data/app/views/wallaby/resources/form.json.jbuilder +5 -0
  121. data/app/views/wallaby/{core → resources}/home.html.erb +1 -1
  122. data/app/views/wallaby/resources/index/_belongs_to.html.erb +5 -1
  123. data/app/views/wallaby/resources/index/_bigint.html.erb +4 -0
  124. data/app/views/wallaby/resources/index/_bigserial.html.erb +5 -0
  125. data/app/views/wallaby/resources/index/_binary.html.erb +5 -1
  126. data/app/views/wallaby/resources/index/_bit.html.erb +4 -0
  127. data/app/views/wallaby/resources/index/_bit_varying.html.erb +4 -0
  128. data/app/views/wallaby/resources/index/_blob.html.erb +5 -0
  129. data/app/views/wallaby/resources/index/_boolean.html.erb +5 -1
  130. data/app/views/wallaby/resources/index/_box.html.erb +16 -0
  131. data/app/views/wallaby/resources/index/_cidr.html.erb +5 -1
  132. data/app/views/wallaby/resources/index/_circle.html.erb +16 -0
  133. data/app/views/wallaby/resources/index/_citext.html.erb +5 -1
  134. data/app/views/wallaby/resources/index/_color.html.erb +6 -1
  135. data/app/views/wallaby/resources/index/_date.html.erb +4 -0
  136. data/app/views/wallaby/resources/index/_daterange.html.erb +5 -1
  137. data/app/views/wallaby/resources/index/_datetime.html.erb +5 -1
  138. data/app/views/wallaby/resources/index/_decimal.html.erb +4 -0
  139. data/app/views/wallaby/resources/index/_email.html.erb +4 -0
  140. data/app/views/wallaby/resources/index/_float.html.erb +4 -0
  141. data/app/views/wallaby/resources/index/_has_and_belongs_to_many.html.erb +6 -2
  142. data/app/views/wallaby/resources/index/_has_many.html.erb +6 -2
  143. data/app/views/wallaby/resources/index/_has_one.html.erb +5 -1
  144. data/app/views/wallaby/resources/index/_hstore.html.erb +6 -2
  145. data/app/views/wallaby/resources/index/_inet.html.erb +5 -1
  146. data/app/views/wallaby/resources/index/_int4range.html.erb +4 -0
  147. data/app/views/wallaby/resources/index/_int8range.html.erb +4 -0
  148. data/app/views/wallaby/resources/index/_integer.html.erb +4 -0
  149. data/app/views/wallaby/resources/index/_json.html.erb +5 -2
  150. data/app/views/wallaby/resources/index/_jsonb.html.erb +5 -2
  151. data/app/views/wallaby/resources/index/_line.html.erb +16 -0
  152. data/app/views/wallaby/resources/index/_longblob.html.erb +5 -0
  153. data/app/views/wallaby/resources/index/_longtext.html.erb +16 -0
  154. data/app/views/wallaby/resources/index/_lseg.html.erb +16 -0
  155. data/app/views/wallaby/resources/index/_ltree.html.erb +5 -1
  156. data/app/views/wallaby/resources/index/_macaddr.html.erb +4 -0
  157. data/app/views/wallaby/resources/index/_mediumblob.html.erb +5 -0
  158. data/app/views/wallaby/resources/index/_mediumtext.html.erb +16 -0
  159. data/app/views/wallaby/resources/index/_money.html.erb +4 -0
  160. data/app/views/wallaby/resources/index/_numrange.html.erb +4 -0
  161. data/app/views/wallaby/resources/index/_password.html.erb +9 -0
  162. data/app/views/wallaby/resources/index/_path.html.erb +16 -0
  163. data/app/views/wallaby/resources/index/_point.html.erb +4 -0
  164. data/app/views/wallaby/resources/index/_polygon.html.erb +16 -0
  165. data/app/views/wallaby/resources/index/_raw.html.erb +9 -0
  166. data/app/views/wallaby/resources/index/_serial.html.erb +5 -0
  167. data/app/views/wallaby/resources/index/_sti.html.erb +16 -0
  168. data/app/views/wallaby/resources/index/_string.html.erb +5 -1
  169. data/app/views/wallaby/resources/index/_text.html.erb +5 -1
  170. data/app/views/wallaby/resources/index/_time.html.erb +4 -0
  171. data/app/views/wallaby/resources/index/_tinyblob.html.erb +5 -0
  172. data/app/views/wallaby/resources/index/_tinytext.html.erb +16 -0
  173. data/app/views/wallaby/resources/index/_tsrange.html.erb +5 -1
  174. data/app/views/wallaby/resources/index/_tstzrange.html.erb +5 -1
  175. data/app/views/wallaby/resources/index/_tsvector.html.erb +5 -1
  176. data/app/views/wallaby/resources/index/_unsigned_bigint.html.erb +5 -0
  177. data/app/views/wallaby/resources/index/_unsigned_decimal.html.erb +5 -0
  178. data/app/views/wallaby/resources/index/_unsigned_float.html.erb +5 -0
  179. data/app/views/wallaby/resources/index/_unsigned_integer.html.erb +5 -0
  180. data/app/views/wallaby/resources/index/_uuid.html.erb +5 -1
  181. data/app/views/wallaby/resources/index/_xml.html.erb +5 -1
  182. data/app/views/wallaby/resources/index.csv.erb +26 -0
  183. data/app/views/wallaby/resources/index.html.erb +47 -59
  184. data/app/views/wallaby/resources/index.json.jbuilder +5 -0
  185. data/app/views/wallaby/resources/new.html.erb +12 -11
  186. data/app/views/wallaby/resources/show/_belongs_to.html.erb +5 -1
  187. data/app/views/wallaby/resources/show/_bigint.html.erb +4 -0
  188. data/app/views/wallaby/resources/show/_bigserial.html.erb +5 -0
  189. data/app/views/wallaby/resources/show/_binary.html.erb +5 -1
  190. data/app/views/wallaby/resources/show/_bit.html.erb +4 -0
  191. data/app/views/wallaby/resources/show/_bit_varying.html.erb +4 -0
  192. data/app/views/wallaby/resources/show/_blob.html.erb +5 -0
  193. data/app/views/wallaby/resources/show/_boolean.html.erb +5 -1
  194. data/app/views/wallaby/resources/show/_box.html.erb +9 -0
  195. data/app/views/wallaby/resources/show/_cidr.html.erb +5 -1
  196. data/app/views/wallaby/resources/show/_circle.html.erb +9 -0
  197. data/app/views/wallaby/resources/show/_citext.html.erb +4 -0
  198. data/app/views/wallaby/resources/show/_color.html.erb +6 -1
  199. data/app/views/wallaby/resources/show/_date.html.erb +4 -0
  200. data/app/views/wallaby/resources/show/_daterange.html.erb +4 -0
  201. data/app/views/wallaby/resources/show/_datetime.html.erb +4 -0
  202. data/app/views/wallaby/resources/show/_decimal.html.erb +4 -0
  203. data/app/views/wallaby/resources/show/_email.html.erb +4 -0
  204. data/app/views/wallaby/resources/show/_float.html.erb +4 -0
  205. data/app/views/wallaby/resources/show/_has_and_belongs_to_many.html.erb +6 -2
  206. data/app/views/wallaby/resources/show/_has_many.html.erb +6 -2
  207. data/app/views/wallaby/resources/show/_has_one.html.erb +5 -1
  208. data/app/views/wallaby/resources/show/_hstore.html.erb +4 -0
  209. data/app/views/wallaby/resources/show/_image.html.erb +9 -0
  210. data/app/views/wallaby/resources/show/_inet.html.erb +5 -1
  211. data/app/views/wallaby/resources/show/_int4range.html.erb +4 -0
  212. data/app/views/wallaby/resources/show/_int8range.html.erb +4 -0
  213. data/app/views/wallaby/resources/show/_integer.html.erb +4 -0
  214. data/app/views/wallaby/resources/show/_json.html.erb +4 -0
  215. data/app/views/wallaby/resources/show/_jsonb.html.erb +4 -0
  216. data/app/views/wallaby/resources/show/_line.html.erb +9 -0
  217. data/app/views/wallaby/resources/show/_longblob.html.erb +5 -0
  218. data/app/views/wallaby/resources/show/_longtext.html.erb +5 -0
  219. data/app/views/wallaby/resources/show/_lseg.html.erb +9 -0
  220. data/app/views/wallaby/resources/show/_ltree.html.erb +4 -0
  221. data/app/views/wallaby/resources/show/_macaddr.html.erb +4 -0
  222. data/app/views/wallaby/resources/show/_mediumblob.html.erb +5 -0
  223. data/app/views/wallaby/resources/show/_mediumtext.html.erb +5 -0
  224. data/app/views/wallaby/resources/show/_money.html.erb +4 -0
  225. data/app/views/wallaby/resources/show/_numrange.html.erb +4 -0
  226. data/app/views/wallaby/resources/show/_password.html.erb +9 -0
  227. data/app/views/wallaby/resources/show/_path.html.erb +9 -0
  228. data/app/views/wallaby/resources/show/_point.html.erb +4 -0
  229. data/app/views/wallaby/resources/show/_polygon.html.erb +9 -0
  230. data/app/views/wallaby/resources/show/_raw.html.erb +9 -0
  231. data/app/views/wallaby/resources/show/_serial.html.erb +5 -0
  232. data/app/views/wallaby/resources/show/_sti.html.erb +5 -0
  233. data/app/views/wallaby/resources/show/_string.html.erb +4 -0
  234. data/app/views/wallaby/resources/show/_text.html.erb +4 -0
  235. data/app/views/wallaby/resources/show/_time.html.erb +4 -0
  236. data/app/views/wallaby/resources/show/_tinyblob.html.erb +5 -0
  237. data/app/views/wallaby/resources/show/_tinytext.html.erb +5 -0
  238. data/app/views/wallaby/resources/show/_tsrange.html.erb +4 -0
  239. data/app/views/wallaby/resources/show/_tstzrange.html.erb +4 -0
  240. data/app/views/wallaby/resources/show/_tsvector.html.erb +4 -0
  241. data/app/views/wallaby/resources/show/_unsigned_bigint.html.erb +5 -0
  242. data/app/views/wallaby/resources/show/_unsigned_decimal.html.erb +5 -0
  243. data/app/views/wallaby/resources/show/_unsigned_float.html.erb +5 -0
  244. data/app/views/wallaby/resources/show/_unsigned_integer.html.erb +5 -0
  245. data/app/views/wallaby/resources/show/_uuid.html.erb +4 -0
  246. data/app/views/wallaby/resources/show/_xml.html.erb +4 -0
  247. data/app/views/wallaby/resources/show.html.erb +14 -24
  248. data/app/views/wallaby/resources/show.json.jbuilder +5 -0
  249. data/config/brakeman.ignore +26 -0
  250. data/config/locales/wallaby.en.yml +91 -0
  251. data/config/massa.yml +45 -0
  252. data/config/rails_best_practices.yml +42 -0
  253. data/config/routes.rb +29 -23
  254. data/lib/adaptors/wallaby/active_record/model_decorator/fields_builder/association_builder.rb +39 -0
  255. data/lib/adaptors/wallaby/active_record/model_decorator/fields_builder/polymorphic_builder.rb +44 -0
  256. data/lib/adaptors/wallaby/active_record/model_decorator/fields_builder/sti_builder.rb +42 -0
  257. data/lib/adaptors/wallaby/active_record/model_decorator/fields_builder.rb +41 -94
  258. data/lib/adaptors/wallaby/active_record/model_decorator/title_field_finder.rb +24 -14
  259. data/lib/adaptors/wallaby/active_record/model_decorator.rb +118 -64
  260. data/lib/adaptors/wallaby/active_record/model_finder.rb +44 -15
  261. data/lib/adaptors/wallaby/active_record/model_pagination_provider.rb +30 -0
  262. data/lib/adaptors/wallaby/active_record/model_service_provider/normalizer.rb +42 -0
  263. data/lib/adaptors/wallaby/active_record/model_service_provider/permitter.rb +64 -0
  264. data/lib/adaptors/wallaby/active_record/model_service_provider/querier/transformer.rb +70 -0
  265. data/lib/adaptors/wallaby/active_record/model_service_provider/querier.rb +102 -0
  266. data/lib/adaptors/wallaby/active_record/model_service_provider/validator.rb +29 -0
  267. data/lib/adaptors/wallaby/active_record/model_service_provider.rb +137 -0
  268. data/lib/adaptors/wallaby/active_record.rb +4 -1
  269. data/lib/decorators/wallaby/abstract_resource_decorator.rb +74 -0
  270. data/lib/decorators/wallaby/resource_decorator.rb +5 -76
  271. data/lib/errors/wallaby/model_not_found.rb +5 -1
  272. data/lib/errors/wallaby/not_found.rb +4 -0
  273. data/lib/errors/wallaby/resource_not_found.rb +5 -1
  274. data/lib/forms/wallaby/form_builder.rb +42 -19
  275. data/lib/helpers/wallaby/application_helper.rb +34 -24
  276. data/lib/helpers/wallaby/base_helper.rb +52 -0
  277. data/lib/helpers/wallaby/form_helper.rb +40 -16
  278. data/lib/helpers/wallaby/index_helper.rb +59 -0
  279. data/lib/helpers/wallaby/links_helper.rb +150 -81
  280. data/lib/helpers/wallaby/resources_helper.rb +41 -46
  281. data/lib/helpers/wallaby/secure_helper.rb +36 -19
  282. data/lib/helpers/wallaby/styling_helper.rb +53 -44
  283. data/lib/interfaces/wallaby/mode.rb +19 -12
  284. data/lib/interfaces/wallaby/model_decorator.rb +176 -50
  285. data/lib/interfaces/wallaby/model_finder.rb +7 -3
  286. data/lib/interfaces/wallaby/model_pagination_provider.rb +104 -0
  287. data/lib/interfaces/wallaby/model_service_provider.rb +71 -0
  288. data/lib/paginators/wallaby/abstract_resource_paginator.rb +23 -0
  289. data/lib/paginators/wallaby/resource_paginator.rb +6 -0
  290. data/lib/parsers/wallaby/parser.rb +32 -0
  291. data/lib/responders/wallaby/abstract_responder.rb +68 -0
  292. data/lib/responders/wallaby/resources_responder.rb +6 -0
  293. data/lib/servicers/wallaby/abstract_model_servicer.rb +48 -0
  294. data/lib/servicers/wallaby/model_servicer.rb +5 -0
  295. data/lib/services/wallaby/link_options_normalizer.rb +16 -0
  296. data/lib/services/wallaby/lookup_context_wrapper.rb +23 -30
  297. data/lib/services/wallaby/map/mode_mapper.rb +19 -0
  298. data/lib/services/wallaby/map/model_class_collector.rb +41 -0
  299. data/lib/services/wallaby/map/model_class_mapper.rb +24 -0
  300. data/lib/services/wallaby/map.rb +76 -39
  301. data/lib/services/wallaby/partial_renderer.rb +60 -0
  302. data/lib/services/wallaby/prefixes_builder.rb +54 -0
  303. data/lib/services/wallaby/sorting/hash_builder.rb +16 -0
  304. data/lib/services/wallaby/sorting/link_builder.rb +45 -0
  305. data/lib/services/wallaby/sorting/next_builder.rb +54 -0
  306. data/lib/services/wallaby/url_for.rb +36 -0
  307. data/lib/tree/wallaby/node.rb +17 -0
  308. data/lib/utils/wallaby/utils.rb +67 -22
  309. data/lib/wallaby/configuration/features.rb +12 -0
  310. data/lib/wallaby/configuration/metadata.rb +12 -0
  311. data/lib/wallaby/configuration/models.rb +27 -12
  312. data/lib/wallaby/configuration/pagination.rb +12 -0
  313. data/lib/wallaby/configuration/security.rb +55 -24
  314. data/lib/wallaby/configuration.rb +38 -19
  315. data/lib/wallaby/engine.rb +84 -39
  316. data/lib/wallaby/version.rb +1 -1
  317. data/lib/wallaby.rb +22 -3
  318. metadata +200 -55
  319. data/app/assets/javascripts/wallaby/form.js +0 -8
  320. data/app/assets/stylesheets/wallaby/base/_functions.scss +0 -0
  321. data/app/assets/stylesheets/wallaby/base/_normalize.scss +0 -0
  322. data/app/assets/stylesheets/wallaby/base/_reset.scss +0 -0
  323. data/app/assets/stylesheets/wallaby/components/_forms.scss +0 -53
  324. data/app/assets/stylesheets/wallaby/components/_nav.scss +0 -19
  325. data/app/assets/stylesheets/wallaby/components/_tables.scss +0 -78
  326. data/app/assets/stylesheets/wallaby/form.scss +0 -11
  327. data/app/controllers/wallaby/core_controller.rb +0 -28
  328. data/app/views/layouts/wallaby/_footer.html.erb +0 -2
  329. data/app/views/layouts/wallaby/_header.html.erb +0 -57
  330. data/app/views/layouts/wallaby/_navs.html.erb +0 -1
  331. data/app/views/wallaby/errors/access_denied.html.erb +0 -1
  332. data/app/views/wallaby/errors/not_authenticated.html.erb +0 -1
  333. data/app/views/wallaby/errors/not_found.html.erb +0 -6
  334. data/app/views/wallaby/errors/unprocessable_entity.erb +0 -1
  335. data/config/locales/en.yml +0 -29
  336. data/lib/adaptors/wallaby/active_record/model_operator/normalizer.rb +0 -44
  337. data/lib/adaptors/wallaby/active_record/model_operator/permitter.rb +0 -50
  338. data/lib/adaptors/wallaby/active_record/model_operator/querier.rb +0 -47
  339. data/lib/adaptors/wallaby/active_record/model_operator/validator.rb +0 -16
  340. data/lib/adaptors/wallaby/active_record/model_operator.rb +0 -82
  341. data/lib/errors/wallaby/deprecated.rb +0 -4
  342. data/lib/errors/wallaby/operation_not_found.rb +0 -4
  343. data/lib/handlers/wallaby/cached_compiled_erb.rb +0 -14
  344. data/lib/helpers/wallaby/core_helper.rb +0 -50
  345. data/lib/helpers/wallaby/paginatable_helper.rb +0 -9
  346. data/lib/helpers/wallaby/sorting_helper.rb +0 -43
  347. data/lib/interfaces/wallaby/model_operator.rb +0 -31
  348. data/lib/services/wallaby/decorator_finder.rb +0 -16
  349. data/lib/services/wallaby/model_servicer.rb +0 -38
  350. data/lib/services/wallaby/servicer_finder.rb +0 -5
@@ -0,0 +1,10 @@
1
+ .minicolors-theme-bootstrap {
2
+ .minicolors-swatch {
3
+ width: 25px;
4
+ height: 25px;
5
+ }
6
+
7
+ .minicolors-input {
8
+ padding-left: 36px;
9
+ }
10
+ }
@@ -1,5 +1,75 @@
1
+ // --- Screen ---
2
+ $screen-sm: 768px !default;
3
+ $screen-sm-min: $screen-sm !default;
4
+
1
5
  // --- Fonts ---
6
+ //== Typography
7
+ //
8
+ //## Font, line-height, and color for body text, headings, and more.
9
+
10
+ $font-family-sans-serif: 'Helvetica Neue', Helvetica, Arial, sans-serif !default;
11
+ $font-family-serif: Georgia, 'Times New Roman', Times, serif !default;
12
+ //** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
13
+ $font-family-monospace: Menlo, Monaco, Consolas, 'Courier New', monospace !default;
14
+ $font-family-base: $font-family-sans-serif !default;
15
+
16
+ $font-size-base: 12px !default;
17
+ $font-size-large: ceil(($font-size-base * 1.25)) !default; // ~18px
18
+ $font-size-small: ceil(($font-size-base * 0.85)) !default; // ~12px
19
+
20
+ $font-size-h1: floor(($font-size-base * 2.6)) !default; // ~36px
21
+ $font-size-h2: floor(($font-size-base * 2.15)) !default; // ~30px
22
+ $font-size-h3: ceil(($font-size-base * 1.7)) !default; // ~24px
23
+ $font-size-h4: ceil(($font-size-base * 1.25)) !default; // ~18px
24
+ $font-size-h5: $font-size-base !default;
25
+ $font-size-h6: ceil(($font-size-base * 0.85)) !default; // ~12px
26
+
27
+ //** Unit-less `line-height` for use in components like buttons.
28
+ $line-height-base: 1.428571429 !default; // 20/14
29
+ //** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
30
+ $line-height-computed: floor(($font-size-base * $line-height-base)) !default; // ~20px
31
+
32
+ //** By default, this inherits from the `<body>`.
33
+ $headings-font-family: inherit !default;
34
+ $headings-font-weight: 500 !default;
35
+ $headings-line-height: 1.1 !default;
36
+ $headings-color: inherit !default;
37
+
38
+ $font-color: #404041;
39
+ $light-font-color: #CCCCCC;
2
40
 
3
41
  // --- Colors ---
4
- $gray-lightest: $gray-lighter;
5
- $gray-lighter: #bbbbbb;
42
+ // color scheme: http://paletton.com/palette.php?uid=73F1%2B0kmmsJcRHti9wDrepGt-kd
43
+ $dark-blue-color: #11356A;
44
+ $default-blue-color: #375E97;
45
+ $light-blue-color: #809ECA;
46
+
47
+ $dark-yellow-color: #A16A0C;
48
+ $default-yellow-color: #E5AA45;
49
+ $light-yellow-color: #FFD999;
50
+
51
+ $dark-red-color: #A1100C;
52
+ $default-red-color: #E54945;
53
+ $light-red-color: #FF9C99;
54
+
55
+ $dark-green-color: #0A7F12;
56
+ $default-green-color: #36B43E;
57
+ $light-green-color: #85DE8B;
58
+
59
+ $dark-primary-color: $dark-blue-color;
60
+ $default-primary-color: $default-blue-color;
61
+ $light-primary-color: $light-blue-color;
62
+
63
+ // http://paletton.com/#uid=1000u0k00ej09pY01jX027E2M0u
64
+ $dark-grey-color: #040303;
65
+ $default-grey-color: #727272;
66
+ $light-grey-color: #CFCECE;
67
+
68
+ $primary-text-color: $font-color;
69
+ $secondary-text-color: #6d6e71;
70
+
71
+ $background-color: #f3f6fb;
72
+
73
+ $navbar-inverse-bg: #292c2e !default;
74
+
75
+ $white: #fff;
@@ -0,0 +1,27 @@
1
+
2
+ // NOTE: "bootstrap-sprockets" must be imported
3
+ // before "bootstrap" and "bootstrap/variables"
4
+ @import 'base/vars';
5
+ @import "bootstrap-sprockets";
6
+ @import "bootstrap";
7
+ @import 'bootstrap-datetimepicker';
8
+ @import "font-awesome-sprockets";
9
+ @import "font-awesome";
10
+ @import "jquery.minicolors";
11
+ @import 'summernote';
12
+ @import 'codemirror';
13
+ @import 'codemirror/themes/mdn-like';
14
+ @import 'base/mixins';
15
+ @import 'base/layout';
16
+ @import 'components/text';
17
+ @import 'components/links';
18
+ @import 'components/filters';
19
+ @import 'components/query';
20
+ @import 'components/pagination';
21
+ @import 'components/auto_select';
22
+ @import 'components/color_square';
23
+ @import 'pages/index';
24
+ @import 'pages/show';
25
+ @import 'pages/form';
26
+ @import 'pages/error';
27
+ @import 'base/override';
@@ -0,0 +1,119 @@
1
+ @keyframes auto_select_highlight {
2
+ 0% {
3
+ background: $light-blue-color;
4
+ color: $white;
5
+ }
6
+ 100% {
7
+ background: $background-color;
8
+ color: $light-blue-color;
9
+ }
10
+ }
11
+
12
+ .auto_select {
13
+ ul, li {
14
+ list-style: none;
15
+ margin: 0;
16
+ padding: 0;
17
+ }
18
+
19
+ ul {
20
+ clear: both;
21
+ padding: 8px 15px 0;
22
+
23
+ &:after {
24
+ clear: both;
25
+ content: "";
26
+ display: block;
27
+ }
28
+ }
29
+
30
+ li {
31
+ float: left;
32
+ }
33
+
34
+ a {
35
+ background: $background-color;
36
+ border-radius: 3px;
37
+ color: $light-blue-color;
38
+ display: inline-block;
39
+ line-height: 18px;
40
+ margin-bottom: 8px;
41
+ margin-right: 8px;
42
+ padding: 5px 24px 5px 10px;
43
+ position: relative;
44
+ transition: 0.5s;
45
+
46
+ &:focus {
47
+ animation: auto_select_highlight 1s;
48
+ }
49
+
50
+ &:after {
51
+ @extend .fa;
52
+ color: $light-red-color;
53
+ content: $fa-var-remove;
54
+ display: block;
55
+ height: 16px;
56
+ line-height: 16px;
57
+ margin-top: -8px;
58
+ position: absolute;
59
+ right: 10px;
60
+ text-align: center;
61
+ top: 50%;
62
+ }
63
+
64
+ &:hover{
65
+ color: $light-blue-color;
66
+ &:after {
67
+ color: $default-red-color;
68
+ }
69
+ }
70
+ }
71
+
72
+ &__count {
73
+ clear: both;
74
+ color: $light-grey-color;
75
+ display: block;
76
+ font-size: 11px;
77
+ font-weight: normal;
78
+ padding: 8px 15px 0;
79
+ }
80
+
81
+ &--spacing {
82
+ margin-bottom: 8px;
83
+ }
84
+ }
85
+
86
+ .twitter-typeahead {
87
+ width: 100%;
88
+ }
89
+
90
+ .tt {
91
+ &-menu {
92
+ right: 0;
93
+ }
94
+
95
+ &-input {
96
+ background-color: $white !important;
97
+
98
+ &[disabled] {
99
+ background-color: #EEEEEE !important;
100
+ }
101
+ }
102
+
103
+ &-dataset {
104
+ background: $white;
105
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
106
+ border-radius: 0 0 3px 3px;
107
+ padding: 5px 0;
108
+ }
109
+
110
+ &-suggestion {
111
+ padding: 3px 20px;
112
+
113
+ &:hover {
114
+ background-color: #F5F5F5;
115
+ }
116
+ }
117
+ }
118
+
119
+ @import '_auto_select_desktop';
@@ -0,0 +1,7 @@
1
+ @media (min-width: $screen-sm-min) {
2
+ .auto_select {
3
+ &--spacing {
4
+ margin-bottom: 0;
5
+ }
6
+ }
7
+ }
@@ -0,0 +1,8 @@
1
+ .color-square {
2
+ display: inline-block;
3
+ margin-right: 3px;
4
+ width: 17px;
5
+ height: 17px;
6
+ border: 1px solid #eeeeee;
7
+ vertical-align: text-top;
8
+ }
@@ -0,0 +1,14 @@
1
+ .filters {
2
+ @include dropdown;
3
+ @include arrow;
4
+ color: $light-grey-color;
5
+ display: inline-block;
6
+
7
+ > a {
8
+ @include light_link;
9
+ }
10
+
11
+ > ul li.filters--current a {
12
+ color: $light-blue-color;
13
+ }
14
+ }
@@ -0,0 +1,25 @@
1
+ .resource {
2
+ &__create {
3
+ color: $light-green-color;
4
+
5
+ &:hover {
6
+ color: $default-green-color;
7
+ }
8
+ }
9
+
10
+ &__update {
11
+ color: $light-yellow-color;
12
+
13
+ &:hover {
14
+ color: $default-yellow-color;
15
+ }
16
+ }
17
+
18
+ &__destroy {
19
+ color: $light-red-color;
20
+
21
+ &:hover {
22
+ color: $default-red-color;
23
+ }
24
+ }
25
+ }
@@ -1,105 +1,49 @@
1
1
  .pagination {
2
- @extend .pull-right;
3
- display: inline-block;
4
- padding-left: 0;
5
- margin: 0 auto;
6
- border-radius: $border-radius-base;
2
+ margin-left: 6px;
3
+ margin-top: 0;
4
+ margin-bottom: 0;
7
5
 
8
- > span {
9
- display: inline; // Remove list-style and block-level defaults
10
- position: relative;
11
- float: left; // Collapse white-space
12
- line-height: $line-height-base;
13
- text-decoration: none;
14
- background-color: $pagination-bg;
15
- border: 1px solid $pagination-border;
16
- margin-left: -1px;
17
- &.first > a {
18
- content: '&laquo;';
19
- }
20
- &.last > a {
21
- content: '&raquo;';
22
- }
23
- &.previous > a {
24
- content: '&lsaquo;';
25
- }
26
- &.next > a {
27
- content: '&rsaquo;';
28
- }
29
- > a {
30
- display: inline-block;
31
- color: $pagination-color;
32
- padding: $padding-base-vertical $padding-base-horizontal;
33
- }
34
- &:first-child {
35
- margin-left: 0;
36
- @include border-left-radius($border-radius-base);
37
- }
38
- &:last-child {
39
- @include border-right-radius($border-radius-base);
40
- }
41
- &.page, &.first, &.prev, &.next, &.last {
42
- &.gap, &.current {
43
- padding: $padding-base-vertical $padding-base-horizontal;
44
- }
45
- }
6
+ &__metadata, &__pers {
7
+ @include dropdown;
46
8
  }
47
9
 
48
- > span > a {
49
- &:hover,
50
- &:focus {
51
- z-index: 2;
52
- color: $pagination-hover-color;
53
- background-color: $pagination-hover-bg;
54
- border-color: $pagination-hover-border;
55
- text-decoration: none;
56
- }
10
+ &__pages {
11
+ @include dropdown($left_or_right: "middle");
57
12
  }
58
13
 
59
- > .current {
60
- &,
61
- &:hover,
62
- &:focus {
63
- z-index: 3;
64
- color: $pagination-active-color;
65
- background-color: $pagination-active-bg;
66
- border-color: $pagination-active-border;
67
- cursor: default;
68
- }
69
- }
14
+ &__metadata, &__pers, &__pages {
15
+ @include arrow;
16
+ color: $light-grey-color;
17
+ display: inline-block;
18
+
19
+ > ul, > form {
20
+ input {
21
+ background-color: $background-color;
22
+ border: 0;
23
+ border-top: 0;
24
+ color: $font-color;
25
+ display: block;
26
+ margin: 3px 20px;
27
+ padding: 3px 10px;
28
+ }
70
29
 
71
- > .disabled {
72
- > span,
73
- > span:hover,
74
- > span:focus,
75
- > a,
76
- > a:hover,
77
- > a:focus {
78
- color: $pagination-disabled-color;
79
- background-color: $pagination-disabled-bg;
80
- border-color: $pagination-disabled-border;
81
- cursor: $cursor-disabled;
30
+ li.pagination__pers--current a {
31
+ color: $light-blue-color;
32
+ }
82
33
  }
83
34
  }
84
- }
85
-
86
- // Sizing
87
- // --------------------------------------------------
88
35
 
89
- // Large
90
- .pagination-lg {
91
- @include pagination-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $border-radius-large);
92
- }
36
+ &__prev {
37
+ @include arrow($icon_font: $fa-var-angle-left, $left_or_right: 'left', $padding_size: 9px);
38
+ }
93
39
 
94
- // Small
95
- .pagination-sm {
96
- @include pagination-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $border-radius-small);
97
- }
40
+ &__next {
41
+ @include arrow($icon_font: $fa-var-angle-right, $padding_size: 9px);
42
+ }
98
43
 
99
- .pagination-info {
100
- line-height: 34px;
101
- color: $breadcrumb-color;
102
- b {
103
- color: $gray-light;
44
+ > span {
45
+ @include divider;
46
+ display: inline-block;
47
+ margin-left: 6px;
104
48
  }
105
49
  }
@@ -0,0 +1,101 @@
1
+ .query {
2
+ bottom: 10px;
3
+ float: none !important;
4
+ left: 0;
5
+ position: absolute;
6
+ right: 0;
7
+ z-index: 10;
8
+
9
+ &--filtered {
10
+ form {
11
+ margin-right: 108px;
12
+ }
13
+ }
14
+
15
+ &__search {
16
+ display: block;
17
+ margin-right: 72px;
18
+
19
+ label {
20
+ display: block;
21
+ margin: 0;
22
+ position: relative;
23
+
24
+ &:before {
25
+ @extend .fa;
26
+ color: $default-primary-color;
27
+ content: $fa-var-search;
28
+ left: 8px;
29
+ margin-top: -7px;
30
+ position: absolute;
31
+ top: 50%;
32
+ z-index: 10;
33
+ }
34
+
35
+ input {
36
+ @extend .form-control;
37
+
38
+ &::placeholder {
39
+ color: $light-grey-color;
40
+ }
41
+
42
+ border-radius: 2px;
43
+ border: none;
44
+ box-shadow: none;
45
+ color: $default-primary-color;
46
+ font-weight: normal;
47
+ height: 30px;
48
+ padding: 4px 5px 4px 27px;
49
+ position: relative;
50
+ width: 100%;
51
+ }
52
+ }
53
+ }
54
+
55
+ &__actions {
56
+ @include dropdown($left_or_right: "right");
57
+ position: absolute;
58
+ right: 0;
59
+
60
+ .query__clear, .query__create, .query__more {
61
+ border-radius: 2px;
62
+ border: none;
63
+ color: white;
64
+ float: left;
65
+ height: 30px;
66
+ line-height: 30px;
67
+ margin-left: 6px;
68
+ text-align: center;
69
+ text-decoration: none;
70
+ width: 30px;
71
+ }
72
+
73
+ .query__clear {
74
+ @extend .fa, .fa-ban;
75
+ background-color: $light-grey-color;
76
+
77
+ &:hover {
78
+ background-color: $default-grey-color;
79
+ }
80
+ }
81
+
82
+ .query__create {
83
+ @extend .fa, .fa-plus;
84
+ background-color: $light-green-color;
85
+
86
+ &:hover {
87
+ background-color: $default-green-color;
88
+ }
89
+ }
90
+
91
+ .query__more {
92
+ @extend .fa, .fa-chevron-down;
93
+ background-color: $light-blue-color;
94
+
95
+ &:hover {
96
+ background-color: $default-blue-color;
97
+ }
98
+ }
99
+ }
100
+ }
101
+
@@ -1,11 +1,11 @@
1
- @include text-emphasis-variant('.text-primary', #205081);
1
+ @include text-emphasis-variant('.text-primary', $primary-text-color);
2
2
 
3
- @include text-emphasis-variant('.text-success', #8eb021);
3
+ @include text-emphasis-variant('.text-success', $default-green-color);
4
4
 
5
- @include text-emphasis-variant('.text-info', #59afe1);
5
+ @include text-emphasis-variant('.text-info', $default-blue-color);
6
6
 
7
- @include text-emphasis-variant('.text-warning', #f6c342);
7
+ @include text-emphasis-variant('.text-warning', $default-yellow-color);
8
8
 
9
- @include text-emphasis-variant('.text-danger', #d04437);
9
+ @include text-emphasis-variant('.text-danger', $default-red-color);
10
10
 
11
- @include text-emphasis-variant('.text-muted', #dddddd);
11
+ @include text-emphasis-variant('.text-muted', $secondary-text-color);
@@ -0,0 +1,108 @@
1
+ .error {
2
+ padding-top: 100px;
3
+
4
+ article {
5
+ max-width: 767px;
6
+ position: relative;
7
+ text-align: center;
8
+
9
+ &:before {
10
+ background-position: center center;
11
+ background-repeat: no-repeat;
12
+ background-size: cover;
13
+ content: '';
14
+ display: block;
15
+ height: 120px;
16
+ margin: 0 auto;
17
+ width: 120px;
18
+ }
19
+
20
+ h1 {
21
+ color: $light-blue-color;
22
+ margin-top: 40px;
23
+
24
+ em {
25
+ color: $light-red-color;
26
+ display: block;
27
+ font-size: 150%;
28
+ font-style: normal;
29
+ }
30
+ }
31
+ }
32
+
33
+ .not_found, .forbidden, .unauthorized {
34
+ &:before {
35
+ background-image: asset-url('wallaby/404.png');
36
+ }
37
+ }
38
+
39
+ .bad_request, .unprocessable_entity {
40
+ &:before {
41
+ background-image: asset-url('wallaby/422.png');
42
+ border: 2px solid white;
43
+ box-shadow: 0 0 12px rgba(0, 0, 0, 0.15);
44
+ height: 170px;
45
+ }
46
+ }
47
+
48
+ .internal_server_error {
49
+ &:before {
50
+ background-image: asset-url('wallaby/500.png');
51
+ border: 2px solid white;
52
+ box-shadow: 0 0 12px rgba(0, 0, 0, 0.15);
53
+ height: 170px;
54
+ }
55
+ }
56
+ }
57
+
58
+ @media (min-width: $screen-sm-min) {
59
+ .error {
60
+ padding-top: 142px;
61
+
62
+ article {
63
+ margin: 0 auto;
64
+ padding-left: 140px;
65
+ text-align: left;
66
+
67
+ &:before {
68
+ left: 0;
69
+ position: absolute;
70
+ }
71
+
72
+ h1 {
73
+ margin-top: 20px;
74
+
75
+ em {
76
+ display: inline;
77
+ font-size: 100%;
78
+ }
79
+ }
80
+ }
81
+
82
+ .not_found, .forbidden, .unauthorized {
83
+ &:before {
84
+ background-image: asset-url('wallaby/404.png');
85
+ }
86
+ }
87
+
88
+ .bad_request, .unprocessable_entity {
89
+ &:before {
90
+ background-image: asset-url('wallaby/422.png');
91
+ border: 2px solid white;
92
+ box-shadow: 0 0 12px rgba(0, 0, 0, 0.15);
93
+ height: 170px;
94
+ }
95
+ }
96
+
97
+ .internal_server_error {
98
+ &:before {
99
+ background-image: asset-url('wallaby/500.png');
100
+ border: 2px solid white;
101
+ box-shadow: 0 0 12px rgba(0, 0, 0, 0.15);
102
+ height: 170px;
103
+ }
104
+ }
105
+ }
106
+ }
107
+
108
+
@@ -0,0 +1,40 @@
1
+ .edit, .new, .create, .update {
2
+ section {
3
+ .resource__container {
4
+ padding: 20px;
5
+ }
6
+
7
+ label {
8
+ color: $default-primary-color;
9
+ font-style: italic;
10
+ text-transform: uppercase;
11
+ }
12
+
13
+ .CodeMirror {
14
+ border: 1px solid #eeeeee;
15
+ height: 348px;
16
+ }
17
+
18
+ .form-group {
19
+ .resource {
20
+ &__create, &__update {
21
+ display: inline-block;
22
+ }
23
+ }
24
+
25
+ .help-block {
26
+ clear: both;
27
+ font-size: 11px;
28
+ margin: 0;
29
+ padding: 5px 1px;
30
+ }
31
+ }
32
+
33
+ ul.errors {
34
+ @extend .text-danger;
35
+ margin-top: 5px;
36
+ margin-bottom: 5px;
37
+ padding-left: 25px;
38
+ }
39
+ }
40
+ }