view_component_storybook 0.6.0 → 0.8.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: cc377c2ee4e53057d77622560164f181fcaca50a95e4fcfc53ad78a3cb10a2ba
4
- data.tar.gz: b1137074ecbb7b5d44c38475774d06400b936f427dfec1bd1602fe4edb1696d7
3
+ metadata.gz: 4e8c8a3875d64fe89649af8851324d2a07bd40868065abce8b57cf848cbeb5d3
4
+ data.tar.gz: 554f43665400373ba30b9bc6e307285843b67d3760e5957e0088fa2ba53b325e
5
5
  SHA512:
6
- metadata.gz: c8bbafc19737e00f631c0099affc6c616e327c4bfc60e9426fb74e55550701d915131f15d5d00d780dd3b6374c940edd17feebe24774c91e48db84accd46930d
7
- data.tar.gz: 2d992393f87285d057bedaffd9be722cd8d147a38f543b2a1afdb9c92d73e6ce26546744941826cd91517c2d1f30e27f782d8090e07d420343241c1a5bb20c8d
6
+ metadata.gz: 398124fee399213bea34acf3aef434877eb01d0c76d9d6f127f5d5493981ecf5ac1f0ddc94ad9850354f6ec3629f1a9e5ca6005b57208abd39d045026415abbd
7
+ data.tar.gz: 31a4a06293f40d19e575243a61cb61e1cff2bd7646da950c01de20f8edd73d1179970a7700064a8ee15cbcd3a73b2060f525bdbf427baeaddc9f9bd9ee6b7ebe
@@ -6,7 +6,7 @@ module ViewComponent
6
6
  class ArrayConfig < ControlConfig
7
7
  attr_reader :separator
8
8
 
9
- validates :value, :separator, presence: true
9
+ validates :separator, presence: true
10
10
 
11
11
  def initialize(component, param, value, separator = ",", name: nil)
12
12
  super(component, param, value, name: name)
@@ -6,7 +6,7 @@ module ViewComponent
6
6
  class BooleanConfig < ControlConfig
7
7
  BOOLEAN_VALUES = [true, false].freeze
8
8
 
9
- validates :value, inclusion: { in: BOOLEAN_VALUES }
9
+ validates :value, inclusion: { in: BOOLEAN_VALUES }, unless: -> { value.nil? }
10
10
 
11
11
  def type
12
12
  :boolean
@@ -5,7 +5,6 @@ module ViewComponent
5
5
  module Controls
6
6
  class ColorConfig < ControlConfig
7
7
  attr_reader :preset_colors
8
- validates :value, presence: true
9
8
 
10
9
  def initialize(component, param, value, name: nil, preset_colors: nil)
11
10
  super(component, param, value, name: name)
@@ -9,7 +9,7 @@ module ViewComponent
9
9
  attr_reader :component, :param, :value, :name
10
10
 
11
11
  validates :component, :param, presence: true
12
- validates :param, inclusion: { in: ->(control_config) { control_config.component_params } }, unless: -> { component.nil? }
12
+ validates :param, inclusion: { in: ->(control_config) { control_config.component_param_names } }, if: :should_validate_params?
13
13
 
14
14
  def initialize(component, param, value, name: nil)
15
15
  @component = component
@@ -30,8 +30,8 @@ module ViewComponent
30
30
  param
31
31
  end
32
32
 
33
- def component_params
34
- @component_params ||= component && component.instance_method(:initialize).parameters.map(&:last)
33
+ def component_param_names
34
+ @component_param_names ||= component_params&.map(&:last)
35
35
  end
36
36
 
37
37
  private
@@ -44,6 +44,18 @@ module ViewComponent
44
44
  def csf_control_params
45
45
  { type: type }
46
46
  end
47
+
48
+ def component_accepts_kwargs?
49
+ component_params.map(&:first).include?(:keyrest)
50
+ end
51
+
52
+ def component_params
53
+ @component_params ||= component.instance_method(:initialize).parameters
54
+ end
55
+
56
+ def should_validate_params?
57
+ component.present? && !component_accepts_kwargs?
58
+ end
47
59
  end
48
60
  end
49
61
  end
@@ -4,8 +4,6 @@ module ViewComponent
4
4
  module Storybook
5
5
  module Controls
6
6
  class DateConfig < ControlConfig
7
- validates :value, presence: true
8
-
9
7
  def initialize(component, param, value, name: nil)
10
8
  super(component, param, value, name: name)
11
9
  end
@@ -4,9 +4,12 @@ module ViewComponent
4
4
  module Storybook
5
5
  module Controls
6
6
  class NumberConfig < ControlConfig
7
+ TYPES = %i[number range].freeze
8
+
7
9
  attr_reader :type, :min, :max, :step
8
10
 
