ruflet_core 0.0.16 → 0.0.18

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 (188) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -18
  3. data/lib/ruflet/version.rb +1 -1
  4. data/lib/ruflet_core.rb +9 -7
  5. data/lib/ruflet_protocol/ruflet/protocol.rb +28 -54
  6. data/lib/ruflet_ui/ruflet/app.rb +1 -1
  7. data/lib/ruflet_ui/ruflet/colors.rb +4 -18
  8. data/lib/ruflet_ui/ruflet/control.rb +65 -63
  9. data/lib/ruflet_ui/ruflet/dsl.rb +10 -3
  10. data/lib/ruflet_ui/ruflet/icons/cupertino/cupertino_icons.rb +2 -2
  11. data/lib/ruflet_ui/ruflet/icons/cupertino_icon_lookup.rb +1 -0
  12. data/lib/ruflet_ui/ruflet/icons/icon_constant_names.rb +29 -0
  13. data/lib/ruflet_ui/ruflet/icons/material/material_icons.rb +2 -2
  14. data/lib/ruflet_ui/ruflet/icons/material_icon_lookup.rb +1 -0
  15. data/lib/ruflet_ui/ruflet/page.rb +303 -460
  16. data/lib/ruflet_ui/ruflet/ui/control_factory.rb +68 -12
  17. data/lib/ruflet_ui/ruflet/ui/control_registry.rb +13 -6
  18. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoactionsheet_control.rb +8 -45
  19. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoactionsheetaction_control.rb +45 -2
  20. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoactivityindicator_control.rb +43 -2
  21. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoalertdialog_control.rb +0 -5
  22. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinobutton_control.rb +59 -4
  23. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinocheckbox_control.rb +56 -1
  24. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinocontextmenu_control.rb +1 -3
  25. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinocontextmenuaction_control.rb +1 -1
  26. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinodatepicker_control.rb +53 -8
  27. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinodialogaction_control.rb +1 -1
  28. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinofilledbutton_control.rb +59 -4
  29. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinolisttile_control.rb +54 -9
  30. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinonavigationbar_control.rb +47 -9
  31. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinopicker_control.rb +52 -10
  32. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoradio_control.rb +52 -1
  33. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinosegmentedbutton_control.rb +49 -1
  34. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoslider_control.rb +50 -5
  35. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoslidingsegmentedbutton_control.rb +46 -1
  36. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoswitch_control.rb +61 -1
  37. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinotextfield_control.rb +145 -1
  38. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinotimerpicker_control.rb +47 -12
  39. data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinotintedbutton_control.rb +59 -4
  40. data/lib/ruflet_ui/ruflet/ui/controls/materials/alertdialog_control.rb +8 -45
  41. data/lib/ruflet_ui/ruflet/ui/controls/materials/appbar_control.rb +8 -40
  42. data/lib/ruflet_ui/ruflet/ui/controls/materials/audio_control.rb +16 -5
  43. data/lib/ruflet_ui/ruflet/ui/controls/materials/autocomplete_control.rb +44 -1
  44. data/lib/ruflet_ui/ruflet/ui/controls/materials/badge_control.rb +0 -7
  45. data/lib/ruflet_ui/ruflet/ui/controls/materials/banner_control.rb +0 -7
  46. data/lib/ruflet_ui/ruflet/ui/controls/materials/bottomappbar_control.rb +8 -47
  47. data/lib/ruflet_ui/ruflet/ui/controls/materials/bottomsheet_control.rb +0 -3
  48. data/lib/ruflet_ui/ruflet/ui/controls/materials/button_control.rb +8 -54
  49. data/lib/ruflet_ui/ruflet/ui/controls/materials/card_control.rb +8 -50
  50. data/lib/ruflet_ui/ruflet/ui/controls/materials/chart_controls.rb +19 -0
  51. data/lib/ruflet_ui/ruflet/ui/controls/materials/checkbox_control.rb +9 -60
  52. data/lib/ruflet_ui/ruflet/ui/controls/materials/chip_control.rb +7 -81
  53. data/lib/ruflet_ui/ruflet/ui/controls/materials/circleavatar_control.rb +7 -56
  54. data/lib/ruflet_ui/ruflet/ui/controls/materials/container_control.rb +9 -65
  55. data/lib/ruflet_ui/ruflet/ui/controls/materials/contextmenu_control.rb +50 -4
  56. data/lib/ruflet_ui/ruflet/ui/controls/materials/datacell_control.rb +1 -3
  57. data/lib/ruflet_ui/ruflet/ui/controls/materials/datacolumn_control.rb +1 -3
  58. data/lib/ruflet_ui/ruflet/ui/controls/materials/datatable_control.rb +7 -88
  59. data/lib/ruflet_ui/ruflet/ui/controls/materials/datepicker_control.rb +9 -55
  60. data/lib/ruflet_ui/ruflet/ui/controls/materials/daterangepicker_control.rb +8 -58
  61. data/lib/ruflet_ui/ruflet/ui/controls/materials/divider_control.rb +0 -9
  62. data/lib/ruflet_ui/ruflet/ui/controls/materials/dropdown_control.rb +8 -93
  63. data/lib/ruflet_ui/ruflet/ui/controls/materials/dropdownm2_control.rb +9 -103
  64. data/lib/ruflet_ui/ruflet/ui/controls/materials/dropdownoption_control.rb +0 -2
  65. data/lib/ruflet_ui/ruflet/ui/controls/materials/expansionpanel_control.rb +7 -51
  66. data/lib/ruflet_ui/ruflet/ui/controls/materials/expansionpanellist_control.rb +46 -5
  67. data/lib/ruflet_ui/ruflet/ui/controls/materials/expansiontile_control.rb +69 -3
  68. data/lib/ruflet_ui/ruflet/ui/controls/materials/filledbutton_control.rb +54 -2
  69. data/lib/ruflet_ui/ruflet/ui/controls/materials/fillediconbutton_control.rb +67 -5
  70. data/lib/ruflet_ui/ruflet/ui/controls/materials/filledtonalbutton_control.rb +54 -2
  71. data/lib/ruflet_ui/ruflet/ui/controls/materials/filledtonaliconbutton_control.rb +67 -5
  72. data/lib/ruflet_ui/ruflet/ui/controls/materials/floatingactionbutton_control.rb +7 -69
  73. data/lib/ruflet_ui/ruflet/ui/controls/materials/iconbutton_control.rb +8 -68
  74. data/lib/ruflet_ui/ruflet/ui/controls/materials/listtile_control.rb +8 -74
  75. data/lib/ruflet_ui/ruflet/ui/controls/materials/map_control.rb +99 -0
  76. data/lib/ruflet_ui/ruflet/ui/controls/materials/menuitembutton_control.rb +8 -56
  77. data/lib/ruflet_ui/ruflet/ui/controls/materials/navigationbar_control.rb +7 -59
  78. data/lib/ruflet_ui/ruflet/ui/controls/materials/navigationdrawer_control.rb +0 -7
  79. data/lib/ruflet_ui/ruflet/ui/controls/materials/navigationrail_control.rb +7 -73
  80. data/lib/ruflet_ui/ruflet/ui/controls/materials/outlinedbutton_control.rb +51 -2
  81. data/lib/ruflet_ui/ruflet/ui/controls/materials/outlinediconbutton_control.rb +67 -5
  82. data/lib/ruflet_ui/ruflet/ui/controls/materials/popupmenubutton_control.rb +8 -61
  83. data/lib/ruflet_ui/ruflet/ui/controls/materials/popupmenuitem_control.rb +0 -6
  84. data/lib/ruflet_ui/ruflet/ui/controls/materials/progressbar_control.rb +8 -56
  85. data/lib/ruflet_ui/ruflet/ui/controls/materials/progressring_control.rb +8 -56
  86. data/lib/ruflet_ui/ruflet/ui/controls/materials/radio_control.rb +9 -54
  87. data/lib/ruflet_ui/ruflet/ui/controls/materials/rangeslider_control.rb +7 -62
  88. data/lib/ruflet_ui/ruflet/ui/controls/materials/reorderablelistview_control.rb +9 -64
  89. data/lib/ruflet_ui/ruflet/ui/controls/materials/ruflet_controls.rb +5 -26
  90. data/lib/ruflet_ui/ruflet/ui/controls/materials/searchbar_control.rb +80 -11
  91. data/lib/ruflet_ui/ruflet/ui/controls/materials/segment_control.rb +0 -3
  92. data/lib/ruflet_ui/ruflet/ui/controls/materials/segmentedbutton_control.rb +7 -64
  93. data/lib/ruflet_ui/ruflet/ui/controls/materials/selectionarea_control.rb +1 -3
  94. data/lib/ruflet_ui/ruflet/ui/controls/materials/slider_control.rb +9 -60
  95. data/lib/ruflet_ui/ruflet/ui/controls/materials/snackbar_control.rb +37 -4
  96. data/lib/ruflet_ui/ruflet/ui/controls/materials/snackbaraction_control.rb +38 -0
  97. data/lib/ruflet_ui/ruflet/ui/controls/materials/spinkit_control.rb +25 -0
  98. data/lib/ruflet_ui/ruflet/ui/controls/materials/submenubutton_control.rb +52 -7
  99. data/lib/ruflet_ui/ruflet/ui/controls/materials/switch_control.rb +9 -61
  100. data/lib/ruflet_ui/ruflet/ui/controls/materials/tab_control.rb +0 -7
  101. data/lib/ruflet_ui/ruflet/ui/controls/materials/tabbar_control.rb +8 -64
  102. data/lib/ruflet_ui/ruflet/ui/controls/materials/tabbarview_control.rb +43 -5
  103. data/lib/ruflet_ui/ruflet/ui/controls/materials/tabs_control.rb +7 -47
  104. data/lib/ruflet_ui/ruflet/ui/controls/materials/textbutton_control.rb +51 -2
  105. data/lib/ruflet_ui/ruflet/ui/controls/materials/textfield_control.rb +9 -132
  106. data/lib/ruflet_ui/ruflet/ui/controls/materials/timepicker_control.rb +10 -34
  107. data/lib/ruflet_ui/ruflet/ui/controls/materials/verticaldivider_control.rb +0 -9
  108. data/lib/ruflet_ui/ruflet/ui/controls/materials/video_control.rb +9 -42
  109. data/lib/ruflet_ui/ruflet/ui/controls/materials/webview_control.rb +1 -114
  110. data/lib/ruflet_ui/ruflet/ui/controls/ruflet_controls.rb +13 -28
  111. data/lib/ruflet_ui/ruflet/ui/controls/shared/animatedswitcher_control.rb +46 -4
  112. data/lib/ruflet_ui/ruflet/ui/controls/shared/arc_control.rb +1 -0
  113. data/lib/ruflet_ui/ruflet/ui/controls/shared/browsercontextmenu_control.rb +1 -12
  114. data/lib/ruflet_ui/ruflet/ui/controls/shared/canvas_control.rb +8 -54
  115. data/lib/ruflet_ui/ruflet/ui/controls/shared/circle_control.rb +1 -0
  116. data/lib/ruflet_ui/ruflet/ui/controls/shared/column_control.rb +9 -51
  117. data/lib/ruflet_ui/ruflet/ui/controls/shared/dismissible_control.rb +52 -12
  118. data/lib/ruflet_ui/ruflet/ui/controls/shared/draggable_control.rb +1 -7
  119. data/lib/ruflet_ui/ruflet/ui/controls/shared/dragtarget_control.rb +1 -3
  120. data/lib/ruflet_ui/ruflet/ui/controls/shared/fletapp_control.rb +9 -46
  121. data/lib/ruflet_ui/ruflet/ui/controls/shared/gesturedetector_control.rb +9 -113
  122. data/lib/ruflet_ui/ruflet/ui/controls/shared/gridview_control.rb +57 -13
  123. data/lib/ruflet_ui/ruflet/ui/controls/shared/hero_control.rb +9 -40
  124. data/lib/ruflet_ui/ruflet/ui/controls/shared/icon_control.rb +9 -48
  125. data/lib/ruflet_ui/ruflet/ui/controls/shared/interactiveviewer_control.rb +9 -53
  126. data/lib/ruflet_ui/ruflet/ui/controls/shared/line_control.rb +1 -0
  127. data/lib/ruflet_ui/ruflet/ui/controls/shared/listview_control.rb +57 -11
  128. data/lib/ruflet_ui/ruflet/ui/controls/shared/markdown_control.rb +9 -54
  129. data/lib/ruflet_ui/ruflet/ui/controls/shared/oval_control.rb +1 -0
  130. data/lib/ruflet_ui/ruflet/ui/controls/shared/page_control.rb +9 -58
  131. data/lib/ruflet_ui/ruflet/ui/controls/shared/pagelet_control.rb +9 -48
  132. data/lib/ruflet_ui/ruflet/ui/controls/shared/pageview_control.rb +50 -4
  133. data/lib/ruflet_ui/ruflet/ui/controls/shared/path_control.rb +1 -0
  134. data/lib/ruflet_ui/ruflet/ui/controls/shared/placeholder_control.rb +44 -9
  135. data/lib/ruflet_ui/ruflet/ui/controls/shared/points_control.rb +1 -0
  136. data/lib/ruflet_ui/ruflet/ui/controls/shared/rect_control.rb +1 -0
  137. data/lib/ruflet_ui/ruflet/ui/controls/shared/reorderabledraghandle_control.rb +43 -4
  138. data/lib/ruflet_ui/ruflet/ui/controls/shared/responsiverow_control.rb +47 -15
  139. data/lib/ruflet_ui/ruflet/ui/controls/shared/rotatedbox_control.rb +97 -0
  140. data/lib/ruflet_ui/ruflet/ui/controls/shared/row_control.rb +9 -51
  141. data/lib/ruflet_ui/ruflet/ui/controls/shared/ruflet_controls.rb +5 -0
  142. data/lib/ruflet_ui/ruflet/ui/controls/shared/safearea_control.rb +48 -4
  143. data/lib/ruflet_ui/ruflet/ui/{services/ruflet → controls/shared}/screenshot_control.rb +18 -2
  144. data/lib/ruflet_ui/ruflet/ui/controls/shared/semantics_control.rb +65 -1
  145. data/lib/ruflet_ui/ruflet/ui/controls/shared/shadermask_control.rb +9 -41
  146. data/lib/ruflet_ui/ruflet/ui/controls/shared/shimmer_control.rb +9 -44
  147. data/lib/ruflet_ui/ruflet/ui/controls/shared/stack_control.rb +44 -1
  148. data/lib/ruflet_ui/ruflet/ui/controls/shared/text_control.rb +9 -35
  149. data/lib/ruflet_ui/ruflet/ui/controls/shared/transparentpointer_control.rb +9 -38
  150. data/lib/ruflet_ui/ruflet/ui/controls/shared/view_control.rb +63 -1
  151. data/lib/ruflet_ui/ruflet/ui/controls/shared/window_control.rb +40 -66
  152. data/lib/ruflet_ui/ruflet/ui/controls/shared/windowdragarea_control.rb +45 -4
  153. data/lib/ruflet_ui/ruflet/ui/material_control_methods.rb +61 -17
  154. data/lib/ruflet_ui/ruflet/ui/material_control_registry.rb +22 -0
  155. data/lib/ruflet_ui/ruflet/ui/services/ruflet/accelerometer_control.rb +1 -0
  156. data/lib/ruflet_ui/ruflet/ui/services/ruflet/audio_recorder_control.rb +14 -36
  157. data/lib/ruflet_ui/ruflet/ui/services/ruflet/barometer_control.rb +1 -0
  158. data/lib/ruflet_ui/ruflet/ui/services/ruflet/battery_control.rb +1 -0
  159. data/lib/ruflet_ui/ruflet/ui/services/ruflet/camera_control.rb +9 -42
  160. data/lib/ruflet_ui/ruflet/ui/services/ruflet/clipboard_control.rb +31 -0
  161. data/lib/ruflet_ui/ruflet/ui/services/ruflet/connectivity_control.rb +1 -0
  162. data/lib/ruflet_ui/ruflet/ui/services/ruflet/filepicker_control.rb +1 -0
  163. data/lib/ruflet_ui/ruflet/ui/services/ruflet/flashlight_control.rb +1 -0
  164. data/lib/ruflet_ui/ruflet/ui/services/ruflet/geolocator_control.rb +14 -30
  165. data/lib/ruflet_ui/ruflet/ui/services/ruflet/gyroscope_control.rb +1 -0
  166. data/lib/ruflet_ui/ruflet/ui/services/ruflet/hapticfeedback_control.rb +1 -0
  167. data/lib/ruflet_ui/ruflet/ui/services/ruflet/magnetometer_control.rb +1 -0
  168. data/lib/ruflet_ui/ruflet/ui/services/ruflet/permissionhandler_control.rb +5 -20
  169. data/lib/ruflet_ui/ruflet/ui/services/ruflet/screenbrightness_control.rb +1 -0
  170. data/lib/ruflet_ui/ruflet/ui/services/ruflet/securestorage_control.rb +22 -49
  171. data/lib/ruflet_ui/ruflet/ui/services/ruflet/semanticsservice_control.rb +20 -15
  172. data/lib/ruflet_ui/ruflet/ui/services/ruflet/shakedetector_control.rb +1 -0
  173. data/lib/ruflet_ui/ruflet/ui/services/ruflet/share_control.rb +1 -0
  174. data/lib/ruflet_ui/ruflet/ui/services/ruflet/sharedpreferences_control.rb +1 -0
  175. data/lib/ruflet_ui/ruflet/ui/services/ruflet/storagepaths_control.rb +1 -0
  176. data/lib/ruflet_ui/ruflet/ui/services/ruflet/urllauncher_control.rb +1 -0
  177. data/lib/ruflet_ui/ruflet/ui/services/ruflet/useraccelerometer_control.rb +1 -0
  178. data/lib/ruflet_ui/ruflet/ui/services/ruflet/wakelock_control.rb +1 -0
  179. data/lib/ruflet_ui/ruflet/ui/services/ruflet_services.rb +0 -7
  180. data/lib/ruflet_ui/ruflet/ui/shared_control_forwarders.rb +20 -1
  181. data/lib/ruflet_ui.rb +12 -10
  182. metadata +8 -9
  183. data/lib/ruflet_ui/ruflet/types/animation.rb +0 -110
  184. data/lib/ruflet_ui/ruflet/ui/controls/materials/codeeditor_control.rb +0 -93
  185. data/lib/ruflet_ui/ruflet/ui/controls/materials/map_controls.rb +0 -311
  186. data/lib/ruflet_ui/ruflet/ui/controls/materials/rive_control.rb +0 -87
  187. data/lib/ruflet_ui/ruflet/ui/controls/materials/spinkit_controls.rb +0 -109
  188. data/lib/ruflet_ui/ruflet/ui/services/ruflet/tester_control.rb +0 -126
