archangel 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.jshintrc +2 -0
  3. data/.travis.yml +2 -0
  4. data/Gemfile +0 -1
  5. data/README.md +0 -1
  6. data/app/assets/javascripts/archangel/input/datetimepicker.js +87 -0
  7. data/app/assets/javascripts/archangel/object/translate/datetimepicker.js.erb +41 -0
  8. data/app/models/archangel/entry.rb +27 -0
  9. data/app/models/archangel/page.rb +17 -0
  10. data/app/policies/archangel/application_policy.rb +7 -7
  11. data/app/policies/archangel/asset_policy.rb +1 -1
  12. data/app/policies/archangel/entry_policy.rb +1 -1
  13. data/app/policies/archangel/site_policy.rb +2 -2
  14. data/app/themes/default/assets/javascripts/default/backend.js +4 -4
  15. data/app/themes/default/assets/stylesheets/default/backend.css +3 -0
  16. data/app/themes/default/assets/stylesheets/default/backend/core.scss +1 -1
  17. data/app/themes/default/assets/stylesheets/default/common/_selectize.scss +126 -77
  18. data/app/views/archangel/backend/entries/index.html.erb +1 -1
  19. data/app/views/archangel/backend/pages/index.html.erb +1 -1
  20. data/archangel.gemspec +0 -1
  21. data/config/initializers/simple_form_bootstrap.rb +1 -2
  22. data/config/locales/en.yml +31 -17
  23. data/docs/Extension/Ideas.md +2 -0
  24. data/lib/archangel.rb +0 -1
  25. data/lib/archangel/liquid/tags/application_tag.rb +58 -0
  26. data/lib/archangel/liquid/tags/asset_tag.rb +3 -37
  27. data/lib/archangel/liquid/tags/collection_tag.rb +1 -12
  28. data/lib/archangel/liquid/tags/gist_tag.rb +3 -37
  29. data/lib/archangel/liquid/tags/vimeo_tag.rb +3 -24
  30. data/lib/archangel/liquid/tags/widget_tag.rb +1 -6
  31. data/lib/archangel/liquid/tags/youtube_tag.rb +3 -24
  32. data/lib/archangel/testing_support/factories/archangel_entries.rb +5 -1
  33. data/lib/archangel/testing_support/factories/archangel_sites.rb +2 -0
  34. data/lib/archangel/version.rb +1 -1
  35. data/spec/controllers/archangel/frontend/pages_controller_spec.rb +1 -0
  36. data/spec/features/auth/log_in_spec.rb +56 -26
  37. data/spec/features/frontend/drop_variables_spec.rb +18 -2
  38. data/spec/features/frontend/homepage_redirect_spec.rb +2 -2
  39. data/spec/helpers/archangel/flash_helper_spec.rb +7 -3
  40. data/spec/models/archangel/asset_spec.rb +7 -2
  41. data/spec/models/archangel/collection_spec.rb +0 -3
  42. data/spec/models/archangel/entry_spec.rb +40 -0
  43. data/spec/models/archangel/page_spec.rb +20 -3
  44. data/spec/models/archangel/user_spec.rb +0 -3
  45. data/spec/models/archangel/widget_spec.rb +0 -3
  46. data/vendor/assets/javascripts/daterangepicker/daterangepicker.js +1529 -0
  47. data/vendor/assets/stylesheets/daterangepicker/_daterangepicker.scss +407 -0
  48. metadata +6 -18
  49. data/app/assets/javascripts/archangel/input/datetime_picker.js +0 -46
  50. data/app/assets/javascripts/archangel/object/translate/datetime_picker.js.erb +0 -26
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ffb41416bed166dc7a839e962bd30c941dbc5a617a082bafd8b53c9dfce8dfb1
4
- data.tar.gz: 21ee7b769a7678816b1668800714dac78292c07aa60d6abc3a86f807c5302c56
3
+ metadata.gz: 2f93fdac4c77817cecce54f5e7858937109ca282476a44d9700ab80be221de8b
4
+ data.tar.gz: 47a9de320b4483ade84a1daad9b4323293c539ab311b59def727f4592334d8e1
5
5
  SHA512:
6
- metadata.gz: 6b0381d552c49d82b3ee4bc5fe1501e06e7aa809e7ae9f1209e6761d2252c262b507ab18ede3136310b241d8b7eedbd459f7fa9ac5630c6922ec3f18a6bd9e10
7
- data.tar.gz: 4156e91ffcf03d124aad5654b773d39d92a1e1733f817246eda137dcb964695fceedbbcee63a51c672168fa464cc4ae9da11fa3cf57eacaacd0bad39aafad92e
6
+ metadata.gz: 7edcc97f656802011fc4fdfc841334706393bd7415badc423e22dcc98c6de14390071e2b05326f25341867f9804bf7276a74456275f216f8506625e73c3c4345
7
+ data.tar.gz: 727fc92ce25f28c0f41fd935952d86f90cb4593ac60b02935e26a812fdab36ea28638d179c037f2b59f829ea0e8cb3bea2d0a77d3c8c8eac536f2e260f322a37
data/.jshintrc CHANGED
@@ -2,11 +2,13 @@
2
2
  "globals": {
3
3
  "$": true,
4
4
  "Archangel": true,
5
+ "Event": true,
5
6
  "Sortable": true,
6
7
  "XMLHttpRequest": true,
7
8
  "document": true,
8
9
  "jQuery": true,
9
10
  "localStorage": true,
11
+ "Object": true,
10
12
  "window": true
11
13
  },
12
14
  "boss": true,
@@ -1,5 +1,7 @@
1
1
  sudo: false
2
2
  language: ruby
3
+ cache:
4
+ bundler: true
3
5
  bundler_args: --without production --jobs=3 --retry=3
4
6
  before_install:
5
7
  - gem update --system
data/Gemfile CHANGED
@@ -33,5 +33,4 @@ group :test do
33
33
  gem "shoulda-callback-matchers", "~> 1.1"
34
34
  gem "shoulda-matchers", "~> 3.1"
35
35
  gem "simplecov", "~> 0.14"
36
- gem "timecop", "~> 0.9"
37
36
  end
