arctic_admin 4.1.0 → 4.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml 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: