Version Description
- 26/01/2017 =
- New - The cart tab now opens when an add to cart button on a shop page is clicked.
- New - Cart tab opens on click rather than hover.
- New - Display controls moved to the Customizer.
- New - Integration with Storefront theme.
Download this release
Release Info
Developer | jameskoster |
Plugin | WooCommerce Cart Tab |
Version | 1.0.0 |
Comparing to | |
See all releases |
Code changes from version 0.5.0 to 1.0.0
- Gruntfile.js +190 -0
- README.md +0 -4
- assets/css/mixins.less +0 -122
- assets/css/style-storefront.css +154 -0
- assets/css/style.css +149 -171
- assets/css/style.less +0 -149
- assets/js/cart-tab.js +89 -0
- assets/js/cart-tab.min.js +1 -0
- assets/scss/style-storefront.scss +179 -0
- assets/scss/style.scss +186 -0
- cart-tab.php +13 -176
- includes/cart-tab-functions.php +20 -0
- includes/cart-tab-templates.php +58 -0
- includes/class-cart-tab-customizer.php +237 -0
- includes/class-cart-tab-frontend.php +64 -0
- includes/class-cart-tab-hooks.php +14 -0
- package.json +29 -0
- readme.txt +12 -8
Gruntfile.js
ADDED
@@ -0,0 +1,190 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* jshint node:true */
|
2 |
+
module.exports = function( grunt ) {
|
3 |
+
'use strict';
|
4 |
+
|
5 |
+
grunt.initConfig({
|
6 |
+
|
7 |
+
// JavaScript linting with JSHint.
|
8 |
+
jshint: {
|
9 |
+
options: {
|
10 |
+
jshintrc: '.jshintrc'
|
11 |
+
},
|
12 |
+
all: [
|
13 |
+
'Gruntfile.js',
|
14 |
+
'assets/js/*.js',
|
15 |
+
'!assets/js/*.min.js'
|
16 |
+
]
|
17 |
+
},
|
18 |
+
|
19 |
+
// Minify .js files.
|
20 |
+
uglify: {
|
21 |
+
options: {
|
22 |
+
preserveComments: 'some'
|
23 |
+
},
|
24 |
+
main: {
|
25 |
+
files: [{
|
26 |
+
expand: true,
|
27 |
+
cwd: 'assets/js/',
|
28 |
+
src: [
|
29 |
+
'*.js',
|
30 |
+
'!*.min.js'
|
31 |
+
],
|
32 |
+
dest: 'assets/js/',
|
33 |
+
ext: '.min.js'
|
34 |
+
}]
|
35 |
+
}
|
36 |
+
},
|
37 |
+
|
38 |
+
// Compile all .scss files.
|
39 |
+
sass: {
|
40 |
+
dist: {
|
41 |
+
options: {
|
42 |
+
require: 'susy',
|
43 |
+
sourcemap: 'none',
|
44 |
+
includePaths: require( 'node-bourbon' ).includePaths
|
45 |
+
},
|
46 |
+
files: [{
|
47 |
+
'assets/css/style.css': 'assets/scss/style.scss',
|
48 |
+
'assets/css/style-storefront.css': 'assets/scss/style-storefront.scss',
|
49 |
+
}]
|
50 |
+
}
|
51 |
+
},
|
52 |
+
|
53 |
+
// Minify all .css files.
|
54 |
+
cssmin: {
|
55 |
+
minify: {
|
56 |
+
expand: true,
|
57 |
+
cwd: 'assets/css/',
|
58 |
+
src: ['*.css'],
|
59 |
+
dest: 'assets/css/',
|
60 |
+
ext: '.css'
|
61 |
+
}
|
62 |
+
},
|
63 |
+
|
64 |
+
// Watch changes for assets.
|
65 |
+
watch: {
|
66 |
+
css: {
|
67 |
+
files: [
|
68 |
+
'assets/scss/*.scss'
|
69 |
+
],
|
70 |
+
tasks: [
|
71 |
+
'sass',
|
72 |
+
'css'
|
73 |
+
]
|
74 |
+
},
|
75 |
+
js: {
|
76 |
+
files: [
|
77 |
+
// Main js
|
78 |
+
'assets/js/*js',
|
79 |
+
'assets/js/**/*.js',
|
80 |
+
'!assets/js/*.min.js'
|
81 |
+
],
|
82 |
+
tasks: ['uglify']
|
83 |
+
}
|
84 |
+
},
|
85 |
+
|
86 |
+
// Generate POT files.
|
87 |
+
makepot: {
|
88 |
+
options: {
|
89 |
+
type: 'wp-plugin',
|
90 |
+
domainPath: 'languages',
|
91 |
+
potHeaders: {
|
92 |
+
'report-msgid-bugs-to': 'https://github.com/jameskoster/woocommerce-cart-tab/issues',
|
93 |
+
'language-team': 'LANGUAGE <EMAIL@ADDRESS>'
|
94 |
+
}
|
95 |
+
},
|
96 |
+
frontend: {
|
97 |
+
options: {
|
98 |
+
potFilename: 'woocommerce-cart-tab.pot',
|
99 |
+
exclude: [
|
100 |
+
'woocommerce-cart-tab/.*' // Exclude deploy directory
|
101 |
+
],
|
102 |
+
processPot: function( pot ) {
|
103 |
+
pot.headers['project-id-version'];
|
104 |
+
return pot;
|
105 |
+
}
|
106 |
+
}
|
107 |
+
}
|
108 |
+
},
|
109 |
+
|
110 |
+
// Check textdomain errors.
|
111 |
+
checktextdomain: {
|
112 |
+
options:{
|
113 |
+
text_domain: 'woocommerce-cart-tab',
|
114 |
+
keywords: [
|
115 |
+
'__:1,2d',
|
116 |
+
'_e:1,2d',
|
117 |
+
'_x:1,2c,3d',
|
118 |
+
'esc_html__:1,2d',
|
119 |
+
'esc_html_e:1,2d',
|
120 |
+
'esc_html_x:1,2c,3d',
|
121 |
+
'esc_attr__:1,2d',
|
122 |
+
'esc_attr_e:1,2d',
|
123 |
+
'esc_attr_x:1,2c,3d',
|
124 |
+
'_ex:1,2c,3d',
|
125 |
+
'_n:1,2,4d',
|
126 |
+
'_nx:1,2,4c,5d',
|
127 |
+
'_n_noop:1,2,3d',
|
128 |
+
'_nx_noop:1,2,3c,4d'
|
129 |
+
]
|
130 |
+
},
|
131 |
+
files: {
|
132 |
+
src: [
|
133 |
+
'**/*.php', // Include all files
|
134 |
+
'!node_modules/**' // Exclude node_modules/
|
135 |
+
],
|
136 |
+
expand: true
|
137 |
+
}
|
138 |
+
},
|
139 |
+
|
140 |
+
// Creates deploy-able plugin
|
141 |
+
copy: {
|
142 |
+
deploy: {
|
143 |
+
src: [
|
144 |
+
'**',
|
145 |
+
'!.*',
|
146 |
+
'!.*/**',
|
147 |
+
'.htaccess',
|
148 |
+
'!Gruntfile.js',
|
149 |
+
'!package.json',
|
150 |
+
'!node_modules/**',
|
151 |
+
'!.DS_Store',
|
152 |
+
'!npm-debug.log'
|
153 |
+
],
|
154 |
+
dest: 'woocommerce-cart-tab',
|
155 |
+
expand: true,
|
156 |
+
dot: true
|
157 |
+
}
|
158 |
+
}
|
159 |
+
});
|
160 |
+
|
161 |
+
// Load NPM tasks to be used here
|
162 |
+
grunt.loadNpmTasks( 'grunt-contrib-uglify' );
|
163 |
+
grunt.loadNpmTasks( 'grunt-wp-i18n' );
|
164 |
+
grunt.loadNpmTasks( 'grunt-checktextdomain' );
|
165 |
+
grunt.loadNpmTasks( 'grunt-sass' );
|
166 |
+
grunt.loadNpmTasks( 'grunt-contrib-cssmin' );
|
167 |
+
grunt.loadNpmTasks( 'grunt-contrib-watch' );
|
168 |
+
grunt.loadNpmTasks( 'grunt-contrib-copy' );
|
169 |
+
grunt.loadNpmTasks( 'grunt-contrib-jshint' );
|
170 |
+
|
171 |
+
// Register tasks
|
172 |
+
grunt.registerTask( 'default', [
|
173 |
+
'css',
|
174 |
+
'uglify'
|
175 |
+
]);
|
176 |
+
|
177 |
+
grunt.registerTask( 'css', [
|
178 |
+
'sass'
|
179 |
+
]);
|
180 |
+
|
181 |
+
grunt.registerTask( 'dev', [
|
182 |
+
'default',
|
183 |
+
'makepot'
|
184 |
+
]);
|
185 |
+
|
186 |
+
grunt.registerTask( 'deploy', [
|
187 |
+
'makepot',
|
188 |
+
'copy'
|
189 |
+
]);
|
190 |
+
};
|
README.md
DELETED
@@ -1,4 +0,0 @@
|
|
1 |
-
WooCommerce Cart Tab
|
2 |
-
====================
|
3 |
-
|
4 |
-
Displays a link to the cart which is visible sitewide and fixed in position so it remains visible wherever the user scrolls. When the user hovers over the tab, the full cart widget is displayed.
|
|
|
|
|
|
|
|
assets/css/mixins.less
DELETED
@@ -1,122 +0,0 @@
|
|
1 |
-
// MIXINS
|
2 |
-
.clearfix() {
|
3 |
-
&:after {
|
4 |
-
content: "";
|
5 |
-
display: block;
|
6 |
-
clear: both;
|
7 |
-
}
|
8 |
-
}
|
9 |
-
.border_radius(@radius:10px)
|
10 |
-
{
|
11 |
-
-webkit-border-radius:@radius;
|
12 |
-
-moz-border-radius:@radius;
|
13 |
-
border-radius:@radius;
|
14 |
-
}
|
15 |
-
|
16 |
-
.border_radius_right(@radius:10px)
|
17 |
-
{
|
18 |
-
-webkit-border-top-right-radius: @radius;
|
19 |
-
-webkit-border-bottom-right-radius: @radius;
|
20 |
-
-moz-border-radius-topright: @radius;
|
21 |
-
-moz-border-radius-bottomright: @radius;
|
22 |
-
border-top-right-radius: @radius;
|
23 |
-
border-bottom-right-radius: @radius;
|
24 |
-
}
|
25 |
-
|
26 |
-
.border_radius_left(@radius:10px)
|
27 |
-
{
|
28 |
-
-webkit-border-top-left-radius: @radius;
|
29 |
-
-webkit-border-bottom-left-radius: @radius;
|
30 |
-
-moz-border-radius-topleft: @radius;
|
31 |
-
-moz-border-radius-bottomleft: @radius;
|
32 |
-
border-top-left-radius: @radius;
|
33 |
-
border-bottom-left-radius: @radius;
|
34 |
-
}
|
35 |
-
|
36 |
-
.border_radius_bottom(@radius:10px)
|
37 |
-
{
|
38 |
-
-webkit-border-bottom-left-radius: @radius;
|
39 |
-
-webkit-border-bottom-right-radius: @radius;
|
40 |
-
-moz-border-radius-bottomleft: @radius;
|
41 |
-
-moz-border-radius-bottomright: @radius;
|
42 |
-
border-bottom-left-radius: @radius;
|
43 |
-
border-bottom-right-radius: @radius;
|
44 |
-
}
|
45 |
-
|
46 |
-
.border_radius_top(@radius:10px)
|
47 |
-
{
|
48 |
-
-webkit-border-top-left-radius: @radius;
|
49 |
-
-webkit-border-top-right-radius: @radius;
|
50 |
-
-moz-border-radius-topleft: @radius;
|
51 |
-
-moz-border-radius-topright: @radius;
|
52 |
-
border-top-left-radius: @radius;
|
53 |
-
border-top-right-radius: @radius;
|
54 |
-
}
|
55 |
-
|
56 |
-
.box_shadow(@shadow_x:3px, @shadow_y:3px, @shadow_rad:3px, @shadow_in:3px, @shadow_color:#888)
|
57 |
-
{
|
58 |
-
box-shadow:@shadow_x @shadow_y @shadow_rad @shadow_in @shadow_color;
|
59 |
-
-webkit-box-shadow:@shadow_x @shadow_y @shadow_rad @shadow_in @shadow_color;
|
60 |
-
-moz-box-shadow:@shadow_x @shadow_y @shadow_rad @shadow_in @shadow_color;
|
61 |
-
-o-box-shadow:@shadow_x @shadow_y @shadow_rad @shadow_in @shadow_color;
|
62 |
-
}
|
63 |
-
|
64 |
-
.inset_box_shadow(@shadow_x:3px, @shadow_y:3px, @shadow_rad:3px, @shadow_in:3px, @shadow_color:#888)
|
65 |
-
{
|
66 |
-
box-shadow:inset @shadow_x @shadow_y @shadow_rad @shadow_in @shadow_color;
|
67 |
-
-webkit-box-shadow:inset @shadow_x @shadow_y @shadow_rad @shadow_in @shadow_color;
|
68 |
-
-moz-box-shadow:inset @shadow_x @shadow_y @shadow_rad @shadow_in @shadow_color;
|
69 |
-
-o-box-shadow:inset @shadow_x @shadow_y @shadow_rad @shadow_in @shadow_color;
|
70 |
-
}
|
71 |
-
|
72 |
-
.text_shadow(@shadow_x:3px, @shadow_y:3px, @shadow_rad:3px, @shadow_color:#fff)
|
73 |
-
{
|
74 |
-
text-shadow:@shadow_x @shadow_y @shadow_rad @shadow_color;
|
75 |
-
}
|
76 |
-
|
77 |
-
.vertical_gradient(@from: #000, @to: #FFF) {
|
78 |
-
background: @from;
|
79 |
-
background: -webkit-gradient(linear, left top, left bottom, from(@from), to(@to));
|
80 |
-
background: -webkit-linear-gradient(@from, @to);
|
81 |
-
background: -moz-linear-gradient(center top, @from 0%, @to 100%);
|
82 |
-
background: -moz-gradient(center top, @from 0%, @to 100%);
|
83 |
-
filter: e(%("progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=%d,endColorstr=%d)", @from, @to));
|
84 |
-
-ms-filter: %("progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=%d, endColorstr=%d)", @from, @to);
|
85 |
-
}
|
86 |
-
|
87 |
-
.transition(@selector:all, @animation:ease-in-out, @duration:.2s) {
|
88 |
-
-webkit-transition:@selector @animation @duration;
|
89 |
-
-moz-transition:@selector @animation @duration;
|
90 |
-
-o-transition:@selector @animation @duration;
|
91 |
-
transition:@selector @animation @duration;
|
92 |
-
}
|
93 |
-
|
94 |
-
.opacity(@opacity:0.75) {
|
95 |
-
filter:~"alpha(opacity=@opacity * 100)";
|
96 |
-
-moz-opacity:@opacity;
|
97 |
-
-khtml-opacity: @opacity;
|
98 |
-
opacity: @opacity;
|
99 |
-
}
|
100 |
-
|
101 |
-
.rotate(@degree:1deg) {
|
102 |
-
-webkit-transform:rotate(@degree);
|
103 |
-
-moz-transform:rotate(@degree);
|
104 |
-
}
|
105 |
-
|
106 |
-
.scale(@ratio:1.5){
|
107 |
-
-webkit-transform:scale(@ratio);
|
108 |
-
-moz-transform:scale(@ratio);
|
109 |
-
transform:scale(@ratio);
|
110 |
-
}
|
111 |
-
|
112 |
-
.radial_gradient(@from: #000, @to: #FFF) {
|
113 |
-
background: @from;
|
114 |
-
background: -webkit-gradient(radial, 50% 10%, 0, 50% 10%, 1000, from(@from), to(@to));
|
115 |
-
background: -moz-radial-gradient(center top, @from 0%, @to 100%);
|
116 |
-
}
|
117 |
-
|
118 |
-
.borderbox () {
|
119 |
-
-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
|
120 |
-
-moz-box-sizing: border-box; /* Firefox, other Gecko */
|
121 |
-
box-sizing: border-box; /* Opera/IE 8+ */
|
122 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/css/style-storefront.css
ADDED
@@ -0,0 +1,154 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.woocommerce-cart-tab-container {
|
2 |
+
width: 320px;
|
3 |
+
position: fixed;
|
4 |
+
top: 0;
|
5 |
+
z-index: 99999999;
|
6 |
+
-webkit-transition: all cubic-bezier(0.11, 0.51, 0.54, 0.9) 0.5s;
|
7 |
+
-moz-transition: all cubic-bezier(0.11, 0.51, 0.54, 0.9) 0.5s;
|
8 |
+
transition: all cubic-bezier(0.11, 0.51, 0.54, 0.9) 0.5s;
|
9 |
+
box-sizing: border-box; }
|
10 |
+
.woocommerce-cart-tab-container .widget_shopping_cart {
|
11 |
+
overflow: auto;
|
12 |
+
margin-bottom: 0; }
|
13 |
+
.woocommerce-cart-tab-container .widget_shopping_cart .widgettitle {
|
14 |
+
position: absolute;
|
15 |
+
top: 0;
|
16 |
+
left: 0;
|
17 |
+
width: 100%;
|
18 |
+
z-index: 99;
|
19 |
+
margin: 0;
|
20 |
+
padding: 0;
|
21 |
+
padding: 1.387rem 1.618rem;
|
22 |
+
text-align: center;
|
23 |
+
font-size: 1.2em;
|
24 |
+
border: 0; }
|
25 |
+
.woocommerce-cart-tab-container .widget_shopping_cart ul.product_list_widget {
|
26 |
+
margin-top: 5.2em;
|
27 |
+
padding: 0 1.618em;
|
28 |
+
margin-bottom: 1.618em; }
|
29 |
+
.woocommerce-cart-tab-container .widget_shopping_cart ul.product_list_widget li {
|
30 |
+
border: 0; }
|
31 |
+
.woocommerce-cart-tab-container .widget_shopping_cart .total {
|
32 |
+
margin-bottom: 8em;
|
33 |
+
padding: 0 3em;
|
34 |
+
padding-bottom: 1em;
|
35 |
+
border: 0; }
|
36 |
+
.woocommerce-cart-tab-container .widget_shopping_cart .buttons {
|
37 |
+
position: absolute;
|
38 |
+
bottom: 0;
|
39 |
+
left: 0;
|
40 |
+
width: 100%;
|
41 |
+
padding: 1.387em 1.618em;
|
42 |
+
z-index: 99;
|
43 |
+
margin: 0; }
|
44 |
+
.woocommerce-cart-tab-container .widget_shopping_cart .buttons .button {
|
45 |
+
width: 48%;
|
46 |
+
float: left;
|
47 |
+
margin: 0;
|
48 |
+
text-align: center; }
|
49 |
+
.woocommerce-cart-tab-container .widget_shopping_cart .buttons .button:nth-child(2) {
|
50 |
+
float: right; }
|
51 |
+
.woocommerce-cart-tab-container .widget_shopping_cart .buttons .button:after {
|
52 |
+
display: none; }
|
53 |
+
|
54 |
+
.admin-bar .woocommerce-cart-tab-container {
|
55 |
+
top: 32px; }
|
56 |
+
|
57 |
+
.woocommerce-cart-tab-container--left {
|
58 |
+
left: 0;
|
59 |
+
-webkit-transform: translateX(-320px);
|
60 |
+
-moz-transform: translateX(-320px);
|
61 |
+
-ms-transform: translateX(-320px);
|
62 |
+
-o-transform: translateX(-320px);
|
63 |
+
transform: translateX(-320px); }
|
64 |
+
.woocommerce-cart-tab-container--left .woocommerce-cart-tab {
|
65 |
+
left: 320px; }
|
66 |
+
.woocommerce-cart-tab-container--left.woocommerce-cart-tab-container--visible {
|
67 |
+
-webkit-transform: translateX(0);
|
68 |
+
-moz-transform: translateX(0);
|
69 |
+
-ms-transform: translateX(0);
|
70 |
+
-o-transform: translateX(0);
|
71 |
+
transform: translateX(0); }
|
72 |
+
|
73 |
+
.woocommerce-cart-tab-container--right {
|
74 |
+
right: 0;
|
75 |
+
-webkit-transform: translateX(320px);
|
76 |
+
-moz-transform: translateX(320px);
|
77 |
+
-ms-transform: translateX(320px);
|
78 |
+
-o-transform: translateX(320px);
|
79 |
+
transform: translateX(320px); }
|
80 |
+
.woocommerce-cart-tab-container--right .woocommerce-cart-tab {
|
81 |
+
right: 320px; }
|
82 |
+
.woocommerce-cart-tab-container--right.woocommerce-cart-tab-container--visible {
|
83 |
+
-webkit-transform: translateX(0);
|
84 |
+
-moz-transform: translateX(0);
|
85 |
+
-ms-transform: translateX(0);
|
86 |
+
-o-transform: translateX(0);
|
87 |
+
transform: translateX(0); }
|
88 |
+
|
89 |
+
.woocommerce-cart-tab {
|
90 |
+
position: absolute;
|
91 |
+
top: 0;
|
92 |
+
width: 60px;
|
93 |
+
height: 68px;
|
94 |
+
box-sizing: border-box;
|
95 |
+
line-height: 1;
|
96 |
+
cursor: pointer; }
|
97 |
+
.woocommerce-cart-tab:focus {
|
98 |
+
outline: none; }
|
99 |
+
.woocommerce-cart-tab .woocommerce-cart-tab__icon {
|
100 |
+
position: absolute;
|
101 |
+
top: 50%;
|
102 |
+
left: 50%;
|
103 |
+
transform: translateX(-50%) translateY(-50%);
|
104 |
+
width: 24px; }
|
105 |
+
|
106 |
+
.woocommerce-cart-tab__contents {
|
107 |
+
display: block;
|
108 |
+
position: absolute;
|
109 |
+
bottom: 10px;
|
110 |
+
right: 10px;
|
111 |
+
width: 25px;
|
112 |
+
height: 25px;
|
113 |
+
background: red;
|
114 |
+
line-height: 25px;
|
115 |
+
border-radius: 100%;
|
116 |
+
text-align: center;
|
117 |
+
z-index: 10;
|
118 |
+
font-size: .857em; }
|
119 |
+
|
120 |
+
.woocommerce-cart-tab a {
|
121 |
+
display: block; }
|
122 |
+
|
123 |
+
body .site:before {
|
124 |
+
content: "";
|
125 |
+
display: block;
|
126 |
+
position: fixed;
|
127 |
+
top: 0;
|
128 |
+
left: 0;
|
129 |
+
width: 100%;
|
130 |
+
height: 100%;
|
131 |
+
background: rgba(0, 0, 0, 0.4);
|
132 |
+
z-index: 9999999;
|
133 |
+
-webkit-transition: all cubic-bezier(0.11, 0.51, 0.54, 0.9) 0.5s;
|
134 |
+
-moz-transition: all cubic-bezier(0.11, 0.51, 0.54, 0.9) 0.5s;
|
135 |
+
transition: all cubic-bezier(0.11, 0.51, 0.54, 0.9) 0.5s;
|
136 |
+
-webkit-transform: translateX(-100%);
|
137 |
+
-moz-transform: translateX(-100%);
|
138 |
+
-ms-transform: translateX(-100%);
|
139 |
+
-o-transform: translateX(-100%);
|
140 |
+
transform: translateX(-100%);
|
141 |
+
cursor: pointer; }
|
142 |
+
|
143 |
+
body.woocommerce-cart-tab-is-visible {
|
144 |
+
overflow: hidden; }
|
145 |
+
body.woocommerce-cart-tab-is-visible .site:before {
|
146 |
+
-webkit-transform: translateX(0);
|
147 |
+
-moz-transform: translateX(0);
|
148 |
+
-ms-transform: translateX(0);
|
149 |
+
-o-transform: translateX(0);
|
150 |
+
transform: translateX(0); }
|
151 |
+
|
152 |
+
@media screen and (max-width: 768px) {
|
153 |
+
.woocommerce-cart-tab-container {
|
154 |
+
display: none; } }
|
assets/css/style.css
CHANGED
@@ -1,181 +1,159 @@
|
|
1 |
-
.cart-tab {
|
2 |
-
width:
|
3 |
position: fixed;
|
4 |
-
top:
|
5 |
-
z-index:
|
6 |
-
|
7 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
position: absolute;
|
9 |
top: 0;
|
10 |
-
|
11 |
-
|
12 |
-
/* Safari/Chrome, other WebKit */
|
13 |
-
-moz-box-sizing: border-box;
|
14 |
-
/* Firefox, other Gecko */
|
15 |
box-sizing: border-box;
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
}
|
20 |
-
.cart-tab
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
display: block;
|
22 |
-
color: #666;
|
23 |
-
font-size: .8em;
|
24 |
-
}
|
25 |
-
.cart-tab a.cart-parent:hover {
|
26 |
-
text-decoration: none;
|
27 |
-
}
|
28 |
-
.cart-tab .widget {
|
29 |
-
padding: 1.618em;
|
30 |
-
margin: 0;
|
31 |
-
max-height: 600px;
|
32 |
-
overflow: auto;
|
33 |
-
}
|
34 |
-
.cart-tab.light {
|
35 |
-
background: #fff;
|
36 |
-
}
|
37 |
-
.cart-tab.light a.cart-parent,
|
38 |
-
.cart-tab.light .widget {
|
39 |
-
box-shadow: 0 2px 1em 0 rgba(0, 0, 0, 0.2);
|
40 |
-
-webkit-box-shadow: 0 2px 1em 0 rgba(0, 0, 0, 0.2);
|
41 |
-
-moz-box-shadow: 0 2px 1em 0 rgba(0, 0, 0, 0.2);
|
42 |
-
-o-box-shadow: 0 2px 1em 0 rgba(0, 0, 0, 0.2);
|
43 |
-
}
|
44 |
-
.cart-tab.light a.cart-parent {
|
45 |
-
background: #fff;
|
46 |
-
}
|
47 |
-
.cart-tab.light a.cart-parent:after {
|
48 |
-
content: "";
|
49 |
-
display: block;
|
50 |
-
width: 10px;
|
51 |
-
height: 100%;
|
52 |
-
background: #fff;
|
53 |
position: absolute;
|
54 |
-
|
55 |
-
right:
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
background: #333;
|
69 |
-
}
|
70 |
-
.cart-tab.dark a.cart-parent:after {
|
71 |
content: "";
|
72 |
display: block;
|
73 |
-
|
74 |
-
height: 100%;
|
75 |
-
background: #333;
|
76 |
-
position: absolute;
|
77 |
top: 0;
|
78 |
-
right: -10px;
|
79 |
-
}
|
80 |
-
.cart-tab.right {
|
81 |
-
right: -22em;
|
82 |
-
-webkit-transition: right ease 0.5s;
|
83 |
-
-moz-transition: right ease 0.5s;
|
84 |
-
-o-transition: right ease 0.5s;
|
85 |
-
transition: right ease 0.5s;
|
86 |
-
}
|
87 |
-
.cart-tab.right a.cart-parent {
|
88 |
-
left: -8.402328em;
|
89 |
-
width: 8.402328em;
|
90 |
-
-webkit-transition: left ease 0.5s;
|
91 |
-
-moz-transition: left ease 0.5s;
|
92 |
-
-o-transition: left ease 0.5s;
|
93 |
-
transition: left ease 0.5s;
|
94 |
-
-webkit-border-top-left-radius: 3px;
|
95 |
-
-webkit-border-bottom-left-radius: 3px;
|
96 |
-
-moz-border-radius-topleft: 3px;
|
97 |
-
-moz-border-radius-bottomleft: 3px;
|
98 |
-
border-top-left-radius: 3px;
|
99 |
-
border-bottom-left-radius: 3px;
|
100 |
-
}
|
101 |
-
.cart-tab.right a.cart-parent.hidden {
|
102 |
-
left: 0;
|
103 |
-
}
|
104 |
-
.cart-tab.right a.cart-parent.visible {
|
105 |
-
left: -8.402328em;
|
106 |
-
}
|
107 |
-
.cart-tab.right:hover {
|
108 |
-
right: 0;
|
109 |
-
}
|
110 |
-
.cart-tab.right .widget {
|
111 |
-
-webkit-border-bottom-left-radius: 3px;
|
112 |
-
-webkit-border-bottom-right-radius: 3px;
|
113 |
-
-moz-border-radius-bottomleft: 3px;
|
114 |
-
-moz-border-radius-bottomright: 3px;
|
115 |
-
border-bottom-left-radius: 3px;
|
116 |
-
border-bottom-right-radius: 3px;
|
117 |
-
-webkit-border-top-right-radius: 0;
|
118 |
-
-webkit-border-bottom-right-radius: 0;
|
119 |
-
-moz-border-radius-topright: 0;
|
120 |
-
-moz-border-radius-bottomright: 0;
|
121 |
-
border-top-right-radius: 0;
|
122 |
-
border-bottom-right-radius: 0;
|
123 |
-
}
|
124 |
-
.cart-tab.left {
|
125 |
-
left: -22em;
|
126 |
-
-webkit-transition: left ease 0.5s;
|
127 |
-
-moz-transition: left ease 0.5s;
|
128 |
-
-o-transition: left ease 0.5s;
|
129 |
-
transition: left ease 0.5s;
|
130 |
-
}
|
131 |
-
.cart-tab.left a.cart-parent {
|
132 |
-
right: -8.402328em;
|
133 |
-
width: 8.402328em;
|
134 |
-
-webkit-transition: right ease 0.5s;
|
135 |
-
-moz-transition: right ease 0.5s;
|
136 |
-
-o-transition: right ease 0.5s;
|
137 |
-
transition: right ease 0.5s;
|
138 |
-
-webkit-border-top-right-radius: 3px;
|
139 |
-
-webkit-border-bottom-right-radius: 3px;
|
140 |
-
-moz-border-radius-topright: 3px;
|
141 |
-
-moz-border-radius-bottomright: 3px;
|
142 |
-
border-top-right-radius: 3px;
|
143 |
-
border-bottom-right-radius: 3px;
|
144 |
-
}
|
145 |
-
.cart-tab.left a.cart-parent.hidden {
|
146 |
-
right: 0;
|
147 |
-
}
|
148 |
-
.cart-tab.left a.cart-parent.visible {
|
149 |
-
right: -8.402328em;
|
150 |
-
}
|
151 |
-
.cart-tab.left:hover {
|
152 |
left: 0;
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
-
|
157 |
-
-
|
158 |
-
-moz-
|
159 |
-
|
160 |
-
|
161 |
-
-
|
162 |
-
-
|
163 |
-
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
.cart-tab
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
}
|
179 |
-
.cart-tab.hidden {
|
180 |
-
display: none;
|
181 |
-
}
|
1 |
+
.woocommerce-cart-tab-container {
|
2 |
+
width: 320px;
|
3 |
position: fixed;
|
4 |
+
top: 0;
|
5 |
+
z-index: 99999999;
|
6 |
+
-webkit-transition: all cubic-bezier(0.11, 0.51, 0.54, 0.9) 0.5s;
|
7 |
+
-moz-transition: all cubic-bezier(0.11, 0.51, 0.54, 0.9) 0.5s;
|
8 |
+
transition: all cubic-bezier(0.11, 0.51, 0.54, 0.9) 0.5s;
|
9 |
+
box-sizing: border-box; }
|
10 |
+
.woocommerce-cart-tab-container .widget {
|
11 |
+
padding: 0; }
|
12 |
+
.woocommerce-cart-tab-container .widget_shopping_cart {
|
13 |
+
overflow: auto;
|
14 |
+
margin-bottom: 0; }
|
15 |
+
.woocommerce-cart-tab-container .widget_shopping_cart .widgettitle {
|
16 |
+
position: absolute;
|
17 |
+
top: 0;
|
18 |
+
left: 0;
|
19 |
+
width: 100%;
|
20 |
+
z-index: 99;
|
21 |
+
margin: 0;
|
22 |
+
padding: 0;
|
23 |
+
padding: 1.387rem 1.618rem;
|
24 |
+
text-align: center;
|
25 |
+
font-size: 1.2em;
|
26 |
+
border: 0;
|
27 |
+
height: 68px;
|
28 |
+
box-sizing: border-box; }
|
29 |
+
.woocommerce-cart-tab-container .widget_shopping_cart ul.product_list_widget {
|
30 |
+
margin-top: 88px;
|
31 |
+
padding: 0 1.618em;
|
32 |
+
margin-bottom: 1.618em; }
|
33 |
+
.woocommerce-cart-tab-container .widget_shopping_cart ul.product_list_widget li {
|
34 |
+
border: 0; }
|
35 |
+
.woocommerce-cart-tab-container .widget_shopping_cart .total {
|
36 |
+
margin-bottom: 5.5em;
|
37 |
+
padding: 0 3em;
|
38 |
+
padding-bottom: 1em;
|
39 |
+
border: 0; }
|
40 |
+
.woocommerce-cart-tab-container .widget_shopping_cart .buttons {
|
41 |
+
position: absolute;
|
42 |
+
bottom: 0;
|
43 |
+
left: 0;
|
44 |
+
width: 100%;
|
45 |
+
padding: 1.387em 1.618em;
|
46 |
+
z-index: 99;
|
47 |
+
margin: 0;
|
48 |
+
box-sizing: border-box; }
|
49 |
+
.woocommerce-cart-tab-container .widget_shopping_cart .buttons .button {
|
50 |
+
width: 48%;
|
51 |
+
float: left;
|
52 |
+
margin: 0;
|
53 |
+
text-align: center;
|
54 |
+
box-sizing: border-box; }
|
55 |
+
.woocommerce-cart-tab-container .widget_shopping_cart .buttons .button:nth-child(2) {
|
56 |
+
float: right; }
|
57 |
+
.woocommerce-cart-tab-container .widget_shopping_cart .buttons .button:after {
|
58 |
+
display: none; }
|
59 |
+
|
60 |
+
.admin-bar .woocommerce-cart-tab-container {
|
61 |
+
top: 32px; }
|
62 |
+
|
63 |
+
.woocommerce-cart-tab-container--left {
|
64 |
+
left: 0;
|
65 |
+
-webkit-transform: translateX(-320px);
|
66 |
+
-moz-transform: translateX(-320px);
|
67 |
+
-ms-transform: translateX(-320px);
|
68 |
+
-o-transform: translateX(-320px);
|
69 |
+
transform: translateX(-320px); }
|
70 |
+
.woocommerce-cart-tab-container--left .woocommerce-cart-tab {
|
71 |
+
left: 320px; }
|
72 |
+
.woocommerce-cart-tab-container--left.woocommerce-cart-tab-container--visible {
|
73 |
+
-webkit-transform: translateX(0);
|
74 |
+
-moz-transform: translateX(0);
|
75 |
+
-ms-transform: translateX(0);
|
76 |
+
-o-transform: translateX(0);
|
77 |
+
transform: translateX(0); }
|
78 |
+
|
79 |
+
.woocommerce-cart-tab-container--right {
|
80 |
+
right: 0;
|
81 |
+
-webkit-transform: translateX(320px);
|
82 |
+
-moz-transform: translateX(320px);
|
83 |
+
-ms-transform: translateX(320px);
|
84 |
+
-o-transform: translateX(320px);
|
85 |
+
transform: translateX(320px); }
|
86 |
+
.woocommerce-cart-tab-container--right .woocommerce-cart-tab {
|
87 |
+
right: 320px; }
|
88 |
+
.woocommerce-cart-tab-container--right.woocommerce-cart-tab-container--visible {
|
89 |
+
-webkit-transform: translateX(0);
|
90 |
+
-moz-transform: translateX(0);
|
91 |
+
-ms-transform: translateX(0);
|
92 |
+
-o-transform: translateX(0);
|
93 |
+
transform: translateX(0); }
|
94 |
+
|
95 |
+
.woocommerce-cart-tab {
|
96 |
position: absolute;
|
97 |
top: 0;
|
98 |
+
width: 68px;
|
99 |
+
height: 68px;
|
|
|
|
|
|
|
100 |
box-sizing: border-box;
|
101 |
+
line-height: 1;
|
102 |
+
cursor: pointer; }
|
103 |
+
.woocommerce-cart-tab:focus {
|
104 |
+
outline: none; }
|
105 |
+
.woocommerce-cart-tab .woocommerce-cart-tab__icon {
|
106 |
+
position: absolute;
|
107 |
+
top: 50%;
|
108 |
+
left: 50%;
|
109 |
+
transform: translateX(-50%) translateY(-50%);
|
110 |
+
width: 24px; }
|
111 |
+
|
112 |
+
.woocommerce-cart-tab__contents {
|
113 |
display: block;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
114 |
position: absolute;
|
115 |
+
bottom: 10px;
|
116 |
+
right: 10px;
|
117 |
+
width: 25px;
|
118 |
+
height: 25px;
|
119 |
+
line-height: 25px;
|
120 |
+
border-radius: 100%;
|
121 |
+
text-align: center;
|
122 |
+
z-index: 10;
|
123 |
+
font-size: .857em; }
|
124 |
+
|
125 |
+
.woocommerce-cart-tab a {
|
126 |
+
display: block; }
|
127 |
+
|
128 |
+
body .site:before {
|
|
|
|
|
|
|
129 |
content: "";
|
130 |
display: block;
|
131 |
+
position: fixed;
|
|
|
|
|
|
|
132 |
top: 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
133 |
left: 0;
|
134 |
+
width: 100%;
|
135 |
+
height: 100%;
|
136 |
+
background: rgba(0, 0, 0, 0.4);
|
137 |
+
z-index: 9999999;
|
138 |
+
-webkit-transition: all cubic-bezier(0.11, 0.51, 0.54, 0.9) 0.5s;
|
139 |
+
-moz-transition: all cubic-bezier(0.11, 0.51, 0.54, 0.9) 0.5s;
|
140 |
+
transition: all cubic-bezier(0.11, 0.51, 0.54, 0.9) 0.5s;
|
141 |
+
-webkit-transform: translateX(-100%);
|
142 |
+
-moz-transform: translateX(-100%);
|
143 |
+
-ms-transform: translateX(-100%);
|
144 |
+
-o-transform: translateX(-100%);
|
145 |
+
transform: translateX(-100%);
|
146 |
+
cursor: pointer; }
|
147 |
+
|
148 |
+
body.woocommerce-cart-tab-is-visible {
|
149 |
+
overflow: hidden; }
|
150 |
+
body.woocommerce-cart-tab-is-visible .site:before {
|
151 |
+
-webkit-transform: translateX(0);
|
152 |
+
-moz-transform: translateX(0);
|
153 |
+
-ms-transform: translateX(0);
|
154 |
+
-o-transform: translateX(0);
|
155 |
+
transform: translateX(0); }
|
156 |
+
|
157 |
+
@media screen and (max-width: 768px) {
|
158 |
+
.woocommerce-cart-tab-container {
|
159 |
+
display: none; } }
|
|
|
|
|
|
assets/css/style.less
DELETED
@@ -1,149 +0,0 @@
|
|
1 |
-
@import 'mixins.less';
|
2 |
-
|
3 |
-
.cart-tab {
|
4 |
-
width:22em;
|
5 |
-
position: fixed;
|
6 |
-
top:5em;
|
7 |
-
z-index: 9999999;
|
8 |
-
a.cart-parent {
|
9 |
-
position: absolute;
|
10 |
-
top:0;
|
11 |
-
display: block;
|
12 |
-
.borderbox;
|
13 |
-
padding:1.618em;
|
14 |
-
text-decoration: none;
|
15 |
-
span.contents {
|
16 |
-
display: block;
|
17 |
-
color: #666;
|
18 |
-
font-size:.8em;
|
19 |
-
}
|
20 |
-
&:hover {
|
21 |
-
text-decoration: none;
|
22 |
-
}
|
23 |
-
}
|
24 |
-
.widget {
|
25 |
-
padding:1.618em;
|
26 |
-
margin:0;
|
27 |
-
max-height: 600px;
|
28 |
-
overflow: auto;
|
29 |
-
}
|
30 |
-
|
31 |
-
// The light colour scheme
|
32 |
-
&.light {
|
33 |
-
background: #fff;
|
34 |
-
a.cart-parent, .widget {
|
35 |
-
.box_shadow(0,2px,1em,0,rgba(0,0,0,0.2));
|
36 |
-
}
|
37 |
-
a.cart-parent {
|
38 |
-
background: #fff;
|
39 |
-
&:after {
|
40 |
-
content: "";
|
41 |
-
display: block;
|
42 |
-
width:10px;
|
43 |
-
height:100%;
|
44 |
-
background: #fff;
|
45 |
-
position: absolute;
|
46 |
-
top:0;
|
47 |
-
right:-10px;
|
48 |
-
}
|
49 |
-
}
|
50 |
-
}
|
51 |
-
|
52 |
-
// The dark colour scheme
|
53 |
-
&.dark {
|
54 |
-
background: #333;
|
55 |
-
a.cart-parent, .widget {
|
56 |
-
.box_shadow(0,2px,1em,0,rgba(0,0,0,0.2));
|
57 |
-
}
|
58 |
-
a.cart-parent {
|
59 |
-
background: #333;
|
60 |
-
&:after {
|
61 |
-
content: "";
|
62 |
-
display: block;
|
63 |
-
width:10px;
|
64 |
-
height:100%;
|
65 |
-
background: #333;
|
66 |
-
position: absolute;
|
67 |
-
top:0;
|
68 |
-
right:-10px;
|
69 |
-
}
|
70 |
-
}
|
71 |
-
}
|
72 |
-
|
73 |
-
// If the cart tab is positioned to the right
|
74 |
-
&.right {
|
75 |
-
right:-22em;
|
76 |
-
.transition(right,ease,.5s);
|
77 |
-
a.cart-parent {
|
78 |
-
left:-8.402328em;
|
79 |
-
width:8.402328em;
|
80 |
-
.transition(left,ease,.5s);
|
81 |
-
.border_radius_left(3px);
|
82 |
-
&.hidden {
|
83 |
-
left:0;
|
84 |
-
}
|
85 |
-
&.visible {
|
86 |
-
left:-8.402328em;
|
87 |
-
}
|
88 |
-
}
|
89 |
-
&:hover {
|
90 |
-
right:0;
|
91 |
-
}
|
92 |
-
.widget {
|
93 |
-
.border_radius_bottom(3px);
|
94 |
-
.border_radius_right(0);
|
95 |
-
}
|
96 |
-
}
|
97 |
-
|
98 |
-
// If the cart tab is positioned to the left
|
99 |
-
&.left {
|
100 |
-
left:-22em;
|
101 |
-
.transition(left,ease,.5s);
|
102 |
-
a.cart-parent {
|
103 |
-
right:-8.402328em;
|
104 |
-
width:8.402328em;
|
105 |
-
.transition(right,ease,.5s);
|
106 |
-
.border_radius_right(3px);
|
107 |
-
&.hidden {
|
108 |
-
right:0;
|
109 |
-
}
|
110 |
-
&.visible {
|
111 |
-
right:-8.402328em;
|
112 |
-
}
|
113 |
-
}
|
114 |
-
&:hover {
|
115 |
-
left:0;
|
116 |
-
}
|
117 |
-
.widget {
|
118 |
-
.border_radius_bottom(3px);
|
119 |
-
.border_radius_left(0);
|
120 |
-
}
|
121 |
-
&.light, &.dark {
|
122 |
-
a.cart-parent:after {
|
123 |
-
right:auto;
|
124 |
-
left:-10px;
|
125 |
-
}
|
126 |
-
}
|
127 |
-
}
|
128 |
-
|
129 |
-
&.no-animation {
|
130 |
-
&.right:hover {
|
131 |
-
right:-22em;
|
132 |
-
}
|
133 |
-
&.left:hover {
|
134 |
-
left:-22em;
|
135 |
-
}
|
136 |
-
}
|
137 |
-
&.hidden {
|
138 |
-
display: none;
|
139 |
-
}
|
140 |
-
}
|
141 |
-
|
142 |
-
// Retina
|
143 |
-
@media
|
144 |
-
only screen and (-webkit-min-device-pixel-ratio: 2),
|
145 |
-
only screen and ( min--moz-device-pixel-ratio: 2),
|
146 |
-
only screen and ( -o-min-device-pixel-ratio: 2/1) {
|
147 |
-
|
148 |
-
|
149 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/cart-tab.js
ADDED
@@ -0,0 +1,89 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* cart-tab.js
|
3 |
+
*
|
4 |
+
* Handles display of cart tab
|
5 |
+
*/
|
6 |
+
( function() {
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Reveal the cart
|
10 |
+
*/
|
11 |
+
function revealCart() {
|
12 |
+
var windowWidth = jQuery( window ).width();
|
13 |
+
|
14 |
+
if ( windowWidth > 768 ) {
|
15 |
+
if ( jQuery( '.woocommerce-cart-tab-container' ).hasClass( 'woocommerce-cart-tab-container--visible' ) ) {
|
16 |
+
return;
|
17 |
+
} else {
|
18 |
+
jQuery( '.woocommerce-cart-tab-container' ).addClass( 'woocommerce-cart-tab-container--visible' );
|
19 |
+
}
|
20 |
+
|
21 |
+
jQuery( 'body' ).toggleClass( 'woocommerce-cart-tab-is-visible' );
|
22 |
+
}
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Hide the cart
|
27 |
+
*/
|
28 |
+
function hideCart() {
|
29 |
+
var windowWidth = jQuery( window ).width();
|
30 |
+
|
31 |
+
if ( windowWidth > 768 ) {
|
32 |
+
jQuery( '.woocommerce-cart-tab-container' ).removeClass( 'woocommerce-cart-tab-container--visible' );
|
33 |
+
}
|
34 |
+
|
35 |
+
jQuery( 'body' ).toggleClass( 'woocommerce-cart-tab-is-visible' );
|
36 |
+
}
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Make the cart tab height match the widow height.
|
40 |
+
*/
|
41 |
+
function setCartHeight() {
|
42 |
+
var windowHeight = jQuery( window ).height();
|
43 |
+
var windowWidth = jQuery( window ).width();
|
44 |
+
|
45 |
+
if ( windowWidth > 768 ) {
|
46 |
+
if ( jQuery( 'body' ).hasClass( 'admin-bar' ) ) {
|
47 |
+
jQuery( '.woocommerce-cart-tab-container .widget_shopping_cart' ).css( 'height', windowHeight - 32 );
|
48 |
+
} else {
|
49 |
+
jQuery( '.woocommerce-cart-tab-container .widget_shopping_cart' ).css( 'height', windowHeight );
|
50 |
+
}
|
51 |
+
}
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* On mouseup
|
56 |
+
*/
|
57 |
+
jQuery( document ).mouseup( function( e ) {
|
58 |
+
|
59 |
+
/**
|
60 |
+
* Hide the cart when user clicks outside it.
|
61 |
+
*/
|
62 |
+
var container = jQuery( '.woocommerce-cart-tab-container' );
|
63 |
+
|
64 |
+
if ( ! jQuery( '.button.add_to_cart_button' ).is( e.target ) && ! container.is( e.target ) && container.has( e.target ).length === 0 && container.hasClass( 'woocommerce-cart-tab-container--visible' ) ) {
|
65 |
+
container.removeClass( 'woocommerce-cart-tab-container--visible' );
|
66 |
+
jQuery( 'body' ).removeClass( 'woocommerce-cart-tab-is-visible' );
|
67 |
+
}
|
68 |
+
});
|
69 |
+
|
70 |
+
|
71 |
+
/**
|
72 |
+
* On document ready
|
73 |
+
*/
|
74 |
+
jQuery( document ).ready( function() {
|
75 |
+
|
76 |
+
jQuery( 'body' ).on( 'added_to_cart', function() {
|
77 |
+
revealCart();
|
78 |
+
});
|
79 |
+
|
80 |
+
setCartHeight();
|
81 |
+
});
|
82 |
+
|
83 |
+
/**
|
84 |
+
* On window resize
|
85 |
+
*/
|
86 |
+
jQuery( window ).resize( function() {
|
87 |
+
setCartHeight();
|
88 |
+
});
|
89 |
+
} )();
|
assets/js/cart-tab.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
!function(){function a(){var a=jQuery(window).width();if(a>768){if(jQuery(".woocommerce-cart-tab-container").hasClass("woocommerce-cart-tab-container--visible"))return;jQuery(".woocommerce-cart-tab-container").addClass("woocommerce-cart-tab-container--visible"),jQuery("body").toggleClass("woocommerce-cart-tab-is-visible")}}function b(){var a=jQuery(window).height(),b=jQuery(window).width();b>768&&(jQuery("body").hasClass("admin-bar")?jQuery(".woocommerce-cart-tab-container .widget_shopping_cart").css("height",a-32):jQuery(".woocommerce-cart-tab-container .widget_shopping_cart").css("height",a))}jQuery(document).mouseup(function(a){var b=jQuery(".woocommerce-cart-tab-container");jQuery(".button.add_to_cart_button").is(a.target)||b.is(a.target)||0!==b.has(a.target).length||!b.hasClass("woocommerce-cart-tab-container--visible")||(b.removeClass("woocommerce-cart-tab-container--visible"),jQuery("body").removeClass("woocommerce-cart-tab-is-visible"))}),jQuery(document).ready(function(){jQuery("body").on("added_to_cart",function(){a()}),b()}),jQuery(window).resize(function(){b()})}();
|
assets/scss/style-storefront.scss
ADDED
@@ -0,0 +1,179 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@import 'bourbon';
|
2 |
+
|
3 |
+
$cart_width: 320px;
|
4 |
+
|
5 |
+
.woocommerce-cart-tab-container {
|
6 |
+
width: $cart_width;
|
7 |
+
position: fixed;
|
8 |
+
top: 0;
|
9 |
+
z-index: 99999999;
|
10 |
+
@include transition(all cubic-bezier(.11,.51,.54,.9) .5s);
|
11 |
+
box-sizing: border-box;
|
12 |
+
|
13 |
+
.widget_shopping_cart {
|
14 |
+
overflow: auto;
|
15 |
+
margin-bottom: 0;
|
16 |
+
|
17 |
+
.widgettitle {
|
18 |
+
position: absolute;
|
19 |
+
top: 0;
|
20 |
+
left: 0;
|
21 |
+
width: 100%;
|
22 |
+
z-index: 99;
|
23 |
+
margin: 0;
|
24 |
+
padding: 0;
|
25 |
+
padding: 1.387rem 1.618rem;
|
26 |
+
text-align: center;
|
27 |
+
font-size: 1.2em;
|
28 |
+
border: 0;
|
29 |
+
}
|
30 |
+
|
31 |
+
ul.product_list_widget {
|
32 |
+
margin-top: 5.2em;
|
33 |
+
padding: 0 1.618em;
|
34 |
+
margin-bottom: 1.618em;
|
35 |
+
|
36 |
+
li {
|
37 |
+
border: 0;
|
38 |
+
}
|
39 |
+
}
|
40 |
+
|
41 |
+
.total {
|
42 |
+
margin-bottom: 8em;
|
43 |
+
padding: 0 3em;
|
44 |
+
padding-bottom: 1em;
|
45 |
+
border: 0;
|
46 |
+
}
|
47 |
+
|
48 |
+
.buttons {
|
49 |
+
position: absolute;
|
50 |
+
bottom: 0;
|
51 |
+
left: 0;
|
52 |
+
width: 100%;
|
53 |
+
padding: 1.387em 1.618em;
|
54 |
+
z-index: 99;
|
55 |
+
margin: 0;
|
56 |
+
|
57 |
+
.button {
|
58 |
+
width: 48%;
|
59 |
+
float: left;
|
60 |
+
margin: 0;
|
61 |
+
text-align: center;
|
62 |
+
|
63 |
+
&:nth-child(2) {
|
64 |
+
float: right;
|
65 |
+
}
|
66 |
+
|
67 |
+
&:after {
|
68 |
+
display: none;
|
69 |
+
}
|
70 |
+
}
|
71 |
+
}
|
72 |
+
}
|
73 |
+
}
|
74 |
+
|
75 |
+
.admin-bar .woocommerce-cart-tab-container {
|
76 |
+
top: 32px;
|
77 |
+
}
|
78 |
+
|
79 |
+
.woocommerce-cart-tab-container--left {
|
80 |
+
left: 0;
|
81 |
+
@include transform(translateX(- $cart_width));
|
82 |
+
|
83 |
+
.woocommerce-cart-tab {
|
84 |
+
left: $cart_width;
|
85 |
+
}
|
86 |
+
|
87 |
+
&.woocommerce-cart-tab-container--visible {
|
88 |
+
@include transform(translateX(0));
|
89 |
+
}
|
90 |
+
}
|
91 |
+
|
92 |
+
.woocommerce-cart-tab-container--right {
|
93 |
+
right: 0;
|
94 |
+
@include transform(translateX($cart_width));
|
95 |
+
|
96 |
+
.woocommerce-cart-tab {
|
97 |
+
right: $cart_width;
|
98 |
+
}
|
99 |
+
|
100 |
+
&.woocommerce-cart-tab-container--visible {
|
101 |
+
@include transform(translateX(0));
|
102 |
+
}
|
103 |
+
}
|
104 |
+
|
105 |
+
.woocommerce-cart-tab {
|
106 |
+
position: absolute;
|
107 |
+
top: 0;
|
108 |
+
width: 60px;
|
109 |
+
height: 68px;
|
110 |
+
box-sizing: border-box;
|
111 |
+
line-height: 1;
|
112 |
+
cursor: pointer;
|
113 |
+
|
114 |
+
&:focus {
|
115 |
+
outline: none;
|
116 |
+
}
|
117 |
+
|
118 |
+
.woocommerce-cart-tab__icon {
|
119 |
+
position: absolute;
|
120 |
+
top: 50%;
|
121 |
+
left: 50%;
|
122 |
+
transform: translateX(-50%) translateY(-50%);
|
123 |
+
width: 24px;
|
124 |
+
}
|
125 |
+
}
|
126 |
+
|
127 |
+
.woocommerce-cart-tab__contents {
|
128 |
+
display: block;
|
129 |
+
position: absolute;
|
130 |
+
bottom: 10px;
|
131 |
+
right: 10px;
|
132 |
+
width: 25px;
|
133 |
+
height: 25px;
|
134 |
+
background: red;
|
135 |
+
line-height: 25px;
|
136 |
+
border-radius: 100%;
|
137 |
+
text-align: center;
|
138 |
+
z-index: 10;
|
139 |
+
font-size: .857em;
|
140 |
+
}
|
141 |
+
|
142 |
+
.woocommerce-cart-tab a {
|
143 |
+
display: block;
|
144 |
+
}
|
145 |
+
|
146 |
+
body {
|
147 |
+
.site {
|
148 |
+
&:before {
|
149 |
+
content: "";
|
150 |
+
display: block;
|
151 |
+
position: fixed;
|
152 |
+
top: 0;
|
153 |
+
left: 0;
|
154 |
+
width: 100%;
|
155 |
+
height: 100%;
|
156 |
+
background: rgba(#000,.4);
|
157 |
+
z-index: 9999999;
|
158 |
+
@include transition(all cubic-bezier(.11,.51,.54,.9) .5s);
|
159 |
+
@include transform(translateX(-100%));
|
160 |
+
cursor: pointer;
|
161 |
+
}
|
162 |
+
}
|
163 |
+
|
164 |
+
&.woocommerce-cart-tab-is-visible {
|
165 |
+
overflow: hidden;
|
166 |
+
|
167 |
+
.site {
|
168 |
+
&:before {
|
169 |
+
@include transform(translateX(0));
|
170 |
+
}
|
171 |
+
}
|
172 |
+
}
|
173 |
+
}
|
174 |
+
|
175 |
+
@media screen and ( max-width: 768px ) {
|
176 |
+
.woocommerce-cart-tab-container {
|
177 |
+
display: none;
|
178 |
+
}
|
179 |
+
}
|
assets/scss/style.scss
ADDED
@@ -0,0 +1,186 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@import 'bourbon';
|
2 |
+
|
3 |
+
$cart_width: 320px;
|
4 |
+
|
5 |
+
.woocommerce-cart-tab-container {
|
6 |
+
width: $cart_width;
|
7 |
+
position: fixed;
|
8 |
+
top: 0;
|
9 |
+
z-index: 99999999;
|
10 |
+
@include transition(all cubic-bezier(.11,.51,.54,.9) .5s);
|
11 |
+
box-sizing: border-box;
|
12 |
+
|
13 |
+
.widget {
|
14 |
+
padding: 0;
|
15 |
+
}
|
16 |
+
|
17 |
+
.widget_shopping_cart {
|
18 |
+
overflow: auto;
|
19 |
+
margin-bottom: 0;
|
20 |
+
|
21 |
+
.widgettitle {
|
22 |
+
position: absolute;
|
23 |
+
top: 0;
|
24 |
+
left: 0;
|
25 |
+
width: 100%;
|
26 |
+
z-index: 99;
|
27 |
+
margin: 0;
|
28 |
+
padding: 0;
|
29 |
+
padding: 1.387rem 1.618rem;
|
30 |
+
text-align: center;
|
31 |
+
font-size: 1.2em;
|
32 |
+
border: 0;
|
33 |
+
height: 68px;
|
34 |
+
box-sizing: border-box;
|
35 |
+
}
|
36 |
+
|
37 |
+
ul.product_list_widget {
|
38 |
+
margin-top: 88px;
|
39 |
+
padding: 0 1.618em;
|
40 |
+
margin-bottom: 1.618em;
|
41 |
+
|
42 |
+
li {
|
43 |
+
border: 0;
|
44 |
+
}
|
45 |
+
}
|
46 |
+
|
47 |
+
.total {
|
48 |
+
margin-bottom: 5.5em;
|
49 |
+
padding: 0 3em;
|
50 |
+
padding-bottom: 1em;
|
51 |
+
border: 0;
|
52 |
+
}
|
53 |
+
|
54 |
+
.buttons {
|
55 |
+
position: absolute;
|
56 |
+
bottom: 0;
|
57 |
+
left: 0;
|
58 |
+
width: 100%;
|
59 |
+
padding: 1.387em 1.618em;
|
60 |
+
z-index: 99;
|
61 |
+
margin: 0;
|
62 |
+
box-sizing: border-box;
|
63 |
+
|
64 |
+
.button {
|
65 |
+
width: 48%;
|
66 |
+
float: left;
|
67 |
+
margin: 0;
|
68 |
+
text-align: center;
|
69 |
+
box-sizing: border-box;
|
70 |
+
|
71 |
+
&:nth-child(2) {
|
72 |
+
float: right;
|
73 |
+
}
|
74 |
+
|
75 |
+
&:after {
|
76 |
+
display: none;
|
77 |
+
}
|
78 |
+
}
|
79 |
+
}
|
80 |
+
}
|
81 |
+
}
|
82 |
+
|
83 |
+
.admin-bar .woocommerce-cart-tab-container {
|
84 |
+
top: 32px;
|
85 |
+
}
|
86 |
+
|
87 |
+
.woocommerce-cart-tab-container--left {
|
88 |
+
left: 0;
|
89 |
+
@include transform(translateX(- $cart_width));
|
90 |
+
|
91 |
+
.woocommerce-cart-tab {
|
92 |
+
left: $cart_width;
|
93 |
+
}
|
94 |
+
|
95 |
+
&.woocommerce-cart-tab-container--visible {
|
96 |
+
@include transform(translateX(0));
|
97 |
+
}
|
98 |
+
}
|
99 |
+
|
100 |
+
.woocommerce-cart-tab-container--right {
|
101 |
+
right: 0;
|
102 |
+
@include transform(translateX($cart_width));
|
103 |
+
|
104 |
+
.woocommerce-cart-tab {
|
105 |
+
right: $cart_width;
|
106 |
+
}
|
107 |
+
|
108 |
+
&.woocommerce-cart-tab-container--visible {
|
109 |
+
@include transform(translateX(0));
|
110 |
+
}
|
111 |
+
}
|
112 |
+
|
113 |
+
.woocommerce-cart-tab {
|
114 |
+
position: absolute;
|
115 |
+
top: 0;
|
116 |
+
width: 68px;
|
117 |
+
height: 68px;
|
118 |
+
box-sizing: border-box;
|
119 |
+
line-height: 1;
|
120 |
+
cursor: pointer;
|
121 |
+
|
122 |
+
&:focus {
|
123 |
+
outline: none;
|
124 |
+
}
|
125 |
+
|
126 |
+
.woocommerce-cart-tab__icon {
|
127 |
+
position: absolute;
|
128 |
+
top: 50%;
|
129 |
+
left: 50%;
|
130 |
+
transform: translateX(-50%) translateY(-50%);
|
131 |
+
width: 24px;
|
132 |
+
}
|
133 |
+
}
|
134 |
+
|
135 |
+
.woocommerce-cart-tab__contents {
|
136 |
+
display: block;
|
137 |
+
position: absolute;
|
138 |
+
bottom: 10px;
|
139 |
+
right: 10px;
|
140 |
+
width: 25px;
|
141 |
+
height: 25px;
|
142 |
+
line-height: 25px;
|
143 |
+
border-radius: 100%;
|
144 |
+
text-align: center;
|
145 |
+
z-index: 10;
|
146 |
+
font-size: .857em;
|
147 |
+
}
|
148 |
+
|
149 |
+
.woocommerce-cart-tab a {
|
150 |
+
display: block;
|
151 |
+
}
|
152 |
+
|
153 |
+
body {
|
154 |
+
.site {
|
155 |
+
&:before {
|
156 |
+
content: "";
|
157 |
+
display: block;
|
158 |
+
position: fixed;
|
159 |
+
top: 0;
|
160 |
+
left: 0;
|
161 |
+
width: 100%;
|
162 |
+
height: 100%;
|
163 |
+
background: rgba(#000,.4);
|
164 |
+
z-index: 9999999;
|
165 |
+
@include transition(all cubic-bezier(.11,.51,.54,.9) .5s);
|
166 |
+
@include transform(translateX(-100%));
|
167 |
+
cursor: pointer;
|
168 |
+
}
|
169 |
+
}
|
170 |
+
|
171 |
+
&.woocommerce-cart-tab-is-visible {
|
172 |
+
overflow: hidden;
|
173 |
+
|
174 |
+
.site {
|
175 |
+
&:before {
|
176 |
+
@include transform(translateX(0));
|
177 |
+
}
|
178 |
+
}
|
179 |
+
}
|
180 |
+
}
|
181 |
+
|
182 |
+
@media screen and ( max-width: 768px ) {
|
183 |
+
.woocommerce-cart-tab-container {
|
184 |
+
display: none;
|
185 |
+
}
|
186 |
+
}
|
cart-tab.php
CHANGED
@@ -2,10 +2,10 @@
|
|
2 |
/**
|
3 |
* Plugin Name: WooCommerce Cart Tab
|
4 |
* Plugin URI: http://jameskoster.co.uk/tag/cart-tab/
|
5 |
-
* Version: 0.
|
6 |
* Description: Displays a sitewide link to the cart which reveals the cart contents on hover.
|
7 |
* Author: jameskoster
|
8 |
-
* Tested up to: 4.
|
9 |
* Author URI: http://jameskoster.co.uk
|
10 |
* Text Domain: woocommerce-cart-tab
|
11 |
* Domain Path: /languages/
|
@@ -26,196 +26,33 @@ if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', g
|
|
26 |
*/
|
27 |
load_plugin_textdomain( 'woocommerce-cart-tab', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
|
28 |
|
29 |
-
if ( ! class_exists( '
|
30 |
|
31 |
/**
|
32 |
* Cart Tab class
|
33 |
*/
|
34 |
-
class
|
35 |
|
36 |
/**
|
37 |
* Set up all the things
|
38 |
*/
|
39 |
public function __construct() {
|
40 |
-
|
41 |
-
add_action( 'wp_footer', array( $this, 'woocommerce_cart_tab' ) );
|
42 |
-
add_filter( 'add_to_cart_fragments', array( $this, 'wcct_add_to_cart_fragment' ) );
|
43 |
-
|
44 |
-
// Init settings.
|
45 |
-
$this->settings = array(
|
46 |
-
array(
|
47 |
-
'name' => __( 'Cart Tab', 'woocommerce-cart-tab' ),
|
48 |
-
'type' => 'title',
|
49 |
-
'id' => 'wc_ct_options',
|
50 |
-
),
|
51 |
-
array(
|
52 |
-
'name' => __( 'Cart Widget', 'woocommerce-cart-tab' ),
|
53 |
-
'desc' => __( 'Display the cart widget on hover', 'woocommerce-cart-tab' ),
|
54 |
-
'id' => 'wc_ct_cart_widget',
|
55 |
-
'type' => 'checkbox',
|
56 |
-
),
|
57 |
-
array(
|
58 |
-
'name' => __( 'Hide Empty Cart', 'woocommerce-cart-tab' ),
|
59 |
-
'desc' => __( 'Hide the cart tab if the cart is empty', 'woocommerce-cart-tab' ),
|
60 |
-
'id' => 'wc_ct_hide_empty_cart',
|
61 |
-
'type' => 'checkbox',
|
62 |
-
),
|
63 |
-
array(
|
64 |
-
'name' => __( 'Use the light or dark skin', 'woocommerce-cart-tab' ),
|
65 |
-
'id' => 'wc_ct_skin',
|
66 |
-
'type' => 'select',
|
67 |
-
'options' => array(
|
68 |
-
'light' => __( 'Light', 'woocommerce-cart-tab' ),
|
69 |
-
'dark' => __( 'Dark', 'woocommerce-cart-tab' ),
|
70 |
-
),
|
71 |
-
),
|
72 |
-
array(
|
73 |
-
'name' => __( 'Position the cart tab on the right or left', 'woocommerce-cart-tab' ),
|
74 |
-
'id' => 'wc_ct_horizontal_position',
|
75 |
-
'type' => 'select',
|
76 |
-
'options' => array(
|
77 |
-
'right' => __( 'Right', 'woocommerce-cart-tab' ),
|
78 |
-
'left' => __( 'Left', 'woocommerce-cart-tab' ),
|
79 |
-
),
|
80 |
-
),
|
81 |
-
array(
|
82 |
-
'name' => __( 'Cart link display total/subtotal', 'woocommerce-cart-tab' ),
|
83 |
-
'id' => 'wc_ct_link_display_total',
|
84 |
-
'type' => 'select',
|
85 |
-
'options' => array(
|
86 |
-
'total' => __( 'total', 'woocommerce-cart-tab' ),
|
87 |
-
'subtotal' => __( 'subtotal', 'woocommerce-cart-tab' ),
|
88 |
-
),
|
89 |
-
),
|
90 |
-
|
91 |
-
array(
|
92 |
-
'type' => 'sectionend',
|
93 |
-
'id' => 'wc_ct_options',
|
94 |
-
),
|
95 |
-
);
|
96 |
-
|
97 |
-
// Default options.
|
98 |
-
add_option( 'wc_ct_cart_widget', 'yes' );
|
99 |
-
add_option( 'wc_ct_hide_empty_cart', 'no' );
|
100 |
-
add_option( 'wc_ct_skin', 'light' );
|
101 |
-
add_option( 'wc_ct_horizontal_position', 'right' );
|
102 |
-
add_option( 'wc_ct_link_display_total', 'total' );
|
103 |
-
|
104 |
-
// Admin.
|
105 |
-
add_action( 'woocommerce_settings_image_options_after', array( $this, 'admin_settings' ), 20 );
|
106 |
-
add_action( 'woocommerce_update_options_catalog', array( $this, 'save_admin_settings' ) );
|
107 |
-
add_action( 'woocommerce_update_options_products', array( $this, 'save_admin_settings' ) );
|
108 |
-
}
|
109 |
-
|
110 |
-
/**
|
111 |
-
* Load the settings
|
112 |
-
*
|
113 |
-
* @return void
|
114 |
-
*/
|
115 |
-
function admin_settings() {
|
116 |
-
woocommerce_admin_fields( $this->settings );
|
117 |
-
}
|
118 |
-
|
119 |
-
/**
|
120 |
-
* Save the settings
|
121 |
-
*
|
122 |
-
* @return void
|
123 |
-
*/
|
124 |
-
function save_admin_settings() {
|
125 |
-
woocommerce_update_options( $this->settings );
|
126 |
}
|
127 |
|
128 |
/**
|
129 |
-
*
|
130 |
-
*
|
131 |
* @return void
|
132 |
*/
|
133 |
-
function
|
134 |
-
|
135 |
-
|
136 |
-
|
|
|
|
|
137 |
}
|
138 |
-
|
139 |
-
/**
|
140 |
-
* The cart fragment
|
141 |
-
*
|
142 |
-
* @param array $fragments elements that should be refreshed when items are added/removed from the cart.
|
143 |
-
*/
|
144 |
-
function wcct_add_to_cart_fragment( $fragments ) {
|
145 |
-
global $woocommerce;
|
146 |
-
ob_start();
|
147 |
-
wcct_cart_button();
|
148 |
-
$fragments['a.cart-parent'] = ob_get_clean();
|
149 |
-
return $fragments;
|
150 |
-
}
|
151 |
-
|
152 |
-
/**
|
153 |
-
* Display the cart tab / widget
|
154 |
-
*
|
155 |
-
* @return void
|
156 |
-
*/
|
157 |
-
function woocommerce_cart_tab() {
|
158 |
-
global $woocommerce;
|
159 |
-
$skin = get_option( 'wc_ct_skin' );
|
160 |
-
$position = get_option( 'wc_ct_horizontal_position' );
|
161 |
-
$widget = get_option( 'wc_ct_cart_widget' );
|
162 |
-
$hide_widget = get_option( 'wc_ct_hide_empty_cart' );
|
163 |
-
|
164 |
-
if ( 0 == $woocommerce->cart->get_cart_contents_count() && 'yes' == $hide_widget ) {
|
165 |
-
/**
|
166 |
-
* Hide empty cart
|
167 |
-
* Compatible with WP Super Cache as long as "late init" is enabled
|
168 |
-
*/
|
169 |
-
$visibility = 'hidden';
|
170 |
-
} else {
|
171 |
-
$visibility = 'visible';
|
172 |
-
}
|
173 |
-
|
174 |
-
if ( ! is_cart() && ! is_checkout() ) {
|
175 |
-
if ( 'yes' == $widget && ! wp_is_mobile() ) {
|
176 |
-
echo '<div class="' . esc_attr( $position ) . ' cart-tab ' . esc_attr( $skin ) . ' ' . esc_attr( $visibility ) . '">';
|
177 |
-
} else {
|
178 |
-
echo '<div class="' . esc_attr( $position ) . ' cart-tab no-animation ' . esc_attr( $skin ) . ' ' . esc_attr( $visibility ) . '">';
|
179 |
-
}
|
180 |
-
|
181 |
-
wcct_cart_button();
|
182 |
-
|
183 |
-
// Display the widget if specified.
|
184 |
-
if ( 'yes' == $widget && ! wp_is_mobile() ) {
|
185 |
-
// Check for WooCommerce 2.0 and display the cart widget.
|
186 |
-
if ( version_compare( WOOCOMMERCE_VERSION, '2.0.0' ) >= 0 ) {
|
187 |
-
the_widget( 'WC_Widget_Cart', 'title=' );
|
188 |
-
} else {
|
189 |
-
the_widget( 'WooCommerce_Widget_Cart', 'title=' );
|
190 |
-
}
|
191 |
-
}
|
192 |
-
echo '</div>';
|
193 |
-
}
|
194 |
-
}
|
195 |
-
}
|
196 |
-
|
197 |
-
/**
|
198 |
-
* Displays the cart total and number of items as a link
|
199 |
-
*
|
200 |
-
* @return void
|
201 |
-
*/
|
202 |
-
function wcct_cart_button() {
|
203 |
-
global $woocommerce;
|
204 |
-
$link_total = get_option( 'wc_ct_link_display_total' );
|
205 |
-
?>
|
206 |
-
<a href="<?php echo esc_url( $woocommerce->cart->get_cart_url() ); ?>" title="<?php esc_attr_e( 'View your shopping cart', 'woocommerce-cart-tab' ); ?>" class="cart-parent">
|
207 |
-
<?php
|
208 |
-
if ( 'total' == $link_total ) {
|
209 |
-
echo wp_kses_post( $woocommerce->cart->get_cart_total() );
|
210 |
-
} elseif ( 'subtotal' == $link_total ) {
|
211 |
-
echo wp_kses_post( $woocommerce->cart->get_cart_subtotal() );
|
212 |
-
}
|
213 |
-
echo '<span class="contents">' . sprintf( _n( '%d item', '%d items', intval( $woocommerce->cart->get_cart_contents_count() ), 'woocommerce-cart-tab' ), intval( $woocommerce->cart->get_cart_contents_count() ) ) . '</span>';
|
214 |
-
?>
|
215 |
-
</a>
|
216 |
-
<?php
|
217 |
}
|
218 |
|
219 |
-
$woocommerce_cart_tab = new
|
220 |
}
|
221 |
}
|
2 |
/**
|
3 |
* Plugin Name: WooCommerce Cart Tab
|
4 |
* Plugin URI: http://jameskoster.co.uk/tag/cart-tab/
|
5 |
+
* Version: 1.0.0
|
6 |
* Description: Displays a sitewide link to the cart which reveals the cart contents on hover.
|
7 |
* Author: jameskoster
|
8 |
+
* Tested up to: 4.7.1
|
9 |
* Author URI: http://jameskoster.co.uk
|
10 |
* Text Domain: woocommerce-cart-tab
|
11 |
* Domain Path: /languages/
|
26 |
*/
|
27 |
load_plugin_textdomain( 'woocommerce-cart-tab', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
|
28 |
|
29 |
+
if ( ! class_exists( 'WooCommerce_Cart_Tab' ) ) {
|
30 |
|
31 |
/**
|
32 |
* Cart Tab class
|
33 |
*/
|
34 |
+
class WooCommerce_Cart_Tab {
|
35 |
|
36 |
/**
|
37 |
* Set up all the things
|
38 |
*/
|
39 |
public function __construct() {
|
40 |
+
$this->setup();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
}
|
42 |
|
43 |
/**
|
44 |
+
* Setup
|
|
|
45 |
* @return void
|
46 |
*/
|
47 |
+
public function setup() {
|
48 |
+
include_once( 'includes/cart-tab-functions.php' );
|
49 |
+
include_once( 'includes/cart-tab-templates.php' );
|
50 |
+
include_once( 'includes/class-cart-tab-customizer.php' );
|
51 |
+
include_once( 'includes/class-cart-tab-frontend.php' );
|
52 |
+
include_once( 'includes/class-cart-tab-hooks.php' );
|
53 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
}
|
55 |
|
56 |
+
$woocommerce_cart_tab = new WooCommerce_Cart_Tab();
|
57 |
}
|
58 |
}
|
includes/cart-tab-functions.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Sanitizes choices (selects / radios)
|
5 |
+
* Checks that the input matches one of the available choices
|
6 |
+
*
|
7 |
+
* @param array $input the available choices.
|
8 |
+
* @param array $setting the setting object.
|
9 |
+
* @since 1.0.0
|
10 |
+
*/
|
11 |
+
function woocommerce_cart_tab_sanitize_choices( $input, $setting ) {
|
12 |
+
// Ensure input is a slug.
|
13 |
+
$input = sanitize_key( $input );
|
14 |
+
|
15 |
+
// Get list of choices from the control associated with the setting.
|
16 |
+
$choices = $setting->manager->get_control( $setting->id )->choices;
|
17 |
+
|
18 |
+
// If the input is a valid key, return it; otherwise, return the default.
|
19 |
+
return ( array_key_exists( $input, $choices ) ? $input : $setting->default );
|
20 |
+
}
|
includes/cart-tab-templates.php
ADDED
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if ( ! function_exists( 'woocommerce_cart_tab_button' ) ) {
|
3 |
+
/**
|
4 |
+
* Displays the number of items in the cart with an icon
|
5 |
+
*
|
6 |
+
* @return void
|
7 |
+
*/
|
8 |
+
function woocommerce_cart_tab_button() {
|
9 |
+
global $woocommerce;
|
10 |
+
?>
|
11 |
+
<div class="woocommerce-cart-tab">
|
12 |
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 86 104.5" class="woocommerce-cart-tab__icon">
|
13 |
+
<path class="woocommerce-cart-tab__icon-bag" d="M67.2,26.7C64.6,11.5,54.8,0.2,43.1,0.2C31.4,0.2,21.6,11.5,19,26.7H0.1v77.6h86V26.7H67.2z M43.1,4.2
|
14 |
+
c9.6,0,17.7,9.6,20,22.6H23C25.4,13.8,33.5,4.2,43.1,4.2z M82.1,100.4h-78V30.7h14.4c-0.1,1.3-0.2,2.6-0.2,3.9c0,1.1,0,2.2,0.1,3.3
|
15 |
+
c-0.8,0.6-1.4,1.6-1.4,2.8c0,1.9,1.6,3.5,3.5,3.5s3.5-1.6,3.5-3.5c0-1.2-0.6-2.3-1.6-2.9c-0.1-1-0.1-2-0.1-3.1
|
16 |
+
c0-1.3,0.1-2.6,0.2-3.9h41.2c0.1,1.3,0.2,2.6,0.2,3.9c0,1,0,2.1-0.1,3.1c-1,0.6-1.6,1.7-1.6,2.9c0,1.9,1.6,3.5,3.5,3.5
|
17 |
+
c1.9,0,3.5-1.6,3.5-3.5c0-1.1-0.5-2.1-1.4-2.8c0.1-1.1,0.1-2.2,0.1-3.3c0-1.3-0.1-2.6-0.2-3.9h14.4V100.4z"/>
|
18 |
+
</svg>
|
19 |
+
|
20 |
+
<?php
|
21 |
+
echo '<span class="woocommerce-cart-tab__contents">' . intval( $woocommerce->cart->get_cart_contents_count() ) . '</span>';
|
22 |
+
?>
|
23 |
+
|
24 |
+
<script type="text/javascript">
|
25 |
+
jQuery( '.woocommerce-cart-tab' ).click( function() {
|
26 |
+
jQuery( '.woocommerce-cart-tab-container' ).toggleClass( 'woocommerce-cart-tab-container--visible' );
|
27 |
+
jQuery( 'body' ).toggleClass( 'woocommerce-cart-tab-is-visible' );
|
28 |
+
});
|
29 |
+
</script>
|
30 |
+
</div>
|
31 |
+
<?php
|
32 |
+
}
|
33 |
+
}
|
34 |
+
|
35 |
+
if ( ! function_exists( 'woocommerce_cart_tab' ) ) {
|
36 |
+
/**
|
37 |
+
* Display the cart tab / widget
|
38 |
+
*
|
39 |
+
* @return void
|
40 |
+
*/
|
41 |
+
function woocommerce_cart_tab() {
|
42 |
+
if ( get_option( 'wc_ct_horizontal_position' ) ) {
|
43 |
+
$position = get_option( 'wc_ct_horizontal_position' );
|
44 |
+
} else {
|
45 |
+
$position = get_theme_mod( 'woocommerce_cart_tab_position', 'right' );
|
46 |
+
}
|
47 |
+
|
48 |
+
if ( ! is_cart() && ! is_checkout() ) {
|
49 |
+
echo '<div class="woocommerce-cart-tab-container woocommerce-cart-tab-container--' . esc_attr( $position ) . '">';
|
50 |
+
|
51 |
+
do_action( 'wcct_before_cart_widget' );
|
52 |
+
|
53 |
+
the_widget( 'WC_Widget_Cart', 'title=' . __( 'Your Cart', 'woocommerce-cart-tab' ) );
|
54 |
+
|
55 |
+
echo '</div>';
|
56 |
+
}
|
57 |
+
}
|
58 |
+
}
|
includes/class-cart-tab-customizer.php
ADDED
@@ -0,0 +1,237 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* WooCommerce Cart Tab Customizer Class
|
4 |
+
*
|
5 |
+
* @author jameskoster
|
6 |
+
* @package woocommerce-cart-tab
|
7 |
+
* @since 1.0.0
|
8 |
+
*/
|
9 |
+
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
11 |
+
exit;
|
12 |
+
}
|
13 |
+
|
14 |
+
if ( ! class_exists( 'WooCommerce_Cart_Tab_Customizer' ) ) :
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Cart tab Customizer class
|
18 |
+
*/
|
19 |
+
class WooCommerce_Cart_Tab_Customizer {
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Setup class.
|
23 |
+
*
|
24 |
+
* @since 1.0.0
|
25 |
+
*/
|
26 |
+
public function __construct() {
|
27 |
+
if ( 'storefront' == get_option( 'template' ) ) {
|
28 |
+
add_action( 'wp_enqueue_scripts', array( $this, 'add_customizer_css_storefront' ), 9999 );
|
29 |
+
} else {
|
30 |
+
add_action( 'customize_register', array( $this, 'customize_register' ), 10 );
|
31 |
+
add_action( 'wp_enqueue_scripts', array( $this, 'add_customizer_css' ), 9999 );
|
32 |
+
}
|
33 |
+
}
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Customizer controls / settings
|
37 |
+
*
|
38 |
+
* @param WP_Customize_Manager $wp_customize Theme Customizer object.
|
39 |
+
* @since 1.0.0
|
40 |
+
*/
|
41 |
+
public function customize_register( $wp_customize ) {
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Create defaults from existing options set using the old method
|
45 |
+
*/
|
46 |
+
$cart_tab_position_default = get_option( 'wc_ct_horizontal_position' );
|
47 |
+
|
48 |
+
if ( $cart_tab_position_default ) {
|
49 |
+
delete_option( 'wc_ct_horizontal_position' );
|
50 |
+
} else {
|
51 |
+
$cart_tab_position_default = 'right';
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Sections
|
56 |
+
*/
|
57 |
+
$wp_customize->add_section( 'woocommerce_cart_tab' , array(
|
58 |
+
'title' => __( 'Cart Tab', 'storefront' ),
|
59 |
+
'priority' => 85,
|
60 |
+
) );
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Settings
|
64 |
+
*/
|
65 |
+
$wp_customize->add_setting( 'woocommerce_cart_tab_position' , array(
|
66 |
+
'default' => $cart_tab_position_default,
|
67 |
+
'transport' => 'refresh',
|
68 |
+
'sanitize_callback' => 'woocommerce_cart_tab_sanitize_choices',
|
69 |
+
) );
|
70 |
+
|
71 |
+
$wp_customize->add_setting( 'woocommerce_cart_tab_background', array(
|
72 |
+
'default' => '#ffffff',
|
73 |
+
'sanitize_callback' => 'sanitize_hex_color',
|
74 |
+
) );
|
75 |
+
|
76 |
+
$wp_customize->add_setting( 'woocommerce_cart_tab_accent', array(
|
77 |
+
'default' => '#333333',
|
78 |
+
'sanitize_callback' => 'sanitize_hex_color',
|
79 |
+
) );
|
80 |
+
|
81 |
+
/**
|
82 |
+
* Controls
|
83 |
+
*/
|
84 |
+
$wp_customize->add_control( new WP_Customize_Control( $wp_customize, 'woocommerce_cart_tab_position', array(
|
85 |
+
'label' => __( 'Position', 'woocommerce-cart-tab' ),
|
86 |
+
'section' => 'woocommerce_cart_tab',
|
87 |
+
'settings' => 'woocommerce_cart_tab_position',
|
88 |
+
'type' => 'select',
|
89 |
+
'choices' => array(
|
90 |
+
'right' => __( 'Right', 'woocommerce-cart-tab' ),
|
91 |
+
'left' => __( 'Left', 'woocommerce-cart-tab' ),
|
92 |
+
),
|
93 |
+
) ) );
|
94 |
+
|
95 |
+
$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'woocommerce_cart_tab_background', array(
|
96 |
+
'label' => __( 'Background color', 'woocommerce-cart-tab' ),
|
97 |
+
'section' => 'woocommerce_cart_tab',
|
98 |
+
'settings' => 'woocommerce_cart_tab_background',
|
99 |
+
) ) );
|
100 |
+
|
101 |
+
$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'woocommerce_cart_tab_accent', array(
|
102 |
+
'label' => __( 'Icon color', 'woocommerce-cart-tab' ),
|
103 |
+
'section' => 'woocommerce_cart_tab',
|
104 |
+
'settings' => 'woocommerce_cart_tab_accent',
|
105 |
+
) ) );
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* Add CSS in <head> for styles handled by the theme customizer
|
110 |
+
* If the Customizer is active pull in the raw css. Otherwise pull in the prepared theme_mods if they exist.
|
111 |
+
*
|
112 |
+
* @since 1.0.0
|
113 |
+
* @return void
|
114 |
+
*/
|
115 |
+
public function add_customizer_css() {
|
116 |
+
$background = get_theme_mod( 'woocommerce_cart_tab_background', '#ffffff' );
|
117 |
+
$accent = get_theme_mod( 'woocommerce_cart_tab_accent', '#333333' );
|
118 |
+
|
119 |
+
$styles = '
|
120 |
+
.woocommerce-cart-tab-container {
|
121 |
+
background-color: ' . $this->woocommerce_cart_tab_adjust_color_brightness( $background, -7 ) . ';
|
122 |
+
}
|
123 |
+
|
124 |
+
.woocommerce-cart-tab,
|
125 |
+
.woocommerce-cart-tab-container .widget_shopping_cart .widgettitle,
|
126 |
+
.woocommerce-cart-tab-container .widget_shopping_cart .buttons {
|
127 |
+
background-color: ' . $background . ';
|
128 |
+
}
|
129 |
+
|
130 |
+
.woocommerce-cart-tab,
|
131 |
+
.woocommerce-cart-tab:hover {
|
132 |
+
color: ' . $background . ';
|
133 |
+
}
|
134 |
+
|
135 |
+
.woocommerce-cart-tab__contents {
|
136 |
+
background-color: ' . $accent . ';
|
137 |
+
}
|
138 |
+
|
139 |
+
.woocommerce-cart-tab__icon-bag {
|
140 |
+
fill: ' . $accent . ';
|
141 |
+
}';
|
142 |
+
|
143 |
+
wp_add_inline_style( 'cart-tab-styles', $styles );
|
144 |
+
}
|
145 |
+
|
146 |
+
/**
|
147 |
+
* Add CSS in <head> for styles handled by the theme customizer - Storefront edition
|
148 |
+
* If the Customizer is active pull in the raw css. Otherwise pull in the prepared theme_mods if they exist.
|
149 |
+
*
|
150 |
+
* @since 1.0.0
|
151 |
+
* @return void
|
152 |
+
*/
|
153 |
+
public function add_customizer_css_storefront() {
|
154 |
+
$background = get_theme_mod( 'storefront_header_background_color' );
|
155 |
+
$header_link_color = get_theme_mod( 'storefront_header_link_color' );
|
156 |
+
$header_text_color = get_theme_mod( 'storefront_header_text_color' );
|
157 |
+
$button_background = get_theme_mod( 'storefront_button_alt_background_color' );
|
158 |
+
$button_text = get_theme_mod( 'storefront_button_alt_text_color' );
|
159 |
+
|
160 |
+
$styles = '
|
161 |
+
.woocommerce-cart-tab-container {
|
162 |
+
background-color: ' . $this->woocommerce_cart_tab_adjust_color_brightness( $background, 10 ) . ';
|
163 |
+
}
|
164 |
+
|
165 |
+
.woocommerce-cart-tab,
|
166 |
+
.woocommerce-cart-tab-container .widget_shopping_cart .widgettitle,
|
167 |
+
.woocommerce-cart-tab-container .widget_shopping_cart .buttons {
|
168 |
+
background-color: ' . $this->woocommerce_cart_tab_adjust_color_brightness( $background, 20 ) . ';
|
169 |
+
}
|
170 |
+
|
171 |
+
.woocommerce-cart-tab,
|
172 |
+
.woocommerce-cart-tab:hover {
|
173 |
+
color: ' . $this->woocommerce_cart_tab_adjust_color_brightness( $background, 10 ) . ';
|
174 |
+
}
|
175 |
+
|
176 |
+
.woocommerce-cart-tab-container .widget_shopping_cart {
|
177 |
+
color: ' . $header_text_color . ';
|
178 |
+
}
|
179 |
+
|
180 |
+
.woocommerce-cart-tab-container .widget_shopping_cart a:not(.button),
|
181 |
+
.woocommerce-cart-tab-container .widget_shopping_cart .widgettitle {
|
182 |
+
color: ' . $header_link_color . ';
|
183 |
+
}
|
184 |
+
|
185 |
+
.woocommerce-cart-tab__contents {
|
186 |
+
background-color: ' . $button_background . ';
|
187 |
+
color: ' . $button_text . ';
|
188 |
+
}
|
189 |
+
|
190 |
+
.woocommerce-cart-tab__icon-bag {
|
191 |
+
fill: ' . $header_link_color . ';
|
192 |
+
}';
|
193 |
+
|
194 |
+
wp_add_inline_style( 'cart-tab-styles-storefront', $styles );
|
195 |
+
}
|
196 |
+
|
197 |
+
/**
|
198 |
+
* Adjust a hex color brightness
|
199 |
+
* Allows us to create hover styles for custom link colors
|
200 |
+
*
|
201 |
+
* @param strong $hex hex color e.g. #111111.
|
202 |
+
* @param integer $steps factor by which to brighten/darken ranging from -255 (darken) to 255 (brighten).
|
203 |
+
* @return string brightened/darkened hex color
|
204 |
+
* @since 1.0.0
|
205 |
+
*/
|
206 |
+
public function woocommerce_cart_tab_adjust_color_brightness( $hex, $steps ) {
|
207 |
+
// Steps should be between -255 and 255. Negative = darker, positive = lighter.
|
208 |
+
$steps = max( -255, min( 255, $steps ) );
|
209 |
+
|
210 |
+
// Format the hex color string.
|
211 |
+
$hex = str_replace( '#', '', $hex );
|
212 |
+
|
213 |
+
if ( 3 == strlen( $hex ) ) {
|
214 |
+
$hex = str_repeat( substr( $hex, 0, 1 ), 2 ) . str_repeat( substr( $hex, 1, 1 ), 2 ) . str_repeat( substr( $hex, 2, 1 ), 2 );
|
215 |
+
}
|
216 |
+
|
217 |
+
// Get decimal values.
|
218 |
+
$r = hexdec( substr( $hex, 0, 2 ) );
|
219 |
+
$g = hexdec( substr( $hex, 2, 2 ) );
|
220 |
+
$b = hexdec( substr( $hex, 4, 2 ) );
|
221 |
+
|
222 |
+
// Adjust number of steps and keep it inside 0 to 255.
|
223 |
+
$r = max( 0, min( 255, $r + $steps ) );
|
224 |
+
$g = max( 0, min( 255, $g + $steps ) );
|
225 |
+
$b = max( 0, min( 255, $b + $steps ) );
|
226 |
+
|
227 |
+
$r_hex = str_pad( dechex( $r ), 2, '0', STR_PAD_LEFT );
|
228 |
+
$g_hex = str_pad( dechex( $g ), 2, '0', STR_PAD_LEFT );
|
229 |
+
$b_hex = str_pad( dechex( $b ), 2, '0', STR_PAD_LEFT );
|
230 |
+
|
231 |
+
return '#' . $r_hex . $g_hex . $b_hex;
|
232 |
+
}
|
233 |
+
}
|
234 |
+
|
235 |
+
endif;
|
236 |
+
|
237 |
+
return new WooCommerce_Cart_Tab_Customizer();
|
includes/class-cart-tab-frontend.php
ADDED
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* WooCommerce Cart Tab Frontend Class
|
4 |
+
*
|
5 |
+
* @author jameskoster
|
6 |
+
* @package woocommerce-cart-tab
|
7 |
+
* @since 1.0.0
|
8 |
+
*/
|
9 |
+
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
11 |
+
exit;
|
12 |
+
}
|
13 |
+
|
14 |
+
if ( ! class_exists( 'WooCommerce_Cart_Tab_Frontend' ) ) :
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Cart tab frontend class
|
18 |
+
*/
|
19 |
+
class WooCommerce_Cart_Tab_Frontend {
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Setup class.
|
23 |
+
*
|
24 |
+
* @since 1.0.0
|
25 |
+
*/
|
26 |
+
public function __construct() {
|
27 |
+
add_action( 'wp_enqueue_scripts', array( $this, 'setup_styles' ), 999 );
|
28 |
+
add_filter( 'add_to_cart_fragments', array( $this, 'woocommerce_cart_tab_add_to_cart_fragment' ) );
|
29 |
+
|
30 |
+
add_action( 'wp_footer', 'woocommerce_cart_tab' );
|
31 |
+
}
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Styles
|
35 |
+
*
|
36 |
+
* @return void
|
37 |
+
*/
|
38 |
+
function setup_styles() {
|
39 |
+
if ( ! is_cart() && ! is_checkout() ) {
|
40 |
+
if ( 'storefront' == get_option( 'template' ) ) {
|
41 |
+
wp_enqueue_style( 'cart-tab-styles-storefront', plugins_url( '../assets/css/style-storefront.css', __FILE__ ) );
|
42 |
+
} else {
|
43 |
+
wp_enqueue_style( 'cart-tab-styles', plugins_url( '../assets/css/style.css', __FILE__ ) );
|
44 |
+
}
|
45 |
+
wp_enqueue_script( 'cart-tab-script', plugins_url( '../assets/js/cart-tab.min.js', __FILE__ ), array( 'jquery' ), '1.0.0' );
|
46 |
+
}
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* The cart fragment
|
51 |
+
*
|
52 |
+
* @param array $fragments elements that should be refreshed when items are added/removed from the cart.
|
53 |
+
*/
|
54 |
+
function woocommerce_cart_tab_add_to_cart_fragment( $fragments ) {
|
55 |
+
ob_start();
|
56 |
+
woocommerce_cart_tab_button();
|
57 |
+
$fragments['.woocommerce-cart-tab'] = ob_get_clean();
|
58 |
+
return $fragments;
|
59 |
+
}
|
60 |
+
}
|
61 |
+
|
62 |
+
endif;
|
63 |
+
|
64 |
+
return new WooCommerce_Cart_Tab_Frontend();
|
includes/class-cart-tab-hooks.php
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* WooCommerce Cart Tab Action hooks
|
4 |
+
*
|
5 |
+
* @author jameskoster
|
6 |
+
* @package woocommerce-cart-tab
|
7 |
+
* @since 1.0.0
|
8 |
+
*/
|
9 |
+
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
11 |
+
exit;
|
12 |
+
}
|
13 |
+
|
14 |
+
add_action( 'wcct_before_cart_widget', 'woocommerce_cart_tab_button' );
|
package.json
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"name": "woocommerce-cart-tab",
|
3 |
+
"title": "WooCommerce Cart Tab",
|
4 |
+
"version": "1.0.0",
|
5 |
+
"homepage": "http://wordpress.org/plugins/woocommerce-cart-tab/",
|
6 |
+
"repository": {
|
7 |
+
"type": "git",
|
8 |
+
"url": "https://github.com/jameskoster/woocommerce-cart-tab.git"
|
9 |
+
},
|
10 |
+
"main": "Gruntfile.js",
|
11 |
+
"devDependencies": {
|
12 |
+
"grunt": "~0.4.5",
|
13 |
+
"grunt-contrib-uglify": "~0.9.1",
|
14 |
+
"grunt-checktextdomain": "^1.0.0",
|
15 |
+
"grunt-wp-i18n": "^0.5.2",
|
16 |
+
"grunt-contrib-cssmin": "~0.12.3",
|
17 |
+
"grunt-contrib-watch": "~0.6.1",
|
18 |
+
"grunt-sass": "^1.0.0",
|
19 |
+
"node-sass": "^3.2.0",
|
20 |
+
"susy": "^2.2.5",
|
21 |
+
"node-bourbon": "~4.2.3",
|
22 |
+
"grunt-contrib-copy": "~0.8.0",
|
23 |
+
"grunt-contrib-jshint": "^0.11.2"
|
24 |
+
},
|
25 |
+
"engines": {
|
26 |
+
"node": ">=0.8.0",
|
27 |
+
"npm": ">=1.1.0"
|
28 |
+
}
|
29 |
+
}
|
readme.txt
CHANGED
@@ -2,20 +2,20 @@
|
|
2 |
Contributors: jameskoster
|
3 |
Tags: woocommerce, ecommerce, cart
|
4 |
Requires at least: 4.4
|
5 |
-
Tested up to: 4.
|
6 |
-
Stable tag: 0.
|
7 |
License: GPLv2 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
10 |
-
|
11 |
|
12 |
== Description ==
|
13 |
|
14 |
-
A big UX mistake on many eCommerce web sites is hiding access to the cart.
|
15 |
|
16 |
-
|
17 |
|
18 |
-
There are options
|
19 |
|
20 |
Please feel free to contribute on <a href="https://github.com/jameskoster/woocommerce-cart-tab">github</a>.
|
21 |
|
@@ -41,11 +41,15 @@ Thanks! Please fork the repo on <a href="https://github.com/jameskoster/woocomme
|
|
41 |
== Screenshots ==
|
42 |
|
43 |
1. The cart tab.
|
44 |
-
2. The cart tab on hover.
|
45 |
-
3. The cart tab with dark skin enabled.
|
46 |
|
47 |
== Changelog ==
|
48 |
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
= 0.5.0 - 06/07/2016 =
|
50 |
* New - Cart tab no longer displayed on handheld devices.
|
51 |
|
2 |
Contributors: jameskoster
|
3 |
Tags: woocommerce, ecommerce, cart
|
4 |
Requires at least: 4.4
|
5 |
+
Tested up to: 4.7.1
|
6 |
+
Stable tag: 1.0.0
|
7 |
License: GPLv2 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
10 |
+
Adds an offscreen cart to all pages on your site and a fixed tab that displays the number of products in the cart. Adding a product to the cart or clicking the tab reveals the cart.
|
11 |
|
12 |
== Description ==
|
13 |
|
14 |
+
A big UX mistake on many eCommerce web sites is hiding access to the cart. After adding a product to the cart the visitors next logical step is to complete the purchase. Don't frustrate your customers by making them search for the cart button!
|
15 |
|
16 |
+
This plugin adds a sitewide tab that displays the number of products in the cart. Clicking the tab or adding a product to the cart from a shop page will reveal the cart contents with a link to the checkout.
|
17 |
|
18 |
+
There are options in the Customizer to control the display.
|
19 |
|
20 |
Please feel free to contribute on <a href="https://github.com/jameskoster/woocommerce-cart-tab">github</a>.
|
21 |
|
41 |
== Screenshots ==
|
42 |
|
43 |
1. The cart tab.
|
|
|
|
|
44 |
|
45 |
== Changelog ==
|
46 |
|
47 |
+
= 1.0.0 - 26/01/2017 =
|
48 |
+
* New - The cart tab now opens when an add to cart button on a shop page is clicked.
|
49 |
+
* New - Cart tab opens on click rather than hover.
|
50 |
+
* New - Display controls moved to the Customizer.
|
51 |
+
* New - Integration with Storefront theme.
|
52 |
+
|
53 |
= 0.5.0 - 06/07/2016 =
|
54 |
* New - Cart tab no longer displayed on handheld devices.
|
55 |
|