stimulus_plumbers 0.3.2 → 0.4.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 (126) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +72 -0
  3. data/README.md +3 -1
  4. data/app/assets/javascripts/stimulus-plumbers/controllers.manifest.json +273 -0
  5. data/app/assets/javascripts/stimulus-plumbers/stimulus-plumbers-controllers.es.js +269 -160
  6. data/app/assets/javascripts/stimulus-plumbers/stimulus-plumbers-controllers.umd.js +1 -1
  7. data/app/assets/stylesheets/stimulus_plumbers/tokens.css +56 -13
  8. data/config/locales/en.yml +10 -0
  9. data/lib/stimulus_plumbers/components/avatar.rb +24 -17
  10. data/lib/stimulus_plumbers/components/button/group.rb +15 -4
  11. data/lib/stimulus_plumbers/components/button/slots.rb +11 -0
  12. data/lib/stimulus_plumbers/components/button.rb +45 -11
  13. data/lib/stimulus_plumbers/components/calendar/turbo/days_of_month.rb +151 -0
  14. data/lib/stimulus_plumbers/components/calendar/turbo/days_of_week.rb +62 -0
  15. data/lib/stimulus_plumbers/components/calendar/turbo/months_of_year.rb +99 -0
  16. data/lib/stimulus_plumbers/components/calendar/turbo/years_of_decade.rb +86 -0
  17. data/lib/stimulus_plumbers/components/calendar/turbo.rb +65 -0
  18. data/lib/stimulus_plumbers/components/calendar.rb +70 -26
  19. data/lib/stimulus_plumbers/components/card/slots.rb +26 -0
  20. data/lib/stimulus_plumbers/components/card.rb +56 -10
  21. data/lib/stimulus_plumbers/components/combobox/builder.rb +45 -0
  22. data/lib/stimulus_plumbers/components/combobox/date/navigation.rb +72 -0
  23. data/lib/stimulus_plumbers/components/combobox/date/navigator.rb +25 -0
  24. data/lib/stimulus_plumbers/components/combobox/date.rb +37 -23
  25. data/lib/stimulus_plumbers/components/combobox/dropdown.rb +30 -21
  26. data/lib/stimulus_plumbers/components/combobox/options/option.rb +8 -2
  27. data/lib/stimulus_plumbers/components/combobox/options/option_group.rb +8 -2
  28. data/lib/stimulus_plumbers/components/combobox/options.rb +9 -5
  29. data/lib/stimulus_plumbers/components/combobox/time/drum.rb +8 -2
  30. data/lib/stimulus_plumbers/components/combobox/time.rb +50 -47
  31. data/lib/stimulus_plumbers/components/combobox/trigger.rb +62 -14
  32. data/lib/stimulus_plumbers/components/combobox/typeahead.rb +96 -0
  33. data/lib/stimulus_plumbers/components/combobox.rb +62 -38
  34. data/lib/stimulus_plumbers/components/divider.rb +25 -4
  35. data/lib/stimulus_plumbers/components/icon.rb +11 -17
  36. data/lib/stimulus_plumbers/components/input_group.rb +29 -0
  37. data/lib/stimulus_plumbers/components/link/slots.rb +11 -0
  38. data/lib/stimulus_plumbers/components/link.rb +63 -0
  39. data/lib/stimulus_plumbers/components/list/item/slots.rb +13 -0
  40. data/lib/stimulus_plumbers/components/list/item.rb +83 -0
  41. data/lib/stimulus_plumbers/components/list/section.rb +73 -0
  42. data/lib/stimulus_plumbers/components/list.rb +31 -0
  43. data/lib/stimulus_plumbers/components/popover/panel.rb +32 -0
  44. data/lib/stimulus_plumbers/components/popover/trigger.rb +27 -0
  45. data/lib/stimulus_plumbers/components/popover.rb +44 -14
  46. data/lib/stimulus_plumbers/engine.rb +1 -0
  47. data/lib/stimulus_plumbers/form/base.rb +103 -0
  48. data/lib/stimulus_plumbers/form/builder.rb +71 -24
  49. data/lib/stimulus_plumbers/form/field.rb +56 -88
  50. data/lib/stimulus_plumbers/form/fields/error.rb +1 -1
  51. data/lib/stimulus_plumbers/form/fields/fieldset.rb +11 -8
  52. data/lib/stimulus_plumbers/form/fields/hint.rb +1 -1
  53. data/lib/stimulus_plumbers/form/fields/inputs/checkbox.rb +115 -0
  54. data/lib/stimulus_plumbers/form/fields/inputs/combobox.rb +24 -0
  55. data/lib/stimulus_plumbers/form/fields/inputs/datetime.rb +42 -48
  56. data/lib/stimulus_plumbers/form/fields/inputs/file.rb +9 -8
  57. data/lib/stimulus_plumbers/form/fields/inputs/password.rb +32 -25
  58. data/lib/stimulus_plumbers/form/fields/inputs/radio.rb +60 -0
  59. data/lib/stimulus_plumbers/form/fields/inputs/search.rb +34 -57
  60. data/lib/stimulus_plumbers/form/fields/inputs/select/grouped.rb +22 -29
  61. data/lib/stimulus_plumbers/form/fields/inputs/select/timezone.rb +3 -44
  62. data/lib/stimulus_plumbers/form/fields/inputs/select/weekday.rb +3 -28
  63. data/lib/stimulus_plumbers/form/fields/inputs/select.rb +62 -49
  64. data/lib/stimulus_plumbers/form/fields/inputs/submit.rb +10 -7
  65. data/lib/stimulus_plumbers/form/fields/inputs/text.rb +29 -22
  66. data/lib/stimulus_plumbers/form/fields/inputs/text_area.rb +9 -8
  67. data/lib/stimulus_plumbers/form/fields/label/floating.rb +41 -0
  68. data/lib/stimulus_plumbers/form/fields/label.rb +9 -3
  69. data/lib/stimulus_plumbers/form/fields/renderer.rb +39 -0
  70. data/lib/stimulus_plumbers/helpers/avatar_helper.rb +2 -2
  71. data/lib/stimulus_plumbers/helpers/button_helper.rb +4 -8
  72. data/lib/stimulus_plumbers/helpers/calendar_helper.rb +14 -11
  73. data/lib/stimulus_plumbers/helpers/calendar_turbo_helper.rb +49 -11
  74. data/lib/stimulus_plumbers/helpers/card_helper.rb +2 -12
  75. data/lib/stimulus_plumbers/helpers/combobox_helper.rb +27 -47
  76. data/lib/stimulus_plumbers/helpers/divider_helper.rb +2 -2
  77. data/lib/stimulus_plumbers/helpers/icon_helper.rb +11 -0
  78. data/lib/stimulus_plumbers/helpers/link_helper.rb +11 -0
  79. data/lib/stimulus_plumbers/helpers/list_helper.rb +11 -0
  80. data/lib/stimulus_plumbers/helpers/plumber_helper.rb +3 -6
  81. data/lib/stimulus_plumbers/helpers/popover_helper.rb +2 -2
  82. data/lib/stimulus_plumbers/helpers.rb +6 -2
  83. data/lib/stimulus_plumbers/logger.rb +4 -3
  84. data/lib/stimulus_plumbers/plumber/base.rb +6 -1
  85. data/lib/stimulus_plumbers/plumber/dispatcher/klass_proxy.rb +4 -3
  86. data/lib/stimulus_plumbers/plumber/dispatcher/method_call.rb +4 -3
  87. data/lib/stimulus_plumbers/plumber/dispatcher.rb +4 -4
  88. data/lib/stimulus_plumbers/plumber/options/aria.rb +17 -0
  89. data/lib/stimulus_plumbers/plumber/options/html.rb +29 -0
  90. data/lib/stimulus_plumbers/plumber/options/stimulus.rb +29 -0
  91. data/lib/stimulus_plumbers/plumber/options/theme.rb +19 -0
  92. data/lib/stimulus_plumbers/plumber/options/token_list.rb +29 -0
  93. data/lib/stimulus_plumbers/plumber/renderer.rb +136 -41
  94. data/lib/stimulus_plumbers/plumber/slots.rb +74 -0
  95. data/lib/stimulus_plumbers/themes/base.rb +20 -23
  96. data/lib/stimulus_plumbers/themes/icons/external.rb +60 -0
  97. data/lib/stimulus_plumbers/themes/icons/registry.rb +36 -0
  98. data/lib/stimulus_plumbers/themes/schema/avatar/ranges.rb +13 -0
  99. data/lib/stimulus_plumbers/themes/schema/button/ranges.rb +16 -0
  100. data/lib/stimulus_plumbers/themes/schema/card/ranges.rb +13 -0
  101. data/lib/stimulus_plumbers/themes/schema/form/checkbox/ranges.rb +16 -0
  102. data/lib/stimulus_plumbers/themes/schema/form/radio/ranges.rb +16 -0
  103. data/lib/stimulus_plumbers/themes/schema/form/ranges.rb +1 -2
  104. data/lib/stimulus_plumbers/themes/schema/icon.rb +57 -15
  105. data/lib/stimulus_plumbers/themes/schema/link/ranges.rb +14 -0
  106. data/lib/stimulus_plumbers/themes/schema/ranges.rb +1 -5
  107. data/lib/stimulus_plumbers/themes/schema.rb +142 -67
  108. data/lib/stimulus_plumbers/version.rb +1 -1
  109. data/lib/stimulus_plumbers.rb +22 -17
  110. metadata +46 -17
  111. data/lib/stimulus_plumbers/components/action_list/item.rb +0 -27
  112. data/lib/stimulus_plumbers/components/action_list/section.rb +0 -22
  113. data/lib/stimulus_plumbers/components/action_list.rb +0 -23
  114. data/lib/stimulus_plumbers/components/calendar/month/turbo/days_of_month.rb +0 -145
  115. data/lib/stimulus_plumbers/components/calendar/month/turbo/days_of_week.rb +0 -39
  116. data/lib/stimulus_plumbers/components/calendar/month/turbo.rb +0 -55
  117. data/lib/stimulus_plumbers/components/card/section.rb +0 -25
  118. data/lib/stimulus_plumbers/components/combobox/autocomplete.rb +0 -47
  119. data/lib/stimulus_plumbers/components/combobox/popover.rb +0 -24
  120. data/lib/stimulus_plumbers/components/date_picker/navigation.rb +0 -41
  121. data/lib/stimulus_plumbers/components/date_picker/navigator.rb +0 -31
  122. data/lib/stimulus_plumbers/components/popover/builder.rb +0 -25
  123. data/lib/stimulus_plumbers/form/fields/input_group.rb +0 -25
  124. data/lib/stimulus_plumbers/form/fields/inputs/choice.rb +0 -69
  125. data/lib/stimulus_plumbers/helpers/action_list_helper.rb +0 -25
  126. data/lib/stimulus_plumbers/plumber/html_options.rb +0 -52
