arctic_admin 4.1.0 → 4.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4f527d7e2caa4c8209125ef8b4e0819d9dfac5056622e62fbb78f2bfc7950028
4
- data.tar.gz: c137632694ed36dc983279e9e161b2415d4100b7c6daef0bcc8353f7d7514a4f
3
+ metadata.gz: f73a9054b378863472ff6eef1be63d4978b111987637d2c77b7a88923a080f4a
4
+ data.tar.gz: 19ade82526d8627180e2701846ad2103fd646853a93ae62dc4f1690b2277202b
5
5
  SHA512:
6
- metadata.gz: 81d7c39c6fc5201af8f6543dc8033d642782489bcca767a6da9ab1badc108f546e34d9260750e1c4d46bc67dc938c84e393b4b930f1ba00915a7d49654c061a9
7
- data.tar.gz: ab34c1df077f84627182680c0686986204c0636ea4d0e668ea9921c17136088b652933e388b90c504081be9b35e642ae72057362ac1a93a43d724cd3b82c9cb1
6
+ metadata.gz: 0ddbb102c83bfca015e42eefcb56e28729dc0e5c60118aa8a39bf1206bab182208342bab0d0897e44a9e28755879e7f3a76ee15508ba2db94b66b5896050d47a
7
+ data.tar.gz: 77f1245f8e5f38516678d88b4dbb937f43d8a7e51e1293fd80f743805bda216bbd61aa3a133cc3957871c56a8aab19b87bdc4283eff6b25b69ecb13d3571792d
@@ -1,46 +1,68 @@
1
- document.addEventListener('DOMContentLoaded', () => {
2
-
3
- // right filter sidebar
4
- const sidebar = document.querySelector('#sidebar')
5
- if (sidebar) {
6
- sidebar.addEventListener('click', event => {
7
- const insideSection = document.querySelector('#filters_sidebar_section')
8
- if (!(event.target === insideSection || insideSection.contains(event.target)) && event.target.className != "select2-selection__choice__remove") {
9
- sidebar.classList.toggle('sidebar_open')
10
- }
11
- })
1
+ // right filter sidebar toggle
2
+ function sidebar() {
3
+ return document.querySelector('#sidebar')
4
+ }
5
+ function sidebarToggle(event) {
6
+ const insideSection = document.querySelector('#filters_sidebar_section')
7
+
8
+ if (!(event.target === insideSection || insideSection.contains(event.target)) && event.target.className != "select2-selection__choice__remove") {
9
+ sidebar().classList.toggle('sidebar_open')
12
10
  }
11
+ }
13
12
 
14
- const menuButton = document.querySelector('#utility_nav')
15
- const menu = document.querySelector('#tabs')
16
-
17
- // toggle menu sidebar with the menu button
18
- menuButton.addEventListener('click', event => {
19
- const currentUser = document.querySelector('#current_user')
20
- const logout = document.querySelector('#logout')
21
- const forbiddenLinks = event.target === logout ||
22
- logout.contains(event.target) ||
23
- event.target === currentUser ||
24
- currentUser.contains(event.target)
25
- if (!forbiddenLinks) {
26
- menu.classList.toggle('tabs_open')
27
- }
28
- })
29
-
30
- // close left menu sidebar on any click outside
31
- document.body.addEventListener('click', event => {
32
- const forbiddenLinks = event.target === menu ||
33
- menu.contains(event.target) ||
34
- event.target === menuButton ||
35
- menuButton.contains(event.target)
36
- if (menu.classList.contains('tabs_open') && !forbiddenLinks) {
37
- menu.classList.remove('tabs_open')
38
- }
39
- })
13
+ // left menu sidebar toggle with menu button
14
+ function menuButton() {
15
+ return document.querySelector('#utility_nav')
16
+ }
17
+ function menu() {
18
+ return document.querySelector('#tabs')
19
+ }
20
+ function menuToggle(event) {
21
+ const currentUser = document.querySelector('#current_user')
22
+ const logout = document.querySelector('#logout')
23
+ const forbiddenLinks = event.target === logout ||
24
+ logout.contains(event.target) ||
25
+ event.target === currentUser ||
26
+ currentUser.contains(event.target)
27
+ if (!forbiddenLinks) {
28
+ menu().classList.toggle('tabs_open')
29
+ }
30
+ }
31
+
32
+ // left menu sidebar close on any click outside
33
+ function menuClose(event) {
34
+ const forbiddenLinks = event.target === menu ||
35
+ menu().contains(event.target) ||
36
+ event.target === menuButton() ||
37
+ menuButton().contains(event.target)
38
+ if (menu().classList.contains('tabs_open') && !forbiddenLinks) {
39
+ menu().classList.remove('tabs_open')
40
+ }
41
+ }
42
+
43
+ // nested menu items toggle
44
+ function nestedMenuItems() {
45
+ return document.querySelectorAll('#tabs .has_nested')
46
+ }
47
+
48
+ // add event listeners
49
+ function addListeners() {
50
+
51
+ // right filter sidebar toggle
52
+ if (sidebar()) {
53
+ sidebar().addEventListener('click', sidebarToggle)
54
+ }
55
+
56
+ // left menu sidebar toggle with menu button
57
+ if (menuButton()) {
58
+ menuButton().addEventListener('click', menuToggle)
59
+ }
60
+
61
+ // left menu sidebar close on any click outside
62
+ document.body.addEventListener('click', menuClose)
40
63
 
41
- // toggle of nested menu items
42
- const nestedMenuItems = document.querySelectorAll('#tabs .has_nested')
43
- nestedMenuItems.forEach(
64
+ // nested menu items toggle
65
+ nestedMenuItems().forEach(
44
66
  (nestedMenuItem) => {
45
67
  nestedMenuItem.addEventListener('click', (e) => {
46
68
  e.stopPropagation()
@@ -48,5 +70,36 @@ document.addEventListener('DOMContentLoaded', () => {
48
70
  })
49
71
  }
50
72
  )
73
+ }
74
+
75
+ // remove all previous eventListeners
76
+ function removeListeners() {
77
+
78
+ // right filter sidebar toggle
79
+ if (sidebar()) {
80
+ sidebar().removeEventListener('click', sidebarToggle)
81
+ }
82
+
83
+ // left menu sidebar toggle with menu button
84
+ menuButton().removeEventListener('click', menuToggle)
85
+
86
+ // left menu sidebar close on any click outside
87
+ document.body.removeEventListener('click', menuClose)
88
+
89
+ // nested menu items toggle
90
+ nestedMenuItems().forEach(
91
+ (nestedMenuItem) => {
92
+ nestedMenuItem.removeEventListener('click', (e) => {
93
+ e.stopPropagation()
94
+ nestedMenuItem.classList.toggle('open')
95
+ })
96
+ }
97
+ )
98
+ }
99
+
100
+ document.addEventListener('DOMContentLoaded', addListeners)
51
101
 
102
+ document.addEventListener('turbolinks:load', () => {
103
+ removeListeners()
104
+ addListeners()
52
105
  })
@@ -1,4 +1,3 @@
1
- @import "font-awesome-sprockets";
2
1
  @import "font-awesome";
3
2
 
4
3
  @import "reset";
@@ -0,0 +1,74 @@
1
+ $toggle-width: 40px !default;
2
+ $toggle-height: 20px !default;
3
+ $toggle-offset: 3px !default;
4
+
5
+ $toggle-outer-default: #ddd !default;
6
+ $toggle-outer-active: $primary-color !default;
7
+ $toggle-inner-default: #fff !default;
8
+ $toggle-inner-active: #fff !default;
9
+
10
+ $toggle-transition: 200ms ease-out !default;
11
+
12
+ .toggle-bool-switches-container {
13
+
14
+ text-align: left;
15
+
16
+ .toggle-bool-switch {
17
+ // reset style
18
+ background-image: none;
19
+ box-shadow: none;
20
+ //
21
+
22
+ cursor: pointer;
23
+
24
+ position: relative;
25
+ display: inline-flex;
26
+ align-items: center;
27
+ width: $toggle-width;
28
+ height: $toggle-height;
29
+ background-color: $toggle-outer-default;
30
+ border-radius: 100vw;
31
+ cursor: pointer;
32
+ transition: $toggle-transition;
33
+
34
+ &::before {
35
+ // reset style
36
+ height: auto;
37
+ width: auto;
38
+ background-image: none;
39
+ //
40
+
41
+
42
+ content: "";
43
+ position: absolute;
44
+ top: $toggle-offset;
45
+ left: $toggle-offset;
46
+ bottom: $toggle-offset;
47
+
48
+ aspect-ratio: 1 / 1;
49
+
50
+ background-color: $toggle-inner-default;
51
+ border-radius: 50%;
52
+ box-shadow: 0 0 10px 5px rgba(0, 0, 0, 0.05);
53
+ transition: $toggle-transition;
54
+ }
55
+
56
+ &.on {
57
+ // reset style
58
+ background-image: none;
59
+ //
60
+ background: $primary-color;
61
+
62
+ &::before {
63
+ // reset style
64
+ left: $toggle-offset;
65
+ //
66
+
67
+ background-color: $toggle-inner-active;
68
+ transform: translateX(
69
+ calc($toggle-width - $toggle-height)
70
+ );
71
+ }
72
+ }
73
+ }
74
+ }
@@ -69,7 +69,7 @@ body.active_admin.logged_in {
69
69
  border-bottom: 1px solid $header-border-color;
70
70
 
71
71
  &:before {
72
- @include icon("\f0c9");
72
+ @include icon($icon-menu);
73
73
 
74
74
  display: inline;
75
75
  visibility: visible;
@@ -125,7 +125,7 @@ body.active_admin.logged_in {
125
125
  display: inline-block;
126
126
 
127
127
  &:before {
128
- @include icon("\f007");
128
+ @include icon($icon-user);
129
129
 
130
130
  display: inline;
131
131
  visibility: visible;
@@ -164,7 +164,7 @@ body.active_admin.logged_in {
164
164
  display: block;
165
165
 
166
166
  &:before {
167
- @include icon("\f2f5");
167
+ @include icon($icon-logout);
168
168
 
169
169
  display: inline;
170
170
  visibility: visible;
@@ -56,7 +56,7 @@
56
56
  position: relative;
57
57
 
58
58
  &:after {
59
- @include icon("\f0d7");
59
+ @include icon($icon-down);
60
60
  display: inline;
61
61
  position: absolute;
62
62
  top: 50%;
@@ -97,7 +97,7 @@
97
97
  position: relative;
98
98
 
99
99
  &:after {
100
- @include icon("\f0d8");
100
+ @include icon($icon-up);
101
101
  }
102
102
  }
103
103
 
@@ -57,7 +57,7 @@
57
57
  position: relative;
58
58
 
59
59
  &:after {
60
- @include icon("\f0dd");
60
+ @include icon($icon-sort-down);
61
61
  position: absolute;
62
62
  right: 8px;
63
63
  }
@@ -58,6 +58,6 @@
58
58
  text-rendering: auto;
59
59
  -webkit-font-smoothing: antialiased;
60
60
  -moz-osx-font-smoothing: grayscale;
61
- font: 900 normal normal 14px/1 'Font Awesome 5 Free', 'Font Awesome 5 Pro';
61
+ font: 900 normal normal 14px/1 $font-icon;
62
62
  content: $code-icon;
63
63
  }
@@ -72,7 +72,7 @@ body.index {
72
72
  position: relative;
73
73
 
74
74
  &:after {
75
- @include icon("\f0dc");
75
+ @include icon($icon-sort);
76
76
  font-size: 12px;
77
77
  position: absolute;
78
78
  top: 50%;
@@ -139,7 +139,7 @@ body.index {
139
139
  @include box-shadow(-1px 0 4px 0 rgba(0,0,0,.04));
140
140
  border-top-left-radius: $border-radius;
141
141
  border-bottom-left-radius: $border-radius;
142
- @include icon("\f0b0");
142
+ @include icon($icon-filter);
143
143
  font-size: 20px;
144
144
  padding: 15px 10px;
145
145
  }
@@ -19,8 +19,7 @@ $status-tag-background-color: #cacaca !default;
19
19
  $status-tag-background-valid-color: $success !default;
20
20
  $status-tag-background-error-color: $error !default;
21
21
 
22
- $border-color: #e4eaec;
23
-
22
+ $border-color: #e4eaec !default;
24
23
 
25
24
  // body
26
25
  $body-background: #eee !default;
@@ -46,4 +45,4 @@ $text-color-important: #526069 !default;
46
45
 
47
46
  $box-shadow: 0 0 4px 0 rgba(0,0,0,0.1) !default;
48
47
 
49
- $primary-color: $blue !default;
48
+ $primary-color: $blue !default;
@@ -0,0 +1,17 @@
1
+ // you can customise any icons
2
+ // you need to use unicode of the icon font
3
+ // the unicode of fontawesome can be found here : https://fontawesome.com/
4
+
5
+ $font-icon: 'Font Awesome 6 Free', 'Font Awesome 6 Pro' !default;
6
+
7
+ $icon-user: "\f007" !default;
8
+ $icon-logout: "\f2f5" !default;
9
+
10
+ $icon-menu: "\f0c9" !default;
11
+
12
+ $icon-down: "\f0d7" !default;
13
+ $icon-up: "\f0d8" !default;
14
+
15
+ $icon-sort: "\f0dc" !default;
16
+ $icon-sort-down: "\f0dd" !default;
17
+ $icon-filter: "\f0b0" !default;
@@ -1,6 +1,7 @@
1
1
  @import "colors";
2
2
  @import "size";
3
+ @import "icons";
3
4
  @import "media_queries";
4
5
 
5
6
  $border-radius: 3px !default;
6
- $font-family-body: "LatoWeb", Arial, sans-serif !default;
7
+ $font-family-body: "LatoWeb", Arial, sans-serif !default;
@@ -1,3 +1,3 @@
1
1
  module ArcticAdmin
2
- VERSION = "4.1.0"
2
+ VERSION = "4.2.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arctic_admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 4.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clément Prod'homme
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-23 00:00:00.000000000 Z
11
+ date: 2023-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -64,14 +64,14 @@ dependencies:
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '5.0'
67
+ version: '6.0'
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '5.0'
74
+ version: '6.0'
75
75
  description: A responsive theme for Active Admin
76
76
  email:
77
77
  executables: []
@@ -118,6 +118,7 @@ files:
118
118
  - app/assets/stylesheets/arctic_admin/components/_status_tag.scss
119
119
  - app/assets/stylesheets/arctic_admin/components/_tables.scss
120
120
  - app/assets/stylesheets/arctic_admin/components/_tabs.scss
121
+ - app/assets/stylesheets/arctic_admin/components/_toggle.scss
121
122
  - app/assets/stylesheets/arctic_admin/layouts/_filter.scss
122
123
  - app/assets/stylesheets/arctic_admin/layouts/_footer.scss
123
124
  - app/assets/stylesheets/arctic_admin/layouts/_header.scss
@@ -134,6 +135,7 @@ files:
134
135
  - app/assets/stylesheets/arctic_admin/pages/_login.scss
135
136
  - app/assets/stylesheets/arctic_admin/pages/_show.scss
136
137
  - app/assets/stylesheets/arctic_admin/variables/_colors.scss
138
+ - app/assets/stylesheets/arctic_admin/variables/_icons.scss
137
139
  - app/assets/stylesheets/arctic_admin/variables/_media_queries.scss
138
140
  - app/assets/stylesheets/arctic_admin/variables/_size.scss
139
141
  - app/assets/stylesheets/arctic_admin/variables/_variables.scss
@@ -142,7 +144,9 @@ files:
142
144
  homepage: https://github.com/cprodhomme/arctic_admin
143
145
  licenses:
144
146
  - MIT
145
- metadata: {}
147
+ metadata:
148
+ source_code_uri: https://github.com/cprodhomme/arctic_admin
149
+ changelog_uri: https://github.com/cprodhomme/arctic_admin/releases
146
150
  post_install_message:
147
151
  rdoc_options: []
148
152
  require_paths: