ProMotion 2.7.0 → 2.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -37
- data/lib/ProMotion/table/data/table_data.rb +10 -17
- data/lib/ProMotion/table/extensions/indexable.rb +1 -1
- data/lib/ProMotion/table/extensions/longpressable.rb +1 -1
- data/lib/ProMotion/table/extensions/searchable.rb +37 -30
- data/lib/ProMotion/table/table.rb +2 -14
- data/lib/ProMotion/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ff30153aea5024d65f20bfacc4de9b03237997c
|
4
|
+
data.tar.gz: 85cfd76f2fbd7ded2051be9b6ccdc816b26e60ea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9956829eb6dc692feca9a05fb8d913ccf27ef04a46c2b8cd8645e09638aa56f6a6f05dfe5b317a5a66c95bfce55383c2b0a1a9fe4d08df7c1dd03424810f9184
|
7
|
+
data.tar.gz: b6eef1cc874010a91ef179597209b04a58d9c3bd70e43d9ba47be44322d79c5f1a389332e7de6e54f2e755548d9f61f9ecacbb940832c23aa88f686f3f3f79c8
|
data/README.md
CHANGED
@@ -65,7 +65,7 @@ class HelpScreen < PM::TableScreen
|
|
65
65
|
end
|
66
66
|
```
|
67
67
|
|
68
|
-
|
68
|
+
## Features
|
69
69
|
|
70
70
|
|Screens|Navigation Bars|Tab Bars|
|
71
71
|
|---|---|---|
|
@@ -84,44 +84,18 @@ end
|
|
84
84
|
|
85
85
|
#### ...and much more.
|
86
86
|
|
87
|
-
|
87
|
+
## Getting Started
|
88
88
|
|
89
89
|
1. Check out the [Getting Started Guide](https://github.com/infinitered/ProMotion/blob/master/docs/Guides/Getting%20Started.md)
|
90
90
|
2. Watch the excellent [MotionInMotion screencast about ProMotion](https://motioninmotion.tv/screencasts/8) (very reasonably priced subscription required)
|
91
91
|
3. Follow a tutorial: [Building an ESPN app using RubyMotion, ProMotion, and TDD](http://jamonholmgren.com/building-an-espn-app-using-rubymotion-promotion-and-tdd)
|
92
92
|
4. Read the [Documentation](https://github.com/infinitered/ProMotion/blob/master/docs)
|
93
93
|
|
94
|
-
|
94
|
+
## Changelog
|
95
95
|
|
96
|
-
|
96
|
+
[See Releases page](https://github.com/infinitered/ProMotion/releases)
|
97
97
|
|
98
|
-
|
99
|
-
|
100
|
-
* PR #777 New Feature: Add ability to register live reload plugins
|
101
|
-
* PR #778 Bugfix: Only update search results table data if possible
|
102
|
-
* PR #779 Fix bug where remote images are not shown on first load of table screen
|
103
|
-
* PR #787 Fix Travis CI build from failing when RubyMotion is up-to-date
|
104
|
-
* PR #796 Fix iOS 10 from crashing when determining supportedInterfaceOrientations for UIImagePickerController
|
105
|
-
* Other minor bugfixes and documentation updates
|
106
|
-
|
107
|
-
## Version 2.6.0
|
108
|
-
|
109
|
-
This release includes a few new features and bugfixes and is backwards compatible with all 2.x releases.
|
110
|
-
|
111
|
-
* PR #773 Add a `on_continue_user_activity` delegate method
|
112
|
-
* PR #766 Fix nav_bar_button class method
|
113
|
-
* Other minor bugfixes and documentation updates
|
114
|
-
|
115
|
-
## Version 2.5.0
|
116
|
-
|
117
|
-
This release includes some new features and bugfixes and is backwards compatible with all 2.x releases.
|
118
|
-
|
119
|
-
* PR #763 Adds footer_view to TableScreens
|
120
|
-
* PR #705 Adds split-screen support for large iPhones
|
121
|
-
* PR #736 Adds the index path when deleting a cell
|
122
|
-
* Several other bugfix PRs
|
123
|
-
|
124
|
-
# Apps built on ProMotion
|
98
|
+
## Apps built on ProMotion
|
125
99
|
|
126
100
|
[Apps built on ProMotion](http://promotion.readthedocs.org/en/master/ProMotion%20Apps/)
|
127
101
|
|
@@ -129,31 +103,31 @@ This release includes some new features and bugfixes and is backwards compatible
|
|
129
103
|
|
130
104
|
Open a pull request! We love adding new ProMotion-built apps.
|
131
105
|
|
132
|
-
|
106
|
+
## API Reference
|
133
107
|
|
134
|
-
We
|
108
|
+
We have comprehensive documentation with code examples, usage examples, and API reference.
|
135
109
|
|
136
110
|
### [ProMotion Documentation](https://github.com/infinitered/ProMotion/blob/master/docs)
|
137
111
|
|
138
|
-
|
112
|
+
## Screencasts
|
139
113
|
|
140
114
|
* Watch Jamon Holmgren give a talk about ProMotion at [RubyMotion #inspect2014](http://confreaks.com/videos/3813-inspect-going-pro-with-promotion-from-prototype-to-production) (video)
|
141
115
|
* Watch the [September 2013 Motion Meetup](http://www.youtube.com/watch?v=rf7h-3AiMRQ) where Gant Laborde
|
142
116
|
interviews Jamon Holmgren about ProMotion
|
143
117
|
|
144
|
-
|
118
|
+
## Help
|
145
119
|
|
146
120
|
ProMotion is not only an easy DSL to get started. The community is very helpful and
|
147
121
|
welcoming to new RubyMotion developers. We don't mind newbie questions.
|
148
122
|
|
149
123
|
The quickest way to get help is to join the [Motioneers Slack Group](http://motioneers.herokuapp.com). If you still need help, feel free to open an issue on GitHub. If we don't respond within a day, tweet us a link to the issue -- sometimes we get busy.
|
150
124
|
|
151
|
-
|
125
|
+
### Premium Support
|
152
126
|
|
153
127
|
[ProMotion](https://github.com/infinitered/ProMotion), as an open source project, is free to use and always will be. [Infinite Red](https://infinite.red/) offers premium ProMotion support and general mobile app design/development services. Email us at [hello@infinite.red](mailto:hello@infinite.red) to get in touch with us for more details.
|
154
128
|
|
155
129
|
|
156
|
-
|
130
|
+
## Contributing
|
157
131
|
|
158
132
|
See [CONTRIBUTING.md](https://github.com/infinitered/ProMotion/blob/master/CONTRIBUTING.md).
|
159
133
|
|
@@ -3,7 +3,7 @@ module ProMotion
|
|
3
3
|
include ProMotion::Table::Utils
|
4
4
|
include ProMotion::TableDataBuilder
|
5
5
|
|
6
|
-
attr_accessor :data, :filtered_data, :
|
6
|
+
attr_accessor :data, :filtered_data, :table_view
|
7
7
|
|
8
8
|
def initialize(data, table_view, search_action = nil)
|
9
9
|
@search_action ||= search_action
|
@@ -27,7 +27,7 @@ module ProMotion
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def sections
|
30
|
-
|
30
|
+
filtered? ? self.filtered_data : self.data
|
31
31
|
end
|
32
32
|
|
33
33
|
def section_length(index)
|
@@ -55,8 +55,13 @@ module ProMotion
|
|
55
55
|
cell[:searchable] != false && "#{cell[:title]}\n#{cell[:search_text]}".downcase.strip.include?(search_string.downcase.strip)
|
56
56
|
end
|
57
57
|
|
58
|
+
def filtered?
|
59
|
+
@filtered == true
|
60
|
+
end
|
61
|
+
|
58
62
|
def search(search_string)
|
59
|
-
|
63
|
+
@filtered = true
|
64
|
+
self.filtered_data = []
|
60
65
|
|
61
66
|
self.data.compact.each do |section|
|
62
67
|
new_section = {}
|
@@ -74,22 +79,10 @@ module ProMotion
|
|
74
79
|
self.filtered_data << new_section
|
75
80
|
end
|
76
81
|
end
|
77
|
-
|
78
|
-
self.filtered_data
|
79
82
|
end
|
80
83
|
|
81
|
-
def
|
82
|
-
|
83
|
-
self.filtered = true
|
84
|
-
self.search_string = search_string.downcase.strip
|
85
|
-
self.original_search_string = search_string
|
86
|
-
end
|
87
|
-
|
88
|
-
def stop_searching
|
89
|
-
self.filtered_data = []
|
90
|
-
self.filtered = false
|
91
|
-
self.search_string = false
|
92
|
-
self.original_search_string = false
|
84
|
+
def clear_filter
|
85
|
+
@filtered = false
|
93
86
|
end
|
94
87
|
end
|
95
88
|
end
|
@@ -2,7 +2,7 @@ module ProMotion
|
|
2
2
|
module Table
|
3
3
|
module Indexable
|
4
4
|
def table_data_index
|
5
|
-
return nil if self.promotion_table_data.filtered || !self.class.get_indexable
|
5
|
+
return nil if self.promotion_table_data.filtered? || !self.class.get_indexable
|
6
6
|
|
7
7
|
index = self.promotion_table_data.sections.collect{ |section| (section[:title] || " ")[0] } || []
|
8
8
|
index.unshift("{search}") if self.class.get_searchable
|
@@ -2,51 +2,56 @@ module ProMotion
|
|
2
2
|
module Table
|
3
3
|
module Searchable
|
4
4
|
|
5
|
-
def
|
6
|
-
|
7
|
-
end
|
8
|
-
|
9
|
-
def make_searchable(params = {})
|
10
|
-
params = set_searchable_param_defaults(params)
|
5
|
+
def make_searchable(params = nil) # params argument is deprecated. No longer need to use it.
|
6
|
+
params = get_searchable_params
|
11
7
|
|
12
8
|
self.definesPresentationContext = true
|
9
|
+
search_controller = UISearchController.alloc.initWithSearchResultsController(nil)
|
13
10
|
search_controller.delegate = params[:delegate]
|
14
11
|
search_controller.searchResultsUpdater = params[:search_results_updater]
|
15
|
-
search_controller.hidesNavigationBarDuringPresentation = params[:
|
16
|
-
search_controller.dimsBackgroundDuringPresentation = params[:
|
17
|
-
# search_controller.obscuresBackgroundDuringPresentation = params[:
|
12
|
+
search_controller.hidesNavigationBarDuringPresentation = params[:hides_nav_bar]
|
13
|
+
search_controller.dimsBackgroundDuringPresentation = params[:obscures_background] # iOS 8+ (not deprecated yet)
|
14
|
+
# search_controller.obscuresBackgroundDuringPresentation = params[:obscures_background] # iOS 9.1+ recommends using this instead of dimsBackgroundDuringPresentation
|
18
15
|
|
19
16
|
search_bar = search_controller.searchBar
|
20
17
|
search_bar.delegate = params[:search_bar_delegate]
|
21
|
-
search_bar.autoresizingMask = UIViewAutoresizingFlexibleWidth
|
22
18
|
search_bar.placeholder = NSLocalizedString(params[:placeholder], nil) if params[:placeholder]
|
23
19
|
if params[:scopes]
|
24
20
|
@scopes = params[:scopes]
|
25
21
|
search_bar.scopeButtonTitles = @scopes
|
26
22
|
end
|
27
|
-
tableView.tableHeaderView = search_bar
|
28
|
-
search_bar.sizeToFit
|
29
23
|
|
30
|
-
if
|
31
|
-
|
24
|
+
if navigationItem && navigationItem.respond_to?(:setSearchController)
|
25
|
+
# For iOS 11 and later, we place the search bar in the navigation bar.
|
26
|
+
navigationItem.searchController = search_controller
|
27
|
+
navigationItem.hidesSearchBarWhenScrolling = params[:hides_search_bar_when_scrolling]
|
28
|
+
else
|
29
|
+
# For iOS 10 and earlier, we place the search bar in the table view's header.
|
30
|
+
search_bar.autoresizingMask = UIViewAutoresizingFlexibleWidth
|
31
|
+
tableView.tableHeaderView = search_bar
|
32
|
+
if params[:hide_initially]
|
33
|
+
tableView.contentOffset = CGPointMake(0, search_bar.frame.size.height)
|
34
|
+
end
|
32
35
|
end
|
36
|
+
|
37
|
+
@search_controller = search_controller
|
33
38
|
end
|
34
39
|
|
35
|
-
def
|
40
|
+
def get_searchable_params
|
41
|
+
params = self.class.get_searchable_params.dup
|
42
|
+
|
36
43
|
# support camelCase params
|
37
44
|
params[:search_results_updater] ||= params[:searchResultsUpdater]
|
45
|
+
params[:hides_nav_bar] = params[:hidesNavigationBarDuringPresentation] if params[:hides_nav_bar].nil?
|
46
|
+
params[:obscures_background] = params[:obscuresBackgroundDuringPresentation] if params[:obscures_background].nil?
|
47
|
+
params[:hides_search_bar_when_scrolling] = params[:hidesSearchBarWhenScrolling] if params[:hides_search_bar_when_scrolling].nil?
|
38
48
|
|
39
49
|
params[:delegate] ||= self
|
40
50
|
params[:search_results_updater] ||= self
|
41
51
|
params[:search_bar_delegate] ||= self
|
42
|
-
|
43
|
-
if params[:
|
44
|
-
|
45
|
-
end
|
46
|
-
|
47
|
-
if params[:obscuresBackgroundDuringPresentation].nil?
|
48
|
-
params[:obscuresBackgroundDuringPresentation] = false
|
49
|
-
end
|
52
|
+
params[:hides_nav_bar] = true if params[:hides_nav_bar].nil?
|
53
|
+
params[:obscures_background] = false if params[:obscures_background].nil?
|
54
|
+
params[:hides_search_bar_when_scrolling] = false if params[:hides_search_bar_when_scrolling].nil?
|
50
55
|
|
51
56
|
params
|
52
57
|
end
|
@@ -54,21 +59,23 @@ module ProMotion
|
|
54
59
|
######### UISearchControllerDelegate methods #######
|
55
60
|
|
56
61
|
def willPresentSearchController(search_controller)
|
57
|
-
promotion_table_data.start_searching
|
58
62
|
search_controller.delegate.will_begin_search if search_controller.delegate.respond_to? "will_begin_search"
|
59
63
|
end
|
60
64
|
|
61
65
|
def willDismissSearchController(search_controller)
|
62
|
-
promotion_table_data.stop_searching
|
63
|
-
table_view.reloadData
|
64
66
|
search_controller.delegate.will_end_search if search_controller.delegate.respond_to? "will_end_search"
|
65
67
|
end
|
66
68
|
|
67
|
-
|
69
|
+
######### UISearchResultsUpdating protocol methods #########
|
70
|
+
|
68
71
|
def updateSearchResultsForSearchController(search_controller)
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
+
search_text = search_controller.searchBar.text
|
73
|
+
if search_text.empty?
|
74
|
+
promotion_table_data.clear_filter
|
75
|
+
else
|
76
|
+
promotion_table_data.search(search_text)
|
77
|
+
end
|
78
|
+
table_view.reloadData
|
72
79
|
end
|
73
80
|
|
74
81
|
def searchBar(search_bar, selectedScopeButtonIndexDidChange: selected_scope_index)
|
@@ -92,15 +92,7 @@ module ProMotion
|
|
92
92
|
end
|
93
93
|
|
94
94
|
def searching?
|
95
|
-
self.promotion_table_data.filtered
|
96
|
-
end
|
97
|
-
|
98
|
-
def original_search_string
|
99
|
-
self.promotion_table_data.original_search_string
|
100
|
-
end
|
101
|
-
|
102
|
-
def search_string
|
103
|
-
self.promotion_table_data.search_string
|
95
|
+
self.promotion_table_data.filtered?
|
104
96
|
end
|
105
97
|
|
106
98
|
def update_table_view_data(data, args = {})
|
@@ -114,10 +106,6 @@ module ProMotion
|
|
114
106
|
else
|
115
107
|
table_view.reloadData
|
116
108
|
end
|
117
|
-
|
118
|
-
if searching? && @table_search_display_controller.respond_to?(:searchResultsTableView)
|
119
|
-
@table_search_display_controller.searchResultsTableView.reloadData
|
120
|
-
end
|
121
109
|
end
|
122
110
|
|
123
111
|
def accessory_toggled_switch(switch)
|
@@ -193,7 +181,7 @@ module ProMotion
|
|
193
181
|
|
194
182
|
# Set table_data_index if you want the right hand index column (jumplist)
|
195
183
|
def sectionIndexTitlesForTableView(_)
|
196
|
-
return if
|
184
|
+
return if searching?
|
197
185
|
return self.table_data_index if self.respond_to?(:table_data_index)
|
198
186
|
nil
|
199
187
|
end
|
data/lib/ProMotion/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ProMotion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.7.
|
4
|
+
version: 2.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamon Holmgren
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2018-04-
|
13
|
+
date: 2018-04-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: methadone
|