ui_bibz 2.0.0.alpha24 → 2.0.0.alpha26

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTORS.md +19 -0
  3. data/Gemfile +1 -0
  4. data/Gemfile.lock +60 -55
  5. data/app/assets/javascripts/interface.coffee +11 -0
  6. data/app/assets/javascripts/ui_bibz.coffee +3 -1
  7. data/app/assets/stylesheets/table.sass +1 -2
  8. data/app/assets/stylesheets/ui_bibz.sass +2 -0
  9. data/app/inputs/custom_inputs/autocomplete_input.rb +3 -2
  10. data/app/inputs/custom_inputs/date_picker_input.rb +2 -2
  11. data/app/inputs/custom_inputs/dropdown_select_input.rb +2 -2
  12. data/app/inputs/custom_inputs/formula_input.rb +2 -2
  13. data/app/inputs/custom_inputs/markdown_editor_input.rb +2 -2
  14. data/app/inputs/custom_inputs/multi_column_input.rb +2 -2
  15. data/app/inputs/custom_inputs/multi_select_input.rb +2 -2
  16. data/app/inputs/custom_inputs/radios_input.rb +20 -0
  17. data/app/inputs/custom_inputs/surround_input.rb +2 -2
  18. data/app/inputs/custom_inputs/switch_input.rb +2 -2
  19. data/config/initializers/will_paginate.rb +79 -0
  20. data/lib/ui_bibz.rb +56 -30
  21. data/lib/ui_bibz/helpers/ui_core_helper.rb +45 -37
  22. data/lib/ui_bibz/ui/core/alert.rb +1 -2
  23. data/lib/ui_bibz/ui/core/{breadcrumb/breadcrumb.rb → breadcrumb.rb} +5 -5
  24. data/lib/ui_bibz/ui/core/cards/card.rb +6 -6
  25. data/lib/ui_bibz/ui/core/cards/components/block/card_block_link.rb +1 -1
  26. data/lib/ui_bibz/ui/core/cards/components/block/card_block_text.rb +1 -1
  27. data/lib/ui_bibz/ui/core/cards/components/block/card_block_title.rb +1 -1
  28. data/lib/ui_bibz/ui/core/cards/components/card_block.rb +4 -4
  29. data/lib/ui_bibz/ui/core/cards/components/card_footer.rb +1 -1
  30. data/lib/ui_bibz/ui/core/cards/components/card_header.rb +1 -1
  31. data/lib/ui_bibz/ui/core/cards/components/card_image.rb +1 -1
  32. data/lib/ui_bibz/ui/core/cards/components/card_list_group.rb +2 -2
  33. data/lib/ui_bibz/ui/core/component.rb +4 -51
  34. data/lib/ui_bibz/ui/core/component/glyph_extension.rb +19 -0
  35. data/lib/ui_bibz/ui/core/component/klass_extension.rb +38 -0
  36. data/lib/ui_bibz/ui/core/{dropdown → dropdowns}/components/dropdown_divider.rb +1 -1
  37. data/lib/ui_bibz/ui/core/{dropdown → dropdowns}/components/dropdown_header.rb +2 -2
  38. data/lib/ui_bibz/ui/core/{dropdown → dropdowns}/components/dropdown_link.rb +2 -2
  39. data/lib/ui_bibz/ui/core/{dropdown → dropdowns}/dropdown.rb +11 -12
  40. data/lib/ui_bibz/ui/core/{buttons/button_split_dropdown.rb → dropdowns/split_dropdown.rb} +6 -10
  41. data/lib/ui_bibz/ui/core/{buttons → forms/buttons}/button.rb +5 -5
  42. data/lib/ui_bibz/ui/core/{buttons → forms/buttons}/button_choice.rb +8 -8
  43. data/lib/ui_bibz/ui/core/{buttons → forms/buttons}/button_group.rb +5 -5
  44. data/lib/ui_bibz/ui/core/{buttons → forms/buttons}/button_link.rb +13 -9
  45. data/lib/ui_bibz/ui/core/forms/choices/checkbox_field.rb +98 -0
  46. data/lib/ui_bibz/ui/core/forms/choices/radio_field.rb +98 -0
  47. data/lib/ui_bibz/ui/core/{inputs → forms/choices}/switch_field.rb +3 -3
  48. data/lib/ui_bibz/ui/core/{inputs → forms/dates}/date_picker_field.rb +6 -6
  49. data/lib/ui_bibz/ui/core/{inputs → forms/numbers}/formula_field.rb +5 -5
  50. data/lib/ui_bibz/ui/core/{inputs → forms/selects}/dropdown_select_field.rb +5 -5
  51. data/lib/ui_bibz/ui/core/{inputs → forms/selects}/multi_column_field.rb +5 -5
  52. data/lib/ui_bibz/ui/core/{inputs → forms/selects}/multi_select_field.rb +8 -8
  53. data/lib/ui_bibz/ui/core/{inputs → forms/textareas}/markdown_editor_field.rb +5 -5
  54. data/lib/ui_bibz/ui/core/{inputs → forms/texts}/autocomplete_field.rb +5 -5
  55. data/lib/ui_bibz/ui/core/{inputs → forms/texts}/surround_field.rb +5 -5
  56. data/lib/ui_bibz/ui/core/glyph.rb +2 -1
  57. data/lib/ui_bibz/ui/core/{list → lists}/components/list.rb +11 -11
  58. data/lib/ui_bibz/ui/core/{list/components → lists/components/list}/list_body.rb +2 -2
  59. data/lib/ui_bibz/ui/core/{list/components → lists/components/list}/list_header.rb +2 -2
  60. data/lib/ui_bibz/ui/core/{list → lists}/list_group.rb +4 -4
  61. data/lib/ui_bibz/ui/core/navs/components/nav_dropdown.rb +1 -1
  62. data/lib/ui_bibz/ui/core/navs/components/navbar_form.rb +3 -1
  63. data/lib/ui_bibz/ui/core/paths/breadcrumb.rb +109 -0
  64. data/lib/ui_bibz/ui/core/{breadcrumb → paths}/components/breadcrumb_link.rb +6 -6
  65. data/lib/ui_bibz/ui/core/{stars.rb → star.rb} +14 -14
  66. data/lib/ui_bibz/ui/core/tag.rb +1 -2
  67. data/lib/ui_bibz/ui/core/{modal → windows}/components/modal_body.rb +2 -2
  68. data/lib/ui_bibz/ui/core/{modal → windows}/components/modal_footer.rb +2 -2
  69. data/lib/ui_bibz/ui/core/{modal → windows}/components/modal_header.rb +2 -2
  70. data/lib/ui_bibz/ui/core/{modal → windows}/modal.rb +8 -8
  71. data/lib/ui_bibz/ui/ux/tables/components/actions.rb +9 -9
  72. data/lib/ui_bibz/ui/ux/tables/extensions/actionable.rb +1 -1
  73. data/lib/ui_bibz/ui/ux/tables/table_pagination.rb +5 -4
  74. data/lib/ui_bibz/version.rb +1 -1
  75. data/test/dummy/app/controllers/users_controller.rb +18 -0
  76. data/test/dummy/app/models/user.rb +1 -0
  77. data/test/dummy/config/application.rb +1 -1
  78. data/test/dummy/config/initializers/simple_form_bootstrap.rb +155 -0
  79. data/test/simple_form_test.rb +123 -0
  80. data/test/test_helper.rb +2 -2
  81. data/test/ui/breadcrumb_test.rb +2 -2
  82. data/test/ui/button_test.rb +13 -39
  83. data/test/ui/dropdown_test.rb +14 -1
  84. data/test/ui/glyph_test.rb +6 -0
  85. data/test/ui/input_dropdown_select_field_test.rb +9 -9
  86. data/test/ui/input_switch_field_test.rb +11 -11
  87. data/test/ui/inputs_test.rb +26 -12
  88. data/test/ui/list_group_test.rb +2 -2
  89. data/test/ui/{stars_test.rb → star_test.rb} +7 -7
  90. data/test/ui/table_test.rb +3 -3
  91. data/test/ui_helper_test.rb +6 -1
  92. data/ui_bibz.gemspec +4 -3
  93. data/vendor/assets/stylesheets/awesome-bootstrap-checkbox.scss +250 -0
  94. metadata +65 -39
  95. data/lib/ui_bibz/helpers/pagination_helper.rb +0 -55
  96. data/lib/ui_bibz/ui/core/buttons/button_dropdown.rb +0 -82
