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.
- checksums.yaml +4 -4
- data/README.md +10 -20
- data/app/helpers/admin_helper.rb +34 -0
- data/app/views/admin/sessions/new.html.slim +27 -24
- data/app/views/layouts/admin.html.slim +16 -5
- data/app/views/shared/_error_messages.html.slim +12 -7
- data/app/views/shared/_flash_messages.html.slim +14 -0
- data/app/views/shared/_header.html.slim +17 -13
- data/app/views/shared/_sidebar.html.slim +9 -8
- data/config/webpack/environment.js +5 -1
- data/lib/generators/crud/crud_generator.rb +4 -4
- data/lib/generators/material_admin/material_admin_generator.rb +16 -9
- data/lib/material_admin/version.rb +1 -1
- data/vendor/javascript/packs/admin.js +18 -12
- data/vendor/javascript/packs/admin_style.js +5 -3
- data/vendor/javascript/src/stylesheets/admin/shared/common.scss +39 -2
- data/vendor/javascript/src/stylesheets/admin/shared/override.scss +62 -0
- data/vendor/javascript/src/stylesheets/shared/override.scss +0 -4
- data/vendor/rails_material_admin/css/plugins/bootstrap.min.scss +6 -6
- data/vendor/rails_material_admin/css/style.scss +33462 -8272
- data/vendor/rails_material_admin/js/app.js +404 -0
- data/vendor/rails_material_admin/js/bootstrap.min.js +4 -4
- data/vendor/rails_material_admin/js/dashboard.js +15 -16
- data/vendor/rails_material_admin/js/perfect-scrollbar.jquery.min.js +1569 -0
- data/vendor/rails_material_admin/js/sidebarmenu.js +52 -337
- data/vendor/rails_material_admin/js/sweetalert2.min.js +2 -0
- data/vendor/rails_material_admin/material_admin.js +8 -7
- metadata +8 -6
- data/package.json +0 -23
- 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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e149cf1845f01081d80159c39143ed16a50d26bc5f91451f74258b2a107a415f
|
4
|
+
data.tar.gz: b40e938e32a9025500b2cd7934398ec428abdca35db677ccefa23292eef49e4c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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://
|
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
|
-
|
11
|
-
```
|
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.
|
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.
|
22
|
+
"webpack-dev-server": "^3.11.2"
|
33
23
|
}
|
34
24
|
}
|
35
25
|
```
|
data/app/helpers/admin_helper.rb
CHANGED
@@ -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
|
-
|
2
|
-
.
|
3
|
-
|
4
|
-
.
|
5
|
-
|
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
|
-
|
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
|
-
|
13
|
-
|
14
|
-
|
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
|
-
|
17
|
-
|
18
|
-
|
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
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
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 :
|
40
|
+
= yield :error_messages
|
41
|
+
|
31
42
|
.row
|
32
43
|
= yield
|
33
44
|
|
@@ -1,8 +1,13 @@
|
|
1
|
-
-
|
1
|
+
- targets = Array(target).select { |ele| ele.errors.any? }
|
2
|
+
|
3
|
+
- if targets.any?
|
2
4
|
#error_explanation
|
3
|
-
|
4
|
-
=
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
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-
|
4
|
-
|
5
|
-
|
6
|
-
|
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
|
-
|
15
|
-
span.
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
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.
|
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
|
-
|
6
|
-
|
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
|
-
|
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
|
+
|
@@ -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 =
|
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-
|
9
|
+
'datatables.net-bs5 datatables.net-responsive-bs5'\
|
10
10
|
' expose-loader file-loader url-loader resolve-url-loader'\
|
11
|
-
' rails
|
12
|
-
'
|
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,23 +1,29 @@
|
|
1
1
|
import 'core-js/stable'
|
2
2
|
import 'regenerator-runtime/runtime'
|
3
3
|
|
4
|
-
import { Application } from
|
5
|
-
import { definitionsFromContext } from
|
4
|
+
import { Application } from 'stimulus'
|
5
|
+
import { definitionsFromContext } from 'stimulus/webpack-helpers'
|
6
6
|
|
7
|
-
import Rails from 'rails
|
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-
|
12
|
-
import 'select2'
|
10
|
+
import 'datatables.net'
|
11
|
+
import 'datatables.net-responsive-bs5'
|
12
|
+
import 'select2'
|
13
13
|
|
14
|
-
import '../vendor/
|
14
|
+
import '../vendor/rails_material_admin/material_admin'
|
15
15
|
|
16
|
-
import '../
|
17
|
-
|
16
|
+
import bootstrap from '../vendor/rails_material_admin/js/bootstrap.min'
|
17
|
+
window.bootstrap = bootstrap
|
18
18
|
|
19
|
-
|
20
|
-
|
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 '
|
2
|
-
|
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
|
+
}
|