super 0.0.9 → 0.0.14

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 (119) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +0 -9
  3. data/README.md +40 -52
  4. data/app/assets/javascripts/super/application.js +5671 -3669
  5. data/app/assets/stylesheets/super/application.css +114693 -71486
  6. data/app/controllers/super/application_controller.rb +24 -13
  7. data/app/helpers/super/form_builder_helper.rb +25 -0
  8. data/app/views/layouts/super/application.html.erb +15 -14
  9. data/app/views/super/application/{_super_schema_display_actions.html.erb → _display_actions.html.erb} +0 -0
  10. data/app/views/super/application/{_super_schema_display_index.html.erb → _display_index.html.erb} +5 -5
  11. data/app/views/super/application/_display_show.html.erb +8 -0
  12. data/app/views/super/application/_filter.html.erb +5 -13
  13. data/app/views/super/application/_filter_type_select.html.erb +9 -19
  14. data/app/views/super/application/_filter_type_text.html.erb +7 -11
  15. data/app/views/super/application/_filter_type_timestamp.html.erb +6 -17
  16. data/app/views/super/application/_form.html.erb +15 -0
  17. data/app/views/super/application/_form_field__destroy.html.erb +1 -9
  18. data/app/views/super/application/_form_field_checkbox.html.erb +1 -15
  19. data/app/views/super/application/_form_field_flatpickr_date.html.erb +8 -0
  20. data/app/views/super/application/_form_field_flatpickr_datetime.html.erb +8 -0
  21. data/app/views/super/application/_form_field_flatpickr_time.html.erb +8 -0
  22. data/app/views/super/application/_form_field_rich_text_area.html.erb +1 -13
  23. data/app/views/super/application/_form_field_select.html.erb +1 -23
  24. data/app/views/super/application/_form_field_text.html.erb +1 -13
  25. data/app/views/super/application/{_super_layout.html.erb → _layout.html.erb} +8 -8
  26. data/app/views/super/application/{_super_pagination.html.erb → _pagination.html.erb} +1 -1
  27. data/app/views/super/application/{_super_panel.html.erb → _panel.html.erb} +2 -2
  28. data/app/views/super/application/_query.html.erb +18 -0
  29. data/app/views/super/application/_sort.html.erb +18 -0
  30. data/app/views/super/application/_sort_expression.html.erb +25 -0
  31. data/app/views/super/application/edit.html.erb +1 -0
  32. data/app/views/super/application/index.html.erb +1 -0
  33. data/app/views/super/application/new.html.erb +1 -0
  34. data/app/views/super/application/show.html.erb +1 -0
  35. data/app/views/super/feather/README.md +1 -0
  36. data/app/views/super/feather/_x.html +15 -0
  37. data/config/routes.rb +2 -0
  38. data/frontend/super-frontend/dist/application.css +114693 -71486
  39. data/frontend/super-frontend/dist/application.js +5671 -3669
  40. data/lib/generators/super/action_text/action_text_generator.rb +2 -0
  41. data/lib/generators/super/install/install_generator.rb +18 -7
  42. data/lib/generators/super/install/templates/base_controller.rb.tt +9 -1
  43. data/lib/generators/super/install/templates/initializer.rb.tt +9 -2
  44. data/lib/generators/super/resource/resource_generator.rb +107 -30
  45. data/lib/generators/super/resource/templates/resources_controller.rb.tt +3 -9
  46. data/lib/generators/super/webpacker/webpacker_generator.rb +11 -5
  47. data/lib/super.rb +9 -2
  48. data/lib/super/action_inquirer.rb +2 -0
  49. data/lib/super/assets.rb +46 -23
  50. data/lib/super/cheat.rb +17 -0
  51. data/lib/super/client_error.rb +2 -0
  52. data/lib/super/compatibility.rb +21 -0
  53. data/lib/super/configuration.rb +16 -24
  54. data/lib/super/controls.rb +11 -2
  55. data/lib/super/controls/optional.rb +35 -1
  56. data/lib/super/controls/steps.rb +27 -35
  57. data/lib/super/controls/view.rb +55 -0
  58. data/lib/super/display.rb +29 -13
  59. data/lib/super/display/guesser.rb +4 -0
  60. data/lib/super/display/schema_types.rb +73 -33
  61. data/lib/super/engine.rb +4 -0
  62. data/lib/super/error.rb +21 -0
  63. data/lib/super/filter.rb +2 -0
  64. data/lib/super/filter/form_object.rb +5 -8
  65. data/lib/super/filter/guesser.rb +2 -0
  66. data/lib/super/filter/operator.rb +2 -0
  67. data/lib/super/filter/schema_types.rb +2 -0
  68. data/lib/super/form.rb +3 -1
  69. data/lib/super/form/builder.rb +289 -39
  70. data/lib/super/form/guesser.rb +12 -1
  71. data/lib/super/form/inline_errors.rb +28 -0
  72. data/lib/super/form/schema_types.rb +15 -0
  73. data/lib/super/form/strong_params.rb +2 -0
  74. data/lib/super/layout.rb +3 -1
  75. data/lib/super/link.rb +44 -31
  76. data/lib/super/link_builder.rb +58 -0
  77. data/lib/super/navigation.rb +164 -0
  78. data/lib/super/pagination.rb +3 -1
  79. data/lib/super/panel.rb +3 -1
  80. data/lib/super/partial.rb +2 -0
  81. data/lib/super/partial/resolving.rb +2 -0
  82. data/lib/super/plugin.rb +2 -0
  83. data/lib/super/query/form_object.rb +48 -0
  84. data/lib/super/schema.rb +2 -0
  85. data/lib/super/schema/common.rb +2 -0
  86. data/lib/super/schema/guesser.rb +2 -0
  87. data/lib/super/sort.rb +110 -0
  88. data/lib/super/useful/builder.rb +25 -0
  89. data/lib/super/useful/enum.rb +63 -0
  90. data/lib/super/version.rb +3 -1
  91. data/lib/super/view_helper.rb +2 -19
  92. data/lib/tasks/super/cheat.rake +9 -0
  93. metadata +53 -40
  94. data/CONTRIBUTING.md +0 -56
  95. data/Rakefile +0 -34
  96. data/STABILITY.md +0 -50
  97. data/app/views/super/application/_form_field_generic.html.erb +0 -19
  98. data/app/views/super/application/_form_inline_errors.html.erb +0 -10
  99. data/app/views/super/application/_super_schema_display_show.html.erb +0 -8
  100. data/app/views/super/application/_super_schema_form.html.erb +0 -15
  101. data/docs/README.md +0 -8
  102. data/docs/action_text.md +0 -48
  103. data/docs/faq.md +0 -44
  104. data/docs/installation.md +0 -21
  105. data/docs/quick_start.md +0 -30
  106. data/docs/webpacker.md +0 -25
  107. data/docs/yard_customizations.rb +0 -41
  108. data/frontend/super-frontend/build.js +0 -36
  109. data/frontend/super-frontend/package.json +0 -20
  110. data/frontend/super-frontend/postcss.config.js +0 -6
  111. data/frontend/super-frontend/src/javascripts/super/application.js +0 -15
  112. data/frontend/super-frontend/src/javascripts/super/apply_template_controller.js +0 -17
  113. data/frontend/super-frontend/src/javascripts/super/toggle_pending_destruction_controller.js +0 -15
  114. data/frontend/super-frontend/src/stylesheets/super/application.css +0 -77
  115. data/frontend/super-frontend/tailwind.config.js +0 -15
  116. data/frontend/super-frontend/yarn.lock +0 -5443
  117. data/lib/super/controls/required.rb +0 -13
  118. data/lib/super/filter/plugin.rb +0 -47
  119. data/lib/super/navigation/automatic.rb +0 -71
