cm-admin 0.9.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +82 -0
  3. data/.github/ISSUE_TEMPLATE/config.yml +5 -0
  4. data/.github/ISSUE_TEMPLATE/feature_request.md +21 -0
  5. data/Gemfile.lock +96 -9
  6. data/app/assets/config/cm_admin_manifest.js +1 -0
  7. data/app/assets/javascripts/cm_admin/application.js +5 -0
  8. data/app/{javascript/packs → assets/javascripts}/cm_admin/exports.js +0 -0
  9. data/app/{javascript/packs → assets/javascripts}/cm_admin/filters.js +20 -31
  10. data/app/{javascript/packs → assets/javascripts}/cm_admin/form_validation.js +0 -0
  11. data/app/{javascript/packs → assets/javascripts}/cm_admin/quick_search.js +16 -3
  12. data/app/assets/javascripts/cm_admin/scaffolds.js +44 -0
  13. data/app/assets/stylesheets/cm_admin/base/form.scss +115 -40
  14. data/app/assets/stylesheets/cm_admin/base/scaffold.scss +2 -0
  15. data/app/assets/stylesheets/cm_admin/components/_input.scss +12 -0
  16. data/app/controllers/cm_admin/resource_controller.rb +10 -7
  17. data/app/helpers/cm_admin/application_helper.rb +0 -3
  18. data/app/javascript/packs/cm_admin/application.js +4 -4
  19. data/app/javascript/packs/cm_admin/scaffolds.js +81 -0
  20. data/app/views/cm_admin/main/_nested_fields.html.slim +26 -9
  21. data/app/views/cm_admin/main/_nested_table_form.html.slim +9 -10
  22. data/app/views/cm_admin/main/_tabs.html.slim +1 -1
  23. data/app/views/layouts/cm_admin.html.slim +9 -4
  24. data/app/views/layouts/static.html.slim +3 -2
  25. data/bin/importmap +15 -0
  26. data/bin/webpack +8 -8
  27. data/bin/webpack-dev-server +9 -9
  28. data/cm_admin.gemspec +3 -0
  29. data/config/importmap.rb +12 -0
  30. data/config/webpack/development.js +1 -1
  31. data/config/webpack/environment.js +1 -1
  32. data/config/webpack/production.js +1 -1
  33. data/config/webpacker.yml +2 -2
  34. data/lib/cm_admin/configuration.rb +5 -2
  35. data/lib/cm_admin/engine.rb +36 -15
  36. data/lib/cm_admin/models/filter.rb +1 -1
  37. data/lib/cm_admin/models/form_field.rb +8 -2
  38. data/lib/cm_admin/version.rb +1 -1
  39. data/lib/cm_admin/version_manager.rb +21 -0
  40. data/lib/cm_admin/view_helpers/form_field_helper.rb +183 -35
  41. data/lib/cm_admin/view_helpers/page_info_helper.rb +4 -0
  42. data/lib/cm_admin.rb +7 -2
  43. data/lib/generators/cm_admin/templates/actiontext.scss +0 -1
  44. data/lib/tasks/webpack_install.rake +15 -13
  45. data/package-lock.json +42 -55
  46. data/tmp/cache/webpacker/last-compilation-digest-development +1 -1
  47. data/yarn.lock +6708 -6916
  48. metadata +43 -6
@@ -1,50 +1,198 @@
1
1
  module CmAdmin
2
2
  module ViewHelpers
3
3
  module FormFieldHelper
4
- def input_field_for_column(f, field)
5
- return unless field.display_if.call(f.object)
6
- value = field.helper_method ? send(field.helper_method, f.object, field.field_name) : f.object.send(field.field_name)
7
- is_required = f.object._validators[field.field_name].map(&:kind).include?(:presence)
4
+ def input_field_for_column(form_obj, cm_field)
5
+ return unless cm_field.display_if.call(form_obj.object)
6
+
7
+ value = cm_field.helper_method ? send(cm_field.helper_method, form_obj.object, cm_field.field_name) : form_obj.object.send(cm_field.field_name)
8
+ is_required = form_obj.object._validators[cm_field.field_name].map(&:kind).include?(:presence)
8
9
  required_class = is_required ? 'required' : ''