@@ -1,98 +1,157 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "../form/field"
3
4
  require_relative "schema/ranges"
5
+ require_relative "schema/avatar/ranges"
6
+ require_relative "schema/button/ranges"
7
+ require_relative "schema/card/ranges"
8
+ require_relative "schema/link/ranges"
4
9
  require_relative "schema/form/ranges"
10
+ require_relative "schema/form/checkbox/ranges"
11
+ require_relative "schema/form/radio/ranges"
5
12
  require_relative "schema/icon"
6
13
 
7
14
  module StimulusPlumbers
8
15
  module Themes
9
16
  module Schema
10
- ACTION_LIST = {
11
- action_list_item: {
12
- active: { default: false, range: Ranges::BOOL }
13
- }.freeze,
14
- action_list: {}.freeze
17
+ LIST = {
18
+ list: {}.freeze,
19
+ list_section: {}.freeze,
20
+ list_section_title: {}.freeze,
21
+ list_section_description: {}.freeze,
22
+ list_item: {}.freeze,
23
+ list_item_icon: {}.freeze,
24
+ list_item_content: {}.freeze,
25
+ list_item_title: {}.freeze,
26
+ list_item_description: {}.freeze
15
27
  }.freeze
16
28
 
17
29
  AVATAR = {
18
- avatar: {
19
- size: { default: :md, range: Ranges::SIZE },
20
- color: { default: nil, range: :avatar_color_range }
21
- }.freeze
30
+ avatar: {
31
+ size: { default: :md, validate: Avatar::Ranges::SIZE },
32
+ variant: { default: nil, validate: :avatar_variant_range }
33
+ }.freeze,
34
+ avatar_image: {}.freeze
22
35
  }.freeze
23
36
 
24
37
  BUTTON = {
25
38
  button: {
26
- variant: { default: :primary, range: Ranges::BUTTON_VARIANT },
27
- size: { default: :md, range: Ranges::SIZE }
39
+ type: { default: :default, validate: Button::Ranges::TYPE },
40
+ variant: { default: :primary, validate: Button::Ranges::VARIANT },
41
+ size: { default: :md, validate: Button::Ranges::SIZE }
28
42
  }.freeze,
29
43
  button_group: {
30
- alignment: { default: :left, range: Ranges::FLEX_ALIGN },
31
- direction: { default: :row, range: Ranges::FLEX_DIRECTION }
32
- }.freeze
44
+ layout: { default: :inline, validate: Button::Ranges::LAYOUT }
45
+ }.freeze,
46
+ button_icon: {}.freeze
33
47
  }.freeze
