archangel 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
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
  }