framework7rails 0.9.7 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +17 -0
- data/Framework7-0.9.6/.gitignore +5 -0
- data/Framework7-0.9.6/.jshintrc +33 -0
- data/Framework7-0.9.6/.travis.yml +5 -0
- data/Framework7-0.9.6/CHANGELOG.md +342 -0
- data/Framework7-0.9.6/Gruntfile.js +560 -0
- data/Framework7-0.9.6/LICENSE +20 -0
- data/Framework7-0.9.6/README.md +113 -0
- data/Framework7-0.9.6/apps/todo7/css/todo7.css +208 -0
- data/Framework7-0.9.6/apps/todo7/img/Icon-152.png +0 -0
- data/Framework7-0.9.6/apps/todo7/img/bg.jpg +0 -0
- data/Framework7-0.9.6/apps/todo7/img/icon-114.png +0 -0
- data/Framework7-0.9.6/apps/todo7/img/icon-120.png +0 -0
- data/Framework7-0.9.6/apps/todo7/img/icon-144.png +0 -0
- data/Framework7-0.9.6/apps/todo7/img/icon-57.png +0 -0
- data/Framework7-0.9.6/apps/todo7/img/icon-72.png +0 -0
- data/Framework7-0.9.6/apps/todo7/img/icon-76.png +0 -0
- data/Framework7-0.9.6/apps/todo7/index.html +112 -0
- data/Framework7-0.9.6/apps/todo7/jade/index.jade +99 -0
- data/Framework7-0.9.6/apps/todo7/js/todo7.js +102 -0
- data/Framework7-0.9.6/apps/todo7/less/todo7.less +221 -0
- data/Framework7-0.9.6/apps/todo7/manifest.php +27 -0
- data/Framework7-0.9.6/apps/weather7/css/weather7.css +291 -0
- data/Framework7-0.9.6/apps/weather7/img/bg.jpg +0 -0
- data/Framework7-0.9.6/apps/weather7/img/icon-114.png +0 -0
- data/Framework7-0.9.6/apps/weather7/img/icon-120.png +0 -0
- data/Framework7-0.9.6/apps/weather7/img/icon-144.png +0 -0
- data/Framework7-0.9.6/apps/weather7/img/icon-152.png +0 -0
- data/Framework7-0.9.6/apps/weather7/img/icon-57.png +0 -0
- data/Framework7-0.9.6/apps/weather7/img/icon-72.png +0 -0
- data/Framework7-0.9.6/apps/weather7/img/icon-76.png +0 -0
- data/Framework7-0.9.6/apps/weather7/img/logo.png +0 -0
- data/Framework7-0.9.6/apps/weather7/img/yahoo-logo.png +0 -0
- data/Framework7-0.9.6/apps/weather7/index.html +127 -0
- data/Framework7-0.9.6/apps/weather7/jade/index.jade +113 -0
- data/Framework7-0.9.6/apps/weather7/js/weather7.js +213 -0
- data/Framework7-0.9.6/apps/weather7/less/weather7.less +294 -0
- data/Framework7-0.9.6/apps/weather7/manifest.php +29 -0
- data/Framework7-0.9.6/bower.json +30 -0
- data/Framework7-0.9.6/dist/about.html +28 -0
- data/Framework7-0.9.6/dist/css/framework7.css +4922 -0
- data/Framework7-0.9.6/dist/css/framework7.min.css +15 -0
- data/Framework7-0.9.6/dist/css/framework7.rtl.css +427 -0
- data/Framework7-0.9.6/dist/css/framework7.rtl.min.css +1 -0
- data/Framework7-0.9.6/dist/css/framework7.themes.css +279 -0
- data/Framework7-0.9.6/dist/css/framework7.themes.min.css +1 -0
- data/Framework7-0.9.6/dist/css/my-app.css +0 -0
- data/Framework7-0.9.6/dist/form.html +229 -0
- data/Framework7-0.9.6/dist/img/i-f7.png +0 -0
- data/Framework7-0.9.6/dist/img/i-form-calendar.png +0 -0
- data/Framework7-0.9.6/dist/img/i-form-comment.png +0 -0
- data/Framework7-0.9.6/dist/img/i-form-email.png +0 -0
- data/Framework7-0.9.6/dist/img/i-form-gender.png +0 -0
- data/Framework7-0.9.6/dist/img/i-form-name.png +0 -0
- data/Framework7-0.9.6/dist/img/i-form-password.png +0 -0
- data/Framework7-0.9.6/dist/img/i-form-settings.png +0 -0
- data/Framework7-0.9.6/dist/img/i-form-tel.png +0 -0
- data/Framework7-0.9.6/dist/img/i-form-toggle.png +0 -0
- data/Framework7-0.9.6/dist/img/i-form-url.png +0 -0
- data/Framework7-0.9.6/dist/index.html +102 -0
- data/Framework7-0.9.6/dist/js/framework7.js +7479 -0
- data/Framework7-0.9.6/dist/js/framework7.min.js +18 -0
- data/Framework7-0.9.6/dist/js/my-app.js +48 -0
- data/Framework7-0.9.6/dist/services.html +28 -0
- data/Framework7-0.9.6/examples/split-view/about.html +19 -0
- data/Framework7-0.9.6/examples/split-view/css/my-app.css +23 -0
- data/Framework7-0.9.6/examples/split-view/index.html +135 -0
- data/Framework7-0.9.6/examples/split-view/jade/about.jade +15 -0
- data/Framework7-0.9.6/examples/split-view/jade/index.jade +107 -0
- data/Framework7-0.9.6/examples/split-view/jade/left-page-1.jade +15 -0
- data/Framework7-0.9.6/examples/split-view/jade/left-page-2.jade +15 -0
- data/Framework7-0.9.6/examples/split-view/jade/services.jade +15 -0
- data/Framework7-0.9.6/examples/split-view/js/my-app.js +15 -0
- data/Framework7-0.9.6/examples/split-view/left-page-1.html +19 -0
- data/Framework7-0.9.6/examples/split-view/left-page-2.html +19 -0
- data/Framework7-0.9.6/examples/split-view/less/my-app.less +23 -0
- data/Framework7-0.9.6/examples/split-view/services.html +19 -0
- data/Framework7-0.9.6/examples/split-view-panel/about.html +20 -0
- data/Framework7-0.9.6/examples/split-view-panel/css/my-app.css +56 -0
- data/Framework7-0.9.6/examples/split-view-panel/index.html +135 -0
- data/Framework7-0.9.6/examples/split-view-panel/jade/about.jade +18 -0
- data/Framework7-0.9.6/examples/split-view-panel/jade/index.jade +107 -0
- data/Framework7-0.9.6/examples/split-view-panel/jade/left-page-1.jade +15 -0
- data/Framework7-0.9.6/examples/split-view-panel/jade/left-page-2.jade +15 -0
- data/Framework7-0.9.6/examples/split-view-panel/jade/services.jade +18 -0
- data/Framework7-0.9.6/examples/split-view-panel/js/my-app.js +15 -0
- data/Framework7-0.9.6/examples/split-view-panel/left-page-1.html +19 -0
- data/Framework7-0.9.6/examples/split-view-panel/left-page-2.html +19 -0
- data/Framework7-0.9.6/examples/split-view-panel/less/my-app.less +62 -0
- data/Framework7-0.9.6/examples/split-view-panel/services.html +20 -0
- data/Framework7-0.9.6/examples/tab-bar/about.html +19 -0
- data/Framework7-0.9.6/examples/tab-bar/css/my-app.css +34 -0
- data/Framework7-0.9.6/examples/tab-bar/index.html +238 -0
- data/Framework7-0.9.6/examples/tab-bar/jade/about.jade +15 -0
- data/Framework7-0.9.6/examples/tab-bar/jade/index.jade +189 -0
- data/Framework7-0.9.6/examples/tab-bar/jade/services.jade +15 -0
- data/Framework7-0.9.6/examples/tab-bar/js/my-app.js +15 -0
- data/Framework7-0.9.6/examples/tab-bar/less/my-app.less +35 -0
- data/Framework7-0.9.6/examples/tab-bar/services.html +19 -0
- data/Framework7-0.9.6/kitchen-sink/about.html +22 -0
- data/Framework7-0.9.6/kitchen-sink/accordion.html +171 -0
- data/Framework7-0.9.6/kitchen-sink/color-themes.html +42 -0
- data/Framework7-0.9.6/kitchen-sink/contacts.html +190 -0
- data/Framework7-0.9.6/kitchen-sink/core-features.html +70 -0
- data/Framework7-0.9.6/kitchen-sink/css/kitchen-sink.css +233 -0
- data/Framework7-0.9.6/kitchen-sink/deep-2.html +22 -0
- data/Framework7-0.9.6/kitchen-sink/deep-navbar-2.html +19 -0
- data/Framework7-0.9.6/kitchen-sink/deep-navbar-3.html +19 -0
- data/Framework7-0.9.6/kitchen-sink/deep-navbar.html +18 -0
- data/Framework7-0.9.6/kitchen-sink/forms-buttons.html +64 -0
- data/Framework7-0.9.6/kitchen-sink/forms-checkboxes.html +200 -0
- data/Framework7-0.9.6/kitchen-sink/forms-elements.html +359 -0
- data/Framework7-0.9.6/kitchen-sink/forms-selects.html +72 -0
- data/Framework7-0.9.6/kitchen-sink/forms-storage.html +181 -0
- data/Framework7-0.9.6/kitchen-sink/forms.html +56 -0
- data/Framework7-0.9.6/kitchen-sink/grid.html +140 -0
- data/Framework7-0.9.6/kitchen-sink/hide-navbar-toolbar.html +42 -0
- data/Framework7-0.9.6/kitchen-sink/img/beach.jpg +0 -0
- data/Framework7-0.9.6/kitchen-sink/img/lock.jpg +0 -0
- data/Framework7-0.9.6/kitchen-sink/img/monkey.jpg +0 -0
- data/Framework7-0.9.6/kitchen-sink/img/mountains.jpg +0 -0
- data/Framework7-0.9.6/kitchen-sink/index.html +466 -0
- data/Framework7-0.9.6/kitchen-sink/infinite-scroll-load.php +19 -0
- data/Framework7-0.9.6/kitchen-sink/infinite-scroll.html +119 -0
- data/Framework7-0.9.6/kitchen-sink/jade/about.jade +19 -0
- data/Framework7-0.9.6/kitchen-sink/jade/accordion.jade +133 -0
- data/Framework7-0.9.6/kitchen-sink/jade/color-themes.jade +37 -0
- data/Framework7-0.9.6/kitchen-sink/jade/contacts.jade +115 -0
- data/Framework7-0.9.6/kitchen-sink/jade/core-features.jade +74 -0
- data/Framework7-0.9.6/kitchen-sink/jade/deep-navbar-2.jade +15 -0
- data/Framework7-0.9.6/kitchen-sink/jade/deep-navbar-3.jade +15 -0
- data/Framework7-0.9.6/kitchen-sink/jade/deep-navbar.jade +15 -0
- data/Framework7-0.9.6/kitchen-sink/jade/forms-buttons.jade +71 -0
- data/Framework7-0.9.6/kitchen-sink/jade/forms-checkboxes.jade +152 -0
- data/Framework7-0.9.6/kitchen-sink/jade/forms-elements.jade +239 -0
- data/Framework7-0.9.6/kitchen-sink/jade/forms-selects.jade +60 -0
- data/Framework7-0.9.6/kitchen-sink/jade/forms-storage.jade +134 -0
- data/Framework7-0.9.6/kitchen-sink/jade/forms.jade +52 -0
- data/Framework7-0.9.6/kitchen-sink/jade/grid.jade +110 -0
- data/Framework7-0.9.6/kitchen-sink/jade/hide-navbar-toolbar.jade +38 -0
- data/Framework7-0.9.6/kitchen-sink/jade/index.jade +427 -0
- data/Framework7-0.9.6/kitchen-sink/jade/infinite-scroll.jade +20 -0
- data/Framework7-0.9.6/kitchen-sink/jade/list-view.jade +266 -0
- data/Framework7-0.9.6/kitchen-sink/jade/login-screen-embedded.jade +22 -0
- data/Framework7-0.9.6/kitchen-sink/jade/login-screen.jade +20 -0
- data/Framework7-0.9.6/kitchen-sink/jade/media-lists.jade +170 -0
- data/Framework7-0.9.6/kitchen-sink/jade/messages.jade +71 -0
- data/Framework7-0.9.6/kitchen-sink/jade/modals.jade +36 -0
- data/Framework7-0.9.6/kitchen-sink/jade/navbars-toolbars.jade +43 -0
- data/Framework7-0.9.6/kitchen-sink/jade/no-navbar-toolbar.jade +7 -0
- data/Framework7-0.9.6/kitchen-sink/jade/no-navbar.jade +7 -0
- data/Framework7-0.9.6/kitchen-sink/jade/no-toolbar.jade +17 -0
- data/Framework7-0.9.6/kitchen-sink/jade/notifications.jade +23 -0
- data/Framework7-0.9.6/kitchen-sink/jade/panels.jade +21 -0
- data/Framework7-0.9.6/kitchen-sink/jade/photo-browser.jade +36 -0
- data/Framework7-0.9.6/kitchen-sink/jade/popover.jade +21 -0
- data/Framework7-0.9.6/kitchen-sink/jade/preloader.jade +31 -0
- data/Framework7-0.9.6/kitchen-sink/jade/pull-to-refresh.jade +44 -0
- data/Framework7-0.9.6/kitchen-sink/jade/searchbar.jade +146 -0
- data/Framework7-0.9.6/kitchen-sink/jade/slider-custom.jade +23 -0
- data/Framework7-0.9.6/kitchen-sink/jade/slider-horizontal.jade +18 -0
- data/Framework7-0.9.6/kitchen-sink/jade/slider-multiple.jade +48 -0
- data/Framework7-0.9.6/kitchen-sink/jade/slider-nested.jade +26 -0
- data/Framework7-0.9.6/kitchen-sink/jade/slider-space-between.jade +18 -0
- data/Framework7-0.9.6/kitchen-sink/jade/slider-vertical.jade +18 -0
- data/Framework7-0.9.6/kitchen-sink/jade/slider.jade +57 -0
- data/Framework7-0.9.6/kitchen-sink/jade/sortable-list.jade +107 -0
- data/Framework7-0.9.6/kitchen-sink/jade/swipe-delete.jade +195 -0
- data/Framework7-0.9.6/kitchen-sink/jade/tabbar-labels.jade +54 -0
- data/Framework7-0.9.6/kitchen-sink/jade/tabbar.jade +50 -0
- data/Framework7-0.9.6/kitchen-sink/jade/tabs.jade +34 -0
- data/Framework7-0.9.6/kitchen-sink/jade/transitions.jade +27 -0
- data/Framework7-0.9.6/kitchen-sink/js/kitchen-sink.js +442 -0
- data/Framework7-0.9.6/kitchen-sink/less/kitchen-sink.less +245 -0
- data/Framework7-0.9.6/kitchen-sink/list-view.html +318 -0
- data/Framework7-0.9.6/kitchen-sink/login-screen-embedded.html +36 -0
- data/Framework7-0.9.6/kitchen-sink/login-screen.html +21 -0
- data/Framework7-0.9.6/kitchen-sink/media-lists.html +173 -0
- data/Framework7-0.9.6/kitchen-sink/messages.html +84 -0
- data/Framework7-0.9.6/kitchen-sink/modals.html +33 -0
- data/Framework7-0.9.6/kitchen-sink/navbars-toolbars.html +46 -0
- data/Framework7-0.9.6/kitchen-sink/no-navbar-toolbar.html +11 -0
- data/Framework7-0.9.6/kitchen-sink/no-navbar.html +11 -0
- data/Framework7-0.9.6/kitchen-sink/no-toolbar.html +18 -0
- data/Framework7-0.9.6/kitchen-sink/notifications.html +21 -0
- data/Framework7-0.9.6/kitchen-sink/panel-right2.html +16 -0
- data/Framework7-0.9.6/kitchen-sink/panel-right3.html +16 -0
- data/Framework7-0.9.6/kitchen-sink/panels.html +23 -0
- data/Framework7-0.9.6/kitchen-sink/photo-browser.html +36 -0
- data/Framework7-0.9.6/kitchen-sink/popover.html +21 -0
- data/Framework7-0.9.6/kitchen-sink/preloader.html +28 -0
- data/Framework7-0.9.6/kitchen-sink/pull-to-refresh.html +52 -0
- data/Framework7-0.9.6/kitchen-sink/searchbar.html +233 -0
- data/Framework7-0.9.6/kitchen-sink/slider-custom.html +28 -0
- data/Framework7-0.9.6/kitchen-sink/slider-horizontal.html +29 -0
- data/Framework7-0.9.6/kitchen-sink/slider-multiple.html +89 -0
- data/Framework7-0.9.6/kitchen-sink/slider-nested.html +32 -0
- data/Framework7-0.9.6/kitchen-sink/slider-space-between.html +29 -0
- data/Framework7-0.9.6/kitchen-sink/slider-vertical.html +29 -0
- data/Framework7-0.9.6/kitchen-sink/slider.html +54 -0
- data/Framework7-0.9.6/kitchen-sink/sortable-list.html +137 -0
- data/Framework7-0.9.6/kitchen-sink/swipe-delete.html +216 -0
- data/Framework7-0.9.6/kitchen-sink/tabbar-labels.html +51 -0
- data/Framework7-0.9.6/kitchen-sink/tabbar.html +0 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +109 -0
- data/Rakefile +2 -0
- data/framework7rails.gemspec +23 -0
- data/install_local.sh +2 -0
- data/lib/framework7rails/version.rb +4 -0
- data/lib/framework7rails.rb +8 -0
- data/update_from_vendor.rb +40 -0
- data/vendor/assets/images/i-f7.png +0 -0
- data/vendor/assets/images/i-form-calendar.png +0 -0
- data/vendor/assets/images/i-form-comment.png +0 -0
- data/vendor/assets/images/i-form-email.png +0 -0
- data/vendor/assets/images/i-form-gender.png +0 -0
- data/vendor/assets/images/i-form-name.png +0 -0
- data/vendor/assets/images/i-form-password.png +0 -0
- data/vendor/assets/images/i-form-settings.png +0 -0
- data/vendor/assets/images/i-form-tel.png +0 -0
- data/vendor/assets/images/i-form-toggle.png +0 -0
- data/vendor/assets/images/i-form-url.png +0 -0
- data/vendor/assets/javascripts/framework7.js +8288 -0
- data/vendor/assets/javascripts/framework7.js.map +1 -0
- data/vendor/assets/stylesheets/framework7.css +5078 -0
- data/vendor/assets/stylesheets/framework7.themes.css +279 -0
- metadata +231 -3
@@ -0,0 +1,560 @@
|
|
1
|
+
'use strict';
|
2
|
+
/*global require:true, module:false*/
|
3
|
+
module.exports = function (grunt) {
|
4
|
+
// show elapsed time at the end
|
5
|
+
require('time-grunt')(grunt);
|
6
|
+
// load all grunt tasks
|
7
|
+
require('load-grunt-tasks')(grunt);
|
8
|
+
|
9
|
+
var framework7 = {
|
10
|
+
filename: 'framework7'
|
11
|
+
};
|
12
|
+
|
13
|
+
|
14
|
+
var customModules = grunt.file.readJSON('modules.json');
|
15
|
+
var customBanner = '/*\n' +
|
16
|
+
' * <%= pkg.name %> <%= pkg.version %> - Custom Build\n' +
|
17
|
+
' *\n' +
|
18
|
+
' * Included modules: <%= modulesList %>\n' +
|
19
|
+
' *\n' +
|
20
|
+
' * Copyright <%= grunt.template.today("yyyy") %>, <%= pkg.author %>\n' +
|
21
|
+
' * The iDangero.us\n' +
|
22
|
+
' * http://www.idangero.us/\n' +
|
23
|
+
' *\n' +
|
24
|
+
' * Created on: <%= grunt.template.today("mmmm d, yyyy, HH:MM") %>\n' +
|
25
|
+
'*/\n';
|
26
|
+
|
27
|
+
// List of js files to concatenate
|
28
|
+
var jsFilesList = [
|
29
|
+
'src/js/wrap-start.js',
|
30
|
+
'src/js/f7-intro.js',
|
31
|
+
'src/js/global-events.js',
|
32
|
+
'src/js/views.js',
|
33
|
+
'src/js/navbars.js',
|
34
|
+
'src/js/searchbar.js',
|
35
|
+
'src/js/messagebar.js',
|
36
|
+
'src/js/xhr.js',
|
37
|
+
'src/js/pages.js',
|
38
|
+
'src/js/modals.js',
|
39
|
+
'src/js/panels.js',
|
40
|
+
'src/js/messages.js',
|
41
|
+
'src/js/swipeout.js',
|
42
|
+
'src/js/sortable.js',
|
43
|
+
'src/js/smart-select.js',
|
44
|
+
'src/js/pull-to-refresh.js',
|
45
|
+
'src/js/infinite-scroll.js',
|
46
|
+
'src/js/tabs.js',
|
47
|
+
'src/js/accordion.js',
|
48
|
+
'src/js/fast-clicks.js',
|
49
|
+
'src/js/clicks.js',
|
50
|
+
'src/js/resize.js',
|
51
|
+
'src/js/forms-handler.js',
|
52
|
+
'src/js/push-state.js',
|
53
|
+
'src/js/slider.js',
|
54
|
+
'src/js/photo-browser.js',
|
55
|
+
'src/js/notifications.js',
|
56
|
+
'src/js/plugins.js',
|
57
|
+
'src/js/init.js',
|
58
|
+
'src/js/f7-outro.js',
|
59
|
+
'src/js/dom7-intro.js',
|
60
|
+
'src/js/dom7-methods.js',
|
61
|
+
'src/js/dom7-ajax.js',
|
62
|
+
'src/js/dom7-utils.js',
|
63
|
+
'src/js/dom7-outro.js',
|
64
|
+
'src/js/proto-support.js',
|
65
|
+
'src/js/proto-device.js',
|
66
|
+
'src/js/proto-plugins.js',
|
67
|
+
'src/js/wrap-end.js',
|
68
|
+
'src/js/template7.js'
|
69
|
+
];
|
70
|
+
|
71
|
+
// Project configuration.
|
72
|
+
grunt.initConfig({
|
73
|
+
framework7: framework7,
|
74
|
+
// Metadata.
|
75
|
+
pkg: grunt.file.readJSON('bower.json'),
|
76
|
+
banner: '/*\n' +
|
77
|
+
' * <%= pkg.name %> <%= pkg.version %>\n' +
|
78
|
+
' * <%= pkg.description %>\n' +
|
79
|
+
' *\n' +
|
80
|
+
' * <%= pkg.homepage %>\n' +
|
81
|
+
' *\n' +
|
82
|
+
' * Copyright <%= grunt.template.today("yyyy") %>, <%= pkg.author %>\n' +
|
83
|
+
' * The iDangero.us\n' +
|
84
|
+
' * http://www.idangero.us/\n' +
|
85
|
+
' *\n' +
|
86
|
+
' * Licensed under <%= pkg.license.join(" & ") %>\n' +
|
87
|
+
' *\n' +
|
88
|
+
' * Released on: <%= grunt.template.today("mmmm d, yyyy") %>\n' +
|
89
|
+
'*/\n',
|
90
|
+
|
91
|
+
// Task configuration.
|
92
|
+
connect: {
|
93
|
+
server: {
|
94
|
+
options: {
|
95
|
+
port: 3000,
|
96
|
+
base: ''
|
97
|
+
}
|
98
|
+
}
|
99
|
+
},
|
100
|
+
open: {
|
101
|
+
kitchen: {
|
102
|
+
path: 'http://localhost:3000/kitchen-sink'
|
103
|
+
}
|
104
|
+
},
|
105
|
+
less: {
|
106
|
+
build: {
|
107
|
+
options: {
|
108
|
+
paths: ['less'],
|
109
|
+
cleancss: false
|
110
|
+
},
|
111
|
+
files: {
|
112
|
+
'build/css/<%= framework7.filename %>.css' : ['src/less/<%= framework7.filename %>.less'],
|
113
|
+
'build/css/<%= framework7.filename %>.rtl.css' : ['src/less/<%= framework7.filename %>.rtl.less'],
|
114
|
+
'build/css/<%= framework7.filename %>.themes.css' : ['src/less/<%= framework7.filename %>.themes.less']
|
115
|
+
}
|
116
|
+
},
|
117
|
+
dist: {
|
118
|
+
options: {
|
119
|
+
paths: ['less'],
|
120
|
+
cleancss: true
|
121
|
+
},
|
122
|
+
files: {
|
123
|
+
'dist/css/<%= framework7.filename %>.min.css' : ['src/less/<%= framework7.filename %>.less'],
|
124
|
+
'dist/css/<%= framework7.filename %>.rtl.min.css' : ['src/less/<%= framework7.filename %>.rtl.less'],
|
125
|
+
'dist/css/<%= framework7.filename %>.themes.min.css' : ['src/less/<%= framework7.filename %>.themes.less']
|
126
|
+
}
|
127
|
+
},
|
128
|
+
kitchen: {
|
129
|
+
options: {
|
130
|
+
paths: ['kitchen-sink/less/'],
|
131
|
+
cleancss: false
|
132
|
+
},
|
133
|
+
files: {
|
134
|
+
'kitchen-sink/css/kitchen-sink.css' : 'kitchen-sink/less/kitchen-sink.less'
|
135
|
+
}
|
136
|
+
},
|
137
|
+
examples: {
|
138
|
+
options: {
|
139
|
+
cleancss: false
|
140
|
+
},
|
141
|
+
files: [
|
142
|
+
{
|
143
|
+
expand: true,
|
144
|
+
cwd: 'examples/tab-bar/less/',
|
145
|
+
src: ['*.less'],
|
146
|
+
dest: 'examples/tab-bar/css/',
|
147
|
+
ext: '.css'
|
148
|
+
},
|
149
|
+
{
|
150
|
+
expand: true,
|
151
|
+
cwd: 'examples/split-view/less/',
|
152
|
+
src: ['*.less'],
|
153
|
+
dest: 'examples/split-view/css/',
|
154
|
+
ext: '.css'
|
155
|
+
},
|
156
|
+
{
|
157
|
+
expand: true,
|
158
|
+
cwd: 'examples/split-view-panel/less/',
|
159
|
+
src: ['*.less'],
|
160
|
+
dest: 'examples/split-view-panel/css/',
|
161
|
+
ext: '.css'
|
162
|
+
}
|
163
|
+
]
|
164
|
+
},
|
165
|
+
apps: {
|
166
|
+
options: {
|
167
|
+
cleancss: false
|
168
|
+
},
|
169
|
+
files: [
|
170
|
+
{
|
171
|
+
expand: true,
|
172
|
+
cwd: 'apps/weather7/less/',
|
173
|
+
src: ['*.less'],
|
174
|
+
dest: 'apps/weather7/css/',
|
175
|
+
ext: '.css'
|
176
|
+
},
|
177
|
+
{
|
178
|
+
expand: true,
|
179
|
+
cwd: 'apps/todo7/less/',
|
180
|
+
src: ['*.less'],
|
181
|
+
dest: 'apps/todo7/css/',
|
182
|
+
ext: '.css'
|
183
|
+
},
|
184
|
+
]
|
185
|
+
},
|
186
|
+
custom: {
|
187
|
+
options: {
|
188
|
+
paths: ['less'],
|
189
|
+
cleancss: false
|
190
|
+
},
|
191
|
+
files: {
|
192
|
+
'custom/css/<%= framework7.filename %>.custom.css' : ['custom/<%= framework7.filename %>.custom.less'],
|
193
|
+
}
|
194
|
+
},
|
195
|
+
custom_min: {
|
196
|
+
options: {
|
197
|
+
paths: ['less'],
|
198
|
+
cleancss: true
|
199
|
+
},
|
200
|
+
files: {
|
201
|
+
'custom/css/<%= framework7.filename %>.custom.min.css' : ['custom/<%= framework7.filename %>.custom.less'],
|
202
|
+
}
|
203
|
+
},
|
204
|
+
},
|
205
|
+
concat: {
|
206
|
+
options: {
|
207
|
+
banner: '<%= banner %>',
|
208
|
+
stripBanners: false,
|
209
|
+
process: function (src, filename) {
|
210
|
+
if (filename.indexOf('.js') >= 0) {
|
211
|
+
var addIndent = ' ';
|
212
|
+
filename = filename.replace('src/js/', '');
|
213
|
+
if (filename === 'wrap-start.js' || filename === 'wrap-end.js' || filename === 'template7.js') {
|
214
|
+
addIndent = '';
|
215
|
+
}
|
216
|
+
var add4spaces = ('f7-intro.js f7-outro.js proto-device.js proto-plugins.js proto-support.js dom7-intro.js dom7-outro.js').split(' ');
|
217
|
+
if (add4spaces.indexOf(filename) >= 0) {
|
218
|
+
addIndent = ' ';
|
219
|
+
}
|
220
|
+
var add8spaces = ('dom7-methods.js dom7-ajax.js dom7-utils.js').split(' ');
|
221
|
+
if (add8spaces.indexOf(filename) >= 0) {
|
222
|
+
addIndent = ' ';
|
223
|
+
}
|
224
|
+
src = grunt.util.normalizelf(src);
|
225
|
+
return src.split(grunt.util.linefeed).map(function (line) {
|
226
|
+
return addIndent + line;
|
227
|
+
}).join(grunt.util.linefeed);
|
228
|
+
}
|
229
|
+
else return src;
|
230
|
+
}
|
231
|
+
},
|
232
|
+
js: {
|
233
|
+
src: jsFilesList,
|
234
|
+
dest: 'build/js/<%= framework7.filename %>.js'
|
235
|
+
},
|
236
|
+
css_build: {
|
237
|
+
src: ['build/css/<%= framework7.filename %>.css'],
|
238
|
+
dest: 'build/css/<%= framework7.filename %>.css'
|
239
|
+
},
|
240
|
+
css_dist: {
|
241
|
+
src: ['dist/css/<%= framework7.filename %>.min.css'],
|
242
|
+
dest: 'dist/css/<%= framework7.filename %>.min.css'
|
243
|
+
},
|
244
|
+
js_custom: {
|
245
|
+
options: {
|
246
|
+
banner: customBanner
|
247
|
+
},
|
248
|
+
src: '<%= modulesJsList %>',
|
249
|
+
dest: 'custom/js/<%= framework7.filename %>.custom.js'
|
250
|
+
},
|
251
|
+
less_custom: {
|
252
|
+
options: {
|
253
|
+
banner: '',
|
254
|
+
},
|
255
|
+
src: '<%= modulesLessList %>',
|
256
|
+
dest: 'custom/<%= framework7.filename %>.custom.less'
|
257
|
+
},
|
258
|
+
css_custom: {
|
259
|
+
options: {
|
260
|
+
banner: customBanner
|
261
|
+
},
|
262
|
+
files: {
|
263
|
+
'custom/css/<%= framework7.filename %>.custom.css' : ['custom/css/<%= framework7.filename %>.custom.css'],
|
264
|
+
'custom/css/<%= framework7.filename %>.custom.min.css' : ['custom/css/<%= framework7.filename %>.custom.min.css'],
|
265
|
+
}
|
266
|
+
}
|
267
|
+
},
|
268
|
+
uglify: {
|
269
|
+
options: {
|
270
|
+
banner: '<%= banner %>'
|
271
|
+
},
|
272
|
+
dist: {
|
273
|
+
src: ['dist/js/<%= framework7.filename %>.js'],
|
274
|
+
dest: 'dist/js/<%= framework7.filename %>.min.js',
|
275
|
+
},
|
276
|
+
custom: {
|
277
|
+
options: {
|
278
|
+
banner: customBanner
|
279
|
+
},
|
280
|
+
src: ['custom/js/<%= framework7.filename %>.custom.js'],
|
281
|
+
dest: 'custom/js/<%= framework7.filename %>.custom.min.js',
|
282
|
+
}
|
283
|
+
},
|
284
|
+
jshint: {
|
285
|
+
options: {
|
286
|
+
jshintrc: '.jshintrc',
|
287
|
+
reporter: require('jshint-stylish')
|
288
|
+
},
|
289
|
+
build: {
|
290
|
+
src: ['Gruntfile.js', 'build/js/framework7.js']
|
291
|
+
},
|
292
|
+
custom: {
|
293
|
+
src: ['custom/js/<%= framework7.filename %>.custom.js']
|
294
|
+
}
|
295
|
+
},
|
296
|
+
|
297
|
+
watch: {
|
298
|
+
build: {
|
299
|
+
files: ['src/**'],
|
300
|
+
tasks: ['build'],
|
301
|
+
options: {
|
302
|
+
livereload: true
|
303
|
+
}
|
304
|
+
},
|
305
|
+
kitchen: {
|
306
|
+
files: ['kitchen-sink/jade/**', 'kitchen-sink/less/**'],
|
307
|
+
tasks: ['jade:kitchen', 'less:kitchen'],
|
308
|
+
options: {
|
309
|
+
livereload: true
|
310
|
+
}
|
311
|
+
},
|
312
|
+
examples: {
|
313
|
+
files: [
|
314
|
+
'examples/tab-bar/jade/**', 'examples/tab-bar/less/**',
|
315
|
+
'examples/split-view/jade/**', 'examples/split-view/less/**',
|
316
|
+
'examples/split-view-panel/jade/**', 'examples/split-view-panel/less/**'
|
317
|
+
],
|
318
|
+
tasks: ['jade:examples', 'less:examples'],
|
319
|
+
options: {
|
320
|
+
livereload: true
|
321
|
+
}
|
322
|
+
},
|
323
|
+
apps: {
|
324
|
+
files: [
|
325
|
+
'apps/weather7/jade/**', 'apps/weather7/less/**',
|
326
|
+
'apps/todo7/jade/**', 'apps/todo7/less/**',
|
327
|
+
],
|
328
|
+
tasks: ['jade:apps', 'less:apps'],
|
329
|
+
options: {
|
330
|
+
livereload: true
|
331
|
+
}
|
332
|
+
}
|
333
|
+
},
|
334
|
+
jade: {
|
335
|
+
build: {
|
336
|
+
options: {
|
337
|
+
pretty: true,
|
338
|
+
},
|
339
|
+
files: [{
|
340
|
+
expand: true,
|
341
|
+
cwd: 'src/templates/',
|
342
|
+
src: ['*.jade'],
|
343
|
+
dest: 'build/',
|
344
|
+
ext: '.html'
|
345
|
+
}]
|
346
|
+
},
|
347
|
+
kitchen: {
|
348
|
+
options: {
|
349
|
+
pretty: true
|
350
|
+
},
|
351
|
+
files: [{
|
352
|
+
expand: true,
|
353
|
+
cwd: 'kitchen-sink/jade/',
|
354
|
+
src: ['*.jade'],
|
355
|
+
dest: 'kitchen-sink/',
|
356
|
+
ext: '.html'
|
357
|
+
}]
|
358
|
+
},
|
359
|
+
examples: {
|
360
|
+
options: {
|
361
|
+
pretty: true
|
362
|
+
},
|
363
|
+
files: [
|
364
|
+
{
|
365
|
+
expand: true,
|
366
|
+
cwd: 'examples/tab-bar/jade/',
|
367
|
+
src: ['*.jade'],
|
368
|
+
dest: 'examples/tab-bar/',
|
369
|
+
ext: '.html'
|
370
|
+
},
|
371
|
+
{
|
372
|
+
expand: true,
|
373
|
+
cwd: 'examples/split-view/jade/',
|
374
|
+
src: ['*.jade'],
|
375
|
+
dest: 'examples/split-view/',
|
376
|
+
ext: '.html'
|
377
|
+
},
|
378
|
+
{
|
379
|
+
expand: true,
|
380
|
+
cwd: 'examples/split-view-panel/jade/',
|
381
|
+
src: ['*.jade'],
|
382
|
+
dest: 'examples/split-view-panel/',
|
383
|
+
ext: '.html'
|
384
|
+
},
|
385
|
+
|
386
|
+
]
|
387
|
+
},
|
388
|
+
apps: {
|
389
|
+
options: {
|
390
|
+
pretty: true
|
391
|
+
},
|
392
|
+
files: [
|
393
|
+
{
|
394
|
+
expand: true,
|
395
|
+
cwd: 'apps/weather7/jade/',
|
396
|
+
src: ['*.jade'],
|
397
|
+
dest: 'apps/weather7/',
|
398
|
+
ext: '.html'
|
399
|
+
},
|
400
|
+
{
|
401
|
+
expand: true,
|
402
|
+
cwd: 'apps/todo7/jade/',
|
403
|
+
src: ['*.jade'],
|
404
|
+
dest: 'apps/todo7/',
|
405
|
+
ext: '.html'
|
406
|
+
},
|
407
|
+
]
|
408
|
+
}
|
409
|
+
},
|
410
|
+
copy: {
|
411
|
+
build: {
|
412
|
+
files: [
|
413
|
+
{
|
414
|
+
expand: true,
|
415
|
+
cwd: 'src/',
|
416
|
+
src: ['img/**'],
|
417
|
+
dest: 'build/'
|
418
|
+
},
|
419
|
+
{
|
420
|
+
expand: true,
|
421
|
+
cwd: 'src/my-app/',
|
422
|
+
src: ['my-app.css'],
|
423
|
+
dest: 'build/css/'
|
424
|
+
},
|
425
|
+
{
|
426
|
+
expand: true,
|
427
|
+
cwd: 'src/my-app/',
|
428
|
+
src: ['my-app.js'],
|
429
|
+
dest: 'build/js/'
|
430
|
+
}
|
431
|
+
]
|
432
|
+
},
|
433
|
+
dist: {
|
434
|
+
files: [
|
435
|
+
{
|
436
|
+
expand: true,
|
437
|
+
cwd: 'build/',
|
438
|
+
src: ['**'],
|
439
|
+
dest: 'dist/'
|
440
|
+
}
|
441
|
+
]
|
442
|
+
},
|
443
|
+
},
|
444
|
+
});
|
445
|
+
|
446
|
+
// Default task.
|
447
|
+
this.registerTask('default', ['build']);
|
448
|
+
|
449
|
+
// Build a new version of the library
|
450
|
+
this.registerTask('test', 'Test of <%= pkg.name %>', [
|
451
|
+
'concat:js',
|
452
|
+
'less:build',
|
453
|
+
'concat:css_build',
|
454
|
+
'jshint:build',
|
455
|
+
]);
|
456
|
+
|
457
|
+
// Build a new version of the library
|
458
|
+
this.registerTask('build', 'Builds a development version of <%= pkg.name %>', [
|
459
|
+
'concat:js',
|
460
|
+
'less:build',
|
461
|
+
'concat:css_build',
|
462
|
+
'jshint:build',
|
463
|
+
'copy:build',
|
464
|
+
'jade:build',
|
465
|
+
]);
|
466
|
+
|
467
|
+
// Release
|
468
|
+
this.registerTask('dist', 'Builds a distributable version of <%= pkg.name %>', [
|
469
|
+
'concat:js',
|
470
|
+
'less:build',
|
471
|
+
'less:dist',
|
472
|
+
'concat:css_build',
|
473
|
+
'concat:css_dist',
|
474
|
+
'jshint:build',
|
475
|
+
'copy:build',
|
476
|
+
'jade:build',
|
477
|
+
'copy:dist',
|
478
|
+
'uglify:dist'
|
479
|
+
]);
|
480
|
+
|
481
|
+
|
482
|
+
// Kitchen Sink
|
483
|
+
this.registerTask('kitchen', 'Builds a kithcen sink', [
|
484
|
+
'build',
|
485
|
+
'jade:kitchen',
|
486
|
+
'less:kitchen'
|
487
|
+
]);
|
488
|
+
this.registerTask('examples', 'Compile examples less and jade files', [
|
489
|
+
'jade:examples',
|
490
|
+
'less:examples'
|
491
|
+
]);
|
492
|
+
this.registerTask('apps', 'Compile apps less and jade files', [
|
493
|
+
'jade:apps',
|
494
|
+
'less:apps'
|
495
|
+
]);
|
496
|
+
|
497
|
+
// Server
|
498
|
+
this.registerTask('server', 'Run server', [
|
499
|
+
'connect',
|
500
|
+
'open',
|
501
|
+
'watch'
|
502
|
+
]);
|
503
|
+
|
504
|
+
// Custom Build
|
505
|
+
this.registerTask('custom', 'Include modules in custom build', function (modules) {
|
506
|
+
if (modules) modules = modules.split(',');
|
507
|
+
modules = modules || [];
|
508
|
+
var modulesJsList = [], modulesLessList = [];
|
509
|
+
var i, module;
|
510
|
+
modulesJsList.push.apply(modulesJsList, customModules.core_intro.js);
|
511
|
+
modulesLessList.push.apply(modulesLessList, customModules.core_intro.less);
|
512
|
+
|
513
|
+
for (i = 0; i < modules.length; i++) {
|
514
|
+
module = customModules[modules[i]];
|
515
|
+
if (module.dependencies.length > 0) {
|
516
|
+
modules.push.apply(modules, module.dependencies);
|
517
|
+
}
|
518
|
+
}
|
519
|
+
for (i = 0; i < modules.length; i++) {
|
520
|
+
module = customModules[modules[i]];
|
521
|
+
if (!(module)) continue;
|
522
|
+
|
523
|
+
if (module.js.length > 0) {
|
524
|
+
modulesJsList.push.apply(modulesJsList, module.js);
|
525
|
+
}
|
526
|
+
if (module.less.length > 0) {
|
527
|
+
modulesLessList.push.apply(modulesLessList, module.less);
|
528
|
+
}
|
529
|
+
}
|
530
|
+
modulesJsList.push.apply(modulesJsList, customModules.core_outro.js);
|
531
|
+
modulesLessList.push.apply(modulesLessList, customModules.core_outro.less);
|
532
|
+
|
533
|
+
// Unique
|
534
|
+
var uniqueJsList = [];
|
535
|
+
var uniqueLessList = [];
|
536
|
+
for (i = 0; i < modulesJsList.length; i++) {
|
537
|
+
if (uniqueJsList.indexOf(modulesJsList[i]) < 0) uniqueJsList.push(modulesJsList[i]);
|
538
|
+
}
|
539
|
+
for (i = 0; i < modulesLessList.length; i++) {
|
540
|
+
if (uniqueLessList.indexOf(modulesLessList[i]) < 0) uniqueLessList.push(modulesLessList[i]);
|
541
|
+
}
|
542
|
+
|
543
|
+
// Tasks vars
|
544
|
+
grunt.config.set('modulesJsList', uniqueJsList);
|
545
|
+
grunt.config.set('modulesLessList', uniqueLessList);
|
546
|
+
grunt.config.set('modulesList', modules.join(', '));
|
547
|
+
|
548
|
+
// Run tasks
|
549
|
+
grunt.task.run([
|
550
|
+
'concat:js_custom',
|
551
|
+
'jshint:custom',
|
552
|
+
'uglify:custom',
|
553
|
+
'concat:less_custom',
|
554
|
+
'less:custom',
|
555
|
+
'less:custom_min',
|
556
|
+
'concat:css_custom'
|
557
|
+
]);
|
558
|
+
});
|
559
|
+
|
560
|
+
};
|
@@ -0,0 +1,20 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2014 Vladimir Kharlampidi
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
6
|
+
this software and associated documentation files (the "Software"), to deal in
|
7
|
+
the Software without restriction, including without limitation the rights to
|
8
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
9
|
+
the Software, and to permit persons to whom the Software is furnished to do so,
|
10
|
+
subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
17
|
+
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
18
|
+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
19
|
+
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
20
|
+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -0,0 +1,113 @@
|
|
1
|
+
[![Stories in Ready](https://badge.waffle.io/nolimits4web/framework7.png?label=ready&title=Ready)](https://waffle.io/nolimits4web/framework7)
|
2
|
+
[![Build Status](https://travis-ci.org/nolimits4web/Framework7.svg?branch=master)](https://travis-ci.org/nolimits4web/Framework7)
|
3
|
+
[![devDependency Status](https://david-dm.org/nolimits4web/framework7/dev-status.svg)](https://david-dm.org/nolimits4web/framework7#info=devDependencies)
|
4
|
+
[![Flattr this git repo](http://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=nolimits4web&url=https://github.com/nolimits4web/framework7/&title=Framework7&language=JavaScript&tags=github&category=software)
|
5
|
+
|
6
|
+
Framework7
|
7
|
+
==========
|
8
|
+
|
9
|
+
Full Featured HTML Framework For Building iOS7 Apps
|
10
|
+
|
11
|
+
## Attention!
|
12
|
+
|
13
|
+
Framework7 is on early development stage, so many things may be changed and sorted in a short time.
|
14
|
+
|
15
|
+
## Getting Started
|
16
|
+
* Clone/download this repo
|
17
|
+
* Start building your App from changing Kitchen Sink, or from a clean template from `dist/` folder
|
18
|
+
|
19
|
+
## Server
|
20
|
+
|
21
|
+
Because Framework7 uses Ajax for navigation between pages you will need a server. So to make it work you should put dist folder (or Kitchen Sink) on a server. Or, as an option, you may use Grunt's server. Just run:
|
22
|
+
|
23
|
+
```
|
24
|
+
$ grunt server
|
25
|
+
```
|
26
|
+
|
27
|
+
* Kitchen Sink will be available on `http://localhost:3000/kitchen-sink/`
|
28
|
+
* Dist - on `http://localhost:3000/dist/`
|
29
|
+
|
30
|
+
## Kitchen Sink
|
31
|
+
|
32
|
+
Framework7' JS and CSS files in Kitchen Sink are temporary linked to `build/` to make development process easier on this stage. So to make it work you need to build Framework7 (see Build section) or to re-link JS and CSS files to `dist/` folder.
|
33
|
+
|
34
|
+
## Dist vs Build versions
|
35
|
+
|
36
|
+
On production use files (JS and CSS) only from `dist/` folder, there will be the most stable versions, `build/` folder is only for development purpose
|
37
|
+
|
38
|
+
## Build
|
39
|
+
|
40
|
+
Framework7 uses `grunt` to build a development (build) and dist versions.
|
41
|
+
|
42
|
+
First you need to have `grunt-cli` which you should install globally.
|
43
|
+
|
44
|
+
```
|
45
|
+
$ npm install -g grunt-cli
|
46
|
+
```
|
47
|
+
|
48
|
+
Then install all dependencies, in repo's root:
|
49
|
+
|
50
|
+
```
|
51
|
+
$ npm install
|
52
|
+
$ grunt build
|
53
|
+
```
|
54
|
+
|
55
|
+
The result is available in `build/` folder.
|
56
|
+
|
57
|
+
## Dist/Release
|
58
|
+
|
59
|
+
After you have made build:
|
60
|
+
|
61
|
+
```
|
62
|
+
$ grunt dist
|
63
|
+
```
|
64
|
+
|
65
|
+
Distributable version will available in `dist/` folder.
|
66
|
+
|
67
|
+
## Custom build
|
68
|
+
|
69
|
+
You can build custom version of Framework7 with only required components/modules. For example, if we need to include only Accordion, Modals and Tabs modules in addition to Framework 7 core:
|
70
|
+
|
71
|
+
```
|
72
|
+
$ grunt custom:accordion,modals,tabs
|
73
|
+
```
|
74
|
+
After that you will find created `custom/` folder with generated JS and CSS files. Here is the list of available additional modules:
|
75
|
+
|
76
|
+
* accordion
|
77
|
+
* searchbar
|
78
|
+
* messages
|
79
|
+
* modals
|
80
|
+
* swipeout
|
81
|
+
* sortable
|
82
|
+
* smart-select
|
83
|
+
* pull-to-refresh
|
84
|
+
* infinite-scroll
|
85
|
+
* tabs
|
86
|
+
* fast-clicks
|
87
|
+
* forms (means Ajax forms and forms storage)
|
88
|
+
* push-state
|
89
|
+
* slider
|
90
|
+
* photo-browser
|
91
|
+
* notifications
|
92
|
+
|
93
|
+
## Contributing
|
94
|
+
|
95
|
+
All changes should be commited to `src/` files. Framework7 uses LESS for CSS compliations, and concatenated JS files (look at Gruntfile.js for concat files order)
|
96
|
+
|
97
|
+
If you want to help in Framework7 development and make it event better visit this page: http://www.idangero.us/framework7/contribute/
|
98
|
+
|
99
|
+
## Forum
|
100
|
+
|
101
|
+
If you have questions about Framework7 or want to help others you are welcome to special forum at http://www.idangero.us/framework7/forum/
|
102
|
+
|
103
|
+
## Docs
|
104
|
+
|
105
|
+
Documentation available at http://idangero.us/framework7/docs/
|
106
|
+
|
107
|
+
## Tutorials
|
108
|
+
|
109
|
+
Tutorials available at http://idangero.us/framework7/tutorials/
|
110
|
+
|
111
|
+
## Showcase
|
112
|
+
|
113
|
+
Appstore apps made with Framework7: http://idangero.us/framework7/showcase/
|