rails_material_admin 0.1.5 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -20
  3. data/app/helpers/admin_helper.rb +34 -0
  4. data/app/views/admin/sessions/new.html.slim +27 -24
  5. data/app/views/layouts/admin.html.slim +16 -5
  6. data/app/views/shared/_error_messages.html.slim +12 -7
  7. data/app/views/shared/_flash_messages.html.slim +14 -0
  8. data/app/views/shared/_header.html.slim +17 -13
  9. data/app/views/shared/_sidebar.html.slim +9 -8
  10. data/config/webpack/environment.js +5 -1
  11. data/lib/generators/crud/crud_generator.rb +4 -4
  12. data/lib/generators/material_admin/material_admin_generator.rb +16 -9
  13. data/lib/material_admin/version.rb +1 -1
  14. data/vendor/javascript/packs/admin.js +18 -12
  15. data/vendor/javascript/packs/admin_style.js +5 -3
  16. data/vendor/javascript/src/stylesheets/admin/shared/common.scss +39 -2
  17. data/vendor/javascript/src/stylesheets/admin/shared/override.scss +62 -0
  18. data/vendor/javascript/src/stylesheets/shared/override.scss +0 -4
  19. data/vendor/rails_material_admin/css/plugins/bootstrap.min.scss +6 -6
  20. data/vendor/rails_material_admin/css/style.scss +33462 -8272
  21. data/vendor/rails_material_admin/js/app.js +404 -0
  22. data/vendor/rails_material_admin/js/bootstrap.min.js +4 -4
  23. data/vendor/rails_material_admin/js/dashboard.js +15 -16
  24. data/vendor/rails_material_admin/js/perfect-scrollbar.jquery.min.js +1569 -0
  25. data/vendor/rails_material_admin/js/sidebarmenu.js +52 -337
  26. data/vendor/rails_material_admin/js/sweetalert2.min.js +2 -0
  27. data/vendor/rails_material_admin/material_admin.js +8 -7
  28. metadata +8 -6
  29. data/package.json +0 -23
  30. data/vendor/rails_material_admin/js/custom.js +0 -113
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: def943b26235c0d7ebb1d59a251e0a28a97d1f7d1f28d3d2a4952601c09c32b4
4
- data.tar.gz: 32c8887d4833da8c76537b56274ce0f5f778fdc86e3e65d542559fc5ce6caeb0
3
+ metadata.gz: e149cf1845f01081d80159c39143ed16a50d26bc5f91451f74258b2a107a415f
4
+ data.tar.gz: b40e938e32a9025500b2cd7934398ec428abdca35db677ccefa23292eef49e4c
5
5
  SHA512:
6
- metadata.gz: 22a3201843be3115853032c33861676e6bfdcb7b601eeecc22ca7011624958ebc053a09e4e12d8dcef8068057dc5d934e1b2cf6d156ac1677a22e9d5ebd2a060
7
- data.tar.gz: 49ae3a1a9b12ba766fc1ff23ef2a48deeaa2c8eff79ed69acd00bca0743d03d284e3dc8a8ba77547afce7cbe8ca99273cff9b535195904edac243e6855a7e891
6
+ metadata.gz: 50e463b925990f31db34e5034f977329a8be8d81ccd96bd9450f02140d0d052741958075aa858e2c00447ef0a0b9f225a259601c71024fab72c180df84f16017
7
+ data.tar.gz: ca4f286534ac41bb5350da901d240d93dfdb441cff226fcedd287a4bd256392f14cdf23240143d694d99f1d9ae02811f68fc1aeb13577a07369e75f0e2434378
data/README.md CHANGED
@@ -1,35 +1,25 @@
1
1
  # MaterialAdmin
2
2
  Use rails webpacker to bundle the material admin template.
3
3
 
4
- https://www.wrappixel.com/demos/admin-templates/material-pro/Documentation/document.html
4
+ https://wrappixel.com/demos/admin-templates/materialpro-bootstrap-latest/material-pro/src/material/ui-scrollspy.html#list-item-2
5
5
 
6
6
  Easily install and set up admin quickly
7
7
 
8
8
  ## Prerequisite
9
9
  - Need set up your db first
10
- - Used js libraries
11
- ```json
10
+
11
+ ```
12
+ // Gemfile
13
+ gem 'webpacker', '~> 5.0'
14
+
15
+
16
+ // package.json
12
17
  {
13
- "name": "MyProject",
14
- "private": true,
15
18
  "dependencies": {
16
- "@rails/webpacker": "5.1.1",
17
- "core-js": "3",
18
- "file-loader": "^6.0.0",
19
- "url-loader": "^4.1.0",
20
- "expose-loader": "^0.7.5",
21
- "resolve-url-loader": "^3.1.1",
22
- "jquery": "^3.5.1",
23
- "select2": "^4.0.13",
24
- "popper.js": "^1.16.1",
25
- "rails-ujs": "^5.2.4-2",
26
- "stimulus": "^1.1.1",
27
- "turbolinks": "^5.2.0",
28
- "datatables.net-bs4": "^1.10.21",
29
- "datatables.net-responsive-bs4": "^2.2.5"
19
+ "@rails/webpacker": "5.4.2",
30
20
  },
31
21
  "devDependencies": {
32
- "webpack-dev-server": "^3.11.0"
22
+ "webpack-dev-server": "^3.11.2"
33
23
  }
34
24
  }
