hakumi_components 0.1.17.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 (647) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +33 -3
  3. data/README.md +218 -369
  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 → hakumi_components}/admin_panel/component.html.erb +2 -2
  7. data/app/components/hakumi_components/admin_panel/component.rb +50 -0
  8. data/app/components/hakumi_components/affix/component.rb +112 -0
  9. data/app/components/{hakumi → hakumi_components}/alert/component.html.erb +3 -3
  10. data/app/components/hakumi_components/alert/component.rb +134 -0
  11. data/app/components/hakumi_components/anchor/component.rb +88 -0
  12. data/app/components/{hakumi → hakumi_components}/anchor/link/component.html.erb +1 -1
  13. data/app/components/hakumi_components/anchor/link/component.rb +53 -0
  14. data/app/components/hakumi_components/autocomplete/component.html.erb +94 -0
  15. data/app/components/hakumi_components/autocomplete/component.rb +228 -0
  16. data/app/components/hakumi_components/avatar/component.rb +124 -0
  17. data/app/components/hakumi_components/badge/component.rb +139 -0
  18. data/app/components/hakumi_components/base_component.rb +391 -0
  19. data/app/components/hakumi_components/breadcrumb/component.rb +38 -0
  20. data/app/components/hakumi_components/breadcrumb/item/component.html.erb +17 -0
  21. data/app/components/hakumi_components/breadcrumb/item/component.rb +83 -0
  22. data/app/components/hakumi_components/breadcrumb/item/menu_entry.rb +71 -0
  23. data/app/components/hakumi_components/button/component.rb +163 -0
  24. data/app/components/{hakumi → hakumi_components}/calendar/component.html.erb +24 -24
  25. data/app/components/hakumi_components/calendar/component.rb +471 -0
  26. data/app/components/hakumi_components/calendar/day_cell.rb +62 -0
  27. data/app/components/hakumi_components/calendar/display_model.rb +237 -0
  28. data/app/components/hakumi_components/calendar/event_entry.rb +54 -0
  29. data/app/components/hakumi_components/calendar/locale_pack.rb +28 -0
  30. data/app/components/hakumi_components/calendar/panel_entry.rb +48 -0
  31. data/app/components/hakumi_components/calendar/week_row.rb +28 -0
  32. data/app/components/{hakumi → hakumi_components}/card/component.html.erb +2 -2
  33. data/app/components/hakumi_components/card/component.rb +121 -0
  34. data/app/components/hakumi_components/card/grid/component.html.erb +3 -0
  35. data/app/components/hakumi_components/card/grid/component.rb +43 -0
  36. data/app/components/hakumi_components/card/meta/component.html.erb +23 -0
  37. data/app/components/hakumi_components/card/meta/component.rb +64 -0
  38. data/app/components/hakumi_components/carousel/autoplay_config.rb +27 -0
  39. data/app/components/{hakumi → hakumi_components}/carousel/component.html.erb +2 -2
  40. data/app/components/hakumi_components/carousel/component.rb +165 -0
  41. data/app/components/hakumi_components/carousel/dots_config.rb +36 -0
  42. data/app/components/hakumi_components/cascader/component.html.erb +59 -0
  43. data/app/components/hakumi_components/cascader/component.rb +168 -0
  44. data/app/components/{hakumi → hakumi_components}/checkbox/component.html.erb +5 -5
  45. data/app/components/hakumi_components/checkbox/component.rb +98 -0
  46. data/app/components/hakumi_components/checkbox/group/component.html.erb +12 -0
  47. data/app/components/hakumi_components/checkbox/group/component.rb +91 -0
  48. data/app/components/hakumi_components/checkbox/group/option.rb +34 -0
  49. data/app/components/{hakumi → hakumi_components}/collapse/component.html.erb +1 -1
  50. data/app/components/hakumi_components/collapse/component.rb +133 -0
  51. data/app/components/hakumi_components/collapse/panel/component.rb +108 -0
  52. data/app/components/{hakumi → hakumi_components}/color_picker/component.html.erb +21 -22
  53. data/app/components/hakumi_components/color_picker/component.rb +279 -0
  54. data/app/components/hakumi_components/color_picker/preset_group.rb +27 -0
  55. data/app/components/hakumi_components/concerns/form_field.rb +236 -0
  56. data/app/components/hakumi_components/concerns/form_field_contract.rb +57 -0
  57. data/app/components/hakumi_components/concerns/form_field_interface.rb +16 -0
  58. data/app/components/hakumi_components/concerns/input_control.rb +111 -0
  59. data/app/components/hakumi_components/concerns/input_control_contract.rb +47 -0
  60. data/app/components/hakumi_components/concerns/input_control_interface.rb +34 -0
  61. data/app/components/hakumi_components/concerns/selection_control.rb +122 -0
  62. data/app/components/hakumi_components/concerns/selection_control_contract.rb +47 -0
  63. data/app/components/hakumi_components/concerns/selection_control_interface.rb +34 -0
  64. data/app/components/{hakumi → hakumi_components}/container/component.rb +31 -16
  65. data/app/components/{hakumi → hakumi_components}/date_picker/component.html.erb +4 -6
  66. data/app/components/hakumi_components/date_picker/component.rb +254 -0
  67. data/app/components/{hakumi → hakumi_components}/date_picker/range_picker.html.erb +4 -4
  68. data/app/components/hakumi_components/date_picker/range_picker.rb +267 -0
  69. data/app/components/hakumi_components/date_picker/shared_rendering.rb +289 -0
  70. data/app/components/{hakumi → hakumi_components}/descriptions/component.html.erb +6 -6
  71. data/app/components/hakumi_components/descriptions/component.rb +219 -0
  72. data/app/components/hakumi_components/descriptions/item/component.rb +52 -0
  73. data/app/components/hakumi_components/divider/component.rb +86 -0
  74. data/app/components/{hakumi → hakumi_components}/drawer/component.html.erb +3 -3
  75. data/app/components/hakumi_components/drawer/component.rb +191 -0
  76. data/app/components/hakumi_components/dropdown/component.rb +94 -0
  77. data/app/components/{hakumi → hakumi_components}/dropdown/divider/component.rb +6 -2
  78. data/app/components/hakumi_components/dropdown/item/component.rb +73 -0
  79. data/app/components/{hakumi → hakumi_components}/empty/component.rb +68 -33
  80. data/app/components/hakumi_components/flex/component.rb +96 -0
  81. data/app/components/hakumi_components/float_button/back_top/component.rb +86 -0
  82. data/app/components/hakumi_components/float_button/component.rb +289 -0
  83. data/app/components/hakumi_components/float_button/group/component.rb +214 -0
  84. data/app/components/hakumi_components/float_button/group_cluster/component.rb +133 -0
  85. data/app/components/hakumi_components/float_button/group_spec.rb +259 -0
  86. data/app/components/hakumi_components/float_button/item_spec.rb +115 -0
  87. data/app/components/hakumi_components/float_button/position_config.rb +68 -0
  88. data/app/components/{hakumi → hakumi_components}/form/item/component.rb +36 -29
  89. data/app/components/hakumi_components/grid/col/component.rb +169 -0
  90. data/app/components/hakumi_components/grid/row/component.rb +97 -0
  91. data/app/components/{hakumi → hakumi_components}/icon/component.rb +53 -53
  92. data/app/components/{hakumi → hakumi_components}/image/component.html.erb +17 -17
  93. data/app/components/hakumi_components/image/component.rb +175 -0
  94. data/app/components/{hakumi → hakumi_components}/image/preview_group/component.html.erb +10 -10
  95. data/app/components/hakumi_components/image/preview_group/component.rb +75 -0
  96. data/app/components/hakumi_components/image/preview_group/item.rb +48 -0
  97. data/app/components/{hakumi → hakumi_components}/input/component.html.erb +1 -1
  98. data/app/components/hakumi_components/input/component.rb +261 -0
  99. data/app/components/hakumi_components/input/password/component.rb +84 -0
  100. data/app/components/{hakumi → hakumi_components}/input/text_area/component.html.erb +2 -2
  101. data/app/components/hakumi_components/input/text_area/component.rb +178 -0
  102. data/app/components/{hakumi → hakumi_components}/input_number/component.html.erb +9 -9
  103. data/app/components/hakumi_components/input_number/component.rb +280 -0
  104. data/app/components/hakumi_components/layout/component.html.erb +1 -0
  105. data/app/components/hakumi_components/layout/component.rb +28 -0
  106. data/app/components/hakumi_components/layout/content/component.html.erb +1 -0
  107. data/app/components/hakumi_components/layout/content/component.rb +29 -0
  108. data/app/components/hakumi_components/layout/footer/component.html.erb +1 -0
  109. data/app/components/hakumi_components/layout/footer/component.rb +29 -0
  110. data/app/components/hakumi_components/layout/header/component.html.erb +1 -0
  111. data/app/components/hakumi_components/layout/header/component.rb +29 -0
  112. data/app/components/hakumi_components/layout/sider/component.html.erb +1 -0
  113. data/app/components/hakumi_components/layout/sider/component.rb +90 -0
  114. data/app/components/hakumi_components/mentions/coercion.rb +46 -0
  115. data/app/components/{hakumi → hakumi_components}/mentions/component.html.erb +6 -6
  116. data/app/components/hakumi_components/mentions/component.rb +229 -0
  117. data/app/components/hakumi_components/mentions/option.rb +30 -0
  118. data/app/components/hakumi_components/menu/component.rb +117 -0
  119. data/app/components/{hakumi → hakumi_components}/menu/divider/component.rb +6 -2
  120. data/app/components/hakumi_components/menu/group/component.rb +48 -0
  121. data/app/components/hakumi_components/menu/item/component.rb +70 -0
  122. data/app/components/hakumi_components/menu/sub_menu/component.rb +104 -0
  123. data/app/components/hakumi_components/message/component.rb +141 -0
  124. data/app/components/{hakumi → hakumi_components}/modal/component.html.erb +7 -7
  125. data/app/components/hakumi_components/modal/component.rb +152 -0
  126. data/app/components/hakumi_components/modal/confirm/component.html.erb +23 -0
  127. data/app/components/hakumi_components/modal/confirm/component.rb +87 -0
  128. data/app/components/hakumi_components/modal/error/component.rb +20 -0
  129. data/app/components/hakumi_components/modal/info/component.rb +17 -0
  130. data/app/components/hakumi_components/modal/status_component.rb +150 -0
  131. data/app/components/hakumi_components/modal/success/component.rb +17 -0
  132. data/app/components/hakumi_components/modal/warning/component.rb +26 -0
  133. data/app/components/hakumi_components/notification/component.rb +160 -0
  134. data/app/components/{hakumi → hakumi_components}/pagination/component.html.erb +8 -12
  135. data/app/components/hakumi_components/pagination/component.rb +238 -0
  136. data/app/components/hakumi_components/pagination/page_item.rb +49 -0
  137. data/app/components/{hakumi → hakumi_components}/popconfirm/component.html.erb +2 -2
  138. data/app/components/hakumi_components/popconfirm/component.rb +120 -0
  139. data/app/components/{hakumi → hakumi_components}/popover/component.html.erb +2 -2
  140. data/app/components/hakumi_components/popover/component.rb +196 -0
  141. data/app/components/hakumi_components/progress/attribute_renderer.rb +354 -0
  142. data/app/components/hakumi_components/progress/circle_geometry.rb +76 -0
  143. data/app/components/{hakumi → hakumi_components}/progress/component.html.erb +19 -18
  144. data/app/components/hakumi_components/progress/component.rb +393 -0
  145. data/app/components/hakumi_components/progress/controller_locals_parser.rb +130 -0
  146. data/app/components/hakumi_components/progress/info_tooltip_policy.rb +39 -0
  147. data/app/components/hakumi_components/progress/info_value.rb +75 -0
  148. data/app/components/hakumi_components/progress/status_state.rb +31 -0
  149. data/app/components/hakumi_components/progress/steps_renderer.rb +149 -0
  150. data/app/components/hakumi_components/progress/stroke_gradient_value.rb +90 -0
  151. data/app/components/hakumi_components/qr_code/component.rb +405 -0
  152. data/app/components/{hakumi → hakumi_components}/radio/component.html.erb +3 -3
  153. data/app/components/hakumi_components/radio/component.rb +113 -0
  154. data/app/components/{hakumi → hakumi_components}/radio/group/component.html.erb +10 -10
  155. data/app/components/hakumi_components/radio/group/component.rb +181 -0
  156. data/app/components/hakumi_components/radio/group/option.rb +43 -0
  157. data/app/components/{hakumi → hakumi_components}/rate/component.html.erb +2 -2
  158. data/app/components/{hakumi → hakumi_components}/rate/component.rb +58 -12
  159. data/app/components/hakumi_components/result/component.rb +175 -0
  160. data/app/components/{hakumi → hakumi_components}/segmented/component.html.erb +1 -1
  161. data/app/components/hakumi_components/segmented/component.rb +232 -0
  162. data/app/components/hakumi_components/segmented/option.rb +191 -0
  163. data/app/components/{hakumi → hakumi_components}/select/component.html.erb +22 -22
  164. data/app/components/hakumi_components/select/component.rb +176 -0
  165. data/app/components/hakumi_components/selection_control/coercion.rb +161 -0
  166. data/app/components/hakumi_components/selection_control/entry.rb +22 -0
  167. data/app/components/hakumi_components/selection_control/option.rb +42 -0
  168. data/app/components/hakumi_components/selection_control/option_group.rb +34 -0
  169. data/app/components/hakumi_components/selection_control/tree_node.rb +123 -0
  170. data/app/components/hakumi_components/skeleton/avatar/component.rb +88 -0
  171. data/app/components/hakumi_components/skeleton/avatar_config.rb +79 -0
  172. data/app/components/hakumi_components/skeleton/button/component.rb +77 -0
  173. data/app/components/hakumi_components/skeleton/component.rb +186 -0
  174. data/app/components/{hakumi → hakumi_components}/skeleton/image/component.html.erb +1 -1
  175. data/app/components/hakumi_components/skeleton/image/component.rb +104 -0
  176. data/app/components/hakumi_components/skeleton/input/component.rb +66 -0
  177. data/app/components/hakumi_components/skeleton/node/component.rb +59 -0
  178. data/app/components/hakumi_components/skeleton/paragraph_config.rb +92 -0
  179. data/app/components/hakumi_components/skeleton/title_config.rb +31 -0
  180. data/app/components/{hakumi → hakumi_components}/slider/component.html.erb +11 -11
  181. data/app/components/hakumi_components/slider/component.rb +347 -0
  182. data/app/components/hakumi_components/slider/mark.rb +27 -0
  183. data/app/components/hakumi_components/space/compact/component.html.erb +1 -0
  184. data/app/components/hakumi_components/space/compact/component.rb +52 -0
  185. data/app/components/{hakumi → hakumi_components}/space/component.html.erb +1 -1
  186. data/app/components/hakumi_components/space/component.rb +109 -0
  187. data/app/components/hakumi_components/spin/component.rb +270 -0
  188. data/app/components/hakumi_components/splitter/component.html.erb +9 -0
  189. data/app/components/hakumi_components/splitter/component.rb +71 -0
  190. data/app/components/hakumi_components/splitter/panel/component.html.erb +1 -0
  191. data/app/components/hakumi_components/splitter/panel/component.rb +98 -0
  192. data/app/components/hakumi_components/statistic/component.rb +371 -0
  193. data/app/components/{hakumi → hakumi_components}/steps/component.html.erb +4 -4
  194. data/app/components/hakumi_components/steps/component.rb +177 -0
  195. data/app/components/hakumi_components/steps/item/component.rb +130 -0
  196. data/app/components/{hakumi → hakumi_components}/switch/component.html.erb +2 -3
  197. data/app/components/hakumi_components/switch/component.rb +150 -0
  198. data/app/components/hakumi_components/table/column/component.rb +137 -0
  199. data/app/components/hakumi_components/table/column_definition.rb +181 -0
  200. data/app/components/{hakumi → hakumi_components}/table/column_group/component.rb +35 -24
  201. data/app/components/{hakumi → hakumi_components}/table/component.html.erb +22 -31
  202. data/app/components/hakumi_components/table/component.rb +470 -0
  203. data/app/components/hakumi_components/table/concerns/attribute_helpers.rb +22 -0
  204. data/app/components/hakumi_components/table/concerns/cell_rendering.rb +277 -0
  205. data/app/components/hakumi_components/table/concerns/columns.rb +421 -0
  206. data/app/components/hakumi_components/table/concerns/editable.rb +68 -0
  207. data/app/components/hakumi_components/table/concerns/ellipsis.rb +64 -0
  208. data/app/components/hakumi_components/table/concerns/fixed_columns.rb +94 -0
  209. data/app/components/hakumi_components/table/concerns/surface_rendering.rb +365 -0
  210. data/app/components/hakumi_components/table/configs.rb +518 -0
  211. data/app/components/hakumi_components/table/definition_types.rb +40 -0
  212. data/app/components/hakumi_components/table/display_rows.rb +56 -0
  213. data/app/components/hakumi_components/table/ellipsis_config.rb +143 -0
  214. data/app/components/hakumi_components/table/fixed_offset.rb +36 -0
  215. data/app/components/hakumi_components/table/header_cell.rb +23 -0
  216. data/app/components/hakumi_components/table/row_record.rb +60 -0
  217. data/app/components/hakumi_components/table/row_render_state.rb +85 -0
  218. data/app/components/{hakumi → hakumi_components}/tabs/component.html.erb +11 -11
  219. data/app/components/hakumi_components/tabs/component.rb +246 -0
  220. data/app/components/hakumi_components/tabs/indicator_config.rb +34 -0
  221. data/app/components/hakumi_components/tabs/item/component.rb +147 -0
  222. data/app/components/hakumi_components/tag/component.rb +282 -0
  223. data/app/components/{hakumi → hakumi_components}/tag/group/component.rb +20 -8
  224. data/app/components/{hakumi → hakumi_components}/time_picker/component.html.erb +10 -10
  225. data/app/components/{hakumi → hakumi_components}/time_picker/component.rb +75 -21
  226. data/app/components/hakumi_components/timeline/component.html.erb +8 -0
  227. data/app/components/hakumi_components/timeline/component.rb +301 -0
  228. data/app/components/{hakumi → hakumi_components}/timeline/item/component.html.erb +2 -2
  229. data/app/components/hakumi_components/timeline/item/component.rb +198 -0
  230. data/app/components/{hakumi → hakumi_components}/tooltip/component.html.erb +1 -1
  231. data/app/components/hakumi_components/tooltip/component.rb +146 -0
  232. data/app/components/hakumi_components/tour/component.rb +183 -0
  233. data/app/components/hakumi_components/tour/step.rb +86 -0
  234. data/app/components/hakumi_components/transfer/coercion.rb +66 -0
  235. data/app/components/hakumi_components/transfer/component.html.erb +204 -0
  236. data/app/components/hakumi_components/transfer/component.rb +395 -0
  237. data/app/components/hakumi_components/transfer/item.rb +54 -0
  238. data/app/components/hakumi_components/transfer/operations.rb +31 -0
  239. data/app/components/{hakumi → hakumi_components}/tree/component.html.erb +1 -1
  240. data/app/components/hakumi_components/tree/component.rb +342 -0
  241. data/app/components/hakumi_components/tree/concerns/node_rendering.rb +365 -0
  242. data/app/components/hakumi_components/tree/node.rb +276 -0
  243. data/app/components/{hakumi → hakumi_components}/tree_select/component.html.erb +27 -13
  244. data/app/components/hakumi_components/tree_select/component.rb +270 -0
  245. data/app/components/hakumi_components/typography/base_component.rb +142 -0
  246. data/app/components/hakumi_components/typography/link/component.rb +91 -0
  247. data/app/components/{hakumi → hakumi_components}/typography/paragraph/component.rb +7 -1
  248. data/{sig/hakumi/typography/text/component.rbs → app/components/hakumi_components/typography/text/component.rb} +3 -1
  249. data/app/components/hakumi_components/typography/title/component.rb +84 -0
  250. data/app/components/hakumi_components/upload/component.html.erb +135 -0
  251. data/app/components/hakumi_components/upload/component.rb +367 -0
  252. data/app/components/hakumi_components/upload/file_entry.rb +53 -0
  253. data/app/controllers/{hakumi → hakumi_components}/components_controller.rb +3 -2
  254. data/app/form_builders/hakumi_components/form_builder/contracts.rb +55 -0
  255. data/app/form_builders/hakumi_components/form_builder/field_context.rb +43 -0
  256. data/app/form_builders/hakumi_components/form_builder/model_binding.rb +163 -0
  257. data/app/form_builders/hakumi_components/form_builder.rb +403 -0
  258. data/app/helpers/hakumi_components/form_helper.rb +43 -0
  259. data/app/javascript/hakumi_components/controllers/hakumi/admin_panel_controller.js +5 -7
  260. data/app/javascript/hakumi_components/controllers/hakumi/back_top_controller.js +1 -1
  261. data/app/javascript/hakumi_components/controllers/hakumi/button_controller.js +108 -2
  262. data/app/javascript/hakumi_components/controllers/hakumi/calendar_controller.js +183 -95
  263. data/app/javascript/hakumi_components/controllers/hakumi/color_picker_controller.js +23 -285
  264. data/app/javascript/hakumi_components/controllers/hakumi/date_picker_controller.js +274 -262
  265. data/app/javascript/hakumi_components/controllers/hakumi/float_button_group_controller.js +2 -2
  266. data/app/javascript/hakumi_components/controllers/hakumi/message_controller.js +4 -2
  267. data/app/javascript/hakumi_components/controllers/hakumi/modal_controller.js +119 -125
  268. data/app/javascript/hakumi_components/controllers/hakumi/table/editable.js +291 -0
  269. data/app/javascript/hakumi_components/controllers/hakumi/table_controller.js +166 -366
  270. data/app/javascript/hakumi_components/controllers/hakumi/tabs_controller.js +8 -2
  271. data/app/javascript/hakumi_components/controllers/hakumi/tag_controller.js +27 -25
  272. data/app/javascript/hakumi_components/controllers/hakumi/tag_group_controller.js +19 -18
  273. data/app/javascript/hakumi_components/controllers/hakumi/theme_controller.js +116 -117
  274. data/app/javascript/hakumi_components/controllers/hakumi/transfer_controller.js +17 -1
  275. data/app/javascript/hakumi_components/controllers/hakumi/tree_controller.js +363 -78
  276. data/app/javascript/hakumi_components/controllers/hakumi/typography_controller.js +3 -3
  277. data/app/javascript/hakumi_components/controllers/hakumi/upload_controller.js +320 -204
  278. data/app/javascript/hakumi_components/core/render_component.js +37 -11
  279. data/app/javascript/hakumi_components/utils/color_helper.js +262 -0
  280. data/app/javascript/stylesheets/_base.scss +9 -0
  281. data/app/javascript/stylesheets/_hakumi_components.scss +1 -0
  282. data/app/javascript/stylesheets/components/_breadcrumb.scss +2 -2
  283. data/app/javascript/stylesheets/components/_calendar.scss +13 -13
  284. data/app/javascript/stylesheets/components/_cascader.scss +5 -5
  285. data/app/javascript/stylesheets/components/_checkbox.scss +9 -11
  286. data/app/javascript/stylesheets/components/_color_picker.scss +11 -11
  287. data/app/javascript/stylesheets/components/_date_picker.scss +4 -4
  288. data/app/javascript/stylesheets/components/_descriptions.scss +2 -2
  289. data/app/javascript/stylesheets/components/_drawer.scss +3 -3
  290. data/app/javascript/stylesheets/components/_dropdown.scss +2 -2
  291. data/app/javascript/stylesheets/components/_flex.scss +1 -1
  292. data/app/javascript/stylesheets/components/_float_button.scss +5 -5
  293. data/app/javascript/stylesheets/components/_form_item.scss +92 -0
  294. data/app/javascript/stylesheets/components/_image.scss +15 -15
  295. data/app/javascript/stylesheets/components/_input.scss +23 -113
  296. data/app/javascript/stylesheets/components/_layout.scss +27 -26
  297. data/app/javascript/stylesheets/components/_menu.scss +15 -15
  298. data/app/javascript/stylesheets/components/_modal.scss +13 -13
  299. data/app/javascript/stylesheets/components/_notification.scss +3 -3
  300. data/app/javascript/stylesheets/components/_popover.scss +1 -1
  301. data/app/javascript/stylesheets/components/_segmented.scss +3 -3
  302. data/app/javascript/stylesheets/components/_select.scss +6 -6
  303. data/app/javascript/stylesheets/components/_slider.scss +1 -1
  304. data/app/javascript/stylesheets/components/_spin.scss +2 -2
  305. data/app/javascript/stylesheets/components/_steps.scss +10 -10
  306. data/app/javascript/stylesheets/components/_switch.scss +11 -10
  307. data/app/javascript/stylesheets/components/_table.scss +6 -6
  308. data/app/javascript/stylesheets/components/_tag.scss +2 -2
  309. data/app/javascript/stylesheets/components/_tooltip.scss +4 -4
  310. data/app/javascript/stylesheets/components/_tree_select.scss +3 -3
  311. data/app/javascript/stylesheets/components/_typography.scss +3 -3
  312. data/app/javascript/stylesheets/components/_upload.scss +4 -4
  313. data/app/services/hakumi_components/component_handler.rb +124 -0
  314. data/app/services/hakumi_components/icon/loader.rb +112 -0
  315. data/app/services/hakumi_components/illustrations/loader.rb +51 -0
  316. data/app/views/hakumi/_admin_panel.html.erb +1 -1
  317. data/app/views/hakumi/_affix.html.erb +1 -1
  318. data/app/views/hakumi/_alert.html.erb +4 -1
  319. data/app/views/hakumi/_confirm.html.erb +1 -1
  320. data/app/views/hakumi/_drawer.html.erb +2 -2
  321. data/app/views/hakumi/_message.html.erb +1 -1
  322. data/app/views/hakumi/_modal.html.erb +1 -1
  323. data/app/views/hakumi/_notification.html.erb +1 -1
  324. data/app/views/hakumi/_popconfirm.html.erb +1 -1
  325. data/app/views/hakumi/_popover.html.erb +1 -1
  326. data/app/views/hakumi/_qr_code.html.erb +1 -1
  327. data/app/views/hakumi/_result.html.erb +1 -1
  328. data/app/views/hakumi/_segmented.html.erb +1 -1
  329. data/app/views/hakumi/_skeleton.html.erb +1 -1
  330. data/app/views/hakumi/_spin.html.erb +1 -1
  331. data/app/views/hakumi/_statistic.html.erb +12 -12
  332. data/app/views/hakumi/_table.html.erb +1 -1
  333. data/app/views/hakumi/_tag.html.erb +1 -1
  334. data/app/views/hakumi/_timeline.html.erb +1 -1
  335. data/app/views/hakumi/_tree.html.erb +1 -1
  336. data/lib/generators/{hakumi → hakumi_components}/install_generator.rb +17 -4
  337. data/lib/hakumi_components/documentation/models.rb +290 -0
  338. data/lib/hakumi_components/documentation/node.rb +73 -0
  339. data/lib/hakumi_components/documentation.rb +141 -64
  340. data/lib/hakumi_components/engine.rb +26 -14
  341. data/lib/hakumi_components/file_size_checker.rb +215 -0
  342. data/lib/hakumi_components/locales/en.yml +115 -0
  343. data/lib/hakumi_components/rails/attribute_introspection.rb +40 -108
  344. data/lib/hakumi_components/rails/model_reflection.rb +154 -0
  345. data/lib/hakumi_components/rails/validation_introspection.rb +26 -74
  346. data/lib/hakumi_components/rails/validation_mapper.rb +149 -202
  347. data/lib/hakumi_components/rails.rb +3 -1
  348. data/lib/hakumi_components/stylesheet_ownership_checker.rb +191 -0
  349. data/lib/hakumi_components/types/form_field.rb +24 -0
  350. data/lib/hakumi_components/types/html.rb +28 -0
  351. data/lib/hakumi_components/types/rendering.rb +10 -0
  352. data/lib/hakumi_components/types/stimulus.rb +19 -0
  353. data/lib/hakumi_components/types/validation.rb +22 -0
  354. data/lib/hakumi_components/types.rb +13 -0
  355. data/lib/hakumi_components/version.rb +3 -2
  356. data/lib/hakumi_components.rb +26 -5
  357. data/lib/tasks/coverage.rake +1 -0
  358. metadata +310 -346
  359. data/app/components/hakumi/admin_panel/component.rb +0 -40
  360. data/app/components/hakumi/affix/component.rb +0 -88
  361. data/app/components/hakumi/alert/component.rb +0 -84
  362. data/app/components/hakumi/anchor/component.rb +0 -80
  363. data/app/components/hakumi/anchor/link/component.rb +0 -34
  364. data/app/components/hakumi/autocomplete/component.html.erb +0 -74
  365. data/app/components/hakumi/autocomplete/component.rb +0 -202
  366. data/app/components/hakumi/avatar/component.rb +0 -91
  367. data/app/components/hakumi/badge/component.rb +0 -85
  368. data/app/components/hakumi/base_component.rb +0 -192
  369. data/app/components/hakumi/breadcrumb/component.rb +0 -27
  370. data/app/components/hakumi/breadcrumb/item/component.html.erb +0 -17
  371. data/app/components/hakumi/breadcrumb/item/component.rb +0 -35
  372. data/app/components/hakumi/button/component.rb +0 -121
  373. data/app/components/hakumi/calendar/component.rb +0 -448
  374. data/app/components/hakumi/card/component.rb +0 -94
  375. data/app/components/hakumi/card/grid/component.html.erb +0 -3
  376. data/app/components/hakumi/card/grid/component.rb +0 -37
  377. data/app/components/hakumi/card/meta/component.html.erb +0 -23
  378. data/app/components/hakumi/card/meta/component.rb +0 -46
  379. data/app/components/hakumi/carousel/component.rb +0 -147
  380. data/app/components/hakumi/cascader/component.html.erb +0 -41
  381. data/app/components/hakumi/cascader/component.rb +0 -119
  382. data/app/components/hakumi/checkbox/component.rb +0 -64
  383. data/app/components/hakumi/checkbox/group/component.html.erb +0 -12
  384. data/app/components/hakumi/checkbox/group/component.rb +0 -64
  385. data/app/components/hakumi/collapse/component.rb +0 -117
  386. data/app/components/hakumi/collapse/panel/component.rb +0 -65
  387. data/app/components/hakumi/color_picker/component.rb +0 -169
  388. data/app/components/hakumi/concerns/form_field.rb +0 -135
  389. data/app/components/hakumi/date_picker/component.rb +0 -140
  390. data/app/components/hakumi/date_picker/range_picker.rb +0 -136
  391. data/app/components/hakumi/date_picker/shared_rendering.rb +0 -199
  392. data/app/components/hakumi/descriptions/component.rb +0 -182
  393. data/app/components/hakumi/descriptions/item/component.rb +0 -28
  394. data/app/components/hakumi/divider/component.rb +0 -66
  395. data/app/components/hakumi/drawer/component.rb +0 -108
  396. data/app/components/hakumi/dropdown/component.rb +0 -97
  397. data/app/components/hakumi/dropdown/item/component.rb +0 -47
  398. data/app/components/hakumi/flex/component.rb +0 -78
  399. data/app/components/hakumi/float_button/back_top/component.rb +0 -79
  400. data/app/components/hakumi/float_button/component.rb +0 -203
  401. data/app/components/hakumi/float_button/group/component.rb +0 -227
  402. data/app/components/hakumi/float_button/group_cluster/component.rb +0 -141
  403. data/app/components/hakumi/grid/col/component.rb +0 -98
  404. data/app/components/hakumi/grid/row/component.rb +0 -79
  405. data/app/components/hakumi/image/component.rb +0 -112
  406. data/app/components/hakumi/image/preview_group/component.rb +0 -70
  407. data/app/components/hakumi/input/component.rb +0 -185
  408. data/app/components/hakumi/input/password/component.rb +0 -95
  409. data/app/components/hakumi/input/text_area/component.rb +0 -131
  410. data/app/components/hakumi/input_number/component.rb +0 -198
  411. data/app/components/hakumi/layout/component.html.erb +0 -1
  412. data/app/components/hakumi/layout/component.rb +0 -21
  413. data/app/components/hakumi/layout/content/component.html.erb +0 -1
  414. data/app/components/hakumi/layout/content/component.rb +0 -19
  415. data/app/components/hakumi/layout/footer/component.html.erb +0 -1
  416. data/app/components/hakumi/layout/footer/component.rb +0 -19
  417. data/app/components/hakumi/layout/header/component.html.erb +0 -1
  418. data/app/components/hakumi/layout/header/component.rb +0 -19
  419. data/app/components/hakumi/layout/sider/component.html.erb +0 -1
  420. data/app/components/hakumi/layout/sider/component.rb +0 -56
  421. data/app/components/hakumi/mentions/component.rb +0 -165
  422. data/app/components/hakumi/menu/component.rb +0 -126
  423. data/app/components/hakumi/menu/group/component.rb +0 -47
  424. data/app/components/hakumi/menu/item/component.rb +0 -47
  425. data/app/components/hakumi/menu/sub_menu/component.rb +0 -92
  426. data/app/components/hakumi/message/component.rb +0 -106
  427. data/app/components/hakumi/modal/component.rb +0 -99
  428. data/app/components/hakumi/modal/confirm/component.html.erb +0 -23
  429. data/app/components/hakumi/modal/confirm/component.rb +0 -46
  430. data/app/components/hakumi/modal/error/component.rb +0 -51
  431. data/app/components/hakumi/modal/info/component.rb +0 -51
  432. data/app/components/hakumi/modal/success/component.rb +0 -51
  433. data/app/components/hakumi/modal/warning/component.rb +0 -56
  434. data/app/components/hakumi/notification/component.rb +0 -126
  435. data/app/components/hakumi/pagination/component.rb +0 -205
  436. data/app/components/hakumi/popconfirm/component.rb +0 -72
  437. data/app/components/hakumi/popover/component.rb +0 -132
  438. data/app/components/hakumi/progress/component.rb +0 -565
  439. data/app/components/hakumi/qr_code/component.rb +0 -339
  440. data/app/components/hakumi/radio/component.rb +0 -80
  441. data/app/components/hakumi/radio/group/component.rb +0 -132
  442. data/app/components/hakumi/result/component.rb +0 -125
  443. data/app/components/hakumi/segmented/component.rb +0 -269
  444. data/app/components/hakumi/select/component.rb +0 -125
  445. data/app/components/hakumi/skeleton/avatar/component.rb +0 -66
  446. data/app/components/hakumi/skeleton/button/component.rb +0 -59
  447. data/app/components/hakumi/skeleton/component.rb +0 -200
  448. data/app/components/hakumi/skeleton/image/component.rb +0 -80
  449. data/app/components/hakumi/skeleton/input/component.rb +0 -51
  450. data/app/components/hakumi/skeleton/node/component.rb +0 -43
  451. data/app/components/hakumi/slider/component.rb +0 -228
  452. data/app/components/hakumi/space/compact/component.html.erb +0 -3
  453. data/app/components/hakumi/space/compact/component.rb +0 -36
  454. data/app/components/hakumi/space/component.rb +0 -73
  455. data/app/components/hakumi/spin/component.rb +0 -209
  456. data/app/components/hakumi/splitter/component.html.erb +0 -3
  457. data/app/components/hakumi/splitter/component.rb +0 -38
  458. data/app/components/hakumi/splitter/panel/component.html.erb +0 -3
  459. data/app/components/hakumi/splitter/panel/component.rb +0 -73
  460. data/app/components/hakumi/statistic/component.rb +0 -287
  461. data/app/components/hakumi/steps/component.rb +0 -145
  462. data/app/components/hakumi/steps/item/component.rb +0 -91
  463. data/app/components/hakumi/switch/component.rb +0 -124
  464. data/app/components/hakumi/table/column/component.rb +0 -80
  465. data/app/components/hakumi/table/component.rb +0 -731
  466. data/app/components/hakumi/table/concerns/columns.rb +0 -219
  467. data/app/components/hakumi/table/concerns/editable.rb +0 -121
  468. data/app/components/hakumi/table/concerns/ellipsis.rb +0 -63
  469. data/app/components/hakumi/table/concerns/fixed_columns.rb +0 -87
  470. data/app/components/hakumi/tabs/component.rb +0 -196
  471. data/app/components/hakumi/tabs/item/component.rb +0 -87
  472. data/app/components/hakumi/tag/component.rb +0 -187
  473. data/app/components/hakumi/timeline/component.html.erb +0 -7
  474. data/app/components/hakumi/timeline/component.rb +0 -168
  475. data/app/components/hakumi/timeline/item/component.rb +0 -137
  476. data/app/components/hakumi/tooltip/component.rb +0 -121
  477. data/app/components/hakumi/tour/component.rb +0 -158
  478. data/app/components/hakumi/transfer/component.html.erb +0 -173
  479. data/app/components/hakumi/transfer/component.rb +0 -245
  480. data/app/components/hakumi/tree/component.rb +0 -523
  481. data/app/components/hakumi/tree_select/component.rb +0 -261
  482. data/app/components/hakumi/typography/base_component.rb +0 -109
  483. data/app/components/hakumi/typography/link/component.rb +0 -34
  484. data/app/components/hakumi/typography/text/component.rb +0 -8
  485. data/app/components/hakumi/typography/title/component.rb +0 -29
  486. data/app/components/hakumi/upload/component.html.erb +0 -117
  487. data/app/components/hakumi/upload/component.rb +0 -193
  488. data/app/form_builders/hakumi/form_builder.rb +0 -482
  489. data/app/helpers/hakumi/form_helper.rb +0 -39
  490. data/app/services/hakumi/component_handler.rb +0 -53
  491. data/app/services/hakumi/icon/loader.rb +0 -95
  492. data/app/services/hakumi/illustrations/loader.rb +0 -43
  493. data/sig/action_view/tag_builder.rbs +0 -24
  494. data/sig/active_support/concern_patch.rbs +0 -7
  495. data/sig/generators/hakumi/install_generator.rbs +0 -11
  496. data/sig/hakumi/admin_panel/component.rbs +0 -28
  497. data/sig/hakumi/affix/component.rbs +0 -44
  498. data/sig/hakumi/alert/component.rbs +0 -64
  499. data/sig/hakumi/anchor/component.rbs +0 -45
  500. data/sig/hakumi/anchor/link/component.rbs +0 -31
  501. data/sig/hakumi/autocomplete/component.rbs +0 -68
  502. data/sig/hakumi/avatar/component.rbs +0 -44
  503. data/sig/hakumi/badge/component.rbs +0 -41
  504. data/sig/hakumi/base_component.rbs +0 -82
  505. data/sig/hakumi/breadcrumb/component.rbs +0 -21
  506. data/sig/hakumi/breadcrumb/item/component.rbs +0 -36
  507. data/sig/hakumi/button/component.rbs +0 -56
  508. data/sig/hakumi/calendar/component.rbs +0 -41
  509. data/sig/hakumi/card/component.rbs +0 -50
  510. data/sig/hakumi/card/grid/component.rbs +0 -21
  511. data/sig/hakumi/card/meta/component.rbs +0 -25
  512. data/sig/hakumi/carousel/component.rbs +0 -88
  513. data/sig/hakumi/cascader/component.rbs +0 -52
  514. data/sig/hakumi/checkbox/component.rbs +0 -46
  515. data/sig/hakumi/checkbox/group/component.rbs +0 -34
  516. data/sig/hakumi/collapse/component.rbs +0 -57
  517. data/sig/hakumi/collapse/panel/component.rbs +0 -47
  518. data/sig/hakumi/color_picker/component.rbs +0 -80
  519. data/sig/hakumi/concerns/form_field.rbs +0 -89
  520. data/sig/hakumi/container/component.rbs +0 -37
  521. data/sig/hakumi/date_picker/component.rbs +0 -72
  522. data/sig/hakumi/date_picker/range_picker.rbs +0 -68
  523. data/sig/hakumi/date_picker/shared_rendering.rbs +0 -41
  524. data/sig/hakumi/descriptions/component.rbs +0 -59
  525. data/sig/hakumi/descriptions/item/component.rbs +0 -31
  526. data/sig/hakumi/divider/component.rbs +0 -39
  527. data/sig/hakumi/drawer/component.rbs +0 -66
  528. data/sig/hakumi/dropdown/component.rbs +0 -45
  529. data/sig/hakumi/dropdown/divider/component.rbs +0 -11
  530. data/sig/hakumi/dropdown/item/component.rbs +0 -45
  531. data/sig/hakumi/empty/component.rbs +0 -40
  532. data/sig/hakumi/flex/component.rbs +0 -47
  533. data/sig/hakumi/float_button/back_top/component.rbs +0 -45
  534. data/sig/hakumi/float_button/component.rbs +0 -80
  535. data/sig/hakumi/float_button/group/component.rbs +0 -95
  536. data/sig/hakumi/float_button/group_cluster/component.rbs +0 -60
  537. data/sig/hakumi/form/item/component.rbs +0 -39
  538. data/sig/hakumi/form_builder.rbs +0 -37
  539. data/sig/hakumi/grid/col/component.rbs +0 -50
  540. data/sig/hakumi/grid/row/component.rbs +0 -46
  541. data/sig/hakumi/icon/component.rbs +0 -56
  542. data/sig/hakumi/image/component.rbs +0 -56
  543. data/sig/hakumi/image/preview_group/component.rbs +0 -28
  544. data/sig/hakumi/input/component.rbs +0 -71
  545. data/sig/hakumi/input/password/component.rbs +0 -27
  546. data/sig/hakumi/input/text_area/component.rbs +0 -42
  547. data/sig/hakumi/input_number/component.rbs +0 -85
  548. data/sig/hakumi/layout/component.rbs +0 -21
  549. data/sig/hakumi/layout/content/component.rbs +0 -19
  550. data/sig/hakumi/layout/footer/component.rbs +0 -19
  551. data/sig/hakumi/layout/header/component.rbs +0 -19
  552. data/sig/hakumi/layout/sider/component.rbs +0 -19
  553. data/sig/hakumi/mentions/component.rbs +0 -75
  554. data/sig/hakumi/menu/component.rbs +0 -52
  555. data/sig/hakumi/menu/divider/component.rbs +0 -11
  556. data/sig/hakumi/menu/group/component.rbs +0 -20
  557. data/sig/hakumi/menu/item/component.rbs +0 -42
  558. data/sig/hakumi/menu/sub_menu/component.rbs +0 -37
  559. data/sig/hakumi/message/component.rbs +0 -50
  560. data/sig/hakumi/modal/component.rbs +0 -76
  561. data/sig/hakumi/modal/confirm/component.rbs +0 -32
  562. data/sig/hakumi/modal/error/component.rbs +0 -27
  563. data/sig/hakumi/modal/info/component.rbs +0 -27
  564. data/sig/hakumi/modal/success/component.rbs +0 -27
  565. data/sig/hakumi/modal/warning/component.rbs +0 -27
  566. data/sig/hakumi/notification/component.rbs +0 -64
  567. data/sig/hakumi/pagination/component.rbs +0 -113
  568. data/sig/hakumi/popconfirm/component.rbs +0 -52
  569. data/sig/hakumi/popover/component.rbs +0 -66
  570. data/sig/hakumi/progress/component.rbs +0 -201
  571. data/sig/hakumi/qr_code/component.rbs +0 -111
  572. data/sig/hakumi/radio/component.rbs +0 -55
  573. data/sig/hakumi/radio/group/component.rbs +0 -71
  574. data/sig/hakumi/rails/attribute_introspection.rbs +0 -16
  575. data/sig/hakumi/rails/validation_introspection.rbs +0 -18
  576. data/sig/hakumi/rails/validation_mapper.rbs +0 -53
  577. data/sig/hakumi/rails.rbs +0 -6
  578. data/sig/hakumi/rate/component.rbs +0 -56
  579. data/sig/hakumi/result/component.rbs +0 -65
  580. data/sig/hakumi/segmented/component.rbs +0 -72
  581. data/sig/hakumi/select/component.rbs +0 -73
  582. data/sig/hakumi/skeleton/avatar/component.rbs +0 -23
  583. data/sig/hakumi/skeleton/button/component.rbs +0 -24
  584. data/sig/hakumi/skeleton/component.rbs +0 -76
  585. data/sig/hakumi/skeleton/image/component.rbs +0 -22
  586. data/sig/hakumi/skeleton/input/component.rbs +0 -23
  587. data/sig/hakumi/skeleton/node/component.rbs +0 -21
  588. data/sig/hakumi/slider/component.rbs +0 -85
  589. data/sig/hakumi/space/compact/component.rbs +0 -21
  590. data/sig/hakumi/space/component.rbs +0 -47
  591. data/sig/hakumi/spin/component.rbs +0 -77
  592. data/sig/hakumi/splitter/component.rbs +0 -27
  593. data/sig/hakumi/splitter/panel/component.rbs +0 -36
  594. data/sig/hakumi/statistic/component.rbs +0 -97
  595. data/sig/hakumi/steps/component.rbs +0 -82
  596. data/sig/hakumi/steps/item/component.rbs +0 -29
  597. data/sig/hakumi/switch/component.rbs +0 -52
  598. data/sig/hakumi/table/column/component.rbs +0 -57
  599. data/sig/hakumi/table/column_group/component.rbs +0 -20
  600. data/sig/hakumi/table/component.rbs +0 -279
  601. data/sig/hakumi/table/concerns/columns.rbs +0 -95
  602. data/sig/hakumi/table/concerns/editable.rbs +0 -40
  603. data/sig/hakumi/table/concerns/ellipsis.rbs +0 -27
  604. data/sig/hakumi/table/concerns/fixed_columns.rbs +0 -33
  605. data/sig/hakumi/tabs/component.rbs +0 -66
  606. data/sig/hakumi/tabs/item/component.rbs +0 -29
  607. data/sig/hakumi/tag/component.rbs +0 -86
  608. data/sig/hakumi/tag/group/component.rbs +0 -24
  609. data/sig/hakumi/time_picker/component.rbs +0 -72
  610. data/sig/hakumi/timeline/component.rbs +0 -61
  611. data/sig/hakumi/timeline/item/component.rbs +0 -70
  612. data/sig/hakumi/tooltip/component.rbs +0 -73
  613. data/sig/hakumi/tour/component.rbs +0 -84
  614. data/sig/hakumi/transfer/component.rbs +0 -75
  615. data/sig/hakumi/tree/component.rbs +0 -126
  616. data/sig/hakumi/tree_select/component.rbs +0 -122
  617. data/sig/hakumi/typography/base_component.rbs +0 -57
  618. data/sig/hakumi/typography/link/component.rbs +0 -28
  619. data/sig/hakumi/typography/paragraph/component.rbs +0 -13
  620. data/sig/hakumi/typography/title/component.rbs +0 -28
  621. data/sig/hakumi/upload/component.rbs +0 -78
  622. data/sig/hakumi.rbs +0 -96
  623. data/sig/rails/active_model/validations/comparison_validator.rbs +0 -6
  624. data/sig/rails.rbs +0 -18
  625. data/sig/view_component/base.rbs +0 -28
  626. /data/app/components/{hakumi → hakumi_components}/affix/component.html.erb +0 -0
  627. /data/app/components/{hakumi → hakumi_components}/anchor/component.html.erb +0 -0
  628. /data/app/components/{hakumi → hakumi_components}/breadcrumb/component.html.erb +0 -0
  629. /data/app/components/{hakumi → hakumi_components}/dropdown/component.html.erb +0 -0
  630. /data/app/components/{hakumi → hakumi_components}/dropdown/item/component.html.erb +0 -0
  631. /data/app/components/{hakumi → hakumi_components}/icon/component.html.erb +0 -0
  632. /data/app/components/{hakumi → hakumi_components}/menu/component.html.erb +0 -0
  633. /data/app/components/{hakumi → hakumi_components}/menu/group/component.html.erb +0 -0
  634. /data/app/components/{hakumi → hakumi_components}/menu/item/component.html.erb +0 -0
  635. /data/app/components/{hakumi → hakumi_components}/menu/sub_menu/component.html.erb +0 -0
  636. /data/app/components/{hakumi → hakumi_components}/message/component.html.erb +0 -0
  637. /data/app/components/{hakumi → hakumi_components}/qr_code/component.html.erb +0 -0
  638. /data/app/components/{hakumi → hakumi_components}/result/component.html.erb +0 -0
  639. /data/app/components/{hakumi → hakumi_components}/skeleton/avatar/component.html.erb +0 -0
  640. /data/app/components/{hakumi → hakumi_components}/skeleton/button/component.html.erb +0 -0
  641. /data/app/components/{hakumi → hakumi_components}/skeleton/component.html.erb +0 -0
  642. /data/app/components/{hakumi → hakumi_components}/skeleton/input/component.html.erb +0 -0
  643. /data/app/components/{hakumi → hakumi_components}/skeleton/node/component.html.erb +0 -0
  644. /data/app/components/{hakumi → hakumi_components}/spin/component.html.erb +0 -0
  645. /data/app/components/{hakumi → hakumi_components}/statistic/component.html.erb +0 -0
  646. /data/app/components/{hakumi → hakumi_components}/steps/item/component.html.erb +0 -0
  647. /data/app/components/{hakumi → hakumi_components}/tour/component.html.erb +0 -0
