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,84 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Tour
5
- class Component < HakumiComponents::BaseComponent
6
- type tour_size = "small" | "default" | "large"
7
- type tour_type = "default" | "primary"
8
- type tour_placement = "top" | "top_left" | "top_right" | "bottom" | "bottom_left" | "bottom_right" | "left" | "left_top" | "left_bottom" | "right" | "right_top" | "right_bottom"
9
-
10
- type tour_step = {
11
- title: String,
12
- body: String,
13
- target: String?,
14
- placement: String
15
- }
16
-
17
- SIZES: Array[tour_size]
18
- TYPES: Array[tour_type]
19
- PLACEMENTS: Array[tour_placement]
20
-
21
- @steps: Array[untyped]
22
- @open: bool
23
- @current: Integer
24
- @size: tour_size
25
- @type: tour_type
26
- @placement: tour_placement
27
- @mask: bool
28
- @mask_closable: bool
29
- @closable: bool
30
- @show_progress: bool
31
- @html_attrs: hakumi_html_options
32
- @component_id: String
33
- @normalized_steps: Array[tour_step]?
34
-
35
- def initialize: (
36
- ?steps: Array[untyped],
37
- ?open: bool,
38
- ?current: Integer,
39
- ?size: tour_size,
40
- ?type: tour_type,
41
- ?placement: tour_placement,
42
- ?mask: bool,
43
- ?mask_closable: bool,
44
- ?closable: bool,
45
- ?show_progress: bool,
46
- **hakumi_html_options html_attrs
47
- ) -> void
48
-
49
- def component_html_attributes: () -> hakumi_html_options
50
-
51
- def title_id: () -> String
52
-
53
- def body_id: () -> String
54
-
55
- def current_step_title: () -> String
56
-
57
- def current_step_body: () -> String
58
-
59
- def progress_label: () -> String?
60
-
61
- def first_step?: () -> bool
62
-
63
- def last_step?: () -> bool
64
-
65
- private
66
-
67
- def component_html_class: () -> String
68
-
69
- def validate_props!: () -> void
70
-
71
- def validate_steps!: () -> void
72
-
73
- def normalized_steps: () -> Array[tour_step]
74
-
75
- def steps_json: () -> String
76
-
77
- def current_step: () -> tour_step
78
-
79
- def current_index: () -> Integer
80
-
81
- def normalized_placement: ((String | Symbol)? value) -> String
82
- end
83
- end
84
- end
@@ -1,75 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Transfer
5
- class Component < HakumiComponents::BaseComponent
6
- type pagination_config = bool | Hash[Symbol, untyped]
7
-
8
- DEFAULT_TITLES: Array[String]
9
-
10
- @data_source: Array[Hash[Symbol, untyped]]
11
- @target_keys: Array[String]
12
- @titles: Array[String]
13
- @disabled: bool
14
- @show_search: bool
15
- @show_select_all: bool
16
- @one_way: bool
17
- @pagination: pagination_config
18
- @name: String
19
- @render_item: (Proc | untyped)?
20
- @operations: Hash[Symbol, Symbol]
21
- @search_placeholder: String?
22
- @html_options: hakumi_html_options
23
-
24
- def self.extract_controller_locals: (Hash[Symbol, untyped] params) -> Hash[Symbol, untyped]
25
- def self.parse_data_source: (untyped value) -> Array[untyped]
26
- def self.parse_json_array: (untyped value) -> Array[untyped]
27
- def self.parse_pagination: (untyped value) -> pagination_config
28
- def self.boolean_param: (untyped value, ?default: bool) -> bool
29
-
30
- def initialize: (
31
- data_source: Array[untyped],
32
- ?target_keys: Array[untyped],
33
- ?titles: (Array[String] | String)?,
34
- ?disabled: bool,
35
- ?show_search: bool,
36
- ?show_select_all: bool,
37
- ?one_way: bool,
38
- ?pagination: pagination_config,
39
- ?name: String?,
40
- ?render_item: (Proc | untyped)?,
41
- ?operations: Hash[Symbol, Symbol]?,
42
- ?search_placeholder: String?,
43
- **hakumi_html_options html_options
44
- ) -> void
45
-
46
- attr_reader titles: Array[String]
47
- attr_reader operations: Hash[Symbol, Symbol]
48
-
49
- def search_placeholder: () -> String
50
- def wrapper_attributes: () -> hakumi_html_options
51
- def source_items: () -> Array[Hash[Symbol, untyped]]
52
- def target_items: () -> Array[Hash[Symbol, untyped]]
53
- def show_search?: () -> bool
54
- def show_select_all?: () -> bool
55
- def disabled?: () -> bool
56
- def one_way?: () -> bool
57
- def pagination?: () -> bool
58
- def item_classes: (Hash[Symbol, untyped] item) -> String
59
- def item_checkbox_id: (Hash[Symbol, untyped] item, String panel, Integer index) -> String
60
- def item_content: (Hash[Symbol, untyped] item) -> String?
61
- def item_description: (Hash[Symbol, untyped] item) -> String?
62
-
63
- private
64
-
65
- def wrapper_classes: () -> String
66
- def data_attributes: () -> hakumi_html_options
67
- def pagination_data_value: () -> (String | Hash[Symbol, untyped] | bool | nil)
68
- def normalize_data_source: (Array[untyped] data_source) -> Array[Hash[Symbol, untyped]]
69
- def normalize_titles: ((Array[String] | String)? titles) -> Array[Array[String] | String]
70
- def normalize_operations: (Hash[Symbol, Symbol]? operations) -> Hash[Symbol, Symbol]
71
- def normalize_string: (untyped value) -> String?
72
- def validate_props!: () -> void
73
- end
74
- end
75
- end
@@ -1,126 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Tree
5
- class Component < HakumiComponents::BaseComponent
6
- DEFAULT_INDENT: Integer
7
-
8
- # Tree node hash structure
9
- type tree_node = {
10
- key: String,
11
- title: String,
12
- children: Array[tree_node],
13
- disabled: bool,
14
- selectable: bool,
15
- checkable: bool,
16
- disable_checkbox: bool,
17
- icon: (String | Symbol)?,
18
- switcher_icon: (String | Symbol)?,
19
- async: bool,
20
- loading: bool,
21
- level: Integer,
22
- parent_key: (String | nil),
23
- leaf: bool,
24
- is_leaf: bool
25
- }
26
-
27
- type switcher_config = {
28
- default: (String | Symbol)
29
- } | {
30
- collapse: (String | Symbol),
31
- expand: (String | Symbol)
32
- }
33
-
34
- @nodes: Array[Hash[Symbol, untyped]]
35
- @checkable: bool
36
- @selectable: bool
37
- @disabled: bool
38
- @default_expand_keys: Array[String]
39
- @default_selected_keys: Array[String]
40
- @default_checked_keys: Array[String]
41
- @expanded_keys: (Array[String] | nil)
42
- @selected_keys: (Array[String] | nil)
43
- @checked_keys: (Array[String] | nil)
44
- @show_line: bool
45
- @switcher_icon: (String | Symbol)?
46
- @icon: (String | Symbol)?
47
- @directory: bool
48
- @multiple: bool
49
- @draggable: bool
50
- @block_node: bool
51
- @searchable: bool
52
- @search_placeholder: String
53
- @height: (Integer | String)?
54
- @check_strictly: bool
55
- @indent: Integer
56
- @html_options: hakumi_html_options
57
- @normalized_nodes: Array[tree_node]
58
-
59
- # Class methods for controller integration
60
- def self.extract_controller_locals: (Hash[Symbol, untyped] params) -> Hash[Symbol, untyped]
61
- def self.parse_nodes: (untyped value) -> Array[untyped]
62
- def self.parse_json_array: (untyped value, ?allow_nil: bool) -> (Array[untyped] | nil)
63
- def self.boolean_param: (untyped value, ?default: bool) -> bool
64
-
65
- def initialize: (
66
- nodes: Array[Hash[Symbol, untyped]],
67
- ?checkable: bool,
68
- ?selectable: bool,
69
- ?disabled: bool,
70
- ?default_expand_keys: (Array[String | Integer] | String | Integer),
71
- ?default_selected_keys: (Array[String | Integer] | String | Integer),
72
- ?default_checked_keys: (Array[String | Integer] | String | Integer),
73
- ?expanded_keys: (Array[String | Integer] | String | Integer | nil)?,
74
- ?selected_keys: (Array[String | Integer] | String | Integer | nil)?,
75
- ?checked_keys: (Array[String | Integer] | String | Integer | nil)?,
76
- ?show_line: bool,
77
- ?switcher_icon: (String | Symbol)?,
78
- ?icon: (String | Symbol)?,
79
- ?directory: bool,
80
- ?multiple: bool,
81
- ?draggable: bool,
82
- ?block_node: bool,
83
- ?searchable: bool,
84
- ?search_placeholder: String,
85
- ?height: (Integer | String)?,
86
- ?check_strictly: bool,
87
- ?indent: Integer,
88
- **hakumi_html_options html_options
89
- ) -> void
90
-
91
- attr_reader normalized_nodes: Array[tree_node]
92
-
93
- def wrapper_attributes: () -> hakumi_html_options
94
- def list_attributes: () -> hakumi_html_options
95
- def searchable?: () -> bool
96
- def search_placeholder: () -> String
97
- def render_node_template: () -> String
98
- def render_indent: (Array[bool] level_mask) -> String
99
- def render_nodes: (Array[tree_node] nodes, ?level_mask: Array[bool]) -> String
100
- def wrapper_classes: () -> String
101
- def list_classes: () -> String
102
- def data_attributes: () -> hakumi_html_options
103
-
104
- private
105
-
106
- def validate_props!: () -> void
107
- def normalize_nodes: (Array[Hash[Symbol, untyped]] nodes, ?parent_key: String?, ?level: Integer) -> Array[tree_node]
108
- def render_node: (tree_node node, index: Integer, total: Integer, level_mask: Array[bool], has_next: bool) -> String
109
- def node_classes: (tree_node node) -> String
110
- def node_data: (tree_node node, index: Integer, total: Integer, has_next: bool) -> Hash[Symbol, untyped]
111
- def node_aria: (tree_node node) -> Hash[Symbol, untyped]
112
- def render_node_content_wrapper: (tree_node node) -> String
113
- def render_switcher: (tree_node node) -> String
114
- def normalize_switcher_conf: ((String | Symbol | Hash[Symbol, untyped]) icon_or_conf) -> (switcher_config | Hash[Symbol, untyped])
115
- def render_checkbox: (tree_node node) -> (String | nil)
116
- def render_icon: (tree_node node) -> (String | nil)
117
- def render_title: (tree_node node) -> String
118
- def render_node_children: (tree_node node, ?Array[bool] level_mask) -> (String | nil)
119
- def switcher_classes: (bool is_leaf) -> String
120
- def expanded?: (String key) -> bool
121
- def selected?: (String key) -> bool
122
- def checked?: (String key) -> bool
123
- def half_checked?: (String _key) -> bool
124
- end
125
- end
126
- end
@@ -1,122 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module TreeSelect
5
- class Component < HakumiComponents::BaseComponent
6
- include HakumiComponents::Concerns::FormField
7
-
8
- type tree_select_status = nil | :error | :warning
9
- type tree_node = {
10
- key: String,
11
- title: String,
12
- children: Array[tree_node],
13
- disabled: bool?,
14
- selectable: bool?,
15
- checkable: bool?,
16
- disable_checkbox: bool?,
17
- icon: hakumi_icon?,
18
- switcher_icon: hakumi_icon?,
19
- async: bool?,
20
- loading: bool?
21
- }
22
-
23
- SIZES: Array[hakumi_size_standard]
24
- VARIANTS: Array[hakumi_variant_select]
25
- STATUSES: Array[tree_select_status]
26
-
27
- @name: String
28
- @options: Array[Hash[Symbol, untyped]]
29
- @value: (String | Integer | Float | Array[String | Integer | Float])?
30
- @placeholder: String
31
- @multiple: bool
32
- @tree_checkable: bool
33
- @show_search: bool
34
- @tree_default_expand_all: bool
35
- @tree_selectable_leaf_only: bool
36
- @disabled: bool
37
- @allow_clear: bool
38
- @size: hakumi_size_standard
39
- @variant: hakumi_variant_select
40
- @status: tree_select_status
41
- @max_count: Integer?
42
- @prefix: String?
43
- @prefix_icon: hakumi_icon?
44
- @label: String?
45
- @caption: String?
46
- @errors: Array[String]
47
- @standalone: bool
48
- @required: bool
49
- @html_options: hakumi_html_options
50
- @normalized_options: Array[tree_node]?
51
-
52
- attr_reader prefix: String?
53
- attr_reader prefix_icon: hakumi_icon?
54
-
55
- def initialize: (
56
- ?name: String?,
57
- ?options: Array[Hash[Symbol, untyped]],
58
- ?value: (String | Integer | Float | Array[String | Integer | Float])?,
59
- ?placeholder: String,
60
- ?multiple: bool,
61
- ?tree_checkable: bool,
62
- ?show_search: bool,
63
- ?tree_default_expand_all: bool,
64
- ?tree_selectable_leaf_only: bool,
65
- ?disabled: bool,
66
- ?allow_clear: bool,
67
- ?size: hakumi_size_standard,
68
- ?variant: hakumi_variant_select,
69
- ?status: tree_select_status,
70
- ?max_count: Integer?,
71
- ?prefix: String?,
72
- ?prefix_icon: hakumi_icon?,
73
- ?label: String?,
74
- ?caption: String?,
75
- ?errors: (Array[String] | String)?,
76
- ?standalone: bool,
77
- ?required: bool,
78
- **hakumi_html_options html_options
79
- ) -> void
80
-
81
- def wrapper_attributes: () -> hakumi_html_options
82
-
83
- def has_prefix?: () -> bool
84
-
85
- def empty_options?: () -> bool
86
-
87
- def borderless?: () -> bool
88
-
89
- def effective_status: () -> tree_select_status
90
-
91
- def tree_component_options: () -> Hash[Symbol, untyped]
92
-
93
- def input_value: () -> (String | Array[String])?
94
-
95
- def display_label: () -> String?
96
-
97
- def has_value?: () -> bool
98
-
99
- private
100
-
101
- def validate_props!: () -> void
102
-
103
- def wrapper_classes: () -> String
104
-
105
- def normalized_options: () -> Array[tree_node]
106
-
107
- def normalize_options: (Array[Hash[Symbol, untyped]] options, ?parent_key: String?) -> Array[tree_node]
108
-
109
- def selected_keys: () -> Array[String]
110
-
111
- def multi_value?: () -> bool
112
-
113
- def selected_labels: () -> Array[String]
114
-
115
- def build_label_map: (Array[tree_node] options, ?Hash[String, String] map) -> Hash[String, String]
116
-
117
- def default_expand_keys: () -> Array[String]
118
-
119
- def collect_keys: (Array[tree_node] options, ?Array[String] keys) -> Array[String]
120
- end
121
- end
122
- end
@@ -1,57 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Typography
5
- class BaseComponent < HakumiComponents::BaseComponent
6
- type typography_type = :secondary | :success | :warning | :danger
7
-
8
- TYPES: Array[typography_type]
9
-
10
- @type: typography_type?
11
- @disabled: bool
12
- @mark: bool
13
- @code: bool
14
- @keyboard: bool
15
- @underline: bool
16
- @delete: bool
17
- @strong: bool
18
- @italic: bool
19
- @copyable: bool
20
- @copied_text: String
21
- @copy_error_text: String
22
- @html_options: hakumi_html_options
23
-
24
- def initialize: (
25
- ?type: typography_type?,
26
- ?disabled: bool,
27
- ?mark: bool,
28
- ?code: bool,
29
- ?keyboard: bool,
30
- ?underline: bool,
31
- ?delete: bool,
32
- ?strong: bool,
33
- ?italic: bool,
34
- ?copyable: bool,
35
- ?copied_text: String,
36
- ?copy_error_text: String,
37
- **hakumi_html_options html_options
38
- ) -> void
39
-
40
- def call: () -> String
41
-
42
- private
43
-
44
- def validate_props!: () -> void
45
-
46
- def tag_name: () -> (String | Symbol)
47
-
48
- def wrapper_classes: () -> String
49
-
50
- def wrapper_attributes: () -> hakumi_html_options
51
-
52
- def content_wrapper: () -> String
53
-
54
- def copy_icon: () -> String
55
- end
56
- end
57
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Typography
5
- module Link
6
- class Component < BaseComponent
7
- @href: String
8
- @target: String?
9
- @rel: String?
10
-
11
- def initialize: (
12
- href: String,
13
- ?target: String?,
14
- ?rel: String?,
15
- **hakumi_html_options html_options
16
- ) -> void
17
-
18
- private
19
-
20
- def tag_name: () -> Symbol
21
-
22
- def wrapper_classes: () -> String
23
-
24
- def wrapper_attributes: () -> hakumi_html_options
25
- end
26
- end
27
- end
28
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Typography
5
- module Paragraph
6
- class Component < BaseComponent
7
- private
8
-
9
- def tag_name: () -> Symbol
10
- end
11
- end
12
- end
13
- end
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Typography
5
- module Text
6
- class Component < BaseComponent
7
- end
8
- end
9
- end
10
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Typography
5
- module Title
6
- class Component < BaseComponent
7
- type title_level = 1 | 2 | 3 | 4 | 5
8
-
9
- LEVELS: Array[title_level]
10
-
11
- @level: title_level
12
-
13
- def initialize: (
14
- ?level: title_level,
15
- **hakumi_html_options html_options
16
- ) -> void
17
-
18
- private
19
-
20
- def validate_props!: () -> void
21
-
22
- def tag_name: () -> String
23
-
24
- def wrapper_classes: () -> String
25
- end
26
- end
27
- end
28
- end
@@ -1,78 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module HakumiComponents
4
- module Upload
5
- class Component < HakumiComponents::BaseComponent
6
- type list_type = :text | :picture | :picture_card | :avatar
7
- type avatar_shape = :circle | :square
8
-
9
- LIST_TYPES: Array[list_type]
10
-
11
- @action: String
12
- @name: String
13
- @accept: String?
14
- @multiple: bool
15
- @max_count: Integer?
16
- @max_size: Integer?
17
- @disabled: bool
18
- @list_type: list_type
19
- @show_upload_list: bool
20
- @drag: bool
21
- @headers: Hash[String, String]?
22
- @data: Hash[String, untyped]?
23
- @default_file_list: Array[untyped]
24
- @with_credentials: bool
25
- @auto_upload: bool
26
- @inline_trigger: bool
27
- @avatar_shape: avatar_shape
28
- @avatar_size: Integer
29
- @avatar_icon: hakumi_icon
30
- @html_options: hakumi_html_options
31
-
32
- def initialize: (
33
- action: String,
34
- name: String,
35
- ?accept: String?,
36
- ?multiple: bool,
37
- ?max_count: Integer?,
38
- ?max_size: Integer?,
39
- ?disabled: bool,
40
- ?list_type: list_type,
41
- ?show_upload_list: bool,
42
- ?drag: bool,
43
- ?headers: Hash[String, String]?,
44
- ?data: Hash[String, untyped]?,
45
- ?default_file_list: Array[untyped],
46
- ?with_credentials: bool,
47
- ?auto_upload: bool,
48
- ?inline_trigger: bool,
49
- ?avatar_shape: avatar_shape,
50
- ?avatar_size: Integer,
51
- ?avatar_icon: hakumi_icon,
52
- **hakumi_html_options html_options
53
- ) -> void
54
-
55
- def wrapper_classes: () -> String
56
- def upload_list_classes: () -> String
57
- def file_item_classes: (Hash[Symbol, untyped] file) -> String
58
- def list_type_picture?: () -> bool
59
- def list_type_class: () -> String
60
- def progress_percent: (Hash[Symbol, untyped] file) -> Integer
61
- def progress_style: (Hash[Symbol, untyped] file) -> String?
62
- def normalized_file_list: () -> Array[Hash[Symbol, untyped]]
63
- def action_label: () -> String
64
- def stimulus_controller: () -> String
65
- def stimulus_values: () -> Hash[Symbol, untyped]
66
- def list_type_avatar?: () -> bool
67
- def avatar_overlay_class: () -> String
68
- def inline_trigger?: () -> bool
69
- def stimulus_data_attributes: () -> Hash[String, untyped]
70
- def wrapper_attributes: () -> hakumi_html_options
71
- def input_attributes: () -> hakumi_html_options
72
-
73
- private
74
-
75
- def validate_props!: () -> void
76
- end
77
- end
78
- end