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,95 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Table
5
- module Concerns
6
- # Column normalization and management for Table component
7
- module Columns
8
- # Column can be a hash config or a Symbol constant (SELECTION_COLUMN, EXPAND_COLUMN)
9
- type column_like = Hash[Symbol, untyped] | Symbol
10
- # Normalized column is a hash with specific keys (title, key, width, etc.) and dynamic values
11
- type column_hash = Hash[Symbol, untyped]
12
-
13
- # Get all leaf columns (columns without children)
14
- def leaf_columns: () -> Array[column_hash]
15
-
16
- # Count of leaf columns (minimum 1)
17
- def leaf_column_count: () -> Integer
18
-
19
- # Check if table has selection column
20
- def selection_column?: () -> bool
21
-
22
- # Check if table has expandable rows
23
- def expandable?: () -> bool
24
-
25
- # Check if table has expand column
26
- def expand_column?: () -> bool
27
-
28
- # Get normalized columns with special columns inserted
29
- def normalized_columns: () -> Array[column_hash]
30
-
31
- private
32
-
33
- # Normalize an array of column definitions
34
- def normalize_columns: (Array[column_like] columns) -> Array[column_hash]
35
-
36
- # Normalize a single column definition
37
- def normalize_column: (column_hash column) -> (column_hash | nil)
38
-
39
- # Insert drag handle column if needed
40
- def insert_drag_handle_column: (Array[column_hash] columns) -> Array[column_hash]
41
-
42
- # Insert selection column if needed
43
- def insert_selection_column: (Array[column_hash] columns) -> Array[column_hash]
44
-
45
- # Insert expand column if needed
46
- def insert_expand_column: (Array[column_hash] columns) -> Array[column_hash]
47
-
48
- # Definition for selection column
49
- def selection_column_definition: () -> column_hash
50
-
51
- # Definition for expand column
52
- def expand_column_definition: () -> column_hash
53
-
54
- # Check if drag handle column should be added
55
- def drag_handle_column?: () -> bool
56
-
57
- # Definition for drag handle column
58
- def drag_handle_column_definition: () -> column_hash
59
-
60
- # Get first data column (non-special column)
61
- def first_data_column: () -> (column_hash | nil)
62
-
63
- # Recursively flatten all leaf columns
64
- def flatten_leaf_columns: (Array[column_hash] columns) -> Array[column_hash]
65
-
66
- # Count leaf columns recursively
67
- def leaf_count: (Array[column_hash] columns) -> Integer
68
-
69
- # Calculate maximum depth of column hierarchy
70
- def max_depth: (Array[column_hash] columns, ?Integer depth) -> Integer
71
-
72
- # Build header rows for rendering
73
- def build_header_rows: (Array[column_hash] columns) -> Array[Array[column_hash]]
74
-
75
- # Recursively build header rows
76
- def build_rows_recursive: (Array[column_hash] columns, Integer level, Array[Array[column_hash]] rows, Integer max_depth) -> void
77
-
78
- # Methods expected from Table::Component (via BaseComponent)
79
- def columns_data: () -> Array[column_like]
80
- def compute_fixed_offsets: (Array[column_hash] columns) -> void
81
- def generate_id: (String prefix, ?length: Integer) -> String
82
- # normalize_ellipsis_option: can be bool, hash, or string
83
- def normalize_ellipsis_option: ((bool | Hash[Symbol, untyped] | String)? option) -> (Hash[Symbol, untyped] | nil)
84
- # normalize_responsive_breakpoints: can be array or single value
85
- def normalize_responsive_breakpoints: (untyped option) -> (Array[Symbol] | nil)
86
- # dimension_to_css: accepts Numeric, String, or nil (from BaseComponent)
87
- def dimension_to_css: ((Numeric | String)? value) -> String?
88
- # normalize_column_editable: can be bool or hash with editable config
89
- def normalize_column_editable: ((bool | Hash[Symbol, untyped])? value) -> (Hash[Symbol, untyped] | nil)
90
- # normalize_should_cell_update: Symbol or String method name, returns String or nil
91
- def normalize_should_cell_update: ((Symbol | String)? value) -> String?
92
- end
93
- end
94
- end
95
- end
@@ -1,40 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Table
5
- module Concerns
6
- # Editable cell and row functionality for Table component
7
- module Editable
8
- EDITABLE_MODES: Array[Symbol]
9
- EDITABLE_TRIGGERS: Array[Symbol]
10
- EDITABLE_INPUT_TYPES: Array[Symbol]
11
-
12
- # Returns JSON configuration for the table-level editable settings
13
- def editable_config_json: () -> String?
14
-
15
- private
16
-
17
- # Normalizes the table-level editable configuration
18
- def normalize_editable: (untyped value) -> untyped
19
-
20
- # Normalizes column-level editable configuration
21
- def normalize_column_editable: (untyped value) -> untyped
22
-
23
- # Normalizes should_cell_update hook name
24
- def normalize_should_cell_update: (untyped value) -> untyped
25
-
26
- # Applies editable attributes to cell
27
- def apply_editable_attributes!: (Hash[Symbol, untyped] attrs, Hash[Symbol, untyped] column) -> void
28
-
29
- # Applies should_cell_update attributes to cell
30
- def apply_should_cell_update_attributes!: (Hash[Symbol, untyped] attrs, Hash[Symbol, untyped] column) -> void
31
-
32
- # Returns the editable payload for a specific cell/column
33
- def cell_editable_payload: (Hash[Symbol, untyped] column) -> untyped
34
-
35
- # Instance variable from Table::Component
36
- @editable: untyped
37
- end
38
- end
39
- end
40
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Table
5
- module Concerns
6
- # Text ellipsis and tooltip handling for Table cells
7
- module Ellipsis
8
- private
9
-
10
- # Get ellipsis config from column
11
- def ellipsis_config: (Hash[Symbol, untyped] column) -> untyped
12
-
13
- # Normalize ellipsis option
14
- def normalize_ellipsis_option: (untyped option) -> untyped
15
-
16
- # Normalize ellipsis tooltip option
17
- def normalize_ellipsis_tooltip_option: (untyped option) -> untyped
18
-
19
- # Get ellipsis title for cell
20
- def ellipsis_title: (untyped config, untyped raw_value, untyped content_fragment) -> untyped
21
-
22
- # Get ellipsis tooltip component for cell
23
- def ellipsis_tooltip_component: (untyped config, untyped raw_value, untyped row, Integer row_index) -> untyped
24
- end
25
- end
26
- end
27
- end
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Table
5
- module Concerns
6
- # Fixed (sticky) column positioning for Table component
7
- module FixedColumns
8
- # Check if table has any fixed columns
9
- def fixed_columns?: () -> bool
10
-
11
- private
12
-
13
- # Get or initialize fixed offsets hash
14
- def fixed_offsets: () -> Hash[untyped, untyped]
15
-
16
- # Applies fixed column positioning attributes to cell
17
- def apply_fixed_column_attributes!: (Hash[Symbol, untyped] attrs, Hash[Symbol, untyped] column, ?header: bool) -> void
18
-
19
- # Compute fixed column offsets from left and right
20
- def compute_fixed_offsets: (Array[Hash[Symbol, untyped]] leaf_columns) -> void
21
-
22
- # Get width for fixed column (must be defined)
23
- def fixed_column_width!: (Hash[Symbol, untyped] column) -> untyped
24
-
25
- # Convert width value to numeric
26
- def numeric_width: (untyped value) -> untyped
27
-
28
- # Instance variable for fixed offsets
29
- @fixed_offsets: Hash[untyped, untyped]
30
- end
31
- end
32
- end
33
- end
@@ -1,66 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Tabs
5
- class Component < HakumiComponents::BaseComponent
6
- type tab_type = :line | :card | :editable_card
7
- type tab_size = :large | :middle | :small
8
- type tab_position = :top | :bottom | :left | :right
9
- type indicator_align = :start | :center | :end
10
-
11
- TYPES: Array[tab_type]
12
- SIZES: Array[tab_size]
13
- TAB_POSITIONS: Array[tab_position]
14
- INDICATOR_ALIGNS: Array[indicator_align]
15
-
16
- @active_key: String?
17
- @default_active_key: String?
18
- @type: tab_type
19
- @size: tab_size
20
- @tab_position: tab_position
21
- @centered: bool
22
- @animated: bool
23
- @indicator: hakumi_html_options?
24
- @tab_bar_gutter: Integer?
25
- @tab_bar_extra_content_left: String?
26
- @tab_bar_extra_content_right: String?
27
- @add_icon: String?
28
- @hide_add: bool
29
- @more_icon: String?
30
- @html_options: hakumi_html_options
31
-
32
- def initialize: (
33
- ?active_key: String?,
34
- ?default_active_key: String?,
35
- ?type: tab_type,
36
- ?size: tab_size,
37
- ?tab_position: tab_position,
38
- ?centered: bool,
39
- ?animated: bool,
40
- ?indicator: hakumi_html_options?,
41
- ?tab_bar_gutter: Integer?,
42
- ?tab_bar_extra_content_left: String?,
43
- ?tab_bar_extra_content_right: String?,
44
- ?add_icon: String?,
45
- ?hide_add: bool,
46
- ?more_icon: String?,
47
- **hakumi_html_options html_options
48
- ) -> void
49
-
50
- def call: () -> String
51
-
52
- def before_render: () -> void
53
-
54
- private
55
-
56
- def validate_props!: () -> void
57
- def wrapper_classes: () -> String
58
- def wrapper_attributes: () -> hakumi_html_options
59
- def render_tab_bar: () -> String
60
- def render_content: () -> String
61
- def tab_bar_classes: () -> String
62
- def tabs_nav_classes: () -> String
63
- def indicator_style: () -> String
64
- end
65
- end
66
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Tabs
5
- module Item
6
- class Component < HakumiComponents::BaseComponent
7
- @key: (String | Symbol)
8
- @label: String?
9
- @disabled: bool
10
- @closable: bool
11
- @icon: hakumi_icon?
12
- @html_options: hakumi_html_options
13
-
14
- def initialize: (
15
- key: (String | Symbol),
16
- ?label: String?,
17
- ?disabled: bool,
18
- ?closable: bool,
19
- ?icon: hakumi_icon?,
20
- **hakumi_html_options html_options
21
- ) -> void
22
-
23
- attr_reader key: (String | Symbol)
24
-
25
- def call: () -> String
26
- end
27
- end
28
- end
29
- end
@@ -1,86 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Tag
5
- class Component < HakumiComponents::BaseComponent
6
- type tag_color_preset = :magenta | :red | :volcano | :orange | :gold | :lime | :green | :cyan | :blue | :geekblue | :purple
7
- type tag_status = :success | :processing | :error | :default | :warning
8
- type tag_variant = :filled | :outlined | :borderless
9
- type tag_color = tag_color_preset | tag_status | String
10
-
11
- COLORS: Array[tag_color_preset]
12
- STATUSES: Array[tag_status]
13
- VARIANTS: Array[tag_variant]
14
-
15
- # Extracts locals from controller params for dynamic rendering
16
- def self.extract_controller_locals: (untyped params) -> Hash[Symbol, untyped]
17
-
18
- @color: tag_color?
19
- @closable: bool
20
- @close_icon: hakumi_icon?
21
- @bordered: bool
22
- @variant: tag_variant
23
- @href: String?
24
- @checkable: bool
25
- @checked: bool
26
- @draggable: bool
27
- @html_options: hakumi_html_options
28
-
29
- def initialize: (
30
- ?color: tag_color?,
31
- ?closable: bool?,
32
- ?close_icon: hakumi_icon?,
33
- ?bordered: bool?,
34
- ?variant: tag_variant?,
35
- ?href: String?,
36
- ?checkable: bool?,
37
- ?checked: bool?,
38
- ?draggable: bool?,
39
- **hakumi_html_options html_options
40
- ) -> void
41
-
42
- def call: () -> String
43
-
44
- # Slot for icon content
45
- def icon: () -> String?
46
- def icon?: () -> bool
47
- def icon=: (String) -> void
48
-
49
- private
50
-
51
- def validate_props!: () -> void
52
-
53
- def render_link_tag: () -> String
54
-
55
- def render_span_tag: () -> String
56
-
57
- def tag_content: () -> String
58
-
59
- def icon_element: () -> String?
60
-
61
- def content_wrapper: () -> String?
62
-
63
- def close_button: () -> String?
64
-
65
- def tag_attributes: () -> hakumi_html_options
66
-
67
- def tag_classes: () -> String
68
-
69
- def tag_data_attributes: () -> hakumi_html_options
70
-
71
- def preset_color?: () -> bool
72
-
73
- def preset_color: () -> Symbol?
74
-
75
- def status_color?: () -> bool
76
-
77
- def status_color: () -> Symbol?
78
-
79
- def custom_color?: () -> bool
80
-
81
- def custom_color_styles: () -> String?
82
-
83
- def contrast_color: (String hex_color) -> String
84
- end
85
- end
86
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Tag
5
- module Group
6
- class Component < HakumiComponents::BaseComponent
7
- @sortable: bool
8
- @animation: Integer
9
- @html_options: hakumi_html_options
10
-
11
- def initialize: (?sortable: bool, ?animation: Integer, **hakumi_html_options html_options) -> void
12
-
13
- def call: () -> String
14
-
15
- private
16
-
17
- def tag_group_attributes: () -> hakumi_html_options
18
- def tag_group_classes: () -> String
19
- # Returns data attributes hash with controller, sortable_value, animation_value
20
- def tag_group_data: () -> Hash[Symbol, (String | bool | Integer)]
21
- end
22
- end
23
- end
24
- end
@@ -1,72 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module TimePicker
5
- class Component < HakumiComponents::BaseComponent
6
- include HakumiComponents::Concerns::FormField
7
-
8
- type time_variant = :default | :borderless | :filled
9
- type time_value = String | Time | DateTime | nil
10
-
11
- SIZES: Array[hakumi_size_standard]
12
- VARIANTS: Array[time_variant]
13
-
14
- @name: String
15
- @label: String?
16
- @caption: String?
17
- @value: time_value
18
- @default_value: time_value
19
- @format: String
20
- @hour_step: Integer
21
- @minute_step: Integer
22
- @second_step: Integer
23
- @use_12_hours: bool
24
- @show_now: bool
25
- @disabled: bool
26
- @allow_clear: bool
27
- @placeholder: String?
28
- @size: hakumi_size_standard
29
- @variant: time_variant
30
- @errors: Array[String]
31
- @standalone: bool
32
- @required: bool
33
- @html_options: hakumi_html_options
34
-
35
- def initialize: (
36
- ?name: String?,
37
- ?label: String?,
38
- ?caption: String?,
39
- ?value: time_value,
40
- ?default_value: time_value,
41
- ?format: String,
42
- ?hour_step: Integer,
43
- ?minute_step: Integer,
44
- ?second_step: Integer,
45
- ?use_12_hours: bool,
46
- ?show_now: bool,
47
- ?disabled: bool,
48
- ?allow_clear: bool,
49
- ?placeholder: String?,
50
- ?size: hakumi_size_standard,
51
- ?variant: time_variant,
52
- ?errors: (Array[String] | String),
53
- ?standalone: bool,
54
- **hakumi_html_options html_options
55
- ) -> void
56
-
57
- private
58
-
59
- def validate_props!: () -> void
60
- def current_value: () -> time_value
61
- def show_seconds?: () -> bool
62
- def wrapper_classes: () -> String
63
- def wrapper_attributes: () -> hakumi_html_options
64
- def input_attributes: () -> hakumi_html_options
65
- def step_value: (untyped value) -> Integer
66
- def formatted_hours: () -> Array[String]
67
- def formatted_minutes: () -> Array[String]
68
- def formatted_seconds: () -> Array[String]
69
- def period_options: () -> Array[String]
70
- end
71
- end
72
- end
@@ -1,61 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Timeline
5
- class Component < HakumiComponents::BaseComponent
6
- type timeline_direction = :vertical | :horizontal
7
- type timeline_mode = :left | :right | :alternate
8
- type timeline_variant = :filled | :outlined
9
-
10
- DIRECTIONS: Array[timeline_direction]
11
- MODES: Array[timeline_mode]
12
- VARIANTS: Array[timeline_variant]
13
-
14
- @direction: timeline_direction
15
- @mode: timeline_mode
16
- @reverse: bool
17
- @pending: (String | bool)?
18
- @pending_dot: untyped # String, Symbol, or ViewComponent
19
- @title_span: (String | Integer)?
20
- @variant: timeline_variant
21
- @html_options: hakumi_html_options
22
-
23
- # Class methods for controller integration
24
- def self.extract_controller_locals: (Hash[Symbol, untyped] params) -> Hash[Symbol, untyped]
25
- def self.parse_json_param: (untyped value) -> untyped
26
-
27
- def initialize: (
28
- ?direction: timeline_direction,
29
- ?mode: timeline_mode,
30
- ?reverse: bool,
31
- ?pending: (String | bool)?,
32
- ?pending_dot: untyped,
33
- ?title_span: (String | Integer)?,
34
- ?variant: timeline_variant,
35
- **hakumi_html_options html_options
36
- ) -> void
37
-
38
- attr_reader direction: timeline_direction
39
- attr_reader mode: timeline_mode
40
- attr_reader reverse: bool
41
- attr_reader pending: (String | bool)?
42
- attr_reader pending_dot: untyped
43
- attr_reader title_span: (String | Integer)?
44
- attr_reader variant: timeline_variant
45
-
46
- def wrapper_attributes: () -> hakumi_html_options
47
- def timeline_items: () -> Array[untyped] # Array of Item::Component
48
- def item_position: (Integer index, untyped item) -> (:left | :right)
49
- def pending_item: () -> untyped # Item::Component or nil
50
-
51
- private
52
-
53
- def stimulus_controller: () -> String
54
- def stimulus_data: () -> Hash[Symbol | String, untyped]
55
- def timeline_classes: () -> String
56
- def timeline_style: () -> (String | nil)
57
- def validate_props!: () -> void
58
- def normalized_title_span: () -> (String | nil)
59
- end
60
- end
61
- end
@@ -1,70 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Timeline
5
- module Item
6
- class Component < HakumiComponents::BaseComponent
7
- type timeline_color_preset = :blue | :red | :green | :gray
8
- type timeline_position = :left | :right
9
-
10
- COLORS: Hash[timeline_color_preset, String]
11
- POSITIONS: Array[timeline_position]
12
-
13
- @title: (String | untyped)? # String or ViewComponent
14
- @body: (String | untyped)? # String or ViewComponent
15
- @color: (timeline_color_preset | String)
16
- @dot: untyped # String, Symbol, or ViewComponent
17
- @position: (timeline_position | nil)
18
- @loading: bool
19
- @parent: untyped # Parent Timeline::Component
20
- @pending: bool
21
- @html_options: hakumi_html_options
22
- @content_block: (Proc | nil)
23
- @index: (Integer | nil)
24
- @total: (Integer | nil)
25
- @resolved_position: (timeline_position | nil)
26
- @reverse: (bool | nil)
27
- @dot_content: (String | nil)
28
-
29
- def initialize: (
30
- ?title: (String | untyped)?,
31
- ?body: (String | untyped)?,
32
- ?color: (timeline_color_preset | String),
33
- ?dot: untyped,
34
- ?position: (timeline_position | nil),
35
- ?loading: bool,
36
- ?parent: untyped,
37
- ?pending: bool,
38
- **hakumi_html_options html_options
39
- ) { () -> untyped } -> void
40
-
41
- attr_reader title: (String | untyped)?
42
- attr_reader body: (String | untyped)?
43
- attr_reader color: (timeline_color_preset | String)
44
- attr_reader dot: untyped
45
- attr_reader position: (timeline_position | nil)
46
- attr_reader loading: bool
47
- attr_reader parent: untyped
48
- attr_reader pending: bool
49
-
50
- # Sets context information (index, position) from parent Timeline
51
- def with_context: (index: Integer, total: Integer, ?position: timeline_position?, ?reverse: bool) -> self
52
-
53
- def wrapper_attributes: () -> hakumi_html_options
54
- def item_content: () -> (String | nil)
55
- def resolved_position: () -> (timeline_position | nil)
56
- def last_item?: () -> bool
57
- def dot_component?: () -> bool
58
- def dot_content: () -> (String | nil)
59
-
60
- private
61
-
62
- def item_classes: () -> String
63
- def item_data: () -> Hash[Symbol, Integer]
64
- def dot_style: () -> (String | nil)
65
- def color_value_for: ((timeline_color_preset | String) value) -> (String | nil)
66
- def validate_props!: () -> void
67
- end
68
- end
69
- end
70
- end
@@ -1,73 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Tooltip
5
- class Component < HakumiComponents::BaseComponent
6
- type tooltip_trigger = :hover | :focus | :click
7
- type tooltip_placement = :top | :top_left | :top_right | :bottom | :bottom_left | :bottom_right | :left | :left_top | :left_bottom | :right | :right_top | :right_bottom
8
- type tooltip_color = :default | :pink | :red | :yellow | :orange | :cyan | :green | :blue | :purple | :geekblue | :magenta | :volcano | :gold | :lime
9
-
10
- TRIGGERS: Array[tooltip_trigger]
11
- PLACEMENTS: Array[tooltip_placement]
12
- COLORS: Array[tooltip_color]
13
-
14
- @title: String?
15
- @placement: tooltip_placement
16
- @trigger: tooltip_trigger
17
- @arrow: bool
18
- @color: (tooltip_color | String)
19
- @open: bool?
20
- @fresh: bool
21
- @html_options: hakumi_html_options
22
-
23
- attr_reader title: String?
24
- attr_reader placement: tooltip_placement
25
- attr_reader trigger: tooltip_trigger
26
- attr_reader arrow: bool
27
- attr_reader color: (tooltip_color | String)
28
- attr_reader open: bool?
29
- attr_reader fresh: bool
30
-
31
- def initialize: (
32
- ?title: String?,
33
- ?placement: tooltip_placement,
34
- ?trigger: tooltip_trigger,
35
- ?arrow: bool,
36
- ?color: (tooltip_color | String),
37
- ?open: bool?,
38
- ?fresh: bool,
39
- **hakumi_html_options html_options
40
- ) -> void
41
-
42
- def wrapper_classes: () -> String
43
-
44
- def tooltip_classes: () -> String
45
-
46
- def placement_class: () -> String
47
-
48
- def color_class: () -> String?
49
-
50
- def preset_color?: () -> bool
51
-
52
- def custom_color?: () -> bool
53
-
54
- def custom_color_style: () -> String?
55
-
56
- def stimulus_controller: () -> String
57
-
58
- def stimulus_values: () -> Hash[Symbol, untyped]
59
-
60
- def wrapper_attributes: () -> hakumi_html_options
61
-
62
- def stimulus_data_attributes: () -> hakumi_html_options
63
-
64
- def tooltip_text: () -> String?
65
-
66
- def has_tooltip_content?: () -> bool
67
-
68
- private
69
-
70
- def validate_props!: () -> void
71
- end
72
- end
73
- end