@@ -1,4 +1,4 @@
1
- module UiBibz::Ui::Core::Inputs
1
+ module UiBibz::Ui::Core::Forms::Selects
2
2
 
3
3
  # Create a MultiColumnField
4
4
  #
@@ -20,17 +20,17 @@ module UiBibz::Ui::Core::Inputs
20
20
  #
21
21
  # ==== Signatures
22
22
  #
23
- # UiBibz::Ui::Core::Inputs::MultiColumnField.new(content, options = {}, html_options = {}).render
23
+ # UiBibz::Ui::Core::Forms::Selects::MultiColumnField.new(content, options = {}, html_options = {}).render
24
24
  #
25
- # UiBibz::Ui::Core::Inputs::MultiColumnField.new(options = {}, html_options = {}) do
25
+ # UiBibz::Ui::Core::Forms::Selects::MultiColumnField.new(options = {}, html_options = {}) do
26
26
  # content
27
27
  # end.render
28
28
  #
29
29
  # ==== Examples
30
30
  #
31
- # UiBibz::Ui::Core::Inputs::MultiColumnField.new('fruits', { option_tags: list_of_fruits, searchable: true }, { class: 'test' })
31
+ # UiBibz::Ui::Core::Forms::Selects::MultiColumnField.new('fruits', { option_tags: list_of_fruits, searchable: true }, { class: 'test' })
32
32
  #
