ruflet_core 0.0.17 → 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 -30
  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 -50
  8. data/lib/ruflet_ui/ruflet/control.rb +69 -64
  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 +308 -526
  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 +7 -8
  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
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ruflet
4
+ module UI
5
+ module Controls
6
+ module RufletComponents
7
+ class SnackBarActionControl < Ruflet::Control
8
+ TYPE = "snackbaraction".freeze
9
+ WIRE = "SnackBarAction".freeze
10
+
11
+ def initialize(id: nil, badge: nil, bgcolor: nil, col: nil, data: nil, disabled: nil, disabled_bgcolor: nil, disabled_text_color: nil, expand: nil, expand_loose: nil, key: nil, label: nil, opacity: nil, rtl: nil, text_color: nil, tooltip: nil, visible: nil, on_click: nil)
12
+ raise ArgumentError, "snack_bar_action requires label" if label.nil?
13
+
14
+ props = {}
15
+ props[:badge] = badge unless badge.nil?
16
+ props[:bgcolor] = bgcolor unless bgcolor.nil?
17
+ props[:col] = col unless col.nil?
18
+ props[:data] = data unless data.nil?
19
+ props[:disabled] = disabled unless disabled.nil?
20
+ props[:disabled_bgcolor] = disabled_bgcolor unless disabled_bgcolor.nil?
21
+ props[:disabled_text_color] = disabled_text_color unless disabled_text_color.nil?
22
+ props[:expand] = expand unless expand.nil?
23
+ props[:expand_loose] = expand_loose unless expand_loose.nil?
24
+ props[:key] = key unless key.nil?
25
+ props[:label] = label unless label.nil?
26
+ props[:opacity] = opacity unless opacity.nil?
27
+ props[:rtl] = rtl unless rtl.nil?
28
+ props[:text_color] = text_color unless text_color.nil?
29
+ props[:tooltip] = tooltip unless tooltip.nil?
30
+ props[:visible] = visible unless visible.nil?
31
+ props[:on_click] = on_click unless on_click.nil?
32
+ super(type: TYPE, id: id, **props)
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ruflet
4
+ module UI
5
+ module Controls
6
+ module RufletComponents
7
+ class SpinkitControl < Ruflet::Control
8
+ TYPE = "spinkit".freeze
9
+ WIRE = "RufletSpinKit".freeze
10
+
11
+ KEYWORDS = [:align, :animate_align, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :aspect_ratio, :badge, :bottom, :col, :color, :data, :disabled, :duration, :expand, :expand_loose, :height, :key, :left, :margin, :offset, :opacity, :padding, :right, :rotate, :rtl, :scale, :size, :size_change_interval, :tooltip, :top, :variant, :visible, :width].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)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -8,14 +8,59 @@ module Ruflet
8
8
  TYPE = "submenubutton".freeze
9
9
  WIRE = "SubmenuButton".freeze
10
10
 
11
- def initialize(id: nil, align: nil, alignment_offset: 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, clip_behavior: nil, col: nil, content: nil, controls: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, height: nil, key: nil, leading: nil, left: nil, margin: nil, menu_style: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size_change_interval: nil, style: nil, tooltip: nil, top: nil, trailing: nil, visible: nil, width: nil, on_animation_end: nil, on_blur: nil, on_close: nil, on_focus: nil, on_hover: nil, on_open: nil, on_size_change: nil)
12
- clip_behavior = "none" if clip_behavior.nil?
13
-
14
- if content.nil? || (content.respond_to?(:props) && content.props["visible"] == false)
15
- raise ArgumentError, "submenu_button requires visible content"
16
- end
11
+ KEYWORDS = [:align, :alignment_offset, :animate_align, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :aspect_ratio, :badge, :bottom, :clip_behavior, :col, :content, :controls, :data, :disabled, :expand, :expand_loose, :height, :key, :leading, :left, :margin, :menu_style, :offset, :opacity, :right, :rotate, :rtl, :scale, :size_change_interval, :style, :tooltip, :top, :trailing, :visible, :width, :on_animation_end, :on_blur, :on_close, :on_focus, :on_hover, :on_open, :on_size_change].freeze
17
12
 