34
48
 
35
49
  CALENDAR = {
36
- calendar: {}.freeze,
37
- calendar_days_of_week: {}.freeze,
38
- calendar_week: {}.freeze,
39
- calendar_days_of_month: {}.freeze,
40
- calendar_day: {
41
- today: { default: false, range: Ranges::BOOL },
42
- selected: { default: false, range: Ranges::BOOL },
43
- outside: { default: false, range: Ranges::BOOL }
44
- }.freeze,
45
- calendar_navigation: {}.freeze,
46
- calendar_navigation_navigator: {}.freeze,
47
- calendar_navigation_navigator_icon: {
48
- name: { default: "arrow-left", range: :icon_range }
49
- }.freeze
50
+ calendar: {}.freeze,
51
+ calendar_days_of_week: {}.freeze,
52
+ calendar_days_of_month: {}.freeze,
53
+ calendar_months_of_year: {}.freeze,
54
+ calendar_years_of_decade: {}.freeze,
55
+ calendar_row: {}.freeze,
56
+ calendar_day: {
57
+ today: { default: false, validate: Ranges::BOOL },
58
+ selected: { default: false, validate: Ranges::BOOL },
59
+ outside: { default: false, validate: Ranges::BOOL }
60
+ }.freeze,
61
+ calendar_month: {
62
+ outside: { default: false, validate: Ranges::BOOL }
63
+ }.freeze,
64
+ calendar_year: {
65
+ outside: { default: false, validate: Ranges::BOOL }
66
+ }.freeze,
67
+ calendar_quarter_grid: {}.freeze
50
68
  }.freeze