@@ -8,109 +8,15 @@ module Ruflet
8
8
  TYPE = "dropdownm2".freeze
9
9
  WIRE = "DropdownM2".freeze
10
10
 
11
- def initialize(id: nil, align: nil, align_label_with_hint: nil, alignment: nil, animate_align: nil, animate_margin: nil, animate_offset: nil, animate_opacity: nil, animate_position: nil, animate_rotation: nil, animate_scale: nil, animate_size: nil, aspect_ratio: nil, autofocus: nil, badge: nil, bgcolor: nil, border: nil, border_color: nil, border_radius: nil, border_width: nil, bottom: nil, col: nil, collapsed: nil, color: nil, content_padding: nil, counter: nil, counter_style: nil, data: nil, dense: nil, disabled: nil, disabled_hint_content: nil, elevation: nil, enable_feedback: nil, error: nil, error_max_lines: nil, error_style: nil, expand: nil, expand_loose: nil, fill_color: nil, filled: nil, fit_parent_size: nil, focus_color: nil, focused_bgcolor: nil, focused_border_color: nil, focused_border_width: nil, focused_color: nil, height: nil, helper: nil, helper_max_lines: nil, helper_style: nil, hint_content: nil, hint_fade_duration: nil, hint_max_lines: nil, hint_style: nil, hint_text: nil, hover_color: nil, icon: nil, item_height: nil, key: nil, label: nil, label_style: nil, left: nil, margin: nil, max_menu_height: nil, offset: nil, opacity: nil, options: nil, options_fill_horizontally: nil, padding: nil, prefix: nil, prefix_icon: nil, prefix_icon_size_constraints: nil, prefix_style: nil, right: nil, rotate: nil, rtl: nil, scale: nil, select_icon: nil, select_icon_disabled_color: nil, select_icon_enabled_color: nil, select_icon_size: nil, size_change_interval: nil, size_constraints: nil, suffix: nil, suffix_icon: nil, suffix_icon_size_constraints: nil, suffix_style: nil, text_size: nil, text_style: nil, text_vertical_align: nil, tooltip: nil, top: nil, value: nil, visible: nil, width: nil, on_animation_end: nil, on_blur: nil, on_change: nil, on_click: nil, on_focus: nil, on_size_change: nil)
12
- props = {}
13
- props[:align] = align unless align.nil?
14
- props[:align_label_with_hint] = align_label_with_hint unless align_label_with_hint.nil?
15
- props[:alignment] = alignment unless alignment.nil?
16
- props[:animate_align] = animate_align unless animate_align.nil?
17
- props[:animate_margin] = animate_margin unless animate_margin.nil?
18
- props[:animate_offset] = animate_offset unless animate_offset.nil?
19
- props[:animate_opacity] = animate_opacity unless animate_opacity.nil?
20
- props[:animate_position] = animate_position unless animate_position.nil?
21
- props[:animate_rotation] = animate_rotation unless animate_rotation.nil?
22
- props[:animate_scale] = animate_scale unless animate_scale.nil?
23
- props[:animate_size] = animate_size unless animate_size.nil?
24
- props[:aspect_ratio] = aspect_ratio unless aspect_ratio.nil?
25
- props[:autofocus] = autofocus unless autofocus.nil?
26
- props[:badge] = badge unless badge.nil?
27
- props[:bgcolor] = bgcolor unless bgcolor.nil?
28
- props[:border] = border unless border.nil?
29
- props[:border_color] = border_color unless border_color.nil?
30
- props[:border_radius] = border_radius unless border_radius.nil?
31
- props[:border_width] = border_width unless border_width.nil?
32
- props[:bottom] = bottom unless bottom.nil?
33
- props[:col] = col unless col.nil?
34
- props[:collapsed] = collapsed unless collapsed.nil?
35
- props[:color] = color unless color.nil?
36
- props[:content_padding] = content_padding unless content_padding.nil?
37
- props[:counter] = counter unless counter.nil?
38
- props[:counter_style] = counter_style unless counter_style.nil?
39
- props[:data] = data unless data.nil?
40
- props[:dense] = dense unless dense.nil?
41
- props[:disabled] = disabled unless disabled.nil?
42
- props[:disabled_hint_content] = disabled_hint_content unless disabled_hint_content.nil?
43
- props[:elevation] = elevation unless elevation.nil?
44
- props[:enable_feedback] = enable_feedback unless enable_feedback.nil?
45
- props[:error] = error unless error.nil?
46
- props[:error_max_lines] = error_max_lines unless error_max_lines.nil?
47
- props[:error_style] = error_style unless error_style.nil?
48
- props[:expand] = expand unless expand.nil?
49
- props[:expand_loose] = expand_loose unless expand_loose.nil?
50
- props[:fill_color] = fill_color unless fill_color.nil?
51
- props[:filled] = filled unless filled.nil?
52
- props[:fit_parent_size] = fit_parent_size unless fit_parent_size.nil?
53
- props[:focus_color] = focus_color unless focus_color.nil?
54
- props[:focused_bgcolor] = focused_bgcolor unless focused_bgcolor.nil?
55
- props[:focused_border_color] = focused_border_color unless focused_border_color.nil?
56
- props[:focused_border_width] = focused_border_width unless focused_border_width.nil?
57
- props[:focused_color] = focused_color unless focused_color.nil?
58
- props[:height] = height unless height.nil?
59
- props[:helper] = helper unless helper.nil?
60
- props[:helper_max_lines] = helper_max_lines unless helper_max_lines.nil?
61
- props[:helper_style] = helper_style unless helper_style.nil?
62
- props[:hint_content] = hint_content unless hint_content.nil?
63
- props[:hint_fade_duration] = hint_fade_duration unless hint_fade_duration.nil?
64
- props[:hint_max_lines] = hint_max_lines unless hint_max_lines.nil?
65
- props[:hint_style] = hint_style unless hint_style.nil?
66
- props[:hint_text] = hint_text unless hint_text.nil?
67
- props[:hover_color] = hover_color unless hover_color.nil?
68
- props[:icon] = icon unless icon.nil?
69
- props[:item_height] = item_height unless item_height.nil?
70
- props[:key] = key unless key.nil?
71
- props[:label] = label unless label.nil?
72
- props[:label_style] = label_style unless label_style.nil?
73
- props[:left] = left unless left.nil?
74
- props[:margin] = margin unless margin.nil?
75
- props[:max_menu_height] = max_menu_height unless max_menu_height.nil?
76
- props[:offset] = offset unless offset.nil?
77
- props[:opacity] = opacity unless opacity.nil?
78
- props[:options] = options unless options.nil?
79
- props[:options_fill_horizontally] = options_fill_horizontally unless options_fill_horizontally.nil?
80
- props[:padding] = padding unless padding.nil?
81
- props[:prefix] = prefix unless prefix.nil?
82
- props[:prefix_icon] = prefix_icon unless prefix_icon.nil?
83
- props[:prefix_icon_size_constraints] = prefix_icon_size_constraints unless prefix_icon_size_constraints.nil?
84
- props[:prefix_style] = prefix_style unless prefix_style.nil?
85
- props[:right] = right unless right.nil?
86
- props[:rotate] = rotate unless rotate.nil?
87
- props[:rtl] = rtl unless rtl.nil?
88
- props[:scale] = scale unless scale.nil?
89
- props[:select_icon] = select_icon unless select_icon.nil?
90
- props[:select_icon_disabled_color] = select_icon_disabled_color unless select_icon_disabled_color.nil?
91
- props[:select_icon_enabled_color] = select_icon_enabled_color unless select_icon_enabled_color.nil?
92
- props[:select_icon_size] = select_icon_size unless select_icon_size.nil?
93
- props[:size_change_interval] = size_change_interval unless size_change_interval.nil?
94
- props[:size_constraints] = size_constraints unless size_constraints.nil?
95
- props[:suffix] = suffix unless suffix.nil?
96
- props[:suffix_icon] = suffix_icon unless suffix_icon.nil?
97
- props[:suffix_icon_size_constraints] = suffix_icon_size_constraints unless suffix_icon_size_constraints.nil?
98
- props[:suffix_style] = suffix_style unless suffix_style.nil?
99
- props[:text_size] = text_size unless text_size.nil?
100
- props[:text_style] = text_style unless text_style.nil?
101
- props[:text_vertical_align] = text_vertical_align unless text_vertical_align.nil?
102
- props[:tooltip] = tooltip unless tooltip.nil?
103
- props[:top] = top unless top.nil?
104
- props[:value] = value unless value.nil?
105
- props[:visible] = visible unless visible.nil?
106
- props[:width] = width unless width.nil?
107
- props[:on_animation_end] = on_animation_end unless on_animation_end.nil?
108
- props[:on_blur] = on_blur unless on_blur.nil?
109
- props[:on_change] = on_change unless on_change.nil?
110
- props[:on_click] = on_click unless on_click.nil?
111
- props[:on_focus] = on_focus unless on_focus.nil?
112
- props[:on_size_change] = on_size_change unless on_size_change.nil?
113
- super(type: TYPE, id: id, **props)
11
+ KEYWORDS = [:align, :align_label_with_hint, :alignment, :animate_align, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :aspect_ratio, :autofocus, :badge, :bgcolor, :border, :border_color, :border_radius, :border_width, :bottom, :col, :collapsed, :color, :content_padding, :counter, :counter_style, :data, :dense, :disabled, :disabled_hint_content, :elevation, :enable_feedback, :error, :error_max_lines, :error_style, :expand, :expand_loose, :fill_color, :filled, :fit_parent_size, :focus_color, :focused_bgcolor, :focused_border_color, :focused_border_width, :focused_color, :height, :helper, :helper_max_lines, :helper_style, :hint_content, :hint_fade_duration, :hint_max_lines, :hint_style, :hint_text, :hover_color, :icon, :item_height, :key, :label, :label_style, :left, :margin, :max_menu_height, :offset, :opacity, :options, :options_fill_horizontally, :padding, :prefix, :prefix_icon, :prefix_icon_size_constraints, :prefix_style, :right, :rotate, :rtl, :scale, :select_icon, :select_icon_disabled_color, :select_icon_enabled_color, :select_icon_size, :size_change_interval, :size_constraints, :suffix, :suffix_icon, :suffix_icon_size_constraints, :suffix_style, :text_size, :text_style, :text_vertical_align, :tooltip, :top, :value, :visible, :width, :on_animation_end, :on_blur, :on_change, :on_click, :on_focus, :on_size_change].freeze
12
+
13
+ def initialize(id: nil, **props)
14
+ compact = {}
15
+ props.each do |key, value|
16
+ raise ArgumentError, "unknown keyword: :#{key}" unless KEYWORDS.include?(key)
17
+ compact[key] = value unless value.nil?
18
+ end
19
+ super(type: TYPE, id: id, **compact)
114
20
  end
