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,72 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Segmented
5
- class Component < HakumiComponents::BaseComponent
6
- # Segmented option hash structure
7
- type segmented_option = {
8
- label: (String | untyped), # String or ViewComponent
9
- value: (String | Integer | Symbol),
10
- disabled: bool,
11
- icon: (String | Symbol | untyped)?, # String, Symbol, or ViewComponent
12
- class_name: String?,
13
- aria_label: String?
14
- }
15
-
16
- SIZES: Array[hakumi_size_standard]
17
-
18
- @options: Array[segmented_option]
19
- @value: (String | nil)
20
- @disabled: bool
21
- @block: bool
22
- @vertical: bool
23
- @round: bool
24
- @name: String
25
- @size: hakumi_size_standard
26
- @aria_label: (String | nil)
27
- @html_options: hakumi_html_options
28
-
29
- # Class methods for controller integration
30
- def self.extract_controller_locals: (Hash[Symbol, untyped] params) -> Hash[Symbol, untyped]
31
- def self.parse_options_param: (untyped options) -> untyped
32
- def self.truthy_param?: (untyped value) -> bool
33
-
34
- def initialize: (
35
- ?options: Array[untyped],
36
- ?value: (String | Integer | Symbol)?,
37
- ?default_value: (String | Integer | Symbol)?,
38
- ?disabled: bool,
39
- ?block: bool,
40
- ?vertical: bool,
41
- ?round: bool,
42
- ?name: String?,
43
- ?size: hakumi_size_standard,
44
- ?aria_label: String?,
45
- **hakumi_html_options html_options
46
- ) -> void
47
-
48
- def wrapper_attributes: () -> hakumi_html_options
49
- def normalized_options: () -> Array[segmented_option]
50
- def option_classes: (segmented_option option) -> String
51
- def option_data_attributes: (segmented_option option) -> hakumi_html_options
52
- def option_input_attributes: (segmented_option option, Integer index) -> hakumi_html_options
53
- def option_selected?: (segmented_option option) -> bool
54
- def option_disabled?: (segmented_option option) -> bool
55
- def option_id: (Integer index) -> String
56
- def option_label: (segmented_option option) -> (String | nil)
57
- def option_icon: (segmented_option option) -> (String | nil)
58
-
59
- private
60
-
61
- def validate_props!: () -> void
62
- def wrapper_classes: () -> String
63
- def normalize_options: (Array[untyped] options) -> Array[segmented_option]
64
- def option_aria_label: (segmented_option option) -> (String | nil)
65
- def icon_only_option?: (segmented_option option) -> bool
66
- def data_attributes: () -> hakumi_html_options
67
- def normalize_value: ((String | Integer | Symbol)? value, (String | Integer | Symbol)? default_value) -> (String | nil)
68
- def normalize_size: ((String | Symbol)? size) -> (Symbol | nil)
69
- def normalize_string: (untyped value) -> (String | nil)
70
- end
71
- end
72
- end
@@ -1,73 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Select
5
- class Component < HakumiComponents::BaseComponent
6
- include HakumiComponents::Concerns::FormField
7
-
8
- type select_option = [String, (String | Integer | Float)]
9
-
10
- SIZES: Array[hakumi_size_standard]
11
- VARIANTS: Array[hakumi_variant_select]
12
- TRIGGERS: Array[hakumi_trigger]
13
-
14
- @name: String
15
- @options: Array[select_option | String | Integer]
16
- @label: String?
17
- @caption: String?
18
- @value: (String | Integer | Float)?
19
- @placeholder: String?
20
- @size: hakumi_size_standard
21
- @variant: hakumi_variant_select
22
- @trigger: hakumi_trigger
23
- @icon: hakumi_icon?
24
- @disabled: bool
25
- @required: bool
26
- @allow_clear: bool
27
- @show_search: bool
28
- @standalone: bool
29
- @errors: Array[String]
30
- @html_options: hakumi_html_options
31
-
32
- attr_reader variant: hakumi_variant_select
33
- attr_reader trigger: hakumi_trigger
34
- attr_reader icon: hakumi_icon?
35
-
36
- def initialize: (
37
- ?name: String?,
38
- ?options: Array[select_option | String | Integer],
39
- ?label: String?,
40
- ?caption: String?,
41
- ?value: (String | Integer | Float)?,
42
- ?placeholder: String?,
43
- ?size: hakumi_size_standard,
44
- ?variant: hakumi_variant_select,
45
- ?trigger: hakumi_trigger,
46
- ?icon: hakumi_icon?,
47
- ?disabled: bool,
48
- ?required: bool,
49
- ?allow_clear: bool,
50
- ?show_search: bool,
51
- ?standalone: bool,
52
- ?errors: (Array[String] | String)?,
53
- **hakumi_html_options html_options
54
- ) -> void
55
-
56
- private
57
-
58
- def validate_props!: () -> void
59
-
60
- def select_wrapper_classes: () -> String
61
-
62
- def borderless?: () -> bool
63
-
64
- def hover_trigger?: () -> bool
65
-
66
- def wrapper_attributes: () -> hakumi_html_options
67
-
68
- def selected_label: () -> (String | Integer | Float)?
69
-
70
- def formatted_options: () -> Array[select_option]
71
- end
72
- end
73
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Skeleton
5
- module Avatar
6
- class Component < HakumiComponents::BaseComponent
7
- @shape: Symbol
8
- @size: (Symbol | Integer)
9
- @active: bool
10
- @html_options: hakumi_html_options
11
-
12
- def initialize: (?shape: Symbol, ?size: (Symbol | Integer), ?active: bool, **hakumi_html_options html_options) -> void
13
-
14
- def call: () -> String
15
-
16
- private
17
-
18
- def wrapper_classes: () -> String
19
- def wrapper_attributes: () -> hakumi_html_options
20
- end
21
- end
22
- end
23
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Skeleton
5
- module Button
6
- class Component < HakumiComponents::BaseComponent
7
- @shape: Symbol
8
- @size: (Symbol | Integer)
9
- @active: bool
10
- @block: bool
11
- @html_options: hakumi_html_options
12
-
13
- def initialize: (?shape: Symbol, ?size: (Symbol | Integer), ?active: bool, ?block: bool, **hakumi_html_options html_options) -> void
14
-
15
- def call: () -> String
16
-
17
- private
18
-
19
- def wrapper_classes: () -> String
20
- def wrapper_attributes: () -> hakumi_html_options
21
- end
22
- end
23
- end
24
- end
@@ -1,76 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Skeleton
5
- class Component < HakumiComponents::BaseComponent
6
- type skeleton_avatar_size = :small | :default | :large
7
- type skeleton_avatar_shape = :circle | :square
8
- type skeleton_config = Hash[Symbol, untyped]
9
-
10
- AVATAR_SIZES: Array[skeleton_avatar_size]
11
- AVATAR_SHAPES: Array[skeleton_avatar_shape]
12
- DEFAULT_PARAGRAPH_ROWS: Integer
13
-
14
- # Extracts locals from controller params for dynamic rendering
15
- def self.extract_controller_locals: (untyped params) -> Hash[Symbol, untyped]
16
-
17
- def self.normalize_config_param: (untyped value) -> (skeleton_config | bool)?
18
-
19
- @loading: bool
20
- @active: bool
21
- @round: bool
22
- @avatar: skeleton_config?
23
- @title: skeleton_config?
24
- @paragraph: skeleton_config?
25
- @html_options: hakumi_html_options
26
-
27
- def initialize: (
28
- ?loading: bool,
29
- ?active: bool,
30
- ?avatar: skeleton_config | bool,
31
- ?title: skeleton_config | bool,
32
- ?paragraph: skeleton_config | bool,
33
- ?round: bool,
34
- **hakumi_html_options html_options
35
- ) -> void
36
-
37
- def loading?: () -> bool
38
-
39
- def wrapper_attributes: () -> hakumi_html_options
40
-
41
- def avatar?: () -> bool
42
-
43
- def title?: () -> bool
44
-
45
- def paragraph?: () -> bool
46
-
47
- def avatar_classes: () -> String
48
-
49
- def avatar_style: () -> String?
50
-
51
- def title_style: () -> String?
52
-
53
- def paragraph_row_widths: () -> Array[String]
54
-
55
- def paragraph_row_style: (String? width) -> String?
56
-
57
- def paragraph_rows: () -> Integer
58
-
59
- private
60
-
61
- def normalize_config: (untyped value) -> skeleton_config?
62
-
63
- def wrapper_classes: () -> String
64
-
65
- def avatar_size: () -> (skeleton_avatar_size | Numeric)
66
-
67
- def avatar_shape: () -> skeleton_avatar_shape
68
-
69
- def default_paragraph_widths: (Integer rows) -> Array[String]
70
-
71
- def validate_props!: () -> void
72
-
73
- def validate_inclusion_value: (Symbol name, untyped value, Array[untyped] allowed) -> void
74
- end
75
- end
76
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Skeleton
5
- module Image
6
- class Component < HakumiComponents::BaseComponent
7
- @shape: Symbol
8
- @active: bool
9
- @html_options: hakumi_html_options
10
-
11
- def initialize: (?shape: Symbol, ?active: bool, **hakumi_html_options html_options) -> void
12
-
13
- def call: () -> String
14
-
15
- private
16
-
17
- def wrapper_classes: () -> String
18
- def wrapper_attributes: () -> hakumi_html_options
19
- end
20
- end
21
- end
22
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Skeleton
5
- module Input
6
- class Component < HakumiComponents::BaseComponent
7
- @size: (Symbol | Integer)
8
- @active: bool
9
- @block: bool
10
- @html_options: hakumi_html_options
11
-
12
- def initialize: (?size: (Symbol | Integer), ?active: bool, ?block: bool, **hakumi_html_options html_options) -> void
13
-
14
- def call: () -> String
15
-
16
- private
17
-
18
- def wrapper_classes: () -> String
19
- def wrapper_attributes: () -> hakumi_html_options
20
- end
21
- end
22
- end
23
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Skeleton
5
- module Node
6
- class Component < HakumiComponents::BaseComponent
7
- @active: bool
8
- @html_options: hakumi_html_options
9
-
10
- def initialize: (?active: bool, **hakumi_html_options html_options) -> void
11
-
12
- def call: () -> String
13
-
14
- private
15
-
16
- def wrapper_classes: () -> String
17
- def wrapper_attributes: () -> hakumi_html_options
18
- end
19
- end
20
- end
21
- end
@@ -1,85 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Slider
5
- class Component < HakumiComponents::BaseComponent
6
- include HakumiComponents::Concerns::FormField
7
-
8
- type numeric_or_string = Numeric | String
9
- type slider_value = numeric_or_string | Array[numeric_or_string]
10
- type mark_entry = { value: numeric_or_string, label: numeric_or_string }
11
- type marks_hash = Hash[numeric_or_string, String]
12
- type marks_array = Array[mark_entry | numeric_or_string]
13
- type marks_input = marks_hash | marks_array
14
-
15
- @name: String
16
- @label: String?
17
- @caption: String?
18
- @value: slider_value?
19
- @default_value: slider_value?
20
- @min: numeric_or_string
21
- @max: numeric_or_string
22
- @step: numeric_or_string
23
- @range: bool
24
- @vertical: bool
25
- @marks: Array[mark_entry]
26
- @dots: bool
27
- @tooltip_visible: bool?
28
- @keyboard: bool
29
- @disabled: bool
30
- @allow_cross: bool
31
- @handle_min: (numeric_or_string | Array[numeric_or_string])?
32
- @handle_max: (numeric_or_string | Array[numeric_or_string])?
33
- @standalone: bool
34
- @required: bool
35
- @errors: Array[String]
36
- @html_attrs: hakumi_html_options
37
-
38
- def initialize: (
39
- ?name: String?,
40
- ?label: String?,
41
- ?caption: String?,
42
- ?value: slider_value?,
43
- ?default_value: slider_value?,
44
- ?min: numeric_or_string,
45
- ?max: numeric_or_string,
46
- ?step: numeric_or_string,
47
- ?range: bool,
48
- ?vertical: bool,
49
- ?marks: marks_input?,
50
- ?dots: bool,
51
- ?tooltip_visible: bool?,
52
- ?keyboard: bool,
53
- ?disabled: bool,
54
- ?allow_cross: bool,
55
- ?handle_min: (numeric_or_string | Array[numeric_or_string])?,
56
- ?handle_max: (numeric_or_string | Array[numeric_or_string])?,
57
- ?standalone: bool,
58
- ?required: bool,
59
- ?errors: (Array[String] | String),
60
- **hakumi_html_options html_attrs
61
- ) -> void
62
-
63
- def wrapper_attributes: () -> hakumi_html_options
64
- def input_name: () -> String
65
- def input_id_for: (Integer index) -> String
66
- def handle_count: () -> Integer
67
- def marks?: () -> bool
68
- def mark_style: (numeric_or_string value) -> String
69
- def dot_values: () -> Array[numeric_or_string]
70
-
71
- private
72
-
73
- def validate_props!: () -> void
74
- def validate_numeric_like!: (untyped value, String name) -> void
75
- def validate_range_values!: (untyped value, String name) -> void
76
- def component_html_class: () -> String
77
- def tooltip_visible_class?: () -> bool
78
- def tooltip_visible_value: () -> bool?
79
- def data_value: (slider_value? value) -> String?
80
- def handle_bounds_value: ((numeric_or_string | Array[numeric_or_string])? value) -> String?
81
- def normalize_marks: (marks_input? marks) -> Array[Hash[Symbol, numeric_or_string]]
82
- def position_percent: (numeric_or_string value) -> Numeric
83
- end
84
- end
85
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Space
5
- module Compact
6
- class Component < ViewComponent::Base
7
- @direction: Symbol
8
- @block: bool
9
- @html_options: hakumi_html_options
10
-
11
- def initialize: (?direction: Symbol, ?block: bool, **hakumi_html_options html_options) -> void
12
-
13
- private
14
-
15
- def html_attributes: () -> hakumi_html_options
16
- def css_classes: () -> String
17
- def inline_styles: () -> String
18
- end
19
- end
20
- end
21
- end
@@ -1,47 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Space
5
- class Component < ViewComponent::Base
6
- type space_direction = :horizontal | :vertical
7
- type space_size = :small | :middle | :large | Integer
8
- type space_align = :start | :center | :end | :baseline | :stretch
9
-
10
- @direction: space_direction
11
- @size: space_size
12
- @align: space_align?
13
- @wrap: bool
14
- @block: bool
15
- @split: untyped
16
- @html_options: hakumi_html_options
17
-
18
- def initialize: (
19
- ?direction: space_direction,
20
- ?size: space_size,
21
- ?align: space_align?,
22
- ?wrap: bool,
23
- ?block: bool,
24
- ?split: untyped,
25
- **hakumi_html_options html_options
26
- ) -> void
27
-
28
- attr_reader split: untyped
29
-
30
- private
31
-
32
- def html_attributes: () -> hakumi_html_options
33
-
34
- def css_classes: () -> String
35
-
36
- def inline_styles: () -> String
37
-
38
- def call: () -> String?
39
-
40
- def split_content: () -> String?
41
-
42
- class ItemComponent < ViewComponent::Base
43
- def call: () -> String
44
- end
45
- end
46
- end
47
- end
@@ -1,77 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Spin
5
- class Component < HakumiComponents::BaseComponent
6
- type spin_size = :small | :default | :large
7
- type spin_percent = Numeric | :auto
8
-
9
- SIZES: Array[spin_size]
10
-
11
- # Extracts locals from controller params for dynamic rendering
12
- def self.extract_controller_locals: (untyped params) -> Hash[Symbol, untyped]
13
-
14
- def self.parse_delay: (untyped value) -> Numeric?
15
-
16
- def self.parse_percent: (untyped value) -> (Numeric | :auto)?
17
-
18
- @spinning: bool
19
- @size: spin_size
20
- @tip: String?
21
- @delay: Numeric | String | nil
22
- @indicator: untyped
23
- @fullscreen: bool
24
- @percent: spin_percent?
25
- @html_options: hakumi_html_options
26
-
27
- def initialize: (
28
- ?spinning: bool,
29
- ?size: spin_size?,
30
- ?tip: String?,
31
- ?delay: Numeric | String | nil,
32
- ?indicator: untyped,
33
- ?fullscreen: bool,
34
- ?percent: spin_percent?,
35
- **hakumi_html_options html_options
36
- ) -> void
37
-
38
- def wrapper_attributes: () -> hakumi_html_options
39
-
40
- def nested?: () -> bool
41
-
42
- def indicator_markup: () -> String?
43
-
44
- def tip_markup: () -> String?
45
-
46
- def show_text?: () -> bool
47
-
48
- def progress?: () -> bool
49
-
50
- def progress_auto?: () -> bool
51
-
52
- def progress_component: () -> untyped
53
-
54
- private
55
-
56
- def validate_props!: () -> void
57
-
58
- def wrapper_classes: () -> String
59
-
60
- def data_attributes: () -> hakumi_html_options
61
-
62
- def normalized_delay: () -> (Numeric | String | nil)
63
-
64
- def percent_value: () -> (Numeric | :auto | String | nil)?
65
-
66
- def spinning_class?: () -> bool
67
-
68
- def progress_indicator: () -> String
69
-
70
- def default_indicator: () -> String
71
-
72
- def normalize_percent: (untyped value) -> spin_percent?
73
-
74
- def progress_size: () -> Integer
75
- end
76
- end
77
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Splitter
5
- class Component < HakumiComponents::BaseComponent
6
- type splitter_layout = :horizontal | :vertical
7
-
8
- @layout: splitter_layout
9
- @resizable: bool
10
- @html_options: hakumi_html_options
11
-
12
- def initialize: (
13
- ?layout: splitter_layout,
14
- ?resizable: bool,
15
- **hakumi_html_options html_options
16
- ) -> void
17
-
18
- private
19
-
20
- def html_attributes: () -> hakumi_html_options
21
-
22
- def css_classes: () -> String
23
-
24
- def inline_styles: () -> String
25
- end
26
- end
27
- end
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Splitter
5
- module Panel
6
- class Component < ViewComponent::Base
7
- @size: (Integer | String)?
8
- @min: (Integer | String)?
9
- @max: (Integer | String)?
10
- @resizable: bool
11
- # collapsible can be bool or hash config that gets JSON stringified
12
- @collapsible: (bool | Hash[Symbol, untyped])
13
- @html_options: hakumi_html_options
14
-
15
- def initialize: (
16
- ?size: (Integer | String)?,
17
- ?min: (Integer | String)?,
18
- ?max: (Integer | String)?,
19
- ?resizable: bool,
20
- # collapsible can be bool or hash with arbitrary config options
21
- ?collapsible: (bool | Hash[Symbol, untyped]),
22
- **hakumi_html_options html_options
23
- ) -> void
24
-
25
- private
26
-
27
- def html_attributes: () -> hakumi_html_options
28
- def css_classes: () -> String
29
- def inline_styles: () -> String
30
- def collapsible_config: () -> String
31
- def horizontal_layout?: () -> bool
32
- def vertical_layout?: () -> bool
33
- end
34
- end
35
- end
36
- end