framework7-rails 0.7.1.1 → 0.7.4.0
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/README.md +65 -3
 - data/app/helpers/app_helper.rb +22 -0
 - data/framework7-rails.gemspec +1 -0
 - data/lib/framework7/rails/version.rb +1 -1
 - data/lib/generators/f7/install/install_generator.rb +28 -0
 - data/lib/generators/f7/install/templates/application.css +14 -0
 - data/lib/generators/f7/install/templates/application.js +17 -0
 - data/lib/generators/f7/layout/layout_generator.rb +0 -8
 - data/lib/generators/f7/layout/templates/app.js.coffee.erb +4 -3
 - data/lib/generators/f7/layout/templates/layout.html.erb +77 -10
 - data/vendor/assets/javascripts/framework7.js +374 -152
 - data/vendor/assets/javascripts/framework7.min.js +5 -5
 - data/vendor/assets/stylesheets/framework7.css +18 -9
 - data/vendor/assets/stylesheets/framework7.min.css +4 -4
 - metadata +20 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 11e8ce51feb9ce116f9e303434a92a1168702abd
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 05db8570c39cc12a1871833824361c0b5212889c
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: c4fb08aebc439ceb2addcdc2a4db89c875f1071b16de2b958635f026004ef632028a09466518374b8fbe39a3ed752422da28a7a3278ed6a737903956935fc412
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 874adf1ae3ca6a6cca48d1f4dbaae755edaa9224caa8e5816af8aa8524c9201464fb0bf13493c4d42c17447e84302cd0dfd44138229b679ce380ad9a917d099a
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,8 +1,12 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Framework7::Rails
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
      
 3 
     | 
    
         
            +
            [](http://badge.fury.io/rb/framework7-rails)
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
            Brings the excellent [Framework7](https://github.com/nolimits4web/framework7/)
         
     | 
| 
      
 6 
     | 
    
         
            +
            into the Rails 3.1+ Asset Pipeline.
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            The gem version number ``x.y.z`` is kept in sync with the version of Framework7
         
     | 
| 
      
 9 
     | 
    
         
            +
            being supported.
         
     | 
| 
       6 
10 
     | 
    
         | 
| 
       7 
11 
     | 
    
         
             
            ## Installation
         
     | 
| 
       8 
12 
     | 
    
         | 
| 
         @@ -20,6 +24,12 @@ Or, install it yourself as: 
     | 
|
| 
       20 
24 
     | 
    
         | 
| 
       21 
25 
     | 
    
         
             
            ## Usage
         
     | 
| 
       22 
26 
     | 
    
         | 
| 
      
 27 
     | 
    
         
            +
            The easiest way to set up ready for use is to use the generator
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                $ rails g f7:install
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            You can do it manually if you want to, as outlined below:
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
       23 
33 
     | 
    
         
             
            ### Development/Debugging
         
     | 
| 
       24 
34 
     | 
    
         | 
| 
       25 
35 
     | 
    
         
             
            In your application.js file, add the line:
         
     | 
| 
         @@ -40,9 +50,58 @@ In your application.css file, add the line: 
     | 
|
| 
       40 
50 
     | 
    
         | 
| 
       41 
51 
     | 
    
         
             
                *= require framework7.min
         
     | 
| 
       42 
52 
     | 
    
         | 
| 
      
 53 
     | 
    
         
            +
            ## Generators
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
            ### f7:install
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            This generator will add the necessary require statements as outlined above.
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
            ### f7:layout
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
            This sets up an application-level layout, and will generate two files:
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
                app/assets/javascripts/<app_name>.js.coffee
         
     | 
| 
      
 64 
     | 
    
         
            +
                app/views/layouts/application.html.erb
         
     | 
| 
      
 65 
     | 
    
         
            +
                
         
     | 
| 
      
 66 
     | 
    
         
            +
            The javascript file creates a wrapping class around the main `Framework7` class.
         
     | 
| 
      
 67 
     | 
    
         
            +
            This new class is named after your application, an instance is created with the
         
     | 
| 
      
 68 
     | 
    
         
            +
            lower camel-cased application.
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
            e.g If you did `rails new contacts_app` the javascript file will contain:
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
                var contactsApp;
         
     | 
| 
      
 73 
     | 
    
         
            +
                
         
     | 
| 
      
 74 
     | 
    
         
            +
                ContactsApp = function() {
         
     | 
| 
      
 75 
     | 
    
         
            +
                  ...
         
     | 
| 
      
 76 
     | 
    
         
            +
                };
         
     | 
| 
      
 77 
     | 
    
         
            +
                
         
     | 
| 
      
 78 
     | 
    
         
            +
                contactsApp = new ContactsApp();
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
            If you ever need to get back to the Framework7 application instance, this is
         
     | 
| 
      
 81 
     | 
    
         
            +
            achieved as follows:
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
                app = contactsApp.getInstance();
         
     | 
| 
      
 84 
     | 
    
         
            +
                
         
     | 
| 
      
 85 
     | 
    
         
            +
            This may be necessary for future plans, but not too sure. For now it will be
         
     | 
| 
      
 86 
     | 
    
         
            +
            left in, but you can always fallback to the Framework7 native way of doing
         
     | 
| 
      
 87 
     | 
    
         
            +
            things by using the above line and never touching that `contactsApp` variable
         
     | 
| 
      
 88 
     | 
    
         
            +
            again.
         
     | 
| 
      
 89 
     | 
    
         
            +
                
         
     | 
| 
      
 90 
     | 
    
         
            +
            ### And there's more...
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
            To find out about the rest of the generators, be sure to 
         
     | 
| 
      
 93 
     | 
    
         
            +
            [check out the wiki][wiki], which will
         
     | 
| 
      
 94 
     | 
    
         
            +
            be updated as more become available.
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
            ## Helpers
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
            None yet, but this will be listed here, and refer to the [wiki] for the
         
     | 
| 
      
 99 
     | 
    
         
            +
            documentation.
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
       43 
101 
     | 
    
         
             
            ## Future Improvements
         
     | 
| 
       44 
102 
     | 
    
         | 
| 
       45 
     | 
    
         
            -
            Currently, the gem only brings in the assets. But it is the intention to add 
     | 
| 
      
 103 
     | 
    
         
            +
            Currently, the gem only brings in the assets. But it is the intention to add
         
     | 
| 
      
 104 
     | 
    
         
            +
            layout/view generators and helpers.
         
     | 
| 
       46 
105 
     | 
    
         | 
| 
       47 
106 
     | 
    
         
             
            ## Contributing
         
     | 
| 
       48 
107 
     | 
    
         | 
| 
         @@ -51,3 +110,6 @@ Currently, the gem only brings in the assets. But it is the intention to add lay 
     | 
|
| 
       51 
110 
     | 
    
         
             
            3. Commit your changes (`git commit -am 'Add some feature'`)
         
     | 
| 
       52 
111 
     | 
    
         
             
            4. Push to the branch (`git push origin my-new-feature`)
         
     | 
| 
       53 
112 
     | 
    
         
             
            5. Create new Pull Request
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
            [wiki]: https://github.com/twss/framework7-rails/wiki "wiki"
         
     | 
| 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module AppHelper
         
     | 
| 
      
 2 
     | 
    
         
            +
              # Provides the skeleton application layout ready to be customised
         
     | 
| 
      
 3 
     | 
    
         
            +
              def f7_app(options={}, &block)
         
     | 
| 
      
 4 
     | 
    
         
            +
                output = []
         
     | 
| 
      
 5 
     | 
    
         
            +
                output << statusbar_overlay_div
         
     | 
| 
      
 6 
     | 
    
         
            +
                output << panel_overlay_div
         
     | 
| 
      
 7 
     | 
    
         
            +
                output << capture(&block)
         
     | 
| 
      
 8 
     | 
    
         
            +
                
         
     | 
| 
      
 9 
     | 
    
         
            +
                output.join("\n").html_safe
         
     | 
| 
      
 10 
     | 
    
         
            +
              end
         
     | 
| 
      
 11 
     | 
    
         
            +
              
         
     | 
| 
      
 12 
     | 
    
         
            +
              private
         
     | 
| 
      
 13 
     | 
    
         
            +
              
         
     | 
| 
      
 14 
     | 
    
         
            +
              def statusbar_overlay_div
         
     | 
| 
      
 15 
     | 
    
         
            +
                content_tag :div, '', :class => ["statusbar-overlay"]
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
              
         
     | 
| 
      
 18 
     | 
    
         
            +
              def panel_overlay_div
         
     | 
| 
      
 19 
     | 
    
         
            +
                content_tag :div, '', :class => ["panel-overlay"]
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
              
         
     | 
| 
      
 22 
     | 
    
         
            +
            end
         
     | 
    
        data/framework7-rails.gemspec
    CHANGED
    
    
| 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rails/generators'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module F7
         
     | 
| 
      
 4 
     | 
    
         
            +
              module Generators
         
     | 
| 
      
 5 
     | 
    
         
            +
                class InstallGenerator < ::Rails::Generators::Base
         
     | 
| 
      
 6 
     | 
    
         
            +
                  source_root File.expand_path('../templates', __FILE__)
         
     | 
| 
      
 7 
     | 
    
         
            +
                  desc "This generator installs Framework7 to Asset Pipeline"
         
     | 
| 
      
 8 
     | 
    
         
            +
                  
         
     | 
| 
      
 9 
     | 
    
         
            +
                  def add_assets
         
     | 
| 
      
 10 
     | 
    
         
            +
                    js_manifest = 'app/assets/javascripts/application.js'
         
     | 
| 
      
 11 
     | 
    
         
            +
                    
         
     | 
| 
      
 12 
     | 
    
         
            +
                    if File.exist?(js_manifest)
         
     | 
| 
      
 13 
     | 
    
         
            +
                      insert_into_file js_manifest, "//= require framework7\n", :before => "//= require jquery\n"
         
     | 
| 
      
 14 
     | 
    
         
            +
                    else
         
     | 
| 
      
 15 
     | 
    
         
            +
                      copy_file "application.js", js_manifest
         
     | 
| 
      
 16 
     | 
    
         
            +
                    end
         
     | 
| 
      
 17 
     | 
    
         
            +
                    
         
     | 
| 
      
 18 
     | 
    
         
            +
                    css_manifest = 'app/assets/stylesheets/application.css'
         
     | 
| 
      
 19 
     | 
    
         
            +
                    
         
     | 
| 
      
 20 
     | 
    
         
            +
                    if File.exist?(css_manifest)
         
     | 
| 
      
 21 
     | 
    
         
            +
                      insert_into_file css_manifest, " *= require framework7\n", :after => "require_self\n"
         
     | 
| 
      
 22 
     | 
    
         
            +
                    else
         
     | 
| 
      
 23 
     | 
    
         
            +
                      copy_file "application.css", css_manifest
         
     | 
| 
      
 24 
     | 
    
         
            +
                    end
         
     | 
| 
      
 25 
     | 
    
         
            +
                  end
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,14 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            /*
         
     | 
| 
      
 2 
     | 
    
         
            +
             * This is a manifest file that'll be compiled into application.css, which will include all the files
         
     | 
| 
      
 3 
     | 
    
         
            +
             * listed below.
         
     | 
| 
      
 4 
     | 
    
         
            +
             *
         
     | 
| 
      
 5 
     | 
    
         
            +
             * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
         
     | 
| 
      
 6 
     | 
    
         
            +
             * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
         
     | 
| 
      
 7 
     | 
    
         
            +
             *
         
     | 
| 
      
 8 
     | 
    
         
            +
             * You're free to add application-wide styles to this file and they'll appear at the top of the
         
     | 
| 
      
 9 
     | 
    
         
            +
             * compiled file, but it's generally better to create a new file per style scope.
         
     | 
| 
      
 10 
     | 
    
         
            +
             *
         
     | 
| 
      
 11 
     | 
    
         
            +
             *= require_self
         
     | 
| 
      
 12 
     | 
    
         
            +
             *= require framework7
         
     | 
| 
      
 13 
     | 
    
         
            +
             *= require_tree .
         
     | 
| 
      
 14 
     | 
    
         
            +
             */
         
     | 
| 
         @@ -0,0 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            // This is a manifest file that'll be compiled into application.js, which will include all the files
         
     | 
| 
      
 2 
     | 
    
         
            +
            // listed below.
         
     | 
| 
      
 3 
     | 
    
         
            +
            //
         
     | 
| 
      
 4 
     | 
    
         
            +
            // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
         
     | 
| 
      
 5 
     | 
    
         
            +
            // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
         
     | 
| 
      
 6 
     | 
    
         
            +
            //
         
     | 
| 
      
 7 
     | 
    
         
            +
            // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
         
     | 
| 
      
 8 
     | 
    
         
            +
            // compiled file.
         
     | 
| 
      
 9 
     | 
    
         
            +
            //
         
     | 
| 
      
 10 
     | 
    
         
            +
            // Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
         
     | 
| 
      
 11 
     | 
    
         
            +
            // about supported directives.
         
     | 
| 
      
 12 
     | 
    
         
            +
            //
         
     | 
| 
      
 13 
     | 
    
         
            +
            //= require framework7
         
     | 
| 
      
 14 
     | 
    
         
            +
            //= require jquery
         
     | 
| 
      
 15 
     | 
    
         
            +
            //= require jquery_ujs
         
     | 
| 
      
 16 
     | 
    
         
            +
            //= require turbolinks
         
     | 
| 
      
 17 
     | 
    
         
            +
            //= require_tree .
         
     | 
| 
         @@ -15,14 +15,6 @@ module F7 
     | 
|
| 
       15 
15 
     | 
    
         
             
                    ext = app.config.generators.options[:rails][:template_engine] || :erb
         
     | 
| 
       16 
16 
     | 
    
         
             
                    template "layout.html.#{ext}", "app/views/layouts/#{layout_name}.html.#{ext}"
         
     | 
| 
       17 
17 
     | 
    
         
             
                    template "app.js.coffee.erb", "app/assets/javascripts/#{@app_name.underscore}.js.coffee"
         
     | 
| 
       18 
     | 
    
         
            -
                    
         
     | 
| 
       19 
     | 
    
         
            -
                    insert_into_file "app/assets/javascripts/application.js", :before => %r{//= require +['"]?jquery['"]?$} do
         
     | 
| 
       20 
     | 
    
         
            -
                      "//= require 'framework7'\n"
         
     | 
| 
       21 
     | 
    
         
            -
                    end
         
     | 
| 
       22 
     | 
    
         
            -
                    
         
     | 
| 
       23 
     | 
    
         
            -
                    insert_into_file "app/assets/stylesheets/application.css", :before => "*/" do
         
     | 
| 
       24 
     | 
    
         
            -
                      " *= require 'framework7'\n"
         
     | 
| 
       25 
     | 
    
         
            -
                    end
         
     | 
| 
       26 
18 
     | 
    
         
             
                  end
         
     | 
| 
       27 
19 
     | 
    
         
             
                end
         
     | 
| 
       28 
20 
     | 
    
         
             
              end
         
     | 
| 
         @@ -6,6 +6,7 @@ ViewNameExistsException = (value) -> 
     | 
|
| 
       6 
6 
     | 
    
         
             
              return
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            <%- app_class = "#{app_name.camelize}App" -%>
         
     | 
| 
      
 9 
     | 
    
         
            +
            <%- app_var = "#{app_name.camelize(:lower)}App" -%>
         
     | 
| 
       9 
10 
     | 
    
         
             
            <%= app_class %> = ->
         
     | 
| 
       10 
11 
     | 
    
         
             
              self = @
         
     | 
| 
       11 
12 
     | 
    
         | 
| 
         @@ -15,7 +16,7 @@ ViewNameExistsException = (value) -> 
     | 
|
| 
       15 
16 
     | 
    
         
             
              _handlers = {}
         
     | 
| 
       16 
17 
     | 
    
         
             
              _pageInit = {}
         
     | 
| 
       17 
18 
     | 
    
         
             
              _views = {}
         
     | 
| 
       18 
     | 
    
         
            -
               
     | 
| 
      
 19 
     | 
    
         
            +
              window.$$ = _instance.$
         
     | 
| 
       19 
20 
     | 
    
         | 
| 
       20 
21 
     | 
    
         
             
              $$(document).on 'pageInit', (e) ->
         
     | 
| 
       21 
22 
     | 
    
         
             
                page = e.detail.page
         
     | 
| 
         @@ -59,7 +60,7 @@ ViewNameExistsException = (value) -> 
     | 
|
| 
       59 
60 
     | 
    
         
             
                self
         
     | 
| 
       60 
61 
     | 
    
         
             
              @
         
     | 
| 
       61 
62 
     | 
    
         | 
| 
       62 
     | 
    
         
            -
            window 
     | 
| 
      
 63 
     | 
    
         
            +
            window.<%= app_var %> = new <%= app_class %>()
         
     | 
| 
       63 
64 
     | 
    
         | 
| 
       64 
65 
     | 
    
         
             
            $(document).ready ->
         
     | 
| 
       65 
66 
     | 
    
         
             
              $$('.panel-left').on 'open', (e) ->
         
     | 
| 
         @@ -72,5 +73,5 @@ $(document).ready -> 
     | 
|
| 
       72 
73 
     | 
    
         
             
                $$('.statusbar-overlay').removeClass 'with-panel-left with-panel-right'
         
     | 
| 
       73 
74 
     | 
    
         
             
                return
         
     | 
| 
       74 
75 
     | 
    
         | 
| 
       75 
     | 
    
         
            -
              app 
     | 
| 
      
 76 
     | 
    
         
            +
              window.app = <%= app_var %>.getInstance().init()
         
     | 
| 
       76 
77 
     | 
    
         
             
              return
         
     | 
| 
         @@ -38,19 +38,86 @@ 
     | 
|
| 
       38 
38 
     | 
    
         
             
              </head>
         
     | 
| 
       39 
39 
     | 
    
         
             
              <body>
         
     | 
| 
       40 
40 
     | 
    
         
             
                <div class="statusbar-overlay"></div>
         
     | 
| 
      
 41 
     | 
    
         
            +
                <!-- Panels overlay-->
         
     | 
| 
       41 
42 
     | 
    
         
             
                <div class="panel-overlay"></div>
         
     | 
| 
       42 
     | 
    
         
            -
                 
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
                   
     | 
| 
       47 
     | 
    
         
            -
                 
     | 
| 
      
 43 
     | 
    
         
            +
                <!-- Left panel with reveal effect-->
         
     | 
| 
      
 44 
     | 
    
         
            +
                <div class="panel panel-left panel-reveal">
         
     | 
| 
      
 45 
     | 
    
         
            +
                  <div class="content-block">
         
     | 
| 
      
 46 
     | 
    
         
            +
                    <p>Left panel content goes here</p>
         
     | 
| 
      
 47 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 48 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 49 
     | 
    
         
            +
                <!-- Right panel with cover effect-->
         
     | 
| 
      
 50 
     | 
    
         
            +
                <div class="panel panel-right panel-cover">
         
     | 
| 
      
 51 
     | 
    
         
            +
                  <div class="content-block">
         
     | 
| 
      
 52 
     | 
    
         
            +
                    <p>Right panel content goes here</p>
         
     | 
| 
      
 53 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 54 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 55 
     | 
    
         
            +
                <!-- Views-->
         
     | 
| 
       48 
56 
     | 
    
         
             
                <div class="views">
         
     | 
| 
       49 
     | 
    
         
            -
                   
     | 
| 
      
 57 
     | 
    
         
            +
                  <!-- Your main view, should have "view-main" class-->
         
     | 
| 
      
 58 
     | 
    
         
            +
                  <div class="view view-main">
         
     | 
| 
      
 59 
     | 
    
         
            +
                    <!-- Top Navbar-->
         
     | 
| 
      
 60 
     | 
    
         
            +
                    <div class="navbar">
         
     | 
| 
      
 61 
     | 
    
         
            +
                      <div class="navbar-inner">
         
     | 
| 
      
 62 
     | 
    
         
            +
                        <!-- We have home navbar without left link-->
         
     | 
| 
      
 63 
     | 
    
         
            +
                        <div class="center sliding"><%%= content_for?(:title) ? yield(:title) : "<%= app_name.titleize %>" %></div>
         
     | 
| 
      
 64 
     | 
    
         
            +
                        <div class="right">
         
     | 
| 
      
 65 
     | 
    
         
            +
                          <!-- Right link contains only icon - additional "icon-only" class--><a href="#" class="link icon-only open-panel"><i class="icon icon-bars-blue"></i></a>
         
     | 
| 
      
 66 
     | 
    
         
            +
                        </div>
         
     | 
| 
      
 67 
     | 
    
         
            +
                      </div>
         
     | 
| 
      
 68 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 69 
     | 
    
         
            +
                    <!-- Pages, because we need fixed-through navbar and toolbar, it has additional appropriate classes-->
         
     | 
| 
      
 70 
     | 
    
         
            +
                    <div class="pages navbar-through toolbar-through">
         
     | 
| 
      
 71 
     | 
    
         
            +
                      <!-- Page, data-page contains page name-->
         
     | 
| 
      
 72 
     | 
    
         
            +
                      <div data-page="index" class="page">
         
     | 
| 
      
 73 
     | 
    
         
            +
                        <!-- Scrollable page content-->
         
     | 
| 
      
 74 
     | 
    
         
            +
                        <div class="page-content">
         
     | 
| 
      
 75 
     | 
    
         
            +
                          <div class="content-block-title">Welcome To <%%= content_for?(:title) ? yield(:title) : "<%= app_name.titleize %>" %></div>
         
     | 
| 
      
 76 
     | 
    
         
            +
                          <div class="content-block">
         
     | 
| 
      
 77 
     | 
    
         
            +
                            <div class="content-block-inner">
         
     | 
| 
      
 78 
     | 
    
         
            +
                              <p>Couple of worlds here because my app is so awesome!</p>
         
     | 
| 
      
 79 
     | 
    
         
            +
                              <p>Duis sed erat ac eros ultrices pharetra id ut tellus. Praesent rhoncus enim ornare ipsum aliquet ultricies. Pellentesque sodales erat quis elementum sagittis.</p>
         
     | 
| 
      
 80 
     | 
    
         
            +
                            </div>
         
     | 
| 
      
 81 
     | 
    
         
            +
                          </div>
         
     | 
| 
      
 82 
     | 
    
         
            +
                          <div class="content-block-title">What about simple navigation?</div>
         
     | 
| 
      
 83 
     | 
    
         
            +
                          <div class="list-block">
         
     | 
| 
      
 84 
     | 
    
         
            +
                            <ul>
         
     | 
| 
      
 85 
     | 
    
         
            +
                              <li><a href="about.html" class="item-link">
         
     | 
| 
      
 86 
     | 
    
         
            +
                                  <div class="item-content">
         
     | 
| 
      
 87 
     | 
    
         
            +
                                    <div class="item-inner">
         
     | 
| 
      
 88 
     | 
    
         
            +
                                      <div class="item-title">About</div>
         
     | 
| 
      
 89 
     | 
    
         
            +
                                    </div>
         
     | 
| 
      
 90 
     | 
    
         
            +
                                  </div></a></li>
         
     | 
| 
      
 91 
     | 
    
         
            +
                              <li><a href="services.html" class="item-link">
         
     | 
| 
      
 92 
     | 
    
         
            +
                                  <div class="item-content">
         
     | 
| 
      
 93 
     | 
    
         
            +
                                    <div class="item-inner">
         
     | 
| 
      
 94 
     | 
    
         
            +
                                      <div class="item-title">Services</div>
         
     | 
| 
      
 95 
     | 
    
         
            +
                                    </div>
         
     | 
| 
      
 96 
     | 
    
         
            +
                                  </div></a></li>
         
     | 
| 
      
 97 
     | 
    
         
            +
                              <li><a href="form.html" class="item-link">
         
     | 
| 
      
 98 
     | 
    
         
            +
                                  <div class="item-content">
         
     | 
| 
      
 99 
     | 
    
         
            +
                                    <div class="item-inner">
         
     | 
| 
      
 100 
     | 
    
         
            +
                                      <div class="item-title">Form</div>
         
     | 
| 
      
 101 
     | 
    
         
            +
                                    </div>
         
     | 
| 
      
 102 
     | 
    
         
            +
                                  </div></a></li>
         
     | 
| 
      
 103 
     | 
    
         
            +
                            </ul>
         
     | 
| 
      
 104 
     | 
    
         
            +
                          </div>
         
     | 
| 
      
 105 
     | 
    
         
            +
                          <div class="content-block-title">Side panels</div>
         
     | 
| 
      
 106 
     | 
    
         
            +
                          <div class="content-block">
         
     | 
| 
      
 107 
     | 
    
         
            +
                            <div class="row">
         
     | 
| 
      
 108 
     | 
    
         
            +
                              <div class="col-50"><a href="#" data-panel="left" class="button open-panel">Left Panel</a></div>
         
     | 
| 
      
 109 
     | 
    
         
            +
                              <div class="col-50"><a href="#" data-panel="right" class="button open-panel">Right Panel</a></div>
         
     | 
| 
      
 110 
     | 
    
         
            +
                            </div>
         
     | 
| 
      
 111 
     | 
    
         
            +
                          </div>
         
     | 
| 
      
 112 
     | 
    
         
            +
                        </div>
         
     | 
| 
      
 113 
     | 
    
         
            +
                      </div>
         
     | 
| 
      
 114 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 115 
     | 
    
         
            +
                    <!-- Bottom Toolbar-->
         
     | 
| 
      
 116 
     | 
    
         
            +
                    <div class="toolbar">
         
     | 
| 
      
 117 
     | 
    
         
            +
                      <div class="toolbar-inner"><a href="#" class="link">Link 1</a><a href="#" class="link">Link 2</a></div>
         
     | 
| 
      
 118 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 119 
     | 
    
         
            +
                  </div>
         
     | 
| 
       50 
120 
     | 
    
         
             
                </div>
         
     | 
| 
       51 
     | 
    
         
            -
                <%%- if content_for?(:popovers) -%>
         
     | 
| 
       52 
     | 
    
         
            -
                  <%%= yield(:popovers) %>
         
     | 
| 
       53 
     | 
    
         
            -
                <%%- end -%>
         
     | 
| 
       54 
121 
     | 
    
         
             
                <%%= javascript_include_tag "application" %>
         
     | 
| 
       55 
122 
     | 
    
         
             
              </body>
         
     | 
| 
       56 
123 
     | 
    
         
             
            </html>
         
     | 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            /*
         
     | 
| 
       2 
     | 
    
         
            -
             * Framework7 0.7. 
     | 
| 
       3 
     | 
    
         
            -
             * Full Featured HTML Framework For Building  
     | 
| 
      
 2 
     | 
    
         
            +
             * Framework7 0.7.4
         
     | 
| 
      
 3 
     | 
    
         
            +
             * Full Featured HTML Framework For Building iOS 7 Apps
         
     | 
| 
       4 
4 
     | 
    
         
             
             *
         
     | 
| 
       5 
5 
     | 
    
         
             
             * http://www.idangero.us/framework7
         
     | 
| 
       6 
6 
     | 
    
         
             
             *
         
     | 
| 
         @@ -10,7 +10,7 @@ 
     | 
|
| 
       10 
10 
     | 
    
         
             
             *
         
     | 
| 
       11 
11 
     | 
    
         
             
             * Licensed under MIT
         
     | 
| 
       12 
12 
     | 
    
         
             
             *
         
     | 
| 
       13 
     | 
    
         
            -
             * Released on: April  
     | 
| 
      
 13 
     | 
    
         
            +
             * Released on: April 13, 2014
         
     | 
| 
       14 
14 
     | 
    
         
             
            */
         
     | 
| 
       15 
15 
     | 
    
         
             
            (function () {
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
         @@ -40,6 +40,8 @@ 
     | 
|
| 
       40 
40 
     | 
    
         
             
                        preloadPreviousPage: true,
         
     | 
| 
       41 
41 
     | 
    
         
             
                        // Fast clicks
         
     | 
| 
       42 
42 
     | 
    
         
             
                        fastClicks : true,
         
     | 
| 
      
 43 
     | 
    
         
            +
                        // 
         
     | 
| 
      
 44 
     | 
    
         
            +
                        animateNavBackIcon: false,
         
     | 
| 
       43 
45 
     | 
    
         
             
                        // Swipe Back
         
     | 
| 
       44 
46 
     | 
    
         
             
                        swipeBackPage: true,
         
     | 
| 
       45 
47 
     | 
    
         
             
                        swipeBackPageThreshold: 0,
         
     | 
| 
         @@ -52,6 +54,8 @@ 
     | 
|
| 
       52 
54 
     | 
    
         
             
                        // Swipeout
         
     | 
| 
       53 
55 
     | 
    
         
             
                        swipeout: true,
         
     | 
| 
       54 
56 
     | 
    
         
             
                        swipeoutNoFollow: false,
         
     | 
| 
      
 57 
     | 
    
         
            +
                        // Smart Select Back link template
         
     | 
| 
      
 58 
     | 
    
         
            +
                        smartSelectBackTemplate: '<div class="left"><a href="#" class="back link"><i class="icon icon-back-blue"></i><span>Back</span></a></div>',
         
     | 
| 
       55 
59 
     | 
    
         
             
                        // Panels
         
     | 
| 
       56 
60 
     | 
    
         
             
                        panelsCloseByOutside: true,
         
     | 
| 
       57 
61 
     | 
    
         
             
                        panelsVisibleZIndex: 6000,
         
     | 
| 
         @@ -96,23 +100,23 @@ 
     | 
|
| 
       96 
100 
     | 
    
         
             
                    ************   Views   ************
         
     | 
| 
       97 
101 
     | 
    
         
             
                    ======================================================*/
         
     | 
| 
       98 
102 
     | 
    
         
             
                    app.views = [];
         
     | 
| 
       99 
     | 
    
         
            -
                    app.addView = function ( 
     | 
| 
       100 
     | 
    
         
            -
                        if (! 
     | 
| 
       101 
     | 
    
         
            -
                        var $container = $( 
     | 
| 
      
 103 
     | 
    
         
            +
                    app.addView = function (selector, params) {
         
     | 
| 
      
 104 
     | 
    
         
            +
                        if (!selector) return;
         
     | 
| 
      
 105 
     | 
    
         
            +
                        var $container = $(selector);
         
     | 
| 
       102 
106 
     | 
    
         
             
                        if ($container.length === 0) return;
         
     | 
| 
       103 
107 
     | 
    
         | 
| 
       104 
108 
     | 
    
         
             
                        var container = $container[0];
         
     | 
| 
       105 
     | 
    
         
            -
                        if (typeof  
     | 
| 
       106 
     | 
    
         
            -
             
     | 
| 
      
 109 
     | 
    
         
            +
                        if (typeof params === 'undefined') params = {};
         
     | 
| 
      
 110 
     | 
    
         
            +
                    
         
     | 
| 
       107 
111 
     | 
    
         
             
                        var view = {
         
     | 
| 
       108 
112 
     | 
    
         
             
                            container: container,
         
     | 
| 
       109 
     | 
    
         
            -
                            selector:  
     | 
| 
       110 
     | 
    
         
            -
                            params:  
     | 
| 
      
 113 
     | 
    
         
            +
                            selector: selector,
         
     | 
| 
      
 114 
     | 
    
         
            +
                            params: params || {},
         
     | 
| 
       111 
115 
     | 
    
         
             
                            history: [],
         
     | 
| 
       112 
116 
     | 
    
         
             
                            contentCache: {},
         
     | 
| 
       113 
     | 
    
         
            -
                            url: container.getAttribute('data-url') ||  
     | 
| 
      
 117 
     | 
    
         
            +
                            url: container.getAttribute('data-url') || document.location.href,
         
     | 
| 
       114 
118 
     | 
    
         
             
                            pagesContainer: $('.pages', container)[0],
         
     | 
| 
       115 
     | 
    
         
            -
                            main: $ 
     | 
| 
      
 119 
     | 
    
         
            +
                            main: $container.hasClass('view-main'),
         
     | 
| 
       116 
120 
     | 
    
         
             
                            loadContent: function (content) {
         
     | 
| 
       117 
121 
     | 
    
         
             
                                app.loadContent(view, content);
         
     | 
| 
       118 
122 
     | 
    
         
             
                            },
         
     | 
| 
         @@ -136,13 +140,10 @@ 
     | 
|
| 
       136 
140 
     | 
    
         
             
                            }
         
     | 
| 
       137 
141 
     | 
    
         
             
                        };
         
     | 
| 
       138 
142 
     | 
    
         
             
                        // Store to history main view's url
         
     | 
| 
       139 
     | 
    
         
            -
                        if (view. 
     | 
| 
       140 
     | 
    
         
            -
                            view.url = startUrl || document.location.href;
         
     | 
| 
       141 
     | 
    
         
            -
                            view.history.push(view.url);
         
     | 
| 
       142 
     | 
    
         
            -
                        }
         
     | 
| 
       143 
     | 
    
         
            -
                        else if (startUrl) {
         
     | 
| 
      
 143 
     | 
    
         
            +
                        if (view.url) {
         
     | 
| 
       144 
144 
     | 
    
         
             
                            view.history.push(view.url);
         
     | 
| 
       145 
145 
     | 
    
         
             
                        }
         
     | 
| 
      
 146 
     | 
    
         
            +
                    
         
     | 
| 
       146 
147 
     | 
    
         
             
                        // Store View in element for easy access
         
     | 
| 
       147 
148 
     | 
    
         
             
                        container.f7View = view;
         
     | 
| 
       148 
149 
     | 
    
         | 
| 
         @@ -175,6 +176,8 @@ 
     | 
|
| 
       175 
176 
     | 
    
         
             
                            previousNavbar,
         
     | 
| 
       176 
177 
     | 
    
         
             
                            activeNavElements,
         
     | 
| 
       177 
178 
     | 
    
         
             
                            previousNavElements,
         
     | 
| 
      
 179 
     | 
    
         
            +
                            activeNavBackIcon,
         
     | 
| 
      
 180 
     | 
    
         
            +
                            previousNavBackIcon,
         
     | 
| 
       178 
181 
     | 
    
         
             
                            i,
         
     | 
| 
       179 
182 
     | 
    
         
             
                            dynamicNavbar,
         
     | 
| 
       180 
183 
     | 
    
         
             
                            el;
         
     | 
| 
         @@ -219,6 +222,10 @@ 
     | 
|
| 
       219 
222 
     | 
    
         
             
                                    previousNavbar = viewContainer.find('.navbar-on-left:not(.cached)');
         
     | 
| 
       220 
223 
     | 
    
         
             
                                    activeNavElements = activeNavbar.find('.left, .center, .right');
         
     | 
| 
       221 
224 
     | 
    
         
             
                                    previousNavElements = previousNavbar.find('.left, .center, .right');
         
     | 
| 
      
 225 
     | 
    
         
            +
                                    if (app.params.animateNavBackIcon) {
         
     | 
| 
      
 226 
     | 
    
         
            +
                                        activeNavBackIcon = activeNavbar.find('.left.sliding .back .icon');
         
     | 
| 
      
 227 
     | 
    
         
            +
                                        previousNavBackIcon = previousNavbar.find('.left.sliding .back .icon');
         
     | 
| 
      
 228 
     | 
    
         
            +
                                    }
         
     | 
| 
       222 
229 
     | 
    
         
             
                                }
         
     | 
| 
       223 
230 
     | 
    
         
             
                            }
         
     | 
| 
       224 
231 
     | 
    
         
             
                            isMoved = true;
         
     | 
| 
         @@ -247,6 +254,11 @@ 
     | 
|
| 
       247 
254 
     | 
    
         
             
                                        var activeNavTranslate = percentage * el[0].f7NavbarRightOffset;
         
     | 
| 
       248 
255 
     | 
    
         
             
                                        if (app.device.pixelRatio === 1) activeNavTranslate = Math.round(activeNavTranslate);
         
     | 
| 
       249 
256 
     | 
    
         
             
                                        el.transform('translate3d(' + activeNavTranslate + 'px,0,0)');
         
     | 
| 
      
 257 
     | 
    
         
            +
                                        if (app.params.animateNavBackIcon) {
         
     | 
| 
      
 258 
     | 
    
         
            +
                                            if (el[0].className.indexOf('left') >= 0 && activeNavBackIcon.length > 0) {
         
     | 
| 
      
 259 
     | 
    
         
            +
                                                activeNavBackIcon.transform('translate3d(' + -activeNavTranslate + 'px,0,0)');
         
     | 
| 
      
 260 
     | 
    
         
            +
                                            }
         
     | 
| 
      
 261 
     | 
    
         
            +
                                        }
         
     | 
| 
       250 
262 
     | 
    
         
             
                                    }
         
     | 
| 
       251 
263 
     | 
    
         
             
                                }
         
     | 
| 
       252 
264 
     | 
    
         
             
                                for (i = 0; i < previousNavElements.length; i++) {
         
     | 
| 
         @@ -256,6 +268,11 @@ 
     | 
|
| 
       256 
268 
     | 
    
         
             
                                        var previousNavTranslate = el[0].f7NavbarLeftOffset * (1 - percentage);
         
     | 
| 
       257 
269 
     | 
    
         
             
                                        if (app.device.pixelRatio === 1) previousNavTranslate = Math.round(previousNavTranslate);
         
     | 
| 
       258 
270 
     | 
    
         
             
                                        el.transform('translate3d(' + previousNavTranslate + 'px,0,0)');
         
     | 
| 
      
 271 
     | 
    
         
            +
                                        if (app.params.animateNavBackIcon) {
         
     | 
| 
      
 272 
     | 
    
         
            +
                                            if (el[0].className.indexOf('left') >= 0 && previousNavBackIcon.length > 0) {
         
     | 
| 
      
 273 
     | 
    
         
            +
                                                previousNavBackIcon.transform('translate3d(' + -previousNavTranslate + 'px,0,0)');
         
     | 
| 
      
 274 
     | 
    
         
            +
                                            }
         
     | 
| 
      
 275 
     | 
    
         
            +
                                        }
         
     | 
| 
       259 
276 
     | 
    
         
             
                                    }
         
     | 
| 
       260 
277 
     | 
    
         
             
                                }
         
     | 
| 
       261 
278 
     | 
    
         
             
                            }
         
     | 
| 
         @@ -269,6 +286,16 @@ 
     | 
|
| 
       269 
286 
     | 
    
         
             
                            }
         
     | 
| 
       270 
287 
     | 
    
         
             
                            isTouched = false;
         
     | 
| 
       271 
288 
     | 
    
         
             
                            isMoved = false;
         
     | 
| 
      
 289 
     | 
    
         
            +
                            if (touchesDiff === 0) {
         
     | 
| 
      
 290 
     | 
    
         
            +
                                $([activePage[0], previousPage[0]]).transform('').css({opacity: '', boxShadow: ''});
         
     | 
| 
      
 291 
     | 
    
         
            +
                                if (dynamicNavbar) {
         
     | 
| 
      
 292 
     | 
    
         
            +
                                    activeNavElements.transform('').css({opacity: ''});
         
     | 
| 
      
 293 
     | 
    
         
            +
                                    previousNavElements.transform('').css({opacity: ''});
         
     | 
| 
      
 294 
     | 
    
         
            +
                                    if (activeNavBackIcon && activeNavBackIcon.length > 0) activeNavBackIcon.transform('');
         
     | 
| 
      
 295 
     | 
    
         
            +
                                    if (previousNavBackIcon && activeNavBackIcon.length > 0) previousNavBackIcon.transform('');
         
     | 
| 
      
 296 
     | 
    
         
            +
                                }
         
     | 
| 
      
 297 
     | 
    
         
            +
                                return;
         
     | 
| 
      
 298 
     | 
    
         
            +
                            }
         
     | 
| 
       272 
299 
     | 
    
         
             
                            var timeDiff = (new Date()).getTime() - touchStartTime;
         
     | 
| 
       273 
300 
     | 
    
         
             
                            var pageChanged = false;
         
     | 
| 
       274 
301 
     | 
    
         
             
                            // Swipe back to previous page
         
     | 
| 
         @@ -291,12 +318,25 @@ 
     | 
|
| 
       291 
318 
     | 
    
         
             
                                activeNavElements.css({opacity: ''})
         
     | 
| 
       292 
319 
     | 
    
         
             
                                .each(function () {
         
     | 
| 
       293 
320 
     | 
    
         
             
                                    var translate = pageChanged ? this.f7NavbarRightOffset : 0;
         
     | 
| 
       294 
     | 
    
         
            -
                                    $(this) 
     | 
| 
      
 321 
     | 
    
         
            +
                                    var sliding = $(this);
         
     | 
| 
      
 322 
     | 
    
         
            +
                                    sliding.transform('translate3d(' + translate + 'px,0,0)');
         
     | 
| 
      
 323 
     | 
    
         
            +
                                    if (app.params.animateNavBackIcon) {
         
     | 
| 
      
 324 
     | 
    
         
            +
                                        if (sliding.hasClass('left') && activeNavBackIcon.length > 0) {
         
     | 
| 
      
 325 
     | 
    
         
            +
                                            activeNavBackIcon.addClass('page-transitioning').transform('translate3d(' + -translate + 'px,0,0)');
         
     | 
| 
      
 326 
     | 
    
         
            +
                                        }
         
     | 
| 
      
 327 
     | 
    
         
            +
                                    }
         
     | 
| 
      
 328 
     | 
    
         
            +
                    
         
     | 
| 
       295 
329 
     | 
    
         
             
                                }).addClass('page-transitioning');
         
     | 
| 
       296 
330 
     | 
    
         | 
| 
       297 
331 
     | 
    
         
             
                                previousNavElements.transform('').css({opacity: ''}).each(function () {
         
     | 
| 
       298 
332 
     | 
    
         
             
                                    var translate = pageChanged ? 0 : this.f7NavbarLeftOffset;
         
     | 
| 
       299 
     | 
    
         
            -
                                    $(this) 
     | 
| 
      
 333 
     | 
    
         
            +
                                    var sliding = $(this);
         
     | 
| 
      
 334 
     | 
    
         
            +
                                    sliding.transform('translate3d(' + translate + 'px,0,0)');
         
     | 
| 
      
 335 
     | 
    
         
            +
                                    if (app.params.animateNavBackIcon) {
         
     | 
| 
      
 336 
     | 
    
         
            +
                                        if (sliding.hasClass('left') && previousNavBackIcon.length > 0) {
         
     | 
| 
      
 337 
     | 
    
         
            +
                                            previousNavBackIcon.addClass('page-transitioning').transform('translate3d(' + -translate + 'px,0,0)');
         
     | 
| 
      
 338 
     | 
    
         
            +
                                        }
         
     | 
| 
      
 339 
     | 
    
         
            +
                                    }
         
     | 
| 
       300 
340 
     | 
    
         
             
                                }).addClass('page-transitioning');
         
     | 
| 
       301 
341 
     | 
    
         
             
                            }
         
     | 
| 
       302 
342 
     | 
    
         
             
                            allowViewTouchMove = false;
         
     | 
| 
         @@ -314,10 +354,10 @@ 
     | 
|
| 
       314 
354 
     | 
    
         
             
                            activePage.transitionEnd(function () {
         
     | 
| 
       315 
355 
     | 
    
         
             
                                $([activePage[0], previousPage[0]]).removeClass('page-transitioning');
         
     | 
| 
       316 
356 
     | 
    
         
             
                                if (dynamicNavbar) {
         
     | 
| 
       317 
     | 
    
         
            -
                                    activeNavElements.removeClass('page-transitioning');
         
     | 
| 
       318 
     | 
    
         
            -
                                     
     | 
| 
       319 
     | 
    
         
            -
                                     
     | 
| 
       320 
     | 
    
         
            -
                                     
     | 
| 
      
 357 
     | 
    
         
            +
                                    activeNavElements.removeClass('page-transitioning').transform('').css({opacity: ''});
         
     | 
| 
      
 358 
     | 
    
         
            +
                                    previousNavElements.removeClass('page-transitioning').transform('').css({opacity: ''});
         
     | 
| 
      
 359 
     | 
    
         
            +
                                    if (activeNavBackIcon && activeNavBackIcon.length > 0) activeNavBackIcon.removeClass('page-transitioning').transform('');
         
     | 
| 
      
 360 
     | 
    
         
            +
                                    if (previousNavBackIcon && previousNavBackIcon.length > 0) previousNavBackIcon.removeClass('page-transitioning').transform('');
         
     | 
| 
       321 
361 
     | 
    
         
             
                                }
         
     | 
| 
       322 
362 
     | 
    
         
             
                                allowViewTouchMove = true;
         
     | 
| 
       323 
363 
     | 
    
         
             
                                app.allowPageChange = true;
         
     | 
| 
         @@ -496,22 +536,10 @@ 
     | 
|
| 
       496 
536 
     | 
    
         
             
                            from: position
         
     | 
| 
       497 
537 
     | 
    
         
             
                        };
         
     | 
| 
       498 
538 
     | 
    
         
             
                        // Before Init Callback
         
     | 
| 
       499 
     | 
    
         
            -
                         
     | 
| 
       500 
     | 
    
         
            -
                            app.params.onPageBeforeInit(pageData);
         
     | 
| 
       501 
     | 
    
         
            -
                        }
         
     | 
| 
       502 
     | 
    
         
            -
                        if (view && view.params.onPageBeforeInit) {
         
     | 
| 
       503 
     | 
    
         
            -
                            view.params.onPageBeforeInit(pageData);
         
     | 
| 
       504 
     | 
    
         
            -
                        }
         
     | 
| 
       505 
     | 
    
         
            -
                        $(document).trigger('pageBeforeInit', {page: pageData});
         
     | 
| 
      
 539 
     | 
    
         
            +
                        $(pageData.container).trigger('pageBeforeInit', {page: pageData});
         
     | 
| 
       506 
540 
     | 
    
         
             
                        app.initPage(pageContainer);
         
     | 
| 
       507 
541 
     | 
    
         
             
                        // Init Callback
         
     | 
| 
       508 
     | 
    
         
            -
                         
     | 
| 
       509 
     | 
    
         
            -
                            app.params.onPageInit(pageData);
         
     | 
| 
       510 
     | 
    
         
            -
                        }
         
     | 
| 
       511 
     | 
    
         
            -
                        if (view && view.params.onPageInit) {
         
     | 
| 
       512 
     | 
    
         
            -
                            view.params.onPageInit(pageData);
         
     | 
| 
       513 
     | 
    
         
            -
                        }
         
     | 
| 
       514 
     | 
    
         
            -
                        $(document).trigger('pageInit', {page: pageData});
         
     | 
| 
      
 542 
     | 
    
         
            +
                        $(pageData.container).trigger('pageInit', {page: pageData});
         
     | 
| 
       515 
543 
     | 
    
         
             
                    };
         
     | 