115
21
  end
116
22
  end
@@ -9,8 +9,6 @@ module Ruflet
9
9
  WIRE = "DropdownOption".freeze
10
10
 
11
11
  def initialize(id: nil, badge: nil, col: nil, content: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, key: nil, leading_icon: nil, opacity: nil, rtl: nil, style: nil, text: nil, tooltip: nil, trailing_icon: nil, visible: nil)
12
- raise ArgumentError, "dropdown_option requires key or text" if key.nil? && text.nil?
13
-
14
12
  key = text if key.nil?
15
13
  text = key if text.nil?
16
14
 
@@ -8,59 +8,15 @@ module Ruflet
8
8
  TYPE = "expansionpanel".freeze
9
9
  WIRE = "ExpansionPanel".freeze
10
10
 
11
- def initialize(id: nil, adaptive: nil, align: nil, animate_align: nil, animate_margin: nil, animate_offset: nil, animate_opacity: nil, animate_position: nil, animate_rotation: nil, animate_scale: nil, animate_size: nil, aspect_ratio: nil, badge: nil, bgcolor: nil, bottom: nil, can_tap_header: nil, col: nil, content: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, expanded: nil, header: nil, height: nil, highlight_color: nil, key: nil, left: nil, margin: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size_change_interval: nil, splash_color: nil, tooltip: nil, top: nil, visible: nil, width: nil, on_animation_end: nil, on_size_change: nil)
12
- if header.nil? || (header.respond_to?(:props) && header.props["visible"] == false)
13
- raise ArgumentError, "expansion_panel requires a visible header"
14
- end
11
+ KEYWORDS = [:adaptive, :align, :animate_align, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :aspect_ratio, :badge, :bgcolor, :bottom, :can_tap_header, :col, :content, :data, :disabled, :expand, :expand_loose, :expanded, :header, :height, :highlight_color, :key, :left, :margin, :offset, :opacity, :right, :rotate, :rtl, :scale, :size_change_interval, :splash_color, :tooltip, :top, :visible, :width, :on_animation_end, :on_size_change].freeze
15
12
 