51
69
 
52
70
  CARD = {
53
- card: {}.freeze,
54
- card_section: {}.freeze
71
+ card: { variant: { default: :tertiary, validate: Card::Ranges::VARIANT } }.freeze,
72
+ card_header: {}.freeze,
73
+ card_icon: {}.freeze,
74
+ card_title: {}.freeze,
75
+ card_body: {}.freeze,
76
+ card_action: {}.freeze
55
77
  }.freeze
56
78
 
57
79
  COMBOBOX = {
58
- combobox_trigger: {}.freeze,
59
- combobox_option: {
60
- selected: { default: false, range: Ranges::BOOL },
61
- disabled: { default: false, range: Ranges::BOOL }
62
- }.freeze,
63
- combobox_option_group: {}.freeze,
64
- combobox_listbox: {}.freeze,
65
- combobox_autocomplete_loading: {}.freeze,
66
- combobox_autocomplete_empty: {}.freeze,
67
- combobox_time: {}.freeze
80
+ combobox: {}.freeze,
81
+ combobox_popover: {}.freeze,
82
+ combobox_trigger: {}.freeze,
83
+ combobox_trigger_icon: {}.freeze,
84
+ combobox_trigger_group: {}.freeze,
85
+ combobox_option: {
86
+ selected: { default: false, validate: Ranges::BOOL },
87
+ disabled: { default: false, validate: Ranges::BOOL }
88
+ }.freeze,
89
+ combobox_option_group: {}.freeze,
90
+ combobox_listbox: {}.freeze,
91
+ combobox_typeahead_loading: {}.freeze,
92
+ combobox_typeahead_loading_icon: {}.freeze,
93
+ combobox_typeahead_empty: {}.freeze,
94
+ combobox_time: {}.freeze,
95
+ combobox_date_navigation: {}.freeze,
96
+ combobox_date_navigation_navigator: {}.freeze
68
97
  }.freeze
69
98
 
70
99
  FORM = {
71
- form_group: {
72
- layout: { default: :stacked, range: Form::Ranges::LAYOUT },
73
- error: { default: false, range: Ranges::BOOL }
74
- }.freeze,
75
- form_label: {
76
- required: { default: false, range: Ranges::BOOL },
77
- hidden: { default: false, range: Ranges::BOOL }
78
- }.freeze,
79
- form_required_mark: {}.freeze,
80
- form_details: {}.freeze,
81
- form_error: {}.freeze,
82
- form_input: { error: { default: false, range: Ranges::BOOL } }.freeze,
83
- form_textarea: { error: { default: false, range: Ranges::BOOL } }.freeze,
84
- form_file: { error: { default: false, range: Ranges::BOOL } }.freeze,
85
- form_select: { error: { default: false, range: Ranges::BOOL } }.freeze,
86
- form_checkbox: { error: { default: false, range: Ranges::BOOL } }.freeze,
87
- form_radio: { error: { default: false, range: Ranges::BOOL } }.freeze,
88
- form_input_group: { error: { default: false, range: Ranges::BOOL } }.freeze,
89
- form_combobox: { error: { default: false, range: Ranges::BOOL } }.freeze,
90
- form_input_reveal: { error: { default: false, range: Ranges::BOOL } }.freeze,
91
- form_input_search: {}.freeze,
92
- form_button_reveal: {}.freeze,
93
- form_button_clear: {}.freeze,
94
- form_submit: {
95
- variant: { default: :default, range: Form::Ranges::SUBMIT_VARIANT }
100
+ form_group: {
101
+ layout: { default: :stacked, validate: Form::Ranges::LAYOUT },
102
+ error: { default: false, validate: Ranges::BOOL }
103
+ }.freeze,
104
+ form_field_label: {
105
+ required: { default: false, validate: Ranges::BOOL },
106
+ hidden: { default: false, validate: Ranges::BOOL }
107
+ }.freeze,
108
+ form_field_required_mark: {}.freeze,
109
+ form_field_hint: {}.freeze,
110
+ form_field_error: {}.freeze,
111
+ form_field_choice_items: {
112
+ layout: { default: :stacked, validate: Form::Ranges::LAYOUT }
113
+ }.freeze,
114
+ form_field_checkbox_label: {
115
+ type: { default: :default, validate: Form::Checkbox::Ranges::TYPE },
116
+ variant: { default: :tertiary, validate: Form::Checkbox::Ranges::VARIANT }
117
+ }.freeze,
118
+ form_field_radio_label: {
119
+ type: { default: :default, validate: Form::Radio::Ranges::TYPE },
120
+ variant: { default: :tertiary, validate: Form::Radio::Ranges::VARIANT }
121
+ }.freeze,
122
+ form_field_input: { error: { default: false, validate: Ranges::BOOL } }.freeze,
123
+ form_field_floating: {
124
+ error: { default: false, validate: Ranges::BOOL },
125
+ type: { default: nil, validate: StimulusPlumbers::Form::Field::FLOATING_TYPES }
126
+ }.freeze,
127
+ form_field_floating_group: {
128
+ type: { default: nil, validate: StimulusPlumbers::Form::Field::FLOATING_TYPES }
129
+ }.freeze,
130
+ form_field_floating_label: {
131
+ type: { default: nil, validate: StimulusPlumbers::Form::Field::FLOATING_TYPES },
132
+ error: { default: false, validate: Ranges::BOOL }
133
+ }.freeze,
134
+ form_field_input_textarea: { error: { default: false, validate: Ranges::BOOL } }.freeze,
135
+ form_field_input_file: { error: { default: false, validate: Ranges::BOOL } }.freeze,
136
+ form_field_input_select: { error: { default: false, validate: Ranges::BOOL } }.freeze,
137
+ form_field_input_checkbox: {
138
+ error: { default: false, validate: Ranges::BOOL },
139
+ type: { default: :default, validate: Form::Checkbox::Ranges::TYPE },
140
+ variant: { default: :tertiary, validate: Form::Checkbox::Ranges::VARIANT }
141
+ }.freeze,
142
+ form_field_input_radio: {
143
+ error: { default: false, validate: Ranges::BOOL },
144
+ type: { default: :default, validate: Form::Radio::Ranges::TYPE },
145
+ variant: { default: :tertiary, validate: Form::Radio::Ranges::VARIANT }
146
+ }.freeze,
147
+ form_field_input_combobox: { error: { default: false, validate: Ranges::BOOL } }.freeze,
148
+ form_field_input_reveal: { error: { default: false, validate: Ranges::BOOL } }.freeze,
149
+ form_field_input_clearable: {}.freeze,
150
+ form_field_input_button_reveal: {}.freeze,
151
+ form_field_input_button_clear: {}.freeze,
152
+ form_submit: {
153
+ type: { default: :default, validate: Button::Ranges::TYPE },
154
+ variant: { default: :primary, validate: Button::Ranges::VARIANT }
96
155
  }.freeze
97
156
  }.freeze
98
157
 
@@ -100,9 +159,25 @@ module StimulusPlumbers
100
159
  icon: {}.freeze
101
160
  }.freeze
