stimulus_plumbers 0.2.7 → 0.2.8

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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +38 -0
  3. data/README.md +57 -41
  4. data/app/assets/javascripts/stimulus-plumbers/stimulus-plumbers-controllers.es.js +734 -248
  5. data/app/assets/javascripts/stimulus-plumbers/stimulus-plumbers-controllers.umd.js +1 -1
  6. data/lib/stimulus_plumbers/components/combobox/autocomplete.rb +57 -0
  7. data/lib/stimulus_plumbers/components/combobox/date.rb +52 -0
  8. data/lib/stimulus_plumbers/components/combobox/dropdown.rb +41 -0
  9. data/lib/stimulus_plumbers/components/combobox/option.rb +27 -0
  10. data/lib/stimulus_plumbers/components/combobox/option_group.rb +52 -0
  11. data/lib/stimulus_plumbers/components/combobox/renderer.rb +78 -0
  12. data/lib/stimulus_plumbers/components/combobox/time.rb +103 -0
  13. data/lib/stimulus_plumbers/components/date_picker/navigation.rb +1 -1
  14. data/lib/stimulus_plumbers/components/plumber/html_options.rb +22 -3
  15. data/lib/stimulus_plumbers/components/time_picker/renderer.rb +38 -0
  16. data/lib/stimulus_plumbers/form/builder.rb +57 -12
  17. data/lib/stimulus_plumbers/form/field_component.rb +12 -10
  18. data/lib/stimulus_plumbers/form/fields/combobox.rb +41 -0
  19. data/lib/stimulus_plumbers/form/fields/password.rb +55 -0
  20. data/lib/stimulus_plumbers/form/fields/renderer.rb +1 -2
  21. data/lib/stimulus_plumbers/form/fields/search.rb +40 -0
  22. data/lib/stimulus_plumbers/form/fields/select.rb +8 -2
  23. data/lib/stimulus_plumbers/form/fields/text.rb +12 -4
  24. data/lib/stimulus_plumbers/helpers/combobox_helper.rb +74 -0
  25. data/lib/stimulus_plumbers/helpers.rb +2 -2
  26. data/lib/stimulus_plumbers/themes/{form.rb → base/form.rb} +6 -2
  27. data/lib/stimulus_plumbers/themes/base.rb +7 -7
  28. data/lib/stimulus_plumbers/themes/tailwind/form.rb +10 -6
  29. data/lib/stimulus_plumbers/version.rb +1 -1
  30. data/lib/stimulus_plumbers.rb +18 -1
  31. metadata +21 -10
  32. data/lib/stimulus_plumbers/components/date_picker/renderer.rb +0 -82
  33. data/lib/stimulus_plumbers/helpers/date_picker_helper.rb +0 -17
  34. /data/lib/stimulus_plumbers/themes/{action_list.rb → base/action_list.rb} +0 -0
  35. /data/lib/stimulus_plumbers/themes/{avatar.rb → base/avatar.rb} +0 -0
  36. /data/lib/stimulus_plumbers/themes/{button.rb → base/button.rb} +0 -0
  37. /data/lib/stimulus_plumbers/themes/{calendar.rb → base/calendar.rb} +0 -0
  38. /data/lib/stimulus_plumbers/themes/{card.rb → base/card.rb} +0 -0
  39. /data/lib/stimulus_plumbers/themes/{layout.rb → base/layout.rb} +0 -0
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.2.7
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Chang
@@ -37,6 +37,7 @@ executables: []
37
37
  extensions: []
38
38
  extra_rdoc_files: []
39
39
  files:
40
+ - CHANGELOG.md
40
41
  - README.md
41
42
  - app/assets/javascripts/stimulus-plumbers/.keep
42
43
  - app/assets/javascripts/stimulus-plumbers/stimulus-plumbers-controllers.es.js
@@ -51,22 +52,32 @@ files:
51
52
  - lib/stimulus_plumbers/components/calendar/month/turbo/renderer.rb
52
53
  - lib/stimulus_plumbers/components/calendar/renderer.rb
53
54
  - lib/stimulus_plumbers/components/card/renderer.rb