9
- case field.input_type
10
- when :integer
11
- return f.text_field field.field_name, class: "normal-input #{required_class}", disabled: field.disabled, value: value, placeholder: "Enter #{field.field_name.to_s.humanize.downcase}", data: { behaviour: 'integer-only' }
12
- when :decimal
13
- return f.number_field field.field_name, class: "normal-input #{required_class}", disabled: field.disabled, value: value, placeholder: "Enter #{field.field_name.to_s.downcase.gsub('_', ' ')}", data: { behaviour: 'decimal-only' }
14
- when :string
15
- return f.text_field field.field_name, class: "normal-input #{required_class}", disabled: field.disabled, value: value, placeholder: "Enter #{field.field_name.to_s.downcase.gsub('_', ' ')}"
16
- when :single_select
17
- return f.select field.field_name, options_for_select(select_collection_value(f.object, field), f.object.send(field.field_name)), {include_blank: field.placeholder.to_s}, class: "normal-input #{required_class} select-2", disabled: field.disabled
18
- when :multi_select
19
- return f.select field.field_name, options_for_select(select_collection_value(f.object, field), f.object.send(field.field_name)), {include_blank: "Select #{field.field_name.to_s.downcase.gsub('_', ' ')}"}, class: "normal-input #{required_class} select-2", disabled: field.disabled, multiple: true
20
- when :date
21
- return f.text_field field.field_name, class: "normal-input #{required_class}", disabled: field.disabled, value: value&.strftime('%d-%m-%Y'), placeholder: "Enter #{field.field_name.to_s.downcase.gsub('_', ' ')}", data: { behaviour: 'date-only' }
22
- when :date_time
23
- return f.text_field field.field_name, class: "normal-input #{required_class}", disabled: field.disabled, value: value, placeholder: "Enter #{field.field_name.to_s.downcase.gsub('_', ' ')}", data: { behaviour: 'date-time' }
24
- when :text
25
- return f.text_area field.field_name, class: "normal-input #{required_class}", placeholder: "Enter #{field.field_name.to_s.downcase.gsub('_', ' ')}"
26
- when :rich_text
27
- return f.rich_text_area field.field_name, class: "normal-input #{required_class}", placeholder: "Enter #{field.field_name.to_s.downcase.gsub('_', ' ')}"
28
- when :single_file_upload
29
- return f.file_field field.field_name, class: "normal-input #{required_class}"
30
- when :multi_file_upload
31
- return f.file_field field.field_name, multiple: true, class: "normal-input #{required_class}"
32
- when :hidden
33
- return f.hidden_field field.field_name, value: value, name: field.html_attr[:name] || "#{f.object_name}[#{field.field_name}]"
34
- end
10
+ target_action = @model.available_actions.select{|x| x.name == cm_field.target[:action_name].to_s}.first if cm_field.target.present?
11
+ send("cm_#{cm_field.input_type}_field", form_obj, cm_field, value, required_class, target_action)
12
+ end
13
+
14
+ def cm_integer_field(form_obj, cm_field, value, required_class, _target_action)
15
+ form_obj.text_field cm_field.field_name,
16
+ class: "normal-input #{required_class}",
17
+ disabled: cm_field.disabled,
18
+ value: value,
19
+ placeholder: "Enter #{cm_field.field_name.to_s.humanize.downcase}",
20
+ data: { behaviour: 'integer-only' }
21
+ end
22
+
23
+ def cm_decimal_field(form_obj, cm_field, value, required_class, _target_action)
24
+ form_obj.number_field cm_field.field_name,
25
+ class: "normal-input #{required_class}",
26
+ disabled: cm_field.disabled,
27
+ value: value,
28
+ placeholder: "Enter #{cm_field.field_name.to_s.downcase.gsub('_', ' ')}",
29
+ data: { behaviour: 'decimal-only' }
30
+ end
31
+
32
+ def cm_string_field(form_obj, cm_field, value, required_class, _target_action)
33
+ form_obj.text_field cm_field.field_name,
34
+ class: "normal-input #{required_class}",
35
+ disabled: cm_field.disabled,
36
+ value: value,
37
+ placeholder: "Enter #{cm_field.field_name.to_s.downcase.gsub('_', ' ')}"
38
+ end
39
+
40
+ def cm_single_select_field(form_obj, cm_field, value, required_class, target_action)
41
+ form_obj.select cm_field.field_name, options_for_select(select_collection_value(form_obj.object, cm_field), form_obj.object.send(cm_field.field_name)),
42
+ { include_blank: cm_field.placeholder.to_s },
43
+ class: "normal-input #{required_class} select-2",
44
+ disabled: cm_field.disabled,
45
+ data: {
46
+ field_name: cm_field.field_name,
47
+ field_type: 'linked-field',
48
+ target_action: target_action&.name,
49
+ target_url: target_action&.name ? cm_admin.send("#{@model.name.underscore}_#{target_action&.name}_path") : ''
50
+ }
51
+ end
52
+
53
+ def cm_multi_select_field(form_obj, cm_field, value, required_class, target_action)
54
+ form_obj.select cm_field.field_name,
55
+ options_for_select(select_collection_value(form_obj.object, cm_field), form_obj.object.send(cm_field.field_name)),
56
+ { include_blank: "Select #{cm_field.field_name.to_s.downcase.gsub('_', ' ')}" },
57
+ class: "normal-input #{required_class} select-2",
58
+ disabled: cm_field.disabled, multiple: true
59
+ end
60
+
61
+ def cm_date_field(form_obj, cm_field, value, required_class, _target_action)
62
+ form_obj.text_field cm_field.field_name,
63
+ class: "normal-input #{required_class}",
64
+ disabled: cm_field.disabled,
65
+ value: value&.strftime('%d-%m-%Y'),
66
+ placeholder: "Enter #{cm_field.field_name.to_s.downcase.gsub('_', ' ')}",
67
+ data: { behaviour: 'date-only' }
68
+ end
69
+
70
+ def cm_date_time_field(form_obj, cm_field, value, required_class, _target_action)
71
+ form_obj.text_field cm_field.field_name,
72
+ class: "normal-input #{required_class}",
73
+ disabled: cm_field.disabled,
74
+ value: value,
75
+ placeholder: "Enter #{cm_field.field_name.to_s.downcase.gsub('_', ' ')}",
76
+ data: { behaviour: 'date-time' }
77
+ end
78
+
79
+ def cm_text_field(form_obj, cm_field, value, required_class, _target_action)
80
+ form_obj.text_area cm_field.field_name,
81
+ class: "normal-input #{required_class}",
82
+ placeholder: "Enter #{cm_field.field_name.to_s.downcase.gsub('_', ' ')}"
83
+ end
84
+
85
+ def cm_rich_text_field(form_obj, cm_field, value, required_class, _target_action)
86
+ form_obj.rich_text_area cm_field.field_name,
87
+ class: "normal-input #{required_class}",
88
+ placeholder: "Enter #{cm_field.field_name.to_s.downcase.gsub('_', ' ')}"
89
+ end
90
+
91
+ def cm_single_file_upload_field(form_obj, cm_field, value, required_class, _target_action)
92
+ form_obj.file_field cm_field.field_name, class: "normal-input #{required_class}"
93
+ end
94
+
95
+ def cm_single_multi_upload_field(form_obj, cm_field, value, required_class, _target_action)
96
+ form_obj.file_field cm_field.field_name, multiple: true, class: "normal-input #{required_class}"
97
+ end
98
+
99
+ def cm_check_box_field(form_obj, cm_field, value, required_class, target_action)
100
+ format_check_box_options(value, form_obj, cm_field, required_class, target_action)
101
+ end
102
+
103
+ def cm_radio_button_field(form_obj, cm_field, value, required_class, _target_action)
104
+ format_radio_button_options(value, form_obj)
105
+ end
106
+
107
+ def cm_hidden_field(form_obj, cm_field, value, required_class, _target_action)
108
+ form_obj.hidden_field cm_field.field_name,
109
+ value: value,
110
+ name: cm_field.html_attr[:name] || "#{form_obj.object_name}[#{cm_field.field_name}]"
35
111
  end