16
- if content.nil? || (content.respond_to?(:props) && content.props["visible"] == false)
17
- raise ArgumentError, "expansion_panel requires visible content"
13
+ def initialize(id: nil, **props)
14
+ compact = {}
15
+ props.each do |key, value|
16
+ raise ArgumentError, "unknown keyword: :#{key}" unless KEYWORDS.include?(key)
17
+ compact[key] = value unless value.nil?
18
18
  end
19
-
20
- props = {}
21
- props[:adaptive] = adaptive unless adaptive.nil?
22
- props[:align] = align unless align.nil?
23
- props[:animate_align] = animate_align unless animate_align.nil?
24
- props[:animate_margin] = animate_margin unless animate_margin.nil?
25
- props[:animate_offset] = animate_offset unless animate_offset.nil?
26
- props[:animate_opacity] = animate_opacity unless animate_opacity.nil?
27
- props[:animate_position] = animate_position unless animate_position.nil?
28
- props[:animate_rotation] = animate_rotation unless animate_rotation.nil?
29
- props[:animate_scale] = animate_scale unless animate_scale.nil?
30
- props[:animate_size] = animate_size unless animate_size.nil?
31
- props[:aspect_ratio] = aspect_ratio unless aspect_ratio.nil?
32
- props[:badge] = badge unless badge.nil?
33
- props[:bgcolor] = bgcolor unless bgcolor.nil?
34
- props[:bottom] = bottom unless bottom.nil?
35
- props[:can_tap_header] = can_tap_header unless can_tap_header.nil?
36
- props[:col] = col unless col.nil?
37
- props[:content] = content unless content.nil?
38
- props[:data] = data unless data.nil?
39
- props[:disabled] = disabled unless disabled.nil?
40
- props[:expand] = expand unless expand.nil?
41
- props[:expand_loose] = expand_loose unless expand_loose.nil?
42
- props[:expanded] = expanded unless expanded.nil?
43
- props[:header] = header unless header.nil?
44
- props[:height] = height unless height.nil?
45
- props[:highlight_color] = highlight_color unless highlight_color.nil?
46
- props[:key] = key unless key.nil?
47
- props[:left] = left unless left.nil?
48
- props[:margin] = margin unless margin.nil?
49
- props[:offset] = offset unless offset.nil?
50
- props[:opacity] = opacity unless opacity.nil?
51
- props[:right] = right unless right.nil?
52
- props[:rotate] = rotate unless rotate.nil?
53
- props[:rtl] = rtl unless rtl.nil?
54
- props[:scale] = scale unless scale.nil?
55
- props[:size_change_interval] = size_change_interval unless size_change_interval.nil?
56
- props[:splash_color] = splash_color unless splash_color.nil?
57
- props[:tooltip] = tooltip unless tooltip.nil?
58
- props[:top] = top unless top.nil?
59
- props[:visible] = visible unless visible.nil?
60
- props[:width] = width unless width.nil?
61
- props[:on_animation_end] = on_animation_end unless on_animation_end.nil?
62
- props[:on_size_change] = on_size_change unless on_size_change.nil?
63
- super(type: TYPE, id: id, **props)
19
+ super(type: TYPE, id: id, **compact)
64
20
  end
