shadcn_phlexcomponents 0.1.5 → 0.1.9

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 (181) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +14 -0
  3. data/app/javascript/controllers/accordion_controller.js +7 -16
  4. data/app/javascript/controllers/alert_dialog_controller.js +5 -141
  5. data/app/javascript/controllers/combobox_controller.js +20 -0
  6. data/app/javascript/controllers/date_picker_controller.js +199 -64
  7. data/app/javascript/controllers/date_range_picker_controller.js +289 -176
  8. data/app/javascript/controllers/dialog_controller.js +19 -64
  9. data/app/javascript/controllers/dropdown_menu_controller.js +15 -37
  10. data/app/javascript/controllers/form_field_controller.js +24 -0
  11. data/app/javascript/controllers/hover_card_controller.js +1 -22
  12. data/app/javascript/controllers/popover_controller.js +20 -31
  13. data/app/javascript/controllers/select_controller.js +32 -52
  14. data/app/javascript/controllers/sidebar_trigger_controller.js +1 -1
  15. data/app/javascript/controllers/toast_controller.js +2 -2
  16. data/app/javascript/controllers/tooltip_controller.js +1 -2
  17. data/app/javascript/shadcn_phlexcomponents.js +53 -0
  18. data/app/javascript/utils.js +184 -0
  19. data/app/stylesheets/date_picker.css +212 -0
  20. data/lib/install/install_shadcn_phlexcomponents.rb +7 -7
  21. data/lib/{components → shadcn_phlexcomponents/components/accordion}/accordion.rb +1 -1
  22. data/lib/{components → shadcn_phlexcomponents/components/accordion}/accordion_content.rb +1 -1
  23. data/lib/{components → shadcn_phlexcomponents/components/accordion}/accordion_item.rb +1 -1
  24. data/lib/{components → shadcn_phlexcomponents/components/accordion}/accordion_trigger.rb +5 -4
  25. data/lib/{components → shadcn_phlexcomponents/components/alert_dialog}/alert_dialog.rb +1 -1
  26. data/lib/{components → shadcn_phlexcomponents/components/alert_dialog}/alert_dialog_action.rb +1 -1
  27. data/lib/{components → shadcn_phlexcomponents/components/alert_dialog}/alert_dialog_action_to.rb +1 -1
  28. data/lib/{components → shadcn_phlexcomponents/components/alert_dialog}/alert_dialog_cancel.rb +1 -1
  29. data/lib/{components → shadcn_phlexcomponents/components/alert_dialog}/alert_dialog_content.rb +2 -2
  30. data/lib/{components → shadcn_phlexcomponents/components/alert_dialog}/alert_dialog_trigger.rb +2 -2
  31. data/lib/{components → shadcn_phlexcomponents/components/avatar}/avatar.rb +1 -1
  32. data/lib/{components → shadcn_phlexcomponents/components/avatar}/avatar_fallback.rb +1 -1
  33. data/lib/{components → shadcn_phlexcomponents/components/avatar}/avatar_image.rb +1 -1
  34. data/lib/{components → shadcn_phlexcomponents/components/badge}/badge.rb +1 -1
  35. data/lib/{components → shadcn_phlexcomponents/components}/base.rb +10 -0
  36. data/lib/{components → shadcn_phlexcomponents/components/breadcrumb}/breadcrumb.rb +2 -0
  37. data/lib/{components → shadcn_phlexcomponents/components/button}/button.rb +5 -5
  38. data/lib/{components → shadcn_phlexcomponents/components/checkbox}/checkbox.rb +5 -5
  39. data/lib/{components → shadcn_phlexcomponents/components/checkbox_group}/checkbox_group.rb +27 -15
  40. data/lib/{components → shadcn_phlexcomponents/components/collapsible}/collapsible.rb +1 -1
  41. data/lib/{components → shadcn_phlexcomponents/components/collapsible}/collapsible_content.rb +1 -1
  42. data/lib/{components → shadcn_phlexcomponents/components/collapsible}/collapsible_trigger.rb +2 -2
  43. data/lib/shadcn_phlexcomponents/components/date_picker/date_picker.rb +87 -0
  44. data/lib/shadcn_phlexcomponents/components/date_picker/date_picker_content.rb +45 -0
  45. data/lib/shadcn_phlexcomponents/components/date_picker/date_picker_trigger.rb +64 -0
  46. data/lib/shadcn_phlexcomponents/components/date_range_picker/date_range_picker.rb +105 -0
  47. data/lib/shadcn_phlexcomponents/components/date_range_picker/date_range_picker_content.rb +9 -0
  48. data/lib/shadcn_phlexcomponents/components/date_range_picker/date_range_picker_trigger.rb +9 -0
  49. data/lib/{components → shadcn_phlexcomponents/components/dialog}/dialog.rb +8 -8
  50. data/lib/{components → shadcn_phlexcomponents/components/dialog}/dialog_close.rb +1 -1
  51. data/lib/{components → shadcn_phlexcomponents/components/dialog}/dialog_content.rb +3 -3
  52. data/lib/{components → shadcn_phlexcomponents/components/dialog}/dialog_trigger.rb +2 -2
  53. data/lib/{components → shadcn_phlexcomponents/components/dropdown_menu}/dropdown_menu.rb +1 -1
  54. data/lib/{components → shadcn_phlexcomponents/components/dropdown_menu}/dropdown_menu_content.rb +9 -9
  55. data/lib/{components → shadcn_phlexcomponents/components/dropdown_menu}/dropdown_menu_item.rb +8 -8
  56. data/lib/{components → shadcn_phlexcomponents/components/dropdown_menu}/dropdown_menu_trigger.rb +5 -5
  57. data/lib/shadcn_phlexcomponents/components/form/form.rb +139 -0
  58. data/lib/shadcn_phlexcomponents/components/form/form_checkbox.rb +83 -0
  59. data/lib/shadcn_phlexcomponents/components/form/form_checkbox_group.rb +116 -0
  60. data/lib/shadcn_phlexcomponents/components/form/form_date_picker.rb +47 -0
  61. data/lib/shadcn_phlexcomponents/components/form/form_date_range_picker.rb +96 -0
  62. data/lib/{components → shadcn_phlexcomponents/components/form}/form_error.rb +6 -2
  63. data/lib/shadcn_phlexcomponents/components/form/form_helpers.rb +108 -0
  64. data/lib/{components → shadcn_phlexcomponents/components/form}/form_hint.rb +6 -2
  65. data/lib/shadcn_phlexcomponents/components/form/form_radio_group.rb +107 -0
  66. data/lib/shadcn_phlexcomponents/components/form/form_select.rb +65 -0
  67. data/lib/shadcn_phlexcomponents/components/form/form_switch.rb +66 -0
  68. data/lib/shadcn_phlexcomponents/components/form/form_textarea.rb +60 -0
  69. data/lib/{components → shadcn_phlexcomponents/components/hover_card}/hover_card.rb +1 -1
  70. data/lib/{components → shadcn_phlexcomponents/components/hover_card}/hover_card_content.rb +1 -1
  71. data/lib/{components → shadcn_phlexcomponents/components/hover_card}/hover_card_trigger.rb +1 -1
  72. data/lib/{components → shadcn_phlexcomponents/components/input}/input.rb +1 -1
  73. data/lib/{components → shadcn_phlexcomponents/components/loading_button}/loading_button.rb +1 -1
  74. data/lib/{components → shadcn_phlexcomponents/components/popover}/popover.rb +1 -1
  75. data/lib/{components → shadcn_phlexcomponents/components/popover}/popover_content.rb +6 -6
  76. data/lib/{components → shadcn_phlexcomponents/components/popover}/popover_trigger.rb +2 -3
  77. data/lib/{components → shadcn_phlexcomponents/components/progress}/progress.rb +3 -3
  78. data/lib/{components → shadcn_phlexcomponents/components/radio_group}/radio_group.rb +33 -7
  79. data/lib/{components → shadcn_phlexcomponents/components/radio_group}/radio_group_item.rb +7 -7
  80. data/lib/{components → shadcn_phlexcomponents/components/select}/select.rb +22 -12
  81. data/lib/{components → shadcn_phlexcomponents/components/select}/select_content.rb +6 -6
  82. data/lib/{components → shadcn_phlexcomponents/components/select}/select_group.rb +1 -1
  83. data/lib/{components → shadcn_phlexcomponents/components/select}/select_item.rb +8 -8
  84. data/lib/{components → shadcn_phlexcomponents/components/select}/select_label.rb +1 -1
  85. data/lib/{components → shadcn_phlexcomponents/components/select}/select_trigger.rb +10 -10
  86. data/lib/{components → shadcn_phlexcomponents/components/sheet}/sheet.rb +1 -1
  87. data/lib/{components → shadcn_phlexcomponents/components/sheet}/sheet_close.rb +1 -1
  88. data/lib/{components → shadcn_phlexcomponents/components/sheet}/sheet_content.rb +3 -3
  89. data/lib/{components → shadcn_phlexcomponents/components/sheet}/sheet_trigger.rb +2 -2
  90. data/lib/{components → shadcn_phlexcomponents/components/sidebar}/sidebar.rb +3 -3
  91. data/lib/{components → shadcn_phlexcomponents/components/sidebar}/sidebar_trigger.rb +2 -2
  92. data/lib/{components → shadcn_phlexcomponents/components/switch}/switch.rb +4 -4
  93. data/lib/{components → shadcn_phlexcomponents/components/tabs}/tabs.rb +2 -2
  94. data/lib/{components → shadcn_phlexcomponents/components/tabs}/tabs_content.rb +1 -1
  95. data/lib/{components → shadcn_phlexcomponents/components/tabs}/tabs_trigger.rb +4 -4
  96. data/lib/{components → shadcn_phlexcomponents/components/textarea}/textarea.rb +3 -2
  97. data/lib/{components → shadcn_phlexcomponents/components/theme_switcher}/theme_switcher.rb +2 -2
  98. data/lib/{components → shadcn_phlexcomponents/components/toast}/toast.rb +7 -7
  99. data/lib/{components → shadcn_phlexcomponents/components/toast}/toast_container.rb +1 -1
  100. data/lib/{components → shadcn_phlexcomponents/components/tooltip}/tooltip.rb +3 -3
  101. data/lib/{components → shadcn_phlexcomponents/components/tooltip}/tooltip_content.rb +1 -1
  102. data/lib/{components → shadcn_phlexcomponents/components/tooltip}/tooltip_trigger.rb +1 -1
  103. data/lib/shadcn_phlexcomponents/version.rb +1 -1
  104. metadata +157 -144
  105. data/app/assets/tailwind/vanilla-calendar-pro.css +0 -466
  106. data/app/javascript/controllers/sheet_controller.js +0 -159
  107. data/lib/components/combobox.rb +0 -57
  108. data/lib/components/combobox_item.rb +0 -9
  109. data/lib/components/date_picker.rb +0 -94
  110. data/lib/components/date_range_picker.rb +0 -113
  111. data/lib/components/form.rb +0 -59
  112. /data/app/{assets/tailwind → stylesheets}/choices.css +0 -0
  113. /data/app/{assets/tailwind → stylesheets}/tailwindcss-animate.css +0 -0
  114. /data/lib/{components → shadcn_phlexcomponents/components/alert}/alert.rb +0 -0
  115. /data/lib/{components → shadcn_phlexcomponents/components/alert}/alert_description.rb +0 -0
  116. /data/lib/{components → shadcn_phlexcomponents/components/alert}/alert_title.rb +0 -0
  117. /data/lib/{components → shadcn_phlexcomponents/components/alert_dialog}/alert_dialog_description.rb +0 -0
  118. /data/lib/{components → shadcn_phlexcomponents/components/alert_dialog}/alert_dialog_footer.rb +0 -0
  119. /data/lib/{components → shadcn_phlexcomponents/components/alert_dialog}/alert_dialog_header.rb +0 -0
  120. /data/lib/{components → shadcn_phlexcomponents/components/alert_dialog}/alert_dialog_title.rb +0 -0
  121. /data/lib/{components → shadcn_phlexcomponents/components/aspect_ratio}/aspect_ratio.rb +0 -0
  122. /data/lib/{components → shadcn_phlexcomponents/components/breadcrumb}/breadcrumb_ellipsis.rb +0 -0
  123. /data/lib/{components → shadcn_phlexcomponents/components/breadcrumb}/breadcrumb_item.rb +0 -0
  124. /data/lib/{components → shadcn_phlexcomponents/components/breadcrumb}/breadcrumb_link.rb +0 -0
  125. /data/lib/{components → shadcn_phlexcomponents/components/breadcrumb}/breadcrumb_page.rb +0 -0
  126. /data/lib/{components → shadcn_phlexcomponents/components/breadcrumb}/breadcrumb_separator.rb +0 -0
  127. /data/lib/{components → shadcn_phlexcomponents/components/card}/card.rb +0 -0
  128. /data/lib/{components → shadcn_phlexcomponents/components/card}/card_content.rb +0 -0
  129. /data/lib/{components → shadcn_phlexcomponents/components/card}/card_description.rb +0 -0
  130. /data/lib/{components → shadcn_phlexcomponents/components/card}/card_footer.rb +0 -0
  131. /data/lib/{components → shadcn_phlexcomponents/components/card}/card_header.rb +0 -0
  132. /data/lib/{components → shadcn_phlexcomponents/components/card}/card_title.rb +0 -0
  133. /data/lib/{components → shadcn_phlexcomponents/components/dialog}/dialog_description.rb +0 -0
  134. /data/lib/{components → shadcn_phlexcomponents/components/dialog}/dialog_footer.rb +0 -0
  135. /data/lib/{components → shadcn_phlexcomponents/components/dialog}/dialog_header.rb +0 -0
  136. /data/lib/{components → shadcn_phlexcomponents/components/dialog}/dialog_title.rb +0 -0
  137. /data/lib/{components → shadcn_phlexcomponents/components/dropdown_menu}/dropdown_menu_item_to.rb +0 -0
  138. /data/lib/{components → shadcn_phlexcomponents/components/dropdown_menu}/dropdown_menu_label.rb +0 -0
  139. /data/lib/{components → shadcn_phlexcomponents/components/dropdown_menu}/dropdown_menu_separator.rb +0 -0
  140. /data/lib/{components → shadcn_phlexcomponents/components/form}/form_input.rb +0 -0
  141. /data/lib/{components → shadcn_phlexcomponents/components/label}/label.rb +0 -0
  142. /data/lib/{components → shadcn_phlexcomponents/components/link}/link.rb +0 -0
  143. /data/lib/{components → shadcn_phlexcomponents/components/pagination}/pagination.rb +0 -0
  144. /data/lib/{components → shadcn_phlexcomponents/components/pagination}/pagination_ellipsis.rb +0 -0
  145. /data/lib/{components → shadcn_phlexcomponents/components/pagination}/pagination_link.rb +0 -0
  146. /data/lib/{components → shadcn_phlexcomponents/components/pagination}/pagination_next.rb +0 -0
  147. /data/lib/{components → shadcn_phlexcomponents/components/pagination}/pagination_previous.rb +0 -0
  148. /data/lib/{components → shadcn_phlexcomponents/components/separator}/separator.rb +0 -0
  149. /data/lib/{components → shadcn_phlexcomponents/components/sheet}/sheet_description.rb +0 -0
  150. /data/lib/{components → shadcn_phlexcomponents/components/sheet}/sheet_footer.rb +0 -0
  151. /data/lib/{components → shadcn_phlexcomponents/components/sheet}/sheet_header.rb +0 -0
  152. /data/lib/{components → shadcn_phlexcomponents/components/sheet}/sheet_title.rb +0 -0
  153. /data/lib/{components → shadcn_phlexcomponents/components/sidebar}/sidebar_container.rb +0 -0
  154. /data/lib/{components → shadcn_phlexcomponents/components/sidebar}/sidebar_content.rb +0 -0
  155. /data/lib/{components → shadcn_phlexcomponents/components/sidebar}/sidebar_footer.rb +0 -0
  156. /data/lib/{components → shadcn_phlexcomponents/components/sidebar}/sidebar_group.rb +0 -0
  157. /data/lib/{components → shadcn_phlexcomponents/components/sidebar}/sidebar_group_content.rb +0 -0
  158. /data/lib/{components → shadcn_phlexcomponents/components/sidebar}/sidebar_group_label.rb +0 -0
  159. /data/lib/{components → shadcn_phlexcomponents/components/sidebar}/sidebar_header.rb +0 -0
  160. /data/lib/{components → shadcn_phlexcomponents/components/sidebar}/sidebar_inset.rb +0 -0
  161. /data/lib/{components → shadcn_phlexcomponents/components/sidebar}/sidebar_menu.rb +0 -0
  162. /data/lib/{components → shadcn_phlexcomponents/components/sidebar}/sidebar_menu_button.rb +0 -0
  163. /data/lib/{components → shadcn_phlexcomponents/components/sidebar}/sidebar_menu_item.rb +0 -0
  164. /data/lib/{components → shadcn_phlexcomponents/components/sidebar}/sidebar_menu_sub.rb +0 -0
  165. /data/lib/{components → shadcn_phlexcomponents/components/sidebar}/sidebar_menu_sub_button.rb +0 -0
  166. /data/lib/{components → shadcn_phlexcomponents/components/sidebar}/sidebar_menu_sub_item.rb +0 -0
  167. /data/lib/{components → shadcn_phlexcomponents/components/skeleton}/skeleton.rb +0 -0
  168. /data/lib/{components → shadcn_phlexcomponents/components/table}/table.rb +0 -0
  169. /data/lib/{components → shadcn_phlexcomponents/components/table}/table_body.rb +0 -0
  170. /data/lib/{components → shadcn_phlexcomponents/components/table}/table_caption.rb +0 -0
  171. /data/lib/{components → shadcn_phlexcomponents/components/table}/table_cell.rb +0 -0
  172. /data/lib/{components → shadcn_phlexcomponents/components/table}/table_footer.rb +0 -0
  173. /data/lib/{components → shadcn_phlexcomponents/components/table}/table_head.rb +0 -0
  174. /data/lib/{components → shadcn_phlexcomponents/components/table}/table_header.rb +0 -0
  175. /data/lib/{components → shadcn_phlexcomponents/components/table}/table_row.rb +0 -0
  176. /data/lib/{components → shadcn_phlexcomponents/components/tabs}/tabs_list.rb +0 -0
  177. /data/lib/{components → shadcn_phlexcomponents/components/toast}/toast_action.rb +0 -0
  178. /data/lib/{components → shadcn_phlexcomponents/components/toast}/toast_action_to.rb +0 -0
  179. /data/lib/{components → shadcn_phlexcomponents/components/toast}/toast_content.rb +0 -0
  180. /data/lib/{components → shadcn_phlexcomponents/components/toast}/toast_description.rb +0 -0
  181. /data/lib/{components → shadcn_phlexcomponents/components/toast}/toast_title.rb +0 -0