36
112
 
37
113
  # Refactor: Collection argument can be removed.
38
114
  # helper_method argument will accept a method where value can be passed.
39
- def select_collection_value(object, field)
40
- if field.helper_method
41
- collection = send(field.helper_method, object, field.field_name)
42
- elsif field.collection
43
- collection = field.collection
115
+ def select_collection_value(object, cm_field)
116
+ if cm_field.helper_method
117
+ collection = send(cm_field.helper_method, object, cm_field.field_name)
118
+ elsif cm_field.collection
119
+ collection = cm_field.collection
44
120
  else
45
121
  collection = []
46
122
  end
47
123
  end
124
+
125
+ def format_check_box_options(value, form_obj, cm_field, required_class, target_action)
126
+ if value.class == Array
127
+ format_check_box_array(value, form_obj, cm_field, required_class, target_action)
128
+ else
129
+ form_obj.check_box cm_field.field_name,
130
+ {
131
+ class: "normal-input cm-checkbox #{required_class}",
132
+ disabled: cm_field.disabled,
133
+ data: {
134
+ field_name: cm_field.field_name,
135
+ field_type: 'linked-field',
136
+ target_action: target_action&.name,
137
+ target_url: target_action&.name ? cm_admin.send("#{@model.name.underscore}_#{target_action&.name}_path") : ''
138
+ }
139
+ }
140
+ end
141
+ end
142
+
143
+ def format_check_box_array(options, form_obj, cm_field, required_class, target_action)
144
+ content_tag :div do
145
+ options.each do |key, val|
146
+ concat format_check_box(val, key, form_obj, cm_field, required_class, target_action)
147
+ end
148
+ end
149
+ end
150
+
151
+ def format_check_box(val, key, form_obj, cm_field, required_class, target_action)
152
+ content_tag :div, class: 'cm-checkbox-section' do
153
+ concat format_check_box_tag(val, form_obj, cm_field, required_class, target_action)
154
+ concat content_tag(:div, key, class: 'cm-checkbox-label')
155
+ end
156
+ end
157
+
158
+ def format_check_box_tag(val, form_obj, cm_field, required_class, target_action)
159
+ content_tag :div, class: 'cm-radio-tag' do
160
+ concat form_obj.check_box cm_field.field_name,
161
+ {
162
+ class: "normal-input cm-checkbox #{required_class} #{target_action.present? ? 'linked-field-request' : ''}",
163
+ disabled: cm_field.disabled,
164
+ name: "#{@model.name.underscore}[#{cm_field.field_name}][]",
165
+ data: {
166
+ field_name: cm_field.field_name,
167
+ field_type: 'linked-field',
168
+ target_action: target_action&.name,
169
+ target_url: target_action&.name ? cm_admin.send("#{@model.name.underscore}_#{target_action&.name}_path", ':param_1') : ''
170
+ }
171
+ }, val
172
+ end
173
+ end
174
+
175
+
176
+ def format_radio_button_options(options, form_obj)
177
+ content_tag :div do
178
+ options.each do |val, key|
179
+ concat format_radio_option(val, key, form_obj)
180
+ end
181
+ end
182
+ end
183
+
184
+ def format_radio_option(val, key, form_obj)
185
+ content_tag :div, class: 'cm-radio-section' do
186
+ concat format_radio_button(val, form_obj)
187
+ concat content_tag(:div, key, class: 'cm-radio-label')
188
+ end
189
+ end
190
+
191
+ def format_radio_button(val, form_obj)
192
+ content_tag :div, class: 'cm-radio-tag' do
193
+ concat form_obj.radio_button :level, val, class: 'normal-input cm-radio'
194
+ end
195
+ end
48
196
  end