65
21
  end
66
22
  end
@@ -8,12 +8,53 @@ module Ruflet
8
8
  TYPE = "expansionpanellist".freeze
9
9
  WIRE = "ExpansionPanelList".freeze
10
10
 
11
- def initialize(id: nil, align: nil, animate_align: nil, animate_margin: nil, animate_offset: nil, animate_opacity: nil, animate_position: nil, animate_rotation: nil, animate_scale: nil, animate_size: nil, aspect_ratio: nil, badge: nil, bottom: nil, col: nil, controls: nil, data: nil, disabled: nil, divider_color: nil, elevation: nil, expand: nil, expand_icon_color: nil, expand_loose: nil, expanded_header_padding: nil, height: nil, key: nil, left: nil, margin: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size_change_interval: nil, spacing: nil, tooltip: nil, top: nil, visible: nil, width: nil, on_animation_end: nil, on_change: nil, on_size_change: nil)
12
- elevation = 2 if elevation.nil?
11
+ KEYWORDS = [:align, :animate_align, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :aspect_ratio, :badge, :bottom, :col, :controls, :data, :disabled, :divider_color, :elevation, :expand, :expand_icon_color, :expand_loose, :expanded_header_padding, :height, :key, :left, :margin, :offset, :opacity, :right, :rotate, :rtl, :scale, :size_change_interval, :spacing, :tooltip, :top, :visible, :width, :on_animation_end, :on_change, :on_size_change].freeze
13
12
 
14
- { elevation: elevation, spacing: spacing }.each do |name, value|
15
- raise ArgumentError, "expansion_panel_list #{name} must be greater than or equal to 0" unless value.nil? || value >= 0
16
- end
13
+ def initialize(id: nil, **props)
14
+ unknown = props.keys.reject { |key| KEYWORDS.include?(key) }
15
+ raise ArgumentError, "unknown keywords: #{unknown.join(', ')}" unless unknown.empty?
16
+ align = props[:align]
17
+ animate_align = props[:animate_align]
18
+ animate_margin = props[:animate_margin]
19
+ animate_offset = props[:animate_offset]
20
+ animate_opacity = props[:animate_opacity]
21
+ animate_position = props[:animate_position]
22
+ animate_rotation = props[:animate_rotation]
23
+ animate_scale = props[:animate_scale]
24
+ animate_size = props[:animate_size]
25
+ aspect_ratio = props[:aspect_ratio]
26
+ badge = props[:badge]
27
+ bottom = props[:bottom]
28
+ col = props[:col]
29
+ controls = props[:controls]
30
+ data = props[:data]
31
+ disabled = props[:disabled]
32
+ divider_color = props[:divider_color]
33
+ elevation = props[:elevation]
34
+ expand = props[:expand]
35
+ expand_icon_color = props[:expand_icon_color]
36
+ expand_loose = props[:expand_loose]
37
+ expanded_header_padding = props[:expanded_header_padding]
38
+ height = props[:height]
39
+ key = props[:key]
40
+ left = props[:left]
41
+ margin = props[:margin]
42
+ offset = props[:offset]
43
+ opacity = props[:opacity]
44
+ right = props[:right]
45
+ rotate = props[:rotate]
46
+ rtl = props[:rtl]
47
+ scale = props[:scale]
48
+ size_change_interval = props[:size_change_interval]
49
+ spacing = props[:spacing]
50
+ tooltip = props[:tooltip]
51
+ top = props[:top]
52
+ visible = props[:visible]
53
+ width = props[:width]
54
+ on_animation_end = props[:on_animation_end]
55
+ on_change = props[:on_change]
56
+ on_size_change = props[:on_size_change]
57
+ elevation = 2 if elevation.nil?
17
58
 
18
59
  props = {}
19
60
  props[:align] = align unless align.nil?
@@ -8,9 +8,75 @@ module Ruflet
8
8
  TYPE = "expansiontile".freeze
9
9
  WIRE = "ExpansionTile".freeze
10
10
 
11
- def initialize(id: nil, adaptive: nil, affinity: nil, align: nil, animate_align: nil, animate_margin: nil, animate_offset: nil, animate_opacity: nil, animate_position: nil, animate_rotation: nil, animate_scale: nil, animate_size: nil, animation_style: nil, aspect_ratio: nil, badge: nil, bgcolor: nil, bottom: nil, clip_behavior: nil, col: nil, collapsed_bgcolor: nil, collapsed_icon_color: nil, collapsed_shape: nil, collapsed_text_color: nil, controls: nil, controls_padding: nil, data: nil, dense: nil, disabled: nil, enable_feedback: nil, expand: nil, expand_loose: nil, expanded: nil, expanded_alignment: nil, expanded_cross_axis_alignment: nil, height: nil, icon_color: nil, key: nil, leading: nil, left: nil, maintain_state: nil, margin: nil, min_tile_height: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, scale: nil, shape: nil, show_trailing_icon: nil, size_change_interval: nil, subtitle: nil, text_color: nil, tile_padding: nil, title: nil, tooltip: nil, top: nil, trailing: nil, visible: nil, visual_density: nil, width: nil, on_animation_end: nil, on_change: nil, on_size_change: nil)
12
- raise ArgumentError, "expansion_tile requires a visible title" if title.nil? || (title.respond_to?(:props) && title.props["visible"] == false)
13
- raise ArgumentError, "expansion_tile min_tile_height must be greater than or equal to 0" unless min_tile_height.nil? || min_tile_height >= 0
11
+ KEYWORDS = [:adaptive, :affinity, :align, :animate_align, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :animation_style, :aspect_ratio, :badge, :bgcolor, :bottom, :clip_behavior, :col, :collapsed_bgcolor, :collapsed_icon_color, :collapsed_shape, :collapsed_text_color, :controls, :controls_padding, :data, :dense, :disabled, :enable_feedback, :expand, :expand_loose, :expanded, :expanded_alignment, :expanded_cross_axis_alignment, :height, :icon_color, :key, :leading, :left, :maintain_state, :margin, :min_tile_height, :offset, :opacity, :right, :rotate, :rtl, :scale, :shape, :show_trailing_icon, :size_change_interval, :subtitle, :text_color, :tile_padding, :title, :tooltip, :top, :trailing, :visible, :visual_density, :width, :on_animation_end, :on_change, :on_size_change].freeze
12
+
13
+ def initialize(id: nil, **props)
14
+ unknown = props.keys.reject { |key| KEYWORDS.include?(key) }
15
+ raise ArgumentError, "unknown keywords: #{unknown.join(', ')}" unless unknown.empty?
16
+ adaptive = props[:adaptive]
17
+ affinity = props[:affinity]
18
+ align = props[:align]
19
+ animate_align = props[:animate_align]
20
+ animate_margin = props[:animate_margin]
21
+ animate_offset = props[:animate_offset]
22
+ animate_opacity = props[:animate_opacity]
23
+ animate_position = props[:animate_position]
24
+ animate_rotation = props[:animate_rotation]
25
+ animate_scale = props[:animate_scale]
26
+ animate_size = props[:animate_size]
27
+ animation_style = props[:animation_style]
28
+ aspect_ratio = props[:aspect_ratio]
29
+ badge = props[:badge]
30
+ bgcolor = props[:bgcolor]
31
+ bottom = props[:bottom]
32
+ clip_behavior = props[:clip_behavior]
33
+ col = props[:col]
34
+ collapsed_bgcolor = props[:collapsed_bgcolor]
35
+ collapsed_icon_color = props[:collapsed_icon_color]
36
+ collapsed_shape = props[:collapsed_shape]
37
+ collapsed_text_color = props[:collapsed_text_color]
38
+ controls = props[:controls]
39
+ controls_padding = props[:controls_padding]
40
+ data = props[:data]
41
+ dense = props[:dense]
42
+ disabled = props[:disabled]
43
+ enable_feedback = props[:enable_feedback]
44
+ expand = props[:expand]
45
+ expand_loose = props[:expand_loose]
46
+ expanded = props[:expanded]
47
+ expanded_alignment = props[:expanded_alignment]
48
+ expanded_cross_axis_alignment = props[:expanded_cross_axis_alignment]
49
+ height = props[:height]
50
+ icon_color = props[:icon_color]
51
+ key = props[:key]
52
+ leading = props[:leading]
53
+ left = props[:left]
54
+ maintain_state = props[:maintain_state]
55
+ margin = props[:margin]
56
+ min_tile_height = props[:min_tile_height]
57
+ offset = props[:offset]
58
+ opacity = props[:opacity]
59
+ right = props[:right]
60
+ rotate = props[:rotate]
61
+ rtl = props[:rtl]
62
+ scale = props[:scale]
63
+ shape = props[:shape]
64
+ show_trailing_icon = props[:show_trailing_icon]
65
+ size_change_interval = props[:size_change_interval]
66
+ subtitle = props[:subtitle]
67
+ text_color = props[:text_color]
68
+ tile_padding = props[:tile_padding]
69
+ title = props[:title]
70
+ tooltip = props[:tooltip]
71
+ top = props[:top]
72
+ trailing = props[:trailing]
73
+ visible = props[:visible]
74
+ visual_density = props[:visual_density]
75
+ width = props[:width]
76
+ on_animation_end = props[:on_animation_end]
77
+ on_change = props[:on_change]
78
+ on_size_change = props[:on_size_change]
79
+ raise ArgumentError, "expansion_tile requires title" if title.nil?
14
80
  expanded = false if expanded.nil?