| 
       516 
544 
     | 
    
         
             
                    app.pageAnimCallbacks = function (callback, view, params) {
         
     | 
| 
       517 
545 
     | 
    
         
             
                        // Page Data
         
     | 
| 
         @@ -527,13 +555,7 @@ 
     | 
|
| 
       527 
555 
     | 
    
         
             
                            newPage = params.newPage;
         
     | 
| 
       528 
556 
     | 
    
         | 
| 
       529 
557 
     | 
    
         
             
                        if (callback === 'after') {
         
     | 
| 
       530 
     | 
    
         
            -
                             
     | 
| 
       531 
     | 
    
         
            -
                                app.params.onPageAfterAnimation(pageData);
         
     | 
| 
       532 
     | 
    
         
            -
                            }
         
     | 
| 
       533 
     | 
    
         
            -
                            if (view.params.onPageAfterAnimation) {
         
     | 
| 
       534 
     | 
    
         
            -
                                view.params.onPageAfterAnimation(pageData);
         
     | 
| 
       535 
     | 
    
         
            -
                            }
         
     | 
| 
       536 
     | 
    
         
            -
                            $(document).trigger('pageAfterAnimation', {page: pageData});
         
     | 
| 
      
 558 
     | 
    
         
            +
                            $(pageData.container).trigger('pageAfterAnimation', {page: pageData});
         
     | 
| 
       537 
559 
     | 
    
         | 
| 
       538 
560 
     | 
    
         
             
                        }
         
     | 