35
25
  ```
@@ -17,4 +17,38 @@ module ApplicationHelper
17
17
  def sort_opt(model, column)
18
18
  { model: model, column: column }.to_json
19
19
  end
20
+
21
+ def sub_item_active?(sub_c_names = [])
22
+ class_names = 'sidebar-item'
23
+
24
+ if controller_name.in?(sub_c_names)
25
+ class_names += ' active'
26
+ end
27
+
28
+ class_names
29
+ end
30
+
31
+ def sidebar_item_classes(c_names, *a_names)
32
+ class_names = 'sidebar-item'
33
+
34
+ if a_names.any?
35
+ class_names += ' selected' if controller_name.in?(c_names) && action_name.in?(a_names)
36
+ else
37
+ class_names += ' selected' if controller_name.in? c_names
38
+ end
39
+
40
+ class_names
41
+ end
42
+
43
+ def sidebar_item_link_classes(c_names, *a_names)
44
+ class_names = 'sidebar-link waves-effect waves-dark sidebar-link'
45
+
46
+ if a_names.any?
47
+ class_names += ' active' if controller_name.in?(c_names) && action_name.in?(a_names)
48
+ else
49
+ class_names += ' active' if controller_name.in? c_names
50
+ end
51
+
52
+ class_names
53
+ end
20
54
  end
@@ -1,30 +1,33 @@
1
- section#wrapper
2
- .login-register
3
- .login-box.card
4
- .card-body
5
- = form_for resource,
6
- as: resource_name,
7
- url: session_path(resource_name),
8
- html: { class: 'form-horizontal form-material' } do |f|
1
+ .auth-wrapper.d-flex.no-block.justify-content-center.align-items-center
2
+ .auth-box.p-4.bg-white.rounded
3
+ #loginform
4
+ .logo
5
+ h3.box-title.mb-3 Sign In
9
6
 
10
- h3.box-title.m-b-20 Sign In
7
+ .row
8
+ .col-12
9
+ = form_for resource,
10
+ as: resource_name,
11
+ url: session_path(resource_name),
12
+ html: { class: 'form-horizontal mt-3 form-material', id: 'loginform' } do |f|
11
13
 
12
- .form-group
13
- .col-xs-12
14
- = f.email_field :email, autofocus: true, autocomplete: "email", class: 'form-control'
14
+ .form-group.mb-3
15
+ .col-xs-12
16
+ = f.email_field :email, autofocus: true, autocomplete: "email", class: 'form-control', placeholder: 'Email'
15
17
 
16
- .form-group
17
- .col-xs-12
18
- = f.password_field :password, autocomplete: "current-password", class: 'form-control'
18
+ .form-group.mb-4
19
+ .col-xs-12
20
+ = f.password_field :password, autocomplete: "current-password", class: 'form-control', placeholder: 'Password'
19
21
 
20
- - if devise_mapping.rememberable?
21
- .form-group
22
- .d-flex.no-block.align-items-center
23
- .checkbox.checkbox-primary.p-t-0
24
- = f.check_box :remember_me
25
- = f.label :remember_me
22
+ - if devise_mapping.rememberable?
23
+ .form-group
24
+ .d-flex
25
+ div class="checkbox checkbox-info pt-0"
26
+ input id="checkbox-signup" type="checkbox" class="material-inputs chk-col-indigo"
27
+ label for="checkbox-signup" Remember me
28
+
29
+ .form-group.text-center.mt-4.mb-3
30
+ .col-xs-12
31
+ = f.submit "Log in", class: 'btn btn-info d-block w-100 waves-effect waves-light'
26
32
 
27
- .form-group.text-center.m-t-20
28
- .col-xs-12
29
- = f.submit "Log in", class: 'btn btn-info btn-lg btn-block text-uppercase waves-effect waves-light'
30
33
 
@@ -17,17 +17,28 @@ html xmlns:wb="http://open.weibo.com/wb"
17
17
  /! Preloader - style you can find in spinners.css
18
18
  // NOTE: Need fix for turbolinks.
19
19
  / .preloader
20
- / svg.circular viewbox=("25 25 50 50")
20
+ / svg.circular viewbox=("25 25 50 50")
21
21
  / circle.path cx="50" cy="50" fill="none" r="20" stroke-miterlimit="10" stroke-width="2" /
22
22
 
23
23
  /! Main wrapper - style you can find in pages.scss
24
- #main-wrapper
24
+ #main-wrapper[
25
+ data-theme="light"
26
+ data-layout="vertical"
27
+ data-navbarbg="skin1"
28
+ data-sidebartype="full"
29
+ data-sidebar-position="fixed"
30
+ data-header-position="fixed"
31
+ data-boxed-layout="full"
32
+ ]
25
33
  = render 'admin/shared/header'
26
34
  = render 'admin/shared/sidebar'
27
-
28
- .page-wrapper
35
+
36
+ .page-wrapper style="display: block;"
37
+ = yield :breadcrumb
38
+
29
39
  .container-fluid
30
- = yield :breadcrumb
40
+ = yield :error_messages
41
+
31
42
  .row
32
43
  = yield
33
44
 
@@ -1,8 +1,13 @@
1
- - if resource.errors.any?
1
+ - targets = Array(target).select { |ele| ele.errors.any? }
2
+
3
+ - if targets.any?
2
4
  #error_explanation
3
- h2
4
- = I18n.t("errors.messages.not_saved", count: resource.errors.count, resource: resource.class.model_name.human.downcase)
5
- ul
6
- - resource.errors.full_messages.each do |message|
7
- li
8
- = message
5
+ div [
6
+ class="alert customize-alert alert-dismissible alert-light-danger text-danger fade show"
7
+ role="alert"
8
+ ]
9
+ button.btn-close aria-label="Close" data-bs-dismiss="alert" type="button"
10
+
11
+ - targets.map(&:errors).map(&:messages).map(&:values).flatten.each do |message|
12
+ | #{message}
13
+
@@ -0,0 +1,14 @@
1
+ - if flash.any?
2
+ - flash.each do |name, msg|
3
+ - if [String, Array].include?(msg.class)
4
+ - message = msg.is_a?(Array) ? msg.join('<br>').html_safe : msg
5
+
6
+ div [
7
+ class="alert customize-alert alert-dismissible alert-light-#{name.to_s == 'notice' ? 'success' : 'danger'} text-danger fade show"
8
+ role="alert"
9
+ ]
10
+ button.btn-close aria-label="Close" data-bs-dismiss="alert" type="button"
11
+
12
+ .d-flex.align-items-center.font-weight-medium
13
+ i.text-danger.fill-white.feather-sm.me-2 data-feather="info" = message
14
+
@@ -1,9 +1,11 @@
1
1
  /! Topbar header - style you can find in pages.scss
2
- header.topbar
3
- nav.navbar.top-navbar.navbar-expand-md.navbar-light
4
- /! Logo
5
- .navbar-header
6
- a.navbar-brand href="/" tppabs="https://wrappixel.com/demos/admin-templates/material-pro/material/index.html"
2
+ header.topbar data-navbarbg="skin1"
3
+ nav.navbar.top-navbar.navbar-expand-md.navbar-dark
4
+ .navbar-header data-logobg='skin1'
5
+ a.nav-link.nav-toggler.d-block.d-md-none.text-muted.waves-effect.waves-dark href="javascript:void(0)"
6
+ i.mdi.mdi-menu
7
+
8
+ a.navbar-brand href="/admin" tppabs="https://wrappixel.com/demos/admin-templates/material-pro/material/index.html"
7
9
  /! Logo icon
8
10
  b
9
11
  /! You can put here icon as well // <i class="wi wi-sunset"></i> //
@@ -11,14 +13,16 @@ header.topbar
11
13
  / img.dark-logo alt="homepage" src="../assets/images/logo-icon.png" /
12
14
  /! Light Logo icon
13
15
  / img.light-logo alt="homepage" src="../assets/images/logo-light-icon.png" /
14
- / = image_tag nil, width: 45, class: 'light-logo'
15
- span.inline-block.ml10 Logo
16
- .navbar-collapse
17
- ul.navbar-nav.mr-auto.mt-md-0
18
- li.nav-item
19
- a.nav-link.nav-toggler.hidden-md-up.text-muted.waves-effect.waves-dark href="javascript:void(0)"
20
- i.mdi.mdi-menu
16
+ = image_tag asset_pack_path('media/images/logo-light-icon.png'), class: 'light-logo'
17
+ span.logo-text
18
+ .inline-block.ml10 Logo
19
+
20
+ a.topbartoggler.d-block.d-md-none.waves-effect.waves-light href="javascript:void(0)" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"
21
+ i.ti-more
22
+
23
+ .navbar-collapse.collapse data-navbarbg="skin1"
24
+ ul.navbar-nav.me-auto
21
25
  li.nav-item
22
- a.nav-link.sidebartoggler.hidden-sm-down.text-muted.waves-effect.waves-dark href="javascript:void(0)"
26
+ a.nav-link.sidebartoggler.d-none.d-md-block.waves-effect.waves-dark href="javascript:void(0)"
23
27
  i.ti-menu
24
28
 
@@ -1,15 +1,14 @@
1
1
  /! ==============================================================
2
2
  /! Left Sidebar - style you can find in sidebar.scss
3
3
  /! ==============================================================
4
- aside.left-sidebar
5
- /! Sidebar scroll
6
- .scroll-sidebar
7
- /! Sidebar navigation
4
+ aside.left-sidebar data-sidebarbg='skin6'
5
+ .scroll-sidebar.ps-container.ps-theme-default.ps-active-y
6
+ /! Sidebar scroll
8
7
  nav.sidebar-nav
9
- ul#sidebarnav
8
+ ul#sidebarnav.in
10
9
  / li.nav-small-cap Project title
11
- li
12
- = link_to '#' do
10
+ li class=sidebar_item_classes('users')
11
+ = link_to '#', class: sidebar_item_link_classes('users') do
13
12
  i.fa.fa-user
14
13
  span.hide-menu Menu
15
14
 
@@ -19,5 +18,7 @@ aside.left-sidebar
19
18
  / i.ti-settings
20
19
  / a.link data-toggle="tooltip" href="" title="Email"
21
20
  / i.mdi.mdi-gmail
22
- a.link data-toggle="tooltip" href=destroy_admin_session_path title="Logout" data-method="DELETE"
21
+ = link_to destroy_admin_session_path, title: 'Logout', method: :delete, data: { toggle: 'tooltip' } do
23
22
  i.mdi.mdi-power
23
+ / a.link data-toggle="tooltip" href=destroy_admin_session_path title="Logout" data-method="DELETE"
24
+
@@ -10,7 +10,11 @@ environment.loaders.append('expose-loader', {
10
10
  test: require.resolve('jquery'),
11
11
  use: [{
12
12
  loader: 'expose-loader',
13
- options: '$'
13
+ options: {
14
+ exposes: {
15
+ globalName: '$',
16
+ }
17
+ }
14
18
  }]
15
19
  })
16
20
 
@@ -71,6 +71,9 @@ class CrudGenerator < Rails::Generators::NamedBase
71
71
 
72
72
  create_file "#{Rails.root}/app/views/#{layout_name}/#{resource}/_form.html.slim" do
73
73
  <<~html
74
+ = content_for :error_messages do
75
+ = render 'admin/shared/error_messages', target: @#{name}
76
+
74
77
  .col-lg-12
75
78
  .card
76
79
  .card-body
@@ -108,9 +111,6 @@ class CrudGenerator < Rails::Generators::NamedBase
108
111
  # frozen_string_literal: true
109
112
 
110
113
  class #{layout_name.camelize}::#{resource.camelize}Controller < #{layout_name.camelize}::BaseController
111
-
112
- include DatatableDecorator
113
-
114
114
  def index
115
115
  respond_to do |format|
116
116
  format.html
@@ -144,7 +144,7 @@ class CrudGenerator < Rails::Generators::NamedBase
144
144
 
145
145
  @total_rows = #{resource}.count
146
146
 
147
- @rows = users.page(dt[:page]).per(dt[:per_page])
147
+ @rows = #{resource}.page(dt[:page]).per(dt[:per_page])
148
148
  @rows = @rows.order(search_obj[:order])
149
149
  end
150
150
  end
@@ -6,10 +6,14 @@ class MaterialAdminGenerator < Rails::Generators::NamedBase
6
6
  GEM_NAME = 'rails_material_admin'
7
7
  GEM_PATH = Gem.loaded_specs[GEM_NAME].full_gem_path
8
8
  JS_PKGS =
9
- 'datatables.net-bs4 datatables.net-responsive-bs4'\
9
+ 'datatables.net-bs5 datatables.net-responsive-bs5'\
10
10
  ' expose-loader file-loader url-loader resolve-url-loader'\
11
- ' rails-ujs stimulus turbolinks'\
12
- ' jquery popper.js select2'
11
+ ' @rails/ujs @rails/activestorage'\
12
+ ' stimulus turbolinks'\
13
+ ' jquery popper.js select2 @popperjs/core webpack-cli'
14
+ ESLINT_JS_PKGS =
15
+ 'eslint prettier eslint-plugin-prettier eslint-config-prettier'\
16
+ ' stylelint stylelint-config-prettier stylelint-config-recommended stylelint-scss'
13
17
 
14
18
  # TODO: Warning! Add reset project.
15
19
 
@@ -38,9 +42,9 @@ class MaterialAdminGenerator < Rails::Generators::NamedBase
38
42
 
39
43
  FileUtils.copy_entry("#{GEM_PATH}/vendor/#{GEM_NAME}", "#{webpacker_dir}/vendor/#{GEM_NAME}/")
40
44
 
41
- p 'Import package.json...'
45
+ # p 'Import package.json...'
42
46
 
43
- FileUtils.cp "#{GEM_PATH}/package.json", "#{Rails.root}/package.json"
47
+ # FileUtils.cp "#{GEM_PATH}/package.json", "#{Rails.root}/package.json"
44
48
 
45
49
  p 'Import js source files...'
46
50
 
@@ -59,6 +63,11 @@ class MaterialAdminGenerator < Rails::Generators::NamedBase
59
63
  )
60
64
  end
61
65
 
66
+ def yarn_install
67
+ system("yarn add #{JS_PKGS}")
68
+ system("yarn add #{ESLINT_JS_PKGS} --dev")
69
+ end
70
+
62
71
  def create_helper
63
72
  p "Create #{layout_name} layout helper..."
64
73
 
@@ -129,10 +138,6 @@ class MaterialAdminGenerator < Rails::Generators::NamedBase
129
138
  FileUtils.copy_entry("#{GEM_PATH}/app/views/shared", dest)
130
139
  end
131
140
 
132
- def yarn_install
133
- system("yarn add #{JS_PKGS}")
134
- end
135
-
136
141
  def create_base_controller
137
142
  p "Create base controller'"
138
143
 
@@ -143,6 +148,8 @@ class MaterialAdminGenerator < Rails::Generators::NamedBase
143
148
  class #{layout_name.camelize}::BaseController < ActionController::Base
144
149
  layout '#{layout_name}'
145
150
 
151
+ include DatatableDecorator
152
+
146
153
  before_action :authenticate_#{layout_name}!
147
154
  end
148
155
  dashboard_controller
@@ -1,3 +1,3 @@
1
1
  module MaterialAdmin
2
- VERSION = '0.1.5'
2
+ VERSION = '0.1.9'
3
3
  end
@@ -1,23 +1,29 @@
1
1
  import 'core-js/stable'
2
2
  import 'regenerator-runtime/runtime'
3
3
 
4
- import { Application } from "stimulus";
5
- import { definitionsFromContext } from "stimulus/webpack-helpers"
4
+ import { Application } from 'stimulus'
5
+ import { definitionsFromContext } from 'stimulus/webpack-helpers'
6
6
 
7
- import Rails from 'rails-ujs';
8
- import Turbolinks from 'turbolinks';
7
+ import Rails from '@rails/ujs'
8
+ import Turbolinks from 'turbolinks'
9
9
 
10
- import 'datatables.net';
11
- import 'datatables.net-responsive-bs4';
12
- import 'select2';
10
+ import 'datatables.net'
11
+ import 'datatables.net-responsive-bs5'
12
+ import 'select2'
13
13
 
14
- import '../vendor/material_admin/material_admin';
14
+ import '../vendor/rails_material_admin/material_admin'
15
15
 
16
- import '../src/javascripts/lib/utils_datatables.js';
17
- import '../src/javascripts/admin/common/scaffold.js';
16
+ import bootstrap from '../vendor/rails_material_admin/js/bootstrap.min'
17
+ window.bootstrap = bootstrap
18
18
 
19
- Rails.start();
20
- Turbolinks.start();
19
+ import Swal from '../vendor/rails_material_admin/js/sweetalert2.min'
20
+ window.Swal = Swal
21
+
22
+ import '../src/javascripts/lib/utils_datatables.js'
23
+ import '../src/javascripts/admin/common/scaffold.js'
24
+
25
+ Rails.start()
26
+ Turbolinks.start()
21
27
 
22
28
  const application = Application.start()
23
29
  // const context = require.context("../src/javascripts/admin/controllers/", true, /\.js$/)
@@ -1,5 +1,7 @@
1
- import '../../../node_modules/datatables.net-bs4/css/dataTables.bootstrap4.css';
2
- import '../vendor/material_admin/material_admin.scss';
1
+ import 'select2/dist/css/select2.css'
2
+
3
+ import '../../../node_modules/datatables.net-bs5/css/dataTables.bootstrap5.css';
4
+ import '../vendor/rails_material_admin/material_admin.scss';
3
5
  import '../src/stylesheets/shared/atom.scss';
4
- import '../src/stylesheets/shared/override.scss';
6
+ import '../src/stylesheets/admin/shared/override.scss';
5
7
  import '../src/stylesheets/admin/shared/common.scss';
@@ -13,11 +13,11 @@ ul#sidebarnav > li > a {
13
13
  }
14
14
 
15
15
  /* form */
16
- [type=checkbox] + label {
16
+ [type='checkbox'] + label {
17
17
  margin-right: 15px;
18
18
  }
19
19
 
20
- [type=radio] + label {
20
+ [type='radio'] + label {
21
21
  margin-right: 15px;
22
22
  }
23
23
 
@@ -32,3 +32,40 @@ form .form-body .form-group > label {
32
32
  margin-bottom: 14px;
33
33
  border-bottom: none;
34
34
  }
35
+
36
+
37
+ input[type='text'].form-control,
38
+ textarea.form-control {
39
+ &::-webkit-input-placeholder {
40
+ font-weight: 300;
41
+ }
42
+ &::-moz-placeholder {
43
+ font-weight: 300;
44
+ }
45
+ &:-ms-input-placeholder {
46
+ font-weight: 300;
47
+ }
48
+ &:-moz-placeholder {
49
+ font-weight: 300;
50
+ }
51
+ }
52
+
53
+ #error_explanation ul {
54
+ margin-bottom: 0;
55
+ }
56
+
57
+ .input-group-text {
58
+ .form-check {
59
+ margin-bottom: 0;
60
+ }
61
+
62
+ .form-check-label {
63
+ margin-bottom: 0;
64
+ }
65
+ }
66
+
67
+
68
+ /* table */
69
+ table.editable-table td.select-cell {
70
+ padding: 0;
71
+ }
@@ -0,0 +1,62 @@
1
+ html, body {
2
+ height: 100%;
3
+ }
4
+
5
+ .topbar .top-navbar .navbar-header .navbar-brand {
6
+ color: white;
7
+ }
8
+
9
+ // NOTE: If you want reduce the checkbox border
10
+ // [type='checkbox'] + label:before,
11
+ // [type='checkbox']:not(.filled-in) + label:after {
12
+ // border: 1px solid #ced4da;
13
+ // }
14
+
15
+ /* select2 */
16
+ .select2-container {
17
+ width: 100% !important;
18
+ }
19
+
20
+ .select2-container--default .select2-selection--multiple {
21
+ border: 1px solid #ced4da;
22
+ }
23
+
24
+ .select2-container--default.select2-container--focus .select2-selection--multiple,
25
+ .select2-container--default.select2-container--open.select2-container--below .select2-selection--single,
26
+ .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {
27
+ border: 1px solid #ced4da;
28
+ color: #495057;
29
+ background-color: #fff;
30
+ border-color: #80bdff;
31
+ outline: 0;
32
+ box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
33
+ }
34
+
35
+ .select2-container--default .select2-selection--multiple .select2-selection__rendered {
36
+ padding-left: 12px;
37
+ }
38
+
39
+ .select2-search__field {
40
+ color: #999;
41
+ font-weight: 300;
42
+ }
43
+
44
+ // Fix placeholder missing when select is initially hidden.
45
+ .select2-search--inline {
46
+ /*this will make the container disappear, making the child the one who sets the width of the element*/
47
+ display: contents;
48
+ }
49
+ .select2-search__field:placeholder-shown {
50
+ /*makes the placeholder to be 100% of the width while there are no options selected*/
51
+ width: 100% !important;
52
+ }
53
+
54
+
55
+ /* DataTable */
56
+ div.dataTables_wrapper div.dataTables_paginate {
57
+ margin-top: 8px;
58
+ }
59
+
60
+ .page-wrapper {
61
+ transition: none;
62
+ }
@@ -1,7 +1,3 @@
1
1
  html, body {
2
2
  height: 100%;
3
3
  }
4
-
5
- .topbar .top-navbar .navbar-header .navbar-brand {
6
- color: white;
7
- }