opal-bootbox 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 49a5f706d7b1498f3f402603b2fc28cc38640032
4
- data.tar.gz: 5ec45755993176d6e3429991400309aca9003c4a
3
+ metadata.gz: e03c9979426124d97ba07e3a8b82903a5ad69663
4
+ data.tar.gz: 61ee41675725fa420a64c941ec858089353fbede
5
5
  SHA512:
6
- metadata.gz: fa05abc60e1ca252f3332af4ec573c684ea9e55c3d0eeb0463e7dd1eec91450b585f08f973fe0355d61c96f7251c79089a821a23e8c4b24ce7d3a72a8ee86e1e
7
- data.tar.gz: 607575582805561cd6e3f7d15e4e3c642ad28eb7bc32cdf52ea228acb41921ac36b0ba0a90a02d50aa350d79f0a5b28af48760138fe9b635272de678c98e1dfa
6
+ metadata.gz: a730c039e1d02632a913d5bca56df884c6d77f9683b763fc4907a199271bb1972a78e3b68b5af37f594c77b41afb2c45e82b33c28d6a17433a28a187b38e1afe
7
+ data.tar.gz: 0a8c01ffc9b5e71e2271a0cf515572332b1020c2ba2412d1f53690f4a69f70bc819aba298273d0db6a0a9827384713bd6c132e443efee784640345958ed89a03
data/README.md CHANGED
@@ -42,10 +42,22 @@ require 'opal'
42
42
  require 'opal-bootbox'
43
43
  ```
44
44
 
45
- > You need to bring your own `bootbox.js` or `bootbox.min.js` and bootstrap files.
46
- >> http://bootboxjs.com/download/
47
- >> http://getbootstrap.com/getting-started/#download
48
- > and put the files in `app/` or whichever directory you are compiling assets from.
45
+ You need to bring your own `bootbox.js` or `bootbox.min.js` and bootstrap files
46
+
47
+ * http://bootboxjs.com/download/
48
+ * http://getbootstrap.com/getting-started/#download
49
+
50
+ and put the files in `app/` or whichever directory you are compiling assets from.
51
+
52
+ The Opal/Ruby interface is largely consistent with the Javascript interface.
53
+
54
+ See http://bootboxjs.com/documentation.html for Javascript library documentation.
55
+
56
+ Where a method expects a single callback substitute a block for the JS function.
57
+
58
+ The value for a `callback:` keyword argument should be a Ruby proc.
59
+
60
+ Keyword arguments should preserve the JS camelcase (e.g. className:).
49
61
 
50
62
  ### Examples
51
63
 
@@ -53,19 +65,35 @@ require 'opal-bootbox'
53
65
  $bootbox.alert('Hello world!') do
54
66
  puts 'hello world acknowledged'
55
67
  end
68
+ ```
56
69
 
57
- $bootbox.alert(title: 'Alert dialog', message: 'Hello world!') do
58
- puts 'hello world acknowledged'
59
- end
70
+ ```
71
+ $bootbox.alert(
72
+ size: 'small',
73
+ title: 'Alert',
74
+ message: 'Hello world!',
75
+ callback: -> {puts 'hello world acknowledged'}
76
+ )
77
+ ```
60
78
 
79
+ ```
61
80
  $bootbox.confirm('Are you sure?') do |result|
62
81
  puts "user is #{result ? 'sure' : 'unsure'}"
63
82
  end
83
+ ```
64
84
 
