bulmacomp 0.1.0 → 0.1.1

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: aba376c1b9ab6ef2532c7c313e28621f910c5959bf0285ce268e2936983ae0c1
4
- data.tar.gz: 5462a699bc0b4fd5985674230ce986a3db9ed7cec16bcd2e098ab234e0793a72
3
+ metadata.gz: 7b5fe720844eeb9706a76791f3ded3fc1c010fa7442ea375ad69d071bf598bb6
4
+ data.tar.gz: 666b242522a9ee87094bf1b4f47e294e41403910b845b72d4594de7fe7bde296
5
5
  SHA512:
6
- metadata.gz: 9b4c29854e9bbb3dd9283b698633578d5b8b1c9b0b4868fa919ff392aa1690faa1f59c7cb4e031212d93ddbbde8a3ed966d624b1511dc84d4b83843d82e9d13f
7
- data.tar.gz: 62b1d229680c06b33f75ae136c60999f4942e9f768d01f5ca33d56b1c53c327b33d6f74a6633e58a3835516b5ec16e96854324c4912ba22877f8e51162ec8826
6
+ metadata.gz: 8892fb3dbcce0a46f8ad1238b927e96d6bb0830875ba686600ac557f3446da9cccc64d34c90430f81fc438f0263c8acd0d7c02102410f3081d43813010db7334
7
+ data.tar.gz: ec3f10a435462824fd2f67e743daf9a0f978595c1a47fe3004821032d7c13a6951a605127b9ec12ea468bf64467b0e69367b1a366f110bcc9cfd87c6dbf13007
@@ -11,16 +11,9 @@ module Bulmacomp
11
11
  # </ul>
12
12
  # </nav>
13
13
  #
14
- # @example Empty breadcrumb with option:
15
- # render Bulmacomp::BreadcrumbComponent.new(class: 'breadcrumb one', data: {entity: 'one'})
16
- #
17
- # <nav class="breadcrumb one" aria-label="breadcrumbs" data-entity='one'>
18
- # <ul>
19
- # </ul>
20
- # </nav>
21
- #
22
14
  # @example Breadcrumb with list element:
23
- # render Bulmacomp::BreadcrumbComponent.new(link_to('one','#'), link_to('two','#'))
15
+ # entries = link_to('one','#'), link_to('two','#')
16
+ # render Bulmacomp::BreadcrumbComponent.new(entries)
24
17
  # <nav class="breadcrumb" aria-label="breadcrumbs">
25
18
  # <ul>
26
19
  # <li><a href="#">one</a></li>
@@ -46,7 +39,7 @@ module Bulmacomp
46
39
  # @option opts [String] :*
47
40
  # each other key going as tag option, default is class: 'breadcrumb', aria_label: 'breadcrumbs'
48
41
  # @yield [optional] card content
49
- def initialize(*list, **opts)
42
+ def initialize(list = [], **opts)
50
43
  super
51
44
  @list = list
52
45
  @opts = { class: 'breadcrumb', aria: { label: 'breadcrumbs' } }.merge(opts)
@@ -11,7 +11,7 @@ module Bulmacomp
11
11
  # @example menu with title and entries
12
12
  # title = 'Menu title'
13
13
  # menu = [link_to('first entry', '#'), link_to('second entry', '#')
14
- # render Bulmacomp::MenuComponent.new(title,menu)
14
+ # render Bulmacomp::MenuComponent.new(menu, title: title)
15
15
  #
16
16
  # <aside class='menu'>
17
17
  # <p class='menu-label'>Menu title</p>
@@ -22,7 +22,8 @@ module Bulmacomp
22
22
  # </aside>
23
23
  #
24
24
  # @example menu with title and annidate entries
25
- # = render Bulmacomp::MenuComponent.new('Uno',['Due',['Tre','Quattro']])
25
+ # entries = ['Uno',['Due',['Tre','Quattro']]]
26
+ # = render Bulmacomp::MenuComponent.new(entries)
26
27
  #
