integral 1.4.0 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +4 -3
- data/app/assets/javascripts/integral/backend.js +86 -2
- data/app/assets/javascripts/integral/support/character_counter.js +13 -8
- data/app/assets/javascripts/integral/support/list.coffee +1 -0
- data/app/assets/javascripts/integral/support/record_selector.coffee +2 -0
- data/app/assets/javascripts/integral/support/slug_generator.coffee +1 -0
- data/app/assets/stylesheets/integral/backend.sass +34 -23
- data/app/assets/stylesheets/integral/backend/_foundation_settings.scss +2 -2
- data/app/assets/stylesheets/integral/backend/dashboard-layout.scss +27 -63
- data/app/assets/stylesheets/integral/backend/devise.sass +2 -3
- data/app/assets/stylesheets/integral/backend/materialize-tags.sass +1 -0
- data/app/assets/stylesheets/integral/backend/modules/dropdown_pane_notifications.scss +150 -0
- data/app/assets/stylesheets/integral/backend/modules/dropdown_pane_profile.scss +59 -0
- data/app/assets/stylesheets/integral/backend/shared.sass +41 -2
- data/app/assets/stylesheets/integral/frontend/layout.sass +10 -0
- data/app/assets/stylesheets/integral/support/media-query-indicator.sass +4 -4
- data/app/controllers/integral/backend/activities_controller.rb +21 -27
- data/app/controllers/integral/backend/base_controller.rb +87 -37
- data/app/controllers/integral/backend/images_controller.rb +26 -8
- data/app/controllers/integral/backend/lists_controller.rb +2 -14
- data/app/controllers/integral/backend/notification_subscriptions_controller.rb +23 -0
- data/app/controllers/integral/backend/pages_controller.rb +0 -4
- data/app/controllers/integral/backend/posts_controller.rb +0 -4
- data/app/controllers/integral/backend/settings_controller.rb +4 -0
- data/app/controllers/integral/backend/static_pages_controller.rb +6 -0
- data/app/controllers/integral/backend/users_controller.rb +43 -24
- data/app/controllers/integral/blog_controller.rb +12 -0
- data/app/controllers/integral/categories_controller.rb +17 -3
- data/app/controllers/integral/tags_controller.rb +5 -2
- data/app/decorators/integral/base_decorator.rb +16 -0
- data/app/decorators/integral/image_decorator.rb +2 -2
- data/app/decorators/integral/list_decorator.rb +1 -13
- data/app/decorators/integral/notification/notification_decorator.rb +74 -0
- data/app/decorators/integral/page_decorator.rb +1 -13
- data/app/decorators/integral/post_decorator.rb +1 -2
- data/app/decorators/integral/user_decorator.rb +1 -13
- data/app/decorators/integral/version_decorator.rb +8 -4
- data/app/helpers/integral/backend/base_helper.rb +97 -31
- data/app/jobs/integral/application_job.rb +1 -0
- data/app/jobs/integral/newsletter_signup_job.rb +0 -2
- data/app/mailers/integral/devise_mailer.rb +6 -0
- data/app/models/concerns/integral/notification/subscribable.rb +67 -0
- data/app/models/integral/application_record.rb +9 -0
- data/app/models/integral/category.rb +9 -0
- data/app/models/integral/image.rb +40 -3
- data/app/models/integral/list.rb +10 -2
- data/app/models/integral/list_item.rb +14 -14
- data/app/models/integral/list_item_connection.rb +6 -0
- data/app/models/integral/notification/notification.rb +28 -0
- data/app/models/integral/notification/subscription.rb +14 -0
- data/app/models/integral/page.rb +15 -8
- data/app/models/integral/post.rb +11 -13
- data/app/models/integral/user.rb +45 -2
- data/app/policies/integral/base_policy.rb +7 -12
- data/app/policies/integral/page_policy.rb +1 -0
- data/app/policies/integral/version_policy.rb +0 -8
- data/app/views/devise/invitations/edit.haml +1 -4
- data/app/views/devise/mailer/invitation_instructions.inky-haml +20 -0
- data/app/views/integral/backend/activities/grid/_dropdown_actions.haml +1 -0
- data/app/views/integral/backend/activities/grid/_row_content.haml +13 -0
- data/app/views/integral/backend/activities/index.haml +7 -13
- data/app/views/integral/backend/activities/shared/_grid.haml +35 -20
- data/app/views/integral/backend/activities/shared/index.haml +12 -12
- data/app/views/integral/backend/activities/shared/show.haml +7 -7
- data/app/views/integral/backend/activities/show.haml +1 -1
- data/app/views/integral/backend/categories/_modal.haml +2 -3
- data/app/views/integral/backend/images/_form.haml +13 -25
- data/app/views/integral/backend/images/edit.haml +1 -9
- data/app/views/integral/backend/images/grid/_dropdown_actions.haml +5 -0
- data/app/views/integral/backend/images/grid/_row_content.haml +5 -0
- data/app/views/integral/backend/images/index.haml +11 -17
- data/app/views/integral/backend/images/list.haml +11 -0
- data/app/views/integral/backend/images/show.haml +26 -0
- data/app/views/integral/backend/lists/_form.haml +6 -19
- data/app/views/integral/backend/lists/_item_modal.haml +3 -3
- data/app/views/integral/backend/lists/_manager.haml +11 -13
- data/app/views/integral/backend/lists/edit.haml +6 -20
- data/app/views/integral/backend/lists/grid/_dropdown_actions.haml +9 -0
- data/app/views/integral/backend/lists/grid/_row_content.haml +3 -0
- data/app/views/integral/backend/lists/index.haml +11 -17
- data/app/views/integral/backend/lists/list.haml +11 -0
- data/app/views/integral/backend/lists/show.haml +30 -0
- data/app/views/integral/backend/notifications/_notification.haml +21 -0
- data/app/views/integral/backend/pages/_form.haml +19 -43
- data/app/views/integral/backend/pages/edit.haml +4 -12
- data/app/views/integral/backend/pages/grid/_dropdown_actions.haml +11 -0
- data/app/views/integral/backend/pages/grid/_row_content.haml +5 -0
- data/app/views/integral/backend/pages/index.haml +6 -6
- data/app/views/integral/backend/pages/list.haml +12 -19
- data/app/views/integral/backend/pages/show.haml +19 -35
- data/app/views/integral/backend/posts/_form.haml +18 -56
- data/app/views/integral/backend/posts/edit.haml +4 -14
- data/app/views/integral/backend/posts/grid/_dropdown_actions.haml +10 -0
- data/app/views/integral/backend/posts/grid/_row_content.haml +6 -0
- data/app/views/integral/backend/posts/index.haml +6 -6
- data/app/views/integral/backend/posts/list.haml +11 -18
- data/app/views/integral/backend/posts/new.haml +0 -1
- data/app/views/integral/backend/posts/show.haml +18 -41
- data/app/views/integral/backend/shared/_breadcrumbs.haml +7 -4
- data/app/views/integral/backend/shared/_image_preview.haml +10 -3
- data/app/views/integral/backend/shared/_image_selector.haml +1 -1
- data/app/views/integral/backend/shared/_notification_subscription_toggle.haml +22 -0
- data/app/views/integral/backend/shared/action_bar/_index.haml +9 -0
- data/app/views/integral/backend/shared/action_bar/_show.haml +3 -0
- data/app/views/integral/backend/shared/cards/_at_a_glance.haml +3 -3
- data/app/views/integral/backend/shared/cards/_categories.haml +27 -28
- data/app/views/integral/backend/shared/cards/_object.haml +1 -1
- data/app/views/integral/backend/shared/cards/_recent_activity.haml +12 -12
- data/app/views/integral/backend/shared/cards/_recent_resources.haml +17 -0
- data/app/views/integral/backend/shared/cards/_top_post_authors.haml +14 -15
- data/app/views/integral/backend/shared/cards/_welcome.haml +24 -25
- data/app/views/integral/backend/shared/{_empty_grid.haml → grid/_empty.haml} +0 -0
- data/app/views/integral/backend/shared/grid/_form.haml +9 -0
- data/app/views/integral/backend/shared/grid/_grid.haml +21 -0
- data/app/views/integral/backend/shared/{_pagination.haml → grid/_pagination.haml} +0 -0
- data/app/views/integral/backend/shared/grid/_row_layout.haml +8 -0
- data/app/views/integral/backend/shared/record_selector/_collection.haml +1 -0
- data/app/views/integral/backend/shared/record_selector/_modal.haml +9 -10
- data/app/views/integral/backend/static_pages/dashboard.haml +6 -7
- data/app/views/integral/backend/users/_form.haml +34 -46
- data/app/views/integral/backend/users/grid/_dropdown_actions.haml +17 -0
- data/app/views/integral/backend/users/grid/_row_content.haml +8 -0
- data/app/views/integral/backend/users/index.haml +6 -6
- data/app/views/integral/backend/users/list.haml +10 -16
- data/app/views/integral/backend/users/show.haml +10 -1
- data/app/views/integral/categories/show.haml +3 -3
- data/app/views/integral/posts/_article_footer.haml +1 -1
- data/app/views/integral/posts/_card.haml +1 -1
- data/app/views/integral/posts/_most_read_section.haml +1 -1
- data/app/views/integral/posts/_post.haml +1 -1
- data/app/views/integral/posts/templates/default.haml +1 -1
- data/app/views/integral/shared/sidebar/_item.haml +1 -1
- data/app/views/layouts/integral/backend.html.haml +24 -5
- data/app/views/layouts/integral/backend/_create_dropdown.haml +1 -30
- data/app/views/layouts/integral/backend/_main_menu_items.haml +1 -101
- data/config/initializers/devise.rb +1 -1
- data/config/locales/en.yml +60 -2
- data/config/routes.rb +2 -0
- data/db/migrate/20200407022636_create_integral_notifications.rb +25 -0
- data/db/migrate/20200421223602_add_status_to_integral_users.rb +5 -0
- data/db/seeds.rb +15 -11
- data/lib/integral.rb +1 -0
- data/lib/integral/acts_as_integral.rb +115 -0
- data/lib/integral/acts_as_listable.rb +1 -1
- data/lib/integral/engine.rb +9 -0
- data/lib/integral/grids/activities_grid.rb +0 -1
- data/lib/integral/grids/lists_grid.rb +1 -0
- data/lib/integral/grids/posts_grid.rb +5 -1
- data/lib/integral/grids/users_grid.rb +5 -0
- data/lib/integral/list_renderer.rb +5 -1
- data/lib/integral/router.rb +20 -4
- data/lib/integral/version.rb +1 -1
- data/spec/factories.rb +15 -1
- metadata +45 -39
- data/app/decorators/integral/category_version_decorator.rb +0 -7
- data/app/decorators/integral/image_version_decorator.rb +0 -7
- data/app/decorators/integral/list_version_decorator.rb +0 -7
- data/app/decorators/integral/page_version_decorator.rb +0 -7
- data/app/decorators/integral/post_version_decorator.rb +0 -7
- data/app/decorators/integral/user_version_decorator.rb +0 -7
- data/app/views/devise/mailer/invitation_instructions.html.erb +0 -13
- data/app/views/integral/backend/activities/_grid.haml +0 -22
- data/app/views/integral/backend/images/_grid.haml +0 -16
- data/app/views/integral/backend/lists/_grid.haml +0 -14
- data/app/views/integral/backend/pages/_grid.haml +0 -46
- data/app/views/integral/backend/posts/_grid.haml +0 -51
- data/app/views/integral/backend/shared/_grid.haml +0 -18
- data/app/views/integral/backend/shared/cards/_recent_pages.haml +0 -19
- data/app/views/integral/backend/shared/cards/_recent_posts.haml +0 -18
- data/app/views/integral/backend/shared/cards/_recent_users.haml +0 -19
- data/app/views/integral/backend/users/_grid.haml +0 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: aa5d76abbcaa10b58279d32f7038fc5adc31d8113ba2937884ed60a680689701
|
4
|
+
data.tar.gz: 65e114fe1f0dd85e0dd278fd72446e145fc7d31c77276f7dad6479212949a38f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9cb42de152dab184383643cf236b3ab4d9e6e9b7ab37ffd9f32e1f857da7fc22edcef4d24a465b08f29a3e7ad1294a66bf02849351ed68a5184026ac67d0a3e4
|
7
|
+
data.tar.gz: ed0210b62a544aa6826e188d5290f08891a650361ec30cbde1793c9f5daabbb7b28bc162fdf9dce7f7b3acac21b6485f2a540624fb7bdfbd85b7f5c2e3038644
|
data/README.md
CHANGED
@@ -1,18 +1,19 @@
|
|
1
1
|
[![Gem Version](https://badge.fury.io/rb/integral.svg)][version-website]
|
2
2
|
[![Current Build Status](https://img.shields.io/circleci/project/github/yamasolutions/integral/master.svg)][ci-website] [![Inline docs](http://inch-ci.org/github/yamasolutions/integral.svg?branch=master)][docs-website]
|
3
3
|
# Integral CMS
|
4
|
-
![Integral CMS Features](https://
|
4
|
+
![Integral CMS Features](https://integralrails.com/features.gif)
|
5
5
|
|
6
6
|
Integral is a CMS for Rails 5+. The aim of Integral is to lower the barrier of entry in creating websites, using Ruby on Rails, with all the bells and whistles that users have now come to expect.
|
7
7
|
Out of the box integral provides;
|
8
8
|
* Backend features
|
9
9
|
* Professional design
|
10
|
+
* Activity tracking
|
11
|
+
* User notifications
|
10
12
|
* User authentication & authorization
|
11
13
|
* Page & Post management with full WYSWIYG editing
|
12
14
|
* Image management (w/ background image processing)
|
13
15
|
* List management
|
14
16
|
* Settings management
|
15
|
-
* Activity tracking
|
16
17
|
* Frontend features
|
17
18
|
* Dynamic Pages
|
18
19
|
* Integrated Blog
|
@@ -45,7 +46,7 @@ If you have discovered a security related bug, please do NOT use the GitHub issu
|
|
45
46
|
|
46
47
|
|
47
48
|
### Looking for help
|
48
|
-
If you have any questions please
|
49
|
+
If you have any questions please feel free to use the [GitHub issue tracker][github-issue-tracker].
|
49
50
|
|
50
51
|
|
51
52
|
## Contributing
|
@@ -42,6 +42,54 @@ function ready() {
|
|
42
42
|
window.initialized = true;
|
43
43
|
}
|
44
44
|
|
45
|
+
function loadMore(entries) {
|
46
|
+
if (entries[0].intersectionRatio <= 0) {
|
47
|
+
return;
|
48
|
+
}
|
49
|
+
lastNotificationObserver.unobserve(notificationsContainer.find('ul li:last-of-type')[0])
|
50
|
+
|
51
|
+
$.ajax({
|
52
|
+
url: notificationsContainer.data('load-more-url'),
|
53
|
+
success: function(response) {
|
54
|
+
notificationsContainer.find('ul').append(response.content)
|
55
|
+
$('[data-notification-read-url]').each(function( index, notification ) {
|
56
|
+
unreadNotificationObserver.unobserve(notification)
|
57
|
+
unreadNotificationObserver.observe(notification)
|
58
|
+
});
|
59
|
+
|
60
|
+
if (response.load_more_url) {
|
61
|
+
notificationsContainer.data('load-more-url', response.load_more_url)
|
62
|
+
lastNotificationObserver.observe(notificationsContainer.find('ul li:last-of-type')[0])
|
63
|
+
} else {
|
64
|
+
notificationsContainer.find('.js-loader--notifications').hide()
|
65
|
+
}
|
66
|
+
}
|
67
|
+
});
|
68
|
+
}
|
69
|
+
|
70
|
+
function readNotification(entries) {
|
71
|
+
var i;
|
72
|
+
for (i = 0; i < entries.length; i++) {
|
73
|
+
entry = entries[i]
|
74
|
+
|
75
|
+
if (entry.intersectionRatio < .90) {
|
76
|
+
continue;
|
77
|
+
}
|
78
|
+
|
79
|
+
readUrl = entry.target.dataset.notificationReadUrl
|
80
|
+
|
81
|
+
unreadNotificationObserver.unobserve(entry.target)
|
82
|
+
entry.target.removeAttribute('data-notification-read-url')
|
83
|
+
|
84
|
+
$.ajax({
|
85
|
+
url: readUrl,
|
86
|
+
type: 'PUT',
|
87
|
+
success: function(response) {
|
88
|
+
}
|
89
|
+
});
|
90
|
+
}
|
91
|
+
}
|
92
|
+
|
45
93
|
$(document).foundation();
|
46
94
|
jQuery('input, textarea').characterCounter();
|
47
95
|
SlugGenerator.check_for_slugs();
|
@@ -53,6 +101,37 @@ function ready() {
|
|
53
101
|
new RemoteForm($('.remote-form'));
|
54
102
|
Grid.init();
|
55
103
|
|
104
|
+
$("[data-form-subscribe-notifications], [data-form-unsubscribe-notifications]").submit(function( event ) {
|
105
|
+
$(event.target).find('.button').attr('disabled', true)
|
106
|
+
});
|
107
|
+
|
108
|
+
$('[data-form-subscribe-notifications]').on( "ajax:success", function(event, response) {
|
109
|
+
activeForm = $(event.target)
|
110
|
+
activeForm.find('.button').attr('disabled', false)
|
111
|
+
activeForm.addClass('hide')
|
112
|
+
$('[data-form-unsubscribe-notifications]').removeClass('hide')
|
113
|
+
toastr['success']('You have subscribed to notifications.')
|
114
|
+
});
|
115
|
+
|
116
|
+
$('[data-form-unsubscribe-notifications]').on( "ajax:success", function(event, response) {
|
117
|
+
activeForm = $(event.target)
|
118
|
+
activeForm.find('.button').attr('disabled', false)
|
119
|
+
activeForm.addClass('hide')
|
120
|
+
$('[data-form-subscribe-notifications]').removeClass('hide')
|
121
|
+
toastr['success']('You have unsubscribed to notifications.')
|
122
|
+
});
|
123
|
+
|
124
|
+
notificationsContainer = $('[data-notifications]')
|
125
|
+
if (notificationsContainer.data('load-more-url')) {
|
126
|
+
lastNotificationObserver = new IntersectionObserver(loadMore, { root: notificationsContainer[0] });
|
127
|
+
lastNotificationObserver.observe(notificationsContainer.find('ul li:last-of-type')[0])
|
128
|
+
}
|
129
|
+
|
130
|
+
unreadNotificationObserver = new IntersectionObserver(readNotification, { root: notificationsContainer[0], threshold: 0.90 });
|
131
|
+
$('[data-notification-read-url]').each(function( index, notification ) {
|
132
|
+
unreadNotificationObserver.observe(notification)
|
133
|
+
});
|
134
|
+
|
56
135
|
// Recent activity 'view more' behaviour
|
57
136
|
$("[data-recent-activity]").on("click", function(ev) {
|
58
137
|
$button = $(ev.currentTarget);
|
@@ -89,15 +168,20 @@ function ready() {
|
|
89
168
|
}
|
90
169
|
});
|
91
170
|
|
171
|
+
// Initialize foundation components on filter
|
172
|
+
$(".card.listing form").on("ajax:success", function(ev) {
|
173
|
+
$(ev.currentTarget).closest('.card.listing').find('[data-grid] table').foundation();
|
174
|
+
});
|
175
|
+
|
92
176
|
// Hijack context menu click for rows which have a URL
|
93
|
-
$(
|
177
|
+
$('.card.listing').on('contextmenu', 'tr[data-href]', function(ev) {
|
94
178
|
$('#' + ev.currentTarget.dataset.contextMenu).foundation('open');
|
95
179
|
|
96
180
|
return false;
|
97
181
|
});
|
98
182
|
|
99
183
|
// Capture clicks on rows which have a URL and visit that URL
|
100
|
-
$(
|
184
|
+
$('.card.listing').on('click', 'tr[data-href]', function(ev) {
|
101
185
|
// Do not follow if the click is within a data-toggle
|
102
186
|
if (($(ev.target).closest('[data-toggle]').length == 0) && ($(ev.target).closest('[data-dropdown]').length == 0)) {
|
103
187
|
document.location = $(ev.currentTarget).data('href');
|
@@ -12,8 +12,9 @@ jQuery.fn.characterCounter = function(){
|
|
12
12
|
|
13
13
|
var itHasLengthAttribute = $input.attr('maxlength') != undefined;
|
14
14
|
var itIsntDisabled = $input.attr('data-character-counter') != 'false';
|
15
|
+
var itIsEnabled = $input.attr('data-character-counter') == 'true';
|
15
16
|
|
16
|
-
if ((itHasLengthAttribute) && (itIsntDisabled)) {
|
17
|
+
if ((itHasLengthAttribute) && (itIsntDisabled) || itIsEnabled) {
|
17
18
|
$input.on('input', updateCounter);
|
18
19
|
$input.on('focus', updateCounter);
|
19
20
|
$input.on('blur', removeCounterElement);
|
@@ -24,14 +25,18 @@ jQuery.fn.characterCounter = function(){
|
|
24
25
|
};
|
25
26
|
|
26
27
|
function updateCounter(){
|
27
|
-
var maxLength
|
28
|
-
actualLength
|
29
|
-
isValidLength = actualLength <= maxLength;
|
28
|
+
var maxLength = $(this).attr('maxlength');
|
29
|
+
var actualLength = this.value.length;
|
30
30
|
|
31
|
-
|
32
|
-
|
31
|
+
if (maxLength === undefined) {
|
32
|
+
var formattedCount = actualLength;
|
33
|
+
} else {
|
34
|
+
var isValidLength = actualLength <= maxLength;
|
35
|
+
var formattedCount = actualLength + '/' + maxLength;
|
36
|
+
addInputStyle(isValidLength, $(this));
|
37
|
+
}
|
33
38
|
|
34
|
-
|
39
|
+
$(this).parent().find('span[class="character-counter"]').html(formattedCount);
|
35
40
|
}
|
36
41
|
|
37
42
|
function addCounterElement($input) {
|
@@ -45,7 +50,7 @@ function addCounterElement($input) {
|
|
45
50
|
.addClass('character-counter')
|
46
51
|
.css('float','right')
|
47
52
|
.css('font-size','12px')
|
48
|
-
.css('
|
53
|
+
.css('align-self', 'flex-end')
|
49
54
|
.css('height', 1);
|
50
55
|
|
51
56
|
$input.after($counterElement);
|
@@ -81,6 +81,7 @@ class this.RecordSelector
|
|
81
81
|
new_item.find('.subtitle').text(record.subtitle)
|
82
82
|
new_item.find('.title').text(record.title)
|
83
83
|
new_item.find('.record').trigger('click')
|
84
|
+
@recordsContainer.find('.no-records').hide()
|
84
85
|
|
85
86
|
# handle click on record
|
86
87
|
@recordsContainer.on 'click', '.record', (e) =>
|
@@ -99,6 +100,7 @@ class this.RecordSelector
|
|
99
100
|
@recordsContainer.on 'click', '.pagination a', (ev) =>
|
100
101
|
ev.preventDefault()
|
101
102
|
pageNumber = @getUrlVars(ev.target.href)['page']
|
103
|
+
pageNumber = 1 unless pageNumber?
|
102
104
|
@pageField.val(pageNumber)
|
103
105
|
@form.submit()
|
104
106
|
|
@@ -5,6 +5,8 @@
|
|
5
5
|
@import "integral/support/media-query-indicator"
|
6
6
|
@import "integral/backend/materialize-tags"
|
7
7
|
@import "integral/backend/modules/timeline"
|
8
|
+
@import "integral/backend/modules/dropdown_pane_notifications"
|
9
|
+
@import "integral/backend/modules/dropdown_pane_profile"
|
8
10
|
@import 'integral/backend/shared'
|
9
11
|
@import 'integral/backend/notifications'
|
10
12
|
@import 'integral/backend/dashboard-layout'
|
@@ -23,6 +25,20 @@
|
|
23
25
|
&.ins
|
24
26
|
background-color: transparentize($success-color, 0.7)
|
25
27
|
|
28
|
+
hr
|
29
|
+
border: solid 0.5px #f4f7fb
|
30
|
+
&.dark
|
31
|
+
border-color: #d4dfef
|
32
|
+
margin: 0.5em 0
|
33
|
+
|
34
|
+
.data-unavailable
|
35
|
+
margin: 0 auto
|
36
|
+
display: flex
|
37
|
+
align-items: center
|
38
|
+
//color: #17212b;
|
39
|
+
span
|
40
|
+
margin-right: 2rem
|
41
|
+
|
26
42
|
.card
|
27
43
|
font-size: 0.9em
|
28
44
|
.description
|
@@ -31,9 +47,7 @@
|
|
31
47
|
.subtitle
|
32
48
|
margin: -0.5em 0 -0.25em 0
|
33
49
|
color: scale-color($body-font-color, $lightness: 20%)
|
34
|
-
.
|
35
|
-
float: right
|
36
|
-
> .card-section > .actions
|
50
|
+
> .actions
|
37
51
|
a
|
38
52
|
display: block
|
39
53
|
margin-bottom: 1em
|
@@ -42,26 +56,23 @@
|
|
42
56
|
width: 1.5rem
|
43
57
|
text-align: center
|
44
58
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
border-top: solid 0.5px #d4dfef
|
53
|
-
font-size: 0.8em
|
54
|
-
padding: 0.5em 0
|
55
|
-
.attr
|
56
|
-
color: scale-color($body-font-color, $lightness: 10%)
|
59
|
+
.card-unpadded.object
|
60
|
+
.info-item
|
61
|
+
border-top: solid 0.5px #d4dfef
|
62
|
+
font-size: 0.8em
|
63
|
+
padding: 0.5em 0
|
64
|
+
.attr
|
65
|
+
color: scale-color($body-font-color, $lightness: 10%)
|
57
66
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
67
|
+
.val
|
68
|
+
float: right
|
69
|
+
&.thumb img
|
70
|
+
max-width: 1rem
|
71
|
+
max-height: 1rem
|
63
72
|
|
64
|
-
|
65
|
-
|
66
|
-
|
73
|
+
.button
|
74
|
+
border-radius: 0px 0px 5px
|
75
|
+
font-size: 1em
|
67
76
|
|
77
|
+
.flex-auto
|
78
|
+
flex: auto
|
@@ -110,7 +110,7 @@ $breakpoints: (
|
|
110
110
|
small: 0,
|
111
111
|
medium: 640px,
|
112
112
|
large: 1024px,
|
113
|
-
xlarge:
|
113
|
+
xlarge: 1281px,
|
114
114
|
xxlarge: 1440px,
|
115
115
|
);
|
116
116
|
$print-breakpoint: large;
|
@@ -833,7 +833,7 @@ $has-tip-border-bottom: none;
|
|
833
833
|
$tooltip-background-color: $black;
|
834
834
|
$tooltip-color: $white;
|
835
835
|
$tooltip-padding: 0.75rem;
|
836
|
-
$tooltip-max-width:
|
836
|
+
$tooltip-max-width: 12rem;
|
837
837
|
$tooltip-font-size: $small-font-size;
|
838
838
|
$tooltip-pip-width: 0.75rem;
|
839
839
|
$tooltip-pip-height: $tooltip-pip-width * 0.866;
|
@@ -40,10 +40,10 @@
|
|
40
40
|
max-height: 30px;
|
41
41
|
}
|
42
42
|
background-color: $primary-color;
|
43
|
-
.app-dashboard-open-sidebar
|
43
|
+
.app-dashboard-open-sidebar i {
|
44
44
|
font-size: 1.25em;
|
45
45
|
}
|
46
|
-
|
46
|
+
i {
|
47
47
|
color: $white;
|
48
48
|
vertical-align: super;
|
49
49
|
line-height: 30px;
|
@@ -82,6 +82,7 @@
|
|
82
82
|
align-items: center;
|
83
83
|
color: $white;
|
84
84
|
padding: 1em;
|
85
|
+
background-color: $secondary-color;
|
85
86
|
&.is-active {
|
86
87
|
background-color: scale-color($secondary-color, $lightness: 10%);
|
87
88
|
}
|
@@ -178,7 +179,7 @@
|
|
178
179
|
transform: rotate(45deg);
|
179
180
|
right: 2em;
|
180
181
|
}
|
181
|
-
|
182
|
+
i {
|
182
183
|
width: 1.25em;
|
183
184
|
text-align: center;
|
184
185
|
margin-right: 0.25em;
|
@@ -353,65 +354,6 @@
|
|
353
354
|
height: 35px;
|
354
355
|
}
|
355
356
|
}
|
356
|
-
#profile-dropdown {
|
357
|
-
padding: 0;
|
358
|
-
&:before {
|
359
|
-
content: ' ';
|
360
|
-
width: 2.5em;
|
361
|
-
height: 1.5em;
|
362
|
-
border-radius: 0 0 0.5em 0;
|
363
|
-
background: linear-gradient(-45deg, #1b8ecf 50%, transparent 50%);
|
364
|
-
position: absolute;
|
365
|
-
margin: 0;
|
366
|
-
right: 0.5em;
|
367
|
-
transform: rotate(225deg) skewX(8deg) skewY(8deg);
|
368
|
-
}
|
369
|
-
&:after {
|
370
|
-
content: ' ';
|
371
|
-
position: absolute;
|
372
|
-
right: 0;
|
373
|
-
top: -2.2em;
|
374
|
-
height: 2.2em;
|
375
|
-
width: 70%;
|
376
|
-
}
|
377
|
-
.section {
|
378
|
-
padding: 1.5em 1.2em;
|
379
|
-
&:first-of-type {
|
380
|
-
border-radius: 5px 5px 0 0;
|
381
|
-
background-color: $primary-color;
|
382
|
-
color: $white;
|
383
|
-
.avatar {
|
384
|
-
float: left;
|
385
|
-
margin-right: 1em;
|
386
|
-
width: 60px;
|
387
|
-
height: 60px;
|
388
|
-
}
|
389
|
-
.name {
|
390
|
-
font-size: 1.3em
|
391
|
-
}
|
392
|
-
.email {
|
393
|
-
font-size: 0.85em
|
394
|
-
}
|
395
|
-
}
|
396
|
-
&:last-of-type {
|
397
|
-
.menu a {
|
398
|
-
padding-left: 0;
|
399
|
-
color: $secondary-color;
|
400
|
-
&:hover {
|
401
|
-
color: $primary-color;
|
402
|
-
}
|
403
|
-
i {
|
404
|
-
width: 30px;
|
405
|
-
text-align: center;
|
406
|
-
}
|
407
|
-
}
|
408
|
-
.button {
|
409
|
-
display: inline-block;
|
410
|
-
padding: 0.8em 2em;
|
411
|
-
}
|
412
|
-
}
|
413
|
-
}
|
414
|
-
}
|
415
357
|
}
|
416
358
|
}
|
417
359
|
}
|
@@ -460,7 +402,7 @@
|
|
460
402
|
.dropdown.menu.vertical > li.opens-right > a::after {
|
461
403
|
content: none;
|
462
404
|
}
|
463
|
-
|
405
|
+
i {
|
464
406
|
margin-right: 0;
|
465
407
|
}
|
466
408
|
}
|
@@ -492,3 +434,25 @@
|
|
492
434
|
@include shrunk-sidebar()
|
493
435
|
}
|
494
436
|
}
|
437
|
+
|
438
|
+
.button-notifications-dropdown {
|
439
|
+
padding: .5rem;
|
440
|
+
cursor: pointer;
|
441
|
+
position: relative;
|
442
|
+
|
443
|
+
.fa-circle {
|
444
|
+
font-size: 5px;
|
445
|
+
position: absolute;
|
446
|
+
color: $primary-color;
|
447
|
+
top: 0;
|
448
|
+
margin: 0 auto;
|
449
|
+
left: 50%;
|
450
|
+
transform: translate(-50%, -50%);
|
451
|
+
}
|
452
|
+
// &.unread {
|
453
|
+
// color: $primary-color;
|
454
|
+
// }
|
455
|
+
@include breakpoint(small down) {
|
456
|
+
color: $white;
|
457
|
+
}
|
458
|
+
}
|