@@ -1,279 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hakumi
4
- module Table
5
- class Component < Hakumi::BaseComponent
6
- include Concerns::Columns
7
- include Concerns::Editable
8
- include Concerns::FixedColumns
9
- include Concerns::Ellipsis
10
-
11
- # Type aliases for Table component
12
- type table_size = :default | :middle | :small
13
- type row_selection_type = :checkbox | :radio
14
- type sort_direction = :ascend | :descend
15
- type fixed_side = :left | :right
16
- type responsive_breakpoint = :xs | :sm | :md | :lg | :xl | :xxl
17
- type editable_mode = :cell | :row
18
- type editable_trigger = :click | :dblclick
19
- type editable_input_type = :text | :number | :textarea | :select
20
- type row_button_action = :edit | :save | :cancel
21
-
22
- # Hash types for complex options
23
- type row_selection_options = {
24
- type: row_selection_type,
25
- selected_row_keys: Array[String | Integer],
26
- selectedRowKeys: Array[String | Integer],
27
- preserve_selected_row_keys: bool,
28
- preserveSelectedRowKeys: bool,
29
- selections: untyped
30
- }
31
-
32
- type expandable_options = {
33
- expanded_row_keys: Array[String | Integer],
34
- expandedRowKeys: Array[String | Integer],
35
- default_expanded_row_keys: Array[String | Integer],
36
- defaultExpandedRowKeys: Array[String | Integer],
37
- expanded_row_render: untyped, # Proc type
38
- show_expand_column: bool
39
- }
40
-
41
- type scroll_options = {
42
- x: (String | Integer | nil),
43
- y: (String | Integer | nil)
44
- }
45
-
46
- type editable_options = {
47
- mode: editable_mode,
48
- trigger: editable_trigger
49
- }
50
-
51
- type row_drag_options = {
52
- enabled: bool,
53
- handle: bool
54
- }
55
-
56
- # Column hash type - complex structure, using untyped for Proc fields
57
- type column_hash = {
58
- title: String,
59
- data_index: (String | Symbol)?,
60
- key: (String | Symbol)?,
61
- align: (:left | :center | :right)?,
62
- width: (String | Integer)?,
63
- ellipsis: (bool | Hash[Symbol, untyped])?,
64
- sorter: untyped, # Proc or bool
65
- sort_directions: Array[sort_direction]?,
66
- sort_order: sort_direction?,
67
- default_sort_order: sort_direction?,
68
- filters: Array[Hash[Symbol, untyped]]?,
69
- filter_multiple: bool?,
70
- filtered_value: Array[untyped]?,
71
- default_filtered_value: Array[untyped]?,
72
- filter_mode: Symbol?,
73
- filter_search: bool?,
74
- hidden: bool?,
75
- on_cell: untyped, # Proc returning Hash
76
- class_name: String?,
77
- render: untyped, # Proc for custom rendering
78
- children: Array[column_hash]?,
79
- fixed: fixed_side?,
80
- responsive: Array[responsive_breakpoint]?,
81
- editable: (bool | Hash[Symbol, untyped])?,
82
- should_cell_update: (String | Symbol)?,
83
- selection: bool?,
84
- expand: bool?,
85
- drag_handle: bool?,
86
- sort_value: untyped # Proc or Symbol
87
- }
88
-
89
- type pagination_options = {
90
- total: Integer,
91
- current: Integer,
92
- page_size: Integer,
93
- pageSize: Integer,
94
- page: Integer,
95
- href: String?,
96
- turbo_frame: String?,
97
- turbo_action: Symbol?,
98
- sort_field_param: String?,
99
- sort_order_param: String?,
100
- server_side: bool?,
101
- page_param: String?,
102
- per_page_param: String?,
103
- preserve_params: bool?,
104
- size: hakumi_size_standard?,
105
- align: (:left | :center | :right)?,
106
- simple: bool?,
107
- show_size_changer: bool?,
108
- show_quick_jumper: bool?,
109
- page_size_options: Array[Integer]?,
110
- show_total: (bool | untyped)?, # bool or Proc
111
- hide_on_single_page: bool?,
112
- prev_text: String?,
113
- next_text: String?
114
- }
115
-
116
- SIZES: Array[table_size]
117
- ROW_SELECTION_TYPES: Array[row_selection_type]
118
- SORT_DIRECTIONS: Array[sort_direction]
119
- FIXED_SIDES: Array[fixed_side]
120
- RESPONSIVE_BREAKPOINTS: Array[responsive_breakpoint]
121
- ROW_BUTTON_ACTIONS: Array[row_button_action]
122
-
123
- SELECTION_COLUMN: Symbol
124
- EXPAND_COLUMN: Symbol
125
-
126
- @columns_data: (Array[column_hash] | nil)
127
- @data_source: Array[untyped]
128
- @row_key: (Symbol | String | untyped) # Can be Proc
129
- @size: table_size
130
- @bordered: bool
131
- @title: (String | untyped)? # String or ViewComponent
132
- @footer: (String | untyped)? # String or ViewComponent
133
- @row_selection: (row_selection_options | Hash[Symbol, untyped])?
134
- @expandable: (expandable_options | Hash[Symbol, untyped])?
135
- @pagination: (pagination_options | Hash[Symbol, untyped] | untyped)? # Can be ViewComponent
136
- @summary: untyped # Proc or String
137
- @empty_text: (String | untyped)? # String, ViewComponent, or Proc
138
- @sort_directions: Array[sort_direction]
139
- @filter_on_close: bool
140
- @filter_mode: Symbol
141
- @filter_search: bool
142
- @children_column_name: Symbol
143
- @indent_size: Integer
144
- @scroll: (scroll_options | Hash[Symbol, untyped])?
145
- @scroll_x: (String | nil)
146
- @scroll_y: (String | nil)
147
- @sticky: bool
148
- @row_class_name: (String | untyped)? # String or Proc
149
- @editable: (editable_options | Hash[Symbol, untyped])?
150
- @row_drag: (row_drag_options | Hash[Symbol, untyped])?
151
- @column_drag: bool
152
- @data_url: String?
153
- @html_options: hakumi_html_options
154
- @selected_row_keys: Array[String]
155
- @row_selection_type: (row_selection_type | nil)
156
- @row_selection_preserve: bool
157
- @row_selection_selections: untyped
158
- @expanded_row_keys: Array[String]
159
- @header_rows: untyped
160
- @display_rows: Array[Hash[Symbol, untyped]]
161
- @leaf_columns: Array[column_hash]
162
- @normalized_columns: Array[column_hash]
163
- @first_data_column: (column_hash | nil)
164
- @fixed_offsets: Hash[Symbol, Hash[Symbol, untyped]]
165
-
166
- # Class methods
167
- def self.extract_controller_locals: (Hash[Symbol, untyped] params) -> Hash[Symbol, untyped]
168
- def self.parse_json_param: (untyped value) -> untyped
169
-
170
- def initialize: (
171
- ?columns: (Array[column_hash] | nil),
172
- ?data_source: Array[untyped],
173
- ?row_key: (Symbol | String | untyped),
174
- ?size: table_size,
175
- ?bordered: bool,
176
- ?title: (String | untyped)?,
177
- ?footer: (String | untyped)?,
178
- ?row_selection: (row_selection_options | Hash[Symbol, untyped])?,
179
- ?expandable: (expandable_options | Hash[Symbol, untyped])?,
180
- ?pagination: (pagination_options | Hash[Symbol, untyped] | untyped)?,
181
- ?summary: untyped,
182
- ?empty_text: (String | untyped)?,
183
- ?sort_directions: (Array[sort_direction] | sort_direction),
184
- ?filter_on_close: bool,
185
- ?filter_mode: Symbol,
186
- ?filter_search: bool,
187
- ?children_column_name: Symbol,
188
- ?indent_size: Integer,
189
- ?scroll: (scroll_options | Hash[Symbol, untyped])?,
190
- ?sticky: bool,
191
- ?row_class_name: (String | untyped)?,
192
- ?editable: (editable_options | Hash[Symbol, untyped])?,
193
- ?row_drag: (row_drag_options | Hash[Symbol, untyped])?,
194
- ?column_drag: bool,
195
- ?data_url: String?,
196
- **hakumi_html_options html_options
197
- ) -> void
198
-
199
- attr_reader row_selection: (row_selection_options | Hash[Symbol, untyped])?
200
- attr_reader expandable: (expandable_options | Hash[Symbol, untyped])?
201
- attr_reader pagination: (pagination_options | Hash[Symbol, untyped] | untyped)?
202
- attr_reader summary: untyped
203
-
204
- def table_classes: () -> String
205
- def table_container_attributes: () -> hakumi_html_options
206
- def table_attributes: () -> hakumi_html_options
207
- def container_classes: () -> String
208
- def wrapper_attributes: () -> hakumi_html_options
209
- def header_rows: () -> Array[Array[Hash[Symbol, untyped]]]
210
- def display_rows: () -> Array[Hash[Symbol, untyped]]
211
- def row_key_for: (untyped row, Integer index) -> (String | Integer | untyped)
212
- def row_selected?: (String row_key) -> bool
213
- def row_classes: (untyped row, Integer row_index, String row_key) -> String
214
- def cell_attributes: (column_hash column, untyped row, Integer row_index, Integer depth, ?String? row_key, ?untyped raw_value) -> hakumi_html_options
215
- def header_cell_attributes: (column_hash column, col_span: Integer, row_span: Integer) -> hakumi_html_options
216
- def cell_content: (column_hash column, untyped row, Integer row_index, ?untyped raw_value) -> untyped
217
- def render_cell_display: (column_hash column, untyped content, untyped raw_value, untyped row, Integer row_index) -> String
218
- def empty_state: () -> String
219
- def pagination_component: () -> untyped
220
- def ajax_pagination_component: () -> untyped
221
- def summary_content: () -> untyped
222
- def scroll_styles: () -> String
223
- def table_style: () -> String?
224
- def selection_column?: () -> bool
225
- def selection_actions?: () -> bool
226
- def selection_all_enabled?: () -> bool
227
- def expanded_row?: (String row_key) -> bool
228
- def expanded_row_content: (untyped row, Integer row_index) -> untyped
229
- def header_filter_options: (column_hash column) -> Array[untyped]
230
- def column_sortable?: (column_hash column) -> bool
231
- def column_filterable?: (column_hash column) -> bool
232
- def column_filter_multiple?: (column_hash column) -> bool
233
- def default_filtered_values: (column_hash column) -> Array[untyped]
234
- def default_sort_order: (column_hash column) -> (sort_direction | nil)
235
- def current_sort_state: () -> (Hash[Symbol, untyped] | nil)
236
- def header_cell_classes: (column_hash column) -> String
237
- def cell_classes: (column_hash column) -> String
238
- def selection_header_state: () -> Hash[Symbol, bool]
239
- def fixed_columns?: () -> bool
240
-
241
- private
242
-
243
- def normalize_row_selection!: () -> void
244
- def normalize_expandable!: () -> void
245
- def validate_props!: () -> void
246
- def normalize_scroll: (untyped value) -> (Hash[Symbol, String?] | nil)
247
- def fixed_offsets: () -> Hash[Symbol, Hash[Symbol, untyped]]
248
- def apply_fixed_column_attributes!: (Hash[Symbol, untyped] attrs, column_hash column, header: bool) -> void
249
- def apply_editable_attributes!: (Hash[Symbol, untyped] attrs, column_hash column) -> void
250
- def compute_fixed_offsets: (Array[column_hash] leaf_columns) -> void
251
- def fixed_column_width!: (column_hash column) -> Float
252
- def numeric_width: (untyped value) -> (Float | nil)
253
- def ellipsis_config: (column_hash column) -> (bool | Hash[Symbol, untyped] | nil)
254
- def normalize_ellipsis_option: (untyped option) -> (Hash[Symbol, untyped] | nil)
255
- def normalize_ellipsis_tooltip_option: (untyped option) -> (Hash[Symbol, untyped] | nil)
256
- def ellipsis_title: (untyped config, untyped raw_value, untyped content_fragment) -> (String | nil)
257
- def ellipsis_tooltip_component: (untyped config, untyped raw_value, untyped row, Integer row_index) -> untyped
258
- def responsive_classes: (column_hash column) -> Array[String]
259
- def extract_sort_value: (column_hash column, untyped row, untyped raw_value) -> untyped
260
- def normalize_responsive_breakpoints: (untyped value) -> (Array[responsive_breakpoint] | nil)
261
- def normalize_pagination_options: (Hash[Symbol, untyped] options) -> Hash[Symbol, untyped]
262
- def columns_data: () -> Array[column_hash]
263
- def build_display_rows: () -> Array[Hash[Symbol, untyped]]
264
- def flatten_tree: (Array[untyped] rows, ?Integer depth) -> Array[Hash[Symbol, untyped]]
265
- def apply_pagination: (Array[Hash[Symbol, untyped]] rows) -> Array[Hash[Symbol, untyped]]
266
- def value_from_row: (untyped row, (Symbol | String)? data_index) -> untyped
267
- def selection_cell: (untyped row, Integer row_index) -> Hash[Symbol, untyped]
268
- def expand_cell: (untyped row, Integer row_index) -> Hash[Symbol, untyped]
269
- def normalize_editable: (untyped value) -> (Hash[Symbol, untyped] | nil)
270
- def normalize_row_drag: (untyped value) -> (Hash[Symbol, untyped] | nil)
271
- def normalize_column_editable: (untyped value) -> (Hash[Symbol, untyped] | nil)
272
- def normalize_should_cell_update: (untyped value) -> (String | nil)
273
- def editable_config_json: () -> (String | nil)
274
- def columns_config_json: () -> String
275
- def cell_editable_payload: (column_hash column) -> (Hash[Symbol, untyped] | nil)
276
- def apply_should_cell_update_attributes!: (Hash[Symbol, untyped] attrs, column_hash column) -> void
277
- end
278
- end
279
- end
@@ -1,95 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hakumi
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 Hakumi
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 Hakumi
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 Hakumi
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 Hakumi
4
- module Tabs
5
- class Component < Hakumi::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 Hakumi
4
- module Tabs
5
- module Item
6
- class Component < Hakumi::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 Hakumi
4
- module Tag
5
- class Component < Hakumi::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 Hakumi
4
- module Tag
5
- module Group
6
- class Component < Hakumi::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