| 
       539 
561 
     | 
    
         
             
                        if (callback === 'before') {
         
     | 
| 
         @@ -555,45 +577,133 @@ 
     | 
|
| 
       555 
577 
     | 
    
         
             
                                view.showToolbar();
         
     | 
| 
       556 
578 
     | 
    
         
             
                            }
         
     | 
| 
       557 
579 
     | 
    
         
             
                            // Callbacks
         
     | 
| 
       558 
     | 
    
         
            -
                             
     | 
| 
       559 
     | 
    
         
            -
                                app.params.onPageBeforeAnimation(pageData);
         
     | 
| 
       560 
     | 
    
         
            -
                            }
         
     | 
| 
       561 
     | 
    
         
            -
                            if (view.params.onPageBeforeAnimation) {
         
     | 
| 
       562 
     | 
    
         
            -
                                view.params.onPageBeforeAnimation(pageData);
         
     | 
| 
       563 
     | 
    
         
            -
                            }
         
     | 
| 
       564 
     | 
    
         
            -
                            $(document).trigger('pageBeforeAnimation', {page: pageData});
         
     | 
| 
      
 580 
     | 
    
         
            +
                            $(pageData.container).trigger('pageBeforeAnimation', {page: pageData});
         
     | 
| 
       565 
581 
     | 
    
         
             
                        }
         
     | 
