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
|
@@ -9,6 +9,18 @@ module Ruflet
|
|
|
9
9
|
WIRE = "ResponsiveRow".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: nil, adaptive: nil, align: nil, alignment: nil, animate_align: nil, animate_margin: nil, animate_offset: nil, animate_opacity: nil, animate_position: nil, animate_rotation: nil, animate_scale: nil, animate_size: nil, aspect_ratio: nil, badge: nil, bottom: nil, breakpoints: nil, col: nil, columns: 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, run_spacing: nil, scale: nil, size_change_interval: nil, spacing: nil, tooltip: nil, top: nil, vertical_alignment: nil, visible: nil, width: nil, on_animation_end: nil, on_size_change: nil)
|
|
12
|
+
alignment = "start" if alignment.nil?
|
|
13
|
+
breakpoints = { "xs" => 0, "sm" => 576, "md" => 768, "lg" => 992, "xl" => 1200, "xxl" => 1400 } if breakpoints.nil?
|
|
14
|
+
columns = 12 if columns.nil?
|
|
15
|
+
run_spacing = 10 if run_spacing.nil?
|
|
16
|
+
spacing = 10 if spacing.nil?
|
|
17
|
+
vertical_alignment = "start" if vertical_alignment.nil?
|
|
18
|
+
|
|
19
|
+
validate_non_negative(:columns, columns)
|
|
20
|
+
validate_non_negative(:run_spacing, run_spacing)
|
|
21
|
+
validate_non_negative(:spacing, spacing)
|
|
22
|
+
validate_non_negative(:breakpoints, breakpoints)
|
|
23
|
+
|
|
12
24
|
props = {}
|
|
13
25
|
props[:adaptive] = adaptive unless adaptive.nil?
|
|
14
26
|
props[:align] = align unless align.nil?
|
|
@@ -54,6 +66,16 @@ module Ruflet
|
|
|
54
66
|
props[:on_size_change] = on_size_change unless on_size_change.nil?
|
|
55
67
|
super(type: TYPE, id: id, **props)
|
|
56
68
|
end
|
|
69
|
+
|
|
70
|
+
private
|
|
71
|
+
|
|
72
|
+
def validate_non_negative(name, value)
|
|
73
|
+
values = value.is_a?(Hash) ? value.values : [value]
|
|
74
|
+
values.each do |entry|
|
|
75
|
+
next if entry.nil?
|
|
76
|
+
raise ArgumentError, "responsive_row #{name} must be greater than or equal to 0" if entry.negative?
|
|
77
|
+
end
|
|
78
|
+
end
|
|
57
79
|
end
|
|
58
80
|
end
|
|
59
81
|
end
|
|
@@ -9,6 +9,17 @@ module Ruflet
|
|
|
9
9
|
WIRE = "SafeArea".freeze
|
|
10
10
|
|
|
11
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, avoid_intrusions_bottom: nil, avoid_intrusions_left: nil, avoid_intrusions_right: nil, avoid_intrusions_top: nil, badge: nil, bottom: nil, col: nil, content: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, height: nil, key: nil, left: nil, maintain_bottom_view_padding: nil, margin: nil, minimum_padding: 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_size_change: nil)
|
|
12
|
+
if content.nil? || (content.respond_to?(:props) && content.props["visible"] == false)
|
|
13
|
+
raise ArgumentError, "safe_area requires visible content"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
avoid_intrusions_bottom = true if avoid_intrusions_bottom.nil?
|
|
17
|
+
avoid_intrusions_left = true if avoid_intrusions_left.nil?
|
|
18
|
+
avoid_intrusions_right = true if avoid_intrusions_right.nil?
|
|
19
|
+
avoid_intrusions_top = true if avoid_intrusions_top.nil?
|
|
20
|
+
maintain_bottom_view_padding = false if maintain_bottom_view_padding.nil?
|
|
21
|
+
minimum_padding = 0 if minimum_padding.nil?
|
|
22
|
+
|
|
12
23
|
props = {}
|
|
13
24
|
props[:adaptive] = adaptive unless adaptive.nil?
|
|
14
25
|
props[:align] = align unless align.nil?
|
|
@@ -9,6 +9,8 @@ module Ruflet
|
|
|
9
9
|
WIRE = "Semantics".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: nil, badge: nil, button: nil, checked: nil, col: nil, container: nil, content: nil, current_value_length: nil, data: nil, decreased_value: nil, disabled: nil, exclude_semantics: nil, expand: nil, expand_loose: nil, expanded: nil, focus: nil, focusable: nil, header: nil, heading_level: nil, hidden: nil, hint_text: nil, image: nil, increased_value: nil, key: nil, label: nil, link: nil, live_region: nil, max_value_length: nil, mixed: nil, multiline: nil, obscured: nil, opacity: nil, read_only: nil, rtl: nil, selected: nil, slider: nil, textfield: nil, toggled: nil, tooltip: nil, value: nil, visible: nil, on_copy: nil, on_cut: nil, on_decrease: nil, on_did_gain_accessibility_focus: nil, on_did_lose_accessibility_focus: nil, on_dismiss: nil, on_double_tap: nil, on_increase: nil, on_long_press: nil, on_long_press_hint_text: nil, on_move_cursor_backward_by_character: nil, on_move_cursor_forward_by_character: nil, on_paste: nil, on_scroll_down: nil, on_scroll_left: nil, on_scroll_right: nil, on_scroll_up: nil, on_set_text: nil, on_tap: nil, on_tap_hint_text: nil)
|
|
12
|
+
exclude_semantics = false if exclude_semantics.nil?
|
|
13
|
+
|
|
12
14
|
props = {}
|
|
13
15
|
props[:badge] = badge unless badge.nil?
|
|
14
16
|
props[:button] = button unless button.nil?
|
|
@@ -9,6 +9,9 @@ module Ruflet
|
|
|
9
9
|
WIRE = "Stack".freeze
|
|
10
10
|
|
|
11
11
|
def initialize(id: nil, adaptive: nil, align: nil, alignment: nil, animate_align: nil, animate_margin: nil, animate_offset: nil, animate_opacity: nil, animate_position: nil, animate_rotation: nil, animate_scale: nil, animate_size: nil, aspect_ratio: nil, badge: nil, bottom: nil, clip_behavior: nil, col: nil, controls: nil, data: nil, disabled: nil, expand: nil, expand_loose: nil, fit: 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, visible: nil, width: nil, on_animation_end: nil, on_size_change: nil)
|
|
12
|
+
clip_behavior = "hardEdge" if clip_behavior.nil?
|
|
13
|
+
fit = "loose" if fit.nil?
|
|
14
|
+
|
|
12
15
|
props = {}
|
|
13
16
|
props[:adaptive] = adaptive unless adaptive.nil?
|
|
14
17
|
props[:align] = align unless align.nil?
|
|
@@ -8,21 +8,40 @@ module Ruflet
|
|
|
8
8
|
TYPE = "text".freeze
|
|
9
9
|
WIRE = "Text".freeze
|
|
10
10
|
|
|
11
|
-
def initialize(id: nil, alignment: nil, data: nil, ellipsis: nil, key: nil, max_lines: nil, max_width: nil, rotate: nil, spans: nil, style: nil, text_align: nil, value: nil, x: nil, y: nil)
|
|
11
|
+
def initialize(id: nil, alignment: nil, bgcolor: nil, color: nil, data: nil, ellipsis: nil, enable_interactive_selection: nil, font_family: nil, font_family_fallback: nil, italic: nil, key: nil, max_lines: nil, max_width: nil, no_wrap: nil, overflow: nil, rotate: nil, selectable: nil, selection_cursor_color: nil, selection_cursor_height: nil, selection_cursor_width: nil, semantics_label: nil, show_selection_cursor: nil, size: nil, spans: nil, style: nil, text_align: nil, theme_style: nil, value: nil, weight: nil, x: nil, y: nil, on_selection_change: nil, on_tap: nil)
|
|
12
12
|
props = {}
|
|
13
13
|
props[:alignment] = alignment unless alignment.nil?
|
|
14
|
+
props[:bgcolor] = bgcolor unless bgcolor.nil?
|
|
15
|
+
props[:color] = color unless color.nil?
|
|
14
16
|
props[:data] = data unless data.nil?
|
|
15
17
|
props[:ellipsis] = ellipsis unless ellipsis.nil?
|
|
18
|
+
props[:enable_interactive_selection] = enable_interactive_selection unless enable_interactive_selection.nil?
|
|
19
|
+
props[:font_family] = font_family unless font_family.nil?
|
|
20
|
+
props[:font_family_fallback] = font_family_fallback unless font_family_fallback.nil?
|
|
21
|
+
props[:italic] = italic unless italic.nil?
|
|
16
22
|
props[:key] = key unless key.nil?
|
|
17
23
|
props[:max_lines] = max_lines unless max_lines.nil?
|
|
18
24
|
props[:max_width] = max_width unless max_width.nil?
|
|
25
|
+
props[:no_wrap] = no_wrap unless no_wrap.nil?
|
|
26
|
+
props[:overflow] = overflow unless overflow.nil?
|
|
19
27
|
props[:rotate] = rotate unless rotate.nil?
|
|
28
|
+
props[:selectable] = selectable unless selectable.nil?
|
|
29
|
+
props[:selection_cursor_color] = selection_cursor_color unless selection_cursor_color.nil?
|
|
30
|
+
props[:selection_cursor_height] = selection_cursor_height unless selection_cursor_height.nil?
|
|
31
|
+
props[:selection_cursor_width] = selection_cursor_width unless selection_cursor_width.nil?
|
|
32
|
+
props[:semantics_label] = semantics_label unless semantics_label.nil?
|
|
33
|
+
props[:show_selection_cursor] = show_selection_cursor unless show_selection_cursor.nil?
|
|
34
|
+
props[:size] = size unless size.nil?
|
|
20
35
|
props[:spans] = spans unless spans.nil?
|
|
21
36
|
props[:style] = style unless style.nil?
|
|
22
37
|
props[:text_align] = text_align unless text_align.nil?
|
|
38
|
+
props[:theme_style] = theme_style unless theme_style.nil?
|
|
23
39
|
props[:value] = value unless value.nil?
|
|
40
|
+
props[:weight] = weight unless weight.nil?
|
|
24
41
|
props[:x] = x unless x.nil?
|
|
25
42
|
props[:y] = y unless y.nil?
|
|
43
|
+
props[:on_selection_change] = on_selection_change unless on_selection_change.nil?
|
|
44
|
+
props[:on_tap] = on_tap unless on_tap.nil?
|
|
26
45
|
super(type: TYPE, id: id, **props)
|
|
27
46
|
end
|
|
28
47
|
end
|
|
@@ -9,6 +9,14 @@ module Ruflet
|
|
|
9
9
|
WIRE = "View".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, appbar: nil, aspect_ratio: nil, auto_scroll: nil, badge: nil, bgcolor: nil, bottom: nil, bottom_appbar: nil, can_pop: nil, col: nil, controls: nil, data: nil, decoration: nil, disabled: nil, drawer: nil, end_drawer: nil, expand: nil, expand_loose: nil, floating_action_button: nil, floating_action_button_location: nil, foreground_decoration: nil, fullscreen_dialog: nil, height: nil, horizontal_alignment: nil, key: nil, left: nil, margin: nil, navigation_bar: nil, offset: nil, opacity: nil, padding: nil, right: nil, rotate: nil, route: nil, rtl: nil, scale: nil, scroll: nil, scroll_interval: nil, services: nil, size_change_interval: nil, spacing: nil, tooltip: nil, top: nil, vertical_alignment: nil, visible: nil, width: nil, on_animation_end: nil, on_confirm_pop: nil, on_scroll: nil, on_size_change: nil)
|
|
12
|
+
can_pop = true if can_pop.nil?
|
|
13
|
+
fullscreen_dialog = false if fullscreen_dialog.nil?
|
|
14
|
+
horizontal_alignment = "start" if horizontal_alignment.nil?
|
|
15
|
+
padding = 10 if padding.nil?
|
|
16
|
+
route = "/" if route.nil?
|
|
17
|
+
spacing = 10 if spacing.nil?
|
|
18
|
+
vertical_alignment = "start" if vertical_alignment.nil?
|
|
19
|
+
|
|
12
20
|
props = {}
|
|
13
21
|
props[:align] = align unless align.nil?
|
|
14
22
|
props[:animate_align] = animate_align unless animate_align.nil?
|
|
@@ -49,6 +49,22 @@ module Ruflet
|
|
|
49
49
|
props[:on_event] = on_event unless on_event.nil?
|
|
50
50
|
super(type: TYPE, id: id, **props)
|
|
51
51
|
end
|
|
52
|
+
|
|
53
|
+
%w[wait_until_ready_to_show to_front center close destroy start_dragging].each do |method_name|
|
|
54
|
+
define_method(method_name) do |timeout: 10, on_result: nil|
|
|
55
|
+
runtime_page&.invoke(self, method_name, timeout: timeout, on_result: on_result)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def start_resizing(edge, timeout: 10, on_result: nil)
|
|
60
|
+
runtime_page&.invoke(
|
|
61
|
+
self,
|
|
62
|
+
"start_resizing",
|
|
63
|
+
args: { "edge" => edge },
|
|
64
|
+
timeout: timeout,
|
|
65
|
+
on_result: on_result
|
|
66
|
+
)
|
|
67
|
+
end
|
|
52
68
|
end
|
|
53
69
|
end
|
|
54
70
|
end
|
|
@@ -9,6 +9,12 @@ module Ruflet
|
|
|
9
9
|
WIRE = "WindowDragArea".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, disabled: nil, expand: nil, expand_loose: nil, height: nil, key: nil, left: nil, margin: nil, maximizable: 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_double_tap: nil, on_drag_end: nil, on_drag_start: nil, on_size_change: nil)
|
|
12
|
+
if content.nil? || (content.respond_to?(:props) && content.props["visible"] == false)
|
|
13
|
+
raise ArgumentError, "window_drag_area requires visible content"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
maximizable = true if maximizable.nil?
|
|
17
|
+
|
|
12
18
|
props = {}
|
|
13
19
|
props[:align] = align unless align.nil?
|
|
14
20
|
props[:animate_align] = animate_align unless animate_align.nil?
|
|
@@ -3,24 +3,101 @@
|
|
|
3
3
|
module Ruflet
|
|
4
4
|
module UI
|
|
5
5
|
module CupertinoControlMethods
|
|
6
|
-
def cupertino_button(
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
def
|
|
6
|
+
def cupertino_button(content = nil, **props)
|
|
7
|
+
mapped = props.dup
|
|
8
|
+
mapped[:content] = content unless content.nil?
|
|
9
|
+
build_widget(:cupertino_button, **mapped)
|
|
10
|
+
end
|
|
11
|
+
def cupertinobutton(content = nil, **props) = cupertino_button(content, **props)
|
|
12
|
+
def cupertino_filled_button(content = nil, **props)
|
|
13
|
+
mapped = props.dup
|
|
14
|
+
mapped[:content] = content unless content.nil?
|
|
15
|
+
build_widget(:cupertino_filled_button, **mapped)
|
|
16
|
+
end
|
|
17
|
+
def cupertinofilledbutton(content = nil, **props) = cupertino_filled_button(content, **props)
|
|
18
|
+
def cupertino_tinted_button(content = nil, **props)
|
|
19
|
+
mapped = props.dup
|
|
20
|
+
mapped[:content] = content unless content.nil?
|
|
21
|
+
build_widget(:cupertino_tinted_button, **mapped)
|
|
22
|
+
end
|
|
23
|
+
def cupertinotintedbutton(content = nil, **props) = cupertino_tinted_button(content, **props)
|
|
24
|
+
def cupertino_checkbox(**props) = build_widget(:cupertino_checkbox, **props)
|
|
25
|
+
def cupertinocheckbox(**props) = cupertino_checkbox(**props)
|
|
26
|
+
def cupertino_text_field(value = nil, **props)
|
|
27
|
+
mapped = props.dup
|
|
28
|
+
mapped[:value] = value unless value.nil?
|
|
29
|
+
build_widget(:cupertino_text_field, **mapped)
|
|
30
|
+
end
|
|
31
|
+
def cupertinotextfield(value = nil, **props) = cupertino_text_field(value, **props)
|
|
32
|
+
def cupertino_timer_picker(**props) = build_widget(:cupertino_timer_picker, **props)
|
|
33
|
+
def cupertinotimerpicker(**props) = cupertino_timer_picker(**props)
|
|
12
34
|
def cupertino_switch(**props) = build_widget(:cupertino_switch, **props)
|
|
13
35
|
def cupertinoswitch(**props) = cupertino_switch(**props)
|
|
14
36
|
def cupertino_slider(**props) = build_widget(:cupertino_slider, **props)
|
|
15
37
|
def cupertinoslider(**props) = cupertino_slider(**props)
|
|
38
|
+
def cupertino_radio(**props) = build_widget(:cupertino_radio, **props)
|
|
39
|
+
def cupertinoradio(**props) = cupertino_radio(**props)
|
|
16
40
|
def cupertino_alert_dialog(**props) = build_widget(:cupertino_alert_dialog, **props)
|
|
17
41
|
def cupertinoalertdialog(**props) = cupertino_alert_dialog(**props)
|
|
18
42
|
def cupertino_action_sheet(**props) = build_widget(:cupertino_action_sheet, **props)
|
|
19
43
|
def cupertinoactionsheet(**props) = cupertino_action_sheet(**props)
|
|
44
|
+
def cupertino_action_sheet_action(**props) = build_widget(:cupertino_action_sheet_action, **props)
|
|
45
|
+
def cupertinoactionsheetaction(**props) = cupertino_action_sheet_action(**props)
|
|
46
|
+
def cupertino_activity_indicator(**props) = build_widget(:cupertino_activity_indicator, **props)
|
|
47
|
+
def cupertinoactivityindicator(**props) = cupertino_activity_indicator(**props)
|
|
48
|
+
def cupertino_app_bar(**props) = build_widget(:cupertino_app_bar, **props)
|
|
49
|
+
def cupertinoappbar(**props) = cupertino_app_bar(**props)
|
|
50
|
+
def cupertino_bottom_sheet(content = nil, **props)
|
|
51
|
+
mapped = props.dup
|
|
52
|
+
mapped[:content] = content unless content.nil?
|
|
53
|
+
build_widget(:cupertino_bottom_sheet, **mapped)
|
|
54
|
+
end
|
|
55
|
+
def cupertinobottomsheet(content = nil, **props) = cupertino_bottom_sheet(content, **props)
|
|
56
|
+
def cupertino_date_picker(**props) = build_widget(:cupertino_date_picker, **props)
|
|
57
|
+
def cupertinodatepicker(**props) = cupertino_date_picker(**props)
|
|
20
58
|
def cupertino_dialog_action(**props) = build_widget(:cupertino_dialog_action, **props)
|
|
21
59
|
def cupertinodialogaction(**props) = cupertino_dialog_action(**props)
|
|
60
|
+
def cupertino_context_menu(**props) = build_widget(:cupertino_context_menu, **props)
|
|
61
|
+
def cupertinocontextmenu(**props) = cupertino_context_menu(**props)
|
|
62
|
+
def cupertino_context_menu_action(**props) = build_widget(:cupertino_context_menu_action, **props)
|
|
63
|
+
def cupertinocontextmenuaction(**props) = cupertino_context_menu_action(**props)
|
|
64
|
+
def cupertino_list_tile(**props) = build_widget(:cupertino_list_tile, **props)
|
|
65
|
+
def cupertinolisttile(**props) = cupertino_list_tile(**props)
|
|
22
66
|
def cupertino_navigation_bar(**props) = build_widget(:cupertino_navigation_bar, **props)
|
|
23
67
|
def cupertinonavigationbar(**props) = cupertino_navigation_bar(**props)
|
|
68
|
+
def cupertino_picker(children = nil, **props)
|
|
69
|
+
mapped = props.dup
|
|
70
|
+
mapped[:children] = children unless children.nil?
|
|
71
|
+
build_widget(:cupertinopicker, **mapped)
|
|
72
|
+
end
|
|
73
|
+
def cupertinopicker(children = nil, **props) = cupertino_picker(children, **props)
|
|
74
|
+
def cupertino_segmented_button(children = nil, **props)
|
|
75
|
+
mapped = props.dup
|
|
76
|
+
validate_cupertino_segmented_children!("cupertino_segmented_button", children, mapped)
|
|
77
|
+
mapped[:children] = children unless children.nil?
|
|
78
|
+
build_widget(:cupertinosegmentedbutton, **mapped)
|
|
79
|
+
end
|
|
80
|
+
def cupertinosegmentedbutton(children = nil, **props) = cupertino_segmented_button(children, **props)
|
|
81
|
+
def cupertino_sliding_segmented_button(children = nil, **props)
|
|
82
|
+
mapped = props.dup
|
|
83
|
+
validate_cupertino_segmented_children!("cupertino_sliding_segmented_button", children, mapped)
|
|
84
|
+
mapped[:children] = children unless children.nil?
|
|
85
|
+
build_widget(:cupertinoslidingsegmentedbutton, **mapped)
|
|
86
|
+
end
|
|
87
|
+
def cupertinoslidingsegmentedbutton(children = nil, **props) = cupertino_sliding_segmented_button(children, **props)
|
|
88
|
+
|
|
89
|
+
private
|
|
90
|
+
|
|
91
|
+
def validate_cupertino_segmented_children!(name, positional_children, props)
|
|
92
|
+
children = positional_children || props[:children] || props["children"] || props[:controls] || props["controls"]
|
|
93
|
+
visible_children = Array(children).reject { |child| child.respond_to?(:props) && child.props["visible"] == false }
|
|
94
|
+
raise ArgumentError, "#{name} controls must include at least two visible controls" if visible_children.length < 2
|
|
95
|
+
|
|
96
|
+
selected_index = props[:selected_index] || props["selected_index"] || 0
|
|
97
|
+
unless (0...visible_children.length).cover?(selected_index)
|
|
98
|
+
raise IndexError, "#{name} selected_index is out of range"
|
|
99
|
+
end
|
|
100
|
+
end
|
|
24
101
|
end
|
|
25
102
|
end
|
|
26
103
|
end
|