18
- raise ArgumentError, "submenu_button height must be greater than or equal to 0" unless height.nil? || height >= 0
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
+ alignment_offset = props[:alignment_offset]
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
+ badge = props[:badge]
28
+ bottom = props[:bottom]
29
+ clip_behavior = props[:clip_behavior]
30
+ col = props[:col]
31
+ content = props[:content]
32
+ controls = props[:controls]
33
+ data = props[:data]
34
+ disabled = props[:disabled]
35
+ expand = props[:expand]
36
+ expand_loose = props[:expand_loose]
37
+ height = props[:height]
38
+ key = props[:key]
39
+ leading = props[:leading]
40
+ left = props[:left]
41
+ margin = props[:margin]
42
+ menu_style = props[:menu_style]
43
+ offset = props[:offset]
44
+ opacity = props[:opacity]
45
+ right = props[:right]
46
+ rotate = props[:rotate]
47
+ rtl = props[:rtl]
48
+ scale = props[:scale]
49
+ size_change_interval = props[:size_change_interval]
50
+ style = props[:style]
51
+ tooltip = props[:tooltip]
52
+ top = props[:top]
53
+ trailing = props[:trailing]
54
+ visible = props[:visible]
55
+ width = props[:width]
56
+ on_animation_end = props[:on_animation_end]
57
+ on_blur = props[:on_blur]
58
+ on_close = props[:on_close]
59
+ on_focus = props[:on_focus]
60
+ on_hover = props[:on_hover]
61
+ on_open = props[:on_open]
62
+ on_size_change = props[:on_size_change]
63
+ clip_behavior = "none" if clip_behavior.nil?
19
64
 
20
65
  props = {}
21
66
  props[:align] = align unless align.nil?
@@ -8,67 +8,15 @@ module Ruflet
8
8
  TYPE = "switch".freeze
9
9
  WIRE = "Switch".freeze
10
10
 
11
- def initialize(id: nil, active_color: nil, active_track_color: 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, bottom: nil, col: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, focus_color: nil, height: nil, hover_color: nil, inactive_thumb_color: nil, inactive_track_color: nil, key: nil, label: nil, label_position: nil, label_text_style: nil, left: nil, margin: nil, mouse_cursor: nil, offset: nil, opacity: nil, overlay_color: nil, padding: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size_change_interval: nil, splash_radius: nil, thumb_color: nil, thumb_icon: nil, tooltip: nil, top: nil, track_color: nil, track_outline_color: nil, track_outline_width: nil, value: nil, visible: nil, width: nil, on_animation_end: nil, on_blur: nil, on_change: nil, on_focus: nil, on_size_change: nil)
12
- props = {}
13
- props[:active_color] = active_color unless active_color.nil?
14
- props[:active_track_color] = active_track_color unless active_track_color.nil?
15
- props[:adaptive] = adaptive unless adaptive.nil?
16
- props[:align] = align unless align.nil?
17
- props[:animate_align] = animate_align unless animate_align.nil?
18
- props[:animate_margin] = animate_margin unless animate_margin.nil?
19
- props[:animate_offset] = animate_offset unless animate_offset.nil?
20
- props[:animate_opacity] = animate_opacity unless animate_opacity.nil?
21
- props[:animate_position] = animate_position unless animate_position.nil?
22
- props[:animate_rotation] = animate_rotation unless animate_rotation.nil?
23
- props[:animate_scale] = animate_scale unless animate_scale.nil?
24
- props[:animate_size] = animate_size unless animate_size.nil?
25
- props[:aspect_ratio] = aspect_ratio unless aspect_ratio.nil?
26
- props[:autofocus] = autofocus unless autofocus.nil?
27
- props[:badge] = badge unless badge.nil?
28
- props[:bottom] = bottom unless bottom.nil?
29
- props[:col] = col unless col.nil?
30
- props[:data] = data unless data.nil?
31
- props[:disabled] = disabled unless disabled.nil?
32
- props[:expand] = expand unless expand.nil?
33
- props[:expand_loose] = expand_loose unless expand_loose.nil?
34
- props[:focus_color] = focus_color unless focus_color.nil?
35
- props[:height] = height unless height.nil?
36
- props[:hover_color] = hover_color unless hover_color.nil?
37
- props[:inactive_thumb_color] = inactive_thumb_color unless inactive_thumb_color.nil?
38
- props[:inactive_track_color] = inactive_track_color unless inactive_track_color.nil?
39
- props[:key] = key unless key.nil?
40
- props[:label] = label unless label.nil?
41
- props[:label_position] = label_position unless label_position.nil?
42
- props[:label_text_style] = label_text_style unless label_text_style.nil?
43
- props[:left] = left unless left.nil?
44
- props[:margin] = margin unless margin.nil?
45
- props[:mouse_cursor] = mouse_cursor unless mouse_cursor.nil?
46
- props[:offset] = offset unless offset.nil?
47
- props[:opacity] = opacity unless opacity.nil?
48
- props[:overlay_color] = overlay_color unless overlay_color.nil?
49
- props[:padding] = padding unless padding.nil?
50
- props[:right] = right unless right.nil?
51
- props[:rotate] = rotate unless rotate.nil?
52
- props[:rtl] = rtl unless rtl.nil?
53
- props[:scale] = scale unless scale.nil?
54
- props[:size_change_interval] = size_change_interval unless size_change_interval.nil?
55
- props[:splash_radius] = splash_radius unless splash_radius.nil?
56
- props[:thumb_color] = thumb_color unless thumb_color.nil?
57
- props[:thumb_icon] = thumb_icon unless thumb_icon.nil?
58
- props[:tooltip] = tooltip unless tooltip.nil?
59
- props[:top] = top unless top.nil?
60
- props[:track_color] = track_color unless track_color.nil?
61
- props[:track_outline_color] = track_outline_color unless track_outline_color.nil?
62
- props[:track_outline_width] = track_outline_width unless track_outline_width.nil?
63
- props[:value] = value unless value.nil?
64
- props[:visible] = visible unless visible.nil?
65
- props[:width] = width unless width.nil?
66
- props[:on_animation_end] = on_animation_end unless on_animation_end.nil?
67
- props[:on_blur] = on_blur unless on_blur.nil?
68
- props[:on_change] = on_change unless on_change.nil?
69
- props[:on_focus] = on_focus unless on_focus.nil?
70
- props[:on_size_change] = on_size_change unless on_size_change.nil?
71
- super(type: TYPE, id: id, **props)
11
+ KEYWORDS = [:active_color, :active_track_color, :adaptive, :align, :animate_align, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :aspect_ratio, :autofocus, :badge, :bottom, :col, :data, :disabled, :expand, :expand_loose, :focus_color, :height, :hover_color, :inactive_thumb_color, :inactive_track_color, :key, :label, :label_position, :label_text_style, :left, :margin, :mouse_cursor, :offset, :opacity, :overlay_color, :padding, :right, :rotate, :rtl, :scale, :size_change_interval, :splash_radius, :thumb_color, :thumb_icon, :tooltip, :top, :track_color, :track_outline_color, :track_outline_width, :value, :visible, :width, :on_animation_end, :on_blur, :on_change, :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)
72
20
  end
