warped 0.1.0 → 1.0.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 (84) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +25 -0
  3. data/Gemfile +0 -2
  4. data/Gemfile.lock +25 -19
  5. data/README.md +116 -270
  6. data/app/assets/config/warped_manifest.js +2 -0
  7. data/app/assets/javascript/warped/controllers/filter_controller.js +76 -0
  8. data/app/assets/javascript/warped/controllers/filters_controller.js +21 -0
  9. data/app/assets/javascript/warped/index.js +2 -0
  10. data/app/assets/stylesheets/warped/application.css +15 -0
  11. data/app/assets/stylesheets/warped/base.css +23 -0
  12. data/app/assets/stylesheets/warped/filters.css +115 -0
  13. data/app/assets/stylesheets/warped/pagination.css +74 -0
  14. data/app/assets/stylesheets/warped/search.css +33 -0
  15. data/app/assets/stylesheets/warped/table.css +114 -0
  16. data/app/views/warped/_actions.html.erb +9 -0
  17. data/app/views/warped/_cell.html.erb +3 -0
  18. data/app/views/warped/_column.html.erb +35 -0
  19. data/app/views/warped/_filters.html.erb +21 -0
  20. data/app/views/warped/_hidden_fields.html.erb +19 -0
  21. data/app/views/warped/_pagination.html.erb +34 -0
  22. data/app/views/warped/_row.html.erb +19 -0
  23. data/app/views/warped/_search.html.erb +21 -0
  24. data/app/views/warped/_table.html.erb +52 -0
  25. data/app/views/warped/filters/_filter.html.erb +40 -0
  26. data/config/importmap.rb +3 -0
  27. data/docs/controllers/FILTERABLE.md +193 -0
  28. data/docs/controllers/PAGEABLE.md +70 -0
  29. data/docs/controllers/README.md +8 -0
  30. data/docs/controllers/SEARCHABLE.md +95 -0
  31. data/docs/controllers/SORTABLE.md +94 -0
  32. data/docs/controllers/TABULATABLE.md +28 -0
  33. data/docs/controllers/views/PARTIALS.md +285 -0
  34. data/docs/jobs/README.md +22 -0
  35. data/docs/services/README.md +81 -0
  36. data/lib/generators/warped/install_generator.rb +1 -1
  37. data/lib/warped/api/filter/base/value.rb +52 -0
  38. data/lib/warped/api/filter/base.rb +84 -0
  39. data/lib/warped/api/filter/boolean.rb +41 -0
  40. data/lib/warped/api/filter/date.rb +26 -0
  41. data/lib/warped/api/filter/date_time.rb +32 -0
  42. data/lib/warped/api/filter/decimal.rb +31 -0
  43. data/lib/warped/api/filter/factory.rb +38 -0
  44. data/lib/warped/api/filter/integer.rb +38 -0
  45. data/lib/warped/api/filter/string.rb +25 -0
  46. data/lib/warped/api/filter/time.rb +25 -0
  47. data/lib/warped/api/filter.rb +14 -0
  48. data/lib/warped/api/sort/value.rb +40 -0
  49. data/lib/warped/api/sort.rb +65 -0
  50. data/lib/warped/controllers/filterable/ui.rb +46 -0
  51. data/lib/warped/controllers/filterable.rb +79 -42
  52. data/lib/warped/controllers/pageable/ui.rb +70 -0
  53. data/lib/warped/controllers/pageable.rb +11 -11
  54. data/lib/warped/controllers/searchable/ui.rb +37 -0
  55. data/lib/warped/controllers/searchable.rb +2 -0
  56. data/lib/warped/controllers/sortable/ui.rb +53 -0
  57. data/lib/warped/controllers/sortable.rb +53 -33
  58. data/lib/warped/controllers/tabulatable/ui.rb +54 -0
  59. data/lib/warped/controllers/tabulatable.rb +13 -27
  60. data/lib/warped/emails/components/align.rb +21 -0
  61. data/lib/warped/emails/components/base.rb +116 -0
  62. data/lib/warped/emails/components/button.rb +58 -0
  63. data/lib/warped/emails/components/divider.rb +15 -0
  64. data/lib/warped/emails/components/heading.rb +65 -0
  65. data/lib/warped/emails/components/layouts/columns.rb +36 -0
  66. data/lib/warped/emails/components/layouts/cta.rb +38 -0
  67. data/lib/warped/emails/components/layouts/main.rb +34 -0
  68. data/lib/warped/emails/components/link.rb +36 -0
  69. data/lib/warped/emails/components/spacer.rb +15 -0
  70. data/lib/warped/emails/components/stepper.rb +104 -0
  71. data/lib/warped/emails/components/table.rb +37 -0
  72. data/lib/warped/emails/components/text.rb +67 -0
  73. data/lib/warped/emails/helpers.rb +26 -0
  74. data/lib/warped/emails/slottable.rb +61 -0
  75. data/lib/warped/emails/styleable.rb +160 -0
  76. data/lib/warped/engine.rb +19 -0
  77. data/lib/warped/queries/filter.rb +32 -12
  78. data/lib/warped/table/action.rb +33 -0
  79. data/lib/warped/table/column.rb +34 -0
  80. data/lib/warped/version.rb +1 -1
  81. data/lib/warped.rb +2 -0
  82. data/warped.gemspec +1 -1
  83. metadata +73 -7
  84. data/lib/warped/emails/.keep +0 -0
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_support/core_ext/object/blank"
4
+ require "active_support/core_ext/string/inflections"
5
+
6
+ module Warped
7
+ module Table
8
+ class Column
9
+ attr_reader :parameter_name, :method, :options
10
+
11
+ # @param parameter_name [String] The parameter name to be used by the column
12
+ # @param display_name [String] The display name of the column
13
+ # @param method [String, Symbol, Proc] The method to be called on the record to get the content of the column
14
+ def initialize(parameter_name, display_name = nil, method: nil, **options)
15
+ @parameter_name = parameter_name
16
+ @display_name = display_name
17
+ @options = options
18
+ @method = method.presence || parameter_name
19
+ end
20
+
21
+ def display_name
22
+ @display_name.presence || parameter_name.to_s.humanize
23
+ end
24
+
25
+ def content_for(record)
26
+ if method.is_a?(Proc)
27
+ method.call(record)
28
+ else
29
+ record.public_send(method)
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Warped
4
- VERSION = "0.1.0"
4
+ VERSION = "1.0.0"
5
5
  end