data/README.md CHANGED
@@ -5,7 +5,6 @@
5
5
  [![Travis CI](https://travis-ci.org/archangel/archangel.svg?branch=master)](https://travis-ci.org/archangel/archangel)
6
6
  [![Coverage Status](https://coveralls.io/repos/github/archangel/archangel/badge.svg?branch=master)](https://coveralls.io/github/archangel/archangel?branch=master)
7
7
  [![Code Climate](https://codeclimate.com/github/archangel/archangel/badges/gpa.svg)](https://codeclimate.com/github/archangel/archangel)
8
- [![Dependency Status](https://gemnasium.com/badges/github.com/archangel/archangel.svg)](https://gemnasium.com/github.com/archangel/archangel)
9
8
  [![Inline docs](http://inch-ci.org/github/archangel/archangel.svg?branch=master)](http://inch-ci.org/github/archangel/archangel)
10
9
 
11
10
  ![Archangel](archangel.png "Archangel")
@@ -0,0 +1,87 @@
1
+ $(function() {
2
+ 'use strict';
3
+
4
+ var archangelDatetimepickerTranslations = function() {
5
+ return {
6
+ separator: Archangel.translate.datetimepicker.separator,
7
+ applyLabel: Archangel.translate.datetimepicker.apply,
8
+ cancelLabel: Archangel.translate.datetimepicker.cancel,
9
+ fromLabel: Archangel.translate.datetimepicker.from,
10
+ toLabel: Archangel.translate.datetimepicker.to,
11
+ customRangeLabel: Archangel.translate.datetimepicker.custom_range,
12
+ weekLabel: Archangel.translate.datetimepicker.week,
13
+ daysOfWeek: [
14
+ Archangel.translate.datetimepicker.days.sunday,
15
+ Archangel.translate.datetimepicker.days.monday,
16
+ Archangel.translate.datetimepicker.days.tuesday,
17
+ Archangel.translate.datetimepicker.days.wednesday,
18
+ Archangel.translate.datetimepicker.days.thursday,
19
+ Archangel.translate.datetimepicker.days.friday,
20
+ Archangel.translate.datetimepicker.days.saturday
21
+ ],
22
+ monthNames: [
23
+ Archangel.translate.datetimepicker.months.january,
24
+ Archangel.translate.datetimepicker.months.february,
25
+ Archangel.translate.datetimepicker.months.march,
26
+ Archangel.translate.datetimepicker.months.april,
27
+ Archangel.translate.datetimepicker.months.may,
28
+ Archangel.translate.datetimepicker.months.june,
29
+ Archangel.translate.datetimepicker.months.july,
30
+ Archangel.translate.datetimepicker.months.august,
31
+ Archangel.translate.datetimepicker.months.september,
32
+ Archangel.translate.datetimepicker.months.october,
33
+ Archangel.translate.datetimepicker.months.november,
34
+ Archangel.translate.datetimepicker.months.december
35
+ ]
36
+ };
37
+ };
38
+
39
+ function extend(obj, src) {
40
+ for (var key in src) {
41
+ if (src.hasOwnProperty(key)) {
42
+ obj[key] = src[key];
43
+ }
44
+ }
45
+ return obj;
46
+ }
47
+
48
+ // Time picker
49
+ $('input.time_picker').daterangepicker({
50
+ singleDatePicker: true,
51
+ timePicker: true,
52
+ timePickerIncrement: 5,
53
+ timePicker24Hour: false,
54
+ timePickerSeconds: false,
55
+ showDropdowns: true,
56
+ locale: extend(
57
+ archangelDatetimepickerTranslations(),
58
+ { format: Archangel.translate.datetimepicker.time_format }
59
+ )
60
+ });
61
+
62
+ // Date picker
63
+ $('input.date_picker').daterangepicker({
64
+ singleDatePicker: true,
65
+ timePicker: false,
66
+ showDropdowns: true,
67
+ locale: extend(
68
+ archangelDatetimepickerTranslations(),
69
+ { format: Archangel.translate.datetimepicker.date_format }
70
+ )
71
+ });
72
+
73
+ // Date time picker
74
+ $('input.date_time_picker').daterangepicker({
75
+ singleDatePicker: true,
76
+ timePicker: true,
77
+ timePickerIncrement: 5,
78
+ timePicker24Hour: false,
79
+ timePickerSeconds: false,
80
+ showDropdowns: true,
81
+ locale: extend(
82
+ archangelDatetimepickerTranslations(),
83
+ { format: Archangel.translate.datetimepicker.datetime_format }
84
+ )
85
+ });
86
+
87
+ });
@@ -0,0 +1,41 @@
1
+ (function(object) {
2
+ 'use strict';
3
+
4
+ object.translate.datetimepicker = {
5
+ datetime_format: '<%= Archangel.t(:datetime_format_js, scope: :datetimepicker) %>',
6
+ date_format: '<%= Archangel.t(:date_format_js, scope: :datetimepicker) %>',
7
+ time_format: '<%= Archangel.t(:time_format_js, scope: :datetimepicker) %>',
8
+ separator: '<%= Archangel.t(:separator, scope: :datetimepicker) %>',
9
+ apply: '<%= Archangel.t(:apply, scope: :datetimepicker) %>',
10
+ cancel: '<%= Archangel.t(:cancel, scope: :datetimepicker) %>',
11
+ from: '<%= Archangel.t(:from, scope: :datetimepicker) %>',
12
+ to: '<%= Archangel.t(:to, scope: :datetimepicker) %>',
13
+ custom_range: '<%= Archangel.t(:custom_range, scope: :datetimepicker) %>',
14
+ days: {
15
+ sunday: '<%= Archangel.t(:sunday, scope: "datetimepicker.days") %>',
16
+ monday: '<%= Archangel.t(:monday, scope: "datetimepicker.days") %>',
17
+ tuesday: '<%= Archangel.t(:tuesday, scope: "datetimepicker.days") %>',
18
+ wednesday: '<%= Archangel.t(:wednesday, scope: "datetimepicker.days") %>',
19
+ thursday: '<%= Archangel.t(:thursday, scope: "datetimepicker.days") %>',
20
+ friday: '<%= Archangel.t(:friday, scope: "datetimepicker.days") %>',
21
+ saturday: '<%= Archangel.t(:saturday, scope: "datetimepicker.days") %>'
22
+ },
23
+ months: {
24
+ january: '<%= Archangel.t(:january, scope: "datetimepicker.months") %>',
25
+ february: '<%= Archangel.t(:february, scope: "datetimepicker.months") %>',
26
+ march: '<%= Archangel.t(:march, scope: "datetimepicker.months") %>',
27
+ april: '<%= Archangel.t(:april, scope: "datetimepicker.months") %>',
28
+ may: '<%= Archangel.t(:may, scope: "datetimepicker.months") %>',
29
+ june: '<%= Archangel.t(:june, scope: "datetimepicker.months") %>',
30
+ july: '<%= Archangel.t(:july, scope: "datetimepicker.months") %>',
31
+ august: '<%= Archangel.t(:august, scope: "datetimepicker.months") %>',
32
+ september: '<%= Archangel.t(:september, scope: "datetimepicker.months") %>',
33
+ october: '<%= Archangel.t(:october, scope: "datetimepicker.months") %>',
34
+ november: '<%= Archangel.t(:november, scope: "datetimepicker.months") %>',
35
+ december: '<%= Archangel.t(:december, scope: "datetimepicker.months") %>'
36
+ }
37
+ };
38
+
39
+ return object;
40
+
41
+ }(Archangel || {}));
@@ -18,5 +18,32 @@ module Archangel
18
18
  belongs_to :collection
19
19
 
20
20
  default_scope { order(position: :asc) }
21
+
22
+ ##
23
+ # Check if Entry is available. Available in the past, present and future.
24
+ # Future availability date is also considered available.
25
+ #
26
+ # @return [Boolean] if available
27
+ #
28
+ def available?
29
+ available_at.present?
30
+ end
31
+
32
+ ##
33
+ # Return string of availability status.
34
+ #
35
+ # @return [String] available status
36
+ #
37
+ def available_status
38
+ if available?
39
+ if available_at > Time.now
40
+ "future-available"
41
+ else
42
+ "available"
43
+ end
44
+ else
45
+ "unavailable"
46
+ end
47
+ end
21
48
  end
22
49
  end
@@ -52,6 +52,23 @@ module Archangel
52
52
  published_at.present?
53
53
  end
54
54
 
55
+ ##
56
+ # Return string of publication status.
57
+ #
58
+ # @return [String] publication status
59
+ #
60
+ def published_status
61
+ if published?
62
+ if published_at > Time.now
63
+ "future-published"
64
+ else
65
+ "published"
66
+ end
67
+ else
68
+ "unpublished"
69
+ end
70
+ end
71
+
55
72
  ##
56
73
  # Liquid object for Page
57
74
  #
@@ -29,7 +29,7 @@ module Archangel
29
29
  ##
30
30
  # Check if `#index` action is authorized for current user
31
31
  #
32
- # @return [Boolean] if action is authorized
32
+ # @return [Boolean] true for all roles
33
33
  #
34
34
  def index?
35
35
  true
@@ -38,7 +38,7 @@ module Archangel
38
38
  ##
39
39
  # Check if `#show` action is authorized for current user
40
40
  #
41
- # @return [Boolean] if action is authorized
41
+ # @return [Boolean] true if record exists
42
42
  #
43
43
  def show?
44
44
  scope.where(id: record.id).exists?
@@ -47,7 +47,7 @@ module Archangel
47
47
  ##
48
48
  # Check if `#create` action is authorized for current user
49
49
  #
50
- # @return [Boolean] if action is authorized
50
+ # @return [Boolean] true for all roles
51
51
  #
52
52
  def create?
53
53
  true
@@ -56,7 +56,7 @@ module Archangel
56
56
  ##
57
57
  # Check if `#new` action is authorized for current user
58
58
  #
59
- # @return [Boolean] if action is authorized
59
+ # @return [Boolean] true if also able to create record
60
60
  #
61
61
  def new?
62
62
  create?
@@ -65,7 +65,7 @@ module Archangel
65
65
  ##
66
66
  # Check if `#update` action is authorized for current user
67
67
  #
68
- # @return [Boolean] if action is authorized
68
+ # @return [Boolean] true for all roles
69
69
  #
70
70
  def update?
71
71
  true
@@ -74,7 +74,7 @@ module Archangel
74
74
  ##
75
75
  # Check if `#edit` action is authorized for current user
76
76
  #
77
- # @return [Boolean] if action is authorized
77
+ # @return [Boolean] true if also able to update record
78
78
  #
79
79
  def edit?
80
80
  update?
@@ -83,7 +83,7 @@ module Archangel
83
83
  ##
84
84
  # Check if `#destroy` action is authorized for current user
85
85
  #
86
- # @return [Boolean] if action is authorized
86
+ # @return [Boolean] true for all roles
87
87
  #
88
88
  def destroy?
89
89
  true
@@ -8,7 +8,7 @@ module Archangel
8
8
  ##
9
9
  # Check if `#wysiwyg` action is authorized for current user.
10
10
  #
11
- # @return [Boolean] if action is authorized
11
+ # @return [Boolean] true for all roles
12
12
  #
13
13
  def wysiwyg?
14
14
  true
@@ -8,7 +8,7 @@ module Archangel
8
8
  ##
9
9
  # Check if `#sort` action is authorized for current user
10
10
  #
11
- # @return [Boolean] if action is authorized
11
+ # @return [Boolean] true for all roles
12
12
  #
13
13
  def sort?
14
14
  true
@@ -9,7 +9,7 @@ module Archangel
9
9
  # Check if `#update` action is authorized for current user. Based on if
10
10
  # current user has the "admin" role
11
11
  #
12
- # @return [Boolean] if action is authorized
12
+ # @return [Boolean] true when User is an "admin" role
13
13
  #
14
14
  def update?
15
15
  admin_user?
@@ -18,7 +18,7 @@ module Archangel
18
18
  ##
19
19
  # Check if `#sample` action is authorized for current user.
20
20
  #
21
- # @return [Boolean] if action is authorized
21
+ # @return [Boolean] true for all roles
22
22
  #
23
23
  def sample?
24
24
  true
@@ -6,12 +6,12 @@
6
6
  //= require rails-ujs
7
7
  //= require popper
8
8
  //= require bootstrap
9
- // require moment
10
- // require bootstrap-datetimepicker
9
+ //= require moment
11
10
  //= require selectize
12
11
  //= require cocoon
13
12
  //
14
13
  // Third-party assets (from vendor)
14
+ //= require daterangepicker/daterangepicker
15
15
  //= require sortable/sortable
16
16
  //= require trumbowyg/trumbowyg
17
17
  //= require trumbowyg/plugins/allowtagsfrompaste/trumbowyg.allowtagsfrompaste
@@ -27,10 +27,10 @@
27
27
  //= require "archangel/object/routes"
28
28
  //= require "archangel/object/routes/backend"
29
29
  //= require "archangel/object/translate"
30
- // require "archangel/object/translate/datetime_picker"
30
+ //= require "archangel/object/translate/datetimepicker"
31
31
  //= require "archangel/object/translate/sortable"
32
32
  //= require "archangel/object/url"
33
- // require "archangel/input/datetime_picker"
33
+ //= require "archangel/input/datetimepicker"
34
34
  //= require "archangel/input/meta_keywords"
35
35
  //= require "archangel/input/wysiwyg"
36
36
  //= require "archangel/input/parent/collection"
@@ -5,6 +5,9 @@
5
5
  * Third-party assets
6
6
  * none
7
7
  *
8
+ * Archangel helper scripts
9
+ * none
10
+ *
8
11
  * Third-party Archangel assets (from the vendor directory)
9
12
  *= require archangel/backend
10
13
  *
@@ -14,9 +14,9 @@
14
14
  // 3rd party (from gems)
15
15
  //
16
16
  @import 'font-awesome';
17
- // @import 'bootstrap-datetimepicker';
18
17
  //
19
18
  // 3rd party (from vendor)
20
19
  //
20
+ @import 'daterangepicker/daterangepicker';
21
21
  @import 'trumbowyg/trumbowyg';
22
22
  @import 'trumbowyg/plugins/colors/trumbowyg.colors';
@@ -1,137 +1,159 @@
1
1
  .selectize-control.plugin-drag_drop.multi > .selectize-input > div.ui-sortable-placeholder {
2
- visibility: visible !important;
3
2
  background: #f2f2f2 !important;
4
- background: rgba(0, 0, 0, 0.06) !important;
3
+ background: rgba(0, 0, 0, .06) !important;
5
4
  border: 0 none !important;
5
+ visibility: visible !important;
6
6
  }
7
+
7
8
  .selectize-control.plugin-drag_drop .ui-sortable-placeholder::after {
8
9
  content: '!';
9
10
  visibility: hidden;
10
11
  }
12
+
11
13
  .selectize-control.plugin-drag_drop .ui-sortable-helper {
12
14
  }
15
+
13
16
  .selectize-dropdown-header {
14
- position: relative;
15
- padding: 5px 8px;
16
- border-bottom: 1px solid #d0d0d0;
17
17
  background: #f8f8f8;
18
+ border-bottom: 1px solid #d0d0d0;
18
19
  border-radius: 3px 3px 0 0;
20
+ padding: 5px 8px;
21
+ position: relative;
19
22
  }
23
+
20
24
  .selectize-dropdown-header-close {
25
+ color: #303030;
26
+ font-size: 20px !important;
27
+ line-height: 20px;
28
+ margin-top: -12px;
29
+ opacity: .4;
21
30
  position: absolute;
22
31
  right: 8px;
23
32
  top: 50%;
24
- color: #303030;
25
- opacity: 0.4;
26
- margin-top: -12px;
27
- line-height: 20px;
28
- font-size: 20px !important;
29
33
  }
34
+
30
35
  .selectize-dropdown-header-close:hover {
31
36
  color: #000000;
32
37
  }
38
+
33
39
  .selectize-dropdown.plugin-optgroup_columns .optgroup {
34
40
  border-right: 1px solid #f2f2f2;
35
41
  border-top: 0 none;
36
- float: left;
37
- -webkit-box-sizing: border-box;
38
42
  -moz-box-sizing: border-box;
43
+ -webkit-box-sizing: border-box;
39
44
  box-sizing: border-box;
45
+ float: left;
40
46
  }
47
+
41
48
  .selectize-dropdown.plugin-optgroup_columns .optgroup:last-child {
42
49
  border-right: 0 none;
43
50
  }
51
+
44
52
  .selectize-dropdown.plugin-optgroup_columns .optgroup:before {
45
53
  display: none;
46
54
  }
55
+
47
56
  .selectize-dropdown.plugin-optgroup_columns .optgroup-header {
48
57
  border-top: 0 none;
49
58
  }
59
+
50
60
  .selectize-control.plugin-remove_button [data-value] {
51
- position: relative;
52
61
  padding-right: 24px !important;
62
+ position: relative;
53
63
  }
64
+
54
65
  .selectize-control.plugin-remove_button [data-value] .remove {
55
- z-index: 1;
56
- /* fixes ie bug (see #392) */
57
- position: absolute;
58
- top: 0;
59
- right: 0;
60
- bottom: 0;
61
- width: 17px;
62
- text-align: center;
63
- font-weight: bold;
64
- font-size: 12px;
65
- color: inherit;
66
- text-decoration: none;
67
- vertical-align: middle;
68
- display: inline-block;
69
- padding: 2px 0 0 0;
70
66
  border-left: 1px solid #d0d0d0;
71
- -webkit-border-radius: 0 2px 2px 0;
72
67
  -moz-border-radius: 0 2px 2px 0;
68
+ -webkit-border-radius: 0 2px 2px 0;
73
69
  border-radius: 0 2px 2px 0;
74
- -webkit-box-sizing: border-box;
70
+ bottom: 0;
75
71
  -moz-box-sizing: border-box;
72
+ -webkit-box-sizing: border-box;
76
73
  box-sizing: border-box;
74
+ color: inherit;
75
+ display: inline-block;
76
+ font-size: 12px;
77
+ font-weight: bold;
78
+ padding: 2px 0 0;
79
+ position: absolute;
80
+ right: 0;
81
+ text-align: center;
82
+ text-decoration: none;
83
+ top: 0;
84
+ vertical-align: middle;
85
+ width: 17px;
86
+ z-index: 1;
77
87
  }
88
+
78
89
  .selectize-control.plugin-remove_button [data-value] .remove:hover {
79
90
  background: rgba(0, 0, 0, 0.05);
80
91
  }
92
+
81
93
  .selectize-control.plugin-remove_button [data-value].active .remove {
82
94
  border-left-color: #cacaca;
83
95
  }
96
+
84
97
  .selectize-control.plugin-remove_button .disabled [data-value] .remove:hover {
85
98
  background: none;
86
99
  }
100
+
87
101
  .selectize-control.plugin-remove_button .disabled [data-value] .remove {
88
102
  border-left-color: #ffffff;
89
103
  }
104
+
90
105
  .selectize-control.plugin-remove_button .remove-single {
91
106
  position: absolute;
92
107
  right: 28px;
93
108
  top: 6px;
94
109
  font-size: 23px;
95
110
  }
111
+
96
112
  .selectize-control {
97
113
  position: relative;
98
114
  }
115
+
99
116
  .selectize-dropdown,
100
117
  .selectize-input,
101
118
  .selectize-input input {
102
119
  color: #303030;
103
120
  font-family: inherit;
104
121
  font-size: 13px;
105
- line-height: 18px;
106
122
  -webkit-font-smoothing: inherit;
123
+ line-height: 18px;
107
124
  }
125
+
108
126
  .selectize-input,
109
127
  .selectize-control.single .selectize-input.input-active {
110
128
  background: #ffffff;
111
129
  cursor: text;
112
130
  display: inline-block;
113
131
  }
132
+
114
133
  .selectize-input {
115
134
  border: 0;
116
- padding: 8px 8px;
135
+ -moz-border-radius: 3px;
136
+ -webkit-border-radius: 3px;
137
+ border-radius: 3px;
138
+ -moz-box-sizing: border-box;
139
+ -webkit-box-sizing: border-box;
140
+ box-sizing: border-box;
117
141
  display: inline-block;
118
- width: 100%;
119
142
  overflow: hidden;
143
+ padding: 8px;
120
144
  position: relative;
145
+ width: 100%;
121
146
  z-index: 1;
122
- -webkit-box-sizing: border-box;
123
- -moz-box-sizing: border-box;
124
- box-sizing: border-box;
125
- -webkit-border-radius: 3px;
126
- -moz-border-radius: 3px;
127
- border-radius: 3px;
128
147
  }
148
+
129
149
  .selectize-control.multi .selectize-input.has-items {
130
150
  padding: 6px 8px 3px;
131
151
  }
152
+
132
153
  .selectize-input.full {
133
154
  background-color: #ffffff;
134
155
  }
156
+
135
157
  .selectize-input.disabled,
136
158
  .selectize-input.disabled * {
137
159
  cursor: default !important;
@@ -141,159 +163,186 @@
141
163
  }
142
164
 
143
165
  .selectize-input.dropdown-active {
144
- -webkit-border-radius: 3px 3px 0 0;
145
166
  -moz-border-radius: 3px 3px 0 0;
167
+ -webkit-border-radius: 3px 3px 0 0;
146
168
  border-radius: 3px 3px 0 0;
147
169
  }
170
+
148
171
  .selectize-input > * {
149
- vertical-align: baseline;
150
172
  display: -moz-inline-stack;
151
173
  display: inline-block;
152
- zoom: 1;
153
174
  *display: inline;
175
+ vertical-align: baseline;
176
+ zoom: 1;
154
177
  }
178
+
155
179
  .selectize-control.multi .selectize-input > div {
180
+ background: #f2f2f2;
181
+ border: 0 solid #d0d0d0;
182
+ color: #303030;
156
183
  cursor: pointer;
157
184
  margin: 0 3px 0 0;
158
185
  padding: 2px 6px;
159
- background: #f2f2f2;
160
- color: #303030;
161
- border: 0 solid #d0d0d0;
162
186
  }
187
+
163
188
  .selectize-control.multi .selectize-input > div.active {
164
189
  background: #e8e8e8;
165
- color: #303030;
166
190
  border: 0 solid #cacaca;
191
+ color: #303030;
167
192
  }
193
+
168
194
  .selectize-control.multi .selectize-input.disabled > div,
169
195
  .selectize-control.multi .selectize-input.disabled > div.active {
170
- color: #7d7d7d;
171
196
  background: #ffffff;
172
197
  border: 0 solid #ffffff;
198
+ color: #7d7d7d;
173
199
  }
200
+
174
201
  .selectize-input > input {
202
+ background: none !important;
203
+ border: 0 none !important;
175
204
  display: inline-block !important;
176
- padding: 0 !important;
177
- min-height: 0 !important;
205
+ line-height: inherit !important;
206
+ margin: 0 2px 0 0 !important;
178
207
  max-height: none !important;
179
208
  max-width: 100% !important;
180
- margin: 0 2px 0 0 !important;
209
+ min-height: 0 !important;
210
+ padding: 0 !important;
181
211
  text-indent: 0 !important;
182
- border: 0 none !important;
183
- background: none !important;
184
- line-height: inherit !important;
185
212
  -webkit-user-select: auto !important;
186
213
  }
214
+
187
215
  .selectize-input > input::-ms-clear {
188
216
  display: none;
189
217
  }
218
+
190
219
  .selectize-input > input:focus {
191
220
  outline: none !important;
192
221
  }
222
+
193
223
  .selectize-input::after {
224
+ clear: left;
194
225
  content: ' ';
195
226
  display: block;
196
- clear: left;
197
227
  }
228
+
198
229
  .selectize-input.dropdown-active::before {
230
+ background: #f0f0f0;
231
+ bottom: 0;
199
232
  content: ' ';
200
233
  display: block;
201
- position: absolute;
202
- background: #f0f0f0;
203
234
  height: 1px;
204
- bottom: 0;
205
235
  left: 0;
236
+ position: absolute;
206
237
  right: 0;
207
238
  }
239
+
208
240
  .selectize-dropdown {
209
- position: absolute;
210
- z-index: 10;
211
- border: 1px solid #d0d0d0;
212
241
  background: #ffffff;
213
- margin: -1px 0 0 0;
242
+ border: 1px solid #d0d0d0;
243
+ -moz-border-radius: 0 0 3px 3px;
244
+ -webkit-border-radius: 0 0 3px 3px;
245
+ border-radius: 0 0 3px 3px;
214
246
  border-top: 0 none;
215
- -webkit-box-sizing: border-box;
216
247
  -moz-box-sizing: border-box;
248
+ -webkit-box-sizing: border-box;
217
249
  box-sizing: border-box;
218
- -webkit-border-radius: 0 0 3px 3px;
219
- -moz-border-radius: 0 0 3px 3px;
220
- border-radius: 0 0 3px 3px;
250
+ margin: -1px 0 0;
251
+ position: absolute;
252
+ z-index: 10;
221
253
  }
254
+
222
255
  .selectize-dropdown [data-selectable] {
223
256
  cursor: pointer;
224
257
  overflow: hidden;
225
258
  }
259
+
226
260
  .selectize-dropdown [data-selectable] .highlight {
227
261
  background: rgba(125, 168, 208, 0.2);
228
- -webkit-border-radius: 1px;
229
262
  -moz-border-radius: 1px;
263
+ -webkit-border-radius: 1px;
230
264
  border-radius: 1px;
231
265
  }
266
+
232
267
  .selectize-dropdown [data-selectable],
233
268
  .selectize-dropdown .optgroup-header {
234
269
  padding: 5px 8px;
235
270
  }
271
+
236
272
  .selectize-dropdown .optgroup:first-child .optgroup-header {
237
273
  border-top: 0 none;
238
274
  }
275
+
239
276
  .selectize-dropdown .optgroup-header {
240
- color: #303030;
241
277
  background: #ffffff;
278
+ color: #303030;
242
279
  cursor: default;
243
280
  }
281
+
244
282
  .selectize-dropdown .active {
245
283
  background-color: #f5fafd;
246
284
  color: #495c68;
247
285
  }
286
+
248
287
  .selectize-dropdown .active.create {
249
288
  color: #495c68;
250
289
  }
290
+
251
291
  .selectize-dropdown .create {
252
292
  color: rgba(48, 48, 48, 0.5);
253
293
  }
294
+
254
295
  .selectize-dropdown-content {
255
- overflow-y: auto;
256
296
  overflow-x: hidden;
297
+ overflow-y: auto;
257
298
  max-height: 200px;
258
299
  -webkit-overflow-scrolling: touch;
259
300
  }
301
+
260
302
  .selectize-control.single .selectize-input,
261
303
  .selectize-control.single .selectize-input input {
262
304
  cursor: pointer;
263
305
  }
306
+
264
307
  .selectize-control.single .selectize-input.input-active,
265
308
  .selectize-control.single .selectize-input.input-active input {
266
309
  cursor: text;
267
310
  }
311
+
268
312
  .selectize-control.single .selectize-input:after {
313
+ border-color: #808080 transparent transparent transparent;
314
+ border-style: solid;
315
+ border-width: 5px 5px 0;
269
316
  content: ' ';
270
317
  display: block;
318
+ height: 0;
319
+ margin-top: -3px;
271
320
  position: absolute;
272
- top: 50%;
273
321
  right: 15px;
274
- margin-top: -3px;
322
+ top: 50%;
275
323
  width: 0;
276
- height: 0;
277
- border-style: solid;
278
- border-width: 5px 5px 0 5px;
279
- border-color: #808080 transparent transparent transparent;
280
324
  }
325
+
281
326
  .selectize-control.single .selectize-input.dropdown-active:after {
282
- margin-top: -4px;
283
- border-width: 0 5px 5px 5px;
284
327
  border-color: transparent transparent #808080 transparent;
328
+ border-width: 0 5px 5px 5px;
329
+ margin-top: -4px;
285
330
  }
331
+
286
332
  .selectize-control.rtl.single .selectize-input:after {
287
333
  left: 15px;
288
334
  right: auto;
289
335
  }
336
+
290
337
  .selectize-control.rtl .selectize-input > input {
291
338
  margin: 0 4px 0 -2px !important;
292
339
  }
340
+
293
341
  .selectize-control .selectize-input.disabled {
294
- opacity: 0.5;
295
342
  background-color: #fafafa;
343
+ opacity: .5;
296
344
  }
345
+
297
346
  .selectize-control.form-control {
298
347
  padding: inherit;
299
348
  }