@@ -1,94 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class DatePicker < Base
5
- STYLES = "relative"
6
-
7
- INPUT_STYLES = <<~HEREDOC
8
- flex h-9 w-full rounded-md border border-input bg-transparent px-3 pr-10 py-1
9
- text-base shadow-sm transition-colors placeholder:text-muted-foreground
10
- focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring
11
- disabled:cursor-not-allowed disabled:opacity-50 md:text-sm
12
- HEREDOC
13
-
14
- CLEAR_BUTTON_STYLES = TAILWIND_MERGER.merge("#{Button.default_styles(
15
- variant: :ghost,
16
- size: :icon,
17
- )} text-muted-foreground h-6 w-6")
18
-
19
- def initialize(name: nil, id: nil, value: nil, format: "DD/MM/YYYY", disabled: false, settings: {}, **attributes)
20
- @name = name
21
- @id = id || @name
22
- @value = value&.utc&.iso8601
23
- @settings = settings
24
- @format = format
25
- @disabled = disabled
26
- super(**attributes)
27
- end
28
-
29
- def default_attributes
30
- {
31
- data: {
32
- value: @value,
33
- format: @format,
34
- controller: "shadcn-phlexcomponents--date-picker",
35
- settings: @settings.to_json,
36
- has_value: @value.present?.to_s,
37
- disabled: @disabled,
38
- action: <<~HEREDOC,
39
- mouseover->shadcn-phlexcomponents--date-picker#showClearButton
40
- mouseout->shadcn-phlexcomponents--date-picker#hideClearButton
41
- HEREDOC
42
- },
43
- }
44
- end
45
-
46
- def view_template
47
- div(**@attributes) do
48
- input(type: :text, id: @id, class: INPUT_STYLES, data: {
49
- "shadcn-phlexcomponents--date-picker-target": "dateInput",
50
- action: <<~HEREDOC,
51
- input->shadcn-phlexcomponents--date-picker#changeDate
52
- blur->shadcn-phlexcomponents--date-picker#inputBlur
53
- keydown->shadcn-phlexcomponents--date-picker#closeCalendar
54
- HEREDOC
55
- })
56
- input(
57
- type: :hidden,
58
- name: @name,
59
- value: @value,
60
- data: { "shadcn-phlexcomponents--date-picker-target": "hiddenInput" },
61
- )
62
-
63
- div(
64
- class: "absolute right-3 inset-y-0 flex items-center -z-1",
65
- data: {
66
- action: "",
67
- },
68
- ) do
69
- span(class: "pointer-events-none size-6 inline-flex items-center justify-center") do
70
- icon(
71
- "calendar",
72
- class: "size-4 text-muted-foreground",
73
- data: { "shadcn-phlexcomponents--date-picker-target": "calendarIcon" },
74
- )
75
- end
76
- end
77
-
78
- div(class: "absolute right-3 inset-y-0 flex items-center") do
79
- button(
80
- type: :button,
81
- class: "#{CLEAR_BUTTON_STYLES} !hidden",
82
- tabindex: -1,
83
- data: {
84
- action: "shadcn-phlexcomponents--date-picker#clear:stop",
85
- "shadcn-phlexcomponents--date-picker-target": "clearButton",
86
- },
87
- ) do
88
- icon("x")
89
- end
90
- end
91
- end
92
- end
93
- end
94
- end
@@ -1,113 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class DateRangePicker < Base
5
- STYLES = <<~HEREDOC
6
- flex w-full rounded-md border border-input bg-transparent px-3 pr-10 h-9
7
- text-base shadow-sm transition-colors placeholder:text-muted-foreground
8
- outline-none data-[focus=true]:ring-1 data-[focus=true]:ring-ring
9
- data-disabled:cursor-not-allowed data-disabled:opacity-50 md:text-sm relative
10
- items-center
11
- HEREDOC
12
-
13
- INPUT_STYLES = <<~HEREDOC
14
- h-9 py-1
15
- text-base md:text-sm outline-none w-[45%]
16
- HEREDOC
17
-
18
- CLEAR_BUTTON_STYLES = TAILWIND_MERGER.merge("#{Button.default_styles(
19
- variant: :ghost,
20
- size: :icon,
21
- )} text-muted-foreground h-6 w-6")
22
-
23
- def initialize(start_date: nil, end_date: nil, start_date_name: nil, end_date_name: nil, format: "DD/MM/YYYY",
24
- disabled: false, settings: {}, **attributes)
25
- @start_date = start_date&.utc&.iso8601
26
- @end_date = end_date&.utc&.iso8601
27
- @start_date_name = start_date_name
28
- @end_date_name = end_date_name
29
- @settings = settings
30
- @format = format
31
- @disabled = disabled
32
- super(**attributes)
33
- end
34
-
35
- def default_attributes
36
- {
37
- data: {
38
- start_date: @start_date,
39
- end_date: @end_date,
40
- format: @format,
41
- controller: "shadcn-phlexcomponents--date-range-picker",
42
- settings: @settings.to_json,
43
- has_value: (@start_date.present? && @end_date.present?).to_s,
44
- disabled: @disabled,
45
- action: <<~HEREDOC,
46
- mouseover->shadcn-phlexcomponents--date-range-picker#showClearButton
47
- mouseout->shadcn-phlexcomponents--date-range-picker#hideClearButton
48
- HEREDOC
49
- },
50
- }
51
- end
52
-
53
- def view_template
54
- div(**@attributes) do
55
- input(type: :text, class: INPUT_STYLES, data: {
56
- "shadcn-phlexcomponents--date-range-picker-target": "startDateInput",
57
- action: <<~HEREDOC,
58
- focus->shadcn-phlexcomponents--date-range-picker#openCalendar
59
- input->shadcn-phlexcomponents--date-range-picker#changeDate
60
- keydown->shadcn-phlexcomponents--date-range-picker#closeCalendar
61
- HEREDOC
62
- })
63
- input(
64
- type: :hidden,
65
- name: @start_date_name,
66
- value: @start_date,
67
- data: { "shadcn-phlexcomponents--date-range-picker-target": "startDateHiddenInput" },
68
- )
69
-
70
- icon("minus", class: "size-4 text-muted-foreground px-3 w-[10%]")
71
-
72
- input(type: :text, class: INPUT_STYLES, data: {
73
- "shadcn-phlexcomponents--date-range-picker-target": "endDateInput",
74
- action: <<~HEREDOC,
75
- focus->shadcn-phlexcomponents--date-range-picker#openCalendar
76
- input->shadcn-phlexcomponents--date-range-picker#changeDate
77
- keydown->shadcn-phlexcomponents--date-range-picker#closeCalendar
78
- HEREDOC
79
- })
80
- input(
81
- type: :hidden,
82
- name: @end_date_name,
83
- value: @end_date,
84
- data: { "shadcn-phlexcomponents--date-range-picker-target": "endDateHiddenInput" },
85
- )
86
-
87
- div(class: "absolute right-3 inset-y-0 flex items-center -z-1") do
88
- span(class: "pointer-events-none size-6 inline-flex items-center justify-center") do
89
- icon(
90
- "calendar",
91
- class: "size-4 text-muted-foreground",
92
- data: { "shadcn-phlexcomponents--date-range-picker-target": "calendarIcon" },
93
- )
94
- end
95
- end
96
-
97
- div(class: "absolute right-3 inset-y-0 flex items-center") do
98
- button(
99
- type: :button,
100
- class: "#{CLEAR_BUTTON_STYLES} !hidden",
101
- tabindex: -1,
102
- data: {
103
- action: "shadcn-phlexcomponents--date-range-picker#clear:stop",
104
- "shadcn-phlexcomponents--date-range-picker-target": "clearButton",
105
- },
106
- ) do
107
- icon("x")
108
- end
109
- end
110
- end
111
- end
112
- end
113
- end
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class Form < Base
5
- include Phlex::Rails::Helpers::FormWith
6
-
7
- def initialize(model: false, scope: nil, url: nil, format: nil, **options)
8
- @model = model
9
- @scope = scope
10
- @url = url
11
- @format = format
12
- @options = options
13
- @object_name = model ? model.to_model.model_name.param_key : nil
14
- end
15
-
16
- def field(method = nil, **attributes, &)
17
- FormField(method, model: @model, object_name: @object_name, **attributes, &)
18
- end
19
-
20
- def submit(variant: :primary, **attributes, &)
21
- Button(variant: variant, type: :submit, **attributes) do
22
- if block_given?
23
- yield
24
- else
25
- submit_default_value
26
- end
27
- end
28
- end
29
-
30
- def view_template(&)
31
- form_with(model: @model, scope: @scope, url: @url, format: @format, **@options) do
32
- yield
33
- end
34
- end
35
-
36
- def submit_default_value
37
- object = @model ? @model.to_model : nil
38
- key = object ? (object.persisted? ? :update : :create) : :submit
39
-
40
- model = if object.respond_to?(:model_name)
41
- object.model_name.human
42
- else
43
- @object_name.to_s.humanize
44
- end
45
-
46
- defaults = []
47
- # Object is a model and it is not overwritten by as and scope option.
48
- if object.respond_to?(:model_name) && @object_name.to_s == model.downcase
49
- defaults << :"helpers.submit.#{object.model_name.i18n_key}.#{key}"
50
- else
51
- defaults << :"helpers.submit.#{@object_name}.#{key}"
52
- end
53
- defaults << :"helpers.submit.#{key}"
54
- defaults << "#{key.to_s.humanize} #{model}"
55
-
56
- I18n.t(defaults.shift, model: model, default: defaults)
57
- end
58
- end
59
- end
File without changes