33
- # UiBibz::Ui::Core::Inputs::MultiColumnField.new({ option_tags: list_of_fruits, selectable_opt_group: true }, { class: 'test' }) do
33
+ # UiBibz::Ui::Core::Forms::Selects::MultiColumnField.new({ option_tags: list_of_fruits, selectable_opt_group: true }, { class: 'test' }) do
34
34
  # 'fruits'
35
35
  # end
36
36
  #
@@ -1,8 +1,8 @@
1
- module UiBibz::Ui::Core::Inputs
1
+ module UiBibz::Ui::Core::Forms::Selects
2
2
 
3
3
  # Create a MultiSelectField
4
4
  #
5
- # This element is an extend of UiBibz::Ui::Core::Buttons::Button
5
+ # This element is an extend of UiBibz::Ui::Core::Forms::Buttons::Button
6
6
  # source : http://loudev.com/
7
7
  #
8
8
  # ==== Attributes
@@ -23,17 +23,17 @@ module UiBibz::Ui::Core::Inputs
23
23
  #
24
24
  # ==== Signatures
25
25
  #
26
- # UiBibz::Ui::Core::Inputs::MultiSelectField.new(content, options = {}, html_options = {}).render
26
+ # UiBibz::Ui::Core::Forms::Selects::MultiSelectField.new(content, options = {}, html_options = {}).render
27
27
  #
28
- # UiBibz::Ui::Core::Inputs::MultiSelectField.new(options = {}, html_options = {}) do
28
+ # UiBibz::Ui::Core::Forms::Selects::MultiSelectField.new(options = {}, html_options = {}) do
29
29
  # content
30
30
  # end.render
31
31
  #
32
32
  # ==== Examples
33
33
  #
