formotion 1.3 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.travis.yml +5 -0
- data/CHANGELOG.md +14 -0
- data/Formotion.gemspec +1 -0
- data/Gemfile +0 -1
- data/README.md +2 -0
- data/lib/formotion.rb +2 -28
- data/lib/formotion/base.rb +2 -0
- data/lib/formotion/controller/form_controller.rb +2 -0
- data/lib/formotion/form/form.rb +2 -0
- data/lib/formotion/form/form_delegate.rb +2 -0
- data/lib/formotion/row/row.rb +7 -1
- data/lib/formotion/row_type/back_row.rb +2 -0
- data/lib/formotion/row_type/button.rb +2 -0
- data/lib/formotion/row_type/check_row.rb +2 -0
- data/lib/formotion/row_type/currency_row.rb +2 -0
- data/lib/formotion/row_type/date_row.rb +2 -0
- data/lib/formotion/row_type/edit_row.rb +2 -0
- data/lib/formotion/row_type/email_row.rb +2 -0
- data/lib/formotion/row_type/image_row.rb +2 -0
- data/lib/formotion/row_type/number_row.rb +2 -0
- data/lib/formotion/row_type/options_row.rb +3 -0
- data/lib/formotion/row_type/phone_row.rb +2 -0
- data/lib/formotion/row_type/picker_row.rb +1 -0
- data/lib/formotion/row_type/slider_row.rb +2 -0
- data/lib/formotion/row_type/static_row.rb +2 -0
- data/lib/formotion/row_type/string_row.rb +40 -0
- data/lib/formotion/row_type/subform_row.rb +2 -0
- data/lib/formotion/row_type/submit_row.rb +2 -0
- data/lib/formotion/row_type/switch_row.rb +2 -0
- data/lib/formotion/row_type/template_row.rb +3 -0
- data/lib/formotion/row_type/text_row.rb +2 -0
- data/lib/formotion/section/section.rb +16 -8
- data/lib/formotion/version.rb +1 -1
- data/spec/functional/template_row_spec.rb +22 -0
- metadata +20 -17
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZmNhMGY5ZTMyZWUwYWIzMzhlMTVhYmQ0ODk2NGQ3YTBlYzRmNGI5NQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ODI0MWFkNzkwOTAxNGFmZjM1Yjg5ZjVkYTMwYzkzMTdhMWZhMzZiOA==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MDkzMzM3YWE2MTNjZjMwOGI5MWUzN2ZlZWNmYWNkMGMwMTczNDY3YzA4Njli
|
10
|
+
NmEzMzQzYjZkYjNkYzI5NTQxNDI2MjM3OWUwZGM3MTkxZTBjNDJlYmJiNjk4
|
11
|
+
NjI2NjY2YjJlOTMyNmI5YTZmYTgyYmQ0NzNiMzBhZTc4ODEzYTc=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MDM3ODUyZWI5MmE5ZTQxOGQyN2YxY2ZhZDI0MzUyNjI5ZDU4M2QyMjI1ODk5
|
14
|
+
ZDA5ZTM5Y2ZlY2QyMmI5YWVjMjhjYzE3MjliYmVhMWIzYTY1NTBkNmQ0ZWQ4
|
15
|
+
MWIyYTVjMjJmNzM0MWRlMzFmM2VlMjI4MTMwZTlkMDJjYmQ0ZDY=
|
data/.travis.yml
ADDED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
## 1.3.1 - April 15, 2013
|
2
|
+
|
3
|
+
### Features
|
4
|
+
|
5
|
+
- Added `:input_accessory` property, which currently accepts `:done` as the value. This will add a `UIToolbar` above the keyboard with a "Done" button the user can tap to dismiss the keyboard.
|
6
|
+
|
7
|
+
- Added `Row#on_delete` callback which occurs when a row is swipe-to-delete'd.
|
8
|
+
|
9
|
+
### Bug Fixes
|
10
|
+
|
11
|
+
- `:image` rows which are not editable do not show the "plus" icon.
|
12
|
+
|
13
|
+
- Fixed bugs in `:template` rows (see [#100](https://github.com/clayallsopp/formotion/issues/100) and [#101](https://github.com/clayallsopp/formotion/pull/101)).
|
14
|
+
|
1
15
|
## 1.3 - March 25, 2013
|
2
16
|
|
3
17
|
### Features
|
data/Formotion.gemspec
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
data/lib/formotion.rb
CHANGED
@@ -2,32 +2,6 @@ require File.expand_path(File.join(File.dirname(__FILE__), "formotion/version"))
|
|
2
2
|
require 'bubble-wrap/core'
|
3
3
|
require 'bubble-wrap/camera'
|
4
4
|
|
5
|
-
|
6
|
-
base_row_type = 'lib/formotion/row_type/base.rb'
|
5
|
+
require 'motion-require'
|
7
6
|
|
8
|
-
|
9
|
-
file('lib/formotion/base.rb').depends_on base_row_type
|
10
|
-
|
11
|
-
row_types = Dir.glob('lib/formotion/row_type/**/*.rb')
|
12
|
-
row_types.each {|file|
|
13
|
-
next if file == base_row_type
|
14
|
-
file(file).depends_on base_row_type
|
15
|
-
}
|
16
|
-
|
17
|
-
['date_row', 'email_row', 'number_row', 'phone_row'].each {|file|
|
18
|
-
file("lib/formotion/row_type/#{file}.rb").depends_on 'lib/formotion/row_type/string_row.rb'
|
19
|
-
}
|
20
|
-
|
21
|
-
['currency_row'].each {|file|
|
22
|
-
file("lib/formotion/row_type/#{file}.rb").depends_on 'lib/formotion/row_type/number_row.rb'
|
23
|
-
}
|
24
|
-
|
25
|
-
['submit_row', 'back_row'].each {|file|
|
26
|
-
file("lib/formotion/row_type/#{file}.rb").depends_on 'lib/formotion/row_type/button.rb'
|
27
|
-
}
|
28
|
-
|
29
|
-
['form/form.rb', 'row/row.rb', 'section/section.rb'].each {|file|
|
30
|
-
file("lib/formotion/#{file}").depends_on 'lib/formotion/base.rb'
|
31
|
-
}
|
32
|
-
file("lib/formotion/controller/form_controller.rb").depends_on 'lib/formotion/patch/ui_text_field.rb'
|
33
|
-
end
|
7
|
+
Motion::Require.all(Dir.glob(File.expand_path('../formotion/**/*.rb', __FILE__)))
|
data/lib/formotion/base.rb
CHANGED
data/lib/formotion/form/form.rb
CHANGED
data/lib/formotion/row/row.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
motion_require "../base"
|
2
|
+
|
1
3
|
module Formotion
|
2
4
|
class Row < Formotion::Base
|
3
5
|
PROPERTIES = [
|
@@ -85,7 +87,11 @@ module Formotion
|
|
85
87
|
:remove_on_delete,
|
86
88
|
# In a date/time or time picker, the minute interval can
|
87
89
|
# be set. That allows picking by every 15 minutes, etc.
|
88
|
-
:minute_interval
|
90
|
+
:minute_interval,
|
91
|
+
# Display an inputAccessoryView when editing a StringRow.
|
92
|
+
# OPTIONS: :done (a black translucent toolbar with a right-aligned "Done" button)
|
93
|
+
# DEFAULT is nil
|
94
|
+
:input_accessory
|
89
95
|
]
|
90
96
|
PROPERTIES.each {|prop|
|
91
97
|
attr_accessor prop
|
@@ -1,3 +1,5 @@
|
|
1
|
+
motion_require 'base'
|
2
|
+
|
1
3
|
module Formotion
|
2
4
|
module RowType
|
3
5
|
class StringRow < Base
|
@@ -40,6 +42,7 @@ module Formotion
|
|
40
42
|
field.autocorrectionType = row.auto_correction if row.auto_correction
|
41
43
|
field.clearButtonMode = row.clear_button || UITextFieldViewModeWhileEditing
|
42
44
|
field.enabled = row.editable?
|
45
|
+
field.inputAccessoryView = input_accessory_view(row.input_accessory) if row.input_accessory
|
43
46
|
|
44
47
|
add_callbacks(field)
|
45
48
|
|
@@ -143,6 +146,43 @@ module Formotion
|
|
143
146
|
def update_text_field(new_value)
|
144
147
|
self.row.text_field.text = row_value
|
145
148
|
end
|
149
|
+
|
150
|
+
# Creates the inputAccessoryView to show
|
151
|
+
# if input_accessory property is set on row.
|
152
|
+
# :done is currently the only supported option.
|
153
|
+
def input_accessory_view(input_accessory)
|
154
|
+
case input_accessory
|
155
|
+
when :done
|
156
|
+
@input_accessory ||= begin
|
157
|
+
tool_bar = UIToolbar.alloc.initWithFrame([[0, 0], [0, 44]])
|
158
|
+
tool_bar.autoresizingMask = UIViewAutoresizingFlexibleWidth
|
159
|
+
tool_bar.barStyle = UIBarStyleBlack
|
160
|
+
tool_bar.translucent = true
|
161
|
+
|
162
|
+
left_space = UIBarButtonItem.alloc.initWithBarButtonSystemItem(
|
163
|
+
UIBarButtonSystemItemFlexibleSpace,
|
164
|
+
target: nil,
|
165
|
+
action: nil)
|
166
|
+
|
167
|
+
done_button = UIBarButtonItem.alloc.initWithBarButtonSystemItem(
|
168
|
+
UIBarButtonSystemItemDone,
|
169
|
+
target: self,
|
170
|
+
action: :done_editing)
|
171
|
+
|
172
|
+
tool_bar.items = [left_space, done_button]
|
173
|
+
|
174
|
+
tool_bar
|
175
|
+
end
|
176
|
+
else
|
177
|
+
nil
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
# Callback for "Done" button in input_accessory_view
|
182
|
+
def done_editing
|
183
|
+
self.row.text_field.endEditing(true)
|
184
|
+
end
|
185
|
+
|
146
186
|
end
|
147
187
|
end
|
148
188
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
motion_require 'base'
|
2
|
+
|
1
3
|
# Define template row:
|
2
4
|
# {
|
3
5
|
# title: "Add nickname",
|
@@ -55,6 +57,7 @@ module Formotion
|
|
55
57
|
template_value = row.template_parent.value
|
56
58
|
template_value.delete_at(row.index)
|
57
59
|
row.template_parent.value = template_value
|
60
|
+
row.template_parent.template_children.delete_at(row.index)
|
58
61
|
end
|
59
62
|
end
|
60
63
|
new_row.remove_on_delete = true
|
@@ -1,3 +1,5 @@
|
|
1
|
+
motion_require "../base"
|
2
|
+
|
1
3
|
module Formotion
|
2
4
|
class Section < Formotion::Base
|
3
5
|
PROPERTIES = [
|
@@ -38,20 +40,26 @@ module Formotion
|
|
38
40
|
}
|
39
41
|
end
|
40
42
|
|
41
|
-
def
|
42
|
-
row = create_row
|
43
|
-
block.call(row)
|
44
|
-
row
|
45
|
-
end
|
46
|
-
|
47
|
-
def create_row(hash = {})
|
43
|
+
def generate_row(hash = {})
|
48
44
|
row = hash
|
49
45
|
if hash.class == Hash
|
50
46
|
row = Formotion::Row.new(hash)
|
51
47
|
end
|
52
48
|
row.section = self
|
53
49
|
row.index = self.rows.count
|
54
|
-
|
50
|
+
row
|
51
|
+
end
|
52
|
+
|
53
|
+
def build_row(&block)
|
54
|
+
row = generate_row
|
55
|
+
block.call(row)
|
56
|
+
row.after_create
|
57
|
+
self.rows << row
|
58
|
+
row
|
59
|
+
end
|
60
|
+
|
61
|
+
def create_row(hash = {})
|
62
|
+
row = generate_row(hash)
|
55
63
|
row.after_create
|
56
64
|
self.rows << row
|
57
65
|
row
|
data/lib/formotion/version.rb
CHANGED
@@ -33,6 +33,28 @@ describe "FormController/TemplateRow" do
|
|
33
33
|
@controller = nil
|
34
34
|
end
|
35
35
|
|
36
|
+
it "should work with DSL" do
|
37
|
+
@form = Formotion::Form.new
|
38
|
+
|
39
|
+
@form.build_section do |section|
|
40
|
+
section.build_row do |row|
|
41
|
+
row.title = "Add element"
|
42
|
+
row.type = :template
|
43
|
+
row.key = :template
|
44
|
+
row.value = ["Value 1", "Value 2"]
|
45
|
+
row.template = {
|
46
|
+
title: 'Element',
|
47
|
+
type: :string,
|
48
|
+
indented: true,
|
49
|
+
deletable: true
|
50
|
+
}
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
@controller ||= Formotion::FormController.alloc.initWithForm(@form)
|
55
|
+
@form.render[:template].should == ['Value 1', 'Value 2']
|
56
|
+
end
|
57
|
+
|
36
58
|
it "should insert row" do
|
37
59
|
tap("Add element")
|
38
60
|
@form.sections.first.rows.size.should == 3
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: formotion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 1.3.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Clay Allsopp
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-04-15 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bubble-wrap
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ! '>='
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,15 +20,27 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ! '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 1.1.4
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: motion-require
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.0.3
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.0.3
|
30
41
|
- !ruby/object:Gem::Dependency
|
31
42
|
name: rake
|
32
43
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
44
|
requirements:
|
35
45
|
- - ! '>='
|
36
46
|
- !ruby/object:Gem::Version
|
@@ -38,7 +48,6 @@ dependencies:
|
|
38
48
|
type: :development
|
39
49
|
prerelease: false
|
40
50
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
51
|
requirements:
|
43
52
|
- - ! '>='
|
44
53
|
- !ruby/object:Gem::Version
|
@@ -51,6 +60,7 @@ extensions: []
|
|
51
60
|
extra_rdoc_files: []
|
52
61
|
files:
|
53
62
|
- .gitignore
|
63
|
+
- .travis.yml
|
54
64
|
- CHANGELOG.md
|
55
65
|
- Formotion.gemspec
|
56
66
|
- Gemfile
|
@@ -190,33 +200,26 @@ files:
|
|
190
200
|
- spec/support/ui_control_wrap_extension.rb
|
191
201
|
homepage: https://github.com/clayallsopp/Formotion
|
192
202
|
licenses: []
|
203
|
+
metadata: {}
|
193
204
|
post_install_message:
|
194
205
|
rdoc_options: []
|
195
206
|
require_paths:
|
196
207
|
- lib
|
197
208
|
required_ruby_version: !ruby/object:Gem::Requirement
|
198
|
-
none: false
|
199
209
|
requirements:
|
200
210
|
- - ! '>='
|
201
211
|
- !ruby/object:Gem::Version
|
202
212
|
version: '0'
|
203
|
-
segments:
|
204
|
-
- 0
|
205
|
-
hash: -3419813869520045411
|
206
213
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
207
|
-
none: false
|
208
214
|
requirements:
|
209
215
|
- - ! '>='
|
210
216
|
- !ruby/object:Gem::Version
|
211
217
|
version: '0'
|
212
|
-
segments:
|
213
|
-
- 0
|
214
|
-
hash: -3419813869520045411
|
215
218
|
requirements: []
|
216
219
|
rubyforge_project:
|
217
|
-
rubygems_version:
|
220
|
+
rubygems_version: 2.0.3
|
218
221
|
signing_key:
|
219
|
-
specification_version:
|
222
|
+
specification_version: 4
|
220
223
|
summary: Making iOS Forms insanely great with RubyMotion
|
221
224
|
test_files:
|
222
225
|
- spec/form/persist_spec.rb
|