102
161
 
162
+ INPUT_GROUP = {
163
+ input_group: { error: { default: false, validate: Ranges::BOOL } }.freeze
164
+ }.freeze
165
+
166
+ LINK = {
167
+ link: {
168
+ type: { default: :default, validate: Link::Ranges::TYPE },
169
+ variant: { default: :default, validate: Link::Ranges::VARIANT }
170
+ }.freeze,
171
+ link_icon: {}.freeze
172
+ }.freeze
173
+
103
174
  LAYOUT = {
104
- divider: {}.freeze,
105
- popover: {}.freeze
175
+ divider: {}.freeze,
176
+ divider_separator: {}.freeze,
177
+ divider_label: {}.freeze,
178
+ popover_wrapper: {}.freeze,
179
+ popover_trigger: {}.freeze,
180
+ popover: {}.freeze
106
181
  }.freeze
107
182
  end
108
183
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module StimulusPlumbers
4
- VERSION = "0.3.2"
4
+ VERSION = "0.4.0"
5
5
  end
@@ -11,55 +11,60 @@ require_relative "stimulus_plumbers/helpers"
11
11
  require_relative "stimulus_plumbers/logger"
12
12
 
13
13
  # -- Plumber base --
14
- require_relative "stimulus_plumbers/plumber/html_options"
15
14
  require_relative "stimulus_plumbers/plumber/dispatcher"
16
- require_relative "stimulus_plumbers/plumber/renderer"
15
+ require_relative "stimulus_plumbers/plumber/slots"
17
16
  require_relative "stimulus_plumbers/plumber/base"
18
17
 
19
18
  # -- UI components --
20
19
  require_relative "stimulus_plumbers/components/icon"
21
20
  require_relative "stimulus_plumbers/components/avatar"
22
21
  require_relative "stimulus_plumbers/components/button"
22
+ require_relative "stimulus_plumbers/components/button/slots"
23
23
  require_relative "stimulus_plumbers/components/button/group"
24
+ require_relative "stimulus_plumbers/components/link"
25
+ require_relative "stimulus_plumbers/components/link/slots"
24
26
  require_relative "stimulus_plumbers/components/card"
25
- require_relative "stimulus_plumbers/components/card/section"
26
- require_relative "stimulus_plumbers/components/action_list"
27
- require_relative "stimulus_plumbers/components/action_list/section"
28
- require_relative "stimulus_plumbers/components/action_list/item"
27
+ require_relative "stimulus_plumbers/components/card/slots"
28
+ require_relative "stimulus_plumbers/components/list"
29
+ require_relative "stimulus_plumbers/components/list/section"
30
+ require_relative "stimulus_plumbers/components/list/item"
31
+ require_relative "stimulus_plumbers/components/list/item/slots"
29
32
  require_relative "stimulus_plumbers/components/divider"
