activeadmin 1.4.2 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activeadmin might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +306 -144
- data/CONTRIBUTING.md +21 -16
- data/README.md +44 -11
- data/app/assets/javascripts/active_admin/base.es6 +23 -0
- data/app/assets/javascripts/active_admin/ext/jquery-ui.es6 +7 -0
- data/app/assets/javascripts/active_admin/ext/jquery.es6 +9 -0
- data/app/assets/javascripts/active_admin/initializers/datepicker.es6 +16 -0
- data/app/assets/javascripts/active_admin/initializers/filters.es6 +45 -0
- data/app/assets/javascripts/active_admin/initializers/tabs.es6 +6 -0
- data/app/assets/javascripts/active_admin/lib/active_admin.es6 +41 -0
- data/app/assets/javascripts/active_admin/lib/batch_actions.es6 +59 -0
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.es6 +49 -0
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.es6 +123 -0
- data/app/assets/javascripts/active_admin/lib/has_many.es6 +95 -0
- data/app/assets/javascripts/active_admin/lib/modal_dialog.es6 +61 -0
- data/app/assets/javascripts/active_admin/lib/per_page.es6 +47 -0
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 +36 -0
- data/app/assets/stylesheets/active_admin/_forms.scss +2 -14
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -5
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
- data/app/views/active_admin/devise/confirmations/new.html.erb +1 -1
- data/app/views/active_admin/devise/passwords/edit.html.erb +1 -1
- data/app/views/active_admin/devise/passwords/new.html.erb +1 -1
- data/app/views/active_admin/devise/registrations/new.html.erb +1 -2
- data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +1 -1
- data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
- data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
- data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
- data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
- data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
- data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +1 -1
- data/config/locales/ar.yml +3 -2
- data/config/locales/bg.yml +1 -1
- data/config/locales/bs.yml +1 -0
- data/config/locales/ca.yml +1 -1
- data/config/locales/cs.yml +1 -0
- data/config/locales/da.yml +1 -0
- data/config/locales/de-CH.yml +1 -0
- data/config/locales/de.yml +1 -0
- data/config/locales/el.yml +1 -0
- data/config/locales/en-CA.yml +1 -0
- data/config/locales/en-GB.yml +1 -0
- data/config/locales/en.yml +1 -0
- data/config/locales/eo.yml +1 -0
- data/config/locales/es-MX.yml +1 -0
- data/config/locales/es.yml +1 -0
- data/config/locales/fa.yml +1 -0
- data/config/locales/fi.yml +1 -0
- data/config/locales/fr.yml +2 -1
- data/config/locales/he.yml +1 -1
- data/config/locales/hr.yml +1 -0
- data/config/locales/hu.yml +5 -0
- data/config/locales/id.yml +1 -0
- data/config/locales/it.yml +1 -0
- data/config/locales/ja.yml +1 -0
- data/config/locales/ko.yml +1 -0
- data/config/locales/lt.yml +3 -2
- data/config/locales/lv.yml +1 -0
- data/config/locales/mk.yml +134 -0
- data/config/locales/nb.yml +1 -0
- data/config/locales/nl.yml +1 -0
- data/config/locales/pl.yml +1 -0
- data/config/locales/pt-BR.yml +1 -0
- data/config/locales/pt-PT.yml +1 -0
- data/config/locales/ro.yml +1 -0
- data/config/locales/ru.yml +1 -0
- data/config/locales/sk.yml +1 -0
- data/config/locales/sv-SE.yml +1 -0
- data/config/locales/tr.yml +1 -0
- data/config/locales/uk.yml +3 -0
- data/config/locales/vi.yml +1 -0
- data/config/locales/zh-CN.yml +1 -0
- data/config/locales/zh-TW.yml +1 -0
- data/docs/0-installation.md +2 -2
- data/docs/12-arbre-components.md +13 -0
- data/docs/13-authorization-adapter.md +6 -6
- data/docs/2-resource-customization.md +1 -1
- data/docs/3-index-pages/index-as-table.md +7 -0
- data/docs/CNAME +1 -1
- data/docs/Gemfile +0 -1
- data/docs/Gemfile.lock +3 -4
- data/docs/_config.yml +2 -0
- data/docs/_includes/top-menu.html +2 -2
- data/docs/index.html +109 -8
- data/docs/stylesheets/main.css +29 -0
- data/lib/active_admin.rb +10 -4
- data/lib/active_admin/application.rb +11 -18
- data/lib/active_admin/application_settings.rb +3 -0
- data/lib/active_admin/asset_registration.rb +0 -8
- data/lib/active_admin/base_controller.rb +6 -6
- data/lib/active_admin/base_controller/authorization.rb +3 -4
- data/lib/active_admin/batch_actions/controller.rb +2 -2
- data/lib/active_admin/batch_actions/resource_extension.rb +9 -5
- data/lib/active_admin/callbacks.rb +1 -1
- data/lib/active_admin/controller_action.rb +2 -1
- data/lib/active_admin/csv_builder.rb +4 -3
- data/lib/active_admin/dependency.rb +3 -75
- data/lib/active_admin/dsl.rb +1 -8
- data/lib/active_admin/error.rb +4 -2
- data/lib/active_admin/filters/active_filter.rb +5 -4
- data/lib/active_admin/filters/active_sidebar.rb +5 -1
- data/lib/active_admin/filters/forms.rb +2 -2
- data/lib/active_admin/filters/formtastic_addons.rb +1 -1
- data/lib/active_admin/filters/resource_extension.rb +3 -3
- data/lib/active_admin/form_builder.rb +3 -3
- data/lib/active_admin/generators/boilerplate.rb +12 -4
- data/lib/active_admin/helpers/scope_chain.rb +1 -0
- data/lib/active_admin/inputs/datepicker_input.rb +1 -1
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +2 -2
- data/lib/active_admin/menu_item.rb +1 -1
- data/lib/active_admin/namespace.rb +2 -2
- data/lib/active_admin/namespace_settings.rb +7 -4
- data/lib/active_admin/orm/active_record/comments.rb +4 -4
- data/lib/active_admin/orm/active_record/comments/comment.rb +2 -2
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +10 -5
- data/lib/active_admin/page_dsl.rb +1 -1
- data/lib/active_admin/page_presenter.rb +2 -1
- data/lib/active_admin/pundit_adapter.rb +18 -5
- data/lib/active_admin/resource.rb +17 -3
- data/lib/active_admin/resource/action_items.rb +1 -1
- data/lib/active_admin/resource/attributes.rb +7 -4
- data/lib/active_admin/resource/belongs_to.rb +6 -1
- data/lib/active_admin/resource/menu.rb +3 -3
- data/lib/active_admin/resource/model.rb +15 -0
- data/lib/active_admin/resource/naming.rb +3 -3
- data/lib/active_admin/resource/routes.rb +20 -7
- data/lib/active_admin/resource/scopes.rb +3 -3
- data/lib/active_admin/resource/sidebars.rb +1 -1
- data/lib/active_admin/resource_collection.rb +2 -2
- data/lib/active_admin/resource_controller.rb +2 -0
- data/lib/active_admin/resource_controller/action_builder.rb +10 -0
- data/lib/active_admin/resource_controller/polymorphic_routes.rb +36 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -0
- data/lib/active_admin/resource_controller/scoping.rb +1 -1
- data/lib/active_admin/resource_dsl.rb +6 -4
- data/lib/active_admin/router.rb +3 -2
- data/lib/active_admin/scope.rb +11 -7
- data/lib/active_admin/settings_node.rb +1 -1
- data/lib/active_admin/sidebar_section.rb +3 -1
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_helpers.rb +1 -1
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +2 -2
- data/lib/active_admin/view_helpers/display_helper.rb +13 -4
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +1 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +3 -0
- data/lib/active_admin/views.rb +1 -1
- data/lib/active_admin/views/components/active_admin_form.rb +7 -1
- data/lib/active_admin/views/components/attributes_table.rb +3 -3
- data/lib/active_admin/views/components/paginated_collection.rb +2 -2
- data/lib/active_admin/views/components/sidebar_section.rb +0 -3
- data/lib/active_admin/views/components/status_tag.rb +6 -19
- data/lib/active_admin/views/components/table_for.rb +2 -2
- data/lib/active_admin/views/components/tabs.rb +11 -2
- data/lib/active_admin/views/footer.rb +1 -1
- data/lib/active_admin/views/index_as_table.rb +12 -4
- data/lib/active_admin/views/pages/base.rb +3 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +2 -2
- data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
- data/lib/generators/active_admin/install/install_generator.rb +6 -2
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +24 -2
- data/lib/generators/active_admin/install/templates/dashboard.rb +2 -3
- data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +1 -15
- data/lib/generators/active_admin/page/page_generator.rb +1 -1
- data/lib/generators/active_admin/resource/resource_generator.rb +1 -1
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +40 -37
- data/lib/ransack_ext.rb +3 -3
- data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
- data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
- data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +274 -283
- metadata +113 -100
- data/.circleci/config.yml +0 -467
- data/.github/ISSUE_TEMPLATE.md +0 -20
- data/.gitignore +0 -46
- data/.mdlrc +0 -1
- data/.rspec +0 -1
- data/.rspec_parallel +0 -2
- data/.rubocop.yml +0 -94
- data/.simplecov +0 -11
- data/.yardopts +0 -7
- data/Gemfile +0 -10
- data/Gemfile.common +0 -53
- data/Gemfile.lock +0 -431
- data/Rakefile +0 -23
- data/activeadmin.gemspec +0 -32
- data/app/assets/javascripts/active_admin/base.js.coffee +0 -13
- data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
- data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
- data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +0 -11
- data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -14
- data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -26
- data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -7
- data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -42
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -46
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -104
- data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
- data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
- data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -45
- data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -46
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -22
- data/bin/install_chromedriver.sh +0 -17
- data/codecov.yml +0 -25
- data/config/i18n-tasks.yml +0 -26
- data/config/mdl_style.rb +0 -11
- data/cucumber.yml +0 -7
- data/gemfiles/rails_42.gemfile +0 -10
- data/gemfiles/rails_42.gemfile.lock +0 -410
- data/gemfiles/rails_50.gemfile +0 -10
- data/gemfiles/rails_50.gemfile.lock +0 -424
- data/gemfiles/rails_51.gemfile +0 -10
- data/gemfiles/rails_51.gemfile.lock +0 -423
- data/lib/active_admin/event.rb +0 -24
- data/lib/active_admin/helpers/output_safety_helper.rb +0 -35
- data/lib/active_admin/reloader.rb +0 -25
- data/lib/bug_report_templates/active_admin_master.rb +0 -111
- data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
- data/tasks/application_generator.rb +0 -48
- data/tasks/docs.rake +0 -64
- data/tasks/gemfiles.rake +0 -8
- data/tasks/lint.rake +0 -110
- data/tasks/local.rake +0 -27
- data/tasks/test.rake +0 -43
data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb
CHANGED
@@ -1,27 +1,13 @@
|
|
1
|
-
|
2
|
-
parent_class = ActiveRecord::Migration
|
3
|
-
parent_class = parent_class[parent_class.current_version] if Rails::VERSION::MAJOR >= 5
|
4
|
-
-%>
|
5
|
-
class CreateActiveAdminComments < <%= parent_class.to_s %>
|
1
|
+
class CreateActiveAdminComments < ActiveRecord::Migration[<%= ActiveRecord::Migration.current_version.to_s %>]
|
6
2
|
def self.up
|
7
3
|
create_table :active_admin_comments do |t|
|
8
4
|
t.string :namespace
|
9
5
|
t.text :body
|
10
6
|
t.references :resource, polymorphic: true
|
11
7
|
t.references :author, polymorphic: true
|
12
|
-
<%- if Rails::VERSION::MAJOR >= 5 -%>
|
13
8
|
t.timestamps
|
14
|
-
<%- else -%>
|
15
|
-
t.timestamps null: false
|
16
|
-
<%- end -%>
|
17
9
|
end
|
18
10
|
add_index :active_admin_comments, [:namespace]
|
19
|
-
<%- unless Rails::VERSION::MAJOR >= 5 -%>
|
20
|
-
|
21
|
-
add_index :active_admin_comments, [:author_type, :author_id]
|
22
|
-
add_index :active_admin_comments, [:resource_type, :resource_id]
|
23
|
-
<%- end -%>
|
24
|
-
|
25
11
|
end
|
26
12
|
|
27
13
|
def self.down
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module ActiveAdmin
|
2
2
|
module Generators
|
3
3
|
class PageGenerator < Rails::Generators::NamedBase
|
4
|
-
source_root File.expand_path('
|
4
|
+
source_root File.expand_path('templates', __dir__)
|
5
5
|
|
6
6
|
def generate_config_file
|
7
7
|
template "page.rb", "app/admin/#{file_path.tr('/', '_')}.rb"
|
@@ -8,7 +8,7 @@ module ActiveAdmin
|
|
8
8
|
class_option :include_boilerplate, type: :boolean, default: false,
|
9
9
|
desc: "Generate boilerplate code for your resource."
|
10
10
|
|
11
|
-
source_root File.expand_path(
|
11
|
+
source_root File.expand_path('templates', __dir__)
|
12
12
|
|
13
13
|
def generate_config_file
|
14
14
|
@boilerplate = ActiveAdmin::Generators::Boilerplate.new(class_name)
|
@@ -1,43 +1,46 @@
|
|
1
1
|
ActiveAdmin.register <%= class_name %> do
|
2
|
-
# See permitted parameters documentation:
|
3
|
-
# https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters
|
4
|
-
#
|
5
|
-
# permit_params :list, :of, :attributes, :on, :model
|
6
|
-
#
|
7
|
-
# or
|
8
|
-
#
|
9
|
-
# permit_params do
|
10
|
-
# permitted = [:permitted, :attributes]
|
11
|
-
# permitted << :other if params[:action] == 'create' && current_user.admin?
|
12
|
-
# permitted
|
13
|
-
# end
|
14
|
-
<% if options.include_boilerplate? %>
|
15
|
-
# Limit actions available to your users by adding them to the 'except' array
|
16
|
-
# actions :all, except: []
|
17
2
|
|
18
|
-
#
|
19
|
-
#
|
20
|
-
|
3
|
+
# See permitted parameters documentation:
|
4
|
+
# https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters
|
5
|
+
#
|
6
|
+
# Uncomment all parameters which should be permitted for assignment
|
7
|
+
#
|
8
|
+
# permit_params <%= @boilerplate.permit_params %>
|
9
|
+
#
|
10
|
+
# or
|
11
|
+
#
|
12
|
+
# permit_params do
|
13
|
+
# permitted = [<%= @boilerplate.permit_params %>]
|
14
|
+
# permitted << :other if params[:action] == 'create' && current_user.admin?
|
15
|
+
# permitted
|
16
|
+
# end
|
17
|
+
<% if options.include_boilerplate? %>
|
18
|
+
# Limit actions available to your users by adding them to the 'except' array
|
19
|
+
# actions :all, except: []
|
21
20
|
|
22
|
-
# Add or remove
|
23
|
-
#
|
24
|
-
|
25
|
-
# id_column
|
26
|
-
<%= @boilerplate.columns %>
|
27
|
-
# actions
|
28
|
-
# end
|
21
|
+
# Add or remove filters (you can use any ActiveRecord scope) to toggle their
|
22
|
+
# visibility in the sidebar
|
23
|
+
<%= @boilerplate.filters %>
|
29
24
|
|
30
|
-
# Add or remove
|
31
|
-
#
|
32
|
-
|
33
|
-
#
|
25
|
+
# Add or remove columns to toggle their visiblity in the index action
|
26
|
+
# index do
|
27
|
+
# selectable_column
|
28
|
+
# id_column
|
29
|
+
<%= @boilerplate.columns %>
|
30
|
+
# actions
|
31
|
+
# end
|
34
32
|
|
35
|
-
# Add or remove
|
36
|
-
#
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
#
|
41
|
-
#
|
42
|
-
|
33
|
+
# Add or remove rows to toggle their visiblity in the show action
|
34
|
+
# show do |<%= class_name.downcase %>|
|
35
|
+
<%= @boilerplate.rows %>
|
36
|
+
# end
|
37
|
+
|
38
|
+
# Add or remove fields to toggle their visibility in the form
|
39
|
+
# form do |f|
|
40
|
+
# f.inputs do
|
41
|
+
<%= @boilerplate.form_inputs %>
|
42
|
+
# end
|
43
|
+
# f.actions
|
44
|
+
# end
|
45
|
+
<% end %>
|
43
46
|
end
|
data/lib/ransack_ext.rb
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
# identically to the versions given in Ransack.
|
3
3
|
#
|
4
4
|
Ransack.configure do |config|
|
5
|
-
{'contains'=>'cont', 'starts_with'=>'start', 'ends_with'=>'end'}.each do |old, current|
|
6
|
-
config.add_predicate old, Ransack::Constants::DERIVED_PREDICATES.detect{ |q, _| q == current }[1]
|
5
|
+
{ 'contains' => 'cont', 'starts_with' => 'start', 'ends_with' => 'end' }.each do |old, current|
|
6
|
+
config.add_predicate old, Ransack::Constants::DERIVED_PREDICATES.detect { |q, _| q == current }[1]
|
7
7
|
end
|
8
8
|
|
9
|
-
{'equals'=>'eq', 'greater_than'=>'gt', 'less_than'=>'lt'}.each do |old, current|
|
9
|
+
{ 'equals' => 'eq', 'greater_than' => 'gt', 'less_than' => 'lt' }.each do |old, current|
|
10
10
|
config.add_predicate old, arel_predicate: current
|
11
11
|
end
|
12
12
|
|
@@ -0,0 +1,80 @@
|
|
1
|
+
//= require jquery-ui/form
|
2
|
+
//= require jquery-ui/version
|
3
|
+
|
4
|
+
/*!
|
5
|
+
* jQuery UI Form Reset Mixin 1.12.1
|
6
|
+
* http://jqueryui.com
|
7
|
+
*
|
8
|
+
* Copyright jQuery Foundation and other contributors
|
9
|
+
* Released under the MIT license.
|
10
|
+
* http://jquery.org/license
|
11
|
+
*/
|
12
|
+
|
13
|
+
//>>label: Form Reset Mixin
|
14
|
+
//>>group: Core
|
15
|
+
//>>description: Refresh input widgets when their form is reset
|
16
|
+
//>>docs: http://api.jqueryui.com/form-reset-mixin/
|
17
|
+
|
18
|
+
( function( factory ) {
|
19
|
+
if ( typeof define === "function" && define.amd ) {
|
20
|
+
|
21
|
+
// AMD. Register as an anonymous module.
|
22
|
+
define( [
|
23
|
+
"jquery",
|
24
|
+
"./form",
|
25
|
+
"./version"
|
26
|
+
], factory );
|
27
|
+
} else {
|
28
|
+
|
29
|
+
// Browser globals
|
30
|
+
factory( jQuery );
|
31
|
+
}
|
32
|
+
}( function( $ ) {
|
33
|
+
|
34
|
+
return $.ui.formResetMixin = {
|
35
|
+
_formResetHandler: function() {
|
36
|
+
var form = $( this );
|
37
|
+
|
38
|
+
// Wait for the form reset to actually happen before refreshing
|
39
|
+
setTimeout( function() {
|
40
|
+
var instances = form.data( "ui-form-reset-instances" );
|
41
|
+
$.each( instances, function() {
|
42
|
+
this.refresh();
|
43
|
+
} );
|
44
|
+
} );
|
45
|
+
},
|
46
|
+
|
47
|
+
_bindFormResetHandler: function() {
|
48
|
+
this.form = this.element.form();
|
49
|
+
if ( !this.form.length ) {
|
50
|
+
return;
|
51
|
+
}
|
52
|
+
|
53
|
+
var instances = this.form.data( "ui-form-reset-instances" ) || [];
|
54
|
+
if ( !instances.length ) {
|
55
|
+
|
56
|
+
// We don't use _on() here because we use a single event handler per form
|
57
|
+
this.form.on( "reset.ui-form-reset", this._formResetHandler );
|
58
|
+
}
|
59
|
+
instances.push( this );
|
60
|
+
this.form.data( "ui-form-reset-instances", instances );
|
61
|
+
},
|
62
|
+
|
63
|
+
_unbindFormResetHandler: function() {
|
64
|
+
if ( !this.form.length ) {
|
65
|
+
return;
|
66
|
+
}
|
67
|
+
|
68
|
+
var instances = this.form.data( "ui-form-reset-instances" );
|
69
|
+
instances.splice( $.inArray( this, instances ), 1 );
|
70
|
+
if ( instances.length ) {
|
71
|
+
this.form.data( "ui-form-reset-instances", instances );
|
72
|
+
} else {
|
73
|
+
this.form
|
74
|
+
.removeData( "ui-form-reset-instances" )
|
75
|
+
.off( "reset.ui-form-reset" );
|
76
|
+
}
|
77
|
+
}
|
78
|
+
};
|
79
|
+
|
80
|
+
} ) );
|
@@ -0,0 +1,22 @@
|
|
1
|
+
//= require jquery-ui/version
|
2
|
+
|
3
|
+
( function( factory ) {
|
4
|
+
if ( typeof define === "function" && define.amd ) {
|
5
|
+
|
6
|
+
// AMD. Register as an anonymous module.
|
7
|
+
define( [ "jquery", "./version" ], factory );
|
8
|
+
} else {
|
9
|
+
|
10
|
+
// Browser globals
|
11
|
+
factory( jQuery );
|
12
|
+
}
|
13
|
+
} ( function( $ ) {
|
14
|
+
|
15
|
+
// Support: IE8 Only
|
16
|
+
// IE8 does not support the form attribute and when it is supplied. It overwrites the form prop
|
17
|
+
// with a string, so we need to find the proper form.
|
18
|
+
return $.fn.form = function() {
|
19
|
+
return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form );
|
20
|
+
};
|
21
|
+
|
22
|
+
} ) );
|
@@ -0,0 +1,65 @@
|
|
1
|
+
//= require jquery-ui/version
|
2
|
+
//= require jquery-ui/escape-selector
|
3
|
+
|
4
|
+
/*!
|
5
|
+
* jQuery UI Labels 1.12.1
|
6
|
+
* http://jqueryui.com
|
7
|
+
*
|
8
|
+
* Copyright jQuery Foundation and other contributors
|
9
|
+
* Released under the MIT license.
|
10
|
+
* http://jquery.org/license
|
11
|
+
*/
|
12
|
+
|
13
|
+
//>>label: labels
|
14
|
+
//>>group: Core
|
15
|
+
//>>description: Find all the labels associated with a given input
|
16
|
+
//>>docs: http://api.jqueryui.com/labels/
|
17
|
+
|
18
|
+
( function( factory ) {
|
19
|
+
if ( typeof define === "function" && define.amd ) {
|
20
|
+
|
21
|
+
// AMD. Register as an anonymous module.
|
22
|
+
define( [ "jquery", "./version", "./escape-selector" ], factory );
|
23
|
+
} else {
|
24
|
+
|
25
|
+
// Browser globals
|
26
|
+
factory( jQuery );
|
27
|
+
}
|
28
|
+
} ( function( $ ) {
|
29
|
+
|
30
|
+
return $.fn.labels = function() {
|
31
|
+
var ancestor, selector, id, labels, ancestors;
|
32
|
+
|
33
|
+
// Check control.labels first
|
34
|
+
if ( this[ 0 ].labels && this[ 0 ].labels.length ) {
|
35
|
+
return this.pushStack( this[ 0 ].labels );
|
36
|
+
}
|
37
|
+
|
38
|
+
// Support: IE <= 11, FF <= 37, Android <= 2.3 only
|
39
|
+
// Above browsers do not support control.labels. Everything below is to support them
|
40
|
+
// as well as document fragments. control.labels does not work on document fragments
|
41
|
+
labels = this.eq( 0 ).parents( "label" );
|
42
|
+
|
43
|
+
// Look for the label based on the id
|
44
|
+
id = this.attr( "id" );
|
45
|
+
if ( id ) {
|
46
|
+
|
47
|
+
// We don't search against the document in case the element
|
48
|
+
// is disconnected from the DOM
|
49
|
+
ancestor = this.eq( 0 ).parents().last();
|
50
|
+
|
51
|
+
// Get a full set of top level ancestors
|
52
|
+
ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );
|
53
|
+
|
54
|
+
// Create a selector for the label based on the id
|
55
|
+
selector = "label[for='" + $.ui.escapeSelector( id ) + "']";
|
56
|
+
|
57
|
+
labels = labels.add( ancestors.find( selector ).addBack( selector ) );
|
58
|
+
|
59
|
+
}
|
60
|
+
|
61
|
+
// Return whatever we have found for labels
|
62
|
+
return this.pushStack( labels );
|
63
|
+
};
|
64
|
+
|
65
|
+
} ) );
|
@@ -1,7 +1,10 @@
|
|
1
|
+
//= require jquery-ui/escape-selector
|
2
|
+
//= require jquery-ui/form-reset-mixin
|
3
|
+
//= require jquery-ui/labels
|
1
4
|
//= require jquery-ui/widget
|
2
5
|
|
3
6
|
/*!
|
4
|
-
* jQuery UI
|
7
|
+
* jQuery UI Checkboxradio 1.12.1
|
5
8
|
* http://jqueryui.com
|
6
9
|
*
|
7
10
|
* Copyright jQuery Foundation and other contributors
|
@@ -9,292 +12,280 @@
|
|
9
12
|
* http://jquery.org/license
|
10
13
|
*/
|
11
14
|
|
12
|
-
//>>label:
|
15
|
+
//>>label: Checkboxradio
|
13
16
|
//>>group: Widgets
|
14
|
-
//>>description:
|
15
|
-
//>>docs: http://api.jqueryui.com/
|
16
|
-
//>>demos: http://jqueryui.com/
|
17
|
+
//>>description: Enhances a form with multiple themeable checkboxes or radio buttons.
|
18
|
+
//>>docs: http://api.jqueryui.com/checkboxradio/
|
19
|
+
//>>demos: http://jqueryui.com/checkboxradio/
|
17
20
|
//>>css.structure: ../../themes/base/core.css
|
18
|
-
//>>css.structure: ../../themes/base/
|
21
|
+
//>>css.structure: ../../themes/base/button.css
|
22
|
+
//>>css.structure: ../../themes/base/checkboxradio.css
|
19
23
|
//>>css.theme: ../../themes/base/theme.css
|
20
24
|
|
21
25
|
( function( factory ) {
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
26
|
+
if ( typeof define === "function" && define.amd ) {
|
27
|
+
|
28
|
+
// AMD. Register as an anonymous module.
|
29
|
+
define( [
|
30
|
+
"jquery",
|
31
|
+
"../escape-selector",
|
32
|
+
"../form-reset-mixin",
|
33
|
+
"../labels",
|
34
|
+
"../widget"
|
35
|
+
], factory );
|
36
|
+
} else {
|
37
|
+
|
38
|
+
// Browser globals
|
39
|
+
factory( jQuery );
|
40
|
+
}
|
34
41
|
}( function( $ ) {
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
if ( instance && that[ "_" + instance.widgetName + "Options" ] ) {
|
285
|
-
var options = that[ "_" + instance.widgetName + "Options" ](
|
286
|
-
children.length === 1 ? "only" : value
|
287
|
-
);
|
288
|
-
options.classes = that._resolveClassesValues( options.classes, instance );
|
289
|
-
instance.element[ instance.widgetName ]( options );
|
290
|
-
} else {
|
291
|
-
that._updateCornerClass( children[ value ](), value );
|
292
|
-
}
|
293
|
-
} );
|
294
|
-
|
295
|
-
// Finally call the refresh method on each of the child widgets.
|
296
|
-
this._callChildMethod( "refresh" );
|
297
|
-
}
|
298
|
-
}
|
299
|
-
} );
|
42
|
+
|
43
|
+
$.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
|
44
|
+
version: "1.12.1",
|
45
|
+
options: {
|
46
|
+
disabled: null,
|
47
|
+
label: null,
|
48
|
+
icon: true,
|
49
|
+
classes: {
|
50
|
+
"ui-checkboxradio-label": "ui-corner-all",
|
51
|
+
"ui-checkboxradio-icon": "ui-corner-all"
|
52
|
+
}
|
53
|
+
},
|
54
|
+
|
55
|
+
_getCreateOptions: function() {
|
56
|
+
var disabled, labels;
|
57
|
+
var that = this;
|
58
|
+
var options = this._super() || {};
|
59
|
+
|
60
|
+
// We read the type here, because it makes more sense to throw a element type error first,
|
61
|
+
// rather then the error for lack of a label. Often if its the wrong type, it
|
62
|
+
// won't have a label (e.g. calling on a div, btn, etc)
|
63
|
+
this._readType();
|
64
|
+
|
65
|
+
labels = this.element.labels();
|
66
|
+
|
67
|
+
// If there are multiple labels, use the last one
|
68
|
+
this.label = $( labels[ labels.length - 1 ] );
|
69
|
+
if ( !this.label.length ) {
|
70
|
+
$.error( "No label found for checkboxradio widget" );
|
71
|
+
}
|
72
|
+
|
73
|
+
this.originalLabel = "";
|
74
|
+
|
75
|
+
// We need to get the label text but this may also need to make sure it does not contain the
|
76
|
+
// input itself.
|
77
|
+
this.label.contents().not( this.element[ 0 ] ).each( function() {
|
78
|
+
|
79
|
+
// The label contents could be text, html, or a mix. We concat each element to get a
|
80
|
+
// string representation of the label, without the input as part of it.
|
81
|
+
that.originalLabel += this.nodeType === 3 ? $( this ).text() : this.outerHTML;
|
82
|
+
} );
|
83
|
+
|
84
|
+
// Set the label option if we found label text
|
85
|
+
if ( this.originalLabel ) {
|
86
|
+
options.label = this.originalLabel;
|
87
|
+
}
|
88
|
+
|
89
|
+
disabled = this.element[ 0 ].disabled;
|
90
|
+
if ( disabled != null ) {
|
91
|
+
options.disabled = disabled;
|
92
|
+
}
|
93
|
+
return options;
|
94
|
+
},
|
95
|
+
|
96
|
+
_create: function() {
|
97
|
+
var checked = this.element[ 0 ].checked;
|
98
|
+
|
99
|
+
this._bindFormResetHandler();
|
100
|
+
|
101
|
+
if ( this.options.disabled == null ) {
|
102
|
+
this.options.disabled = this.element[ 0 ].disabled;
|
103
|
+
}
|
104
|
+
|
105
|
+
this._setOption( "disabled", this.options.disabled );
|
106
|
+
this._addClass( "ui-checkboxradio", "ui-helper-hidden-accessible" );
|
107
|
+
this._addClass( this.label, "ui-checkboxradio-label", "ui-button ui-widget" );
|
108
|
+
|
109
|
+
if ( this.type === "radio" ) {
|
110
|
+
this._addClass( this.label, "ui-checkboxradio-radio-label" );
|
111
|
+
}
|
112
|
+
|
113
|
+
if ( this.options.label && this.options.label !== this.originalLabel ) {
|
114
|
+
this._updateLabel();
|
115
|
+
} else if ( this.originalLabel ) {
|
116
|
+
this.options.label = this.originalLabel;
|
117
|
+
}
|
118
|
+
|
119
|
+
this._enhance();
|
120
|
+
|
121
|
+
if ( checked ) {
|
122
|
+
this._addClass( this.label, "ui-checkboxradio-checked", "ui-state-active" );
|
123
|
+
if ( this.icon ) {
|
124
|
+
this._addClass( this.icon, null, "ui-state-hover" );
|
125
|
+
}
|
126
|
+
}
|
127
|
+
|
128
|
+
this._on( {
|
129
|
+
change: "_toggleClasses",
|
130
|
+
focus: function() {
|
131
|
+
this._addClass( this.label, null, "ui-state-focus ui-visual-focus" );
|
132
|
+
},
|
133
|
+
blur: function() {
|
134
|
+
this._removeClass( this.label, null, "ui-state-focus ui-visual-focus" );
|
135
|
+
}
|
136
|
+
} );
|
137
|
+
},
|
138
|
+
|
139
|
+
_readType: function() {
|
140
|
+
var nodeName = this.element[ 0 ].nodeName.toLowerCase();
|
141
|
+
this.type = this.element[ 0 ].type;
|
142
|
+
if ( nodeName !== "input" || !/radio|checkbox/.test( this.type ) ) {
|
143
|
+
$.error( "Can't create checkboxradio on element.nodeName=" + nodeName +
|
144
|
+
" and element.type=" + this.type );
|
145
|
+
}
|
146
|
+
},
|
147
|
+
|
148
|
+
// Support jQuery Mobile enhanced option
|
149
|
+
_enhance: function() {
|
150
|
+
this._updateIcon( this.element[ 0 ].checked );
|
151
|
+
},
|
152
|
+
|
153
|
+
widget: function() {
|
154
|
+
return this.label;
|
155
|
+
},
|
156
|
+
|
157
|
+
_getRadioGroup: function() {
|
158
|
+
var group;
|
159
|
+
var name = this.element[ 0 ].name;
|
160
|
+
var nameSelector = "input[name='" + $.ui.escapeSelector( name ) + "']";
|
161
|
+
|
162
|
+
if ( !name ) {
|
163
|
+
return $( [] );
|
164
|
+
}
|
165
|
+
|
166
|
+
if ( this.form.length ) {
|
167
|
+
group = $( this.form[ 0 ].elements ).filter( nameSelector );
|
168
|
+
} else {
|
169
|
+
|
170
|
+
// Not inside a form, check all inputs that also are not inside a form
|
171
|
+
group = $( nameSelector ).filter( function() {
|
172
|
+
return $( this ).form().length === 0;
|
173
|
+
} );
|
174
|
+
}
|
175
|
+
|
176
|
+
return group.not( this.element );
|
177
|
+
},
|
178
|
+
|
179
|
+
_toggleClasses: function() {
|
180
|
+
var checked = this.element[ 0 ].checked;
|
181
|
+
this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked );
|
182
|
+
|
183
|
+
if ( this.options.icon && this.type === "checkbox" ) {
|
184
|
+
this._toggleClass( this.icon, null, "ui-icon-check ui-state-checked", checked )
|
185
|
+
._toggleClass( this.icon, null, "ui-icon-blank", !checked );
|
186
|
+
}
|
187
|
+
|
188
|
+
if ( this.type === "radio" ) {
|
189
|
+
this._getRadioGroup()
|
190
|
+
.each( function() {
|
191
|
+
var instance = $( this ).checkboxradio( "instance" );
|
192
|
+
|
193
|
+
if ( instance ) {
|
194
|
+
instance._removeClass( instance.label,
|
195
|
+
"ui-checkboxradio-checked", "ui-state-active" );
|
196
|
+
}
|
197
|
+
} );
|
198
|
+
}
|
199
|
+
},
|
200
|
+
|
201
|
+
_destroy: function() {
|
202
|
+
this._unbindFormResetHandler();
|
203
|
+
|
204
|
+
if ( this.icon ) {
|
205
|
+
this.icon.remove();
|
206
|
+
this.iconSpace.remove();
|
207
|
+
}
|
208
|
+
},
|
209
|
+
|
210
|
+
_setOption: function( key, value ) {
|
211
|
+
|
212
|
+
// We don't allow the value to be set to nothing
|
213
|
+
if ( key === "label" && !value ) {
|
214
|
+
return;
|
215
|
+
}
|
216
|
+
|
217
|
+
this._super( key, value );
|
218
|
+
|
219
|
+
if ( key === "disabled" ) {
|
220
|
+
this._toggleClass( this.label, null, "ui-state-disabled", value );
|
221
|
+
this.element[ 0 ].disabled = value;
|
222
|
+
|
223
|
+
// Don't refresh when setting disabled
|
224
|
+
return;
|
225
|
+
}
|
226
|
+
this.refresh();
|
227
|
+
},
|
228
|
+
|
229
|
+
_updateIcon: function( checked ) {
|
230
|
+
var toAdd = "ui-icon ui-icon-background ";
|
231
|
+
|
232
|
+
if ( this.options.icon ) {
|
233
|
+
if ( !this.icon ) {
|
234
|
+
this.icon = $( "<span>" );
|
235
|
+
this.iconSpace = $( "<span> </span>" );
|
236
|
+
this._addClass( this.iconSpace, "ui-checkboxradio-icon-space" );
|
237
|
+
}
|
238
|
+
|
239
|
+
if ( this.type === "checkbox" ) {
|
240
|
+
toAdd += checked ? "ui-icon-check ui-state-checked" : "ui-icon-blank";
|
241
|
+
this._removeClass( this.icon, null, checked ? "ui-icon-blank" : "ui-icon-check" );
|
242
|
+
} else {
|
243
|
+
toAdd += "ui-icon-blank";
|
244
|
+
}
|
245
|
+
this._addClass( this.icon, "ui-checkboxradio-icon", toAdd );
|
246
|
+
if ( !checked ) {
|
247
|
+
this._removeClass( this.icon, null, "ui-icon-check ui-state-checked" );
|
248
|
+
}
|
249
|
+
this.icon.prependTo( this.label ).after( this.iconSpace );
|
250
|
+
} else if ( this.icon !== undefined ) {
|
251
|
+
this.icon.remove();
|
252
|
+
this.iconSpace.remove();
|
253
|
+
delete this.icon;
|
254
|
+
}
|
255
|
+
},
|
256
|
+
|
257
|
+
_updateLabel: function() {
|
258
|
+
|
259
|
+
// Remove the contents of the label ( minus the icon, icon space, and input )
|
260
|
+
var contents = this.label.contents().not( this.element[ 0 ] );
|
261
|
+
if ( this.icon ) {
|
262
|
+
contents = contents.not( this.icon[ 0 ] );
|
263
|
+
}
|
264
|
+
if ( this.iconSpace ) {
|
265
|
+
contents = contents.not( this.iconSpace[ 0 ] );
|
266
|
+
}
|
267
|
+
contents.remove();
|
268
|
+
|
269
|
+
this.label.append( this.options.label );
|
270
|
+
},
|
271
|
+
|
272
|
+
refresh: function() {
|
273
|
+
var checked = this.element[ 0 ].checked,
|
274
|
+
isDisabled = this.element[ 0 ].disabled;
|
275
|
+
|
276
|
+
this._updateIcon( checked );
|
277
|
+
this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked );
|
278
|
+
if ( this.options.label !== null ) {
|
279
|
+
this._updateLabel();
|
280
|
+
}
|
281
|
+
|
282
|
+
if ( isDisabled !== this.options.disabled ) {
|
283
|
+
this._setOptions( { "disabled": isDisabled } );
|
284
|
+
}
|
285
|
+
}
|
286
|
+
|
287
|
+
} ] );
|
288
|
+
|
289
|
+
return $.ui.checkboxradio;
|
290
|
+
|
300
291
|
} ) );
|