27
28
  # <aside class='menu'>
28
29
  # <p class='menu-label'>Uno</p>
@@ -46,7 +47,8 @@ module Bulmacomp
46
47
  # </aside>
47
48
  #
48
49
  # @example with mixed conetent (arguments before)
49
- # = render Bulmacomp::MenuComponent.new('argument content',['argoument menu']) do
50
+ # entries = ['argument content',['argoument menu']]
51
+ # = render Bulmacomp::MenuComponent.new(entries) do
50
52
  # %p yield content
51
53
  #
52
54
  # <aside class='menu'>
@@ -64,7 +66,7 @@ module Bulmacomp
64
66
  # options to generate content
65
67
  # @option opts [String] :*
66
68
  # each key going as tag option, default is class: 'menu'
67
- def initialize(*list, **opts)
69
+ def initialize(list = [], **opts)
68
70
  super
69
71
  @list = list
70
72
  @opts = { class: 'menu' }.merge(opts)
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bulmacomp
4
+ # Make an html structure for a bulma message
5
+ #
6
+ # @example Empty message
7
+ # render Bulmacomp::MessageComponent.new()
8
+ #
9
+ # <article class="message"></article>
10
+ #
11
+ # @example Message with title
12
+ # render Bulmacomp::MessageComponent.new(title: 'test')
13
+ #
14
+ # <article class="message">
15
+ # <div class="message-header"><p>test</p></div>
16
+ # </article>
17
+ #
18
+ # @example Message with close button and option
19
+ # render Bulmacomp::MessageComponent.new(close: true, close_option: {id: 'close'})
20
+ #
21
+ # <article class="message">
22
+ # <div class="message-header"><button id="close" class="delete" aria-label="delete"></button></div>
23
+ # </article>
24
+ #
25
+ # @example Message with yield content
26
+ #
27
+ # <article class="message">
28
+ # <div class="message-body">test</div>
29
+ # </article>
30
+ class MessageComponent < ViewComponent::Base
31
+ # @param [Hash] opts
32
+ # options to generate content
33
+ # @option opts [String] title
34
+ # Title test, is added in 'article .message-header p' tag if present
35
+ # @option opts [Boolean] close
36
+ # if TRUE add close button in title
37
+ # @option opts [Hash] close_option
38
+ # parameters to close button tag
39
+ # @option opts [String] :*
40
+ # each key going as article tag option, default is class: 'message'
41
+ # @yield [optional] message content
42
+ def initialize(title: nil, close: false, close_option: {}, **opts)
43
+ super
44
+ @title = title
45
+ @close = close
46
+ @close_option = close_option
47
+ @opts = { class: 'message' }.merge opts
48
+ end
49
+
50
+ # return [String] generated bulma message
51
+ def call
52
+ tag.article safe_join([header, tag.div(content, class: 'message-body')]), **@opts
53
+ end
54
+
55
+ # return [String] div.message-header if @title or @close is present
56
+ def header
57
+ ret = []
58
+ ret << tag.p(@title) if @title.present?
59
+ ret << tag.button(**{ class: 'delete', aria: { label: 'delete' } }.merge(@close_option)) if @close
60
+ tag.div safe_join(ret), class: 'message-header' if ret.present?
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,107 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bulmacomp
4
+ # Make an HTML strucrure for a bulma pagination
5
+ #
6
+ # @example Empty pagination
7
+ # render Bulmacomp::TabsComponent.new()
8
+ #
9
+ # <nav class="pagination" role="navigation" aria-label="pagination"></nav>
10
+ #
11
+ # @example pagination with elements
12
+ # elements = ['<a class="pagination-link" aria-label="Goto page 1">1</a>']
13
+ # render Bulmacomp::TabsComponent.new(elements: elements)
14
+ #
15
+ # <nav class="pagination" role="navigation" aria-label="pagination">
16
+ # <ul class='pagination-list'>
17
+ # <li><a class="pagination-link" aria-label="Goto page 1">1</a></li>
18
+ # </ul>
19
+ # </nav>
20
+ #
21
+ # @example with elements and pre
22
+ # pre = [
23
+ # link_to('Previus', '#', class: 'pagination-previous'),
24
+ # link_to('Next', '#', class: 'pagination-next')
25
+ # ]
26
+ # elements = ['<a class="pagination-link" aria-label="Goto page 1">1</a>']
27
+ # render Bulmacomp::TabsComponent.new(elements: elements, pre: pre)
28
+ #
29
+ # <nav class="pagination" role="navigation" aria-label="pagination">
30
+ # <a href="#" class="pagination-previous">Previous</a>
31
+ # <a href="#" class="pagination-next">Next</a>
32
+ # <ul class='pagination-list'>
33
+ # <li><a class="pagination-link" aria-label="Goto page 1">1</a></li>
34
+ # </ul>
35
+ # </nav>
36
+ #
37
+ # @example with yield
38
+ # = render Bulmacomp::TabsComponent.new() do
39
+ # %li= link_to 'test', '#'
40
+ #
41
+ # <nav class="pagination" role="navigation" aria-label="pagination">
42
+ # <ul class='pagination-list'>
43
+ # <li><a href='#'>test</a></li>
44
+ # </ul>
45
+ # </nav>
46
+ #
47
+ # @example full pagination
48
+ # pre = [
49
+ # link_to('Previus', '#', class: 'pagination-previous'),
50
+ # link_to('Next', '#', class: 'pagination-next')
51
+ # ]
52
+ # elements = ['<a class="pagination-link" aria-label="Goto page 1">1</a>']
53
+ #
54
+ # = render Bulmacomp::TabsComponent.new(elements: elements, pre: pre, id: 'ok') do
55
+ # %li= link_to 'test', '#'
56
+ #
57
+ # <nav class="pagination" role="navigation" aria-label="pagination" id="ok">
58
+ # <a href="#" class="pagination-previous">Previous</a>
59
+ # <a href="#" class="pagination-next">Next</a>
60
+ # <ul class='pagination-list'>
61
+ # <li><a class="pagination-link" aria-label="Goto page 1">1</a></li>
62
+ # <li><a href='#'>test</a></li>
63
+ # </ul>
64
+ # </nav>
65
+ class PaginationComponent < ViewComponent::Base
66
+ # @param [Hash] opts
67
+ # options to generate content
68
+ # @option opts [Array<String>] elements
69
+ # elements list for build tabs
70
+ # @option opts [Array<String>] pre
71
+ # element not in pagination list
72
+ # @option opts [String] :*
73
+ # each key going as tag option, default:
74
+ # * class: "pagination"
75
+ # * role: "navigation"
76
+ # * aria_label: "pagination"
77
+ # @yield [optional] modal content
78
+ def initialize(elements: [], pre: [], **opts)
79
+ super
80
+ @elements = elements
81
+ @pre = pre
82
+ @opts = { class: 'pagination', role: 'navigation', aria_label: 'pagination' }.merge opts
83
+ end
84
+
85
+ # Generate safe string with bulma pagination
86
+ # @return [String] html_safe generated bulma pagination
87
+ def call
88
+ tag.nav safe_join([@pre, ulify]), **@opts
89
+ end
90
+
91
+ # generate a ul tag with map_elements and content
92
+ # @return [String]
93
+ def ulify
94
+ tag.ul safe_join([map_elements, content])
95
+ end
96
+
97
+ # Map elements in a li tag
98
+ # @return [String]
99
+ # @example
100
+ # Bulmacomp::TabsComponent.new(elements: [1,2,3]).map_elements
101
+ #
102
+ # <li>1</li><li>2</li><li>3</li>
103
+ def map_elements
104
+ safe_join(@elements.map { |e| tag.li e })
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bulmacomp
4
+ # Make an HTML strucrure for a bulma tabs
5
+ #
6
+ # @example Empty tabs
7
+ # render Bulmacomp::TabsComponent.new()
8
+ #
9
+ # <div class="tabs">
10
+ # <ul></ul>
11
+ # </div>
12
+ #
13
+ # @example Tabs with elements
14
+ # entries = [link_to('one','#'), link_to('two','#')]
15
+ # render Bulmacomp::TabsComponent.new(entries: entries)
16
+ #
17
+ # <div class="tabs">
18
+ # <ul>
19
+ # <li><a href='#'>one</li>
20
+ # <li><a href='#'>two</li>
21
+ # </ul>
22
+ # </div>
23
+ #
24
+ # @example yield
25
+ # = render Bulmacomp::TabsComponent.new() do
26
+ # <li class="active"><a href='#'>one</a></li>
27
+ #
28
+ # <div class="tabs">
29
+ # <ul>
30
+ # <li class="active"><a href='#'>one</a></li>
31
+ # </ul>
32
+ # </div>
33
+ #
34
+ # @example Full tabs
35
+ # entries = [link_to('one','#'), link_to('two','#')]
36
+ # = render Bulmacomp::TabsComponent.new(entries: entries, id: 'ok') do
37
+ # <li class="active"><a href='#'>three</a></li>
38
+ #
39
+ # <div class="tabs" id="ok">
40
+ # <ul>
41
+ # <li><a href='#'>one</li>
42
+ # <li><a href='#'>two</li>
43
+ # <li class="active"><a href='#'>three</a></li>
44
+ # </ul>
45
+ # </div>
46
+ class TabsComponent < ViewComponent::Base
47
+ # @param [Hash] opts
48
+ # options to generate content
49
+ # @option opts [Array<String>] element
50
+ # elements list for build tabs
51
+ # @option opts [String] :*
52
+ # each key going as tag option, default is class: 'tabs'
53
+ # @yield [optional] modal content
54
+ def initialize(elements: [], **opts)
55
+ super
56
+ @elements = elements
57
+ @opts = { class: 'tabs' }.merge opts
58
+ end
59
+
60
+ # Generate safe string with full bulma tabs
61
+ # @return [String] html_safe generated bulma tabs
62
+ def call
63
+ tag.div ulify, **@opts
64
+ end
65
+
66
+ # generate a ul tag with map_elements and content
67
+ # @return [String]
68
+ def ulify
69
+ tag.ul safe_join([map_elements, content])
70
+ end
71
+
72
+ # Map elements in a li tag
73
+ # @return [String]
74
+ # @example
75
+ # Bulmacomp::TabsComponent.new(elements).map_elements
76
+ #
77
+ # <li>1</li><li>2</li><li>3</li>
78
+ def map_elements
79
+ safe_join(@elements.map { |e| tag.li e })
80
+ end
81
+ end
82
+ end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bulmacomp
4
- VERSION = '0.1.0'
4
+ # Costant of bulmacomp version
5
+ VERSION = '0.1.1'
5
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bulmacomp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - MDreW
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-21 00:00:00.000000000 Z
11
+ date: 2023-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -37,9 +37,12 @@ files:
37
37
  - app/components/bulmacomp/breadcrumb_component.rb
38
38
  - app/components/bulmacomp/card_component.rb
39
39
  - app/components/bulmacomp/menu_component.rb
40
+ - app/components/bulmacomp/message_component.rb
40
41
  - app/components/bulmacomp/modal_component.rb
41
42
  - app/components/bulmacomp/navbar_component.rb
43
+ - app/components/bulmacomp/pagination_component.rb
42
44
  - app/components/bulmacomp/panel_component.rb
45
+ - app/components/bulmacomp/tabs_component.rb
43
46
  - lib/bulmacomp.rb
44
47
  - lib/bulmacomp/engine.rb
45
48
  - lib/bulmacomp/version.rb