33
+ require_relative "stimulus_plumbers/components/input_group"
30
34
  require_relative "stimulus_plumbers/components/popover"
31
- require_relative "stimulus_plumbers/components/popover/builder"
35
+ require_relative "stimulus_plumbers/components/popover/trigger"
36
+ require_relative "stimulus_plumbers/components/popover/panel"
32
37
 
33
38
  # -- Calendar --
34
39
  require_relative "stimulus_plumbers/components/calendar"
35
- require_relative "stimulus_plumbers/components/calendar/month/turbo"
36
- require_relative "stimulus_plumbers/components/calendar/month/turbo/days_of_week"
37
- require_relative "stimulus_plumbers/components/calendar/month/turbo/days_of_month"
38
-
39
- # -- Date picker --
40
- require_relative "stimulus_plumbers/components/date_picker/navigator"
41
- require_relative "stimulus_plumbers/components/date_picker/navigation"
40
+ require_relative "stimulus_plumbers/components/calendar/turbo"
41
+ require_relative "stimulus_plumbers/components/calendar/turbo/days_of_week"
42
+ require_relative "stimulus_plumbers/components/calendar/turbo/days_of_month"
43
+ require_relative "stimulus_plumbers/components/calendar/turbo/months_of_year"
44
+ require_relative "stimulus_plumbers/components/calendar/turbo/years_of_decade"
42
45
 
43
46
  # -- Combobox --
44
47
  require_relative "stimulus_plumbers/components/combobox"
45
48
  require_relative "stimulus_plumbers/components/combobox/trigger"
46
- require_relative "stimulus_plumbers/components/combobox/popover"
47
49
  require_relative "stimulus_plumbers/components/combobox/options"
48
50
  require_relative "stimulus_plumbers/components/combobox/options/option"
49
51
  require_relative "stimulus_plumbers/components/combobox/options/option_group"
50
52
  require_relative "stimulus_plumbers/components/combobox/date"
53
+ require_relative "stimulus_plumbers/components/combobox/date/navigator"
54
+ require_relative "stimulus_plumbers/components/combobox/date/navigation"
51
55
  require_relative "stimulus_plumbers/components/combobox/dropdown"
52
- require_relative "stimulus_plumbers/components/combobox/autocomplete"
56
+ require_relative "stimulus_plumbers/components/combobox/typeahead"
53
57
  require_relative "stimulus_plumbers/components/combobox/time"
54
58
  require_relative "stimulus_plumbers/components/combobox/time/drum"
59
+ require_relative "stimulus_plumbers/components/combobox/builder"
55
60
 
56
61
  # -- Form --
57
62
  require_relative "stimulus_plumbers/form/field"
58
63
  require_relative "stimulus_plumbers/form/fields/error"
59
64
  require_relative "stimulus_plumbers/form/fields/group"
60
65
  require_relative "stimulus_plumbers/form/fields/hint"
61
- require_relative "stimulus_plumbers/form/fields/input_group"
62
66
  require_relative "stimulus_plumbers/form/fields/label"
67
+ require_relative "stimulus_plumbers/form/fields/label/floating"
63
68
  require_relative "stimulus_plumbers/form/builder"
64
69
 
65
70
  module StimulusPlumbers
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stimulus_plumbers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Chang
@@ -40,52 +40,64 @@ files:
40
40
  - CHANGELOG.md
41
41
  - README.md
42
42
  - app/assets/javascripts/stimulus-plumbers/.keep
43
+ - app/assets/javascripts/stimulus-plumbers/controllers.manifest.json
43
44
  - app/assets/javascripts/stimulus-plumbers/stimulus-plumbers-controllers.es.js
44
45
  - app/assets/javascripts/stimulus-plumbers/stimulus-plumbers-controllers.umd.js
45
46
  - app/assets/stylesheets/stimulus_plumbers/tokens.css
47
+ - config/locales/en.yml
46
48
  - lib/stimulus_plumbers.rb
47
- - lib/stimulus_plumbers/components/action_list.rb
48
- - lib/stimulus_plumbers/components/action_list/item.rb
49
- - lib/stimulus_plumbers/components/action_list/section.rb
50
49
  - lib/stimulus_plumbers/components/avatar.rb
51
50
  - lib/stimulus_plumbers/components/button.rb
52
51
  - lib/stimulus_plumbers/components/button/group.rb
52
+ - lib/stimulus_plumbers/components/button/slots.rb
53
53
  - lib/stimulus_plumbers/components/calendar.rb
54
- - lib/stimulus_plumbers/components/calendar/month/turbo.rb
55
- - lib/stimulus_plumbers/components/calendar/month/turbo/days_of_month.rb
56
- - lib/stimulus_plumbers/components/calendar/month/turbo/days_of_week.rb
54
+ - lib/stimulus_plumbers/components/calendar/turbo.rb
55
+ - lib/stimulus_plumbers/components/calendar/turbo/days_of_month.rb
56
+ - lib/stimulus_plumbers/components/calendar/turbo/days_of_week.rb
57
+ - lib/stimulus_plumbers/components/calendar/turbo/months_of_year.rb
58
+ - lib/stimulus_plumbers/components/calendar/turbo/years_of_decade.rb
57
59
  - lib/stimulus_plumbers/components/card.rb