15
81
  maintain_state = false if maintain_state.nil?
16
82
  show_trailing_icon = true if show_trailing_icon.nil?
@@ -8,9 +8,61 @@ module Ruflet
8
8
  TYPE = "filledbutton".freeze
9
9
  WIRE = "FilledButton".freeze
10
10
 
11
- def initialize(id: nil, adaptive: nil, align: nil, animate_align: nil, animate_margin: nil, animate_offset: nil, animate_opacity: nil, animate_position: nil, animate_rotation: nil, animate_scale: nil, animate_size: nil, aspect_ratio: nil, autofocus: nil, badge: nil, bgcolor: nil, bottom: nil, clip_behavior: nil, col: nil, color: nil, content: nil, data: nil, disabled: nil, elevation: nil, expand: nil, expand_loose: nil, height: nil, icon: nil, icon_color: nil, key: nil, left: nil, margin: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size_change_interval: nil, style: nil, tooltip: nil, top: nil, url: nil, visible: nil, width: nil, on_animation_end: nil, on_blur: nil, on_click: nil, on_focus: nil, on_hover: nil, on_long_press: nil, on_size_change: nil)
12
- raise ArgumentError, "filled_button requires content or icon" if content.nil? && icon.nil?
11
+ KEYWORDS = [:adaptive, :align, :animate_align, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :aspect_ratio, :autofocus, :badge, :bgcolor, :bottom, :clip_behavior, :col, :color, :content, :data, :disabled, :elevation, :expand, :expand_loose, :height, :icon, :icon_color, :key, :left, :margin, :offset, :opacity, :right, :rotate, :rtl, :scale, :size_change_interval, :style, :tooltip, :top, :url, :visible, :width, :on_animation_end, :on_blur, :on_click, :on_focus, :on_hover, :on_long_press, :on_size_change].freeze
13
12
 
13
+ def initialize(id: nil, **props)
14
+ unknown = props.keys.reject { |key| KEYWORDS.include?(key) }
15
+ raise ArgumentError, "unknown keywords: #{unknown.join(', ')}" unless unknown.empty?
16
+ adaptive = props[:adaptive]
17
+ align = props[:align]
18
+ animate_align = props[:animate_align]
19
+ animate_margin = props[:animate_margin]
20
+ animate_offset = props[:animate_offset]
21
+ animate_opacity = props[:animate_opacity]
22
+ animate_position = props[:animate_position]
23
+ animate_rotation = props[:animate_rotation]
24
+ animate_scale = props[:animate_scale]
25
+ animate_size = props[:animate_size]
26
+ aspect_ratio = props[:aspect_ratio]
27
+ autofocus = props[:autofocus]
28
+ badge = props[:badge]
29
+ bgcolor = props[:bgcolor]
30
+ bottom = props[:bottom]
31
+ clip_behavior = props[:clip_behavior]
32
+ col = props[:col]
33
+ color = props[:color]
34
+ content = props[:content]
35
+ data = props[:data]
36
+ disabled = props[:disabled]
37
+ elevation = props[:elevation]
38
+ expand = props[:expand]
39
+ expand_loose = props[:expand_loose]
40
+ height = props[:height]
41
+ icon = props[:icon]
42
+ icon_color = props[:icon_color]
43
+ key = props[:key]
44
+ left = props[:left]
45
+ margin = props[:margin]
46
+ offset = props[:offset]
47
+ opacity = props[:opacity]
48
+ right = props[:right]
49
+ rotate = props[:rotate]
50
+ rtl = props[:rtl]
51
+ scale = props[:scale]
52
+ size_change_interval = props[:size_change_interval]
53
+ style = props[:style]
54
+ tooltip = props[:tooltip]
55
+ top = props[:top]
56
+ url = props[:url]
57
+ visible = props[:visible]
58
+ width = props[:width]
59
+ on_animation_end = props[:on_animation_end]
60
+ on_blur = props[:on_blur]
61
+ on_click = props[:on_click]
62
+ on_focus = props[:on_focus]
63
+ on_hover = props[:on_hover]
64
+ on_long_press = props[:on_long_press]
65
+ on_size_change = props[:on_size_change]
14
66
  autofocus = false if autofocus.nil?
15
67
  clip_behavior = "none" if clip_behavior.nil?
16
68
 
@@ -8,15 +8,77 @@ module Ruflet
8
8
  TYPE = "fillediconbutton".freeze
9
9
  WIRE = "FilledIconButton".freeze
10
10
 
