workarea-slick_slider 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.editorconfig +15 -0
- data/.eslintrc +34 -0
- data/.gitignore +10 -0
- data/.rubocop.yml +8 -0
- data/.scss-lint.yml +188 -0
- data/CHANGELOG.md +52 -0
- data/Gemfile +5 -0
- data/README.md +284 -0
- data/Rakefile +63 -0
- data/app/assets/images/workarea/storefront/icons/arrow_left.svg +4 -0
- data/app/assets/images/workarea/storefront/icons/arrow_right.svg +4 -0
- data/app/assets/javascripts/workarea/storefront/slick_slider/config.js +17 -0
- data/app/assets/javascripts/workarea/storefront/slick_slider/modules/slick_slider.js +71 -0
- data/app/assets/javascripts/workarea/storefront/slick_slider/modules/slick_slider_analytics.js +88 -0
- data/app/assets/javascripts/workarea/storefront/slick_slider/templates/slick_slider_nav_next.jst.ejs.ruby +5 -0
- data/app/assets/javascripts/workarea/storefront/slick_slider/templates/slick_slider_nav_prev.jst.ejs.ruby +5 -0
- data/app/assets/stylesheets/workarea/storefront/slick_slider/components/_slick_slider.scss +132 -0
- data/app/helpers/workarea/storefront/slider_helper.rb +57 -0
- data/app/views/workarea/storefront/style_guides/components/_slick_slider.html.haml +48 -0
- data/bin/rails +18 -0
- data/config/initializers/appends.rb +33 -0
- data/config/locales/en.yml +6 -0
- data/lib/workarea/slick_slider/engine.rb +12 -0
- data/lib/workarea/slick_slider/version.rb +5 -0
- data/lib/workarea/slick_slider.rb +13 -0
- data/script/admin_ci +9 -0
- data/script/ci +11 -0
- data/script/core_ci +9 -0
- data/script/plugins_ci +9 -0
- data/script/storefront_ci +9 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/config/manifest.js +4 -0
- data/test/dummy/app/assets/images/.keep +0 -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 +3 -0
- data/test/dummy/app/controllers/concerns/.keep +0 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/jobs/application_job.rb +2 -0
- data/test/dummy/app/mailers/application_mailer.rb +4 -0
- data/test/dummy/app/models/concerns/.keep +0 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/app/views/layouts/mailer.html.erb +13 -0
- data/test/dummy/app/views/layouts/mailer.text.erb +1 -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 +34 -0
- data/test/dummy/bin/update +29 -0
- data/test/dummy/config/application.rb +28 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/cable.yml +9 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +54 -0
- data/test/dummy/config/environments/production.rb +86 -0
- data/test/dummy/config/environments/test.rb +43 -0
- data/test/dummy/config/initializers/application_controller_renderer.rb +6 -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 +5 -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/new_framework_defaults.rb +21 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/workarea.rb +5 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/puma.rb +47 -0
- data/test/dummy/config/routes.rb +5 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/config/spring.rb +6 -0
- data/test/dummy/config.ru +5 -0
- data/test/dummy/lib/assets/.keep +0 -0
- data/test/dummy/log/.keep +0 -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/apple-touch-icon-precomposed.png +0 -0
- data/test/dummy/public/apple-touch-icon.png +0 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/javascripts/fixtures/slick_slider.html.haml +3 -0
- data/test/javascripts/fixtures/slick_slider_with_options.html.haml +3 -0
- data/test/javascripts/slick_slider_spec.js +37 -0
- data/test/javascripts/spec_helper.js +2 -0
- data/test/teaspoon_env.rb +10 -0
- data/test/test_helper.rb +10 -0
- data/workarea-slick_slider.gemspec +23 -0
- metadata +159 -0
@@ -0,0 +1,17 @@
|
|
1
|
+
(function () {
|
2
|
+
'use strict';
|
3
|
+
|
4
|
+
/**
|
5
|
+
* Config Variables
|
6
|
+
*/
|
7
|
+
|
8
|
+
WORKAREA.config.slickSlider = {
|
9
|
+
options: {
|
10
|
+
prevArrow: JST['workarea/storefront/slick_slider/templates/slick_slider_nav_prev'](),
|
11
|
+
nextArrow: JST['workarea/storefront/slick_slider/templates/slick_slider_nav_next'](),
|
12
|
+
dotsClass: 'slick-slider__dots'
|
13
|
+
},
|
14
|
+
stopOnInteraction: false,
|
15
|
+
waitForImages: false
|
16
|
+
};
|
17
|
+
})();
|
@@ -0,0 +1,71 @@
|
|
1
|
+
/**
|
2
|
+
* @namespace WORKAREA.slickSlider
|
3
|
+
*/
|
4
|
+
WORKAREA.registerModule('slickSlider', (function () {
|
5
|
+
'use strict';
|
6
|
+
|
7
|
+
var checkImagesAndLoad = function(loadCount, imageCount, $slider, options) {
|
8
|
+
if (loadCount === imageCount) {
|
9
|
+
$slider.slick(options)
|
10
|
+
.addClass('slick-slider--images-loaded')
|
11
|
+
.removeClass('slick-slider--waiting-for-images');
|
12
|
+
}
|
13
|
+
},
|
14
|
+
|
15
|
+
waitForImages = function($slider, options) {
|
16
|
+
var $images = $('img', $slider),
|
17
|
+
imageCount = $images.length,
|
18
|
+
loadCount = 0;
|
19
|
+
|
20
|
+
$slider.addClass('slick-slider--waiting-for-images');
|
21
|
+
$images.each(function(index, image){
|
22
|
+
if ( $(image).prop('complete') ) {
|
23
|
+
loadCount ++;
|
24
|
+
checkImagesAndLoad(loadCount, imageCount, $slider, options);
|
25
|
+
} else {
|
26
|
+
$(image).on('load', function() {
|
27
|
+
loadCount ++;
|
28
|
+
checkImagesAndLoad(loadCount, imageCount, $slider, options);
|
29
|
+
});
|
30
|
+
}
|
31
|
+
});
|
32
|
+
},
|
33
|
+
|
34
|
+
getConfig = function(options) {
|
35
|
+
return _.merge({}, WORKAREA.config.slickSlider, options);
|
36
|
+
},
|
37
|
+
|
38
|
+
stopAutoplay = function(event) {
|
39
|
+
$(event.currentTarget).slick('slickPause');
|
40
|
+
},
|
41
|
+
|
42
|
+
initSlider = function(index, slider) {
|
43
|
+
var $slider = $(slider),
|
44
|
+
slickSettings = getConfig($slider.data('slickSlider'));
|
45
|
+
|
46
|
+
if ( slickSettings.waitForImages ) {
|
47
|
+
waitForImages($slider, slickSettings.options);
|
48
|
+
} else {
|
49
|
+
$slider.slick(slickSettings.options);
|
50
|
+
}
|
51
|
+
|
52
|
+
if (slickSettings.stopOnInteraction) {
|
53
|
+
$slider.on('click swipe', stopAutoplay);
|
54
|
+
}
|
55
|
+
|
56
|
+
WORKAREA.slickSliderAnalytics.initSliderAnalytics($slider);
|
57
|
+
},
|
58
|
+
|
59
|
+
/**
|
60
|
+
* @method
|
61
|
+
* @name init
|
62
|
+
* @memberof WORKAREA.slickSlider
|
63
|
+
*/
|
64
|
+
init = function ($scope) {
|
65
|
+
$('[data-slick-slider]', $scope).each(initSlider);
|
66
|
+
};
|
67
|
+
|
68
|
+
return {
|
69
|
+
init: init
|
70
|
+
};
|
71
|
+
}()));
|
data/app/assets/javascripts/workarea/storefront/slick_slider/modules/slick_slider_analytics.js
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
/**
|
2
|
+
* @namespace WORKAREA.slickSliderAnalytics
|
3
|
+
*/
|
4
|
+
WORKAREA.registerModule('slickSliderAnalytics', (function () {
|
5
|
+
'use strict';
|
6
|
+
|
7
|
+
var sendSwipeAnalyticsEvent = function (changeEvent, direction, currentSlide) {
|
8
|
+
WORKAREA.analytics.fireCallback('sliderSwipeEvent', {
|
9
|
+
domEvent: 'swipe',
|
10
|
+
payload: {
|
11
|
+
eventAction: 'swipe',
|
12
|
+
eventCategory: 'swipe',
|
13
|
+
eventTarget: changeEvent.delegateTarget,
|
14
|
+
eventDirection: direction,
|
15
|
+
eventCurrentSlide: currentSlide
|
16
|
+
}
|
17
|
+
});
|
18
|
+
},
|
19
|
+
|
20
|
+
swipeAnalyticsHandler = function(event, slider, direction) {
|
21
|
+
// Using one here allows each slide to be bound to the event only the first time the slide changes
|
22
|
+
// rather than continuing to be bound for later changes resulting in resending the analytics event
|
23
|
+
// multiple times as the slides keep changing
|
24
|
+
$(event.currentTarget).one('afterChange', function(changeEvent, slick, currentSlide) {
|
25
|
+
sendSwipeAnalyticsEvent(changeEvent, direction, currentSlide);
|
26
|
+
});
|
27
|
+
},
|
28
|
+
|
29
|
+
sendAnalytics = function(analytics) {
|
30
|
+
WORKAREA.analytics.fireCallback('sliderClickEvent', analytics);
|
31
|
+
},
|
32
|
+
|
33
|
+
setUpAnalyticsData = function(event) {
|
34
|
+
var analytics = {
|
35
|
+
domEvent: 'click',
|
36
|
+
payload: {
|
37
|
+
eventCategory: 'click'
|
38
|
+
}
|
39
|
+
};
|
40
|
+
|
41
|
+
if (event.data.target === '.slick-current') {
|
42
|
+
_.merge(analytics.payload, {
|
43
|
+
eventTarget: event.delegateTarget,
|
44
|
+
eventCurrentSlide: $(event.currentTarget).data('slickIndex')
|
45
|
+
});
|
46
|
+
} else {
|
47
|
+
// Using one here allows each slide to be bound to the event only the first time the slide changes
|
48
|
+
// rather than continuing to be bound for later changes resulting in resending the analytics event
|
49
|
+
// multiple times as the slides keep changing
|
50
|
+
$(event.delegateTarget).one('afterChange', { eventTarget: event.currentTarget, target: event.data.target }, function(changeEvent, slick, currentSlide) {
|
51
|
+
analytics.payload.eventAction = 'dots click';
|
52
|
+
|
53
|
+
if (changeEvent.data.target === '.slick-slider__nav') {
|
54
|
+
analytics.payload.eventAction = 'navigation click';
|
55
|
+
analytics.payload.direction = 'left';
|
56
|
+
|
57
|
+
if ($(changeEvent.data.eventTarget).hasClass('slick-slider__nav--prev')) {
|
58
|
+
analytics.payload.direction = 'right';
|
59
|
+
}
|
60
|
+
}
|
61
|
+
|
62
|
+
_.merge(analytics.payload, {
|
63
|
+
eventTarget: changeEvent.delegateTarget,
|
64
|
+
eventClickTarget: changeEvent.data.eventTarget,
|
65
|
+
eventCurrentSlide: currentSlide
|
66
|
+
});
|
67
|
+
});
|
68
|
+
}
|
69
|
+
|
70
|
+
sendAnalytics(analytics);
|
71
|
+
},
|
72
|
+
|
73
|
+
/**
|
74
|
+
* @method
|
75
|
+
* @name init
|
76
|
+
* @memberof WORKAREA.slickSliderAnalytics
|
77
|
+
*/
|
78
|
+
initSliderAnalytics = function ($slider) {
|
79
|
+
$slider.on('swipe', swipeAnalyticsHandler)
|
80
|
+
.on('click', '.slick-slider__nav', { target: '.slick-slider__nav' }, setUpAnalyticsData)
|
81
|
+
.on('click', '.slick-slider__dots button', { target: '.slick-slider__dots button' }, setUpAnalyticsData)
|
82
|
+
.on('click', '.slick-current', { target: '.slick-current' }, setUpAnalyticsData);
|
83
|
+
};
|
84
|
+
|
85
|
+
return {
|
86
|
+
initSliderAnalytics: initSliderAnalytics
|
87
|
+
};
|
88
|
+
}()));
|
@@ -0,0 +1,5 @@
|
|
1
|
+
%Q{
|
2
|
+
<button type="button" class="slick-slider__nav slick-slider__nav--next">
|
3
|
+
#{ inline_svg("workarea/storefront/icons/arrow_right.svg", class: 'slick-slider__nav-icon slick-slider__nav-icon--right', title: I18n.t('workarea.storefront.slick_slider.next')) }
|
4
|
+
</button>
|
5
|
+
}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
%Q{
|
2
|
+
<button type="button" class="slick-slider__nav slick-slider__nav--prev">
|
3
|
+
#{ inline_svg("workarea/storefront/icons/arrow_left.svg", class: 'slick-slider__nav-icon slick-slider__nav-icon--left', title: I18n.t('workarea.storefront.slick_slider.previous')) }
|
4
|
+
</button>
|
5
|
+
}
|
@@ -0,0 +1,132 @@
|
|
1
|
+
/*------------------------------------*\
|
2
|
+
#SLICK-SLIDER
|
3
|
+
\*------------------------------------*/
|
4
|
+
|
5
|
+
$slick-slider-elements: (
|
6
|
+
slick-list,
|
7
|
+
slick-slider__nav,
|
8
|
+
slick-slider__dots
|
9
|
+
) !default;
|
10
|
+
|
11
|
+
$slick-slider-dots-width: $font-size !default;
|
12
|
+
$slick-slider-dots-color: $link-color !default;
|
13
|
+
$slick-slider-dots-bg-color: $background-color !default;
|
14
|
+
$slick-slider-dots-border-width: 2px !default;
|
15
|
+
$slick-slider-dots-spacing: 2 * $spacing-unit !default;
|
16
|
+
|
17
|
+
$slick-slider-nav-color: $font-color !default;
|
18
|
+
$slick-slider-nav-bg-color: $transparent !default;
|
19
|
+
$slick-slider-arrow-size: 24px !default;
|
20
|
+
$slick-slider-arrows-offset: 0 !default;
|
21
|
+
|
22
|
+
$slick-slider-active-color: $slick-slider-dots-color !default;
|
23
|
+
|
24
|
+
.slick-slider {}
|
25
|
+
|
26
|
+
.slick-slider--waiting-for-images {
|
27
|
+
opacity: 0;
|
28
|
+
}
|
29
|
+
|
30
|
+
.slick-slider--images-loaded {
|
31
|
+
opacity: 1;
|
32
|
+
transition: opacity 0.15s ease-in;
|
33
|
+
}
|
34
|
+
|
35
|
+
.slick-slider__image-wrapper {}
|
36
|
+
|
37
|
+
.slick-slider__image {}
|
38
|
+
|
39
|
+
.slick-slider__nav {
|
40
|
+
@extend %button-reset;
|
41
|
+
@include center('vertical');
|
42
|
+
z-index: index($slick-slider-elements, slick-slider__nav);
|
43
|
+
background: $slick-slider-nav-bg-color;
|
44
|
+
cursor: pointer;
|
45
|
+
}
|
46
|
+
|
47
|
+
.slick-slider__nav--prev {
|
48
|
+
left: $slick-slider-arrows-offset;
|
49
|
+
|
50
|
+
.slick-vertical & {
|
51
|
+
top: $slick-slider-arrows-offset;
|
52
|
+
right: 50%;
|
53
|
+
left: auto;
|
54
|
+
transform: translateX(50%) rotate(90deg);
|
55
|
+
}
|
56
|
+
}
|
57
|
+
|
58
|
+
.slick-slider__nav--next {
|
59
|
+
right: $slick-slider-arrows-offset;
|
60
|
+
|
61
|
+
.slick-vertical & {
|
62
|
+
top: auto;
|
63
|
+
right: 50%;
|
64
|
+
bottom: $slick-slider-arrows-offset;
|
65
|
+
transform: translateX(50%) rotate(90deg);
|
66
|
+
}
|
67
|
+
}
|
68
|
+
|
69
|
+
.slick-slider__nav-icon {
|
70
|
+
width: $slick-slider-arrow-size;
|
71
|
+
height: $slick-slider-arrow-size;
|
72
|
+
fill: $slick-slider-nav-color;
|
73
|
+
}
|
74
|
+
|
75
|
+
.slick-slider__nav-icon--left {}
|
76
|
+
.slick-slider__nav-icon--right { background-image: image-url('workarea/storefront/icons/arrow_right.svg'); }
|
77
|
+
|
78
|
+
|
79
|
+
.slick-slider__dots {
|
80
|
+
@extend %inline-list;
|
81
|
+
z-index: index($slick-slider-elements, slick-slider__dots);
|
82
|
+
text-align: center;
|
83
|
+
|
84
|
+
.slick-vertical & {
|
85
|
+
@include center($to: vertical);
|
86
|
+
left: -100%;
|
87
|
+
}
|
88
|
+
|
89
|
+
li {
|
90
|
+
margin: $slick-slider-dots-spacing;
|
91
|
+
|
92
|
+
.slick-vertical & {
|
93
|
+
display: block;
|
94
|
+
}
|
95
|
+
}
|
96
|
+
|
97
|
+
button {
|
98
|
+
display: block;
|
99
|
+
padding: 0;
|
100
|
+
width: $slick-slider-dots-width;
|
101
|
+
height: $slick-slider-dots-width;
|
102
|
+
font-size: 0;
|
103
|
+
background: $slick-slider-dots-bg-color;
|
104
|
+
border: $slick-slider-dots-border-width solid $slick-slider-dots-color;
|
105
|
+
border-radius: 50%;
|
106
|
+
cursor: pointer;
|
107
|
+
outline: 0;
|
108
|
+
|
109
|
+
&:hover,
|
110
|
+
&:focus {
|
111
|
+
outline: 0;
|
112
|
+
}
|
113
|
+
}
|
114
|
+
}
|
115
|
+
|
116
|
+
|
117
|
+
/*------------------------------------*\
|
118
|
+
#SLICK-LIST
|
119
|
+
\*------------------------------------*/
|
120
|
+
|
121
|
+
.slick-list { z-index: index($slick-slider-elements, slick-list); }
|
122
|
+
|
123
|
+
|
124
|
+
/*------------------------------------*\
|
125
|
+
#SLICK-ACTIVE
|
126
|
+
\*------------------------------------*/
|
127
|
+
|
128
|
+
.slick-active {
|
129
|
+
button {
|
130
|
+
background: $slick-slider-active-color;
|
131
|
+
}
|
132
|
+
}
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Workarea
|
2
|
+
module Storefront
|
3
|
+
module SliderHelper
|
4
|
+
def style_guide_slider_options
|
5
|
+
{
|
6
|
+
options: {
|
7
|
+
slidesToShow: 1,
|
8
|
+
slidesToScroll: 1,
|
9
|
+
autoplay: true,
|
10
|
+
mobileFirst: true,
|
11
|
+
responsive: [
|
12
|
+
{
|
13
|
+
breakpoint: Workarea.config.storefront_break_points[:medium] - 1,
|
14
|
+
settings: {
|
15
|
+
arrows: false,
|
16
|
+
dots: true,
|
17
|
+
slidesToShow: 2,
|
18
|
+
slidesToScroll: 2
|
19
|
+
}
|
20
|
+
},
|
21
|
+
{
|
22
|
+
breakpoint: Workarea.config.storefront_break_points[:wide] - 1,
|
23
|
+
settings: {
|
24
|
+
arrows: false,
|
25
|
+
dots: true,
|
26
|
+
slidesToShow: 4,
|
27
|
+
slidesToScroll: 4
|
28
|
+
}
|
29
|
+
}
|
30
|
+
]
|
31
|
+
}
|
32
|
+
}.to_json
|
33
|
+
end
|
34
|
+
|
35
|
+
def style_guide_autoplay_stop_options
|
36
|
+
{
|
37
|
+
options: {
|
38
|
+
autoplay: true,
|
39
|
+
autoplaySpeed: 2000,
|
40
|
+
pauseOnHover: false
|
41
|
+
},
|
42
|
+
stopOnInteraction: true
|
43
|
+
}.to_json
|
44
|
+
end
|
45
|
+
|
46
|
+
def style_guide_slider_wait_for_images
|
47
|
+
{
|
48
|
+
options: {
|
49
|
+
slidesToShow: 1,
|
50
|
+
slidesToScroll: 1
|
51
|
+
},
|
52
|
+
waitForImages: true
|
53
|
+
}.to_json
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
#slick-slider.style-guide__subsection
|
2
|
+
|
3
|
+
%h3= link_to_style_guide('components', 'slick_slider')
|
4
|
+
|
5
|
+
%p Displays a set of images as a slider
|
6
|
+
%p
|
7
|
+
Use
|
8
|
+
= link_to 'Ken Wheeler\'s Slick', 'http://kenwheeler.github.io/slick/'
|
9
|
+
to see additional options
|
10
|
+
|
11
|
+
%p Default Slider Options:
|
12
|
+
|
13
|
+
.style-guide__example-block
|
14
|
+
|
15
|
+
.slick-slider{ data: { slick_slider: '' } }
|
16
|
+
|
17
|
+
- (1..4).each do |i|
|
18
|
+
.slick-slider__image-wrapper= image_tag('workarea/storefront/style_guide_light_banner.png', alt: "Image #{i}", class: 'slick-slider__image')
|
19
|
+
|
20
|
+
|
21
|
+
%p Custom Slider Options added inside of helper:
|
22
|
+
|
23
|
+
.style-guide__example-block
|
24
|
+
|
25
|
+
.slick-slider{ data: { slick_slider: style_guide_slider_options } }
|
26
|
+
|
27
|
+
- (1..8).each do |i|
|
28
|
+
.slick-slider__image-wrapper= image_tag('workarea/storefront/style_guide_product.jpg', alt: "Image #{i}", class: 'slick-slider__image')
|
29
|
+
|
30
|
+
|
31
|
+
%p Slider Options with Stop Autoplay on Interaction (click or slide):
|
32
|
+
|
33
|
+
.style-guide__example-block
|
34
|
+
|
35
|
+
.slick-slider{ data: { slick_slider: style_guide_autoplay_stop_options } }
|
36
|
+
|
37
|
+
- (1..4).each do |i|
|
38
|
+
.slick-slider__image-wrapper= image_tag('workarea/storefront/style_guide_light_banner.png', alt: "Image #{i}", class: 'slick-slider__image')
|
39
|
+
|
40
|
+
|
41
|
+
%p Custom Slider That Waits for Images
|
42
|
+
|
43
|
+
.style-guide__example-block
|
44
|
+
|
45
|
+
.slick-slider{ data: { slick_slider: style_guide_slider_wait_for_images } }
|
46
|
+
|
47
|
+
- (1..4).each do |i|
|
48
|
+
.slick-slider__image-wrapper= image_tag('workarea/storefront/style_guide_light_banner.png', alt: "Image #{i}", class: 'slick-slider__image')
|
data/bin/rails
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# This command will automatically be run when you run "rails" with Rails gems
|
3
|
+
# installed from the root of your application.
|
4
|
+
|
5
|
+
ENGINE_ROOT = File.expand_path('../..', __FILE__)
|
6
|
+
ENGINE_PATH = File.expand_path('../../lib/slick_slider/engine', __FILE__)
|
7
|
+
|
8
|
+
# Set up gems listed in the Gemfile.
|
9
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
10
|
+
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
11
|
+
|
12
|
+
require "action_controller/railtie"
|
13
|
+
require "action_view/railtie"
|
14
|
+
require "action_mailer/railtie"
|
15
|
+
require "rails/test_unit/railtie"
|
16
|
+
require "sprockets/railtie"
|
17
|
+
|
18
|
+
require 'rails/engine/commands'
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Workarea
|
2
|
+
Plugin.append_javascripts(
|
3
|
+
'storefront.templates',
|
4
|
+
'workarea/storefront/slick_slider/templates/slick_slider_nav_prev',
|
5
|
+
'workarea/storefront/slick_slider/templates/slick_slider_nav_next'
|
6
|
+
)
|
7
|
+
|
8
|
+
Plugin.append_javascripts(
|
9
|
+
'storefront.config',
|
10
|
+
'workarea/storefront/slick_slider/config'
|
11
|
+
)
|
12
|
+
|
13
|
+
Plugin.append_javascripts(
|
14
|
+
'storefront.dependencies',
|
15
|
+
'jquery.slick'
|
16
|
+
)
|
17
|
+
|
18
|
+
Plugin.append_javascripts(
|
19
|
+
'storefront.modules',
|
20
|
+
'workarea/storefront/slick_slider/modules/slick_slider',
|
21
|
+
'workarea/storefront/slick_slider/modules/slick_slider_analytics'
|
22
|
+
)
|
23
|
+
|
24
|
+
Plugin.append_stylesheets(
|
25
|
+
'storefront.dependencies',
|
26
|
+
'slick'
|
27
|
+
)
|
28
|
+
|
29
|
+
Plugin.append_stylesheets(
|
30
|
+
'storefront.components',
|
31
|
+
'workarea/storefront/slick_slider/components/slick_slider'
|
32
|
+
)
|
33
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Workarea
|
2
|
+
module SlickSlider
|
3
|
+
class Engine < ::Rails::Engine
|
4
|
+
include Workarea::Plugin
|
5
|
+
isolate_namespace Workarea::SlickSlider
|
6
|
+
|
7
|
+
config.to_prepare do
|
8
|
+
Storefront::ApplicationController.helper(Storefront::SliderHelper)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/script/admin_ci
ADDED
data/script/ci
ADDED
data/script/core_ci
ADDED
data/script/plugins_ci
ADDED
data/test/dummy/Rakefile
ADDED
File without changes
|
@@ -0,0 +1,13 @@
|
|
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. JavaScript code in this file should be added after the last require_* statement.
|
9
|
+
//
|
10
|
+
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
|
11
|
+
// about supported directives.
|
12
|
+
//
|
13
|
+
//= require_tree .
|
@@ -0,0 +1,15 @@
|
|
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 any plugin's vendor/assets/stylesheets directory 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 bottom of the
|
9
|
+
* compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
|
10
|
+
* files in this directory. Styles in this file should be added after the last require_* statement.
|
11
|
+
* It is generally better to create a new file per style scope.
|
12
|
+
*
|
13
|
+
*= require_tree .
|
14
|
+
*= require_self
|
15
|
+
*/
|
File without changes
|
File without changes
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Dummy</title>
|
5
|
+
<%= csrf_meta_tags %>
|
6
|
+
|
7
|
+
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
|
8
|
+
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
|
9
|
+
</head>
|
10
|
+
|
11
|
+
<body>
|
12
|
+
<%= yield %>
|
13
|
+
</body>
|
14
|
+
</html>
|