lato_view 1.1
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 +7 -0
- data/Rakefile +35 -0
- data/app/assets/fonts/lato-bold-webfont.eot +0 -0
- data/app/assets/fonts/lato-bold-webfont.svg +4551 -0
- data/app/assets/fonts/lato-bold-webfont.ttf +0 -0
- data/app/assets/fonts/lato-bold-webfont.woff +0 -0
- data/app/assets/fonts/lato-bold-webfont.woff2 +0 -0
- data/app/assets/fonts/lato-regular-webfont.eot +0 -0
- data/app/assets/fonts/lato-regular-webfont.svg +4241 -0
- data/app/assets/fonts/lato-regular-webfont.ttf +0 -0
- data/app/assets/fonts/lato-regular-webfont.woff +0 -0
- data/app/assets/fonts/lato-regular-webfont.woff2 +0 -0
- data/app/assets/images/lato_view/icons/_arrow-down.svg +1 -0
- data/app/assets/images/lato_view/icons/_arrow-left.svg +1 -0
- data/app/assets/images/lato_view/icons/_arrow-right.svg +1 -0
- data/app/assets/images/lato_view/icons/_arrow-up.svg +1 -0
- data/app/assets/images/lato_view/icons/_artist.svg +1 -0
- data/app/assets/images/lato_view/icons/_artwork.svg +1 -0
- data/app/assets/images/lato_view/icons/_attachment.svg +1 -0
- data/app/assets/images/lato_view/icons/_calendar.svg +1 -0
- data/app/assets/images/lato_view/icons/_clients.svg +1 -0
- data/app/assets/images/lato_view/icons/_close.svg +1 -0
- data/app/assets/images/lato_view/icons/_download.svg +1 -0
- data/app/assets/images/lato_view/icons/_file.svg +1 -0
- data/app/assets/images/lato_view/icons/_google-plus.svg +1 -0
- data/app/assets/images/lato_view/icons/_home.svg +1 -0
- data/app/assets/images/lato_view/icons/_info.svg +1 -0
- data/app/assets/images/lato_view/icons/_instagram.svg +1 -0
- data/app/assets/images/lato_view/icons/_lato-logo.svg +1 -0
- data/app/assets/images/lato_view/icons/_linkedin.svg +1 -0
- data/app/assets/images/lato_view/icons/_list.svg +1 -0
- data/app/assets/images/lato_view/icons/_magni-glass.svg +1 -0
- data/app/assets/images/lato_view/icons/_mail.svg +1 -0
- data/app/assets/images/lato_view/icons/_minus.svg +1 -0
- data/app/assets/images/lato_view/icons/_modify.svg +1 -0
- data/app/assets/images/lato_view/icons/_percentage.svg +1 -0
- data/app/assets/images/lato_view/icons/_plus.svg +1 -0
- data/app/assets/images/lato_view/icons/_power.svg +1 -0
- data/app/assets/images/lato_view/icons/_settings.svg +1 -0
- data/app/assets/images/lato_view/icons/_sweet.svg +1 -0
- data/app/assets/images/lato_view/icons/_trash.svg +1 -0
- data/app/assets/images/lato_view/icons/_twitter.svg +1 -0
- data/app/assets/images/lato_view/icons/_upload.svg +1 -0
- data/app/assets/images/lato_view/icons/_user.svg +1 -0
- data/app/assets/images/lato_view/icons/_users.svg +1 -0
- data/app/assets/images/lato_view/icons/_warning.svg +1 -0
- data/app/assets/images/lato_view/icons/_web.svg +1 -0
- data/app/assets/images/lato_view/vendor/trumbowyg_icons.svg +1 -0
- data/app/assets/images/lato_view/work-in-progress/da-scegliere.svg +225 -0
- data/app/assets/images/lato_view/work-in-progress/social.svg +76 -0
- data/app/assets/javascripts/lato_view/application.js +68 -0
- data/app/assets/javascripts/lato_view/build/ActionBar.js +65 -0
- data/app/assets/javascripts/lato_view/build/Dropdown.js +33 -0
- data/app/assets/javascripts/lato_view/build/Flash.js +23 -0
- data/app/assets/javascripts/lato_view/build/FormManager.js +159 -0
- data/app/assets/javascripts/lato_view/build/Navigation.js +79 -0
- data/app/assets/javascripts/lato_view/build/Util.js +91 -0
- data/app/assets/javascripts/lato_view/build/Validator.js +235 -0
- data/app/assets/javascripts/lato_view/vendor/dropzone.min.js +2 -0
- data/app/assets/javascripts/lato_view/vendor/jquery.email-autocomplete.min.js +9 -0
- data/app/assets/javascripts/lato_view/vendor/modernizr.js +3 -0
- data/app/assets/javascripts/lato_view/vendor/moment.min.js +7 -0
- data/app/assets/javascripts/lato_view/vendor/picker-it_IT.js +1 -0
- data/app/assets/javascripts/lato_view/vendor/picker.date.js +5 -0
- data/app/assets/javascripts/lato_view/vendor/picker.js +7 -0
- data/app/assets/javascripts/lato_view/vendor/picker.time.js +5 -0
- data/app/assets/javascripts/lato_view/vendor/trumbowyg.js +1522 -0
- data/app/assets/stylesheets/lato_view/application.scss.erb +32 -0
- data/app/assets/stylesheets/lato_view/base/_base.scss +53 -0
- data/app/assets/stylesheets/lato_view/base/_helpers.scss +491 -0
- data/app/assets/stylesheets/lato_view/base/_media.scss +32 -0
- data/app/assets/stylesheets/lato_view/base/_reset.scss +424 -0
- data/app/assets/stylesheets/lato_view/base/_typography.scss +138 -0
- data/app/assets/stylesheets/lato_view/config/_config.scss +143 -0
- data/app/assets/stylesheets/lato_view/config/templates/_base-template.scss +158 -0
- data/app/assets/stylesheets/lato_view/config/templates/_black-template.scss +158 -0
- data/app/assets/stylesheets/lato_view/modules/_action-bar.scss +62 -0
- data/app/assets/stylesheets/lato_view/modules/_arranger.scss +10 -0
- data/app/assets/stylesheets/lato_view/modules/_button-group.scss +70 -0
- data/app/assets/stylesheets/lato_view/modules/_buttons.scss +177 -0
- data/app/assets/stylesheets/lato_view/modules/_content-block.scss +33 -0
- data/app/assets/stylesheets/lato_view/modules/_datepicker.scss +580 -0
- data/app/assets/stylesheets/lato_view/modules/_dropdown.scss +166 -0
- data/app/assets/stylesheets/lato_view/modules/_flash.scss +55 -0
- data/app/assets/stylesheets/lato_view/modules/_form-controls.scss +83 -0
- data/app/assets/stylesheets/lato_view/modules/_form.scss +297 -0
- data/app/assets/stylesheets/lato_view/modules/_modules.scss +19 -0
- data/app/assets/stylesheets/lato_view/modules/_navbar.scss +262 -0
- data/app/assets/stylesheets/lato_view/modules/_pagination.scss +30 -0
- data/app/assets/stylesheets/lato_view/modules/_search-bar.scss +44 -0
- data/app/assets/stylesheets/lato_view/modules/_select.scss +313 -0
- data/app/assets/stylesheets/lato_view/modules/_sidebar.scss +211 -0
- data/app/assets/stylesheets/lato_view/modules/_status.scss +39 -0
- data/app/assets/stylesheets/lato_view/modules/_table.scss +94 -0
- data/app/assets/stylesheets/lato_view/modules/_upload.scss +371 -0
- data/app/assets/stylesheets/lato_view/modules/_wyswyg.scss +755 -0
- data/app/assets/stylesheets/lato_view/views/_admin.scss +30 -0
- data/app/assets/stylesheets/lato_view/views/_grid.scss +448 -0
- data/app/assets/stylesheets/lato_view/views/_login.scss +152 -0
- data/app/assets/stylesheets/lato_view/views/_print.scss +41 -0
- data/app/assets/stylesheets/lato_view/views/_views.scss +48 -0
- data/app/concepts/lato_view/actionbar/cell.rb +65 -0
- data/app/concepts/lato_view/actionbar/views/show.html.erb +21 -0
- data/app/concepts/lato_view/block/cell.rb +52 -0
- data/app/concepts/lato_view/buttongroup/cell.rb +50 -0
- data/app/concepts/lato_view/buttongroup/views/show.html.erb +7 -0
- data/app/concepts/lato_view/dropdown/cell.rb +46 -0
- data/app/concepts/lato_view/dropdown/views/show.html.erb +19 -0
- data/app/concepts/lato_view/index/cell.rb +112 -0
- data/app/concepts/lato_view/index/views/head.html.erb +12 -0
- data/app/concepts/lato_view/index/views/rows.html.erb +49 -0
- data/app/concepts/lato_view/input/cell.rb +148 -0
- data/app/concepts/lato_view/input/views/checkbox.html.erb +8 -0
- data/app/concepts/lato_view/input/views/date.html.erb +5 -0
- data/app/concepts/lato_view/input/views/editor.html.erb +7 -0
- data/app/concepts/lato_view/input/views/email.html.erb +5 -0
- data/app/concepts/lato_view/input/views/file.html.erb +17 -0
- data/app/concepts/lato_view/input/views/multiple-select.html.erb +12 -0
- data/app/concepts/lato_view/input/views/number.html.erb +5 -0
- data/app/concepts/lato_view/input/views/password.html.erb +8 -0
- data/app/concepts/lato_view/input/views/radio.html.erb +10 -0
- data/app/concepts/lato_view/input/views/select.html.erb +12 -0
- data/app/concepts/lato_view/input/views/text.html.erb +5 -0
- data/app/concepts/lato_view/input/views/textarea.html.erb +5 -0
- data/app/concepts/lato_view/input/views/time.html.erb +5 -0
- data/app/concepts/lato_view/searchbar/cell.rb +63 -0
- data/app/concepts/lato_view/searchbar/views/show.html.erb +6 -0
- data/app/concepts/lato_view/table/cell.rb +88 -0
- data/app/concepts/lato_view/table/views/head.html.erb +9 -0
- data/app/concepts/lato_view/table/views/row.html.erb +7 -0
- data/app/concepts/lato_view/table/views/rows.html.erb +5 -0
- data/app/controllers/lato_view/assets_controller.rb +18 -0
- data/app/controllers/lato_view/develop_controller.rb +18 -0
- data/app/helpers/lato_view/application_helper.rb +22 -0
- data/app/views/lato_view/develop/home.html.erb +281 -0
- data/app/views/lato_view/icons/_arrowdown.svg +1 -0
- data/app/views/lato_view/icons/_arrowleft.svg +1 -0
- data/app/views/lato_view/icons/_arrowright.svg +1 -0
- data/app/views/lato_view/icons/_arrowup.svg +1 -0
- data/app/views/lato_view/icons/_artist.svg +1 -0
- data/app/views/lato_view/icons/_artwork.svg +1 -0
- data/app/views/lato_view/icons/_attachment.svg +1 -0
- data/app/views/lato_view/icons/_calendar.svg +1 -0
- data/app/views/lato_view/icons/_clients.svg +1 -0
- data/app/views/lato_view/icons/_close.svg +1 -0
- data/app/views/lato_view/icons/_download.svg +1 -0
- data/app/views/lato_view/icons/_file.svg +1 -0
- data/app/views/lato_view/icons/_googleplus.svg +1 -0
- data/app/views/lato_view/icons/_home.svg +1 -0
- data/app/views/lato_view/icons/_info.svg +1 -0
- data/app/views/lato_view/icons/_instagram.svg +1 -0
- data/app/views/lato_view/icons/_latologo.svg +1 -0
- data/app/views/lato_view/icons/_linkedin.svg +1 -0
- data/app/views/lato_view/icons/_list.svg +1 -0
- data/app/views/lato_view/icons/_magni-glass.svg +1 -0
- data/app/views/lato_view/icons/_mail.svg +1 -0
- data/app/views/lato_view/icons/_minus.svg +1 -0
- data/app/views/lato_view/icons/_modify.svg +1 -0
- data/app/views/lato_view/icons/_percentage.svg +1 -0
- data/app/views/lato_view/icons/_plus.svg +1 -0
- data/app/views/lato_view/icons/_power.svg +1 -0
- data/app/views/lato_view/icons/_settings.svg +1 -0
- data/app/views/lato_view/icons/_sweet.svg +1 -0
- data/app/views/lato_view/icons/_trash.svg +1 -0
- data/app/views/lato_view/icons/_twitter.svg +1 -0
- data/app/views/lato_view/icons/_upload.svg +1 -0
- data/app/views/lato_view/icons/_user.svg +1 -0
- data/app/views/lato_view/icons/_users.svg +1 -0
- data/app/views/lato_view/icons/_warning.svg +1 -0
- data/app/views/lato_view/icons/_web.svg +1 -0
- data/app/views/lato_view/layout/_flash.html.erb +5 -0
- data/app/views/lato_view/layout/_header.html.erb +31 -0
- data/app/views/lato_view/layout/_sidebar.html.erb +28 -0
- data/app/views/lato_view/layout/_strings.html.erb +8 -0
- data/app/views/layouts/lato_layout.html.erb +81 -0
- data/config/example.yml +19 -0
- data/config/initializers/assets.rb +5 -0
- data/config/initializers/init.rb +5 -0
- data/config/initializers/lists.rb +34 -0
- data/config/initializers/ram.rb +23 -0
- data/config/routes.rb +9 -0
- data/lib/lato_view/concepts.rb +19 -0
- data/lib/lato_view/engine.rb +23 -0
- data/lib/lato_view/interface/assets.rb +90 -0
- data/lib/lato_view/interface/images.rb +69 -0
- data/lib/lato_view/interface/navigation.rb +17 -0
- data/lib/lato_view/interface/themes.rb +37 -0
- data/lib/lato_view/interface.rb +19 -0
- data/lib/lato_view.rb +20 -0
- data/lib/tasks/lato_starter_tasks.rake +11 -0
- data/test/controllers/lato_view/api/v1/api_controller_test.rb +9 -0
- data/test/controllers/lato_view/application_controller_test.rb +9 -0
- data/test/controllers/lato_view/back/back_controller_test.rb +9 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/bin/setup +29 -0
- data/test/dummy/config/application.rb +25 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +41 -0
- data/test/dummy/config/environments/production.rb +79 -0
- data/test/dummy/config/environments/test.rb +42 -0
- data/test/dummy/config/initializers/assets.rb +11 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +3 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/integration/navigation_test.rb +8 -0
- data/test/lato_view_test.rb +7 -0
- data/test/test_helper.rb +21 -0
- metadata +453 -0
|
@@ -0,0 +1,68 @@
|
|
|
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 any plugin's vendor/assets/javascripts directory 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/rails/sprockets#sprockets-directives) for details
|
|
11
|
+
// about supported directives.
|
|
12
|
+
//
|
|
13
|
+
//= require jquery2
|
|
14
|
+
//= require jquery_ujs
|
|
15
|
+
//= require lato_view/vendor/modernizr
|
|
16
|
+
//= require selectize
|
|
17
|
+
//= require lato_view/vendor/moment.min
|
|
18
|
+
//= require lato_view/vendor/picker
|
|
19
|
+
//= require lato_view/vendor/picker.date
|
|
20
|
+
//= require lato_view/vendor/picker.time
|
|
21
|
+
//= require lato_view/vendor/picker-it_IT
|
|
22
|
+
//= require lato_view/vendor/dropzone.min
|
|
23
|
+
//= require lato_view/vendor/jquery.email-autocomplete.min
|
|
24
|
+
//= require lato_view/vendor/trumbowyg
|
|
25
|
+
//= require lato_view/build/Util
|
|
26
|
+
//= require lato_view/build/Validator
|
|
27
|
+
//= require lato_view/build/FormManager
|
|
28
|
+
//= require lato_view/build/Dropdown
|
|
29
|
+
//= require lato_view/build/Navigation
|
|
30
|
+
//= require lato_view/build/ActionBar
|
|
31
|
+
//= require lato_view/build/Flash
|
|
32
|
+
|
|
33
|
+
var Application = (function($) {
|
|
34
|
+
|
|
35
|
+
var onResize = function() {
|
|
36
|
+
$(window).on('resize', function() {
|
|
37
|
+
Navigation.manageSidebarDropdown();
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
var init = function() {
|
|
42
|
+
$(document).on('ready', function() {
|
|
43
|
+
|
|
44
|
+
// Active js functionalities
|
|
45
|
+
document.documentElement.className = 'js';
|
|
46
|
+
|
|
47
|
+
// Init our modules
|
|
48
|
+
Dropdown.init();
|
|
49
|
+
Navigation.init();
|
|
50
|
+
//ActionBar.init();
|
|
51
|
+
Flash.init();
|
|
52
|
+
FormManager.init();
|
|
53
|
+
$('.editor').trumbowyg({
|
|
54
|
+
svgPath: '/ui/icons.svg'
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
// Functions executed on resize
|
|
58
|
+
onResize();
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
return {
|
|
63
|
+
init: init,
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
})(jQuery);
|
|
67
|
+
|
|
68
|
+
Application.init();
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
var ActionBar = (function($) {
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
* Manage responsive Action Bar component - moves the unnecessary elements to a separate menu.
|
|
6
|
+
* @params: -
|
|
7
|
+
* @return: undefined
|
|
8
|
+
*/
|
|
9
|
+
var _responsiveActionBar = function() {
|
|
10
|
+
var resizing = false;
|
|
11
|
+
var $actionBar = $('.action-bar');
|
|
12
|
+
var $actionRemove = $actionBar.find('.action-remove');
|
|
13
|
+
|
|
14
|
+
function _detachElements(elements) {
|
|
15
|
+
$(elements).detach();
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
var moveActionBarElement = Util.debounce(function() {
|
|
19
|
+
|
|
20
|
+
if($actionRemove.length) {
|
|
21
|
+
$actionBar.each(function(index, el) {
|
|
22
|
+
var $elToRemove = $(el).find('.action-remove');
|
|
23
|
+
var $actionHolder = $(el).find('.action-nav-menu');
|
|
24
|
+
var $header = $('.main-navigation-header');
|
|
25
|
+
|
|
26
|
+
var dataAttrs = [];
|
|
27
|
+
$elToRemove.each(function(index, el) {
|
|
28
|
+
dataAttrs.push($(el).data('position'));
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
if ( Modernizr.mq("only screen and (max-width: 1070px)")) {
|
|
32
|
+
_detachElements($elToRemove);
|
|
33
|
+
$elToRemove.appendTo($actionHolder);
|
|
34
|
+
} else if ( Modernizr.mq("only screen and (min-width: 1071px)") ) {
|
|
35
|
+
_detachElements($elToRemove);
|
|
36
|
+
$elToRemove.each(function(index, el) {
|
|
37
|
+
$(el).appendTo($elToRemove.eq(0));
|
|
38
|
+
});
|
|
39
|
+
$header.find('.nav-logo').after($elToRemove);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
resizing = false;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
}, 200);
|
|
47
|
+
|
|
48
|
+
moveActionBarElement();
|
|
49
|
+
$(window).on('resize', function() {
|
|
50
|
+
if( !resizing ) {
|
|
51
|
+
window.requestAnimationFrame(moveActionBarElement);
|
|
52
|
+
resizing = true;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
var init = function() {
|
|
58
|
+
_responsiveActionBar();
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
return {
|
|
62
|
+
init: init
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
})(jQuery);
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
var Dropdown = (function($) {
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var _manageDropdown = function() {
|
|
5
|
+
|
|
6
|
+
$(document).on('click', '.active-voice', function(event) {
|
|
7
|
+
event.stopPropagation();
|
|
8
|
+
$(this).parent('.dropdown').toggleClass('is-arranger-open');
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
$(document).on('click', '.nav-account-area', function(event) {
|
|
12
|
+
event.stopPropagation();
|
|
13
|
+
$('body').toggleClass('is-dropdown-open');
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
// FIXME - da rivedere il click fuori dall'area dropdown
|
|
17
|
+
$('html').on('click', function(event) {
|
|
18
|
+
if($('body').hasClass('is-dropdown-open')) {
|
|
19
|
+
//$('body').removeClass('is-dropdown-open');
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
var init = function() {
|
|
26
|
+
_manageDropdown();
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
return {
|
|
30
|
+
init: init
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
})(jQuery);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
var Flash = (function($) {
|
|
2
|
+
|
|
3
|
+
var flashTimeout = 4000;
|
|
4
|
+
|
|
5
|
+
var _showFlashes = function() {
|
|
6
|
+
var $flash = $('.flashes-container');
|
|
7
|
+
|
|
8
|
+
if($flash.length) {
|
|
9
|
+
setTimeout(function() {
|
|
10
|
+
$flash.addClass('is-remove');
|
|
11
|
+
}, flashTimeout);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
var init = function() {
|
|
16
|
+
_showFlashes();
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
return {
|
|
20
|
+
init: init
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
})(jQuery);
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
var FormManager = (function($) {
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
// Activate selectize.js module
|
|
5
|
+
var _manageSelect = function() {
|
|
6
|
+
$('.select').selectize({
|
|
7
|
+
hideSelected: 'true' // for multiple-select working
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
// Activate pikaday.js module
|
|
12
|
+
var _manageDatePicker = function() {
|
|
13
|
+
var $datepicker = $('.date-picker').pickadate({
|
|
14
|
+
firstDay: 1,
|
|
15
|
+
min: new Date(1900, 0, 1),
|
|
16
|
+
max: new Date(3000, 12, 31),
|
|
17
|
+
format: 'dd/mm/yyyy'
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
var _manageTimePicker = function() {
|
|
22
|
+
var $timePicker = $('.time-picker').pickatime();
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
var _manageFileUploader = function() {
|
|
26
|
+
var $dropZone = $('.drop-zone');
|
|
27
|
+
var parentForm = $dropZone.parent('.lato-form');
|
|
28
|
+
|
|
29
|
+
$dropZone.dropzone({ url: parentForm.attr('action') });
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
// Manage input type="file" component.
|
|
33
|
+
// Replaces the label text depending on the uploaded files.
|
|
34
|
+
var _manageInputFile = function() {
|
|
35
|
+
if($('.input-file').length) {
|
|
36
|
+
$('.input-file').each( function() {
|
|
37
|
+
var $input = $(this);
|
|
38
|
+
var $label = $input.next('label');
|
|
39
|
+
var labelVal = $label.html();
|
|
40
|
+
|
|
41
|
+
$input.on('change', function(event) {
|
|
42
|
+
var fileName = '';
|
|
43
|
+
|
|
44
|
+
if(this.files && this.files.length > 1) {
|
|
45
|
+
fileName = (this.getAttribute('data-multiple-caption') || '' ).replace( '{count}', this.files.length );
|
|
46
|
+
} else if(event.target.value) {
|
|
47
|
+
fileName = event.target.value.split('\\').pop();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if(fileName) {
|
|
51
|
+
$label.find('span').html(fileName);
|
|
52
|
+
} else {
|
|
53
|
+
$label.html(labelVal);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
// Firefox bug fix
|
|
59
|
+
$input
|
|
60
|
+
.on('focus', function(){ $input.addClass( 'has-focus' ); })
|
|
61
|
+
.on('blur', function(){ $input.removeClass( 'has-focus' ); });
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// Manage password-reveal sub-module.
|
|
67
|
+
// Transforms the input type.
|
|
68
|
+
var _manageInputPassword = function() {
|
|
69
|
+
$(document).on('click', '.password-reveal', function(event) {
|
|
70
|
+
event.preventDefault();
|
|
71
|
+
var $input = $(this).prev('.input');
|
|
72
|
+
|
|
73
|
+
$(this).toggleClass('is-text');
|
|
74
|
+
$input.attr('type') === 'password' ? $input.attr('type', 'text') : $input.attr('type', 'password');
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
// Activate email data-list autocomplete
|
|
79
|
+
var _insertSuggestions = function() {
|
|
80
|
+
if($('.email-suggestion').length) {
|
|
81
|
+
var domains = ['yahoo.com', 'gmail.com', 'google.com', 'hotmail.com', 'me.com', 'libero.it', 'live.it', 'live.com'];
|
|
82
|
+
|
|
83
|
+
$('.email-suggestion').emailautocomplete({
|
|
84
|
+
domains: domains
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
/*
|
|
90
|
+
* Manage form submission/validation
|
|
91
|
+
* @return: undefined or boolean
|
|
92
|
+
*/
|
|
93
|
+
var _manageFormSubmit = function() {
|
|
94
|
+
$('.lato-form').on('submit', function(event) {
|
|
95
|
+
|
|
96
|
+
var tests = {
|
|
97
|
+
"number": Validator.controlNumber('.input-number'),
|
|
98
|
+
"required": Validator.controlRequired('data-input="required"'),
|
|
99
|
+
"email": Validator.controlEmail('.input-email'),
|
|
100
|
+
"password": Validator.controlPasswordEquality('.input-password', '.confirm-password'),
|
|
101
|
+
"length": Validator.controlInputLength('.input-length'),
|
|
102
|
+
"radiobox": Validator.controlRadiobox('data-input="radio"')
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
// Basta che uno dei test fallisca per generare un errore
|
|
106
|
+
$.each(tests, function(index, val) {
|
|
107
|
+
if(val === false) {
|
|
108
|
+
event.preventDefault();
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Manage form validation in semi-real-time.
|
|
117
|
+
var _manageBlurValidation = function() {
|
|
118
|
+
$('.lato-form').on('blur', '.input', function(event) {
|
|
119
|
+
var type = $(this).parent('.form-control').data('input');
|
|
120
|
+
var controlType = $(this).parent('.form-control').data('control');
|
|
121
|
+
|
|
122
|
+
// Email suggestion case
|
|
123
|
+
if($('.eac-input-wrap').length) {
|
|
124
|
+
Validator.controlEmail('.input-email');
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// Get input desired className.
|
|
128
|
+
var tester = '.' + $(this).attr('class').split(' ')[1];
|
|
129
|
+
|
|
130
|
+
// Manage data-control type
|
|
131
|
+
switch(controlType) {
|
|
132
|
+
case 'number':
|
|
133
|
+
Validator.controlNumber(tester);
|
|
134
|
+
break;
|
|
135
|
+
case 'email':
|
|
136
|
+
Validator.controlEmail(tester);
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
var init = function() {
|
|
144
|
+
_manageSelect();
|
|
145
|
+
_manageDatePicker();
|
|
146
|
+
_manageTimePicker();
|
|
147
|
+
// _manageFileUploader();
|
|
148
|
+
_manageInputFile();
|
|
149
|
+
_manageInputPassword();
|
|
150
|
+
_insertSuggestions();
|
|
151
|
+
_manageFormSubmit();
|
|
152
|
+
_manageBlurValidation();
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
return {
|
|
156
|
+
init: init
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
})(jQuery);
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
var Navigation = (function($) {
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
* Debounced function which manages the click handler for the dropdown's list-item.
|
|
6
|
+
* @params: -
|
|
7
|
+
* @return: undefined
|
|
8
|
+
*/
|
|
9
|
+
var sidebarDropdown = Util.debounce(function() {
|
|
10
|
+
var $sidebarListItem = $('.sidebar-list-item');
|
|
11
|
+
|
|
12
|
+
if(Modernizr.mq("only screen and (max-width: 1023px)")) {
|
|
13
|
+
$(document).on('click', '.sidebar-main-link', function(event) {
|
|
14
|
+
if($(this).parent('.sidebar-list-item').hasClass('has-child')) {
|
|
15
|
+
event.preventDefault();
|
|
16
|
+
$(this).next('ul').toggleClass('is-drop-open');
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
} else {
|
|
20
|
+
$(document).off('click', '.sidebar-main-link');
|
|
21
|
+
$sidebarListItem.find('ul').removeClass('is-drop-open');
|
|
22
|
+
}
|
|
23
|
+
}, 200);
|
|
24
|
+
|
|
25
|
+
/*
|
|
26
|
+
* Manage responsive menu - moves the admin dropdown to the sidebar.
|
|
27
|
+
* @params: -
|
|
28
|
+
* @return: undefined
|
|
29
|
+
*/
|
|
30
|
+
var responsiveMenu = function() {
|
|
31
|
+
var resizing = false;
|
|
32
|
+
var $topNavigation = $('.nav-account-area');
|
|
33
|
+
var $sidebar = $('.main-navigation-sidebar');
|
|
34
|
+
var $header = $('.main-navigation-header');
|
|
35
|
+
|
|
36
|
+
function _detachElements() {
|
|
37
|
+
$topNavigation.detach();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
var moveNavigation = Util.debounce(function() {
|
|
41
|
+
if ( Modernizr.mq("only screen and (max-width: 766px)")) {
|
|
42
|
+
_detachElements();
|
|
43
|
+
$topNavigation.appendTo($sidebar);
|
|
44
|
+
} else if ( Modernizr.mq("only screen and (min-width: 767px)") ) {
|
|
45
|
+
_detachElements();
|
|
46
|
+
$header.find('.nav-logo').after($topNavigation);
|
|
47
|
+
}
|
|
48
|
+
resizing = false;
|
|
49
|
+
}, 200);
|
|
50
|
+
|
|
51
|
+
moveNavigation();
|
|
52
|
+
$(window).on('resize', function() {
|
|
53
|
+
if( !resizing ) {
|
|
54
|
+
window.requestAnimationFrame(moveNavigation);
|
|
55
|
+
resizing = true;
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
var _openMobileMenu = function() {
|
|
61
|
+
var $sidebar = $('.main-navigation-sidebar');
|
|
62
|
+
$(document).on('click', '.menu-toggle', function() {
|
|
63
|
+
$(this).toggleClass('is-mobile-menu-open');
|
|
64
|
+
$sidebar.toggleClass('is-mobile-menu-open');
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
var init = function() {
|
|
69
|
+
sidebarDropdown();
|
|
70
|
+
responsiveMenu();
|
|
71
|
+
_openMobileMenu();
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
return {
|
|
75
|
+
init: init,
|
|
76
|
+
manageSidebarDropdown: sidebarDropdown
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
})(jQuery);
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
var Util = (function($) {
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
* Debounce any function
|
|
6
|
+
* @params:
|
|
7
|
+
* func: function to test.
|
|
8
|
+
* wait: the time interval for the next function execution.
|
|
9
|
+
* immediate: triggers the function on the leading edge, instead of the trailing.
|
|
10
|
+
* @return: a function, that, as long as it continues to be invoked, will not be triggered.
|
|
11
|
+
*/
|
|
12
|
+
var debounce = function(func, wait, immediate) {
|
|
13
|
+
var timeout;
|
|
14
|
+
return function() {
|
|
15
|
+
var context = this, args = arguments;
|
|
16
|
+
var later = function() {
|
|
17
|
+
timeout = null;
|
|
18
|
+
if (!immediate) func.apply(context, args);
|
|
19
|
+
};
|
|
20
|
+
var callNow = immediate && !timeout;
|
|
21
|
+
clearTimeout(timeout);
|
|
22
|
+
timeout = setTimeout(later, wait);
|
|
23
|
+
if (callNow) func.apply(context, args);
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
/*
|
|
28
|
+
* Check if the value given is a number.
|
|
29
|
+
* @params:
|
|
30
|
+
* value: value to test
|
|
31
|
+
* @return: boolean
|
|
32
|
+
*/
|
|
33
|
+
var isNumber = function(value) {
|
|
34
|
+
return !Number(value);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/*
|
|
38
|
+
* Check if two strings have the same value.
|
|
39
|
+
* @params:
|
|
40
|
+
* firstValue: value to test.
|
|
41
|
+
* secondValue: value to compare to.
|
|
42
|
+
* @return: boolean
|
|
43
|
+
*/
|
|
44
|
+
var isEqual = function(firstValue, secondValue) {
|
|
45
|
+
return firstValue === secondValue ? true : false;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
/*
|
|
49
|
+
* Check if a string is empty
|
|
50
|
+
* @params:
|
|
51
|
+
* value: value to test
|
|
52
|
+
* @return: boolean
|
|
53
|
+
*/
|
|
54
|
+
var isEmptyString = function(value) {
|
|
55
|
+
return value === '';
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/*
|
|
59
|
+
* Check if the lenght of a given value respects the limit given.
|
|
60
|
+
* @params:
|
|
61
|
+
* el: element to test
|
|
62
|
+
* limit: limit to give. Ex: max, min, between
|
|
63
|
+
* minValue: minimum value to respect
|
|
64
|
+
* maxValue: maximum value to respect
|
|
65
|
+
* @return: boolean
|
|
66
|
+
*/
|
|
67
|
+
var checkLength = function(el, limit, minValue, maxValue) {
|
|
68
|
+
var $length = $(el).val().length;
|
|
69
|
+
minValue = minValue || 1;
|
|
70
|
+
maxValue = maxValue || 0;
|
|
71
|
+
|
|
72
|
+
if (limit === 'max') {
|
|
73
|
+
return $length <= maxValue;
|
|
74
|
+
} else if (limit === 'min') {
|
|
75
|
+
return $length >= minValue;
|
|
76
|
+
} else if (limit === 'between') {
|
|
77
|
+
return $length >= minValue && $length <= maxValue;
|
|
78
|
+
} else {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
return {
|
|
84
|
+
debounce: debounce,
|
|
85
|
+
isNumber: isNumber,
|
|
86
|
+
isEqual: isEqual,
|
|
87
|
+
isEmptyString: isEmptyString,
|
|
88
|
+
checkLength: checkLength
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
})(jQuery);
|