49
197
  end
50
198
  end
@@ -84,6 +84,10 @@ module CmAdmin
84
84
  def custom_action_title(custom_action)
85
85
  custom_action.display_name.to_s.presence || custom_action.name.to_s.titleize
86
86
  end
87
+
88
+ def tab_display_name(nav_item_name)
89
+ nav_item_name.instance_of?(Symbol) ? nav_item_name.to_s.titleize : nav_item_name.to_s
90
+ end
87
91
  end
88
92
  end
89
93
  end
data/lib/cm_admin.rb CHANGED
@@ -14,9 +14,9 @@ module CmAdmin
14
14
  @@authorized_roles ||= []
15
15
  @@included_models ||= []
16
16
  @@cm_admin_models ||= []
17
-
18
17
 
19
18
  class << self
19
+
20
20
  def webpacker
21
21
  @webpacker ||= ::Webpacker::Instance.new(
22
22
  root_path: CmAdmin::Engine.root,
@@ -25,7 +25,12 @@ module CmAdmin
25
25
  end
26
26
 
27
27
  def configure(&block)
28
- instance_eval(&block)
28
+ # instance_eval(&block)
29
+ @config ||= Configuration.new
30
+ yield(@config)
31
+ end
32
+
33
+ def layout
29
34
  end
30
35
 
31
36
  def config
@@ -3,7 +3,6 @@
3
3
  // the trix-editor content (whether displayed or under editing). Feel free to incorporate this
4
4
  // inclusion directly in any other asset bundle and remove this file.
5
5
  //
6
- //= require trix/dist/trix
7
6
 
8
7
  // We need to override trix.css’s image gallery styles to accommodate the
9
8
  // <action-text-attachment> element we wrap around attachments. Otherwise,
@@ -4,11 +4,11 @@
4
4
  # end
5
5
 
6
6
  def ensure_log_goes_to_stdout
7
- old_logger = Webpacker.logger
8
- Webpacker.logger = ActiveSupport::Logger.new(STDOUT)
9
- yield
7
+ old_logger = Webpacker.logger
8
+ Webpacker.logger = ActiveSupport::Logger.new(STDOUT)
9
+ yield
10
10
  ensure
11
- Webpacker.logger = old_logger
11
+ Webpacker.logger = old_logger
12
12
  end
13
13
 
14
14
  namespace :cm_admin do
@@ -51,13 +51,15 @@ def enhance_assets_precompile
51
51
  end
52
52
  end
53
53
 
54
- # Compile packs after we've compiled all other assets during precompilation
55
- skip_webpacker_precompile = %w(no false n f).include?(ENV["WEBPACKER_PRECOMPILE"])
54
+ if CmAdmin::VersionManager.rails6?
55
+ # Compile packs after we've compiled all other assets during precompilation
56
+ skip_webpacker_precompile = %w(no false n f).include?(ENV["WEBPACKER_PRECOMPILE"])
56
57
 
57
- unless skip_webpacker_precompile
58
- if Rake::Task.task_defined?("assets:precompile")
59
- enhance_assets_precompile
60
- else
61
- Rake::Task.define_task("assets:precompile" =>"cm_admin:webpacker:compile")
62
- end
63
- end
58
+ unless skip_webpacker_precompile
59
+ if Rake::Task.task_defined?("assets:precompile")
60
+ enhance_assets_precompile
61
+ else
62
+ Rake::Task.define_task("assets:precompile" =>"cm_admin:webpacker:compile")
63
+ end
64
+ end
65
+ end
data/package-lock.json CHANGED
@@ -3965,10 +3965,9 @@
3965
3965
  }
