hakumi_components 0.1.18.pre → 0.1.19.pre

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 (467) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +32 -2
  3. data/README.md +208 -381
  4. data/app/assets/javascripts/hakumi_components.js +40 -34
  5. data/app/assets/stylesheets/hakumi_components.css +1 -1
  6. data/app/components/hakumi_components/admin_panel/component.rb +19 -9
  7. data/app/components/hakumi_components/affix/component.rb +54 -30
  8. data/app/components/hakumi_components/alert/component.html.erb +2 -2
  9. data/app/components/hakumi_components/alert/component.rb +68 -18
  10. data/app/components/hakumi_components/anchor/component.rb +35 -27
  11. data/app/components/hakumi_components/anchor/link/component.html.erb +1 -1
  12. data/app/components/hakumi_components/anchor/link/component.rb +28 -9
  13. data/app/components/hakumi_components/autocomplete/component.html.erb +86 -66
  14. data/app/components/hakumi_components/autocomplete/component.rb +115 -89
  15. data/app/components/hakumi_components/avatar/component.rb +45 -12
  16. data/app/components/hakumi_components/badge/component.rb +99 -45
  17. data/app/components/hakumi_components/base_component.rb +290 -91
  18. data/app/components/hakumi_components/breadcrumb/component.rb +16 -5
  19. data/app/components/hakumi_components/breadcrumb/item/component.html.erb +5 -5
  20. data/app/components/hakumi_components/breadcrumb/item/component.rb +56 -8
  21. data/app/components/hakumi_components/breadcrumb/item/menu_entry.rb +71 -0
  22. data/app/components/hakumi_components/button/component.rb +62 -20
  23. data/app/components/hakumi_components/calendar/component.html.erb +19 -19
  24. data/app/components/hakumi_components/calendar/component.rb +225 -202
  25. data/app/components/hakumi_components/calendar/day_cell.rb +62 -0
  26. data/app/components/hakumi_components/calendar/display_model.rb +237 -0
  27. data/app/components/hakumi_components/calendar/event_entry.rb +54 -0
  28. data/app/components/hakumi_components/calendar/locale_pack.rb +28 -0
  29. data/app/components/hakumi_components/calendar/panel_entry.rb +48 -0
  30. data/app/components/hakumi_components/calendar/week_row.rb +28 -0
  31. data/app/components/hakumi_components/card/component.html.erb +2 -2
  32. data/app/components/hakumi_components/card/component.rb +76 -49
  33. data/app/components/hakumi_components/card/grid/component.html.erb +1 -1
  34. data/app/components/hakumi_components/card/grid/component.rb +23 -17
  35. data/app/components/hakumi_components/card/meta/component.html.erb +8 -8
  36. data/app/components/hakumi_components/card/meta/component.rb +42 -24
  37. data/app/components/hakumi_components/carousel/autoplay_config.rb +27 -0
  38. data/app/components/hakumi_components/carousel/component.rb +85 -67
  39. data/app/components/hakumi_components/carousel/dots_config.rb +36 -0
  40. data/app/components/hakumi_components/cascader/component.html.erb +54 -36
  41. data/app/components/hakumi_components/cascader/component.rb +111 -62
  42. data/app/components/hakumi_components/checkbox/component.html.erb +5 -5
  43. data/app/components/hakumi_components/checkbox/component.rb +40 -6
  44. data/app/components/hakumi_components/checkbox/group/component.html.erb +4 -4
  45. data/app/components/hakumi_components/checkbox/group/component.rb +40 -13
  46. data/app/components/hakumi_components/checkbox/group/option.rb +34 -0
  47. data/app/components/hakumi_components/collapse/component.rb +64 -48
  48. data/app/components/hakumi_components/collapse/panel/component.rb +64 -21
  49. data/app/components/hakumi_components/color_picker/component.html.erb +21 -22
  50. data/app/components/hakumi_components/color_picker/component.rb +159 -49
  51. data/app/components/hakumi_components/color_picker/preset_group.rb +27 -0
  52. data/app/components/hakumi_components/concerns/form_field.rb +169 -68
  53. data/app/components/hakumi_components/concerns/form_field_contract.rb +57 -0
  54. data/app/components/hakumi_components/concerns/form_field_interface.rb +16 -0
  55. data/app/components/hakumi_components/concerns/input_control.rb +111 -0
  56. data/app/components/hakumi_components/concerns/input_control_contract.rb +47 -0
  57. data/app/components/hakumi_components/concerns/input_control_interface.rb +34 -0
  58. data/app/components/hakumi_components/concerns/selection_control.rb +122 -0
  59. data/app/components/hakumi_components/concerns/selection_control_contract.rb +47 -0
  60. data/app/components/hakumi_components/concerns/selection_control_interface.rb +34 -0
  61. data/app/components/hakumi_components/container/component.rb +29 -14
  62. data/app/components/hakumi_components/date_picker/component.html.erb +1 -3
  63. data/app/components/hakumi_components/date_picker/component.rb +130 -16
  64. data/app/components/hakumi_components/date_picker/range_picker.rb +159 -28
  65. data/app/components/hakumi_components/date_picker/shared_rendering.rb +151 -61
  66. data/app/components/hakumi_components/descriptions/component.html.erb +6 -6
  67. data/app/components/hakumi_components/descriptions/component.rb +98 -61
  68. data/app/components/hakumi_components/descriptions/item/component.rb +32 -8
  69. data/app/components/hakumi_components/divider/component.rb +36 -16
  70. data/app/components/hakumi_components/drawer/component.html.erb +2 -2
  71. data/app/components/hakumi_components/drawer/component.rb +112 -29
  72. data/app/components/hakumi_components/dropdown/component.rb +32 -35
  73. data/app/components/hakumi_components/dropdown/divider/component.rb +4 -0
  74. data/app/components/hakumi_components/dropdown/item/component.rb +42 -16
  75. data/app/components/hakumi_components/empty/component.rb +66 -31
  76. data/app/components/hakumi_components/flex/component.rb +39 -21
  77. data/app/components/hakumi_components/float_button/back_top/component.rb +35 -28
  78. data/app/components/hakumi_components/float_button/component.rb +161 -75
  79. data/app/components/hakumi_components/float_button/group/component.rb +85 -98
  80. data/app/components/hakumi_components/float_button/group_cluster/component.rb +46 -54
  81. data/app/components/hakumi_components/float_button/group_spec.rb +259 -0
  82. data/app/components/hakumi_components/float_button/item_spec.rb +115 -0
  83. data/app/components/hakumi_components/float_button/position_config.rb +68 -0
  84. data/app/components/hakumi_components/form/item/component.rb +34 -27
  85. data/app/components/hakumi_components/grid/col/component.rb +88 -17
  86. data/app/components/hakumi_components/grid/row/component.rb +35 -17
  87. data/app/components/hakumi_components/icon/component.rb +49 -49
  88. data/app/components/hakumi_components/image/component.html.erb +7 -7
  89. data/app/components/hakumi_components/image/component.rb +103 -40
  90. data/app/components/hakumi_components/image/preview_group/component.html.erb +1 -1
  91. data/app/components/hakumi_components/image/preview_group/component.rb +41 -36
  92. data/app/components/hakumi_components/image/preview_group/item.rb +48 -0
  93. data/app/components/hakumi_components/input/component.html.erb +1 -1
  94. data/app/components/hakumi_components/input/component.rb +142 -66
  95. data/app/components/hakumi_components/input/password/component.rb +30 -41
  96. data/app/components/hakumi_components/input/text_area/component.html.erb +2 -2
  97. data/app/components/hakumi_components/input/text_area/component.rb +89 -42
  98. data/app/components/hakumi_components/input_number/component.html.erb +5 -5
  99. data/app/components/hakumi_components/input_number/component.rb +137 -55
  100. data/app/components/hakumi_components/layout/component.html.erb +1 -1
  101. data/app/components/hakumi_components/layout/component.rb +23 -16
  102. data/app/components/hakumi_components/layout/content/component.html.erb +1 -1
  103. data/app/components/hakumi_components/layout/content/component.rb +24 -14
  104. data/app/components/hakumi_components/layout/footer/component.html.erb +1 -1
  105. data/app/components/hakumi_components/layout/footer/component.rb +24 -14
  106. data/app/components/hakumi_components/layout/header/component.html.erb +1 -1
  107. data/app/components/hakumi_components/layout/header/component.rb +24 -14
  108. data/app/components/hakumi_components/layout/sider/component.html.erb +1 -1
  109. data/app/components/hakumi_components/layout/sider/component.rb +83 -49
  110. data/app/components/hakumi_components/mentions/coercion.rb +46 -0
  111. data/app/components/hakumi_components/mentions/component.html.erb +6 -6
  112. data/app/components/hakumi_components/mentions/component.rb +131 -67
  113. data/app/components/hakumi_components/mentions/option.rb +30 -0
  114. data/app/components/hakumi_components/menu/component.rb +50 -59
  115. data/app/components/hakumi_components/menu/divider/component.rb +4 -0
  116. data/app/components/hakumi_components/menu/group/component.rb +16 -15
  117. data/app/components/hakumi_components/menu/item/component.rb +42 -19
  118. data/app/components/hakumi_components/menu/sub_menu/component.rb +49 -37
  119. data/app/components/hakumi_components/message/component.rb +62 -27
  120. data/app/components/hakumi_components/modal/component.html.erb +6 -6
  121. data/app/components/hakumi_components/modal/component.rb +93 -40
  122. data/app/components/hakumi_components/modal/confirm/component.html.erb +2 -2
  123. data/app/components/hakumi_components/modal/confirm/component.rb +49 -8
  124. data/app/components/hakumi_components/modal/error/component.rb +8 -39
  125. data/app/components/hakumi_components/modal/info/component.rb +6 -40
  126. data/app/components/hakumi_components/modal/status_component.rb +150 -0
  127. data/app/components/hakumi_components/modal/success/component.rb +6 -40
  128. data/app/components/hakumi_components/modal/warning/component.rb +14 -44
  129. data/app/components/hakumi_components/notification/component.rb +72 -38
  130. data/app/components/hakumi_components/pagination/component.html.erb +7 -11
  131. data/app/components/hakumi_components/pagination/component.rb +105 -72
  132. data/app/components/hakumi_components/pagination/page_item.rb +49 -0
  133. data/app/components/hakumi_components/popconfirm/component.rb +67 -19
  134. data/app/components/hakumi_components/popover/component.html.erb +2 -2
  135. data/app/components/hakumi_components/popover/component.rb +102 -38
  136. data/app/components/hakumi_components/progress/attribute_renderer.rb +354 -0
  137. data/app/components/hakumi_components/progress/circle_geometry.rb +76 -0
  138. data/app/components/hakumi_components/progress/component.html.erb +18 -17
  139. data/app/components/hakumi_components/progress/component.rb +230 -402
  140. data/app/components/hakumi_components/progress/controller_locals_parser.rb +130 -0
  141. data/app/components/hakumi_components/progress/info_tooltip_policy.rb +39 -0
  142. data/app/components/hakumi_components/progress/info_value.rb +75 -0
  143. data/app/components/hakumi_components/progress/status_state.rb +31 -0
  144. data/app/components/hakumi_components/progress/steps_renderer.rb +149 -0
  145. data/app/components/hakumi_components/progress/stroke_gradient_value.rb +90 -0
  146. data/app/components/hakumi_components/qr_code/component.rb +138 -72
  147. data/app/components/hakumi_components/radio/component.html.erb +3 -3
  148. data/app/components/hakumi_components/radio/component.rb +42 -9
  149. data/app/components/hakumi_components/radio/group/component.html.erb +9 -9
  150. data/app/components/hakumi_components/radio/group/component.rb +76 -27
  151. data/app/components/hakumi_components/radio/group/option.rb +43 -0
  152. data/app/components/hakumi_components/rate/component.html.erb +1 -1
  153. data/app/components/hakumi_components/rate/component.rb +55 -9
  154. data/app/components/hakumi_components/result/component.rb +87 -37
  155. data/app/components/hakumi_components/segmented/component.html.erb +1 -1
  156. data/app/components/hakumi_components/segmented/component.rb +81 -118
  157. data/app/components/hakumi_components/segmented/option.rb +191 -0
  158. data/app/components/hakumi_components/select/component.html.erb +19 -19
  159. data/app/components/hakumi_components/select/component.rb +88 -37
  160. data/app/components/hakumi_components/selection_control/coercion.rb +161 -0
  161. data/app/components/hakumi_components/selection_control/entry.rb +22 -0
  162. data/app/components/hakumi_components/selection_control/option.rb +42 -0
  163. data/app/components/hakumi_components/selection_control/option_group.rb +34 -0
  164. data/app/components/hakumi_components/selection_control/tree_node.rb +123 -0
  165. data/app/components/hakumi_components/skeleton/avatar/component.rb +36 -14
  166. data/app/components/hakumi_components/skeleton/avatar_config.rb +79 -0
  167. data/app/components/hakumi_components/skeleton/button/component.rb +32 -14
  168. data/app/components/hakumi_components/skeleton/component.rb +79 -93
  169. data/app/components/hakumi_components/skeleton/image/component.rb +46 -22
  170. data/app/components/hakumi_components/skeleton/input/component.rb +25 -10
  171. data/app/components/hakumi_components/skeleton/node/component.rb +23 -7
  172. data/app/components/hakumi_components/skeleton/paragraph_config.rb +92 -0
  173. data/app/components/hakumi_components/skeleton/title_config.rb +31 -0
  174. data/app/components/hakumi_components/slider/component.html.erb +11 -11
  175. data/app/components/hakumi_components/slider/component.rb +172 -53
  176. data/app/components/hakumi_components/slider/mark.rb +27 -0
  177. data/app/components/hakumi_components/space/compact/component.html.erb +1 -3
  178. data/app/components/hakumi_components/space/compact/component.rb +35 -19
  179. data/app/components/hakumi_components/space/component.html.erb +1 -1
  180. data/app/components/hakumi_components/space/component.rb +75 -39
  181. data/app/components/hakumi_components/spin/component.rb +92 -31
  182. data/app/components/hakumi_components/splitter/component.html.erb +9 -3
  183. data/app/components/hakumi_components/splitter/component.rb +55 -22
  184. data/app/components/hakumi_components/splitter/panel/component.html.erb +1 -3
  185. data/app/components/hakumi_components/splitter/panel/component.rb +64 -39
  186. data/app/components/hakumi_components/statistic/component.rb +143 -59
  187. data/app/components/hakumi_components/steps/component.rb +87 -55
  188. data/app/components/hakumi_components/steps/item/component.rb +59 -20
  189. data/app/components/hakumi_components/switch/component.html.erb +2 -3
  190. data/app/components/hakumi_components/switch/component.rb +62 -36
  191. data/app/components/hakumi_components/table/column/component.rb +80 -23
  192. data/app/components/hakumi_components/table/column_definition.rb +181 -0
  193. data/app/components/hakumi_components/table/column_group/component.rb +32 -21
  194. data/app/components/hakumi_components/table/component.html.erb +22 -31
  195. data/app/components/hakumi_components/table/component.rb +248 -509
  196. data/app/components/hakumi_components/table/concerns/attribute_helpers.rb +22 -0
  197. data/app/components/hakumi_components/table/concerns/cell_rendering.rb +277 -0
  198. data/app/components/hakumi_components/table/concerns/columns.rb +293 -91
  199. data/app/components/hakumi_components/table/concerns/editable.rb +36 -89
  200. data/app/components/hakumi_components/table/concerns/ellipsis.rb +31 -30
  201. data/app/components/hakumi_components/table/concerns/fixed_columns.rb +26 -19
  202. data/app/components/hakumi_components/table/concerns/surface_rendering.rb +365 -0
  203. data/app/components/hakumi_components/table/configs.rb +518 -0
  204. data/app/components/hakumi_components/table/definition_types.rb +40 -0
  205. data/app/components/hakumi_components/table/display_rows.rb +56 -0
  206. data/app/components/hakumi_components/table/ellipsis_config.rb +143 -0
  207. data/app/components/hakumi_components/table/fixed_offset.rb +36 -0
  208. data/app/components/hakumi_components/table/header_cell.rb +23 -0
  209. data/app/components/hakumi_components/table/row_record.rb +60 -0
  210. data/app/components/hakumi_components/table/row_render_state.rb +85 -0
  211. data/app/components/hakumi_components/tabs/component.html.erb +8 -8
  212. data/app/components/hakumi_components/tabs/component.rb +114 -64
  213. data/app/components/hakumi_components/tabs/indicator_config.rb +34 -0
  214. data/app/components/hakumi_components/tabs/item/component.rb +73 -13
  215. data/app/components/hakumi_components/tag/component.rb +142 -47
  216. data/app/components/hakumi_components/tag/group/component.rb +18 -6
  217. data/app/components/hakumi_components/time_picker/component.html.erb +8 -8
  218. data/app/components/hakumi_components/time_picker/component.rb +71 -17
  219. data/app/components/hakumi_components/timeline/component.html.erb +3 -2
  220. data/app/components/hakumi_components/timeline/component.rb +188 -55
  221. data/app/components/hakumi_components/timeline/item/component.html.erb +2 -2
  222. data/app/components/hakumi_components/timeline/item/component.rb +121 -60
  223. data/app/components/hakumi_components/tooltip/component.html.erb +1 -1
  224. data/app/components/hakumi_components/tooltip/component.rb +89 -64
  225. data/app/components/hakumi_components/tour/component.rb +74 -49
  226. data/app/components/hakumi_components/tour/step.rb +86 -0
  227. data/app/components/hakumi_components/transfer/coercion.rb +66 -0
  228. data/app/components/hakumi_components/transfer/component.html.erb +171 -140
  229. data/app/components/hakumi_components/transfer/component.rb +232 -82
  230. data/app/components/hakumi_components/transfer/item.rb +54 -0
  231. data/app/components/hakumi_components/transfer/operations.rb +31 -0
  232. data/app/components/hakumi_components/tree/component.rb +219 -400
  233. data/app/components/hakumi_components/tree/concerns/node_rendering.rb +365 -0
  234. data/app/components/hakumi_components/tree/node.rb +276 -0
  235. data/app/components/hakumi_components/tree_select/component.html.erb +23 -9
  236. data/app/components/hakumi_components/tree_select/component.rb +116 -107
  237. data/app/components/hakumi_components/typography/base_component.rb +69 -36
  238. data/app/components/hakumi_components/typography/link/component.rb +63 -6
  239. data/app/components/hakumi_components/typography/paragraph/component.rb +6 -0
  240. data/app/components/hakumi_components/typography/text/component.rb +4 -0
  241. data/app/components/hakumi_components/typography/title/component.rb +61 -6
  242. data/app/components/hakumi_components/upload/component.html.erb +106 -88
  243. data/app/components/hakumi_components/upload/component.rb +222 -48
  244. data/app/components/hakumi_components/upload/file_entry.rb +53 -0
  245. data/app/controllers/hakumi_components/components_controller.rb +2 -1
  246. data/app/form_builders/hakumi_components/form_builder/contracts.rb +55 -0
  247. data/app/form_builders/hakumi_components/form_builder/field_context.rb +43 -0
  248. data/app/form_builders/hakumi_components/form_builder/model_binding.rb +163 -0
  249. data/app/form_builders/hakumi_components/form_builder.rb +238 -317
  250. data/app/helpers/hakumi_components/form_helper.rb +27 -23
  251. data/app/javascript/hakumi_components/controllers/hakumi/admin_panel_controller.js +5 -7
  252. data/app/javascript/hakumi_components/controllers/hakumi/back_top_controller.js +1 -1
  253. data/app/javascript/hakumi_components/controllers/hakumi/button_controller.js +108 -2
  254. data/app/javascript/hakumi_components/controllers/hakumi/calendar_controller.js +183 -95
  255. data/app/javascript/hakumi_components/controllers/hakumi/color_picker_controller.js +23 -285
  256. data/app/javascript/hakumi_components/controllers/hakumi/date_picker_controller.js +274 -262
  257. data/app/javascript/hakumi_components/controllers/hakumi/float_button_group_controller.js +2 -2
  258. data/app/javascript/hakumi_components/controllers/hakumi/message_controller.js +4 -2
  259. data/app/javascript/hakumi_components/controllers/hakumi/modal_controller.js +119 -125
  260. data/app/javascript/hakumi_components/controllers/hakumi/table/editable.js +291 -0
  261. data/app/javascript/hakumi_components/controllers/hakumi/table_controller.js +166 -366
  262. data/app/javascript/hakumi_components/controllers/hakumi/tabs_controller.js +8 -2
  263. data/app/javascript/hakumi_components/controllers/hakumi/tag_controller.js +27 -25
  264. data/app/javascript/hakumi_components/controllers/hakumi/tag_group_controller.js +19 -18
  265. data/app/javascript/hakumi_components/controllers/hakumi/theme_controller.js +116 -117
  266. data/app/javascript/hakumi_components/controllers/hakumi/transfer_controller.js +17 -1
  267. data/app/javascript/hakumi_components/controllers/hakumi/tree_controller.js +363 -78
  268. data/app/javascript/hakumi_components/controllers/hakumi/typography_controller.js +3 -3
  269. data/app/javascript/hakumi_components/controllers/hakumi/upload_controller.js +320 -204
  270. data/app/javascript/hakumi_components/core/render_component.js +37 -11
  271. data/app/javascript/hakumi_components/utils/color_helper.js +262 -0
  272. data/app/javascript/stylesheets/_base.scss +9 -0
  273. data/app/javascript/stylesheets/_hakumi_components.scss +1 -0
  274. data/app/javascript/stylesheets/components/_breadcrumb.scss +2 -2
  275. data/app/javascript/stylesheets/components/_calendar.scss +13 -13
  276. data/app/javascript/stylesheets/components/_cascader.scss +5 -5
  277. data/app/javascript/stylesheets/components/_checkbox.scss +9 -11
  278. data/app/javascript/stylesheets/components/_color_picker.scss +11 -11
  279. data/app/javascript/stylesheets/components/_date_picker.scss +4 -4
  280. data/app/javascript/stylesheets/components/_descriptions.scss +2 -2
  281. data/app/javascript/stylesheets/components/_drawer.scss +3 -3
  282. data/app/javascript/stylesheets/components/_dropdown.scss +2 -2
  283. data/app/javascript/stylesheets/components/_flex.scss +1 -1
  284. data/app/javascript/stylesheets/components/_float_button.scss +5 -5
  285. data/app/javascript/stylesheets/components/_form_item.scss +92 -0
  286. data/app/javascript/stylesheets/components/_image.scss +15 -15
  287. data/app/javascript/stylesheets/components/_input.scss +23 -113
  288. data/app/javascript/stylesheets/components/_layout.scss +27 -26
  289. data/app/javascript/stylesheets/components/_menu.scss +15 -15
  290. data/app/javascript/stylesheets/components/_modal.scss +13 -13
  291. data/app/javascript/stylesheets/components/_notification.scss +3 -3
  292. data/app/javascript/stylesheets/components/_popover.scss +1 -1
  293. data/app/javascript/stylesheets/components/_segmented.scss +3 -3
  294. data/app/javascript/stylesheets/components/_select.scss +6 -6
  295. data/app/javascript/stylesheets/components/_slider.scss +1 -1
  296. data/app/javascript/stylesheets/components/_spin.scss +2 -2
  297. data/app/javascript/stylesheets/components/_steps.scss +10 -10
  298. data/app/javascript/stylesheets/components/_switch.scss +11 -10
  299. data/app/javascript/stylesheets/components/_table.scss +6 -6
  300. data/app/javascript/stylesheets/components/_tag.scss +2 -2
  301. data/app/javascript/stylesheets/components/_tooltip.scss +4 -4
  302. data/app/javascript/stylesheets/components/_tree_select.scss +3 -3
  303. data/app/javascript/stylesheets/components/_typography.scss +3 -3
  304. data/app/javascript/stylesheets/components/_upload.scss +4 -4
  305. data/app/services/hakumi_components/component_handler.rb +95 -24
  306. data/app/services/hakumi_components/icon/loader.rb +84 -67
  307. data/app/services/hakumi_components/illustrations/loader.rb +35 -27
  308. data/app/views/hakumi/_alert.html.erb +4 -1
  309. data/app/views/hakumi/_drawer.html.erb +1 -1
  310. data/app/views/hakumi/_statistic.html.erb +11 -11
  311. data/lib/generators/hakumi_components/install_generator.rb +14 -1
  312. data/lib/hakumi_components/documentation/models.rb +290 -0
  313. data/lib/hakumi_components/documentation/node.rb +73 -0
  314. data/lib/hakumi_components/documentation.rb +139 -62
  315. data/lib/hakumi_components/engine.rb +17 -11
  316. data/lib/hakumi_components/file_size_checker.rb +215 -0
  317. data/lib/hakumi_components/locales/en.yml +115 -0
  318. data/lib/hakumi_components/rails/attribute_introspection.rb +39 -107
  319. data/lib/hakumi_components/rails/model_reflection.rb +154 -0
  320. data/lib/hakumi_components/rails/validation_introspection.rb +25 -73
  321. data/lib/hakumi_components/rails/validation_mapper.rb +148 -201
  322. data/lib/hakumi_components/rails.rb +2 -0
  323. data/lib/hakumi_components/stylesheet_ownership_checker.rb +191 -0
  324. data/lib/hakumi_components/types/form_field.rb +24 -0
  325. data/lib/hakumi_components/types/html.rb +28 -0
  326. data/lib/hakumi_components/types/rendering.rb +10 -0
  327. data/lib/hakumi_components/types/stimulus.rb +19 -0
  328. data/lib/hakumi_components/types/validation.rb +22 -0
  329. data/lib/hakumi_components/types.rb +13 -0
  330. data/lib/hakumi_components/version.rb +2 -1
  331. data/lib/hakumi_components.rb +26 -6
  332. data/lib/tasks/coverage.rake +1 -0
  333. metadata +100 -136
  334. data/sig/action_view/tag_builder.rbs +0 -24
  335. data/sig/active_support/concern_patch.rbs +0 -7
  336. data/sig/generators/hakumi_components/install_generator.rbs +0 -11
  337. data/sig/hakumi_components/admin_panel/component.rbs +0 -28
  338. data/sig/hakumi_components/affix/component.rbs +0 -44
  339. data/sig/hakumi_components/alert/component.rbs +0 -64
  340. data/sig/hakumi_components/anchor/component.rbs +0 -45
  341. data/sig/hakumi_components/anchor/link/component.rbs +0 -31
  342. data/sig/hakumi_components/autocomplete/component.rbs +0 -68
  343. data/sig/hakumi_components/avatar/component.rbs +0 -44
  344. data/sig/hakumi_components/badge/component.rbs +0 -41
  345. data/sig/hakumi_components/base_component.rbs +0 -82
  346. data/sig/hakumi_components/breadcrumb/component.rbs +0 -21
  347. data/sig/hakumi_components/breadcrumb/item/component.rbs +0 -36
  348. data/sig/hakumi_components/button/component.rbs +0 -56
  349. data/sig/hakumi_components/calendar/component.rbs +0 -41
  350. data/sig/hakumi_components/card/component.rbs +0 -50
  351. data/sig/hakumi_components/card/grid/component.rbs +0 -21
  352. data/sig/hakumi_components/card/meta/component.rbs +0 -25
  353. data/sig/hakumi_components/carousel/component.rbs +0 -88
  354. data/sig/hakumi_components/cascader/component.rbs +0 -52
  355. data/sig/hakumi_components/checkbox/component.rbs +0 -46
  356. data/sig/hakumi_components/checkbox/group/component.rbs +0 -34
  357. data/sig/hakumi_components/collapse/component.rbs +0 -57
  358. data/sig/hakumi_components/collapse/panel/component.rbs +0 -47
  359. data/sig/hakumi_components/color_picker/component.rbs +0 -80
  360. data/sig/hakumi_components/concerns/form_field.rbs +0 -89
  361. data/sig/hakumi_components/container/component.rbs +0 -37
  362. data/sig/hakumi_components/date_picker/component.rbs +0 -72
  363. data/sig/hakumi_components/date_picker/range_picker.rbs +0 -68
  364. data/sig/hakumi_components/date_picker/shared_rendering.rbs +0 -41
  365. data/sig/hakumi_components/descriptions/component.rbs +0 -59
  366. data/sig/hakumi_components/descriptions/item/component.rbs +0 -31
  367. data/sig/hakumi_components/divider/component.rbs +0 -39
  368. data/sig/hakumi_components/drawer/component.rbs +0 -66
  369. data/sig/hakumi_components/dropdown/component.rbs +0 -45
  370. data/sig/hakumi_components/dropdown/divider/component.rbs +0 -11
  371. data/sig/hakumi_components/dropdown/item/component.rbs +0 -45
  372. data/sig/hakumi_components/empty/component.rbs +0 -40
  373. data/sig/hakumi_components/flex/component.rbs +0 -47
  374. data/sig/hakumi_components/float_button/back_top/component.rbs +0 -45
  375. data/sig/hakumi_components/float_button/component.rbs +0 -80
  376. data/sig/hakumi_components/float_button/group/component.rbs +0 -95
  377. data/sig/hakumi_components/float_button/group_cluster/component.rbs +0 -60
  378. data/sig/hakumi_components/form/item/component.rbs +0 -39
  379. data/sig/hakumi_components/form_builder.rbs +0 -37
  380. data/sig/hakumi_components/grid/col/component.rbs +0 -50
  381. data/sig/hakumi_components/grid/row/component.rbs +0 -46
  382. data/sig/hakumi_components/icon/component.rbs +0 -56
  383. data/sig/hakumi_components/image/component.rbs +0 -56
  384. data/sig/hakumi_components/image/preview_group/component.rbs +0 -28
  385. data/sig/hakumi_components/input/component.rbs +0 -71
  386. data/sig/hakumi_components/input/password/component.rbs +0 -27
  387. data/sig/hakumi_components/input/text_area/component.rbs +0 -42
  388. data/sig/hakumi_components/input_number/component.rbs +0 -85
  389. data/sig/hakumi_components/layout/component.rbs +0 -21
  390. data/sig/hakumi_components/layout/content/component.rbs +0 -19
  391. data/sig/hakumi_components/layout/footer/component.rbs +0 -19
  392. data/sig/hakumi_components/layout/header/component.rbs +0 -19
  393. data/sig/hakumi_components/layout/sider/component.rbs +0 -19
  394. data/sig/hakumi_components/mentions/component.rbs +0 -75
  395. data/sig/hakumi_components/menu/component.rbs +0 -52
  396. data/sig/hakumi_components/menu/divider/component.rbs +0 -11
  397. data/sig/hakumi_components/menu/group/component.rbs +0 -20
  398. data/sig/hakumi_components/menu/item/component.rbs +0 -42
  399. data/sig/hakumi_components/menu/sub_menu/component.rbs +0 -37
  400. data/sig/hakumi_components/message/component.rbs +0 -50
  401. data/sig/hakumi_components/modal/component.rbs +0 -76
  402. data/sig/hakumi_components/modal/confirm/component.rbs +0 -32
  403. data/sig/hakumi_components/modal/error/component.rbs +0 -27
  404. data/sig/hakumi_components/modal/info/component.rbs +0 -27
  405. data/sig/hakumi_components/modal/success/component.rbs +0 -27
  406. data/sig/hakumi_components/modal/warning/component.rbs +0 -27
  407. data/sig/hakumi_components/notification/component.rbs +0 -64
  408. data/sig/hakumi_components/pagination/component.rbs +0 -113
  409. data/sig/hakumi_components/popconfirm/component.rbs +0 -52
  410. data/sig/hakumi_components/popover/component.rbs +0 -66
  411. data/sig/hakumi_components/progress/component.rbs +0 -201
  412. data/sig/hakumi_components/qr_code/component.rbs +0 -111
  413. data/sig/hakumi_components/radio/component.rbs +0 -55
  414. data/sig/hakumi_components/radio/group/component.rbs +0 -71
  415. data/sig/hakumi_components/rails/attribute_introspection.rbs +0 -16
  416. data/sig/hakumi_components/rails/validation_introspection.rbs +0 -18
  417. data/sig/hakumi_components/rails/validation_mapper.rbs +0 -53
  418. data/sig/hakumi_components/rails.rbs +0 -6
  419. data/sig/hakumi_components/rate/component.rbs +0 -56
  420. data/sig/hakumi_components/result/component.rbs +0 -65
  421. data/sig/hakumi_components/segmented/component.rbs +0 -72
  422. data/sig/hakumi_components/select/component.rbs +0 -73
  423. data/sig/hakumi_components/skeleton/avatar/component.rbs +0 -23
  424. data/sig/hakumi_components/skeleton/button/component.rbs +0 -24
  425. data/sig/hakumi_components/skeleton/component.rbs +0 -76
  426. data/sig/hakumi_components/skeleton/image/component.rbs +0 -22
  427. data/sig/hakumi_components/skeleton/input/component.rbs +0 -23
  428. data/sig/hakumi_components/skeleton/node/component.rbs +0 -21
  429. data/sig/hakumi_components/slider/component.rbs +0 -85
  430. data/sig/hakumi_components/space/compact/component.rbs +0 -21
  431. data/sig/hakumi_components/space/component.rbs +0 -47
  432. data/sig/hakumi_components/spin/component.rbs +0 -77
  433. data/sig/hakumi_components/splitter/component.rbs +0 -27
  434. data/sig/hakumi_components/splitter/panel/component.rbs +0 -36
  435. data/sig/hakumi_components/statistic/component.rbs +0 -97
  436. data/sig/hakumi_components/steps/component.rbs +0 -82
  437. data/sig/hakumi_components/steps/item/component.rbs +0 -29
  438. data/sig/hakumi_components/switch/component.rbs +0 -52
  439. data/sig/hakumi_components/table/column/component.rbs +0 -57
  440. data/sig/hakumi_components/table/column_group/component.rbs +0 -20
  441. data/sig/hakumi_components/table/component.rbs +0 -279
  442. data/sig/hakumi_components/table/concerns/columns.rbs +0 -95
  443. data/sig/hakumi_components/table/concerns/editable.rbs +0 -40
  444. data/sig/hakumi_components/table/concerns/ellipsis.rbs +0 -27
  445. data/sig/hakumi_components/table/concerns/fixed_columns.rbs +0 -33
  446. data/sig/hakumi_components/tabs/component.rbs +0 -66
  447. data/sig/hakumi_components/tabs/item/component.rbs +0 -29
  448. data/sig/hakumi_components/tag/component.rbs +0 -86
  449. data/sig/hakumi_components/tag/group/component.rbs +0 -24
  450. data/sig/hakumi_components/time_picker/component.rbs +0 -72
  451. data/sig/hakumi_components/timeline/component.rbs +0 -61
  452. data/sig/hakumi_components/timeline/item/component.rbs +0 -70
  453. data/sig/hakumi_components/tooltip/component.rbs +0 -73
  454. data/sig/hakumi_components/tour/component.rbs +0 -84
  455. data/sig/hakumi_components/transfer/component.rbs +0 -75
  456. data/sig/hakumi_components/tree/component.rbs +0 -126
  457. data/sig/hakumi_components/tree_select/component.rbs +0 -122
  458. data/sig/hakumi_components/typography/base_component.rbs +0 -57
  459. data/sig/hakumi_components/typography/link/component.rbs +0 -28
  460. data/sig/hakumi_components/typography/paragraph/component.rbs +0 -13
  461. data/sig/hakumi_components/typography/text/component.rbs +0 -10
  462. data/sig/hakumi_components/typography/title/component.rbs +0 -28
  463. data/sig/hakumi_components/upload/component.rbs +0 -78
  464. data/sig/hakumi_components.rbs +0 -96
  465. data/sig/rails/active_model/validations/comparison_validator.rbs +0 -6
  466. data/sig/rails.rbs +0 -18
  467. data/sig/view_component/base.rbs +0 -28
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Divider
5
- class Component < HakumiComponents::BaseComponent
6
- type divider_orientation = :horizontal | :vertical
7
- type divider_placement = :left | :center | :right
8
-
9
- ORIENTATIONS: Array[divider_orientation]
10
- PLACEMENTS: Array[divider_placement]
11
-
12
- @orientation: divider_orientation
13
- @dashed: bool
14
- @plain: bool
15
- @orientation_margin: divider_placement?
16
- @html_options: hakumi_html_options
17
-
18
- def initialize: (
19
- ?orientation: divider_orientation,
20
- ?dashed: bool,
21
- ?plain: bool,
22
- ?orientation_margin: divider_placement?,
23
- **hakumi_html_options html_options
24
- ) -> void
25
-
26
- def call: () -> String
27
-
28
- private
29
-
30
- def validate_props!: () -> void
31
-
32
- def wrapper_classes: () -> String
33
-
34
- def wrapper_attributes: () -> hakumi_html_options
35
-
36
- def content_wrapper: () -> String?
37
- end
38
- end
39
- end
@@ -1,66 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Drawer
5
- class Component < HakumiComponents::BaseComponent
6
- type drawer_placement = :left | :right | :top | :bottom
7
- type drawer_size = :default | :large | Numeric | String
8
-
9
- PLACEMENTS: Array[drawer_placement]
10
- SIZES: Hash[Symbol, Integer]
11
-
12
- # Extracts locals from controller params for dynamic rendering
13
- def self.extract_controller_locals: (untyped params) -> Hash[Symbol, untyped]
14
-
15
- @open: bool
16
- @title: String?
17
- @placement: drawer_placement
18
- @size: drawer_size
19
- @width: (Numeric | String)?
20
- @height: (Numeric | String)?
21
- @closable: bool
22
- @mask: bool
23
- @mask_closable: bool
24
- @keyboard: bool
25
- @footer: untyped
26
- @extra: untyped
27
- @destroy_on_close: bool
28
- @html_attributes: hakumi_html_options
29
-
30
- def initialize: (
31
- ?open: bool,
32
- ?title: String?,
33
- ?placement: drawer_placement,
34
- ?size: drawer_size,
35
- ?width: (Numeric | String)?,
36
- ?height: (Numeric | String)?,
37
- ?closable: bool,
38
- ?mask: bool,
39
- ?mask_closable: bool,
40
- ?keyboard: bool,
41
- ?footer: untyped,
42
- ?extra: untyped,
43
- ?destroy_on_close: bool,
44
- **hakumi_html_options html_attributes
45
- ) -> void
46
-
47
- def drawer_classes: () -> String
48
-
49
- def root_attributes: () -> hakumi_html_options
50
-
51
- def data_attributes: () -> hakumi_html_options
52
-
53
- def wrapper_style: () -> String
54
-
55
- def render_header?: () -> bool
56
-
57
- def render_footer?: () -> bool
58
-
59
- private
60
-
61
- def resolve_size: () -> drawer_size
62
-
63
- def validate_props!: () -> void
64
- end
65
- end
66
- end
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Dropdown
5
- class Component < HakumiComponents::BaseComponent
6
- type dropdown_trigger = :hover | :click | :context_menu
7
- type dropdown_placement = :bottom | :bottom_left | :bottom_right | :top | :top_left | :top_right
8
-
9
- TRIGGERS: Array[dropdown_trigger]
10
- PLACEMENTS: Array[dropdown_placement]
11
-
12
- @trigger: dropdown_trigger
13
- @placement: dropdown_placement
14
- @disabled: bool
15
- @html_options: hakumi_html_options
16
-
17
- def initialize: (
18
- ?trigger: dropdown_trigger,
19
- ?placement: dropdown_placement,
20
- ?disabled: bool,
21
- **hakumi_html_options html_options
22
- ) -> void
23
-
24
- attr_reader trigger_type: dropdown_trigger
25
- attr_reader placement: dropdown_placement
26
- attr_reader disabled: bool
27
-
28
- def dropdown_classes: () -> String
29
-
30
- def menu_classes: () -> String
31
-
32
- def stimulus_controller: () -> String
33
-
34
- def stimulus_values: () -> Hash[Symbol, untyped]
35
-
36
- def placement_class: () -> String
37
-
38
- def wrapper_attributes: () -> hakumi_html_options
39
-
40
- private
41
-
42
- def validate_props!: () -> void
43
- end
44
- end
45
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Dropdown
5
- module Divider
6
- class Component < HakumiComponents::BaseComponent
7
- def call: () -> String
8
- end
9
- end
10
- end
11
- end
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Dropdown
5
- module Item
6
- class Component < HakumiComponents::BaseComponent
7
- @key: String
8
- @label: String?
9
- @href: String?
10
- @target: String?
11
- @icon: hakumi_icon?
12
- @disabled: bool
13
- @danger: bool
14
- @html_options: hakumi_html_options
15
-
16
- def initialize: (
17
- key: String,
18
- ?label: String?,
19
- ?href: String?,
20
- ?target: String?,
21
- ?icon: hakumi_icon?,
22
- ?disabled: bool,
23
- ?danger: bool,
24
- **hakumi_html_options html_options
25
- ) -> void
26
-
27
- attr_reader key: String
28
- attr_reader label: String?
29
- attr_reader href: String?
30
- attr_reader target: String?
31
- attr_reader icon: hakumi_icon?
32
- attr_reader disabled: bool
33
- attr_reader danger: bool
34
-
35
- def item_classes: () -> String
36
-
37
- def link?: () -> bool
38
-
39
- def display_label: () -> (String | untyped)?
40
-
41
- def icon_component: () -> (HakumiComponents::Icon::Component | hakumi_icon)?
42
- end
43
- end
44
- end
45
- end
@@ -1,40 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Empty
5
- class Component < HakumiComponents::BaseComponent
6
- type empty_image = :default | :simple
7
-
8
- BUILT_IN_IMAGES: Array[empty_image]
9
- DEFAULT_IMAGE_SVG: String
10
- SIMPLE_IMAGE_SVG: String
11
- DEFAULT_DESCRIPTION: String
12
-
13
- @image: empty_image | String | untyped
14
- @image_height: Integer?
15
- @description: String | false
16
- @html_options: hakumi_html_options
17
-
18
- def initialize: (
19
- ?image: empty_image | String | untyped,
20
- ?image_height: Integer?,
21
- ?description: String | false,
22
- **hakumi_html_options html_options
23
- ) -> void
24
-
25
- def call: () -> String
26
-
27
- private
28
-
29
- def image_element: () -> String
30
-
31
- def render_image: () -> String
32
-
33
- def image_alt: () -> (String | false)
34
-
35
- def description_element: () -> String?
36
-
37
- def footer_element: () -> String?
38
- end
39
- end
40
- end
@@ -1,47 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Flex
5
- class Component < HakumiComponents::BaseComponent
6
- type flex_wrap = :wrap | :nowrap | :"wrap-reverse"
7
- type flex_justify = :start | :end | :center | :"space-between" | :"space-around" | :"space-evenly"
8
- type flex_align = :start | :end | :center | :baseline | :stretch
9
- type flex_gap = :small | :middle | :large | Numeric | String
10
-
11
- WRAP_OPTIONS: Array[flex_wrap]
12
- JUSTIFY_OPTIONS: Array[flex_justify]
13
- ALIGN_OPTIONS: Array[flex_align]
14
- GAP_OPTIONS: Array[Symbol]
15
-
16
- @vertical: bool
17
- @wrap: flex_wrap
18
- @justify: flex_justify
19
- @align: flex_align
20
- @gap: flex_gap?
21
- @component: Symbol
22
- @html_options: hakumi_html_options
23
-
24
- def initialize: (
25
- ?vertical: bool,
26
- ?wrap: flex_wrap,
27
- ?justify: flex_justify,
28
- ?align: flex_align,
29
- ?gap: flex_gap?,
30
- ?component: Symbol,
31
- **hakumi_html_options html_options
32
- ) -> void
33
-
34
- def call: () -> String
35
-
36
- private
37
-
38
- def validate_props!: () -> void
39
-
40
- def wrapper_classes: () -> String
41
-
42
- def wrapper_attributes: () -> hakumi_html_options
43
-
44
- def normalize_prop: (Symbol prop) -> Symbol
45
- end
46
- end
47
- end
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module FloatButton
5
- module BackTop
6
- class Component < HakumiComponents::BaseComponent
7
- DEFAULT_VISIBILITY: Integer
8
-
9
- @icon: hakumi_icon?
10
- @tooltip: String
11
- @visibility_height: Integer
12
- @target_selector: String?
13
- @floating: bool
14
- @placement: HakumiComponents::FloatButton::Component::float_button_placement
15
- @offset: HakumiComponents::FloatButton::Component::offset_hash?
16
- @button_options: Hash[Symbol, untyped]
17
- @html_options: hakumi_html_options
18
-
19
- def initialize: (
20
- ?icon: hakumi_icon?,
21
- ?tooltip: String,
22
- ?visibility_height: Integer,
23
- ?target_selector: String?,
24
- ?floating: bool,
25
- ?placement: HakumiComponents::FloatButton::Component::float_button_placement,
26
- ?offset: HakumiComponents::FloatButton::Component::offset_hash?,
27
- ?button_options: Hash[Symbol, untyped],
28
- **hakumi_html_options html_options
29
- ) -> void
30
-
31
- def call: () -> String
32
-
33
- private
34
-
35
- def back_top_html_options: () -> Hash[Symbol, untyped]
36
-
37
- def back_top_button_options: () -> Hash[Symbol, untyped]
38
-
39
- def append_controller: (String? existing, String controller) -> String
40
-
41
- def append_action: (String? existing, String action) -> String
42
- end
43
- end
44
- end
45
- end
@@ -1,80 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module FloatButton
5
- class Component < HakumiComponents::BaseComponent
6
- type float_button_type = :default | :primary
7
- type float_button_shape = :circle | :square
8
- type float_button_placement = :bottom_right | :bottom_left | :top_right | :top_left
9
- type offset_hash = Hash[Symbol, (Integer | String)]
10
-
11
- TYPES: Array[float_button_type]
12
- SHAPES: Array[float_button_shape]
13
- PLACEMENTS: Hash[float_button_placement, offset_hash]
14
-
15
- @icon: hakumi_icon?
16
- @description: String?
17
- @tooltip: String?
18
- @href: String?
19
- @target: String?
20
- @shape: float_button_shape
21
- @type: float_button_type
22
- @danger: bool
23
- @badge: (Hash[Symbol, untyped] | untyped)?
24
- @floating: bool
25
- @placement: float_button_placement
26
- @offset: offset_hash?
27
- @button_options: Hash[Symbol, untyped]
28
- @html_options: hakumi_html_options
29
-
30
- def initialize: (
31
- ?icon: hakumi_icon?,
32
- ?description: String?,
33
- ?tooltip: String?,
34
- ?href: String?,
35
- ?target: String?,
36
- ?shape: float_button_shape,
37
- ?type: float_button_type,
38
- ?danger: bool,
39
- ?badge: (Hash[Symbol, untyped] | untyped)?,
40
- ?floating: bool,
41
- ?placement: float_button_placement,
42
- ?offset: offset_hash?,
43
- ?button_options: Hash[Symbol, untyped],
44
- **hakumi_html_options html_options
45
- ) -> void
46
-
47
- def call: () -> String
48
-
49
- private
50
-
51
- def validate_props!: () -> void
52
-
53
- def float_button_markup: (?floating: bool) -> String
54
-
55
- def interactive_tag: () -> Symbol
56
-
57
- def icon_element: () -> String?
58
-
59
- def description_element: () -> String?
60
-
61
- def root_attributes: (bool floating) -> hakumi_html_options
62
-
63
- def body_attributes: (Symbol tag_name) -> hakumi_html_options
64
-
65
- def floating_style: () -> String?
66
-
67
- def resolved_offset: () -> Hash[Symbol, (Integer | String)]
68
-
69
- def dimension: ((Integer | String) value) -> String
70
-
71
- def slot_content: () -> String?
72
-
73
- def validate_description_support!: () -> void
74
-
75
- def wrap_with_badge: (String markup) -> String
76
-
77
- def merge_styles: (*String? styles) -> String?
78
- end
79
- end
80
- end
@@ -1,95 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module FloatButton
5
- module Group
6
- class Component < HakumiComponents::BaseComponent
7
- type group_trigger = :click | :hover
8
- type group_expand_direction = :top | :right | :bottom | :left
9
- type group_item = Hash[Symbol, untyped]
10
-
11
- SHAPES: Array[HakumiComponents::FloatButton::Component::float_button_shape]
12
- TYPES: Array[HakumiComponents::FloatButton::Component::float_button_type]
13
- TRIGGERS: Array[group_trigger]
14
- EXPAND_DIRECTIONS: Array[group_expand_direction]
15
- PLACEMENTS: Hash[HakumiComponents::FloatButton::Component::float_button_placement, HakumiComponents::FloatButton::Component::offset_hash]
16
-
17
- @icon: hakumi_icon?
18
- @tooltip: String?
19
- @shape: HakumiComponents::FloatButton::Component::float_button_shape
20
- @type: HakumiComponents::FloatButton::Component::float_button_type
21
- @trigger: group_trigger
22
- @open: bool?
23
- @default_open: bool
24
- @expand_direction: group_expand_direction
25
- @items: Array[group_item]
26
- @floating: bool
27
- @placement: HakumiComponents::FloatButton::Component::float_button_placement
28
- @offset: HakumiComponents::FloatButton::Component::offset_hash?
29
- @button_options: Hash[Symbol, untyped]
30
- @html_options: hakumi_html_options
31
-
32
- def initialize: (
33
- ?icon: hakumi_icon?,
34
- ?tooltip: String?,
35
- ?shape: HakumiComponents::FloatButton::Component::float_button_shape,
36
- ?type: HakumiComponents::FloatButton::Component::float_button_type,
37
- ?trigger: group_trigger,
38
- ?open: bool?,
39
- ?default_open: bool,
40
- ?expand_direction: group_expand_direction,
41
- ?items: Array[group_item],
42
- ?floating: bool,
43
- ?placement: HakumiComponents::FloatButton::Component::float_button_placement,
44
- ?offset: HakumiComponents::FloatButton::Component::offset_hash?,
45
- ?button_options: Hash[Symbol, untyped],
46
- **hakumi_html_options html_options
47
- ) -> void
48
-
49
- def call: () -> String
50
-
51
- private
52
-
53
- def validate_props!: () -> void
54
-
55
- def root_attributes: () -> hakumi_html_options
56
-
57
- def base_attrs_data: () -> Hash[Symbol, untyped]
58
-
59
- def apply_controller_data!: (Hash[Symbol, untyped] data) -> void
60
-
61
- def trigger_button: () -> String
62
-
63
- def trigger_button_options: () -> Hash[Symbol, untyped]
64
-
65
- def actions_wrapper: () -> String
66
-
67
- def actions_attributes: () -> hakumi_html_options
68
-
69
- def actions_content: () -> String?
70
-
71
- def render_item: (group_item item) -> String
72
-
73
- def floating_style: () -> String?
74
-
75
- def resolved_offset: () -> Hash[Symbol, (Integer | String)]
76
-
77
- def dimension: ((Integer | String) value) -> String
78
-
79
- def open_state?: () -> bool
80
-
81
- def controlled?: () -> bool
82
-
83
- def use_controller?: () -> bool
84
-
85
- def attach_click_action?: () -> bool
86
-
87
- def open_for_click?: () -> bool
88
-
89
- def append_controller: (String? existing, String name) -> String
90
-
91
- def append_action: (String? existing, String action) -> String
92
- end
93
- end
94
- end
95
- end
@@ -1,60 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module FloatButton
5
- module GroupCluster
6
- class Component < HakumiComponents::BaseComponent
7
- type cluster_direction = :horizontal | :vertical
8
- type cluster_gap_size = :small | :middle | :large
9
- type cluster_gap = cluster_gap_size | Integer | String
10
- type group_spec = Hash[Symbol, untyped] | untyped
11
-
12
- DIRECTIONS: Array[cluster_direction]
13
- GAP_SIZES: Hash[cluster_gap_size, String]
14
- PLACEMENTS: Hash[HakumiComponents::FloatButton::Component::float_button_placement, HakumiComponents::FloatButton::Component::offset_hash]
15
-
16
- @groups: Array[group_spec]
17
- @placement: HakumiComponents::FloatButton::Component::float_button_placement
18
- @offset: HakumiComponents::FloatButton::Component::offset_hash?
19
- @direction: cluster_direction
20
- @gap: cluster_gap
21
- @floating: bool
22
- @html_options: hakumi_html_options
23
-
24
- def initialize: (
25
- groups: Array[group_spec],
26
- ?placement: HakumiComponents::FloatButton::Component::float_button_placement,
27
- ?offset: HakumiComponents::FloatButton::Component::offset_hash?,
28
- ?direction: cluster_direction,
29
- ?gap: cluster_gap,
30
- ?floating: bool,
31
- **hakumi_html_options html_options
32
- ) -> void
33
-
34
- def call: () -> String
35
-
36
- private
37
-
38
- def cluster_attributes: () -> hakumi_html_options
39
-
40
- def cluster_style: () -> String?
41
-
42
- def placement_style: () -> String?
43
-
44
- def gap_style: () -> String?
45
-
46
- def resolved_offset: () -> Hash[Symbol, (Integer | String)]
47
-
48
- def dimension: ((Integer | String) value) -> String
49
-
50
- def render_group: (group_spec group_spec) -> String
51
-
52
- def render_group_content: (group_spec group_spec) -> String
53
-
54
- def renderable_component?: (untyped object) -> bool
55
-
56
- def validate_gap_symbol!: () -> void
57
- end
58
- end
59
- end
60
- end
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Form
5
- module Item
6
- class Component < HakumiComponents::BaseComponent
7
- @label: String?
8
- @caption: String?
9
- @errors: Array[String]
10
- @required: bool
11
- @field_id: String?
12
- @html_options: hakumi_html_options
13
-
14
- def initialize: (
15
- ?label: String?,
16
- ?caption: String?,
17
- ?errors: (Array[String] | String),
18
- ?required: bool,
19
- ?field_id: String?,
20
- **hakumi_html_options html_options
21
- ) -> void
22
-
23
- def call: () -> String
24
-
25
- private
26
-
27
- def has_error?: () -> bool
28
- def wrapper_attributes: () -> hakumi_html_options
29
- def wrapper_content: () -> String
30
- def label_content: () -> String?
31
- def control_content: () -> String
32
- def control_input_content: () -> String
33
- def explain_content: () -> String?
34
- def error_content: () -> String
35
- def caption_content: () -> String
36
- end
37
- end
38
- end
39
- end
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- class FormBuilder < ActionView::Helpers::FormBuilder
5
- # Public methods - use untyped for options hash to avoid type conflicts with Rails
6
- def text_field: (Symbol method, **untyped options) -> String
7
- def password_field: (Symbol method, **untyped options) -> String
8
- def text_area: (Symbol method, **untyped options) -> String
9
- def number_field: (Symbol method, **untyped options) -> String
10
- def radio_button: (Symbol method, untyped tag_value, **untyped options) -> String
11
- def collection_radio_buttons: (Symbol method, untyped collection, untyped value_method, untyped text_method, **untyped options) -> String
12
- def check_box: (Symbol method, **untyped options) -> String
13
- def select: (Symbol method, untyped? choices, **untyped options) -> String
14
- def tree_select: (Symbol method, untyped? choices, **untyped options) -> String
15
- def date_picker: (Symbol method, **untyped options) -> String
16
- def mentions_field: (Symbol method, **untyped options) -> String
17
- def slider_field: (Symbol method, **untyped options) -> String
18
- def rate_field: (Symbol method, **untyped options) -> String
19
- def autocomplete_field: (Symbol method, untyped? choices, **untyped options) -> String
20
- def cascader_field: (Symbol method, untyped? choices, **untyped options) -> String
21
- def checkbox_field: (Symbol method, **untyped options) -> String
22
- def color_picker_field: (Symbol method, **untyped options) -> String
23
- def time_picker_field: (Symbol method, **untyped options) -> String
24
- def transfer_field: (Symbol method, untyped? data_source, **untyped options) -> String
25
- def upload_field: (Symbol method, **untyped options) -> String
26
- def submit: (String? value, **untyped options) -> String
27
-
28
- private
29
-
30
- # Private helper methods
31
- def field_configuration: (Symbol method, Hash[Symbol, untyped] options, ?id_suffix: String?) -> Hash[Symbol, untyped]
32
- def enhance_options_with_introspection!: (Symbol method, Hash[Symbol, untyped] options) -> (Hash[Symbol, untyped] | nil)
33
- def render_form_field: (Class component_class, Symbol method, ?config_overrides: Hash[Symbol, untyped], **untyped options) -> String
34
- def object_value: (Symbol method) -> untyped
35
- def object_errors: (Symbol method) -> Array[String]
36
- end
37
- end