ruflet_core 0.0.12 → 0.0.13
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.
- checksums.yaml +4 -4
- data/lib/ruflet/version.rb +1 -1
- data/lib/ruflet_protocol/ruflet/protocol.rb +50 -4
- data/lib/ruflet_ui/ruflet/control.rb +11 -4
- data/lib/ruflet_ui/ruflet/dsl.rb +229 -37
- data/lib/ruflet_ui/ruflet/events/gesture_events.rb +113 -9
- data/lib/ruflet_ui/ruflet/page.rb +820 -145
- data/lib/ruflet_ui/ruflet/types/animation.rb +110 -0
- data/lib/ruflet_ui/ruflet/ui/control_registry.rb +1 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoactionsheet_control.rb +13 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoactionsheetaction_control.rb +4 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoactivityindicator_control.rb +4 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoalertdialog_control.rb +17 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoappbar_control.rb +3 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinobottomsheet_control.rb +4 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinobutton_control.rb +9 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinocheckbox_control.rb +6 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinocontextmenu_control.rb +11 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinocontextmenuaction_control.rb +4 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinodatepicker_control.rb +14 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinodialogaction_control.rb +4 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinofilledbutton_control.rb +9 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinolisttile_control.rb +12 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinonavigationbar_control.rb +11 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinopicker_control.rb +18 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoradio_control.rb +6 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinosegmentedbutton_control.rb +2 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoslider_control.rb +7 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoslidingsegmentedbutton_control.rb +3 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoswitch_control.rb +7 -1
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinotextfield_control.rb +7 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinotimerpicker_control.rb +18 -0
- data/lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinotintedbutton_control.rb +9 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/alertdialog_control.rb +4 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/appbar_control.rb +4 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/audio_control.rb +35 -1
- data/lib/ruflet_ui/ruflet/ui/controls/materials/autocomplete_control.rb +4 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/autocompletesuggestion_control.rb +26 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/badge_control.rb +7 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/banner_control.rb +11 -1
- data/lib/ruflet_ui/ruflet/ui/controls/materials/bottomappbar_control.rb +2 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/bottomsheet_control.rb +5 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/button_control.rb +2 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/card_control.rb +4 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/chip_control.rb +11 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/circleavatar_control.rb +12 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/contextmenu_control.rb +19 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/datacell_control.rb +4 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/datacolumn_control.rb +4 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/datatable_control.rb +34 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/datepicker_control.rb +18 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/daterangepicker_control.rb +20 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/divider_control.rb +9 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/dropdown_control.rb +11 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/dropdownoption_control.rb +5 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/expansionpanel_control.rb +8 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/expansionpanellist_control.rb +6 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/expansiontile_control.rb +6 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/filledbutton_control.rb +5 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/fillediconbutton_control.rb +8 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/filledtonalbutton_control.rb +5 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/filledtonaliconbutton_control.rb +8 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/floatingactionbutton_control.rb +20 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/iconbutton_control.rb +4 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/listtile_control.rb +4 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/map_controls.rb +240 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/menubar_control.rb +2 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/menuitembutton_control.rb +6 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/navigationbar_control.rb +11 -1
- data/lib/ruflet_ui/ruflet/ui/controls/materials/navigationbardestination_control.rb +2 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/navigationdrawer_control.rb +12 -1
- data/lib/ruflet_ui/ruflet/ui/controls/materials/navigationdrawerdestination_control.rb +2 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/navigationrail_control.rb +21 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/navigationraildestination_control.rb +2 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/outlinedbutton_control.rb +5 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/outlinediconbutton_control.rb +8 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/popupmenubutton_control.rb +4 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/popupmenuitem_control.rb +6 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/progressbar_control.rb +9 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/progressring_control.rb +8 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/rangeslider_control.rb +13 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/ruflet_controls.rb +24 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/searchbar_control.rb +28 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/segment_control.rb +5 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/segmentedbutton_control.rb +19 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/selectionarea_control.rb +4 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/snackbar_control.rb +5 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/submenubutton_control.rb +8 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/tab_control.rb +7 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/tabbar_control.rb +4 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/tabbarview_control.rb +7 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/tabs_control.rb +6 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/textbutton_control.rb +5 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/verticaldivider_control.rb +9 -0
- data/lib/ruflet_ui/ruflet/ui/controls/materials/video_control.rb +86 -1
- data/lib/ruflet_ui/ruflet/ui/controls/ruflet_controls.rb +24 -0
- data/lib/ruflet_ui/ruflet/ui/controls/shared/animatedswitcher_control.rb +10 -0
- data/lib/ruflet_ui/ruflet/ui/controls/shared/browsercontextmenu_control.rb +12 -1
- data/lib/ruflet_ui/ruflet/ui/controls/shared/canvas_control.rb +14 -0
- data/lib/ruflet_ui/ruflet/ui/controls/shared/dismissible_control.rb +19 -0
- data/lib/ruflet_ui/ruflet/ui/controls/shared/draggable_control.rb +9 -0
- data/lib/ruflet_ui/ruflet/ui/controls/shared/dragtarget_control.rb +6 -0
- data/lib/ruflet_ui/ruflet/ui/controls/shared/gridview_control.rb +20 -0
- data/lib/ruflet_ui/ruflet/ui/controls/shared/image_control.rb +19 -1
- data/lib/ruflet_ui/ruflet/ui/controls/shared/interactiveviewer_control.rb +37 -0
- data/lib/ruflet_ui/ruflet/ui/controls/shared/listview_control.rb +17 -0
- data/lib/ruflet_ui/ruflet/ui/controls/shared/pageview_control.rb +13 -0
- data/lib/ruflet_ui/ruflet/ui/controls/shared/placeholder_control.rb +12 -0
- data/lib/ruflet_ui/ruflet/ui/controls/shared/reorderabledraghandle_control.rb +4 -0
- data/lib/ruflet_ui/ruflet/ui/controls/shared/responsiverow_control.rb +22 -0
- data/lib/ruflet_ui/ruflet/ui/controls/shared/safearea_control.rb +11 -0
- data/lib/ruflet_ui/ruflet/ui/controls/shared/semantics_control.rb +2 -0
- data/lib/ruflet_ui/ruflet/ui/controls/shared/stack_control.rb +3 -0
- data/lib/ruflet_ui/ruflet/ui/controls/shared/text_control.rb +20 -1
- data/lib/ruflet_ui/ruflet/ui/controls/shared/view_control.rb +8 -0
- data/lib/ruflet_ui/ruflet/ui/controls/shared/window_control.rb +16 -0
- data/lib/ruflet_ui/ruflet/ui/controls/shared/windowdragarea_control.rb +6 -0
- data/lib/ruflet_ui/ruflet/ui/cupertino_control_methods.rb +83 -6
- data/lib/ruflet_ui/ruflet/ui/material_control_methods.rb +513 -33
- data/lib/ruflet_ui/ruflet/ui/material_control_registry.rb +2 -0
- data/lib/ruflet_ui/ruflet/ui/services/ruflet/audio_recorder_control.rb +87 -0
- data/lib/ruflet_ui/ruflet/ui/services/ruflet/geolocator_control.rb +85 -0
- data/lib/ruflet_ui/ruflet/ui/services/ruflet/permissionhandler_control.rb +53 -0
- data/lib/ruflet_ui/ruflet/ui/services/ruflet/securestorage_control.rb +89 -0
- data/lib/ruflet_ui/ruflet/ui/services/ruflet/semanticsservice_control.rb +28 -0
- data/lib/ruflet_ui/ruflet/ui/services/ruflet/tester_control.rb +126 -0
- data/lib/ruflet_ui/ruflet/ui/services/ruflet_services.rb +16 -0
- data/lib/ruflet_ui/ruflet/ui/shared_control_forwarders.rb +230 -38
- data/lib/ruflet_ui.rb +4 -0
- metadata +9 -1
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Ruflet
|
|
4
|
+
module UI
|
|
5
|
+
module Types
|
|
6
|
+
module AnimationCurve
|
|
7
|
+
BOUNCE_IN = "bounceIn"
|
|
8
|
+
BOUNCE_IN_OUT = "bounceInOut"
|
|
9
|
+
BOUNCE_OUT = "bounceOut"
|
|
10
|
+
DECELERATE = "decelerate"
|
|
11
|
+
EASE = "ease"
|
|
12
|
+
EASE_IN = "easeIn"
|
|
13
|
+
EASE_IN_BACK = "easeInBack"
|
|
14
|
+
EASE_IN_CIRC = "easeInCirc"
|
|
15
|
+
EASE_IN_CUBIC = "easeInCubic"
|
|
16
|
+
EASE_IN_EXPO = "easeInExpo"
|
|
17
|
+
EASE_IN_OUT = "easeInOut"
|
|
18
|
+
EASE_IN_OUT_BACK = "easeInOutBack"
|
|
19
|
+
EASE_IN_OUT_CIRC = "easeInOutCirc"
|
|
20
|
+
EASE_IN_OUT_CUBIC = "easeInOutCubic"
|
|
21
|
+
EASE_IN_OUT_CUBIC_EMPHASIZED = "easeInOutCubicEmphasized"
|
|
22
|
+
EASE_IN_OUT_EXPO = "easeInOutExpo"
|
|
23
|
+
EASE_IN_OUT_QUAD = "easeInOutQuad"
|
|
24
|
+
EASE_IN_OUT_QUART = "easeInOutQuart"
|
|
25
|
+
EASE_IN_OUT_QUINT = "easeInOutQuint"
|
|
26
|
+
EASE_IN_OUT_SINE = "easeInOutSine"
|
|
27
|
+
EASE_IN_QUAD = "easeInQuad"
|
|
28
|
+
EASE_IN_QUART = "easeInQuart"
|
|
29
|
+
EASE_IN_QUINT = "easeInQuint"
|
|
30
|
+
EASE_IN_SINE = "easeInSine"
|
|
31
|
+
EASE_IN_TO_LINEAR = "easeInToLinear"
|
|
32
|
+
EASE_OUT = "easeOut"
|
|
33
|
+
EASE_OUT_BACK = "easeOutBack"
|
|
34
|
+
EASE_OUT_CIRC = "easeOutCirc"
|
|
35
|
+
EASE_OUT_CUBIC = "easeOutCubic"
|
|
36
|
+
EASE_OUT_EXPO = "easeOutExpo"
|
|
37
|
+
EASE_OUT_QUAD = "easeOutQuad"
|
|
38
|
+
EASE_OUT_QUART = "easeOutQuart"
|
|
39
|
+
EASE_OUT_QUINT = "easeOutQuint"
|
|
40
|
+
EASE_OUT_SINE = "easeOutSine"
|
|
41
|
+
ELASTIC_IN = "elasticIn"
|
|
42
|
+
ELASTIC_IN_OUT = "elasticInOut"
|
|
43
|
+
ELASTIC_OUT = "elasticOut"
|
|
44
|
+
FAST_LINEAR_TO_SLOW_EASE_IN = "fastLinearToSlowEaseIn"
|
|
45
|
+
FAST_OUT_SLOWIN = "fastOutSlowIn"
|
|
46
|
+
LINEAR = "linear"
|
|
47
|
+
LINEAR_TO_EASE_OUT = "linearToEaseOut"
|
|
48
|
+
SLOW_MIDDLE = "slowMiddle"
|
|
49
|
+
|
|
50
|
+
module_function
|
|
51
|
+
|
|
52
|
+
def values
|
|
53
|
+
constants(false).map { |name| const_get(name) }
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
class Animation
|
|
58
|
+
attr_reader :duration, :curve
|
|
59
|
+
|
|
60
|
+
def initialize(duration: nil, curve: AnimationCurve::LINEAR)
|
|
61
|
+
@duration = duration
|
|
62
|
+
@curve = curve
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def copy(duration: nil, curve: nil)
|
|
66
|
+
self.class.new(
|
|
67
|
+
duration: duration.nil? ? @duration : duration,
|
|
68
|
+
curve: curve.nil? ? @curve : curve
|
|
69
|
+
)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def to_h
|
|
73
|
+
{}.tap do |hash|
|
|
74
|
+
hash["duration"] = duration unless duration.nil?
|
|
75
|
+
hash["curve"] = curve unless curve.nil?
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
class AnimationStyle
|
|
81
|
+
attr_reader :duration, :reverse_duration, :curve, :reverse_curve
|
|
82
|
+
|
|
83
|
+
def initialize(duration: nil, reverse_duration: nil, curve: nil, reverse_curve: nil)
|
|
84
|
+
@duration = duration
|
|
85
|
+
@reverse_duration = reverse_duration
|
|
86
|
+
@curve = curve
|
|
87
|
+
@reverse_curve = reverse_curve
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def copy(duration: nil, reverse_duration: nil, curve: nil, reverse_curve: nil)
|
|
91
|
+
self.class.new(
|
|
92
|
+
duration: duration.nil? ? @duration : duration,
|
|
93
|
+
reverse_duration: reverse_duration.nil? ? @reverse_duration : reverse_duration,
|
|
94
|
+
curve: curve.nil? ? @curve : curve,
|
|
95
|
+
reverse_curve: reverse_curve.nil? ? @reverse_curve : reverse_curve
|
|
96
|
+
)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def to_h
|
|
100
|
+
{}.tap do |hash|
|
|
101
|
+
hash["duration"] = duration unless duration.nil?
|
|
102
|
+
hash["reverse_duration"] = reverse_duration unless reverse_duration.nil?
|
|
103
|
+
hash["curve"] = curve unless curve.nil?
|
|
104
|
+
hash["reverse_curve"] = reverse_curve unless reverse_curve.nil?
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
@@ -16,6 +16,7 @@ module Ruflet
|
|
|
16
16
|
.each_with_object({}) do |schema, events|
|
|
17
17
|
schema.instance_method(:initialize).parameters
|
|
18
18
|
.select { |kind, name| (kind == :key || kind == :keyreq) && name.to_s.start_with?("on_") }
|
|
19
|
+
.reject { |_, name| name.to_s.end_with?("_hint_text") }
|
|
19
20
|
.each do |_, name|
|
|
20
21
|
event_name = name.to_s.sub(/\Aon_/, "")
|
|
21
22
|
normalized = event_name.to_s.sub(/\Aon_/, "")
|
|
@@ -9,6 +9,11 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoActionSheet".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: nil, actions: 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, cancel: nil, col: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, height: nil, key: nil, left: nil, margin: nil, message: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size_change_interval: nil, title: nil, tooltip: nil, top: nil, visible: nil, width: nil, on_animation_end: nil, on_size_change: nil)
|
|
12
|
+
visible_actions = Array(actions).reject { |action| hidden_control?(action) }
|
|
13
|
+
if visible_actions.empty? && hidden_or_nil?(title) && hidden_or_nil?(message) && hidden_or_nil?(cancel)
|
|
14
|
+
raise ArgumentError, "cupertino_action_sheet requires actions, title, message, or cancel"
|
|
15
|
+
end
|
|
16
|
+
|
|
12
17
|
props = {}
|
|
13
18
|
props[:actions] = actions unless actions.nil?
|
|
14
19
|
props[:align] = align unless align.nil?
|
|
@@ -50,6 +55,14 @@ module Ruflet
|
|
|
50
55
|
props[:on_size_change] = on_size_change unless on_size_change.nil?
|
|
51
56
|
super(type: TYPE, id: id, **props)
|
|
52
57
|
end
|
|
58
|
+
|
|
59
|
+
private
|
|
60
|
+
|
|
61
|
+
def hidden_or_nil?(value) = value.nil? || hidden_control?(value)
|
|
62
|
+
|
|
63
|
+
def hidden_control?(value)
|
|
64
|
+
value.respond_to?(:props) && value.props["visible"] == false
|
|
65
|
+
end
|
|
53
66
|
end
|
|
54
67
|
end
|
|
55
68
|
end
|
|
@@ -9,6 +9,10 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoActionSheetAction".freeze
|
|
10
10
|
|
|
11
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, content: nil, data: nil, default: nil, destructive: nil, disabled: nil, expand: nil, expand_loose: nil, height: nil, key: nil, left: nil, margin: nil, mouse_cursor: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size_change_interval: nil, tooltip: nil, top: nil, visible: nil, width: nil, on_animation_end: nil, on_click: nil, on_size_change: nil)
|
|
12
|
+
raise ArgumentError, "cupertino_action_sheet_action requires visible content" if content.nil? || (content.respond_to?(:props) && content.props["visible"] == false)
|
|
13
|
+
default = false if default.nil?
|
|
14
|
+
destructive = false if destructive.nil?
|
|
15
|
+
|
|
12
16
|
props = {}
|
|
13
17
|
props[:align] = align unless align.nil?
|
|
14
18
|
props[:animate_align] = animate_align unless animate_align.nil?
|
|
@@ -9,6 +9,10 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoActivityIndicator".freeze
|
|
10
10
|
|
|
11
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, animating: nil, aspect_ratio: nil, badge: nil, bottom: nil, col: nil, color: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, height: nil, key: nil, left: nil, margin: nil, offset: nil, opacity: nil, progress: nil, radius: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size_change_interval: nil, tooltip: nil, top: nil, visible: nil, width: nil, on_animation_end: nil, on_size_change: nil)
|
|
12
|
+
animating = true if animating.nil?
|
|
13
|
+
radius = 10 if radius.nil?
|
|
14
|
+
raise ArgumentError, "cupertino_activity_indicator radius must be greater than 0" unless radius.positive?
|
|
15
|
+
|
|
12
16
|
props = {}
|
|
13
17
|
props[:align] = align unless align.nil?
|
|
14
18
|
props[:animate_align] = animate_align unless animate_align.nil?
|
|
@@ -9,6 +9,15 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoAlertDialog".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: nil, actions: nil, adaptive: nil, badge: nil, barrier_color: nil, col: nil, content: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, inset_animation: nil, key: nil, modal: nil, opacity: nil, open: nil, rtl: nil, title: nil, tooltip: nil, visible: nil, on_dismiss: nil)
|
|
12
|
+
actions = [] if actions.nil?
|
|
13
|
+
inset_animation = { "duration" => 100, "curve" => "decelerate" } if inset_animation.nil?
|
|
14
|
+
modal = false if modal.nil?
|
|
15
|
+
|
|
16
|
+
visible_actions = Array(actions).reject { |action| hidden_control?(action) }
|
|
17
|
+
if visible_actions.empty? && hidden_or_nil?(title) && hidden_or_nil?(content)
|
|
18
|
+
raise ArgumentError, "cupertino_alert_dialog requires title, content, or actions"
|
|
19
|
+
end
|
|
20
|
+
|
|
12
21
|
props = {}
|
|
13
22
|
props[:actions] = actions unless actions.nil?
|
|
14
23
|
props[:adaptive] = adaptive unless adaptive.nil?
|
|
@@ -32,6 +41,14 @@ module Ruflet
|
|
|
32
41
|
props[:on_dismiss] = on_dismiss unless on_dismiss.nil?
|
|
33
42
|
super(type: TYPE, id: id, **props)
|
|
34
43
|
end
|
|
44
|
+
|
|
45
|
+
private
|
|
46
|
+
|
|
47
|
+
def hidden_or_nil?(value) = value.nil? || hidden_control?(value)
|
|
48
|
+
|
|
49
|
+
def hidden_control?(value)
|
|
50
|
+
value.respond_to?(:props) && value.props["visible"] == false
|
|
51
|
+
end
|
|
35
52
|
end
|
|
36
53
|
end
|
|
37
54
|
end
|
|
@@ -9,6 +9,9 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoAppBar".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: nil, automatic_background_visibility: nil, automatically_imply_leading: nil, automatically_imply_title: nil, badge: nil, bgcolor: nil, border: nil, brightness: nil, col: nil, data: nil, disabled: nil, enable_background_filter_blur: nil, expand: nil, expand_loose: nil, key: nil, large: nil, leading: nil, opacity: nil, padding: nil, previous_page_title: nil, rtl: nil, title: nil, tooltip: nil, trailing: nil, transition_between_routes: nil, visible: nil)
|
|
12
|
+
large = false if large.nil?
|
|
13
|
+
transition_between_routes = true if transition_between_routes.nil?
|
|
14
|
+
|
|
12
15
|
props = {}
|
|
13
16
|
props[:automatic_background_visibility] = automatic_background_visibility unless automatic_background_visibility.nil?
|
|
14
17
|
props[:automatically_imply_leading] = automatically_imply_leading unless automatically_imply_leading.nil?
|
|
@@ -9,6 +9,10 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoBottomSheet".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: nil, adaptive: nil, badge: nil, bgcolor: nil, col: nil, content: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, height: nil, key: nil, modal: nil, opacity: nil, open: nil, padding: nil, rtl: nil, tooltip: nil, visible: nil, on_dismiss: nil)
|
|
12
|
+
raise ArgumentError, "cupertino_bottom_sheet content is required" if content.nil?
|
|
13
|
+
|
|
14
|
+
modal = false if modal.nil?
|
|
15
|
+
|
|
12
16
|
props = {}
|
|
13
17
|
props[:adaptive] = adaptive unless adaptive.nil?
|
|
14
18
|
props[:badge] = badge unless badge.nil?
|
|
@@ -9,6 +9,15 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoButton".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: 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, border_radius: nil, bottom: nil, col: nil, color: nil, content: nil, data: nil, disabled: nil, disabled_bgcolor: nil, expand: nil, expand_loose: nil, focus_color: nil, height: nil, icon: nil, icon_color: nil, key: nil, left: nil, margin: nil, min_size: nil, mouse_cursor: nil, offset: nil, opacity: nil, opacity_on_click: nil, padding: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size: nil, size_change_interval: 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_long_press: nil, on_size_change: nil)
|
|
12
|
+
alignment = "center" if alignment.nil?
|
|
13
|
+
autofocus = false if autofocus.nil?
|
|
14
|
+
border_radius = { "all" => 8.0 } if border_radius.nil?
|
|
15
|
+
opacity_on_click = 0.4 if opacity_on_click.nil?
|
|
16
|
+
size = "large" if size.nil?
|
|
17
|
+
unless opacity_on_click.respond_to?(:between?) && opacity_on_click.between?(0.0, 1.0)
|
|
18
|
+
raise ArgumentError, "cupertino_button opacity_on_click must be between 0.0 and 1.0"
|
|
19
|
+
end
|
|
20
|
+
|
|
12
21
|
props = {}
|
|
13
22
|
props[:align] = align unless align.nil?
|
|
14
23
|
props[:alignment] = alignment unless alignment.nil?
|
|
@@ -9,6 +9,12 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoCheckbox".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: nil, active_color: 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, border_side: nil, bottom: nil, check_color: nil, col: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, fill_color: nil, focus_color: nil, height: nil, key: nil, label: nil, label_position: nil, left: nil, margin: nil, mouse_cursor: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, scale: nil, semantics_label: nil, shape: nil, size_change_interval: nil, spacing: nil, tooltip: nil, top: nil, tristate: 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
|
+
autofocus = false if autofocus.nil?
|
|
13
|
+
label_position = "right" if label_position.nil?
|
|
14
|
+
spacing = 10 if spacing.nil?
|
|
15
|
+
tristate = false if tristate.nil?
|
|
16
|
+
value = false if value.nil?
|
|
17
|
+
|
|
12
18
|
props = {}
|
|
13
19
|
props[:active_color] = active_color unless active_color.nil?
|
|
14
20
|
props[:align] = align unless align.nil?
|
|
@@ -9,6 +9,11 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoContextMenu".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: nil, actions: nil, adaptive: nil, badge: nil, col: nil, content: nil, data: nil, disabled: nil, enable_haptic_feedback: nil, expand: nil, expand_loose: nil, key: nil, opacity: nil, rtl: nil, tooltip: nil, visible: nil)
|
|
12
|
+
enable_haptic_feedback = true if enable_haptic_feedback.nil?
|
|
13
|
+
visible_actions = Array(actions).reject { |action| hidden_control?(action) }
|
|
14
|
+
raise ArgumentError, "cupertino_context_menu requires visible content" if content.nil? || hidden_control?(content)
|
|
15
|
+
raise ArgumentError, "cupertino_context_menu requires at least one visible action" if visible_actions.empty?
|
|
16
|
+
|
|
12
17
|
props = {}
|
|
13
18
|
props[:actions] = actions unless actions.nil?
|
|
14
19
|
props[:adaptive] = adaptive unless adaptive.nil?
|
|
@@ -27,6 +32,12 @@ module Ruflet
|
|
|
27
32
|
props[:visible] = visible unless visible.nil?
|
|
28
33
|
super(type: TYPE, id: id, **props)
|
|
29
34
|
end
|
|
35
|
+
|
|
36
|
+
private
|
|
37
|
+
|
|
38
|
+
def hidden_control?(value)
|
|
39
|
+
value.respond_to?(:props) && value.props["visible"] == false
|
|
40
|
+
end
|
|
30
41
|
end
|
|
31
42
|
end
|
|
32
43
|
end
|
|
@@ -9,6 +9,10 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoContextMenuAction".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: nil, adaptive: nil, badge: nil, col: nil, content: nil, data: nil, default: nil, destructive: nil, disabled: nil, expand: nil, expand_loose: nil, key: nil, opacity: nil, rtl: nil, tooltip: nil, trailing_icon: nil, visible: nil, on_click: nil)
|
|
12
|
+
raise ArgumentError, "cupertino_context_menu_action requires visible content" if content.nil? || (content.respond_to?(:props) && content.props["visible"] == false)
|
|
13
|
+
default = false if default.nil?
|
|
14
|
+
destructive = false if destructive.nil?
|
|
15
|
+
|
|
12
16
|
props = {}
|
|
13
17
|
props[:adaptive] = adaptive unless adaptive.nil?
|
|
14
18
|
props[:badge] = badge unless badge.nil?
|
|
@@ -9,6 +9,20 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoDatePicker".freeze
|
|
10
10
|
|
|
11
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, bgcolor: nil, bottom: nil, col: nil, data: nil, date_order: nil, date_picker_mode: nil, disabled: nil, expand: nil, expand_loose: nil, first_date: nil, height: nil, item_extent: nil, key: nil, last_date: nil, left: nil, locale: nil, margin: nil, maximum_year: nil, minimum_year: nil, minute_interval: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, scale: nil, show_day_of_week: nil, size_change_interval: nil, tooltip: nil, top: nil, use_24h_format: nil, value: nil, visible: nil, width: nil, on_animation_end: nil, on_change: nil, on_size_change: nil)
|
|
12
|
+
date_picker_mode = "date_and_time" if date_picker_mode.nil?
|
|
13
|
+
item_extent = 32.0 if item_extent.nil?
|
|
14
|
+
minimum_year = 1 if minimum_year.nil?
|
|
15
|
+
minute_interval = 1 if minute_interval.nil?
|
|
16
|
+
show_day_of_week = false if show_day_of_week.nil?
|
|
17
|
+
use_24h_format = false if use_24h_format.nil?
|
|
18
|
+
raise ArgumentError, "cupertino_date_picker item_extent must be greater than 0" unless item_extent.positive?
|
|
19
|
+
unless minute_interval.positive? && (60 % minute_interval).zero?
|
|
20
|
+
raise ArgumentError, "cupertino_date_picker minute_interval must be a positive factor of 60"
|
|
21
|
+
end
|
|
22
|
+
if show_day_of_week && date_picker_mode != "date"
|
|
23
|
+
raise ArgumentError, "cupertino_date_picker show_day_of_week requires date_picker_mode: 'date'"
|
|
24
|
+
end
|
|
25
|
+
|
|
12
26
|
props = {}
|
|
13
27
|
props[:align] = align unless align.nil?
|
|
14
28
|
props[:animate_align] = animate_align unless animate_align.nil?
|
|
@@ -9,6 +9,10 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoDialogAction".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: nil, badge: nil, col: nil, content: nil, data: nil, default: nil, destructive: nil, disabled: nil, expand: nil, expand_loose: nil, key: nil, opacity: nil, rtl: nil, text_style: nil, tooltip: nil, visible: nil, on_click: nil)
|
|
12
|
+
raise ArgumentError, "cupertino_dialog_action requires visible content" if content.nil? || (content.respond_to?(:props) && content.props["visible"] == false)
|
|
13
|
+
default = false if default.nil?
|
|
14
|
+
destructive = false if destructive.nil?
|
|
15
|
+
|
|
12
16
|
props = {}
|
|
13
17
|
props[:badge] = badge unless badge.nil?
|
|
14
18
|
props[:col] = col unless col.nil?
|
|
@@ -9,6 +9,15 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoFilledButton".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: 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, border_radius: nil, bottom: nil, col: nil, color: nil, content: nil, data: nil, disabled: nil, disabled_bgcolor: nil, expand: nil, expand_loose: nil, focus_color: nil, height: nil, icon: nil, icon_color: nil, key: nil, left: nil, margin: nil, min_size: nil, mouse_cursor: nil, offset: nil, opacity: nil, opacity_on_click: nil, padding: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size: nil, size_change_interval: 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_long_press: nil, on_size_change: nil)
|
|
12
|
+
alignment = "center" if alignment.nil?
|
|
13
|
+
autofocus = false if autofocus.nil?
|
|
14
|
+
border_radius = { "all" => 8.0 } if border_radius.nil?
|
|
15
|
+
opacity_on_click = 0.4 if opacity_on_click.nil?
|
|
16
|
+
size = "large" if size.nil?
|
|
17
|
+
unless opacity_on_click.respond_to?(:between?) && opacity_on_click.between?(0.0, 1.0)
|
|
18
|
+
raise ArgumentError, "cupertino_filled_button opacity_on_click must be between 0.0 and 1.0"
|
|
19
|
+
end
|
|
20
|
+
|
|
12
21
|
props = {}
|
|
13
22
|
props[:align] = align unless align.nil?
|
|
14
23
|
props[:alignment] = alignment unless alignment.nil?
|
|
@@ -9,6 +9,18 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoListTile".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: nil, additional_info: 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, bgcolor_activated: nil, bottom: nil, col: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, height: nil, key: nil, leading: nil, leading_size: nil, leading_to_title: nil, left: nil, margin: nil, notched: nil, offset: nil, opacity: nil, padding: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size_change_interval: nil, subtitle: nil, title: nil, toggle_inputs: nil, tooltip: nil, top: nil, trailing: nil, url: nil, visible: nil, width: nil, on_animation_end: nil, on_click: nil, on_size_change: nil)
|
|
12
|
+
raise ArgumentError, "cupertino_list_tile requires visible title" if title.nil? || (title.respond_to?(:props) && title.props["visible"] == false)
|
|
13
|
+
notched = false if notched.nil?
|
|
14
|
+
leading_size = notched ? 30.0 : 28.0 if leading_size.nil?
|
|
15
|
+
leading_to_title = notched ? 12.0 : 16.0 if leading_to_title.nil?
|
|
16
|
+
toggle_inputs = false if toggle_inputs.nil?
|
|
17
|
+
{
|
|
18
|
+
leading_size: leading_size,
|
|
19
|
+
leading_to_title: leading_to_title
|
|
20
|
+
}.each do |name, value|
|
|
21
|
+
raise ArgumentError, "cupertino_list_tile #{name} must be greater than or equal to 0" if value.negative?
|
|
22
|
+
end
|
|
23
|
+
|
|
12
24
|
props = {}
|
|
13
25
|
props[:additional_info] = additional_info unless additional_info.nil?
|
|
14
26
|
props[:align] = align unless align.nil?
|
|
@@ -9,6 +9,17 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoNavigationBar".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: nil, active_color: 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, border: nil, bottom: nil, col: nil, data: nil, destinations: nil, disabled: nil, expand: nil, expand_loose: nil, height: nil, icon_size: nil, inactive_color: nil, key: nil, left: 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
|
+
icon_size = 30 if icon_size.nil?
|
|
13
|
+
selected_index = 0 if selected_index.nil?
|
|
14
|
+
visible_destinations = Array(destinations).reject { |destination| destination.respond_to?(:props) && destination.props["visible"] == false }
|
|
15
|
+
unless destinations.nil? || visible_destinations.length >= 2
|
|
16
|
+
raise ArgumentError, "cupertino_navigation_bar destinations must include at least two visible destinations"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
unless destinations.nil? || (0...visible_destinations.length).cover?(selected_index)
|
|
20
|
+
raise IndexError, "cupertino_navigation_bar selected_index is out of range"
|
|
21
|
+
end
|
|
22
|
+
|
|
12
23
|
props = {}
|
|
13
24
|
props[:active_color] = active_color unless active_color.nil?
|
|
14
25
|
props[:align] = align unless align.nil?
|
|
@@ -9,6 +9,24 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoPicker".freeze
|
|
10
10
|
|
|
11
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, bgcolor: nil, bottom: nil, col: nil, controls: nil, data: nil, default_selection_overlay_bgcolor: nil, diameter_ratio: nil, disabled: nil, expand: nil, expand_loose: nil, height: nil, item_extent: nil, key: nil, left: nil, looping: nil, magnification: nil, margin: nil, off_axis_fraction: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, scale: nil, selected_index: nil, selection_overlay: nil, size_change_interval: nil, squeeze: nil, tooltip: nil, top: nil, use_magnifier: nil, visible: nil, width: nil, on_animation_end: nil, on_change: nil, on_size_change: nil)
|
|
12
|
+
diameter_ratio = 1.07 if diameter_ratio.nil?
|
|
13
|
+
item_extent = 32.0 if item_extent.nil?
|
|
14
|
+
looping = false if looping.nil?
|
|
15
|
+
magnification = 1.0 if magnification.nil?
|
|
16
|
+
off_axis_fraction = 0.0 if off_axis_fraction.nil?
|
|
17
|
+
selected_index = 0 if selected_index.nil?
|
|
18
|
+
squeeze = 1.45 if squeeze.nil?
|
|
19
|
+
use_magnifier = false if use_magnifier.nil?
|
|
20
|
+
|
|
21
|
+
{
|
|
22
|
+
item_extent: item_extent,
|
|
23
|
+
magnification: magnification,
|
|
24
|
+
squeeze: squeeze
|
|
25
|
+
}.each do |name, value|
|
|
26
|
+
raise ArgumentError, "cupertino_picker #{name} must be greater than 0" unless value.positive?
|
|
27
|
+
end
|
|
28
|
+
raise ArgumentError, "cupertino_picker selected_index must be greater than or equal to 0" if selected_index.negative?
|
|
29
|
+
|
|
12
30
|
props = {}
|
|
13
31
|
props[:align] = align unless align.nil?
|
|
14
32
|
props[:animate_align] = animate_align unless animate_align.nil?
|
|
@@ -9,6 +9,12 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoRadio".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: nil, active_color: 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, fill_color: nil, focus_color: nil, height: nil, inactive_color: nil, key: nil, label: nil, label_position: nil, left: nil, margin: nil, mouse_cursor: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size_change_interval: nil, toggleable: nil, tooltip: nil, top: nil, use_checkmark_style: nil, value: nil, visible: nil, width: nil, on_animation_end: nil, on_blur: nil, on_focus: nil, on_size_change: nil)
|
|
12
|
+
autofocus = false if autofocus.nil?
|
|
13
|
+
label_position = "right" if label_position.nil?
|
|
14
|
+
toggleable = false if toggleable.nil?
|
|
15
|
+
use_checkmark_style = false if use_checkmark_style.nil?
|
|
16
|
+
value = "" if value.nil?
|
|
17
|
+
|
|
12
18
|
props = {}
|
|
13
19
|
props[:active_color] = active_color unless active_color.nil?
|
|
14
20
|
props[:align] = align unless align.nil?
|
|
@@ -9,6 +9,8 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoSegmentedButton".freeze
|
|
10
10
|
|
|
11
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, border_color: nil, bottom: nil, click_color: nil, col: nil, controls: nil, data: nil, disabled: nil, disabled_color: nil, disabled_text_color: nil, expand: nil, expand_loose: nil, height: nil, key: nil, left: nil, margin: nil, offset: nil, opacity: nil, padding: nil, right: nil, rotate: nil, rtl: nil, scale: nil, selected_color: nil, selected_index: nil, size_change_interval: nil, tooltip: nil, top: nil, unselected_color: nil, visible: nil, width: nil, on_animation_end: nil, on_change: nil, on_size_change: nil)
|
|
12
|
+
selected_index = 0 if selected_index.nil?
|
|
13
|
+
|
|
12
14
|
props = {}
|
|
13
15
|
props[:align] = align unless align.nil?
|
|
14
16
|
props[:animate_align] = animate_align unless animate_align.nil?
|
|
@@ -9,6 +9,13 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoSlider".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: nil, active_color: 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, divisions: nil, expand: nil, expand_loose: nil, height: nil, key: nil, left: nil, margin: nil, max: nil, min: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size_change_interval: nil, thumb_color: nil, tooltip: nil, top: nil, value: nil, visible: nil, width: nil, on_animation_end: nil, on_blur: nil, on_change: nil, on_change_end: nil, on_change_start: nil, on_focus: nil, on_size_change: nil)
|
|
12
|
+
min = 0.0 if min.nil?
|
|
13
|
+
max = 1.0 if max.nil?
|
|
14
|
+
raise ArgumentError, "cupertino_slider min must be less than or equal to max" if min > max
|
|
15
|
+
raise ArgumentError, "cupertino_slider divisions must be greater than 0" unless divisions.nil? || divisions.positive?
|
|
16
|
+
raise ArgumentError, "cupertino_slider value must be greater than or equal to min" unless value.nil? || value >= min
|
|
17
|
+
raise ArgumentError, "cupertino_slider value must be less than or equal to max" unless value.nil? || value <= max
|
|
18
|
+
|
|
12
19
|
props = {}
|
|
13
20
|
props[:active_color] = active_color unless active_color.nil?
|
|
14
21
|
props[:align] = align unless align.nil?
|
|
@@ -9,6 +9,9 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoSlidingSegmentedButton".freeze
|
|
10
10
|
|
|
11
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, bgcolor: nil, bottom: 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, padding: nil, proportional_width: nil, right: nil, rotate: nil, rtl: nil, scale: nil, selected_index: nil, size_change_interval: nil, thumb_color: nil, tooltip: nil, top: nil, visible: nil, width: nil, on_animation_end: nil, on_change: nil, on_size_change: nil)
|
|
12
|
+
proportional_width = false if proportional_width.nil?
|
|
13
|
+
selected_index = 0 if selected_index.nil?
|
|
14
|
+
|
|
12
15
|
props = {}
|
|
13
16
|
props[:align] = align unless align.nil?
|
|
14
17
|
props[:animate_align] = animate_align unless animate_align.nil?
|
|
@@ -8,7 +8,13 @@ module Ruflet
|
|
|
8
8
|
TYPE = "cupertinoswitch".freeze
|
|
9
9
|
WIRE = "CupertinoSwitch".freeze
|
|
10
10
|
|
|
11
|
-
def initialize(id: nil, active_thumb_image_src: nil, active_track_color: 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, inactive_thumb_color: nil, inactive_thumb_image_src: nil, inactive_track_color: nil, key: nil, label: nil, label_position: nil, left: nil, margin: nil, off_label_color: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size_change_interval: nil, thumb_color: nil, thumb_icon: nil, tooltip: nil, top: 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_image_error: nil, on_label_color: nil, on_size_change: nil)
|
|
11
|
+
def initialize(id: nil, active_thumb_image: nil, active_thumb_image_src: nil, active_track_color: 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, inactive_thumb_color: nil, inactive_thumb_image: nil, inactive_thumb_image_src: nil, inactive_track_color: nil, key: nil, label: nil, label_position: nil, left: nil, margin: nil, off_label_color: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size_change_interval: nil, thumb_color: nil, thumb_icon: nil, tooltip: nil, top: 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_image_error: nil, on_label_color: nil, on_size_change: nil)
|
|
12
|
+
active_thumb_image_src = active_thumb_image if active_thumb_image_src.nil?
|
|
13
|
+
inactive_thumb_image_src = inactive_thumb_image if inactive_thumb_image_src.nil?
|
|
14
|
+
autofocus = false if autofocus.nil?
|
|
15
|
+
label_position = "right" if label_position.nil?
|
|
16
|
+
value = false if value.nil?
|
|
17
|
+
|
|
12
18
|
props = {}
|
|
13
19
|
props[:active_thumb_image_src] = active_thumb_image_src unless active_thumb_image_src.nil?
|
|
14
20
|
props[:active_track_color] = active_track_color unless active_track_color.nil?
|
|
@@ -9,6 +9,13 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoTextField".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: nil, adaptive: nil, align: nil, align_label_with_hint: nil, always_call_on_tap: nil, animate_align: nil, animate_cursor_opacity: 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, autocorrect: nil, autofill_hints: nil, autofocus: nil, badge: nil, bgcolor: nil, blend_mode: nil, border: nil, border_color: nil, border_radius: nil, border_width: nil, bottom: nil, can_request_focus: nil, can_reveal_password: nil, capitalization: nil, clear_button_semantics_label: nil, clear_button_visibility_mode: nil, clip_behavior: nil, col: nil, collapsed: nil, color: nil, content_padding: nil, counter: nil, counter_style: nil, cursor_color: nil, cursor_error_color: nil, cursor_height: nil, cursor_radius: nil, cursor_width: nil, data: nil, dense: nil, disabled: nil, enable_ime_personalized_learning: nil, enable_interactive_selection: nil, enable_stylus_handwriting: nil, enable_suggestions: 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, gradient: nil, height: nil, helper: nil, helper_max_lines: nil, helper_style: nil, hint_fade_duration: nil, hint_max_lines: nil, hint_style: nil, hint_text: nil, hover_color: nil, icon: nil, ignore_pointers: nil, ignore_up_down_keys: nil, image: nil, input_filter: nil, key: nil, keyboard_brightness: nil, keyboard_type: nil, label: nil, label_style: nil, left: nil, margin: nil, max_length: nil, max_lines: nil, min_lines: nil, mouse_cursor: nil, multiline: nil, obscuring_character: nil, offset: nil, opacity: nil, padding: nil, password: nil, placeholder_style: nil, placeholder_text: nil, prefix: nil, prefix_icon: nil, prefix_icon_size_constraints: nil, prefix_style: nil, prefix_visibility_mode: nil, read_only: nil, right: nil, rotate: nil, rtl: nil, scale: nil, scroll_padding: nil, selection: nil, selection_color: nil, shadows: nil, shift_enter: nil, show_cursor: nil, size_change_interval: nil, size_constraints: nil, smart_dashes_type: nil, smart_quotes_type: nil, strut_style: nil, suffix: nil, suffix_icon: nil, suffix_icon_size_constraints: nil, suffix_style: nil, suffix_visibility_mode: nil, text_align: 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_selection_change: nil, on_size_change: nil, on_submit: nil, on_tap_outside: nil)
|
|
12
|
+
clear_button_semantics_label = "Clear" if clear_button_semantics_label.nil?
|
|
13
|
+
clear_button_visibility_mode = "never" if clear_button_visibility_mode.nil?
|
|
14
|
+
padding = { "all" => 7 } if padding.nil?
|
|
15
|
+
placeholder_text = "" if placeholder_text.nil?
|
|
16
|
+
prefix_visibility_mode = "always" if prefix_visibility_mode.nil?
|
|
17
|
+
suffix_visibility_mode = "always" if suffix_visibility_mode.nil?
|
|
18
|
+
|
|
12
19
|
props = {}
|
|
13
20
|
props[:adaptive] = adaptive unless adaptive.nil?
|
|
14
21
|
props[:align] = align unless align.nil?
|
|
@@ -9,6 +9,24 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoTimerPicker".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: 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, badge: nil, bgcolor: nil, bottom: nil, col: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, height: nil, item_extent: nil, key: nil, left: nil, margin: nil, minute_interval: nil, mode: nil, offset: nil, opacity: nil, right: nil, rotate: nil, rtl: nil, scale: nil, second_interval: nil, size_change_interval: nil, tooltip: nil, top: nil, value: nil, visible: nil, width: nil, on_animation_end: nil, on_change: nil, on_size_change: nil)
|
|
12
|
+
alignment = "center" if alignment.nil?
|
|
13
|
+
item_extent = 32.0 if item_extent.nil?
|
|
14
|
+
minute_interval = 1 if minute_interval.nil?
|
|
15
|
+
mode = "hour_minute_seconds" if mode.nil?
|
|
16
|
+
second_interval = 1 if second_interval.nil?
|
|
17
|
+
value = 0 if value.nil?
|
|
18
|
+
raise ArgumentError, "cupertino_timer_picker item_extent must be greater than 0" unless item_extent.positive?
|
|
19
|
+
unless minute_interval.positive? && (60 % minute_interval).zero?
|
|
20
|
+
raise ArgumentError, "cupertino_timer_picker minute_interval must be a positive factor of 60"
|
|
21
|
+
end
|
|
22
|
+
unless second_interval.positive? && (60 % second_interval).zero?
|
|
23
|
+
raise ArgumentError, "cupertino_timer_picker second_interval must be a positive factor of 60"
|
|
24
|
+
end
|
|
25
|
+
raise ArgumentError, "cupertino_timer_picker value must be greater than or equal to 0" unless value >= 0
|
|
26
|
+
raise ArgumentError, "cupertino_timer_picker value must be less than 24 hours" unless value < 86_400
|
|
27
|
+
raise ArgumentError, "cupertino_timer_picker value must be a multiple of minute_interval" unless (value % minute_interval).zero?
|
|
28
|
+
raise ArgumentError, "cupertino_timer_picker value must be a multiple of second_interval" unless (value % second_interval).zero?
|
|
29
|
+
|
|
12
30
|
props = {}
|
|
13
31
|
props[:align] = align unless align.nil?
|
|
14
32
|
props[:alignment] = alignment unless alignment.nil?
|
|
@@ -9,6 +9,15 @@ module Ruflet
|
|
|
9
9
|
WIRE = "CupertinoTintedButton".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: 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, border_radius: nil, bottom: nil, col: nil, color: nil, content: nil, data: nil, disabled: nil, disabled_bgcolor: nil, expand: nil, expand_loose: nil, focus_color: nil, height: nil, icon: nil, icon_color: nil, key: nil, left: nil, margin: nil, min_size: nil, mouse_cursor: nil, offset: nil, opacity: nil, opacity_on_click: nil, padding: nil, right: nil, rotate: nil, rtl: nil, scale: nil, size: nil, size_change_interval: 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_long_press: nil, on_size_change: nil)
|
|
12
|
+
alignment = "center" if alignment.nil?
|
|
13
|
+
autofocus = false if autofocus.nil?
|
|
14
|
+
border_radius = { "all" => 8.0 } if border_radius.nil?
|
|
15
|
+
opacity_on_click = 0.4 if opacity_on_click.nil?
|
|
16
|
+
size = "large" if size.nil?
|
|
17
|
+
unless opacity_on_click.respond_to?(:between?) && opacity_on_click.between?(0.0, 1.0)
|
|
18
|
+
raise ArgumentError, "cupertino_tinted_button opacity_on_click must be between 0.0 and 1.0"
|
|
19
|
+
end
|
|
20
|
+
|
|
12
21
|
props = {}
|
|
13
22
|
props[:align] = align unless align.nil?
|
|
14
23
|
props[:alignment] = alignment unless alignment.nil?
|
|
@@ -9,6 +9,10 @@ module Ruflet
|
|
|
9
9
|
WIRE = "AlertDialog".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: nil, action_button_padding: nil, actions: nil, actions_alignment: nil, actions_overflow_button_spacing: nil, actions_padding: nil, adaptive: nil, alignment: nil, badge: nil, barrier_color: nil, bgcolor: nil, clip_behavior: nil, col: nil, content: nil, content_padding: nil, content_text_style: nil, data: nil, disabled: nil, elevation: nil, expand: nil, expand_loose: nil, icon: nil, icon_color: nil, icon_padding: nil, inset_padding: nil, key: nil, modal: nil, opacity: nil, open: nil, rtl: nil, scrollable: nil, semantics_label: nil, shadow_color: nil, shape: nil, title: nil, title_padding: nil, title_text_style: nil, tooltip: nil, visible: nil, on_dismiss: nil)
|
|
12
|
+
if title.nil? && content.nil? && (actions.nil? || actions.empty?)
|
|
13
|
+
raise ArgumentError, "alert_dialog requires title, content, or actions"
|
|
14
|
+
end
|
|
15
|
+
|
|
12
16
|
props = {}
|
|
13
17
|
props[:action_button_padding] = action_button_padding unless action_button_padding.nil?
|
|
14
18
|
props[:actions] = actions unless actions.nil?
|
|
@@ -9,6 +9,10 @@ module Ruflet
|
|
|
9
9
|
WIRE = "AppBar".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: nil, actions: nil, actions_padding: nil, adaptive: nil, automatically_imply_leading: nil, badge: nil, bgcolor: nil, center_title: nil, clip_behavior: nil, col: nil, color: nil, data: nil, disabled: nil, elevation: nil, elevation_on_scroll: nil, exclude_header_semantics: nil, expand: nil, expand_loose: nil, force_material_transparency: nil, key: nil, leading: nil, leading_width: nil, opacity: nil, rtl: nil, secondary: nil, shadow_color: nil, shape: nil, title: nil, title_spacing: nil, title_text_style: nil, toolbar_height: nil, toolbar_opacity: nil, toolbar_text_style: nil, tooltip: nil, visible: nil)
|
|
12
|
+
unless toolbar_opacity.nil? || (0.0..1.0).cover?(toolbar_opacity)
|
|
13
|
+
raise ArgumentError, "app_bar toolbar_opacity must be between 0.0 and 1.0"
|
|
14
|
+
end
|
|
15
|
+
|
|
12
16
|
props = {}
|
|
13
17
|
props[:actions] = actions unless actions.nil?
|
|
14
18
|
props[:actions_padding] = actions_padding unless actions_padding.nil?
|