data/lib/warped.rb CHANGED
@@ -27,5 +27,7 @@ require "zeitwerk"
27
27
  loader = Zeitwerk::Loader.for_gem
28
28
  loader.ignore("#{__dir__}/generators")
29
29
  loader.ignore("lib/warped/railtie.rb") unless defined?(Rails::Railtie)
30
+ loader.collapse("#{__dir__}/warped/emails/components")
31
+ loader.collapse("#{__dir__}/warped/api")
30
32
  loader.setup
31
33
  loader.eager_load
data/warped.gemspec CHANGED
@@ -28,6 +28,6 @@ Gem::Specification.new do |spec|
28
28
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
29
29
  spec.require_paths = ["lib"]
30
30
 
31
- spec.add_dependency "rails", ">= 6.0", "< 8.0"
31
+ spec.add_dependency "rails", ">= 7.1.0", "<= 8.0"
32
32
  spec.add_dependency "zeitwerk", ">= 2.4"
33
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: warped
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan Aparicio
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-02-26 00:00:00.000000000 Z
11
+ date: 2024-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,8 +16,8 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '6.0'
20
- - - "<"
19
+ version: 7.1.0
20
+ - - "<="
21
21
  - !ruby/object:Gem::Version
22
22
  version: '8.0'
23
23
  type: :runtime
@@ -26,8 +26,8 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '6.0'
30
- - - "<"
29
+ version: 7.1.0
30
+ - - "<="
31
31
  - !ruby/object:Gem::Version
32
32
  version: '8.0'
33
33
  - !ruby/object:Gem::Dependency
@@ -60,15 +60,79 @@ files:
60
60
  - LICENSE.txt
61
61
  - README.md
62
62
  - Rakefile
63
+ - app/assets/config/warped_manifest.js
64
+ - app/assets/javascript/warped/controllers/filter_controller.js
65
+ - app/assets/javascript/warped/controllers/filters_controller.js
66
+ - app/assets/javascript/warped/index.js
67
+ - app/assets/stylesheets/warped/application.css
68
+ - app/assets/stylesheets/warped/base.css
69
+ - app/assets/stylesheets/warped/filters.css
70
+ - app/assets/stylesheets/warped/pagination.css
71
+ - app/assets/stylesheets/warped/search.css
72
+ - app/assets/stylesheets/warped/table.css
73
+ - app/views/warped/_actions.html.erb
74
+ - app/views/warped/_cell.html.erb
75
+ - app/views/warped/_column.html.erb
76
+ - app/views/warped/_filters.html.erb
77
+ - app/views/warped/_hidden_fields.html.erb
78
+ - app/views/warped/_pagination.html.erb
79
+ - app/views/warped/_row.html.erb
80
+ - app/views/warped/_search.html.erb
81
+ - app/views/warped/_table.html.erb
82
+ - app/views/warped/filters/_filter.html.erb
83
+ - config/importmap.rb
84
+ - docs/controllers/FILTERABLE.md
85
+ - docs/controllers/PAGEABLE.md
86
+ - docs/controllers/README.md
87
+ - docs/controllers/SEARCHABLE.md
88
+ - docs/controllers/SORTABLE.md
89
+ - docs/controllers/TABULATABLE.md
90
+ - docs/controllers/views/PARTIALS.md
91
+ - docs/jobs/README.md
92
+ - docs/services/README.md
63
93
  - lib/generators/warped/install_generator.rb
64
94
  - lib/generators/warped/templates/initializer.rb.tt
65
95
  - lib/warped.rb
96
+ - lib/warped/api/filter.rb
97
+ - lib/warped/api/filter/base.rb
98
+ - lib/warped/api/filter/base/value.rb
99
+ - lib/warped/api/filter/boolean.rb
100
+ - lib/warped/api/filter/date.rb
101
+ - lib/warped/api/filter/date_time.rb
102
+ - lib/warped/api/filter/decimal.rb
103
+ - lib/warped/api/filter/factory.rb
104
+ - lib/warped/api/filter/integer.rb
105
+ - lib/warped/api/filter/string.rb
106
+ - lib/warped/api/filter/time.rb
107
+ - lib/warped/api/sort.rb
108
+ - lib/warped/api/sort/value.rb
66
109
  - lib/warped/controllers/filterable.rb
110
+ - lib/warped/controllers/filterable/ui.rb
67
111
  - lib/warped/controllers/pageable.rb
112
+ - lib/warped/controllers/pageable/ui.rb
68
113
  - lib/warped/controllers/searchable.rb
114
+ - lib/warped/controllers/searchable/ui.rb
69
115
  - lib/warped/controllers/sortable.rb
116
+ - lib/warped/controllers/sortable/ui.rb
70
117
  - lib/warped/controllers/tabulatable.rb
71
- - lib/warped/emails/.keep
118
+ - lib/warped/controllers/tabulatable/ui.rb
119
+ - lib/warped/emails/components/align.rb
120
+ - lib/warped/emails/components/base.rb
121
+ - lib/warped/emails/components/button.rb
122
+ - lib/warped/emails/components/divider.rb
123
+ - lib/warped/emails/components/heading.rb
124
+ - lib/warped/emails/components/layouts/columns.rb
125
+ - lib/warped/emails/components/layouts/cta.rb
126
+ - lib/warped/emails/components/layouts/main.rb
127
+ - lib/warped/emails/components/link.rb
128
+ - lib/warped/emails/components/spacer.rb
129
+ - lib/warped/emails/components/stepper.rb
130
+ - lib/warped/emails/components/table.rb
131
+ - lib/warped/emails/components/text.rb
132
+ - lib/warped/emails/helpers.rb
133
+ - lib/warped/emails/slottable.rb
134
+ - lib/warped/emails/styleable.rb
135
+ - lib/warped/engine.rb
72
136
  - lib/warped/jobs/base.rb
73
137
  - lib/warped/queries/filter.rb
74
138
  - lib/warped/queries/paginate.rb
@@ -76,6 +140,8 @@ files:
76
140
  - lib/warped/queries/sort.rb
77
141
  - lib/warped/railtie.rb
78
142
  - lib/warped/services/base.rb
143
+ - lib/warped/table/action.rb
144
+ - lib/warped/table/column.rb
79
145
  - lib/warped/version.rb
80
146
  - sig/warped.rbs
81
147
  - warped.gemspec
File without changes