73
21
  end
74
22
  end
@@ -9,13 +9,6 @@ module Ruflet
9
9
  WIRE = "Tab".freeze
10
10
 
11
11
  def initialize(id: nil, adaptive: nil, badge: nil, col: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, height: nil, icon: nil, icon_margin: nil, key: nil, label: nil, opacity: nil, rtl: nil, tooltip: nil, visible: nil)
12
- raise ArgumentError, "tab requires label or icon" if label.nil? && icon.nil?
13
-
14
- min_height = icon.nil? || label.nil? ? 46.0 : 72.0
15
- unless height.nil? || height >= min_height
16
- raise ArgumentError, "tab height cannot be lower than #{min_height.to_i}"
17
- end
18
-
19
12
  props = {}
20
13
  props[:adaptive] = adaptive unless adaptive.nil?
21
14
  props[:badge] = badge unless badge.nil?
@@ -8,71 +8,15 @@ module Ruflet
8
8
  TYPE = "tabbar".freeze
9
9
  WIRE = "TabBar".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, bottom: nil, col: nil, data: nil, disabled: nil, divider_color: nil, divider_height: nil, enable_feedback: nil, expand: nil, expand_loose: nil, height: nil, indicator: nil, indicator_animation: nil, indicator_color: nil, indicator_size: nil, indicator_thickness: nil, key: nil, label_color: nil, label_padding: nil, label_text_style: nil, left: nil, margin: nil, mouse_cursor: nil, offset: nil, opacity: nil, overlay_color: nil, padding: nil, right: nil, rotate: nil, rtl: nil, scale: nil, scrollable: nil, secondary: nil, size_change_interval: nil, splash_border_radius: nil, tab_alignment: nil, tabs: nil, tooltip: nil, top: nil, unselected_label_color: nil, unselected_label_text_style: nil, visible: nil, width: nil, on_animation_end: nil, on_click: nil, on_hover: nil, on_size_change: nil)