55
+ - lib/stimulus_plumbers/components/combobox/autocomplete.rb
56
+ - lib/stimulus_plumbers/components/combobox/date.rb
57
+ - lib/stimulus_plumbers/components/combobox/dropdown.rb
58
+ - lib/stimulus_plumbers/components/combobox/option.rb
59
+ - lib/stimulus_plumbers/components/combobox/option_group.rb
60
+ - lib/stimulus_plumbers/components/combobox/renderer.rb
61
+ - lib/stimulus_plumbers/components/combobox/time.rb
54
62
  - lib/stimulus_plumbers/components/date_picker/navigation.rb
55
63
  - lib/stimulus_plumbers/components/date_picker/navigator.rb
56
- - lib/stimulus_plumbers/components/date_picker/renderer.rb
57
64
  - lib/stimulus_plumbers/components/icon/renderer.rb
58
65
  - lib/stimulus_plumbers/components/plumber/base.rb
59
66
  - lib/stimulus_plumbers/components/plumber/dispatcher.rb
60
67
  - lib/stimulus_plumbers/components/plumber/html_options.rb
61
68
  - lib/stimulus_plumbers/components/plumber/renderer.rb
62
69
  - lib/stimulus_plumbers/components/popover/renderer.rb
70
+ - lib/stimulus_plumbers/components/time_picker/renderer.rb
63
71
  - lib/stimulus_plumbers/configuration.rb
64
72
  - lib/stimulus_plumbers/engine.rb
65
73
  - lib/stimulus_plumbers/form/builder.rb
66
74
  - lib/stimulus_plumbers/form/field_component.rb
67
75
  - lib/stimulus_plumbers/form/fields/choice.rb
76
+ - lib/stimulus_plumbers/form/fields/combobox.rb
68
77
  - lib/stimulus_plumbers/form/fields/file.rb
78
+ - lib/stimulus_plumbers/form/fields/password.rb
69
79
  - lib/stimulus_plumbers/form/fields/renderer.rb
80
+ - lib/stimulus_plumbers/form/fields/search.rb
70
81
  - lib/stimulus_plumbers/form/fields/select.rb
71
82
  - lib/stimulus_plumbers/form/fields/text.rb
72
83
  - lib/stimulus_plumbers/form/fields/text_area.rb
@@ -77,18 +88,18 @@ files:
77
88
  - lib/stimulus_plumbers/helpers/calendar_helper.rb
78
89
  - lib/stimulus_plumbers/helpers/calendar_turbo_helper.rb
79
90
  - lib/stimulus_plumbers/helpers/card_helper.rb
80
- - lib/stimulus_plumbers/helpers/date_picker_helper.rb
91
+ - lib/stimulus_plumbers/helpers/combobox_helper.rb
81
92
  - lib/stimulus_plumbers/helpers/plumber_helper.rb
82
93
  - lib/stimulus_plumbers/helpers/popover_helper.rb
83
94
  - lib/stimulus_plumbers/logger.rb
84
- - lib/stimulus_plumbers/themes/action_list.rb
85
- - lib/stimulus_plumbers/themes/avatar.rb
86
95
  - lib/stimulus_plumbers/themes/base.rb
87
- - lib/stimulus_plumbers/themes/button.rb
88
- - lib/stimulus_plumbers/themes/calendar.rb
89
- - lib/stimulus_plumbers/themes/card.rb
90
- - lib/stimulus_plumbers/themes/form.rb
91
- - lib/stimulus_plumbers/themes/layout.rb
96
+ - lib/stimulus_plumbers/themes/base/action_list.rb
97
+ - lib/stimulus_plumbers/themes/base/avatar.rb
98
+ - lib/stimulus_plumbers/themes/base/button.rb
99
+ - lib/stimulus_plumbers/themes/base/calendar.rb
100
+ - lib/stimulus_plumbers/themes/base/card.rb
101
+ - lib/stimulus_plumbers/themes/base/form.rb
102
+ - lib/stimulus_plumbers/themes/base/layout.rb
92
103
  - lib/stimulus_plumbers/themes/schema/ranges.rb