3966
3966
  },
3967
3967
  "node_modules/decode-uri-component": {
3968
- "version": "0.2.0",
3969
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
3970
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
3971
- "license": "MIT",
3968
+ "version": "0.2.2",
3969
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
3970
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
3972
3971
  "engines": {
3973
3972
  "node": ">=0.10"
3974
3973
  }
@@ -4902,10 +4901,9 @@
4902
4901
  }
4903
4902
  },
4904
4903
  "node_modules/file-loader/node_modules/loader-utils": {
4905
- "version": "2.0.0",
4906
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
4907
- "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
4908
- "license": "MIT",
4904
+ "version": "2.0.4",
4905
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
4906
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
4909
4907
  "dependencies": {
4910
4908
  "big.js": "^5.2.2",
4911
4909
  "emojis-list": "^3.0.0",
@@ -6483,13 +6481,9 @@
6483
6481
  "license": "MIT"
6484
6482
  },
6485
6483
  "node_modules/json5": {
6486
- "version": "2.2.0",
6487
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
6488
- "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
6489
- "license": "MIT",
6490
- "dependencies": {
6491
- "minimist": "^1.2.5"
6492
- },
6484
+ "version": "2.2.3",
6485
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
6486
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
6493
6487
  "bin": {
6494
6488
  "json5": "lib/cli.js"
6495
6489
  },
@@ -6550,10 +6544,9 @@
6550
6544
  }
6551
6545
  },
6552
6546
  "node_modules/loader-utils": {
6553
- "version": "1.4.0",
6554
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
6555
- "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
6556
- "license": "MIT",
6547
+ "version": "1.4.2",
6548
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
6549
+ "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
6557
6550
  "dependencies": {
6558
6551
  "big.js": "^5.2.2",
6559
6552
  "emojis-list": "^3.0.0",
@@ -6564,10 +6557,9 @@
6564
6557
  }
6565
6558
  },