12
- { divider_height: divider_height, indicator_thickness: indicator_thickness }.each do |name, value|
13
- raise ArgumentError, "tab_bar #{name} must be greater than or equal to 0" unless value.nil? || value >= 0
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, :bottom, :col, :data, :disabled, :divider_color, :divider_height, :enable_feedback, :expand, :expand_loose, :height, :indicator, :indicator_animation, :indicator_color, :indicator_size, :indicator_thickness, :key, :label_color, :label_padding, :label_text_style, :left, :margin, :mouse_cursor, :offset, :opacity, :overlay_color, :padding, :right, :rotate, :rtl, :scale, :scrollable, :secondary, :size_change_interval, :splash_border_radius, :tab_alignment, :tabs, :tooltip, :top, :unselected_label_color, :unselected_label_text_style, :visible, :width, :on_animation_end, :on_click, :on_hover, :on_size_change].freeze
15
12
 
16
- props = {}
17
- props[:adaptive] = adaptive unless adaptive.nil?
18
- props[:align] = align unless align.nil?
19
- props[:animate_align] = animate_align unless animate_align.nil?
20
- props[:animate_margin] = animate_margin unless animate_margin.nil?
21
- props[:animate_offset] = animate_offset unless animate_offset.nil?
22
- props[:animate_opacity] = animate_opacity unless animate_opacity.nil?
23
- props[:animate_position] = animate_position unless animate_position.nil?
24
- props[:animate_rotation] = animate_rotation unless animate_rotation.nil?
25
- props[:animate_scale] = animate_scale unless animate_scale.nil?
26
- props[:animate_size] = animate_size unless animate_size.nil?
27
- props[:aspect_ratio] = aspect_ratio unless aspect_ratio.nil?
28
- props[:badge] = badge unless badge.nil?
29
- props[:bottom] = bottom unless bottom.nil?
30
- props[:col] = col unless col.nil?
31
- props[:data] = data unless data.nil?
32
- props[:disabled] = disabled unless disabled.nil?
33
- props[:divider_color] = divider_color unless divider_color.nil?
34
- props[:divider_height] = divider_height unless divider_height.nil?
35
- props[:enable_feedback] = enable_feedback unless enable_feedback.nil?
36
- props[:expand] = expand unless expand.nil?
37
- props[:expand_loose] = expand_loose unless expand_loose.nil?
38
- props[:height] = height unless height.nil?
39
- props[:indicator] = indicator unless indicator.nil?
40
- props[:indicator_animation] = indicator_animation unless indicator_animation.nil?
41
- props[:indicator_color] = indicator_color unless indicator_color.nil?
42
- props[:indicator_size] = indicator_size unless indicator_size.nil?
43
- props[:indicator_thickness] = indicator_thickness unless indicator_thickness.nil?
44
- props[:key] = key unless key.nil?
45
- props[:label_color] = label_color unless label_color.nil?
46
- props[:label_padding] = label_padding unless label_padding.nil?
47
- props[:label_text_style] = label_text_style unless label_text_style.nil?
48
- props[:left] = left unless left.nil?
49
- props[:margin] = margin unless margin.nil?
50
- props[:mouse_cursor] = mouse_cursor unless mouse_cursor.nil?
51
- props[:offset] = offset unless offset.nil?
52
- props[:opacity] = opacity unless opacity.nil?
53
- props[:overlay_color] = overlay_color unless overlay_color.nil?
54
- props[:padding] = padding unless padding.nil?
55
- props[:right] = right unless right.nil?
56
- props[:rotate] = rotate unless rotate.nil?
57
- props[:rtl] = rtl unless rtl.nil?
58
- props[:scale] = scale unless scale.nil?
59
- props[:scrollable] = scrollable unless scrollable.nil?
60
- props[:secondary] = secondary unless secondary.nil?
61
- props[:size_change_interval] = size_change_interval unless size_change_interval.nil?
62
- props[:splash_border_radius] = splash_border_radius unless splash_border_radius.nil?
63
- props[:tab_alignment] = tab_alignment unless tab_alignment.nil?
64
- props[:tabs] = tabs unless tabs.nil?
65
- props[:tooltip] = tooltip unless tooltip.nil?
66
- props[:top] = top unless top.nil?
67
- props[:unselected_label_color] = unselected_label_color unless unselected_label_color.nil?
68
- props[:unselected_label_text_style] = unselected_label_text_style unless unselected_label_text_style.nil?
69
- props[:visible] = visible unless visible.nil?
70
- props[:width] = width unless width.nil?
71
- props[:on_animation_end] = on_animation_end unless on_animation_end.nil?
72
- props[:on_click] = on_click unless on_click.nil?
73
- props[:on_hover] = on_hover unless on_hover.nil?
74
- props[:on_size_change] = on_size_change unless on_size_change.nil?
75
- super(type: TYPE, id: id, **props)
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)
76
20
  end