@@ -1,13 +0,0 @@
1
- module Super
2
- class Controls
3
- # Methods for `Controls` that must be defined for Super to work properly
4
- module Required
5
- # Specifies the model. This is a required method
6
- #
7
- # @return [ActiveRecord::Base]
8
- def model
9
- raise NotImplementedError
10
- end
11
- end
12
- end
13
- end
@@ -1,47 +0,0 @@
1
- module Super
2
- class Filter
3
- module ControllerMethods
4
- def index
5
- super
6
- @filter_form = controls.initialize_filtering(params: params, query_params: request.GET)
7
- @records = controls.filter_records(filter_form: @filter_form, records: @records)
8
- @view.asides.push(:@filter_form)
9
- end
10
- end
11
- end
12
-
13
- class Controls
14
- module Optional
15
- def filters_enabled?
16
- true
17
- end
18
-
19
- def filter_schema
20
- Filter.new do |fields, type|
21
- Filter::Guesser.new(model: model, fields: fields, type: type).call
22
- end
23
- end
24
- end
25
-
26
- module Steps
27
- def initialize_filtering(params:, query_params:)
28
- if filters_enabled?
29
- Super::Filter::FormObject.new(
30
- model: model,
31
- schema: filter_schema,
32
- params: params[:q],
33
- url: query_params
34
- )
35
- end
36
- end
37
-
38
- def filter_records(filter_form:, records:)
39
- if filters_enabled? && records
40
- filter_form.to_search_query(records)
41
- else
42
- records
43
- end
44
- end
45
- end
46
- end
47
- end
@@ -1,71 +0,0 @@
1
- module Super
2
- class Navigation
3
- # Traverses the defined Rails Routes and attempts to build a list of links.
4
- # This is used for building the nav bar on each admin page.
5
- class Automatic
6
- def initialize(route_namespace:)
7
- route_namespace = route_namespace.to_s
8
-
9
- if route_namespace.include?("/")
10
- raise "Can't be nested namespace"
11
- end
12
-
13
- @route_namespace = route_namespace
14
- end
15
-
16
- def each
17
- if !block_given?
18
- return enum_for(:each)
19
- end
20
-
21
- navigable_namespace_routes = Rails.application.routes.routes.select do |route|
22
- path_spec = route.path.spec
23
-
24
- next if route.verb != "GET"
25
- next if !path_spec.respond_to?(:right)
26
- next if path_spec.right.left.to_s != @route_namespace
27
- next if route.required_parts.any?
28
- next if route.defaults.empty?
29
-
30
- true
31
- end
32
-
33
- navigable_defaults = navigable_namespace_routes.map do |route|
34
- controller_name = route.defaults[:controller] + "_controller"
35
- _controller =
36
- begin
37
- controller_name.camelize.constantize
38
- rescue NameError
39
- warn("[super] Couldn't find controller: #{controller_name}")
40
- next
41
- end
42
-
43
- route.defaults
44
- end
45
-
46
- grouped_navigable_defaults =
47
- navigable_defaults.compact.uniq.group_by { |d| d[:controller] }
48
-
49
- grouped_navigable_defaults.each do |controller, defaults|
50
- actions = defaults.map { |d| [d[:action], d[:action]] }.to_h
51
- action = actions["index"] || actions["show"]
52
-
53
- next if action.nil?
54
-
55
- path =
56
- begin
57
- Rails.application.routes.url_for(
58
- controller: controller,
59
- action: action,
60
- only_path: true
61
- )
62
- rescue ActionController::UrlGenerationError
63
- next
64
- end
65
-
66
- yield(controller.split("/").last.humanize, path)
67
- end
68
- end
69
- end
70
- end
71
- end