65
- $bootbox.confirm(title: 'Confirmation dialog', message: Are you sure?') do |result|
66
- puts "user is #{result ? 'sure' : 'unsure'}"
85
+ ```
86
+ $bootbox.confirm(
87
+ size: 'small',
88
+ title: 'Confirmation',
89
+ message: 'Are you sure?'
90
+ callback: ->(result) {
91
+ puts "user is #{result ? 'sure' : 'unsure'}"
92
+ }
67
93
  end
94
+ ```
68
95
 
96
+ ```
69
97
  $bootbox.prompt('What is your name?') do |result|
70
98
  if result
71
99
  puts "user's name is '#{result}'"
@@ -73,26 +101,94 @@ $bootbox.prompt('What is your name?') do |result|
73
101
  puts "prompt dismissed"
74
102
  end
75
103
  end
104
+ ```
76
105
 
77
- $bootbox.prompt(title: 'Prompt dialog', message: 'What is your name?', value: 'default name') do |result|
78
- if result
79
- puts "user's name is '#{result}'"
80
- else
81
- puts "prompt dismissed"
82
- end
83
- end
106
+ ```
107
+ $bootbox.prompt(
108
+ size: 'small',
109
+ title: 'Prompt',
110
+ message: 'What is your name?',
111
+ value: 'default name'),
112
+ callback: ->(result) {
113
+ if result
114
+ puts "user's name is '#{result}'"
115
+ else
116
+ puts "prompt dismissed"
117
+ }
118
+ )
119
+ ```
84
120
 
85
121
  ```
122
+ $bootbox.dialog(
123
+ # required
124
+ message: "I am a custom dialog",
125
+
126
+ # optional - adds a header to the dialog and places this text in an h4
127
+ title: "Custom title",
128
+
129
+ # optional - allows the user to dismiss the dialog by hitting ESC
130
+ # which will call this proc
131
+ onEscape: -> { puts 'user press escape' },
132
+
133
+ # optional - whether the dialog should be shown immediately
134
+ show: true,
135
+
136
+ # optional - whether the dialog should be have a backdrop or not
137
+ backdrop: true,
138
+
139
+ # optional - whether to show a close button (default true)
140
+ closeButton: true,
141
+
142
+ # optional - whether to animate (default true)
143
+ animate: true,
144
+
145
+ # optional - an additional CSS class to apply to the Bootstrap dialog wrapper
146
+ className: "my-modal",
147
+
148
+ # optional - a hash of buttons to be shown in the dialog's footer
149
+ buttons: {
150
+
151
+ success: {
152
+ # optional - the button label
153
+ label: "Success!",
154
+
155
+ # optional - an additional CSS class to apply to the button
156
+ className: "btn-success",
157
+
158
+ # optional - call proc when button is clicked
159
+ callback: -> { puts 'success!' }
160
+ },
161
+
162
+ "Danger!": {
163
+ # no label is provided so the key is used as the button label
164
+
165
+ # optional - an additional CSS class to apply to the button
166
+ className: "btn-danger",
167
+
168
+ callback: -> { puts 'danger!' }
169
+ },
170
+
171
+ # if the only value supplied is a callback proc,
172
+ # the key is used as the button label and all
173
+ # other options are defaulted
174
+
175
+ "Warning!": -> { puts 'warning!}
176
+ }
177
+ )
178
+ ```
179
+
86
180
 
87
181
  `$bootbox` is a global variable. `Opal::Bootbox` may be substituted.
88
182
 
89
183
  Strings (text) provided as arguments to bootbox methods may be HTML format.
90
184
 
185
+ All methods are executed asynchronously, hence the use of callback blocks and procs.
186
+
91
187
  ## To do
92
188
 
93
- * Implement Bootbox custom dialog options.
94
189
  * Documentation
95
190
  * Testing
191
+ * snake case keywords ?
96
192
 
97
193
  ## Getting involved
98
194
 
@@ -1,5 +1,5 @@
1
1
  module Opal
2
2
  module Bootbox
3
- VERSION = '0.1.1'
3
+ VERSION = '0.1.2'
4
4
  end
5
5
  end
data/lib/opal/bootbox.rb CHANGED
@@ -7,12 +7,20 @@ if RUBY_ENGINE == 'opal'
7
7
 
8
8
  require 'native'
9
9
 
10
+ # see http://bootboxjs.com/documentation.html
11
+
10
12
  module Opal
11
13
  module Bootbox
12
14
  module_function
13
15
 
14
16
  def bootbox_call(method, *args, &block)
15
- Native.call(`bootbox`, method, *args, &block)
17
+ arg = args.first
18
+ if arg.is_a?(Hash) && arg[:callback].nil?
19
+ arg[:callback] = block
20
+ Native.call(`bootbox`, method, arg.to_n)
21
+ else
22
+ Native.call(`bootbox`, method, arg.to_n, &block)
23
+ end
16
24
  end
17
25
 
18
26
  # Creates an alert window.
@@ -37,6 +45,14 @@ module Opal
37
45
  bootbox_call(__method__, *args, &block)
38
46
  end
39
47
 
48
+ # Creates a custom dialog window.
49
+ # Method executes asynchronously.
50
+ # The result passed to given block is a String or nil.
51
+ # see http://bootboxjs.com/examples.html
52
+ def dialog(*args, &block)
53
+ bootbox_call(__method__, *args, &block)
54
+ end
55
+
40
56
  end
41
57
  end
42
58
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal-bootbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Colin Gunn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-30 00:00:00.000000000 Z
11
+ date: 2015-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal