ruby_native 0.2.6 → 0.2.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ad18c6fcb69bcf375a6a44ef5513e47d6ff96dbf1957636d2fc964a9a124a078
4
- data.tar.gz: '048a44c3fa9f59016d8dad8f60f2e2d8330a403285ede35541465162eb64c11e'
3
+ metadata.gz: 71ff1f8889c08bae63cda63f21bacdbb89b6ecb2c0e9fca1bcea72e8f47a96e4
4
+ data.tar.gz: ae7319eec1a4a7c27cc539c4a7519cd8fed8e8cf6f7a74c895492751f5c7b524
5
5
  SHA512:
6
- metadata.gz: 03c531fb7b9739e8744493e41024b6472ad43d43ef287686fec672ab1ddda186c9ad4463d86a4844ce0b2d35f5c1cf6ddf89075c2998e3f8d6d4727be7fcdf77
7
- data.tar.gz: dd6f724b78af89ac07c72ea9b5acc898af580a1042d822bab3cf948eb9e577124dbaecbcb43342ff095a890b0055a8152d5a8a1a93a87960e9be86651e51ca12
6
+ metadata.gz: 23717abe10128f3e872fb161e7eae5191079b1fb4767ed6b832b3c70f5c04c8773266e8f462fcd349a39a6bbd11df73c53f63ef56fd29da6601adc7ec5bb52c5
7
+ data.tar.gz: '08948c2b203c8d0b966c07eb018555748119fa1a4370c0ed712bce64ed04a86ce5f8ade8c837d89ffe5a8ae48ed435ba56eb6c59630243df7d448e47e9c0a2b9'
data/README.md CHANGED
@@ -36,7 +36,7 @@ appearance:
36
36
  tint_color: "#4F46E5"
37
37
  background_color: "#FFFFFF"
38
38
  status_bar_color: "#FFFFFF"
39
- tabs:
39
+ tabs: # optional
40
40
  - title: Home
41
41
  path: /
42
42
  icon: house
@@ -45,6 +45,8 @@ tabs:
45
45
  icon: person
46
46
  ```
47
47
 
48
+ You may also omit `tabs` to hide the tab bar entirely. The app will load `entry_path` or fall back to `/`.
49
+
48
50
  Color fields accept a plain hex string or an object with `light` and `dark` keys for dark mode:
49
51
 
50
52
  ```yaml
@@ -2,6 +2,7 @@ module RubyNative
2
2
  class ConfigController < ::ActionController::Base
3
3
  def show
4
4
  RubyNative.load_config if Rails.env.local?
5
+ response.set_header("X-Ruby-Native-Version", RubyNative::VERSION)
5
6
  render json: RubyNative.config
6
7
  end
7
8
  end
@@ -0,0 +1,11 @@
1
+ import { BridgeComponent } from "@hotwired/hotwire-native-bridge"
2
+
3
+ export default class extends BridgeComponent {
4
+ static component = "haptic"
5
+ static values = { feedback: { type: String, default: "success" } }
6
+
7
+ vibrate() {
8
+ const feedback = this.feedbackValue || "success"
9
+ this.send("vibrate", { feedback })
10
+ }
11
+ }
@@ -5,6 +5,7 @@ import PushController from "ruby_native/bridge/push_controller"
5
5
  import MenuController from "ruby_native/bridge/menu_controller"
6
6
  import SearchController from "ruby_native/bridge/search_controller"
7
7
  import ButtonController from "ruby_native/bridge/button_controller"
8
+ import HapticController from "ruby_native/bridge/haptic_controller"
8
9
 
9
10
  application.register("bridge--tabs", TabsController)
10
11
  application.register("bridge--form", FormController)
@@ -12,3 +13,4 @@ application.register("bridge--push", PushController)
12
13
  application.register("bridge--menu", MenuController)
13
14
  application.register("bridge--search", SearchController)
14
15
  application.register("bridge--button", ButtonController)
16
+ application.register("bridge--haptic", HapticController)
@@ -11,8 +11,8 @@ module RubyNative
11
11
  tag.div(data: { native_form: true }, hidden: true)
12
12
  end
13
13
 
14
- def native_form_data
15
- { controller: "bridge--form" }
14
+ def native_form_data(**data)
15
+ merge_controller(data, "bridge--form")
16
16
  end
17
17
 
18
18
  def native_submit_data
@@ -32,7 +32,7 @@ module RubyNative
32
32
  tag.path(d: "M15.75 19.5L8.25 12l7.5-7.5", stroke_linecap: "round", stroke_linejoin: "round"),
33
33
  width: 24, height: 24, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", stroke_width: 2.5
34
34
  )
35
- tag.button(text || default_content, onclick: "webkit.messageHandlers.rubyNative.postMessage({action: 'back'})", **options)
35
+ tag.button(text || default_content, onclick: "RubyNative.postMessage({action: 'back'})", **options)
36
36
  end
37
37
 
38
38
  def native_search_tag
@@ -59,6 +59,22 @@ module RubyNative
59
59
  }) { builder.to_html }
60
60
  end
61
61
 
62
+ def native_haptic_data(feedback = :success, **data)
63
+ feedback = feedback.to_s
64
+ feedback = "success" if feedback.empty?
65
+
66
+ data[:native_haptic] = feedback
67
+ data[:bridge__haptic_feedback_value] = feedback
68
+ merge_controller(data, "bridge--haptic")
69
+ end
70
+
71
+ private
72
+
73
+ def merge_controller(data, controller)
74
+ data[:controller] = [data[:controller], controller].compact.join(" ")
75
+ data
76
+ end
77
+
62
78
  class MenuBuilder
63
79
  def initialize(context)
64
80
  @context = context
@@ -1,3 +1,3 @@
1
1
  module RubyNative
2
- VERSION = "0.2.6"
2
+ VERSION = "0.2.7"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_native
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Masilotti
@@ -56,6 +56,7 @@ files:
56
56
  - app/javascript/ruby_native/back.js
57
57
  - app/javascript/ruby_native/bridge/button_controller.js
58
58
  - app/javascript/ruby_native/bridge/form_controller.js
59
+ - app/javascript/ruby_native/bridge/haptic_controller.js
59
60
  - app/javascript/ruby_native/bridge/index.js
60
61
  - app/javascript/ruby_native/bridge/menu_controller.js
61
62
  - app/javascript/ruby_native/bridge/push_controller.js