sdr_view_components 0.7.0 → 0.8.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 20d06b21754a66cf773ed738934dca7b897e95de724e6ca8fc70942f56a8bf1c
4
- data.tar.gz: 605b5ae6c58e73324e9bdbbac7d53ff6e0ddf9d53b845c75393255d411ef701d
3
+ metadata.gz: 2a7f0502701fd4d8fa40f595c582e8d3639edd747efabae9a9453386b23c3bff
4
+ data.tar.gz: 17b95f5d8d01a6af4af3dbb8a0d15b9a843a03e44ab8428793de0fae84dcaf79
5
5
  SHA512:
6
- metadata.gz: b99a2ffdfb693b1780e6b44b93a51d0ba6ab62e9958336056ccacd59fd5e4b5d063961bcfe55d688d0b5c907ea0fc323872808cdd52743c1dfe44b7ceb676a39
7
- data.tar.gz: 17849d2bfd15fd3e540ed8a6e0307825c00efbf53143836c2547d10f5a812ac490b71b5ae0cb0007aced34068b68debfe9970449633d8005969018497869ba29
6
+ metadata.gz: 6411da75700daee1d917a8bd7bdc47cdebe312af9d63b535a974d5114fee4697024532d7b31fa95150b5f4fa438897df0e97a7500dddfef7907e05a5b0fc1aa8
7
+ data.tar.gz: 4a062e6024b31b4c83439615ecfd6533f293b8798d36327c3dca1280a56ac9e041b205a2e92f6509ba4d5deb78ff460cfc4593ded78feddd4f46395267459ee3
data/README.md CHANGED
@@ -189,6 +189,37 @@ See the Lookbook preview for `SdrViewComponents::TabForm::TabListComponent` for
189
189
  <% render SdrViewComponent::....>
