integral 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (172) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +4 -3
  3. data/app/assets/javascripts/integral/backend.js +86 -2
  4. data/app/assets/javascripts/integral/support/character_counter.js +13 -8
  5. data/app/assets/javascripts/integral/support/list.coffee +1 -0
  6. data/app/assets/javascripts/integral/support/record_selector.coffee +2 -0
  7. data/app/assets/javascripts/integral/support/slug_generator.coffee +1 -0
  8. data/app/assets/stylesheets/integral/backend.sass +34 -23
  9. data/app/assets/stylesheets/integral/backend/_foundation_settings.scss +2 -2
  10. data/app/assets/stylesheets/integral/backend/dashboard-layout.scss +27 -63
  11. data/app/assets/stylesheets/integral/backend/devise.sass +2 -3
  12. data/app/assets/stylesheets/integral/backend/materialize-tags.sass +1 -0
  13. data/app/assets/stylesheets/integral/backend/modules/dropdown_pane_notifications.scss +150 -0
  14. data/app/assets/stylesheets/integral/backend/modules/dropdown_pane_profile.scss +59 -0
  15. data/app/assets/stylesheets/integral/backend/shared.sass +41 -2
  16. data/app/assets/stylesheets/integral/frontend/layout.sass +10 -0
  17. data/app/assets/stylesheets/integral/support/media-query-indicator.sass +4 -4
  18. data/app/controllers/integral/backend/activities_controller.rb +21 -27
  19. data/app/controllers/integral/backend/base_controller.rb +87 -37
  20. data/app/controllers/integral/backend/images_controller.rb +26 -8
  21. data/app/controllers/integral/backend/lists_controller.rb +2 -14
  22. data/app/controllers/integral/backend/notification_subscriptions_controller.rb +23 -0
  23. data/app/controllers/integral/backend/pages_controller.rb +0 -4
  24. data/app/controllers/integral/backend/posts_controller.rb +0 -4
  25. data/app/controllers/integral/backend/settings_controller.rb +4 -0
  26. data/app/controllers/integral/backend/static_pages_controller.rb +6 -0
  27. data/app/controllers/integral/backend/users_controller.rb +43 -24
  28. data/app/controllers/integral/blog_controller.rb +12 -0
  29. data/app/controllers/integral/categories_controller.rb +17 -3
  30. data/app/controllers/integral/tags_controller.rb +5 -2
  31. data/app/decorators/integral/base_decorator.rb +16 -0
  32. data/app/decorators/integral/image_decorator.rb +2 -2
  33. data/app/decorators/integral/list_decorator.rb +1 -13
  34. data/app/decorators/integral/notification/notification_decorator.rb +74 -0
  35. data/app/decorators/integral/page_decorator.rb +1 -13
  36. data/app/decorators/integral/post_decorator.rb +1 -2
  37. data/app/decorators/integral/user_decorator.rb +1 -13
  38. data/app/decorators/integral/version_decorator.rb +8 -4
  39. data/app/helpers/integral/backend/base_helper.rb +97 -31
  40. data/app/jobs/integral/application_job.rb +1 -0
  41. data/app/jobs/integral/newsletter_signup_job.rb +0 -2
  42. data/app/mailers/integral/devise_mailer.rb +6 -0
  43. data/app/models/concerns/integral/notification/subscribable.rb +67 -0
  44. data/app/models/integral/application_record.rb +9 -0
  45. data/app/models/integral/category.rb +9 -0
  46. data/app/models/integral/image.rb +40 -3
  47. data/app/models/integral/list.rb +10 -2
  48. data/app/models/integral/list_item.rb +14 -14
  49. data/app/models/integral/list_item_connection.rb +6 -0
  50. data/app/models/integral/notification/notification.rb +28 -0
  51. data/app/models/integral/notification/subscription.rb +14 -0
  52. data/app/models/integral/page.rb +15 -8
  53. data/app/models/integral/post.rb +11 -13
  54. data/app/models/integral/user.rb +45 -2
  55. data/app/policies/integral/base_policy.rb +7 -12
  56. data/app/policies/integral/page_policy.rb +1 -0
  57. data/app/policies/integral/version_policy.rb +0 -8
  58. data/app/views/devise/invitations/edit.haml +1 -4
  59. data/app/views/devise/mailer/invitation_instructions.inky-haml +20 -0
  60. data/app/views/integral/backend/activities/grid/_dropdown_actions.haml +1 -0
  61. data/app/views/integral/backend/activities/grid/_row_content.haml +13 -0
  62. data/app/views/integral/backend/activities/index.haml +7 -13
  63. data/app/views/integral/backend/activities/shared/_grid.haml +35 -20
  64. data/app/views/integral/backend/activities/shared/index.haml +12 -12
  65. data/app/views/integral/backend/activities/shared/show.haml +7 -7
  66. data/app/views/integral/backend/activities/show.haml +1 -1
  67. data/app/views/integral/backend/categories/_modal.haml +2 -3
  68. data/app/views/integral/backend/images/_form.haml +13 -25
  69. data/app/views/integral/backend/images/edit.haml +1 -9
  70. data/app/views/integral/backend/images/grid/_dropdown_actions.haml +5 -0
  71. data/app/views/integral/backend/images/grid/_row_content.haml +5 -0
  72. data/app/views/integral/backend/images/index.haml +11 -17
  73. data/app/views/integral/backend/images/list.haml +11 -0
  74. data/app/views/integral/backend/images/show.haml +26 -0
  75. data/app/views/integral/backend/lists/_form.haml +6 -19
  76. data/app/views/integral/backend/lists/_item_modal.haml +3 -3
  77. data/app/views/integral/backend/lists/_manager.haml +11 -13
  78. data/app/views/integral/backend/lists/edit.haml +6 -20
  79. data/app/views/integral/backend/lists/grid/_dropdown_actions.haml +9 -0
  80. data/app/views/integral/backend/lists/grid/_row_content.haml +3 -0
  81. data/app/views/integral/backend/lists/index.haml +11 -17
  82. data/app/views/integral/backend/lists/list.haml +11 -0
  83. data/app/views/integral/backend/lists/show.haml +30 -0
  84. data/app/views/integral/backend/notifications/_notification.haml +21 -0
  85. data/app/views/integral/backend/pages/_form.haml +19 -43
  86. data/app/views/integral/backend/pages/edit.haml +4 -12
  87. data/app/views/integral/backend/pages/grid/_dropdown_actions.haml +11 -0
  88. data/app/views/integral/backend/pages/grid/_row_content.haml +5 -0
  89. data/app/views/integral/backend/pages/index.haml +6 -6
  90. data/app/views/integral/backend/pages/list.haml +12 -19
  91. data/app/views/integral/backend/pages/show.haml +19 -35
  92. data/app/views/integral/backend/posts/_form.haml +18 -56
  93. data/app/views/integral/backend/posts/edit.haml +4 -14
  94. data/app/views/integral/backend/posts/grid/_dropdown_actions.haml +10 -0
  95. data/app/views/integral/backend/posts/grid/_row_content.haml +6 -0
  96. data/app/views/integral/backend/posts/index.haml +6 -6
  97. data/app/views/integral/backend/posts/list.haml +11 -18
  98. data/app/views/integral/backend/posts/new.haml +0 -1
  99. data/app/views/integral/backend/posts/show.haml +18 -41
  100. data/app/views/integral/backend/shared/_breadcrumbs.haml +7 -4
  101. data/app/views/integral/backend/shared/_image_preview.haml +10 -3
  102. data/app/views/integral/backend/shared/_image_selector.haml +1 -1
  103. data/app/views/integral/backend/shared/_notification_subscription_toggle.haml +22 -0
  104. data/app/views/integral/backend/shared/action_bar/_index.haml +9 -0
  105. data/app/views/integral/backend/shared/action_bar/_show.haml +3 -0
  106. data/app/views/integral/backend/shared/cards/_at_a_glance.haml +3 -3
  107. data/app/views/integral/backend/shared/cards/_categories.haml +27 -28
  108. data/app/views/integral/backend/shared/cards/_object.haml +1 -1
  109. data/app/views/integral/backend/shared/cards/_recent_activity.haml +12 -12
  110. data/app/views/integral/backend/shared/cards/_recent_resources.haml +17 -0
  111. data/app/views/integral/backend/shared/cards/_top_post_authors.haml +14 -15
  112. data/app/views/integral/backend/shared/cards/_welcome.haml +24 -25
  113. data/app/views/integral/backend/shared/{_empty_grid.haml → grid/_empty.haml} +0 -0
  114. data/app/views/integral/backend/shared/grid/_form.haml +9 -0
  115. data/app/views/integral/backend/shared/grid/_grid.haml +21 -0
  116. data/app/views/integral/backend/shared/{_pagination.haml → grid/_pagination.haml} +0 -0
  117. data/app/views/integral/backend/shared/grid/_row_layout.haml +8 -0
  118. data/app/views/integral/backend/shared/record_selector/_collection.haml +1 -0
  119. data/app/views/integral/backend/shared/record_selector/_modal.haml +9 -10
  120. data/app/views/integral/backend/static_pages/dashboard.haml +6 -7
  121. data/app/views/integral/backend/users/_form.haml +34 -46
  122. data/app/views/integral/backend/users/grid/_dropdown_actions.haml +17 -0
  123. data/app/views/integral/backend/users/grid/_row_content.haml +8 -0
  124. data/app/views/integral/backend/users/index.haml +6 -6
  125. data/app/views/integral/backend/users/list.haml +10 -16
  126. data/app/views/integral/backend/users/show.haml +10 -1
  127. data/app/views/integral/categories/show.haml +3 -3
  128. data/app/views/integral/posts/_article_footer.haml +1 -1
  129. data/app/views/integral/posts/_card.haml +1 -1
  130. data/app/views/integral/posts/_most_read_section.haml +1 -1
  131. data/app/views/integral/posts/_post.haml +1 -1
  132. data/app/views/integral/posts/templates/default.haml +1 -1
  133. data/app/views/integral/shared/sidebar/_item.haml +1 -1
  134. data/app/views/layouts/integral/backend.html.haml +24 -5
  135. data/app/views/layouts/integral/backend/_create_dropdown.haml +1 -30
  136. data/app/views/layouts/integral/backend/_main_menu_items.haml +1 -101
  137. data/config/initializers/devise.rb +1 -1
  138. data/config/locales/en.yml +60 -2
  139. data/config/routes.rb +2 -0
  140. data/db/migrate/20200407022636_create_integral_notifications.rb +25 -0
  141. data/db/migrate/20200421223602_add_status_to_integral_users.rb +5 -0
  142. data/db/seeds.rb +15 -11
  143. data/lib/integral.rb +1 -0
  144. data/lib/integral/acts_as_integral.rb +115 -0
  145. data/lib/integral/acts_as_listable.rb +1 -1
  146. data/lib/integral/engine.rb +9 -0
  147. data/lib/integral/grids/activities_grid.rb +0 -1
  148. data/lib/integral/grids/lists_grid.rb +1 -0
  149. data/lib/integral/grids/posts_grid.rb +5 -1
  150. data/lib/integral/grids/users_grid.rb +5 -0
  151. data/lib/integral/list_renderer.rb +5 -1
  152. data/lib/integral/router.rb +20 -4
  153. data/lib/integral/version.rb +1 -1
  154. data/spec/factories.rb +15 -1
  155. metadata +45 -39
  156. data/app/decorators/integral/category_version_decorator.rb +0 -7
  157. data/app/decorators/integral/image_version_decorator.rb +0 -7
  158. data/app/decorators/integral/list_version_decorator.rb +0 -7
  159. data/app/decorators/integral/page_version_decorator.rb +0 -7
  160. data/app/decorators/integral/post_version_decorator.rb +0 -7
  161. data/app/decorators/integral/user_version_decorator.rb +0 -7
  162. data/app/views/devise/mailer/invitation_instructions.html.erb +0 -13
  163. data/app/views/integral/backend/activities/_grid.haml +0 -22
  164. data/app/views/integral/backend/images/_grid.haml +0 -16
  165. data/app/views/integral/backend/lists/_grid.haml +0 -14
  166. data/app/views/integral/backend/pages/_grid.haml +0 -46
  167. data/app/views/integral/backend/posts/_grid.haml +0 -51
  168. data/app/views/integral/backend/shared/_grid.haml +0 -18
  169. data/app/views/integral/backend/shared/cards/_recent_pages.haml +0 -19
  170. data/app/views/integral/backend/shared/cards/_recent_posts.haml +0 -18
  171. data/app/views/integral/backend/shared/cards/_recent_users.haml +0 -19
  172. data/app/views/integral/backend/users/_grid.haml +0 -36
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 79d9ffb78cf456a49d8dc4b6c41ff99bb94d473a
4
- data.tar.gz: 7691ba54679f3c1b0dd8e7fadb20f1ff3f22601d
2
+ SHA256:
3
+ metadata.gz: aa5d76abbcaa10b58279d32f7038fc5adc31d8113ba2937884ed60a680689701
4
+ data.tar.gz: 65e114fe1f0dd85e0dd278fd72446e145fc7d31c77276f7dad6479212949a38f
5
5
  SHA512:
6
- metadata.gz: 6852ebaa96f6d6b6e2aaa3aaa61ef02063ba54ce3ebb1740859e94ce229c0c5b2c78a1ab51a610c8faf01d9945c69761f753f36aaecdefa7de9aef611913fc48
7
- data.tar.gz: d4a8027d77dc2a8e19fa297c0d0b1146c8aa598023a30efb808d5bfec7cbf0432746814e37587dbedc0e6e852cb2bc921c705b8501bc2627bf7baa47dd3e66e8
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://media.giphy.com/media/LwzTKp4PxFpvKfxMJe/giphy.gif)
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 use [StackOverflow](https://stackoverflow.com) instead of the GitHub issue tracker.
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
- $("tr[data-href]").on("contextmenu", function(ev) {
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
- $("tr[data-href]").on("click", function(ev) {
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 = +$(this).attr('maxlength'),
28
- actualLength = this.value.length,
29
- isValidLength = actualLength <= maxLength;
28
+ var maxLength = $(this).attr('maxlength');
29
+ var actualLength = this.value.length;
30
30
 
31
- $(this).parent().find('span[class="character-counter"]')
32
- .html( actualLength + '/' + maxLength);
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
- addInputStyle(isValidLength, $(this));
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('margin-top', '-.5rem')
53
+ .css('align-self', 'flex-end')
49
54
  .css('height', 1);
50
55
 
51
56
  $input.after($counterElement);
@@ -64,6 +64,7 @@ class this.List
64
64
  # Initialize new ListItem
65
65
  list_item = new ListItem(@, new_item)
66
66
  modal.foundation()
67
+ modal.find('input, textarea').characterCounter()
67
68
 
68
69
  @_initializeSortable()
69
70
  @_calculateListItemPriorities()
@@ -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
 
@@ -39,6 +39,7 @@ class this.SlugGenerator
39
39
  @inputField.change =>
40
40
  if @outputField.val() == ''
41
41
  @setSlug(@inputField.val())
42
+ @outputField.change().blur()
42
43
 
43
44
  @outputField.change =>
44
45
  @setSlug(@outputField.val())
@@ -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
- .data-unavailable
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
- hr
46
- border: solid 0.5px #f4f7fb
47
- &.dark
48
- border-color: #d4dfef
49
- margin: 0.5em 0
50
- &.object
51
- .info-item
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
- .val
59
- float: right
60
- &.thumb img
61
- max-width: 1rem
62
- max-height: 1rem
67
+ .val
68
+ float: right
69
+ &.thumb img
70
+ max-width: 1rem
71
+ max-height: 1rem
63
72
 
64
- .button
65
- border-radius: 0px 0px 5px
66
- font-size: 1em
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: 1200px,
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: 10rem;
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 .fa {
43
+ .app-dashboard-open-sidebar i {
44
44
  font-size: 1.25em;
45
45
  }
46
- .fa {
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
- .fa {
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
- .fa {
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
+ }