| 
       566 
582 
     | 
    
         
             
                    };
         
     | 
| 
      
 583 
     | 
    
         
            +
                    
         
     | 
| 
       567 
584 
     | 
    
         
             
                    // Init Page Events and Manipulations
         
     | 
| 
       568 
585 
     | 
    
         
             
                    app.initPage = function (pageContainer) {
         
     | 
| 
       569 
586 
     | 
    
         
             
                        // Size navbars on page load
         
     | 
| 
       570 
587 
     | 
    
         
             
                        if (app.sizeNavbars) app.sizeNavbars($(pageContainer).parents('.view')[0]);
         
     | 
| 
       571 
588 
     | 
    
         
             
                        // Init messages
         
     | 
| 
       572 
589 
     | 
    
         
             
                        if (app.initMessages) app.initMessages(pageContainer);
         
     | 
| 
      
 590 
     | 
    
         
            +
                        // Init smart select
         
     | 
| 
      
 591 
     | 
    
         
            +
                        if (app.initSmartSelects) app.initSmartSelects(pageContainer);
         
     | 
| 
       573 
592 
     | 
    
         
             
                    };
         
     | 
| 
      
 593 
     | 
    
         
            +
                    
         
     | 
| 
       574 
594 
     | 
    
         
             
                    // Load Page
         
     | 
| 
       575 
595 
     | 
    
         
             
                    app.allowPageChange = true;
         
     | 
| 
       576 
596 
     | 
    
         
             
                    app._tempDomElement = document.createElement('div');
         
     | 
| 
       577 
597 
     | 
    
         | 
| 
      
 598 
     | 
    
         
            +
                    // Search required element in parsed content in related view
         
     | 
| 
      
 599 
     | 
    
         
            +
                    function _findElement(selector, container, view) {
         
     | 
| 
      
 600 
     | 
    
         
            +
                        container = $(container);
         
     | 
| 
      
 601 
     | 
    
         
            +
                        var found = container.find(selector);
         
     | 
| 
      
 602 
     | 
    
         
            +
                        if (found.length > 1) {
         
     | 
| 
      
 603 
     | 
    
         
            +
                            if (typeof view.selector === 'string') {
         
     | 
| 
      
 604 
     | 
    
         
            +
                                // Search in related view
         
     | 
| 
      
 605 
     | 
    
         
            +
                                found = container.find(view.selector + ' ' + selector);
         
     | 
| 
      
 606 
     | 
    
         
            +
                            }
         
     | 
| 
      
 607 
     | 
    
         
            +
                            if (found.length > 1) {
         
     | 
| 
      
 608 
     | 
    
         
            +
                                // Search in main view
         
     | 
| 
      
 609 
     | 
    
         
            +
                                found = container.find('.view-main ' + selector);
         
     | 
| 
      
 610 
     | 
    
         
            +
                            }
         
     | 
| 
      
 611 
     | 
    
         
            +
                        }
         
     | 
| 
      
 612 
     | 
    
         
            +
                        if (found.length === 1) return found;
         
     | 
| 
      
 613 
     | 
    
         
            +
                        else {
         
     | 
| 
      
 614 
     | 
    
         
            +
                            return undefined;
         
     | 
| 
      
 615 
     | 
    
         
            +
                        }
         
     | 
| 
      
 616 
     | 
    
         
            +
                    }
         
     | 
| 
      
 617 
     | 
    
         
            +
                    
         
     | 
| 
      
 618 
     | 
    
         
            +
                    // Set pages classess for animation
         
     | 
| 
      
 619 
     | 
    
         
            +
                    function _animatePages(leftPage, rightPage, direction, view) {
         
     | 
| 
      
 620 
     | 
    
         
            +
                        // Loading new page
         
     | 
| 
      
 621 
     | 
    
         
            +
                        if (direction === 'to-left') {
         
     | 
| 
      
 622 
     | 
    
         
            +
                            leftPage.removeClass('page-on-center').addClass('page-from-center-to-left');
         
     | 
| 
      
 623 
     | 
    
         
            +
                            rightPage.addClass('page-from-right-to-center');
         
     | 
| 
      
 624 
     | 
    
         
            +
                        }
         
     | 
| 
      
 625 
     | 
    
         
            +
                        // Go back
         
     | 
| 
      
 626 
     | 
    
         
            +
                        if (direction === 'to-right') {
         
     | 
| 
      
 627 
     | 
    
         
            +
                            leftPage.removeClass('page-on-left').addClass('page-from-left-to-center');
         
     | 
| 
      
 628 
     | 
    
         
            +
                            rightPage.removeClass('page-on-center').addClass('page-from-center-to-right');
         
     | 
| 
      
 629 
     | 
    
         
            +
                        }
         
     | 
| 
      
 630 
     | 
    
         
            +
                    }
         
     | 
| 
      
 631 
     | 
    
         
            +
                    
         
     | 
| 
      
 632 
     | 
    
         
            +
                    // Set navbars classess for animation
         
     | 