34
- # UiBibz::Ui::Core::Inputs::MultiSelectField.new('fruits', { option_tags: list_of_fruits, searchable: true }, { class: 'test' })
34
+ # UiBibz::Ui::Core::Forms::Selects::MultiSelectField.new('fruits', { option_tags: list_of_fruits, searchable: true }, { class: 'test' })
35
35
  #
36
- # UiBibz::Ui::Core::Inputs::MultiSelectField.new({ option_tags: list_of_fruits, select_all_option: true }, { class: 'test' }) do
36
+ # UiBibz::Ui::Core::Forms::Selects::MultiSelectField.new({ option_tags: list_of_fruits, select_all_option: true }, { class: 'test' }) do
37
37
  # 'fruits'
38
38
  # end
39
39
  #
@@ -41,9 +41,9 @@ module UiBibz::Ui::Core::Inputs
41
41
  #
42
42
  # multi_select_field(content, options = {}, html_options = {})
43
43
  #
44
- class MultiSelectField < UiBibz::Ui::Core::Buttons::Button
44
+ class MultiSelectField < UiBibz::Ui::Core::Forms::Buttons::Button
45
45
 
46
- # See UiBibz::Ui::Core::Buttons::Button.initialize
46
+ # See UiBibz::Ui::Core::Forms::Buttons::Button.initialize
47
47
  def initialize content = nil, options = nil, html_options = nil, &block
48
48
  super
49
49
  end
@@ -1,4 +1,4 @@
1
- module UiBibz::Ui::Core::Inputs
1
+ module UiBibz::Ui::Core::Forms::Textareas
2
2
 
3
3
  # Create a MarkdownEditorField
4
4
  #
@@ -24,17 +24,17 @@ module UiBibz::Ui::Core::Inputs
24
24
  #
25
25
  # ==== Signatures
26
26
  #
27
- # UiBibz::Ui::Core::Inputs::MarkdownEditorField.new(content, options = {}, html_options = {}).render
27
+ # UiBibz::Ui::Core::Forms::Textareas::MarkdownEditorField.new(content, options = {}, html_options = {}).render
28
28
  #
29
- # UiBibz::Ui::Core::Inputs::MarkdownEditorField.new(options = {}, html_options = {}) do
29
+ # UiBibz::Ui::Core::Forms::Textareas::MarkdownEditorField.new(options = {}, html_options = {}) do
30
30
  # content
31
31
  # end.render
32
32
  #
33
33
  # ==== Examples
34
34
  #
35
- # UiBibz::Ui::Core::Inputs::MarkdownEditorField.new('search', prepend: 'Prepend content', append: 'Append content', class: 'test')
35
+ # UiBibz::Ui::Core::Forms::Textareas::MarkdownEditorField.new('search', prepend: 'Prepend content', append: 'Append content', class: 'test')
36
36
  #
37
- # UiBibz::Ui::Core::Inputs::MarkdownEditorField.new(prepend: glyph('pencil'), append: glyph('camera-retro')) do
37
+ # UiBibz::Ui::Core::Forms::Textareas::MarkdownEditorField.new(prepend: glyph('pencil'), append: glyph('camera-retro')) do
38
38
  # #content
39
39
  # end
40
40
  #
@@ -1,4 +1,4 @@
1
- module UiBibz::Ui::Core::Inputs
1
+ module UiBibz::Ui::Core::Forms::Texts
2
2
 
3
3
  # Create a AutocompleteField
4
4
  #
@@ -18,19 +18,19 @@ module UiBibz::Ui::Core::Inputs
18
18
  #
19
19
  # ==== Signatures
20
20
  #
21
- # UiBibz::Ui::Core::Inputs::AutocompleteField.new(content, options = {}, html_options = {}).render
21
+ # UiBibz::Ui::Core::Forms::Texts::AutocompleteField.new(content, options = {}, html_options = {}).render
22
22
  #
23
- # UiBibz::Ui::Core::Inputs::AutocompleteField.new(options = {}, html_options = {}) do
23
+ # UiBibz::Ui::Core::Forms::Texts::AutocompleteField.new(options = {}, html_options = {}) do
24
24
  # content