190
190
  ```
191
191
 
192
+ ### Navigation components
193
+
194
+ SdrViewComponents provides components for building navigation bar items and dropdown menus:
195
+
196
+ - `SdrViewComponents::Elements::Navigation::NavItemComponent` -- a single navigation link (or plain text, if no `path:` is given).
197
+ - `SdrViewComponents::Elements::Navigation::DropdownMenuComponent` -- a Bootstrap dropdown menu. Items are added via `with_item`, and can be any renderable object -- typically one of the components below.
198
+ - `SdrViewComponents::Elements::Navigation::DropdownLinkComponent` -- a link within a dropdown menu (renders with the `dropdown-item` class via `link_to`). Accepts `label:`, `link:`, `classes:`, `disabled:` (adds the `disabled` class), and any additional options passed on to `link_to`.
199
+ - `SdrViewComponents::Elements::Navigation::DropdownHeaderComponent` -- a non-interactive section label within a dropdown menu.
200
+ - `SdrViewComponents::Elements::Navigation::DropdownDividerComponent` -- a horizontal divider between groups of items within a dropdown menu.
201
+
202
+ ```erb
203
+ <ul class="navbar-nav">
204
+ <%= render SdrViewComponents::Elements::Navigation::NavItemComponent.new(text: 'Home', path: '/') %>
205
+
206
+ <%= render SdrViewComponents::Elements::Navigation::DropdownMenuComponent.new(text: 'Options') do |dropdown| %>
207
+ <% dropdown.with_item do %>
208
+ <%= render SdrViewComponents::Elements::Navigation::DropdownHeaderComponent.new(text: 'Section 1') %>
209
+ <% end %>
210
+ <% dropdown.with_item do %>
211
+ <%= render SdrViewComponents::Elements::Navigation::DropdownLinkComponent.new(label: 'Action', link: '#') %>
212
+ <% end %>
213
+ <% dropdown.with_item do %>
214
+ <%= render SdrViewComponents::Elements::Navigation::DropdownDividerComponent.new %>
215
+ <% end %>
216
+ <% dropdown.with_item do %>
217
+ <%= render SdrViewComponents::Elements::Navigation::DropdownLinkComponent.new(label: 'Another action', link: '#') %>
218
+ <% end %>
219
+ <% end %>
220
+ </ul>
221
+ ```
222
+
192
223
  ## Component library version
193
224
  The [component-library](https://github.com/sul-dlss/component-library/) version is set in `lib/sdr_view_components/configuration.rb`.
194
225
 
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SdrViewComponents
4
+ module Elements
5
+ module Navigation
6
+ # Component for rendering a divider within a dropdown menu.
7
+ class DropdownDividerComponent < BaseComponent
8
+ def initialize(classes: [])
9
+ @classes = classes
10
+ super()
11
+ end
12
+
13
+ def call
14
+ tag.hr class: classes
15
+ end
16
+
17
+ def classes
18
+ merge_classes('dropdown-divider', @classes)
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SdrViewComponents
4
+ module Elements
5
+ module Navigation
6
+ # Component for rendering a header within a dropdown menu.
7
+ class DropdownHeaderComponent < BaseComponent
8
+ def initialize(text:, classes: [])
9
+ @text = text
10
+ @classes = classes
11
+ super()
12
+ end
13
+
14
+ attr_reader :text
15
+
16
+ def call
17
+ tag.span text, class: classes, role: 'heading'
18
+ end
19
+
20
+ def classes
21
+ merge_classes('dropdown-header', @classes)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SdrViewComponents
4
+ module Elements
5
+ module Navigation
6
+ # Component for rendering a link within a dropdown menu.
7
+ class DropdownLinkComponent < BaseComponent
8
+ def initialize(label:, link:, classes: [], disabled: false, **options)
9
+ @label = label
10
+ @link = link
11
+ @classes = classes
12
+ @disabled = disabled
13
+ @options = options
14
+ super()
15
+ end
16
+
17
+ attr_reader :label, :link, :disabled
18
+
19
+ def call
20
+ link_to label, link, class: classes, **@options
21
+ end
22
+
23
+ def classes
24
+ merge_classes('dropdown-item', disabled ? 'disabled' : nil, @classes)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -5,10 +5,11 @@ module SdrViewComponents
5
5
  module Navigation
6
6
  # Component for navigation item link.
7
7
  class NavItemComponent < BaseComponent
8
- def initialize(text:, path: nil, data: {})
8
+ def initialize(text:, path: nil, data: {}, classes: [])
9
9
  @text = text
10
10
  @path = path
11
11
  @data = data
12
+ @classes = classes
12
13
  super()
13
14
  end
14
15
 
@@ -17,12 +18,16 @@ module SdrViewComponents
17
18
  def call
18
19
  tag.li class: 'nav-item' do
19
20
  if path.present?
20
- link_to text, path, class: 'nav-link', data:
21
+ link_to text, path, class: classes, data:
21
22
  else
22
- tag.span text, class: 'nav-link'
23
+ tag.span text, class: classes
23
24
  end
24
25
  end
25
26
  end
27
+
28
+ def classes
29
+ merge_classes('nav-link', @classes)
30
+ end
26
31
  end
27
32
  end
28
33
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SdrViewComponents
4
- VERSION = '0.7.0'
4
+ VERSION = '0.8.0'
5
5
  end
@@ -0,0 +1,10 @@
1
+ <ul class="navbar-nav">
2
+ <%= render SdrViewComponents::Elements::Navigation::DropdownMenuComponent.new(text: 'Options') do |dropdown| %>
3
+ <% dropdown.with_item do %>
4
+ <%= render SdrViewComponents::Elements::Navigation::DropdownLinkComponent.new(label: 'Action', link: '#') %>
5
+ <% end %>
6
+ <% dropdown.with_item do %>
7
+ <%= render SdrViewComponents::Elements::Navigation::DropdownLinkComponent.new(label: 'Another action', link: '#') %>
8
+ <% end %>
9
+ <% end %>
10
+ </ul>
@@ -0,0 +1,16 @@
1
+ <ul class="navbar-nav">
2
+ <%= render SdrViewComponents::Elements::Navigation::DropdownMenuComponent.new(text: 'Options') do |dropdown| %>
3
+ <% dropdown.with_item do %>
4
+ <%= render SdrViewComponents::Elements::Navigation::DropdownHeaderComponent.new(text: 'Section 1') %>
5
+ <% end %>
6
+ <% dropdown.with_item do %>
7
+ <%= render SdrViewComponents::Elements::Navigation::DropdownLinkComponent.new(label: 'Action', link: '#') %>
8
+ <% end %>
9
+ <% dropdown.with_item do %>
10
+ <%= render SdrViewComponents::Elements::Navigation::DropdownDividerComponent.new %>
11
+ <% end %>
12
+ <% dropdown.with_item do %>
13
+ <%= render SdrViewComponents::Elements::Navigation::DropdownLinkComponent.new(label: 'Another action', link: '#') %>
14
+ <% end %>
15
+ <% end %>
16
+ </ul>
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SdrViewComponents
4
+ module Elements
5
+ module Navigation
6
+ class DropdownMenuComponentPreview < ViewComponent::Preview
7
+ def default; end
8
+
9
+ def with_header_and_divider; end
10
+ end
11
+ end
12
+ end
13
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sdr_view_components
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Collier
@@ -88,6 +88,9 @@ files:
88
88
  - app/components/sdr_view_components/elements/modal_component.rb
89
89
  - app/components/sdr_view_components/elements/nav_link_component.html.erb
90
90
  - app/components/sdr_view_components/elements/nav_link_component.rb
91
+ - app/components/sdr_view_components/elements/navigation/dropdown_divider_component.rb
92
+ - app/components/sdr_view_components/elements/navigation/dropdown_header_component.rb
93
+ - app/components/sdr_view_components/elements/navigation/dropdown_link_component.rb
91
94
  - app/components/sdr_view_components/elements/navigation/dropdown_menu_component.html.erb
92
95
  - app/components/sdr_view_components/elements/navigation/dropdown_menu_component.rb
93
96
  - app/components/sdr_view_components/elements/navigation/nav_item_component.rb
@@ -201,6 +204,9 @@ files:
201
204
  - spec/components/previews/sdr_view_components/elements/modal_component_preview/default.html.erb
202
205
  - spec/components/previews/sdr_view_components/elements/modal_component_preview/with_header_and_footer.html.erb
203
206
  - spec/components/previews/sdr_view_components/elements/modal_component_preview/without_size.html.erb
207
+ - spec/components/previews/sdr_view_components/elements/navigation/dropdown_menu_component_preview.rb
208
+ - spec/components/previews/sdr_view_components/elements/navigation/dropdown_menu_component_preview/default.html.erb
209
+ - spec/components/previews/sdr_view_components/elements/navigation/dropdown_menu_component_preview/with_header_and_divider.html.erb
204
210
  - spec/components/previews/sdr_view_components/elements/progress_bar_component_preview.rb
205
211
  - spec/components/previews/sdr_view_components/elements/spinner_component_preview.rb
206
212
  - spec/components/previews/sdr_view_components/elements/tabs/tab_list_component_preview.rb