active_list 6.0.1 → 6.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,188 @@
1
+ ActiveList = {}
2
+
3
+ (($, AL) ->
4
+ "use strict"
5
+
6
+ # Main function which reload table with specified data parameters
7
+ AL.refresh = (element, options) ->
8
+ list = element.closest("div[data-list-source]")
9
+ table = element.find("table[data-current-page]").first()
10
+ parameters =
11
+ sort: table.data("list-sort-by")
12
+ dir: table.data("list-sort-dir")
13
+ page: table.data("list-current-page")
14
+ per_page: table.data("list-page-size")
15
+ only: "content"
16
+
17
+ $.extend parameters, options
18
+ url = list.data("list-source")
19
+ $.ajax url,
20
+ data: parameters
21
+ dataType: "html"
22
+ success: (data, status, request) ->
23
+ list.html data
24
+ selection = list.prop('selection')
25
+ if selection?
26
+ for id in selection
27
+ list.find("input[data-list-selector='#{id}']")
28
+ .attr('checked', 'checked')
29
+ .closest('tr').addClass('selected')
30
+ AL.checkGlobalButtons list
31
+ true
32
+
33
+ false
34
+
35
+
36
+ # Select a row of "many" buttons
37
+ AL.select = (element) ->
38
+ list = element.closest('div[data-list-source]')
39
+ row = element.closest('tr')
40
+ if list.prop('selection')?
41
+ selection = list.prop('selection')
42
+ else
43
+ selection = []
44
+ key = element.data('list-selector')
45
+ index = selection.indexOf(key)
46
+ if element.is ":checked"
47
+ if index < 0
48
+ selection.push(key)
49
+ row.addClass("selected")
50
+ else
51
+ if index >= 0
52
+ selection.splice(index, 1)
53
+ row.removeClass("selected")
54
+ list.prop('selection', selection)
55
+ AL.checkGlobalButtons list
56
+
57
+
58
+ # Hide/show needed global buttons
59
+ AL.checkGlobalButtons = (element) ->
60
+ list = element.closest('div[data-list-source]')
61
+ selection = list.prop('selection')
62
+ if selection.length > 0
63
+ list.find('*[data-list-actioner="none"]:visible').hide()
64
+ list.find('*[data-list-actioner="many"]:hidden').show()
65
+ else
66
+ list.find('*[data-list-actioner="none"]:hidden').show()
67
+ list.find('*[data-list-actioner="many"]:visible').hide()
68
+ list.find('a[data-list-actioner="many"]').each (index) ->
69
+ button = $(this)
70
+ unless button.prop('hrefPattern')?
71
+ button.prop('hrefPattern', button.attr('href'))
72
+ pattern = button.prop('hrefPattern')
73
+ url = pattern.replace(encodeURIComponent("##IDS##"), selection.join(','), 'g')
74
+ button.attr("href", url)
75
+
76
+
77
+ # Move to given page
78
+ AL.moveToPage = (element, page) ->
79
+ page_attr = undefined
80
+ page = element.data("list-move-to-page") if !page? or page is ""
81
+ alert "Cannot define which page to load: " + page if !page? or page is ""
82
+ if isNaN(page)
83
+ page_attr = page
84
+ page = element.attr(page_attr)
85
+ alert "Cannot define which page to load with attribute " + page_attr + ": " + page if isNaN(page)
86
+ AL.refresh element,
87
+ page: page
88
+ false
89
+
90
+
91
+ # Sort by one column
92
+ $(document).on "click", "div[data-list-source] th[data-list-column][data-list-column-sort]", (event) ->
93
+ sorter = $(this)
94
+ AL.refresh sorter,
95
+ sort: sorter.data("list-column")
96
+ dir: sorter.data("list-column-sort")
97
+ false
98
+
99
+
100
+ # Change number of item per page
101
+ $(document).on "click", "div[data-list-source] li[data-list-change-page-size]", (event) ->
102
+ sizer = $(this)
103
+ per_page = sizer.data("list-change-page-size")
104
+ if isNaN(per_page)
105
+ alert "@list-change-page-size attribute is not a number: " + per_page
106
+ else
107
+ AL.refresh sizer,
108
+ per_page: per_page
109
+ false
110
+
111
+
112
+ # Toggle visibility of a column
113
+ $(document).on "click", "div[data-list-source] li[data-list-toggle-column]", (event) ->
114
+ element = $(this)
115
+ visibility = ""
116
+ columnId = element.data("list-toggle-column")
117
+ list = element.closest("div[data-list-source]")
118
+ column = list.find("th[data-list-column=\"" + columnId + "\"]")
119
+
120
+ #$('#'+columnId);
121
+ className = column.data("list-column-cells")
122
+ className = columnId if className is null
123
+ search = "." + className
124
+ if column.hasClass("hidden")
125
+ $(search).removeClass "hidden"
126
+ column.removeClass "hidden"
127
+ element.removeClass "unchecked"
128
+ element.addClass "checked"
129
+ visibility = "shown"
130
+ else
131
+ $(search).addClass "hidden"
132
+ column.addClass "hidden"
133
+ element.removeClass "checked"
134
+ element.addClass "unchecked"
135
+ visibility = "hidden"
136
+ url = list.data("list-source")
137
+ $.ajax url,
138
+ dataType: "html"
139
+ data:
140
+ visibility: visibility
141
+ column: columnId
142
+ false
143
+
144
+
145
+ # Select row
146
+ $(document).on "click", "div[data-list-source] input[data-list-selector]", (event) ->
147
+ AL.select $(this)
148
+ true
149
+
150
+
151
+ # Change page of table on link clicks
152
+ $(document).on "click", "div[data-list-source] a[data-list-move-to-page]", (event) ->
153
+ AL.moveToPage $(this)
154
+ false
155
+
156
+
157
+ # Change page of table on link clicks
158
+ $(document).on "mouseovessr", "div[data-list-source] a[data-list-actioner='many']", (event) ->
159
+ element = $(this)
160
+ list = element.closest("div[data-list-source]")
161
+ selection = list.prop('selection')
162
+ if selection?
163
+ unless element.prop('hrefPattern')?
164
+ element.prop('hrefPattern', element.attr('href'))
165
+ pattern = element.prop('hrefPattern')
166
+ url = pattern.replace(encodeURIComponent("##IDS##"), selection.join(','), 'g')
167
+ console.log url
168
+ element.attr("href", url)
169
+ console.log url
170
+ true
171
+
172
+
173
+ # Change page of table on input changes
174
+ $(document).on "change", "div[data-list-source] input[data-list-move-to-page]", (event) ->
175
+ AL.moveToPage $(this)
176
+ false
177
+
178
+
179
+ # Adds title attribute based on link name
180
+ $(document).on "hover", "div[data-list-source] tbody tr td.act a", (event) ->
181
+ element = $(this)
182
+ title = element.attr("title")
183
+ element.attr "title", element.html() unless title?
184
+ return
185
+
186
+
187
+ return
188
+ ) jQuery, ActiveList
@@ -2,38 +2,43 @@
2
2
  //