25
25
  # end.render
26
26
  #
27
27
  # ==== Examples
28
28
  #
29
29
  # options = options_for_select(2.times.map{ |i| "option #{i}" })
30
- # UiBibz::Ui::Core::Inputs::AutocompleteField.new('company', { option_tags: options }, { class: 'test' })
30
+ # UiBibz::Ui::Core::Forms::Texts::AutocompleteField.new('company', { option_tags: options }, { class: 'test' })
31
31
  #
32
32
  # options = options_for_select(2.times.map{ |i| "option #{i}" })
33
- # UiBibz::Ui::Core::Inputs::AutocompleteField.new(option_tags: options) do
33
+ # UiBibz::Ui::Core::Forms::Texts::AutocompleteField.new(option_tags: options) do
34
34
  # #content
35
35
  # end
36
36
  #
@@ -1,4 +1,4 @@
1
- module UiBibz::Ui::Core::Inputs
1
+ module UiBibz::Ui::Core::Forms::Texts
2
2
 
3
3
  # Create a SurroundField
4
4
  #
@@ -19,17 +19,17 @@ module UiBibz::Ui::Core::Inputs
19
19
  #
20
20
  # ==== Signatures
21
21
  #
22
- # UiBibz::Ui::Core::Inputs::SurroundField.new(content, options = {}, html_options = {}).render
22
+ # UiBibz::Ui::Core::Forms::Texts::SurroundField.new(content, options = {}, html_options = {}).render
23
23
  #
24
- # UiBibz::Ui::Core::Inputs::SurroundField.new(options = {}, html_options = {}) do
24
+ # UiBibz::Ui::Core::Forms::Texts::SurroundField.new(options = {}, html_options = {}) do
25
25
  # content
26
26
  # end.render
27
27
  #
28
28
  # ==== Examples
29
29
  #
30
- # UiBibz::Ui::Core::Inputs::SurroundField.new('search', prepend: 'Prepend content', append: 'Append content', class: 'test')
30
+ # UiBibz::Ui::Core::Forms::Texts::SurroundField.new('search', prepend: 'Prepend content', append: 'Append content', class: 'test')
31
31
  #
32
- # UiBibz::Ui::Core::Inputs::SurroundField.new(prepend: glyph('pencil'), append: glyph('camera-retro')) do
32
+ # UiBibz::Ui::Core::Forms::Texts::SurroundField.new(prepend: glyph('pencil'), append: glyph('camera-retro')) do
33
33
  # #content
34
34
  # end
35
35
  #
@@ -17,6 +17,7 @@ module UiBibz::Ui::Core
17
17
  # * +name+ - String
18
18
  # * +size+ - Integer
19
19
  # * +type+ - Symbol
20
+ # * +text+ - String
20
21
  # * +status+ - Symbol
21
22
  # (+:secondary+, +:primary+, +:info+, +:warning+, +:danger+)
22
23
  #
@@ -63,7 +64,7 @@ module UiBibz::Ui::Core
63
64
 
64
65
  # Render html tag
65
66
  def render
66
- content_tag :i, '', html_options
67
+ [content_tag(:i, '', html_options), options[:label]].compact.join(' ').html_safe
67
68
  end
68
69
 
69
70
  private
@@ -1,6 +1,6 @@
1
- require "ui_bibz/ui/core/list/components/list_header"
2
- require "ui_bibz/ui/core/list/components/list_body"
3
- module UiBibz::Ui::Core
1
+ require "ui_bibz/ui/core/lists/components/list/list_header"
2
+ require "ui_bibz/ui/core/lists/components/list/list_body"
3
+ module UiBibz::Ui::Core::Lists::Components
4
4
 
5
5
  # Create a list
6
6
  #
@@ -29,22 +29,22 @@ module UiBibz::Ui::Core
29
29
  #
30
30
  # ==== Signatures
31
31
  #