| 
      
 633 
     | 
    
         
            +
                    function _animateNavbars(leftNavbarInner, rightNavbarInner, direction, view) {
         
     | 
| 
      
 634 
     | 
    
         
            +
                        // Loading new page
         
     | 
| 
      
 635 
     | 
    
         
            +
                        if (direction === 'to-left') {
         
     | 
| 
      
 636 
     | 
    
         
            +
                            rightNavbarInner.removeClass('navbar-on-right').addClass('navbar-from-right-to-center');
         
     | 
| 
      
 637 
     | 
    
         
            +
                            rightNavbarInner.find('.sliding').each(function () {
         
     | 
| 
      
 638 
     | 
    
         
            +
                                var sliding = $(this);
         
     | 
| 
      
 639 
     | 
    
         
            +
                                sliding.transform('translate3d(0px,0,0)');
         
     | 
| 
      
 640 
     | 
    
         
            +
                                if (app.params.animateNavBackIcon) {
         
     | 
| 
      
 641 
     | 
    
         
            +
                                    if (sliding.hasClass('left') && sliding.find('.back .icon').length > 0) {
         
     | 
| 
      
 642 
     | 
    
         
            +
                                        sliding.find('.back .icon').transform('translate3d(0px,0,0)');
         
     | 
| 
      
 643 
     | 
    
         
            +
                                    }
         
     | 
| 
      
 644 
     | 
    
         
            +
                                }
         
     | 
| 
      
 645 
     | 
    
         
            +
                            });
         
     | 
| 
      
 646 
     | 
    
         
            +
                    
         
     | 
| 
      
 647 
     | 
    
         
            +
                            leftNavbarInner.removeClass('navbar-on-center').addClass('navbar-from-center-to-left');
         
     | 
| 
      
 648 
     | 
    
         
            +
                            leftNavbarInner.find('.sliding').each(function () {
         
     | 
| 
      
 649 
     | 
    
         
            +
                                var sliding = $(this);
         
     | 
| 
      
 650 
     | 
    
         
            +
                                if (app.params.animateNavBackIcon) {
         
     | 
| 
      
 651 
     | 
    
         
            +
                                    if (sliding.hasClass('center') && rightNavbarInner.find('.sliding.left .back .icon').length > 0) {
         
     | 
| 
      
 652 
     | 
    
         
            +
                                        this.f7NavbarLeftOffset += rightNavbarInner.find('.sliding.left .back span')[0].offsetLeft;
         
     | 
| 
      
 653 
     | 
    
         
            +
                                    }
         
     | 
| 
      
 654 
     | 
    
         
            +
                                    if (sliding.hasClass('left') && sliding.find('.back .icon').length > 0) {
         
     | 
| 
      
 655 
     | 
    
         
            +
                                        sliding.find('.back .icon').transform('translate3d(' + (-this.f7NavbarLeftOffset) + 'px,0,0)');
         
     | 
| 
      
 656 
     | 
    
         
            +
                                    }
         
     | 
| 
      
 657 
     | 
    
         
            +
                                }
         
     | 
| 
      
 658 
     | 
    
         
            +
                                sliding.transform('translate3d(' + (this.f7NavbarLeftOffset) + 'px,0,0)');
         
     | 
| 
      
 659 
     | 
    
         
            +
                            });
         
     | 
| 
      
 660 
     | 
    
         
            +
                        }
         
     | 
| 
      
 661 
     | 
    
         
            +
                        // Go back
         
     | 
| 
      
 662 
     | 
    
         
            +
                        if (direction === 'to-right') {
         
     | 
| 
      
 663 
     | 
    
         
            +
                            leftNavbarInner.removeClass('navbar-on-left').addClass('navbar-from-left-to-center');
         
     | 
| 
      
 664 
     | 
    
         
            +
                            leftNavbarInner.find('.sliding').each(function () {
         
     | 
| 
      
 665 
     | 
    
         
            +
                                var sliding = $(this);
         
     | 
| 
      
 666 
     | 
    
         
            +
                                sliding.transform('translate3d(0px,0,0)');
         
     | 
| 
      
 667 
     | 
    
         
            +
                                if (app.params.animateNavBackIcon) {
         
     | 
| 
      
 668 
     | 
    
         
            +
                                    if (sliding.hasClass('left') && sliding.find('.back .icon').length > 0) {
         
     | 
| 
      
 669 
     | 
    
         
            +
                                        sliding.find('.back .icon').transform('translate3d(0px,0,0)');
         
     | 
| 
      
 670 
     | 
    
         
            +
                                    }
         
     | 
| 
      
 671 
     | 
    
         
            +
                                }
         
     | 
| 
      
 672 
     | 
    
         
            +
                            });
         
     | 
| 
      
 673 
     | 
    
         
            +
                    
         
     | 
| 
      
 674 
     | 
    
         
            +
                            rightNavbarInner.removeClass('navbar-on-center').addClass('navbar-from-center-to-right');
         
     | 
| 
      
 675 
     | 
    
         
            +
                            rightNavbarInner.find('.sliding').each(function () {
         
     | 
| 
      
 676 
     | 
    
         
            +
                                var sliding = $(this);
         
     | 
| 
      
 677 
     | 
    
         
            +
                                if (app.params.animateNavBackIcon) {
         
     | 
| 
      
 678 
     | 
    
         
            +
                                    if (sliding.hasClass('left') && sliding.find('.back .icon').length > 0) {
         
     | 
| 
      
 679 
     | 
    
         
            +
                                        sliding.find('.back .icon').transform('translate3d(' + (-this.f7NavbarRightOffset) + 'px,0,0)');
         
     | 
| 
      
 680 
     | 
    
         
            +
                                    }
         
     | 
| 
      
 681 
     | 
    
         
            +
                                }
         
     | 
| 
      
 682 
     | 
    
         
            +
                                sliding.transform('translate3d(' + (this.f7NavbarRightOffset) + 'px,0,0)');
         
     | 
| 
      
 683 
     | 
    
         
            +
                            });
         
     | 
| 
      
 684 
     | 
    
         
            +
                        }
         
     | 
| 
      
 685 
     | 
    
         
            +
                    }
         
     | 
| 
       578 
686 
     | 
    
         
             
                    function _load(view, url, content) {
         
     | 
| 
       579 
687 
     | 
    
         
             
                        var viewContainer = $(view.container),
         
     | 
| 
       580 
688 
     | 
    
         
             
                            newPage, oldPage, pagesInView, i, oldNavbarInner, newNavbarInner, navbar, dynamicNavbar;
         
     | 
| 
       581 
689 
     | 
    
         | 
| 
       582 
     | 
    
         
            -
                        //  
     | 
| 
      
 690 
     | 
    
         
            +
                        // Clear temp div
         
     | 
| 
      
 691 
     | 
    
         
            +
                        app._tempDomElement.innerHTML = '';
         
     | 
| 
      
 692 
     | 
    
         
            +
                    
         
     | 
| 
      
 693 
     | 
    
         
            +
                        // Parse DOM
         
     | 
| 
       583 
694 
     | 
    
         
             
                        if (url || (typeof content === 'string')) {
         
     | 
| 
       584 
695 
     | 
    
         
             
                            app._tempDomElement.innerHTML = content;
         
     | 
| 
       585 
696 
     | 
    
         
             
                        } else {
         
     | 
| 
       586 
697 
     | 
    
         
             
                            if ('length' in content && content.length > 1) {
         
     | 
| 
       587 
     | 
    
         
            -
                                app._tempDomElement = document.createElement('div');
         
     | 
| 
       588 
698 
     | 
    
         
             
                                for (var ci = 0; ci < content.length; ci++) {
         
     | 
| 
       589 
699 
     | 
    
         
             
                                    $(app._tempDomElement).append(content[ci]);
         
     | 
| 
       590 
700 
     | 
    
         
             
                                }
         
     | 
| 
       591 
701 
     | 
    
         
             
                            } else {
         
     | 
| 
       592 
     | 
    
         
            -
                                app._tempDomElement.innerHTML = '';
         
     | 
| 
       593 
702 
     | 
    
         
             
                                $(app._tempDomElement).append(content);
         
     | 
| 
       594 
703 
     | 
    
         
             
                            }
         
     | 
| 
       595 
704 
     | 
    
         
             
                        }
         
     | 
| 
       596 
705 
     | 
    
         | 
| 
      
 706 
     | 
    
         
            +
                        // Subevents for iframes
         
     | 
| 
       597 
707 
     | 
    
         
             
                        if (view.params.subEvents) {
         
     | 
| 
       598 
708 
     | 
    
         
             
                            $(app._tempDomElement).find('.page').each(function () {
         
     | 
| 
       599 
709 
     | 
    
         
             
                                var page = this;
         
     | 
| 
         @@ -603,16 +713,15 @@ 
     | 
|
| 
       603 
713 
     | 
    
         
             
                            });
         
     | 
| 
       604 
714 
     | 
    
         
             
                        }
         
     | 
| 
       605 
715 
     | 
    
         | 
| 
       606 
     | 
    
         
            -
                         
     | 
| 
       607 
     | 
    
         
            -
                         
     | 
| 
       608 
     | 
    
         
            -
                            newPage = $(app._tempDomElement).find('.view-main .page');
         
     | 
| 
       609 
     | 
    
         
            -
                        }
         
     | 
| 
      
 716 
     | 
    
         
            +
                        // Find new page
         
     | 
| 
      
 717 
     | 
    
         
            +
                        newPage = _findElement('.page', app._tempDomElement, view);
         
     | 
| 
       610 
718 
     | 
    
         | 
| 
       611 
     | 
    
         
            -
                        // If  
     | 