77
21
  end
78
22
  end
@@ -8,14 +8,52 @@ module Ruflet
8
8
  TYPE = "tabbarview".freeze
9
9
  WIRE = "TabBarView".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, bottom: nil, clip_behavior: nil, col: nil, controls: nil, data: nil, disabled: nil, expand: nil, expand_loose: 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, tooltip: nil, top: nil, viewport_fraction: nil, visible: nil, width: nil, on_animation_end: nil, on_size_change: nil)
11
+ KEYWORDS = [:adaptive, :align, :animate_align, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :aspect_ratio, :badge, :bottom, :clip_behavior, :col, :controls, :data, :disabled, :expand, :expand_loose, :height, :key, :left, :margin, :offset, :opacity, :right, :rotate, :rtl, :scale, :size_change_interval, :tooltip, :top, :viewport_fraction, :visible, :width, :on_animation_end, :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
+ 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
+ badge = props[:badge]
28
+ bottom = props[:bottom]
29
+ clip_behavior = props[:clip_behavior]
30
+ col = props[:col]
31
+ controls = props[:controls]
32
+ data = props[:data]
33
+ disabled = props[:disabled]
34
+ expand = props[:expand]
35
+ expand_loose = props[:expand_loose]
36
+ height = props[:height]
37
+ key = props[:key]
38
+ left = props[:left]
39
+ margin = props[:margin]
40
+ offset = props[:offset]
41
+ opacity = props[:opacity]
42
+ right = props[:right]
43
+ rotate = props[:rotate]
44
+ rtl = props[:rtl]
45
+ scale = props[:scale]
46
+ size_change_interval = props[:size_change_interval]
47
+ tooltip = props[:tooltip]
48
+ top = props[:top]
49
+ viewport_fraction = props[:viewport_fraction]
50
+ visible = props[:visible]
51
+ width = props[:width]
52
+ on_animation_end = props[:on_animation_end]
53
+ on_size_change = props[:on_size_change]
12
54
  clip_behavior = "hardEdge" if clip_behavior.nil?
13
55
  viewport_fraction = 1.0 if viewport_fraction.nil?
14
56
 
15
- unless viewport_fraction.nil? || viewport_fraction > 0
16
- raise ArgumentError, "tab_bar_view viewport_fraction must be greater than 0"
17
- end
18
-
19
57
  props = {}
20
58
  props[:adaptive] = adaptive unless adaptive.nil?
21
59
  props[:align] = align unless align.nil?
@@ -8,55 +8,15 @@ module Ruflet
8
8
  TYPE = "tabs".freeze
9
9
  WIRE = "Tabs".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, animation_duration: nil, aspect_ratio: nil, badge: nil, bottom: nil, col: nil, content: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, height: nil, key: nil, left: nil, length: nil, margin: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, scale: nil, selected_index: nil, size_change_interval: nil, tooltip: nil, top: nil, visible: nil, width: nil, on_animation_end: nil, on_change: nil, on_size_change: nil)
12
- raise ArgumentError, "tabs length must be greater than or equal to 0" unless length.nil? || length >= 0
11
+ KEYWORDS = [:adaptive, :align, :animate_align, :animate_margin, :animate_offset, :animate_opacity, :animate_position, :animate_rotation, :animate_scale, :animate_size, :animation_duration, :aspect_ratio, :badge, :bottom, :col, :content, :data, :disabled, :expand, :expand_loose, :height, :key, :left, :length, :margin, :offset, :opacity, :right, :rotate, :rtl, :scale, :selected_index, :size_change_interval, :tooltip, :top, :visible, :width, :on_animation_end, :on_change, :on_size_change].freeze
13
12
 
14
- unless selected_index.nil? || length.nil? || (-length...length).cover?(selected_index)
15
- raise IndexError, "tabs selected_index is out of range"
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?
16
18
  end