32
- # UiBibz::Ui::Core::List.new(tap: true) do |l|
32
+ # UiBibz::Ui::Core::Lists::Components::List.new(tap: true) do |l|
33
33
  # l.header content = nil, options = nil, html_options = nil, &block
34
34
  # l.body content = nil, options = nil, html_options = nil, &block
35
35
  # end
36
36
  #
37
- # UiBibz::Ui::Core::List.new content, options = nil, html_options = nil
37
+ # UiBibz::Ui::Core::Lists::Components::List.new content, options = nil, html_options = nil
38
38
  #
39
- # UiBibz::Ui::Core::List.new options = nil, html_options = nil do
39
+ # UiBibz::Ui::Core::Lists::Components::List.new options = nil, html_options = nil do
40
40
  # content
41
41
  # end
42
42
  #
43
43
  # ==== Examples
44
44
  #
45
- # UiBibz::Ui::Core::List.new('Test', status: :success, url: '#test').render
45
+ # UiBibz::Ui::Core::Lists::Components::List.new('Test', status: :success, url: '#test').render
46
46
  #
47
- # UiBibz::Ui::Core::List.new(status: :primary) do
47
+ # UiBibz::Ui::Core::Lists::Components::List.new(status: :primary) do
48
48
  # 'Test 2'
49
49
  # end.render
50
50
  #
@@ -55,7 +55,7 @@ module UiBibz::Ui::Core
55
55
  # end
56
56
  # end.render
57
57
  #
58
- class List < Component
58
+ class List < UiBibz::Ui::Core::Component
59
59
 
60
60
  # See UiBibz::Ui::Core::Component.initialize
61
61
  def initialize content = nil, options = nil, html_options = nil, &block
@@ -75,12 +75,12 @@ module UiBibz::Ui::Core
75
75
 
76
76
  # Add header which is a component
77
77
  def header content = nil, options = nil, html_options = nil, &block
78
- @header = UiBibz::Ui::Core::ListHeader.new content, options, html_options, &block
78
+ @header = UiBibz::Ui::Core::Lists::Components::ListHeader.new content, options, html_options, &block
79
79
  end
80
80
 
81
81
  # Add body which is a component
82
82
  def body content = nil, options = nil, html_options = nil, &block
83
- @body = UiBibz::Ui::Core::ListBody.new content, options, html_options, &block
83
+ @body = UiBibz::Ui::Core::Lists::Components::ListBody.new content, options, html_options, &block
84
84
  end
85
85
 
86
86
  private
@@ -1,4 +1,4 @@
1
- module UiBibz::Ui::Core
1
+ module UiBibz::Ui::Core::Lists::Components
2
2
 
3
3
  # Create a listBody
4
4
  #
@@ -14,7 +14,7 @@ module UiBibz::Ui::Core
14
14
  #
15
15
  # You can add HTML attributes using the +html_options+.
16
16
  # You can pass arguments in options attribute:
17
- class ListBody < Component
17
+ class ListBody < UiBibz::Ui::Core::Component
18
18
 
19
19
  # See UiBibz::Ui::Core::Component.initialize
20
20
  def initialize content = nil, options = nil, html_options = nil, &block
@@ -1,4 +1,4 @@
1
- module UiBibz::Ui::Core
1
+ module UiBibz::Ui::Core::Lists::Components
2
2
 
3
3
  # Create a listHeader
4
4
  #
@@ -14,7 +14,7 @@ module UiBibz::Ui::Core
14
14
  #
15
15
  # You can add HTML attributes using the +html_options+.
16
16
  # You can pass arguments in options attribute:
17
- class ListHeader < Component
17
+ class ListHeader < UiBibz::Ui::Core::Component
18
18
 
19
19
  # See UiBibz::Ui::Core::Component.initialize
20
20
  def initialize content = nil, options = nil, html_options = nil, &block
@@ -1,5 +1,5 @@
1
- require "ui_bibz/ui/core/list/components/list"
2
- module UiBibz::Ui::Core
1
+ require "ui_bibz/ui/core/lists/components/list"
2
+ module UiBibz::Ui::Core::Lists
3
3
 