58
- - lib/stimulus_plumbers/components/card/section.rb
60
+ - lib/stimulus_plumbers/components/card/slots.rb
59
61
  - lib/stimulus_plumbers/components/combobox.rb
60
- - lib/stimulus_plumbers/components/combobox/autocomplete.rb
62
+ - lib/stimulus_plumbers/components/combobox/builder.rb
61
63
  - lib/stimulus_plumbers/components/combobox/date.rb
64
+ - lib/stimulus_plumbers/components/combobox/date/navigation.rb
65
+ - lib/stimulus_plumbers/components/combobox/date/navigator.rb
62
66
  - lib/stimulus_plumbers/components/combobox/dropdown.rb
63
67
  - lib/stimulus_plumbers/components/combobox/options.rb
64
68
  - lib/stimulus_plumbers/components/combobox/options/option.rb
65
69
  - lib/stimulus_plumbers/components/combobox/options/option_group.rb
66
- - lib/stimulus_plumbers/components/combobox/popover.rb
67
70
  - lib/stimulus_plumbers/components/combobox/time.rb
68
71
  - lib/stimulus_plumbers/components/combobox/time/drum.rb
69
72
  - lib/stimulus_plumbers/components/combobox/trigger.rb
70
- - lib/stimulus_plumbers/components/date_picker/navigation.rb
71
- - lib/stimulus_plumbers/components/date_picker/navigator.rb
73
+ - lib/stimulus_plumbers/components/combobox/typeahead.rb
72
74
  - lib/stimulus_plumbers/components/divider.rb
73
75
  - lib/stimulus_plumbers/components/icon.rb
76
+ - lib/stimulus_plumbers/components/input_group.rb
77
+ - lib/stimulus_plumbers/components/link.rb
78
+ - lib/stimulus_plumbers/components/link/slots.rb
79
+ - lib/stimulus_plumbers/components/list.rb
80
+ - lib/stimulus_plumbers/components/list/item.rb
81
+ - lib/stimulus_plumbers/components/list/item/slots.rb
82
+ - lib/stimulus_plumbers/components/list/section.rb
74
83
  - lib/stimulus_plumbers/components/popover.rb
75
- - lib/stimulus_plumbers/components/popover/builder.rb
84
+ - lib/stimulus_plumbers/components/popover/panel.rb
85
+ - lib/stimulus_plumbers/components/popover/trigger.rb
76
86
  - lib/stimulus_plumbers/configuration.rb
77
87
  - lib/stimulus_plumbers/engine.rb
88
+ - lib/stimulus_plumbers/form/base.rb
78
89
  - lib/stimulus_plumbers/form/builder.rb
79
90
  - lib/stimulus_plumbers/form/field.rb
80
91
  - lib/stimulus_plumbers/form/fields/error.rb
81
92
  - lib/stimulus_plumbers/form/fields/fieldset.rb
82
93
  - lib/stimulus_plumbers/form/fields/group.rb
83
94
  - lib/stimulus_plumbers/form/fields/hint.rb
84
- - lib/stimulus_plumbers/form/fields/input_group.rb
85
- - lib/stimulus_plumbers/form/fields/inputs/choice.rb
95
+ - lib/stimulus_plumbers/form/fields/inputs/checkbox.rb
96
+ - lib/stimulus_plumbers/form/fields/inputs/combobox.rb
86
97
  - lib/stimulus_plumbers/form/fields/inputs/datetime.rb
87
98
  - lib/stimulus_plumbers/form/fields/inputs/file.rb
88
99
  - lib/stimulus_plumbers/form/fields/inputs/password.rb
100
+ - lib/stimulus_plumbers/form/fields/inputs/radio.rb
89
101
  - lib/stimulus_plumbers/form/fields/inputs/search.rb
90
102
  - lib/stimulus_plumbers/form/fields/inputs/select.rb
91
103
  - lib/stimulus_plumbers/form/fields/inputs/select/grouped.rb
@@ -95,8 +107,9 @@ files:
95
107
  - lib/stimulus_plumbers/form/fields/inputs/text.rb
96
108
  - lib/stimulus_plumbers/form/fields/inputs/text_area.rb
97
109
  - lib/stimulus_plumbers/form/fields/label.rb
110
+ - lib/stimulus_plumbers/form/fields/label/floating.rb
111
+ - lib/stimulus_plumbers/form/fields/renderer.rb
98
112
  - lib/stimulus_plumbers/helpers.rb
99
- - lib/stimulus_plumbers/helpers/action_list_helper.rb
100
113
  - lib/stimulus_plumbers/helpers/avatar_helper.rb
101
114
  - lib/stimulus_plumbers/helpers/button_helper.rb
102
115
  - lib/stimulus_plumbers/helpers/calendar_helper.rb