9
- validates :value, :type, presence: true
11
+ validates :type, presence: true
12
+ validates :type, inclusion: { in: TYPES }, unless: -> { type.nil? }
10
13
 
11
14
  def initialize(type, component, param, value, min: nil, max: nil, step: nil, name: nil)
12
15
  super(component, param, value, name: name)
@@ -4,15 +4,13 @@ module ViewComponent
4
4
  module Storybook
5
5
  module Controls
6
6
  class ObjectConfig < ControlConfig
7
- validates :value, presence: true
8
-
9
7
  def type
10
8
  :object
11
9
  end
12
10
 
13
11
  def value_from_param(param)
14
12
  if param.is_a?(String)
15
- JSON.parse(param).symbolize_keys
13
+ JSON.parse(param).deep_symbolize_keys
16
14
  else
17
15
  super(param)
18
16
  end
@@ -4,7 +4,6 @@ module ViewComponent
4
4
  module Storybook
5
5
  module Controls
6
6
  class OptionsConfig < ControlConfig
7
-
8
7
  class << self
9
8
  # support the options being a Hash or an Array. Storybook supports either.
10
9
  def inclusion_in(config)
@@ -13,8 +12,6 @@ module ViewComponent
13
12
  config.options.values
14
13
  when Array
15
14
  config.options
16
- else
17
- []
18
15
  end
19
16
  end
20
17
  end
@@ -23,7 +20,7 @@ module ViewComponent
23
20
 
24
21
  attr_reader :type, :options, :symbol_value
25
22
 
26
- validates :value, :type, :options, presence: true
23
+ validates :type, :options, presence: true
27
24
  validates :type, inclusion: { in: TYPES }, unless: -> { type.nil? }
28
25
  validates :value, inclusion: { in: method(:inclusion_in) }, unless: -> { options.nil? || value.nil? }
29
26
 
@@ -4,8 +4,6 @@ module ViewComponent
4
4
  module Storybook
5
5
  module Controls
6
6
  class TextConfig < ControlConfig
7
- validates :value, presence: true
8
-
9
7
  def type
10
8
  :text
11
9
  end
@@ -67,7 +67,7 @@ module ViewComponent
67
67
  controls << Controls::DateConfig.new(component, param, value, name: name)
68
68
  end
69
69
 
70
- def respond_to_missing?(_method)
70
+ def respond_to_missing?(_method, *)
71
71
  true
72
72
  end
73
73
 
@@ -33,7 +33,7 @@ module ViewComponent
33
33
  end
34
34
 
35
35
  def write_csf_json
36
- json_path = File.join(ViewComponent::Storybook.stories_path, "#{stories_name}.stories.json")
36
+ json_path = File.join(stories_path, "#{stories_name}.stories.json")
37
37
  File.open(json_path, "w") do |f|
38
38
  f.write(JSON.pretty_generate(to_csf_params))
39
39
  end
@@ -81,8 +81,6 @@ module ViewComponent
81
81
 
82
82
  def default_component
83
83
  name.chomp("Stories").constantize
84
- rescue StandardError
85
- nil
86
84
  end
87
85
 
88
86
  def load_stories
@@ -93,10 +91,6 @@ module ViewComponent
93
91
  Storybook.stories_path
94
92
  end
95
93
 
96
- def show_stories
97
- Storybook.show_stories
98
- end
99
-
100
94
  def story_id(name)
101
95
  "#{stories_name}/#{name.to_s.parameterize}".underscore
102
96
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module ViewComponent
4
4
  module Storybook
5
- VERSION = "0.6.0"
5
+ VERSION = "0.8.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: view_component_storybook
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Palmer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-19 00:00:00.000000000 Z
11
+ date: 2021-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: view_component
@@ -100,42 +100,42 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '0.81'
103
+ version: '1.9'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '0.81'
110
+ version: '1.9'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rubocop-rails
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 2.4.2
117
+ version: 2.9.1
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 2.4.2
124
+ version: 2.9.1
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rubocop-rspec
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '1.38'
131
+ version: '2.1'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '1.38'
138
+ version: '2.1'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: simplecov
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -150,6 +150,20 @@ dependencies:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
152
  version: 0.18.5
153
+ - !ruby/object:Gem::Dependency
154
+ name: simplecov-console
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '0.9'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '0.9'
153
167
  description: Generate Storybook CSF JSON for rendering Rails View Components in Storybook
154
168
  email:
155
169
  - 328224+jonspalmer@users.noreply.github.com
@@ -195,7 +209,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
195
209
  requirements:
196
210
  - - ">="
197
211
  - !ruby/object:Gem::Version
198
- version: 2.3.0
212
+ version: 2.4.0
199
213
  required_rubygems_version: !ruby/object:Gem::Requirement
200
214
  requirements:
201
215
  - - ">="