4
4
  # Create a list group
5
5
  #
@@ -88,9 +88,9 @@ module UiBibz::Ui::Core
88
88
  options = options.merge({ type: @options[:type] }) unless @options[:type].nil?
89
89
 
90
90
  if is_tap
91
- @lists << List.new(content, options, html_options).tap(&block).render
91
+ @lists << UiBibz::Ui::Core::Lists::Components::List.new(content, options, html_options).tap(&block).render
92
92
  else
93
- @lists << List.new(content, options, html_options, &block).render
93
+ @lists << UiBibz::Ui::Core::Lists::Components::List.new(content, options, html_options, &block).render
94
94
  end
95
95
  end
96
96
 
@@ -41,7 +41,7 @@ module UiBibz::Ui::Core::Navs
41
41
  # d.list link_to('test2', '#')
42
42
  # end.render
43
43
  #
44
- class NavDropdown < UiBibz::Ui::Core::Dropdown
44
+ class NavDropdown < UiBibz::Ui::Core::Dropdowns::Dropdown
45
45
 
46
46
  # See UiBibz::Ui::Core::Dropdown.initialize
47
47
  def initialize content, options = nil, html_options = nil, &block
@@ -49,7 +49,9 @@ module UiBibz::Ui::Core::Navs
49
49
  if type == :form_for
50
50
  @form = form_for(model_or_url, options, &block)
51
51
  else
52
- @form = form_tag(model_or_url, class: "navbar-form form-inline #{ position }", &block)
52
+ #@form = form_tag(model_or_url, class: "navbar-form form-inline #{ position }", block)
53
+ html_options = html_options_for_form(model_or_url, { class: "navbar-form form-inline #{ position }" })
54
+ @form = form_tag_with_body(html_options, capture(&block))
53
55
  end
54
56
  end
55
57
 