3
3
 
4
4
  @function merge-color($color-1, $color-2) {
5
- $col2: rgb(red($color-2), green($color-2), blue($color-2));
6
- $percent: 100*alpha($color-2);
7
- @return mix($col2, $color-1, $percent);
5
+ $col2: rgb(red($color-2), green($color-2), blue($color-2));
6
+ $percent: 100*alpha($color-2);
7
+ @return mix($col2, $color-1, $percent);
8
8
  }
9
9
 
10
10
  @function merge-colors($color, $color-1: rgba(0, 0, 0, 0), $color-2: rgba(0, 0, 0, 0), $color-3: rgba(0, 0, 0, 0), $color-4: rgba(0, 0, 0, 0), $color-5: rgba(0, 0, 0, 0), $color-6: rgba(0, 0, 0, 0), $color-7: rgba(0, 0, 0, 0), $color-8: rgba(0, 0, 0, 0), $color-9: rgba(0, 0, 0, 0), $color-10: rgba(0, 0, 0, 0)) {
11
- @return merge-color(merge-color(merge-color(merge-color(merge-color(merge-color(merge-color(merge-color(merge-color(merge-color($color, $color-1), $color-2), $color-3), $color-4), $color-5), $color-6), $color-7), $color-8), $color-9), $color-10);
11
+ @return merge-color(merge-color(merge-color(merge-color(merge-color(merge-color(merge-color(merge-color(merge-color(merge-color($color, $color-1), $color-2), $color-3), $color-4), $color-5), $color-6), $color-7), $color-8), $color-9), $color-10);
12
12
  }
13
13
 
14
- $list-line-backgrounds: ("&" rgba(#FFF, 0)) ("&.error, &.undone" rgba(red, 0.12)) ("&.warning, &.in_progress" rgba(orange, 0.12));
15
- $list-column-backgrounds: ("&" rgba(#FFF, 0)) ("&.act" rgba(#F90, 0.01)) ("&.sor" rgba(#05A, 0.05));
16
- $list-hover-backgrounds: ("&" rgba(#FFF, 0)) ("&:hover" rgba(blue, 0.05));
14
+ $list-line-backgrounds: ("&" rgba(#FFF, 0)) ("&.error, &.undone" rgba(red, 0.12)) ("&.warning, &.in_progress" rgba(orange, 0.12));
15
+ $list-column-backgrounds: ("&" rgba(#FFF, 0)) ("&.act" rgba(#F90, 0.01)) ("&.sor" rgba(#05A, 0.05));
16
+ $list-selection-backgrounds: ("&" rgba(#FFF, 0)) ("&.selected" rgba(yellow, 0.3));
17
+ $list-hover-backgrounds: ("&" rgba(#FFF, 0)) ("&:hover" rgba(blue, 0.05));
17
18
 
18
19
  @mixin list-colors($bgcolor: #000000, $selector: '&') {
19
- tr {
20
- #{$selector} {
21
- @each $line-background in $list-line-backgrounds {
22
- #{nth($line-background, 1)} {
23
- @each $hover-background in $list-hover-backgrounds {
24
- #{nth($hover-background, 1)} {
25
- @each $col-background in $list-column-backgrounds {
26
- td {
27
- #{nth($col-background, 1)} {
28
- background-color: merge-colors($bgcolor, nth($line-background, 2), nth($col-background, 2), nth($hover-background, 2));
20
+ tr {
21
+ #{$selector} {
22
+ @each $line-background in $list-line-backgrounds {
23
+ #{nth($line-background, 1)} {
24
+ @each $selection-background in $list-selection-backgrounds {
25
+ #{nth($selection-background, 1)} {
26
+ @each $hover-background in $list-hover-backgrounds {
27
+ #{nth($hover-background, 1)} {
28
+ @each $col-background in $list-column-backgrounds {
29
+ td {
30
+ #{nth($col-background, 1)} {
31
+ background-color: merge-colors($bgcolor, nth($line-background, 2), nth($col-background, 2), nth($selection-background, 2), nth($hover-background, 2));
32
+ }
33
+ }
34
+ }
35
+ }
36
+ }
29
37
  }
30
- }
31
- }
38
+ }
32
39
  }
33
- }
34
- }
40
+ }
35
41
  }
36
- }
37
- }
42
+ }
38
43
  }
39
44
 
@@ -1,87 +1,82 @@
1
1
  // Minimal style to get a working ActiveList
2
2
 
3
3
  div[data-list-source] {
4
- table.list {
5
- thead {
6
- tr {
7
- th {
8
- &[data-list-column-sort] {
9
- cursor: pointer;
10
- }
4
+ table.list {
5
+ thead {
6
+ tr {
7
+ th {
8
+ &[data-list-column-sort] {
9
+ cursor: pointer;
10
+ }
11
11
 
12
- &.spe {
13
- padding: 0;
14
- .list-menu {
15
- position: relative;
16
- a { cursor: pointer; }
17
- .list-menu-start {
18
- display: block;
19
- height: 16px;
20
- padding: 2px;
21
- }
22
- &:hover {
23
- .list-menu-start { z-index:5000; position: relative; top: 0px; }
24
- & > ul { display: block; }
25
- }
26
- ul {
27
- display: none;
28
- position:absolute;
29
- top: 20px;
30
- padding: 1px;
31
- margin:0;
32
- & { right: 0px;}
33
- html[dir="rtl"] & { left: 0px;}
34
- li {
35
- &[data-list-change-page-size], &[data-list-toggle-column] {
36
- cursor: pointer;
37
- display: block;
38
- }
39
- list-style-type: none;
40
- width: 25ex;
41
- position: relative;
42
- a {
43
- display: block;
44
- }
45
- ul {
46
- display: none;
47
- position: absolute;
48
- top: -2px;
49
- & { right: 25ex; }
50
- html[dir="rtl"] & { left: 25ex; }
51
- &:hover { display:block; }
52
- }
53
- &:hover ul { display:block; }
54
- }
55
- }
56
- }
57
- }
58
-
59
- &.hidden {
60
- display: none;
61
- }
12
+ &.hidden {
13
+ display: none;
14
+ }
62
15
 
63
- }
16
+ }
17
+ }
64
18
  }
65
- }
66
19
 
67
- tbody {
68
- tr {
69
- td.hidden {
70
- display: none;
71
- }
20
+ tbody {
21
+ tr {
22
+ td.hidden {
23
+ display: none;
24
+ }
25
+ }
72
26
  }
73
- }
27
+ }
74
28
 
75
- }
76
-
77
- div.extras {
78
- .pagination {
29
+ .pagination {
79
30
  a[data-list-move-to-page] {
80
- cursor: pointer;
31
+ cursor: pointer;
81
32
  }
82
33
  a[data-list-move-to-page][disabled] {
83
- cursor: default;
34
+ cursor: default;
35
+ }
36
+ }
37
+
38
+ .settings {
39
+ position: relative;
40
+ a { cursor: pointer; }
41
+ .settings-start {
42
+ height: 16px;
43
+ padding: 2px;
84
44
  }
85
- }
86
- }
45
+ &:hover {
46
+ .list-menu-start { z-index:5000; position: relative; top: 0px; }
47
+ & > ul { display: block; }
48
+ }
49
+ ul {
50
+ display: none;
51
+ position:absolute;
52
+ top: 20px;
53
+ padding: 1px;
54
+ margin:0;
55
+ & { right: 0px;}
56
+ html[dir="rtl"] & { left: 0px;}
57
+ li {
58
+ &[data-list-change-page-size], &[data-list-toggle-column] {
59
+ cursor: pointer;
60
+ display: block;
61
+ }
62
+ list-style-type: none;
63
+ width: 25ex;
64
+ position: relative;
65
+ a {
66
+ display: block;
67
+ }
68
+ ul {
69
+ display: none;
70
+ position: absolute;
71
+ top: -2px;
72
+ & { right: 25ex; }
73
+ html[dir="rtl"] & { left: 25ex; }
74
+ &:hover { display:block; }
75
+ }
76
+ &:hover ul { display:block; }
77
+ }
78
+ }
79
+ }
80
+
81
+
87
82
  }
@@ -3,187 +3,185 @@
3
3
  @import "compass/typography/text/replacement";
4
4
 
5
5
 
6
-
7
6
  // Because Compass sprites do not seems to work well in gems
8
7
  @mixin active-list-sprite($name, $size: 16px) {
9
- background-image: image-url("active-list.png");
10
- background-repeat: no-repeat;
11
- height: $size;
12
- width: $size;
13
- $i: 0;
14
- @each $icon in menu check columns export pages first-page previous-page previous-line next-line next-page last-page sort sort-down sort-up true false {
15
- @if $icon == $name {
16
- background-position: (-$i * $size) 0;
17
- }
18
- $i: $i + 1;
19
- }
8
+ background-image: image-url("active_list.png");
9
+ background-repeat: no-repeat;
10
+ height: $size;
11
+ width: $size;
12
+ $i: 0;
13
+ @each $icon in menu check columns export pages first-page previous-page previous-line next-line next-page last-page sort sort-down sort-up true false {
14
+ @if $icon == $name {
15
+ background-position: (-$i * $size) 0;
16
+ }
17
+ $i: $i + 1;
18
+ }
20
19
  }
21
20
 
22
21
 
23
22
  @mixin active-list-theme($theme-color: #777777) {
24
- $default-border-color: mix($theme-color, #FFF, 30%);
25
- $menu-width: 250px;
26
- table.list {
27
- border-collapse: collapse;
28
- width: 100%;
29
- border: 1px solid $default-border-color;
30
- z-index: 2;
31
- @include box-shadow(0 0 7px rgba(0, 0, 0, 0.15));
32
- thead {
33
- th {
34
- border: 1px solid $default-border-color;
35
- padding: 2px 3px;
36
- @include background($theme-color linear-gradient(top, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.8)));
37
- &[data-list-column-sort] {
38
- .icon {
39
- @include active-list-sprite(sort);
40
- @include inline-block;
41
- margin: 0 2px;
42
- }
43
- &.sor[data-list-column-sort="desc"] .icon {
44
- @include active-list-sprite(sort-down); }
45
- &.sor[data-list-column-sort="asc"] .icon {
46
- @include active-list-sprite(sort-up); }
47
- }
48
- & { text-align: left; }
49
- html[dir="rtl"] & { text-align: right; }
50
- &.spe {
51
- width: 16px;
52
- height: 16px;
53
- .list-menu {
54
- position: relative;
55
- background: none;
56
- .list-menu-start {
57
- padding: 2px;
58
- width: 16px;
59
- height: 16px;
60
- .icon { @include active-list-sprite(menu); display: block; }
61
- .text { display: none; }
62
- }
63
- &:hover {
64
- .list-menu-start {
65
- background-color: white;
66
- z-index:5000;
67
- }
68
- }
69
- ul {
70
- width: $menu-width;
71
- border: 1px solid $default-border-color;
72
- background: #FFF;
73
- @include box-shadow(0 0 5px rgba(0, 0, 0, 0.3));
74
- li {
75
- width: $menu-width;
76
- padding: 0;
77
- ul {
78
- & { right: $menu-width; }
79
- html[dir="rtl"] & { left: $menu-width; }
80
- }
81
- }
23
+ $default-border-color: mix($theme-color, #FFF, 30%);
24
+ $menu-width: 250px;
25
+ table.list {
26
+ border-collapse: collapse;
27
+ width: 100%;
28
+ border: 1px solid $default-border-color;
29
+ z-index: 2;
30
+ @include box-shadow(0 0 7px rgba(0, 0, 0, 0.15));
31
+ thead {
32
+ th {
33
+ border: 1px solid $default-border-color;
34
+ padding: 2px 3px;
35
+ @include background($theme-color linear-gradient(top, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.8)));
36
+ &[data-list-column-sort] {
37
+ i {
38
+ @include active-list-sprite(sort);
39
+ @include inline-block;
40
+ margin: 0 2px;
41
+ }
42
+ &.sor[data-list-column-sort="desc"] i {
43
+ @include active-list-sprite(sort-down); }
44
+ &.sor[data-list-column-sort="asc"] i {
45
+ @include active-list-sprite(sort-up); }
82
46
  }
83
- & > ul {
84
- top: 19px;
47
+ & { text-align: left; }
48
+ html[dir="rtl"] & { text-align: right; }
49
+ }
50
+ }
51
+ tbody {
52
+ tr {
53
+ td {
54
+ padding: 2px 3px;
55
+ border-top: 1px solid mix($theme-color, #FFF, 10%);
56
+ border-bottom: none;
57
+ border-left: none;
58
+ border-right: none;
59
+ &.chk,&.act, &.dld, &.bln, &.dat, &.web { text-align:center }
60
+ &.dec, &.flt, &.int {
61
+ & { text-align: right; }
62
+ html[dir="rtl"] & { text-align: left; }
63
+ }
64
+ &.country { white-space: nowrap; }
65
+ &.color { color: white; text-shadow: 0 0 2px #000; width: 6ex; text-align: center; }
85
66
  }
86
- li {
87
- padding: 0;
88
- display: block;
89
- a {
90
- display: block;
91
- padding: 2px;
92
- .icon {
93
- @include inline-block;
94
- height:16px;
95
- width: 16px;
96
- & { margin-right: 4px; }
97
- html[dir="rtl"] & { margin-left: 4px; }
98
- }
99
- .text {
100
- @include inline-block;
101
- width: $menu-width - 24px;
102
- line-height: 18px;
103
- font-weight: normal;
104
- }
105
- & * {
106
- vertical-align: middle;
107
- }
108
- &.pages .icon { @include active-list-sprite(pages); }
109
- &.columns .icon { @include active-list-sprite(columns); }
110
- }
111
- &.export .icon { @include active-list-sprite(export); }
112
- &.check .icon { @include active-list-sprite(check); }
113
- &.checked .icon { @include active-list-sprite(true); }
114
- &.unchecked .icon { @include active-list-sprite(false); }
115
- &:hover {
116
- text-decoration: none;
117
- background: mix($theme-color, #FFF, 10%);
118
- }
119
- &.separator {
120
- padding: 0;
121
- height: 1px;
122
- width: $menu-width - 6px;
123
- margin: 3px;
124
- background: $default-border-color;
125
- }
67
+ &:first-child td {
68
+ border-top: none;
126
69
  }
127
-
128
- }
129
- }
130
- }
131
- }
132
- tbody {
133
- tr {
134
- td {
135
- padding: 2px 3px;
136
- border-top: 1px solid mix($theme-color, #FFF, 10%);
137
- border-bottom: none;
138
- border-left: none;
139
- border-right: none;
140
- &.chk,&.act, &.dld, &.bln, &.dat, &.web { text-align:center }
141
- &.dec, &.flt, &.int {
142
- & { text-align: right; }
143
- html[dir="rtl"] & { text-align: left; }
144
- }
145
- &.country { white-space: nowrap; }
146
- &.color { color: white; text-shadow: 0 0 2px #000; width: 6ex; text-align: center; }
147
- }
148
- &:first-child td {
149
- border-top: none;
150
- }
70
+ }
151
71
  }
152
- }
153
72
 
154
- @include list-colors(#FFFFFF);
155
- }
156
- .extras {
157
- z-index: 0;
158
- @include background(transparentize(mix($theme-color, #FFF, 40%), 0.7));
159
- .pagination {
160
- & { text-align: left; }
161
- html[dir="rtl"] & { text-align: right; }
162
- & > * {
73
+ @include list-colors(#FFFFFF);
74
+ }
75
+
76
+ .list-control {
77
+ z-index: 0;
78
+ @include background(transparentize(mix($theme-color, #FFF, 40%), 0.7));
79
+ }
80
+
81
+ .pagination {
82
+ & { text-align: left; }
83
+ html[dir="rtl"] & { text-align: right; }
84
+ & > * {
163
85
  margin: 0 2px;
164
- }
165
- .first-page, .previous-page, .next-page, .last-page {
86
+ }
87
+ .first-page, .previous-page, .next-page, .last-page {
166
88
  @include inline-block;
167
89
  @include squish-text;
168
- }
169
- html[dir="rtl"] & .last-page, & .first-page {
170
- @include active-list-sprite(first-page);
171
- }
172
- html[dir="rtl"] & .first-page, & .last-page {
173
- @include active-list-sprite(last-page);
174
- }
175
- html[dir="rtl"] & .next-page, & .previous-page {
176
- @include active-list-sprite(previous-page);
177
- }
178
- html[dir="rtl"] & .previous-page, & .next-page {
179
- @include active-list-sprite(next-page);
180
- }
181
- .separator {
90
+ }
91
+ html[dir="rtl"] & .last-page, & .first-page {
92
+ @include active-list-sprite(first-page);
93
+ }
94
+ html[dir="rtl"] & .first-page, & .last-page {
95
+ @include active-list-sprite(last-page);
96
+ }
97
+ html[dir="rtl"] & .next-page, & .previous-page {
98
+ @include active-list-sprite(previous-page);
99
+ }
100
+ html[dir="rtl"] & .previous-page, & .next-page {
101
+ @include active-list-sprite(next-page);
102
+ }
103
+ .separator {
182
104
  @include inline-block;
183
105
  width: 2px;
184
106
  height: 1.2em;
185
107
  background: transparentize($theme-color, 0.7);
186
- }
187
- }
188
- }
108
+ }
109
+ }
110
+
111
+
112
+ .settings {
113
+ position: relative;
114
+ background: none;
115
+ .list-menu-start {
116
+ padding: 2px;
117
+ width: 16px;
118
+ height: 16px;
119
+ font-size: 0;
120
+ i {
121
+ @include active-list-sprite(menu);
122
+ display: block;
123
+ }
124
+ }
125
+ &:hover {
126
+ .settings {
127
+ background-color: white;
128
+ z-index:5000;
129
+ }
130
+ }
131
+ ul {
132
+ width: $menu-width;
133
+ border: 1px solid $default-border-color;
134
+ background: #FFF;
135
+ @include box-shadow(0 0 5px rgba(0, 0, 0, 0.3));
136
+ li {
137
+ width: $menu-width;
138
+ padding: 0;
139
+ ul {
140
+ & { right: $menu-width; }
141
+ html[dir="rtl"] & { left: $menu-width; }
142
+ }
143
+ }
144
+ }
145
+ & > ul {
146
+ top: 19px;
147
+ }
148
+ li {
149
+ padding: 0;
150
+ display: block;
151
+ a {
152
+ display: block;
153
+ padding: 2px;
154
+ line-height: 18px;
155
+ font-weight: normal;
156
+ i {
157
+ height:16px;
158
+ width: 16px;
159
+ & { margin-right: 4px; }
160
+ html[dir="rtl"] & { margin-left: 4px; }
161
+ }
162
+ & * {
163
+ vertical-align: middle;
164
+ }
165
+ &.pages i { @include active-list-sprite(pages); }
166
+ &.columns i { @include active-list-sprite(columns); }
167
+ }
168
+ &.export i { @include active-list-sprite(export); }
169
+ &.check i { @include active-list-sprite(check); }
170
+ &.checked i { @include active-list-sprite(true); }
171
+ &.unchecked i { @include active-list-sprite(false); }
172
+ &:hover {
173
+ text-decoration: none;
174
+ background: mix($theme-color, #FFF, 10%);
175
+ }
176
+ &.separator {
177
+ padding: 0;
178
+ height: 1px;
179
+ width: $menu-width - 6px;
180
+ margin: 3px;
181
+ background: $default-border-color;
182
+ }
183
+ }
184
+ }
185
+
186
+
189
187
  }