11
- def initialize(id: nil, adaptive: nil, align: nil, alignment: nil, animate_align: nil, animate_margin: nil, animate_offset: nil, animate_opacity: nil, animate_position: nil, animate_rotation: nil, animate_scale: nil, animate_size: nil, aspect_ratio: nil, autofocus: nil, badge: nil, bgcolor: nil, bottom: nil, col: nil, data: nil, disabled: nil, disabled_color: nil, enable_feedback: nil, expand: nil, expand_loose: nil, focus_color: nil, height: nil, highlight_color: nil, hover_color: nil, icon: nil, icon_color: nil, icon_size: nil, key: nil, left: nil, margin: nil, mouse_cursor: nil, offset: nil, opacity: nil, padding: nil, right: nil, rotate: nil, rtl: nil, scale: nil, selected: nil, selected_icon: nil, selected_icon_color: nil, size_change_interval: nil, size_constraints: nil, splash_color: nil, splash_radius: nil, style: nil, tooltip: nil, top: nil, url: nil, visible: nil, visual_density: nil, width: nil, on_animation_end: nil, on_blur: nil, on_click: nil, on_focus: nil, on_hover: nil, on_long_press: nil, on_size_change: nil)
11
+ KEYWORDS = [:adaptive, :align, :alignment, :animate_align, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :aspect_ratio, :autofocus, :badge, :bgcolor, :bottom, :col, :data, :disabled, :disabled_color, :enable_feedback, :expand, :expand_loose, :focus_color, :height, :highlight_color, :hover_color, :icon, :icon_color, :icon_size, :key, :left, :margin, :mouse_cursor, :offset, :opacity, :padding, :right, :rotate, :rtl, :scale, :selected, :selected_icon, :selected_icon_color, :size_change_interval, :size_constraints, :splash_color, :splash_radius, :style, :tooltip, :top, :url, :visible, :visual_density, :width, :on_animation_end, :on_blur, :on_click, :on_focus, :on_hover, :on_long_press, :on_size_change].freeze
12
+
13
+ def initialize(id: nil, **props)
14
+ unknown = props.keys.reject { |key| KEYWORDS.include?(key) }
15
+ raise ArgumentError, "unknown keywords: #{unknown.join(', ')}" unless unknown.empty?
16
+ adaptive = props[:adaptive]
17
+ align = props[:align]
18
+ alignment = props[:alignment]
19
+ animate_align = props[:animate_align]
20
+ animate_margin = props[:animate_margin]
21
+ animate_offset = props[:animate_offset]
22
+ animate_opacity = props[:animate_opacity]
23
+ animate_position = props[:animate_position]
24
+ animate_rotation = props[:animate_rotation]
25
+ animate_scale = props[:animate_scale]
26
+ animate_size = props[:animate_size]
27
+ aspect_ratio = props[:aspect_ratio]
28
+ autofocus = props[:autofocus]
29
+ badge = props[:badge]
30
+ bgcolor = props[:bgcolor]
31
+ bottom = props[:bottom]
32
+ col = props[:col]
33
+ data = props[:data]
34
+ disabled = props[:disabled]
35
+ disabled_color = props[:disabled_color]
36
+ enable_feedback = props[:enable_feedback]
37
+ expand = props[:expand]
38
+ expand_loose = props[:expand_loose]
39
+ focus_color = props[:focus_color]
40
+ height = props[:height]
41
+ highlight_color = props[:highlight_color]
42
+ hover_color = props[:hover_color]
43
+ icon = props[:icon]
44
+ icon_color = props[:icon_color]
45
+ icon_size = props[:icon_size]
46
+ key = props[:key]
47
+ left = props[:left]
48
+ margin = props[:margin]
49
+ mouse_cursor = props[:mouse_cursor]
50
+ offset = props[:offset]
51
+ opacity = props[:opacity]
52
+ padding = props[:padding]
53
+ right = props[:right]
54
+ rotate = props[:rotate]
55
+ rtl = props[:rtl]
56
+ scale = props[:scale]
57
+ selected = props[:selected]
58
+ selected_icon = props[:selected_icon]
59
+ selected_icon_color = props[:selected_icon_color]
60
+ size_change_interval = props[:size_change_interval]
61
+ size_constraints = props[:size_constraints]
62
+ splash_color = props[:splash_color]
63
+ splash_radius = props[:splash_radius]
64
+ style = props[:style]
65
+ tooltip = props[:tooltip]
66
+ top = props[:top]
67
+ url = props[:url]
68
+ visible = props[:visible]
69
+ visual_density = props[:visual_density]
70
+ width = props[:width]
71
+ on_animation_end = props[:on_animation_end]
72
+ on_blur = props[:on_blur]
73
+ on_click = props[:on_click]
74
+ on_focus = props[:on_focus]
75
+ on_hover = props[:on_hover]
76
+ on_long_press = props[:on_long_press]
77
+ on_size_change = props[:on_size_change]
12
78
  alignment = "center" if alignment.nil?
13
79
  autofocus = false if autofocus.nil?
14
80
  icon_size = 24 if icon_size.nil?
15
81
  padding = { "all" => 8 } if padding.nil?
16
- unless splash_radius.nil? || splash_radius.positive?
17
- raise ArgumentError, "filled_icon_button splash_radius must be greater than 0"
18
- end
19
-
20
82
  props = {}
21
83
  props[:adaptive] = adaptive unless adaptive.nil?
22
84
  props[:align] = align unless align.nil?
@@ -8,9 +8,61 @@ module Ruflet
8
8
  TYPE = "filledtonalbutton".freeze
9
9
  WIRE = "FilledTonalButton".freeze
10
10
 
11
- def initialize(id: nil, adaptive: nil, align: nil, animate_align: nil, animate_margin: nil, animate_offset: nil, animate_opacity: nil, animate_position: nil, animate_rotation: nil, animate_scale: nil, animate_size: nil, aspect_ratio: nil, autofocus: nil, badge: nil, bgcolor: nil, bottom: nil, clip_behavior: nil, col: nil, color: nil, content: nil, data: nil, disabled: nil, elevation: nil, expand: nil, expand_loose: nil, height: nil, icon: nil, icon_color: nil, key: nil, left: nil, margin: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size_change_interval: nil, style: nil, tooltip: nil, top: nil, url: nil, visible: nil, width: nil, on_animation_end: nil, on_blur: nil, on_click: nil, on_focus: nil, on_hover: nil, on_long_press: nil, on_size_change: nil)
12
- raise ArgumentError, "filled_tonal_button requires content or icon" if content.nil? && icon.nil?
11
+ KEYWORDS = [:adaptive, :align, :animate_align, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :aspect_ratio, :autofocus, :badge, :bgcolor, :bottom, :clip_behavior, :col, :color, :content, :data, :disabled, :elevation, :expand, :expand_loose, :height, :icon, :icon_color, :key, :left, :margin, :offset, :opacity, :right, :rotate, :rtl, :scale, :size_change_interval, :style, :tooltip, :top, :url, :visible, :width, :on_animation_end, :on_blur, :on_click, :on_focus, :on_hover, :on_long_press, :on_size_change].freeze
13
12
 
13
+ def initialize(id: nil, **props)
14
+ unknown = props.keys.reject { |key| KEYWORDS.include?(key) }
15
+ raise ArgumentError, "unknown keywords: #{unknown.join(', ')}" unless unknown.empty?
16
+ adaptive = props[:adaptive]
17
+ align = props[:align]
18
+ animate_align = props[:animate_align]
19
+ animate_margin = props[:animate_margin]
20
+ animate_offset = props[:animate_offset]
21
+ animate_opacity = props[:animate_opacity]
22
+ animate_position = props[:animate_position]
23
+ animate_rotation = props[:animate_rotation]
24
+ animate_scale = props[:animate_scale]
25
+ animate_size = props[:animate_size]
26
+ aspect_ratio = props[:aspect_ratio]
27
+ autofocus = props[:autofocus]
28
+ badge = props[:badge]
29
+ bgcolor = props[:bgcolor]
30
+ bottom = props[:bottom]
31
+ clip_behavior = props[:clip_behavior]
32
+ col = props[:col]
33
+ color = props[:color]
34
+ content = props[:content]
35
+ data = props[:data]
36
+ disabled = props[:disabled]
37
+ elevation = props[:elevation]
38
+ expand = props[:expand]
39
+ expand_loose = props[:expand_loose]
40
+ height = props[:height]
41
+ icon = props[:icon]
42
+ icon_color = props[:icon_color]
43
+ key = props[:key]
44
+ left = props[:left]
45
+ margin = props[:margin]
46
+ offset = props[:offset]
47
+ opacity = props[:opacity]
48
+ right = props[:right]
49
+ rotate = props[:rotate]
50
+ rtl = props[:rtl]
51
+ scale = props[:scale]
52
+ size_change_interval = props[:size_change_interval]
53
+ style = props[:style]
54
+ tooltip = props[:tooltip]
55
+ top = props[:top]
56
+ url = props[:url]
57
+ visible = props[:visible]
58
+ width = props[:width]
59
+ on_animation_end = props[:on_animation_end]
60
+ on_blur = props[:on_blur]
61
+ on_click = props[:on_click]
62
+ on_focus = props[:on_focus]
63
+ on_hover = props[:on_hover]
64
+ on_long_press = props[:on_long_press]
65
+ on_size_change = props[:on_size_change]
14
66
  autofocus = false if autofocus.nil?
15
67
  clip_behavior = "none" if clip_behavior.nil?
16
68