@@ -0,0 +1,109 @@
1
+ require 'ui_bibz/ui/core/paths/components/breadcrumb_link'
2
+ module UiBibz::Ui::Core::Paths
3
+
4
+ # Breadcrumb
5
+ #
6
+ # Indicate the current page's location within a navigational hierarchy.
7
+ # Separators are automatically added in CSS through +:before+ and +content+.
8
+ #
9
+ # This element is an extend of UiBibz::Ui::Core::Component.
10
+ # You can use tap method to add link items.
11
+ #
12
+ # ==== Attributes
13
+ #
14
+ # * +content+ - Content of element
15
+ # * +options+ - Options of element
16
+ # * +html_options+ - Html Options of element
17
+ #
18
+ # ==== Components
19
+ #
20
+ # +link+ is UiBibz::Ui::Core::BreadCrumb::Components::BreadcrumbLink component
21
+ #
22
+ # ==== Signatures
23
+ #
24
+ # UiBibz::Ui::Core::Breadcrumb.new().tap do |b|
25
+ # b.link content = nil, options = nil, html_options = nil, &block
26
+ # b.link content = nil, options = nil, html_options = nil, &block
27
+ # b.link content = nil, options = nil, html_options = nil, &block
28
+ # ...
29
+ # end
30
+ #
31
+ # UiBibz::Ui::Core::Alert.new(options = nil, html_options = nil) do
32
+ # content
33
+ # end
34
+ #
35
+ # ==== Examples
36
+ #
37
+ # UiBibz::Ui::Core::Breadcrumb.new().tap do |b|
38
+ # b.link 'Home', url: '#home'
39
+ # b.link url: '#level-1' do
40
+ # 'Level 1'
41
+ # end
42
+ # b.link 'Level 2', state: :active
43
+ # end.render
44
+ #
45
+ # ==== Helper
46
+ #
47
+ # breadcrumb({tap: true}) do |b|
48
+ # b.link(content, options = {}, html_options = {})
49
+ # b.link(options = {}, html_options = {}) do
50
+ # content
51
+ # end
52
+ # end
53
+ #
54
+ # breadcrumb({store: @users, link_label: name, link_url: user_path(:id)})
55
+ #
56
+ class Breadcrumb < UiBibz::Ui::Core::Component
57
+
58
+ # See UiBibz::Ui::Core::Component.initialize
59
+ def initialize content = nil, options = nil, html_options = nil, &block
60
+ super
61
+ @links = []
62
+ end
63
+
64
+ # Render html tag
65
+ def render
66
+ generate_links unless store.nil?
67
+ content_tag :ol, @links.join.html_safe, html_options
68
+ end
69
+
70
+ # Add breadcrumb link items
71
+ # See UiBibz::Ui::Core::BreadcrumbLink
72
+ def link content = nil, options = nil, html_options = nil, &block
73
+ @links << UiBibz::Ui::Core::Paths::Components::BreadcrumbLink.new(content, options, html_options, &block).render
74
+ end
75
+
76
+ private
77
+
78
+ def component_html_classes
79
+ 'breadcrumb'
80
+ end
81
+
82
+ def store
83
+ @options[:store]
84
+ end
85
+
86
+ def model_name
87
+ store.class.to_s
88
+ end
89
+
90
+ def link_label
91
+ @options[:link_label] || :name
92
+ end
93
+
94
+ def link_url
95
+ @options[:link_url] || '#'
96
+ end
97
+
98
+ def generate_links
99
+ @options[:store].each do |item|
100
+ if item == @options[:store].last
101
+ @links << UiBibz::Ui::Core::Paths::Components::BreadcrumbLink.new(item.send(link_label), status: :disabled).render
102
+ else
103
+ @links << UiBibz::Ui::Core::Paths::Components::BreadcrumbLink.new(item.send(link_label), url: inject_url(link_url, item)).render
104
+ end
105
+ end
106
+ end
107
+
108
+ end
109
+ end
@@ -1,4 +1,4 @@
1
- module UiBibz::Ui::Core
1
+ module UiBibz::Ui::Core::Paths::Components
2
2
 
3
3
  # Create a BreadcrumbLink
4
4
  #
@@ -24,21 +24,21 @@ module UiBibz::Ui::Core
24
24
  #
25
25
  # ==== Signatures
26
26
  #
27
- # UiBibz::Ui::Core::BreadcrumbLink.new(content, options = nil, html_options = nil)
27
+ # UiBibz::Ui::Core::Breadcrumb::Components::BreadcrumbLink.new(content, options = nil, html_options = nil)
28
28
  #
29
- # UiBibz::Ui::Core::BreadcrumbLink.new(options = nil, html_options = nil) do
29
+ # UiBibz::Ui::Core::Breadcrumb::Components::BreadcrumbLink.new(options = nil, html_options = nil) do
30
30
  # content
31
31
  # end
32
32
  #
33
33
  # ==== Examples
34
34
  #
35
- # UiBibz::Ui::Core::BreadcrumbLink.new('Home', { glyph: 'home', state: :active },{ class: 'test' }).render
35
+ # UiBibz::Ui::Core::Breadcrumb::Components::BreadcrumbLink.new('Home', { glyph: 'home', state: :active },{ class: 'test' }).render
36
36
  #
37
- # UiBibz::Ui::Core::BreadcrumbLink.new({glyph: { name: 'eye', size: 3}, { class: 'test' }) do
37
+ # UiBibz::Ui::Core::Breadcrumb::Components::BreadcrumbLink.new({glyph: { name: 'eye', size: 3}, { class: 'test' }) do
38
38
  # 'Home'
39
39
  # end.render
40
40
  #
41
- class BreadcrumbLink < Component
41
+ class BreadcrumbLink < UiBibz::Ui::Core::Component
42
42
 
43
43
  # See UiBibz::Ui::Core::Component.initialize
44
44
  def initialize content = nil, options = nil, html_options = nil, &block