17
-
18
- props = {}
19
- props[:adaptive] = adaptive unless adaptive.nil?
20
- props[:align] = align unless align.nil?
21
- props[:animate_align] = animate_align unless animate_align.nil?
22
- props[:animate_margin] = animate_margin unless animate_margin.nil?
23
- props[:animate_offset] = animate_offset unless animate_offset.nil?
24
- props[:animate_opacity] = animate_opacity unless animate_opacity.nil?
25
- props[:animate_position] = animate_position unless animate_position.nil?
26
- props[:animate_rotation] = animate_rotation unless animate_rotation.nil?
27
- props[:animate_scale] = animate_scale unless animate_scale.nil?
28
- props[:animate_size] = animate_size unless animate_size.nil?
29
- props[:animation_duration] = animation_duration unless animation_duration.nil?
30
- props[:aspect_ratio] = aspect_ratio unless aspect_ratio.nil?
31
- props[:badge] = badge unless badge.nil?
32
- props[:bottom] = bottom unless bottom.nil?
33
- props[:col] = col unless col.nil?
34
- props[:content] = content unless content.nil?
35
- props[:data] = data unless data.nil?
36
- props[:disabled] = disabled unless disabled.nil?
37
- props[:expand] = expand unless expand.nil?
38
- props[:expand_loose] = expand_loose unless expand_loose.nil?
39
- props[:height] = height unless height.nil?
40
- props[:key] = key unless key.nil?
41
- props[:left] = left unless left.nil?
42
- props[:length] = length unless length.nil?
43
- props[:margin] = margin unless margin.nil?
44
- props[:offset] = offset unless offset.nil?
45
- props[:opacity] = opacity unless opacity.nil?
46
- props[:right] = right unless right.nil?
47
- props[:rotate] = rotate unless rotate.nil?
48
- props[:rtl] = rtl unless rtl.nil?
49
- props[:scale] = scale unless scale.nil?
50
- props[:selected_index] = selected_index unless selected_index.nil?
51
- props[:size_change_interval] = size_change_interval unless size_change_interval.nil?
52
- props[:tooltip] = tooltip unless tooltip.nil?
53
- props[:top] = top unless top.nil?
54
- props[:visible] = visible unless visible.nil?
55
- props[:width] = width unless width.nil?
56
- props[:on_animation_end] = on_animation_end unless on_animation_end.nil?
57
- props[:on_change] = on_change unless on_change.nil?
58
- props[:on_size_change] = on_size_change unless on_size_change.nil?
59
- super(type: TYPE, id: id, **props)
19
+ super(type: TYPE, id: id, **compact)
60
20
  end
61
21
  end
62
22
  end
@@ -8,9 +8,58 @@ module Ruflet
8
8
  TYPE = "textbutton".freeze
9
9
  WIRE = "TextButton".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, bottom: nil, clip_behavior: nil, col: nil, content: nil, data: nil, disabled: 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, "text_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, :bottom, :clip_behavior, :col, :content, :data, :disabled, :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
+ bottom = props[:bottom]
30
+ clip_behavior = props[:clip_behavior]
31
+ col = props[:col]
32
+ content = props[:content]
33
+ data = props[:data]
34
+ disabled = props[:disabled]
35
+ expand = props[:expand]
36
+ expand_loose = props[:expand_loose]
37
+ height = props[:height]
38
+ icon = props[:icon]
39
+ icon_color = props[:icon_color]
40
+ key = props[:key]
41
+ left = props[:left]
42
+ margin = props[:margin]
43
+ offset = props[:offset]
44
+ opacity = props[:opacity]
45
+ right = props[:right]
46
+ rotate = props[:rotate]
47
+ rtl = props[:rtl]
48
+ scale = props[:scale]
49
+ size_change_interval = props[:size_change_interval]
50
+ style = props[:style]
51
+ tooltip = props[:tooltip]
52
+ top = props[:top]
53
+ url = props[:url]
54
+ visible = props[:visible]
55
+ width = props[:width]
56
+ on_animation_end = props[:on_animation_end]
57
+ on_blur = props[:on_blur]
58
+ on_click = props[:on_click]
59
+ on_focus = props[:on_focus]
60
+ on_hover = props[:on_hover]
61
+ on_long_press = props[:on_long_press]
62
+ on_size_change = props[:on_size_change]
14
63
  autofocus = false if autofocus.nil?
15
64
  clip_behavior = "none" if clip_behavior.nil?
16
65