| 
       612 
     | 
    
         
            -
                        if (newPage 
     | 
| 
      
 719 
     | 
    
         
            +
                        // If page not found exit
         
     | 
| 
      
 720 
     | 
    
         
            +
                        if (!newPage) {
         
     | 
| 
       613 
721 
     | 
    
         
             
                            app.allowPageChange = true;
         
     | 
| 
       614 
722 
     | 
    
         
             
                            return;
         
     | 
| 
       615 
723 
     | 
    
         
             
                        }
         
     | 
| 
      
 724 
     | 
    
         
            +
                    
         
     | 
| 
       616 
725 
     | 
    
         
             
                        newPage.addClass('page-on-right');
         
     | 
| 
       617 
726 
     | 
    
         | 
| 
       618 
727 
     | 
    
         
             
                        // Find old page (should be the last one) and remove older pages
         
     | 
| 
         @@ -636,11 +745,8 @@ 
     | 
|
| 
       636 
745 
     | 
    
         
             
                        if (view.params.dynamicNavbar) {
         
     | 
| 
       637 
746 
     | 
    
         
             
                            dynamicNavbar = true;
         
     | 
| 
       638 
747 
     | 
    
         
             
                            // Find navbar
         
     | 
| 
       639 
     | 
    
         
            -
                            newNavbarInner =  
     | 
| 
       640 
     | 
    
         
            -
                            if (newNavbarInner 
     | 
| 
       641 
     | 
    
         
            -
                                newNavbarInner = $('.view-main .navbar-inner', app._tempDomElement);
         
     | 
| 
       642 
     | 
    
         
            -
                            }
         
     | 
| 
       643 
     | 
    
         
            -
                            if (newNavbarInner.length === 0 || newNavbarInner > 1) {
         
     | 
| 
      
 748 
     | 
    
         
            +
                            newNavbarInner = _findElement('.navbar-inner', app._tempDomElement, view);
         
     | 
| 
      
 749 
     | 
    
         
            +
                            if (!newNavbarInner) {
         
     | 
| 
       644 
750 
     | 
    
         
             
                                dynamicNavbar = false;
         
     | 
| 
       645 
751 
     | 
    
         
             
                            }
         
     | 
| 
       646 
752 
     | 
    
         
             
                            navbar = viewContainer.find('.navbar');
         
     | 
| 
         @@ -652,7 +758,7 @@ 
     | 
|
| 
       652 
758 
     | 
    
         
             
                                    else
         
     | 
| 
       653 
759 
     | 
    
         
             
                                        $(oldNavbarInner[i]).addClass('cached');
         
     | 
| 
       654 
760 
     | 
    
         
             
                                }
         
     | 
| 
       655 
     | 
    
         
            -
                                if (newNavbarInner 
     | 
| 
      
 761 
     | 
    
         
            +
                                if (!newNavbarInner && oldNavbarInner.length === 1) {
         
     | 
| 
       656 
762 
     | 
    
         
             
                                    if (!view.params.domCache)
         
     | 
| 
       657 
763 
     | 
    
         
             
                                        $(oldNavbarInner[0]).remove();
         
     | 
| 
       658 
764 
     | 
    
         
             
                                    else
         
     | 
| 
         @@ -690,7 +796,13 @@ 
     | 
|
| 
       690 
796 
     | 
    
         | 
| 
       691 
797 
     | 
    
         
             
                        if (dynamicNavbar) {
         
     | 
| 
       692 
798 
     | 
    
         
             
                            newNavbarInner.find('.sliding').each(function () {
         
     | 
| 
       693 
     | 
    
         
            -
                                 
     | 
| 
      
 799 
     | 
    
         
            +
                                var sliding = $(this);
         
     | 
| 
      
 800 
     | 
    
         
            +
                                sliding.transform('translate3d(' + (this.f7NavbarRightOffset) + 'px,0,0)');
         
     | 
| 
      
 801 
     | 
    
         
            +
                                if (app.params.animateNavBackIcon) {
         
     | 
| 
      
 802 
     | 
    
         
            +
                                    if (sliding.hasClass('left') && sliding.find('.back .icon').length > 0) {
         
     | 
| 
      
 803 
     | 
    
         
            +
                                        sliding.find('.back .icon').transform('translate3d(' + (-this.f7NavbarRightOffset) + 'px,0,0)');
         
     | 
| 
      
 804 
     | 
    
         
            +
                                    }
         
     | 
| 
      
 805 
     | 
    
         
            +
                                }
         
     | 
| 
       694 
806 
     | 
    
         
             
                            });
         
     | 
| 
       695 
807 
     | 
    
         
             
                        }
         
     | 
| 
       696 
808 
     | 
    
         
             
                        // Force reLayout
         
     | 
| 
         @@ -698,29 +810,22 @@ 
     | 
|
| 
       698 
810 
     | 
    
         | 
| 
       699 
811 
     | 
    
         
             
                        // Before Anim Callback
         
     | 
| 
       700 
812 
     | 
    
         
             
                        app.pageAnimCallbacks('before', view, {pageContainer: newPage[0], url: url, position: 'left', oldPage: oldPage, newPage: newPage});
         
     | 
| 
       701 
     | 
    
         
            -
             
     | 
| 
       702 
     | 
    
         
            -
                         
     | 
| 
       703 
     | 
    
         
            -
                        oldPage 
     | 
| 
      
 813 
     | 
    
         
            +
                    
         
     | 
| 
      
 814 
     | 
    
         
            +
                        // Set pages before animation
         
     | 
| 
      
 815 
     | 
    
         
            +
                        _animatePages(oldPage, newPage, 'to-left', view);
         
     | 
| 
       704 
816 
     | 
    
         | 
| 
       705 
817 
     | 
    
         
             
                        // Dynamic navbar animation
         
     | 
| 
       706 
818 
     | 
    
         
             
                        if (dynamicNavbar) {
         
     | 
| 
       707 
     | 
    
         
            -
                            newNavbarInner 
     | 
| 
       708 
     | 
    
         
            -
                            newNavbarInner.find('.sliding').each(function () {
         
     | 
| 
       709 
     | 
    
         
            -
                                $(this).transform('translate3d(0px,0,0)');
         
     | 
| 
       710 
     | 
    
         
            -
                            });
         
     | 
| 
       711 
     | 
    
         
            -
                            oldNavbarInner.removeClass('navbar-on-center').addClass('navbar-from-center-to-left');
         
     | 
| 
       712 
     | 
    
         
            -
                            oldNavbarInner.find('.sliding').each(function () {
         
     | 
| 
       713 
     | 
    
         
            -
                                $(this).transform('translate3d(' + (this.f7NavbarLeftOffset) + 'px,0,0)');
         
     | 
| 
       714 
     | 
    
         
            -
                            });
         
     | 
| 
      
 819 
     | 
    
         
            +
                            _animateNavbars(oldNavbarInner, newNavbarInner, 'to-left', view);
         
     | 
| 
       715 
820 
     | 
    
         
             
                        }
         
     | 
| 
       716 
821 
     | 
    
         | 
| 
       717 
822 
     | 
    
         
             
                        newPage.animationEnd(function (e) {
         
     | 
| 
       718 
823 
     | 
    
         
             
                            app.allowPageChange = true;
         
     | 
| 
       719 
     | 
    
         
            -
                            newPage. 
     | 
| 
       720 
     | 
    
         
            -
                            oldPage. 
     | 
| 
      
 824 
     | 
    
         
            +
                            newPage.removeClass('page-from-right-to-center page-on-right').addClass('page-on-center');
         
     | 
| 
      
 825 
     | 
    
         
            +
                            oldPage.removeClass('page-from-center-to-left').addClass('page-on-left');
         
     | 
| 
       721 
826 
     | 
    
         
             
                            if (dynamicNavbar) {
         
     | 
| 
       722 
     | 
    
         
            -
                                newNavbarInner. 
     | 
| 
       723 
     | 
    
         
            -
                                oldNavbarInner. 
     | 
| 
      
 827 
     | 
    
         
            +
                                newNavbarInner.removeClass('navbar-from-right-to-center').addClass('navbar-on-center');
         
     | 
| 
      
 828 
     | 
    
         
            +
                                oldNavbarInner.removeClass('navbar-from-center-to-left').addClass('navbar-on-left');
         
     | 
| 
       724 
829 
     | 
    
         
             
                            }
         
     | 
| 
       725 
830 
     | 
    
         
             
                            app.pageAnimCallbacks('after', view, {pageContainer: newPage[0], url: url, position: 'right', oldPage: oldPage, newPage: newPage});
         
     | 
| 
       726 
831 
     | 
    
         
             
                        });
         
     | 
| 
         @@ -735,7 +840,6 @@ 
     | 
|
| 
       735 
840 
     | 
    
         | 
| 
       736 
841 
     | 
    
         
             
                        _load(view, null, content);
         
     | 
| 
       737 
842 
     | 
    
         | 
| 
       738 
     | 
    
         
            -
                        app.allowPageChange = true;
         
     | 
| 
       739 
843 
     | 
    
         
             
                    };
         
     | 
| 
       740 
844 
     | 
    
         
             
                    app.loadPage = function (view, url) {
         
     | 
| 
       741 
845 
     | 
    
         
             
                        if (!app.allowPageChange) return false;
         
     | 
| 
         @@ -766,15 +870,28 @@ 
     | 
|
| 
       766 
870 
     | 
    
         
             
                        var viewContainer = $(view.container),
         
     | 
| 
       767 
871 
     | 
    
         
             
                            pagesInView = viewContainer.find('.page'),
         
     | 
| 
       768 
872 
     | 
    
         
             
                            oldPage, newPage, oldNavbarInner, newNavbarInner, navbar, dynamicNavbar;
         
     | 
| 
      
 873 
     | 
    
         
            +
                        function _animate() {
         
     | 
| 
      
 874 
     | 
    
         
            +
                            // Page before animation callback
         
     | 
| 
      
 875 
     | 
    
         
            +
                            app.pageAnimCallbacks('before', view, {pageContainer: newPage[0], url: url, position: 'left', oldPage: oldPage, newPage: newPage});
         
     | 
| 
       769 
876 
     | 
    
         | 
| 
       770 
     | 
    
         
            -
             
     | 
| 
       771 
     | 
    
         
            -
                            newPage  
     | 
| 
       772 
     | 
    
         
            -
             
     | 
| 
       773 
     | 
    
         
            -
             
     | 
| 
      
 877 
     | 
    
         
            +
                            // Set pages before animation
         
     | 
| 
      
 878 
     | 
    
         
            +
                            _animatePages(newPage, oldPage, 'to-right', view);
         
     | 
| 
      
 879 
     | 
    
         
            +
                    
         
     | 
| 
      
 880 
     | 
    
         
            +
                            // Dynamic navbar animation
         
     | 
| 
      
 881 
     | 
    
         
            +
                            if (dynamicNavbar) {
         
     | 
| 
      
 882 
     | 
    
         
            +
                                _animateNavbars(newNavbarInner, oldNavbarInner, 'to-right', view);
         
     | 
| 
       774 
883 
     | 
    
         
             
                            }
         
     | 
| 
      
 884 
     | 
    
         
            +
                            
         
     | 
| 
      
 885 
     | 
    
         
            +
                            newPage.animationEnd(function () {
         
     | 
| 
      
 886 
     | 
    
         
            +
                                app.afterGoBack(view, oldPage[0], newPage[0]);
         
     | 
| 
      
 887 
     | 
    
         
            +
                                app.pageAnimCallbacks('after', view, {pageContainer: newPage[0], url: url, position: 'left', oldPage: oldPage, newPage: newPage});
         
     | 
| 
      
 888 
     | 
    
         
            +
                            });
         
     | 
| 
      
 889 
     | 
    
         
            +
                        }
         
     | 
| 
      
 890 
     | 
    
         
            +
                        function _preload() {
         
     | 
| 
      
 891 
     | 
    
         
            +
                            newPage = _findElement('.page', app._tempDomElement, view);
         
     | 
| 
       775 
892 
     | 
    
         | 
| 
       776 
893 
     | 
    
         
             
                            // If pages not found or there are still more than one, exit
         
     | 
| 
       777 
     | 
    
         
            -
                            if (newPage 
     | 
| 
      
 894 
     | 
    
         
            +
                            if (!newPage) {
         
     | 
| 
       778 
895 
     | 
    
         
             
                                app.allowPageChange = true;
         
     | 
| 
       779 
896 
     | 
    
         
             
                                return;
         
     | 
| 
       780 
897 
     | 
    
         
             
                            }
         
     | 
| 
         @@ -787,11 +904,8 @@ 
     | 
|
| 
       787 
904 
     | 
    
         
             
                            if (view.params.dynamicNavbar) {
         
     | 
| 
       788 
905 
     | 
    
         
             
                                dynamicNavbar = true;
         
     | 
| 
       789 
906 
     | 
    
         
             
                                // Find navbar
         
     | 
| 
       790 
     | 
    
         
            -
                                newNavbarInner =  
     | 
| 
       791 
     | 
    
         
            -
                                if (newNavbarInner 
     | 
| 
       792 
     | 
    
         
            -
                                    newNavbarInner = $('.view-main .navbar-inner', app._tempDomElement);
         
     | 
| 
       793 
     | 
    
         
            -
                                }
         
     | 
| 
       794 
     | 
    
         
            -
                                if (newNavbarInner.length === 0 || newNavbarInner > 1) {
         
     | 
| 
      
 907 
     | 
    
         
            +
                                newNavbarInner = _findElement('.navbar-inner', app._tempDomElement, view);
         
     | 
| 
      
 908 
     | 
    
         
            +
                                if (!newNavbarInner) {
         
     | 
| 
       795 
909 
     | 
    
         
             
                                    dynamicNavbar = false;
         
     | 
| 
       796 
910 
     | 
    
         
             
                                }
         
     | 
| 
       797 
911 
     | 
    
         | 
| 
         @@ -815,7 +929,16 @@ 
     | 
|
| 
       815 
929 
     | 
    
         | 
| 
       816 
930 
     | 
    
         
             
                            if (dynamicNavbar && newNavbarInner.hasClass('navbar-on-left')) {
         
     | 
| 
       817 
931 
     | 
    
         
             
                                newNavbarInner.find('.sliding').each(function () {
         
     | 
| 
       818 
     | 
    
         
            -
                                     
     | 
| 
      
 932 
     | 
    
         
            +
                                    var sliding = $(this);
         
     | 
| 
      
 933 
     | 
    
         
            +
                                    if (app.params.animateNavBackIcon) {
         
     | 
| 
      
 934 
     | 
    
         
            +
                                        if (sliding.hasClass('left') && sliding.find('.back .icon').length > 0) {
         
     | 
| 
      
 935 
     | 
    
         
            +
                                            sliding.find('.back .icon').transform('translate3d(' + (-this.f7NavbarLeftOffset) + 'px,0,0)');
         
     | 
| 
      
 936 
     | 
    
         
            +
                                        }
         
     | 
| 
      
 937 
     | 
    
         
            +
                                        if (sliding.hasClass('center') && oldNavbarInner.find('.left .back .icon').length > 0) {
         
     | 
| 
      
 938 
     | 
    
         
            +
                                            this.f7NavbarLeftOffset += oldNavbarInner.find('.left .back span')[0].offsetLeft;
         
     | 
| 
      
 939 
     | 
    
         
            +
                                        }
         
     | 
| 
      
 940 
     | 
    
         
            +
                                    }
         
     | 
| 
      
 941 
     | 
    
         
            +
                                    sliding.transform('translate3d(' + (this.f7NavbarLeftOffset) + 'px,0,0)');
         
     | 
| 
       819 
942 
     | 
    
         
             
                                });
         
     | 
| 
       820 
943 
     | 
    
         
             
                            }
         
     | 
| 
       821 
944 
     | 
    
         | 
| 
         @@ -832,28 +955,7 @@ 
     | 
|
| 
       832 
955 
     | 
    
         
             
                            // Force reLayout
         
     | 
| 
       833 
956 
     | 
    
         
             
                            var clientLeft = newPage[0].clientLeft;
         
     | 
| 
       834 
957 
     | 
    
         | 
| 
       835 
     | 
    
         
            -
                             
     | 
| 
       836 
     | 
    
         
            -
                            app.pageAnimCallbacks('before', view, {pageContainer: newPage[0], url: url, position: 'left', oldPage: oldPage, newPage: newPage});
         
     | 
| 
       837 
     | 
    
         
            -
                    
         
     | 
| 
       838 
     | 
    
         
            -
                            newPage.addClass('page-from-left-to-center');
         
     | 
| 
       839 
     | 
    
         
            -
                            oldPage.removeClass('page-on-center').addClass('page-from-center-to-right');
         
     | 
| 
       840 
     | 
    
         
            -
                    
         
     | 
| 
       841 
     | 
    
         
            -
                            // Dynamic navbar animation
         
     | 
| 
       842 
     | 
    
         
            -
                            if (dynamicNavbar) {
         
     | 
| 
       843 
     | 
    
         
            -
                                newNavbarInner.removeClass('navbar-on-left').addClass('navbar-from-left-to-center');
         
     | 
| 
       844 
     | 
    
         
            -
                                newNavbarInner.find('.sliding').each(function () {
         
     | 
| 
       845 
     | 
    
         
            -
                                    $(this).transform('translate3d(0px,0,0)');
         
     | 
| 
       846 
     | 
    
         
            -
                                });
         
     | 
| 
       847 
     | 
    
         
            -
                                oldNavbarInner.removeClass('navbar-on-center').addClass('navbar-from-center-to-right');
         
     | 
| 
       848 
     | 
    
         
            -
                                oldNavbarInner.find('.sliding').each(function () {
         
     | 
| 
       849 
     | 
    
         
            -
                                    $(this).transform('translate3d(' + (this.f7NavbarRightOffset) + 'px,0,0)');
         
     | 
| 
       850 
     | 
    
         
            -
                                });
         
     | 
| 
       851 
     | 
    
         
            -
                            }
         
     | 
| 
       852 
     | 
    
         
            -
                    
         
     | 
| 
       853 
     | 
    
         
            -
                            newPage.animationEnd(function () {
         
     | 
| 
       854 
     | 
    
         
            -
                                app.afterGoBack(view, oldPage[0], newPage[0]);
         
     | 
| 
       855 
     | 
    
         
            -
                                app.pageAnimCallbacks('after', view, {pageContainer: newPage[0], url: url, position: 'left', oldPage: oldPage, newPage: newPage});
         
     | 
| 
       856 
     | 
    
         
            -
                            });
         
     | 
| 
      
 958 
     | 
    
         
            +
                            _animate();
         
     | 
| 
       857 
959 
     | 
    
         
             
                        }
         
     | 
| 
       858 
960 
     | 
    
         | 
| 
       859 
961 
     | 
    
         
             
                        if (pagesInView.length > 1) {
         
     | 
| 
         @@ -877,31 +979,7 @@ 
     | 
|
| 
       877 
979 
     | 
    
         
             
                                newNavbarInner = $(inners[0]);
         
     | 
| 
       878 
980 
     | 
    
         
             
                                oldNavbarInner = $(inners[1]);
         
     | 
| 
       879 
981 
     | 
    
         
             
                            }
         
     | 
| 
       880 
     | 
    
         
            -
             
     | 
| 
       881 
     | 
    
         
            -
                            // Page before animation callback
         
     | 
| 
       882 
     | 
    
         
            -
                            app.pageAnimCallbacks('before', view, {pageContainer: newPage[0], url: url, position: 'left', oldPage: oldPage, newPage: newPage});
         
     | 
| 
       883 
     | 
    
         
            -
                    
         
     | 
| 
       884 
     | 
    
         
            -
                            // Add classes for animation
         
     | 
| 
       885 
     | 
    
         
            -
                            newPage.removeClass('page-on-left').addClass('page-from-left-to-center');
         
     | 
| 
       886 
     | 
    
         
            -
                            oldPage.removeClass('page-on-center').addClass('page-from-center-to-right');
         
     | 
| 
       887 
     | 
    
         
            -
                    
         
     | 
| 
       888 
     | 
    
         
            -
                            // Dynamic navbar animation
         
     | 
| 
       889 
     | 
    
         
            -
                            if (dynamicNavbar) {
         
     | 
| 
       890 
     | 
    
         
            -
                                newNavbarInner.removeClass('navbar-on-left').addClass('navbar-from-left-to-center');
         
     | 
| 
       891 
     | 
    
         
            -
                                newNavbarInner.find('.sliding').each(function () {
         
     | 
| 
       892 
     | 
    
         
            -
                                    $(this).transform('translate3d(0px,0,0)');
         
     | 
| 
       893 
     | 
    
         
            -
                                });
         
     | 
| 
       894 
     | 
    
         
            -
                    
         
     | 
| 
       895 
     | 
    
         
            -
                                oldNavbarInner.removeClass('navbar-on-center').addClass('navbar-from-center-to-right');
         
     | 
| 
       896 
     | 
    
         
            -
                                oldNavbarInner.find('.sliding').each(function () {
         
     | 
| 
       897 
     | 
    
         
            -
                                    $(this).transform('translate3d(' + (this.f7NavbarRightOffset) + 'px,0,0)');
         
     | 
| 
       898 
     | 
    
         
            -
                                });
         
     | 
| 
       899 
     | 
    
         
            -
                            }
         
     | 
| 
       900 
     | 
    
         
            -
                            
         
     | 
| 
       901 
     | 
    
         
            -
                            newPage.animationEnd(function () {
         
     | 
| 
       902 
     | 
    
         
            -
                                app.afterGoBack(view, oldPage[0], newPage[0]);
         
     | 
| 
       903 
     | 
    
         
            -
                                app.pageAnimCallbacks('after', view, {pageContainer: newPage[0], url: url, position: 'left', oldPage: oldPage, newPage: newPage});
         
     | 
| 
       904 
     | 
    
         
            -
                            });
         
     | 
| 
      
 982 
     | 
    
         
            +
                            _animate();
         
     | 
| 
       905 
983 
     | 
    
         
             
                        }
         
     | 
| 
       906 
984 
     | 
    
         
             
                        else {
         
     | 
| 
       907 
985 
     | 
    
         
             
                            if (url && url.indexOf('#') === 0) url = undefined;
         
     | 
| 
         @@ -917,7 +995,7 @@ 
     | 
|
| 
       917 
995 
     | 
    
         
             
                            if (!view.params.domCache && (url in view.contentCache)) {
         
     | 
| 
       918 
996 
     | 
    
         
             
                                var _cache = view.contentCache[url];
         
     | 
| 
       919 
997 
     | 
    
         | 
| 
       920 
     | 
    
         
            -
                                app._tempDomElement =  
     | 
| 
      
 998 
     | 
    
         
            +
                                app._tempDomElement.innerHTML = '';
         
     | 
| 
       921 
999 
     | 
    
         
             
                                $(app._tempDomElement).append(_cache.nav[0]).append(_cache.page[0]);
         
     | 
| 
       922 
1000 
     | 
    
         
             
                                _preload();
         
     | 
| 
       923 
1001 
     | 
    
         
             
                                return;
         
     | 
| 
         @@ -928,9 +1006,7 @@ 
     | 
|
| 
       928 
1006 
     | 
    
         
             
                                    app.allowPageChange = true;
         
     | 
| 
       929 
1007 
     | 
    
         
             
                                    return;
         
     | 
| 
       930 
1008 
     | 
    
         
             
                                }
         
     | 
| 
       931 
     | 
    
         
            -
                                // Parse DOM to find new page
         
     | 
| 
       932 
1009 
     | 
    
         
             
                                app._tempDomElement.innerHTML = data;
         
     | 
| 
       933 
     | 
    
         
            -
                                
         
     | 
| 
       934 
1010 
     | 
    
         
             
                                _preload();
         
     | 
| 
       935 
1011 
     | 
    
         
             
                            });
         
     | 
| 
       936 
1012 
     | 
    
         
             
                        }
         
     | 
| 
         @@ -1309,7 +1385,7 @@ 
     | 
|
| 
       1309 
1385 
     | 
    
         
             
                    ======================================================*/
         
     | 
| 
       1310 
1386 
     | 
    
         
             
                    app.allowPanelOpen = true;
         
     | 
| 
       1311 
1387 
     | 
    
         
             
                    app.openPanel = function (panelPosition) {
         
     | 
| 
       1312 
     | 
    
         
            -
                        // @panelPosition - string with panel position "left", "right" 
     | 
| 
      
 1388 
     | 
    
         
            +
                        // @panelPosition - string with panel position "left", "right"
         
     | 
| 
       1313 
1389 
     | 
    
         
             
                        if (!app.allowPanelOpen) return false;
         
     | 
| 
       1314 
1390 
     | 
    
         
             
                        var panel = $('.panel-' + panelPosition);
         
     | 
| 
       1315 
1391 
     | 
    
         
             
                        if (panel.length === 0 || panel.hasClass('active')) return false;
         
     | 
| 
         @@ -1318,6 +1394,9 @@ 
     | 
|
| 
       1318 
1394 
     | 
    
         
             
                        var effect = panel.hasClass('panel-reveal') ? 'reveal' : 'cover';
         
     | 
| 
       1319 
1395 
     | 
    
         
             
                        panel.css({display: 'block'}).addClass('active');
         
     | 
| 
       1320 
1396 
     | 
    
         
             
                        panel.trigger('open');
         
     | 
| 
      
 1397 
     | 
    
         
            +
                        if (panel.find('.view').length > 0) {
         
     | 
| 
      
 1398 
     | 
    
         
            +
                            if (app.sizeNavbars) app.sizeNavbars(panel.find('.view')[0]);
         
     | 
| 
      
 1399 
     | 
    
         
            +
                        }
         
     | 
| 
       1321 
1400 
     | 
    
         | 
| 
       1322 
1401 
     | 
    
         
             
                        // Trigger reLayout
         
     | 
| 
       1323 
1402 
     | 
    
         
             
                        var clientLeft = panel[0].clientLeft;
         
     | 
| 
         @@ -1604,6 +1683,131 @@ 
     | 
|
| 
       1604 
1683 
     | 
    
         
             
                        });
         
     | 
| 
       1605 
1684 
     | 
    
         
             
                        el.find('.swipeout-content').transform('translate3d(-100%,0,0)');
         
     | 
| 
       1606 
1685 
     | 
    
         
             
                    };
         
     | 
| 
      
 1686 
     | 
    
         
            +
                    /*===============================================================================
         
     | 
| 
      
 1687 
     | 
    
         
            +
                    ************   Smart Select   ************
         
     | 
| 
      
 1688 
     | 
    
         
            +
                    ===============================================================================*/
         
     | 
| 
      
 1689 
     | 
    
         
            +
                    app.initSmartSelects = function (pageContainer) {
         
     | 
| 
      
 1690 
     | 
    
         
            +
                        var page = $(pageContainer);
         
     | 
| 
      
 1691 
     | 
    
         
            +
                        if (page.length === 0) return;
         
     | 
| 
      
 1692 
     | 
    
         
            +
                    
         
     | 
| 
      
 1693 
     | 
    
         
            +
                        var selects = page.find('.smart-select');
         
     | 
| 
      
 1694 
     | 
    
         
            +
                        if (selects.length === 0) return;
         
     | 
| 
      
 1695 
     | 
    
         
            +
                    
         
     | 
| 
      
 1696 
     | 
    
         
            +
                        selects.each(function () {
         
     | 
| 
      
 1697 
     | 
    
         
            +
                            var smartSelect = $(this);
         
     | 
| 
      
 1698 
     | 
    
         
            +
                    
         
     | 
| 
      
 1699 
     | 
    
         
            +
                            var $select = smartSelect.find('select');
         
     | 
| 
      
 1700 
     | 
    
         
            +
                            if ($select.length === 0) return;
         
     | 
| 
      
 1701 
     | 
    
         
            +
                    
         
     | 
| 
      
 1702 
     | 
    
         
            +
                            var select = $select[0];
         
     | 
| 
      
 1703 
     | 
    
         
            +
                            if (select.length === 0) return;
         
     | 
| 
      
 1704 
     | 
    
         
            +
                    
         
     | 
| 
      
 1705 
     | 
    
         
            +
                            var valueText;
         
     | 
| 
      
 1706 
     | 
    
         
            +
                            for (var i = 0; i < select.length; i++) {
         
     | 
| 
      
 1707 
     | 
    
         
            +
                                if (select[i].selected) valueText = select[i].textContent.trim();
         
     | 
| 
      
 1708 
     | 
    
         
            +
                            }
         
     | 
| 
      
 1709 
     | 
    
         
            +
                    
         
     | 
| 
      
 1710 
     | 
    
         
            +
                            var itemAfter = smartSelect.find('.item-after');
         
     | 
| 
      
 1711 
     | 
    
         
            +
                            if (itemAfter.length === 0) {
         
     | 
| 
      
 1712 
     | 
    
         
            +
                                smartSelect.find('.item-inner').append('<div class="item-after">' + valueText + '</div>');
         
     | 
| 
      
 1713 
     | 
    
         
            +
                            }
         
     | 
| 
      
 1714 
     | 
    
         
            +
                            else {
         
     | 
| 
      
 1715 
     | 
    
         
            +
                                itemAfter.text(valueText);
         
     | 
| 
      
 1716 
     | 
    
         
            +
                            }
         
     | 
| 
      
 1717 
     | 
    
         
            +
                            
         
     | 
| 
      
 1718 
     | 
    
         
            +
                        });
         
     | 
| 
      
 1719 
     | 
    
         
            +
                        
         
     | 
| 
      
 1720 
     | 
    
         
            +
                    };
         
     | 
| 
      
 1721 
     | 
    
         
            +
                    app.smartSelectOpen = function (smartSelect) {
         
     | 
| 
      
 1722 
     | 
    
         
            +
                        smartSelect = $(smartSelect);
         
     | 
| 
      
 1723 
     | 
    
         
            +
                        if (smartSelect.length === 0) return;
         
     | 
| 
      
 1724 
     | 
    
         
            +
                    
         
     | 
| 
      
 1725 
     | 
    
         
            +
                        // Find related view
         
     | 
| 
      
 1726 
     | 
    
         
            +
                        var view = smartSelect.parents('.view');
         
     | 
| 
      
 1727 
     | 
    
         
            +
                        if (view.length === 0) return;
         
     | 
| 
      
 1728 
     | 
    
         
            +
                        view = view[0].f7View;
         
     | 
| 
      
 1729 
     | 
    
         
            +
                        if (!view) return;
         
     | 
| 
      
 1730 
     | 
    
         
            +
                    
         
     | 
| 
      
 1731 
     | 
    
         
            +
                        // Collect all values
         
     | 
| 
      
 1732 
     | 
    
         
            +
                        var select = smartSelect.find('select')[0];
         
     | 
| 
      
 1733 
     | 
    
         
            +
                        var values = {};
         
     | 
| 
      
 1734 
     | 
    
         
            +
                        values.length = select.length;
         
     | 
| 
      
 1735 
     | 
    
         
            +
                        for (var i = 0; i < select.length; i++) {
         
     | 
| 
      
 1736 
     | 
    
         
            +
                            values[i] = {
         
     | 
| 
      
 1737 
     | 
    
         
            +
                                value: select[i].value,
         
     | 
| 
      
 1738 
     | 
    
         
            +
                                text: select[i].textContent.trim(),
         
     | 
| 
      
 1739 
     | 
    
         
            +
                                selected: select[i].selected
         
     | 
| 
      
 1740 
     | 
    
         
            +
                            };
         
     | 
| 
      
 1741 
     | 
    
         
            +
                        }
         
     | 
| 
      
 1742 
     | 
    
         
            +
                    
         
     | 
| 
      
 1743 
     | 
    
         
            +
                        var pageTitle = smartSelect.find('.item-title').text();
         
     | 
| 
      
 1744 
     | 
    
         
            +
                    
         
     | 
| 
      
 1745 
     | 
    
         
            +
                        // Generate dynamic page layout
         
     | 
| 
      
 1746 
     | 
    
         
            +
                        var radiosName = 'radio-' + (new Date()).getTime();
         
     | 
| 
      
 1747 
     | 
    
         
            +
                        var radiosHTML = '';
         
     | 
| 
      
 1748 
     | 
    
         
            +
                        for (var j = 0; j < values.length; j++) {
         
     | 
| 
      
 1749 
     | 
    
         
            +
                            var checked = values[j].selected ? 'checked' : '';
         
     | 
| 
      
 1750 
     | 
    
         
            +
                            radiosHTML +=
         
     | 
| 
      
 1751 
     | 
    
         
            +
                                '<li>' +
         
     | 
| 
      
 1752 
     | 
    
         
            +
                                    '<label class="label-radio item-content">' +
         
     | 
| 
      
 1753 
     | 
    
         
            +
                                        '<input type="radio" name="' + radiosName + '" value="' + values[j].value + '" ' + checked + '>' +
         
     | 
| 
      
 1754 
     | 
    
         
            +
                                        '<div class="item-inner">' +
         
     | 
| 
      
 1755 
     | 
    
         
            +
                                            '<div class="item-title">' + values[j].text + '</div>' +
         
     | 
| 
      
 1756 
     | 
    
         
            +
                                        '</div>' +
         
     | 
| 
      
 1757 
     | 
    
         
            +
                                    '</label>' +
         
     | 
| 
      
 1758 
     | 
    
         
            +
                                '</li>';
         
     | 
| 
      
 1759 
     | 
    
         
            +
                        }
         
     | 
| 
      
 1760 
     | 
    
         
            +
                        // Navbar HTML
         
     | 
| 
      
 1761 
     | 
    
         
            +
                        var navbarHTML =
         
     | 
| 
      
 1762 
     | 
    
         
            +
                            '<div class="navbar">' +
         
     | 
| 
      
 1763 
     | 
    
         
            +
                            '  <div class="navbar-inner">' +
         
     | 
| 
      
 1764 
     | 
    
         
            +
                                app.params.smartSelectBackTemplate +
         
     | 
| 
      
 1765 
     | 
    
         
            +
                            '    <div class="center sliding">' + pageTitle + '</div>' +
         
     | 
| 
      
 1766 
     | 
    
         
            +
                            '  </div>' +
         
     | 
| 
      
 1767 
     | 
    
         
            +
                            '</div>';
         
     | 
| 
      
 1768 
     | 
    
         
            +
                        // Determine navbar layout type - static/fixed/through
         
     | 
| 
      
 1769 
     | 
    
         
            +
                        var navbarLayout = 'static';
         
     | 
| 
      
 1770 
     | 
    
         
            +
                        if (smartSelect.parents('.navbar-through').length > 0) navbarLayout = 'through';
         
     | 
| 
      
 1771 
     | 
    
         
            +
                        if (smartSelect.parents('.navbar-fixed').length > 0) navbarLayout = 'fixed';
         
     | 
| 
      
 1772 
     | 
    
         
            +
                        // Page Layout
         
     | 
| 
      
 1773 
     | 
    
         
            +
                        var pageName = 'smart-select-' + radiosName;
         
     | 
| 
      
 1774 
     | 
    
         
            +
                        var pageHTML =
         
     | 
| 
      
 1775 
     | 
    
         
            +
                            (navbarLayout === 'through' ? navbarHTML : '') +
         
     | 
| 
      
 1776 
     | 
    
         
            +
                            '<div class="pages">' +
         
     | 
| 
      
 1777 
     | 
    
         
            +
                            '  <div data-page="' + pageName + '" class="page">' +
         
     | 
| 
      
 1778 
     | 
    
         
            +
                                 (navbarLayout === 'fixed' ? navbarHTML : '') +
         
     | 
| 
      
 1779 
     | 
    
         
            +
                            '    <div class="page-content">' +
         
     | 
| 
      
 1780 
     | 
    
         
            +
                                   (navbarLayout === 'static' ? navbarHTML : '') +
         
     | 
| 
      
 1781 
     | 
    
         
            +
                            '      <div class="list-block">' +
         
     | 
| 
      
 1782 
     | 
    
         
            +
                            '        <ul>' +
         
     | 
| 
      
 1783 
     | 
    
         
            +
                                        radiosHTML +
         
     | 
| 
      
 1784 
     | 
    
         
            +
                            '        </ul>' +
         
     | 
| 
      
 1785 
     | 
    
         
            +
                            '      </div>' +
         
     | 
| 
      
 1786 
     | 
    
         
            +
                            '    </div>' +
         
     | 
| 
      
 1787 
     | 
    
         
            +
                            '  </div>' +
         
     | 
| 
      
 1788 
     | 
    
         
            +
                            '</div>';
         
     | 
| 
      
 1789 
     | 
    
         
            +
                    
         
     | 
| 
      
 1790 
     | 
    
         
            +
                        // Event Listeners on new page
         
     | 
| 
      
 1791 
     | 
    
         
            +
                        function handleRadios(e) {
         
     | 
| 
      
 1792 
     | 
    
         
            +
                            var page = e.detail.page;
         
     | 
| 
      
 1793 
     | 
    
         
            +
                            if (page.name === pageName) {
         
     | 
| 
      
 1794 
     | 
    
         
            +
                                $(document).off('pageInit', handleRadios);
         
     | 
| 
      
 1795 
     | 
    
         
            +
                                $(page.container).find('input[name="' + radiosName + '"]').on('change', function () {
         
     | 
| 
      
 1796 
     | 
    
         
            +
                                    var value = this.value;
         
     | 
| 
      
 1797 
     | 
    
         
            +
                                    select.value = value;
         
     | 
| 
      
 1798 
     | 
    
         
            +
                                    $(select).trigger('change');
         
     | 
| 
      
 1799 
     | 
    
         
            +
                                    var optionText = smartSelect.find('option[value="' + value + '"]').text();
         
     | 
| 
      
 1800 
     | 
    
         
            +
                                    smartSelect.find('.item-after').text(optionText);
         
     | 
| 
      
 1801 
     | 
    
         
            +
                                });
         
     | 
| 
      
 1802 
     | 
    
         
            +
                            }
         
     | 
| 
      
 1803 
     | 
    
         
            +
                        }
         
     | 
| 
      
 1804 
     | 
    
         
            +
                        $(document).on('pageInit', handleRadios);
         
     | 
| 
      
 1805 
     | 
    
         
            +
                    
         
     | 
| 
      
 1806 
     | 
    
         
            +
                        // Load content
         
     | 
| 
      
 1807 
     | 
    
         
            +
                        view.loadContent(pageHTML);
         
     | 
| 
      
 1808 
     | 
    
         
            +
                    
         
     | 
| 
      
 1809 
     | 
    
         
            +
                    };
         
     | 
| 
      
 1810 
     | 
    
         
            +
                    
         
     | 
| 
       1607 
1811 
     | 
    
         
             
                    /*======================================================
         
     | 
| 
       1608 
1812 
     | 
    
         
             
                    ************   Pull To Refresh   ************
         
     | 
| 
       1609 
1813 
     | 
    
         
             
                    ======================================================*/
         
     | 
| 
         @@ -1793,13 +1997,20 @@ 
     | 
|
| 
       1793 
1997 
     | 
    
         
             
                            /*jshint validthis:true */
         
     | 
| 
       1794 
1998 
     | 
    
         
             
                            var clicked = $(this);
         
     | 
| 
       1795 
1999 
     | 
    
         
             
                            var url = clicked.attr('href');
         
     | 
| 
       1796 
     | 
    
         
            -
                             
     | 
| 
       1797 
     | 
    
         
            -
             
     | 
| 
       1798 
     | 
    
         
            -
                                 
     | 
| 
      
 2000 
     | 
    
         
            +
                            if (clicked[0].nodeName.toLowerCase() === 'a') {
         
     | 
| 
      
 2001 
     | 
    
         
            +
                                // External
         
     | 
| 
      
 2002 
     | 
    
         
            +
                                if (clicked.hasClass('external')) {
         
     | 
| 
      
 2003 
     | 
    
         
            +
                                    return;
         
     | 
| 
      
 2004 
     | 
    
         
            +
                                }
         
     | 
| 
      
 2005 
     | 
    
         
            +
                                else {
         
     | 
| 
      
 2006 
     | 
    
         
            +
                                    e.preventDefault();
         
     | 
| 
      
 2007 
     | 
    
         
            +
                                }
         
     | 
| 
       1799 
2008 
     | 
    
         
             
                            }
         
     | 
| 
       1800 
     | 
    
         
            -
                             
     | 
| 
       1801 
     | 
    
         
            -
             
     | 
| 
      
 2009 
     | 
    
         
            +
                            // Smart Select
         
     | 
| 
      
 2010 
     | 
    
         
            +
                            if (clicked.hasClass('smart-select')) {
         
     | 
| 
      
 2011 
     | 
    
         
            +
                                if (app.smartSelectOpen) app.smartSelectOpen(clicked);
         
     | 
| 
       1802 
2012 
     | 
    
         
             
                            }
         
     | 
| 
      
 2013 
     | 
    
         
            +
                            
         
     | 
| 
       1803 
2014 
     | 
    
         
             
                            // Open Panel
         
     | 
| 
       1804 
2015 
     | 
    
         
             
                            if (clicked.hasClass('open-panel')) {
         
     | 
| 
       1805 
2016 
     | 
    
         
             
                                if ($('.panel').length === 1) {
         
     | 
| 
         @@ -1909,7 +2120,7 @@ 
     | 
|
| 
       1909 
2120 
     | 
    
         
             
                                else view.loadPage(clicked.attr('href'));
         
     | 
| 
       1910 
2121 
     | 
    
         
             
                            }
         
     | 
| 
       1911 
2122 
     | 
    
         
             
                        }
         
     | 
| 
       1912 
     | 
    
         
            -
                        $(document).on('click', 'a, .open-panel, .close-panel, .panel-overlay, .modal-overlay, .swipeout-delete, .close-popup, .open-popup, .open-popover', handleClicks);
         
     | 
| 
      
 2123 
     | 
    
         
            +
                        $(document).on('click', 'a, .open-panel, .close-panel, .panel-overlay, .modal-overlay, .swipeout-delete, .close-popup, .open-popup, .open-popover, .smart-select', handleClicks);
         
     | 
| 
       1913 
2124 
     | 
    
         
             
                    };
         
     | 
| 
       1914 
2125 
     | 
    
         
             
                    /*======================================================
         
     | 
| 
       1915 
2126 
     | 
    
         
             
                    ************   App Resize Actions   ************
         
     | 
| 
         @@ -1942,9 +2153,11 @@ 
     | 
|
| 
       1942 
2153 
     | 
    
         
             
                        if (android) {
         
     | 
| 
       1943 
2154 
     | 
    
         
             
                            device.os = 'android';
         
     | 
| 
       1944 
2155 
     | 
    
         
             
                            device.osVersion = android[2];
         
     | 
| 
      
 2156 
     | 
    
         
            +
                            device.android = true;
         
     | 
| 
       1945 
2157 
     | 
    
         
             
                        }
         
     | 
| 
       1946 
2158 
     | 
    
         
             
                        if (ipad || iphone || ipod) {
         
     | 
| 
       1947 
2159 
     | 
    
         
             
                            device.os = 'ios';
         
     | 
| 
      
 2160 
     | 
    
         
            +
                            device.ios = true;
         
     | 
| 
       1948 
2161 
     | 
    
         
             
                        }
         
     | 
| 
       1949 
2162 
     | 
    
         
             
                        // iOS
         
     | 
| 
       1950 
2163 
     | 
    
         
             
                        device.iphone = false;
         
     | 
| 
         @@ -1992,7 +2205,6 @@ 
     | 
|
| 
       1992 
2205 
     | 
    
         
             
                                (windowWidth === 1024 && windowHeight === 768)
         
     | 
| 
       1993 
2206 
     | 
    
         
             
                            )
         
     | 
| 
       1994 
2207 
     | 
    
         
             
                        ) {
         
     | 
| 
       1995 
     | 
    
         
            -
                            console.log(device.webview);
         
     | 
| 
       1996 
2208 
     | 
    
         
             
                            device.statusBar = true;
         
     | 
| 
       1997 
2209 
     | 
    
         
             
                        }
         
     | 
| 
       1998 
2210 
     | 
    
         
             
                        else {
         
     | 
| 
         @@ -2363,6 +2575,16 @@ 
     | 
|
| 
       2363 
2575 
     | 
    
         
             
                            if (this[i] === el) return i;
         
     | 
| 
       2364 
2576 
     | 
    
         
             
                        }
         
     | 
| 
       2365 
2577 
     | 
    
         
             
                    },
         
     | 
| 
      
 2578 
     | 
    
         
            +
                    index: function () {
         
     | 
| 
      
 2579 
     | 
    
         
            +
                        if (this[0]) {
         
     | 
| 
      
 2580 
     | 
    
         
            +
                            var child = this[0];
         
     | 
| 
      
 2581 
     | 
    
         
            +
                            var i = 0;
         
     | 
| 
      
 2582 
     | 
    
         
            +
                            while ((child = child.previousSibling) != null)
         
     | 
| 
      
 2583 
     | 
    
         
            +
                                i++;
         
     | 
| 
      
 2584 
     | 
    
         
            +
                            return i;
         
     | 
| 
      
 2585 
     | 
    
         
            +
                        }
         
     | 
| 
      
 2586 
     | 
    
         
            +
                        else return undefined;
         
     | 
| 
      
 2587 
     | 
    
         
            +
                    },
         
     | 
| 
       2366 
2588 
     | 
    
         
             
                    append: function (newChild) {
         
     | 
| 
       2367 
2589 
     | 
    
         
             
                        for (var i = 0; i < this.length; i++) {
         
     | 
| 
       2368 
2590 
     | 
    
         
             
                            if (typeof newChild === 'string') {
         
     |