6566
6559
  "node_modules/loader-utils/node_modules/json5": {
6567
- "version": "1.0.1",
6568
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
6569
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
6570
- "license": "MIT",
6560
+ "version": "1.0.2",
6561
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
6562
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
6571
6563
  "dependencies": {
6572
6564
  "minimist": "^1.2.0"
6573
6565
  },
@@ -6984,10 +6976,9 @@
6984
6976
  "license": "MIT"
6985
6977
  },
6986
6978
  "node_modules/minimatch": {
6987
- "version": "3.0.4",
6988
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
6989
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
6990
- "license": "ISC",
6979
+ "version": "3.1.2",
6980
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
6981
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
6991
6982
  "dependencies": {
6992
6983
  "brace-expansion": "^1.1.7"
6993
6984
  },
@@ -9919,10 +9910,9 @@
9919
9910
  }
9920
9911
  },
9921
9912
  "node_modules/sass-loader/node_modules/loader-utils": {
9922
- "version": "2.0.0",
9923
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
9924
- "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
9925
- "license": "MIT",
9913
+ "version": "2.0.4",
9914
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
9915
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
9926
9916
  "dependencies": {
9927
9917
  "big.js": "^5.2.2",
9928
9918
  "emojis-list": "^3.0.0",
@@ -16274,9 +16264,9 @@
16274
16264
  }
16275
16265
  },
16276
16266
  "decode-uri-component": {
16277
- "version": "0.2.0",
16278
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
16279
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
16267
+ "version": "0.2.2",
16268
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
16269
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ=="
16280
16270
  },
16281
16271
  "default-gateway": {
16282
16272
  "version": "6.0.3",
@@ -16974,9 +16964,9 @@
16974
16964
  },
16975
16965
  "dependencies": {
16976
16966
  "loader-utils": {
16977
- "version": "2.0.0",
16978
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
16979
- "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
16967
+ "version": "2.0.4",
16968
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
16969
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
16980
16970
  "requires": {
16981
16971
  "big.js": "^5.2.2",
16982
16972
  "emojis-list": "^3.0.0",
@@ -18050,12 +18040,9 @@
18050
18040
  "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
18051
18041
  },
18052
18042
  "json5": {
18053
- "version": "2.2.0",
18054
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
18055
- "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
18056
- "requires": {
18057
- "minimist": "^1.2.5"
18058
- }
18043
+ "version": "2.2.3",
18044
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
18045
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="
18059
18046
  },
18060
18047
  "kind-of": {
18061
18048
  "version": "3.2.2",
@@ -18096,9 +18083,9 @@
18096
18083
  "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw=="
18097
18084
  },
18098
18085
  "loader-utils": {
18099
- "version": "1.4.0",
18100
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
18101
- "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
18086
+ "version": "1.4.2",
18087
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
18088
+ "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
18102
18089
  "requires": {
18103
18090
  "big.js": "^5.2.2",
18104
18091
  "emojis-list": "^3.0.0",
@@ -18106,9 +18093,9 @@
18106
18093
  },
18107
18094
  "dependencies": {
18108
18095
  "json5": {
18109
- "version": "1.0.1",
18110
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
18111
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
18096
+ "version": "1.0.2",
18097
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
18098
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
18112
18099
  "requires": {
18113
18100
  "minimist": "^1.2.0"
18114
18101
  }
@@ -18413,9 +18400,9 @@
18413
18400
  "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo="
18414
18401
  },
18415
18402
  "minimatch": {
18416
- "version": "3.0.4",
18417
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
18418
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
18403
+ "version": "3.1.2",
18404
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
18405
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
18419
18406
  "requires": {
18420
18407
  "brace-expansion": "^1.1.7"
18421
18408
  }
@@ -20626,9 +20613,9 @@
20626
20613
  },
20627
20614
  "dependencies": {
20628
20615
  "loader-utils": {
20629
- "version": "2.0.0",
20630
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
20631
- "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
20616
+ "version": "2.0.4",
20617
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
20618
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
20632
20619
  "requires": {
20633
20620
  "big.js": "^5.2.2",
20634
20621
  "emojis-list": "^3.0.0",
@@ -1 +1 @@
1
- 44c10d1e702ae7e3f4af6ad8684f30bfd32edcf9
1
+ 44c10d1e702ae7e3f4af6ad8684f30bfd32edcf9