@@ -104,6 +117,9 @@ files:
104
117
  - lib/stimulus_plumbers/helpers/card_helper.rb
105
118
  - lib/stimulus_plumbers/helpers/combobox_helper.rb
106
119
  - lib/stimulus_plumbers/helpers/divider_helper.rb
120
+ - lib/stimulus_plumbers/helpers/icon_helper.rb
121
+ - lib/stimulus_plumbers/helpers/link_helper.rb
122
+ - lib/stimulus_plumbers/helpers/list_helper.rb
107
123
  - lib/stimulus_plumbers/helpers/plumber_helper.rb
108
124
  - lib/stimulus_plumbers/helpers/popover_helper.rb
109
125
  - lib/stimulus_plumbers/logger.rb
@@ -113,13 +129,26 @@ files:
113
129
  - lib/stimulus_plumbers/plumber/dispatcher/instance_exec.rb
114
130
  - lib/stimulus_plumbers/plumber/dispatcher/klass_proxy.rb
115
131
  - lib/stimulus_plumbers/plumber/dispatcher/method_call.rb
116
- - lib/stimulus_plumbers/plumber/html_options.rb
132
+ - lib/stimulus_plumbers/plumber/options/aria.rb
133
+ - lib/stimulus_plumbers/plumber/options/html.rb
134
+ - lib/stimulus_plumbers/plumber/options/stimulus.rb
135
+ - lib/stimulus_plumbers/plumber/options/theme.rb
136
+ - lib/stimulus_plumbers/plumber/options/token_list.rb
117
137
  - lib/stimulus_plumbers/plumber/renderer.rb
138
+ - lib/stimulus_plumbers/plumber/slots.rb
118
139
  - lib/stimulus_plumbers/themes/base.rb
119
140
  - lib/stimulus_plumbers/themes/configuration.rb
141
+ - lib/stimulus_plumbers/themes/icons/external.rb
142
+ - lib/stimulus_plumbers/themes/icons/registry.rb
120
143
  - lib/stimulus_plumbers/themes/schema.rb
144
+ - lib/stimulus_plumbers/themes/schema/avatar/ranges.rb
145
+ - lib/stimulus_plumbers/themes/schema/button/ranges.rb
146
+ - lib/stimulus_plumbers/themes/schema/card/ranges.rb
147
+ - lib/stimulus_plumbers/themes/schema/form/checkbox/ranges.rb
148
+ - lib/stimulus_plumbers/themes/schema/form/radio/ranges.rb
121
149
  - lib/stimulus_plumbers/themes/schema/form/ranges.rb
122
150
  - lib/stimulus_plumbers/themes/schema/icon.rb
151
+ - lib/stimulus_plumbers/themes/schema/link/ranges.rb
123
152
  - lib/stimulus_plumbers/themes/schema/ranges.rb
124
153
  - lib/stimulus_plumbers/version.rb
125
154
  homepage: https://github.com/ryancyq/stimulus-plumbers
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module StimulusPlumbers
4
- module Components
5
- class ActionList
6
- class Item < Plumber::Base
7
- def render(content = nil, url: nil, external: false, active: false, **kwargs, &block)
8
- content = template.capture(&block) if block_given?
9
- html_options = merge_html_options(
10
- { classes: theme.resolve(:action_list_item, active: active).fetch(:classes, "") },
11
- kwargs
12
- )
13
-
14
- inner = if url
15
- html_options[:target] = "_blank" if external
16
- template.content_tag(:a, content, href: url, **html_options)
17
- else
18
- html_options[:type] ||= "button"
19
- template.content_tag(:button, content, **html_options)
20
- end
21
-
22
- template.content_tag(:li, inner)
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module StimulusPlumbers
4
- module Components
5
- class ActionList
6
- class Section < Plumber::Base
7
- def render(title: nil, **kwargs, &block)
8
- template.content_tag(:li, **kwargs) do
9
- ul_opts = {}
10
- ul_opts[:aria] = { label: title } if title.present?
11
- template.safe_join(
12
- [
13
- (template.content_tag(:span, title, aria: { hidden: "true" }) if title.present?),
14
- template.content_tag(:ul, template.capture(&block), **ul_opts)
15
- ]
16
- )
17
- end
18
- end
19
- end
20
- end
21
- end
22
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module StimulusPlumbers
4
- module Components
5
- class ActionList < Plumber::Base
6
- def render(role: "list", **kwargs, &block)
7
- html_options = merge_html_options(
8
- { role: role, classes: theme.resolve(:action_list).fetch(:classes, "") },
9
- kwargs
10
- )
11
- template.content_tag(:ul, template.capture(&block), **html_options)
12
- end
13
-
14
- def section(title: nil, **kwargs, &block)
15
- ActionList::Section.new(template).render(title: title, **kwargs, &block)
16
- end
17
-
18
- def item(content = nil, **kwargs, &block)
19
- ActionList::Item.new(template).render(content, **kwargs, &block)
20
- end
21
- end
22
- end
23
- end