93
104
  - lib/stimulus_plumbers/themes/tailwind/action_list.rb
94
105
  - lib/stimulus_plumbers/themes/tailwind/avatar.rb
@@ -1,82 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module StimulusPlumbers
4
- module Components
5
- module DatePicker
6
- class Renderer < Plumber::Base
7
- STIMULUS_CONTROLLER = "datepicker"
8
- POPOVER_CONTROLLER = "popover"
9
- CALENDAR_CONTROLLER = Calendar::Renderer::OBSERVER_STIMULUS_CONTROLLER
10
- CALENDAR_OUTLET = "#{STIMULUS_CONTROLLER}_#{Calendar::Renderer::STIMULUS_CONTROLLER}_outlet".freeze
11
- STIMULUS_DATA = {
12
- controller: "#{STIMULUS_CONTROLLER} #{POPOVER_CONTROLLER}",
13
- action: "#{CALENDAR_CONTROLLER}:selected->#{STIMULUS_CONTROLLER}#selected " \
14
- "#{CALENDAR_CONTROLLER}:selected->#{POPOVER_CONTROLLER}#hide"
15
- }.freeze
16
-
17
- def render(calendar_id: nil, calendar_dialog_id: nil, **kwargs)
18
- data = calendar_id ? STIMULUS_DATA.merge(CALENDAR_OUTLET => "##{calendar_id}") : STIMULUS_DATA
19
- html_options = merge_html_options(
20
- { classes: theme.resolve(:datepicker).fetch(:classes, ""), data: data },
21
- kwargs
22
- )
23
-
24
- template.content_tag(:div, **html_options) do
25
- template.safe_join([display_input(calendar_dialog_id), hidden_input, popover(calendar_id, calendar_dialog_id)])
26
- end
27
- end
28
-
29
- private
30
-
31
- def display_input(calendar_dialog_id)
32
- template.tag.input(
33
- type: "text",
34
- role: "combobox",
35
- aria: { label: "Date", haspopup: "dialog", controls: calendar_dialog_id },
36
- data: {
37
- "#{STIMULUS_CONTROLLER}_target": "display",
38
- "#{POPOVER_CONTROLLER}_target": "activator",
39
- action: [
40
- "focus->#{POPOVER_CONTROLLER}#show",
41
- "click->#{POPOVER_CONTROLLER}#show"
42
- ].join(" ")
43
- }
44
- )
45
- end
46
-
47
- def hidden_input
48
- template.tag.input(
49
- type: "hidden",
50
- data: { "#{STIMULUS_CONTROLLER}_target": "input" }
51
- )
52
- end
53
-
54
- def popover(calendar_id, calendar_dialog_id)
55
- template.content_tag(
56
- :div,
57
- id: calendar_dialog_id,
58
- role: "dialog",
59
- aria: { label: "Date picker" },
60
- data: { "#{POPOVER_CONTROLLER}_target": "content" },
61
- hidden: ""
62
- ) do
63
- template.safe_join(
64
- [
65
- navigation(stimulus_controller: STIMULUS_CONTROLLER, step: "month"),
66
- calendar_month(id: calendar_id)
67
- ]
68
- )
69
- end
70
- end
71
-
72
- def navigation(**kwargs)
73
- Navigation.new(template).render(stimulus_controller: STIMULUS_CONTROLLER, step: "month", **kwargs)
74
- end
75
-
76
- def calendar_month(**kwargs)
77
- Calendar::Renderer.new(template).month(**kwargs)
78
- end
79
- end
80
- end
81
- end
82
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module StimulusPlumbers
4
- module Helpers
5
- module DatePickerHelper
6
- def sp_date_picker_month(record = nil, attribute = nil, **html_options)
7
- calendar_id = sp_dom_id(record, [attribute, "date"].filter(&:presence).join("_"))
8
- calendar_dialog_id = "#{calendar_id}_dialog"
9
- Components::DatePicker::Renderer.new(self).render(
10
- calendar_id: calendar_id,
11
- calendar_dialog_id: calendar_dialog_id,
12
- **html_options
13
- )
14
- end
15
- end
16
- end
17
- end